@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.
Files changed (29) hide show
  1. package/lib/components/Logo.d.ts.map +1 -1
  2. package/lib/components/Logo.js +3 -2
  3. package/lib/components/Logo.js.map +1 -1
  4. package/lib/components/navbar/index.d.ts.map +1 -1
  5. package/lib/components/navbar/index.js +5 -4
  6. package/lib/components/navbar/index.js.map +1 -1
  7. package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -1
  8. package/lib/pages/ArticlePage/ArticlePage.js +66 -112
  9. package/lib/pages/ArticlePage/ArticlePage.js.map +1 -1
  10. package/lib/pages/ArticlePage/ArticlePageLayout.js +1 -1
  11. package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.d.ts +10 -0
  12. package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.d.ts.map +1 -0
  13. package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.js +31 -0
  14. package/lib/pages/ArticlePage/components/ArticleBreadcrumbs.js.map +1 -0
  15. package/lib/pages/ArticlePage/components/ArticleHeader.d.ts +13 -0
  16. package/lib/pages/ArticlePage/components/ArticleHeader.d.ts.map +1 -0
  17. package/lib/pages/ArticlePage/components/ArticleNavigation.d.ts +14 -0
  18. package/lib/pages/ArticlePage/components/ArticleNavigation.d.ts.map +1 -0
  19. package/lib/pages/ArticlePage/components/ArticleNavigation.js +37 -0
  20. package/lib/pages/ArticlePage/components/ArticleNavigation.js.map +1 -0
  21. package/lib/pages/ArticlePage/components/CopyPageButton.d.ts +10 -0
  22. package/lib/pages/ArticlePage/components/CopyPageButton.d.ts.map +1 -0
  23. package/lib/pages/ArticlePage/components/CopyPageButton.js +229 -0
  24. package/lib/pages/ArticlePage/components/CopyPageButton.js.map +1 -0
  25. package/lib/pages/ArticlePage/components/TableOfContents.d.ts +14 -0
  26. package/lib/pages/ArticlePage/components/TableOfContents.d.ts.map +1 -0
  27. package/lib/pages/ArticlePage/components/TableOfContents.js +35 -0
  28. package/lib/pages/ArticlePage/components/TableOfContents.js.map +1 -0
  29. 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;AAEzF,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAoIrC,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"}
