robindoc 0.0.0-experimental-7903271 → 0.0.0-experimental-0477e0c

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
@@ -122,46 +122,6 @@
122
122
  }
123
123
  .r-powered-link:hover {
124
124
  color: var(--r-primary-900);
125
- }.r-docs-container {
126
- min-height: calc(100dvh - var(--r-header-height));
127
- overflow-wrap: break-word;
128
- box-sizing: border-box;
129
- }
130
- @media screen and (width >= 768px) {
131
- .r-docs-container {
132
- display: grid;
133
- justify-content: center;
134
- column-gap: 32px;
135
- grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
136
- grid-template-columns: 1fr calc(100% - 248px);
137
- grid-template-rows: auto auto 1fr auto;
138
- }
139
- }
140
- @media screen and (width >= 1180px) {
141
- .r-docs-container {
142
- column-gap: 40px;
143
- grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
144
- grid-template-columns: 200px 640px 1fr;
145
- grid-template-rows: auto 1fr auto;
146
- }
147
- }.r-blog-container {
148
- min-height: calc(100dvh - var(--r-header-height));
149
- overflow-wrap: break-word;
150
- box-sizing: border-box;
151
- }
152
- @media screen and (width >= 1180px) {
153
- .r-blog-container {
154
- display: grid;
155
- justify-content: space-between;
156
- column-gap: 40px;
157
- grid-template-areas: "breadcrumbs contents" "content contents" "pagination contents";
158
- grid-template-columns: 760px 220px;
159
- grid-template-rows: auto 1fr auto;
160
- }
161
- }.r-page-container {
162
- min-height: calc(100dvh - var(--r-header-height));
163
- overflow-wrap: break-word;
164
- box-sizing: border-box;
165
125
  }.r-root {
166
126
  --r-header-height: 60px;
167
127
  position: relative;
@@ -395,6 +355,46 @@
395
355
  --r-cl-60: #86181d;
396
356
  --r-cl-61: #144620;
397
357
  --r-cl-62: #c24e00;
358
+ }.r-docs-container {
359
+ min-height: calc(100dvh - var(--r-header-height));
360
+ overflow-wrap: break-word;
361
+ box-sizing: border-box;
362
+ }
363
+ @media screen and (width >= 768px) {
364
+ .r-docs-container {
365
+ display: grid;
366
+ justify-content: center;
367
+ column-gap: 32px;
368
+ grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
369
+ grid-template-columns: 1fr calc(100% - 248px);
370
+ grid-template-rows: auto auto 1fr auto;
371
+ }
372
+ }
373
+ @media screen and (width >= 1180px) {
374
+ .r-docs-container {
375
+ column-gap: 40px;
376
+ grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
377
+ grid-template-columns: 200px 640px 1fr;
378
+ grid-template-rows: auto 1fr auto;
379
+ }
380
+ }.r-page-container {
381
+ min-height: calc(100dvh - var(--r-header-height));
382
+ overflow-wrap: break-word;
383
+ box-sizing: border-box;
384
+ }.r-blog-container {
385
+ min-height: calc(100dvh - var(--r-header-height));
386
+ overflow-wrap: break-word;
387
+ box-sizing: border-box;
388
+ }
389
+ @media screen and (width >= 1180px) {
390
+ .r-blog-container {
391
+ display: grid;
392
+ justify-content: space-between;
393
+ column-gap: 40px;
394
+ grid-template-areas: "breadcrumbs contents" "content contents" "pagination contents";
395
+ grid-template-columns: 760px 220px;
396
+ grid-template-rows: auto 1fr auto;
397
+ }
398
398
  }.keylink-to-content {
399
399
  position: absolute !important;
400
400
  top: 8px;
@@ -814,12 +814,98 @@
814
814
  .r-header-input:checked ~ .r-header-burger .r-burger-line._bottom {
815
815
  transform: translateY(0) rotate(-45deg);
816
816
  margin-top: 0;
817
+ }.r-dropdown {
818
+ position: relative;
819
+ color: var(--r-main-600);
820
+ transition: color 0.2s 0.1s;
821
+ }
822
+ .r-dropdown:hover, .r-dropdown:focus-within {
823
+ color: var(--r-main-950);
824
+ }
825
+ .r-dropdown:hover .r-dropdown-drop, .r-dropdown:focus-within .r-dropdown-drop {
826
+ visibility: visible;
827
+ pointer-events: all;
828
+ transform: translateY(20px);
829
+ opacity: 1;
830
+ }
831
+ .r-dropdown:hover .r-dropdown-chevron, .r-dropdown:focus-within .r-dropdown-chevron {
832
+ transform: rotate(180deg);
833
+ }
834
+
835
+ .r-dropdown-summary {
836
+ display: flex;
837
+ justify-content: space-between;
838
+ align-items: center;
839
+ width: 100%;
840
+ position: relative;
841
+ color: inherit;
842
+ cursor: pointer;
843
+ padding: 10px 4px;
844
+ font-size: 16px;
845
+ border: 0;
846
+ background: none;
847
+ z-index: 1;
848
+ box-sizing: border-box;
849
+ }
850
+
851
+ .r-dropdown-chevron {
852
+ display: block;
853
+ margin-left: 6px;
854
+ transition: transform 0.3s 0.1s;
855
+ box-sizing: border-box;
856
+ }
857
+
858
+ .r-dropdown-drop {
859
+ list-style: none;
860
+ position: absolute;
861
+ top: 16px;
862
+ left: -12px;
863
+ visibility: hidden;
864
+ pointer-events: none;
865
+ opacity: 0;
866
+ transition: transform 0.3s 0.1s, opacity 0.3s 0.1s, visibility 0.3s 0.1s;
867
+ background-color: var(--r-main-50);
868
+ border: 1px solid var(--r-main-100);
869
+ border-radius: 8px;
870
+ margin: 0;
871
+ padding: 2px 6px;
872
+ min-width: 120px;
873
+ max-width: 180px;
874
+ box-sizing: border-box;
875
+ }
876
+
877
+ .r-dropdown-link {
878
+ display: block;
879
+ width: 100%;
880
+ text-decoration: none;
881
+ color: var(--r-main-700);
882
+ padding: 4px 8px;
883
+ margin-top: 4px;
884
+ margin-bottom: 4px;
885
+ border-radius: 4px;
886
+ transition: background-color 0.2s;
887
+ box-sizing: border-box;
888
+ }
889
+ .r-dropdown-link:hover {
890
+ color: var(--r-main-900);
891
+ background-color: var(--r-main-100);
892
+ }
893
+
894
+ .r-dropdown-link._active {
895
+ color: var(--r-primary-700);
896
+ }.r-container {
897
+ max-width: 1180px;
898
+ padding-right: 12px;
899
+ padding-left: 12px;
900
+ margin-right: auto;
901
+ margin-left: auto;
902
+ box-sizing: border-box;
817
903
  }.r-search-btn {
818
904
  position: relative;
819
905
  border-radius: 6px;
820
906
  background-color: var(--r-main-100);
821
907
  color: var(--r-main-600);
822
- padding: 8px 20px;
908
+ padding: 8px 16px;
823
909
  border: 1px solid var(--r-main-200);
824
910
  width: 100%;
825
911
  text-align: left;
@@ -829,7 +915,7 @@
829
915
  @media screen and (width >= 768px) {
830
916
  .r-search-btn {
831
917
  width: 220px;
832
- padding: 8px 96px 8px 20px;
918
+ padding: 8px 96px 8px 16px;
833
919
  }
834
920
  }
835
921
  .r-search-btn:hover {
@@ -859,17 +945,83 @@
859
945
  }
860
946
  }
861
947
 
948
+ .r-search-dialog {
949
+ width: 100%;
950
+ height: 100%;
951
+ background: none;
952
+ max-width: none;
953
+ max-height: none;
954
+ border: none;
955
+ padding: unset;
956
+ transition: opacity 0.3s ease, overlay 0.4s ease-out allow-discrete, display 0.4s ease-out allow-discrete;
957
+ opacity: 0;
958
+ }
959
+ .r-search-dialog::backdrop {
960
+ backdrop-filter: blur(0);
961
+ background: color-mix(in srgb, var(--r-main-900) 0%, transparent 100%);
962
+ transition: backdrop-filter 0.4s ease-out, background 0.4s ease-out;
963
+ }
964
+
965
+ .r-search-dialog[open] {
966
+ opacity: 1;
967
+ }
968
+ @starting-style {
969
+ .r-search-dialog[open] {
970
+ opacity: 0;
971
+ }
972
+ }
973
+ .r-search-dialog[open]::backdrop {
974
+ backdrop-filter: blur(4px);
975
+ background: color-mix(in srgb, var(--r-main-900) 40%, transparent 100%);
976
+ }
977
+
978
+ .r-search-popup {
979
+ position: fixed;
980
+ left: 50%;
981
+ transform: translateX(-50%);
982
+ top: calc(var(--r-header-height) + 20px);
983
+ z-index: 200;
984
+ width: 100%;
985
+ max-width: 540px;
986
+ background-color: color-mix(in srgb, var(--r-main-50) 95%, transparent);
987
+ border: 2px solid var(--r-main-200);
988
+ border-bottom-width: 0;
989
+ border-radius: 12px 12px 0 0;
990
+ opacity: 0;
991
+ transform: translateX(-50%) translateY(-20px);
992
+ transition: opacity 0.2s, transform 0.2s;
993
+ }
994
+
995
+ .r-search-dialog[open] .r-search-popup {
996
+ opacity: 1;
997
+ transform: translateX(-50%) translateY(0);
998
+ }
999
+ @starting-style {
1000
+ .r-search-dialog[open] .r-search-popup {
1001
+ opacity: 0;
1002
+ transform: translateX(-50%) translateY(-20px);
1003
+ }
1004
+ }
1005
+
1006
+ .r-search-dialog._active .r-search-popup {
1007
+ border-radius: 12px;
1008
+ border-bottom-width: 2px;
1009
+ }
1010
+
1011
+ .r-search-popup:has(.r-search-input:focus) {
1012
+ border-color: var(--r-main-300);
1013
+ }
1014
+
862
1015
  .r-search-popup-header {
863
1016
  position: relative;
864
1017
  border-bottom: 1px solid var(--r-main-200);
865
1018
  }
866
1019
 
867
1020
  .r-search-input {
868
- border-radius: 12px 12px 0 0;
869
- background-color: var(--r-main-50);
1021
+ background: none;
870
1022
  padding: 16px 20px;
871
1023
  border: none;
872
- border-bottom: 2px solid var(--r-main-300);
1024
+ border-bottom: 2px solid var(--r-main-100);
873
1025
  width: 100%;
874
1026
  font-size: 16px;
875
1027
  box-sizing: border-box;
@@ -880,7 +1032,7 @@
880
1032
  }
881
1033
  }
