robindoc 3.2.0 → 3.3.0
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/LICENSE +1 -1
- package/README.md +1 -1
- package/lib/components/blocks/anchor-heading/index.js.map +1 -1
- package/lib/components/blocks/breadcrumbs/index.js +1 -1
- package/lib/components/blocks/breadcrumbs/index.js.map +1 -1
- package/lib/components/blocks/code-section/index.js.map +1 -1
- package/lib/components/blocks/contents/index.js +1 -1
- package/lib/components/blocks/contents/index.js.map +1 -1
- package/lib/components/blocks/header-menu/index.js +1 -1
- package/lib/components/blocks/header-menu/index.js.map +1 -1
- package/lib/components/blocks/header-social/index.js +1 -1
- package/lib/components/blocks/header-social/index.js.map +1 -1
- package/lib/components/blocks/last-modified/index.js +1 -1
- package/lib/components/blocks/last-modified/index.js.map +1 -1
- package/lib/components/blocks/nav-content-link/index.js +1 -1
- package/lib/components/blocks/nav-content-link/index.js.map +1 -1
- package/lib/components/blocks/nav-link/index.d.ts +5 -18
- package/lib/components/blocks/nav-link/index.d.ts.map +1 -1
- package/lib/components/blocks/nav-link/index.js +1 -1
- package/lib/components/blocks/nav-link/index.js.map +1 -1
- package/lib/components/blocks/no-js/index.js.map +1 -1
- package/lib/components/blocks/pagination/index.js.map +1 -1
- package/lib/components/blocks/search/index.js +1 -1
- package/lib/components/blocks/search/index.js.map +1 -1
- package/lib/components/blocks/search/search-modal/index.js +1 -1
- package/lib/components/blocks/search/search-modal/index.js.map +1 -1
- package/lib/components/blocks/section-dropdown/index.js +1 -1
- package/lib/components/blocks/section-dropdown/index.js.map +1 -1
- package/lib/components/blocks/theme-detector/index.js +1 -1
- package/lib/components/blocks/theme-detector/index.js.map +1 -1
- package/lib/components/blocks/theme-styles/index.js +1 -1
- package/lib/components/blocks/theme-styles/index.js.map +1 -1
- package/lib/components/blocks/theme-switcher/index.js.map +1 -1
- package/lib/components/contexts/contents/context.d.ts +0 -1
- package/lib/components/contexts/contents/context.d.ts.map +1 -1
- package/lib/components/contexts/contents/context.js.map +1 -1
- package/lib/components/contexts/contents/provider.js +1 -1
- package/lib/components/contexts/contents/provider.js.map +1 -1
- package/lib/components/contexts/contents/use-heading-index.js.map +1 -1
- package/lib/components/contexts/contents/use-heading-register.js +1 -1
- package/lib/components/contexts/contents/use-heading-register.js.map +1 -1
- package/lib/components/contexts/navigate/context.d.ts +0 -1
- package/lib/components/contexts/navigate/context.d.ts.map +1 -1
- package/lib/components/contexts/navigate/context.js.map +1 -1
- package/lib/components/contexts/navigate/provider.js +1 -1
- package/lib/components/contexts/navigate/provider.js.map +1 -1
- package/lib/components/contexts/navigate/use-navigate.js +1 -1
- package/lib/components/contexts/navigate/use-navigate.js.map +1 -1
- package/lib/components/contexts/reference/context.d.ts +0 -1
- package/lib/components/contexts/reference/context.d.ts.map +1 -1
- package/lib/components/contexts/reference/context.js.map +1 -1
- package/lib/components/contexts/reference/provider.js.map +1 -1
- package/lib/components/contexts/reference/use-reference.js.map +1 -1
- package/lib/components/elements/article/document.d.ts.map +1 -1
- package/lib/components/elements/article/document.js +1 -1
- package/lib/components/elements/article/document.js.map +1 -1
- package/lib/components/elements/article/index.js.map +1 -1
- package/lib/components/elements/article/utils.d.ts +1 -1
- package/lib/components/elements/article/utils.d.ts.map +1 -1
- package/lib/components/elements/article/utils.js +1 -1
- package/lib/components/elements/article/utils.js.map +1 -1
- package/lib/components/elements/footer/index.js.map +1 -1
- package/lib/components/elements/header/index.js +1 -1
- package/lib/components/elements/header/index.js.map +1 -1
- package/lib/components/elements/keylink-to-content/index.js.map +1 -1
- package/lib/components/elements/keylink-to-navigation/index.js.map +1 -1
- package/lib/components/elements/robin-provider/index.js.map +1 -1
- package/lib/components/elements/sidebar/index.js +1 -1
- package/lib/components/elements/sidebar/index.js.map +1 -1
- package/lib/components/elements/sidebar/sidebar-drop/index.js +1 -1
- package/lib/components/elements/sidebar/sidebar-drop/index.js.map +1 -1
- package/lib/components/elements/sidebar/sidebar-link/index.js.map +1 -1
- package/lib/components/elements/sidebar/sidebar-menu/index.js +1 -1
- package/lib/components/elements/sidebar/sidebar-menu/index.js.map +1 -1
- package/lib/components/elements/sidebar/tools.d.ts.map +1 -1
- package/lib/components/elements/sidebar/tools.js +1 -1
- package/lib/components/elements/sidebar/tools.js.map +1 -1
- package/lib/components/ui/backdrop/index.js.map +1 -1
- package/lib/components/ui/block/index.js.map +1 -1
- package/lib/components/ui/blockquote/data.d.ts +0 -1
- package/lib/components/ui/blockquote/data.d.ts.map +1 -1
- package/lib/components/ui/blockquote/data.js +1 -1
- package/lib/components/ui/blockquote/data.js.map +1 -1
- package/lib/components/ui/blockquote/icons.js.map +1 -1
- package/lib/components/ui/blockquote/index.js.map +1 -1
- package/lib/components/ui/code-block/index.js +1 -1
- package/lib/components/ui/code-block/index.js.map +1 -1
- package/lib/components/ui/code-block/theme.js.map +1 -1
- package/lib/components/ui/code-span/index.js.map +1 -1
- package/lib/components/ui/container/index.js.map +1 -1
- package/lib/components/ui/content-link/index.d.ts.map +1 -1
- package/lib/components/ui/content-link/index.js.map +1 -1
- package/lib/components/ui/copy-button/index.js +1 -1
- package/lib/components/ui/copy-button/index.js.map +1 -1
- package/lib/components/ui/copy-text/index.js +1 -1
- package/lib/components/ui/copy-text/index.js.map +1 -1
- package/lib/components/ui/del/index.js.map +1 -1
- package/lib/components/ui/em/index.js.map +1 -1
- package/lib/components/ui/external-mark/index.js.map +1 -1
- package/lib/components/ui/git-logos/index.js.map +1 -1
- package/lib/components/ui/heading/index.js +1 -1
- package/lib/components/ui/heading/index.js.map +1 -1
- package/lib/components/ui/hr/index.js.map +1 -1
- package/lib/components/ui/img/index.js.map +1 -1
- package/lib/components/ui/list/list-item/index.js.map +1 -1
- package/lib/components/ui/list/ordered-list/index.js.map +1 -1
- package/lib/components/ui/list/unordered-list/index.js.map +1 -1
- package/lib/components/ui/modal/index.js.map +1 -1
- package/lib/components/ui/modal/use-modal.js +1 -1
- package/lib/components/ui/modal/use-modal.js.map +1 -1
- package/lib/components/ui/paragraph/index.js.map +1 -1
- package/lib/components/ui/strong/index.js.map +1 -1
- package/lib/components/ui/table/table/index.js.map +1 -1
- package/lib/components/ui/table/tbody/index.js.map +1 -1
- package/lib/components/ui/table/td/index.js.map +1 -1
- package/lib/components/ui/table/th/index.js.map +1 -1
- package/lib/components/ui/table/thead/index.js.map +1 -1
- package/lib/components/ui/table/tr/index.js.map +1 -1
- package/lib/components/ui/tabs/index.js +1 -1
- package/lib/components/ui/tabs/index.js.map +1 -1
- package/lib/components/ui/tabs/tabs-header/index.js +1 -1
- package/lib/components/ui/tabs/tabs-header/index.js.map +1 -1
- package/lib/components/ui/tabs/tabs-styles/index.js +1 -1
- package/lib/components/ui/tabs/tabs-styles/index.js.map +1 -1
- package/lib/components/ui/task-list/task-list-item/index.js.map +1 -1
- package/lib/components/ui/task-list/task-unordered-list/index.js.map +1 -1
- package/lib/components/ui/tooltip/index.js.map +1 -1
- package/lib/core/data/contents.js.map +1 -1
- package/lib/core/hooks/use-debouncer.d.ts.map +1 -1
- package/lib/core/hooks/use-debouncer.js +1 -1
- package/lib/core/hooks/use-debouncer.js.map +1 -1
- package/lib/core/hooks/use-system-type.js +1 -1
- package/lib/core/hooks/use-system-type.js.map +1 -1
- package/lib/core/providers/base.js +1 -1
- package/lib/core/providers/base.js.map +1 -1
- package/lib/core/providers/file-system.js +1 -1
- package/lib/core/providers/file-system.js.map +1 -1
- package/lib/core/providers/github.js +1 -1
- package/lib/core/providers/github.js.map +1 -1
- package/lib/core/types/content.d.ts +0 -1
- package/lib/core/types/content.d.ts.map +1 -1
- package/lib/core/utils/content-tools.d.ts.map +1 -1
- package/lib/core/utils/content-tools.js +1 -1
- package/lib/core/utils/content-tools.js.map +1 -1
- package/lib/core/utils/create-base-searcher.d.ts.map +1 -1
- package/lib/core/utils/create-base-searcher.js +1 -1
- package/lib/core/utils/create-base-searcher.js.map +1 -1
- package/lib/core/utils/detect-provider.d.ts.map +1 -1
- package/lib/core/utils/detect-provider.js.map +1 -1
- package/lib/core/utils/get-configuration.d.ts.map +1 -1
- package/lib/core/utils/get-configuration.js.map +1 -1
- package/lib/core/utils/get-metadata.d.ts.map +1 -1
- package/lib/core/utils/get-metadata.js +1 -1
- package/lib/core/utils/get-metadata.js.map +1 -1
- package/lib/core/utils/git-tools.d.ts.map +1 -1
- package/lib/core/utils/git-tools.js.map +1 -1
- package/lib/core/utils/initialize-robindoc.d.ts.map +1 -1
- package/lib/core/utils/initialize-robindoc.js +1 -1
- package/lib/core/utils/initialize-robindoc.js.map +1 -1
- package/lib/core/utils/load-content.d.ts.map +1 -1
- package/lib/core/utils/load-content.js.map +1 -1
- package/lib/core/utils/parse-structure.d.ts.map +1 -1
- package/lib/core/utils/parse-structure.js.map +1 -1
- package/lib/core/utils/path-tools.d.ts.map +1 -1
- package/lib/core/utils/path-tools.js +1 -1
- package/lib/core/utils/path-tools.js.map +1 -1
- package/lib/core/utils/tabs-tools.d.ts.map +1 -1
- package/lib/core/utils/tabs-tools.js +1 -1
- package/lib/core/utils/tabs-tools.js.map +1 -1
- package/lib/styles.css +2045 -2
- package/package.json +31 -29
- package/lib/styles.css.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2024
|
|
3
|
+
Copyright (c) 2024 Alex Savelyev <dev@alexdln.com>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/anchor-heading/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { useHeadingRegister } from \"@src/components/contexts/contents/use-heading-register\";\nimport { Heading } from \"@src/components/ui/heading\";\n\nimport \"./anchor-heading.scss\";\n\ninterface AnchorHeadingProps extends React.PropsWithChildren {\n id: string;\n component: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nexport const AnchorHeading: React.FC<AnchorHeadingProps> = ({ component: Component, id, children }) => {\n const register = useHeadingRegister();\n\n return (\n <Heading component={Component} id={id} className=\"r-anchor-heading\" ref={register}>\n {children} \n <a href={`#${id}`} className=\"r-anchor-heading-link\" />\n </Heading>\n );\n};\n"],"names":["AnchorHeading","component","Component","id","children","register","useHeadingRegister","React","createElement","Heading","className","ref","href"],"mappings":";8JAaO,MAAMA,CAA8C,CAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/anchor-heading/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { useHeadingRegister } from \"@src/components/contexts/contents/use-heading-register\";\nimport { Heading } from \"@src/components/ui/heading\";\n\nimport \"./anchor-heading.scss\";\n\ninterface AnchorHeadingProps extends React.PropsWithChildren {\n id: string;\n component: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nexport const AnchorHeading: React.FC<AnchorHeadingProps> = ({ component: Component, id, children }) => {\n const register = useHeadingRegister();\n\n return (\n <Heading component={Component} id={id} className=\"r-anchor-heading\" ref={register}>\n {children} \n <a href={`#${id}`} className=\"r-anchor-heading-link\" />\n </Heading>\n );\n};\n"],"names":["AnchorHeading","component","Component","id","children","register","useHeadingRegister","React","createElement","Heading","className","ref","href"],"mappings":";8JAaO,MAAMA,CAAAA,CAA8C,CAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,CAAAA,CAAWC,KAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACpF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,EAAWC,CAAAA,CAAAA,CAAAA,CAEjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACIC,EAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACC,CAAAA,EAAQR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,EAAWC,CAAAA,CAAAA,CAAIA,CAAAA,CAAIO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmBC,IAAKN,CAAAA,CAAAA,CACpED,CAAAA,KACDG,CAAAA,CAAAC,cAAA,CAAA,CAAA,CAAA,CAAA,CAAGI,KAAM,CAAA,CAAA,CAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAMO,UAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{NavLink as r}from"../nav-link/index.js";const a=async({title:a,breadcrumbs:t})=>e.createElement("ul",{className:"r-breadcrumbs"},t.map(
|
|
1
|
+
import e from"react";import{NavLink as r}from"../nav-link/index.js";const a=async({title:a,breadcrumbs:t})=>e.createElement("ul",{className:"r-breadcrumbs"},t.map(a=>e.createElement("li",{key:a.pathname,className:"r-breadcrumb _previous"},e.createElement(r,{href:a.pathname,className:"r-breadcrumb-link"},a.title))),e.createElement("li",{className:"r-breadcrumb _target"},e.createElement("p",{className:"r-breadcrumb-title"},a)));export{a as Breadcrumbs};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/breadcrumbs/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type Breadcrumbs as BreadcrumbsType } from \"@src/core/types/content\";\nimport { NavLink } from \"../nav-link\";\n\nimport \"./breadcrumbs.scss\";\n\nexport type BreadcrumbsProps = {\n title: string;\n breadcrumbs: BreadcrumbsType;\n};\n\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = async ({ title, breadcrumbs }) => {\n return (\n <ul className=\"r-breadcrumbs\">\n {breadcrumbs.map((breadcrumb) => (\n <li key={breadcrumb.pathname} className=\"r-breadcrumb _previous\">\n <NavLink href={breadcrumb.pathname} className=\"r-breadcrumb-link\">\n {breadcrumb.title}\n </NavLink>\n </li>\n ))}\n <li className=\"r-breadcrumb _target\">\n <p className=\"r-breadcrumb-title\">{title}</p>\n </li>\n </ul>\n );\n};\n"],"names":["Breadcrumbs","async","title","breadcrumbs","React","createElement","className","map","breadcrumb","key","pathname","NavLink","href"],"mappings":"oEAYO,MAAMA,EAA0CC,OAASC,QAAOC,iBAE/DC,EAAAC,cAAA,KAAA,CAAIC,UAAU,iBACTH,EAAYI,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/breadcrumbs/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type Breadcrumbs as BreadcrumbsType } from \"@src/core/types/content\";\nimport { NavLink } from \"../nav-link\";\n\nimport \"./breadcrumbs.scss\";\n\nexport type BreadcrumbsProps = {\n title: string;\n breadcrumbs: BreadcrumbsType;\n};\n\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = async ({ title, breadcrumbs }) => {\n return (\n <ul className=\"r-breadcrumbs\">\n {breadcrumbs.map((breadcrumb) => (\n <li key={breadcrumb.pathname} className=\"r-breadcrumb _previous\">\n <NavLink href={breadcrumb.pathname} className=\"r-breadcrumb-link\">\n {breadcrumb.title}\n </NavLink>\n </li>\n ))}\n <li className=\"r-breadcrumb _target\">\n <p className=\"r-breadcrumb-title\">{title}</p>\n </li>\n </ul>\n );\n};\n"],"names":["Breadcrumbs","async","title","breadcrumbs","React","createElement","className","map","breadcrumb","key","pathname","NavLink","href"],"mappings":"oEAYO,MAAMA,EAA0CC,OAASC,QAAOC,iBAE/DC,EAAAC,cAAA,KAAA,CAAIC,UAAU,iBACTH,EAAYI,IAAKC,GACdJ,EAAAC,cAAA,KAAA,CAAII,IAAKD,EAAWE,SAAUJ,UAAU,0BACpCF,EAAAC,cAACM,EAAO,CAACC,KAAMJ,EAAWE,SAAUJ,UAAU,qBACzCE,EAAWN,SAIxBE,EAAAC,cAAA,KAAA,CAAIC,UAAU,wBACVF,EAAAC,cAAA,IAAA,CAAGC,UAAU,sBAAsBJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/code-section/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { CodeBlock, type CodeBlockProps } from \"@src/components/ui/code-block\";\nimport { CopyButton } from \"@src/components/ui/copy-button\";\nimport { CopyText } from \"../../ui/copy-text\";\n\nimport \"./code-section.scss\";\n\nexport interface CodeSectionProps extends CodeBlockProps {\n filename?: string;\n}\n\nexport const CodeSection: React.FC<CodeSectionProps> = ({ filename, code, ...props }) => (\n <div className=\"r-code-section\">\n {filename ? (\n <div className=\"r-code-section-header\">\n <CopyText className=\"r-code-section-filename\" text={filename} />\n <CopyButton raw={code} />\n </div>\n ) : (\n <CopyButton raw={code} className=\"r-code-section-copy\" />\n )}\n <CodeBlock className=\"r-code-section-block\" code={code} {...props} />\n </div>\n);\n"],"names":["CodeSection","filename","code","props","React","createElement","className","CopyText","text","CopyButton","raw","CodeBlock"],"mappings":"sMAWaA,EAA0C,EAAGC,WAAUC,UAASC,KACzEC,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/code-section/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { CodeBlock, type CodeBlockProps } from \"@src/components/ui/code-block\";\nimport { CopyButton } from \"@src/components/ui/copy-button\";\nimport { CopyText } from \"../../ui/copy-text\";\n\nimport \"./code-section.scss\";\n\nexport interface CodeSectionProps extends CodeBlockProps {\n filename?: string;\n}\n\nexport const CodeSection: React.FC<CodeSectionProps> = ({ filename, code, ...props }) => (\n <div className=\"r-code-section\">\n {filename ? (\n <div className=\"r-code-section-header\">\n <CopyText className=\"r-code-section-filename\" text={filename} />\n <CopyButton raw={code} />\n </div>\n ) : (\n <CopyButton raw={code} className=\"r-code-section-copy\" />\n )}\n <CodeBlock className=\"r-code-section-block\" code={code} {...props} />\n </div>\n);\n"],"names":["CodeSection","filename","code","props","React","createElement","className","CopyText","text","CopyButton","raw","CodeBlock"],"mappings":"sMAWaA,EAA0C,EAAGC,WAAUC,UAASC,KACzEC,EAAAC,cAAA,MAAA,CAAKC,UAAU,kBACVL,EACGG,EAAAC,cAAA,MAAA,CAAKC,UAAU,yBACXF,EAAAC,cAACE,GAASD,UAAU,0BAA0BE,KAAMP,IACpDG,EAAAC,cAACI,GAAWC,IAAKR,KAGrBE,EAAAC,cAACI,EAAU,CAACC,IAAKR,EAAMI,UAAU,wBAErCF,EAAAC,cAACM,EAAS,CAACL,UAAU,uBAAuBJ,KAAMA,KAAUC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{useRef as t,useEffect as n}from"react";import r from"clsx";import{useHeadingIndex as s}from"../../contexts/contents/use-heading-index.js";import{detectGitType as c}from"../../../core/utils/git-tools.js";const o=({headings:o,hideContents:l,editUri:a,translations:i})=>{const m=t(null),d=t(null),h=t(null),p=s(),{onThisPage:u="On this page",editOnService:f="Edit on {service}"}=i||{};return n((
|
|
2
|
+
import e,{useRef as t,useEffect as n}from"react";import r from"clsx";import{useHeadingIndex as s}from"../../contexts/contents/use-heading-index.js";import{detectGitType as c}from"../../../core/utils/git-tools.js";const o=({headings:o,hideContents:l,editUri:a,translations:i})=>{const m=t(null),d=t(null),h=t(null),p=s(),{onThisPage:u="On this page",editOnService:f="Edit on {service}"}=i||{};return n(()=>{h.current&&d.current&&d.current.style.setProperty("--drop-height",h.current.offsetHeight+"px")},[]),e.createElement("div",{className:"r-contents"},e.createElement("div",{className:"r-contents-sticky",ref:m},o.length>0&&!l&&e.createElement(e.Fragment,null,e.createElement("input",{type:"checkbox",className:"r-contents-control",id:"r-contents"}),e.createElement("div",{className:"r-contents-details"},e.createElement("label",{className:"r-contents-title",htmlFor:"r-contents"},u,e.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"r-contents-chevron"},e.createElement("path",{d:"m6 9 6 6 6-6"}))),e.createElement("div",{className:"r-contents-list",ref:d},e.createElement("div",{className:"r-contents-list-content",ref:h},o.map((t,n)=>e.createElement("a",{href:`#${t.id}`,key:t.id,className:r("r-contents-link",t.nested&&"_nested",null!==p&&n<=p&&"_passed",p===n&&"_active"),ref:e=>{e?.offsetTop&&m.current&&m.current.scrollHeight>m.current.clientHeight&&p===n&&m.current.scrollTo({top:Math.max(e.offsetTop-Math.ceil(window.innerHeight/2),0)})}},t.title)))))),a?.match(/^https?:\/\//)&&e.createElement("div",{className:"r-contents-actions"},e.createElement("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"r-contents-git"},f.replace("{service}",c(a).name)))))};export{o as Contents};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/contents/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useHeadingIndex } from \"@src/components/contexts/contents/use-heading-index\";\nimport { detectGitType } from \"@src/core/utils/git-tools\";\n\nimport \"./contents.scss\";\n\nexport interface ContentsProps extends React.PropsWithChildren {\n headings: { id: string; nested: boolean; title: string | React.ReactNode }[];\n hideContents?: boolean;\n editUri?: string | null;\n translations?: {\n /** On this page */\n onThisPage?: string;\n /** Edit on {service} */\n editOnService?: string;\n };\n}\n\nexport const Contents: React.FC<ContentsProps> = ({ headings, hideContents, editUri, translations }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const dropdownContentRef = useRef<HTMLDivElement>(null);\n const headingIndex = useHeadingIndex();\n const { onThisPage = \"On this page\", editOnService = \"Edit on {service}\" } = translations || {};\n\n useEffect(() => {\n if (dropdownContentRef.current && dropdownRef.current) {\n dropdownRef.current.style.setProperty(\"--drop-height\", dropdownContentRef.current.offsetHeight + \"px\");\n }\n }, []);\n\n return (\n <div className=\"r-contents\">\n <div className=\"r-contents-sticky\" ref={containerRef}>\n {headings.length > 0 && !hideContents && (\n <>\n <input type=\"checkbox\" className=\"r-contents-control\" id=\"r-contents\" />\n <div className=\"r-contents-details\">\n <label className=\"r-contents-title\" htmlFor=\"r-contents\">\n {onThisPage}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-contents-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </label>\n <div className=\"r-contents-list\" ref={dropdownRef}>\n <div className=\"r-contents-list-content\" ref={dropdownContentRef}>\n {headings.map((heading, index) => (\n <a\n href={`#${heading.id}`}\n key={heading.id}\n className={clsx(\n \"r-contents-link\",\n heading.nested && \"_nested\",\n headingIndex !== null && index <= headingIndex && \"_passed\",\n headingIndex === index && \"_active\",\n )}\n ref={(node) => {\n if (\n node?.offsetTop &&\n containerRef.current &&\n containerRef.current.scrollHeight >\n containerRef.current.clientHeight &&\n headingIndex === index\n ) {\n containerRef.current.scrollTo({\n top: Math.max(\n node.offsetTop - Math.ceil(window.innerHeight / 2),\n 0,\n ),\n });\n }\n }}\n >\n {heading.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n {editUri?.match(/^https?:\\/\\//) && (\n <div className=\"r-contents-actions\">\n <a href={editUri} target=\"_blank\" rel=\"noopener noreferrer\" className=\"r-contents-git\">\n {editOnService.replace(\"{service}\", detectGitType(editUri).name)}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["Contents","headings","hideContents","editUri","translations","containerRef","useRef","dropdownRef","dropdownContentRef","headingIndex","useHeadingIndex","onThisPage","editOnService","useEffect","current","style","setProperty","offsetHeight","React","createElement","className","ref","length","Fragment","type","id","htmlFor","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","heading","index","href","key","clsx","nested","node","offsetTop","scrollHeight","clientHeight","scrollTo","top","Math","max","ceil","window","innerHeight","title","match","target","rel","replace","detectGitType","name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/contents/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useHeadingIndex } from \"@src/components/contexts/contents/use-heading-index\";\nimport { detectGitType } from \"@src/core/utils/git-tools\";\n\nimport \"./contents.scss\";\n\nexport interface ContentsProps extends React.PropsWithChildren {\n headings: { id: string; nested: boolean; title: string | React.ReactNode }[];\n hideContents?: boolean;\n editUri?: string | null;\n translations?: {\n /** On this page */\n onThisPage?: string;\n /** Edit on {service} */\n editOnService?: string;\n };\n}\n\nexport const Contents: React.FC<ContentsProps> = ({ headings, hideContents, editUri, translations }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const dropdownContentRef = useRef<HTMLDivElement>(null);\n const headingIndex = useHeadingIndex();\n const { onThisPage = \"On this page\", editOnService = \"Edit on {service}\" } = translations || {};\n\n useEffect(() => {\n if (dropdownContentRef.current && dropdownRef.current) {\n dropdownRef.current.style.setProperty(\"--drop-height\", dropdownContentRef.current.offsetHeight + \"px\");\n }\n }, []);\n\n return (\n <div className=\"r-contents\">\n <div className=\"r-contents-sticky\" ref={containerRef}>\n {headings.length > 0 && !hideContents && (\n <>\n <input type=\"checkbox\" className=\"r-contents-control\" id=\"r-contents\" />\n <div className=\"r-contents-details\">\n <label className=\"r-contents-title\" htmlFor=\"r-contents\">\n {onThisPage}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-contents-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </label>\n <div className=\"r-contents-list\" ref={dropdownRef}>\n <div className=\"r-contents-list-content\" ref={dropdownContentRef}>\n {headings.map((heading, index) => (\n <a\n href={`#${heading.id}`}\n key={heading.id}\n className={clsx(\n \"r-contents-link\",\n heading.nested && \"_nested\",\n headingIndex !== null && index <= headingIndex && \"_passed\",\n headingIndex === index && \"_active\",\n )}\n ref={(node) => {\n if (\n node?.offsetTop &&\n containerRef.current &&\n containerRef.current.scrollHeight >\n containerRef.current.clientHeight &&\n headingIndex === index\n ) {\n containerRef.current.scrollTo({\n top: Math.max(\n node.offsetTop - Math.ceil(window.innerHeight / 2),\n 0,\n ),\n });\n }\n }}\n >\n {heading.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n {editUri?.match(/^https?:\\/\\//) && (\n <div className=\"r-contents-actions\">\n <a href={editUri} target=\"_blank\" rel=\"noopener noreferrer\" className=\"r-contents-git\">\n {editOnService.replace(\"{service}\", detectGitType(editUri).name)}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["Contents","headings","hideContents","editUri","translations","containerRef","useRef","dropdownRef","dropdownContentRef","headingIndex","useHeadingIndex","onThisPage","editOnService","useEffect","current","style","setProperty","offsetHeight","React","createElement","className","ref","length","Fragment","type","id","htmlFor","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","heading","index","href","key","clsx","nested","node","offsetTop","scrollHeight","clientHeight","scrollTo","top","Math","max","ceil","window","innerHeight","title","match","target","rel","replace","detectGitType","name"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{useState as r,useEffect as a}from"react";import{useNavigate as t}from"../../contexts/navigate/use-navigate.js";const n=({children:n,translations:s})=>{const{menu:l="Menu"}=s||{},{addListener:o,removeListener:c}=t(),[d,m]=r(!1),i=()=>{document.body.classList.remove("body-tablet-lock"),m(!1),c("closeHeaderMenu")};return a((
|
|
2
|
+
import e,{useState as r,useEffect as a}from"react";import{useNavigate as t}from"../../contexts/navigate/use-navigate.js";const n=({children:n,translations:s})=>{const{menu:l="Menu"}=s||{},{addListener:o,removeListener:c}=t(),[d,m]=r(!1),i=()=>{document.body.classList.remove("body-tablet-lock"),m(!1),c("closeHeaderMenu")};return a(()=>()=>{i()},[]),e.createElement("div",{className:"r-header-menu"},e.createElement("input",{onChange:()=>{d?i():(document.body.classList.add("body-tablet-lock"),m(!0),o("closeHeaderMenu",i))},checked:d,id:"header-burger",type:"checkbox",className:"r-header-input",hidden:!0}),e.createElement("label",{className:"r-header-burger",htmlFor:"header-burger","aria-label":l,role:"button",tabIndex:0},e.createElement("span",{className:"r-burger-line _top"}),e.createElement("span",{className:"r-burger-line _bottom"})),e.createElement("div",{className:"r-header-responsive"},n))};export{n as HeaderMenu};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-menu/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\n\nimport \"./header-menu.scss\";\n\nexport type HeaderMenuProps = React.PropsWithChildren<{\n translations?: {\n /** Menu */\n menu?: string;\n };\n}>;\n\nexport const HeaderMenu: React.FC<HeaderMenuProps> = ({ children, translations }) => {\n const { menu = \"Menu\" } = translations || {};\n const { addListener, removeListener } = useNavigate();\n const [opened, setOpened] = useState(false);\n\n const openHandler = () => {\n document.body.classList.add(\"body-tablet-lock\");\n setOpened(true);\n addListener(\"closeHeaderMenu\", closeHandler);\n };\n\n const closeHandler = () => {\n document.body.classList.remove(\"body-tablet-lock\");\n setOpened(false);\n removeListener(\"closeHeaderMenu\");\n };\n\n const toggleHandler = () => {\n if (opened) {\n closeHandler();\n } else {\n openHandler();\n }\n };\n\n useEffect(\n () => () => {\n closeHandler();\n },\n [],\n );\n\n return (\n <div className=\"r-header-menu\">\n <input\n onChange={toggleHandler}\n checked={opened}\n id=\"header-burger\"\n type=\"checkbox\"\n className=\"r-header-input\"\n hidden\n />\n <label className=\"r-header-burger\" htmlFor=\"header-burger\" aria-label={menu} role=\"button\" tabIndex={0}>\n <span className=\"r-burger-line _top\" />\n <span className=\"r-burger-line _bottom\" />\n </label>\n <div className=\"r-header-responsive\">{children}</div>\n </div>\n );\n};\n"],"names":["HeaderMenu","children","translations","menu","addListener","removeListener","useNavigate","opened","setOpened","useState","closeHandler","document","body","classList","remove","useEffect","React","createElement","className","onChange","add","checked","id","type","hidden","htmlFor","role","tabIndex"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-menu/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\n\nimport \"./header-menu.scss\";\n\nexport type HeaderMenuProps = React.PropsWithChildren<{\n translations?: {\n /** Menu */\n menu?: string;\n };\n}>;\n\nexport const HeaderMenu: React.FC<HeaderMenuProps> = ({ children, translations }) => {\n const { menu = \"Menu\" } = translations || {};\n const { addListener, removeListener } = useNavigate();\n const [opened, setOpened] = useState(false);\n\n const openHandler = () => {\n document.body.classList.add(\"body-tablet-lock\");\n setOpened(true);\n addListener(\"closeHeaderMenu\", closeHandler);\n };\n\n const closeHandler = () => {\n document.body.classList.remove(\"body-tablet-lock\");\n setOpened(false);\n removeListener(\"closeHeaderMenu\");\n };\n\n const toggleHandler = () => {\n if (opened) {\n closeHandler();\n } else {\n openHandler();\n }\n };\n\n useEffect(\n () => () => {\n closeHandler();\n },\n [],\n );\n\n return (\n <div className=\"r-header-menu\">\n <input\n onChange={toggleHandler}\n checked={opened}\n id=\"header-burger\"\n type=\"checkbox\"\n className=\"r-header-input\"\n hidden\n />\n <label className=\"r-header-burger\" htmlFor=\"header-burger\" aria-label={menu} role=\"button\" tabIndex={0}>\n <span className=\"r-burger-line _top\" />\n <span className=\"r-burger-line _bottom\" />\n </label>\n <div className=\"r-header-responsive\">{children}</div>\n </div>\n );\n};\n"],"names":["HeaderMenu","children","translations","menu","addListener","removeListener","useNavigate","opened","setOpened","useState","closeHandler","document","body","classList","remove","useEffect","React","createElement","className","onChange","add","checked","id","type","hidden","htmlFor","role","tabIndex"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{detectGitType as r}from"../../../core/utils/git-tools.js";import{
|
|
1
|
+
import e from"react";import{detectGitType as r}from"../../../core/utils/git-tools.js";import{GitLogo as t,GitlabLogo as o,GithubLogo as i}from"../../ui/git-logos/index.js";const l={github:i,gitlab:o,git:t},a=({git:t})=>{const o="string"==typeof t?{uri:t,logo:l[r(t).key]}:t,i=o.logo;return e.createElement("div",{className:"r-header-social"},e.createElement("a",{href:o.uri,className:"r-header-social-git",target:"_blank",rel:"noopener noreferrer"},e.createElement(i,null)))};export{a as HeaderSocial};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-social/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { detectGitType } from \"@src/core/utils/git-tools\";\nimport { GithubLogo, GitlabLogo, GitLogo } from \"@src/components/ui/git-logos\";\n\nimport \"./header-social.scss\";\n\nconst gitLogos = {\n github: GithubLogo,\n gitlab: GitlabLogo,\n git: GitLogo,\n};\n\nexport const HeaderSocial: React.FC<{ git: string | { uri: string; logo: React.ElementType } }> = ({ git }) => {\n const gitData = typeof git === \"string\" ? { uri: git, logo: gitLogos[detectGitType(git).key] } : git;\n const Logo = gitData.logo;\n\n return (\n <div className=\"r-header-social\">\n <a href={gitData.uri} className=\"r-header-social-git\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Logo />\n </a>\n </div>\n );\n};\n"],"names":["gitLogos","github","GithubLogo","gitlab","GitlabLogo","git","GitLogo","HeaderSocial","gitData","uri","logo","detectGitType","key","Logo","React","createElement","className","href","target","rel"],"mappings":"4KAOA,MAAMA,EAAW,CACbC,OAAQC,EACRC,OAAQC,EACRC,IAAKC,GAGIC,EAAqF,EAAGF,UACjG,MAAMG,EAAyB,iBAARH,EAAmB,CAAEI,IAAKJ,EAAKK,KAAMV,EAASW,EAAcN,GAAKO,MAASP,EAC3FQ,EAAOL,EAAQE,KAErB,OACII,EAAAC,cAAA,MAAA,CAAKC,UAAU,mBACXF,EAAAC,cAAA,IAAA,CAAGE,KAAMT,EAAQC,IAAKO,UAAU,sBAAsBE,OAAO,SAASC,IAAI,uBACtEL,EAAAC,cAACF,EAAI
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-social/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { detectGitType } from \"@src/core/utils/git-tools\";\nimport { GithubLogo, GitlabLogo, GitLogo } from \"@src/components/ui/git-logos\";\n\nimport \"./header-social.scss\";\n\nconst gitLogos = {\n github: GithubLogo,\n gitlab: GitlabLogo,\n git: GitLogo,\n};\n\nexport const HeaderSocial: React.FC<{ git: string | { uri: string; logo: React.ElementType } }> = ({ git }) => {\n const gitData = typeof git === \"string\" ? { uri: git, logo: gitLogos[detectGitType(git).key] } : git;\n const Logo = gitData.logo;\n\n return (\n <div className=\"r-header-social\">\n <a href={gitData.uri} className=\"r-header-social-git\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Logo />\n </a>\n </div>\n );\n};\n"],"names":["gitLogos","github","GithubLogo","gitlab","GitlabLogo","git","GitLogo","HeaderSocial","gitData","uri","logo","detectGitType","key","Logo","React","createElement","className","href","target","rel"],"mappings":"4KAOA,MAAMA,EAAW,CACbC,OAAQC,EACRC,OAAQC,EACRC,IAAKC,GAGIC,EAAqF,EAAGF,UACjG,MAAMG,EAAyB,iBAARH,EAAmB,CAAEI,IAAKJ,EAAKK,KAAMV,EAASW,EAAcN,GAAKO,MAASP,EAC3FQ,EAAOL,EAAQE,KAErB,OACII,EAAAC,cAAA,MAAA,CAAKC,UAAU,mBACXF,EAAAC,cAAA,IAAA,CAAGE,KAAMT,EAAQC,IAAKO,UAAU,sBAAsBE,OAAO,SAASC,IAAI,uBACtEL,EAAAC,cAACF,EAAI"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{useState as t,useEffect as a}from"react";import r from"clsx";const m=({date:m,className:c,children:i,...o})=>{const[l,n]=t("");return a((
|
|
2
|
+
import e,{useState as t,useEffect as a}from"react";import r from"clsx";const m=({date:m,className:c,children:i,...o})=>{const[l,n]=t("");return a(()=>{n(new Date(m).toLocaleDateString())},[]),e.createElement("div",{className:r("r-last-modified",c),...o},i," ",e.createElement("time",{dateTime:m,title:m},l))};export{m as LastModified};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/last-modified/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./last-modified.scss\";\n\nexport interface LastModifiedProps extends React.HTMLAttributes<HTMLDivElement> {\n date: string;\n}\n\nexport const LastModified: React.FC<LastModifiedProps> = ({ date, className, children, ...props }) => {\n const [formattedDate, setFormattedDate] = useState(\"\");\n\n useEffect(() => {\n setFormattedDate(new Date(date).toLocaleDateString());\n }, []);\n\n return (\n <div className={clsx(\"r-last-modified\", className)} {...props}>\n {children}{\" \"}\n <time dateTime={date} title={date}>\n {formattedDate}\n </time>\n </div>\n );\n};\n"],"names":["LastModified","date","className","children","props","formattedDate","setFormattedDate","useState","useEffect","Date","toLocaleDateString","React","createElement","clsx","dateTime","title"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/last-modified/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./last-modified.scss\";\n\nexport interface LastModifiedProps extends React.HTMLAttributes<HTMLDivElement> {\n date: string;\n}\n\nexport const LastModified: React.FC<LastModifiedProps> = ({ date, className, children, ...props }) => {\n const [formattedDate, setFormattedDate] = useState(\"\");\n\n useEffect(() => {\n setFormattedDate(new Date(date).toLocaleDateString());\n }, []);\n\n return (\n <div className={clsx(\"r-last-modified\", className)} {...props}>\n {children}{\" \"}\n <time dateTime={date} title={date}>\n {formattedDate}\n </time>\n </div>\n );\n};\n"],"names":["LastModified","date","className","children","props","formattedDate","setFormattedDate","useState","useEffect","Date","toLocaleDateString","React","createElement","clsx","dateTime","title"],"mappings":";uEAWO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAA4C,EAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,cAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,EAAeC,CAAAA,CAAAA,CAAoBC,CAAAA,CAAS,IAMnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAJAC,CAAAA,CAAU,KACNF,CAAAA,CAAiB,CAAA,CAAA,CAAA,CAAIG,KAAKR,CAAAA,CAAAA,CAAMS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjC,IAGCC,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,MAAA,CAAKV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWW,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmBX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBE,GACnDD,CAAAA,CAAU,CAAA,CAAA,CAAA,CACXQ,EAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUb,CAAAA,CAAMc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOd,CAAAA,CAAAA,CACxBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import t from"react";import{useNavigate as e}from"../../contexts/navigate/use-navigate.js";import{ContentLink as n}from"../../ui/content-link/index.js";const o=({onClick:o,...r})=>{const{listeners:i}=e();return t.createElement(n,{onClick:t=>{[...i].forEach(
|
|
2
|
+
import t from"react";import{useNavigate as e}from"../../contexts/navigate/use-navigate.js";import{ContentLink as n}from"../../ui/content-link/index.js";const o=({onClick:o,...r})=>{const{listeners:i}=e();return t.createElement(n,{onClick:t=>{[...i].forEach(t=>t.listener()),o&&o(t)},...r})};export{o as NavContentLink};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/nav-content-link/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\nimport { ContentLink, type ContentLinkProps } from \"@src/components/ui/content-link\";\n\ntype NavContentLinkProps = ContentLinkProps;\n\nexport const NavContentLink: React.FC<NavContentLinkProps> = ({ onClick, ...props }) => {\n const { listeners } = useNavigate();\n\n const clickHandler = (e: React.MouseEvent<HTMLAnchorElement>) => {\n [...listeners].forEach((el) => el.listener());\n if (onClick) onClick(e);\n };\n\n return <ContentLink onClick={clickHandler} {...props} />;\n};\n"],"names":["NavContentLink","onClick","props","listeners","useNavigate","React","createElement","ContentLink","e","forEach","el","listener"],"mappings":";wJASO,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/nav-content-link/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\nimport { ContentLink, type ContentLinkProps } from \"@src/components/ui/content-link\";\n\ntype NavContentLinkProps = ContentLinkProps;\n\nexport const NavContentLink: React.FC<NavContentLinkProps> = ({ onClick, ...props }) => {\n const { listeners } = useNavigate();\n\n const clickHandler = (e: React.MouseEvent<HTMLAnchorElement>) => {\n [...listeners].forEach((el) => el.listener());\n if (onClick) onClick(e);\n };\n\n return <ContentLink onClick={clickHandler} {...props} />;\n};\n"],"names":["NavContentLink","onClick","props","listeners","useNavigate","React","createElement","ContentLink","e","forEach","el","listener"],"mappings":";wJASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAgD,CAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAEA,GAAcC,CAAAA,CAAAA,CAAAA,CAOtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACC,CAAAA,CAAW,CAACN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CALEO,CAAAA,CAAAA,CAAAA,CAClB,CAAA,CAAA,CAAA,CAAIL,CAAAA,CAAAA,CAAWM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAOA,CAAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9BV,CAAAA,CAAAA,CAASA,CAAAA,CAAQO,OAGsBN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA"}
|
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import React from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
replace?: boolean | undefined;
|
|
7
|
-
scroll?: boolean | undefined;
|
|
8
|
-
shallow?: boolean | undefined;
|
|
9
|
-
passHref?: boolean | undefined;
|
|
10
|
-
prefetch?: boolean | null | undefined;
|
|
11
|
-
locale?: string | false | undefined;
|
|
12
|
-
legacyBehavior?: boolean | undefined;
|
|
13
|
-
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
|
|
14
|
-
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
|
|
15
|
-
onClick?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
|
|
2
|
+
import { type LinkProps } from "next/link";
|
|
3
|
+
export declare const NavLink: React.ForwardRefExoticComponent<React.AnchorHTMLAttributes<HTMLAnchorElement> & LinkProps<any> & {
|
|
4
|
+
children?: React.ReactNode | undefined;
|
|
16
5
|
} & {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
activeClassName?: string | undefined;
|
|
20
|
-
targetClassName?: string | undefined;
|
|
6
|
+
activeClassName?: string;
|
|
7
|
+
targetClassName?: string;
|
|
21
8
|
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
22
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/nav-link/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/nav-link/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAcjD,eAAO,MAAM,OAAO;;;sBAJM,MAAM;sBACN,MAAM;2CAiC/B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{forwardRef as r}from"react";import t from"next/link";import{usePathname as o}from"next/navigation";import a from"clsx";import{useNavigate as n}from"../../contexts/navigate/use-navigate.js";import{ExternalMark as s}from"../../ui/external-mark/index.js";import{checkIsLinkExternal as i}from"../../../core/utils/path-tools.js";const m=r((
|
|
2
|
+
import e,{forwardRef as r}from"react";import t from"next/link";import{usePathname as o}from"next/navigation";import a from"clsx";import{useNavigate as n}from"../../contexts/navigate/use-navigate.js";import{ExternalMark as s}from"../../ui/external-mark/index.js";import{checkIsLinkExternal as i}from"../../../core/utils/path-tools.js";const m=r(({onClick:r,className:m,href:l,targetClassName:c,activeClassName:f,children:p,...x},h)=>{const{listeners:g}=n(),k=o(),u=i(l),v=u?{target:"_blank",rel:"noopener noreferrer"}:{};return e.createElement(t,{href:l,className:a(k.startsWith(l)&&c,k===l&&f,m),ref:h,onClick:e=>{[...g].forEach(e=>e.listener()),r&&r(e)},...v,...x},p,u&&e.createElement(s,null))});export{m as NavLink};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/nav-link/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport Link, { type LinkProps } from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport clsx from \"clsx\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\nimport { ExternalMark } from \"@src/components/ui/external-mark\";\nimport { checkIsLinkExternal } from \"@src/core/utils/path-tools\";\n\ntype NavLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n React.PropsWithChildren<LinkProps> & {\n activeClassName?: string;\n targetClassName?: string;\n };\n\nexport const NavLink = forwardRef<HTMLAnchorElement, NavLinkProps>(\n ({ onClick, className, href, targetClassName, activeClassName, children, ...props }, ref) => {\n const { listeners } = useNavigate();\n const pathname = usePathname();\n\n const clickHandler = (e: React.MouseEvent<HTMLAnchorElement>) => {\n [...listeners].forEach((el) => el.listener());\n if (onClick) onClick(e);\n };\n const isLinkExternal = checkIsLinkExternal(href);\n const additionalProps = isLinkExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n\n return (\n <Link\n href={href}\n className={clsx(\n pathname.startsWith(href) && targetClassName,\n pathname === href && activeClassName,\n className,\n )}\n ref={ref}\n onClick={clickHandler}\n {...additionalProps}\n {...props}\n >\n {children}\n {isLinkExternal && <ExternalMark />}\n </Link>\n );\n },\n);\n"],"names":["NavLink","forwardRef","onClick","className","href","targetClassName","activeClassName","children","props","ref","listeners","useNavigate","pathname","usePathname","isLinkExternal","checkIsLinkExternal","additionalProps","target","rel","React","createElement","Link","clsx","startsWith","e","forEach","el","listener","ExternalMark"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/nav-link/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport Link, { type LinkProps } from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport clsx from \"clsx\";\n\nimport { useNavigate } from \"@src/components/contexts/navigate/use-navigate\";\nimport { ExternalMark } from \"@src/components/ui/external-mark\";\nimport { checkIsLinkExternal } from \"@src/core/utils/path-tools\";\n\ntype NavLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n React.PropsWithChildren<LinkProps> & {\n activeClassName?: string;\n targetClassName?: string;\n };\n\nexport const NavLink = forwardRef<HTMLAnchorElement, NavLinkProps>(\n ({ onClick, className, href, targetClassName, activeClassName, children, ...props }, ref) => {\n const { listeners } = useNavigate();\n const pathname = usePathname();\n\n const clickHandler = (e: React.MouseEvent<HTMLAnchorElement>) => {\n [...listeners].forEach((el) => el.listener());\n if (onClick) onClick(e);\n };\n const isLinkExternal = checkIsLinkExternal(href);\n const additionalProps = isLinkExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n\n return (\n <Link\n href={href}\n className={clsx(\n pathname.startsWith(href) && targetClassName,\n pathname === href && activeClassName,\n className,\n )}\n ref={ref}\n onClick={clickHandler}\n {...additionalProps}\n {...props}\n >\n {children}\n {isLinkExternal && <ExternalMark />}\n </Link>\n );\n },\n);\n"],"names":["NavLink","forwardRef","onClick","className","href","targetClassName","activeClassName","children","props","ref","listeners","useNavigate","pathname","usePathname","isLinkExternal","checkIsLinkExternal","additionalProps","target","rel","React","createElement","Link","clsx","startsWith","e","forEach","el","listener","ExternalMark"],"mappings":";8UAiBO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAUC,EACnB,CAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMC,kBAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaC,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CACjF,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAEA,CAAAA,CAAAA,CAAcC,CAAAA,CAAAA,CAAAA,CAChBC,CAAAA,CAAWC,IAMXC,CAAAA,CAAiBC,CAAAA,CAAoBX,GACrCY,CAAAA,CAAkBF,CAAAA,CAAiB,CAAEG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAAA,CAAA,CAE5F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACIC,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACC,GACGjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAMA,CAAAA,CACND,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWmB,EACPV,CAAAA,CAASW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWnB,IAASC,CAAAA,CAC7BO,CAAAA,CAAAA,CAAAA,CAAaR,GAAQE,CAAAA,CACrBH,CAAAA,CAAAA,CAEJM,CAAAA,CAAAA,CAAAA,CAAKA,CAAAA,CACLP,QAhBcsB,CAAAA,CAAAA,CAAAA,CAClB,CAAA,CAAA,CAAA,CAAId,GAAWe,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAOA,EAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9BzB,CAAAA,CAAAA,CAASA,CAAAA,CAAQsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAebR,KACAR,CAAAA,CAAAA,CAEHD,CAAAA,CACAO,GAAkBK,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACQ,EAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/no-js/index.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const NoJs = () => (\n <noscript>\n <style>\n {`\n .r-no-js {\n cursor: not-allowed;\n }\n .r-no-js:hover,\n .r-no-js:focus,\n .r-no-js:focus-within {\n z-index: 10;\n }\n .r-no-js::after {\n content: \"Please enable JavaScript\";\n display: none;\n position: absolute;\n top: 50%;\n right: 0;\n font-family: var(--monospace-font, monospace, monospace);\n font-size: 12px;\n width: 100%;\n min-width: 120px;\n transform: translateY(-50%);\n background-color: var(--r-neutral-900);\n color: var(--r-neutral-100);\n border-radius: 4px;\n padding: 4px 12px;\n pointer-events: none;\n }\n .r-no-js._to-right::after {\n right: auto;\n left: 0;\n }\n .r-no-js:hover::after,\n .r-no-js:focus::after,\n .r-no-js:focus-within::after {\n display: block;\n }\n `}\n </style>\n </noscript>\n);\n"],"names":["NoJs","React","createElement"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/no-js/index.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const NoJs = () => (\n <noscript>\n <style>\n {`\n .r-no-js {\n cursor: not-allowed;\n }\n .r-no-js:hover,\n .r-no-js:focus,\n .r-no-js:focus-within {\n z-index: 10;\n }\n .r-no-js::after {\n content: \"Please enable JavaScript\";\n display: none;\n position: absolute;\n top: 50%;\n right: 0;\n font-family: var(--monospace-font, monospace, monospace);\n font-size: 12px;\n width: 100%;\n min-width: 120px;\n transform: translateY(-50%);\n background-color: var(--r-neutral-900);\n color: var(--r-neutral-100);\n border-radius: 4px;\n padding: 4px 12px;\n pointer-events: none;\n }\n .r-no-js._to-right::after {\n right: auto;\n left: 0;\n }\n .r-no-js:hover::after,\n .r-no-js:focus::after,\n .r-no-js:focus-within::after {\n display: block;\n }\n `}\n </style>\n </noscript>\n);\n"],"names":["NoJs","React","createElement"],"mappings":"qBAEO,MAAMA,EAAO,IAChBC,EAAAC,cAAA,WAAA,KACID,EAAAC,cAAA,QAAA,KACK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/pagination/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { NavLink } from \"../nav-link\";\n\nimport \"./pagination.scss\";\n\nexport type PaginationProps = {\n prev?: { title: string; pathname: string };\n next?: { title: string; pathname: string };\n translations?: {\n /** Previous */\n previous?: string;\n /** Next */\n next?: string;\n };\n};\n\nexport const Pagination: React.FC<PaginationProps> = async ({ prev, next, translations }) => {\n const { previous = \"Previous\", next: nextTranslation = \"Next\" } = translations || {};\n\n return (\n <div className=\"r-pagination\">\n {prev ? (\n <NavLink href={prev.pathname} className=\"r-pagination-item _prev\">\n <span className=\"r-pagination-icon _prev\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </span>\n <span className=\"r-pagination-text\">\n <span>{previous}</span>\n <br />\n <span className=\"r-pagination-title\">{prev.title}</span>\n </span>\n </NavLink>\n ) : (\n <span />\n )}\n {next ? (\n <NavLink href={next.pathname} className=\"r-pagination-item _next\">\n <span className=\"r-pagination-icon _next\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </span>\n <span className=\"r-pagination-text\">\n <span>{nextTranslation}</span>\n <br />\n <span className=\"r-pagination-title\">{next.title}</span>\n </span>\n </NavLink>\n ) : (\n <span />\n )}\n </div>\n );\n};\n"],"names":["Pagination","async","prev","next","translations","previous","nextTranslation","React","createElement","className","NavLink","href","pathname","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","title"],"mappings":"oEAiBO,MAAMA,EAAwCC,OAASC,OAAMC,OAAMC,mBACtE,MAAMC,SAAEA,EAAW,WAAYF,KAAMG,EAAkB,QAAWF,GAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/pagination/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { NavLink } from \"../nav-link\";\n\nimport \"./pagination.scss\";\n\nexport type PaginationProps = {\n prev?: { title: string; pathname: string };\n next?: { title: string; pathname: string };\n translations?: {\n /** Previous */\n previous?: string;\n /** Next */\n next?: string;\n };\n};\n\nexport const Pagination: React.FC<PaginationProps> = async ({ prev, next, translations }) => {\n const { previous = \"Previous\", next: nextTranslation = \"Next\" } = translations || {};\n\n return (\n <div className=\"r-pagination\">\n {prev ? (\n <NavLink href={prev.pathname} className=\"r-pagination-item _prev\">\n <span className=\"r-pagination-icon _prev\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </span>\n <span className=\"r-pagination-text\">\n <span>{previous}</span>\n <br />\n <span className=\"r-pagination-title\">{prev.title}</span>\n </span>\n </NavLink>\n ) : (\n <span />\n )}\n {next ? (\n <NavLink href={next.pathname} className=\"r-pagination-item _next\">\n <span className=\"r-pagination-icon _next\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </span>\n <span className=\"r-pagination-text\">\n <span>{nextTranslation}</span>\n <br />\n <span className=\"r-pagination-title\">{next.title}</span>\n </span>\n </NavLink>\n ) : (\n <span />\n )}\n </div>\n );\n};\n"],"names":["Pagination","async","prev","next","translations","previous","nextTranslation","React","createElement","className","NavLink","href","pathname","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","title"],"mappings":"oEAiBO,MAAMA,EAAwCC,OAASC,OAAMC,OAAMC,mBACtE,MAAMC,SAAEA,EAAW,WAAYF,KAAMG,EAAkB,QAAWF,GAAgB,CAAA,EAElF,OACIG,EAAAC,cAAA,MAAA,CAAKC,UAAU,gBACVP,EACGK,gBAACG,EAAO,CAACC,KAAMT,EAAKU,SAAUH,UAAU,2BACpCF,EAAAC,cAAA,OAAA,CAAMC,UAAU,2BACZF,EAAAC,cAAA,MAAA,CACIK,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,SAEfb,EAAAC,cAAA,OAAA,CAAMa,EAAE,qBAGhBd,EAAAC,cAAA,OAAA,CAAMC,UAAU,qBACZF,EAAAC,cAAA,OAAA,KAAOH,GACPE,EAAAC,cAAA,KAAA,MACAD,EAAAC,cAAA,OAAA,CAAMC,UAAU,sBAAsBP,EAAKoB,SAInDf,6BAEHJ,EACGI,gBAACG,EAAO,CAACC,KAAMR,EAAKS,SAAUH,UAAU,2BACpCF,EAAAC,cAAA,OAAA,CAAMC,UAAU,2BACZF,EAAAC,cAAA,MAAA,CACIK,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,SAEfb,EAAAC,cAAA,OAAA,CAAMa,EAAE,oBAGhBd,EAAAC,cAAA,OAAA,CAAMC,UAAU,qBACZF,EAAAC,cAAA,OAAA,KAAOF,GACPC,EAAAC,cAAA,KAAA,MACAD,EAAAC,cAAA,OAAA,CAAMC,UAAU,sBAAsBN,EAAKmB,SAInDf"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{useRef as r,useEffect as t}from"react";import{SearchModal as n}from"./search-modal/index.js";import{useSystemType as o}from"../../../core/hooks/use-system-type.js";import{KbdContainer as a}from"../../ui/kbd/kbd-container/index.js";import{KbdKey as s}from"../../ui/kbd/kbd-key/index.js";import{useModal as l}from"../../ui/modal/use-modal.js";const c=({searcher:c,translations:m})=>{const{search:i="Search...",...d}=m||{},p=r(null),{opened:u,closeHandler:k,openHandler:y}=l(),h=o();t((
|
|
2
|
+
import e,{useRef as r,useEffect as t}from"react";import{SearchModal as n}from"./search-modal/index.js";import{useSystemType as o}from"../../../core/hooks/use-system-type.js";import{KbdContainer as a}from"../../ui/kbd/kbd-container/index.js";import{KbdKey as s}from"../../ui/kbd/kbd-key/index.js";import{useModal as l}from"../../ui/modal/use-modal.js";const c=({searcher:c,translations:m})=>{const{search:i="Search...",...d}=m||{},p=r(null),{opened:u,closeHandler:k,openHandler:y}=l(),h=o();t(()=>{const e=e=>{"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[]);return e.createElement(e.Fragment,null,e.createElement("button",{type:"button",className:"r-search-btn r-no-js",onClick:y,onKeyDown:e=>{1===e.key.length&&"Space"!==e.code&&y()}},e.createElement("span",{className:"r-search-title",ref:p},i),h&&e.createElement(a,{className:"r-search-kbd"},e.createElement(s,null,"apple"===h?"⌘":"CTRL"),e.createElement(s,null,"K"))),e.createElement(n,{open:u,translations:d,searcher:c,onClose:k,onInput:e=>{p.current&&(p.current.innerText=e||i)}}))};export{c as Search};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/search/index.tsx"],"sourcesContent":["\"use client\";\n\nimport \"./search.scss\";\n\nimport React, { useEffect, useRef } from \"react\";\n\nimport { SearchModal, type SearchModalProps } from \"./search-modal\";\nimport { useSystemType } from \"@src/core/hooks/use-system-type\";\nimport { KbdContainer, KbdKey } from \"@src/components/ui/kbd\";\nimport { useModal } from \"@src/components/ui/modal/use-modal\";\n\nexport interface SearchProps {\n searcher: SearchModalProps[\"searcher\"];\n translations?: {\n /** Search... */\n search?: string;\n } & SearchModalProps[\"translations\"];\n}\n\nexport const Search: React.FC<SearchProps> = ({ searcher, translations }) => {\n const { search = \"Search...\", ...modalTranslations } = translations || {};\n const titleRef = useRef<HTMLSpanElement>(null);\n const { opened, closeHandler, openHandler } = useModal();\n const system = useSystemType();\n\n const keyDownHandler = (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key.length === 1 && e.code !== \"Space\") {\n openHandler();\n }\n };\n\n useEffect(() => {\n const keyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === \"k\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n openHandler();\n }\n };\n window.addEventListener(\"keydown\", keyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", keyDown);\n };\n }, []);\n\n const inputHandler = (text: string) => {\n if (titleRef.current) {\n titleRef.current.innerText = text || search;\n }\n };\n\n return (\n <>\n <button type=\"button\" className=\"r-search-btn r-no-js\" onClick={openHandler} onKeyDown={keyDownHandler}>\n <span className=\"r-search-title\" ref={titleRef}>\n {search}\n </span>\n {system && (\n <KbdContainer className=\"r-search-kbd\">\n <KbdKey>{system === \"apple\" ? \"⌘\" : \"CTRL\"}</KbdKey>\n <KbdKey>K</KbdKey>\n </KbdContainer>\n )}\n </button>\n <SearchModal\n open={opened}\n translations={modalTranslations}\n searcher={searcher}\n onClose={closeHandler}\n onInput={inputHandler}\n />\n </>\n );\n};\n"],"names":["Search","searcher","translations","search","modalTranslations","titleRef","useRef","opened","closeHandler","openHandler","useModal","system","useSystemType","useEffect","keyDown","e","key","toLowerCase","metaKey","ctrlKey","preventDefault","window","addEventListener","removeEventListener","React","createElement","Fragment","type","className","onClick","onKeyDown","length","code","ref","KbdContainer","KbdKey","SearchModal","open","onClose","onInput","text","current","innerText"],"mappings":";+
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/search/index.tsx"],"sourcesContent":["\"use client\";\n\nimport \"./search.scss\";\n\nimport React, { useEffect, useRef } from \"react\";\n\nimport { SearchModal, type SearchModalProps } from \"./search-modal\";\nimport { useSystemType } from \"@src/core/hooks/use-system-type\";\nimport { KbdContainer, KbdKey } from \"@src/components/ui/kbd\";\nimport { useModal } from \"@src/components/ui/modal/use-modal\";\n\nexport interface SearchProps {\n searcher: SearchModalProps[\"searcher\"];\n translations?: {\n /** Search... */\n search?: string;\n } & SearchModalProps[\"translations\"];\n}\n\nexport const Search: React.FC<SearchProps> = ({ searcher, translations }) => {\n const { search = \"Search...\", ...modalTranslations } = translations || {};\n const titleRef = useRef<HTMLSpanElement>(null);\n const { opened, closeHandler, openHandler } = useModal();\n const system = useSystemType();\n\n const keyDownHandler = (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key.length === 1 && e.code !== \"Space\") {\n openHandler();\n }\n };\n\n useEffect(() => {\n const keyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === \"k\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n openHandler();\n }\n };\n window.addEventListener(\"keydown\", keyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", keyDown);\n };\n }, []);\n\n const inputHandler = (text: string) => {\n if (titleRef.current) {\n titleRef.current.innerText = text || search;\n }\n };\n\n return (\n <>\n <button type=\"button\" className=\"r-search-btn r-no-js\" onClick={openHandler} onKeyDown={keyDownHandler}>\n <span className=\"r-search-title\" ref={titleRef}>\n {search}\n </span>\n {system && (\n <KbdContainer className=\"r-search-kbd\">\n <KbdKey>{system === \"apple\" ? \"⌘\" : \"CTRL\"}</KbdKey>\n <KbdKey>K</KbdKey>\n </KbdContainer>\n )}\n </button>\n <SearchModal\n open={opened}\n translations={modalTranslations}\n searcher={searcher}\n onClose={closeHandler}\n onInput={inputHandler}\n />\n </>\n );\n};\n"],"names":["Search","searcher","translations","search","modalTranslations","titleRef","useRef","opened","closeHandler","openHandler","useModal","system","useSystemType","useEffect","keyDown","e","key","toLowerCase","metaKey","ctrlKey","preventDefault","window","addEventListener","removeEventListener","React","createElement","Fragment","type","className","onClick","onKeyDown","length","code","ref","KbdContainer","KbdKey","SearchModal","open","onClose","onInput","text","current","innerText"],"mappings":";+VAmBO,MAAMA,CAAAA,CAAgC,CAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAEA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgBC,GAAsBF,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CACjEG,CAAAA,CAAWC,CAAAA,CAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACnCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAEA,CAAAA,CAAMC,aAAEA,CAAAA,CAAYC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAEA,CAAAA,CAAAA,CAAgBC,CAAAA,CAAAA,CAAAA,CACxCC,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAQfC,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CACN,MAAMC,CAAAA,CAAWC,CAAAA,CAAAA,CAAAA,CACe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAxBA,CAAAA,CAAEC,CAAAA,CAAAA,CAAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA0BF,CAAAA,CAAEG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWH,EAAEI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC/CJ,CAAAA,CAAEK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACFX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAKR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAFAY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAWR,GAE5B,CAAA,CAAA,CAAA,CAAA,CACHO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAWT,CAAAA,CAAAA,CAAAA,CAAAA,CAE3C,CAAA,CAAA,CAAA,CAQH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACIU,CAAAA,CAAAC,cAAAD,CAAAA,CAAAE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACIF,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQE,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,SAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASpB,CAAAA,CAAaqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CA5B7Df,CAAAA,CAAAA,CAAAA,CACC,CAAA,CAAA,CAAA,CAAjBA,CAAAA,CAAEC,IAAIe,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAXhB,CAAAA,CAAEiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxBvB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CA2BIe,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiBK,CAAAA,CAAAA,CAAAA,CAAK5B,CAAAA,CAAAA,CACjCF,CAAAA,CAAAA,CAEJQ,CAAAA,CAAAA,CACGa,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACS,EAAY,CAACN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpBJ,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACU,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAXxB,EAAqB,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpCa,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAACU,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAInBX,CAAAA,CAAAC,cAACW,CAAAA,CAAW,CACRC,CAAAA,CAAAA,CAAAA,CAAAA,CAAM9B,CAAAA,CACNL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcE,CAAAA,CACdH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUA,CAAAA,CACVqC,QAAS9B,CAAAA,CACT+B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAxBUC,CAAAA,CAAAA,CAAAA,CACdnC,CAAAA,CAASoC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACTpC,CAAAA,CAASoC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYF,GAAQrC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import e,{useRef as r,useState as t,useMemo as n,useEffect as a}from"react";import{createBaseSearcher as s}from"../../../../core/utils/create-base-searcher.js";import{NavLink as o}from"../../nav-link/index.js";import{useDebouncer as c}from"../../../../core/hooks/use-debouncer.js";import{KbdContainer as l}from"../../../ui/kbd/kbd-container/index.js";import{KbdKey as m}from"../../../ui/kbd/kbd-key/index.js";import{Modal as i}from"../../../ui/modal/index.js";const p=({translations:p,searcher:h,open:u,onClose:d,onInput:f})=>{const{typeSomething:k="Type something...",nothingFound:E="Nothing found"}=p||{},b=r(null),[g,N]=t(null),y=n((
|
|
2
|
+
import e,{useRef as r,useState as t,useMemo as n,useEffect as a}from"react";import{createBaseSearcher as s}from"../../../../core/utils/create-base-searcher.js";import{NavLink as o}from"../../nav-link/index.js";import{useDebouncer as c}from"../../../../core/hooks/use-debouncer.js";import{KbdContainer as l}from"../../../ui/kbd/kbd-container/index.js";import{KbdKey as m}from"../../../ui/kbd/kbd-key/index.js";import{Modal as i}from"../../../ui/modal/index.js";const p=({translations:p,searcher:h,open:u,onClose:d,onInput:f})=>{const{typeSomething:k="Type something...",nothingFound:E="Nothing found"}=p||{},b=r(null),[g,N]=t(null),y=n(()=>"string"==typeof h?s(h):h,[h]),{handler:j}=c(async(e,r)=>{const t=r.target.value;f(t);let n=null;t&&(n=await y(t,e)),N(n)});return a(()=>{u&&b.current?.focus()},[u]),e.createElement(i,{open:u,onClose:d},e.createElement("div",{className:"r-search-popup-header"},e.createElement("input",{type:"text",name:"search",placeholder:k,className:"r-search-input",onChange:j,ref:b}),e.createElement(l,{className:"r-search-kbd r-search-popup-kbd",onClick:d},e.createElement(m,null,"ESC"))),g&&e.createElement("ul",{className:"r-search-results"},g.length>0?g.map(r=>e.createElement("li",{key:r.href},e.createElement(o,{href:r.href,onClick:d,className:"r-search-item"},e.createElement("p",{className:"r-search-item-title"},r.title),r.description&&e.createElement("p",{className:"r-search-item-desc"},r.description)))):e.createElement("p",null,E)))};export{p as SearchModal};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/blocks/search/search-modal/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { type Searcher, type SearchResults } from \"@src/core/types/search\";\nimport { createBaseSearcher } from \"@src/core/utils/create-base-searcher\";\nimport { NavLink } from \"@src/components/blocks/nav-link\";\nimport { useDebouncer } from \"@src/core/hooks/use-debouncer\";\nimport { KbdContainer, KbdKey } from \"@src/components/ui/kbd\";\nimport { Modal } from \"@src/components/ui/modal\";\n\nexport interface SearchModalProps {\n onClose(): void;\n open: boolean;\n onInput(text: string): void;\n searcher: Searcher | string;\n translations?: {\n /** Type something... */\n typeSomething?: string;\n /** Nothing found */\n nothingFound?: string;\n };\n}\n\nexport const SearchModal: React.FC<SearchModalProps> = ({ translations, searcher, open, onClose, onInput }) => {\n const { typeSomething = \"Type something...\", nothingFound = \"Nothing found\" } = translations || {};\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [results, setResults] = useState<SearchResults | null>(null);\n const targetSearcher = useMemo(\n () => (typeof searcher === \"string\" ? createBaseSearcher(searcher) : searcher),\n [searcher],\n );\n\n const { handler } = useDebouncer(async (abortController, e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n onInput(value);\n let newResults = null;\n if (value) {\n newResults = await targetSearcher(value, abortController);\n }\n setResults(newResults);\n });\n\n useEffect(() => {\n if (open) inputRef.current?.focus();\n }, [open]);\n\n return (\n <Modal open={open} onClose={onClose}>\n <div className=\"r-search-popup-header\">\n <input\n type=\"text\"\n name=\"search\"\n placeholder={typeSomething}\n className=\"r-search-input\"\n onChange={handler}\n ref={inputRef}\n />\n <KbdContainer className=\"r-search-kbd r-search-popup-kbd\" onClick={onClose}>\n <KbdKey>ESC</KbdKey>\n </KbdContainer>\n </div>\n {results && (\n <ul className=\"r-search-results\">\n {results.length > 0 ? (\n results.map((item) => (\n <li key={item.href}>\n <NavLink href={item.href} onClick={onClose} className=\"r-search-item\">\n <p className=\"r-search-item-title\">{item.title}</p>\n {item.description && <p className=\"r-search-item-desc\">{item.description}</p>}\n </NavLink>\n </li>\n ))\n ) : (\n <p>{nothingFound}</p>\n )}\n </ul>\n )}\n </Modal>\n );\n};\n"],"names":["SearchModal","translations","searcher","open","onClose","onInput","typeSomething","nothingFound","inputRef","useRef","results","setResults","useState","targetSearcher","useMemo","createBaseSearcher","handler","useDebouncer","async","abortController","e","value","target","newResults","useEffect","current","focus","React","createElement","Modal","className","type","name","placeholder","onChange","ref","KbdContainer","onClick","KbdKey","length","map","item","key","href","NavLink","title","description"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/blocks/search/search-modal/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { type Searcher, type SearchResults } from \"@src/core/types/search\";\nimport { createBaseSearcher } from \"@src/core/utils/create-base-searcher\";\nimport { NavLink } from \"@src/components/blocks/nav-link\";\nimport { useDebouncer } from \"@src/core/hooks/use-debouncer\";\nimport { KbdContainer, KbdKey } from \"@src/components/ui/kbd\";\nimport { Modal } from \"@src/components/ui/modal\";\n\nexport interface SearchModalProps {\n onClose(): void;\n open: boolean;\n onInput(text: string): void;\n searcher: Searcher | string;\n translations?: {\n /** Type something... */\n typeSomething?: string;\n /** Nothing found */\n nothingFound?: string;\n };\n}\n\nexport const SearchModal: React.FC<SearchModalProps> = ({ translations, searcher, open, onClose, onInput }) => {\n const { typeSomething = \"Type something...\", nothingFound = \"Nothing found\" } = translations || {};\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [results, setResults] = useState<SearchResults | null>(null);\n const targetSearcher = useMemo(\n () => (typeof searcher === \"string\" ? createBaseSearcher(searcher) : searcher),\n [searcher],\n );\n\n const { handler } = useDebouncer(async (abortController, e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n onInput(value);\n let newResults = null;\n if (value) {\n newResults = await targetSearcher(value, abortController);\n }\n setResults(newResults);\n });\n\n useEffect(() => {\n if (open) inputRef.current?.focus();\n }, [open]);\n\n return (\n <Modal open={open} onClose={onClose}>\n <div className=\"r-search-popup-header\">\n <input\n type=\"text\"\n name=\"search\"\n placeholder={typeSomething}\n className=\"r-search-input\"\n onChange={handler}\n ref={inputRef}\n />\n <KbdContainer className=\"r-search-kbd r-search-popup-kbd\" onClick={onClose}>\n <KbdKey>ESC</KbdKey>\n </KbdContainer>\n </div>\n {results && (\n <ul className=\"r-search-results\">\n {results.length > 0 ? (\n results.map((item) => (\n <li key={item.href}>\n <NavLink href={item.href} onClick={onClose} className=\"r-search-item\">\n <p className=\"r-search-item-title\">{item.title}</p>\n {item.description && <p className=\"r-search-item-desc\">{item.description}</p>}\n </NavLink>\n </li>\n ))\n ) : (\n <p>{nothingFound}</p>\n )}\n </ul>\n )}\n </Modal>\n );\n};\n"],"names":["SearchModal","translations","searcher","open","onClose","onInput","typeSomething","nothingFound","inputRef","useRef","results","setResults","useState","targetSearcher","useMemo","createBaseSearcher","handler","useDebouncer","async","abortController","e","value","target","newResults","useEffect","current","focus","React","createElement","Modal","className","type","name","placeholder","onChange","ref","KbdContainer","onClick","KbdKey","length","map","item","key","href","NavLink","title","description"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import t from"clsx";import{NavLink as r}from"../nav-link/index.js";const o=({defaultOption:o,options:n})=>{const a=n.find(
|
|
1
|
+
import e from"react";import t from"clsx";import{NavLink as r}from"../nav-link/index.js";const o=({defaultOption:o,options:n})=>{const a=n.find(e=>e.key===o);if(!a)throw new Error("Invalid default option");return e.createElement("div",{className:"r-dropdown"},e.createElement("button",{className:"r-dropdown-summary"},e.createElement("span",null,a.shortTitle||a.title),e.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"r-dropdown-chevron"},e.createElement("path",{d:"m6 9 6 6 6-6"}))),e.createElement("ul",{className:"r-dropdown-drop"},n.map(n=>e.createElement("li",{key:n.key},e.createElement(r,{href:n.href,className:t("r-dropdown-link",n.key===o&&"_active")},n.title)))))};export{o as SectionDropdown};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/section-dropdown/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { NavLink } from \"../nav-link\";\n\nimport \"./section-dropdown.scss\";\n\ntype SectionDropdownOption = {\n key: string;\n href: string;\n title: string;\n shortTitle?: string;\n};\n\nexport type SectionDropdownProps = {\n defaultOption: string;\n options: SectionDropdownOption[];\n};\n\nexport const SectionDropdown: React.FC<SectionDropdownProps> = ({ defaultOption, options }) => {\n const defaultOptionDetailed = options.find((option) => option.key === defaultOption);\n\n if (!defaultOptionDetailed) {\n throw new Error(\"Invalid default option\");\n }\n\n return (\n <div className=\"r-dropdown\">\n <button className=\"r-dropdown-summary\">\n <span>{defaultOptionDetailed.shortTitle || defaultOptionDetailed.title}</span>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-dropdown-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n <ul className=\"r-dropdown-drop\">\n {options.map((option) => (\n <li key={option.key}>\n <NavLink\n href={option.href}\n className={clsx(\"r-dropdown-link\", option.key === defaultOption && \"_active\")}\n >\n {option.title}\n </NavLink>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n"],"names":["SectionDropdown","defaultOption","options","defaultOptionDetailed","find","option","key","Error","React","createElement","className","shortTitle","title","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","NavLink","href","clsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/blocks/section-dropdown/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { NavLink } from \"../nav-link\";\n\nimport \"./section-dropdown.scss\";\n\ntype SectionDropdownOption = {\n key: string;\n href: string;\n title: string;\n shortTitle?: string;\n};\n\nexport type SectionDropdownProps = {\n defaultOption: string;\n options: SectionDropdownOption[];\n};\n\nexport const SectionDropdown: React.FC<SectionDropdownProps> = ({ defaultOption, options }) => {\n const defaultOptionDetailed = options.find((option) => option.key === defaultOption);\n\n if (!defaultOptionDetailed) {\n throw new Error(\"Invalid default option\");\n }\n\n return (\n <div className=\"r-dropdown\">\n <button className=\"r-dropdown-summary\">\n <span>{defaultOptionDetailed.shortTitle || defaultOptionDetailed.title}</span>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-dropdown-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n <ul className=\"r-dropdown-drop\">\n {options.map((option) => (\n <li key={option.key}>\n <NavLink\n href={option.href}\n className={clsx(\"r-dropdown-link\", option.key === defaultOption && \"_active\")}\n >\n {option.title}\n </NavLink>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n"],"names":["SectionDropdown","defaultOption","options","defaultOptionDetailed","find","option","key","Error","React","createElement","className","shortTitle","title","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","NavLink","href","clsx"],"mappings":"wFAmBO,MAAMA,EAAkD,EAAGC,gBAAeC,cAC7E,MAAMC,EAAwBD,EAAQE,KAAMC,GAAWA,EAAOC,MAAQL,GAEtE,IAAKE,EACD,MAAM,IAAII,MAAM,0BAGpB,OACIC,EAAAC,cAAA,MAAA,CAAKC,UAAU,cACXF,EAAAC,cAAA,SAAA,CAAQC,UAAU,sBACdF,EAAAC,cAAA,OAAA,KAAON,EAAsBQ,YAAcR,EAAsBS,OACjEJ,EAAAC,cAAA,MAAA,CACII,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,QACfV,UAAU,sBAEVF,EAAAC,cAAA,OAAA,CAAMY,EAAE,mBAGhBb,EAAAC,cAAA,KAAA,CAAIC,UAAU,mBACTR,EAAQoB,IAAKjB,GACVG,EAAAC,cAAA,KAAA,CAAIH,IAAKD,EAAOC,KACZE,EAAAC,cAACc,EAAO,CACJC,KAAMnB,EAAOmB,KACbd,UAAWe,EAAK,kBAAmBpB,EAAOC,MAAQL,GAAiB,YAElEI,EAAOO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"react";const e=()=>{const t=localStorage.getItem("theme");t&&["light","dark"].includes(t)?document.documentElement.classList.add(`theme-${t}`):(document.documentElement.classList.add("theme-system"),window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("theme-dark"):document.documentElement.classList.add("theme-light"));const e=localStorage.getItem("r-tabs"),s=e?.split(";").filter(
|
|
1
|
+
import t from"react";const e=()=>{const t=localStorage.getItem("theme");t&&["light","dark"].includes(t)?document.documentElement.classList.add(`theme-${t}`):(document.documentElement.classList.add("theme-system"),window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("theme-dark"):document.documentElement.classList.add("theme-light"));const e=localStorage.getItem("r-tabs"),s=e?.split(";").filter(t=>t&&/[\w-]+=[\w]+/.test(t))||[];Array.from(document.documentElement.classList).forEach(t=>{t.startsWith("r-tabs-global")&&document.documentElement.classList.remove(t)}),s.forEach(t=>{const[e,s]=t.split("=");document.documentElement.classList.add(`r-tabs-global__${e}`,`r-tabs-global__${e}_${s}`)})},s=()=>t.createElement("script",{id:"detect-theme",dangerouslySetInnerHTML:{__html:`(${e})()`},async:!0});export{s as ThemeDetector};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|