@startdownnotez404/ui 1.0.0 → 1.3.5
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/README.md +110 -0
- package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
- package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
- package/dist/AvatarField-SAODT3CZ.mjs +275 -0
- package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
- package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
- package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
- package/dist/DateField-ZYMZFHL4.mjs +82 -0
- package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
- package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
- package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
- package/dist/FileUploadField-NTMWBJER.mjs +78 -0
- package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
- package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
- package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
- package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
- package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
- package/dist/TelField-LOGRVZ4I.mjs +88 -0
- package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
- package/dist/alert.d.mts +202 -0
- package/dist/alert.d.ts +202 -0
- package/dist/alert.js +784 -0
- package/dist/alert.js.map +1 -0
- package/dist/alert.mjs +47 -0
- package/dist/alert.mjs.map +1 -0
- package/dist/appBar.d.mts +21 -0
- package/dist/appBar.d.ts +21 -0
- package/dist/appBar.js +64 -0
- package/dist/appBar.js.map +1 -0
- package/dist/appBar.mjs +12 -0
- package/dist/appBar.mjs.map +1 -0
- package/dist/autocomplete.d.mts +121 -0
- package/dist/autocomplete.d.ts +121 -0
- package/dist/autocomplete.js +2052 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/autocomplete.mjs +21 -0
- package/dist/autocomplete.mjs.map +1 -0
- package/dist/avatar.d.mts +253 -0
- package/dist/avatar.d.ts +253 -0
- package/dist/avatar.js +992 -0
- package/dist/avatar.js.map +1 -0
- package/dist/avatar.mjs +41 -0
- package/dist/avatar.mjs.map +1 -0
- package/dist/badge.d.mts +123 -0
- package/dist/badge.d.ts +123 -0
- package/dist/badge.js +151 -0
- package/dist/badge.js.map +1 -0
- package/dist/badge.mjs +10 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/box.d.mts +36 -0
- package/dist/box.d.ts +36 -0
- package/dist/box.js +199 -0
- package/dist/box.js.map +1 -0
- package/dist/box.mjs +14 -0
- package/dist/box.mjs.map +1 -0
- package/dist/button.d.mts +230 -52
- package/dist/button.d.ts +230 -52
- package/dist/button.js +392 -60
- package/dist/button.js.map +1 -1
- package/dist/button.mjs +14 -8
- package/dist/card.d.mts +47 -0
- package/dist/card.d.ts +47 -0
- package/dist/card.js +135 -0
- package/dist/card.js.map +1 -0
- package/dist/card.mjs +24 -0
- package/dist/card.mjs.map +1 -0
- package/dist/chart.d.mts +40 -0
- package/dist/chart.d.ts +40 -0
- package/dist/chart.js +1234 -0
- package/dist/chart.js.map +1 -0
- package/dist/chart.mjs +10 -0
- package/dist/chart.mjs.map +1 -0
- package/dist/checkbox.d.mts +62 -0
- package/dist/checkbox.d.ts +62 -0
- package/dist/checkbox.js +299 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/checkbox.mjs +14 -0
- package/dist/checkbox.mjs.map +1 -0
- package/dist/chip.d.mts +96 -0
- package/dist/chip.d.ts +96 -0
- package/dist/chip.js +112 -0
- package/dist/chip.js.map +1 -0
- package/dist/chip.mjs +10 -0
- package/dist/chip.mjs.map +1 -0
- package/dist/chunk-24XDGNJ6.mjs +1450 -0
- package/dist/chunk-24XDGNJ6.mjs.map +1 -0
- package/dist/chunk-27KYFU7R.mjs +30 -0
- package/dist/chunk-27KYFU7R.mjs.map +1 -0
- package/dist/chunk-2FFLT5VP.mjs +7 -0
- package/dist/chunk-2FFLT5VP.mjs.map +1 -0
- package/dist/chunk-2ZZJTBTE.mjs +148 -0
- package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
- package/dist/chunk-3DQINB57.mjs +15 -0
- package/dist/chunk-3DQINB57.mjs.map +1 -0
- package/dist/chunk-3VUAM2GY.mjs +52 -0
- package/dist/chunk-3VUAM2GY.mjs.map +1 -0
- package/dist/chunk-4Q54P737.mjs +19 -0
- package/dist/chunk-4Q54P737.mjs.map +1 -0
- package/dist/chunk-4RPFRNXG.mjs +62 -0
- package/dist/chunk-4RPFRNXG.mjs.map +1 -0
- package/dist/chunk-56TI2ZBT.mjs +114 -0
- package/dist/chunk-56TI2ZBT.mjs.map +1 -0
- package/dist/chunk-6REEQBJI.mjs +62 -0
- package/dist/chunk-6REEQBJI.mjs.map +1 -0
- package/dist/chunk-AAH2O24U.mjs +325 -0
- package/dist/chunk-AAH2O24U.mjs.map +1 -0
- package/dist/chunk-B7DAB22K.mjs +16 -0
- package/dist/chunk-B7DAB22K.mjs.map +1 -0
- package/dist/chunk-BGB7JHIU.mjs +222 -0
- package/dist/chunk-BGB7JHIU.mjs.map +1 -0
- package/dist/chunk-CRYIEYZZ.mjs +756 -0
- package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
- package/dist/chunk-CWFWRZWU.mjs +23 -0
- package/dist/chunk-CWFWRZWU.mjs.map +1 -0
- package/dist/chunk-DELCADNF.mjs +1926 -0
- package/dist/chunk-DELCADNF.mjs.map +1 -0
- package/dist/chunk-E3I2VDHZ.mjs +292 -0
- package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
- package/dist/chunk-EEH7HACG.mjs +249 -0
- package/dist/chunk-EEH7HACG.mjs.map +1 -0
- package/dist/chunk-EKPULYPU.mjs +497 -0
- package/dist/chunk-EKPULYPU.mjs.map +1 -0
- package/dist/chunk-EW4DTFH3.mjs +69 -0
- package/dist/chunk-EW4DTFH3.mjs.map +1 -0
- package/dist/chunk-FJ6ZGZIA.mjs +43 -0
- package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
- package/dist/chunk-HE7MY3RT.mjs +23 -0
- package/dist/chunk-HE7MY3RT.mjs.map +1 -0
- package/dist/chunk-HR3A4H4E.mjs +1289 -0
- package/dist/chunk-HR3A4H4E.mjs.map +1 -0
- package/dist/chunk-I5JWS4Z7.mjs +91 -0
- package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
- package/dist/chunk-IN3O4R7Q.mjs +932 -0
- package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
- package/dist/chunk-JIU5GVM7.mjs +414 -0
- package/dist/chunk-JIU5GVM7.mjs.map +1 -0
- package/dist/chunk-JWANK42G.mjs +170 -0
- package/dist/chunk-JWANK42G.mjs.map +1 -0
- package/dist/chunk-MDAUF7IL.mjs +9 -0
- package/dist/chunk-MDAUF7IL.mjs.map +1 -0
- package/dist/chunk-MI64T62E.mjs +26 -0
- package/dist/chunk-MI64T62E.mjs.map +1 -0
- package/dist/chunk-NJYNJLT7.mjs +172 -0
- package/dist/chunk-NJYNJLT7.mjs.map +1 -0
- package/dist/chunk-NLBDBJ3R.mjs +97 -0
- package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
- package/dist/chunk-OGNGPI3M.mjs +333 -0
- package/dist/chunk-OGNGPI3M.mjs.map +1 -0
- package/dist/chunk-OJV6V7YZ.mjs +552 -0
- package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
- package/dist/chunk-ONQMRE2G.mjs +26 -0
- package/dist/chunk-ONQMRE2G.mjs.map +1 -0
- package/dist/chunk-OP6LKXPA.mjs +75 -0
- package/dist/chunk-OP6LKXPA.mjs.map +1 -0
- package/dist/chunk-QFF3HTHL.mjs +14 -0
- package/dist/chunk-QFF3HTHL.mjs.map +1 -0
- package/dist/chunk-QKGCW37O.mjs +1175 -0
- package/dist/chunk-QKGCW37O.mjs.map +1 -0
- package/dist/chunk-R5MKQN6D.mjs +227 -0
- package/dist/chunk-R5MKQN6D.mjs.map +1 -0
- package/dist/chunk-RXBQ7KXF.mjs +652 -0
- package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
- package/dist/chunk-S6EZVRZC.mjs +161 -0
- package/dist/chunk-S6EZVRZC.mjs.map +1 -0
- package/dist/chunk-SGCUDWO3.mjs +396 -0
- package/dist/chunk-SGCUDWO3.mjs.map +1 -0
- package/dist/chunk-SRWPHN2N.mjs +188 -0
- package/dist/chunk-SRWPHN2N.mjs.map +1 -0
- package/dist/chunk-T34IULP5.mjs +242 -0
- package/dist/chunk-T34IULP5.mjs.map +1 -0
- package/dist/chunk-T4X375IG.mjs +100 -0
- package/dist/chunk-T4X375IG.mjs.map +1 -0
- package/dist/chunk-T6AMRENK.mjs +376 -0
- package/dist/chunk-T6AMRENK.mjs.map +1 -0
- package/dist/chunk-TDRA5EZI.mjs +325 -0
- package/dist/chunk-TDRA5EZI.mjs.map +1 -0
- package/dist/chunk-UDREPVEY.mjs +356 -0
- package/dist/chunk-UDREPVEY.mjs.map +1 -0
- package/dist/chunk-UGMRJMFZ.mjs +172 -0
- package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
- package/dist/chunk-UMJ5SCIQ.mjs +438 -0
- package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
- package/dist/chunk-UTVSYS6S.mjs +270 -0
- package/dist/chunk-UTVSYS6S.mjs.map +1 -0
- package/dist/chunk-V26V2S3W.mjs +197 -0
- package/dist/chunk-V26V2S3W.mjs.map +1 -0
- package/dist/chunk-VYD3PDBB.mjs +38 -0
- package/dist/chunk-VYD3PDBB.mjs.map +1 -0
- package/dist/chunk-WYYP3Y34.mjs +55 -0
- package/dist/chunk-WYYP3Y34.mjs.map +1 -0
- package/dist/chunk-XIMFP6RB.mjs +161 -0
- package/dist/chunk-XIMFP6RB.mjs.map +1 -0
- package/dist/chunk-XJ2SXC2Q.mjs +558 -0
- package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
- package/dist/chunk-Y74ALKBL.mjs +565 -0
- package/dist/chunk-Y74ALKBL.mjs.map +1 -0
- package/dist/chunk-ZG3NQI77.mjs +353 -0
- package/dist/chunk-ZG3NQI77.mjs.map +1 -0
- package/dist/chunk-ZVFYOXDE.mjs +297 -0
- package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
- package/dist/collapse.d.mts +10 -0
- package/dist/collapse.d.ts +10 -0
- package/dist/collapse.js +53 -0
- package/dist/collapse.js.map +1 -0
- package/dist/collapse.mjs +10 -0
- package/dist/collapse.mjs.map +1 -0
- package/dist/datePicker.d.mts +133 -0
- package/dist/datePicker.d.ts +133 -0
- package/dist/datePicker.js +482 -0
- package/dist/datePicker.js.map +1 -0
- package/dist/datePicker.mjs +29 -0
- package/dist/datePicker.mjs.map +1 -0
- package/dist/displayFile.d.mts +95 -0
- package/dist/displayFile.d.ts +95 -0
- package/dist/displayFile.js +357 -0
- package/dist/displayFile.js.map +1 -0
- package/dist/displayFile.mjs +19 -0
- package/dist/displayFile.mjs.map +1 -0
- package/dist/divider.d.mts +9 -0
- package/dist/divider.d.ts +9 -0
- package/dist/divider.js +52 -0
- package/dist/divider.js.map +1 -0
- package/dist/divider.mjs +10 -0
- package/dist/divider.mjs.map +1 -0
- package/dist/fileUploader.d.mts +86 -0
- package/dist/fileUploader.d.ts +86 -0
- package/dist/fileUploader.js +722 -0
- package/dist/fileUploader.js.map +1 -0
- package/dist/fileUploader.mjs +16 -0
- package/dist/fileUploader.mjs.map +1 -0
- package/dist/flowMap.d.mts +353 -0
- package/dist/flowMap.d.ts +353 -0
- package/dist/flowMap.js +94806 -0
- package/dist/flowMap.js.map +1 -0
- package/dist/flowMap.mjs +94585 -0
- package/dist/flowMap.mjs.map +1 -0
- package/dist/form.d.mts +84 -0
- package/dist/form.d.ts +84 -0
- package/dist/form.js +144 -0
- package/dist/form.js.map +1 -0
- package/dist/form.mjs +24 -0
- package/dist/form.mjs.map +1 -0
- package/dist/icons.d.mts +160 -0
- package/dist/icons.d.ts +160 -0
- package/dist/icons.js +540 -0
- package/dist/icons.js.map +1 -0
- package/dist/icons.mjs +306 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/image.d.mts +49 -0
- package/dist/image.d.ts +49 -0
- package/dist/image.js +1348 -0
- package/dist/image.js.map +1 -0
- package/dist/image.mjs +19 -0
- package/dist/image.mjs.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +20198 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +912 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input.d.mts +195 -0
- package/dist/input.d.ts +195 -0
- package/dist/input.js +1101 -0
- package/dist/input.js.map +1 -0
- package/dist/input.mjs +32 -0
- package/dist/input.mjs.map +1 -0
- package/dist/jsonEditor.d.mts +13 -0
- package/dist/jsonEditor.d.ts +13 -0
- package/dist/jsonEditor.js +247 -0
- package/dist/jsonEditor.js.map +1 -0
- package/dist/jsonEditor.mjs +9 -0
- package/dist/jsonEditor.mjs.map +1 -0
- package/dist/list.d.mts +83 -0
- package/dist/list.d.ts +83 -0
- package/dist/list.js +564 -0
- package/dist/list.js.map +1 -0
- package/dist/list.mjs +39 -0
- package/dist/list.mjs.map +1 -0
- package/dist/loading.d.mts +48 -0
- package/dist/loading.d.ts +48 -0
- package/dist/loading.js +383 -0
- package/dist/loading.js.map +1 -0
- package/dist/loading.mjs +23 -0
- package/dist/loading.mjs.map +1 -0
- package/dist/markdown.d.mts +14 -0
- package/dist/markdown.d.ts +14 -0
- package/dist/markdown.js +25927 -0
- package/dist/markdown.js.map +1 -0
- package/dist/markdown.mjs +25623 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/menu.d.mts +368 -0
- package/dist/menu.d.ts +368 -0
- package/dist/menu.js +1571 -0
- package/dist/menu.js.map +1 -0
- package/dist/menu.mjs +43 -0
- package/dist/menu.mjs.map +1 -0
- package/dist/modal.d.mts +90 -0
- package/dist/modal.d.ts +90 -0
- package/dist/modal.js +883 -0
- package/dist/modal.js.map +1 -0
- package/dist/modal.mjs +25 -0
- package/dist/modal.mjs.map +1 -0
- package/dist/overlay.d.mts +2 -0
- package/dist/overlay.d.ts +2 -0
- package/dist/overlay.js +46 -0
- package/dist/overlay.js.map +1 -0
- package/dist/overlay.mjs +10 -0
- package/dist/overlay.mjs.map +1 -0
- package/dist/paper.d.mts +38 -0
- package/dist/paper.d.ts +38 -0
- package/dist/paper.js +90 -0
- package/dist/paper.js.map +1 -0
- package/dist/paper.mjs +12 -0
- package/dist/paper.mjs.map +1 -0
- package/dist/patterns.d.mts +133 -0
- package/dist/patterns.d.ts +133 -0
- package/dist/patterns.js +483 -0
- package/dist/patterns.js.map +1 -0
- package/dist/patterns.mjs +46 -0
- package/dist/patterns.mjs.map +1 -0
- package/dist/process.d.mts +125 -0
- package/dist/process.d.ts +125 -0
- package/dist/process.js +1471 -0
- package/dist/process.js.map +1 -0
- package/dist/process.mjs +30 -0
- package/dist/process.mjs.map +1 -0
- package/dist/progress.d.mts +44 -0
- package/dist/progress.d.ts +44 -0
- package/dist/progress.js +94 -0
- package/dist/progress.js.map +1 -0
- package/dist/progress.mjs +14 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/resizablePanel.d.mts +297 -0
- package/dist/resizablePanel.d.ts +297 -0
- package/dist/resizablePanel.js +122 -0
- package/dist/resizablePanel.js.map +1 -0
- package/dist/resizablePanel.mjs +22 -0
- package/dist/resizablePanel.mjs.map +1 -0
- package/dist/scrollToLoad.d.mts +41 -0
- package/dist/scrollToLoad.d.ts +41 -0
- package/dist/scrollToLoad.js +256 -0
- package/dist/scrollToLoad.js.map +1 -0
- package/dist/scrollToLoad.mjs +16 -0
- package/dist/scrollToLoad.mjs.map +1 -0
- package/dist/select.d.mts +50 -0
- package/dist/select.d.ts +50 -0
- package/dist/select.js +426 -0
- package/dist/select.js.map +1 -0
- package/dist/select.mjs +24 -0
- package/dist/select.mjs.map +1 -0
- package/dist/skeleton.d.mts +13 -0
- package/dist/skeleton.d.ts +13 -0
- package/dist/skeleton.js +68 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/skeleton.mjs +11 -0
- package/dist/skeleton.mjs.map +1 -0
- package/dist/slider.d.mts +65 -0
- package/dist/slider.d.ts +65 -0
- package/dist/slider.js +106 -0
- package/dist/slider.js.map +1 -0
- package/dist/slider.mjs +10 -0
- package/dist/slider.mjs.map +1 -0
- package/dist/stepper.d.mts +98 -0
- package/dist/stepper.d.ts +98 -0
- package/dist/stepper.js +313 -0
- package/dist/stepper.js.map +1 -0
- package/dist/stepper.mjs +38 -0
- package/dist/stepper.mjs.map +1 -0
- package/dist/switch.d.mts +151 -0
- package/dist/switch.d.ts +151 -0
- package/dist/switch.js +289 -0
- package/dist/switch.js.map +1 -0
- package/dist/switch.mjs +17 -0
- package/dist/switch.mjs.map +1 -0
- package/dist/tab.d.mts +182 -0
- package/dist/tab.d.ts +182 -0
- package/dist/tab.js +1418 -0
- package/dist/tab.js.map +1 -0
- package/dist/tab.mjs +34 -0
- package/dist/tab.mjs.map +1 -0
- package/dist/table.d.mts +720 -0
- package/dist/table.d.ts +720 -0
- package/dist/table.js +10882 -0
- package/dist/table.js.map +1 -0
- package/dist/table.mjs +63 -0
- package/dist/table.mjs.map +1 -0
- package/dist/theme.d.mts +30 -4
- package/dist/theme.d.ts +30 -4
- package/dist/theme.js +3210 -170
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +52 -230
- package/dist/theme.mjs.map +1 -1
- package/dist/timeline.d.mts +30 -0
- package/dist/timeline.d.ts +30 -0
- package/dist/timeline.js +273 -0
- package/dist/timeline.js.map +1 -0
- package/dist/timeline.mjs +14 -0
- package/dist/timeline.mjs.map +1 -0
- package/dist/toggleButtonGroup.d.mts +125 -0
- package/dist/toggleButtonGroup.d.ts +125 -0
- package/dist/toggleButtonGroup.js +190 -0
- package/dist/toggleButtonGroup.js.map +1 -0
- package/dist/toggleButtonGroup.mjs +15 -0
- package/dist/toggleButtonGroup.mjs.map +1 -0
- package/dist/tooltip.d.mts +13 -0
- package/dist/tooltip.d.ts +13 -0
- package/dist/tooltip.js +56 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tooltip.mjs +10 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/typography.d.mts +21 -23
- package/dist/typography.d.ts +21 -23
- package/dist/typography.js +37 -63
- package/dist/typography.js.map +1 -1
- package/dist/typography.mjs +2 -1
- package/dist/useForm.d.mts +588 -0
- package/dist/useForm.d.ts +588 -0
- package/dist/useForm.js +8743 -0
- package/dist/useForm.js.map +1 -0
- package/dist/useForm.mjs +45 -0
- package/dist/useForm.mjs.map +1 -0
- package/dist/useSearch.d.mts +126 -0
- package/dist/useSearch.d.ts +126 -0
- package/dist/useSearch.js +1125 -0
- package/dist/useSearch.js.map +1 -0
- package/dist/useSearch.mjs +42 -0
- package/dist/useSearch.mjs.map +1 -0
- package/dist/variablesRenderer.d.mts +45 -0
- package/dist/variablesRenderer.d.ts +45 -0
- package/dist/variablesRenderer.js +511 -0
- package/dist/variablesRenderer.js.map +1 -0
- package/dist/variablesRenderer.mjs +21 -0
- package/dist/variablesRenderer.mjs.map +1 -0
- package/package.json +109 -15
- package/dist/chunk-PKADXEAD.mjs +0 -116
- package/dist/chunk-PKADXEAD.mjs.map +0 -1
- package/dist/chunk-YGBJCPUS.mjs +0 -88
- package/dist/chunk-YGBJCPUS.mjs.map +0 -1
- package/dist/theme.css +0 -44
- package/dist/theme.css.map +0 -1
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
import {
|
|
2
|
+
default as default8
|
|
3
|
+
} from "./chunk-VYD3PDBB.mjs";
|
|
4
|
+
import {
|
|
5
|
+
MenuPopper,
|
|
6
|
+
Menu_default,
|
|
7
|
+
useMenu
|
|
8
|
+
} from "./chunk-HR3A4H4E.mjs";
|
|
9
|
+
import {
|
|
10
|
+
default3 as default7
|
|
11
|
+
} from "./chunk-T4X375IG.mjs";
|
|
12
|
+
import {
|
|
13
|
+
MuiPaper
|
|
14
|
+
} from "./chunk-3VUAM2GY.mjs";
|
|
15
|
+
import {
|
|
16
|
+
CircularProgress
|
|
17
|
+
} from "./chunk-WYYP3Y34.mjs";
|
|
18
|
+
import {
|
|
19
|
+
Button,
|
|
20
|
+
IconButton_default
|
|
21
|
+
} from "./chunk-JIU5GVM7.mjs";
|
|
22
|
+
import {
|
|
23
|
+
default108 as default5,
|
|
24
|
+
default118 as default6,
|
|
25
|
+
default33 as default4
|
|
26
|
+
} from "./chunk-ZVFYOXDE.mjs";
|
|
27
|
+
import {
|
|
28
|
+
default as default3
|
|
29
|
+
} from "./chunk-4RPFRNXG.mjs";
|
|
30
|
+
import {
|
|
31
|
+
default as default2,
|
|
32
|
+
mergeSx
|
|
33
|
+
} from "./chunk-S6EZVRZC.mjs";
|
|
34
|
+
|
|
35
|
+
// src/components/compound/UseSearch/context.tsx
|
|
36
|
+
import * as React2 from "react";
|
|
37
|
+
|
|
38
|
+
// src/components/compound/UseSearch/useSearch.ts
|
|
39
|
+
import * as React from "react";
|
|
40
|
+
function useSearch(options = {}) {
|
|
41
|
+
const {
|
|
42
|
+
defaultQuery = "",
|
|
43
|
+
query: controlledQuery,
|
|
44
|
+
onQueryChange,
|
|
45
|
+
debounceMs = 300,
|
|
46
|
+
defaultScope,
|
|
47
|
+
scope: controlledScope,
|
|
48
|
+
onScopeChange
|
|
49
|
+
} = options;
|
|
50
|
+
const isQueryControlled = controlledQuery !== void 0;
|
|
51
|
+
const isScopeControlled = controlledScope !== void 0;
|
|
52
|
+
const [innerQuery, setInnerQuery] = React.useState(defaultQuery);
|
|
53
|
+
const [debouncedQuery, setDebouncedQuery] = React.useState(controlledQuery ?? defaultQuery);
|
|
54
|
+
const [innerScope, setInnerScope] = React.useState(defaultScope);
|
|
55
|
+
const query = isQueryControlled ? controlledQuery : innerQuery;
|
|
56
|
+
const onQueryChangeRef = React.useRef(onQueryChange);
|
|
57
|
+
React.useLayoutEffect(() => {
|
|
58
|
+
onQueryChangeRef.current = onQueryChange;
|
|
59
|
+
}, [onQueryChange]);
|
|
60
|
+
const onScopeChangeRef = React.useRef(onScopeChange);
|
|
61
|
+
React.useLayoutEffect(() => {
|
|
62
|
+
onScopeChangeRef.current = onScopeChange;
|
|
63
|
+
}, [onScopeChange]);
|
|
64
|
+
const setQuery = React.useCallback(
|
|
65
|
+
(q) => {
|
|
66
|
+
if (!isQueryControlled) {
|
|
67
|
+
setInnerQuery(q);
|
|
68
|
+
}
|
|
69
|
+
onQueryChangeRef.current?.(q);
|
|
70
|
+
},
|
|
71
|
+
[isQueryControlled]
|
|
72
|
+
);
|
|
73
|
+
const scope = isScopeControlled ? controlledScope : innerScope;
|
|
74
|
+
const setScope = React.useCallback(
|
|
75
|
+
(nextScope) => {
|
|
76
|
+
if (!isScopeControlled) {
|
|
77
|
+
setInnerScope(nextScope);
|
|
78
|
+
}
|
|
79
|
+
onScopeChangeRef.current?.(nextScope);
|
|
80
|
+
},
|
|
81
|
+
[isScopeControlled]
|
|
82
|
+
);
|
|
83
|
+
const clear = React.useCallback(() => {
|
|
84
|
+
if (!isQueryControlled) {
|
|
85
|
+
setInnerQuery(defaultQuery);
|
|
86
|
+
}
|
|
87
|
+
onQueryChangeRef.current?.(defaultQuery);
|
|
88
|
+
if (!isScopeControlled) {
|
|
89
|
+
setInnerScope(defaultScope);
|
|
90
|
+
}
|
|
91
|
+
onScopeChangeRef.current?.(defaultScope);
|
|
92
|
+
}, [defaultQuery, defaultScope, isQueryControlled, isScopeControlled]);
|
|
93
|
+
React.useEffect(() => {
|
|
94
|
+
const timer = window.setTimeout(() => {
|
|
95
|
+
setDebouncedQuery(query);
|
|
96
|
+
}, debounceMs);
|
|
97
|
+
return () => window.clearTimeout(timer);
|
|
98
|
+
}, [query, debounceMs]);
|
|
99
|
+
return { query, debouncedQuery, setQuery, scope, setScope, clear };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/components/compound/UseSearch/context.tsx
|
|
103
|
+
import { jsx } from "react/jsx-runtime";
|
|
104
|
+
var SearchContext = React2.createContext(null);
|
|
105
|
+
var SearchProvider = ({ options, children }) => {
|
|
106
|
+
const search = useSearch(options);
|
|
107
|
+
return /* @__PURE__ */ jsx(SearchContext.Provider, { value: search, children });
|
|
108
|
+
};
|
|
109
|
+
function useSearchContext() {
|
|
110
|
+
const ctx = React2.useContext(SearchContext);
|
|
111
|
+
if (!ctx) {
|
|
112
|
+
throw new Error("useSearchContext must be used within a SearchProvider");
|
|
113
|
+
}
|
|
114
|
+
return ctx;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// src/components/compound/UseSearch/SearchBar.tsx
|
|
118
|
+
import * as React3 from "react";
|
|
119
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
120
|
+
var SearchBar = ({
|
|
121
|
+
placeholder,
|
|
122
|
+
adornment,
|
|
123
|
+
onSubmit,
|
|
124
|
+
showSubmitButton = true,
|
|
125
|
+
submitOnEnter = true,
|
|
126
|
+
loading = false,
|
|
127
|
+
sx
|
|
128
|
+
}) => {
|
|
129
|
+
const { query, scope, setQuery } = useSearchContext();
|
|
130
|
+
const onSubmitRef = React3.useRef(onSubmit);
|
|
131
|
+
React3.useLayoutEffect(() => {
|
|
132
|
+
onSubmitRef.current = onSubmit;
|
|
133
|
+
}, [onSubmit]);
|
|
134
|
+
const handleClear = React3.useCallback(() => {
|
|
135
|
+
setQuery("");
|
|
136
|
+
}, [setQuery]);
|
|
137
|
+
const handleSubmit = React3.useCallback(() => {
|
|
138
|
+
const normalized = query.trim();
|
|
139
|
+
if (!normalized) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
onSubmitRef.current?.(normalized, scope);
|
|
143
|
+
}, [query, scope]);
|
|
144
|
+
const handleKeyDown = React3.useCallback(
|
|
145
|
+
(event) => {
|
|
146
|
+
if (!submitOnEnter) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (event.key === "Enter") {
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
handleSubmit();
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
[handleSubmit, submitOnEnter]
|
|
155
|
+
);
|
|
156
|
+
return /* @__PURE__ */ jsx2(
|
|
157
|
+
default8,
|
|
158
|
+
{
|
|
159
|
+
value: query,
|
|
160
|
+
onChange: (e) => setQuery(e.target.value),
|
|
161
|
+
onKeyDown: handleKeyDown,
|
|
162
|
+
placeholder,
|
|
163
|
+
sx: mergeSx(
|
|
164
|
+
{
|
|
165
|
+
"& .MuiInputAdornment-root": {
|
|
166
|
+
gap: 0.5
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
sx
|
|
170
|
+
),
|
|
171
|
+
slotProps: {
|
|
172
|
+
input: {
|
|
173
|
+
startAdornment: adornment ? /* @__PURE__ */ jsx2(default7, { position: "start", children: adornment }) : void 0,
|
|
174
|
+
endAdornment: /* @__PURE__ */ jsxs(default7, { position: "end", children: [
|
|
175
|
+
query ? /* @__PURE__ */ jsx2(IconButton_default, { size: "small", onClick: handleClear, "aria-label": "Clear search input", children: /* @__PURE__ */ jsx2(default5, { fontSize: "small" }) }) : null,
|
|
176
|
+
showSubmitButton ? loading ? /* @__PURE__ */ jsx2(CircularProgress, { size: 18, thickness: 5 }) : /* @__PURE__ */ jsx2(IconButton_default, { size: "small", onClick: handleSubmit, "aria-label": "Submit search", children: /* @__PURE__ */ jsx2(default4, { fontSize: "small" }) }) : null
|
|
177
|
+
] })
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// src/components/compound/UseSearch/SearchScope.tsx
|
|
185
|
+
import * as React4 from "react";
|
|
186
|
+
import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
187
|
+
var SearchScope = ({
|
|
188
|
+
options,
|
|
189
|
+
sx,
|
|
190
|
+
placeholderLabel = "All"
|
|
191
|
+
}) => {
|
|
192
|
+
const { scope, setScope } = useSearchContext();
|
|
193
|
+
const openMenuProps = useMenu({
|
|
194
|
+
onItemClickClientArg: ({ closeHandler }) => {
|
|
195
|
+
closeHandler?.();
|
|
196
|
+
},
|
|
197
|
+
initSelected: scope ? [scope] : []
|
|
198
|
+
});
|
|
199
|
+
const menuOptions = React4.useMemo(() => (options || []).map((option) => ({
|
|
200
|
+
id: option.value,
|
|
201
|
+
label: option.label,
|
|
202
|
+
onClick: () => {
|
|
203
|
+
setScope(option.value);
|
|
204
|
+
}
|
|
205
|
+
})), [options, setScope]);
|
|
206
|
+
if (!options || options.length === 0) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
const activeLabel = options.find((option) => option.value === scope)?.label ?? placeholderLabel;
|
|
210
|
+
return /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
211
|
+
/* @__PURE__ */ jsx3(
|
|
212
|
+
Button,
|
|
213
|
+
{
|
|
214
|
+
size: "small",
|
|
215
|
+
variant: "outlined",
|
|
216
|
+
onClick: openMenuProps.onTriggerClickHandler,
|
|
217
|
+
endIcon: /* @__PURE__ */ jsx3(default6, {}),
|
|
218
|
+
sx,
|
|
219
|
+
children: activeLabel
|
|
220
|
+
}
|
|
221
|
+
),
|
|
222
|
+
/* @__PURE__ */ jsx3(
|
|
223
|
+
MenuPopper,
|
|
224
|
+
{
|
|
225
|
+
options: menuOptions,
|
|
226
|
+
openMenuProps: {
|
|
227
|
+
...openMenuProps,
|
|
228
|
+
initSelected: scope ? [scope] : [],
|
|
229
|
+
sorted: false
|
|
230
|
+
},
|
|
231
|
+
placement: "bottom-start",
|
|
232
|
+
menuItemProps: {
|
|
233
|
+
fontSize: "0.875rem",
|
|
234
|
+
padding: "6px 12px"
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
)
|
|
238
|
+
] });
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
// src/components/compound/UseSearch/SuggestionList.tsx
|
|
242
|
+
import * as React5 from "react";
|
|
243
|
+
|
|
244
|
+
// src/components/compound/UseSearch/theme.ts
|
|
245
|
+
var useSearchRootSx = {
|
|
246
|
+
"--usesearch-empty-text-color": "var(--mui-palette-text-secondary)"
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// src/components/compound/UseSearch/SuggestionList.tsx
|
|
250
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
251
|
+
var DEFAULT_MAX_ITEMS = 8;
|
|
252
|
+
function SuggestionList({
|
|
253
|
+
items,
|
|
254
|
+
onSelect,
|
|
255
|
+
renderItem,
|
|
256
|
+
getItemLabel,
|
|
257
|
+
maxItems = DEFAULT_MAX_ITEMS,
|
|
258
|
+
showWhenEmptyQuery = false,
|
|
259
|
+
loading = false,
|
|
260
|
+
loadingText = "Fetching suggestions...",
|
|
261
|
+
emptyText = "No suggestions",
|
|
262
|
+
filterMode = "client",
|
|
263
|
+
footer,
|
|
264
|
+
sx
|
|
265
|
+
}) {
|
|
266
|
+
const { query, setQuery } = useSearchContext();
|
|
267
|
+
const resolvedGetLabel = React5.useCallback(
|
|
268
|
+
(item) => getItemLabel ? getItemLabel(item) : item.label,
|
|
269
|
+
[getItemLabel]
|
|
270
|
+
);
|
|
271
|
+
const normalizedQuery = query.trim().toLowerCase();
|
|
272
|
+
const filteredItems = React5.useMemo(() => {
|
|
273
|
+
if (!showWhenEmptyQuery && !normalizedQuery) {
|
|
274
|
+
return [];
|
|
275
|
+
}
|
|
276
|
+
if (filterMode === "none") {
|
|
277
|
+
return items.slice(0, maxItems);
|
|
278
|
+
}
|
|
279
|
+
return items.filter((item) => {
|
|
280
|
+
if (!normalizedQuery) {
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
return resolvedGetLabel(item).toLowerCase().includes(normalizedQuery);
|
|
284
|
+
}).slice(0, maxItems);
|
|
285
|
+
}, [filterMode, items, maxItems, normalizedQuery, resolvedGetLabel, showWhenEmptyQuery]);
|
|
286
|
+
const handleSelect = React5.useCallback(
|
|
287
|
+
(item) => {
|
|
288
|
+
setQuery(resolvedGetLabel(item));
|
|
289
|
+
onSelect?.(item);
|
|
290
|
+
},
|
|
291
|
+
[onSelect, resolvedGetLabel, setQuery]
|
|
292
|
+
);
|
|
293
|
+
const menuOptions = React5.useMemo(
|
|
294
|
+
() => filteredItems.map((item) => ({
|
|
295
|
+
id: String(item.id),
|
|
296
|
+
label: renderItem ? renderItem(item) : resolvedGetLabel(item),
|
|
297
|
+
onClick: () => handleSelect(item)
|
|
298
|
+
})),
|
|
299
|
+
[filteredItems, handleSelect, renderItem, resolvedGetLabel]
|
|
300
|
+
);
|
|
301
|
+
if (loading && (normalizedQuery || showWhenEmptyQuery)) {
|
|
302
|
+
return /* @__PURE__ */ jsx4(MuiPaper, { elevation: 3, sx, children: /* @__PURE__ */ jsxs3(default2, { sx: { display: "flex", alignItems: "center", gap: 1, px: 1.5, py: 1.25 }, children: [
|
|
303
|
+
/* @__PURE__ */ jsx4(CircularProgress, { size: 16, thickness: 5 }),
|
|
304
|
+
/* @__PURE__ */ jsx4(default3, { variant: "body2", children: loadingText })
|
|
305
|
+
] }) });
|
|
306
|
+
}
|
|
307
|
+
if (filteredItems.length === 0) {
|
|
308
|
+
if (!normalizedQuery && !showWhenEmptyQuery) {
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
return /* @__PURE__ */ jsx4(MuiPaper, { elevation: 3, sx, children: /* @__PURE__ */ jsx4(default2, { sx: mergeSx({ px: 1.5, py: 1.25 }, useSearchRootSx), children: /* @__PURE__ */ jsx4(default3, { variant: "body2", sx: { color: "var(--usesearch-empty-text-color)" }, children: emptyText }) }) });
|
|
312
|
+
}
|
|
313
|
+
return /* @__PURE__ */ jsxs3(MuiPaper, { elevation: 3, sx, children: [
|
|
314
|
+
/* @__PURE__ */ jsx4(
|
|
315
|
+
Menu_default,
|
|
316
|
+
{
|
|
317
|
+
options: menuOptions,
|
|
318
|
+
initSelected: [],
|
|
319
|
+
sorted: false,
|
|
320
|
+
menuItemProps: {
|
|
321
|
+
fontSize: "0.875rem",
|
|
322
|
+
padding: "6px 12px"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
),
|
|
326
|
+
footer ? /* @__PURE__ */ jsx4(default2, { sx: { px: 1, pb: 1 }, children: footer }) : null
|
|
327
|
+
] });
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// src/components/compound/UseSearch/ScopeSuggestions.tsx
|
|
331
|
+
import * as React6 from "react";
|
|
332
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
333
|
+
function ScopeSuggestions({
|
|
334
|
+
getSuggestions,
|
|
335
|
+
onLoadMore,
|
|
336
|
+
hasMore,
|
|
337
|
+
loadMoreLabel = "Load more",
|
|
338
|
+
onLoadingChange,
|
|
339
|
+
onError,
|
|
340
|
+
onSelect,
|
|
341
|
+
renderItem,
|
|
342
|
+
getItemLabel,
|
|
343
|
+
maxItems,
|
|
344
|
+
showWhenEmptyQuery,
|
|
345
|
+
loadingText,
|
|
346
|
+
emptyText,
|
|
347
|
+
filterMode,
|
|
348
|
+
sx
|
|
349
|
+
}) {
|
|
350
|
+
const { scope, debouncedQuery } = useSearchContext();
|
|
351
|
+
const requestIdRef = React6.useRef(0);
|
|
352
|
+
const [items, setItems] = React6.useState([]);
|
|
353
|
+
const [loading, setLoading] = React6.useState(false);
|
|
354
|
+
const [loadingMore, setLoadingMore] = React6.useState(false);
|
|
355
|
+
const getSuggestionsRef = React6.useRef(getSuggestions);
|
|
356
|
+
React6.useLayoutEffect(() => {
|
|
357
|
+
getSuggestionsRef.current = getSuggestions;
|
|
358
|
+
}, [getSuggestions]);
|
|
359
|
+
const onLoadingChangeRef = React6.useRef(onLoadingChange);
|
|
360
|
+
React6.useLayoutEffect(() => {
|
|
361
|
+
onLoadingChangeRef.current = onLoadingChange;
|
|
362
|
+
}, [onLoadingChange]);
|
|
363
|
+
const onErrorRef = React6.useRef(onError);
|
|
364
|
+
React6.useLayoutEffect(() => {
|
|
365
|
+
onErrorRef.current = onError;
|
|
366
|
+
}, [onError]);
|
|
367
|
+
const resolvedHasMore = React6.useMemo(() => {
|
|
368
|
+
if (typeof hasMore === "function") {
|
|
369
|
+
return hasMore(items, scope, debouncedQuery.trim());
|
|
370
|
+
}
|
|
371
|
+
return Boolean(hasMore);
|
|
372
|
+
}, [debouncedQuery, hasMore, items, scope]);
|
|
373
|
+
React6.useEffect(() => {
|
|
374
|
+
const query = debouncedQuery.trim();
|
|
375
|
+
if (!query && !showWhenEmptyQuery) {
|
|
376
|
+
setItems([]);
|
|
377
|
+
setLoading(false);
|
|
378
|
+
setLoadingMore(false);
|
|
379
|
+
onLoadingChangeRef.current?.(false);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
requestIdRef.current += 1;
|
|
383
|
+
const currentRequestId = requestIdRef.current;
|
|
384
|
+
let isActive = true;
|
|
385
|
+
setLoading(true);
|
|
386
|
+
onLoadingChangeRef.current?.(true);
|
|
387
|
+
Promise.resolve(getSuggestionsRef.current(scope, query)).then((next) => {
|
|
388
|
+
if (!isActive || currentRequestId !== requestIdRef.current) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
setItems(next);
|
|
392
|
+
}).catch((error) => {
|
|
393
|
+
if (!isActive || currentRequestId !== requestIdRef.current) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
setItems([]);
|
|
397
|
+
onErrorRef.current?.(error);
|
|
398
|
+
}).finally(() => {
|
|
399
|
+
if (!isActive || currentRequestId !== requestIdRef.current) {
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
setLoading(false);
|
|
403
|
+
setLoadingMore(false);
|
|
404
|
+
onLoadingChangeRef.current?.(false);
|
|
405
|
+
});
|
|
406
|
+
return () => {
|
|
407
|
+
isActive = false;
|
|
408
|
+
onLoadingChangeRef.current?.(false);
|
|
409
|
+
};
|
|
410
|
+
}, [debouncedQuery, scope, showWhenEmptyQuery]);
|
|
411
|
+
const handleLoadMore = React6.useCallback(() => {
|
|
412
|
+
if (!onLoadMore || loading || loadingMore) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const query = debouncedQuery.trim();
|
|
416
|
+
if (!query && !showWhenEmptyQuery) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
setLoadingMore(true);
|
|
420
|
+
Promise.resolve(onLoadMore(scope, query, items)).then((next) => {
|
|
421
|
+
setItems(next);
|
|
422
|
+
}).catch((error) => {
|
|
423
|
+
onErrorRef.current?.(error);
|
|
424
|
+
}).finally(() => {
|
|
425
|
+
setLoadingMore(false);
|
|
426
|
+
});
|
|
427
|
+
}, [debouncedQuery, items, loading, loadingMore, onLoadMore, scope, showWhenEmptyQuery]);
|
|
428
|
+
const footer = onLoadMore && resolvedHasMore ? /* @__PURE__ */ jsx5(
|
|
429
|
+
Button,
|
|
430
|
+
{
|
|
431
|
+
size: "small",
|
|
432
|
+
variant: "text",
|
|
433
|
+
fullWidth: true,
|
|
434
|
+
disabled: loadingMore || loading,
|
|
435
|
+
onClick: handleLoadMore,
|
|
436
|
+
children: loadingMore ? "Loading more..." : loadMoreLabel
|
|
437
|
+
}
|
|
438
|
+
) : null;
|
|
439
|
+
return /* @__PURE__ */ jsx5(
|
|
440
|
+
SuggestionList,
|
|
441
|
+
{
|
|
442
|
+
items,
|
|
443
|
+
loading,
|
|
444
|
+
footer,
|
|
445
|
+
onSelect,
|
|
446
|
+
renderItem,
|
|
447
|
+
getItemLabel,
|
|
448
|
+
maxItems,
|
|
449
|
+
showWhenEmptyQuery,
|
|
450
|
+
loadingText,
|
|
451
|
+
emptyText,
|
|
452
|
+
filterMode,
|
|
453
|
+
sx
|
|
454
|
+
}
|
|
455
|
+
);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// src/components/compound/UseSearch/UseSearchLayout.tsx
|
|
459
|
+
import * as React7 from "react";
|
|
460
|
+
|
|
461
|
+
// src/components/compound/UseSearch/SearchResults.tsx
|
|
462
|
+
import { Fragment as Fragment2, jsx as jsx6 } from "react/jsx-runtime";
|
|
463
|
+
var SearchResults = ({ children }) => {
|
|
464
|
+
const { debouncedQuery, scope } = useSearchContext();
|
|
465
|
+
return /* @__PURE__ */ jsx6(Fragment2, { children: children(debouncedQuery, scope) });
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
// src/components/compound/UseSearch/UseSearchLayout.tsx
|
|
469
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
470
|
+
var DEFAULT_CONTAINER_SX = { width: 560, maxWidth: "90vw", position: "relative" };
|
|
471
|
+
var DEFAULT_ROW_SX = { display: "flex", gap: 1 };
|
|
472
|
+
var DEFAULT_SCOPE_SX = { minWidth: 130 };
|
|
473
|
+
var DEFAULT_SEARCH_BAR_SX = { flex: 1 };
|
|
474
|
+
var DEFAULT_SUGGESTIONS_SX = {
|
|
475
|
+
position: "absolute",
|
|
476
|
+
top: 56,
|
|
477
|
+
left: 0,
|
|
478
|
+
right: 0,
|
|
479
|
+
zIndex: 2
|
|
480
|
+
};
|
|
481
|
+
function UseSearchLayout({
|
|
482
|
+
scopeOptions,
|
|
483
|
+
scopePlaceholderLabel = "Engine",
|
|
484
|
+
searchPlaceholder = "Search",
|
|
485
|
+
getSuggestions,
|
|
486
|
+
onLoadMoreSuggestions,
|
|
487
|
+
hasMoreSuggestions,
|
|
488
|
+
loadMoreSuggestionsLabel,
|
|
489
|
+
onSuggestionSelect,
|
|
490
|
+
renderSuggestionItem,
|
|
491
|
+
getSuggestionLabel,
|
|
492
|
+
suggestionFilterMode,
|
|
493
|
+
suggestionsLoadingText,
|
|
494
|
+
suggestionsEmptyText,
|
|
495
|
+
onSuggestionsError,
|
|
496
|
+
onSearchSubmit,
|
|
497
|
+
children,
|
|
498
|
+
containerSx,
|
|
499
|
+
rowSx,
|
|
500
|
+
scopeSx,
|
|
501
|
+
searchBarSx,
|
|
502
|
+
suggestionsSx
|
|
503
|
+
}) {
|
|
504
|
+
const [suggestionsLoading, setSuggestionsLoading] = React7.useState(false);
|
|
505
|
+
return /* @__PURE__ */ jsxs4(default2, { sx: containerSx ?? DEFAULT_CONTAINER_SX, children: [
|
|
506
|
+
/* @__PURE__ */ jsxs4(default2, { sx: rowSx ?? DEFAULT_ROW_SX, children: [
|
|
507
|
+
/* @__PURE__ */ jsx7(
|
|
508
|
+
SearchScope,
|
|
509
|
+
{
|
|
510
|
+
options: scopeOptions,
|
|
511
|
+
sx: scopeSx ?? DEFAULT_SCOPE_SX,
|
|
512
|
+
placeholderLabel: scopePlaceholderLabel
|
|
513
|
+
}
|
|
514
|
+
),
|
|
515
|
+
/* @__PURE__ */ jsx7(
|
|
516
|
+
SearchBar,
|
|
517
|
+
{
|
|
518
|
+
placeholder: searchPlaceholder,
|
|
519
|
+
sx: searchBarSx ?? DEFAULT_SEARCH_BAR_SX,
|
|
520
|
+
loading: suggestionsLoading,
|
|
521
|
+
onSubmit: onSearchSubmit
|
|
522
|
+
}
|
|
523
|
+
)
|
|
524
|
+
] }),
|
|
525
|
+
getSuggestions && /* @__PURE__ */ jsx7(
|
|
526
|
+
ScopeSuggestions,
|
|
527
|
+
{
|
|
528
|
+
getSuggestions,
|
|
529
|
+
onLoadMore: onLoadMoreSuggestions,
|
|
530
|
+
hasMore: hasMoreSuggestions,
|
|
531
|
+
loadMoreLabel: loadMoreSuggestionsLabel,
|
|
532
|
+
onLoadingChange: setSuggestionsLoading,
|
|
533
|
+
onSelect: onSuggestionSelect,
|
|
534
|
+
renderItem: renderSuggestionItem,
|
|
535
|
+
getItemLabel: getSuggestionLabel,
|
|
536
|
+
filterMode: suggestionFilterMode,
|
|
537
|
+
loadingText: suggestionsLoadingText,
|
|
538
|
+
emptyText: suggestionsEmptyText,
|
|
539
|
+
onError: onSuggestionsError,
|
|
540
|
+
sx: suggestionsSx ?? DEFAULT_SUGGESTIONS_SX
|
|
541
|
+
}
|
|
542
|
+
),
|
|
543
|
+
/* @__PURE__ */ jsx7(SearchResults, { children })
|
|
544
|
+
] });
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
export {
|
|
548
|
+
useSearch,
|
|
549
|
+
SearchProvider,
|
|
550
|
+
useSearchContext,
|
|
551
|
+
SearchBar,
|
|
552
|
+
SearchScope,
|
|
553
|
+
SuggestionList,
|
|
554
|
+
ScopeSuggestions,
|
|
555
|
+
SearchResults,
|
|
556
|
+
UseSearchLayout
|
|
557
|
+
};
|
|
558
|
+
//# sourceMappingURL=chunk-XJ2SXC2Q.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/compound/UseSearch/context.tsx","../src/components/compound/UseSearch/useSearch.ts","../src/components/compound/UseSearch/SearchBar.tsx","../src/components/compound/UseSearch/SearchScope.tsx","../src/components/compound/UseSearch/SuggestionList.tsx","../src/components/compound/UseSearch/theme.ts","../src/components/compound/UseSearch/ScopeSuggestions.tsx","../src/components/compound/UseSearch/UseSearchLayout.tsx","../src/components/compound/UseSearch/SearchResults.tsx"],"sourcesContent":["import * as React from 'react';\nimport {UseSearchOptions, UseSearchReturn} from './_types';\nimport {useSearch} from './useSearch';\n\ntype SearchContextType = UseSearchReturn;\n\nconst SearchContext = React.createContext<SearchContextType | null>(null);\n\n// props accepted by <SearchProvider>. `options` corresponds to the\n// same configuration object passed to the standalone `useSearch` hook.\nexport interface SearchProviderProps {\n options?: UseSearchOptions;\n children: React.ReactNode;\n}\n\nexport const SearchProvider: React.FC<SearchProviderProps> = ({options, children}) => {\n const search = useSearch(options);\n return <SearchContext.Provider value={search}>{children}</SearchContext.Provider>;\n};\n\nexport function useSearchContext(): SearchContextType {\n const ctx = React.useContext(SearchContext);\n if (!ctx) {\n throw new Error('useSearchContext must be used within a SearchProvider');\n }\n return ctx;\n}\n","import * as React from 'react';\nimport {UseSearchOptions, UseSearchReturn} from './_types';\n\nexport function useSearch(options: UseSearchOptions = {}): UseSearchReturn {\n const {\n defaultQuery = '',\n query: controlledQuery,\n onQueryChange,\n debounceMs = 300,\n defaultScope,\n scope: controlledScope,\n onScopeChange,\n } = options;\n\n const isQueryControlled = controlledQuery !== undefined;\n const isScopeControlled = controlledScope !== undefined;\n\n const [innerQuery, setInnerQuery] = React.useState(defaultQuery);\n const [debouncedQuery, setDebouncedQuery] = React.useState(controlledQuery ?? defaultQuery);\n const [innerScope, setInnerScope] = React.useState<string | undefined>(defaultScope);\n\n const query = isQueryControlled ? controlledQuery : innerQuery;\n\n // Stable refs for callbacks - prevents unnecessary re-references if inline functions are passed.\n const onQueryChangeRef = React.useRef(onQueryChange);\n React.useLayoutEffect(() => { onQueryChangeRef.current = onQueryChange; }, [onQueryChange]);\n \n const onScopeChangeRef = React.useRef(onScopeChange);\n React.useLayoutEffect(() => { onScopeChangeRef.current = onScopeChange; }, [onScopeChange]);\n\n const setQuery = React.useCallback(\n (q: string) => {\n if (!isQueryControlled) {\n setInnerQuery(q);\n }\n onQueryChangeRef.current?.(q);\n },\n [isQueryControlled],\n );\n\n const scope = isScopeControlled ? controlledScope : innerScope;\n\n const setScope = React.useCallback(\n (nextScope: string | undefined) => {\n if (!isScopeControlled) {\n setInnerScope(nextScope);\n }\n onScopeChangeRef.current?.(nextScope);\n },\n [isScopeControlled],\n );\n\n const clear = React.useCallback(() => {\n if (!isQueryControlled) {\n setInnerQuery(defaultQuery);\n }\n onQueryChangeRef.current?.(defaultQuery);\n\n if (!isScopeControlled) {\n setInnerScope(defaultScope);\n }\n onScopeChangeRef.current?.(defaultScope);\n }, [defaultQuery, defaultScope, isQueryControlled, isScopeControlled]);\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => {\n setDebouncedQuery(query);\n }, debounceMs);\n\n // Cleanup guarantees pending timers are cancelled on unmount.\n return () => window.clearTimeout(timer);\n }, [query, debounceMs]);\n\n return {query, debouncedQuery, setQuery, scope, setScope, clear};\n}\n","import * as React from 'react';\nimport { InputAdornment } from '@/ele/Form';\nimport { TextField } from '@/ele/Input';\nimport { IconButton } from '@/ele/Button';\nimport { CircularProgress } from '@/ele/Progress';\nimport { ClearIcon, SearchIcon } from '@/icons/MuiIcon';\nimport type {SearchBarProps} from './_types';\nimport {useSearchContext} from './context';\nimport { mergeSx } from '@/_utils/_func';\n\nexport const SearchBar: React.FC<SearchBarProps> = ({\n placeholder,\n adornment,\n onSubmit,\n showSubmitButton = true,\n submitOnEnter = true,\n loading = false,\n sx,\n}) => {\n const {query, scope, setQuery} = useSearchContext();\n\n // Stable ref — callers can pass inline functions without stale-closure bugs.\n const onSubmitRef = React.useRef(onSubmit);\n React.useLayoutEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n\n const handleClear = React.useCallback(() => {\n setQuery('');\n }, [setQuery]);\n\n const handleSubmit = React.useCallback(() => {\n const normalized = query.trim();\n if (!normalized) {\n return;\n }\n onSubmitRef.current?.(normalized, scope);\n }, [query, scope]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!submitOnEnter) {\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit, submitOnEnter],\n );\n\n return (\n <TextField\n value={query}\n onChange={e => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n sx={mergeSx(\n {\n \"& .MuiInputAdornment-root\": {\n gap: 0.5,\n },\n },\n sx,\n )}\n slotProps={{\n input: {\n startAdornment: adornment ? (\n <InputAdornment position=\"start\">{adornment}</InputAdornment>\n ) : undefined,\n endAdornment: (\n <InputAdornment position=\"end\">\n {query ? (\n <IconButton size=\"small\" onClick={handleClear} aria-label=\"Clear search input\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n ) : null}\n {showSubmitButton ? (\n loading ? (\n <CircularProgress size={18} thickness={5} />\n ) : (\n <IconButton size=\"small\" onClick={handleSubmit} aria-label=\"Submit search\">\n <SearchIcon fontSize=\"small\" />\n </IconButton>\n )\n ) : null}\n </InputAdornment>\n ),\n },\n }}\n />\n );\n};\n","import * as React from 'react';\nimport {Button} from '@/ele/Button';\nimport {MenuPopper, useMenu} from '@/ele/Menu';\nimport {ArrowDropDownRoundedIcon} from '@/icons/MuiIcon';\nimport type {SearchScopeProps} from './_types';\nimport {useSearchContext} from './context';\n\nexport const SearchScope: React.FC<SearchScopeProps> = ({\n options,\n sx,\n placeholderLabel = 'All',\n}) => {\n const {scope, setScope} = useSearchContext();\n\n const openMenuProps = useMenu({\n onItemClickClientArg: ({closeHandler}) => {\n closeHandler?.();\n },\n initSelected: scope ? [scope] : [],\n });\n\n const menuOptions = React.useMemo(() => (options || []).map(option => ({\n id: option.value,\n label: option.label,\n onClick: () => {\n setScope(option.value);\n },\n })), [options, setScope]);\n\n if (!options || options.length === 0) {\n return null;\n }\n\n const activeLabel = options.find(option => option.value === scope)?.label ?? placeholderLabel;\n\n return (\n <>\n <Button\n size='small'\n variant='outlined'\n onClick={openMenuProps.onTriggerClickHandler}\n endIcon={<ArrowDropDownRoundedIcon />}\n sx={sx}\n >\n {activeLabel}\n </Button>\n\n <MenuPopper\n options={menuOptions}\n openMenuProps={{\n ...openMenuProps,\n initSelected: scope ? [scope] : [],\n sorted: false,\n }}\n placement='bottom-start'\n menuItemProps={{\n fontSize: '0.875rem',\n padding: '6px 12px',\n }}\n />\n </>\n );\n};\n","import * as React from 'react';\nimport { Box } from '@/ele/Box';\nimport { CircularProgress } from '@/ele/Progress';\nimport { Paper } from '@/ele/Paper';\nimport { Typography } from '@/ele/Typography';\nimport {Menu} from '@/ele/Menu';\nimport type {SuggestionItem, SuggestionListProps} from './_types';\nimport {useSearchContext} from './context';\nimport { useSearchRootSx } from './theme';\nimport { mergeSx } from '@/_utils/_func';\n\nconst DEFAULT_MAX_ITEMS = 8;\n\nexport function SuggestionList<T extends SuggestionItem>({\n items,\n onSelect,\n renderItem,\n getItemLabel,\n maxItems = DEFAULT_MAX_ITEMS,\n showWhenEmptyQuery = false,\n loading = false,\n loadingText = 'Fetching suggestions...',\n emptyText = 'No suggestions',\n filterMode = 'client',\n footer,\n sx,\n}: SuggestionListProps<T>) {\n const {query, setQuery} = useSearchContext();\n\n const resolvedGetLabel = React.useCallback(\n (item: T) => (getItemLabel ? getItemLabel(item) : item.label),\n [getItemLabel],\n );\n\n const normalizedQuery = query.trim().toLowerCase();\n\n const filteredItems = React.useMemo(() => {\n if (!showWhenEmptyQuery && !normalizedQuery) {\n return [] as T[];\n }\n\n if (filterMode === 'none') {\n return items.slice(0, maxItems);\n }\n\n return items\n .filter(item => {\n if (!normalizedQuery) {\n return true;\n }\n return resolvedGetLabel(item).toLowerCase().includes(normalizedQuery);\n })\n .slice(0, maxItems);\n }, [filterMode, items, maxItems, normalizedQuery, resolvedGetLabel, showWhenEmptyQuery]);\n\n const handleSelect = React.useCallback(\n (item: T) => {\n setQuery(resolvedGetLabel(item));\n onSelect?.(item);\n },\n [onSelect, resolvedGetLabel, setQuery],\n );\n\n const menuOptions = React.useMemo(\n () =>\n filteredItems.map(item => ({\n id: String(item.id),\n label: renderItem ? renderItem(item) : resolvedGetLabel(item),\n onClick: () => handleSelect(item),\n })),\n [filteredItems, handleSelect, renderItem, resolvedGetLabel],\n );\n\n if (loading && (normalizedQuery || showWhenEmptyQuery)) {\n return (\n <Paper elevation={3} sx={sx}>\n <Box sx={{display: 'flex', alignItems: 'center', gap: 1, px: 1.5, py: 1.25}}>\n <CircularProgress size={16} thickness={5} />\n <Typography variant='body2'>{loadingText}</Typography>\n </Box>\n </Paper>\n );\n }\n\n if (filteredItems.length === 0) {\n if (!normalizedQuery && !showWhenEmptyQuery) {\n return null;\n }\n\n return (\n <Paper elevation={3} sx={sx}>\n <Box sx={mergeSx({ px: 1.5, py: 1.25 }, useSearchRootSx)}>\n <Typography variant='body2' sx={{ color: 'var(--usesearch-empty-text-color)' }}>\n {emptyText}\n </Typography>\n </Box>\n </Paper>\n );\n }\n\n return (\n <Paper elevation={3} sx={sx}>\n <Menu\n options={menuOptions}\n initSelected={[]}\n sorted={false}\n menuItemProps={{\n fontSize: '0.875rem',\n padding: '6px 12px',\n }}\n />\n {footer ? (\n <Box sx={{px: 1, pb: 1}}>\n {footer}\n </Box>\n ) : null}\n </Paper>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for UseSearch compound component.\n * Spread on container elements — children consume via `var(--*)`.\n */\nexport const useSearchRootSx: SxProps<Theme> = {\n '--usesearch-empty-text-color': 'var(--mui-palette-text-secondary)',\n};\n","import * as React from 'react';\nimport {Button} from '@/ele/Button';\nimport {ScopeSuggestionsProps, SuggestionItem} from './_types';\nimport {SuggestionList} from './SuggestionList';\nimport {useSearchContext} from './context';\n\nexport function ScopeSuggestions<T extends SuggestionItem>({\n getSuggestions,\n onLoadMore,\n hasMore,\n loadMoreLabel = 'Load more',\n onLoadingChange,\n onError,\n onSelect,\n renderItem,\n getItemLabel,\n maxItems,\n showWhenEmptyQuery,\n loadingText,\n emptyText,\n filterMode,\n sx,\n}: ScopeSuggestionsProps<T>) {\n const {scope, debouncedQuery} = useSearchContext();\n const requestIdRef = React.useRef(0);\n const [items, setItems] = React.useState<T[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [loadingMore, setLoadingMore] = React.useState(false);\n\n // Stable refs for callbacks — prevents infinite loops when callers pass inline functions.\n const getSuggestionsRef = React.useRef(getSuggestions);\n React.useLayoutEffect(() => { getSuggestionsRef.current = getSuggestions; }, [getSuggestions]);\n const onLoadingChangeRef = React.useRef(onLoadingChange);\n React.useLayoutEffect(() => { onLoadingChangeRef.current = onLoadingChange; }, [onLoadingChange]);\n const onErrorRef = React.useRef(onError);\n React.useLayoutEffect(() => { onErrorRef.current = onError; }, [onError]);\n\n const resolvedHasMore = React.useMemo(() => {\n if (typeof hasMore === 'function') {\n return hasMore(items, scope, debouncedQuery.trim());\n }\n return Boolean(hasMore);\n }, [debouncedQuery, hasMore, items, scope]);\n\n React.useEffect(() => {\n const query = debouncedQuery.trim();\n\n if (!query && !showWhenEmptyQuery) {\n setItems([]);\n setLoading(false);\n setLoadingMore(false);\n onLoadingChangeRef.current?.(false);\n return;\n }\n\n requestIdRef.current += 1;\n const currentRequestId = requestIdRef.current;\n let isActive = true;\n\n setLoading(true);\n onLoadingChangeRef.current?.(true);\n\n Promise.resolve(getSuggestionsRef.current(scope, query))\n .then(next => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setItems(next);\n })\n .catch(error => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setItems([]);\n onErrorRef.current?.(error);\n })\n .finally(() => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setLoading(false);\n setLoadingMore(false);\n onLoadingChangeRef.current?.(false);\n });\n\n return () => {\n isActive = false;\n // Notify parent that loading stopped when the effect is re-run or component unmounts.\n onLoadingChangeRef.current?.(false);\n };\n }, [debouncedQuery, scope, showWhenEmptyQuery]);\n\n const handleLoadMore = React.useCallback(() => {\n if (!onLoadMore || loading || loadingMore) {\n return;\n }\n\n const query = debouncedQuery.trim();\n if (!query && !showWhenEmptyQuery) {\n return;\n }\n\n setLoadingMore(true);\n Promise.resolve(onLoadMore(scope, query, items))\n .then(next => {\n setItems(next);\n })\n .catch(error => {\n onErrorRef.current?.(error);\n })\n .finally(() => {\n setLoadingMore(false);\n });\n }, [debouncedQuery, items, loading, loadingMore, onLoadMore, scope, showWhenEmptyQuery]);\n\n const footer = onLoadMore && resolvedHasMore ? (\n <Button\n size='small'\n variant='text'\n fullWidth\n disabled={loadingMore || loading}\n onClick={handleLoadMore}\n >\n {loadingMore ? 'Loading more...' : loadMoreLabel}\n </Button>\n ) : null;\n\n return (\n <SuggestionList\n items={items}\n loading={loading}\n footer={footer}\n onSelect={onSelect}\n renderItem={renderItem}\n getItemLabel={getItemLabel}\n maxItems={maxItems}\n showWhenEmptyQuery={showWhenEmptyQuery}\n loadingText={loadingText}\n emptyText={emptyText}\n filterMode={filterMode}\n sx={sx}\n />\n );\n}\n","import * as React from 'react';\nimport { Box } from '@/ele/Box';\nimport type {SuggestionItem, UseSearchLayoutProps} from './_types';\nimport {SearchBar} from './SearchBar';\nimport {SearchScope} from './SearchScope';\nimport {ScopeSuggestions} from './ScopeSuggestions';\nimport {SearchResults} from './SearchResults';\n\nconst DEFAULT_CONTAINER_SX = {width: 560, maxWidth: '90vw', position: 'relative'};\nconst DEFAULT_ROW_SX = {display: 'flex', gap: 1};\nconst DEFAULT_SCOPE_SX = {minWidth: 130};\nconst DEFAULT_SEARCH_BAR_SX = {flex: 1};\nconst DEFAULT_SUGGESTIONS_SX = {\n position: 'absolute',\n top: 56,\n left: 0,\n right: 0,\n zIndex: 2,\n};\n\nexport function UseSearchLayout<T extends SuggestionItem>({\n scopeOptions,\n scopePlaceholderLabel = 'Engine',\n searchPlaceholder = 'Search',\n getSuggestions,\n onLoadMoreSuggestions,\n hasMoreSuggestions,\n loadMoreSuggestionsLabel,\n onSuggestionSelect,\n renderSuggestionItem,\n getSuggestionLabel,\n suggestionFilterMode,\n suggestionsLoadingText,\n suggestionsEmptyText,\n onSuggestionsError,\n onSearchSubmit,\n children,\n containerSx,\n rowSx,\n scopeSx,\n searchBarSx,\n suggestionsSx,\n}: UseSearchLayoutProps<T>) {\n const [suggestionsLoading, setSuggestionsLoading] = React.useState(false);\n\n return (\n <Box sx={containerSx ?? DEFAULT_CONTAINER_SX}>\n <Box sx={rowSx ?? DEFAULT_ROW_SX}>\n <SearchScope\n options={scopeOptions}\n sx={scopeSx ?? DEFAULT_SCOPE_SX}\n placeholderLabel={scopePlaceholderLabel}\n />\n <SearchBar\n placeholder={searchPlaceholder}\n sx={searchBarSx ?? DEFAULT_SEARCH_BAR_SX}\n loading={suggestionsLoading}\n onSubmit={onSearchSubmit}\n />\n </Box>\n\n {getSuggestions && (\n <ScopeSuggestions\n getSuggestions={getSuggestions}\n onLoadMore={onLoadMoreSuggestions}\n hasMore={hasMoreSuggestions}\n loadMoreLabel={loadMoreSuggestionsLabel}\n onLoadingChange={setSuggestionsLoading}\n onSelect={onSuggestionSelect}\n renderItem={renderSuggestionItem}\n getItemLabel={getSuggestionLabel}\n filterMode={suggestionFilterMode}\n loadingText={suggestionsLoadingText}\n emptyText={suggestionsEmptyText}\n onError={onSuggestionsError}\n sx={suggestionsSx ?? DEFAULT_SUGGESTIONS_SX}\n />\n )}\n\n <SearchResults>\n {children}\n </SearchResults>\n </Box>\n );\n}\n","import * as React from 'react';\nimport type {SearchResultsProps} from './_types';\nimport {useSearchContext} from './context';\n\nexport const SearchResults: React.FC<SearchResultsProps> = ({children}) => {\n const {debouncedQuery, scope} = useSearchContext();\n return <>{children(debouncedQuery, scope)}</>;\n};\n"],"mappings":"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","names":["React","React","jsx","default","React","jsx","jsxs","default","React","jsx","jsxs","default","React","jsx","React","Fragment","jsx","jsx","jsxs","default"]}
|