@cdmbase/wiki-browser 12.0.18-alpha.5 → 12.0.18-alpha.51

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 (153) hide show
  1. package/lib/components/HeroSection.d.ts +5 -0
  2. package/lib/components/HeroSection.d.ts.map +1 -0
  3. package/lib/components/HeroSection.js +57 -0
  4. package/lib/components/HeroSection.js.map +1 -0
  5. package/lib/components/help/SidebarSearch.d.ts.map +1 -1
  6. package/lib/components/help/SidebarSearch.js +9 -6
  7. package/lib/components/help/SidebarSearch.js.map +1 -1
  8. package/lib/components/landing/SearchInput.d.ts.map +1 -1
  9. package/lib/components/landing/SearchInput.js +13 -10
  10. package/lib/components/landing/SearchInput.js.map +1 -1
  11. package/lib/components/markdown/CreateMarkdownDialog.d.ts +9 -0
  12. package/lib/components/markdown/CreateMarkdownDialog.d.ts.map +1 -0
  13. package/lib/components/markdown/CreateMarkdownDialog.js +291 -0
  14. package/lib/components/markdown/CreateMarkdownDialog.js.map +1 -0
  15. package/lib/components/markdown/GitHubSyncStatusDialog.d.ts +10 -0
  16. package/lib/components/markdown/GitHubSyncStatusDialog.d.ts.map +1 -0
  17. package/lib/components/markdown/GitHubSyncStatusDialog.js +72 -0
  18. package/lib/components/markdown/GitHubSyncStatusDialog.js.map +1 -0
  19. package/lib/components/markdown/MarkdownEditor.d.ts +11 -0
  20. package/lib/components/markdown/MarkdownEditor.d.ts.map +1 -0
  21. package/lib/components/markdown/MarkdownEditor.js +127 -0
  22. package/lib/components/markdown/MarkdownEditor.js.map +1 -0
  23. package/lib/compute.d.ts.map +1 -1
  24. package/lib/compute.js +111 -10
  25. package/lib/compute.js.map +1 -1
  26. package/lib/config/env-config.d.ts +6 -0
  27. package/lib/config/env-config.d.ts.map +1 -1
  28. package/lib/config/env-config.js +63 -1
  29. package/lib/config/env-config.js.map +1 -1
  30. package/lib/index.server.d.ts +2 -0
  31. package/lib/index.server.d.ts.map +1 -0
  32. package/lib/index.server.js +1 -0
  33. package/lib/index.server.js.map +1 -0
  34. package/lib/pages/AdminApproval/index.d.ts +10 -0
  35. package/lib/pages/AdminApproval/index.d.ts.map +1 -0
  36. package/lib/pages/AdminApproval/index.js +141 -0
  37. package/lib/pages/AdminApproval/index.js.map +1 -0
  38. package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -1
  39. package/lib/pages/CategoryCollection/CategoryCollection.js +13 -5
  40. package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -1
  41. package/lib/pages/Help/{HelpIndex.d.ts → HelpPage.d.ts} +1 -1
  42. package/lib/pages/Help/HelpPage.d.ts.map +1 -0
  43. package/lib/pages/Help/HelpPage.js +70 -0
  44. package/lib/pages/Help/HelpPage.js.map +1 -0
  45. package/lib/pages/Landing/index.js +1 -1
  46. package/lib/pages/Markdown/MarkdownPageLayout.d.ts +3 -0
  47. package/lib/pages/Markdown/MarkdownPageLayout.d.ts.map +1 -0
  48. package/lib/pages/{Help/index.js → Markdown/MarkdownPageLayout.js} +132 -44
  49. package/lib/pages/Markdown/MarkdownPageLayout.js.map +1 -0
  50. package/lib/pages/Markdown/MarkdownPageWithParams.d.ts +9 -0
  51. package/lib/pages/Markdown/MarkdownPageWithParams.d.ts.map +1 -0
  52. package/lib/pages/Markdown/MarkdownPageWithParams.js +406 -0
  53. package/lib/pages/Markdown/MarkdownPageWithParams.js.map +1 -0
  54. package/lib/pages/Markdown/index.d.ts +3 -0
  55. package/lib/pages/Markdown/index.d.ts.map +1 -0
  56. package/lib/pages/Markdown/index.js +5 -0
  57. package/lib/pages/Markdown/index.js.map +1 -0
  58. package/lib/pages/VerifyUser/index.d.ts +12 -0
  59. package/lib/pages/VerifyUser/index.d.ts.map +1 -0
  60. package/lib/pages/VerifyUser/index.js +385 -0
  61. package/lib/pages/VerifyUser/index.js.map +1 -0
  62. package/lib/pages/icons.d.ts +5 -0
  63. package/lib/pages/icons.d.ts.map +1 -0
  64. package/lib/pages/icons.js +190 -0
  65. package/lib/pages/icons.js.map +1 -0
  66. package/lib/resources/ApiMarkdownSave.d.ts +10 -0
  67. package/lib/resources/ApiMarkdownSave.d.ts.map +1 -0
  68. package/lib/resources/ApiMarkdownSave.js +8 -0
  69. package/lib/resources/ApiMarkdownSave.js.map +1 -0
  70. package/lib/resources/ApiMarkdownSave.server.d.ts +19 -0
  71. package/lib/resources/ApiMarkdownSave.server.d.ts.map +1 -0
  72. package/lib/resources/ApiMarkdownSave.server.js +38 -0
  73. package/lib/resources/ApiMarkdownSave.server.js.map +1 -0
  74. package/lib/routes.json +104 -2463
  75. package/lib/templates/assets/images/file-upload/add-link-frontend.png +0 -0
  76. package/lib/templates/assets/images/file-upload/add-package-backend.png +0 -0
  77. package/lib/templates/assets/images/file-upload/add-to-backend-module.png +0 -0
  78. package/lib/templates/assets/images/file-upload/add-upload-client-frontend.png +0 -0
  79. package/lib/templates/assets/images/file-upload/modify-upload-false-server.png +0 -0
  80. package/lib/templates/assets/mcp/mcp-servers-bundle.zip +0 -0
  81. package/lib/templates/assets/mcp/setup-mcp.mjs +322 -0
  82. package/lib/templates/content/content-manifest.json +11841 -0
  83. package/lib/templates/content/docs/BotInstruction/TUNNEL-SETUP.md +254 -0
  84. package/lib/templates/content/docs/BotInstruction/ZEP_NEO4J_KNOWLEDGE_GRAPH_GUIDE.md +217 -0
  85. package/lib/templates/content/docs/LLM/ContextMemoryDeveloperGuide.md +313 -0
  86. package/lib/templates/content/docs/LLM/TEMPLATES_FOLDER_AND_CODEGEN_GUIDE.md +391 -0
  87. package/lib/templates/content/docs/LLM/backend-service-llm.md +2 -11
  88. package/lib/templates/content/docs/LLM/mcp/MCP_SERVERS_SETUP_GUIDE.md +275 -0
  89. package/lib/templates/content/docs/LLM/preference-roles-and-permissions.md +838 -0
  90. package/lib/templates/content/docs/adminide-modules/account/disable-consent-screen.md +60 -0
  91. package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +372 -134
  92. package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +535 -276
  93. package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +1064 -74
  94. package/lib/templates/content/docs/adminide-modules/preferences/contributes-configuration.md +332 -0
  95. package/lib/templates/content/docs/adminide-modules/preferences/credentials-contribution.md +692 -0
  96. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/troubleshootingSettingsWithPageExplainPlan.md +691 -0
  97. package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-setup-guide.md +165 -0
  98. package/lib/templates/content/docs/tests/github-sync-test.md +16 -0
  99. package/lib/utils/docsNavigation.d.ts +8 -2
  100. package/lib/utils/docsNavigation.d.ts.map +1 -1
  101. package/lib/utils/docsNavigation.js +145 -8
  102. package/lib/utils/docsNavigation.js.map +1 -1
  103. package/lib/utils/githubSync.d.ts +65 -0
  104. package/lib/utils/githubSync.d.ts.map +1 -0
  105. package/lib/utils/githubSync.js +206 -0
  106. package/lib/utils/githubSync.js.map +1 -0
  107. package/lib/utils/localFileSync.server.d.ts +44 -0
  108. package/lib/utils/localFileSync.server.d.ts.map +1 -0
  109. package/lib/utils/localFileSync.server.js +41 -0
  110. package/lib/utils/localFileSync.server.js.map +1 -0
  111. package/lib/utils/markdownLoader.d.ts +19 -7
  112. package/lib/utils/markdownLoader.d.ts.map +1 -1
  113. package/lib/utils/markdownLoader.js +327 -2017
  114. package/lib/utils/markdownLoader.js.map +1 -1
  115. package/package.json +7 -6
  116. package/lib/pages/ArticlePage/ArticlePage.d.ts +0 -4
  117. package/lib/pages/ArticlePage/ArticlePage.d.ts.map +0 -1
  118. package/lib/pages/ArticlePage/ArticlePage.js +0 -222
  119. package/lib/pages/ArticlePage/ArticlePage.js.map +0 -1
  120. package/lib/pages/ArticlePage/index.d.ts +0 -3
  121. package/lib/pages/ArticlePage/index.d.ts.map +0 -1
  122. package/lib/pages/ArticlePage/index.js +0 -3
  123. package/lib/pages/ArticlePage/index.js.map +0 -1
  124. package/lib/pages/Help/HelpIndex.d.ts.map +0 -1
  125. package/lib/pages/Help/HelpIndex.js +0 -44
  126. package/lib/pages/Help/HelpIndex.js.map +0 -1
  127. package/lib/pages/Help/index.d.ts +0 -4
  128. package/lib/pages/Help/index.d.ts.map +0 -1
  129. package/lib/pages/Help/index.js.map +0 -1
  130. package/lib/templates/content/docs/adminide-modules/account/index.md +0 -14
  131. package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +0 -14
  132. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +0 -14
  133. package/lib/templates/content/docs/adminide-modules/file-upload/index.md +0 -16
  134. package/lib/templates/content/docs/adminide-modules/preferences/index.md +0 -28
  135. package/lib/templates/content/docs/chrome-extension/index.md +0 -14
  136. package/lib/templates/content/docs/contributing/folder-setup/index.md +0 -30
  137. package/lib/templates/content/docs/contributing/index.md +0 -60
  138. package/lib/templates/content/docs/contributing/react/index.md +0 -14
  139. package/lib/templates/content/docs/contributing/third-party/index.md +0 -18
  140. package/lib/templates/content/docs/devops/index.md +0 -14
  141. package/lib/templates/content/docs/error-handler/index.md +0 -16
  142. package/lib/templates/content/docs/feature-api/feature-browser/index.md +0 -22
  143. package/lib/templates/content/docs/feature-api/feature-mobile/index.md +0 -18
  144. package/lib/templates/content/docs/feature-api/feature-server/index.md +0 -40
  145. package/lib/templates/content/docs/feature-api/index.md +0 -18
  146. package/lib/templates/content/docs/graphql/index.md +0 -14
  147. package/lib/templates/content/docs/help/index.md +0 -14
  148. package/lib/templates/content/docs/mailing/index.md +0 -14
  149. package/lib/templates/content/docs/mobile/index.md +0 -14
  150. package/lib/templates/content/docs/organization/index.md +0 -20
  151. package/lib/templates/content/docs/security/index.md +0 -18
  152. package/lib/templates/content/docs/server-side/index.md +0 -14
  153. package/lib/templates/content/docs/tests/index.md +0 -18
