robindoc 0.0.0-experimental-ca4f5ef → 0.0.0-experimental-ed3adfc

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.
@@ -0,0 +1,7 @@
1
+ import { type Structure } from "./structure";
2
+ export type StructureTemplate = Structure | (() => Structure | Promise<Structure>);
3
+ export type Options = {
4
+ processError?: (status: number, statusText: string) => void | null | never;
5
+ matcher?: string[];
6
+ };
7
+ //# sourceMappingURL=initialize.d.ts.map
@@ -0,0 +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;CACtB,CAAC"}
@@ -1,21 +1,21 @@
1
1
  import React from "react";
2
2
  import { type ArticleProps as ArticlePropsBase } from "../../components/elements/article";
3
3
  import { type SidebarProps as SidebarPropsBase } from "../../components/elements/sidebar";
4
- import { type Structure } from "../types/structure";
4
+ import { type StructureTemplate, type Options } from "../types/initialize";
5
5
  type PageProps = Omit<Partial<ArticlePropsBase>, "uri" | "content" | "provider" | "pathname" | "pages"> & {
6
6
  pathname: string;
7
7
  };
8
8
  type SidebarProps = Omit<SidebarPropsBase, "tree">;
9
- export declare const initializeRobindoc: (structureTemplate: Structure | (() => Structure | Promise<Structure>)) => {
9
+ export declare const initializeRobindoc: (structureTemplate: StructureTemplate, options?: Options) => {
10
10
  Page: React.FC<PageProps>;
11
11
  Sidebar: React.FC<SidebarProps>;
12
12
  getStaticParams: <T extends string = "segments">(prefix?: string, segmentsParamKey?: T) => Promise<Record<T, string[]>[]>;
13
- getMetadata: (pathname: string) => Promise<Record<string, string>>;
13
+ getMetadata: (pathname: string) => Promise<Record<string, string> | null>;
14
14
  getPageData: (pathname: string) => Promise<{
15
15
  title: string;
16
16
  raw: string;
17
- }>;
18
- getPageInstruction: (pathname: string) => Promise<import("../types/content").Page>;
17
+ } | null>;
18
+ getPageInstruction: (pathname: string) => Promise<import("../types/content").Page | null>;
19
19
  };
20
20
  export {};
21
21
  //# sourceMappingURL=initialize-robindoc.d.ts.map
