@preply/ds-docs 3.5.1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/00.LayoutFlex.stories-CeV_wdIC.js +85 -0
- package/dist/assets/{00.applications-CtD17Uvc.js → 00.applications-CAvTZLs_.js} +2 -2
- package/dist/assets/{00.favicons.guide-rDY-MoXZ.js → 00.favicons.guide-BhlxRh9a.js} +2 -2
- package/dist/assets/{00.token-explorer-CedppzBQ.js → 00.token-explorer-20FX7CcY.js} +2 -2
- package/dist/assets/00.using-responsive-props-BnlhCBRt.js +18 -0
- package/dist/assets/01.semantic-tokens-DcnkWzh7.js +2 -0
- package/dist/assets/{01.using-shorthand-props-eZLJFDHj.js → 01.using-shorthand-props-Of1iGh33.js} +2 -2
- package/dist/assets/10.Combinations.stories-uNix06Cx.js +144 -0
- package/dist/assets/{10.fonts.guide-DW9ufzTF.js → 10.fonts.guide-DrwXu-qM.js} +2 -2
- package/dist/assets/{10.ssr-DwlffmrT.js → 10.ssr-BLRvX7tP.js} +2 -2
- package/dist/assets/{11.languageFont.explorer.stories-Crh2l5Jm.js → 11.languageFont.explorer.stories-8bRkypgA.js} +3 -3
- package/dist/assets/{11.ssr.app-router-BZ07Enlf.js → 11.ssr.app-router-Bdj_5bEM.js} +2 -2
- package/dist/assets/{20.libraries-lbSLR9_7.js → 20.libraries-BAk4bn7T.js} +2 -2
- package/dist/assets/30.icons.explorer-Cw48haes.js +73 -0
- package/dist/assets/{30.storybook-C4NNn5Fv.js → 30.storybook-Cl1dKshZ.js} +2 -2
- package/dist/assets/40.illustrations.explorer-QST9S1uM.js +21 -0
- package/dist/assets/{90.advanced-bdiRxPCx.js → 90.advanced-D0gL86iZ.js} +2 -2
- package/dist/assets/{Accordion-BMkC4Xny.js → Accordion-DQdO67t-.js} +1 -1
- package/dist/assets/{Accordion.stories-SU6sgvYh.js → Accordion.stories-CIkFS1aB.js} +2 -2
- package/dist/assets/{Accordion.tests.stories-CxVZnGoY.js → Accordion.tests.stories-B-CsSb4t.js} +3 -3
- package/dist/assets/{AlertDialog.stories-Z5ooiuoO.js → AlertDialog.stories-Cl8Xpqxw.js} +3 -3
- package/dist/assets/{Avatar-B2H0W8KL.js → Avatar-BPQkrrdS.js} +1 -1
- package/dist/assets/{Avatar-BoLH36O5.js → Avatar-DU9LOGxE.js} +1 -1
- package/dist/assets/Avatar.stories-CqMa-0IY.js +42 -0
- package/dist/assets/AvatarWithStatus.stories-Bhftrj9g.js +41 -0
- package/dist/assets/{Badge-j_a0acGK.css → Badge-DXnHyVME.css} +1 -1
- package/dist/assets/{Badge.stories-B2OoKd78.js → Badge.stories-ub7MEo4B.js} +3 -3
- package/dist/assets/Box.stories-B-s13PQh.js +44 -0
- package/dist/assets/BubbleCounter.stories-CpaMP6xY.js +242 -0
- package/dist/assets/{Button-BSyqsKC5.js → Button-C5gzVt4K.js} +1 -1
- package/dist/assets/{Button-Bo0EuTg4.js → Button-vy3cIlv9.js} +1 -1
- package/dist/assets/{Button.stories-Dc9V2OdS.js → Button.stories-Df_g55it.js} +2 -2
- package/dist/assets/{ButtonBase-Bdtn25V2.js → ButtonBase-D5O3MkG2.js} +1 -1
- package/dist/assets/{Checkbox-Bq_sNuXJ.js → Checkbox-Bknyi3M6.js} +2 -2
- package/dist/assets/{Checkbox.stories-BI-3q1SR.js → Checkbox.stories-DF4d48B_.js} +2 -2
- package/dist/assets/Checkbox.tests.stories-CPrt0IT-.js +64 -0
- package/dist/assets/Chips-C-y9rHQ4.css +1 -0
- package/dist/assets/Chips.stories-DkNJ_zVw.js +146 -0
- package/dist/assets/Color-YHDXOIA2-pga7xyrn.js +1 -0
- package/dist/assets/{Combination-CCYtWL8C.js → Combination-Cz1uIyPJ.js} +1 -1
- package/dist/assets/{CountryFlag-ClC7kEHn.js → CountryFlag-DNvfZC7z.js} +7 -7
- package/dist/assets/CountryFlag.stories-xg8q2tp6.js +331 -0
- package/dist/assets/CountryFlag.test.stories-CkUCxnsL.js +27 -0
- package/dist/assets/{Dialog.stories-ColOPVoz.js → Dialog.stories-C9-6y9u3.js} +3 -3
- package/dist/assets/DismissibleChips-D0spWwKB.js +1 -0
- package/dist/assets/DismissibleChips-Jfhj9R2Y.css +1 -0
- package/dist/assets/DismissibleChips.stories-DAd1oRPH.js +635 -0
- package/dist/assets/Divider-DECo0bYW.css +1 -0
- package/dist/assets/Divider.stories-Dt8b4I0I.js +9 -0
- package/dist/assets/DocsRenderer-CFRXHY34-bxqIrlIk.js +2 -0
- package/dist/assets/{FieldButton-Bsa9_rJB.js → FieldButton-DkkntNzT.js} +1 -1
- package/dist/assets/FieldButton.stories-CXR_cH-r.js +1 -0
- package/dist/assets/{FormControl-CeIJk4_Z.js → FormControl-BBd1k1n3.js} +1 -1
- package/dist/assets/{FormControl-BxxTFPCS.css → FormControl-BBqp99uJ.css} +1 -1
- package/dist/assets/{FormControl.stories-DekxQG9a.js → FormControl.stories-DukIAZCw.js} +2 -2
- package/dist/assets/{Heading-ese4_5Hg.js → Heading-BLxyLk9f.js} +2 -2
- package/dist/assets/Heading.stories-DcyjKmJn.js +82 -0
- package/dist/assets/{Icon-ZIxauYsE.js → Icon-CsnSNslb.js} +2 -2
- package/dist/assets/{Icon-Dlm-jGvW.js → Icon-CytpCOfq.js} +1 -1
- package/dist/assets/Icon-RSC-jWx530Uy.js +6 -0
- package/dist/assets/{Icon.stories-Cv6aq9BI.js → Icon.stories-CdJp2Kjy.js} +2 -2
- package/dist/assets/IconButton-DnBk_U_S.css +1 -0
- package/dist/assets/IconButton-NYwQQfnV.js +8 -0
- package/dist/assets/{Input-C1hZX5_o.js → Input-MEZGWQfc.js} +5 -5
- package/dist/assets/{InputContainer-Bk0tgFnW.js → InputContainer-BZsD6GIE.js} +1 -1
- package/dist/assets/IntegrationWithReactHookForm.stories-DbXGbM6L.js +439 -0
- package/dist/assets/LayoutFlex-C3k4b85b.js +1 -0
- package/dist/assets/{LayoutFlex-Bhu4q65J.js → LayoutFlex-C6z0wWVE.js} +1 -1
- package/dist/assets/{LayoutFlexItem-C2t_4vHD.js → LayoutFlexItem-Cwg58STc.js} +1 -1
- package/dist/assets/{LayoutGrid-DwWkjrQU.js → LayoutGrid-WPajd7ZP.js} +1 -1
- package/dist/assets/LayoutGrid.stories-B-DYu7we.js +88 -0
- package/dist/assets/{LayoutGridItem-CZ6SKl8g.js → LayoutGridItem-CPteN7Xi.js} +1 -1
- package/dist/assets/{LayoutGridItem-CmZxAA0w.js → LayoutGridItem-sDswLjZs.js} +1 -1
- package/dist/assets/{LibraryExplore-C8GqDRwc.js → LibraryExplore-oBYfEgnm.js} +1 -1
- package/dist/assets/Link-ppzJSCTf.js +7 -0
- package/dist/assets/Link.stories-ClHFTcTp.js +265 -0
- package/dist/assets/Loader.stories-ltpe_Net.js +37 -0
- package/dist/assets/Messages-VCFIwUal.js +1 -0
- package/dist/assets/MultiSelectChips-CwiPSabU.js +2 -0
- package/dist/assets/MultiSelectChips.stories-DmtbSk6N.js +618 -0
- package/dist/assets/{NumberField-D6cbX2hK.js → NumberField-RsSQ3jKy.js} +5 -5
- package/dist/assets/{NumberField.stories-BHt2ErAX.js → NumberField.stories-D7ZfStPF.js} +2 -2
- package/dist/assets/{ObserveIntersection-DsqqXq5n.js → ObserveIntersection-B-K9BpyT.js} +2 -2
- package/dist/assets/ObserveIntersection.stories-CsECVFcG.js +27 -0
- package/dist/assets/{OnboardingTooltip-DVNAQjDc.js → OnboardingTooltip-S86JAVp1.js} +1 -1
- package/dist/assets/OnboardingTooltip.stories-yysftpQx.js +66 -0
- package/dist/assets/OnboardingTooltip.tests.stories-BGYD6ZgF.js +79 -0
- package/dist/assets/{OnboardingTour-DdV7TN6M.js → OnboardingTour-DdoL-ALr.js} +1 -1
- package/dist/assets/{OnboardingTour.stories-D0ScuFD6.js → OnboardingTour.stories-CFHFqnUP.js} +3 -3
- package/dist/assets/{OnboardingTour.tests.stories-DAxdPYEp.js → OnboardingTour.tests.stories-Zth6eLU9.js} +3 -3
- package/dist/assets/{PasswordField-C_KRyf9k.js → PasswordField-Dxf_bax6.js} +5 -5
- package/dist/assets/{PasswordField.stories-3X4JtcLm.js → PasswordField.stories-cbjkS8Y4.js} +5 -5
- package/dist/assets/{PortalElementProvider-D4ltrA8j.js → PortalElementProvider-CgL8vj5o.js} +1 -1
- package/dist/assets/PreplyLogo.stories-uls4oHdg.js +97 -0
- package/dist/assets/{ProgressBar.stories-Dpro8fzG.js → ProgressBar.stories-CDcfCVq4.js} +3 -3
- package/dist/assets/{ProgressSteps-BBrWCYks.js → ProgressSteps--PLRO2gB.js} +1 -1
- package/dist/assets/ProgressSteps.stories-Ds4cZ7wu.js +31 -0
- package/dist/assets/{RangeSlider-dSZs_gtw.js → RangeSlider-BYDrLADZ.js} +1 -1
- package/dist/assets/{RangeSlider.stories-DVb8mcs1.js → RangeSlider.stories-Cyr-Pro6.js} +2 -2
- package/dist/assets/RootProvider-jpy520VQ.js +1 -0
- package/dist/assets/{SelectField-CuzFFPz0.js → SelectField-JmD-rzDd.js} +7 -7
- package/dist/assets/{SelectField.stories-wb_cAtCV.js → SelectField.stories-BaUnnRxC.js} +2 -2
- package/dist/assets/ShowOnIntersection.stories-1-PEYzrA.js +17 -0
- package/dist/assets/SingleSelectChips-DLCTUr2z.js +2 -0
- package/dist/assets/SingleSelectChips.stories-Dqmrydst.js +637 -0
- package/dist/assets/{Slider-6E9fmd7P.js → Slider-CIF6srIP.js} +1 -1
- package/dist/assets/{Slider.stories-B5LCqqgS.js → Slider.stories-DPwe4ZY9.js} +2 -2
- package/dist/assets/{Spinner-BCTJunNM.js → Spinner-T-vTyHiv.js} +1 -1
- package/dist/assets/{Steps-CCm9vCgl.js → Steps-ffbOMhEJ.js} +1 -1
- package/dist/assets/{Steps.stories-BLFM3WRM.js → Steps.stories-CPOi2Oi8.js} +2 -2
- package/dist/assets/{StorybookGlobalStyle-B1zhYl96.js → StorybookGlobalStyle-CQSpwvw3.js} +1 -1
- package/dist/assets/Switch-Dw6ODsdd.js +12 -0
- package/dist/assets/Switch-DxL-NADD.css +1 -0
- package/dist/assets/Switch.stories-C1Mk3jSk.js +138 -0
- package/dist/assets/{Text-BmdJVr9v.js → Text-CykvSLVe.js} +1 -1
- package/dist/assets/Text.stories-BM7oD1Ya.js +69 -0
- package/dist/assets/{TextField-D2GlsmWF.css → TextField-C5AoK3Cj.css} +1 -1
- package/dist/assets/{TextField-Co0wSa5c.js → TextField-DakE_vDk.js} +1 -1
- package/dist/assets/{TextField-CMgzC3bX.js → TextField-lnCw6vFm.js} +5 -5
- package/dist/assets/{TextField.stories-CAcPkm_s.js → TextField.stories-C8nNbyIm.js} +5 -5
- package/dist/assets/{TextHighlighted-B6rrwk3x.js → TextHighlighted-B2n23sPW.js} +1 -1
- package/dist/assets/TextHighlighted.stories-Dunl9OsM.js +32 -0
- package/dist/assets/TextInline.stories-Cz98O8bG.js +37 -0
- package/dist/assets/{TextareaField-CCM1C6lK.js → TextareaField-BDRAFgn6.js} +9 -9
- package/dist/assets/{TextareaField.stories-DKNFN3f4.js → TextareaField.stories-CC3YstiD.js} +6 -6
- package/dist/assets/{Toast.stories-BzEpckjh.js → Toast.stories-CUVZTvJT.js} +3 -3
- package/dist/assets/{TokyoUIAttach-BvBvQVx_.js → TokyoUIAttach-BWl7Jkq1.js} +1 -1
- package/dist/assets/{TokyoUIClose-DFIfVIfy.js → TokyoUIClose-thK8sk63.js} +1 -1
- package/dist/assets/TokyoUIEmojiFrowning-DTIcabpJ.js +1 -0
- package/dist/assets/{TokyoUIExpand-DThzqohx.js → TokyoUIExpand-oMdXmNcg.js} +1 -1
- package/dist/assets/{TokyoUIEye-BsOt8ZdC.js → TokyoUIEye-CteyS9_g.js} +1 -1
- package/dist/assets/{TokyoUIFav-DGbkVriC.js → TokyoUIFav-DOVerCtW.js} +1 -1
- package/dist/assets/{TokyoUIInfo-nHX2jpp7.js → TokyoUIInfo-DbkQBubr.js} +1 -1
- package/dist/assets/{TokyoUILanguage-BNq9ng3F.js → TokyoUILanguage-CLpo5Vdq.js} +1 -1
- package/dist/assets/{TokyoUILock-C_glX9Ec.js → TokyoUILock-CENLMUf4.js} +1 -1
- package/dist/assets/{TokyoUIMinus-B9ja89W6.js → TokyoUIMinus-RacYe9uc.js} +1 -1
- package/dist/assets/{TokyoUINotebook-DNjno-oI.js → TokyoUINotebook-kt8pWj_a.js} +1 -1
- package/dist/assets/{TokyoUINotesWithPad-Bqcca_-M.js → TokyoUINotesWithPad-B-o4vu0Y.js} +1 -1
- package/dist/assets/{TokyoUIPhone-BHLDT6dz.js → TokyoUIPhone-CvuBM6jb.js} +1 -1
- package/dist/assets/{TokyoUITag-CulX0-gf.js → TokyoUITag-CS4uarg6.js} +1 -1
- package/dist/assets/{TokyoUIUpload-Bi3CuQzX.js → TokyoUIUpload-Bf0gWv4M.js} +1 -1
- package/dist/assets/{TokyoUIUser-DG6LLnJu.js → TokyoUIUser-Cvenl_VS.js} +1 -1
- package/dist/assets/{Tooltip-IxKOQjjo.js → Tooltip-UjXQy5k6.js} +1 -1
- package/dist/assets/{Tooltip.stories-DHYG0ggY.js → Tooltip.stories-DUECVMBB.js} +2 -2
- package/dist/assets/Tooltip.tests.stories-DV5HEaze.js +65 -0
- package/dist/assets/{align-self-BM6l9H5Z.js → align-self-r3vx00J0.js} +1 -1
- package/dist/assets/{breakpoints-DxEeOfvq.js → breakpoints-5Upxf6Y1.js} +2 -2
- package/dist/assets/{breakpoints-3Mi8ztBx.js → breakpoints-839jWvyb.js} +2 -2
- package/dist/assets/{breakpoints-BPZAI3l-.js → breakpoints-CUqKVgVc.js} +2 -2
- package/dist/assets/{changelog-BvX8uMXW.js → changelog-D_f5Tbwt.js} +234 -216
- package/dist/assets/{chunk-XP5HYGXS-D5tuasO7.js → chunk-XP5HYGXS-BpfKkqn7.js} +1 -1
- package/dist/assets/{client-DXF5tT0h.js → client-C1fTPCwG.js} +1 -1
- package/dist/assets/componentNames-NXEPEzbR.js +1 -0
- package/dist/assets/createRequiredContext-BW3-EdwI.js +241 -0
- package/dist/assets/createRequiredContext-Bv1cwElm.css +1 -0
- package/dist/assets/{defaults-B1rzzf6M.js → defaults-Clr6nbGc.js} +1 -1
- package/dist/assets/entry-preview-BvEBPG6v.js +2 -0
- package/dist/assets/{entry-preview-docs-FEPuDDnY.js → entry-preview-docs-Cyz3fU9E.js} +2 -2
- package/dist/assets/getCountryFlagUrl-CP-PpZV_.js +1 -0
- package/dist/assets/{getTokenVar-CXvtPVqa.js → getTokenVar-CV6_zRnp.js} +2 -2
- package/dist/assets/{hover-sR2377QI.js → hover-Bs7YcuQH.js} +2 -2
- package/dist/assets/hover-DniV5Ub7.js +13 -0
- package/dist/assets/hover-uZhMPRXi.js +14 -0
- package/dist/assets/{iframe-BE13K_u-.js → iframe-DI6VGJCr.js} +2 -2
- package/dist/assets/{index-BYp7dUfi.js → index-7S8Dj0J-.js} +1 -1
- package/dist/assets/{index-DUJ9kiQB.js → index-BArSnScv.js} +2 -2
- package/dist/assets/index-BN6VMYqa.js +1 -0
- package/dist/assets/{index-jEDObK_5.js → index-BPrLDK9Y.js} +1 -1
- package/dist/assets/{index-v0utLE_k.js → index-BrBqb5Q4.js} +1 -1
- package/dist/assets/{index--DZ0VX4g.js → index-Bt5ip-xO.js} +1 -1
- package/dist/assets/{index-DRKYGVyc.js → index-C6wF8VM1.js} +1 -1
- package/dist/assets/{index-C66nt8TK.js → index-C7hTFOIV.js} +1 -1
- package/dist/assets/{index-wFyje0se.js → index-C9SxdfPC.js} +1 -1
- package/dist/assets/index-Cb9e4tly.js +1 -0
- package/dist/assets/index-ChsGqxH_.js +9 -0
- package/dist/assets/{index-DDyIDR-R.js → index-Ctq3gFTp.js} +1 -1
- package/dist/assets/{index-CjMmneJr.js → index-CxzwkAAS.js} +3 -3
- package/dist/assets/{index-jPlWeKki.js → index-DHRyQyAr.js} +1 -1
- package/dist/assets/{index-BfBdt3zW.js → index-DSVnVYmz.js} +1 -1
- package/dist/assets/{index-DbgDZDus.js → index-QwIMrChO.js} +1 -1
- package/dist/assets/{intro-BQxazeZ4.js → intro-D15hwrBp.js} +2 -2
- package/dist/assets/{jsx-runtime-BYouaCF_.js → jsx-runtime-BTJTZTIL.js} +2 -2
- package/dist/assets/layout-relative-BNsRKWaJ.css +1 -0
- package/dist/assets/layout-relative-iaxAShjd.css +1 -0
- package/dist/assets/layout-relative.module-1z75aSwo-BeT2Gxbq.js +1 -0
- package/dist/assets/layout-relative.module-ChaXrVQQ.js +1 -0
- package/dist/assets/{message-BraTJ16C.js → message-BqoANQez.js} +1 -1
- package/dist/assets/{migrating-from-less-_WbBpNno.js → migrating-from-less-ChwDKr-0.js} +2 -2
- package/dist/assets/{options-Dn0Ts6qK.js → options-DiZKU5qS.js} +1 -1
- package/dist/assets/playground-6Qa0tALi.css +1 -0
- package/dist/assets/{playground.stories-DNP6DMoh.js → playground.stories-DBacBF4k.js} +212 -212
- package/dist/assets/preview-B7ZgNHfI.js +22 -0
- package/dist/assets/{preview-ChKXYagv.js → preview-BTjEYo28.js} +1 -1
- package/dist/assets/preview-BtcSDksg.js +2 -0
- package/dist/assets/{preview-DqZVArh_.js → preview-Dr3Vhf1y.js} +1 -1
- package/dist/assets/react-18-DfUnyR7e.js +1 -0
- package/dist/assets/react.esm-BJ_b8t-Z.js +65 -0
- package/dist/assets/{render-icon-CVTdrNe-.js → render-icon-BT0Aq7PA.js} +1 -1
- package/dist/assets/{render-icon-CwRdpin3.js → render-icon-Du0nasoi.js} +1 -1
- package/dist/assets/{shared-strings-CcWGHelY.js → shared-strings-BzaHC9x5.js} +1 -1
- package/dist/assets/{styled-components.browser.esm-CwsnEFnS.js → styled-components.browser.esm-BgpGX317.js} +1 -1
- package/dist/assets/test-utils-DCJN9LZk.js +9 -0
- package/dist/assets/{tokens-Do5DDIVZ.js → tokens-0xptGJP0.js} +2 -2
- package/dist/assets/{tokens-rA5iljxB.js → tokens-CGqhbkO_.js} +2 -2
- package/dist/assets/tokens-CJh_FSIl.js +1 -0
- package/dist/assets/{tokens-BpVbkeg9.js → tokens-pXBi-h95.js} +2 -2
- package/dist/assets/useHostname-Y3PlXofY.js +1 -0
- package/dist/assets/{useMergeRefs-BKVZOB6R.js → useMergeRefs-D_RfOOSs.js} +1 -1
- package/dist/assets/{useMergeRefs-CeyIhNgY.js → useMergeRefs-SFH7Mw4x.js} +1 -1
- package/dist/assets/{usePortalElement-D-MBkGYE.js → usePortalElement-M09Zq-L8.js} +2 -2
- package/dist/assets/{useTheme-DiEoTTOi.js → useTheme-DFSR9KPZ.js} +1 -1
- package/dist/assets/{useToken-BEsvy84L.js → useToken-DI8WZBSr.js} +1 -1
- package/dist/assets/{welcome-CjdlfIE9.js → welcome-DyZwhj5C.js} +2 -2
- package/dist/assets/{zeroheight-COTIl-YQ.js → zeroheight-B9itFpkD.js} +2 -2
- package/dist/iframe.html +1 -1
- package/dist/index.json +1 -1
- package/dist/preview-stats.json +2217 -1449
- package/dist/project.json +1 -1
- package/package.json +3 -3
- package/dist/assets/00.LayoutFlex.stories-DsoQ41ru.js +0 -85
- package/dist/assets/00.using-responsive-props-CXXBchqR.js +0 -18
- package/dist/assets/01.semantic-tokens-DA4N50sn.js +0 -2
- package/dist/assets/10.Combinations.stories-D5C6zeLo.js +0 -144
- package/dist/assets/30.icons.explorer-gDqz6aGC.js +0 -73
- package/dist/assets/40.illustrations.explorer-Cw6qUJFV.js +0 -21
- package/dist/assets/Avatar.stories-QILX30d4.js +0 -42
- package/dist/assets/AvatarWithStatus.stories-CiIZ7860.js +0 -41
- package/dist/assets/Box.stories-Bj6O093l.js +0 -44
- package/dist/assets/Checkbox.tests.stories-Bn3p5No-.js +0 -64
- package/dist/assets/Chips-DAK2so_G.css +0 -1
- package/dist/assets/Chips.stories-FqjAsoAI.js +0 -150
- package/dist/assets/Color-YHDXOIA2-Brn_ueLX.js +0 -1
- package/dist/assets/DocsRenderer-CFRXHY34-Drp94F88.js +0 -2
- package/dist/assets/FieldButton.stories-DN08cc4N.js +0 -1
- package/dist/assets/Flag.stories-hPDFXFLs.js +0 -114
- package/dist/assets/Flag.test.stories-Dn7xe9kp.js +0 -27
- package/dist/assets/Heading.stories-Pcuq78-p.js +0 -82
- package/dist/assets/Icon-RSC-DHJisRIw.js +0 -6
- package/dist/assets/IconButton-BqwVuKH2.js +0 -8
- package/dist/assets/IntegrationWithReactHookForm.stories-DjhZzsb9.js +0 -274
- package/dist/assets/LayoutFlex-BBGvSVMb.js +0 -1
- package/dist/assets/LayoutGrid.stories-CNvZbuzu.js +0 -88
- package/dist/assets/Link.stories-DQx9wq8H.js +0 -271
- package/dist/assets/Loader.stories-DWRd5a4n.js +0 -37
- package/dist/assets/ObserveIntersection.stories-BabE9srq.js +0 -27
- package/dist/assets/OnboardingTooltip.stories-BGQM-hLj.js +0 -66
- package/dist/assets/OnboardingTooltip.tests.stories-4LRVGnuI.js +0 -79
- package/dist/assets/PreplyLogo.stories-CrTgCgF0.js +0 -97
- package/dist/assets/ProgressSteps.stories-DDhuAaz0.js +0 -31
- package/dist/assets/RootProvider-DLsVkcFn.js +0 -1
- package/dist/assets/ShowOnIntersection.stories-ipu84fct.js +0 -17
- package/dist/assets/Text.stories-CkC6dvyE.js +0 -69
- package/dist/assets/TextHighlighted.stories-BJsM40kL.js +0 -32
- package/dist/assets/TextInline.stories-CL1L2t2-.js +0 -37
- package/dist/assets/Tooltip.tests.stories-DWwqRNUM.js +0 -65
- package/dist/assets/componentNames-CpCJzpB9.js +0 -1
- package/dist/assets/entry-preview-Cgr68VmN.js +0 -10
- package/dist/assets/hover-BJ9rZrzg.js +0 -13
- package/dist/assets/hover-CeDdAnNA.js +0 -14
- package/dist/assets/index-B3evPFBL.js +0 -9
- package/dist/assets/index-uOP2uDdf.js +0 -1
- package/dist/assets/layout-relative-BGyAoF2N.css +0 -1
- package/dist/assets/layout-relative-DuJENdo5.css +0 -1
- package/dist/assets/layout-relative.module-1z75aSwo-DNAR_Nv2.js +0 -1
- package/dist/assets/layout-relative.module-ed9bC4H4.js +0 -1
- package/dist/assets/playground-DJaUjyzx.css +0 -1
- package/dist/assets/preview-DFIaQ6pR.js +0 -2
- package/dist/assets/preview-Dlcr0l4_.js +0 -22
- package/dist/assets/react-18-CYoSI7Qu.js +0 -1
- package/dist/assets/tokens-ZvFzTwDp.js +0 -1
- package/dist/assets/useHostname-CH18gHFj.js +0 -1
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
import{j as e}from"./jsx-runtime-BTJTZTIL.js";import{r as j}from"./index-Cb9e4tly.js";import{D as p,a as m}from"./DismissibleChips-D0spWwKB.js";import{F as na,a as A,b as Qe,c as Xe,d as ia}from"./TokyoUIEmojiFrowning-DTIcabpJ.js";import{F as sa}from"./index-DSVnVYmz.js";import{L as g}from"./LayoutFlex-C3k4b85b.js";import{T as L}from"./Text-CykvSLVe.js";import{L as oa}from"./Link-ppzJSCTf.js";import{H as la}from"./Heading-BLxyLk9f.js";import{d as ra}from"./styled-components.browser.esm-BgpGX317.js";import{f as ca,r as ea,w as u,e as a,u as l,a as E}from"./index-Ctq3gFTp.js";import{a as ua}from"./react.esm-BJ_b8t-Z.js";import{B as H}from"./Button-C5gzVt4K.js";import{T as S}from"./Tooltip-UjXQy5k6.js";import"./index-ChsGqxH_.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./createRequiredContext-BW3-EdwI.js";import"./Icon-CsnSNslb.js";import"./text-accent-DZDDtpIt.js";import"./classNames-BUL1Zq7e.js";import"./filterAttributesPassedByRadixUIAtRuntime-B7QTVwVw.js";import"./render-icon-BT0Aq7PA.js";import"./componentNames-NXEPEzbR.js";import"./index-DdzHuZ-Y.js";import"./defaults-Clr6nbGc.js";import"./CountryFlag-DNvfZC7z.js";import"./getCountryFlagUrl-CP-PpZV_.js";import"./useMergeRefs-D_RfOOSs.js";import"./TokyoUIClose-thK8sk63.js";import"./shared-strings-BzaHC9x5.js";import"./message-BqoANQez.js";import"./tslib.es6-BntfKcQG.js";import"./hoist-non-react-statics.cjs-C-Qo8PK8.js";import"./layout-relative.module-ChaXrVQQ.js";import"./text-centered-CznToR0o.js";import"./useHostname-Y3PlXofY.js";import"./test-utils-DCJN9LZk.js";import"./index-C7hTFOIV.js";import"./index-BPrLDK9Y.js";import"./client-C1fTPCwG.js";import"./ButtonBase-D5O3MkG2.js";import"./Spinner-T-vTyHiv.js";import"./useMergeRefs-SFH7Mw4x.js";import"./index-CC6DAVyL.js";import"./index-BrBqb5Q4.js";import"./PortalElementProvider-CgL8vj5o.js";import"./index-C6wF8VM1.js";import"./index-QwIMrChO.js";const rt={title:"components/Chips/DismissibleChips",component:m,subcomponents:{DismissibleChipsItem:p},parameters:{layout:"padded",remountable:!0},args:{"aria-label":"Selected skills",defaultValue:["vocabulary","speaking","listening","reading"],onValueChange:ca(),items:[{value:"vocabulary",label:"Vocabulary"},{value:"speaking",label:"Speaking"},{value:"listening",label:"Listening"},{value:"reading",label:"Reading"}]},decorators:[function(t,{parameters:n}){const[s,o]=j.useState(0),r=()=>o(c=>c+1);return n.remountable?e.jsxs(g,{gap:"12",justifyContent:"space-between",children:[e.jsx(t,{},s),e.jsx(H,{variant:"ghost",size:"small",onClick:r,dataset:{testid:"reset"},children:"Reset story"})]}):e.jsx(t,{})}],beforeEach:()=>()=>{ea()}},b={play:async({canvasElement:i,step:t,args:n})=>{const s=u(i),o=s.getByRole("button",{name:/Remove Vocabulary/}),r=s.getByRole("button",{name:/Remove Speaking/}),c=s.getByRole("button",{name:/Remove Listening/}),d=s.getByRole("button",{name:/Remove Reading/});await t("Render chips with default values",async()=>{a(o).toBeVisible(),a(r).toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await t("Chip should have accessible name",async()=>{a(o).toHaveAccessibleName("Remove Vocabulary")}),await t("Dismiss chip by clicking dismiss button",async()=>{await l.click(o),a(n.onValueChange).toHaveBeenCalledWith(["speaking","listening","reading"]),a(o).not.toBeVisible(),a(r).toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await t("Dismiss another chip",async()=>{await l.click(r),a(n.onValueChange).toHaveBeenCalledWith(["listening","reading"]),a(o).not.toBeVisible(),a(r).not.toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await l.click(s.getByTestId("reset")),await l.click(i)}};let D;const y={render:function({defaultValue:t,...n}){const[s,o]=j.useState(t);D=o;const r=c=>{var d;o(c),(d=n.onValueChange)==null||d.call(n,c)};return e.jsx(m,{...n,value:s,onValueChange:r})},play:async({canvasElement:i,step:t,args:n})=>{const s=u(i),o=s.getByRole("button",{name:/Remove Vocabulary/}),r=s.getByRole("button",{name:/Remove Speaking/}),c=s.getByRole("button",{name:/Remove Listening/}),d=s.getByRole("button",{name:/Remove Reading/});await t("Render chips with default values",async()=>{a(o).toBeVisible(),a(r).toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await t("Dismiss chip by clicking dismiss button",async()=>{await l.click(o),a(n.onValueChange).toHaveBeenCalledWith(["speaking","listening","reading"]),a(o).not.toBeVisible(),a(r).toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await t("Change the value externally",async()=>{ea(),await ua(async()=>{D(["listening","reading"])}),a(n.onValueChange).not.toHaveBeenCalled(),a(o).not.toBeVisible(),a(r).not.toBeVisible(),a(c).toBeVisible(),a(d).toBeVisible()}),await l.click(s.getByTestId("reset")),await l.click(i)}},h={args:{items:[{value:"vocabulary",label:"Vocabulary"},{value:"speaking",label:"Speaking",disabled:!0},{value:"listening",label:"Listening",disabled:!0},{value:"reading",label:"Reading"}]},play:async({canvasElement:i,step:t,args:n})=>{const o=u(i).getByRole("button",{name:/Remove Speaking/});await t("Disabled chip must have disabled attribute",async()=>{a(o).toBeDisabled()}),await t("Disabled chip must not be clickable",async()=>{await l.click(o),a(n.onValueChange).not.toHaveBeenCalled(),a(o).toBeVisible()})}},v={args:{"aria-label":"Selected availabilities",defaultValue:["morning","afternoon","evening"],items:[{value:"morning",label:"Morning",icon:e.jsx(A,{})},{value:"afternoon",label:"Afternoon",icon:e.jsx(Qe,{})},{value:"evening",label:"Evening",icon:e.jsx(Xe,{})}]},play:async({canvasElement:i,step:t})=>{const s=u(i).getByRole("button",{name:/Remove Morning/}),o=u(s).getByTestId("chip-icon");await t("Chip should render an icon when `icon` prop is passed",async()=>{a(o).toBeVisible()})}},w={args:{"aria-label":"Selected languages",defaultValue:["english"],items:[{value:"english",label:"English",counter:1247},{value:"spanish",label:"Spanish",counter:892},{value:"french",label:"French",counter:534},{value:"german",label:"German",counter:421},{value:"italian",label:"Italian",counter:287},{value:"portuguese",label:"Portuguese",counter:156}]},play:async({canvasElement:i,step:t})=>{const s=u(i).getByRole("button",{name:/Remove English/}),o=u(s).getByTestId("chip-counter");await t("Chip should render a counter when `counter` prop is passed",async()=>{a(o).toBeVisible(),a(o).toHaveTextContent("1247")})}},f={args:{"aria-label":"Selected countries",defaultValue:["ua","gb","it","es","au","br","eg"],items:[{value:"ua",label:"Ukraine",countryFlagCode:"ua"},{value:"gb",label:"United Kingdom",countryFlagCode:"gb"},{value:"it",label:"Italy",countryFlagCode:"it"},{value:"es",label:"Spain",countryFlagCode:"es"},{value:"au",label:"Australia",countryFlagCode:"au"},{value:"br",label:"Brazil",countryFlagCode:"br"},{value:"eg",label:"Egypt",countryFlagCode:"eg"}]},play:async({canvasElement:i,step:t})=>{const s=u(i).getByRole("button",{name:/Remove Ukraine/}),o=u(s).getByTestId("chip-country-flag");await t("Chip should render a flag when `flagCountryCode` prop is passed",async()=>{a(o).toBeVisible()})}},k={args:{"aria-label":"Fancy chips",defaultValue:["counter+icon","counter+flag","icon+flag"],items:[{value:"counter+icon",label:"Icon + Counter",icon:e.jsx(A,{}),counter:1247},{value:"counter+flag",label:"Flag + Counter",countryFlagCode:"ua",counter:1247},{value:"icon+flag",label:"Icon + Flag",icon:e.jsx(A,{}),countryFlagCode:"ua"}]},play:async({canvasElement:i})=>{const t=u(i),n=u(t.getByRole("button",{name:"Remove Icon + Flag"}));a(n.getByTestId("chip-icon")).toBeVisible(),a(n.queryByTestId("chip-country-flag")).not.toBeInTheDocument()}},x=["2025-08-15T10:00Z","2025-08-16T12:00Z","2025-08-17T14:00Z"],B={args:{orientation:"vertical","aria-label":"Selected time slots",defaultValue:x,items:x.map(i=>({value:i,label:e.jsx(sa,{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",value:i}),dataset:{testid:i}}))},decorators:[i=>e.jsx("div",{style:{width:300,margin:"0 auto"},children:e.jsx(i,{})})],play:async({canvasElement:i,step:t})=>{const n=u(i),s=n.getByTestId(x[0]),o=n.getByTestId(x[1]),r=n.getByTestId(x[2]);await t("Focus first chip",async()=>{s.focus()}),await t("Arrow down should focus second chip",async()=>{await l.keyboard("{ArrowDown}"),a(o).toHaveFocus()}),await t("Arrow down should focus third chip",async()=>{await l.keyboard("{ArrowDown}"),a(r).toHaveFocus()}),await t("Arrow down should focus first chip",async()=>{await l.keyboard("{ArrowDown}"),a(s).toHaveFocus()}),await t("Arrow up should focus third chip",async()=>{await l.keyboard("{ArrowUp}"),a(r).toHaveFocus()})}},R={render:i=>e.jsxs(g,{gap:"12",children:[e.jsx(m,{...i}),e.jsx(H,{variant:"tertiary",size:"small",onClick:()=>alert("Show all"),children:"Show all"})]})},aa=[{value:"vocabulary",label:"Vocabulary"},{value:"speaking",label:"Speaking"},{value:"listening",label:"Listening"},{value:"reading",label:"Reading"},{value:"writing",label:"Writing"},{value:"grammar",label:"Grammar"}],da=[{value:"monday",label:"Monday"},{value:"tuesday",label:"Tuesday"},{value:"wednesday",label:"Wednesday"},{value:"thursday",label:"Thursday"},{value:"friday",label:"Friday"},{value:"saturday",label:"Saturday"},{value:"sunday",label:"Sunday"}],pa=[{value:"morning",label:"Morning (6-12)",icon:e.jsx(A,{})},{value:"afternoon",label:"Afternoon (12-18)",icon:e.jsx(Qe,{})},{value:"evening",label:"Evening (18-0)",icon:e.jsx(Xe,{})},{value:"night",label:"Night (0-6)",icon:e.jsx(ia,{})}],C={render:function(t){return e.jsxs(g,{direction:"column",alignItems:"stretch",gap:"64",children:[e.jsxs(g,{direction:"column",alignItems:"stretch",gap:"16",children:[e.jsx(L,{variant:"large-semibold",children:"What skills do you want to focus on?"}),e.jsx(m,{"aria-label":"Selected skills",defaultValue:["vocabulary","speaking","listening"],items:aa})]}),e.jsxs(g,{direction:"column",alignItems:"stretch",gap:"16",children:[e.jsx(L,{variant:"large-semibold",children:"Which days work best for you?"}),e.jsx(m,{"aria-label":"Selected days",defaultValue:["monday","wednesday","friday"],items:da})]}),e.jsxs(g,{direction:"column",alignItems:"stretch",gap:"16",children:[e.jsx(L,{variant:"large-semibold",children:"What times of day work for you?"}),e.jsx(m,{"aria-label":"Selected times",defaultValue:["morning","afternoon"],items:pa})]})]})},play:async({canvasElement:i,step:t})=>{const n=u(i),s=n.getByRole("button",{name:/Remove Vocabulary/}),o=n.getByRole("button",{name:/Remove Speaking/}),r=n.getByRole("button",{name:/Remove Listening/}),c=n.getByRole("button",{name:/Remove Monday/});await t("Tab once to enter the component",async()=>{await l.tab(),a(s).toHaveFocus()}),await t("Next tab should focus second chips group",async()=>{await l.tab(),a(c).toHaveFocus()}),await t("Shift+Tab should focus first chips group again",async()=>{await l.tab({shift:!0}),a(s).toHaveFocus()}),await t("Right arrow should focus next chip in the group",async()=>{await l.keyboard("{ArrowRight}"),a(o).toHaveFocus()}),await t("Left arrow should focus previous chip in the group",async()=>{await l.keyboard("{ArrowLeft}"),a(s).toHaveFocus()}),await t("Left arrow should focus last chip if first chip is focused",async()=>{await l.keyboard("{ArrowLeft}"),a(r).toHaveFocus()}),await t("Right arrow should focus first chip if last chip is focused",async()=>{await l.keyboard("{ArrowRight}"),a(s).toHaveFocus()}),await t("Focus last chip",async()=>{await l.keyboard("{ArrowLeft}")}),await t("Tab to the next group",async()=>{await l.tab()}),await t("Shift+Tab to return to the first group, the last focused chip should be focused",async()=>{await l.tab({shift:!0}),a(r).toHaveFocus()})}},ga=ra.ul`
|
|
2
|
+
all: unset;
|
|
3
|
+
list-style: none;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: 8px;
|
|
7
|
+
|
|
8
|
+
> li {
|
|
9
|
+
display: contents;
|
|
10
|
+
}
|
|
11
|
+
`,W=[{id:1,title:"Building Your First Vocabulary List",skills:["vocabulary"]},{id:2,title:"Effective Speaking Practice Techniques",skills:["speaking"]},{id:3,title:"Active Listening Strategies",skills:["listening"]},{id:4,title:"Speed Reading Methods",skills:["reading"]},{id:5,title:"Grammar Rules Made Simple",skills:["grammar"]},{id:6,title:"Combining Speaking and Vocabulary",skills:["speaking","vocabulary"]},{id:7,title:"Reading Comprehension and Vocabulary Building",skills:["reading","vocabulary"]},{id:8,title:"Listening and Speaking Integration",skills:["listening","speaking"]}],V={render:function(t){const n=["vocabulary","speaking","listening","reading","grammar"],[s,o]=j.useState(n),r=s.length>0?W.filter(c=>s.some(d=>c.skills.includes(d))):W;return e.jsxs(g,{direction:"column",gap:"24",children:[e.jsxs(g,{direction:"column",gap:"8",children:[e.jsx(la,{tag:"h2",variant:"large",children:"Articles"}),e.jsxs(g,{gap:"16",children:[e.jsx(m,{"aria-label":"Applied skill filters","aria-controls":"results",value:s,onValueChange:o,items:aa}),e.jsx("div",{children:e.jsx(H,{variant:"ghost",onClick:()=>o(n),children:"Reset filters"})})]})]}),e.jsx("section",{id:"results","aria-label":"Filtered articles",children:e.jsx(ga,{children:r.map(c=>e.jsx("li",{children:e.jsx(oa,{href:"#",children:c.title})},c.id))})})]})},play:async({canvasElement:i,step:t})=>{const n=u(i),s=n.getByRole("list",{name:"Applied skill filters"}),o=n.getByRole("button",{name:/Remove Vocabulary/}),r=n.getByRole("button",{name:/Remove Speaking/}),c=n.getByRole("button",{name:/Remove Listening/}),d=n.getByRole("button",{name:/Remove Reading/}),ta=n.getByRole("button",{name:/Remove Grammar/});await t("Chips element should have aria attributes forwarded",async()=>{a(s).toHaveAttribute("aria-label","Applied skill filters"),a(o).toHaveAttribute("aria-controls","results"),a(r).toHaveAttribute("aria-controls","results"),a(c).toHaveAttribute("aria-controls","results"),a(d).toHaveAttribute("aria-controls","results"),a(ta).toHaveAttribute("aria-controls","results")})}},F={parameters:{a11y:{config:{rules:[{id:"color-contrast",enabled:!1}]}}},args:{"aria-label":"Selected skills",value:["vocabulary","speaking","listening","reading"],items:void 0,children:e.jsxs(e.Fragment,{children:[e.jsx(S,{content:"I want to learn vocabulary",dataset:{testid:"vocabulary-tooltip"},children:e.jsx(p,{value:"vocabulary",children:"Vocabulary"})}),e.jsx(S,{content:"I want to improve my speaking skills",dataset:{testid:"speaking-tooltip"},children:e.jsx(p,{value:"speaking",children:"Speaking"})}),e.jsx(S,{content:"I want to improve my listening skills",dataset:{testid:"listening-tooltip"},children:e.jsx(p,{value:"listening",children:"Listening"})}),e.jsx(S,{content:"I want to improve my reading skills",dataset:{testid:"reading-tooltip"},children:e.jsx(p,{value:"reading",children:"Reading"})})]})},play:async({canvasElement:i,step:t})=>{const n=u(i);await t("Tab to the first chip",async()=>{await l.tab(),await E(()=>{a(n.getByTestId("vocabulary-tooltip")).toBeVisible()})}),await t("Arrow right to focus next chip",async()=>{await l.keyboard("{ArrowRight}"),await E(()=>{a(n.getByTestId("speaking-tooltip")).toBeVisible()})}),await t("Hover third chip",async()=>{await l.hover(n.getByRole("button",{name:/Remove Listening/})),await E(()=>{a(n.getByTestId("listening-tooltip")).toBeVisible()})})}},T={tags:["!autodocs"],parameters:{remountable:!1},args:{"aria-label":"Chips states",value:["rest","hover","focus","active","disabled"],items:void 0,children:e.jsxs(e.Fragment,{children:[e.jsx(p,{value:"rest",children:"Rest"}),e.jsx(p,{value:"focus",dsInternalSimulation:"focus",children:"Focus"}),e.jsx(p,{value:"hover",dsInternalSimulation:"hover",children:"Hover"}),e.jsx(p,{value:"active",dsInternalSimulation:"active",children:"Active"}),e.jsx(p,{value:"disabled",disabled:!0,children:"Disabled"})]})}},I={parameters:{remountable:!1},decorators:[i=>e.jsx("div",{style:{maxWidth:150,margin:"0 auto"},children:e.jsx(i,{})})],args:{"aria-label":"Long label",value:["long"],items:[{value:"long",icon:na,label:"I'm way too long to be a chip label, I don't know what to do with myself"}]}};var M,U,q,O,_;b.parameters={...b.parameters,docs:{...(M=b.parameters)==null?void 0:M.docs,source:{originalSource:`{
|
|
12
|
+
play: async ({
|
|
13
|
+
canvasElement,
|
|
14
|
+
step,
|
|
15
|
+
args
|
|
16
|
+
}) => {
|
|
17
|
+
const canvas = within(canvasElement);
|
|
18
|
+
const vocabulary = canvas.getByRole('button', {
|
|
19
|
+
name: /Remove Vocabulary/
|
|
20
|
+
});
|
|
21
|
+
const speaking = canvas.getByRole('button', {
|
|
22
|
+
name: /Remove Speaking/
|
|
23
|
+
});
|
|
24
|
+
const listening = canvas.getByRole('button', {
|
|
25
|
+
name: /Remove Listening/
|
|
26
|
+
});
|
|
27
|
+
const reading = canvas.getByRole('button', {
|
|
28
|
+
name: /Remove Reading/
|
|
29
|
+
});
|
|
30
|
+
await step('Render chips with default values', async () => {
|
|
31
|
+
expect(vocabulary).toBeVisible();
|
|
32
|
+
expect(speaking).toBeVisible();
|
|
33
|
+
expect(listening).toBeVisible();
|
|
34
|
+
expect(reading).toBeVisible();
|
|
35
|
+
});
|
|
36
|
+
await step('Chip should have accessible name', async () => {
|
|
37
|
+
expect(vocabulary).toHaveAccessibleName('Remove Vocabulary');
|
|
38
|
+
});
|
|
39
|
+
await step('Dismiss chip by clicking dismiss button', async () => {
|
|
40
|
+
await userEvent.click(vocabulary);
|
|
41
|
+
expect(args.onValueChange).toHaveBeenCalledWith(['speaking', 'listening', 'reading']);
|
|
42
|
+
expect(vocabulary).not.toBeVisible();
|
|
43
|
+
expect(speaking).toBeVisible();
|
|
44
|
+
expect(listening).toBeVisible();
|
|
45
|
+
expect(reading).toBeVisible();
|
|
46
|
+
});
|
|
47
|
+
await step('Dismiss another chip', async () => {
|
|
48
|
+
await userEvent.click(speaking);
|
|
49
|
+
expect(args.onValueChange).toHaveBeenCalledWith(['listening', 'reading']);
|
|
50
|
+
expect(vocabulary).not.toBeVisible();
|
|
51
|
+
expect(speaking).not.toBeVisible();
|
|
52
|
+
expect(listening).toBeVisible();
|
|
53
|
+
expect(reading).toBeVisible();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Bring story back to the initial state
|
|
57
|
+
await userEvent.click(canvas.getByTestId('reset'));
|
|
58
|
+
// Remove focus from reset button
|
|
59
|
+
await userEvent.click(canvasElement);
|
|
60
|
+
}
|
|
61
|
+
}`,...(q=(U=b.parameters)==null?void 0:U.docs)==null?void 0:q.source},description:{story:"Basic usage with default values. The component manages its own state internally.",...(_=(O=b.parameters)==null?void 0:O.docs)==null?void 0:_.description}}};var z,P,G,N,$;y.parameters={...y.parameters,docs:{...(z=y.parameters)==null?void 0:z.docs,source:{originalSource:`{
|
|
62
|
+
render: function StoryRender({
|
|
63
|
+
defaultValue,
|
|
64
|
+
...args
|
|
65
|
+
}) {
|
|
66
|
+
const [value, setValue] = useState(defaultValue);
|
|
67
|
+
setValueFromPlayFunction = setValue;
|
|
68
|
+
const handleValueChange = (value: string[]) => {
|
|
69
|
+
setValue(value);
|
|
70
|
+
args.onValueChange?.(value);
|
|
71
|
+
};
|
|
72
|
+
return <DismissibleChips {...args} value={value} onValueChange={handleValueChange} />;
|
|
73
|
+
},
|
|
74
|
+
play: async ({
|
|
75
|
+
canvasElement,
|
|
76
|
+
step,
|
|
77
|
+
args
|
|
78
|
+
}) => {
|
|
79
|
+
const canvas = within(canvasElement);
|
|
80
|
+
const vocabulary = canvas.getByRole('button', {
|
|
81
|
+
name: /Remove Vocabulary/
|
|
82
|
+
});
|
|
83
|
+
const speaking = canvas.getByRole('button', {
|
|
84
|
+
name: /Remove Speaking/
|
|
85
|
+
});
|
|
86
|
+
const listening = canvas.getByRole('button', {
|
|
87
|
+
name: /Remove Listening/
|
|
88
|
+
});
|
|
89
|
+
const reading = canvas.getByRole('button', {
|
|
90
|
+
name: /Remove Reading/
|
|
91
|
+
});
|
|
92
|
+
await step('Render chips with default values', async () => {
|
|
93
|
+
expect(vocabulary).toBeVisible();
|
|
94
|
+
expect(speaking).toBeVisible();
|
|
95
|
+
expect(listening).toBeVisible();
|
|
96
|
+
expect(reading).toBeVisible();
|
|
97
|
+
});
|
|
98
|
+
await step('Dismiss chip by clicking dismiss button', async () => {
|
|
99
|
+
await userEvent.click(vocabulary);
|
|
100
|
+
expect(args.onValueChange).toHaveBeenCalledWith(['speaking', 'listening', 'reading']);
|
|
101
|
+
expect(vocabulary).not.toBeVisible();
|
|
102
|
+
expect(speaking).toBeVisible();
|
|
103
|
+
expect(listening).toBeVisible();
|
|
104
|
+
expect(reading).toBeVisible();
|
|
105
|
+
});
|
|
106
|
+
await step('Change the value externally', async () => {
|
|
107
|
+
resetAllMocks();
|
|
108
|
+
await act(async () => {
|
|
109
|
+
setValueFromPlayFunction(['listening', 'reading']);
|
|
110
|
+
});
|
|
111
|
+
expect(args.onValueChange).not.toHaveBeenCalled();
|
|
112
|
+
|
|
113
|
+
// Check that only vocabulary and reading chips are present
|
|
114
|
+
expect(vocabulary).not.toBeVisible();
|
|
115
|
+
expect(speaking).not.toBeVisible();
|
|
116
|
+
expect(listening).toBeVisible();
|
|
117
|
+
expect(reading).toBeVisible();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Bring story back to the initial state
|
|
121
|
+
await userEvent.click(canvas.getByTestId('reset'));
|
|
122
|
+
// Remove focus from reset button
|
|
123
|
+
await userEvent.click(canvasElement);
|
|
124
|
+
}
|
|
125
|
+
}`,...(G=(P=y.parameters)==null?void 0:P.docs)==null?void 0:G.source},description:{story:"Controlled usage where you manage the state externally.",...($=(N=y.parameters)==null?void 0:N.docs)==null?void 0:$.description}}};var Z,K,Y,J,Q;h.parameters={...h.parameters,docs:{...(Z=h.parameters)==null?void 0:Z.docs,source:{originalSource:`{
|
|
126
|
+
args: {
|
|
127
|
+
items: [{
|
|
128
|
+
value: 'vocabulary',
|
|
129
|
+
label: 'Vocabulary'
|
|
130
|
+
}, {
|
|
131
|
+
value: 'speaking',
|
|
132
|
+
label: 'Speaking',
|
|
133
|
+
disabled: true
|
|
134
|
+
}, {
|
|
135
|
+
value: 'listening',
|
|
136
|
+
label: 'Listening',
|
|
137
|
+
disabled: true
|
|
138
|
+
}, {
|
|
139
|
+
value: 'reading',
|
|
140
|
+
label: 'Reading'
|
|
141
|
+
}]
|
|
142
|
+
},
|
|
143
|
+
play: async ({
|
|
144
|
+
canvasElement,
|
|
145
|
+
step,
|
|
146
|
+
args
|
|
147
|
+
}) => {
|
|
148
|
+
const canvas = within(canvasElement);
|
|
149
|
+
const speaking = canvas.getByRole('button', {
|
|
150
|
+
name: /Remove Speaking/
|
|
151
|
+
});
|
|
152
|
+
await step('Disabled chip must have disabled attribute', async () => {
|
|
153
|
+
expect(speaking).toBeDisabled();
|
|
154
|
+
});
|
|
155
|
+
await step('Disabled chip must not be clickable', async () => {
|
|
156
|
+
await userEvent.click(speaking);
|
|
157
|
+
expect(args.onValueChange).not.toHaveBeenCalled();
|
|
158
|
+
expect(speaking).toBeVisible();
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}`,...(Y=(K=h.parameters)==null?void 0:K.docs)==null?void 0:Y.source},description:{story:"Some chips can be disabled to prevent user interaction.",...(Q=(J=h.parameters)==null?void 0:J.docs)==null?void 0:Q.description}}};var X,ee,ae,te,ne;v.parameters={...v.parameters,docs:{...(X=v.parameters)==null?void 0:X.docs,source:{originalSource:`{
|
|
162
|
+
args: {
|
|
163
|
+
'aria-label': 'Selected availabilities',
|
|
164
|
+
defaultValue: ['morning', 'afternoon', 'evening'],
|
|
165
|
+
items: [{
|
|
166
|
+
value: 'morning',
|
|
167
|
+
label: 'Morning',
|
|
168
|
+
icon: <TokyoUIAvailability1EarlyMorning />
|
|
169
|
+
}, {
|
|
170
|
+
value: 'afternoon',
|
|
171
|
+
label: 'Afternoon',
|
|
172
|
+
icon: <TokyoUIAvailability3Day />
|
|
173
|
+
}, {
|
|
174
|
+
value: 'evening',
|
|
175
|
+
label: 'Evening',
|
|
176
|
+
icon: <TokyoUIAvailability6LateEvening />
|
|
177
|
+
}]
|
|
178
|
+
},
|
|
179
|
+
play: async ({
|
|
180
|
+
canvasElement,
|
|
181
|
+
step
|
|
182
|
+
}) => {
|
|
183
|
+
const canvas = within(canvasElement);
|
|
184
|
+
const morning = canvas.getByRole('button', {
|
|
185
|
+
name: /Remove Morning/
|
|
186
|
+
});
|
|
187
|
+
const morningIcon = within(morning).getByTestId('chip-icon');
|
|
188
|
+
await step('Chip should render an icon when \`icon\` prop is passed', async () => {
|
|
189
|
+
expect(morningIcon).toBeVisible();
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}`,...(ae=(ee=v.parameters)==null?void 0:ee.docs)==null?void 0:ae.source},description:{story:`Chips can include icons to provide visual context and improve scannability.
|
|
193
|
+
Icons appear on the left side of the chip label and help users quickly identify options.`,...(ne=(te=v.parameters)==null?void 0:te.docs)==null?void 0:ne.description}}};var ie,se,oe,le,re;w.parameters={...w.parameters,docs:{...(ie=w.parameters)==null?void 0:ie.docs,source:{originalSource:`{
|
|
194
|
+
args: {
|
|
195
|
+
'aria-label': 'Selected languages',
|
|
196
|
+
defaultValue: ['english'],
|
|
197
|
+
items: [{
|
|
198
|
+
value: 'english',
|
|
199
|
+
label: 'English',
|
|
200
|
+
counter: 1247
|
|
201
|
+
}, {
|
|
202
|
+
value: 'spanish',
|
|
203
|
+
label: 'Spanish',
|
|
204
|
+
counter: 892
|
|
205
|
+
}, {
|
|
206
|
+
value: 'french',
|
|
207
|
+
label: 'French',
|
|
208
|
+
counter: 534
|
|
209
|
+
}, {
|
|
210
|
+
value: 'german',
|
|
211
|
+
label: 'German',
|
|
212
|
+
counter: 421
|
|
213
|
+
}, {
|
|
214
|
+
value: 'italian',
|
|
215
|
+
label: 'Italian',
|
|
216
|
+
counter: 287
|
|
217
|
+
}, {
|
|
218
|
+
value: 'portuguese',
|
|
219
|
+
label: 'Portuguese',
|
|
220
|
+
counter: 156
|
|
221
|
+
}]
|
|
222
|
+
},
|
|
223
|
+
play: async ({
|
|
224
|
+
canvasElement,
|
|
225
|
+
step
|
|
226
|
+
}) => {
|
|
227
|
+
const canvas = within(canvasElement);
|
|
228
|
+
const english = canvas.getByRole('button', {
|
|
229
|
+
name: /Remove English/
|
|
230
|
+
});
|
|
231
|
+
const englishCounter = within(english).getByTestId('chip-counter');
|
|
232
|
+
await step('Chip should render a counter when \`counter\` prop is passed', async () => {
|
|
233
|
+
expect(englishCounter).toBeVisible();
|
|
234
|
+
expect(englishCounter).toHaveTextContent('1247');
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}`,...(oe=(se=w.parameters)==null?void 0:se.docs)==null?void 0:oe.source},description:{story:`Chips can display numeric counters to show quantities, popularity, or other metrics.
|
|
238
|
+
Counters appear on the right side of the chip label and are useful for
|
|
239
|
+
showing search results count, available tutors, or similar quantitative data.`,...(re=(le=w.parameters)==null?void 0:le.docs)==null?void 0:re.description}}};var ce,ue,de,pe,ge;f.parameters={...f.parameters,docs:{...(ce=f.parameters)==null?void 0:ce.docs,source:{originalSource:`{
|
|
240
|
+
args: {
|
|
241
|
+
'aria-label': 'Selected countries',
|
|
242
|
+
defaultValue: ['ua', 'gb', 'it', 'es', 'au', 'br', 'eg'],
|
|
243
|
+
items: [{
|
|
244
|
+
value: 'ua',
|
|
245
|
+
label: 'Ukraine',
|
|
246
|
+
countryFlagCode: 'ua'
|
|
247
|
+
}, {
|
|
248
|
+
value: 'gb',
|
|
249
|
+
label: 'United Kingdom',
|
|
250
|
+
countryFlagCode: 'gb'
|
|
251
|
+
}, {
|
|
252
|
+
value: 'it',
|
|
253
|
+
label: 'Italy',
|
|
254
|
+
countryFlagCode: 'it'
|
|
255
|
+
}, {
|
|
256
|
+
value: 'es',
|
|
257
|
+
label: 'Spain',
|
|
258
|
+
countryFlagCode: 'es'
|
|
259
|
+
}, {
|
|
260
|
+
value: 'au',
|
|
261
|
+
label: 'Australia',
|
|
262
|
+
countryFlagCode: 'au'
|
|
263
|
+
}, {
|
|
264
|
+
value: 'br',
|
|
265
|
+
label: 'Brazil',
|
|
266
|
+
countryFlagCode: 'br'
|
|
267
|
+
}, {
|
|
268
|
+
value: 'eg',
|
|
269
|
+
label: 'Egypt',
|
|
270
|
+
countryFlagCode: 'eg'
|
|
271
|
+
}]
|
|
272
|
+
},
|
|
273
|
+
play: async ({
|
|
274
|
+
canvasElement,
|
|
275
|
+
step
|
|
276
|
+
}) => {
|
|
277
|
+
const canvas = within(canvasElement);
|
|
278
|
+
const ua = canvas.getByRole('button', {
|
|
279
|
+
name: /Remove Ukraine/
|
|
280
|
+
});
|
|
281
|
+
const uaFlag = within(ua).getByTestId('chip-country-flag');
|
|
282
|
+
await step('Chip should render a flag when \`flagCountryCode\` prop is passed', async () => {
|
|
283
|
+
expect(uaFlag).toBeVisible();
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}`,...(de=(ue=f.parameters)==null?void 0:ue.docs)==null?void 0:de.source},description:{story:`Chips can display country flags using ISO country codes.
|
|
287
|
+
Flags appear on the left side and provide instant visual recognition
|
|
288
|
+
for country or language selection interfaces.`,...(ge=(pe=f.parameters)==null?void 0:pe.docs)==null?void 0:ge.description}}};var me,be,ye,he,ve;k.parameters={...k.parameters,docs:{...(me=k.parameters)==null?void 0:me.docs,source:{originalSource:`{
|
|
289
|
+
args: {
|
|
290
|
+
'aria-label': 'Fancy chips',
|
|
291
|
+
defaultValue: ['counter+icon', 'counter+flag', 'icon+flag'],
|
|
292
|
+
items: [{
|
|
293
|
+
value: 'counter+icon',
|
|
294
|
+
label: 'Icon + Counter',
|
|
295
|
+
icon: <TokyoUIAvailability1EarlyMorning />,
|
|
296
|
+
counter: 1247
|
|
297
|
+
}, {
|
|
298
|
+
value: 'counter+flag',
|
|
299
|
+
label: 'Flag + Counter',
|
|
300
|
+
countryFlagCode: 'ua',
|
|
301
|
+
counter: 1247
|
|
302
|
+
}, {
|
|
303
|
+
value: 'icon+flag',
|
|
304
|
+
label: 'Icon + Flag',
|
|
305
|
+
icon: <TokyoUIAvailability1EarlyMorning />,
|
|
306
|
+
countryFlagCode: 'ua'
|
|
307
|
+
}]
|
|
308
|
+
},
|
|
309
|
+
play: async ({
|
|
310
|
+
canvasElement
|
|
311
|
+
}) => {
|
|
312
|
+
const canvas = within(canvasElement);
|
|
313
|
+
const chip = within(canvas.getByRole('button', {
|
|
314
|
+
name: 'Remove Icon + Flag'
|
|
315
|
+
}));
|
|
316
|
+
expect(chip.getByTestId('chip-icon')).toBeVisible();
|
|
317
|
+
expect(chip.queryByTestId('chip-country-flag')).not.toBeInTheDocument();
|
|
318
|
+
}
|
|
319
|
+
}`,...(ye=(be=k.parameters)==null?void 0:be.docs)==null?void 0:ye.source},description:{story:`Counter can be combined with icon or flag.
|
|
320
|
+
However, if you pass icon and flag together, only icon will be displayed.`,...(ve=(he=k.parameters)==null?void 0:he.docs)==null?void 0:ve.description}}};var we,fe,ke,xe,Be;B.parameters={...B.parameters,docs:{...(we=B.parameters)==null?void 0:we.docs,source:{originalSource:`{
|
|
321
|
+
args: {
|
|
322
|
+
orientation: 'vertical',
|
|
323
|
+
'aria-label': 'Selected time slots',
|
|
324
|
+
defaultValue: dates,
|
|
325
|
+
items: dates.map(date => ({
|
|
326
|
+
value: date,
|
|
327
|
+
label: <FormattedDate weekday="short" day="numeric" month="short" hour="2-digit" minute="2-digit" value={date} />,
|
|
328
|
+
dataset: {
|
|
329
|
+
testid: date
|
|
330
|
+
}
|
|
331
|
+
}))
|
|
332
|
+
},
|
|
333
|
+
decorators: [Story => <div style={{
|
|
334
|
+
width: 300,
|
|
335
|
+
margin: '0 auto'
|
|
336
|
+
}}>
|
|
337
|
+
<Story />
|
|
338
|
+
</div>],
|
|
339
|
+
play: async ({
|
|
340
|
+
canvasElement,
|
|
341
|
+
step
|
|
342
|
+
}) => {
|
|
343
|
+
const canvas = within(canvasElement);
|
|
344
|
+
const firstChip = canvas.getByTestId(dates[0]);
|
|
345
|
+
const secondChip = canvas.getByTestId(dates[1]);
|
|
346
|
+
const thirdChip = canvas.getByTestId(dates[2]);
|
|
347
|
+
await step('Focus first chip', async () => {
|
|
348
|
+
firstChip.focus();
|
|
349
|
+
});
|
|
350
|
+
await step('Arrow down should focus second chip', async () => {
|
|
351
|
+
await userEvent.keyboard('{ArrowDown}');
|
|
352
|
+
expect(secondChip).toHaveFocus();
|
|
353
|
+
});
|
|
354
|
+
await step('Arrow down should focus third chip', async () => {
|
|
355
|
+
await userEvent.keyboard('{ArrowDown}');
|
|
356
|
+
expect(thirdChip).toHaveFocus();
|
|
357
|
+
});
|
|
358
|
+
await step('Arrow down should focus first chip', async () => {
|
|
359
|
+
await userEvent.keyboard('{ArrowDown}');
|
|
360
|
+
expect(firstChip).toHaveFocus();
|
|
361
|
+
});
|
|
362
|
+
await step('Arrow up should focus third chip', async () => {
|
|
363
|
+
await userEvent.keyboard('{ArrowUp}');
|
|
364
|
+
expect(thirdChip).toHaveFocus();
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}`,...(ke=(fe=B.parameters)==null?void 0:fe.docs)==null?void 0:ke.source},description:{story:`Chips can be arranged vertically instead of horizontally.
|
|
368
|
+
This layout works well in narrow containers or when you want
|
|
369
|
+
to emphasize a vertical flow in your design.`,...(Be=(xe=B.parameters)==null?void 0:xe.docs)==null?void 0:Be.description}}};var Re,Ce,Ve,Fe,Ie;R.parameters={...R.parameters,docs:{...(Re=R.parameters)==null?void 0:Re.docs,source:{originalSource:`{
|
|
370
|
+
render: args => <LayoutFlex gap="12">
|
|
371
|
+
<DismissibleChips {...args} />
|
|
372
|
+
<Button variant="tertiary" size="small" onClick={() => alert('Show all')}>
|
|
373
|
+
Show all
|
|
374
|
+
</Button>
|
|
375
|
+
</LayoutFlex>
|
|
376
|
+
}`,...(Ve=(Ce=R.parameters)==null?void 0:Ce.docs)==null?void 0:Ve.source},description:{story:"Chips are intended only for selection. To assign secondary actions, combine chips with a button.",...(Ie=(Fe=R.parameters)==null?void 0:Fe.docs)==null?void 0:Ie.description}}};var Se,Te,Ae,Le,Ee;C.parameters={...C.parameters,docs:{...(Se=C.parameters)==null?void 0:Se.docs,source:{originalSource:`{
|
|
377
|
+
// unused \`args\` makes story source code readable 🤷♂️
|
|
378
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
379
|
+
render: function StoryRender(_args) {
|
|
380
|
+
return <LayoutFlex direction="column" alignItems="stretch" gap="64">
|
|
381
|
+
<LayoutFlex direction="column" alignItems="stretch" gap="16">
|
|
382
|
+
<Text variant="large-semibold">What skills do you want to focus on?</Text>
|
|
383
|
+
<DismissibleChips aria-label="Selected skills" defaultValue={['vocabulary', 'speaking', 'listening'] as string[]} items={skillsItems} />
|
|
384
|
+
</LayoutFlex>
|
|
385
|
+
|
|
386
|
+
<LayoutFlex direction="column" alignItems="stretch" gap="16">
|
|
387
|
+
<Text variant="large-semibold">Which days work best for you?</Text>
|
|
388
|
+
<DismissibleChips aria-label="Selected days" defaultValue={['monday', 'wednesday', 'friday'] as string[]} items={daysOfWeekItems} />
|
|
389
|
+
</LayoutFlex>
|
|
390
|
+
|
|
391
|
+
<LayoutFlex direction="column" alignItems="stretch" gap="16">
|
|
392
|
+
<Text variant="large-semibold">What times of day work for you?</Text>
|
|
393
|
+
<DismissibleChips aria-label="Selected times" defaultValue={['morning', 'afternoon'] as string[]} items={timeOfDayItems} />
|
|
394
|
+
</LayoutFlex>
|
|
395
|
+
</LayoutFlex>;
|
|
396
|
+
},
|
|
397
|
+
play: async ({
|
|
398
|
+
canvasElement,
|
|
399
|
+
step
|
|
400
|
+
}) => {
|
|
401
|
+
const canvas = within(canvasElement);
|
|
402
|
+
const skillVocabulary = canvas.getByRole('button', {
|
|
403
|
+
name: /Remove Vocabulary/
|
|
404
|
+
});
|
|
405
|
+
const skillSpeaking = canvas.getByRole('button', {
|
|
406
|
+
name: /Remove Speaking/
|
|
407
|
+
});
|
|
408
|
+
const skillListening = canvas.getByRole('button', {
|
|
409
|
+
name: /Remove Listening/
|
|
410
|
+
});
|
|
411
|
+
const dayMonday = canvas.getByRole('button', {
|
|
412
|
+
name: /Remove Monday/
|
|
413
|
+
});
|
|
414
|
+
await step('Tab once to enter the component', async () => {
|
|
415
|
+
await userEvent.tab();
|
|
416
|
+
expect(skillVocabulary).toHaveFocus();
|
|
417
|
+
});
|
|
418
|
+
await step('Next tab should focus second chips group', async () => {
|
|
419
|
+
await userEvent.tab();
|
|
420
|
+
expect(dayMonday).toHaveFocus();
|
|
421
|
+
});
|
|
422
|
+
await step('Shift+Tab should focus first chips group again', async () => {
|
|
423
|
+
await userEvent.tab({
|
|
424
|
+
shift: true
|
|
425
|
+
});
|
|
426
|
+
expect(skillVocabulary).toHaveFocus();
|
|
427
|
+
});
|
|
428
|
+
await step('Right arrow should focus next chip in the group', async () => {
|
|
429
|
+
await userEvent.keyboard('{ArrowRight}');
|
|
430
|
+
expect(skillSpeaking).toHaveFocus();
|
|
431
|
+
});
|
|
432
|
+
await step('Left arrow should focus previous chip in the group', async () => {
|
|
433
|
+
await userEvent.keyboard('{ArrowLeft}');
|
|
434
|
+
expect(skillVocabulary).toHaveFocus();
|
|
435
|
+
});
|
|
436
|
+
await step('Left arrow should focus last chip if first chip is focused', async () => {
|
|
437
|
+
await userEvent.keyboard('{ArrowLeft}');
|
|
438
|
+
expect(skillListening).toHaveFocus();
|
|
439
|
+
});
|
|
440
|
+
await step('Right arrow should focus first chip if last chip is focused', async () => {
|
|
441
|
+
await userEvent.keyboard('{ArrowRight}');
|
|
442
|
+
expect(skillVocabulary).toHaveFocus();
|
|
443
|
+
});
|
|
444
|
+
await step('Focus last chip', async () => {
|
|
445
|
+
await userEvent.keyboard('{ArrowLeft}');
|
|
446
|
+
});
|
|
447
|
+
await step('Tab to the next group', async () => {
|
|
448
|
+
await userEvent.tab();
|
|
449
|
+
});
|
|
450
|
+
await step('Shift+Tab to return to the first group, the last focused chip should be focused', async () => {
|
|
451
|
+
await userEvent.tab({
|
|
452
|
+
shift: true
|
|
453
|
+
});
|
|
454
|
+
expect(skillListening).toHaveFocus();
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
}`,...(Ae=(Te=C.parameters)==null?void 0:Te.docs)==null?void 0:Ae.source},description:{story:`The **roving tabindex pattern** is a keyboard navigation technique for grouped interactive elements. Instead of tabbing through each item individually, users:
|
|
458
|
+
|
|
459
|
+
- **Tab once** to enter the component
|
|
460
|
+
- **Use arrow keys** to navigate between items within the group
|
|
461
|
+
- **Tab again** to exit to the next component
|
|
462
|
+
|
|
463
|
+
This creates a smooth, efficient navigation experience - especially useful for components like chip groups where you want to browse options quickly without getting stuck in a "tab trap."
|
|
464
|
+
|
|
465
|
+
{@link https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex Learn more about roving tabindex pattern}`,...(Ee=(Le=C.parameters)==null?void 0:Le.docs)==null?void 0:Ee.description}}};var je,He,De,We,Me;V.parameters={...V.parameters,docs:{...(je=V.parameters)==null?void 0:je.docs,source:{originalSource:`{
|
|
466
|
+
// unused \`args\` makes story source code readable 🤷♂️
|
|
467
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
468
|
+
render: function StoryRender(_args) {
|
|
469
|
+
const defaultFilters = ['vocabulary', 'speaking', 'listening', 'reading', 'grammar'];
|
|
470
|
+
const [appliedFilters, setAppliedFilters] = useState<string[]>(defaultFilters);
|
|
471
|
+
const filteredArticles = appliedFilters.length > 0 ? articles.filter(article => appliedFilters.some(skill => article.skills.includes(skill))) : articles;
|
|
472
|
+
return <LayoutFlex direction="column" gap="24">
|
|
473
|
+
<LayoutFlex direction="column" gap="8">
|
|
474
|
+
<Heading tag="h2" variant="large">
|
|
475
|
+
Articles
|
|
476
|
+
</Heading>
|
|
477
|
+
<LayoutFlex gap="16">
|
|
478
|
+
<DismissibleChips aria-label="Applied skill filters" aria-controls="results" value={appliedFilters} onValueChange={setAppliedFilters} items={skillsItems} />
|
|
479
|
+
<div>
|
|
480
|
+
<Button variant="ghost" onClick={() => setAppliedFilters(defaultFilters)}>
|
|
481
|
+
Reset filters
|
|
482
|
+
</Button>
|
|
483
|
+
</div>
|
|
484
|
+
</LayoutFlex>
|
|
485
|
+
</LayoutFlex>
|
|
486
|
+
<section id="results" aria-label="Filtered articles">
|
|
487
|
+
<List>
|
|
488
|
+
{filteredArticles.map(article => <li key={article.id}>
|
|
489
|
+
<Link href="#">{article.title}</Link>
|
|
490
|
+
</li>)}
|
|
491
|
+
</List>
|
|
492
|
+
</section>
|
|
493
|
+
</LayoutFlex>;
|
|
494
|
+
},
|
|
495
|
+
play: async ({
|
|
496
|
+
canvasElement,
|
|
497
|
+
step
|
|
498
|
+
}) => {
|
|
499
|
+
const canvas = within(canvasElement);
|
|
500
|
+
const chipsList = canvas.getByRole('list', {
|
|
501
|
+
name: 'Applied skill filters'
|
|
502
|
+
});
|
|
503
|
+
const vocabulary = canvas.getByRole('button', {
|
|
504
|
+
name: /Remove Vocabulary/
|
|
505
|
+
});
|
|
506
|
+
const speaking = canvas.getByRole('button', {
|
|
507
|
+
name: /Remove Speaking/
|
|
508
|
+
});
|
|
509
|
+
const listening = canvas.getByRole('button', {
|
|
510
|
+
name: /Remove Listening/
|
|
511
|
+
});
|
|
512
|
+
const reading = canvas.getByRole('button', {
|
|
513
|
+
name: /Remove Reading/
|
|
514
|
+
});
|
|
515
|
+
const grammar = canvas.getByRole('button', {
|
|
516
|
+
name: /Remove Grammar/
|
|
517
|
+
});
|
|
518
|
+
await step('Chips element should have aria attributes forwarded', async () => {
|
|
519
|
+
expect(chipsList).toHaveAttribute('aria-label', 'Applied skill filters');
|
|
520
|
+
expect(vocabulary).toHaveAttribute('aria-controls', 'results');
|
|
521
|
+
expect(speaking).toHaveAttribute('aria-controls', 'results');
|
|
522
|
+
expect(listening).toHaveAttribute('aria-controls', 'results');
|
|
523
|
+
expect(reading).toHaveAttribute('aria-controls', 'results');
|
|
524
|
+
expect(grammar).toHaveAttribute('aria-controls', 'results');
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
}`,...(De=(He=V.parameters)==null?void 0:He.docs)==null?void 0:De.source},description:{story:"For accessibility, always provide an `aria-label` to describe the chip group's purpose.\nIf the chips control other elements on the page, use `aria-controls` with the target element's ID.",...(Me=(We=V.parameters)==null?void 0:We.docs)==null?void 0:Me.description}}};var Ue,qe,Oe,_e,ze;F.parameters={...F.parameters,docs:{...(Ue=F.parameters)==null?void 0:Ue.docs,source:{originalSource:`{
|
|
528
|
+
parameters: {
|
|
529
|
+
a11y: {
|
|
530
|
+
config: {
|
|
531
|
+
rules: [{
|
|
532
|
+
id: 'color-contrast',
|
|
533
|
+
enabled: false
|
|
534
|
+
}]
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
args: {
|
|
539
|
+
'aria-label': 'Selected skills',
|
|
540
|
+
value: ['vocabulary', 'speaking', 'listening', 'reading'],
|
|
541
|
+
items: undefined,
|
|
542
|
+
children: <>
|
|
543
|
+
<Tooltip content="I want to learn vocabulary" dataset={{
|
|
544
|
+
testid: 'vocabulary-tooltip'
|
|
545
|
+
}}>
|
|
546
|
+
<DismissibleChipsItem value="vocabulary">Vocabulary</DismissibleChipsItem>
|
|
547
|
+
</Tooltip>
|
|
548
|
+
<Tooltip content="I want to improve my speaking skills" dataset={{
|
|
549
|
+
testid: 'speaking-tooltip'
|
|
550
|
+
}}>
|
|
551
|
+
<DismissibleChipsItem value="speaking">Speaking</DismissibleChipsItem>
|
|
552
|
+
</Tooltip>
|
|
553
|
+
<Tooltip content="I want to improve my listening skills" dataset={{
|
|
554
|
+
testid: 'listening-tooltip'
|
|
555
|
+
}}>
|
|
556
|
+
<DismissibleChipsItem value="listening">Listening</DismissibleChipsItem>
|
|
557
|
+
</Tooltip>
|
|
558
|
+
<Tooltip content="I want to improve my reading skills" dataset={{
|
|
559
|
+
testid: 'reading-tooltip'
|
|
560
|
+
}}>
|
|
561
|
+
<DismissibleChipsItem value="reading">Reading</DismissibleChipsItem>
|
|
562
|
+
</Tooltip>
|
|
563
|
+
</>
|
|
564
|
+
},
|
|
565
|
+
play: async ({
|
|
566
|
+
canvasElement,
|
|
567
|
+
step
|
|
568
|
+
}) => {
|
|
569
|
+
const canvas = within(canvasElement);
|
|
570
|
+
await step('Tab to the first chip', async () => {
|
|
571
|
+
await userEvent.tab();
|
|
572
|
+
await waitFor(() => {
|
|
573
|
+
expect(canvas.getByTestId('vocabulary-tooltip')).toBeVisible();
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
await step('Arrow right to focus next chip', async () => {
|
|
577
|
+
await userEvent.keyboard('{ArrowRight}');
|
|
578
|
+
await waitFor(() => {
|
|
579
|
+
expect(canvas.getByTestId('speaking-tooltip')).toBeVisible();
|
|
580
|
+
});
|
|
581
|
+
});
|
|
582
|
+
await step('Hover third chip', async () => {
|
|
583
|
+
await userEvent.hover(canvas.getByRole('button', {
|
|
584
|
+
name: /Remove Listening/
|
|
585
|
+
}));
|
|
586
|
+
await waitFor(() => {
|
|
587
|
+
expect(canvas.getByTestId('listening-tooltip')).toBeVisible();
|
|
588
|
+
});
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
}`,...(Oe=(qe=F.parameters)==null?void 0:qe.docs)==null?void 0:Oe.source},description:{story:"If you need to wrap individual chips in a component like [\\<Tooltip/>](/docs/components-tooltip--docs),\nyou can use render `<SingleSelectChipsItem/>` as children.",...(ze=(_e=F.parameters)==null?void 0:_e.docs)==null?void 0:ze.description}}};var Pe,Ge,Ne;T.parameters={...T.parameters,docs:{...(Pe=T.parameters)==null?void 0:Pe.docs,source:{originalSource:`{
|
|
592
|
+
tags: ['!autodocs'],
|
|
593
|
+
parameters: {
|
|
594
|
+
remountable: false
|
|
595
|
+
},
|
|
596
|
+
args: {
|
|
597
|
+
'aria-label': 'Chips states',
|
|
598
|
+
value: ['rest', 'hover', 'focus', 'active', 'disabled'],
|
|
599
|
+
items: undefined,
|
|
600
|
+
children: <>
|
|
601
|
+
<DismissibleChipsItem value="rest">Rest</DismissibleChipsItem>
|
|
602
|
+
<DismissibleChipsItem value="focus" dsInternalSimulation="focus">
|
|
603
|
+
Focus
|
|
604
|
+
</DismissibleChipsItem>
|
|
605
|
+
<DismissibleChipsItem value="hover" dsInternalSimulation="hover">
|
|
606
|
+
Hover
|
|
607
|
+
</DismissibleChipsItem>
|
|
608
|
+
<DismissibleChipsItem value="active" dsInternalSimulation="active">
|
|
609
|
+
Active
|
|
610
|
+
</DismissibleChipsItem>
|
|
611
|
+
<DismissibleChipsItem value="disabled" disabled>
|
|
612
|
+
Disabled
|
|
613
|
+
</DismissibleChipsItem>
|
|
614
|
+
</>
|
|
615
|
+
}
|
|
616
|
+
}`,...(Ne=(Ge=T.parameters)==null?void 0:Ge.docs)==null?void 0:Ne.source}}};var $e,Ze,Ke,Ye,Je;I.parameters={...I.parameters,docs:{...($e=I.parameters)==null?void 0:$e.docs,source:{originalSource:`{
|
|
617
|
+
parameters: {
|
|
618
|
+
remountable: false
|
|
619
|
+
},
|
|
620
|
+
decorators: [Story => <div style={{
|
|
621
|
+
maxWidth: 150,
|
|
622
|
+
margin: '0 auto'
|
|
623
|
+
}}>
|
|
624
|
+
<Story />
|
|
625
|
+
</div>],
|
|
626
|
+
args: {
|
|
627
|
+
'aria-label': 'Long label',
|
|
628
|
+
value: ['long'],
|
|
629
|
+
items: [{
|
|
630
|
+
value: 'long',
|
|
631
|
+
icon: TokyoUIEmojiFrowning,
|
|
632
|
+
label: "I'm way too long to be a chip label, I don't know what to do with myself"
|
|
633
|
+
}]
|
|
634
|
+
}
|
|
635
|
+
}`,...(Ke=(Ze=I.parameters)==null?void 0:Ze.docs)==null?void 0:Ke.source},description:{story:"Please, don't use long labels for chips.",...(Je=(Ye=I.parameters)==null?void 0:Ye.docs)==null?void 0:Je.description}}};const ct=["Uncontrolled","Controlled","Disabled","WithIcons","WithCounter","WithFlags","CombiningCounterWithIconOrFlag","Vertical","CombinationWithButton","RovingTabindex","Accessibility","WithTooltips","States","LongLabel"];export{V as Accessibility,R as CombinationWithButton,k as CombiningCounterWithIconOrFlag,y as Controlled,h as Disabled,I as LongLabel,C as RovingTabindex,T as States,b as Uncontrolled,B as Vertical,w as WithCounter,f as WithFlags,v as WithIcons,F as WithTooltips,ct as __namedExportsOrder,rt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.Divider__o9--B{all:unset;display:block;border-radius:0}.Divider__o9--B.size-small__QrAgV{height:var(--f3fdd6);background:var(--c03289)}.Divider__o9--B.size-large__agPv9{height:var(--53860b);background:var(--fede46)}
|