@@ -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":"yCAGa,MAAA,IAAI,GAAyB,KAAC,IAAS;QAC1C;IACN,QAAM;AAEN,IAAA,IAAA;;;;;;;;;;;;;;UA0BgB,EAAA;AAsGpB,MAAE,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqFtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
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 ? "text-foreground" : "text-white"} flex justify-between align-center`,
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":"sHASA,MAAM,QAAQ,GAAc,CAAA;AAC1B,EAAA,GAAA,EAAA,MAAA;AACE,EAAA,KAAA,EAAA,MAAW;AACX,EAAA,IAAA,EAAA;AACA,CAAA,EAAA;AACD,EAAA,GAAA,EAAA,aAAA;AACD,EAAA,KAAA,EAAA,aAAA;AACE,EAAA,IAAA,EAAA;AACA,CAAA,EAAA;AACA,EAAA,GAAA,EAAA,aAAoB;AACrB,EAAA,KAAA,EAAA,aAAA;AACD,EAAA,IAAA,EAAA;AACE,CAAA,CAAA;AACA,MAAK,aAAe,GAAA,CAAA;AACpB,EAAA,QAAA;AACD,CAAA,KAAA;EACD,MAAA,CAAA,UAAA,EAAA,aAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AAMF,EAAM,MAAO,QAAA,GAAA,WAA+C,EAAE;QACtD,UAAW,GAAA,MAAe;AAChC,IAAA,aAAc,CAAA,CAAA,UAAc,CAAA;;AAG1B,EAAA,MAAA,QAAA,GAAA,IAAe,IAAU;AAC3B,IAAA,OAAE,QAAA,CAAA,QAAA,KAAA,IAAA;AAEF,GAAA;AACE,EAAA,OAAAA,IAAA,CAAO,KAAQ,EAAA;AACjB,IAAA,SAAE,EAAA,CAAA,EAAA,QAAA,GAAA,iBAAA,GAAA,YAAA,CAAA,kCAAA,CAAA;IAEF,QACE,EAAK,CAAAA,IAAA,CAAA,KAAA,EAAA;;AAUa,MAAA,QAAA,EAAA,CAAAC,GAAA,CAAA,KAAA,EAAA;wDAiD8B;AAChC,QAAA,QAAA,EAAA,QAAA,CAAA,GAAE,CAAkC,IAAA,IAAAA,GAAA,CAAA,IAAA,EAAA;AAYxD,UAAE,EAAA,EAAA,IAAA,CAAA,IAAA;AAEF,UAAA,sFAA6B,EAAA,QAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,UAAA,EAAA,QAAA,GAAA,iBAAA,GAAA,YAAA,CAAA,CAAA,GAAA,CAAA,YAAA,EAAA,QAAA,GAAA,qCAAA,GAAA,gCAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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;AAK3D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA+O/B,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 flex-col w-full",
102
- children: [jsx("div", {
103
- className: "w-full max-w-[90rem] mx-auto px-4 sm:px-6 lg:px-8 xl:px-16 pt-8",
104
- children: jsxs("nav", {
105
- className: "flex items-center space-x-2 text-sm text-muted-foreground",
106
- children: [jsx(Link, {
107
- to: "/help-center",
108
- className: "hover:text-foreground",
109
- children: "All Collections"
110
- }), jsx("span", {
111
- children: "\u203A"
112
- }), jsx(Link, {
113
- to: `/help-center/${article.categoryId}`,
114
- className: "hover:text-foreground",
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
- }), jsx("main", {
124
- className: "w-full py-8",
125
- children: jsx("div", {
126
- className: "max-w-[90rem] mx-auto px-4 sm:px-6 lg:px-8 xl:px-16 relative",
127
- children: jsxs("div", {
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: "fixed top-20 flex flex-col h-[calc(100vh-3rem)]",
123
+ className: "flex-1 min-w-0 max-w-5xl",
195
124
  children: [jsx("div", {
196
- className: "mb-4 flex-shrink-0",
197
- children: jsxs("h2", {
198
- className: "text-sm font-semibold text-primary flex items-center",
199
- children: [jsx("span", {
200
- className: "mr-2",
201
- children: "\u2630"
202
- }), "On this page"]
203
- })
204
- }), jsx("nav", {
205
- className: "space-y-1 flex-1 overflow-y-auto overflow-x-hidden min-h-0",
206
- children: article.headings.map((heading, index) => {
207
- const isActive = activeHeadingId === heading.id;
208
- return jsx("a", {
209
- href: `#${heading.id}`,
210
- 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'),
211
- children: heading.text
212
- }, index);
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","_jsxs"],"mappings":"0PAKO,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;AAEJ,WAAO,CACH,EAAKA,GAAA,CAAA,KAAA,EAAA;AAwGmC,YAAA,SAAA,EAAA;AACA,WAAA,CAAA,EAAAC,IAAA,CAAA,KAAA,EAAA;AAQgB,YAAA,SAAA,EAAA,WAAA;AACA,YAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA;AAEA,cAAA,SAAA,EAAA;AACA,aAAA,CAAA,EAAAA,GAAA,CAAA,KAAA,EAAA;AACE,cAAA,SAAA,EAAA;AACA,aAAA,CAAA,EAAAA,GAAA,CAAA,KAAA,EAAA;AACE,cAAA,SAAA,EAAA;AACA,aAAA,CAAA;AACE,WAAA,CAAA;AACA,SAAA;AACE,OAAA;;;AAkBxE,EAAE,IAAA,CAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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-6xl mx-auto px-6 py-8",
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.15",
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": "0452547bffa9a6ddc5282e17623a040e9bc1c10b"
73
+ "gitHead": "2acd35e59e362c96ab164e45297adeab03f1cec8"
74
74
  }