@@ -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,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AACjH,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AAEjH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOpD,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;AAUnD,eAAO,MAAM,kBAAkB,GAAI,mBAAmB,SAAS,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;;;sBAmDrE,CAAC,SAAS,MAAM,wBACnC,MAAM,qBACI,CAAC;4BAiBc,MAAM;4BAgBN,MAAM;;;;mCAeC,MAAM;CAarD,CAAC"}
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,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;AAO3E,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;AAenD,eAAO,MAAM,kBAAkB,GAAI,mBAAmB,iBAAiB,EAAE,UAAS,OAAY;;;sBA0D3D,CAAC,SAAS,MAAM,wBACnC,MAAM,qBACI,CAAC;4BAiBc,MAAM;4BAwBN,MAAM;;;;mCAuBC,MAAM;CAqBrD,CAAC"}
@@ -1,2 +1,2 @@
1
- import t from"react";import{Article as e}from"../../components/elements/article/index.js";import{Sidebar as r}from"../../components/elements/sidebar/index.js";import{parseStructure as a}from"./parse-structure.js";import{getConfiguration as n}from"./get-configuration.js";import{getMetadata as i}from"./get-metadata.js";import{normalizePathname as o,removeTrailingSlash as s}from"./path-tools.js";import{loadContent as c}from"./load-content.js";const u=u=>{const p=(async t=>"function"==typeof t?t():t)(u).then(t=>a(t.items||[],n(t.configuration||{})));return{Page:async({pathname:r,...a})=>{const{pages:n}=await p,i=o(r),s=n[i];if(!s)throw new Error(`Can not find data for "${i}". Please check structure`);const c=Object.keys(n),u=c.indexOf(i),m=c[u-1],f=u<c.length-1&&c[u+1],d=m&&{pathname:m,title:n[m].title},g=f&&{pathname:f,title:n[f].title},l=s.crumbs.map(t=>({title:n[t].title,pathname:t})),h=Object.entries(n).reduce((t,[e,{origPath:r}])=>(r&&t.push({clientPath:e,origPath:r}),t),[]);return t.createElement(e,{pathname:i,provider:s.configuration.provider,uri:s.uri,title:s.title,breadcrumbs:l,prev:d||void 0,next:g||void 0,pages:h,...a})},Sidebar:async e=>{const{tree:a}=await p;return t.createElement(r,{tree:a,...e})},getStaticParams:async(t="",e="segments")=>{const{pages:r}=await p,a=Object.keys(r),n=s(t);return a.reduce((t,r)=>r.startsWith(n)?(t.push({[e]:r.substring(n.length+1).split("/")}),t):t,[])},getMetadata:async t=>{const{pages:e}=await p,r=o(t),a=e[r];if(!a)throw new Error(`Can not find data for "${r}". Please check structure`);return await i({uri:a.uri,provider:a.configuration.provider})},getPageData:async t=>{const{pages:e}=await p,r=o(t),a=e[r];if(!a)throw new Error(`Can not find data for "${r}". Please check structure`);const n=a.title,{data:i}=await c(a.uri,a.configuration.provider);return{title:n,raw:i}},getPageInstruction:async t=>{const{pages:e}=await p,r=o(t),a=e[r];if(!a)throw new Error(`Can not find data for "${r}". Please check structure`);return a}}};export{u as initializeRobindoc};
1
+ import r from"react";import{Article as t}from"../../components/elements/article/index.js";import{Sidebar as e}from"../../components/elements/sidebar/index.js";import{parseStructure as o}from"./parse-structure.js";import{getConfiguration as s}from"./get-configuration.js";import{getMetadata as n}from"./get-metadata.js";import{normalizePathname as a,removeTrailingSlash as c}from"./path-tools.js";import{loadContent as i}from"./load-content.js";const p=(p,u={})=>{const l=(async r=>{let t;t="function"==typeof r?await r():r;const e=s(t.configuration||{});return o(t.items||[],e)})(p),m=u.matcher?.map(r=>new RegExp(`^${r.replace(/^\^|\$$/g,"")}$`));return{Page:async({pathname:e,...o})=>{const s=a(e);if(m&&!m.every(r=>r.test(e))){const r=`Pathname "${s}" doesn't pass matcher rules check`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const{pages:n}=await l,c=n[s];if(!c){const r=`Can not find data for "${s}". Please check structure`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const i=Object.keys(n),p=i.indexOf(s),f=i[p-1],h=p<i.length-1&&i[p+1],d=f&&{pathname:f,title:n[f].title},g=h&&{pathname:h,title:n[h].title},w=c.crumbs.map(r=>({title:n[r].title,pathname:r})),E=Object.entries(n).reduce((r,[t,{origPath:e}])=>(e&&r.push({clientPath:t,origPath:e}),r),[]);return r.createElement(t,{pathname:s,provider:c.configuration.provider,uri:c.uri,title:c.title,breadcrumbs:w,prev:d||void 0,next:g||void 0,pages:E,...o})},Sidebar:async t=>{const{tree:o}=await l;return r.createElement(e,{tree:o,...t})},getStaticParams:async(r="",t="segments")=>{const{pages:e}=await l,o=Object.keys(e),s=c(r);return o.reduce((r,e)=>e.startsWith(s)?(r.push({[t]:e.substring(s.length+1).split("/")}),r):r,[])},getMetadata:async r=>{const t=a(r);if(m&&!m.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const{pages:e}=await l,o=e[t];if(!o){const r=`Can not find data for "${t}". Please check structure`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}return await n({uri:o.uri,provider:o.configuration.provider})},getPageData:async r=>{const t=a(r);if(m&&!m.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const{pages:e}=await l,o=e[t];if(!o){const r=`Can not find data for "${t}". Please check structure`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const s=o.title,{data:n}=await i(o.uri,o.configuration.provider);return{title:s,raw:n}},getPageInstruction:async r=>{const t=a(r);if(m&&!m.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}const{pages:e}=await l,o=e[t];if(!o){const r=`Can not find data for "${t}". Please check structure`;if(u.processError)return u.processError(404,r)||null;throw new Error(r)}return o}}};export{p as initializeRobindoc};
2
2
  //# sourceMappingURL=initialize-robindoc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\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 Structure } from \"../types/structure\";\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\nconst loadStructure = async (structureTemplate: Structure | (() => Structure | Promise<Structure>)) => {\n if (typeof structureTemplate === \"function\") {\n return structureTemplate();\n } else {\n return structureTemplate;\n }\n};\n\nexport const initializeRobindoc = (structureTemplate: Structure | (() => Structure | Promise<Structure>)) => {\n const structureParsedPromise = loadStructure(structureTemplate).then((structure) =>\n parseStructure(structure.items || [], getConfiguration(structure.configuration || {})),\n );\n\n const Page: React.FC<PageProps> = async ({ pathname, ...props }) => {\n const { pages } = await structureParsedPromise;\n const pathnameNormalized = normalizePathname(pathname);\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n throw new Error(`Can not find data for \"${pathnameNormalized}\". Please check structure`);\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 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 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 { pages } = await structureParsedPromise;\n const pathnameNormalized = normalizePathname(pathname);\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n throw new Error(`Can not find data for \"${pathnameNormalized}\". Please check structure`);\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 { pages } = await structureParsedPromise;\n const pathnameNormalized = normalizePathname(pathname);\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n throw new Error(`Can not find data for \"${pathnameNormalized}\". Please check structure`);\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 { pages } = await structureParsedPromise;\n const pathnameNormalized = normalizePathname(pathname);\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n throw new Error(`Can not find data for \"${pathnameNormalized}\". Please check structure`);\n }\n\n return pageInstruction;\n };\n\n return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction };\n};\n"],"names":["initializeRobindoc","structureTemplate","structureParsedPromise","async","loadStructure","then","structure","parseStructure","items","getConfiguration","configuration","Page","pathname","props","pages","pathnameNormalized","normalizePathname","pageInstruction","Error","paths","Object","keys","targetPageIndex","indexOf","prevPagePathname","nextPagePathname","length","prev","title","next","breadcrumbs","crumbs","map","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","data","loadContent","raw","getPageInstruction"],"mappings":"4bAkBA,MAQaA,EAAsBC,IAC/B,MAAMC,EATYC,OAAOF,GACQ,mBAAtBA,EACAA,IAEAA,EAKoBG,CAAcH,GAAmBI,KAAMC,GAClEC,EAAeD,EAAUE,OAAS,GAAIC,EAAiBH,EAAUI,eAAiB,CAAA,KA+GtF,MAAO,CAAEC,KA5GyBR,OAASS,cAAaC,MACpD,MAAMC,MAAEA,SAAgBZ,EAClBa,EAAqBC,EAAkBJ,GACvCK,EAAkBH,EAAMC,GAE9B,IAAKE,EACD,MAAM,IAAIC,MAAM,0BAA0BH,8BAG9C,MAAMI,EAAQC,OAAOC,KAAKP,GACpBQ,EAAkBH,EAAMI,QAAQR,GAChCS,EAAmBL,EAAMG,EAAkB,GAC3CG,EAAmBH,EAAkBH,EAAMO,OAAS,GAAKP,EAAMG,EAAkB,GACjFK,EAAOH,GAAoB,CAAEZ,SAAUY,EAAkBI,MAAOd,EAAMU,GAAkBI,OACxFC,EAAOJ,GAAoB,CAAEb,SAAUa,EAAkBG,MAAOd,EAAMW,GAAkBG,OAExFE,EAAcb,EAAgBc,OAAOC,IAAKC,IAAK,CAAQL,MAAOd,EAAMmB,GAAOL,MAAOhB,SAAUqB,KAC5FC,EAAcd,OAAOe,QAAQrB,GAAOsB,OACtC,CAACC,GAAMC,GAAcC,gBACbA,GAAUF,EAAIG,KAAK,CAAEF,aAAYC,aAC9BF,GAEX,IAGJ,OACII,gBAACC,EAAW,CACR9B,SAAUG,EACV4B,SAAU1B,EAAgBP,cAAciC,SACxCC,IAAK3B,EAAgB2B,IACrBhB,MAAOX,EAAgBW,MACvBE,YAAaA,EACbH,KAAMA,QAAQkB,EACdhB,KAAMA,QAAQgB,EACd/B,MAAOoB,KACHrB,KAyEHiC,QApE2B3C,MAAOU,IAC3C,MAAMkC,KAAEA,SAAe7C,EAEvB,OAAOuC,EAAAO,cAACC,EAAW,CAACF,KAAMA,KAAUlC,KAiEhBqC,gBA9DA/C,MACpBgD,EAAiB,GACjBC,EAAsB,cAEtB,MAAMtC,MAAEA,SAAgBZ,EAClBmD,EAAWjC,OAAOC,KAAKP,GACvBwC,EAA6BC,EAAoBJ,GAEvD,OAAOE,EAASjB,OAA8B,CAACC,EAAKmB,IAC3CA,EAAIC,WAAWH,IAEpBjB,EAAIG,KAAK,CACLY,CAACA,GAAmBI,EAAIE,UAAUJ,EAA2B5B,OAAS,GAAGiC,MAAM,OAG5EtB,GANiDA,EAOzD,KA8CgCuB,YA3CnBzD,MAAOS,IACvB,MAAME,MAAEA,SAAgBZ,EAClBa,EAAqBC,EAAkBJ,GACvCK,EAAkBH,EAAMC,GAE9B,IAAKE,EACD,MAAM,IAAIC,MAAM,0BAA0BH,8BAO9C,aAJuB8C,EAAgB,CACnCjB,IAAK3B,EAAgB2B,IACrBD,SAAU1B,EAAgBP,cAAciC,YAgCMmB,YA3BlC3D,MAAOS,IACvB,MAAME,MAAEA,SAAgBZ,EAClBa,EAAqBC,EAAkBJ,GACvCK,EAAkBH,EAAMC,GAE9B,IAAKE,EACD,MAAM,IAAIC,MAAM,0BAA0BH,8BAG9C,MAAMa,EAAQX,EAAgBW,OACxBmC,KAAEA,SAAeC,EAAY/C,EAAgB2B,IAAK3B,EAAgBP,cAAciC,UAEtF,MAAO,CAAEf,QAAOqC,IAAKF,IAe0CG,mBAZxC/D,MAAOS,IAC9B,MAAME,MAAEA,SAAgBZ,EAClBa,EAAqBC,EAAkBJ,GACvCK,EAAkBH,EAAMC,GAE9B,IAAKE,EACD,MAAM,IAAIC,MAAM,0BAA0BH,8BAG9C,OAAOE"}
1
+ {"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\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 { 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\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 const structureParsedPromise = loadStructure(structureTemplate);\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 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 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 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 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 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 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 return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction };\n};\n"],"names":["initializeRobindoc","structureTemplate","options","structureParsedPromise","async","structure","configuration","getConfiguration","parseStructure","items","loadStructure","matchingRules","matcher","map","rule","RegExp","replace","Page","pathname","props","pathnameNormalized","normalizePathname","every","test","errorMessage","processError","Error","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","data","loadContent","raw","getPageInstruction"],"mappings":"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"}
package/lib/styles.css CHANGED
@@ -1,93 +1,4 @@
1
- .r-header {
2
- position: sticky;
3
- background-color: var(--r-main-50);
4
- top: 0;
5
- border-bottom: 1px solid var(--r-main-300);
6
- height: 60px;
7
- z-index: 1000;
8
- box-sizing: border-box;
9
- }
10
-
11
- .r-header-body {
12
- height: 100%;
13
- display: flex;
14
- justify-content: space-between;
15
- align-items: center;
16
- gap: 24px;
17
- box-sizing: border-box;
18
- }
19
-
20
- .r-header-logo {
21
- display: block;
22
- margin-right: 24px;
23
- color: var(--r-main-700);
24
- transition: color 0.2s;
25
- box-sizing: border-box;
26
- }
27
- .r-header-logo:hover, .r-header-logo:focus {
28
- color: var(--r-main-950);
29
- }
30
-
31
- .r-header-nav {
32
- display: flex;
33
- flex-direction: column;
34
- gap: 12px 16px;
35
- }
36
- @media screen and (width >= 1024px) {
37
- .r-header-nav {
38
- flex-direction: row;
39
- }
40
- }
41
-
42
- .r-header-link {
43
- color: var(--r-main-600);
44
- text-decoration: none;
45
- padding: 4px 0;
46
- transition: color 0.2s;
47
- box-sizing: border-box;
48
- }
49
- .r-header-link:hover, .r-header-link:focus-visible {
50
- color: var(--r-main-950);
51
- }
52
-
53
- .r-header-link._target {
54
- color: var(--r-primary-800);
55
- }
56
- .r-header-link._target:hover, .r-header-link._target:focus-visible {
57
- color: var(--r-primary-700);
58
- }
59
-
60
- .r-header-actions {
61
- display: flex;
62
- flex-direction: column-reverse;
63
- gap: 16px;
64
- align-items: stretch;
65
- }
66
- @media screen and (width >= 1024px) {
67
- .r-header-actions {
68
- flex-direction: row;
69
- align-items: center;
70
- gap: 28px;
71
- }
72
- }
73
-
74
- .r-header-sections {
75
- display: flex;
76
- align-items: center;
77
- gap: 12px;
78
- }
79
- @media screen and (width < 768px) {
80
- .r-header-sections .r-dropdown {
81
- flex: 1;
82
- }
83
- }
84
- @media screen and (width < 768px) {
85
- .r-header-sections .r-dropdown-drop {
86
- max-width: none;
87
- width: 100%;
88
- left: 0;
89
- }
90
- }.r-footer {
1
+ .r-footer {
91
2
  border-top: 1px solid var(--r-main-300);
92
3
  padding-top: 16px;
93
4
  padding-bottom: 16px;
@@ -122,42 +33,6 @@
122
33
  }
123
34
  .r-powered-link:hover {
124
35
  color: var(--r-primary-900);
125
- }.r-docs-container {
126
- min-height: calc(100dvh - var(--r-header-height));
127
- overflow-wrap: break-word;
128
- box-sizing: border-box;
129
- }
130
- @media screen and (width >= 768px) {
131
- .r-docs-container {
132
- display: grid;
133
- justify-content: center;
134
- column-gap: 32px;
135
- grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
136
- grid-template-columns: 1fr calc(100% - 248px);
137
- grid-template-rows: auto auto 1fr auto;
138
- }
139
- }
140
- @media screen and (width >= 1180px) {
141
- .r-docs-container {
142
- column-gap: 40px;
143
- grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
144
- grid-template-columns: 1fr 640px 1fr;
145
- grid-template-rows: auto 1fr auto;
146
- }
147
- }.r-blog-container {
148
- min-height: calc(100dvh - var(--r-header-height));
149
- overflow-wrap: break-word;
150
- box-sizing: border-box;
151
- }
152
- @media screen and (width >= 1180px) {
153
- .r-blog-container {
154
- display: grid;
155
- justify-content: space-between;
156
- column-gap: 40px;
157
- grid-template-areas: "breadcrumbs contents" "content contents" "pagination contents";
158
- grid-template-columns: 760px 220px;
159
- grid-template-rows: auto 1fr auto;
160
- }
161
36
  }.r-root {
162
37
  --r-header-height: 60px;
163
38
  position: relative;
@@ -390,10 +265,135 @@
390
265
  --r-cl-60: #86181d;
391
266
  --r-cl-61: #144620;
392
267
  --r-cl-62: #c24e00;
268
+ }.r-docs-container {
269
+ min-height: calc(100dvh - var(--r-header-height));
270
+ overflow-wrap: break-word;
271
+ box-sizing: border-box;
272
+ }
273
+ @media screen and (width >= 768px) {
274
+ .r-docs-container {
275
+ display: grid;
276
+ justify-content: center;
277
+ column-gap: 32px;
278
+ grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
279
+ grid-template-columns: 1fr calc(100% - 248px);
280
+ grid-template-rows: auto auto 1fr auto;
281
+ }
282
+ }
283
+ @media screen and (width >= 1180px) {
284
+ .r-docs-container {
285
+ column-gap: 40px;
286
+ grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
287
+ grid-template-columns: 1fr 640px 1fr;
288
+ grid-template-rows: auto 1fr auto;
289
+ }
393
290
  }.r-page-container {
394
291
  min-height: calc(100dvh - var(--r-header-height));
395
292
  overflow-wrap: break-word;
396
293
  box-sizing: border-box;
294
+ }.r-blog-container {
295
+ min-height: calc(100dvh - var(--r-header-height));
296
+ overflow-wrap: break-word;
297
+ box-sizing: border-box;
298
+ }
299
+ @media screen and (width >= 1180px) {
300
+ .r-blog-container {
301
+ display: grid;
302
+ justify-content: space-between;
303
+ column-gap: 40px;
304
+ grid-template-areas: "breadcrumbs contents" "content contents" "pagination contents";
305
+ grid-template-columns: 760px 220px;
306
+ grid-template-rows: auto 1fr auto;
307
+ }
308
+ }.r-header {
309
+ position: sticky;
310
+ background-color: var(--r-main-50);
311
+ top: 0;
312
+ border-bottom: 1px solid var(--r-main-300);
313
+ height: 60px;
314
+ z-index: 1000;
315
+ box-sizing: border-box;
316
+ }
317
+
318
+ .r-header-body {
319
+ height: 100%;
320
+ display: flex;
321
+ justify-content: space-between;
322
+ align-items: center;
323
+ gap: 24px;
324
+ box-sizing: border-box;
325
+ }
326
+
327
+ .r-header-logo {
328
+ display: block;
329
+ margin-right: 24px;
330
+ color: var(--r-main-700);
331
+ transition: color 0.2s;
332
+ box-sizing: border-box;
333
+ }
334
+ .r-header-logo:hover, .r-header-logo:focus {
335
+ color: var(--r-main-950);
336
+ }
337
+
338
+ .r-header-nav {
339
+ display: flex;
340
+ flex-direction: column;
341
+ gap: 12px 16px;
342
+ }
343
+ @media screen and (width >= 1024px) {
344
+ .r-header-nav {
345
+ flex-direction: row;
346
+ }
347
+ }
348
+
349
+ .r-header-link {
350
+ color: var(--r-main-600);
351
+ text-decoration: none;
352
+ padding: 4px 0;
353
+ transition: color 0.2s;
354
+ box-sizing: border-box;
355
+ }
356
+ .r-header-link:hover, .r-header-link:focus-visible {
357
+ color: var(--r-main-950);
358
+ }
359
+
360
+ .r-header-link._target {
361
+ color: var(--r-primary-800);
362
+ }
363
+ .r-header-link._target:hover, .r-header-link._target:focus-visible {
364
+ color: var(--r-primary-700);
365
+ }
366
+
367
+ .r-header-actions {
368
+ display: flex;
369
+ flex-direction: column-reverse;
370
+ gap: 16px;
371
+ align-items: stretch;
372
+ }
373
+ @media screen and (width >= 1024px) {
374
+ .r-header-actions {
375
+ flex-direction: row;
376
+ align-items: center;
377
+ gap: 28px;
378
+ }
379
+ }
380
+
381
+ .r-header-sections {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 12px;
385
+ }
386
+ @media screen and (width < 768px) {
387
+ .r-header-sections .r-dropdown {
388
+ flex: 1;
389
+ }
390
+ }
391
+ @media screen and (width < 768px) {
392
+ .r-header-sections .r-dropdown-drop {
393
+ max-width: none;
394
+ width: 100%;
395
+ left: 0;
396
+ }
397
397
  }.keylink-to-content {
398
398
  position: absolute !important;
399
399
  top: 8px;
@@ -725,6 +725,84 @@
725
725
 
726
726
  .r-sidebar-drop[open] > .r-sidebar-drop-btn > .r-sidebar-drop-icon {
727
727
  transform: rotate(90deg);
728
+ }.r-container {
729
+ max-width: 1180px;
730
+ padding-right: 12px;
731
+ padding-left: 12px;
732
+ margin-right: auto;
733
+ margin-left: auto;
734
+ box-sizing: border-box;
735
+ }.r-theme-switcher {
736
+ position: relative;
737
+ display: flex;
738
+ gap: 4px;
739
+ width: 108px;
740
+ height: 36px;
741
+ padding: 2px;
742
+ background-color: var(--r-main-950);
743
+ border-radius: 14px;
744
+ box-sizing: border-box;
745
+ }
746
+ .r-theme-switcher::before {
747
+ content: "";
748
+ position: absolute;
749
+ display: block;
750
+ height: 32px;
751
+ width: 32px;
752
+ top: 2px;
753
+ left: 2px;
754
+ background-color: var(--r-main-50);
755
+ border-radius: 12px;
756
+ transition: left 0.2s;
757
+ box-sizing: border-box;
758
+ }
759
+
760
+ .r-theme-switcher-btn {
761
+ padding: 8px;
762
+ background: none;
763
+ border: 0;
764
+ border-radius: 12px;
765
+ cursor: pointer;
766
+ color: var(--r-main-50);
767
+ fill: var(--r-main-950);
768
+ z-index: 1;
769
+ transition: color 0.2s 0.1s, fill 0.2s;
770
+ }
771
+ .r-theme-switcher-btn:hover {
772
+ color: var(--r-main-50);
773
+ fill: var(--r-main-50);
774
+ }
775
+
776
+ .r-theme-dark:not(.r-theme-system) .r-theme-switcher::before {
777
+ left: 2px;
778
+ }
779
+
780
+ .r-theme-dark:not(.r-theme-system) .r-theme-switcher-btn__dark {
781
+ color: var(--r-main-950);
782
+ pointer-events: none;
783
+ }
784
+
785
+ .r-theme-switcher::before,
786
+ .r-theme-system .r-theme-switcher::before {
787
+ left: 38px;
788
+ }
789
+
790
+ .r-theme-system .r-theme-switcher-btn__system {
791
+ color: var(--r-main-950);
792
+ pointer-events: none;
793
+ }
794
+
795
+ .r-theme-light:not(.r-theme-system) .r-theme-switcher::before {
796
+ left: 74px;
797
+ }
798
+
799
+ .r-theme-light:not(.r-theme-system) .r-theme-switcher-btn__light {
800
+ color: var(--r-main-950);
801
+ pointer-events: none;
802
+ }
803
+
804
+ .r-theme-switcher-svg {
805
+ display: block;
728
806
  }.r-header-menu {
729
807
  display: flex;
730
808
  justify-content: flex-end;
@@ -1026,84 +1104,6 @@
1026
1104
  }
1027
1105
  .r-header-social-git:hover, .r-header-social-git:focus {
1028
1106
  color: var(--r-main-950);
1029
- }.r-container {
1030
- max-width: 1180px;
1031
- padding-right: 12px;
1032
- padding-left: 12px;
1033
- margin-right: auto;
1034
- margin-left: auto;
1035
- box-sizing: border-box;
1036
- }.r-theme-switcher {
1037
- position: relative;
1038
- display: flex;
1039
- gap: 4px;
1040
- width: 108px;
1041
- height: 36px;
1042
- padding: 2px;
1043
- background-color: var(--r-main-950);
1044
- border-radius: 14px;
1045
- box-sizing: border-box;
1046
- }
1047
- .r-theme-switcher::before {
1048
- content: "";
1049
- position: absolute;
1050
- display: block;
1051
- height: 32px;
1052
- width: 32px;
1053
- top: 2px;
1054
- left: 2px;
1055
- background-color: var(--r-main-50);
1056
- border-radius: 12px;
1057
- transition: left 0.2s;
1058
- box-sizing: border-box;
1059
- }
1060
-
1061
- .r-theme-switcher-btn {
1062
- padding: 8px;
1063
- background: none;
1064
- border: 0;
1065
- border-radius: 12px;
1066
- cursor: pointer;
1067
- color: var(--r-main-50);
1068
- fill: var(--r-main-950);
1069
- z-index: 1;
1070
- transition: color 0.2s 0.1s, fill 0.2s;
1071
- }
1072
- .r-theme-switcher-btn:hover {
1073
- color: var(--r-main-50);
1074
- fill: var(--r-main-50);
1075
- }
1076
-
1077
- .r-theme-dark:not(.r-theme-system) .r-theme-switcher::before {
1078
- left: 2px;
1079
- }
1080
-
1081
- .r-theme-dark:not(.r-theme-system) .r-theme-switcher-btn__dark {
1082
- color: var(--r-main-950);
1083
- pointer-events: none;
1084
- }
1085
-
1086
- .r-theme-switcher::before,
1087
- .r-theme-system .r-theme-switcher::before {
1088
- left: 38px;
1089
- }
1090
-
1091
- .r-theme-system .r-theme-switcher-btn__system {
1092
- color: var(--r-main-950);
1093
- pointer-events: none;
1094
- }
1095
-
1096
- .r-theme-light:not(.r-theme-system) .r-theme-switcher::before {
1097
- left: 74px;
1098
- }
1099
-
1100
- .r-theme-light:not(.r-theme-system) .r-theme-switcher-btn__light {
1101
- color: var(--r-main-950);
1102
- pointer-events: none;
1103
- }
1104
-
1105
- .r-theme-switcher-svg {
1106
- display: block;
1107
1107
  }.r-keylink {
1108
1108
  display: block;
1109
1109
  position: relative;
@@ -1640,19 +1640,6 @@
1640
1640
  }
1641
1641
  .r-blockquote-caution .r-blockquote-title {
1642
1642
  color: var(--r-caution);
1643
- }.r-code-block {
1644
- font-family: var(--monospace-font, monospace, monospace);
1645
- font-size: 16px;
1646
- line-height: 1.33;
1647
- border-radius: 6px;
1648
- padding: 16px 20px;
1649
- margin: 0;
1650
- color: var(--r-primary-800);
1651
- background-color: var(--r-main-50);
1652
- overflow-x: auto;
1653
- scrollbar-width: thin;
1654
- scrollbar-color: var(--r-main-200) transparent;
1655
- box-sizing: border-box;
1656
1643
  }.r-code-span {
1657
1644
  font-family: var(--monospace-font, monospace, monospace);
1658
1645
  background-color: var(--r-main-100);
@@ -1667,6 +1654,22 @@
1667
1654
 
1668
1655
  .r-code-span + .r-content-link-external {
1669
1656
  margin-left: -12px;
1657
+ }.r-img {
1658
+ max-width: 100%;
1659
+ box-sizing: border-box;
1660
+ }.r-code-block {
1661
+ font-family: var(--monospace-font, monospace, monospace);
1662
+ font-size: 16px;
1663
+ line-height: 1.33;
1664
+ border-radius: 6px;
1665
+ padding: 16px 20px;
1666
+ margin: 0;
1667
+ color: var(--r-primary-800);
1668
+ background-color: var(--r-main-50);
1669
+ overflow-x: auto;
1670
+ scrollbar-width: thin;
1671
+ scrollbar-color: var(--r-main-200) transparent;
1672
+ box-sizing: border-box;
1670
1673
  }.r-h1 {
1671
1674
  font-size: 32px;
1672
1675
  line-height: 1.4;
@@ -1707,9 +1710,6 @@
1707
1710
  line-height: 1.4;
1708
1711
  margin-block-start: 1.8em;
1709
1712
  margin-block-end: 1.8em;
1710
- }.r-img {
1711
- max-width: 100%;
1712
- box-sizing: border-box;
1713
1713
  }.r-p {
1714
1714
  line-height: 1.8;
1715
1715
  margin-block-start: 1em;
@@ -1806,34 +1806,6 @@
1806
1806
  min-width: 24px;
1807
1807
  text-align: center;
1808
1808
  box-sizing: border-box;
1809
- }.r-copy-text {
1810
- position: relative;
1811
- cursor: pointer;
1812
- background: none;
1813
- border: 0;
1814
- padding: 0;
1815
- font: inherit;
1816
- padding: 6px 0;
1817
- }
1818
- .r-copy-text:hover {
1819
- color: var(--r-main-950);
1820
- }
1821
- .r-copy-text::before {
1822
- content: "";
1823
- position: absolute;
1824
- bottom: 0;
1825
- left: 0;
1826
- width: 100%;
1827
- height: 1px;
1828
- background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
1829
- transition: background 0.2s;
1830
- box-sizing: border-box;
1831
- opacity: 0.6;
1832
- }
1833
-
1834
- .r-copy-text:active,
1835
- .r-copy-text._active {
1836
- color: var(--r-success);
1837
1809
  }.r-copy-button {
1838
1810
  position: relative;
1839
1811
  padding: 6px;
@@ -1926,6 +1898,34 @@
1926
1898
  background-color: currentColor;
1927
1899
  border-radius: 0 0 0 4px;
1928
1900
  box-sizing: border-box;
1901
+ }.r-copy-text {
1902
+ position: relative;
1903
+ cursor: pointer;
1904
+ background: none;
1905
+ border: 0;
1906
+ padding: 0;
1907
+ font: inherit;
1908
+ padding: 6px 0;
1909
+ }
1910
+ .r-copy-text:hover {
1911
+ color: var(--r-main-950);
1912
+ }
1913
+ .r-copy-text::before {
1914
+ content: "";
1915
+ position: absolute;
1916
+ bottom: 0;
1917
+ left: 0;
1918
+ width: 100%;
1919
+ height: 1px;
1920
+ background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
1921
+ transition: background 0.2s;
1922
+ box-sizing: border-box;
1923
+ opacity: 0.6;
1924
+ }
1925
+
1926
+ .r-copy-text:active,
1927
+ .r-copy-text._active {
1928
+ color: var(--r-success);
1929
1929
  }.r-li {
1930
1930
  line-height: 1.8;
1931
1931
  margin-block-start: 6px;
@@ -1945,15 +1945,15 @@
1945
1945
  padding-inline-start: 2rem;
1946
1946
  margin-block-start: 1em;
1947
1947
  margin-block-end: 1em;
1948
+ }.r-td {
1949
+ padding: 6px 12px;
1950
+ border-bottom: 1px solid var(--r-main-400);
1951
+ border-collapse: collapse;
1948
1952
  }.r-table {
1949
1953
  min-width: 100%;
1950
1954
  text-align: left;
1951
1955
  border-collapse: collapse;
1952
1956
  box-sizing: border-box;
1953
- }.r-td {
1954
- padding: 6px 12px;
1955
- border-bottom: 1px solid var(--r-main-400);
1956
- border-collapse: collapse;
1957
1957
  }.r-th {
1958
1958
  padding: 6px 12px;
1959
1959
  border-top: 1px solid var(--r-main-500);
@@ -1961,6 +1961,10 @@
1961
1961
  border-collapse: collapse;
1962
1962
  }.r-thead {
1963
1963
  background-color: var(--r-main-100);
1964
+ }.r-task-ul {
1965
+ list-style: none;
1966
+ }.r-task-ol {
1967
+ list-style: none;
1964
1968
  }.r-task-li.r-task-li {
1965
1969
  margin-block-start: 2px;
1966
1970
  margin-block-end: 2px;
@@ -1990,10 +1994,6 @@
1990
1994
 
1991
1995
  .r-task-label-text {
1992
1996
  vertical-align: middle;
1993
- }.r-task-ol {
1994
- list-style: none;
1995
- }.r-task-ul {
1996
- list-style: none;
1997
1997
  }.r-backdrop {
1998
1998
  position: fixed;
1999
1999
  top: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robindoc",
3
- "version": "0.0.0-experimental-ca4f5ef",
3
+ "version": "0.0.0-experimental-ed3adfc",
4
4
  "description": "Robindoc is a framework for automatically creating documentation websites based on markdown files, built on React.js Server Components",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {