@kushagradhawan/kookie-blocks 0.1.17 → 0.1.19
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/dist/cjs/components/docs/docs-page-header.d.ts +12 -0
- package/dist/cjs/components/docs/docs-page-header.d.ts.map +1 -0
- package/dist/cjs/components/docs/docs-page-header.js +10 -0
- package/dist/cjs/components/docs/docs-page-header.js.map +7 -0
- package/dist/cjs/components/docs/docs-page.d.ts +28 -0
- package/dist/cjs/components/docs/docs-page.d.ts.map +1 -0
- package/dist/cjs/components/docs/docs-page.js +2 -0
- package/dist/cjs/components/docs/docs-page.js.map +7 -0
- package/dist/cjs/components/docs/docs-shell.d.ts +32 -0
- package/dist/cjs/components/docs/docs-shell.d.ts.map +1 -0
- package/dist/cjs/components/docs/docs-shell.js +2 -0
- package/dist/cjs/components/docs/docs-shell.js.map +7 -0
- package/dist/cjs/components/docs/docs-sidebar.d.ts +33 -0
- package/dist/cjs/components/docs/docs-sidebar.d.ts.map +1 -0
- package/dist/cjs/components/docs/docs-sidebar.js +2 -0
- package/dist/cjs/components/docs/docs-sidebar.js.map +7 -0
- package/dist/cjs/components/docs/index.d.ts +8 -0
- package/dist/cjs/components/docs/index.d.ts.map +1 -0
- package/dist/cjs/components/docs/index.js +2 -0
- package/dist/cjs/components/docs/index.js.map +7 -0
- package/dist/cjs/components/docs/preview-block.d.ts +22 -0
- package/dist/cjs/components/docs/preview-block.d.ts.map +1 -0
- package/dist/cjs/components/docs/preview-block.js +2 -0
- package/dist/cjs/components/docs/preview-block.js.map +7 -0
- package/dist/cjs/components/docs/table-of-contents.d.ts +12 -0
- package/dist/cjs/components/docs/table-of-contents.d.ts.map +1 -0
- package/dist/cjs/components/docs/table-of-contents.js +2 -0
- package/dist/cjs/components/docs/table-of-contents.js.map +7 -0
- package/dist/cjs/components/docs/types.d.ts +38 -0
- package/dist/cjs/components/docs/types.d.ts.map +1 -0
- package/dist/cjs/components/docs/types.js +2 -0
- package/dist/cjs/components/docs/types.js.map +7 -0
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +2 -2
- package/dist/esm/components/docs/docs-page-header.d.ts +12 -0
- package/dist/esm/components/docs/docs-page-header.d.ts.map +1 -0
- package/dist/esm/components/docs/docs-page-header.js +10 -0
- package/dist/esm/components/docs/docs-page-header.js.map +7 -0
- package/dist/esm/components/docs/docs-page.d.ts +28 -0
- package/dist/esm/components/docs/docs-page.d.ts.map +1 -0
- package/dist/esm/components/docs/docs-page.js +2 -0
- package/dist/esm/components/docs/docs-page.js.map +7 -0
- package/dist/esm/components/docs/docs-shell.d.ts +32 -0
- package/dist/esm/components/docs/docs-shell.d.ts.map +1 -0
- package/dist/esm/components/docs/docs-shell.js +2 -0
- package/dist/esm/components/docs/docs-shell.js.map +7 -0
- package/dist/esm/components/docs/docs-sidebar.d.ts +33 -0
- package/dist/esm/components/docs/docs-sidebar.d.ts.map +1 -0
- package/dist/esm/components/docs/docs-sidebar.js +2 -0
- package/dist/esm/components/docs/docs-sidebar.js.map +7 -0
- package/dist/esm/components/docs/index.d.ts +8 -0
- package/dist/esm/components/docs/index.d.ts.map +1 -0
- package/dist/esm/components/docs/index.js +2 -0
- package/dist/esm/components/docs/index.js.map +7 -0
- package/dist/esm/components/docs/preview-block.d.ts +22 -0
- package/dist/esm/components/docs/preview-block.d.ts.map +1 -0
- package/dist/esm/components/docs/preview-block.js +2 -0
- package/dist/esm/components/docs/preview-block.js.map +7 -0
- package/dist/esm/components/docs/table-of-contents.d.ts +12 -0
- package/dist/esm/components/docs/table-of-contents.d.ts.map +1 -0
- package/dist/esm/components/docs/table-of-contents.js +2 -0
- package/dist/esm/components/docs/table-of-contents.js.map +7 -0
- package/dist/esm/components/docs/types.d.ts +38 -0
- package/dist/esm/components/docs/types.d.ts.map +1 -0
- package/dist/esm/components/docs/types.js +1 -0
- package/dist/esm/components/docs/types.js.map +7 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/package.json +2 -1
- package/src/components/docs/docs-page-header.tsx +92 -0
- package/src/components/docs/docs-page.tsx +99 -0
- package/src/components/docs/docs-shell.tsx +114 -0
- package/src/components/docs/docs-sidebar.tsx +180 -0
- package/src/components/docs/index.ts +17 -0
- package/src/components/docs/preview-block.tsx +64 -0
- package/src/components/docs/table-of-contents.tsx +157 -0
- package/src/components/docs/types.ts +45 -0
- package/src/components/index.ts +1 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsPageMeta } from './types.js';
|
|
3
|
+
export interface DocsPageHeaderProps {
|
|
4
|
+
/** Page metadata */
|
|
5
|
+
meta: DocsPageMeta;
|
|
6
|
+
/** Optional actions to render on the right side */
|
|
7
|
+
actions?: React.ReactNode;
|
|
8
|
+
/** Show copy page button */
|
|
9
|
+
showCopyButton?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function DocsPageHeader({ meta, actions, showCopyButton }: DocsPageHeaderProps): React.JSX.Element;
|
|
12
|
+
//# sourceMappingURL=docs-page-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-page-header.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-page-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAqB,EAAE,EAAE,mBAAmB,qBA0E3F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";"use client";var d=Object.create;var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var C=(e,o)=>{for(var t in o)a(e,t,{get:o[t],enumerable:!0})},g=(e,o,t,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of f(o))!h.call(e,i)&&i!==t&&a(e,i,{get:()=>o[i],enumerable:!(s=y(o,i))||s.enumerable});return e};var w=(e,o,t)=>(t=e!=null?d(x(e)):{},g(o||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),P=e=>g(a({},"__esModule",{value:!0}),e);var k={};C(k,{DocsPageHeader:()=>b});module.exports=P(k);var n=w(require("react")),r=require("@kushagradhawan/kookie-ui"),p=require("@hugeicons/react"),l=require("@hugeicons/core-free-icons");function b({meta:e,actions:o,showCopyButton:t=!0}){const s=(0,n.useCallback)(()=>{const i=document.querySelector("[data-content-area]");if(!i)return;let c=`# ${e.title}
|
|
2
|
+
|
|
3
|
+
`;e.description&&(c+=`${e.description}
|
|
4
|
+
|
|
5
|
+
`),e.source&&(c+=`[View source](${e.source})
|
|
6
|
+
|
|
7
|
+
`),c+=`---
|
|
8
|
+
|
|
9
|
+
`;const u=i.textContent||"";c+=u.trim(),navigator.clipboard.writeText(c)},[e.title,e.description,e.source]);return n.default.createElement(r.Flex,{direction:"column",gap:"4"},e.category&&n.default.createElement(r.Text,{size:"2",weight:"medium"},e.category),n.default.createElement(r.Flex,{align:"center",justify:"between",gap:"4"},n.default.createElement(r.Heading,{as:"h1",size:"9",weight:"medium"},e.title),n.default.createElement(r.Flex,{align:"center",gap:"4"},o,t&&n.default.createElement(r.Button,{size:"2",variant:"ghost",color:"gray",highContrast:!0,onClick:s,"aria-label":"Copy page content"},n.default.createElement(p.HugeiconsIcon,{icon:l.Copy01Icon}),"Copy page"))),e.description&&n.default.createElement(r.Text,{size:"3",color:"gray"},e.description),e.source&&n.default.createElement(r.Link,{size:"3",href:e.source,target:"_blank",color:"gray",highContrast:!0,rel:"noreferrer"},"View source \u2192"))}
|
|
10
|
+
//# sourceMappingURL=docs-page-header.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/docs-page-header.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport React, { useCallback } from 'react';\nimport { Flex, Heading, Text, Link, Button } from '@kushagradhawan/kookie-ui';\nimport { HugeiconsIcon } from '@hugeicons/react';\nimport { Copy01Icon } from '@hugeicons/core-free-icons';\nimport type { DocsPageMeta } from './types.js';\n\nexport interface DocsPageHeaderProps {\n /** Page metadata */\n meta: DocsPageMeta;\n /** Optional actions to render on the right side */\n actions?: React.ReactNode;\n /** Show copy page button */\n showCopyButton?: boolean;\n}\n\nexport function DocsPageHeader({ meta, actions, showCopyButton = true }: DocsPageHeaderProps) {\n const handleCopyPage = useCallback(() => {\n const contentArea = document.querySelector('[data-content-area]');\n if (!contentArea) return;\n\n let markdown = `# ${meta.title}\\n\\n`;\n\n if (meta.description) {\n markdown += `${meta.description}\\n\\n`;\n }\n\n if (meta.source) {\n markdown += `[View source](${meta.source})\\n\\n`;\n }\n\n markdown += `---\\n\\n`;\n\n const textContent = contentArea.textContent || '';\n markdown += textContent.trim();\n\n navigator.clipboard.writeText(markdown);\n }, [meta.title, meta.description, meta.source]);\n\n return (\n <Flex direction=\"column\" gap=\"4\">\n {meta.category && (\n <Text size=\"2\" weight=\"medium\">\n {meta.category}\n </Text>\n )}\n\n <Flex align=\"center\" justify=\"between\" gap=\"4\">\n <Heading as=\"h1\" size=\"9\" weight=\"medium\">\n {meta.title}\n </Heading>\n\n <Flex align=\"center\" gap=\"4\">\n {actions}\n {showCopyButton && (\n <Button\n size=\"2\"\n variant=\"ghost\"\n color=\"gray\"\n highContrast\n onClick={handleCopyPage}\n aria-label=\"Copy page content\"\n >\n <HugeiconsIcon icon={Copy01Icon} />\n Copy page\n </Button>\n )}\n </Flex>\n </Flex>\n\n {meta.description && (\n <Text size=\"3\" color=\"gray\">\n {meta.description}\n </Text>\n )}\n\n {meta.source && (\n <Link\n size=\"3\"\n href={meta.source}\n target=\"_blank\"\n color=\"gray\"\n highContrast\n rel=\"noreferrer\"\n >\n View source \u2192\n </Link>\n )}\n </Flex>\n );\n}\n"],
|
|
5
|
+
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAmC,oBACnCC,EAAkD,qCAClDD,EAA8B,4BAC9BE,EAA2B,sCAYpB,SAASJ,EAAe,CAAE,KAAAK,EAAM,QAAAC,EAAS,eAAAC,EAAiB,EAAK,EAAwB,CAC5F,MAAMC,KAAiB,eAAY,IAAM,CACvC,MAAMC,EAAc,SAAS,cAAc,qBAAqB,EAChE,GAAI,CAACA,EAAa,OAElB,IAAIC,EAAW,KAAKL,EAAK,KAAK;AAAA;AAAA,EAE1BA,EAAK,cACPK,GAAY,GAAGL,EAAK,WAAW;AAAA;AAAA,GAG7BA,EAAK,SACPK,GAAY,iBAAiBL,EAAK,MAAM;AAAA;AAAA,GAG1CK,GAAY;AAAA;AAAA,EAEZ,MAAMC,EAAcF,EAAY,aAAe,GAC/CC,GAAYC,EAAY,KAAK,EAE7B,UAAU,UAAU,UAAUD,CAAQ,CACxC,EAAG,CAACL,EAAK,MAAOA,EAAK,YAAaA,EAAK,MAAM,CAAC,EAE9C,OACE,EAAAO,QAAA,cAAC,QAAK,UAAU,SAAS,IAAI,KAC1BP,EAAK,UACJ,EAAAO,QAAA,cAAC,QAAK,KAAK,IAAI,OAAO,UACnBP,EAAK,QACR,EAGF,EAAAO,QAAA,cAAC,QAAK,MAAM,SAAS,QAAQ,UAAU,IAAI,KACzC,EAAAA,QAAA,cAAC,WAAQ,GAAG,KAAK,KAAK,IAAI,OAAO,UAC9BP,EAAK,KACR,EAEA,EAAAO,QAAA,cAAC,QAAK,MAAM,SAAS,IAAI,KACtBN,EACAC,GACC,EAAAK,QAAA,cAAC,UACC,KAAK,IACL,QAAQ,QACR,MAAM,OACN,aAAY,GACZ,QAASJ,EACT,aAAW,qBAEX,EAAAI,QAAA,cAAC,iBAAc,KAAM,aAAY,EAAE,WAErC,CAEJ,CACF,EAECP,EAAK,aACJ,EAAAO,QAAA,cAAC,QAAK,KAAK,IAAI,MAAM,QAClBP,EAAK,WACR,EAGDA,EAAK,QACJ,EAAAO,QAAA,cAAC,QACC,KAAK,IACL,KAAMP,EAAK,OACX,OAAO,SACP,MAAM,OACN,aAAY,GACZ,IAAI,cACL,oBAED,CAEJ,CAEJ",
|
|
6
|
+
"names": ["docs_page_header_exports", "__export", "DocsPageHeader", "__toCommonJS", "import_react", "import_kookie_ui", "import_core_free_icons", "meta", "actions", "showCopyButton", "handleCopyPage", "contentArea", "markdown", "textContent", "React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsPageMeta } from './types.js';
|
|
3
|
+
export interface DocsPageProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Page metadata for header */
|
|
6
|
+
meta?: DocsPageMeta;
|
|
7
|
+
/** Optional table of contents element */
|
|
8
|
+
tableOfContents?: React.ReactNode;
|
|
9
|
+
/** Content max width */
|
|
10
|
+
maxWidth?: string | number;
|
|
11
|
+
/** Page padding */
|
|
12
|
+
padding?: '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
|
13
|
+
/** Optional header actions */
|
|
14
|
+
headerActions?: React.ReactNode;
|
|
15
|
+
/** Custom header element (overrides meta-based header) */
|
|
16
|
+
header?: React.ReactNode;
|
|
17
|
+
/** Show footer with copyright */
|
|
18
|
+
showFooter?: boolean;
|
|
19
|
+
/** Footer copyright holder */
|
|
20
|
+
footerCopyright?: {
|
|
21
|
+
name: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
};
|
|
24
|
+
/** GitHub repo URL for footer */
|
|
25
|
+
githubUrl?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function DocsPage({ children, meta, tableOfContents, maxWidth, padding, headerActions, header, showFooter, footerCopyright, githubUrl, }: DocsPageProps): React.JSX.Element;
|
|
28
|
+
//# sourceMappingURL=docs-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-page.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yCAAyC;IACzC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,mBAAmB;IACnB,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAClD,8BAA8B;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,QAAkB,EAClB,OAAa,EACb,aAAa,EACb,MAAM,EACN,UAAkB,EAClB,eAAe,EACf,SAAS,GACV,EAAE,aAAa,qBAyDf"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var h=Object.create;var l=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var P=(i,r)=>{for(var t in r)l(i,t,{get:r[t],enumerable:!0})},p=(i,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of w(r))!F.call(i,o)&&o!==t&&l(i,o,{get:()=>r[o],enumerable:!(s=f(r,o))||s.enumerable});return i};var k=(i,r,t)=>(t=i!=null?h(y(i)):{},p(r||!i||!i.__esModule?l(t,"default",{value:i,enumerable:!0}):t,i)),D=i=>p(l({},"__esModule",{value:!0}),i);var W={};P(W,{DocsPage:()=>b});module.exports=D(W);var n=k(require("react")),e=require("@kushagradhawan/kookie-ui"),c=require("./docs-page-header.js");function b({children:i,meta:r,tableOfContents:t,maxWidth:s="48rem",padding:o="6",headerActions:g,header:d,showFooter:x=!1,footerCopyright:a,githubUrl:m}){const u=new Date().getFullYear();return n.default.createElement(e.Flex,{my:"6",gap:{initial:"6",md:"6"},align:"start",direction:{initial:"column",lg:"row"}},n.default.createElement(e.Flex,{direction:"column",gap:"6",p:{initial:"2",sm:"4"},flexGrow:"1",style:{minWidth:0}},n.default.createElement(e.Container,{size:"2",style:{minWidth:0},"data-content-area":!0},n.default.createElement(e.Box,{p:"4",width:"100%"},n.default.createElement(e.Flex,{direction:"column",gap:"8",width:"100%"},d||r&&n.default.createElement(c.DocsPageHeader,{meta:r,actions:g}),(d||r)&&n.default.createElement(e.Separator,{size:"4"}),n.default.createElement(e.Flex,{direction:"column",gap:"0",width:"100%"},i)),x&&n.default.createElement(e.Flex,{align:"center",justify:"center",width:"100%",pt:"8"},n.default.createElement(e.Text,{size:"2",color:"gray",align:"center"},"\xA9 ",u," ",a?.url?n.default.createElement(e.Link,{href:a.url,target:"_blank",rel:"noreferrer"},a.name):a?.name||"Your Company",". Licensed under MIT.",m&&n.default.createElement(n.default.Fragment,null," ",n.default.createElement(e.Link,{href:m,target:"_blank",rel:"noreferrer"},"GitHub"),".")))))),t&&n.default.createElement(e.Box,{style:{width:"240px",minWidth:"160px"},position:"sticky",top:"200px",display:{initial:"none",lg:"block"}},t))}
|
|
2
|
+
//# sourceMappingURL=docs-page.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/docs-page.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { Flex, Box, Separator, Container, Text, Link } from '@kushagradhawan/kookie-ui';\nimport { DocsPageHeader } from './docs-page-header.js';\nimport type { DocsPageMeta } from './types.js';\n\nexport interface DocsPageProps {\n children: React.ReactNode;\n /** Page metadata for header */\n meta?: DocsPageMeta;\n /** Optional table of contents element */\n tableOfContents?: React.ReactNode;\n /** Content max width */\n maxWidth?: string | number;\n /** Page padding */\n padding?: '3' | '4' | '5' | '6' | '7' | '8' | '9';\n /** Optional header actions */\n headerActions?: React.ReactNode;\n /** Custom header element (overrides meta-based header) */\n header?: React.ReactNode;\n /** Show footer with copyright */\n showFooter?: boolean;\n /** Footer copyright holder */\n footerCopyright?: {\n name: string;\n url?: string;\n };\n /** GitHub repo URL for footer */\n githubUrl?: string;\n}\n\nexport function DocsPage({\n children,\n meta,\n tableOfContents,\n maxWidth = '48rem',\n padding = '6',\n headerActions,\n header,\n showFooter = false,\n footerCopyright,\n githubUrl,\n}: DocsPageProps) {\n const currentYear = new Date().getFullYear();\n const showHeader = header || meta;\n\n return (\n <Flex my=\"6\" gap={{ initial: '6', md: '6' }} align=\"start\" direction={{ initial: 'column', lg: 'row' }}>\n {/* Main content area */}\n <Flex direction=\"column\" gap=\"6\" p={{ initial: '2', sm: '4' }} flexGrow=\"1\" style={{ minWidth: 0 }}>\n <Container size=\"2\" style={{ minWidth: 0 }} data-content-area>\n <Box p=\"4\" width=\"100%\">\n <Flex direction=\"column\" gap=\"8\" width=\"100%\">\n {/* Page Header */}\n {header ? header : meta && <DocsPageHeader meta={meta} actions={headerActions} />}\n\n {showHeader && <Separator size=\"4\" />}\n\n <Flex direction=\"column\" gap=\"0\" width=\"100%\">\n {children}\n </Flex>\n </Flex>\n\n {showFooter && (\n <Flex align=\"center\" justify=\"center\" width=\"100%\" pt=\"8\">\n <Text size=\"2\" color=\"gray\" align=\"center\">\n \u00A9 {currentYear}{' '}\n {footerCopyright?.url ? (\n <Link href={footerCopyright.url} target=\"_blank\" rel=\"noreferrer\">\n {footerCopyright.name}\n </Link>\n ) : (\n footerCopyright?.name || 'Your Company'\n )}\n . Licensed under MIT.\n {githubUrl && (\n <>\n {' '}\n <Link href={githubUrl} target=\"_blank\" rel=\"noreferrer\">\n GitHub\n </Link>\n .\n </>\n )}\n </Text>\n </Flex>\n )}\n </Box>\n </Container>\n </Flex>\n\n {/* Table of Contents */}\n {tableOfContents && (\n <Box style={{ width: '240px', minWidth: '160px' }} position=\"sticky\" top=\"200px\" display={{ initial: 'none', lg: 'block' }}>\n {tableOfContents}\n </Box>\n )}\n </Flex>\n );\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAA4D,qCAC5DC,EAA+B,iCA4BxB,SAASJ,EAAS,CACvB,SAAAK,EACA,KAAAC,EACA,gBAAAC,EACA,SAAAC,EAAW,QACX,QAAAC,EAAU,IACV,cAAAC,EACA,OAAAC,EACA,WAAAC,EAAa,GACb,gBAAAC,EACA,UAAAC,CACF,EAAkB,CAChB,MAAMC,EAAc,IAAI,KAAK,EAAE,YAAY,EAG3C,OACE,EAAAC,QAAA,cAAC,QAAK,GAAG,IAAI,IAAK,CAAE,QAAS,IAAK,GAAI,GAAI,EAAG,MAAM,QAAQ,UAAW,CAAE,QAAS,SAAU,GAAI,KAAM,GAEnG,EAAAA,QAAA,cAAC,QAAK,UAAU,SAAS,IAAI,IAAI,EAAG,CAAE,QAAS,IAAK,GAAI,GAAI,EAAG,SAAS,IAAI,MAAO,CAAE,SAAU,CAAE,GAC/F,EAAAA,QAAA,cAAC,aAAU,KAAK,IAAI,MAAO,CAAE,SAAU,CAAE,EAAG,oBAAiB,IAC3D,EAAAA,QAAA,cAAC,OAAI,EAAE,IAAI,MAAM,QACf,EAAAA,QAAA,cAAC,QAAK,UAAU,SAAS,IAAI,IAAI,MAAM,QAEpCL,GAAkBL,GAAQ,EAAAU,QAAA,cAAC,kBAAe,KAAMV,EAAM,QAASI,EAAe,GAVxEC,GAAUL,IAYF,EAAAU,QAAA,cAAC,aAAU,KAAK,IAAI,EAEnC,EAAAA,QAAA,cAAC,QAAK,UAAU,SAAS,IAAI,IAAI,MAAM,QACpCX,CACH,CACF,EAECO,GACC,EAAAI,QAAA,cAAC,QAAK,MAAM,SAAS,QAAQ,SAAS,MAAM,OAAO,GAAG,KACpD,EAAAA,QAAA,cAAC,QAAK,KAAK,IAAI,MAAM,OAAO,MAAM,UAAS,QACtCD,EAAa,IACfF,GAAiB,IAChB,EAAAG,QAAA,cAAC,QAAK,KAAMH,EAAgB,IAAK,OAAO,SAAS,IAAI,cAClDA,EAAgB,IACnB,EAEAA,GAAiB,MAAQ,eACzB,wBAEDC,GACC,EAAAE,QAAA,gBAAAA,QAAA,cACG,IACD,EAAAA,QAAA,cAAC,QAAK,KAAMF,EAAW,OAAO,SAAS,IAAI,cAAa,QAExD,EAAO,GAET,CAEJ,CACF,CAEJ,CACF,CACF,EAGCP,GACC,EAAAS,QAAA,cAAC,OAAI,MAAO,CAAE,MAAO,QAAS,SAAU,OAAQ,EAAG,SAAS,SAAS,IAAI,QAAQ,QAAS,CAAE,QAAS,OAAQ,GAAI,OAAQ,GACtHT,CACH,CAEJ,CAEJ",
|
|
6
|
+
"names": ["docs_page_exports", "__export", "DocsPage", "__toCommonJS", "import_react", "import_kookie_ui", "import_docs_page_header", "children", "meta", "tableOfContents", "maxWidth", "padding", "headerActions", "header", "showFooter", "footerCopyright", "githubUrl", "currentYear", "React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsNavigationConfig, DocsLogoConfig } from './types.js';
|
|
3
|
+
export interface DocsShellProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Navigation configuration */
|
|
6
|
+
navigation: DocsNavigationConfig;
|
|
7
|
+
/** Logo configuration */
|
|
8
|
+
logo?: DocsLogoConfig;
|
|
9
|
+
/** Optional header actions (dark mode toggle, github link, etc.) */
|
|
10
|
+
headerActions?: React.ReactNode;
|
|
11
|
+
/** Optional sidebar footer content */
|
|
12
|
+
sidebarFooter?: React.ReactNode;
|
|
13
|
+
/** Shell height */
|
|
14
|
+
height?: 'full' | 'auto' | string | number;
|
|
15
|
+
/** Sidebar thin size (when collapsed) */
|
|
16
|
+
sidebarThinSize?: number;
|
|
17
|
+
/** Whether sidebar is resizable */
|
|
18
|
+
sidebarResizable?: boolean;
|
|
19
|
+
/** Mobile trigger icon */
|
|
20
|
+
mobileTriggerIcon?: React.ReactNode;
|
|
21
|
+
/** Current pathname for active state detection */
|
|
22
|
+
pathname?: string;
|
|
23
|
+
/** Link component to use (defaults to 'a') */
|
|
24
|
+
linkComponent?: React.ComponentType<{
|
|
25
|
+
href: string;
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
prefetch?: boolean;
|
|
28
|
+
'aria-label'?: string;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export declare function DocsShell({ children, navigation, logo, headerActions, sidebarFooter, height, sidebarThinSize, sidebarResizable, mobileTriggerIcon, pathname, linkComponent, }: DocsShellProps): React.JSX.Element;
|
|
32
|
+
//# sourceMappingURL=docs-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-shell.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+BAA+B;IAC/B,UAAU,EAAE,oBAAoB,CAAC;IACjC,yBAAyB;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,oEAAoE;IACpE,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7H;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,aAAa,EACb,aAAa,EACb,MAAM,EACN,eAAoB,EACpB,gBAAuB,EACvB,iBAAiB,EACjB,QAAa,EACb,aAAa,GACd,EAAE,cAAc,qBAsEhB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";"use client";var C=Object.create;var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var N=(e,o)=>{for(var n in o)l(e,n,{get:o[n],enumerable:!0})},s=(e,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of y(o))!w.call(e,r)&&r!==n&&l(e,r,{get:()=>o[r],enumerable:!(a=v(o,r))||a.enumerable});return e};var z=(e,o,n)=>(n=e!=null?C(D(e)):{},s(o||!e||!e.__esModule?l(n,"default",{value:e,enumerable:!0}):n,e)),k=e=>s(l({},"__esModule",{value:!0}),e);var T={};N(T,{DocsShell:()=>R});module.exports=k(T);var t=z(require("react")),i=require("@kushagradhawan/kookie-ui"),g=require("./docs-sidebar.js");function R({children:e,navigation:o,logo:n,headerActions:a,sidebarFooter:r,height:h,sidebarThinSize:d=80,sidebarResizable:p=!0,mobileTriggerIcon:c,pathname:f="",linkComponent:m}){const[u,S]=(0,t.useState)("expanded"),b=r||a?t.default.createElement(i.Flex,{gap:"2",align:"center"},a,r):void 0;return t.default.createElement(i.Shell.Root,{height:h},t.default.createElement(i.Shell.Sidebar,{toggleModes:"single",thinSize:d,resizable:p,defaultState:{initial:"collapsed",sm:"expanded"},onStateChange:x=>S(x==="thin"?"thin":"expanded"),presentation:{initial:"overlay",sm:"fixed"}},t.default.createElement(g.DocsSidebar,{navigation:o,logo:n,presentation:u,footer:b,pathname:f,linkComponent:m})),t.default.createElement(i.Shell.Content,null,t.default.createElement(i.Flex,{display:{initial:"flex",sm:"none"},position:"fixed",top:"4",left:"4",align:"center",justify:"center",width:"auto",height:"auto",style:{zIndex:999}},t.default.createElement(i.IconButton,{variant:"ghost",size:"3",highContrast:!0,color:"gray",asChild:!0},t.default.createElement(i.Shell.Trigger,{target:"sidebar"},c||t.default.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t.default.createElement("path",{d:"M2 4h12M2 8h12M2 12h12",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}))))),e))}
|
|
2
|
+
//# sourceMappingURL=docs-shell.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/docs-shell.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport React, { useState } from 'react';\nimport { Shell, Flex, IconButton } from '@kushagradhawan/kookie-ui';\nimport { DocsSidebar } from './docs-sidebar.js';\nimport type { DocsNavigationConfig, DocsLogoConfig } from './types.js';\n\nexport interface DocsShellProps {\n children: React.ReactNode;\n /** Navigation configuration */\n navigation: DocsNavigationConfig;\n /** Logo configuration */\n logo?: DocsLogoConfig;\n /** Optional header actions (dark mode toggle, github link, etc.) */\n headerActions?: React.ReactNode;\n /** Optional sidebar footer content */\n sidebarFooter?: React.ReactNode;\n /** Shell height */\n height?: 'full' | 'auto' | string | number;\n /** Sidebar thin size (when collapsed) */\n sidebarThinSize?: number;\n /** Whether sidebar is resizable */\n sidebarResizable?: boolean;\n /** Mobile trigger icon */\n mobileTriggerIcon?: React.ReactNode;\n /** Current pathname for active state detection */\n pathname?: string;\n /** Link component to use (defaults to 'a') */\n linkComponent?: React.ComponentType<{ href: string; children: React.ReactNode; prefetch?: boolean; 'aria-label'?: string }>;\n}\n\nexport function DocsShell({\n children,\n navigation,\n logo,\n headerActions,\n sidebarFooter,\n height,\n sidebarThinSize = 80,\n sidebarResizable = true,\n mobileTriggerIcon,\n pathname = '',\n linkComponent,\n}: DocsShellProps) {\n const [sidebarPresentation, setSidebarPresentation] = useState<'thin' | 'expanded'>('expanded');\n\n // Combine headerActions with sidebarFooter\n const footerContent = sidebarFooter || headerActions ? (\n <Flex gap=\"2\" align=\"center\">\n {headerActions}\n {sidebarFooter}\n </Flex>\n ) : undefined;\n\n return (\n <Shell.Root height={height}>\n <Shell.Sidebar\n toggleModes=\"single\"\n thinSize={sidebarThinSize}\n resizable={sidebarResizable}\n defaultState={{ initial: 'collapsed', sm: 'expanded' }}\n onStateChange={(state) => setSidebarPresentation(state === 'thin' ? 'thin' : 'expanded')}\n presentation={{ initial: 'overlay', sm: 'fixed' }}\n >\n <DocsSidebar\n navigation={navigation}\n logo={logo}\n presentation={sidebarPresentation}\n footer={footerContent}\n pathname={pathname}\n linkComponent={linkComponent}\n />\n </Shell.Sidebar>\n\n <Shell.Content>\n {/* Mobile trigger */}\n <Flex\n display={{ initial: 'flex', sm: 'none' }}\n position=\"fixed\"\n top=\"4\"\n left=\"4\"\n align=\"center\"\n justify=\"center\"\n width=\"auto\"\n height=\"auto\"\n style={{ zIndex: 999 }}\n >\n <IconButton variant=\"ghost\" size=\"3\" highContrast color=\"gray\" asChild>\n <Shell.Trigger target=\"sidebar\">\n {mobileTriggerIcon || (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2 4h12M2 8h12M2 12h12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </Shell.Trigger>\n </IconButton>\n </Flex>\n\n {children}\n </Shell.Content>\n </Shell.Root>\n );\n}\n"],
|
|
5
|
+
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAgC,oBAChCC,EAAwC,qCACxCC,EAA4B,6BA2BrB,SAASJ,EAAU,CACxB,SAAAK,EACA,WAAAC,EACA,KAAAC,EACA,cAAAC,EACA,cAAAC,EACA,OAAAC,EACA,gBAAAC,EAAkB,GAClB,iBAAAC,EAAmB,GACnB,kBAAAC,EACA,SAAAC,EAAW,GACX,cAAAC,CACF,EAAmB,CACjB,KAAM,CAACC,EAAqBC,CAAsB,KAAI,YAA8B,UAAU,EAGxFC,EAAgBT,GAAiBD,EACrC,EAAAW,QAAA,cAAC,QAAK,IAAI,IAAI,MAAM,UACjBX,EACAC,CACH,EACE,OAEJ,OACE,EAAAU,QAAA,cAAC,QAAM,KAAN,CAAW,OAAQT,GAClB,EAAAS,QAAA,cAAC,QAAM,QAAN,CACC,YAAY,SACZ,SAAUR,EACV,UAAWC,EACX,aAAc,CAAE,QAAS,YAAa,GAAI,UAAW,EACrD,cAAgBQ,GAAUH,EAAuBG,IAAU,OAAS,OAAS,UAAU,EACvF,aAAc,CAAE,QAAS,UAAW,GAAI,OAAQ,GAEhD,EAAAD,QAAA,cAAC,eACC,WAAYb,EACZ,KAAMC,EACN,aAAcS,EACd,OAAQE,EACR,SAAUJ,EACV,cAAeC,EACjB,CACF,EAEA,EAAAI,QAAA,cAAC,QAAM,QAAN,KAEC,EAAAA,QAAA,cAAC,QACC,QAAS,CAAE,QAAS,OAAQ,GAAI,MAAO,EACvC,SAAS,QACT,IAAI,IACJ,KAAK,IACL,MAAM,SACN,QAAQ,SACR,MAAM,OACN,OAAO,OACP,MAAO,CAAE,OAAQ,GAAI,GAErB,EAAAA,QAAA,cAAC,cAAW,QAAQ,QAAQ,KAAK,IAAI,aAAY,GAAC,MAAM,OAAO,QAAO,IACpE,EAAAA,QAAA,cAAC,QAAM,QAAN,CAAc,OAAO,WACnBN,GACC,EAAAM,QAAA,cAAC,OACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,8BAEN,EAAAA,QAAA,cAAC,QACC,EAAE,yBACF,OAAO,eACP,YAAY,MACZ,cAAc,QAChB,CACF,CAEJ,CACF,CACF,EAECd,CACH,CACF,CAEJ",
|
|
6
|
+
"names": ["docs_shell_exports", "__export", "DocsShell", "__toCommonJS", "import_react", "import_kookie_ui", "import_docs_sidebar", "children", "navigation", "logo", "headerActions", "sidebarFooter", "height", "sidebarThinSize", "sidebarResizable", "mobileTriggerIcon", "pathname", "linkComponent", "sidebarPresentation", "setSidebarPresentation", "footerContent", "React", "state"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsNavigationConfig, DocsLogoConfig } from './types.js';
|
|
3
|
+
type AccentColor = 'gray' | 'gold' | 'bronze' | 'brown' | 'yellow' | 'amber' | 'orange' | 'tomato' | 'red' | 'ruby' | 'crimson' | 'pink' | 'plum' | 'purple' | 'violet' | 'iris' | 'indigo' | 'blue' | 'cyan' | 'teal' | 'jade' | 'green' | 'grass' | 'lime' | 'mint' | 'sky';
|
|
4
|
+
export interface DocsSidebarProps {
|
|
5
|
+
/** Navigation configuration */
|
|
6
|
+
navigation: DocsNavigationConfig;
|
|
7
|
+
/** Logo configuration */
|
|
8
|
+
logo?: DocsLogoConfig;
|
|
9
|
+
/** Presentation mode from parent Shell */
|
|
10
|
+
presentation?: 'thin' | 'expanded';
|
|
11
|
+
/** Footer content */
|
|
12
|
+
footer?: React.ReactNode;
|
|
13
|
+
/** Sidebar size */
|
|
14
|
+
size?: '1' | '2';
|
|
15
|
+
/** Sidebar variant */
|
|
16
|
+
variant?: 'soft' | 'outline' | 'surface' | 'ghost';
|
|
17
|
+
/** Menu item variant */
|
|
18
|
+
menuVariant?: 'solid' | 'soft';
|
|
19
|
+
/** Accent color */
|
|
20
|
+
color?: AccentColor;
|
|
21
|
+
/** Current pathname for active state detection */
|
|
22
|
+
pathname?: string;
|
|
23
|
+
/** Link component to use (defaults to 'a') */
|
|
24
|
+
linkComponent?: React.ComponentType<{
|
|
25
|
+
href: string;
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
prefetch?: boolean;
|
|
28
|
+
'aria-label'?: string;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export declare function DocsSidebar({ navigation, logo, presentation, footer, size, variant, menuVariant, color, pathname, linkComponent: LinkComponent, }: DocsSidebarProps): React.JSX.Element;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=docs-sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKvE,KAAK,WAAW,GACZ,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,KAAK,CAAC;AAEV,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,UAAU,EAAE,oBAAoB,CAAC;IACjC,yBAAyB;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mBAAmB;IACnB,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,mBAAmB;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7H;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,IAAI,EACJ,YAAyB,EACzB,MAAM,EACN,IAAU,EACV,OAAgB,EAChB,WAAoB,EACpB,KAAc,EACd,QAAa,EACb,aAAa,EAAE,aAA0B,GAC1C,EAAE,gBAAgB,qBA2GlB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";"use client";var v=Object.create;var d=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var j=(o,r)=>{for(var a in r)d(o,a,{get:r[a],enumerable:!0})},c=(o,r,a,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of N(r))!I.call(o,s)&&s!==a&&d(o,s,{get:()=>r[s],enumerable:!(u=k(r,s))||u.enumerable});return o};var x=(o,r,a)=>(a=o!=null?v(A(o)):{},c(r||!o||!o.__esModule?d(a,"default",{value:o,enumerable:!0}):a,o)),D=o=>c(d({},"__esModule",{value:!0}),o);var G={};j(G,{DocsSidebar:()=>L});module.exports=D(G);var e=x(require("react")),n=require("@kushagradhawan/kookie-ui"),S=require("@hugeicons/react");function L({navigation:o,logo:r,presentation:a="expanded",footer:u,size:s="2",variant:m="soft",menuVariant:y="soft",color:h="gray",pathname:b="",linkComponent:p="a"}){const C=t=>Array.isArray(t)&&t.length>0&&Array.isArray(t[0]),f=t=>t?(0,e.isValidElement)(t)?t:C(t)?e.default.createElement(S.HugeiconsIcon,{icon:t,size:16}):typeof t=="function"?e.default.createElement(t,null):null:null;return e.default.createElement(n.Sidebar.Root,{size:s,variant:m,color:h,menuVariant:y,presentation:a},r&&e.default.createElement(n.Sidebar.Header,null,e.default.createElement(n.Flex,{justify:"between",align:"center",width:"100%"},e.default.createElement(p,{href:r.href||"/","aria-label":r.alt||"Home"},e.default.createElement(n.Flex,{align:"center",gap:"2"},e.default.createElement(n.Avatar,{fallback:r.alt?.[0]||"K",size:"2",src:r.src}))))),e.default.createElement(n.Sidebar.Content,null,e.default.createElement(n.Sidebar.Menu,null,o.groups.map(t=>e.default.createElement(n.Sidebar.Group,{key:t.label},e.default.createElement(n.Sidebar.GroupLabel,null,t.label),e.default.createElement(n.Sidebar.GroupContent,null,t.items.map(i=>{const g=i.items&&i.items.length>0,M=g?i.items.some(l=>b===l.href):!1;return g?e.default.createElement(n.Sidebar.MenuItem,{key:i.href},e.default.createElement(n.Sidebar.MenuSub,{defaultOpen:M},e.default.createElement(n.Sidebar.MenuSubTrigger,null,f(i.icon),i.title),e.default.createElement(n.Sidebar.MenuSubContent,null,i.items.map(l=>e.default.createElement(n.Sidebar.MenuButton,{asChild:!0,key:l.href,isActive:b===l.href},e.default.createElement(p,{href:l.href},f(l.icon),e.default.createElement("span",{className:"rt-SidebarMenuLabel"},l.title))))))):e.default.createElement(n.Sidebar.MenuItem,{key:i.href},e.default.createElement(n.Sidebar.MenuButton,{asChild:!0,isActive:b===i.href,badge:i.badge},e.default.createElement(p,{href:i.href},f(i.icon),e.default.createElement("span",{className:"rt-SidebarMenuLabel"},i.title))))})))))),u&&e.default.createElement(n.Sidebar.Footer,null,u))}
|
|
2
|
+
//# sourceMappingURL=docs-sidebar.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/docs-sidebar.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport React, { isValidElement } from 'react';\nimport { Sidebar, Flex, Avatar } from '@kushagradhawan/kookie-ui';\nimport { HugeiconsIcon } from '@hugeicons/react';\nimport type { DocsNavigationConfig, DocsLogoConfig } from './types.js';\n\n// HugeIcons IconSvgObject type - readonly array of tuples with tag name and attributes\ntype IconSvgObject = readonly (readonly [string, { readonly [key: string]: string | number }])[];\n\ntype AccentColor =\n | 'gray'\n | 'gold'\n | 'bronze'\n | 'brown'\n | 'yellow'\n | 'amber'\n | 'orange'\n | 'tomato'\n | 'red'\n | 'ruby'\n | 'crimson'\n | 'pink'\n | 'plum'\n | 'purple'\n | 'violet'\n | 'iris'\n | 'indigo'\n | 'blue'\n | 'cyan'\n | 'teal'\n | 'jade'\n | 'green'\n | 'grass'\n | 'lime'\n | 'mint'\n | 'sky';\n\nexport interface DocsSidebarProps {\n /** Navigation configuration */\n navigation: DocsNavigationConfig;\n /** Logo configuration */\n logo?: DocsLogoConfig;\n /** Presentation mode from parent Shell */\n presentation?: 'thin' | 'expanded';\n /** Footer content */\n footer?: React.ReactNode;\n /** Sidebar size */\n size?: '1' | '2';\n /** Sidebar variant */\n variant?: 'soft' | 'outline' | 'surface' | 'ghost';\n /** Menu item variant */\n menuVariant?: 'solid' | 'soft';\n /** Accent color */\n color?: AccentColor;\n /** Current pathname for active state detection */\n pathname?: string;\n /** Link component to use (defaults to 'a') */\n linkComponent?: React.ComponentType<{ href: string; children: React.ReactNode; prefetch?: boolean; 'aria-label'?: string }>;\n}\n\nexport function DocsSidebar({\n navigation,\n logo,\n presentation = 'expanded',\n footer,\n size = '2',\n variant = 'soft',\n menuVariant = 'soft',\n color = 'gray',\n pathname = '',\n linkComponent: LinkComponent = 'a' as any,\n}: DocsSidebarProps) {\n\n // Helper to check if icon is HugeIcons IconSvgObject format\n const isIconSvgObject = (icon: unknown): icon is IconSvgObject => {\n return Array.isArray(icon) && icon.length > 0 && Array.isArray(icon[0]);\n };\n\n // Helper to render icon\n const renderIcon = (icon: React.ComponentType<{ className?: string }> | React.ReactNode | IconSvgObject) => {\n if (!icon) return null;\n if (isValidElement(icon)) return icon;\n // Handle HugeIcons IconSvgObject format\n if (isIconSvgObject(icon)) {\n return <HugeiconsIcon icon={icon} size={16} />;\n }\n if (typeof icon === 'function') {\n const IconComponent = icon as React.ComponentType<{ className?: string }>;\n return <IconComponent />;\n }\n return null;\n };\n\n return (\n <Sidebar.Root\n size={size}\n variant={variant}\n color={color}\n menuVariant={menuVariant}\n presentation={presentation}\n >\n {logo && (\n <Sidebar.Header>\n <Flex justify=\"between\" align=\"center\" width=\"100%\">\n <LinkComponent href={logo.href || '/'} aria-label={logo.alt || 'Home'}>\n <Flex align=\"center\" gap=\"2\">\n <Avatar fallback={logo.alt?.[0] || 'K'} size=\"2\" src={logo.src} />\n </Flex>\n </LinkComponent>\n </Flex>\n </Sidebar.Header>\n )}\n\n <Sidebar.Content>\n <Sidebar.Menu>\n {navigation.groups.map((group) => (\n <Sidebar.Group key={group.label}>\n <Sidebar.GroupLabel>{group.label}</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n {group.items.map((item) => {\n // Check if this item or any nested item is active\n const hasNestedItems = item.items && item.items.length > 0;\n const isNestedActive = hasNestedItems\n ? item.items!.some((subItem) => pathname === subItem.href)\n : false;\n\n if (hasNestedItems) {\n return (\n <Sidebar.MenuItem key={item.href}>\n <Sidebar.MenuSub defaultOpen={isNestedActive}>\n <Sidebar.MenuSubTrigger>\n {renderIcon(item.icon)}\n {item.title}\n </Sidebar.MenuSubTrigger>\n <Sidebar.MenuSubContent>\n {item.items!.map((subItem) => (\n <Sidebar.MenuButton\n asChild\n key={subItem.href}\n isActive={pathname === subItem.href}\n >\n <LinkComponent href={subItem.href}>\n {renderIcon(subItem.icon)}\n <span className=\"rt-SidebarMenuLabel\">{subItem.title}</span>\n </LinkComponent>\n </Sidebar.MenuButton>\n ))}\n </Sidebar.MenuSubContent>\n </Sidebar.MenuSub>\n </Sidebar.MenuItem>\n );\n }\n\n // Regular menu item\n return (\n <Sidebar.MenuItem key={item.href}>\n <Sidebar.MenuButton\n asChild\n isActive={pathname === item.href}\n badge={item.badge}\n >\n <LinkComponent href={item.href}>\n {renderIcon(item.icon)}\n <span className=\"rt-SidebarMenuLabel\">{item.title}</span>\n </LinkComponent>\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n );\n })}\n </Sidebar.GroupContent>\n </Sidebar.Group>\n ))}\n </Sidebar.Menu>\n </Sidebar.Content>\n\n {footer && <Sidebar.Footer>{footer}</Sidebar.Footer>}\n </Sidebar.Root>\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["docs_sidebar_exports", "__export", "DocsSidebar", "__toCommonJS", "import_react", "import_kookie_ui", "navigation", "logo", "presentation", "footer", "size", "variant", "menuVariant", "color", "pathname", "LinkComponent", "isIconSvgObject", "icon", "renderIcon", "React", "group", "item", "hasNestedItems", "isNestedActive", "subItem"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { DocsNavigationItem, DocsNavigationGroup, DocsNavigationConfig, DocsPageMeta, DocsLogoConfig, TocItem, } from './types.js';
|
|
2
|
+
export { TableOfContents } from './table-of-contents.js';
|
|
3
|
+
export { DocsSidebar } from './docs-sidebar.js';
|
|
4
|
+
export { DocsPageHeader } from './docs-page-header.js';
|
|
5
|
+
export { DocsPage } from './docs-page.js';
|
|
6
|
+
export { DocsShell } from './docs-shell.js';
|
|
7
|
+
export { PreviewBlock } from './preview-block.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var l=(e,o)=>{for(var t in o)a(e,t,{get:o[t],enumerable:!0})},v=(e,o,t,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of n(o))!x.call(e,r)&&r!==t&&a(e,r,{get:()=>o[r],enumerable:!(s=D(o,r))||s.enumerable});return e};var P=e=>v(a({},"__esModule",{value:!0}),e);var C={};l(C,{DocsPage:()=>p.DocsPage,DocsPageHeader:()=>i.DocsPageHeader,DocsShell:()=>g.DocsShell,DocsSidebar:()=>f.DocsSidebar,PreviewBlock:()=>m.PreviewBlock,TableOfContents:()=>c.TableOfContents});module.exports=P(C);var c=require("./table-of-contents.js"),f=require("./docs-sidebar.js"),i=require("./docs-page-header.js"),p=require("./docs-page.js"),g=require("./docs-shell.js"),m=require("./preview-block.js");
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Types\nexport type {\n DocsNavigationItem,\n DocsNavigationGroup,\n DocsNavigationConfig,\n DocsPageMeta,\n DocsLogoConfig,\n TocItem,\n} from './types.js';\n\n// Components\nexport { TableOfContents } from './table-of-contents.js';\nexport { DocsSidebar } from './docs-sidebar.js';\nexport { DocsPageHeader } from './docs-page-header.js';\nexport { DocsPage } from './docs-page.js';\nexport { DocsShell } from './docs-shell.js';\nexport { PreviewBlock } from './preview-block.js';\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4MAAAE,EAAAF,GAWA,IAAAG,EAAgC,kCAChCC,EAA4B,6BAC5BC,EAA+B,iCAC/BC,EAAyB,0BACzBC,EAA0B,2BAC1BC,EAA6B",
|
|
6
|
+
"names": ["docs_exports", "__export", "__toCommonJS", "import_table_of_contents", "import_docs_sidebar", "import_docs_page_header", "import_docs_page", "import_docs_shell", "import_preview_block"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
export interface PreviewBlockProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Background style for the preview */
|
|
6
|
+
background?: "none" | "dots" | "grid";
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* PreviewBlock - displays a live preview of a component
|
|
10
|
+
*
|
|
11
|
+
* Use this component to showcase live examples of components in documentation.
|
|
12
|
+
* Shows only the rendered component, not the code.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <PreviewBlock background="dots">
|
|
17
|
+
* <Button>Example Button</Button>
|
|
18
|
+
* </PreviewBlock>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function PreviewBlock({ children, background, }: PreviewBlockProps): React.JSX.Element;
|
|
22
|
+
//# sourceMappingURL=preview-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-block.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/preview-block.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAmB,GACpB,EAAE,iBAAiB,qBAmCnB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";"use client";var c=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var s=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var u=(r,e)=>{for(var a in e)i(r,a,{get:e[a],enumerable:!0})},g=(r,e,a,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!x.call(r,o)&&o!==a&&i(r,o,{get:()=>e[o],enumerable:!(d=p(e,o))||d.enumerable});return r};var k=(r,e,a)=>(a=r!=null?c(s(r)):{},g(e||!r||!r.__esModule?i(a,"default",{value:r,enumerable:!0}):a,r)),m=r=>g(i({},"__esModule",{value:!0}),r);var b={};u(b,{PreviewBlock:()=>y});module.exports=m(b);var t=k(require("react")),n=require("@kushagradhawan/kookie-ui");function y({children:r,background:e="dots"}){return t.default.createElement(n.Box,{my:"3"},t.default.createElement(n.Card,{size:"1",variant:"soft"},t.default.createElement(n.Flex,{justify:"center",align:"center",py:"4",minHeight:"240px",style:e==="dots"?{backgroundImage:"radial-gradient(circle, var(--gray-6) 1px, transparent 1px)",backgroundSize:"24px 24px",backgroundPosition:"center",backgroundColor:"var(--gray-2)"}:e==="grid"?{backgroundImage:"linear-gradient(var(--gray-6) 1px, transparent 1px), linear-gradient(90deg, var(--gray-6) 1px, transparent 1px)",backgroundSize:"24px 24px",backgroundPosition:"center",backgroundColor:"var(--gray-2)"}:void 0},t.default.createElement(n.Theme,{fontFamily:"sans"},r))))}
|
|
2
|
+
//# sourceMappingURL=preview-block.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/preview-block.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport React from \"react\";\nimport { Box, Card, Flex, Theme } from \"@kushagradhawan/kookie-ui\";\nimport type { ReactNode } from \"react\";\n\nexport interface PreviewBlockProps {\n children: ReactNode;\n /** Background style for the preview */\n background?: \"none\" | \"dots\" | \"grid\";\n}\n\n/**\n * PreviewBlock - displays a live preview of a component\n *\n * Use this component to showcase live examples of components in documentation.\n * Shows only the rendered component, not the code.\n *\n * @example\n * ```tsx\n * <PreviewBlock background=\"dots\">\n * <Button>Example Button</Button>\n * </PreviewBlock>\n * ```\n */\nexport function PreviewBlock({\n children,\n background = \"dots\",\n}: PreviewBlockProps) {\n const backgroundStyle =\n background === \"dots\"\n ? {\n backgroundImage:\n \"radial-gradient(circle, var(--gray-6) 1px, transparent 1px)\",\n backgroundSize: \"24px 24px\",\n backgroundPosition: \"center\",\n backgroundColor: \"var(--gray-2)\",\n }\n : background === \"grid\"\n ? {\n backgroundImage:\n \"linear-gradient(var(--gray-6) 1px, transparent 1px), linear-gradient(90deg, var(--gray-6) 1px, transparent 1px)\",\n backgroundSize: \"24px 24px\",\n backgroundPosition: \"center\",\n backgroundColor: \"var(--gray-2)\",\n }\n : undefined;\n\n return (\n <Box my=\"3\">\n <Card size=\"1\" variant=\"soft\">\n <Flex\n justify=\"center\"\n align=\"center\"\n py=\"4\"\n minHeight=\"240px\"\n style={backgroundStyle}\n >\n <Theme fontFamily=\"sans\">{children}</Theme>\n </Flex>\n </Card>\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAkB,oBAClBC,EAAuC,qCAsBhC,SAASH,EAAa,CAC3B,SAAAI,EACA,WAAAC,EAAa,MACf,EAAsB,CAoBpB,OACE,EAAAC,QAAA,cAAC,OAAI,GAAG,KACN,EAAAA,QAAA,cAAC,QAAK,KAAK,IAAI,QAAQ,QACrB,EAAAA,QAAA,cAAC,QACC,QAAQ,SACR,MAAM,SACN,GAAG,IACH,UAAU,QACV,MA1BND,IAAe,OACX,CACE,gBACE,8DACF,eAAgB,YAChB,mBAAoB,SACpB,gBAAiB,eACnB,EACAA,IAAe,OACb,CACE,gBACE,kHACF,eAAgB,YAChB,mBAAoB,SACpB,gBAAiB,eACnB,EACA,QAYA,EAAAC,QAAA,cAAC,SAAM,WAAW,QAAQF,CAAS,CACrC,CACF,CACF,CAEJ",
|
|
6
|
+
"names": ["preview_block_exports", "__export", "PreviewBlock", "__toCommonJS", "import_react", "import_kookie_ui", "children", "background", "React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TableOfContentsProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
/** Heading levels to include (default: [2]) */
|
|
5
|
+
levels?: number[];
|
|
6
|
+
/** Title shown above TOC (default: "On this page") */
|
|
7
|
+
title?: string;
|
|
8
|
+
/** Optional wrapper for the TOC content */
|
|
9
|
+
renderContainer?: (tocContent: React.ReactNode) => React.ReactNode | null;
|
|
10
|
+
}
|
|
11
|
+
export declare const TableOfContents: React.NamedExoticComponent<TableOfContentsProps>;
|
|
12
|
+
//# sourceMappingURL=table-of-contents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-of-contents.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/table-of-contents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAa9E,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;CAC3E;AAED,eAAO,MAAM,eAAe,kDAmI1B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";"use client";var O=Object.create;var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var R=(t,n)=>{for(var o in n)g(t,o,{get:n[o],enumerable:!0})},y=(t,n,o,f)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of A(n))!E.call(t,l)&&l!==o&&g(t,l,{get:()=>n[l],enumerable:!(f=S(n,l))||f.enumerable});return t};var F=(t,n,o)=>(o=t!=null?O(k(t)):{},y(n||!t||!t.__esModule?g(o,"default",{value:t,enumerable:!0}):o,t)),L=t=>y(g({},"__esModule",{value:!0}),t);var P={};R(P,{TableOfContents:()=>q});module.exports=L(P);var e=F(require("react")),a=require("@kushagradhawan/kookie-ui");const N=t=>t.toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").trim(),q=(0,e.memo)(function({className:n,levels:o=[2],title:f="On this page",renderContainer:l}){const[b,C]=(0,e.useState)([]),[I,T]=(0,e.useState)(""),i=(0,e.useRef)(null),m=(0,e.useRef)(null),d=(0,e.useRef)(null),x=(0,e.useCallback)(()=>{m.current=requestAnimationFrame(()=>{const c=document.querySelector("[data-content-area]");if(!c)return;const w=o.map(r=>`h${r}`).join(", "),p=Array.from(c.querySelectorAll(w)).map(r=>{const u=r.textContent||"";let s=r.id;return!s&&u&&(s=N(u),r.id=s),{id:s,text:u,level:parseInt(r.tagName.charAt(1))}}).filter(r=>r.id&&r.text);if(C(p),i.current&&(i.current.disconnect(),i.current=null),p.length>0){const r=new IntersectionObserver(u=>{u.forEach(s=>{s.isIntersecting&&T(s.target.id)})},{rootMargin:"-20% 0% -35% 0%"});p.forEach(({id:u})=>{const s=document.getElementById(u);s&&r.observe(s)}),i.current=r}})},[o]);(0,e.useEffect)(()=>(d.current=window.setTimeout(()=>{x()},100),()=>{d.current&&(clearTimeout(d.current),d.current=null),m.current&&(cancelAnimationFrame(m.current),m.current=null),i.current&&(i.current.disconnect(),i.current=null)}),[x]);const v=(0,e.useCallback)(c=>({display:"block",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",paddingLeft:c>2?`${(c-2)*12}px`:"0"}),[]);if(b.length===0)return null;const h=e.default.createElement(a.Flex,{direction:"column",gap:"3",className:n},e.default.createElement(a.Text,{size:"1",weight:"medium",color:"gray"},f),e.default.createElement(a.Flex,{direction:"column",gap:"2"},b.map(c=>e.default.createElement(a.Link,{key:c.id,color:"gray",highContrast:I===c.id,size:"1",href:`#${c.id}`,style:v(c.level)},c.text))));return l?l(h):h});
|
|
2
|
+
//# sourceMappingURL=table-of-contents.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/table-of-contents.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport React, { useEffect, useState, useCallback, useRef, memo } from 'react';\nimport { Box, Text, Link, Flex } from '@kushagradhawan/kookie-ui';\nimport type { TocItem } from './types.js';\n\n// Generate slug from heading text\nconst generateSlug = (text: string): string => {\n return text\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .trim();\n};\n\nexport interface TableOfContentsProps {\n className?: string;\n /** Heading levels to include (default: [2]) */\n levels?: number[];\n /** Title shown above TOC (default: \"On this page\") */\n title?: string;\n /** Optional wrapper for the TOC content */\n renderContainer?: (tocContent: React.ReactNode) => React.ReactNode | null;\n}\n\nexport const TableOfContents = memo(function TableOfContents({\n className,\n levels = [2],\n title = 'On this page',\n renderContainer,\n}: TableOfContentsProps) {\n const [toc, setToc] = useState<TocItem[]>([]);\n const [activeId, setActiveId] = useState<string>('');\n const observerRef = useRef<IntersectionObserver | null>(null);\n const rafIdRef = useRef<number | null>(null);\n const timeoutIdRef = useRef<number | null>(null);\n\n const extractHeadings = useCallback(() => {\n rafIdRef.current = requestAnimationFrame(() => {\n const contentArea = document.querySelector('[data-content-area]');\n if (!contentArea) return;\n\n // Build selector from levels\n const selector = levels.map((l) => `h${l}`).join(', ');\n const headingElements = Array.from(contentArea.querySelectorAll(selector));\n\n const headings = headingElements\n .map((heading) => {\n const text = heading.textContent || '';\n let id = heading.id;\n\n if (!id && text) {\n id = generateSlug(text);\n heading.id = id;\n }\n\n return {\n id,\n text,\n level: parseInt(heading.tagName.charAt(1)),\n };\n })\n .filter((item) => item.id && item.text);\n\n setToc(headings);\n\n // Disconnect any previous observer\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n\n if (headings.length > 0) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id);\n }\n });\n },\n { rootMargin: '-20% 0% -35% 0%' }\n );\n\n headings.forEach(({ id }) => {\n const element = document.getElementById(id);\n if (element) observer.observe(element);\n });\n\n observerRef.current = observer;\n }\n });\n }, [levels]);\n\n useEffect(() => {\n // Initial extraction with delay for DOM readiness\n timeoutIdRef.current = window.setTimeout(() => {\n extractHeadings();\n }, 100);\n\n return () => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n if (rafIdRef.current) {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n };\n }, [extractHeadings]);\n\n const getLinkStyle = useCallback(\n (level: number): React.CSSProperties => ({\n display: 'block',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingLeft: level > 2 ? `${(level - 2) * 12}px` : '0',\n }),\n []\n );\n\n if (toc.length === 0) return null;\n\n const tocContent = (\n <Flex direction=\"column\" gap=\"3\" className={className}>\n <Text size=\"1\" weight=\"medium\" color=\"gray\">\n {title}\n </Text>\n <Flex direction=\"column\" gap=\"2\">\n {toc.map((item) => (\n <Link\n key={item.id}\n color=\"gray\"\n highContrast={activeId === item.id}\n size=\"1\"\n href={`#${item.id}`}\n style={getLinkStyle(item.level)}\n >\n {item.text}\n </Link>\n ))}\n </Flex>\n </Flex>\n );\n\n if (renderContainer) {\n return renderContainer(tocContent);\n }\n\n return tocContent;\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["table_of_contents_exports", "__export", "TableOfContents", "__toCommonJS", "import_react", "import_kookie_ui", "generateSlug", "text", "className", "levels", "title", "renderContainer", "toc", "setToc", "activeId", "setActiveId", "observerRef", "rafIdRef", "timeoutIdRef", "extractHeadings", "contentArea", "selector", "l", "headings", "heading", "id", "item", "observer", "entries", "entry", "element", "getLinkStyle", "level", "tocContent", "React"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactNode, ComponentType } from 'react';
|
|
2
|
+
type IconSvgObject = readonly (readonly [string, {
|
|
3
|
+
readonly [key: string]: string | number;
|
|
4
|
+
}])[];
|
|
5
|
+
export interface DocsNavigationItem {
|
|
6
|
+
href: string;
|
|
7
|
+
title: string;
|
|
8
|
+
icon?: ComponentType<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}> | ReactNode | IconSvgObject;
|
|
11
|
+
badge?: string;
|
|
12
|
+
items?: DocsNavigationItem[];
|
|
13
|
+
}
|
|
14
|
+
export interface DocsNavigationGroup {
|
|
15
|
+
label: string;
|
|
16
|
+
items: DocsNavigationItem[];
|
|
17
|
+
}
|
|
18
|
+
export interface DocsNavigationConfig {
|
|
19
|
+
groups: DocsNavigationGroup[];
|
|
20
|
+
}
|
|
21
|
+
export interface DocsPageMeta {
|
|
22
|
+
title: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
category?: string;
|
|
25
|
+
source?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface DocsLogoConfig {
|
|
28
|
+
src: string;
|
|
29
|
+
alt?: string;
|
|
30
|
+
href?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface TocItem {
|
|
33
|
+
id: string;
|
|
34
|
+
text: string;
|
|
35
|
+
level: number;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtD,KAAK,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAAC,EAAE,CAAC;AAGjG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAGD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var c=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of a(t))!g.call(e,i)&&i!==n&&o(e,i,{get:()=>t[i],enumerable:!(r=s(t,i))||r.enumerable});return e};var p=e=>c(o({},"__esModule",{value:!0}),e);var m={};module.exports=p(m);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/types.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ReactNode, ComponentType } from 'react';\n\n// HugeIcons IconSvgObject type - readonly array of tuples with tag name and attributes\ntype IconSvgObject = readonly (readonly [string, { readonly [key: string]: string | number }])[];\n\n// Navigation types\nexport interface DocsNavigationItem {\n href: string;\n title: string;\n // Support React components, ReactNode, or HugeIcons IconSvgObject format\n icon?: ComponentType<{ className?: string }> | ReactNode | IconSvgObject;\n badge?: string;\n items?: DocsNavigationItem[];\n}\n\nexport interface DocsNavigationGroup {\n label: string;\n items: DocsNavigationItem[];\n}\n\nexport interface DocsNavigationConfig {\n groups: DocsNavigationGroup[];\n}\n\n// Page metadata types\nexport interface DocsPageMeta {\n title: string;\n description?: string;\n category?: string;\n source?: string;\n}\n\n// Logo configuration\nexport interface DocsLogoConfig {\n src: string;\n alt?: string;\n href?: string;\n}\n\n// Table of contents types\nexport interface TocItem {\n id: string;\n text: string;\n level: number;\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var t=(f,
|
|
1
|
+
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var t=(f,e,p,x)=>{if(e&&typeof e=="object"||typeof e=="function")for(let m of c(e))!d.call(f,m)&&m!==p&&a(f,m,{get:()=>e[m],enumerable:!(x=b(e,m))||x.enumerable});return f},r=(f,e,p)=>(t(f,e,"default"),p&&t(p,e,"default"));var g=f=>t(a({},"__esModule",{value:!0}),f);var o={};module.exports=g(o);r(o,require("./code/index.js"),module.exports);r(o,require("./docs/index.js"),module.exports);r(o,require("./hero/index.js"),module.exports);r(o,require("./markdown/index.js"),module.exports);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './code/index.js';\nexport * from './hero/index.js';\nexport * from './markdown/index.js';\n"],
|
|
5
|
-
"mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAAAE,EAAAF,EAAc,2BAAd,gBACAE,EAAAF,EAAc,2BADd,gBAEAE,EAAAF,EAAc,+
|
|
4
|
+
"sourcesContent": ["export * from './code/index.js';\nexport * from './docs/index.js';\nexport * from './hero/index.js';\nexport * from './markdown/index.js';\n"],
|
|
5
|
+
"mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAAAE,EAAAF,EAAc,2BAAd,gBACAE,EAAAF,EAAc,2BADd,gBAEAE,EAAAF,EAAc,2BAFd,gBAGAE,EAAAF,EAAc,+BAHd",
|
|
6
6
|
"names": ["components_exports", "__toCommonJS", "__reExport"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsPageMeta } from './types.js';
|
|
3
|
+
export interface DocsPageHeaderProps {
|
|
4
|
+
/** Page metadata */
|
|
5
|
+
meta: DocsPageMeta;
|
|
6
|
+
/** Optional actions to render on the right side */
|
|
7
|
+
actions?: React.ReactNode;
|
|
8
|
+
/** Show copy page button */
|
|
9
|
+
showCopyButton?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function DocsPageHeader({ meta, actions, showCopyButton }: DocsPageHeaderProps): React.JSX.Element;
|
|
12
|
+
//# sourceMappingURL=docs-page-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-page-header.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-page-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAqB,EAAE,EAAE,mBAAmB,qBA0E3F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";import o,{useCallback as p}from"react";import{Flex as n,Heading as l,Text as i,Link as u,Button as d}from"@kushagradhawan/kookie-ui";import{HugeiconsIcon as y}from"@hugeicons/react";import{Copy01Icon as f}from"@hugeicons/core-free-icons";function P({meta:e,actions:c,showCopyButton:s=!0}){const a=p(()=>{const t=document.querySelector("[data-content-area]");if(!t)return;let r=`# ${e.title}
|
|
2
|
+
|
|
3
|
+
`;e.description&&(r+=`${e.description}
|
|
4
|
+
|
|
5
|
+
`),e.source&&(r+=`[View source](${e.source})
|
|
6
|
+
|
|
7
|
+
`),r+=`---
|
|
8
|
+
|
|
9
|
+
`;const g=t.textContent||"";r+=g.trim(),navigator.clipboard.writeText(r)},[e.title,e.description,e.source]);return o.createElement(n,{direction:"column",gap:"4"},e.category&&o.createElement(i,{size:"2",weight:"medium"},e.category),o.createElement(n,{align:"center",justify:"between",gap:"4"},o.createElement(l,{as:"h1",size:"9",weight:"medium"},e.title),o.createElement(n,{align:"center",gap:"4"},c,s&&o.createElement(d,{size:"2",variant:"ghost",color:"gray",highContrast:!0,onClick:a,"aria-label":"Copy page content"},o.createElement(y,{icon:f}),"Copy page"))),e.description&&o.createElement(i,{size:"3",color:"gray"},e.description),e.source&&o.createElement(u,{size:"3",href:e.source,target:"_blank",color:"gray",highContrast:!0,rel:"noreferrer"},"View source \u2192"))}export{P as DocsPageHeader};
|
|
10
|
+
//# sourceMappingURL=docs-page-header.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/docs/docs-page-header.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport React, { useCallback } from 'react';\nimport { Flex, Heading, Text, Link, Button } from '@kushagradhawan/kookie-ui';\nimport { HugeiconsIcon } from '@hugeicons/react';\nimport { Copy01Icon } from '@hugeicons/core-free-icons';\nimport type { DocsPageMeta } from './types.js';\n\nexport interface DocsPageHeaderProps {\n /** Page metadata */\n meta: DocsPageMeta;\n /** Optional actions to render on the right side */\n actions?: React.ReactNode;\n /** Show copy page button */\n showCopyButton?: boolean;\n}\n\nexport function DocsPageHeader({ meta, actions, showCopyButton = true }: DocsPageHeaderProps) {\n const handleCopyPage = useCallback(() => {\n const contentArea = document.querySelector('[data-content-area]');\n if (!contentArea) return;\n\n let markdown = `# ${meta.title}\\n\\n`;\n\n if (meta.description) {\n markdown += `${meta.description}\\n\\n`;\n }\n\n if (meta.source) {\n markdown += `[View source](${meta.source})\\n\\n`;\n }\n\n markdown += `---\\n\\n`;\n\n const textContent = contentArea.textContent || '';\n markdown += textContent.trim();\n\n navigator.clipboard.writeText(markdown);\n }, [meta.title, meta.description, meta.source]);\n\n return (\n <Flex direction=\"column\" gap=\"4\">\n {meta.category && (\n <Text size=\"2\" weight=\"medium\">\n {meta.category}\n </Text>\n )}\n\n <Flex align=\"center\" justify=\"between\" gap=\"4\">\n <Heading as=\"h1\" size=\"9\" weight=\"medium\">\n {meta.title}\n </Heading>\n\n <Flex align=\"center\" gap=\"4\">\n {actions}\n {showCopyButton && (\n <Button\n size=\"2\"\n variant=\"ghost\"\n color=\"gray\"\n highContrast\n onClick={handleCopyPage}\n aria-label=\"Copy page content\"\n >\n <HugeiconsIcon icon={Copy01Icon} />\n Copy page\n </Button>\n )}\n </Flex>\n </Flex>\n\n {meta.description && (\n <Text size=\"3\" color=\"gray\">\n {meta.description}\n </Text>\n )}\n\n {meta.source && (\n <Link\n size=\"3\"\n href={meta.source}\n target=\"_blank\"\n color=\"gray\"\n highContrast\n rel=\"noreferrer\"\n >\n View source \u2192\n </Link>\n )}\n </Flex>\n );\n}\n"],
|
|
5
|
+
"mappings": "aAEA,OAAOA,GAAS,eAAAC,MAAmB,QACnC,OAAS,QAAAC,EAAM,WAAAC,EAAS,QAAAC,EAAM,QAAAC,EAAM,UAAAC,MAAc,4BAClD,OAAS,iBAAAC,MAAqB,mBAC9B,OAAS,cAAAC,MAAkB,6BAYpB,SAASC,EAAe,CAAE,KAAAC,EAAM,QAAAC,EAAS,eAAAC,EAAiB,EAAK,EAAwB,CAC5F,MAAMC,EAAiBZ,EAAY,IAAM,CACvC,MAAMa,EAAc,SAAS,cAAc,qBAAqB,EAChE,GAAI,CAACA,EAAa,OAElB,IAAIC,EAAW,KAAKL,EAAK,KAAK;AAAA;AAAA,EAE1BA,EAAK,cACPK,GAAY,GAAGL,EAAK,WAAW;AAAA;AAAA,GAG7BA,EAAK,SACPK,GAAY,iBAAiBL,EAAK,MAAM;AAAA;AAAA,GAG1CK,GAAY;AAAA;AAAA,EAEZ,MAAMC,EAAcF,EAAY,aAAe,GAC/CC,GAAYC,EAAY,KAAK,EAE7B,UAAU,UAAU,UAAUD,CAAQ,CACxC,EAAG,CAACL,EAAK,MAAOA,EAAK,YAAaA,EAAK,MAAM,CAAC,EAE9C,OACEV,EAAA,cAACE,EAAA,CAAK,UAAU,SAAS,IAAI,KAC1BQ,EAAK,UACJV,EAAA,cAACI,EAAA,CAAK,KAAK,IAAI,OAAO,UACnBM,EAAK,QACR,EAGFV,EAAA,cAACE,EAAA,CAAK,MAAM,SAAS,QAAQ,UAAU,IAAI,KACzCF,EAAA,cAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,OAAO,UAC9BO,EAAK,KACR,EAEAV,EAAA,cAACE,EAAA,CAAK,MAAM,SAAS,IAAI,KACtBS,EACAC,GACCZ,EAAA,cAACM,EAAA,CACC,KAAK,IACL,QAAQ,QACR,MAAM,OACN,aAAY,GACZ,QAASO,EACT,aAAW,qBAEXb,EAAA,cAACO,EAAA,CAAc,KAAMC,EAAY,EAAE,WAErC,CAEJ,CACF,EAECE,EAAK,aACJV,EAAA,cAACI,EAAA,CAAK,KAAK,IAAI,MAAM,QAClBM,EAAK,WACR,EAGDA,EAAK,QACJV,EAAA,cAACK,EAAA,CACC,KAAK,IACL,KAAMK,EAAK,OACX,OAAO,SACP,MAAM,OACN,aAAY,GACZ,IAAI,cACL,oBAED,CAEJ,CAEJ",
|
|
6
|
+
"names": ["React", "useCallback", "Flex", "Heading", "Text", "Link", "Button", "HugeiconsIcon", "Copy01Icon", "DocsPageHeader", "meta", "actions", "showCopyButton", "handleCopyPage", "contentArea", "markdown", "textContent"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocsPageMeta } from './types.js';
|
|
3
|
+
export interface DocsPageProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Page metadata for header */
|
|
6
|
+
meta?: DocsPageMeta;
|
|
7
|
+
/** Optional table of contents element */
|
|
8
|
+
tableOfContents?: React.ReactNode;
|
|
9
|
+
/** Content max width */
|
|
10
|
+
maxWidth?: string | number;
|
|
11
|
+
/** Page padding */
|
|
12
|
+
padding?: '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
|
13
|
+
/** Optional header actions */
|
|
14
|
+
headerActions?: React.ReactNode;
|
|
15
|
+
/** Custom header element (overrides meta-based header) */
|
|
16
|
+
header?: React.ReactNode;
|
|
17
|
+
/** Show footer with copyright */
|
|
18
|
+
showFooter?: boolean;
|
|
19
|
+
/** Footer copyright holder */
|
|
20
|
+
footerCopyright?: {
|
|
21
|
+
name: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
};
|
|
24
|
+
/** GitHub repo URL for footer */
|
|
25
|
+
githubUrl?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function DocsPage({ children, meta, tableOfContents, maxWidth, padding, headerActions, header, showFooter, footerCopyright, githubUrl, }: DocsPageProps): React.JSX.Element;
|
|
28
|
+
//# sourceMappingURL=docs-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-page.d.ts","sourceRoot":"","sources":["../../../../src/components/docs/docs-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yCAAyC;IACzC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,mBAAmB;IACnB,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAClD,8BAA8B;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,QAAkB,EAClB,OAAa,EACb,aAAa,EACb,MAAM,EACN,UAAkB,EAClB,eAAe,EACf,SAAS,GACV,EAAE,aAAa,qBAyDf"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"react";import{Flex as i,Box as l,Separator as g,Container as x,Text as u,Link as s}from"@kushagradhawan/kookie-ui";import{DocsPageHeader as h}from"./docs-page-header.js";function D({children:d,meta:r,tableOfContents:o,maxWidth:f="48rem",padding:w="6",headerActions:m,header:t,showFooter:p=!1,footerCopyright:n,githubUrl:a}){const c=new Date().getFullYear();return e.createElement(i,{my:"6",gap:{initial:"6",md:"6"},align:"start",direction:{initial:"column",lg:"row"}},e.createElement(i,{direction:"column",gap:"6",p:{initial:"2",sm:"4"},flexGrow:"1",style:{minWidth:0}},e.createElement(x,{size:"2",style:{minWidth:0},"data-content-area":!0},e.createElement(l,{p:"4",width:"100%"},e.createElement(i,{direction:"column",gap:"8",width:"100%"},t||r&&e.createElement(h,{meta:r,actions:m}),(t||r)&&e.createElement(g,{size:"4"}),e.createElement(i,{direction:"column",gap:"0",width:"100%"},d)),p&&e.createElement(i,{align:"center",justify:"center",width:"100%",pt:"8"},e.createElement(u,{size:"2",color:"gray",align:"center"},"\xA9 ",c," ",n?.url?e.createElement(s,{href:n.url,target:"_blank",rel:"noreferrer"},n.name):n?.name||"Your Company",". Licensed under MIT.",a&&e.createElement(e.Fragment,null," ",e.createElement(s,{href:a,target:"_blank",rel:"noreferrer"},"GitHub"),".")))))),o&&e.createElement(l,{style:{width:"240px",minWidth:"160px"},position:"sticky",top:"200px",display:{initial:"none",lg:"block"}},o))}export{D as DocsPage};
|
|
2
|
+
//# sourceMappingURL=docs-page.js.map
|