robindoc 0.0.0-experimental-7903271 → 0.0.0-experimental-3f39623

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.
@@ -1,12 +1,16 @@
1
1
  import "./search.scss";
2
2
  import React from "react";
3
- import { type SearchModalProps } from "./search-modal";
3
+ import { Searcher } from "../../../core/types/search";
4
4
  export interface SearchProps {
5
- searcher: SearchModalProps["searcher"];
5
+ searcher: Searcher | string;
6
6
  translations?: {
7
7
  /** Search... */
8
8
  search?: string;
9
- } & SearchModalProps["translations"];
9
+ /** Type something... */
10
+ typeSomething?: string;
11
+ /** Nothing found */
12
+ nothingFound?: string;
13
+ };
10
14
  }
11
15
  export declare const Search: React.FC<SearchProps>;
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/search/index.tsx"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAEvB,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKpE,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE;QACX,gBAAgB;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsDxC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/search/index.tsx"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAEvB,OAAO,KAA+C,MAAM,OAAO,CAAC;AAOpE,OAAO,EAAE,QAAQ,EAAiB,mCAA+B;AAIjE,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE;QACX,gBAAgB;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,wBAAwB;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,oBAAoB;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA+HxC,CAAC"}
@@ -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(()=>{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};
2
+ import e,{useRef as r,useState as t,useMemo as n,useEffect as o}from"react";import a from"clsx";import{useSystemType as c}from"../../../core/hooks/use-system-type.js";import{KbdContainer as l}from"../../ui/kbd/kbd-container/index.js";import{KbdKey as s}from"../../ui/kbd/kbd-key/index.js";import{createBaseSearcher as m}from"../../../core/utils/create-base-searcher.js";import{useDebouncer as i}from"../../../core/hooks/use-debouncer.js";import{Backdrop as u}from"../../ui/backdrop/index.js";import{NavLink as p}from"../nav-link/index.js";const d=({searcher:d,translations:h={}})=>{const{search:f="Search...",typeSomething:k="Type something...",nothingFound:E="Nothing found"}=h,y=r(null),b=r(null),N=r(null),g=r(null),[v,C]=t(null),w=c(),j=n(()=>"string"==typeof d?m(d):d,[d]),{handler:x}=i(async(e,r)=>{const t=r.target.value;_(t);let n=null;t&&(n=await j(t,e)),C(n)}),L=()=>{const e=document.querySelector(".r-root");e&&e.classList.add("r-root_lock"),b.current?.focus(),N.current?.showModal()},S=()=>{const e=document.querySelector(".r-root");e&&e.classList.remove("r-root_lock"),N.current?.close()};o(()=>{const e=e=>{"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),L())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[]);const _=e=>{y.current&&(y.current.innerText=e||f)};return e.createElement(e.Fragment,null,e.createElement("button",{type:"button",className:"r-search-btn r-no-js",onClick:L},e.createElement("span",{className:"r-search-title",ref:y},f),w&&e.createElement(l,{className:"r-search-kbd"},e.createElement(s,null,"apple"===w?"⌘":"CTRL"),e.createElement(s,null,"K"))),e.createElement("dialog",{onClose:S,className:a("r-search-dialog",Boolean(v?.length)&&"_active"),ref:N},e.createElement(u,{open:!0,onClose:S}),e.createElement("div",{className:"r-search-popup _visible"},e.createElement("form",{className:"r-search-popup-header",onSubmit:e=>{e.preventDefault(),g.current&&g.current.focus()},autoComplete:"off"},e.createElement("input",{type:"text",name:"search",placeholder:k,className:"r-search-input",onChange:x,ref:b}),e.createElement(l,{className:"r-search-kbd r-search-popup-kbd",onClick:S},e.createElement(s,null,"ESC"))),v&&e.createElement("ul",{className:"r-search-results"},v.length>0?v.map((r,t)=>e.createElement("li",{key:r.href},e.createElement(p,{href:r.href,onClick:S,className:"r-search-item",ref:0===t?g:void 0},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{d 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":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/search/index.tsx"],"sourcesContent":["\"use client\";\n\nimport \"./search.scss\";\n\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\n\nimport { useSystemType } from \"@src/core/hooks/use-system-type\";\nimport { KbdContainer, KbdKey } from \"@src/components/ui/kbd\";\nimport { createBaseSearcher } from \"@src/core/utils/create-base-searcher\";\nimport { useDebouncer } from \"@src/core/hooks/use-debouncer\";\nimport { Searcher, SearchResults } from \"@src/core/types/search\";\nimport { Backdrop } from \"@src/components/ui/backdrop\";\nimport { NavLink } from \"@src/components/blocks/nav-link\";\n\nexport interface SearchProps {\n searcher: Searcher | string;\n translations?: {\n /** Search... */\n search?: string;\n /** Type something... */\n typeSomething?: string;\n /** Nothing found */\n nothingFound?: string;\n };\n}\n\nexport const Search: React.FC<SearchProps> = ({ searcher, translations = {} }) => {\n const { search = \"Search...\", typeSomething = \"Type something...\", nothingFound = \"Nothing found\" } = translations;\n const titleRef = useRef<HTMLSpanElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const dialogRef = useRef<HTMLDialogElement | null>(null);\n const firstItem = useRef<HTMLAnchorElement | null>(null);\n const [results, setResults] = useState<SearchResults | null>(null);\n const system = useSystemType();\n\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 inputHandler(value);\n let newResults = null;\n if (value) {\n newResults = await targetSearcher(value, abortController);\n }\n setResults(newResults);\n });\n\n const openHandler = () => {\n const root = document.querySelector(\".r-root\");\n if (root) {\n root.classList.add(\"r-root_lock\");\n }\n inputRef.current?.focus();\n dialogRef.current?.showModal();\n };\n const closeHandler = () => {\n const root = document.querySelector(\".r-root\");\n if (root) {\n root.classList.remove(\"r-root_lock\");\n }\n dialogRef.current?.close();\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 const submitHandler = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (firstItem.current) {\n firstItem.current.focus();\n }\n };\n\n return (\n <>\n <button type=\"button\" className=\"r-search-btn r-no-js\" onClick={openHandler}>\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 <dialog\n onClose={closeHandler}\n className={clsx(\"r-search-dialog\", Boolean(results?.length) && \"_active\")}\n ref={dialogRef}\n >\n <Backdrop open onClose={closeHandler} />\n <div className=\"r-search-popup _visible\">\n <form className=\"r-search-popup-header\" onSubmit={submitHandler} autoComplete=\"off\">\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={closeHandler}>\n <KbdKey>ESC</KbdKey>\n </KbdContainer>\n </form>\n {results && (\n <ul className=\"r-search-results\">\n {results.length > 0 ? (\n results.map((item, index) => (\n <li key={item.href}>\n <NavLink\n href={item.href}\n onClick={closeHandler}\n className=\"r-search-item\"\n ref={index === 0 ? firstItem : undefined}\n >\n <p className=\"r-search-item-title\">{item.title}</p>\n {item.description && (\n <p className=\"r-search-item-desc\">{item.description}</p>\n )}\n </NavLink>\n </li>\n ))\n ) : (\n <p>{nothingFound}</p>\n )}\n </ul>\n )}\n </div>\n </dialog>\n </>\n );\n};\n"],"names":["Search","searcher","translations","search","typeSomething","nothingFound","titleRef","useRef","inputRef","dialogRef","firstItem","results","setResults","useState","system","useSystemType","targetSearcher","useMemo","createBaseSearcher","handler","useDebouncer","async","abortController","e","value","target","inputHandler","newResults","openHandler","root","document","querySelector","classList","add","current","focus","showModal","closeHandler","remove","close","useEffect","keyDown","key","toLowerCase","metaKey","ctrlKey","preventDefault","window","addEventListener","removeEventListener","text","innerText","React","createElement","Fragment","type","className","onClick","ref","KbdContainer","KbdKey","onClose","clsx","Boolean","length","Backdrop","open","onSubmit","autoComplete","name","placeholder","onChange","map","item","index","href","NavLink","undefined","title","description"],"mappings":"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"}
package/lib/styles.css CHANGED
@@ -162,6 +162,11 @@
162
162
  min-height: calc(100dvh - var(--r-header-height));
163
163
  overflow-wrap: break-word;
164
164
  box-sizing: border-box;
165
+ }.keylink-to-content {
166
+ position: absolute !important;
167
+ top: 8px;
168
+ left: 12px;
169
+ z-index: 1001;
165
170
  }.r-root {
166
171
  --r-header-height: 60px;
167
172
  position: relative;
@@ -395,65 +400,8 @@
395
400
  --r-cl-60: #86181d;
396
401
  --r-cl-61: #144620;
397
402
  --r-cl-62: #c24e00;
398
- }.keylink-to-content {
399
- position: absolute !important;
400
- top: 8px;
401
- left: 12px;
402
- z-index: 1001;
403
403
  }.r-keylink.keylink-to-navigation:focus {
404
404
  margin-top: -40px;
405
- }.r-article {
406
- padding: 20px 0 40px;
407
- grid-area: content;
408
- }
409
- @media screen and (width >= 1180px) {
410
- .r-article {
411
- padding: 32px 0 40px;
412
- }
413
- }
414
- .r-article > *:first-child {
415
- margin-top: 0;
416
- }
417
- .r-article > *:last-child {
418
- margin-bottom: 0;
419
- }
420
-
421
- .r-checkbox {
422
- cursor: pointer;
423
- width: 20px;
424
- height: 20px;
425
- margin: 4px;
426
- vertical-align: middle;
427
- box-sizing: border-box;
428
- }
429
-
430
- .r-label {
431
- cursor: pointer;
432
- }
433
-
434
- .r-task-ol,
435
- .r-task-ul {
436
- list-style: none;
437
- }
438
-
439
- .r-task-label {
440
- display: block;
441
- width: 100%;
442
- padding-top: 2px;
443
- padding-bottom: 2px;
444
- box-sizing: border-box;
445
- }
446
- .r-task-label:hover .r-checkbox {
447
- filter: brightness(0.8);
448
- }
449
-
450
- .r-task-li.r-task-li {
451
- margin-block-start: 2px;
452
- margin-block-end: 2px;
453
- }
454
-
455
- .r-label-text {
456
- vertical-align: middle;
457
405
  }.r-sidebar {
458
406
  grid-area: sidebar;
459
407
  box-sizing: border-box;
@@ -726,6 +674,58 @@
726
674
 
727
675
  .r-sidebar-drop[open] > .r-sidebar-drop-btn > .r-sidebar-drop-icon {
728
676
  transform: rotate(90deg);
677
+ }.r-article {
678
+ padding: 20px 0 40px;
679
+ grid-area: content;
680
+ }
681
+ @media screen and (width >= 1180px) {
682
+ .r-article {
683
+ padding: 32px 0 40px;
684
+ }
685
+ }
686
+ .r-article > *:first-child {
687
+ margin-top: 0;
688
+ }
689
+ .r-article > *:last-child {
690
+ margin-bottom: 0;
691
+ }
692
+
693
+ .r-checkbox {
694
+ cursor: pointer;
695
+ width: 20px;
696
+ height: 20px;
697
+ margin: 4px;
698
+ vertical-align: middle;
699
+ box-sizing: border-box;
700
+ }
701
+
702
+ .r-label {
703
+ cursor: pointer;
704
+ }
705
+
706
+ .r-task-ol,
707
+ .r-task-ul {
708
+ list-style: none;
709
+ }
710
+
711
+ .r-task-label {
712
+ display: block;
713
+ width: 100%;
714
+ padding-top: 2px;
715
+ padding-bottom: 2px;
716
+ box-sizing: border-box;
717
+ }
718
+ .r-task-label:hover .r-checkbox {
719
+ filter: brightness(0.8);
720
+ }
721
+
722
+ .r-task-li.r-task-li {
723
+ margin-block-start: 2px;
724
+ margin-block-end: 2px;
725
+ }
726
+
727
+ .r-label-text {
728
+ vertical-align: middle;
729
729
  }.r-header-menu {
730
730
  display: flex;
731
731
  justify-content: flex-end;
@@ -819,7 +819,7 @@
819
819
  border-radius: 6px;
820
820
  background-color: var(--r-main-100);
821
821
  color: var(--r-main-600);
822
- padding: 8px 20px;
822
+ padding: 8px 16px;
823
823
  border: 1px solid var(--r-main-200);
824
824
  width: 100%;
825
825
  text-align: left;
@@ -829,7 +829,7 @@
829
829
  @media screen and (width >= 768px) {
830
830
  .r-search-btn {
831
831
  width: 220px;
832
- padding: 8px 96px 8px 20px;
832
+ padding: 8px 96px 8px 16px;
833
833
  }
834
834
  }
835
835
  .r-search-btn:hover {
@@ -859,17 +859,83 @@
859
859
  }
860
860
  }
861
861
 
862
+ .r-search-dialog {
863
+ width: 100%;
864
+ height: 100%;
865
+ background: none;
866
+ max-width: none;
867
+ max-height: none;
868
+ border: none;
869
+ padding: unset;
870
+ transition: opacity 0.3s ease, overlay 0.4s ease-out allow-discrete, display 0.4s ease-out allow-discrete;
871
+ opacity: 0;
872
+ }
873
+ .r-search-dialog::backdrop {
874
+ backdrop-filter: blur(0);
875
+ background: color-mix(in srgb, var(--r-main-900) 0%, transparent 100%);
876
+ transition: backdrop-filter 0.4s ease-out, background 0.4s ease-out;
877
+ }
878
+
879
+ .r-search-dialog[open] {
880
+ opacity: 1;
881
+ }
882
+ @starting-style {
883
+ .r-search-dialog[open] {
884
+ opacity: 0;
885
+ }
886
+ }
887
+ .r-search-dialog[open]::backdrop {
888
+ backdrop-filter: blur(4px);
889
+ background: color-mix(in srgb, var(--r-main-900) 40%, transparent 100%);
890
+ }
891
+
892
+ .r-search-popup {
893
+ position: fixed;
894
+ left: 50%;
895
+ transform: translateX(-50%);
896
+ top: calc(var(--r-header-height) + 20px);
897
+ z-index: 200;
898
+ width: 100%;
899
+ max-width: 540px;
900
+ background-color: color-mix(in srgb, var(--r-main-50) 95%, transparent);
901
+ border: 2px solid var(--r-main-200);
902
+ border-bottom-width: 0;
903
+ border-radius: 12px 12px 0 0;
904
+ opacity: 0;
905
+ transform: translateX(-50%) translateY(-20px);
906
+ transition: opacity 0.2s, transform 0.2s;
907
+ }
908
+
909
+ .r-search-dialog[open] .r-search-popup {
910
+ opacity: 1;
911
+ transform: translateX(-50%) translateY(0);
912
+ }
913
+ @starting-style {
914
+ .r-search-dialog[open] .r-search-popup {
915
+ opacity: 0;
916
+ transform: translateX(-50%) translateY(-20px);
917
+ }
918
+ }
919
+
920
+ .r-search-dialog._active .r-search-popup {
921
+ border-radius: 12px;
922
+ border-bottom-width: 2px;
923
+ }
924
+
925
+ .r-search-popup:has(.r-search-input:focus) {
926
+ border-color: var(--r-main-300);
927
+ }
928
+
862
929
  .r-search-popup-header {
863
930
  position: relative;
864
931
  border-bottom: 1px solid var(--r-main-200);
865
932
  }
866
933
 
867
934
  .r-search-input {
868
- border-radius: 12px 12px 0 0;
869
- background-color: var(--r-main-50);
935
+ background: none;
870
936
  padding: 16px 20px;
871
937
  border: none;
872
- border-bottom: 2px solid var(--r-main-300);
938
+ border-bottom: 2px solid var(--r-main-100);
873
939
  width: 100%;
874
940
  font-size: 16px;
875
941
  box-sizing: border-box;
@@ -880,7 +946,7 @@
880
946
  }
881
947
  }
882
948
  .r-search-input:hover {
883
- border-bottom-color: var(--r-primary-800);
949
+ border-bottom-color: var(--r-main-300);
884
950
  }
885
951
  .r-search-input:focus {
886
952
  outline: none;
@@ -912,14 +978,14 @@
912
978
  color: var(--r-main-700);
913
979
  padding: 8px 12px;
914
980
  border: 1px solid var(--r-main-100);
915
- border-radius: 6px;
981
+ border-radius: 10px;
916
982
  width: 100%;
917
983
  margin-top: 6px;
918
984
  box-sizing: border-box;
919
985
  }
920
986
  .r-search-item:hover, .r-search-item:focus {
921
987
  color: var(--r-main-950);
922
- background-color: var(--r-main-100);
988
+ background-color: var(--r-main-50);
923
989
  border-color: var(--r-main-200);
924
990
  }
925
991
 
@@ -1121,182 +1187,69 @@
1121
1187
  user-select: none;
1122
1188
  pointer-events: none;
1123
1189
  box-sizing: border-box;
1124
- }.r-breadcrumbs {
1125
- grid-area: breadcrumbs;
1126
- list-style: none;
1127
- margin: 0;
1128
- padding: 20px 0 0;
1129
- line-height: 2;
1130
- }
1131
- @media screen and (width >= 768px) {
1132
- .r-breadcrumbs {
1133
- padding: 32px 0 0;
1134
- }
1190
+ }.r-contents {
1191
+ grid-area: contents;
1135
1192
  }
1136
1193
 
1137
- .r-breadcrumb {
1138
- display: inline;
1194
+ .r-contents-sticky {
1195
+ position: sticky;
1196
+ top: var(--r-header-height);
1197
+ width: 100%;
1198
+ box-sizing: border-box;
1139
1199
  }
1140
-
1141
- .r-breadcrumb._previous::after {
1142
- content: "/";
1143
- font-weight: 600;
1144
- margin-inline: 8px;
1200
+ @media screen and (width >= 1180px) {
1201
+ .r-contents-sticky {
1202
+ padding: 0 12px;
1203
+ max-height: calc(100dvh - var(--r-header-height));
1204
+ overflow: auto;
1205
+ scrollbar-width: thin;
1206
+ scrollbar-color: var(--r-main-200) transparent;
1207
+ scrollbar-gutter: stable;
1208
+ }
1145
1209
  }
1146
1210
 
1147
- .r-breadcrumb-link {
1148
- color: var(--r-main-700);
1149
- text-decoration: none;
1211
+ .r-contents-control {
1212
+ display: contents;
1213
+ visibility: hidden;
1150
1214
  }
1151
- .r-breadcrumb-link:hover {
1152
- color: var(--r-primary-800);
1215
+ @media screen and (width >= 1180px) {
1216
+ .r-contents-control {
1217
+ pointer-events: none;
1218
+ }
1153
1219
  }
1154
1220
 
1155
- .r-breadcrumb-link,
1156
- .r-breadcrumb-title {
1157
- display: inline;
1158
- padding: 6px 0;
1159
- margin: 0;
1221
+ .r-contents-control:checked + .r-contents-details .r-contents-list {
1222
+ box-sizing: border-box;
1160
1223
  }
1161
-
1162
- .r-breadcrumb-title {
1163
- color: var(--r-main-950);
1164
- font-weight: 600;
1165
- }.r-pagination {
1166
- grid-area: pagination;
1167
- display: grid;
1168
- grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
1169
- gap: 16px;
1170
- margin-bottom: 40px;
1224
+ @media screen and (width < 1180px) {
1225
+ .r-contents-control:checked + .r-contents-details .r-contents-list {
1226
+ visibility: visible;
1227
+ height: var(--drop-height, auto);
1228
+ }
1171
1229
  }
1172
-
1173
- .r-pagination-item {
1174
- position: relative;
1175
- padding-top: 8px;
1176
- padding-bottom: 8px;
1177
- text-decoration: none;
1178
- font-size: 14px;
1179
- color: var(--r-main-800);
1230
+ @media screen and (width < 1180px) {
1231
+ .r-contents-control:checked + .r-contents-details .r-contents-title {
1232
+ color: var(--r-main-800);
1233
+ }
1180
1234
  }
1181
- .r-pagination-item:hover {
1182
- color: var(--r-main-950);
1235
+ .r-contents-control:checked + .r-contents-details .r-contents-chevron {
1236
+ transform: rotate(180deg);
1183
1237
  }
1184
1238
 
1185
- .r-pagination-item._prev {
1186
- padding-left: 28px;
1239
+ .r-contents-list {
1240
+ overflow: hidden;
1241
+ transition: height 0.3s allow-discrete, visibility 0.3s allow-discrete;
1242
+ box-sizing: border-box;
1243
+ }
1244
+ @media screen and (width < 1180px) {
1245
+ .r-contents-list {
1246
+ visibility: hidden;
1247
+ height: 0;
1248
+ }
1187
1249
  }
1188
1250
 
1189
- .r-pagination-item._next {
1190
- text-align: right;
1191
- padding-right: 28px;
1192
- }
1193
-
1194
- .r-pagination-text {
1195
- display: block;
1196
- line-height: 2;
1197
- }
1198
-
1199
- .r-pagination-title {
1200
- font-weight: 600;
1201
- font-size: 16px;
1202
- }
1203
-
1204
- .r-pagination-icon {
1205
- position: absolute;
1206
- top: 50%;
1207
- transform: translateY(-50%);
1208
- transition: transform 0.2s;
1209
- }
1210
-
1211
- .r-pagination-icon._prev {
1212
- left: 0;
1213
- }
1214
- .r-pagination-item:hover .r-pagination-icon._prev {
1215
- transform: translate(-4px, -50%);
1216
- }
1217
- @media screen and (width >= 1180px) {
1218
- .r-pagination-item:hover .r-pagination-icon._prev {
1219
- transform: translate(-8px, -50%);
1220
- }
1221
- }
1222
-
1223
- .r-pagination-icon._next {
1224
- right: 0;
1225
- }
1226
- .r-pagination-item:hover .r-pagination-icon._next {
1227
- transform: translate(4px, -50%);
1228
- }
1229
- @media screen and (width >= 1180px) {
1230
- .r-pagination-item:hover .r-pagination-icon._next {
1231
- transform: translate(8px, -50%);
1232
- }
1233
- }
1234
-
1235
- .r-pagination-svg {
1236
- display: block;
1237
- }.r-contents {
1238
- grid-area: contents;
1239
- }
1240
-
1241
- .r-contents-sticky {
1242
- position: sticky;
1243
- top: var(--r-header-height);
1244
- width: 100%;
1245
- box-sizing: border-box;
1246
- }
1247
- @media screen and (width >= 1180px) {
1248
- .r-contents-sticky {
1249
- padding: 0 12px;
1250
- max-height: calc(100dvh - var(--r-header-height));
1251
- overflow: auto;
1252
- scrollbar-width: thin;
1253
- scrollbar-color: var(--r-main-200) transparent;
1254
- scrollbar-gutter: stable;
1255
- }
1256
- }
1257
-
1258
- .r-contents-control {
1259
- display: contents;
1260
- visibility: hidden;
1261
- }
1262
- @media screen and (width >= 1180px) {
1263
- .r-contents-control {
1264
- pointer-events: none;
1265
- }
1266
- }
1267
-
1268
- .r-contents-control:checked + .r-contents-details .r-contents-list {
1269
- box-sizing: border-box;
1270
- }
1271
- @media screen and (width < 1180px) {
1272
- .r-contents-control:checked + .r-contents-details .r-contents-list {
1273
- visibility: visible;
1274
- height: var(--drop-height, auto);
1275
- }
1276
- }
1277
- @media screen and (width < 1180px) {
1278
- .r-contents-control:checked + .r-contents-details .r-contents-title {
1279
- color: var(--r-main-800);
1280
- }
1281
- }
1282
- .r-contents-control:checked + .r-contents-details .r-contents-chevron {
1283
- transform: rotate(180deg);
1284
- }
1285
-
1286
- .r-contents-list {
1287
- overflow: hidden;
1288
- transition: height 0.3s allow-discrete, visibility 0.3s allow-discrete;
1289
- box-sizing: border-box;
1290
- }
1291
- @media screen and (width < 1180px) {
1292
- .r-contents-list {
1293
- visibility: hidden;
1294
- height: 0;
1295
- }
1296
- }
1297
-
1298
- .r-contents-list-content {
1299
- padding: 2px;
1251
+ .r-contents-list-content {
1252
+ padding: 2px;
1300
1253
  }
1301
1254
 
1302
1255
  @media screen and (width < 1180px) {
@@ -1467,9 +1420,138 @@
1467
1420
  }
1468
1421
  .r-contents-git:hover {
1469
1422
  color: var(--r-main-900);
1423
+ }.r-breadcrumbs {
1424
+ grid-area: breadcrumbs;
1425
+ list-style: none;
1426
+ margin: 0;
1427
+ padding: 20px 0 0;
1428
+ line-height: 2;
1429
+ }
1430
+ @media screen and (width >= 768px) {
1431
+ .r-breadcrumbs {
1432
+ padding: 32px 0 0;
1433
+ }
1434
+ }
1435
+
1436
+ .r-breadcrumb {
1437
+ display: inline;
1438
+ }
1439
+
1440
+ .r-breadcrumb._previous::after {
1441
+ content: "/";
1442
+ font-weight: 600;
1443
+ margin-inline: 8px;
1444
+ }
1445
+
1446
+ .r-breadcrumb-link {
1447
+ color: var(--r-main-700);
1448
+ text-decoration: none;
1449
+ }
1450
+ .r-breadcrumb-link:hover {
1451
+ color: var(--r-primary-800);
1452
+ }
1453
+
1454
+ .r-breadcrumb-link,
1455
+ .r-breadcrumb-title {
1456
+ display: inline;
1457
+ padding: 6px 0;
1458
+ margin: 0;
1459
+ }
1460
+
1461
+ .r-breadcrumb-title {
1462
+ color: var(--r-main-950);
1463
+ font-weight: 600;
1464
+ }.r-pagination {
1465
+ grid-area: pagination;
1466
+ display: grid;
1467
+ grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
1468
+ gap: 16px;
1469
+ margin-bottom: 40px;
1470
+ }
1471
+
1472
+ .r-pagination-item {
1473
+ position: relative;
1474
+ padding-top: 8px;
1475
+ padding-bottom: 8px;
1476
+ text-decoration: none;
1477
+ font-size: 14px;
1478
+ color: var(--r-main-800);
1479
+ }
1480
+ .r-pagination-item:hover {
1481
+ color: var(--r-main-950);
1482
+ }
1483
+
1484
+ .r-pagination-item._prev {
1485
+ padding-left: 28px;
1486
+ }
1487
+
1488
+ .r-pagination-item._next {
1489
+ text-align: right;
1490
+ padding-right: 28px;
1491
+ }
1492
+
1493
+ .r-pagination-text {
1494
+ display: block;
1495
+ line-height: 2;
1496
+ }
1497
+
1498
+ .r-pagination-title {
1499
+ font-weight: 600;
1500
+ font-size: 16px;
1501
+ }
1502
+
1503
+ .r-pagination-icon {
1504
+ position: absolute;
1505
+ top: 50%;
1506
+ transform: translateY(-50%);
1507
+ transition: transform 0.2s;
1508
+ }
1509
+
1510
+ .r-pagination-icon._prev {
1511
+ left: 0;
1512
+ }
1513
+ .r-pagination-item:hover .r-pagination-icon._prev {
1514
+ transform: translate(-4px, -50%);
1515
+ }
1516
+ @media screen and (width >= 1180px) {
1517
+ .r-pagination-item:hover .r-pagination-icon._prev {
1518
+ transform: translate(-8px, -50%);
1519
+ }
1520
+ }
1521
+
1522
+ .r-pagination-icon._next {
1523
+ right: 0;
1524
+ }
1525
+ .r-pagination-item:hover .r-pagination-icon._next {
1526
+ transform: translate(4px, -50%);
1527
+ }
1528
+ @media screen and (width >= 1180px) {
1529
+ .r-pagination-item:hover .r-pagination-icon._next {
1530
+ transform: translate(8px, -50%);
1531
+ }
1532
+ }
1533
+
1534
+ .r-pagination-svg {
1535
+ display: block;
1470
1536
  }.r-last-modified {
1471
1537
  color: var(--r-main-700);
1472
1538
  margin-block-start: 16px;
1539
+ }.r-backdrop {
1540
+ position: fixed;
1541
+ top: 0;
1542
+ right: 0;
1543
+ bottom: 0;
1544
+ left: 0;
1545
+ opacity: 0;
1546
+ visibility: hidden;
1547
+ pointer-events: none;
1548
+ z-index: 100;
1549
+ }
1550
+
1551
+ .r-backdrop._visible {
1552
+ opacity: 1;
1553
+ visibility: visible;
1554
+ pointer-events: all;
1473
1555
  }.r-git-logo {
1474
1556
  display: block;
1475
1557
  }.r-external-mark {
@@ -1503,6 +1585,25 @@
1503
1585
  background-color: currentColor;
1504
1586
  border-radius: 0 0 0 4px;
1505
1587
  box-sizing: border-box;
1588
+ }.r-anchor-heading:hover .r-anchor-heading-link {
1589
+ visibility: visible;
1590
+ opacity: 1;
1591
+ }
1592
+
1593
+ .r-anchor-heading-link {
1594
+ visibility: hidden;
1595
+ opacity: 0;
1596
+ transition: opacity 0.3s allow-discrete;
1597
+ padding-inline: 8px;
1598
+ margin-inline-start: -4px;
1599
+ color: var(--r-main-600);
1600
+ text-decoration: none;
1601
+ }
1602
+ .r-anchor-heading-link:hover {
1603
+ color: var(--r-primary-800);
1604
+ }
1605
+ .r-anchor-heading-link::after {
1606
+ content: "#";
1506
1607
  }.r-code-section {
1507
1608
  position: relative;
1508
1609
  margin-block-start: 1.5em;
@@ -1554,25 +1655,6 @@
1554
1655
 
1555
1656
  .r-code-section-filename {
1556
1657
  font-family: var(--monospace-font, monospace, monospace);
1557
- }.r-anchor-heading:hover .r-anchor-heading-link {
1558
- visibility: visible;
1559
- opacity: 1;
1560
- }
1561
-
1562
- .r-anchor-heading-link {
1563
- visibility: hidden;
1564
- opacity: 0;
1565
- transition: opacity 0.3s allow-discrete;
1566
- padding-inline: 8px;
1567
- margin-inline-start: -4px;
1568
- color: var(--r-main-600);
1569
- text-decoration: none;
1570
- }
1571
- .r-anchor-heading-link:hover {
1572
- color: var(--r-primary-800);
1573
- }
1574
- .r-anchor-heading-link::after {
1575
- content: "#";
1576
1658
  }.r-block {
1577
1659
  width: 100%;
1578
1660
  overflow: auto;
@@ -1581,19 +1663,6 @@
1581
1663
  scrollbar-width: thin;
1582
1664
  scrollbar-color: var(--r-main-200) transparent;
1583
1665
  box-sizing: border-box;
1584
- }.r-code-block {
1585
- font-family: var(--monospace-font, monospace, monospace);
1586
- font-size: 16px;
1587
- line-height: 1.33;
1588
- border-radius: 6px;
1589
- padding: 16px 20px;
1590
- margin: 0;
1591
- color: var(--r-primary-800);
1592
- background-color: var(--r-main-50);
1593
- overflow-x: auto;
1594
- scrollbar-width: thin;
1595
- scrollbar-color: var(--r-main-200) transparent;
1596
- box-sizing: border-box;
1597
1666
  }.r-blockquote {
1598
1667
  background-color: var(--r-main-100);
1599
1668
  padding: 8px 12px 8px 20px;
@@ -1650,22 +1719,18 @@
1650
1719
  }
1651
1720
  .r-blockquote-caution .r-blockquote-title {
1652
1721
  color: var(--r-caution);
1653
- }.r-code-span {
1722
+ }.r-code-block {
1654
1723
  font-family: var(--monospace-font, monospace, monospace);
1655
- background-color: var(--r-main-100);
1656
- border: 1px solid var(--r-main-200);
1657
- color: var(--r-main-950);
1658
- border-radius: 4px;
1659
- padding: 2px 6px;
1660
- font-size: inherit;
1661
- font-weight: 500;
1662
- letter-spacing: 0.5px;
1663
- }
1664
-
1665
- .r-code-span + .r-content-link-external {
1666
- margin-left: -12px;
1667
- }.r-img {
1668
- max-width: 100%;
1724
+ font-size: 16px;
1725
+ line-height: 1.33;
1726
+ border-radius: 6px;
1727
+ padding: 16px 20px;
1728
+ margin: 0;
1729
+ color: var(--r-primary-800);
1730
+ background-color: var(--r-main-50);
1731
+ overflow-x: auto;
1732
+ scrollbar-width: thin;
1733
+ scrollbar-color: var(--r-main-200) transparent;
1669
1734
  box-sizing: border-box;
1670
1735
  }.r-h1 {
1671
1736
  font-size: 32px;
@@ -1707,6 +1772,23 @@
1707
1772
  line-height: 1.4;
1708
1773
  margin-block-start: 1.8em;
1709
1774
  margin-block-end: 1.8em;
1775
+ }.r-code-span {
1776
+ font-family: var(--monospace-font, monospace, monospace);
1777
+ background-color: var(--r-main-100);
1778
+ border: 1px solid var(--r-main-200);
1779
+ color: var(--r-main-950);
1780
+ border-radius: 4px;
1781
+ padding: 2px 6px;
1782
+ font-size: inherit;
1783
+ font-weight: 500;
1784
+ letter-spacing: 0.5px;
1785
+ }
1786
+
1787
+ .r-code-span + .r-content-link-external {
1788
+ margin-left: -12px;
1789
+ }.r-img {
1790
+ max-width: 100%;
1791
+ box-sizing: border-box;
1710
1792
  }.r-p {
1711
1793
  line-height: 1.8;
1712
1794
  margin-block-start: 1em;
@@ -1752,42 +1834,6 @@
1752
1834
 
1753
1835
  .r-tab-header-code {
1754
1836
  font-family: var(--monospace-font, monospace, monospace);
1755
- }.r-modal {
1756
- position: fixed;
1757
- left: 0;
1758
- bottom: 0;
1759
- width: 100%;
1760
- background-color: color-mix(in srgb, var(--r-main-50) 95%, transparent);
1761
- border: 2px solid var(--r-main-200);
1762
- border-radius: 12px 12px 0 0;
1763
- opacity: 0;
1764
- visibility: hidden;
1765
- pointer-events: none;
1766
- transition: opacity 0.2s 0.1s, transform 0.2s 0.1s, visibility 0.01s 0.2s 0.1s;
1767
- z-index: 1000;
1768
- box-sizing: border-box;
1769
- }
1770
- @media screen and (width >= 768px) {
1771
- .r-modal {
1772
- top: 10%;
1773
- left: 50%;
1774
- bottom: auto;
1775
- transform: translateX(-50%) scale(0.95);
1776
- max-width: 480px;
1777
- border-radius: 12px;
1778
- }
1779
- }
1780
-
1781
- .r-modal._visible {
1782
- opacity: 1;
1783
- visibility: visible;
1784
- transition: opacity 0.2s 0.1s, transform 0.2s 0.1s;
1785
- pointer-events: all;
1786
- }
1787
- @media screen and (width >= 768px) {
1788
- .r-modal._visible {
1789
- transform: translateX(-50%) scale(1);
1790
- }
1791
1837
  }.r-kbd-container {
1792
1838
  display: flex;
1793
1839
  gap: 4px;
@@ -1959,10 +2005,6 @@
1959
2005
  border-collapse: collapse;
1960
2006
  }.r-thead {
1961
2007
  background-color: var(--r-main-100);
1962
- }.r-task-ul {
1963
- list-style: none;
1964
- }.r-task-ol {
1965
- list-style: none;
1966
2008
  }.r-task-li.r-task-li {
1967
2009
  margin-block-start: 2px;
1968
2010
  margin-block-end: 2px;
@@ -1992,27 +2034,10 @@
1992
2034
 
1993
2035
  .r-task-label-text {
1994
2036
  vertical-align: middle;
1995
- }.r-backdrop {
1996
- position: fixed;
1997
- top: 0;
1998
- right: 0;
1999
- bottom: 0;
2000
- left: 0;
2001
- background: color-mix(in srgb, var(--r-main-900) 0%, transparent 100%);
2002
- opacity: 0;
2003
- visibility: hidden;
2004
- pointer-events: none;
2005
- backdrop-filter: blur(4px);
2006
- transition: background 0.05s, opacity 0.2s, visibility 0.01s 0.15s;
2007
- z-index: 100;
2008
- }
2009
-
2010
- .r-backdrop._visible {
2011
- opacity: 1;
2012
- background: color-mix(in srgb, var(--r-main-900) 10%, transparent 100%);
2013
- visibility: visible;
2014
- transition: background 0.05s, opacity 0.2s;
2015
- pointer-events: all;
2037
+ }.r-task-ol {
2038
+ list-style: none;
2039
+ }.r-task-ul {
2040
+ list-style: none;
2016
2041
  }.r-tooltip {
2017
2042
  font-family: var(--monospace-font, monospace, monospace);
2018
2043
  display: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robindoc",
3
- "version": "0.0.0-experimental-7903271",
3
+ "version": "0.0.0-experimental-3f39623",
4
4
  "description": "Robindoc is a framework for automatically creating documentation websites based on markdown files, built on React.js Server Components",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
@@ -1,16 +0,0 @@
1
- import React from "react";
2
- import { type Searcher } from "../../../../core/types/search";
3
- export interface SearchModalProps {
4
- onClose(): void;
5
- open: boolean;
6
- onInput(text: string): void;
7
- searcher: Searcher | string;
8
- translations?: {
9
- /** Type something... */
10
- typeSomething?: string;
11
- /** Nothing found */
12
- nothingFound?: string;
13
- };
14
- }
15
- export declare const SearchModal: React.FC<SearchModalProps>;
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/blocks/search/search-modal/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,KAAK,QAAQ,EAAsB,sCAA+B;AAO3E,MAAM,WAAW,gBAAgB;IAC7B,OAAO,IAAI,IAAI,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE;QACX,wBAAwB;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,oBAAoB;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACL;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwDlD,CAAC"}
@@ -1,3 +0,0 @@
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(()=>"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
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,8 +0,0 @@
1
- import React from "react";
2
- import "./modal.scss";
3
- export interface ModalProps {
4
- onClose(): void;
5
- open: boolean;
6
- }
7
- export declare const Modal: React.FC<React.PropsWithChildren<ModalProps>>;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/modal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IACvB,OAAO,IAAI,IAAI,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAO/D,CAAC"}
@@ -1,2 +0,0 @@
1
- import e from"react";import o from"clsx";import{Backdrop as r}from"../backdrop/index.js";const t=({open:t,onClose:l,children:m})=>e.createElement(e.Fragment,null,e.createElement(r,{open:t,onClose:l}),e.createElement("div",{className:o("r-modal",t&&"_visible")},m));export{t as Modal};
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/ui/modal/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { Backdrop } from \"../backdrop\";\n\nimport \"./modal.scss\";\n\nexport interface ModalProps {\n onClose(): void;\n open: boolean;\n}\n\nexport const Modal: React.FC<React.PropsWithChildren<ModalProps>> = ({ open, onClose, children }) => {\n return (\n <>\n <Backdrop open={open} onClose={onClose} />\n <div className={clsx(\"r-modal\", open && \"_visible\")}>{children}</div>\n </>\n );\n};\n"],"names":["Modal","open","onClose","children","React","createElement","Fragment","Backdrop","className","clsx"],"mappings":"yFAYO,MAAMA,EAAuD,EAAGC,OAAMC,UAASC,cAE9EC,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAAC,cAACE,GAASN,KAAMA,EAAMC,QAASA,IAC/BE,EAAAC,cAAA,MAAA,CAAKG,UAAWC,EAAK,UAAWR,GAAQ,aAAcE"}
@@ -1,6 +0,0 @@
1
- export declare const useModal: () => {
2
- opened: boolean;
3
- openHandler: () => void;
4
- closeHandler: () => void;
5
- };
6
- //# sourceMappingURL=use-modal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-modal.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/modal/use-modal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;CA8BpB,CAAC"}
@@ -1,2 +0,0 @@
1
- import{useState as e,useCallback as n,useEffect as o}from"react";const r=()=>{const[r,t]=e(!1),d=()=>{t(!1)},w=n(e=>{"Escape"===e.key&&(e.preventDefault(),d())},[]);return o(()=>(r?window.addEventListener("keydown",w):window.removeEventListener("keydown",w),()=>{window.removeEventListener("keydown",w)}),[r]),{opened:r,openHandler:()=>{t(!0)},closeHandler:d}};export{r as useModal};
2
- //# sourceMappingURL=use-modal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-modal.js","sources":["../../../../src/components/ui/modal/use-modal.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\nexport const useModal = () => {\n const [opened, setOpened] = useState(false);\n\n const openHandler = () => {\n setOpened(true);\n };\n const closeHandler = () => {\n setOpened(false);\n };\n\n const closeOnEscape = useCallback((e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n closeHandler();\n }\n }, []);\n\n useEffect(() => {\n if (opened) {\n window.addEventListener(\"keydown\", closeOnEscape);\n } else {\n window.removeEventListener(\"keydown\", closeOnEscape);\n }\n\n return () => {\n window.removeEventListener(\"keydown\", closeOnEscape);\n };\n }, [opened]);\n\n return { opened, openHandler, closeHandler };\n};\n"],"names":["useModal","opened","setOpened","useState","closeHandler","closeOnEscape","useCallback","e","key","preventDefault","useEffect","window","addEventListener","removeEventListener","openHandler"],"mappings":"iEAEO,MAAMA,EAAW,KACpB,MAAOC,EAAQC,GAAaC,GAAS,GAK/BC,EAAe,KACjBF,GAAU,IAGRG,EAAgBC,EAAaC,IACjB,WAAVA,EAAEC,MACFD,EAAEE,iBACFL,MAEL,IAcH,OAZAM,EAAU,KACFT,EACAU,OAAOC,iBAAiB,UAAWP,GAEnCM,OAAOE,oBAAoB,UAAWR,GAGnC,KACHM,OAAOE,oBAAoB,UAAWR,KAE3C,CAACJ,IAEG,CAAEA,SAAQa,YA1BG,KAChBZ,GAAU,IAyBgBE"}