882
1034
  .r-search-input:hover {
883
- border-bottom-color: var(--r-primary-800);
1035
+ border-bottom-color: var(--r-main-300);
884
1036
  }
885
1037
  .r-search-input:focus {
886
1038
  outline: none;
@@ -912,14 +1064,14 @@
912
1064
  color: var(--r-main-700);
913
1065
  padding: 8px 12px;
914
1066
  border: 1px solid var(--r-main-100);
915
- border-radius: 6px;
1067
+ border-radius: 10px;
916
1068
  width: 100%;
917
1069
  margin-top: 6px;
918
1070
  box-sizing: border-box;
919
1071
  }
920
1072
  .r-search-item:hover, .r-search-item:focus {
921
1073
  color: var(--r-main-950);
922
- background-color: var(--r-main-100);
1074
+ background-color: var(--r-main-50);
923
1075
  border-color: var(--r-main-200);
924
1076
  }
925
1077
 
@@ -931,85 +1083,6 @@
931
1083
  font-size: 14px;
932
1084
  color: var(--r-main-600);
933
1085
  margin: 12px 0 0;
934
- }.r-dropdown {
935
- position: relative;
936
- color: var(--r-main-600);
937
- transition: color 0.2s 0.1s;
938
- }
939
- .r-dropdown:hover, .r-dropdown:focus-within {
940
- color: var(--r-main-950);
941
- }
942
- .r-dropdown:hover .r-dropdown-drop, .r-dropdown:focus-within .r-dropdown-drop {
943
- visibility: visible;
944
- pointer-events: all;
945
- transform: translateY(20px);
946
- opacity: 1;
947
- }
948
- .r-dropdown:hover .r-dropdown-chevron, .r-dropdown:focus-within .r-dropdown-chevron {
949
- transform: rotate(180deg);
950
- }
951
-
952
- .r-dropdown-summary {
953
- display: flex;
954
- justify-content: space-between;
955
- align-items: center;
956
- width: 100%;
957
- position: relative;
958
- color: inherit;
959
- cursor: pointer;
960
- padding: 10px 4px;
961
- font-size: 16px;
962
- border: 0;
963
- background: none;
964
- z-index: 1;
965
- box-sizing: border-box;
966
- }
967
-
968
- .r-dropdown-chevron {
969
- display: block;
970
- margin-left: 6px;
971
- transition: transform 0.3s 0.1s;
972
- box-sizing: border-box;
973
- }
974
-
975
- .r-dropdown-drop {
976
- list-style: none;
977
- position: absolute;
978
- top: 16px;
979
- left: -12px;
980
- visibility: hidden;
981
- pointer-events: none;
982
- opacity: 0;
983
- transition: transform 0.3s 0.1s, opacity 0.3s 0.1s, visibility 0.3s 0.1s;
984
- background-color: var(--r-main-50);
985
- border: 1px solid var(--r-main-100);
986
- border-radius: 8px;
987
- margin: 0;
988
- padding: 2px 6px;
989
- min-width: 120px;
990
- max-width: 180px;
991
- box-sizing: border-box;
992
- }
993
-
994
- .r-dropdown-link {
995
- display: block;
996
- width: 100%;
997
- text-decoration: none;
998
- color: var(--r-main-700);
999
- padding: 4px 8px;
1000
- margin-top: 4px;
1001
- margin-bottom: 4px;
1002
- border-radius: 4px;
1003
- transition: background-color 0.2s;
1004
- box-sizing: border-box;
1005
- }
1006
- .r-dropdown-link:hover {
1007
- color: var(--r-main-900);
1008
- background-color: var(--r-main-100);
1009
- }
1010
-
1011
- .r-dropdown-link._active {
1012
- color: var(--r-primary-700);
1013
1086
  }.r-header-social {
1014
1087
  display: flex;
1015
1088
  flex: 1;
@@ -1028,13 +1101,6 @@
1028
1101
  }
