robindoc 0.0.0-experimental-a78a3c9 → 0.0.0-experimental-a217ca0
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/client.d.ts +6 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/components/elements/article/index.d.ts +8 -0
- package/lib/components/elements/article/index.d.ts.map +1 -1
- package/lib/components/elements/article/index.js.map +1 -1
- package/lib/components/elements/blog-container/index.d.ts +6 -0
- package/lib/components/elements/blog-container/index.d.ts.map +1 -1
- package/lib/components/elements/blog-container/index.js.map +1 -1
- package/lib/components/elements/docs-container/index.d.ts +6 -0
- package/lib/components/elements/docs-container/index.d.ts.map +1 -1
- package/lib/components/elements/docs-container/index.js.map +1 -1
- package/lib/components/elements/footer/index.d.ts +5 -0
- package/lib/components/elements/footer/index.d.ts.map +1 -1
- package/lib/components/elements/footer/index.js.map +1 -1
- package/lib/components/elements/header/index.d.ts +6 -0
- package/lib/components/elements/header/index.d.ts.map +1 -1
- package/lib/components/elements/header/index.js.map +1 -1
- package/lib/components/elements/keylink-to-content/index.d.ts +6 -0
- package/lib/components/elements/keylink-to-content/index.d.ts.map +1 -1
- package/lib/components/elements/keylink-to-content/index.js.map +1 -1
- package/lib/components/elements/keylink-to-navigation/index.d.ts +6 -0
- package/lib/components/elements/keylink-to-navigation/index.d.ts.map +1 -1
- package/lib/components/elements/keylink-to-navigation/index.js.map +1 -1
- package/lib/components/elements/page-container/index.d.ts +6 -0
- package/lib/components/elements/page-container/index.d.ts.map +1 -1
- package/lib/components/elements/page-container/index.js.map +1 -1
- package/lib/components/elements/robin-provider/index.d.ts +16 -0
- package/lib/components/elements/robin-provider/index.d.ts.map +1 -1
- package/lib/components/elements/robin-provider/index.js.map +1 -1
- package/lib/components/elements/sidebar/index.d.ts +6 -0
- package/lib/components/elements/sidebar/index.d.ts.map +1 -1
- package/lib/components/elements/sidebar/index.js.map +1 -1
- package/lib/core/types/initialize.d.ts +12 -0
- package/lib/core/types/initialize.d.ts.map +1 -1
- package/lib/core/utils/initialize-robindoc.d.ts +14 -0
- package/lib/core/utils/initialize-robindoc.d.ts.map +1 -1
- package/lib/core/utils/initialize-robindoc.js.map +1 -1
- package/lib/styles.css +741 -741
- package/package.json +1 -1
package/lib/client.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation context for custom navigation implementations.
|
|
3
|
+
* Provides access to pathname hook and Link component.
|
|
4
|
+
*
|
|
5
|
+
* @see {@link https://robindoc.com/docs/customization/elements Elements customization}
|
|
6
|
+
*/
|
|
1
7
|
export { NavigationContext } from "./components/stores/navigation/contexts";
|
|
2
8
|
//# sourceMappingURL=client.d.ts.map
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -20,6 +20,14 @@ type ArticleContentProps = Pick<DocumentProps, "pathname" | "components" | "conf
|
|
|
20
20
|
content?: undefined;
|
|
21
21
|
});
|
|
22
22
|
export type ArticleProps = Partial<PaginationProps> & Partial<BreadcrumbsProps> & Omit<ContentsProps, "headings"> & ArticleContentProps;
|
|
23
|
+
/**
|
|
24
|
+
* Article component for rendering markdown content.
|
|
25
|
+
* Handles parsing, rendering, and all page features (breadcrumbs, TOC, pagination).
|
|
26
|
+
*
|
|
27
|
+
* @see {@link https://robindoc.com/docs/customization/elements/page Page customization}
|
|
28
|
+
* @see {@link https://robindoc.com/docs/customization/tags Tags customization}
|
|
29
|
+
* @see {@link https://robindoc.com/docs/structure/data-source Data sources}
|
|
30
|
+
*/
|
|
23
31
|
export declare const Article: React.FC<ArticleProps>;
|
|
24
32
|
export {};
|
|
25
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,YAAY,EAAE,qCAAiC;AAG7D,OAAO,EAAY,KAAK,aAAa,EAAE,8BAAwC;AAC/E,OAAO,EAAe,KAAK,gBAAgB,EAAE,iCAA2C;AACxF,OAAO,EAAc,KAAK,eAAe,EAAE,gCAA0C;AAErF,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,gBAAgB,CAAC;AAExB,KAAK,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG;IACtG,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,YAAY,CAAC,EAAE;QACX,uBAAuB;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACL,GAAG,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,GACzB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAC/B,mBAAmB,CAAC;AAExB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuD1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,YAAY,EAAE,qCAAiC;AAG7D,OAAO,EAAY,KAAK,aAAa,EAAE,8BAAwC;AAC/E,OAAO,EAAe,KAAK,gBAAgB,EAAE,iCAA2C;AACxF,OAAO,EAAc,KAAK,eAAe,EAAE,gCAA0C;AAErF,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,gBAAgB,CAAC;AAExB,KAAK,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG;IACtG,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,YAAY,CAAC,EAAE;QACX,uBAAuB;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACL,GAAG,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,GACzB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAC/B,mBAAmB,CAAC;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuD1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/article/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type BaseProvider } from \"@src/core/providers/base\";\nimport { loadContent } from \"@src/core/utils/load-content\";\nimport { ContentsProvider } from \"@src/components/stores/contents/provider\";\nimport { Contents, type ContentsProps } from \"@src/components/blocks/contents\";\nimport { Breadcrumbs, type BreadcrumbsProps } from \"@src/components/blocks/breadcrumbs\";\nimport { Pagination, type PaginationProps } from \"@src/components/blocks/pagination\";\nimport { LastModified } from \"@src/components/blocks/last-modified\";\nimport { Document, type DocumentProps } from \"./document\";\nimport { parseMarkdown } from \"./utils\";\n\nimport \"./article.scss\";\n\ntype ArticleContentProps = Pick<DocumentProps, \"pathname\" | \"components\" | \"config\" | \"pages\" | \"tags\"> & {\n title: string;\n provider?: BaseProvider;\n translations?: {\n /** Last modified on */\n lastModifiedOn?: string;\n };\n} & ({ content: string; uri?: undefined } | { uri: string; content?: undefined });\n\nexport type ArticleProps = Partial<PaginationProps> &\n Partial<BreadcrumbsProps> &\n Omit<ContentsProps, \"headings\"> &\n ArticleContentProps;\n\nexport const Article: React.FC<ArticleProps> = async ({\n components,\n tags,\n content,\n uri,\n config = {},\n provider,\n hideContents,\n editUri: editUriProp,\n pathname,\n title,\n breadcrumbs,\n prev,\n next,\n pages = [],\n translations,\n}) => {\n const { lastModifiedOn = \"Last modified on\", editOnService, onThisPage } = translations || {};\n const { data, provider: targetProvider } =\n content || !uri ? { data: content, provider: null } : await loadContent(uri, provider);\n\n if (!data) {\n throw new Error(\"Robindoc: Please provide content or valid uri\");\n }\n\n const { headings, tokens } = parseMarkdown(data);\n const editUri = uri && targetProvider && (await targetProvider.getEditUri(uri));\n const lastModified = uri && targetProvider && (await targetProvider.getLastModifiedDate(uri));\n\n return (\n <ContentsProvider>\n {breadcrumbs && breadcrumbs.length > 0 && <Breadcrumbs breadcrumbs={breadcrumbs} title={title} />}\n <Contents\n editUri={editUriProp === null ? null : editUriProp || editUri}\n hideContents={hideContents}\n headings={headings}\n translations={{ editOnService, onThisPage }}\n />\n <div className=\"r-article\">\n <Document\n headings={headings}\n tokens={tokens}\n pages={pages}\n components={components}\n config={config}\n targetProvider={targetProvider}\n pathname={pathname}\n uri={uri}\n tags={tags}\n />\n {lastModified && <LastModified date={lastModified}>{lastModifiedOn}</LastModified>}\n </div>\n {(prev || next) && <Pagination prev={prev} next={next} />}\n </ContentsProvider>\n );\n};\n"],"names":["Article","async","components","tags","content","uri","config","provider","hideContents","editUri","editUriProp","pathname","title","breadcrumbs","prev","next","pages","translations","lastModifiedOn","editOnService","onThisPage","data","targetProvider","loadContent","Error","headings","tokens","parseMarkdown","getEditUri","lastModified","getLastModifiedDate","React","ContentsProvider","length","createElement","Breadcrumbs","Contents","className","Document","LastModified","date","Pagination"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/article/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type BaseProvider } from \"@src/core/providers/base\";\nimport { loadContent } from \"@src/core/utils/load-content\";\nimport { ContentsProvider } from \"@src/components/stores/contents/provider\";\nimport { Contents, type ContentsProps } from \"@src/components/blocks/contents\";\nimport { Breadcrumbs, type BreadcrumbsProps } from \"@src/components/blocks/breadcrumbs\";\nimport { Pagination, type PaginationProps } from \"@src/components/blocks/pagination\";\nimport { LastModified } from \"@src/components/blocks/last-modified\";\nimport { Document, type DocumentProps } from \"./document\";\nimport { parseMarkdown } from \"./utils\";\n\nimport \"./article.scss\";\n\ntype ArticleContentProps = Pick<DocumentProps, \"pathname\" | \"components\" | \"config\" | \"pages\" | \"tags\"> & {\n title: string;\n provider?: BaseProvider;\n translations?: {\n /** Last modified on */\n lastModifiedOn?: string;\n };\n} & ({ content: string; uri?: undefined } | { uri: string; content?: undefined });\n\nexport type ArticleProps = Partial<PaginationProps> &\n Partial<BreadcrumbsProps> &\n Omit<ContentsProps, \"headings\"> &\n ArticleContentProps;\n\n/**\n * Article component for rendering markdown content.\n * Handles parsing, rendering, and all page features (breadcrumbs, TOC, pagination).\n *\n * @see {@link https://robindoc.com/docs/customization/elements/page Page customization}\n * @see {@link https://robindoc.com/docs/customization/tags Tags customization}\n * @see {@link https://robindoc.com/docs/structure/data-source Data sources}\n */\nexport const Article: React.FC<ArticleProps> = async ({\n components,\n tags,\n content,\n uri,\n config = {},\n provider,\n hideContents,\n editUri: editUriProp,\n pathname,\n title,\n breadcrumbs,\n prev,\n next,\n pages = [],\n translations,\n}) => {\n const { lastModifiedOn = \"Last modified on\", editOnService, onThisPage } = translations || {};\n const { data, provider: targetProvider } =\n content || !uri ? { data: content, provider: null } : await loadContent(uri, provider);\n\n if (!data) {\n throw new Error(\"Robindoc: Please provide content or valid uri\");\n }\n\n const { headings, tokens } = parseMarkdown(data);\n const editUri = uri && targetProvider && (await targetProvider.getEditUri(uri));\n const lastModified = uri && targetProvider && (await targetProvider.getLastModifiedDate(uri));\n\n return (\n <ContentsProvider>\n {breadcrumbs && breadcrumbs.length > 0 && <Breadcrumbs breadcrumbs={breadcrumbs} title={title} />}\n <Contents\n editUri={editUriProp === null ? null : editUriProp || editUri}\n hideContents={hideContents}\n headings={headings}\n translations={{ editOnService, onThisPage }}\n />\n <div className=\"r-article\">\n <Document\n headings={headings}\n tokens={tokens}\n pages={pages}\n components={components}\n config={config}\n targetProvider={targetProvider}\n pathname={pathname}\n uri={uri}\n tags={tags}\n />\n {lastModified && <LastModified date={lastModified}>{lastModifiedOn}</LastModified>}\n </div>\n {(prev || next) && <Pagination prev={prev} next={next} />}\n </ContentsProvider>\n );\n};\n"],"names":["Article","async","components","tags","content","uri","config","provider","hideContents","editUri","editUriProp","pathname","title","breadcrumbs","prev","next","pages","translations","lastModifiedOn","editOnService","onThisPage","data","targetProvider","loadContent","Error","headings","tokens","parseMarkdown","getEditUri","lastModified","getLastModifiedDate","React","ContentsProvider","length","createElement","Breadcrumbs","Contents","className","Document","LastModified","date","Pagination"],"mappings":"ifAoCaA,EAAkCC,OAC3CC,aACAC,OACAC,UACAC,MACAC,SAAS,GACTC,WACAC,eACAC,QAASC,EACTC,WACAC,QACAC,cACAC,OACAC,OACAC,QAAQ,GACRC,mBAEA,MAAMC,eAAEA,EAAiB,mBAAkBC,cAAEA,EAAaC,WAAEA,GAAeH,GAAgB,CAAA,GACrFI,KAAEA,EAAMd,SAAUe,GACpBlB,IAAYC,EAAM,CAAEgB,KAAMjB,EAASG,SAAU,YAAegB,EAAYlB,EAAKE,GAEjF,IAAKc,EACD,MAAM,IAAIG,MAAM,iDAGpB,MAAMC,SAAEA,EAAQC,OAAEA,GAAWC,EAAcN,GACrCZ,EAAUJ,GAAOiB,SAAyBA,EAAeM,WAAWvB,GACpEwB,EAAexB,GAAOiB,SAAyBA,EAAeQ,oBAAoBzB,GAExF,OACI0B,gBAACC,EAAgB,KACZnB,GAAeA,EAAYoB,OAAS,GAAKF,EAAAG,cAACC,EAAW,CAACtB,YAAaA,EAAaD,MAAOA,IACxFmB,EAAAG,cAACE,EAAQ,CACL3B,QAAyB,OAAhBC,EAAuB,KAAOA,GAAeD,EACtDD,aAAcA,EACdiB,SAAUA,EACVR,aAAc,CAAEE,gBAAeC,gBAEnCW,EAAAG,cAAA,MAAA,CAAKG,UAAU,aACXN,EAAAG,cAACI,EAAQ,CACLb,SAAUA,EACVC,OAAQA,EACRV,MAAOA,EACPd,WAAYA,EACZI,OAAQA,EACRgB,eAAgBA,EAChBX,SAAUA,EACVN,IAAKA,EACLF,KAAMA,IAET0B,GAAgBE,EAAAG,cAACK,EAAY,CAACC,KAAMX,GAAeX,KAEtDJ,GAAQC,IAASgB,EAAAG,cAACO,EAAU,CAAC3B,KAAMA,EAAMC,KAAMA"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import "./blog-container.scss";
|
|
3
|
+
/**
|
|
4
|
+
* Container component for blog layout.
|
|
5
|
+
* Provides proper styling and structure for blog pages.
|
|
6
|
+
*
|
|
7
|
+
* @see {@link https://robindoc.com/docs/customization/elements/containers Containers}
|
|
8
|
+
*/
|
|
3
9
|
export declare const BlogContainer: React.FC<React.PropsWithChildren>;
|
|
4
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/blog-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/blog-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/blog-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./blog-container.scss\";\n\nexport const BlogContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-blog-container\">\n {children}\n </Container>\n );\n};\n"],"names":["BlogContainer","children","React","createElement","Container","component","className"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/blog-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./blog-container.scss\";\n\n/**\n * Container component for blog layout.\n * Provides proper styling and structure for blog pages.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/containers Containers}\n */\nexport const BlogContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-blog-container\">\n {children}\n </Container>\n );\n};\n"],"names":["BlogContainer","children","React","createElement","Container","component","className"],"mappings":"mFAYaA,EAAmD,EAAGC,cAE3DC,EAAAC,cAACC,EAAS,CAACC,UAAU,OAAOC,UAAU,oBACjCL"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import "./docs-container.scss";
|
|
3
|
+
/**
|
|
4
|
+
* Container component for documentation layout.
|
|
5
|
+
* Provides proper styling and structure for docs pages.
|
|
6
|
+
*
|
|
7
|
+
* @see {@link https://robindoc.com/docs/customization/elements/containers Containers}
|
|
8
|
+
*/
|
|
3
9
|
export declare const DocsContainer: React.FC<React.PropsWithChildren>;
|
|
4
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/docs-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/docs-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/docs-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./docs-container.scss\";\n\nexport const DocsContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-docs-container\">\n {children}\n </Container>\n );\n};\n"],"names":["DocsContainer","children","React","createElement","Container","component","className"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/docs-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./docs-container.scss\";\n\n/**\n * Container component for documentation layout.\n * Provides proper styling and structure for docs pages.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/containers Containers}\n */\nexport const DocsContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-docs-container\">\n {children}\n </Container>\n );\n};\n"],"names":["DocsContainer","children","React","createElement","Container","component","className"],"mappings":"mFAYaA,EAAmD,EAAGC,cAE3DC,EAAAC,cAACC,EAAS,CAACC,UAAU,OAAOC,UAAU,oBACjCL"}
|
|
@@ -4,5 +4,10 @@ export type FooterProps = {
|
|
|
4
4
|
copyright: string;
|
|
5
5
|
hidePoweredBy?: boolean;
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Footer component for documentation site.
|
|
9
|
+
*
|
|
10
|
+
* @see {@link https://robindoc.com/docs/customization/elements/footer Footer customization}
|
|
11
|
+
*/
|
|
7
12
|
export declare const Footer: React.FC<FooterProps>;
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/footer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,WAAW,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwBxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/footer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,WAAW,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwBxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/footer/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ThemeSwitcher } from \"@src/components/blocks/theme-switcher\";\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./footer.scss\";\n\nexport type FooterProps = {\n copyright: string;\n hidePoweredBy?: boolean;\n};\n\nexport const Footer: React.FC<FooterProps> = ({ copyright, hidePoweredBy }) => (\n <footer className=\"r-footer\">\n <Container className=\"r-footer-container\">\n <div className=\"r-footer-row\">\n <div className=\"r-copyright\">{copyright}</div>\n <ThemeSwitcher />\n </div>\n {!hidePoweredBy && (\n <div className=\"r-footer-row r-footer-additional\">\n <div className=\"r-powered\">\n Powered by{\" \"}\n <a\n href=\"https://robindoc.com\"\n className=\"r-powered-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ROBINDOC\n </a>\n </div>\n </div>\n )}\n </Container>\n </footer>\n);\n"],"names":["Footer","copyright","hidePoweredBy","React","createElement","className","Container","ThemeSwitcher","href","target","rel"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/footer/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ThemeSwitcher } from \"@src/components/blocks/theme-switcher\";\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./footer.scss\";\n\nexport type FooterProps = {\n copyright: string;\n hidePoweredBy?: boolean;\n};\n\n/**\n * Footer component for documentation site.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/footer Footer customization}\n */\nexport const Footer: React.FC<FooterProps> = ({ copyright, hidePoweredBy }) => (\n <footer className=\"r-footer\">\n <Container className=\"r-footer-container\">\n <div className=\"r-footer-row\">\n <div className=\"r-copyright\">{copyright}</div>\n <ThemeSwitcher />\n </div>\n {!hidePoweredBy && (\n <div className=\"r-footer-row r-footer-additional\">\n <div className=\"r-powered\">\n Powered by{\" \"}\n <a\n href=\"https://robindoc.com\"\n className=\"r-powered-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ROBINDOC\n </a>\n </div>\n </div>\n )}\n </Container>\n </footer>\n);\n"],"names":["Footer","copyright","hidePoweredBy","React","createElement","className","Container","ThemeSwitcher","href","target","rel"],"mappings":"kJAiBO,MAAMA,EAAgC,EAAGC,YAAWC,mBACvDC,EAAAC,cAAA,SAAA,CAAQC,UAAU,YACdF,EAAAC,cAACE,EAAS,CAACD,UAAU,sBACjBF,EAAAC,cAAA,MAAA,CAAKC,UAAU,gBACXF,EAAAC,cAAA,MAAA,CAAKC,UAAU,eAAeJ,GAC9BE,EAAAC,cAACG,UAEHL,GACEC,EAAAC,cAAA,MAAA,CAAKC,UAAU,oCACXF,EAAAC,cAAA,MAAA,CAAKC,UAAU,0BACA,IACXF,EAAAC,cAAA,IAAA,CACII,KAAK,uBACLH,UAAU,iBACVI,OAAO,SACPC,IAAI,uBAAqB"}
|
|
@@ -26,6 +26,12 @@ export type HeaderProps = {
|
|
|
26
26
|
versions?: SectionType;
|
|
27
27
|
locales?: SectionType;
|
|
28
28
|
} & HeaderMenuProps & SearchProps;
|
|
29
|
+
/**
|
|
30
|
+
* Header component for documentation site navigation.
|
|
31
|
+
*
|
|
32
|
+
* @see {@link https://robindoc.com/docs/customization/elements/header Header customization}
|
|
33
|
+
* @see {@link https://robindoc.com/docs/customization/search Search integration}
|
|
34
|
+
*/
|
|
29
35
|
export declare const Header: React.FC<HeaderProps>;
|
|
30
36
|
export {};
|
|
31
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,eAAe,EAAE,iCAA2C;AACtF,OAAO,EAAU,KAAK,WAAW,EAAE,4BAAsC;AAMzE,KAAK,aAAa,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,GAAG,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;CACzB,GAAG,eAAe,GACf,WAAW,CAAC;AAEhB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgExC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,eAAe,EAAE,iCAA2C;AACtF,OAAO,EAAU,KAAK,WAAW,EAAE,4BAAsC;AAMzE,KAAK,aAAa,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,GAAG,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;CACzB,GAAG,eAAe,GACf,WAAW,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgExC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/header/index.tsx"],"sourcesContent":["import \"./header.scss\";\nimport React from \"react\";\nimport { HeaderMenu, type HeaderMenuProps } from \"@src/components/blocks/header-menu\";\nimport { Search, type SearchProps } from \"@src/components/blocks/search\";\nimport { SectionDropdown } from \"@src/components/blocks/section-dropdown\";\nimport { HeaderSocial } from \"@src/components/blocks/header-social\";\nimport { Container } from \"@src/components/ui/container\";\nimport { NavLink } from \"@src/components/blocks/nav-link\";\n\ntype SectionOption = {\n key: string;\n href?: string;\n title: string;\n shortTitle?: string;\n};\n\ntype SectionType = {\n default?: string;\n target: string;\n list: SectionOption[];\n};\n\nexport type HeaderProps = {\n logo: React.ReactElement;\n links?: {\n title: string;\n href: string;\n }[];\n git?: string | { uri: string; logo: React.ElementType };\n versions?: SectionType;\n locales?: SectionType;\n} & HeaderMenuProps &\n SearchProps;\n\nexport const Header: React.FC<HeaderProps> = ({ logo, versions, locales, links = [], git, searcher, translations }) => {\n const { menu, ...searchTranslations } = translations || {};\n const targetVersion = versions?.list.find((version) => version.key === versions.target);\n const versionPrefix = !targetVersion || targetVersion.key === versions?.default ? \"\" : `/${targetVersion.key}`;\n const targetLocale = locales?.list.find((locale) => locale.key === locales.target);\n const localePrefix = !targetLocale || targetLocale.key === locales?.default ? \"\" : `/${targetLocale.key}`;\n\n return (\n <header className=\"r-header\">\n <Container className=\"r-header-body\">\n <div>\n <NavLink href=\"/\" className=\"r-header-logo\">\n {logo}\n </NavLink>\n </div>\n <HeaderMenu translations={{ menu }}>\n <nav className=\"r-header-nav\">\n {links.map((link) => (\n <NavLink\n href={link.href}\n className=\"r-header-link\"\n targetClassName=\"_target\"\n key={link.title}\n >\n {link.title}\n </NavLink>\n ))}\n </nav>\n <div className=\"r-header-actions\">\n <div className=\"r-header-sections\">\n {versions && targetVersion && (\n <SectionDropdown\n defaultOption={targetVersion.key}\n options={versions.list.map((version) => ({\n href:\n version.href ||\n `${localePrefix}${version.key === versions.default ? \"\" : `/${version.key}`}/`,\n key: version.key,\n title: version.title,\n shortTitle: version.shortTitle,\n }))}\n />\n )}\n {locales && targetLocale && (\n <SectionDropdown\n defaultOption={targetLocale.key}\n options={locales.list.map((locale) => ({\n href:\n locale.href ||\n `${locale.key === locales.default ? \"\" : `/${locale.key}`}${versionPrefix}/`,\n key: locale.key,\n title: locale.title,\n shortTitle: locale.shortTitle,\n }))}\n />\n )}\n </div>\n {searcher && <Search searcher={searcher} translations={searchTranslations} />}\n </div>\n </HeaderMenu>\n {git && <HeaderSocial git={git} />}\n </Container>\n </header>\n );\n};\n"],"names":["Header","logo","versions","locales","links","git","searcher","translations","menu","searchTranslations","targetVersion","list","find","version","key","target","versionPrefix","default","targetLocale","locale","localePrefix","React","createElement","className","Container","NavLink","href","HeaderMenu","map","link","targetClassName","title","SectionDropdown","defaultOption","options","shortTitle","Search","HeaderSocial"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/header/index.tsx"],"sourcesContent":["import \"./header.scss\";\nimport React from \"react\";\nimport { HeaderMenu, type HeaderMenuProps } from \"@src/components/blocks/header-menu\";\nimport { Search, type SearchProps } from \"@src/components/blocks/search\";\nimport { SectionDropdown } from \"@src/components/blocks/section-dropdown\";\nimport { HeaderSocial } from \"@src/components/blocks/header-social\";\nimport { Container } from \"@src/components/ui/container\";\nimport { NavLink } from \"@src/components/blocks/nav-link\";\n\ntype SectionOption = {\n key: string;\n href?: string;\n title: string;\n shortTitle?: string;\n};\n\ntype SectionType = {\n default?: string;\n target: string;\n list: SectionOption[];\n};\n\nexport type HeaderProps = {\n logo: React.ReactElement;\n links?: {\n title: string;\n href: string;\n }[];\n git?: string | { uri: string; logo: React.ElementType };\n versions?: SectionType;\n locales?: SectionType;\n} & HeaderMenuProps &\n SearchProps;\n\n/**\n * Header component for documentation site navigation.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/header Header customization}\n * @see {@link https://robindoc.com/docs/customization/search Search integration}\n */\nexport const Header: React.FC<HeaderProps> = ({ logo, versions, locales, links = [], git, searcher, translations }) => {\n const { menu, ...searchTranslations } = translations || {};\n const targetVersion = versions?.list.find((version) => version.key === versions.target);\n const versionPrefix = !targetVersion || targetVersion.key === versions?.default ? \"\" : `/${targetVersion.key}`;\n const targetLocale = locales?.list.find((locale) => locale.key === locales.target);\n const localePrefix = !targetLocale || targetLocale.key === locales?.default ? \"\" : `/${targetLocale.key}`;\n\n return (\n <header className=\"r-header\">\n <Container className=\"r-header-body\">\n <div>\n <NavLink href=\"/\" className=\"r-header-logo\">\n {logo}\n </NavLink>\n </div>\n <HeaderMenu translations={{ menu }}>\n <nav className=\"r-header-nav\">\n {links.map((link) => (\n <NavLink\n href={link.href}\n className=\"r-header-link\"\n targetClassName=\"_target\"\n key={link.title}\n >\n {link.title}\n </NavLink>\n ))}\n </nav>\n <div className=\"r-header-actions\">\n <div className=\"r-header-sections\">\n {versions && targetVersion && (\n <SectionDropdown\n defaultOption={targetVersion.key}\n options={versions.list.map((version) => ({\n href:\n version.href ||\n `${localePrefix}${version.key === versions.default ? \"\" : `/${version.key}`}/`,\n key: version.key,\n title: version.title,\n shortTitle: version.shortTitle,\n }))}\n />\n )}\n {locales && targetLocale && (\n <SectionDropdown\n defaultOption={targetLocale.key}\n options={locales.list.map((locale) => ({\n href:\n locale.href ||\n `${locale.key === locales.default ? \"\" : `/${locale.key}`}${versionPrefix}/`,\n key: locale.key,\n title: locale.title,\n shortTitle: locale.shortTitle,\n }))}\n />\n )}\n </div>\n {searcher && <Search searcher={searcher} translations={searchTranslations} />}\n </div>\n </HeaderMenu>\n {git && <HeaderSocial git={git} />}\n </Container>\n </header>\n );\n};\n"],"names":["Header","logo","versions","locales","links","git","searcher","translations","menu","searchTranslations","targetVersion","list","find","version","key","target","versionPrefix","default","targetLocale","locale","localePrefix","React","createElement","className","Container","NavLink","href","HeaderMenu","map","link","targetClassName","title","SectionDropdown","defaultOption","options","shortTitle","Search","HeaderSocial"],"mappings":"6YAwCaA,EAAgC,EAAGC,OAAMC,WAAUC,UAASC,QAAQ,GAAIC,MAAKC,WAAUC,mBAChG,MAAMC,KAAEA,KAASC,GAAuBF,GAAgB,CAAA,EAClDG,EAAgBR,GAAUS,KAAKC,KAAMC,GAAYA,EAAQC,MAAQZ,EAASa,QAC1EC,EAAiBN,GAAiBA,EAAcI,MAAQZ,GAAUe,QAAe,IAAIP,EAAcI,MAAvB,GAC5EI,EAAef,GAASQ,KAAKC,KAAMO,GAAWA,EAAOL,MAAQX,EAAQY,QACrEK,EAAgBF,GAAgBA,EAAaJ,MAAQX,GAASc,QAAe,IAAIC,EAAaJ,MAAtB,GAE9E,OACIO,EAAAC,cAAA,SAAA,CAAQC,UAAU,YACdF,EAAAC,cAACE,EAAS,CAACD,UAAU,iBACjBF,EAAAC,cAAA,MAAA,KACID,EAAAC,cAACG,EAAO,CAACC,KAAK,IAAIH,UAAU,iBACvBtB,IAGToB,EAAAC,cAACK,EAAU,CAACpB,aAAc,CAAEC,SACxBa,EAAAC,cAAA,MAAA,CAAKC,UAAU,gBACVnB,EAAMwB,IAAKC,GACRR,EAAAC,cAACG,EAAO,CACJC,KAAMG,EAAKH,KACXH,UAAU,gBACVO,gBAAgB,UAChBhB,IAAKe,EAAKE,OAETF,EAAKE,SAIlBV,EAAAC,cAAA,MAAA,CAAKC,UAAU,oBACXF,EAAAC,cAAA,MAAA,CAAKC,UAAU,qBACVrB,GAAYQ,GACTW,EAAAC,cAACU,EAAe,CACZC,cAAevB,EAAcI,IAC7BoB,QAAShC,EAASS,KAAKiB,IAAKf,IAAO,CAC/Ba,KACIb,EAAQa,MACR,GAAGN,IAAeP,EAAQC,MAAQZ,EAASe,QAAU,GAAK,IAAIJ,EAAQC,SAC1EA,IAAKD,EAAQC,IACbiB,MAAOlB,EAAQkB,MACfI,WAAYtB,EAAQsB,gBAI/BhC,GAAWe,GACRG,EAAAC,cAACU,EAAe,CACZC,cAAef,EAAaJ,IAC5BoB,QAAS/B,EAAQQ,KAAKiB,IAAKT,IAAM,CAC7BO,KACIP,EAAOO,MACP,GAAGP,EAAOL,MAAQX,EAAQc,QAAU,GAAK,IAAIE,EAAOL,QAAQE,KAChEF,IAAKK,EAAOL,IACZiB,MAAOZ,EAAOY,MACdI,WAAYhB,EAAOgB,iBAKlC7B,GAAYe,EAAAC,cAACc,EAAM,CAAC9B,SAAUA,EAAUC,aAAcE,MAG9DJ,GAAOgB,EAAAC,cAACe,EAAY,CAAChC,IAAKA"}
|
|
@@ -6,5 +6,11 @@ export type KeylinkToContentProps = {
|
|
|
6
6
|
skipToMainContent?: string;
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Keyboard-accessible skip link to main content.
|
|
11
|
+
* Provides quick navigation for keyboard and screen reader users.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link https://robindoc.com/docs/customization/elements/keylinks Keylinks}
|
|
14
|
+
*/
|
|
9
15
|
export declare const KeylinkToContent: React.FC<KeylinkToContentProps>;
|
|
10
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/keylink-to-content/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG;IAChC,YAAY,CAAC,EAAE;QACX,2BAA2B;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAQ5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/keylink-to-content/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG;IAChC,YAAY,CAAC,EAAE;QACX,2BAA2B;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACL,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAQ5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/keylink-to-content/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Keylink } from \"@src/components/ui/keylink\";\n\nimport \"./keylink-to-content.scss\";\n\nexport type KeylinkToContentProps = {\n translations?: {\n /** Skip to main content */\n skipToMainContent?: string;\n };\n};\n\nexport const KeylinkToContent: React.FC<KeylinkToContentProps> = ({ translations }) => {\n const { skipToMainContent = \"Skip to main content\" } = translations || {};\n\n return (\n <Keylink className=\"keylink-to-content\" toId=\"main-content\">\n {skipToMainContent}\n </Keylink>\n );\n};\n"],"names":["KeylinkToContent","translations","skipToMainContent","React","createElement","Keylink","className","toId"],"mappings":"+
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/keylink-to-content/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Keylink } from \"@src/components/ui/keylink\";\n\nimport \"./keylink-to-content.scss\";\n\nexport type KeylinkToContentProps = {\n translations?: {\n /** Skip to main content */\n skipToMainContent?: string;\n };\n};\n\n/**\n * Keyboard-accessible skip link to main content.\n * Provides quick navigation for keyboard and screen reader users.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/keylinks Keylinks}\n */\nexport const KeylinkToContent: React.FC<KeylinkToContentProps> = ({ translations }) => {\n const { skipToMainContent = \"Skip to main content\" } = translations || {};\n\n return (\n <Keylink className=\"keylink-to-content\" toId=\"main-content\">\n {skipToMainContent}\n </Keylink>\n );\n};\n"],"names":["KeylinkToContent","translations","skipToMainContent","React","createElement","Keylink","className","toId"],"mappings":"+EAmBaA,EAAoD,EAAGC,mBAChE,MAAMC,kBAAEA,EAAoB,wBAA2BD,GAAgB,CAAA,EAEvE,OACIE,EAAAC,cAACC,EAAO,CAACC,UAAU,qBAAqBC,KAAK,gBACxCL"}
|
|
@@ -6,5 +6,11 @@ export type KeylinkToNavigationProps = {
|
|
|
6
6
|
returnToNavigation?: string;
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Keyboard-accessible link to return to navigation.
|
|
11
|
+
* Provides quick navigation for keyboard and screen reader users.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link https://robindoc.com/docs/customization/elements/keylinks Keylinks}
|
|
14
|
+
*/
|
|
9
15
|
export declare const KeylinkToNavigation: React.FC<KeylinkToNavigationProps>;
|
|
10
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/keylink-to-navigation/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,8BAA8B,CAAC;AAEtC,MAAM,MAAM,wBAAwB,GAAG;IACnC,YAAY,CAAC,EAAE;QACX,2BAA2B;QAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAQlE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/keylink-to-navigation/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,8BAA8B,CAAC;AAEtC,MAAM,MAAM,wBAAwB,GAAG;IACnC,YAAY,CAAC,EAAE;QACX,2BAA2B;QAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACL,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAQlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/keylink-to-navigation/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Keylink } from \"@src/components/ui/keylink\";\n\nimport \"./keylink-to-navigation.scss\";\n\nexport type KeylinkToNavigationProps = {\n translations?: {\n /** Return to navigation */\n returnToNavigation?: string;\n };\n};\n\nexport const KeylinkToNavigation: React.FC<KeylinkToNavigationProps> = ({ translations }) => {\n const { returnToNavigation = \"Return to navigation\" } = translations || {};\n\n return (\n <Keylink className=\"keylink-to-navigation\" toId=\"navigation\">\n {returnToNavigation}\n </Keylink>\n );\n};\n"],"names":["KeylinkToNavigation","translations","returnToNavigation","React","createElement","Keylink","className","toId"],"mappings":"+
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/keylink-to-navigation/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Keylink } from \"@src/components/ui/keylink\";\n\nimport \"./keylink-to-navigation.scss\";\n\nexport type KeylinkToNavigationProps = {\n translations?: {\n /** Return to navigation */\n returnToNavigation?: string;\n };\n};\n\n/**\n * Keyboard-accessible link to return to navigation.\n * Provides quick navigation for keyboard and screen reader users.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/keylinks Keylinks}\n */\nexport const KeylinkToNavigation: React.FC<KeylinkToNavigationProps> = ({ translations }) => {\n const { returnToNavigation = \"Return to navigation\" } = translations || {};\n\n return (\n <Keylink className=\"keylink-to-navigation\" toId=\"navigation\">\n {returnToNavigation}\n </Keylink>\n );\n};\n"],"names":["KeylinkToNavigation","translations","returnToNavigation","React","createElement","Keylink","className","toId"],"mappings":"+EAmBaA,EAA0D,EAAGC,mBACtE,MAAMC,mBAAEA,EAAqB,wBAA2BD,GAAgB,CAAA,EAExE,OACIE,EAAAC,cAACC,EAAO,CAACC,UAAU,wBAAwBC,KAAK,cAC3CL"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import "./page-container.scss";
|
|
3
|
+
/**
|
|
4
|
+
* Generic page container component.
|
|
5
|
+
* Provides basic page layout structure.
|
|
6
|
+
*
|
|
7
|
+
* @see {@link https://robindoc.com/docs/customization/elements/containers Containers}
|
|
8
|
+
*/
|
|
3
9
|
export declare const PageContainer: React.FC<React.PropsWithChildren>;
|
|
4
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/page-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/page-container/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAM3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/page-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./page-container.scss\";\n\nexport const PageContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-page-container\">\n {children}\n </Container>\n );\n};\n"],"names":["PageContainer","children","React","createElement","Container","component","className"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/page-container/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Container } from \"@src/components/ui/container\";\n\nimport \"./page-container.scss\";\n\n/**\n * Generic page container component.\n * Provides basic page layout structure.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/containers Containers}\n */\nexport const PageContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Container component=\"main\" className=\"r-page-container\">\n {children}\n </Container>\n );\n};\n"],"names":["PageContainer","children","React","createElement","Container","component","className"],"mappings":"mFAYaA,EAAmD,EAAGC,cAE3DC,EAAAC,cAACC,EAAS,CAACC,UAAU,OAAOC,UAAU,oBACjCL"}
|
|
@@ -3,6 +3,22 @@ import "./robin-provider.scss";
|
|
|
3
3
|
interface RobinProviderProps {
|
|
4
4
|
component?: React.ElementType;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Root provider component that wraps the entire Robindoc application.
|
|
8
|
+
* Required for proper functionality of preferences, navigation, and other features.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <RobinProvider>
|
|
13
|
+
* <Header logo={<Logo />} />
|
|
14
|
+
* <DocsContainer>
|
|
15
|
+
* <Page pathname="/docs" />
|
|
16
|
+
* </DocsContainer>
|
|
17
|
+
* </RobinProvider>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @see {@link https://robindoc.com/docs/customization/elements Elements customization}
|
|
21
|
+
*/
|
|
6
22
|
export declare const RobinProvider: React.FC<React.PropsWithChildren<RobinProviderProps>>;
|
|
7
23
|
export {};
|
|
8
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/robin-provider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,uBAAuB,CAAC;AAE/B,UAAU,kBAAkB;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACjC;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAS/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/robin-provider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,uBAAuB,CAAC;AAE/B,UAAU,kBAAkB;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAS/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/robin-provider/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { NavigateProvider } from \"@src/components/stores/navigate/provider\";\nimport { PreferencesDetector } from \"@src/components/blocks/preferences-detector\";\nimport { NoJs } from \"@src/components/blocks/no-js\";\n\nimport \"./robin-provider.scss\";\n\ninterface RobinProviderProps {\n component?: React.ElementType;\n}\n\nexport const RobinProvider: React.FC<React.PropsWithChildren<RobinProviderProps>> = ({\n children,\n component: Component = \"div\",\n}) => (\n <Component suppressHydrationWarning className=\"r-root\">\n <PreferencesDetector />\n <NavigateProvider>{children}</NavigateProvider>\n <NoJs />\n </Component>\n);\n"],"names":["RobinProvider","children","component","Component","React","createElement","suppressHydrationWarning","className","PreferencesDetector","NavigateProvider","NoJs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/robin-provider/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { NavigateProvider } from \"@src/components/stores/navigate/provider\";\nimport { PreferencesDetector } from \"@src/components/blocks/preferences-detector\";\nimport { NoJs } from \"@src/components/blocks/no-js\";\n\nimport \"./robin-provider.scss\";\n\ninterface RobinProviderProps {\n component?: React.ElementType;\n}\n\n/**\n * Root provider component that wraps the entire Robindoc application.\n * Required for proper functionality of preferences, navigation, and other features.\n *\n * @example\n * ```tsx\n * <RobinProvider>\n * <Header logo={<Logo />} />\n * <DocsContainer>\n * <Page pathname=\"/docs\" />\n * </DocsContainer>\n * </RobinProvider>\n * ```\n *\n * @see {@link https://robindoc.com/docs/customization/elements Elements customization}\n */\nexport const RobinProvider: React.FC<React.PropsWithChildren<RobinProviderProps>> = ({\n children,\n component: Component = \"div\",\n}) => (\n <Component suppressHydrationWarning className=\"r-root\">\n <PreferencesDetector />\n <NavigateProvider>{children}</NavigateProvider>\n <NoJs />\n </Component>\n);\n"],"names":["RobinProvider","children","component","Component","React","createElement","suppressHydrationWarning","className","PreferencesDetector","NavigateProvider","NoJs"],"mappings":"8NA4BO,MAAMA,EAAuE,EAChFC,WACAC,UAAWC,EAAY,SAEvBC,EAAAC,cAACF,EAAS,CAACG,0BAAwB,EAACC,UAAU,UAC1CH,EAAAC,cAACG,EAAmB,MACpBJ,EAAAC,cAACI,EAAgB,KAAER,GACnBG,EAAAC,cAACK,EAAI"}
|
|
@@ -13,6 +13,12 @@ export type SidebarProps = {
|
|
|
13
13
|
tree?: TreeItem[] | null;
|
|
14
14
|
translations?: LinkBranchProps["translations"];
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Sidebar component for documentation navigation.
|
|
18
|
+
* Renders a hierarchical navigation menu based on the documentation structure.
|
|
19
|
+
*
|
|
20
|
+
* @see {@link https://robindoc.com/docs/customization/elements/sidebar Sidebar customization}
|
|
21
|
+
*/
|
|
16
22
|
export declare const Sidebar: React.FC<SidebarProps>;
|
|
17
23
|
export {};
|
|
18
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/sidebar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,OAAO,gBAAgB,CAAC;AAExB,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE;QACX,qBAAqB;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACL,CAAC;AA2CF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAoB1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/sidebar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,OAAO,gBAAgB,CAAC;AAExB,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE;QACX,qBAAqB;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACL,CAAC;AA2CF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;CAClD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAoB1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/sidebar/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { type TreeItem } from \"./types\";\nimport { SidebarMenu } from \"./sidebar-menu\";\nimport { SidebarDrop } from \"./sidebar-drop\";\nimport { SidebarLink } from \"./sidebar-link\";\nimport { collectItems, isActiveItem } from \"./tools\";\n\nimport \"./sidebar.scss\";\n\ntype LinkBranchProps = {\n branch: TreeItem;\n depth: number;\n translations?: {\n /** Expand {title} */\n expandTitle?: string;\n };\n};\n\nconst LinkBranch: React.FC<LinkBranchProps> = ({ branch, depth, translations }) => {\n const { expandTitle = \"Expand {title}\" } = translations || {};\n\n if (branch.type === \"separator\") {\n return <li className=\"r-sidebar-li _separator\" />;\n }\n\n return (\n <li\n className={clsx(\n \"r-sidebar-li\",\n branch.type === \"heading\" && \"r-sidebar-heading\",\n branch.items && branch.items.length > 0 && \"_droppable\",\n )}\n >\n {isActiveItem(branch) ? (\n <SidebarLink branch={branch} />\n ) : (\n <p className={clsx(\"r-sidebar-p\", branch.type === \"heading\" && \"r-sidebar-heading\")}>{branch.title}</p>\n )}\n {branch.items && branch.items.length > 0 && (\n <SidebarDrop\n childHrefs={collectItems(branch)}\n defaultOpen={false}\n id={branch.href + branch.title}\n label={expandTitle.replace(\"{title}\", branch.title)}\n >\n {branch.items.map((item, index) => (\n <LinkBranch\n branch={item}\n key={item.type === \"separator\" ? `sep${index}` : item.href + item.title}\n depth={depth >= 4 ? 4 : depth + 1}\n translations={translations}\n />\n ))}\n </SidebarDrop>\n )}\n </li>\n );\n};\n\nexport type SidebarProps = {\n tree?: TreeItem[] | null;\n translations?: LinkBranchProps[\"translations\"];\n};\n\nexport const Sidebar: React.FC<SidebarProps> = ({ tree, translations }) => {\n if (!tree?.length) return <div className=\"r-sidebar\" />;\n\n return (\n <>\n <div className=\"r-sidebar-top-mock\" />\n <SidebarMenu>\n <ul className=\"r-sidebar-list\">\n {tree.map((item, index) => (\n <LinkBranch\n branch={item}\n key={item.type === \"separator\" ? `sep${index}` : item.href + item.title}\n depth={0}\n translations={translations}\n />\n ))}\n </ul>\n </SidebarMenu>\n </>\n );\n};\n"],"names":["LinkBranch","branch","depth","translations","expandTitle","type","React","createElement","className","clsx","items","length","isActiveItem","SidebarLink","title","SidebarDrop","childHrefs","collectItems","defaultOpen","id","href","label","replace","map","item","index","key","Sidebar","tree","Fragment","SidebarMenu"],"mappings":"uQAoBA,MAAMA,EAAwC,EAAGC,SAAQC,QAAOC,mBAC5D,MAAMC,YAAEA,EAAc,kBAAqBD,GAAgB,CAAA,EAE3D,MAAoB,cAAhBF,EAAOI,KACAC,EAAAC,cAAA,KAAA,CAAIC,UAAU,4BAIrBF,EAAAC,cAAA,KAAA,CACIC,UAAWC,EACP,eACgB,YAAhBR,EAAOI,MAAsB,oBAC7BJ,EAAOS,OAAST,EAAOS,MAAMC,OAAS,GAAK,eAG9CC,EAAaX,GACVK,EAAAC,cAACM,EAAW,CAACZ,OAAQA,IAErBK,EAAAC,cAAA,IAAA,CAAGC,UAAWC,EAAK,cAA+B,YAAhBR,EAAOI,MAAsB,sBAAuBJ,EAAOa,OAEhGb,EAAOS,OAAST,EAAOS,MAAMC,OAAS,GACnCL,EAAAC,cAACQ,EAAW,CACRC,WAAYC,EAAahB,GACzBiB,aAAa,EACbC,GAAIlB,EAAOmB,KAAOnB,EAAOa,MACzBO,MAAOjB,EAAYkB,QAAQ,UAAWrB,EAAOa,QAE5Cb,EAAOS,MAAMa,IAAI,CAACC,EAAMC,IACrBnB,EAAAC,cAACP,EAAU,CACPC,OAAQuB,EACRE,IAAmB,cAAdF,EAAKnB,KAAuB,MAAMoB,IAAUD,EAAKJ,KAAOI,EAAKV,MAClEZ,MAAOA,GAAS,EAAI,EAAIA,EAAQ,EAChCC,aAAcA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/elements/sidebar/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { type TreeItem } from \"./types\";\nimport { SidebarMenu } from \"./sidebar-menu\";\nimport { SidebarDrop } from \"./sidebar-drop\";\nimport { SidebarLink } from \"./sidebar-link\";\nimport { collectItems, isActiveItem } from \"./tools\";\n\nimport \"./sidebar.scss\";\n\ntype LinkBranchProps = {\n branch: TreeItem;\n depth: number;\n translations?: {\n /** Expand {title} */\n expandTitle?: string;\n };\n};\n\nconst LinkBranch: React.FC<LinkBranchProps> = ({ branch, depth, translations }) => {\n const { expandTitle = \"Expand {title}\" } = translations || {};\n\n if (branch.type === \"separator\") {\n return <li className=\"r-sidebar-li _separator\" />;\n }\n\n return (\n <li\n className={clsx(\n \"r-sidebar-li\",\n branch.type === \"heading\" && \"r-sidebar-heading\",\n branch.items && branch.items.length > 0 && \"_droppable\",\n )}\n >\n {isActiveItem(branch) ? (\n <SidebarLink branch={branch} />\n ) : (\n <p className={clsx(\"r-sidebar-p\", branch.type === \"heading\" && \"r-sidebar-heading\")}>{branch.title}</p>\n )}\n {branch.items && branch.items.length > 0 && (\n <SidebarDrop\n childHrefs={collectItems(branch)}\n defaultOpen={false}\n id={branch.href + branch.title}\n label={expandTitle.replace(\"{title}\", branch.title)}\n >\n {branch.items.map((item, index) => (\n <LinkBranch\n branch={item}\n key={item.type === \"separator\" ? `sep${index}` : item.href + item.title}\n depth={depth >= 4 ? 4 : depth + 1}\n translations={translations}\n />\n ))}\n </SidebarDrop>\n )}\n </li>\n );\n};\n\nexport type SidebarProps = {\n tree?: TreeItem[] | null;\n translations?: LinkBranchProps[\"translations\"];\n};\n\n/**\n * Sidebar component for documentation navigation.\n * Renders a hierarchical navigation menu based on the documentation structure.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/sidebar Sidebar customization}\n */\nexport const Sidebar: React.FC<SidebarProps> = ({ tree, translations }) => {\n if (!tree?.length) return <div className=\"r-sidebar\" />;\n\n return (\n <>\n <div className=\"r-sidebar-top-mock\" />\n <SidebarMenu>\n <ul className=\"r-sidebar-list\">\n {tree.map((item, index) => (\n <LinkBranch\n branch={item}\n key={item.type === \"separator\" ? `sep${index}` : item.href + item.title}\n depth={0}\n translations={translations}\n />\n ))}\n </ul>\n </SidebarMenu>\n </>\n );\n};\n"],"names":["LinkBranch","branch","depth","translations","expandTitle","type","React","createElement","className","clsx","items","length","isActiveItem","SidebarLink","title","SidebarDrop","childHrefs","collectItems","defaultOpen","id","href","label","replace","map","item","index","key","Sidebar","tree","Fragment","SidebarMenu"],"mappings":"uQAoBA,MAAMA,EAAwC,EAAGC,SAAQC,QAAOC,mBAC5D,MAAMC,YAAEA,EAAc,kBAAqBD,GAAgB,CAAA,EAE3D,MAAoB,cAAhBF,EAAOI,KACAC,EAAAC,cAAA,KAAA,CAAIC,UAAU,4BAIrBF,EAAAC,cAAA,KAAA,CACIC,UAAWC,EACP,eACgB,YAAhBR,EAAOI,MAAsB,oBAC7BJ,EAAOS,OAAST,EAAOS,MAAMC,OAAS,GAAK,eAG9CC,EAAaX,GACVK,EAAAC,cAACM,EAAW,CAACZ,OAAQA,IAErBK,EAAAC,cAAA,IAAA,CAAGC,UAAWC,EAAK,cAA+B,YAAhBR,EAAOI,MAAsB,sBAAuBJ,EAAOa,OAEhGb,EAAOS,OAAST,EAAOS,MAAMC,OAAS,GACnCL,EAAAC,cAACQ,EAAW,CACRC,WAAYC,EAAahB,GACzBiB,aAAa,EACbC,GAAIlB,EAAOmB,KAAOnB,EAAOa,MACzBO,MAAOjB,EAAYkB,QAAQ,UAAWrB,EAAOa,QAE5Cb,EAAOS,MAAMa,IAAI,CAACC,EAAMC,IACrBnB,EAAAC,cAACP,EAAU,CACPC,OAAQuB,EACRE,IAAmB,cAAdF,EAAKnB,KAAuB,MAAMoB,IAAUD,EAAKJ,KAAOI,EAAKV,MAClEZ,MAAOA,GAAS,EAAI,EAAIA,EAAQ,EAChCC,aAAcA,QAoB7BwB,EAAkC,EAAGC,OAAMzB,kBAC/CyB,GAAMjB,OAGPL,EAAAC,cAAAD,EAAAuB,SAAA,KACIvB,EAAAC,cAAA,MAAA,CAAKC,UAAU,uBACfF,EAAAC,cAACuB,EAAW,KACRxB,EAAAC,cAAA,KAAA,CAAIC,UAAU,kBACToB,EAAKL,IAAI,CAACC,EAAMC,IACbnB,EAAAC,cAACP,EAAU,CACPC,OAAQuB,EACRE,IAAmB,cAAdF,EAAKnB,KAAuB,MAAMoB,IAAUD,EAAKJ,KAAOI,EAAKV,MAClEZ,MAAO,EACPC,aAAcA,QAZZG,EAAAC,cAAA,MAAA,CAAKC,UAAU"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { type Structure } from "./structure";
|
|
2
|
+
/**
|
|
3
|
+
* Structure template for documentation initialization.
|
|
4
|
+
* Can be a static structure object or an async function that returns one.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link https://robindoc.com/docs/structure/structure Structure documentation}
|
|
7
|
+
*/
|
|
2
8
|
export type StructureTemplate = Structure | (() => Structure | Promise<Structure>);
|
|
9
|
+
/**
|
|
10
|
+
* Initialization options for Robindoc.
|
|
11
|
+
*/
|
|
3
12
|
export type Options = {
|
|
13
|
+
/** Custom error handler. Receives HTTP status code and message, returns React node or null. */
|
|
4
14
|
processError?: (status: number, statusText: string) => void | null | never;
|
|
15
|
+
/** Array of regex patterns to validate pathnames. Only matching paths will be processed. */
|
|
5
16
|
matcher?: string[];
|
|
17
|
+
/** Enable caching of structure data. Defaults to false (revalidates on each request). */
|
|
6
18
|
cache?: boolean;
|
|
7
19
|
};
|
|
8
20
|
//# sourceMappingURL=initialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../src/core/types/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnF,MAAM,MAAM,OAAO,GAAG;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../src/core/types/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IAClB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3E,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yFAAyF;IACzF,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
|
@@ -8,6 +8,20 @@ type PageProps = Omit<Partial<ArticlePropsBase>, "uri" | "content" | "provider"
|
|
|
8
8
|
pathname: string;
|
|
9
9
|
};
|
|
10
10
|
type SidebarProps = Omit<SidebarPropsBase, "tree">;
|
|
11
|
+
/**
|
|
12
|
+
* Initializes Robindoc and returns components for rendering documentation pages.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* export const { Page, Sidebar } = initializeRobindoc({
|
|
17
|
+
* configuration: { sourceRoot: "./docs" },
|
|
18
|
+
* items: "auto"
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://robindoc.com/docs/getting-started/initialization Initialization guide}
|
|
23
|
+
* @see {@link https://robindoc.com/docs/structure/structure Structure configuration}
|
|
24
|
+
*/
|
|
11
25
|
export declare const initializeRobindoc: (structureTemplate: StructureTemplate, options?: Options) => {
|
|
12
26
|
Page: React.FC<PageProps>;
|
|
13
27
|
Sidebar: React.FC<SidebarProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-robindoc.d.ts","sourceRoot":"","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,QAAQ,EAAE,gDAA+C;AACvE,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AACjH,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AAEjH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAO9C,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG;IACtG,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAiBnD,eAAO,MAAM,kBAAkB,GAAI,mBAAmB,iBAAiB,EAAE,UAAS,OAAY;;;
|
|
1
|
+
{"version":3,"file":"initialize-robindoc.d.ts","sourceRoot":"","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,QAAQ,EAAE,gDAA+C;AACvE,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AACjH,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AAEjH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAO9C,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG;IACtG,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAiBnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAAI,mBAAmB,iBAAiB,EAAE,UAAS,OAAY;;;sBAwF3D,CAAC,SAAS,MAAM,wBACnC,MAAM,qBACI,CAAC;4BA+Bc,MAAM;4BA+BN,MAAM;;;;mCA4BC,MAAM;8BA2BX,OAAO;eA5ON,KAAK;cAAQ,QAAQ,EAAE;;CA4PlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type TreeItem } from \"@src/components/elements/sidebar/types\";\nimport { Article as ArticleBase, type ArticleProps as ArticlePropsBase } from \"@src/components/elements/article\";\nimport { Sidebar as SidebarBase, type SidebarProps as SidebarPropsBase } from \"@src/components/elements/sidebar\";\n\nimport { type StructureTemplate, type Options } from \"../types/initialize\";\nimport { type Pages } from \"../types/content\";\nimport { parseStructure } from \"./parse-structure\";\nimport { getConfiguration } from \"./get-configuration\";\nimport { getMetadata as getMetadataBase } from \"./get-metadata\";\nimport { normalizePathname, removeTrailingSlash } from \"./path-tools\";\nimport { loadContent } from \"./load-content\";\n\ntype PageProps = Omit<Partial<ArticlePropsBase>, \"uri\" | \"content\" | \"provider\" | \"pathname\" | \"pages\"> & {\n pathname: string;\n};\n\ntype SidebarProps = Omit<SidebarPropsBase, \"tree\">;\n\ntype StructureParsedData = Promise<{ pages: Pages; tree: TreeItem[] }> | { pages: Pages; tree: TreeItem[] };\n\nconst loadStructure = async (structureTemplate: StructureTemplate) => {\n let structure;\n if (typeof structureTemplate === \"function\") {\n structure = await structureTemplate();\n } else {\n structure = structureTemplate;\n }\n\n const configuration = getConfiguration(structure.configuration || {});\n\n return parseStructure(structure.items || [], configuration);\n};\n\nexport const initializeRobindoc = (structureTemplate: StructureTemplate, options: Options = {}) => {\n let structureParsedPromise: StructureParsedData = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n const matchingRules = options.matcher?.map((rule) => new RegExp(`^${rule.replace(/^\\^|\\$$/g, \"\")}$`));\n\n const Page: React.FC<PageProps> = async ({ pathname, ...props }) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const paths = Object.keys(pages);\n const targetPageIndex = paths.indexOf(pathnameNormalized);\n const prevPagePathname = paths[targetPageIndex - 1];\n const nextPagePathname = targetPageIndex < paths.length - 1 && paths[targetPageIndex + 1];\n const prev = prevPagePathname && { pathname: prevPagePathname, title: pages[prevPagePathname].title };\n const next = nextPagePathname && { pathname: nextPagePathname, title: pages[nextPagePathname].title };\n\n const breadcrumbs = pageInstruction.crumbs.map((crumb) => ({ title: pages[crumb].title, pathname: crumb }));\n const clientPages = Object.entries(pages).reduce<{ clientPath: string; origPath: string }[]>(\n (acc, [clientPath, { origPath }]) => {\n if (origPath) acc.push({ clientPath, origPath });\n return acc;\n },\n [],\n );\n\n return (\n <ArticleBase\n pathname={pathnameNormalized}\n provider={pageInstruction.configuration.provider}\n uri={pageInstruction.uri}\n title={pageInstruction.title}\n breadcrumbs={breadcrumbs}\n prev={prev || undefined}\n next={next || undefined}\n pages={clientPages}\n {...props}\n />\n );\n };\n\n const Sidebar: React.FC<SidebarProps> = async (props) => {\n if (!options.cache) await revalidate(true);\n\n const { tree } = await structureParsedPromise;\n\n return <SidebarBase tree={tree} {...props} />;\n };\n\n const getStaticParams = async <T extends string = \"segments\">(\n prefix: string = \"\",\n segmentsParamKey: T = \"segments\" as T,\n ) => {\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pagesArr = Object.keys(pages);\n const prefixWithoutTrailingSlash = removeTrailingSlash(prefix);\n\n return pagesArr.reduce<Record<T, string[]>[]>((acc, cur) => {\n if (!cur.startsWith(prefixWithoutTrailingSlash)) return acc;\n\n acc.push({\n [segmentsParamKey]: cur.substring(prefixWithoutTrailingSlash.length + 1).split(\"/\"),\n } as Record<T, string[]>);\n\n return acc;\n }, []);\n };\n\n const getMetadata = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const metadata = await getMetadataBase({\n uri: pageInstruction.uri,\n provider: pageInstruction.configuration.provider,\n });\n return metadata;\n };\n\n const getPageData = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const title = pageInstruction.title;\n const { data } = await loadContent(pageInstruction.uri, pageInstruction.configuration.provider);\n\n return { title, raw: data };\n };\n\n const getPageInstruction = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n return pageInstruction;\n };\n\n const revalidate = async (background?: boolean) => {\n if (\"then\" in structureParsedPromise) return structureParsedPromise;\n\n if (background) {\n const newData = await loadStructure(structureTemplate);\n structureParsedPromise = newData;\n } else {\n structureParsedPromise = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n }\n return structureParsedPromise;\n };\n\n return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction, revalidate };\n};\n"],"names":["loadStructure","async","structureTemplate","structure","configuration","getConfiguration","parseStructure","items","initializeRobindoc","options","structureParsedPromise","then","data","matchingRules","matcher","map","rule","RegExp","replace","revalidate","background","newData","Page","pathname","props","pathnameNormalized","normalizePathname","every","test","errorMessage","processError","Error","cache","pages","pageInstruction","paths","Object","keys","targetPageIndex","indexOf","prevPagePathname","nextPagePathname","length","prev","title","next","breadcrumbs","crumbs","crumb","clientPages","entries","reduce","acc","clientPath","origPath","push","React","ArticleBase","provider","uri","undefined","Sidebar","tree","createElement","SidebarBase","getStaticParams","prefix","segmentsParamKey","pagesArr","prefixWithoutTrailingSlash","removeTrailingSlash","cur","startsWith","substring","split","getMetadata","getMetadataBase","getPageData","loadContent","raw","getPageInstruction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type TreeItem } from \"@src/components/elements/sidebar/types\";\nimport { Article as ArticleBase, type ArticleProps as ArticlePropsBase } from \"@src/components/elements/article\";\nimport { Sidebar as SidebarBase, type SidebarProps as SidebarPropsBase } from \"@src/components/elements/sidebar\";\n\nimport { type StructureTemplate, type Options } from \"../types/initialize\";\nimport { type Pages } from \"../types/content\";\nimport { parseStructure } from \"./parse-structure\";\nimport { getConfiguration } from \"./get-configuration\";\nimport { getMetadata as getMetadataBase } from \"./get-metadata\";\nimport { normalizePathname, removeTrailingSlash } from \"./path-tools\";\nimport { loadContent } from \"./load-content\";\n\ntype PageProps = Omit<Partial<ArticlePropsBase>, \"uri\" | \"content\" | \"provider\" | \"pathname\" | \"pages\"> & {\n pathname: string;\n};\n\ntype SidebarProps = Omit<SidebarPropsBase, \"tree\">;\n\ntype StructureParsedData = Promise<{ pages: Pages; tree: TreeItem[] }> | { pages: Pages; tree: TreeItem[] };\n\nconst loadStructure = async (structureTemplate: StructureTemplate) => {\n let structure;\n if (typeof structureTemplate === \"function\") {\n structure = await structureTemplate();\n } else {\n structure = structureTemplate;\n }\n\n const configuration = getConfiguration(structure.configuration || {});\n\n return parseStructure(structure.items || [], configuration);\n};\n\n/**\n * Initializes Robindoc and returns components for rendering documentation pages.\n *\n * @example\n * ```ts\n * export const { Page, Sidebar } = initializeRobindoc({\n * configuration: { sourceRoot: \"./docs\" },\n * items: \"auto\"\n * });\n * ```\n *\n * @see {@link https://robindoc.com/docs/getting-started/initialization Initialization guide}\n * @see {@link https://robindoc.com/docs/structure/structure Structure configuration}\n */\nexport const initializeRobindoc = (structureTemplate: StructureTemplate, options: Options = {}) => {\n let structureParsedPromise: StructureParsedData = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n const matchingRules = options.matcher?.map((rule) => new RegExp(`^${rule.replace(/^\\^|\\$$/g, \"\")}$`));\n\n /**\n * Renders a documentation page for the given pathname.\n *\n * @see {@link https://robindoc.com/docs/customization/elements/page Page customization}\n * @see {@link https://robindoc.com/docs/customization/tags Tags customization}\n */\n const Page: React.FC<PageProps> = async ({ pathname, ...props }) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const paths = Object.keys(pages);\n const targetPageIndex = paths.indexOf(pathnameNormalized);\n const prevPagePathname = paths[targetPageIndex - 1];\n const nextPagePathname = targetPageIndex < paths.length - 1 && paths[targetPageIndex + 1];\n const prev = prevPagePathname && { pathname: prevPagePathname, title: pages[prevPagePathname].title };\n const next = nextPagePathname && { pathname: nextPagePathname, title: pages[nextPagePathname].title };\n\n const breadcrumbs = pageInstruction.crumbs.map((crumb) => ({ title: pages[crumb].title, pathname: crumb }));\n const clientPages = Object.entries(pages).reduce<{ clientPath: string; origPath: string }[]>(\n (acc, [clientPath, { origPath }]) => {\n if (origPath) acc.push({ clientPath, origPath });\n return acc;\n },\n [],\n );\n\n return (\n <ArticleBase\n pathname={pathnameNormalized}\n provider={pageInstruction.configuration.provider}\n uri={pageInstruction.uri}\n title={pageInstruction.title}\n breadcrumbs={breadcrumbs}\n prev={prev || undefined}\n next={next || undefined}\n pages={clientPages}\n {...props}\n />\n );\n };\n\n /**\n * Renders the navigation sidebar based on the documentation structure.\n *\n * @see {@link https://robindoc.com/docs/customization/elements Elements customization}\n */\n const Sidebar: React.FC<SidebarProps> = async (props) => {\n if (!options.cache) await revalidate(true);\n\n const { tree } = await structureParsedPromise;\n\n return <SidebarBase tree={tree} {...props} />;\n };\n\n /**\n * Generates static params for dynamic routes.\n *\n * @example\n * ```ts\n * export async function generateStaticParams() {\n * return await getStaticParams(\"/docs\");\n * }\n * ```\n *\n * @see {@link https://robindoc.com/docs/customization/tools/get-static-params getStaticParams}\n */\n const getStaticParams = async <T extends string = \"segments\">(\n prefix: string = \"\",\n segmentsParamKey: T = \"segments\" as T,\n ) => {\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pagesArr = Object.keys(pages);\n const prefixWithoutTrailingSlash = removeTrailingSlash(prefix);\n\n return pagesArr.reduce<Record<T, string[]>[]>((acc, cur) => {\n if (!cur.startsWith(prefixWithoutTrailingSlash)) return acc;\n\n acc.push({\n [segmentsParamKey]: cur.substring(prefixWithoutTrailingSlash.length + 1).split(\"/\"),\n } as Record<T, string[]>);\n\n return acc;\n }, []);\n };\n\n /**\n * Generates page metadata.\n *\n * @example\n * ```ts\n * export async function generateMetadata({ params }) {\n * return await getMetadata(`/docs/${params.segments.join(\"/\")}`);\n * }\n * ```\n *\n * @see {@link https://robindoc.com/docs/customization/tools/get-metadata getMetadata}\n */\n const getMetadata = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const metadata = await getMetadataBase({\n uri: pageInstruction.uri,\n provider: pageInstruction.configuration.provider,\n });\n return metadata;\n };\n\n /**\n * Retrieves raw page data (title and markdown content).\n *\n * @see {@link https://robindoc.com/docs/customization/tools/get-page-data getPageData}\n */\n const getPageData = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const title = pageInstruction.title;\n const { data } = await loadContent(pageInstruction.uri, pageInstruction.configuration.provider);\n\n return { title, raw: data };\n };\n\n /**\n * Retrieves the page instruction object for a given pathname.\n */\n const getPageInstruction = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n return pageInstruction;\n };\n\n /**\n * Manually revalidates the cached documentation structure.\n *\n * @see {@link https://robindoc.com/docs/customization/tools/revalidate revalidate}\n */\n const revalidate = async (background?: boolean) => {\n if (\"then\" in structureParsedPromise) return structureParsedPromise;\n\n if (background) {\n const newData = await loadStructure(structureTemplate);\n structureParsedPromise = newData;\n } else {\n structureParsedPromise = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n }\n return structureParsedPromise;\n };\n\n return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction, revalidate };\n};\n"],"names":["loadStructure","async","structureTemplate","structure","configuration","getConfiguration","parseStructure","items","initializeRobindoc","options","structureParsedPromise","then","data","matchingRules","matcher","map","rule","RegExp","replace","revalidate","background","newData","Page","pathname","props","pathnameNormalized","normalizePathname","every","test","errorMessage","processError","Error","cache","pages","pageInstruction","paths","Object","keys","targetPageIndex","indexOf","prevPagePathname","nextPagePathname","length","prev","title","next","breadcrumbs","crumbs","crumb","clientPages","entries","reduce","acc","clientPath","origPath","push","React","ArticleBase","provider","uri","undefined","Sidebar","tree","createElement","SidebarBase","getStaticParams","prefix","segmentsParamKey","pagesArr","prefixWithoutTrailingSlash","removeTrailingSlash","cur","startsWith","substring","split","getMetadata","getMetadataBase","getPageData","loadContent","raw","getPageInstruction"],"mappings":"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"}
|