@adminide-stack/yantra-help-browser 12.0.16-alpha.15 → 12.0.16-alpha.16
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/Logo.d.ts.map +1 -1
- package/lib/components/Logo.js +3 -2
- package/lib/components/Logo.js.map +1 -1
- package/lib/components/navbar/index.d.ts.map +1 -1
- package/lib/components/navbar/index.js +5 -4
- package/lib/components/navbar/index.js.map +1 -1
- package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -1
- package/lib/pages/ArticlePage/ArticlePage.js +66 -112
- package/lib/pages/ArticlePage/ArticlePage.js.map +1 -1
- package/lib/pages/ArticlePage/ArticlePageLayout.js +1 -1
- package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.d.ts +10 -0
- package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.d.ts.map +1 -0
- package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.js +31 -0
- package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.js.map +1 -0
- package/lib/pages/ArticlePage/components/ArticleHeader.d.ts +13 -0
- package/lib/pages/ArticlePage/components/ArticleHeader.d.ts.map +1 -0
- package/lib/pages/ArticlePage/components/ArticleNavigation.d.ts +14 -0
- package/lib/pages/ArticlePage/components/ArticleNavigation.d.ts.map +1 -0
- package/lib/pages/ArticlePage/components/ArticleNavigation.js +37 -0
- package/lib/pages/ArticlePage/components/ArticleNavigation.js.map +1 -0
- package/lib/pages/ArticlePage/components/CopyPageButton.d.ts +10 -0
- package/lib/pages/ArticlePage/components/CopyPageButton.d.ts.map +1 -0
- package/lib/pages/ArticlePage/components/CopyPageButton.js +229 -0
- package/lib/pages/ArticlePage/components/CopyPageButton.js.map +1 -0
- package/lib/pages/ArticlePage/components/TableOfContents.d.ts +14 -0
- package/lib/pages/ArticlePage/components/TableOfContents.d.ts.map +1 -0
- package/lib/pages/ArticlePage/components/TableOfContents.js +35 -0
- package/lib/pages/ArticlePage/components/TableOfContents.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../src/components/Logo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAC;
|
|
1
|
+
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../src/components/Logo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAC;AAGzF,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAqIrC,CAAC"}
|
package/lib/components/Logo.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';const Logo = props => {
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useParams}from'@remix-run/react';const Logo = props => {
|
|
2
|
+
const params = useParams();
|
|
2
3
|
const {
|
|
3
4
|
settings,
|
|
4
5
|
logo,
|
|
5
6
|
scrolled,
|
|
6
7
|
location
|
|
7
8
|
} = props;
|
|
8
|
-
const fill = !scrolled ? '#fff' : settings?.navTheme === 'dark' ? '#fff' : 'black';
|
|
9
|
+
const fill = !scrolled && !params.articleSlug ? '#fff' : settings?.navTheme === 'dark' ? '#fff' : 'black';
|
|
9
10
|
return jsxs("svg", {
|
|
10
11
|
version: "1.1",
|
|
11
12
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.js","sources":["../../src/components/Logo.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logo.js","sources":["../../src/components/Logo.tsx"],"sourcesContent":[null],"names":[],"mappings":"kFAIa,MAAA,IAAI,GAAyB,KAAC,IAAS;AAChD,EAAA,MAAA,MAAY,GAAA,SAAY,EAAA;QAClB;AACN,IAAA,QAAU;AAEV,IAAA,IAAA;;;;;;;;;;;;;;UA0BgB,EAAA;AAsGpB,MAAE,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA2BxC,UAAU,kBAAkB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA2BxC,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwFtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsxs,jsx}from'react/jsx-runtime';import {useState}from'react';import {useLocation,Link}from'@remix-run/react';const navItems = [{
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useState}from'react';import {useLocation,useParams,Link}from'@remix-run/react';const navItems = [{
|
|
2
2
|
key: 'home',
|
|
3
3
|
label: 'Home',
|
|
4
4
|
path: '/'
|
|
@@ -16,6 +16,7 @@ const RightNavItems = ({
|
|
|
16
16
|
}) => {
|
|
17
17
|
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
18
18
|
const location = useLocation();
|
|
19
|
+
const params = useParams();
|
|
19
20
|
const toggleMenu = () => {
|
|
20
21
|
setIsMenuOpen(!isMenuOpen);
|
|
21
22
|
};
|
|
@@ -23,14 +24,14 @@ const RightNavItems = ({
|
|
|
23
24
|
return location.pathname === path;
|
|
24
25
|
};
|
|
25
26
|
return jsxs("div", {
|
|
26
|
-
className: `${scrolled ?
|
|
27
|
+
className: `${scrolled || params.articleSlug ? 'text-foreground' : 'text-white'} flex justify-between align-center`,
|
|
27
28
|
children: [jsxs("div", {
|
|
28
29
|
className: "flex",
|
|
29
30
|
children: [jsx("div", {
|
|
30
31
|
className: "hidden sm:ml-6 sm:flex sm:space-x-8",
|
|
31
32
|
children: navItems.map(item => jsx(Link, {
|
|
32
33
|
to: item.path,
|
|
33
|
-
className: `inline-flex items-center px-1 pt-1 text-lg transition-colors duration-200 ${isActive(item.path) ? `font-bold ${scrolled ? 'text-foreground' : 'text-white'}` : `font-medium ${scrolled ? 'text-foreground hover:text-gray-900' : 'text-white hover:text-gray-300'}`}`,
|
|
34
|
+
className: `inline-flex items-center px-1 pt-1 text-lg transition-colors duration-200 ${isActive(item.path) ? `font-bold ${scrolled || params.articleSlug ? 'text-foreground' : 'text-white'}` : `font-medium ${scrolled || params.articleSlug ? 'text-foreground hover:text-gray-900' : 'text-white hover:text-gray-300'}`}`,
|
|
34
35
|
children: item.label
|
|
35
36
|
}, item.key))
|
|
36
37
|
}), jsx("div", {
|
|
@@ -67,7 +68,7 @@ const RightNavItems = ({
|
|
|
67
68
|
className: "space-y-1 pt-2 pb-3",
|
|
68
69
|
children: navItems.map(item => jsx(Link, {
|
|
69
70
|
to: item.path,
|
|
70
|
-
className: `block border-l-4 py-2 pl-3 pr-4 text-base font-medium transition-colors duration-200 ${isActive(item.path) ? `border-[#057d78] font-bold ${scrolled ? 'text-foreground' : 'text-white'}` : `border-transparent font-medium ${scrolled ? 'text-gray-500 hover:text-gray-900' : 'text-gray-300 hover:text-white'} hover:border-[#057d78] hover:bg-gray-50`}`,
|
|
71
|
+
className: `block border-l-4 py-2 pl-3 pr-4 text-base font-medium transition-colors duration-200 ${isActive(item.path) ? `border-[#057d78] font-bold ${scrolled || params.articleSlug ? 'text-foreground' : 'text-white'}` : `border-transparent font-medium ${scrolled || params.articleSlug ? 'text-gray-500 hover:text-gray-900' : 'text-gray-300 hover:text-white'} hover:border-[#057d78] hover:bg-gray-50`}`,
|
|
71
72
|
onClick: () => setIsMenuOpen(false),
|
|
72
73
|
children: item.label
|
|
73
74
|
}, item.key))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"gIASA,MAAM,QAAQ,GAAc,CAAA;AACxB,EAAA,GAAA,EAAA,MAAA;AACI,EAAA,KAAA,EAAA,MAAW;AACX,EAAA,IAAA,EAAA;AACA,CAAA,EAAA;AACH,EAAA,GAAA,EAAA,aAAA;AACD,EAAA,KAAA,EAAA,aAAA;AACI,EAAA,IAAA,EAAA;AACA,CAAA,EAAA;AACA,EAAA,GAAA,EAAA,aAAoB;AACvB,EAAA,KAAA,EAAA,aAAA;AACD,EAAA,IAAA,EAAA;AACI,CAAA,CAAA;AACA,MAAK,aAAe,GAAA,CAAA;AACpB,EAAA,QAAA;AACH,CAAA,KAAA;EACH,MAAA,CAAA,UAAA,EAAA,aAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AAMF,EAAM,MAAO,QAAA,GAAA,WAA+C,EAAE;QACpD,MAAW,GAAA,SAAe,EAAA;AAChC,EAAA,MAAA,UAAc,GAAG,MAAW;AAC5B,IAAA,aAAY,CAAA,CAAG,UAAS,CAAE;;AAGtB,EAAA,MAAA,QAAA,GAAA,IAAe,IAAU;AAC7B,IAAA,OAAE,QAAA,CAAA,QAAA,KAAA,IAAA;AAEF,GAAA;AACI,EAAA,OAAAA,IAAA,CAAO,KAAQ,EAAA;AACnB,IAAA,SAAE,EAAA,CAAA,EAAA,QAAA,IAAA,MAAA,CAAA,WAAA,GAAA,iBAAA,GAAA,YAAA,CAAA,kCAAA,CAAA;IAEF,QACI,EACI,CAAAA,IAAA,CAAA,KAAA,EAAA;AAUwB,MAAA,SAAA,EAAA,MAAA;AACA,MAAA,QAAA,EAAA,CAAAC,GAAA,CAAA,KAAA,EAAA;AAiDI,QAAA,SAAA,EAAA,qCAAE;AACF,QAAA,QAAA,EAAA,QAAA,CAAA,GAAE,CAAkC,IAAA,IAAAA,GAAA,CAAA,IAAA,EAAA;AAY5E,UAAE,EAAA,EAAA,IAAA,CAAA,IAAA;AAEF,UAAA,sFAA6B,EAAA,QAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,UAAA,EAAA,QAAA,IAAA,MAAA,CAAA,WAAA,GAAA,iBAAA,GAAA,YAAA,CAAA,CAAA,GAAA,CAAA,YAAA,EAAA,QAAA,IAAA,MAAA,CAAA,WAAA,GAAA,qCAAA,GAAA,gCAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticlePage.d.ts","sourceRoot":"","sources":["../../../src/pages/ArticlePage/ArticlePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ArticlePage.d.ts","sourceRoot":"","sources":["../../../src/pages/ArticlePage/ArticlePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAU3D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAwL/B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useParams,Link}from'@remix-run/react';import {cn}from'../../utils/index.js';import {getCategoryById,loadArticleContent}from'../../utils/markdownLoader.js';const ArticlePage = () => {
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useParams,Link}from'@remix-run/react';import {cn}from'../../utils/index.js';import {getCategoryById,loadArticleContent}from'../../utils/markdownLoader.js';import {TableOfContents}from'./components/TableOfContents.js';import {ArticleNavigation}from'./components/ArticleNavigation.js';import {ArticleBreadcrumbs}from'./components/ArticleBreadcrumbs.js';import {CopyPageButton}from'./components/CopyPageButton.js';const ArticlePage = () => {
|
|
2
2
|
const {
|
|
3
3
|
categoryId,
|
|
4
4
|
articleSlug
|
|
@@ -98,124 +98,78 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState,useRef,useEffect}from'
|
|
|
98
98
|
return jsx("div", {
|
|
99
99
|
className: "min-h-screen bg-background text-foreground scroll-smooth overflow-x-hidden",
|
|
100
100
|
children: jsxs("div", {
|
|
101
|
-
className: "flex
|
|
102
|
-
children: [
|
|
103
|
-
className: "
|
|
104
|
-
children: jsxs("
|
|
105
|
-
className: "flex items-center
|
|
106
|
-
children: [jsx(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
className: "
|
|
115
|
-
children: getCategoryById(article.categoryId)?.title || article.categoryId
|
|
116
|
-
}), jsx("span", {
|
|
117
|
-
children: "\u203A"
|
|
118
|
-
}), jsx("span", {
|
|
119
|
-
className: "text-primary",
|
|
120
|
-
children: article.title
|
|
101
|
+
className: "flex w-full justify-center gap-10",
|
|
102
|
+
children: [jsxs("div", {
|
|
103
|
+
className: "flex-1 max-w-3xl w-full",
|
|
104
|
+
children: [jsxs("div", {
|
|
105
|
+
className: "flex items-center justify-between",
|
|
106
|
+
children: [jsx(ArticleBreadcrumbs, {
|
|
107
|
+
categoryId: article.categoryId,
|
|
108
|
+
categoryTitle: getCategoryById(article.categoryId)?.title,
|
|
109
|
+
articleTitle: article.title,
|
|
110
|
+
className: "pb-4"
|
|
111
|
+
}), jsx(CopyPageButton, {
|
|
112
|
+
articleTitle: article.title,
|
|
113
|
+
articleContent: article.htmlContent,
|
|
114
|
+
className: "flex-shrink-0"
|
|
121
115
|
})]
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
className: "flex flex-col xl:flex-row gap-8 xl:gap-12",
|
|
129
|
-
children: [jsxs("div", {
|
|
130
|
-
className: "flex-1 min-w-0 max-w-5xl",
|
|
131
|
-
children: [jsxs("div", {
|
|
132
|
-
className: "mb-8",
|
|
133
|
-
children: [jsx("h1", {
|
|
134
|
-
className: "text-3xl md:text-4xl font-bold text-foreground mb-4",
|
|
135
|
-
children: article.title
|
|
136
|
-
}), jsx("p", {
|
|
137
|
-
className: "text-lg text-muted-foreground mb-6",
|
|
138
|
-
children: article.description
|
|
139
|
-
}), jsxs("div", {
|
|
140
|
-
className: "flex items-center space-x-4 text-sm text-muted-foreground",
|
|
141
|
-
children: [jsxs("div", {
|
|
142
|
-
className: "flex items-center",
|
|
143
|
-
children: [jsx("div", {
|
|
144
|
-
className: "mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-muted text-xs text-foreground",
|
|
145
|
-
children: article.author.charAt(0)
|
|
146
|
-
}), jsxs("span", {
|
|
147
|
-
children: ["Written by ", article.author]
|
|
148
|
-
})]
|
|
149
|
-
}), jsx("span", {
|
|
150
|
-
children: "\u2022"
|
|
151
|
-
}), jsxs("span", {
|
|
152
|
-
children: ["Updated ", article.updatedAt]
|
|
153
|
-
})]
|
|
154
|
-
})]
|
|
155
|
-
}), jsx("div", {
|
|
156
|
-
className: "prose prose-lg max-w-none w-full overflow-x-hidden",
|
|
157
|
-
children: jsx("div", {
|
|
158
|
-
className: cn('prose-headings:text-foreground prose-p:text-muted-foreground prose-strong:text-foreground prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-ul:text-muted-foreground prose-ol:text-muted-foreground prose-li:text-muted-foreground prose-blockquote:text-muted-foreground prose-code:text-foreground prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-pre:bg-muted prose-pre:text-foreground prose-pre:overflow-x-auto'),
|
|
159
|
-
dangerouslySetInnerHTML: {
|
|
160
|
-
__html: article.htmlContent
|
|
161
|
-
}
|
|
162
|
-
})
|
|
163
|
-
}), (previousArticle || nextArticle) && jsxs("div", {
|
|
164
|
-
className: "mt-12 grid grid-cols-1 md:grid-cols-2 gap-4",
|
|
165
|
-
children: [previousArticle ? jsxs(Link, {
|
|
166
|
-
to: `/help-center/${previousArticle.categoryId}/${previousArticle.slug}`,
|
|
167
|
-
className: cn('group rounded-lg border border-border bg-background px-6 py-4', 'hover:bg-muted/30 transition-colors'),
|
|
168
|
-
children: [jsx("div", {
|
|
169
|
-
className: "text-sm text-muted-foreground",
|
|
170
|
-
children: "Previous"
|
|
171
|
-
}), jsxs("div", {
|
|
172
|
-
className: "mt-1 text-primary font-semibold group-hover:underline",
|
|
173
|
-
children: ["\u00AB ", previousArticle.title]
|
|
174
|
-
})]
|
|
175
|
-
}) : jsx("div", {
|
|
176
|
-
className: "hidden md:block"
|
|
177
|
-
}), nextArticle ? jsxs(Link, {
|
|
178
|
-
to: `/help-center/${nextArticle.categoryId}/${nextArticle.slug}`,
|
|
179
|
-
className: cn('group rounded-lg border border-border bg-background px-6 py-4', 'hover:bg-muted/30 transition-colors md:text-right'),
|
|
180
|
-
children: [jsx("div", {
|
|
181
|
-
className: "text-sm text-muted-foreground",
|
|
182
|
-
children: "Next"
|
|
183
|
-
}), jsxs("div", {
|
|
184
|
-
className: "mt-1 text-primary font-semibold group-hover:underline",
|
|
185
|
-
children: [nextArticle.title, " \u00BB"]
|
|
186
|
-
})]
|
|
187
|
-
}) : jsx("div", {
|
|
188
|
-
className: "hidden md:block"
|
|
189
|
-
})]
|
|
190
|
-
})]
|
|
191
|
-
}), article.headings && article.headings.length > 0 && jsx("aside", {
|
|
192
|
-
className: "hidden xl:block xl:w-80 xl:flex-shrink-0",
|
|
116
|
+
}), jsx("main", {
|
|
117
|
+
className: "w-full py-2",
|
|
118
|
+
children: jsx("div", {
|
|
119
|
+
className: "max-w-[90rem] mx-auto px-4 sm:px-6 lg:px-8 xl:px-16 relative",
|
|
120
|
+
children: jsx("div", {
|
|
121
|
+
className: "flex flex-col xl:flex-row gap-12 xl:gap-16 align-start",
|
|
193
122
|
children: jsxs("div", {
|
|
194
|
-
className: "
|
|
123
|
+
className: "flex-1 min-w-0 max-w-5xl",
|
|
195
124
|
children: [jsx("div", {
|
|
196
|
-
className: "
|
|
197
|
-
children:
|
|
198
|
-
className:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
125
|
+
className: "prose prose-lg max-w-none w-full overflow-x-hidden",
|
|
126
|
+
children: jsx("div", {
|
|
127
|
+
className: cn(
|
|
128
|
+
// Base prose styles
|
|
129
|
+
'prose-headings:font-semibold prose-headings:text-foreground prose-headings:tracking-tight',
|
|
130
|
+
// Body H1 styles (within article) - slightly smaller than page title
|
|
131
|
+
'prose-h1:text-[1.5rem] prose-h1:md:text-[1.75rem] prose-h1:mb-4 prose-h1:mt-5 prose-h1:leading-tight',
|
|
132
|
+
// H2 styles - strong section headings
|
|
133
|
+
'prose-h2:text-[1.2rem] prose-h2:md:text-[1.5rem] prose-h2:mb-4 prose-h2:mt-5 prose-h2:leading-tight',
|
|
134
|
+
// H3 styles - sub section headings
|
|
135
|
+
'prose-h3:text-[1.05rem] prose-h3:md:text-[1.25rem] prose-h3:mb-3 prose-h3:mt-4 prose-h3:leading-snug',
|
|
136
|
+
// H4 styles
|
|
137
|
+
'prose-h4:text-lg prose-h4:md:text-xl prose-h4:mb-3 prose-h4:mt-4',
|
|
138
|
+
// Paragraph styles
|
|
139
|
+
'prose-p:text-[0.85rem] prose-p:md:text-[0.95rem] prose-p:text-muted-foreground prose-p:leading-relaxed prose-p:mb-5',
|
|
140
|
+
// Strong text
|
|
141
|
+
'prose-strong:text-foreground prose-strong:font-semibold',
|
|
142
|
+
// Links
|
|
143
|
+
'prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-a:font-medium',
|
|
144
|
+
// Lists
|
|
145
|
+
'prose-ul:text-muted-foreground prose-ol:text-muted-foreground prose-li:text-muted-foreground prose-li:mb-2 prose-li:text-base prose-li:md:text-lg',
|
|
146
|
+
// Blockquotes
|
|
147
|
+
'prose-blockquote:text-muted-foreground prose-blockquote:border-l-primary prose-blockquote:pl-4 prose-blockquote:my-6',
|
|
148
|
+
// Code
|
|
149
|
+
'prose-code:text-foreground prose-code:bg-muted prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:text-sm prose-code:font-mono',
|
|
150
|
+
// Pre blocks
|
|
151
|
+
'prose-pre:bg-muted prose-pre:text-foreground prose-pre:overflow-x-auto prose-pre:rounded-lg prose-pre:p-4 prose-pre:my-6',
|
|
152
|
+
// Images
|
|
153
|
+
'prose-img:rounded-lg prose-img:my-8',
|
|
154
|
+
// Tables
|
|
155
|
+
'prose-table:text-muted-foreground prose-th:text-foreground prose-th:font-semibold',
|
|
156
|
+
// Horizontal rules
|
|
157
|
+
'prose-hr:border-border prose-hr:my-8'),
|
|
158
|
+
dangerouslySetInnerHTML: {
|
|
159
|
+
__html: article.htmlContent
|
|
160
|
+
}
|
|
213
161
|
})
|
|
162
|
+
}), jsx(ArticleNavigation, {
|
|
163
|
+
previousArticle: previousArticle,
|
|
164
|
+
nextArticle: nextArticle
|
|
214
165
|
})]
|
|
215
166
|
})
|
|
216
|
-
})
|
|
167
|
+
})
|
|
217
168
|
})
|
|
218
|
-
})
|
|
169
|
+
})]
|
|
170
|
+
}), jsx(TableOfContents, {
|
|
171
|
+
headings: article.headings || [],
|
|
172
|
+
activeHeadingId: activeHeadingId
|
|
219
173
|
})]
|
|
220
174
|
})
|
|
221
175
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticlePage.js","sources":["../../../src/pages/ArticlePage/ArticlePage.tsx"],"sourcesContent":[null],"names":["_jsx"
|
|
1
|
+
{"version":3,"file":"ArticlePage.js","sources":["../../../src/pages/ArticlePage/ArticlePage.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"0fAUO,MAAM,WAAW,GAAa,MAAK;QAChC;IACN,UAAc;IACd;MACM,SAAgB,EAAA;AACtB,EAAA,MAAA,CAAA,mBAAoB,CAAA,GAAoC,QAAM,CAAA,IAAA,CAAA;QAErD,CAAA,SAAM,UAAA,CAAA,GAAA,QAAA,CAAA,IAAA,CAAA;QACX,CAAI,iBAAc,kBAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA;AACd,EAAA,MAAA,WAAiB,GAAA,MAAA,CAAA,IAAQ,CAAA;AACrB,EAAA,SAAA,CAAA,MAAA;mBACU,EAAA;uBACA,GAAA,YAAQ;AACtB,QAAA,MAAE,WAAA,GAAA,MAAA,kBAAA,CAAA,WAAA,CAAA;AACF,QAAA,UAAA,CAAA,WAAc,CAAA;QAClB,UAAC,CAAA,KAAA,CAAA;AACL,OAAG;MAEwB,WAAA,EAAA;;iBAEX,CAAA,CAAA;;WAEiB,CAAA,MAAA;AAC7B,IAAA,IAAA,CAAA,OAAe,EAAA,QAAQ,IAAA,OAAG,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACtB;QACJ,WAAC,CAAA,OAAA,EAAA;iBAEkC,CAAA,OAAA,CAAA,UAAA,EAAA;;AAG3B;AACI,IAAA,WAAA,CAAA,OAAS,GAAC,IAAc,oBAAG,CAAA,OAAA,IAAA;AACvB,MAAA,OAAA,CAAA,OAAA,CAAA,KAAA,IAAA;iBACH,CAAA,cAAA,EAAA;AACL,UAAA,kBAAG,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA,CAAA;AACP;AAEI,OAAA,CAAA;AACA,KAAA,EAAA;AACH,MAAA,UACH,EAAA,mBAAA;eAEqB,EAAA;;;AAGnB,IAAA,OAAA,CAAA,gBAAe,CAAA,OAAA,IAAY;AACvB,MAAA,MAAA,OAAA,GAAA,QAAmB,CAAA,cAAS,CAAA,OAAS,CAAA,EAAA,CAAA;iBACxC,IAAA,WAAA,CAAA,OAAA,EAAA;AACL,QAAA,WAAG,CAAA,OAAA,CAAA,OAAA,CAAA,OAAA,CAAA;;AAGH,KAAA,CAAA;AACI;AACI,IAAA,OAAA,MAAA;qBACH,CAAA,OAAA,EAAA;AACL,QAAA,WAAE,CAAA,OAAA,CAAA,UAAA,EAAA;AACN;KAEI;aACO,CAAA,CAAA;MAeV,OAAA,EAAA;IAED,OAAYA,GAAA,CAAA,KAAG,EAAA;AACX,MAAA,SAAO,EACH,8DAAmF;MAS1F,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA;AAED,QAAA,SAAc,EAAA,kEAA2D;AACzE,QAAA,oBAAyB,EAAA;AACzB,UAAM,0BAAe;AACrB,UAAM,cAAe,CAAG,KAAA,EAAA;YAClB,SAAW,EACb;WAEG,CACH,aAAK;;;;;;;;;;;;;;;;;;qFAwDsL;;qFAE7B;;;;;;8DAMjF;;;;;AAuBrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -239,7 +239,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'
|
|
|
239
239
|
children: jsx("div", {
|
|
240
240
|
className: "flex-1 min-w-0",
|
|
241
241
|
children: jsx("div", {
|
|
242
|
-
className: "max-w-
|
|
242
|
+
className: "max-w-full mx-auto px-6 py-8",
|
|
243
243
|
"data-content-area": true,
|
|
244
244
|
children: children || jsx(Outlet, {})
|
|
245
245
|
})
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ArticleBreadcrumbsProps {
|
|
3
|
+
categoryId: string;
|
|
4
|
+
categoryTitle?: string;
|
|
5
|
+
articleTitle: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ArticleBreadcrumbs: React.FC<ArticleBreadcrumbsProps>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=ArticleBreadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/pages/ArticlePage/components/ArticleBreadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,uBAAuB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqBhE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {Link}from'@remix-run/react';import {cn}from'../../../utils/index.js';const ArticleBreadcrumbs = ({
|
|
2
|
+
categoryId,
|
|
3
|
+
categoryTitle,
|
|
4
|
+
articleTitle,
|
|
5
|
+
className
|
|
6
|
+
}) => {
|
|
7
|
+
return jsx("div", {
|
|
8
|
+
className: cn('w-full max-w-[90rem] mx-auto px-4 sm:px-6 lg:px-8 xl:px-16', className),
|
|
9
|
+
children: jsxs("nav", {
|
|
10
|
+
className: "flex items-center space-x-2 text-sm text-muted-foreground",
|
|
11
|
+
children: [jsx(Link, {
|
|
12
|
+
to: "/help-center",
|
|
13
|
+
className: "hover:text-foreground transition-colors",
|
|
14
|
+
children: "All Collections"
|
|
15
|
+
}), jsx("span", {
|
|
16
|
+
className: "text-muted-foreground/60",
|
|
17
|
+
children: "\u203A"
|
|
18
|
+
}), jsx(Link, {
|
|
19
|
+
to: `/help-center/${categoryId}`,
|
|
20
|
+
className: "hover:text-foreground transition-colors",
|
|
21
|
+
children: categoryTitle || categoryId
|
|
22
|
+
}), jsx("span", {
|
|
23
|
+
className: "text-muted-foreground/60",
|
|
24
|
+
children: "\u203A"
|
|
25
|
+
}), jsx("span", {
|
|
26
|
+
className: "text-primary",
|
|
27
|
+
children: articleTitle
|
|
28
|
+
})]
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
};export{ArticleBreadcrumbs};//# sourceMappingURL=ArticleBreadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleBreadcrumbs.js","sources":["../../../../src/pages/ArticlePage/components/ArticleBreadcrumbs.tsx"],"sourcesContent":[null],"names":[],"mappings":"sHAWO,MAAM,kBAAkB,GAAsC,CAAC;AAMlE,EAAA,UACI;AAcR,EAAE,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ArticleHeaderProps {
|
|
3
|
+
categoryTitle?: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
author?: string;
|
|
7
|
+
updatedAt?: string;
|
|
8
|
+
articleContent: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ArticleHeader: React.FC<ArticleHeaderProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ArticleHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleHeader.d.ts","sourceRoot":"","sources":["../../../../src/pages/ArticlePage/components/ArticleHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmDtD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Article {
|
|
3
|
+
categoryId: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
title: string;
|
|
6
|
+
}
|
|
7
|
+
interface ArticleNavigationProps {
|
|
8
|
+
previousArticle?: Article | null;
|
|
9
|
+
nextArticle?: Article | null;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ArticleNavigation: React.FC<ArticleNavigationProps>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=ArticleNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleNavigation.d.ts","sourceRoot":"","sources":["../../../../src/pages/ArticlePage/components/ArticleNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,OAAO;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,sBAAsB;IAC5B,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA0C9D,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';import {cn}from'../../../utils/index.js';const ArticleNavigation = ({
|
|
2
|
+
previousArticle,
|
|
3
|
+
nextArticle,
|
|
4
|
+
className
|
|
5
|
+
}) => {
|
|
6
|
+
if (!previousArticle && !nextArticle) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return jsxs("div", {
|
|
10
|
+
className: cn('mt-16 pt-8 border-t border-border grid grid-cols-1 md:grid-cols-2 gap-6', className),
|
|
11
|
+
children: [previousArticle ? jsxs(Link, {
|
|
12
|
+
to: `/help-center/${previousArticle.categoryId}/${previousArticle.slug}`,
|
|
13
|
+
className: cn('group rounded-lg border border-border bg-background px-6 py-5', 'hover:bg-muted/30 transition-colors'),
|
|
14
|
+
children: [jsx("div", {
|
|
15
|
+
className: "text-sm text-muted-foreground mb-1",
|
|
16
|
+
children: "Previous"
|
|
17
|
+
}), jsxs("div", {
|
|
18
|
+
className: "text-primary font-semibold group-hover:underline text-base",
|
|
19
|
+
children: ["\u00AB ", previousArticle.title]
|
|
20
|
+
})]
|
|
21
|
+
}) : jsx("div", {
|
|
22
|
+
className: "hidden md:block"
|
|
23
|
+
}), nextArticle ? jsxs(Link, {
|
|
24
|
+
to: `/help-center/${nextArticle.categoryId}/${nextArticle.slug}`,
|
|
25
|
+
className: cn('group rounded-lg border border-border bg-background px-6 py-5', 'hover:bg-muted/30 transition-colors md:text-right'),
|
|
26
|
+
children: [jsx("div", {
|
|
27
|
+
className: "text-sm text-muted-foreground mb-1",
|
|
28
|
+
children: "Next"
|
|
29
|
+
}), jsxs("div", {
|
|
30
|
+
className: "text-primary font-semibold group-hover:underline text-base",
|
|
31
|
+
children: [nextArticle.title, " \u00BB"]
|
|
32
|
+
})]
|
|
33
|
+
}) : jsx("div", {
|
|
34
|
+
className: "hidden md:block"
|
|
35
|
+
})]
|
|
36
|
+
});
|
|
37
|
+
};export{ArticleNavigation};//# sourceMappingURL=ArticleNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleNavigation.js","sources":["../../../../src/pages/ArticlePage/components/ArticleNavigation.tsx"],"sourcesContent":[null],"names":[],"mappings":"sHAgBO,MAAM,iBAAiB,GAAqC,CAAC;AAChE,EAAA,eAAoB;AAChB,EAAA,WAAA;;AAGJ,CAAA,KAAA;AAqCJ,EAAE,IAAA,CAAA,eAAA,IAAA,CAAA,WAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CopyPageButtonProps {
|
|
3
|
+
articleTitle: string;
|
|
4
|
+
articleContent: string;
|
|
5
|
+
articleUrl?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const CopyPageButton: React.FC<CopyPageButtonProps>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=CopyPageButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyPageButton.d.ts","sourceRoot":"","sources":["../../../../src/pages/ArticlePage/components/CopyPageButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,UAAU,mBAAmB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAsQxD,CAAC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {cn}from'../../../utils/index.js';const CopyPageButton = ({
|
|
2
|
+
articleTitle,
|
|
3
|
+
articleContent,
|
|
4
|
+
articleUrl,
|
|
5
|
+
className
|
|
6
|
+
}) => {
|
|
7
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
8
|
+
const [copySuccess, setCopySuccess] = useState(false);
|
|
9
|
+
const dropdownRef = useRef(null);
|
|
10
|
+
// Close dropdown when clicking outside
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const handleClickOutside = event => {
|
|
13
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
14
|
+
setIsOpen(false);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
if (isOpen) {
|
|
18
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
19
|
+
}
|
|
20
|
+
return () => {
|
|
21
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
22
|
+
};
|
|
23
|
+
}, [isOpen]);
|
|
24
|
+
// Convert HTML to Markdown (simplified version)
|
|
25
|
+
const htmlToMarkdown = html => {
|
|
26
|
+
// Remove script and style tags
|
|
27
|
+
let text = html.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
|
|
28
|
+
text = text.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
|
|
29
|
+
// Convert headings
|
|
30
|
+
text = text.replace(/<h([1-6])[^>]*>(.*?)<\/h\1>/gi, (match, level, content) => {
|
|
31
|
+
const hashes = '#'.repeat(parseInt(level));
|
|
32
|
+
return `\n${hashes} ${content.trim()}\n`;
|
|
33
|
+
});
|
|
34
|
+
// Convert bold
|
|
35
|
+
text = text.replace(/<strong[^>]*>(.*?)<\/strong>/gi, '**$1**');
|
|
36
|
+
text = text.replace(/<b[^>]*>(.*?)<\/b>/gi, '**$1**');
|
|
37
|
+
// Convert italic
|
|
38
|
+
text = text.replace(/<em[^>]*>(.*?)<\/em>/gi, '*$1*');
|
|
39
|
+
text = text.replace(/<i[^>]*>(.*?)<\/i>/gi, '*$1*');
|
|
40
|
+
// Convert links
|
|
41
|
+
text = text.replace(/<a[^>]*href=["']([^"']*)["'][^>]*>(.*?)<\/a>/gi, '[$2]($1)');
|
|
42
|
+
// Convert code blocks
|
|
43
|
+
text = text.replace(/<pre[^>]*><code[^>]*>(.*?)<\/code><\/pre>/gis, '```\n$1\n```');
|
|
44
|
+
text = text.replace(/<code[^>]*>(.*?)<\/code>/gi, '`$1`');
|
|
45
|
+
// Convert lists
|
|
46
|
+
text = text.replace(/<ul[^>]*>(.*?)<\/ul>/gis, (match, content) => {
|
|
47
|
+
const items = content.match(/<li[^>]*>(.*?)<\/li>/gis) || [];
|
|
48
|
+
return '\n' + items.map(item => {
|
|
49
|
+
const cleanItem = item.replace(/<li[^>]*>|<\/li>/gi, '').trim();
|
|
50
|
+
return `- ${cleanItem}`;
|
|
51
|
+
}).join('\n') + '\n';
|
|
52
|
+
});
|
|
53
|
+
text = text.replace(/<ol[^>]*>(.*?)<\/ol>/gis, (match, content) => {
|
|
54
|
+
const items = content.match(/<li[^>]*>(.*?)<\/li>/gis) || [];
|
|
55
|
+
return '\n' + items.map((item, index) => {
|
|
56
|
+
const cleanItem = item.replace(/<li[^>]*>|<\/li>/gi, '').trim();
|
|
57
|
+
return `${index + 1}. ${cleanItem}`;
|
|
58
|
+
}).join('\n') + '\n';
|
|
59
|
+
});
|
|
60
|
+
// Convert paragraphs
|
|
61
|
+
text = text.replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n');
|
|
62
|
+
// Remove remaining HTML tags
|
|
63
|
+
text = text.replace(/<[^>]+>/g, '');
|
|
64
|
+
// Decode HTML entities
|
|
65
|
+
const textarea = document.createElement('textarea');
|
|
66
|
+
textarea.innerHTML = text;
|
|
67
|
+
text = textarea.value;
|
|
68
|
+
// Clean up extra whitespace
|
|
69
|
+
text = text.replace(/\n{3,}/g, '\n\n').trim();
|
|
70
|
+
return `# ${articleTitle}\n\n${text}`;
|
|
71
|
+
};
|
|
72
|
+
const handleCopyMarkdown = async () => {
|
|
73
|
+
try {
|
|
74
|
+
const markdown = htmlToMarkdown(articleContent);
|
|
75
|
+
await navigator.clipboard.writeText(markdown);
|
|
76
|
+
setCopySuccess(true);
|
|
77
|
+
setIsOpen(false);
|
|
78
|
+
setTimeout(() => setCopySuccess(false), 2000);
|
|
79
|
+
} catch (err) {
|
|
80
|
+
console.error('Failed to copy:', err);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const handleOpenChatGPT = () => {
|
|
84
|
+
const url = `https://chat.openai.com/?q=${encodeURIComponent(articleTitle)}`;
|
|
85
|
+
window.open(url, '_blank');
|
|
86
|
+
setIsOpen(false);
|
|
87
|
+
};
|
|
88
|
+
const handleOpenClaude = () => {
|
|
89
|
+
const url = `https://claude.ai/?q=${encodeURIComponent(articleTitle)}`;
|
|
90
|
+
window.open(url, '_blank');
|
|
91
|
+
setIsOpen(false);
|
|
92
|
+
};
|
|
93
|
+
return jsxs("div", {
|
|
94
|
+
className: cn('relative inline-flex items-center rounded-md border border-border bg-background', className),
|
|
95
|
+
ref: dropdownRef,
|
|
96
|
+
children: [jsxs("div", {
|
|
97
|
+
className: "flex items-center overflow-hidden rounded-md",
|
|
98
|
+
children: [jsxs("button", {
|
|
99
|
+
onClick: handleCopyMarkdown,
|
|
100
|
+
className: cn('flex items-center gap-2 px-3 py-1.5', 'bg-background hover:bg-muted/50 transition-colors', 'text-sm text-foreground', 'border-0'),
|
|
101
|
+
children: [jsx("svg", {
|
|
102
|
+
className: "w-4 h-4",
|
|
103
|
+
fill: "none",
|
|
104
|
+
stroke: "currentColor",
|
|
105
|
+
viewBox: "0 0 24 24",
|
|
106
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
107
|
+
children: jsx("path", {
|
|
108
|
+
strokeLinecap: "round",
|
|
109
|
+
strokeLinejoin: "round",
|
|
110
|
+
strokeWidth: 2,
|
|
111
|
+
d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
|
|
112
|
+
})
|
|
113
|
+
}), jsx("span", {
|
|
114
|
+
children: copySuccess ? 'Copied' : 'Copy page'
|
|
115
|
+
})]
|
|
116
|
+
}), jsx("div", {
|
|
117
|
+
className: "h-5 w-px bg-border"
|
|
118
|
+
}), jsx("button", {
|
|
119
|
+
onClick: e => {
|
|
120
|
+
e.stopPropagation();
|
|
121
|
+
setIsOpen(!isOpen);
|
|
122
|
+
},
|
|
123
|
+
className: cn('flex items-center justify-center px-2 py-1.5', 'bg-background hover:bg-muted/50 transition-colors', 'text-sm text-foreground', 'border-0'),
|
|
124
|
+
children: jsx("svg", {
|
|
125
|
+
className: cn('w-3 h-3 transition-transform', isOpen && 'rotate-180'),
|
|
126
|
+
fill: "none",
|
|
127
|
+
stroke: "currentColor",
|
|
128
|
+
viewBox: "0 0 24 24",
|
|
129
|
+
children: jsx("path", {
|
|
130
|
+
strokeLinecap: "round",
|
|
131
|
+
strokeLinejoin: "round",
|
|
132
|
+
strokeWidth: 2,
|
|
133
|
+
d: "M19 9l-7 7-7-7"
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
})]
|
|
137
|
+
}), isOpen && jsx("div", {
|
|
138
|
+
className: "absolute right-0 top-full mt-2 w-64 bg-background border border-border rounded-lg shadow-lg z-[100] overflow-hidden",
|
|
139
|
+
children: jsxs("div", {
|
|
140
|
+
className: "py-1",
|
|
141
|
+
children: [jsxs("button", {
|
|
142
|
+
onClick: handleCopyMarkdown,
|
|
143
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
144
|
+
children: [jsx("svg", {
|
|
145
|
+
className: "w-5 h-5 text-muted-foreground group-hover:text-foreground mt-0.5 flex-shrink-0",
|
|
146
|
+
fill: "none",
|
|
147
|
+
stroke: "currentColor",
|
|
148
|
+
viewBox: "0 0 24 24",
|
|
149
|
+
children: jsx("path", {
|
|
150
|
+
strokeLinecap: "round",
|
|
151
|
+
strokeLinejoin: "round",
|
|
152
|
+
strokeWidth: 2,
|
|
153
|
+
d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
|
|
154
|
+
})
|
|
155
|
+
}), jsxs("div", {
|
|
156
|
+
className: "flex-1 min-w-0",
|
|
157
|
+
children: [jsx("div", {
|
|
158
|
+
className: "text-sm font-medium text-foreground",
|
|
159
|
+
children: "Copy page"
|
|
160
|
+
}), jsx("div", {
|
|
161
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
162
|
+
children: "Copy page as Markdown for LLMs"
|
|
163
|
+
})]
|
|
164
|
+
})]
|
|
165
|
+
}), jsxs("button", {
|
|
166
|
+
onClick: handleOpenChatGPT,
|
|
167
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
168
|
+
children: [jsx("div", {
|
|
169
|
+
className: "w-5 h-5 mt-0.5 flex-shrink-0 flex items-center justify-center",
|
|
170
|
+
children: jsx("span", {
|
|
171
|
+
className: "text-lg",
|
|
172
|
+
children: "\uD83E\uDD16"
|
|
173
|
+
})
|
|
174
|
+
}), jsxs("div", {
|
|
175
|
+
className: "flex-1 min-w-0",
|
|
176
|
+
children: [jsx("div", {
|
|
177
|
+
className: "text-sm font-medium text-foreground",
|
|
178
|
+
children: "Open in ChatGPT"
|
|
179
|
+
}), jsx("div", {
|
|
180
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
181
|
+
children: "Ask questions about this page"
|
|
182
|
+
})]
|
|
183
|
+
}), jsx("svg", {
|
|
184
|
+
className: "w-4 h-4 text-muted-foreground group-hover:text-foreground mt-1 flex-shrink-0",
|
|
185
|
+
fill: "none",
|
|
186
|
+
stroke: "currentColor",
|
|
187
|
+
viewBox: "0 0 24 24",
|
|
188
|
+
children: jsx("path", {
|
|
189
|
+
strokeLinecap: "round",
|
|
190
|
+
strokeLinejoin: "round",
|
|
191
|
+
strokeWidth: 2,
|
|
192
|
+
d: "M9 5l7 7-7 7"
|
|
193
|
+
})
|
|
194
|
+
})]
|
|
195
|
+
}), jsxs("button", {
|
|
196
|
+
onClick: handleOpenClaude,
|
|
197
|
+
className: "w-full px-4 py-3 text-left hover:bg-muted/50 transition-colors flex items-start gap-3 group",
|
|
198
|
+
children: [jsx("div", {
|
|
199
|
+
className: "w-5 h-5 mt-0.5 flex-shrink-0 flex items-center justify-center",
|
|
200
|
+
children: jsx("span", {
|
|
201
|
+
className: "text-lg",
|
|
202
|
+
children: "\u2744\uFE0F"
|
|
203
|
+
})
|
|
204
|
+
}), jsxs("div", {
|
|
205
|
+
className: "flex-1 min-w-0",
|
|
206
|
+
children: [jsx("div", {
|
|
207
|
+
className: "text-sm font-medium text-foreground",
|
|
208
|
+
children: "Open in Claude"
|
|
209
|
+
}), jsx("div", {
|
|
210
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
211
|
+
children: "Ask questions about this page"
|
|
212
|
+
})]
|
|
213
|
+
}), jsx("svg", {
|
|
214
|
+
className: "w-4 h-4 text-muted-foreground group-hover:text-foreground mt-1 flex-shrink-0",
|
|
215
|
+
fill: "none",
|
|
216
|
+
stroke: "currentColor",
|
|
217
|
+
viewBox: "0 0 24 24",
|
|
218
|
+
children: jsx("path", {
|
|
219
|
+
strokeLinecap: "round",
|
|
220
|
+
strokeLinejoin: "round",
|
|
221
|
+
strokeWidth: 2,
|
|
222
|
+
d: "M9 5l7 7-7 7"
|
|
223
|
+
})
|
|
224
|
+
})]
|
|
225
|
+
})]
|
|
226
|
+
})
|
|
227
|
+
})]
|
|
228
|
+
});
|
|
229
|
+
};export{CopyPageButton};//# sourceMappingURL=CopyPageButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyPageButton.js","sources":["../../../../src/pages/ArticlePage/components/CopyPageButton.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Heading {
|
|
3
|
+
id: string;
|
|
4
|
+
text: string;
|
|
5
|
+
level: number;
|
|
6
|
+
}
|
|
7
|
+
interface TableOfContentsProps {
|
|
8
|
+
headings: Heading[];
|
|
9
|
+
activeHeadingId: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const TableOfContents: React.FC<TableOfContentsProps>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=TableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../../../src/pages/ArticlePage/components/TableOfContents.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,OAAO;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgD1D,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {cn}from'../../../utils/index.js';const TableOfContents = ({
|
|
2
|
+
headings,
|
|
3
|
+
activeHeadingId,
|
|
4
|
+
className
|
|
5
|
+
}) => {
|
|
6
|
+
if (!headings || headings.length === 0) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return jsx("aside", {
|
|
10
|
+
className: "hidden xl:block xl:w-80 xl:flex-shrink-0 max-w-[28rem]",
|
|
11
|
+
children: jsxs("div", {
|
|
12
|
+
className: "fixed flex flex-col h-[calc(100vh-3rem)] w-[19rem]",
|
|
13
|
+
children: [jsx("div", {
|
|
14
|
+
className: "mb-4 flex-shrink-0",
|
|
15
|
+
children: jsxs("h2", {
|
|
16
|
+
className: "text-sm font-semibold text-primary flex items-center",
|
|
17
|
+
children: [jsx("span", {
|
|
18
|
+
className: "mr-2",
|
|
19
|
+
children: "\u2630"
|
|
20
|
+
}), "On this page"]
|
|
21
|
+
})
|
|
22
|
+
}), jsx("nav", {
|
|
23
|
+
className: "space-y-1 flex-1 overflow-y-auto overflow-x-hidden min-h-0",
|
|
24
|
+
children: headings.map((heading, index) => {
|
|
25
|
+
const isActive = activeHeadingId === heading.id;
|
|
26
|
+
return jsx("a", {
|
|
27
|
+
href: `#${heading.id}`,
|
|
28
|
+
className: cn('relative block text-sm transition-colors py-1 pl-4', 'border-l-2 border-transparent', isActive ? 'text-primary border-l-primary bg-muted/20' : 'text-muted-foreground hover:text-primary hover:border-l-primary', heading.level === 1 ? 'font-semibold' : heading.level === 2 ? 'ml-2' : heading.level === 3 ? 'ml-4' : heading.level === 4 ? 'ml-6' : heading.level === 5 ? 'ml-8' : 'ml-10'),
|
|
29
|
+
children: heading.text
|
|
30
|
+
}, index);
|
|
31
|
+
})
|
|
32
|
+
})]
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
};export{TableOfContents};//# sourceMappingURL=TableOfContents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.js","sources":["../../../../src/pages/ArticlePage/components/TableOfContents.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"kFAeO,MAAM,eAAe,GAAmC,CAAC;;AAExD,EAAA;;AAGJ,CAAA,KAAA;AAWoB,EAAA,IAAA,CAAA,QAAA,IAAA,QAAA,CAAA,WAAiB,CAAA,EAAA;AACjB,IAAA,OAAA,IAAA;AAQgB;AACA,EAAA,OAAAA,GAAA,CAAA,OAAA,EAAA;AAEA,IAAA,SAAA,EAAA,wDAAiB;AACjB,IAAA,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA;AACE,MAAA,SAAA,EAAA,oDAAQ;AACR,MAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA;AACE,QAAA,SAAA,EAAA,oBAAA;AACA,QAAA,QAAA,EAAAC,IAAA,CAAA,IAAA,EAAA;AACE,UAAA,SAAA,EAAA,sDAAQ;AACR,UAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,MAAA,EAAA;AACE,YAAA,SAAA,EAAA,MAAA;;AAO5B,WAAA,CAAA,EAAA,cAEF;AAGlB,SAAE;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adminide-stack/yantra-help-browser",
|
|
3
|
-
"version": "12.0.16-alpha.
|
|
3
|
+
"version": "12.0.16-alpha.16",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Yantra App",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"typescript": {
|
|
71
71
|
"definition": "lib/index.d.ts"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "2acd35e59e362c96ab164e45297adeab03f1cec8"
|
|
74
74
|
}
|