@@ -0,0 +1,5 @@
1
+ import { Category } from '../utils/markdownLoader';
2
+ export declare const HeroSection: React.FC<{
3
+ categories: Category[];
4
+ }>;
5
+ //# sourceMappingURL=HeroSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroSection.d.ts","sourceRoot":"","sources":["../../src/components/HeroSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;CAAE,CAqD5D,CAAC"}
@@ -0,0 +1,57 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';import {SearchInput}from'./landing/SearchInput.js';const HeroSection = ({
2
+ categories
3
+ }) => {
4
+ return jsxs("div", {
5
+ className: "relative overflow-hidden bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 mb-16 p-8 md:p-12 lg:p-16",
6
+ children: [jsxs("div", {
7
+ className: "relative z-10 max-w-4xl mx-auto text-center",
8
+ children: [jsxs("div", {
9
+ className: "flex items-center justify-center gap-3 mb-6",
10
+ children: [jsx("div", {
11
+ className: "p-2 bg-blue-500/10 dark:bg-blue-400/20 rounded-lg",
12
+ children: jsx("svg", {
13
+ className: "w-6 h-6 text-blue-600 dark:text-blue-400",
14
+ fill: "none",
15
+ viewBox: "0 0 24 24",
16
+ stroke: "currentColor",
17
+ children: jsx("path", {
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round",
20
+ strokeWidth: 2,
21
+ d: "M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
22
+ })
23
+ })
24
+ }), jsx("span", {
25
+ className: "text-sm font-medium text-blue-600 dark:text-blue-400 uppercase tracking-wide",
26
+ children: "CDEBase Wiki"
27
+ })]
28
+ }), jsx("h1", {
29
+ className: "text-5xl md:text-6xl lg:text-7xl font-bold text-gray-900 dark:text-white mb-6 leading-tight",
30
+ children: "How can we help?"
31
+ }), jsx("p", {
32
+ className: "text-xl md:text-2xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto leading-relaxed mb-10",
33
+ children: "Get answers to all things CDEBase Wiki. Find documentation, guides, and answers to your questions."
34
+ }), jsx("div", {
35
+ className: "max-w-3xl mx-auto mb-8",
36
+ children: jsx(SearchInput, {
37
+ placeholder: "Search help center...",
38
+ className: "w-full"
39
+ })
40
+ }), jsxs("div", {
41
+ className: "flex flex-wrap items-center justify-center gap-3",
42
+ children: [jsx("span", {
43
+ className: "text-sm font-medium text-gray-600 dark:text-gray-400",
44
+ children: "Popular:"
45
+ }), categories.slice(0, 4).map(category => jsx(Link, {
46
+ to: `/help/${category.id}`,
47
+ className: "px-4 py-2 bg-white/80 dark:bg-gray-800/80 backdrop-blur-sm text-sm font-medium text-gray-700 dark:text-gray-300 rounded-full border border-gray-200/60 dark:border-gray-700/60 hover:bg-white dark:hover:bg-gray-800 hover:border-blue-400/60 dark:hover:border-blue-500/60 transition-all duration-200",
48
+ children: category.title
49
+ }, category.id))]
50
+ })]
51
+ }), jsx("div", {
52
+ className: "absolute top-0 right-0 -mt-4 -mr-4 w-64 h-64 bg-blue-200/20 dark:bg-blue-500/10 rounded-full blur-3xl"
53
+ }), jsx("div", {
54
+ className: "absolute bottom-0 left-0 -mb-4 -ml-4 w-64 h-64 bg-purple-200/20 dark:bg-purple-500/10 rounded-full blur-3xl"
55
+ })]
56
+ });
57
+ };export{HeroSection};//# sourceMappingURL=HeroSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroSection.js","sources":["../../src/components/HeroSection.tsx"],"sourcesContent":[null],"names":[],"mappings":"sIAIa,WAAW,GAAyC,CAAC;AAC9D,EAAA;AAoDJ,CAAC,KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarSearch.d.ts","sourceRoot":"","sources":["../../../src/components/help/SidebarSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,UAAU,kBAAkB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwHtD,CAAC"}
1
+ {"version":3,"file":"SidebarSearch.d.ts","sourceRoot":"","sources":["../../../src/components/help/SidebarSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,UAAU,kBAAkB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2HtD,CAAC"}
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useNavigate}from'@remix-run/react';import {FiSearch}from'@react-icons/all-files/fi/FiSearch.js';import {searchArticles,getCategoryById}from'../../utils/markdownLoader.js';const SidebarSearch = ({
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useNavigate}from'@remix-run/react';import {FiSearch}from'@react-icons/all-files/fi/FiSearch.js';import {getCategoryByIdSync,searchArticles}from'../../utils/markdownLoader.js';const SidebarSearch = ({
2
2
  className = '',
3
3
  placeholder = 'Search...'
4
4
  }) => {
@@ -12,10 +12,13 @@ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'
12
12
  // Perform search as user types
13
13
  useEffect(() => {
14
14
  if (searchQuery.trim().length > 0) {
15
- const results = searchArticles(searchQuery);
16
- setSearchResults(results.slice(0, 5)); // Limit to 5 results for sidebar
17
- setShowDropdown(true);
18
- setSelectedIndex(-1);
15
+ const performSearch = async () => {
16
+ const results = await searchArticles(searchQuery);
17
+ setSearchResults(results.slice(0, 5)); // Limit to 5 results for sidebar
18
+ setShowDropdown(true);
19
+ setSelectedIndex(-1);
20
+ };
21
+ performSearch();
19
22
  } else {
20
23
  setSearchResults([]);
21
24
  setShowDropdown(false);
@@ -92,7 +95,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'
92
95
  children: jsx("div", {
93
96
  className: "py-1",
94
97
  children: searchResults.map((article, index) => {
95
- const category = getCategoryById(article.categoryId);
98
+ const category = getCategoryByIdSync(article.categoryId);
96
99
  return jsxs("div", {
97
100
  onClick: () => handleResultClick(article),
98
101
  className: `block px-4 py-2 text-sm hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer ${selectedIndex === index ? 'bg-gray-50 dark:bg-gray-700' : ''}`,
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarSearch.js","sources":["../../../src/components/help/SidebarSearch.tsx"],"sourcesContent":[null],"names":[],"mappings":"0QAUO,MAAM,aAAa,GAAiC,CAAC;AACxD,EAAA,SAAc,GAAA,EAAA;aACI,GAAA;MACZ;QACA,QAAa,GAAA,WAAiB,EAAA;QAC9B,CAAA,WAAc,EAAA,cAAkB,CAAA,GAAA,QAAI,CAAA,EAAA,CAAA;AAC1C,EAAA,MAAA,CAAA,+BAAkD,CAAA,GAAM,QAAA,CAAA,EAAA,CAAA;AACxD,EAAA,MAAA,CAAA,YAAiB,EAAA,eAA+B,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA;QAEjB,CAAA,aAAA,EAAA,gBAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA;QACtB,kBAAM,GAAA,MAAA,CAAA,IAAA,CAAA;QACX,QAAI,GAAA,MAAgB,CAAA,IAAE,CAAC;AACnB;AACA,EAAA,SAAA,CAAA,MAAA;mBACe,CAAA,IAAA,EAAA,CAAA,MAAM,GAAC,CAAA,EAAA;AACtB,MAAA,MAAA,OAAA,GAAA,cAAqB,CAAA,WAAA,CAAA;sBACxB,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;qBAAO,CAAA,IAAA,CAAA;sBACY,CAAA,EAAA,CAAA;;sBAEnB,CAAA,EAAA,CAAA;AACL,MAAG,eAAc,CAAC,KAAA,CAAA;;KAGT,CAAA,WAAI,CAAE,CAAA;AACX;AACI,EAAA,SAAA,CAAA,MAAM;AACN,IAAA,MAAA,kBAAsB,GAAA,KAAQ,IAAA;kBACpB,GAAA,KAAA,CAAA,MAAW;4BACJ,CAAA,OAAK,IAAA,CAAA,kBAAyB,CAAA,OAAG,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA;sBAC3B,GAAA,QAAA,CAAA,aAAQ,CAAA,gCAAA,CAAA;qBAC1B,IAAA,CAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA;yBACJ,CAAA,KAAA,CAAA;AACL;AAEA;AACA,KAAA;AACI,IAAA,QAAA,CAAA,gBAA4B,CAAA,WAAC,oBAAa,CAAA;AAC9C,IAAA,OAAE,MAAA;MACL,QAAM,CAAA,mBAAA,CAAA,WAAA,EAAA,kBAAA,CAAA;AAEP,KAAA;QACI;AACA,EAAA,MAAA,oBAAkB;AACd,IAAA,CAAA,CAAA;qBACS,CAAS,MAAA,GAAA,CAAA,EAAA;YAClB,WAAe,GAAA,aAAQ,CAAA,CAAA,CAAA;cACT,CAAA,CAAA,MAAA,EAAA,WAAK,CAAA,UAAA,CAAA,CAAA,EAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA;qBACtB,CAAA,KAAA,CAAA;AACL,MAAE,cAAA,CAAA,EAAA,CAAA;AAEF;AACI,GAAA;AACJ,EAAA,MAAE,iBAAA,GAAA,CAAA,IAAA;IAEF,cAAM,CAAA,CAAA,CAAA,MAAmB,CAAA,KAAK,CAAA;AAC1B,GAAA;wBACmB,GAAA,MAAM;QACzB,aAAC,CAAA,MAAA,GAAA,CAAA,EAAA;AACL,MAAE,eAAA,CAAA,IAAA,CAAA;AAEF;AACI,GAAA;yBACW,GAAA,OAAA,IAAA;QACX,CAAC,OAAA,IAAA,CAAA,OAAA,CAAA,UAAA,IAAA,CAAA,OAAA,CAAA,IAAA,EAAA;;;mBAIiB,CAAA,KAAA,CAAA;AACtB,IAAA,cAAE,CAAA,EAAA,CAAA;IAEF,QACI,iBAAc,CAAA,2BAAqB,CAAS,CAAA;;;AA2C5B,IAAA,SAAA,EAAA,CAAA,gBAGX,EAER,SAAC,CAAA,CAAA;AACN,IAAE,GAAA,EAAA,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SidebarSearch.js","sources":["../../../src/components/help/SidebarSearch.tsx"],"sourcesContent":[null],"names":[],"mappings":"8QAUO,MAAM,aAAa,GAAiC,CAAC;AACxD,EAAA,SAAc,GAAA,EAAA;aACI,GAAA;MACZ;QACA,QAAa,GAAA,WAAiB,EAAA;QAC9B,CAAA,WAAc,EAAA,cAAkB,CAAA,GAAA,QAAI,CAAA,EAAA,CAAA;AAC1C,EAAA,MAAA,CAAA,+BAAkD,CAAA,GAAM,QAAA,CAAA,EAAA,CAAA;AACxD,EAAA,MAAA,CAAA,YAAiB,EAAA,eAA+B,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA;QAEjB,CAAA,aAAA,EAAA,gBAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA;QACtB,kBAAM,GAAA,MAAA,CAAA,IAAA,CAAA;QACX,QAAI,GAAA,MAAgB,CAAA,IAAE,CAAC;AACnB;AACI,EAAA,SAAA,CAAA,MAAA;AACA,IAAA,IAAA,WAAA,CAAA,IAAA,EAAA,CAAA,MAAiB,GAAA,CAAA,EAAA;yBACF,GAAA,YAAO;AACtB,QAAA,MAAA,OAAA,GAAA,MAAA,cAAqB,CAAA,WAAA,CAAA;AACzB,QAAA,gBAAE,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AACF,QAAA,eAAA,CAAA,IAAgB,CAAA;QACpB,gBAAC,CAAA,EAAA,CAAA;;mBACmB,EAAA;;sBAEnB,CAAA,EAAA,CAAA;AACL,MAAG,eAAc,CAAC,KAAA,CAAA;;KAGT,CAAA,WAAI,CAAE,CAAA;AACX;AACI,EAAA,SAAA,CAAA,MAAM;AACN,IAAA,MAAA,kBAAsB,GAAA,KAAQ,IAAA;kBACpB,GAAA,KAAA,CAAA,MAAW;4BACJ,CAAA,OAAK,IAAA,CAAA,kBAAyB,CAAA,OAAG,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA;sBAC3B,GAAA,QAAA,CAAA,aAAQ,CAAA,gCAAA,CAAA;qBAC1B,IAAA,CAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA;yBACJ,CAAA,KAAA,CAAA;AACL;AAEA;AACA,KAAA;AACI,IAAA,QAAA,CAAA,gBAA4B,CAAA,WAAC,oBAAa,CAAA;AAC9C,IAAA,OAAE,MAAA;MACL,QAAM,CAAA,mBAAA,CAAA,WAAA,EAAA,kBAAA,CAAA;AAEP,KAAA;QACI;AACA,EAAA,MAAA,oBAAkB;AACd,IAAA,CAAA,CAAA;qBACS,CAAS,MAAA,GAAA,CAAA,EAAA;YAClB,WAAe,GAAA,aAAQ,CAAA,CAAA,CAAA;cACT,CAAA,CAAA,MAAA,EAAA,WAAK,CAAA,UAAA,CAAA,CAAA,EAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA;qBACtB,CAAA,KAAA,CAAA;AACL,MAAE,cAAA,CAAA,EAAA,CAAA;AAEF;AACI,GAAA;AACJ,EAAA,MAAE,iBAAA,GAAA,CAAA,IAAA;IAEF,cAAM,CAAA,CAAA,CAAA,MAAmB,CAAA,KAAK,CAAA;AAC1B,GAAA;wBACmB,GAAA,MAAM;QACzB,aAAC,CAAA,MAAA,GAAA,CAAA,EAAA;AACL,MAAE,eAAA,CAAA,IAAA,CAAA;AAEF;AACI,GAAA;yBACW,GAAA,OAAA,IAAA;QACX,CAAC,OAAA,IAAA,CAAA,OAAA,CAAA,UAAA,IAAA,CAAA,OAAA,CAAA,IAAA,EAAA;;;mBAIiB,CAAA,KAAA,CAAA;AACtB,IAAA,cAAE,CAAA,EAAA,CAAA;IAEF,QACI,iBAAc,CAAA,2BAAqB,CAAS,CAAA;;;AA2C5B,IAAA,SAAA,EAAA,CAAA,gBAGX,EAER,SAAC,CAAA,CAAA;AACN,IAAE,GAAA,EAAA,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/landing/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,UAAU,gBAAgB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiPlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/landing/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,UAAU,gBAAgB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoPlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {createPortal}from'react-dom';import {useNavigate}from'@remix-run/react';import {FiSearch}from'@react-icons/all-files/fi/FiSearch.js';import {searchArticles,getCategoryById}from'../../utils/markdownLoader.js';const SearchInput = ({
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {createPortal}from'react-dom';import {useNavigate}from'@remix-run/react';import {FiSearch}from'@react-icons/all-files/fi/FiSearch.js';import {getCategoryByIdSync,searchArticles}from'../../utils/markdownLoader.js';const SearchInput = ({
2
2
  onSearch,
3
3
  initialSearchQuery = '',
4
4
  className = '',
@@ -34,14 +34,17 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
34
34
  // Perform search as user types
35
35
  useEffect(() => {
36
36
  if (searchQuery.trim().length > 0) {
37
- const results = searchArticles(searchQuery);
38
- setSearchResults(results.slice(0, 10)); // Limit to 10 results
39
- setShowDropdown(true);
40
- setSelectedIndex(-1);
41
- // Use setTimeout to ensure DOM is updated
42
- setTimeout(() => {
43
- updateDropdownPosition.current();
44
- }, 0);
37
+ const performSearch = async () => {
38
+ const results = await searchArticles(searchQuery);
39
+ setSearchResults(results.slice(0, 10)); // Limit to 10 results
40
+ setShowDropdown(true);
41
+ setSelectedIndex(-1);
42
+ // Use setTimeout to ensure DOM is updated
43
+ setTimeout(() => {
44
+ updateDropdownPosition.current();
45
+ }, 0);
46
+ };
47
+ performSearch();
45
48
  } else {
46
49
  setSearchResults([]);
47
50
  setShowDropdown(false);
@@ -169,7 +172,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
169
172
  children: jsx("div", {
170
173
  className: "py-1",
171
174
  children: searchResults.map((article, index) => {
172
- const category = getCategoryById(article.categoryId);
175
+ const category = getCategoryByIdSync(article.categoryId);
173
176
  `/help/${article.categoryId}/${article.slug}`;
174
177
  return jsx("div", {
175
178
  onClick: e => {
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sources":["../../../src/components/landing/SearchInput.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"SearchInput.js","sources":["../../../src/components/landing/SearchInput.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface CreateMarkdownDialogProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ onCreate: (categoryId: string, slug: string, title: string, content: string, isNewCategory: boolean, categoryTitle?: string, subpath?: string) => Promise<void>;
6
+ }
7
+ export declare const CreateMarkdownDialog: React.FC<CreateMarkdownDialogProps>;
8
+ export {};
9
+ //# sourceMappingURL=CreateMarkdownDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateMarkdownDialog.d.ts","sourceRoot":"","sources":["../../../src/components/markdown/CreateMarkdownDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAuB5D,UAAU,yBAAyB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CACN,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA+UpE,CAAC"}
@@ -0,0 +1,291 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useMemo,useEffect}from'react';import {getAllCategoriesMetadataSync}from'../../utils/markdownLoader.js';import {getSubpathsForCategorySync}from'../../utils/docsNavigation.js';/** Slugify a path segment: lowercase, spaces/symbols → hyphens, only [a-z0-9-]. */
2
+ function slugifySegment(segment) {
3
+ return segment.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
4
+ }
5
+ /** Slugify full subpath (e.g. "Github Sync" → "github-sync", "A/B" → "a/b"). */
6
+ function slugifySubpath(path) {
7
+ if (!path.trim()) return '';
8
+ return path.split('/').map(s => slugifySegment(s)).filter(Boolean).join('/');
9
+ }
10
+ const CreateMarkdownDialog = ({
11
+ isOpen,
12
+ onClose,
13
+ onCreate
14
+ }) => {
15
+ const [categoryId, setCategoryId] = useState('');
16
+ const [slug, setSlug] = useState('');
17
+ const [title, setTitle] = useState('');
18
+ const [isCreating, setIsCreating] = useState(false);
19
+ const [error, setError] = useState(null);
20
+ const [categories, setCategories] = useState([]);
21
+ const [isNewCategory, setIsNewCategory] = useState(false);
22
+ const [newCategoryName, setNewCategoryName] = useState('');
23
+ const [newCategoryId, setNewCategoryId] = useState('');
24
+ const [subpath, setSubpath] = useState('');
25
+ const [subpathCustom, setSubpathCustom] = useState('');
26
+ const [isNewSubpath, setIsNewSubpath] = useState(false);
27
+ const selectedCategoryId = isNewCategory ? newCategoryId : categoryId;
28
+ const subpathOptions = useMemo(() => selectedCategoryId && !isNewCategory ? getSubpathsForCategorySync(selectedCategoryId) : [], [selectedCategoryId, isNewCategory]);
29
+ const effectiveSubpathRaw = subpathOptions.length > 0 && !isNewSubpath ? subpath : subpathCustom.trim();
30
+ const effectiveSubpath = effectiveSubpathRaw ? slugifySubpath(effectiveSubpathRaw) : '';
31
+ const fullSlugHint = effectiveSubpath ? `${effectiveSubpath.replace(/\//g, '-')}-${slug || '…'}` : null;
32
+ useEffect(() => {
33
+ if (isOpen) {
34
+ const cats = getAllCategoriesMetadataSync();
35
+ setCategories(cats);
36
+ if (cats.length > 0 && !categoryId && !isNewCategory) {
37
+ setCategoryId(cats[0].id);
38
+ }
39
+ }
40
+ }, [isOpen]);
41
+ // Generate category ID from category name
42
+ useEffect(() => {
43
+ if (newCategoryName && isNewCategory) {
44
+ const generatedId = newCategoryName.replace(/[^a-zA-Z0-9]+/g, '').replace(/^[0-9]+/, '') ||
45
+ // Remove leading numbers
46
+ newCategoryName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
47
+ setNewCategoryId(generatedId);
48
+ }
49
+ }, [newCategoryName, isNewCategory]);
50
+ // Generate slug from title
51
+ useEffect(() => {
52
+ if (title && !slug) {
53
+ const generatedSlug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
54
+ setSlug(generatedSlug);
55
+ }
56
+ }, [title, slug]);
57
+ const handleCreate = async () => {
58
+ const finalCategoryId = isNewCategory ? newCategoryId : categoryId;
59
+ if (!finalCategoryId || !slug || !title) {
60
+ setError('Please fill in all required fields');
61
+ return;
62
+ }
63
+ if (isNewCategory && !newCategoryName) {
64
+ setError('Please enter a category name');
65
+ return;
66
+ }
67
+ // Validate slug format
68
+ if (!/^[a-z0-9-]+$/.test(slug)) {
69
+ setError('Slug can only contain lowercase letters, numbers, and hyphens');
70
+ return;
71
+ }
72
+ // Validate category ID format (if new category)
73
+ if (isNewCategory && !/^[a-zA-Z0-9-]+$/.test(newCategoryId)) {
74
+ setError('Category ID can only contain letters, numbers, and hyphens');
75
+ return;
76
+ }
77
+ // Check if category ID already exists
78
+ if (isNewCategory && categories.some(cat => cat.id === newCategoryId)) {
79
+ setError('A category with this ID already exists');
80
+ return;
81
+ }
82
+ if (effectiveSubpath && !/^[a-z0-9/-]+$/.test(effectiveSubpath)) {
83
+ setError('Subcategory path can only contain letters, numbers, hyphens, and slashes');
84
+ return;
85
+ }
86
+ if (effectiveSubpath && (effectiveSubpath.startsWith('/') || effectiveSubpath.endsWith('/'))) {
87
+ setError('Subcategory path must not start or end with a slash');
88
+ return;
89
+ }
90
+ setIsCreating(true);
91
+ setError(null);
92
+ try {
93
+ // Create default markdown content with frontmatter
94
+ const content = `---
95
+ meta:
96
+ title: ${title}
97
+ description: ${title}
98
+ date: '${new Date().toISOString().split('T')[0]}T00:00:00'
99
+ updated: '${new Date().toISOString().split('T')[0]}T00:00:00'
100
+ excerpt: ${title} ...
101
+ headers:
102
+ Cache-Control: no-cache
103
+ ---
104
+
105
+ # ${title}
106
+
107
+ Start writing your content here...
108
+
109
+ `;
110
+ await onCreate(finalCategoryId, slug, title, content, isNewCategory, isNewCategory ? newCategoryName : undefined, effectiveSubpath || undefined);
111
+ // Reset form
112
+ setIsNewCategory(false);
113
+ setNewCategoryName('');
114
+ setNewCategoryId('');
115
+ setSubpath('');
116
+ setSubpathCustom('');
117
+ setIsNewSubpath(false);
118
+ setCategoryId(categories.length > 0 ? categories[0].id : '');
119
+ setSlug('');
120
+ setTitle('');
121
+ onClose();
122
+ } catch (err) {
123
+ setError(err.message || 'Failed to create page');
124
+ } finally {
125
+ setIsCreating(false);
126
+ }
127
+ };
128
+ if (!isOpen) return null;
129
+ return jsx("div", {
130
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
131
+ onClick: onClose,
132
+ children: jsxs("div", {
133
+ className: "bg-background border border-gray-200 dark:border-gray-800 rounded-lg shadow-xl w-full max-w-md p-6",
134
+ onClick: e => e.stopPropagation(),
135
+ children: [jsx("h2", {
136
+ className: "text-xl font-semibold mb-4",
137
+ children: "Create New Markdown Page"
138
+ }), jsxs("div", {
139
+ className: "space-y-4",
140
+ children: [jsxs("div", {
141
+ children: [jsxs("div", {
142
+ className: "flex items-center justify-between mb-2",
143
+ children: [jsxs("label", {
144
+ className: "block text-sm font-medium",
145
+ children: ["Category ", jsx("span", {
146
+ className: "text-red-500",
147
+ children: "*"
148
+ })]
149
+ }), jsx("button", {
150
+ type: "button",
151
+ onClick: () => {
152
+ setIsNewCategory(!isNewCategory);
153
+ if (!isNewCategory) {
154
+ setCategoryId('');
155
+ setNewCategoryName('');
156
+ setNewCategoryId('');
157
+ } else {
158
+ setNewCategoryName('');
159
+ }
160
+ },
161
+ className: "text-xs text-primary hover:underline",
162
+ children: isNewCategory ? 'Select existing' : '+ Create new category'
163
+ })]
164
+ }), isNewCategory ? jsxs("div", {
165
+ className: "space-y-2",
166
+ children: [jsx("input", {
167
+ type: "text",
168
+ value: newCategoryName,
169
+ onChange: e => setNewCategoryName(e.target.value),
170
+ placeholder: "My New Category",
171
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary"
172
+ }), jsxs("div", {
173
+ children: [jsx("input", {
174
+ type: "text",
175
+ value: newCategoryId,
176
+ onChange: e => setNewCategoryId(e.target.value),
177
+ placeholder: "my-new-category",
178
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary font-mono text-sm"
179
+ }), jsx("p", {
180
+ className: "mt-1 text-xs text-gray-500 dark:text-gray-400",
181
+ children: "Category ID (auto-generated from name)"
182
+ })]
183
+ })]
184
+ }) : jsxs("select", {
185
+ value: categoryId,
186
+ onChange: e => {
187
+ setCategoryId(e.target.value);
188
+ setSubpath('');
189
+ setSubpathCustom('');
190
+ setIsNewSubpath(false);
191
+ },
192
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary",
193
+ children: [jsx("option", {
194
+ value: "",
195
+ children: "Select a category"
196
+ }), categories.map(cat => jsx("option", {
197
+ value: cat.id,
198
+ children: cat.title
199
+ }, cat.id))]
200
+ })]
201
+ }), !isNewCategory && selectedCategoryId && jsxs("div", {
202
+ children: [jsxs("div", {
203
+ className: "flex items-center justify-between mb-2",
204
+ children: [jsx("label", {
205
+ className: "block text-sm font-medium text-gray-600 dark:text-gray-400",
206
+ children: "Subcategory (optional)"
207
+ }), subpathOptions.length > 0 && jsx("button", {
208
+ type: "button",
209
+ onClick: () => {
210
+ setIsNewSubpath(!isNewSubpath);
211
+ if (!isNewSubpath) setSubpathCustom('');else setSubpath('');
212
+ },
213
+ className: "text-xs text-primary hover:underline",
214
+ children: isNewSubpath ? 'Select existing' : '+ New subcategory path'
215
+ })]
216
+ }), subpathOptions.length === 0 || isNewSubpath ? jsx("input", {
217
+ type: "text",
218
+ value: subpathCustom,
219
+ onChange: e => setSubpathCustom(e.target.value),
220
+ placeholder: "e.g. preferences/pageSettings",
221
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary font-mono text-sm"
222
+ }) : jsxs("select", {
223
+ value: subpath,
224
+ onChange: e => setSubpath(e.target.value),
225
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary",
226
+ children: [jsx("option", {
227
+ value: "",
228
+ children: "None (top level under category)"
229
+ }), subpathOptions.map(path => jsx("option", {
230
+ value: path,
231
+ children: path
232
+ }, path))]
233
+ }), jsx("p", {
234
+ className: "mt-1 text-xs text-gray-500 dark:text-gray-400",
235
+ children: "Nested folder under category. Stored as slug: lowercase, spaces \u2192 hyphens (e.g. Github Sync \u2192 github-sync)."
236
+ })]
237
+ }), jsxs("div", {
238
+ children: [jsxs("label", {
239
+ className: "block text-sm font-medium mb-1",
240
+ children: ["Title ", jsx("span", {
241
+ className: "text-red-500",
242
+ children: "*"
243
+ })]
244
+ }), jsx("input", {
245
+ type: "text",
246
+ value: title,
247
+ onChange: e => setTitle(e.target.value),
248
+ placeholder: "My New Page",
249
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary"
250
+ })]
251
+ }), jsxs("div", {
252
+ children: [jsxs("label", {
253
+ className: "block text-sm font-medium mb-1",
254
+ children: ["Slug ", jsx("span", {
255
+ className: "text-red-500",
256
+ children: "*"
257
+ })]
258
+ }), jsx("input", {
259
+ type: "text",
260
+ value: slug,
261
+ onChange: e => setSlug(e.target.value),
262
+ placeholder: "my-new-page",
263
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary font-mono text-sm"
264
+ }), jsx("p", {
265
+ className: "mt-1 text-xs text-gray-500 dark:text-gray-400",
266
+ children: fullSlugHint ? `Full URL slug: ${fullSlugHint}` : 'URL-friendly identifier (auto-generated from title)'
267
+ })]
268
+ }), error && jsx("div", {
269
+ className: "p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-md",
270
+ children: jsx("p", {
271
+ className: "text-sm text-red-600 dark:text-red-400",
272
+ children: error
273
+ })
274
+ })]
275
+ }), jsxs("div", {
276
+ className: "flex justify-end gap-2 mt-6",
277
+ children: [jsx("button", {
278
+ onClick: onClose,
279
+ disabled: isCreating,
280
+ className: "px-4 py-2 text-sm rounded-md bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50",
281
+ children: "Cancel"
282
+ }), jsx("button", {
283
+ onClick: handleCreate,
284
+ disabled: isCreating || !isNewCategory && !categoryId || isNewCategory && !newCategoryId || !slug || !title,
285
+ className: "px-4 py-2 text-sm rounded-md bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed",
286
+ children: isCreating ? 'Creating...' : 'Create'
287
+ })]
288
+ })]
289
+ })
290
+ });
291
+ };export{CreateMarkdownDialog};//# sourceMappingURL=CreateMarkdownDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateMarkdownDialog.js","sources":["../../../src/components/markdown/CreateMarkdownDialog.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface GitHubSyncStatusDialogProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ status: 'success' | 'error' | null;
6
+ message: string;
7
+ }
8
+ export declare const GitHubSyncStatusDialog: React.FC<GitHubSyncStatusDialogProps>;
9
+ export {};
10
+ //# sourceMappingURL=GitHubSyncStatusDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubSyncStatusDialog.d.ts","sourceRoot":"","sources":["../../../src/components/markdown/GitHubSyncStatusDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,2BAA2B;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA+ExE,CAAC"}
@@ -0,0 +1,72 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';const GitHubSyncStatusDialog = ({
2
+ isOpen,
3
+ onClose,
4
+ status,
5
+ message
6
+ }) => {
7
+ if (!isOpen) return null;
8
+ const isSuccess = status === 'success';
9
+ const isError = status === 'error';
10
+ return jsx("div", {
11
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
12
+ onClick: onClose,
13
+ children: jsxs("div", {
14
+ className: "bg-background border border-gray-200 dark:border-gray-800 rounded-lg shadow-xl w-full max-w-md p-6",
15
+ onClick: e => e.stopPropagation(),
16
+ children: [jsxs("div", {
17
+ className: "flex items-start gap-4",
18
+ children: [isSuccess && jsx("div", {
19
+ className: "flex-shrink-0",
20
+ children: jsx("div", {
21
+ className: "w-10 h-10 rounded-full bg-green-100 dark:bg-green-900/20 flex items-center justify-center",
22
+ children: jsx("svg", {
23
+ className: "w-6 h-6 text-green-600 dark:text-green-400",
24
+ fill: "none",
25
+ stroke: "currentColor",
26
+ viewBox: "0 0 24 24",
27
+ children: jsx("path", {
28
+ strokeLinecap: "round",
29
+ strokeLinejoin: "round",
30
+ strokeWidth: 2,
31
+ d: "M5 13l4 4L19 7"
32
+ })
33
+ })
34
+ })
35
+ }), isError && jsx("div", {
36
+ className: "flex-shrink-0",
37
+ children: jsx("div", {
38
+ className: "w-10 h-10 rounded-full bg-red-100 dark:bg-red-900/20 flex items-center justify-center",
39
+ children: jsx("svg", {
40
+ className: "w-6 h-6 text-red-600 dark:text-red-400",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ viewBox: "0 0 24 24",
44
+ children: jsx("path", {
45
+ strokeLinecap: "round",
46
+ strokeLinejoin: "round",
47
+ strokeWidth: 2,
48
+ d: "M6 18L18 6M6 6l12 12"
49
+ })
50
+ })
51
+ })
52
+ }), jsxs("div", {
53
+ className: "flex-1",
54
+ children: [jsx("h3", {
55
+ className: "text-lg font-semibold mb-2",
56
+ children: isSuccess ? 'Sync Successful' : isError ? 'Sync Failed' : 'Syncing...'
57
+ }), jsx("p", {
58
+ className: `text-sm ${isSuccess ? 'text-green-600 dark:text-green-400' : isError ? 'text-red-600 dark:text-red-400' : 'text-gray-600 dark:text-gray-400'}`,
59
+ children: message
60
+ })]
61
+ })]
62
+ }), jsx("div", {
63
+ className: "flex justify-end mt-6",
64
+ children: jsx("button", {
65
+ onClick: onClose,
66
+ className: "px-4 py-2 text-sm rounded-md bg-primary text-primary-foreground hover:bg-primary/90",
67
+ children: "OK"
68
+ })
69
+ })]
70
+ })
71
+ });
72
+ };export{GitHubSyncStatusDialog};//# sourceMappingURL=GitHubSyncStatusDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubSyncStatusDialog.js","sources":["../../../src/components/markdown/GitHubSyncStatusDialog.tsx"],"sourcesContent":[null],"names":[],"mappings":"yCASO,MAAM,sBAAsB,GAA0C,CAAC;AAC1E,EAAA,MAAI;AAAS,EAAA,OAAA;AAEb,EAAA,MAAA;AACA,EAAA;AAEA,CAAA,KAAA;AAoDgC,EAAA,IAAA,CAAA,MAAA,EAAA,OAAA,IAAA;AACA,EAAA,MAAA,SAAA,GAAA,MAAA,KAAA,SAAA;AACE,EAAA,MAAA,OAAA,GAAA,MAAA,KAAA,OAAA;;AAmBtC,IAAE,SAAA,EAAA,iEAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface MarkdownEditorProps {
3
+ initialContent: string;
4
+ onSave?: (content: string) => Promise<void>;
5
+ onCancel?: () => void;
6
+ filePath?: string;
7
+ className?: string;
8
+ }
9
+ export declare const MarkdownEditor: React.FC<MarkdownEditorProps>;
10
+ export {};
11
+ //# sourceMappingURL=MarkdownEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/components/markdown/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,UAAU,mBAAmB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoLxD,CAAC"}