1029
1102
  .r-header-social-git:hover, .r-header-social-git:focus {
1030
1103
  color: var(--r-main-950);
1031
- }.r-container {
1032
- max-width: 1180px;
1033
- padding-right: 12px;
1034
- padding-left: 12px;
1035
- margin-right: auto;
1036
- margin-left: auto;
1037
- box-sizing: border-box;
1038
1104
  }.r-theme-switcher {
1039
1105
  position: relative;
1040
1106
  display: flex;
@@ -1470,8 +1536,22 @@
1470
1536
  }.r-last-modified {
1471
1537
  color: var(--r-main-700);
1472
1538
  margin-block-start: 16px;
1473
- }.r-git-logo {
1474
- display: block;
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;
1475
1555
  }.r-external-mark {
1476
1556
  position: relative;
1477
1557
  vertical-align: text-top;
@@ -1503,6 +1583,27 @@
1503
1583
  background-color: currentColor;
1504
1584
  border-radius: 0 0 0 4px;
1505
1585
  box-sizing: border-box;
1586
+ }.r-git-logo {
1587
+ display: block;
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,20 @@
1581
1663
  scrollbar-width: thin;
1582
1664
  scrollbar-color: var(--r-main-200) transparent;
1583
1665
  box-sizing: border-box;
1584
- }.r-code-block {
1666
+ }.r-code-span {
1585
1667
  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;
1668
+ background-color: var(--r-main-100);
1669
+ border: 1px solid var(--r-main-200);
1670
+ color: var(--r-main-950);
1671
+ border-radius: 4px;
1672
+ padding: 2px 6px;
1673
+ font-size: inherit;
1674
+ font-weight: 500;
1675
+ letter-spacing: 0.5px;
1676
+ }
1677
+
1678
+ .r-code-span + .r-content-link-external {
1679
+ margin-left: -12px;
1597
1680
  }.r-blockquote {
1598
1681
  background-color: var(--r-main-100);
1599
1682
  padding: 8px 12px 8px 20px;
@@ -1650,22 +1733,18 @@
1650
1733
  }
1651
1734
  .r-blockquote-caution .r-blockquote-title {
1652
1735
  color: var(--r-caution);
1653
- }.r-code-span {
1736
+ }.r-code-block {
1654
1737
  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%;
1738
+ font-size: 16px;
1739
+ line-height: 1.33;
1740
+ border-radius: 6px;
1741
+ padding: 16px 20px;
1742
+ margin: 0;
1743
+ color: var(--r-primary-800);
1744
+ background-color: var(--r-main-50);
1745
+ overflow-x: auto;
1746
+ scrollbar-width: thin;
1747
+ scrollbar-color: var(--r-main-200) transparent;
1669
1748
  box-sizing: border-box;
1670
1749
  }.r-h1 {
1671
1750
  font-size: 32px;
@@ -1707,6 +1786,9 @@
1707
1786
  line-height: 1.4;
1708
1787
  margin-block-start: 1.8em;
1709
1788
  margin-block-end: 1.8em;
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-ul {
2038
+ list-style: none;
2039
+ }.r-task-ol {
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-0477e0c",
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"}