@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.
- package/lib/components/HeroSection.d.ts +5 -0
- package/lib/components/HeroSection.d.ts.map +1 -0
- package/lib/components/HeroSection.js +57 -0
- package/lib/components/HeroSection.js.map +1 -0
- package/lib/components/help/SidebarSearch.d.ts.map +1 -1
- package/lib/components/help/SidebarSearch.js +9 -6
- package/lib/components/help/SidebarSearch.js.map +1 -1
- package/lib/components/landing/SearchInput.d.ts.map +1 -1
- package/lib/components/landing/SearchInput.js +13 -10
- package/lib/components/landing/SearchInput.js.map +1 -1
- package/lib/components/markdown/CreateMarkdownDialog.d.ts +9 -0
- package/lib/components/markdown/CreateMarkdownDialog.d.ts.map +1 -0
- package/lib/components/markdown/CreateMarkdownDialog.js +291 -0
- package/lib/components/markdown/CreateMarkdownDialog.js.map +1 -0
- package/lib/components/markdown/GitHubSyncStatusDialog.d.ts +10 -0
- package/lib/components/markdown/GitHubSyncStatusDialog.d.ts.map +1 -0
- package/lib/components/markdown/GitHubSyncStatusDialog.js +72 -0
- package/lib/components/markdown/GitHubSyncStatusDialog.js.map +1 -0
- package/lib/components/markdown/MarkdownEditor.d.ts +11 -0
- package/lib/components/markdown/MarkdownEditor.d.ts.map +1 -0
- package/lib/components/markdown/MarkdownEditor.js +127 -0
- package/lib/components/markdown/MarkdownEditor.js.map +1 -0
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +111 -10
- package/lib/compute.js.map +1 -1
- package/lib/config/env-config.d.ts +6 -0
- package/lib/config/env-config.d.ts.map +1 -1
- package/lib/config/env-config.js +63 -1
- package/lib/config/env-config.js.map +1 -1
- package/lib/index.server.d.ts +2 -0
- package/lib/index.server.d.ts.map +1 -0
- package/lib/index.server.js +1 -0
- package/lib/index.server.js.map +1 -0
- package/lib/pages/AdminApproval/index.d.ts +10 -0
- package/lib/pages/AdminApproval/index.d.ts.map +1 -0
- package/lib/pages/AdminApproval/index.js +141 -0
- package/lib/pages/AdminApproval/index.js.map +1 -0
- package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -1
- package/lib/pages/CategoryCollection/CategoryCollection.js +13 -5
- package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -1
- package/lib/pages/Help/{HelpIndex.d.ts → HelpPage.d.ts} +1 -1
- package/lib/pages/Help/HelpPage.d.ts.map +1 -0
- package/lib/pages/Help/HelpPage.js +70 -0
- package/lib/pages/Help/HelpPage.js.map +1 -0
- package/lib/pages/Landing/index.js +1 -1
- package/lib/pages/Markdown/MarkdownPageLayout.d.ts +3 -0
- package/lib/pages/Markdown/MarkdownPageLayout.d.ts.map +1 -0
- package/lib/pages/{Help/index.js → Markdown/MarkdownPageLayout.js} +132 -44
- package/lib/pages/Markdown/MarkdownPageLayout.js.map +1 -0
- package/lib/pages/Markdown/MarkdownPageWithParams.d.ts +9 -0
- package/lib/pages/Markdown/MarkdownPageWithParams.d.ts.map +1 -0
- package/lib/pages/Markdown/MarkdownPageWithParams.js +406 -0
- package/lib/pages/Markdown/MarkdownPageWithParams.js.map +1 -0
- package/lib/pages/Markdown/index.d.ts +3 -0
- package/lib/pages/Markdown/index.d.ts.map +1 -0
- package/lib/pages/Markdown/index.js +5 -0
- package/lib/pages/Markdown/index.js.map +1 -0
- package/lib/pages/VerifyUser/index.d.ts +12 -0
- package/lib/pages/VerifyUser/index.d.ts.map +1 -0
- package/lib/pages/VerifyUser/index.js +385 -0
- package/lib/pages/VerifyUser/index.js.map +1 -0
- package/lib/pages/icons.d.ts +5 -0
- package/lib/pages/icons.d.ts.map +1 -0
- package/lib/pages/icons.js +190 -0
- package/lib/pages/icons.js.map +1 -0
- package/lib/resources/ApiMarkdownSave.d.ts +10 -0
- package/lib/resources/ApiMarkdownSave.d.ts.map +1 -0
- package/lib/resources/ApiMarkdownSave.js +8 -0
- package/lib/resources/ApiMarkdownSave.js.map +1 -0
- package/lib/resources/ApiMarkdownSave.server.d.ts +19 -0
- package/lib/resources/ApiMarkdownSave.server.d.ts.map +1 -0
- package/lib/resources/ApiMarkdownSave.server.js +38 -0
- package/lib/resources/ApiMarkdownSave.server.js.map +1 -0
- package/lib/routes.json +104 -2463
- package/lib/templates/assets/images/file-upload/add-link-frontend.png +0 -0
- package/lib/templates/assets/images/file-upload/add-package-backend.png +0 -0
- package/lib/templates/assets/images/file-upload/add-to-backend-module.png +0 -0
- package/lib/templates/assets/images/file-upload/add-upload-client-frontend.png +0 -0
- package/lib/templates/assets/images/file-upload/modify-upload-false-server.png +0 -0
- package/lib/templates/assets/mcp/mcp-servers-bundle.zip +0 -0
- package/lib/templates/assets/mcp/setup-mcp.mjs +322 -0
- package/lib/templates/content/content-manifest.json +11841 -0
- package/lib/templates/content/docs/BotInstruction/TUNNEL-SETUP.md +254 -0
- package/lib/templates/content/docs/BotInstruction/ZEP_NEO4J_KNOWLEDGE_GRAPH_GUIDE.md +217 -0
- package/lib/templates/content/docs/LLM/ContextMemoryDeveloperGuide.md +313 -0
- package/lib/templates/content/docs/LLM/TEMPLATES_FOLDER_AND_CODEGEN_GUIDE.md +391 -0
- package/lib/templates/content/docs/LLM/backend-service-llm.md +2 -11
- package/lib/templates/content/docs/LLM/mcp/MCP_SERVERS_SETUP_GUIDE.md +275 -0
- package/lib/templates/content/docs/LLM/preference-roles-and-permissions.md +838 -0
- package/lib/templates/content/docs/adminide-modules/account/disable-consent-screen.md +60 -0
- package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +372 -134
- package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +535 -276
- package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +1064 -74
- package/lib/templates/content/docs/adminide-modules/preferences/contributes-configuration.md +332 -0
- package/lib/templates/content/docs/adminide-modules/preferences/credentials-contribution.md +692 -0
- package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/troubleshootingSettingsWithPageExplainPlan.md +691 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-setup-guide.md +165 -0
- package/lib/templates/content/docs/tests/github-sync-test.md +16 -0
- package/lib/utils/docsNavigation.d.ts +8 -2
- package/lib/utils/docsNavigation.d.ts.map +1 -1
- package/lib/utils/docsNavigation.js +145 -8
- package/lib/utils/docsNavigation.js.map +1 -1
- package/lib/utils/githubSync.d.ts +65 -0
- package/lib/utils/githubSync.d.ts.map +1 -0
- package/lib/utils/githubSync.js +206 -0
- package/lib/utils/githubSync.js.map +1 -0
- package/lib/utils/localFileSync.server.d.ts +44 -0
- package/lib/utils/localFileSync.server.d.ts.map +1 -0
- package/lib/utils/localFileSync.server.js +41 -0
- package/lib/utils/localFileSync.server.js.map +1 -0
- package/lib/utils/markdownLoader.d.ts +19 -7
- package/lib/utils/markdownLoader.d.ts.map +1 -1
- package/lib/utils/markdownLoader.js +327 -2017
- package/lib/utils/markdownLoader.js.map +1 -1
- package/package.json +7 -6
- package/lib/pages/ArticlePage/ArticlePage.d.ts +0 -4
- package/lib/pages/ArticlePage/ArticlePage.d.ts.map +0 -1
- package/lib/pages/ArticlePage/ArticlePage.js +0 -222
- package/lib/pages/ArticlePage/ArticlePage.js.map +0 -1
- package/lib/pages/ArticlePage/index.d.ts +0 -3
- package/lib/pages/ArticlePage/index.d.ts.map +0 -1
- package/lib/pages/ArticlePage/index.js +0 -3
- package/lib/pages/ArticlePage/index.js.map +0 -1
- package/lib/pages/Help/HelpIndex.d.ts.map +0 -1
- package/lib/pages/Help/HelpIndex.js +0 -44
- package/lib/pages/Help/HelpIndex.js.map +0 -1
- package/lib/pages/Help/index.d.ts +0 -4
- package/lib/pages/Help/index.d.ts.map +0 -1
- package/lib/pages/Help/index.js.map +0 -1
- package/lib/templates/content/docs/adminide-modules/account/index.md +0 -14
- package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +0 -14
- package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +0 -14
- package/lib/templates/content/docs/adminide-modules/file-upload/index.md +0 -16
- package/lib/templates/content/docs/adminide-modules/preferences/index.md +0 -28
- package/lib/templates/content/docs/chrome-extension/index.md +0 -14
- package/lib/templates/content/docs/contributing/folder-setup/index.md +0 -30
- package/lib/templates/content/docs/contributing/index.md +0 -60
- package/lib/templates/content/docs/contributing/react/index.md +0 -14
- package/lib/templates/content/docs/contributing/third-party/index.md +0 -18
- package/lib/templates/content/docs/devops/index.md +0 -14
- package/lib/templates/content/docs/error-handler/index.md +0 -16
- package/lib/templates/content/docs/feature-api/feature-browser/index.md +0 -22
- package/lib/templates/content/docs/feature-api/feature-mobile/index.md +0 -18
- package/lib/templates/content/docs/feature-api/feature-server/index.md +0 -40
- package/lib/templates/content/docs/feature-api/index.md +0 -18
- package/lib/templates/content/docs/graphql/index.md +0 -14
- package/lib/templates/content/docs/help/index.md +0 -14
- package/lib/templates/content/docs/mailing/index.md +0 -14
- package/lib/templates/content/docs/mobile/index.md +0 -14
- package/lib/templates/content/docs/organization/index.md +0 -20
- package/lib/templates/content/docs/security/index.md +0 -18
- package/lib/templates/content/docs/server-side/index.md +0 -14
- package/lib/templates/content/docs/tests/index.md +0 -18
|
@@ -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,
|
|
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
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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 =
|
|
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":"
|
|
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,
|
|
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
|
|
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
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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 =
|
|
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":"
|
|
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"}
|