@preply/ds-docs 11.0.0 → 11.1.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/.storybook/decorators/withIntlProvider.tsx +1 -1
- package/.storybook/main.ts +1 -0
- package/.storybook/preview.tsx +5 -0
- package/chromatic.config.json +10 -0
- package/dist/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
- package/dist/assets/00.LayoutFlex.stories-pFo1xsBe.js +85 -0
- package/dist/assets/00.applications-Cqkdr1wk.js +50 -0
- package/dist/assets/00.favicons.guide-B91Vhoka.js +21 -0
- package/dist/assets/00.token-explorer-B19aUGGg.js +340 -0
- package/dist/assets/00.using-responsive-props-B3Gr_s-n.js +18 -0
- package/dist/assets/01.semantic-tokens-ClbORo2f.js +11 -0
- package/dist/assets/01.using-shorthand-props-CZYYf4mA.js +39 -0
- package/dist/assets/10.Combinations.stories-BktZvBWq.js +128 -0
- package/dist/assets/10.fonts.guide-BGeAIZ8f.js +39 -0
- package/dist/assets/10.ssr--ERdtJ_Z.js +91 -0
- package/dist/assets/11.fonts.explorer-CApH9AGF.js +2 -0
- package/dist/assets/11.ssr.app-router-DusJ4Mbq.js +59 -0
- package/dist/assets/20.libraries-AkYtGwIz.js +22 -0
- package/dist/assets/2025-q4-ds-cleanup-njc6pOZy.js +351 -0
- package/dist/assets/30.icons.explorer-D8JDwXl5.js +72 -0
- package/dist/assets/30.storybook-C2VMIEWx.js +42 -0
- package/dist/assets/40.illustrations.explorer-Dexx0-Yq.js +21 -0
- package/dist/assets/60.components-EsXml7S8.js +22 -0
- package/dist/assets/90.advanced-CGMa0hIb.js +32 -0
- package/dist/assets/Accordion-BGpSQDcU.js +25 -0
- package/dist/assets/Accordion-bbEcwV1l.css +1 -0
- package/dist/assets/{Accordion.stories-CLwah67K.js → Accordion.stories-DZqm_pl0.js} +7 -7
- package/dist/assets/{Accordion.tests.stories-CFH7p1Jq.js → Accordion.tests.stories-CETE9vG5.js} +9 -9
- package/dist/assets/AlertBanner.primitives.stories-C1Rk8KVQ.js +14 -0
- package/dist/assets/AlertBanner.stories-CJnU52Gn.js +112 -0
- package/dist/assets/AlertBannerAction-BSNrnhbi.js +216 -0
- package/dist/assets/AlertBannerAction-UAyHHOqS.css +1 -0
- package/dist/assets/AlertDialog-Cr1_lUp6.css +1 -0
- package/dist/assets/AlertDialog-D1kj7VoM.js +6 -0
- package/dist/assets/{AlertDialog.stories-BKT7nitb.js → AlertDialog.stories-CjXjghMW.js} +11 -7
- package/dist/assets/Avatar-CZrWRM_5.css +1 -0
- package/dist/assets/Avatar-LEDcSb51.js +6 -0
- package/dist/assets/Avatar.stories-B6YvTFd5.js +42 -0
- package/dist/assets/{AvatarWithStatus-azmN9QBq.css → AvatarWithStatus-DNgVIYbt.css} +1 -1
- package/dist/assets/AvatarWithStatus-Dacm-jO_.js +6 -0
- package/dist/assets/AvatarWithStatus.stories-D9tFABve.js +36 -0
- package/dist/assets/Badge-CXba4Jz8.js +10 -0
- package/dist/assets/{Badge-BVnE8GHY.css → Badge-ChvYkJOj.css} +1 -1
- package/dist/assets/Badge.stories-6McX8lAA.js +90 -0
- package/dist/assets/Box-CJ3Eco8o.js +3 -0
- package/dist/assets/Box-CoMoVRxI.css +1 -0
- package/dist/assets/Box.stories-D7RLIL2b.js +44 -0
- package/dist/assets/BubbleCounter-DwJsPISN.js +5 -0
- package/dist/assets/BubbleCounter.stories-CaNBUXy9.js +246 -0
- package/dist/assets/Button-DnVrHohm.js +18 -0
- package/dist/assets/Button-DsoMn9D3.css +1 -0
- package/dist/assets/Button.stories-DB4FO1yP.js +271 -0
- package/dist/assets/ButtonBase-DMbDbkQ4.css +1 -0
- package/dist/assets/ButtonBase-DV0YtoS6.js +8 -0
- package/dist/assets/CalloutBanner-ChlWZtBk.css +1 -0
- package/dist/assets/CalloutBanner.stories-DMr5laA1.js +212 -0
- package/dist/assets/CalloutBannerText-Lb5ksCJz.css +1 -0
- package/dist/assets/CalloutBannerText-pe-2SkHW.js +75 -0
- package/dist/assets/Checkbox-B_qY1TUo.css +1 -0
- package/dist/assets/Checkbox-DEB6VLYS.js +10 -0
- package/dist/assets/{Checkbox.stories-ClI-ZBnj.js → Checkbox.stories-C_Oku35V.js} +6 -6
- package/dist/assets/Checkbox.tests.stories-BPHBBZi3.js +68 -0
- package/dist/assets/Chips-DK10vypy.css +1 -0
- package/dist/assets/Chips.stories-_LC622UQ.js +148 -0
- package/dist/assets/Color-6BZIO3FS-Cli2qKZW.js +1 -0
- package/dist/assets/{ComposingDialogs.stories-DwVqal9K.js → ComposingDialogs.stories-BSCyTSJL.js} +3 -3
- package/dist/assets/ComposingPopovers.stories-cp3PAdHA.js +49 -0
- package/dist/assets/CountryFlag-DMEPQuIc.js +49 -0
- package/dist/assets/{CountryFlag.stories-hf40f81N.js → CountryFlag.stories-CCfcgg_Y.js} +6 -6
- package/dist/assets/CountryFlag.test.stories-BaGoS-6l.js +27 -0
- package/dist/assets/Dialog-DCPUOQU4.js +13 -0
- package/dist/assets/Dialog.primitives-BPvLcj0z.css +1 -0
- package/dist/assets/Dialog.primitives.stories-Vxeh7YZt.js +237 -0
- package/dist/assets/Dialog.stories-87tBh-R6.js +267 -0
- package/dist/assets/Dialog.test.stories-B4pw7sJ3.js +146 -0
- package/dist/assets/DialogActions-BuK-fnKs.js +101 -0
- package/dist/assets/DialogCloseButton-Bh5fJ-N5.css +1 -0
- package/dist/assets/DialogCloseButton-dPdpMifg.js +149 -0
- package/dist/assets/DismissibleChips-Dv66pNAL.js +1 -0
- package/dist/assets/DismissibleChips.stories-nMCs_O4R.js +625 -0
- package/dist/assets/{Divider-DECo0bYW.css → Divider-BVw27QR_.css} +1 -1
- package/dist/assets/Divider-BsdKe9ia.js +1 -0
- package/dist/assets/Divider.stories-DMxdOUMT.js +9 -0
- package/dist/assets/DocsRenderer-LL677BLK-CToDaeBi.js +2 -0
- package/dist/assets/DropdownMenu-BUteP_4e.js +1258 -0
- package/dist/assets/DropdownMenu-Dp5QD_2I.css +1 -0
- package/dist/assets/DropdownMenu.stories-CPFPB_iw.js +1613 -0
- package/dist/assets/FieldButton-B7nd3jTk.css +1 -0
- package/dist/assets/FieldButton-lc__KGvz.js +1 -0
- package/dist/assets/FieldButton.stories-BweftrEg.js +1 -0
- package/dist/assets/FormControl-DX3yRMc2.css +1 -0
- package/dist/assets/FormControl-cSvM3XwI.js +7 -0
- package/dist/assets/FormControl.stories-guYQ8AuE.js +42 -0
- package/dist/assets/Heading-BMcfRMjT.css +1 -0
- package/dist/assets/Heading-CEZfMm-F.js +1 -0
- package/dist/assets/Heading.stories-CzERNny6.js +67 -0
- package/dist/assets/Icon-CfZyHxyH.js +8 -0
- package/dist/assets/{Icon-CyGLQNx7.css → Icon-D-_6_kTJ.css} +1 -1
- package/dist/assets/Icon-RSC-BpFBpboR.js +6 -0
- package/dist/assets/Icon.stories-D27wol8h.js +45 -0
- package/dist/assets/IconButton-CUt4Aks_.js +8 -0
- package/dist/assets/IconButton-D-myVwPD.css +1 -0
- package/dist/assets/IconTile.stories-jvAqK25q.js +88 -0
- package/dist/assets/Input-DXnvG-Wl.js +95 -0
- package/dist/assets/InputContainer-CKX9LGmw.js +2 -0
- package/dist/assets/InputContainer-dj6obgaH.css +1 -0
- package/dist/assets/IntegrationWithReactHookForm.stories-CW7Lqen8.js +467 -0
- package/dist/assets/{IntlFormattedDateTime.stories-BCwbTrw1.js → IntlFormattedAggregatedDateTime-CsA6eNMt.js} +112 -94
- package/dist/assets/{IntlFormattedCurrency.stories-j1D4xFto.js → IntlFormattedCurrency-CAb0INYF.js} +149 -125
- package/dist/assets/IntlFormattedCurrency.stories-CDdFf0Ih.js +1 -0
- package/dist/assets/IntlFormattedDateTime.stories-UGK_UBla.js +2 -0
- package/dist/assets/{constants-DDJ2G0OO.js → IntlFormattedTime-CFUwDROI.js} +853 -761
- package/dist/assets/LayoutFlex-Bc-UxKN0.css +1 -0
- package/dist/assets/LayoutFlex-DdWp4cl3.js +1 -0
- package/dist/assets/LayoutFlexItem-D6I-QYqv.css +1 -0
- package/dist/assets/LayoutFlexItem-DE78Bh3c.js +1 -0
- package/dist/assets/LayoutGrid-CIFhWu8r.css +1 -0
- package/dist/assets/LayoutGrid-qM5_bxVY.js +1 -0
- package/dist/assets/LayoutGrid.stories-DnBXjNoY.js +88 -0
- package/dist/assets/LayoutGridItem-BDeI61oE.css +1 -0
- package/dist/assets/LayoutGridItem-DXWb3V6X.js +1 -0
- package/dist/assets/Link-DZ7eineG.css +1 -0
- package/dist/assets/Link-J-HUcV5T.js +5 -0
- package/dist/assets/{Link.stories-6gHkl5xC.js → Link.stories-Bi7F_Vkw.js} +7 -7
- package/dist/assets/Loader-D4VDQ8pj.css +1 -0
- package/dist/assets/Loader-D9Ihhamv.js +1 -0
- package/dist/assets/Loader.stories-CA2r7ptV.js +37 -0
- package/dist/assets/MultiSelectChips-DLTwAQne.js +2 -0
- package/dist/assets/MultiSelectChips.stories-BXvs5PAK.js +608 -0
- package/dist/assets/NativeSelectField.stories-D0re4a3o.js +295 -0
- package/dist/assets/NumberField-BAofx_Ni.js +6 -0
- package/dist/assets/NumberField.stories-BhuTuTmY.js +254 -0
- package/dist/assets/ObserveIntersection-DPsyMqP-.js +8 -0
- package/dist/assets/ObserveIntersection.stories-C5r2quD1.js +27 -0
- package/dist/assets/OnboardingTooltip-By90tTWJ.css +1 -0
- package/dist/assets/OnboardingTooltip-D8NhfEzc.js +24 -0
- package/dist/assets/OnboardingTooltip.stories-D2Y_je7z.js +107 -0
- package/dist/assets/OnboardingTooltip.tests.stories-Chu-efpG.js +79 -0
- package/dist/assets/OnboardingTour-90hHg-Pp.css +1 -0
- package/dist/assets/OnboardingTour-DGI3bTQy.js +4 -0
- package/dist/assets/OnboardingTour.stories-Cb1WP0Hu.js +50 -0
- package/dist/assets/{OnboardingTour.tests.stories-CHMykq2a.js → OnboardingTour.tests.stories-B05mBGhB.js} +6 -6
- package/dist/assets/PasswordField-ByApWpbK.js +6 -0
- package/dist/assets/PasswordField.stories-DMtrOVsn.js +229 -0
- package/dist/assets/PreplyLogo-D-slBTep.js +3 -0
- package/dist/assets/PreplyLogo.stories-uJXJ3dh_.js +93 -0
- package/dist/assets/ProgressBar-Tb0nv9N6.js +4 -0
- package/dist/assets/ProgressBar-ZiF8cU84.css +1 -0
- package/dist/assets/ProgressBar.stories-Bj5ouQO7.js +43 -0
- package/dist/assets/ProgressSteps-CKNbDWn0.js +4 -0
- package/dist/assets/ProgressSteps-LZubx2ie.css +1 -0
- package/dist/assets/ProgressSteps.stories-Dl5cvdWw.js +31 -0
- package/dist/assets/PromoDialog-Daxo9KGU.js +3 -0
- package/dist/assets/RangeSlider-BshsrfHH.js +4 -0
- package/dist/assets/RangeSlider.stories-BnxUgnUq.js +117 -0
- package/dist/assets/Rating-7Lokv5qX.js +2 -0
- package/dist/assets/Rating.stories-C6vLq72a.js +115 -0
- package/dist/assets/RatingInput-B9JvC6a9.js +30 -0
- package/dist/assets/RatingInput.stories-CZaxR49A.js +421 -0
- package/dist/assets/SelectField-_eSdIkCW.js +19 -0
- package/dist/assets/SelectField-jvir0s5w.css +1 -0
- package/dist/assets/SelectField.stories-CeBOPAQf.js +517 -0
- package/dist/assets/ShowOnIntersection-sdAtBMhN.js +11 -0
- package/dist/assets/ShowOnIntersection.stories-Lmr1KetU.js +17 -0
- package/dist/assets/SingleSelectChips-BuIHP3oW.js +2 -0
- package/dist/assets/{SingleSelectChips.stories-CTAvW0Y9.js → SingleSelectChips.stories-z43WCX3L.js} +22 -22
- package/dist/assets/Slider-BJ8Eqvyw.css +1 -0
- package/dist/assets/Slider-BjEfhJ_o.js +2 -0
- package/dist/assets/Slider.stories-OZrQotEf.js +69 -0
- package/dist/assets/Spinner-9IaQuPm2.js +1 -0
- package/dist/assets/Spinner-CIgevzeA.css +1 -0
- package/dist/assets/Stars-DRmASRCW.css +1 -0
- package/dist/assets/Stars-DuQupRe3.js +1 -0
- package/dist/assets/Steps-BAxCCGnQ.css +1 -0
- package/dist/assets/Steps-Bf2x77zr.js +26 -0
- package/dist/assets/{Steps.stories-DqOo6fKy.js → Steps.stories-DFPBr2Yl.js} +13 -11
- package/dist/assets/Switch-ClfB15Th.css +1 -0
- package/dist/assets/Switch-DPX8X1b7.js +12 -0
- package/dist/assets/Switch.stories-EIYyG0Zt.js +151 -0
- package/dist/assets/Text-BTI4NIf0.css +1 -0
- package/dist/assets/Text-bm2vnOS2.js +1 -0
- package/dist/assets/Text.stories-CmIl_fwM.js +67 -0
- package/dist/assets/TextField-zS8J7vJP.js +6 -0
- package/dist/assets/TextField.stories-BUVrLpus.js +254 -0
- package/dist/assets/{TextHighlighted-CzbRMqIZ.css → TextHighlighted-C53ygX_A.css} +1 -1
- package/dist/assets/TextHighlighted-DF3lEelY.js +1 -0
- package/dist/assets/TextHighlighted.stories-CqDVxX79.js +32 -0
- package/dist/assets/{TextInline-CNIzsRbS.css → TextInline-BDaxjuE1.css} +1 -1
- package/dist/assets/TextInline-CHB850A5.js +1 -0
- package/dist/assets/TextInline.stories-CN5P8M-t.js +50 -0
- package/dist/assets/TextareaField-D-D245Qp.js +6 -0
- package/dist/assets/TextareaField.stories-zf-ovHbR.js +272 -0
- package/dist/assets/Toast-BwHq_wh7.js +3 -0
- package/dist/assets/Toast-CeQJ1lVu.css +1 -0
- package/dist/assets/Toast.stories-ojcdW7OV.js +183 -0
- package/dist/assets/TokyoUIAttach-CJ32NKTG.js +1 -0
- package/dist/assets/TokyoUIAvailability7LateNight-DffduFvP.js +1 -0
- package/dist/assets/TokyoUICheck-UkrDdu35.js +1 -0
- package/dist/assets/TokyoUICheckmark-6GaMBtS8.js +1 -0
- package/dist/assets/TokyoUIChevronDown-CS0lTt7n.js +1 -0
- package/dist/assets/TokyoUIChevronRight-BtUABx06.js +1 -0
- package/dist/assets/TokyoUIClose-cJyNy-kq.js +1 -0
- package/dist/assets/TokyoUIEmojiFrowning-DEhH_o6k.js +1 -0
- package/dist/assets/TokyoUIErrorWarning-CE_6hT_0.js +1 -0
- package/dist/assets/TokyoUIExerciseClosedGapsJumble-CmLQbqx9.js +1 -0
- package/dist/assets/TokyoUIEye--Ky-ic4j.js +1 -0
- package/dist/assets/TokyoUIFav-D3EBPocg.js +1 -0
- package/dist/assets/TokyoUIInfo-B-CriP10.js +1 -0
- package/dist/assets/TokyoUILanguage-B0kNm-zw.js +1 -0
- package/dist/assets/TokyoUILibraryExplore-BZ10fOAZ.js +1 -0
- package/dist/assets/TokyoUILock-Chkf2ogE.js +1 -0
- package/dist/assets/TokyoUIMessages-z4JOaU4E.js +1 -0
- package/dist/assets/TokyoUIMinus-DKK-A5EK.js +1 -0
- package/dist/assets/TokyoUINotebook-DO8t9gWt.js +1 -0
- package/dist/assets/TokyoUINotesWithPad-DM2X7aVA.js +1 -0
- package/dist/assets/TokyoUIPhone-Bw5Vf4vA.js +1 -0
- package/dist/assets/TokyoUISettings-D5pBmcYk.js +1 -0
- package/dist/assets/TokyoUISparkle-C3Cy7wMI.js +1 -0
- package/dist/assets/TokyoUIStarFilled-CYq7gSvg.js +1 -0
- package/dist/assets/TokyoUITag-Cg8pSiwB.js +1 -0
- package/dist/assets/TokyoUIUpload-B1wN3uN1.js +1 -0
- package/dist/assets/TokyoUIUser-BxbKTbW_.js +1 -0
- package/dist/assets/{Tooltip-Cm9bKrYj.css → Tooltip-C5LpnpaC.css} +1 -1
- package/dist/assets/Tooltip-IQdlsINh.js +9 -0
- package/dist/assets/Tooltip.stories-9Tn4uyBh.js +93 -0
- package/dist/assets/Tooltip.tests.stories-Cr4rBDLb.js +65 -0
- package/dist/assets/VisuallyHidden-CN0xhFLZ.js +1 -0
- package/dist/assets/VisuallyHidden-SLhaLKxx.css +1 -0
- package/dist/assets/WithTooltip-65CFNBJE-B-ngulbF.js +9 -0
- package/dist/assets/align-self-B8vQODdk.css +1 -0
- package/dist/assets/align-self-DLZqaACP.js +1 -0
- package/dist/assets/ar-CmAh1fW1.js +1 -0
- package/dist/assets/axe-C7CO230w.js +20 -0
- package/dist/assets/breakpoints-DVI9b-sj.js +31 -0
- package/dist/assets/breakpoints-DhB77ppz.js +32 -0
- package/dist/assets/breakpoints-JehRf-HQ.js +30 -0
- package/dist/assets/{changelog-BoskfpJ8.js → changelog-BlpT3PVh.js} +18 -3
- package/dist/assets/chunk-242VQQM5-BHHKbgg-.js +1 -0
- package/dist/assets/chunk-3LY4VQVK-Di70sXb8.js +6 -0
- package/dist/assets/chunk-BneVvdWh.js +1 -0
- package/dist/assets/chunk-YKABRMAI-tsMt0pG-.js +18 -0
- package/dist/assets/client-o3HipSzo.js +1 -0
- package/dist/assets/components-B2mdrQXl.js +1 -0
- package/dist/assets/components-BJI6UJJQ.js +250 -0
- package/dist/assets/constants-BKSB-IRi.js +37 -0
- package/dist/assets/createRequiredContext-CgxIAZIj.js +241 -0
- package/dist/assets/createRequiredContext-rvejDfGq.css +1 -0
- package/dist/assets/cs-o6LA2LFi.js +1 -0
- package/dist/assets/de-CGU9rRAn.js +1 -0
- package/dist/assets/dist-Cc1j9Pjk.js +1 -0
- package/dist/assets/dist-CrJFSSHJ.css +1 -0
- package/dist/assets/dist-DtfJeYQK.js +32 -0
- package/dist/assets/dist-XW9XCd1i.js +122 -0
- package/dist/assets/emotion-unitless.esm-NifOLKB5.js +1 -0
- package/dist/assets/en-CAnKwElg.js +1 -0
- package/dist/assets/es-MH1DT2kV.js +1 -0
- package/dist/assets/esm-CS074ZRu.js +12 -0
- package/dist/assets/filterAttributesPassedByRadixUIAtRuntime-CGiuUnR2.js +1 -0
- package/dist/assets/fonts-explorer.stories-I8-ZOqnR.js +100 -0
- package/dist/assets/formatter-EIJCOSYU-CrRlJc_C.js +1 -0
- package/dist/assets/fr-CgnvB_BI.js +1 -0
- package/dist/assets/getTokenVar-BdWui4zI.js +11 -0
- package/dist/assets/gradientBorders-CStgfkEm.js +45 -0
- package/dist/assets/hk-CaQALTDd.js +1 -0
- package/dist/assets/hover-BZswJq9X.js +13 -0
- package/dist/assets/hover-DkvE2XjW.js +14 -0
- package/dist/assets/hover-xopBYDG-.js +16 -0
- package/dist/assets/id-Bp-BGWpK.js +1 -0
- package/dist/assets/iframe-CYkk6Y66.css +1 -0
- package/dist/assets/iframe-f34VuKy-.js +1194 -0
- package/dist/assets/intro-OCMNWtPd.js +31 -0
- package/dist/assets/it-BMSKWkCc.js +1 -0
- package/dist/assets/ja-wtIn1pnV.js +1 -0
- package/dist/assets/jsx-runtime-C2wGStra.js +1 -0
- package/dist/assets/ko-DvhW2pVO.js +1 -0
- package/dist/assets/layout-relative-BDjBJtei.js +1 -0
- package/dist/assets/layout-relative-D3aa9xon.css +1 -0
- package/dist/assets/layout-relative.module-BEsoJgyf.js +1 -0
- package/dist/assets/lib-CXCPi5ID.js +26 -0
- package/dist/assets/matchers-5TDFFDYO-CdU16gNa.js +28 -0
- package/dist/assets/mcp-wYzkbrqT.js +32 -0
- package/dist/assets/mdx-react-shim-Bi0BC7jy.js +1 -0
- package/dist/assets/migrating-from-less-DfjDPQaC.js +36 -0
- package/dist/assets/nl-BW9s7SpL.js +1 -0
- package/dist/assets/pl-B0BEw5na.js +1 -0
- package/dist/assets/playground.stories-oI9ZDlnt.js +6 -0
- package/dist/assets/preload-helper-nVtPd9zc.js +1 -0
- package/dist/assets/pt-qEWGT9cy.js +1 -0
- package/dist/assets/react-18-ziWOvQTm.js +1 -0
- package/dist/assets/react-B8jdHdWa.js +1 -0
- package/dist/assets/react-C6B6irz5.js +1 -0
- package/dist/assets/react-C7IZe2D1.js +1 -0
- package/dist/assets/react-dom-CLuuWI32.js +8 -0
- package/dist/assets/render-icon-Dzkg3KVE.js +1 -0
- package/dist/assets/ro-DLH7plv7.js +1 -0
- package/dist/assets/ru-BmiT91mV.js +1 -0
- package/dist/assets/shared-strings-DrlpFtg5.js +1 -0
- package/dist/assets/shim-Do3tPrxV.js +1 -0
- package/dist/assets/storybook-utils-CXrHOWy7.js +1 -0
- package/dist/assets/styled-components.browser.esm-BqKZXl6d.js +2 -0
- package/dist/assets/styled-components.browser.esm-ByE8r-7j.js +2 -0
- package/dist/assets/sv-CW9z0vaU.js +1 -0
- package/dist/assets/syntaxhighlighter-ED5Y7EFY-BYBQ9ptv.js +6 -0
- package/dist/assets/text-accent-CfNKCcRq.js +1 -0
- package/dist/assets/text-centered-DCp9pLpt.css +1 -0
- package/dist/assets/text-centered-ozyo-Yf9.js +1 -0
- package/dist/assets/th-isRlGLm5.js +1 -0
- package/dist/assets/theming-BrHPXhKw.js +1 -0
- package/dist/assets/theming-C7TmxyGw.js +39 -0
- package/dist/assets/tokens-C1gyoh8D.js +16 -0
- package/dist/assets/tokens-C7Hn5QJc.js +15 -0
- package/dist/assets/tokens-CubiKgE5.js +15 -0
- package/dist/assets/tr-CvfBJD7Q.js +1 -0
- package/dist/assets/tw-DpiBe17Q.js +1 -0
- package/dist/assets/ua-CPYW3Hlj.js +1 -0
- package/dist/assets/useBreakpointMatch-B8CIBjwc.js +1 -0
- package/dist/assets/useControllableState-BBsZ9A2n.js +1 -0
- package/dist/assets/useMergeRefs-D0D5dYrn.js +1 -0
- package/dist/assets/usePortalElement-uqsVx9U8.js +19 -0
- package/dist/assets/useStableCallback-DnHVYLVo.js +1 -0
- package/dist/assets/welcome-t0_iHw7X.js +23 -0
- package/dist/assets/zeroheight-DxMICzug.js +75 -0
- package/dist/assets/zh-C43VYh_6.js +1 -0
- package/dist/iframe.html +69 -40
- package/dist/index.html +8 -3
- package/dist/index.json +1 -1
- package/dist/preview-stats.json +21532 -16519
- package/dist/project.json +1 -1
- package/dist/sb-addons/a11y-1/manager-bundle.js +55 -3
- package/dist/sb-addons/chromatic-com-storybook-5/manager-bundle.js +352 -0
- package/dist/sb-addons/chromatic-com-storybook-5/manager-bundle.js.LEGAL.txt +40 -0
- package/dist/sb-addons/docs-4/manager-bundle.js +1 -1
- package/dist/sb-addons/links-2/manager-bundle.js +1 -1
- package/dist/sb-addons/storybook-6/manager-bundle.js +3 -0
- package/dist/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +66 -66
- package/dist/sb-addons/vitest-3/manager-bundle.js +1 -1
- package/dist/sb-manager/globals-runtime.js +9758 -7407
- package/dist/sb-manager/runtime.js +3034 -2325
- package/dist/vite-inject-mocker-entry.js +2 -18
- package/package.json +19 -20
- package/pages/30.guides/70.assets/constants/icon-imports.ts +8 -0
- package/dist/assets/00-BMs4V7pn.css +0 -1
- package/dist/assets/00-CGymiNpA.css +0 -1
- package/dist/assets/00.LayoutFlex.stories-lllooXjc.js +0 -85
- package/dist/assets/00.applications-ApRgtzMF.js +0 -50
- package/dist/assets/00.favicons.guide-4ivqvu_K.js +0 -21
- package/dist/assets/00.token-explorer-DCBSOdHJ.js +0 -340
- package/dist/assets/00.using-responsive-props-BhAkr9Gn.js +0 -18
- package/dist/assets/01-2pw2iC19.css +0 -1
- package/dist/assets/01.semantic-tokens-BBQKcQ5o.js +0 -11
- package/dist/assets/01.using-shorthand-props-SxccG8oR.js +0 -39
- package/dist/assets/10.Combinations.stories-D3XySbv3.js +0 -128
- package/dist/assets/10.fonts.guide-p4vZ2TE8.js +0 -39
- package/dist/assets/10.ssr-BLS5aGYV.js +0 -91
- package/dist/assets/11.fonts.explorer-BMm1rcuE.js +0 -2
- package/dist/assets/11.ssr.app-router-B_LdKMuw.js +0 -59
- package/dist/assets/20.libraries-Uutk1t-k.js +0 -21
- package/dist/assets/2025-q4-ds-cleanup-D2AonoQX.js +0 -341
- package/dist/assets/30.icons.explorer-D63Br7GU.js +0 -72
- package/dist/assets/30.storybook-B_OtmSNE.js +0 -42
- package/dist/assets/40.illustrations.explorer-Pi9iaQwM.js +0 -21
- package/dist/assets/90.advanced-tEkbHxcl.js +0 -32
- package/dist/assets/Accordion-2avWtqXz.js +0 -23
- package/dist/assets/Accordion-DBIXJNVb.css +0 -1
- package/dist/assets/AlertBanner.primitives.stories-DpA-of6O.js +0 -14
- package/dist/assets/AlertBanner.stories-B7xxyCn2.js +0 -124
- package/dist/assets/AlertBannerAction-D14MnnIA.js +0 -128
- package/dist/assets/AlertBannerAction-Dgo9FikS.css +0 -1
- package/dist/assets/AlertDialog-B5rRXSxb.js +0 -4
- package/dist/assets/AlertDialog-DjB9AufV.css +0 -1
- package/dist/assets/Avatar-B6s9WtES.css +0 -1
- package/dist/assets/Avatar-Die_4zu0.js +0 -6
- package/dist/assets/Avatar.stories-DJHK0lEC.js +0 -42
- package/dist/assets/AvatarWithStatus.stories-E9QQr3Dr.js +0 -41
- package/dist/assets/Badge-BSDHZ3bI.js +0 -10
- package/dist/assets/Badge.stories-6FOVA96I.js +0 -90
- package/dist/assets/Box-CfDLuPKr.css +0 -1
- package/dist/assets/Box.stories-DAVs5Qmd.js +0 -44
- package/dist/assets/BubbleCounter.stories-DHv_hrNV.js +0 -242
- package/dist/assets/Button-C0Um_QuO.js +0 -18
- package/dist/assets/Button-U6ON1pQl.css +0 -1
- package/dist/assets/Button.stories-CTSwUwYJ.js +0 -270
- package/dist/assets/ButtonBase-Bv11I0L0.css +0 -1
- package/dist/assets/ButtonBase-DGinnt2u.js +0 -1
- package/dist/assets/ButtonBase-HkSfLFbE.js +0 -8
- package/dist/assets/ButtonBase-vTD2whCv.css +0 -1
- package/dist/assets/CalloutBanner-Cw440Euq.css +0 -1
- package/dist/assets/CalloutBanner.stories-C62ApsKt.js +0 -286
- package/dist/assets/Checkbox-CrI8PiHH.css +0 -1
- package/dist/assets/Checkbox-U8uzIr-e.js +0 -10
- package/dist/assets/Checkbox.tests.stories-CrLxNZ2d.js +0 -64
- package/dist/assets/Chips-BXIX_-Jx.css +0 -1
- package/dist/assets/Chips.stories-BMxD1fH1.js +0 -146
- package/dist/assets/Color-ASIRERSW-BsR8auWQ.js +0 -1
- package/dist/assets/ComposingPopovers.stories-DtmTbsU_.js +0 -49
- package/dist/assets/CountryFlag-D40CtNEa.js +0 -49
- package/dist/assets/CountryFlag.test.stories-Bde0Okud.js +0 -27
- package/dist/assets/Dialog-CJQmu6iz.js +0 -13
- package/dist/assets/Dialog.primitives-DLgD-yog.css +0 -1
- package/dist/assets/Dialog.primitives.stories-BRGfipHO.js +0 -213
- package/dist/assets/Dialog.stories-D4tyIGD0.js +0 -329
- package/dist/assets/Dialog.test.stories-xCqInD69.js +0 -146
- package/dist/assets/DialogActions-GLMqsJfB.js +0 -101
- package/dist/assets/DialogCloseButton-D5YliaRd.js +0 -149
- package/dist/assets/DialogCloseButton-DXcPNZE4.css +0 -1
- package/dist/assets/DismissibleChips-YCE2ttV-.js +0 -1
- package/dist/assets/DismissibleChips.stories-Cx3sJ6UG.js +0 -625
- package/dist/assets/Divider-j3vJV734.js +0 -1
- package/dist/assets/Divider.stories-CK-PipZt.js +0 -9
- package/dist/assets/DocsRenderer-GHJI37HO-WuLZQEsz.js +0 -2
- package/dist/assets/DropdownMenu-B9HIHqSr.css +0 -1
- package/dist/assets/DropdownMenu-CgNvtJ2F.js +0 -1232
- package/dist/assets/DropdownMenu.stories-DpmKDI1Q.js +0 -1603
- package/dist/assets/FieldButton-CDW5AvHN.css +0 -1
- package/dist/assets/FieldButton-DpHF49o_.js +0 -1
- package/dist/assets/FieldButton.stories-C7v9WweE.js +0 -1
- package/dist/assets/FormControl-BBqp99uJ.css +0 -1
- package/dist/assets/FormControl-Zqf1cIwP.js +0 -7
- package/dist/assets/FormControl.stories-D4xKaMaA.js +0 -42
- package/dist/assets/Heading-BTHqyLcz.css +0 -1
- package/dist/assets/Heading-Cj8Si45g.js +0 -1
- package/dist/assets/Heading.stories-BG_kLNJz.js +0 -67
- package/dist/assets/Icon-CC0yjdx9.js +0 -8
- package/dist/assets/Icon-RSC-Cl0H44C3.js +0 -6
- package/dist/assets/Icon.stories-DAIYY4Bp.js +0 -45
- package/dist/assets/IconButton-BpjNyYgD.js +0 -8
- package/dist/assets/IconButton-COydvoLU.css +0 -1
- package/dist/assets/IconTile-CAnlU9ss.js +0 -1
- package/dist/assets/IconTile-DDvHA75S.css +0 -1
- package/dist/assets/IconTile.stories-DnUYn3Id.js +0 -88
- package/dist/assets/Input-DuW1_5SG.js +0 -48
- package/dist/assets/InputContainer-Cmdo_xyq.js +0 -2
- package/dist/assets/InputContainer-DIiUCsnL.css +0 -1
- package/dist/assets/IntegrationWithReactHookForm.stories-9EImL3zR.js +0 -467
- package/dist/assets/LayoutFlex-7DoB3s9X.css +0 -1
- package/dist/assets/LayoutFlex-CTH6ELdm.js +0 -1
- package/dist/assets/LayoutFlex-DXRMJ9FH.js +0 -1
- package/dist/assets/LayoutFlex-vHEU4SLb.css +0 -1
- package/dist/assets/LayoutFlexItem-C4cPPR-1.css +0 -1
- package/dist/assets/LayoutFlexItem-lmgCv4Y9.js +0 -1
- package/dist/assets/LayoutGrid-CSKyUAin.css +0 -1
- package/dist/assets/LayoutGrid-CUGRXgEO.js +0 -1
- package/dist/assets/LayoutGrid-Cm59X3OY.css +0 -1
- package/dist/assets/LayoutGrid-SAztDD7Z.js +0 -1
- package/dist/assets/LayoutGrid.stories-2dbzhVi7.js +0 -88
- package/dist/assets/LayoutGridItem-Bo7Opdaq.css +0 -1
- package/dist/assets/LayoutGridItem-UTn4G6JO.js +0 -1
- package/dist/assets/Link-BAFCJR3T.js +0 -5
- package/dist/assets/Link-BIhxLhqK.css +0 -1
- package/dist/assets/Loader-hjoeRutr.css +0 -1
- package/dist/assets/Loader.stories-CG-Eo8vg.js +0 -37
- package/dist/assets/MultiSelectChips-CBnEtn4N.js +0 -2
- package/dist/assets/MultiSelectChips.stories-Ch4FxGM2.js +0 -608
- package/dist/assets/NativeSelectField.stories-Pj5dm9hL.js +0 -295
- package/dist/assets/NumberField-klmIiQAi.js +0 -6
- package/dist/assets/NumberField.stories-D740jISy.js +0 -254
- package/dist/assets/ObserveIntersection-Dx2gD1CU.js +0 -8
- package/dist/assets/ObserveIntersection.stories-JJPEw5oG.js +0 -27
- package/dist/assets/OnboardingTooltip-DzQhJzWc.js +0 -16
- package/dist/assets/OnboardingTooltip-X4QjsIe6.css +0 -1
- package/dist/assets/OnboardingTooltip.stories-BDgRgbzO.js +0 -107
- package/dist/assets/OnboardingTooltip.tests.stories-DrqovP8T.js +0 -79
- package/dist/assets/OnboardingTour-B5gEod5H.js +0 -4
- package/dist/assets/OnboardingTour-DoEbirUE.css +0 -1
- package/dist/assets/OnboardingTour.stories-BzHBS52z.js +0 -46
- package/dist/assets/PasswordField-BjqiXySY.js +0 -6
- package/dist/assets/PasswordField.stories-YCTP14pU.js +0 -229
- package/dist/assets/PreplyLogo.stories-lPBmn_E2.js +0 -95
- package/dist/assets/ProgressBar-N_jhfqno.css +0 -1
- package/dist/assets/ProgressBar.stories-DqvDJEeF.js +0 -44
- package/dist/assets/ProgressSteps-5GOrC9Qn.css +0 -1
- package/dist/assets/ProgressSteps-Dce_SjLt.js +0 -2
- package/dist/assets/ProgressSteps.stories-BMDqz7-Z.js +0 -31
- package/dist/assets/PromoDialog-DdnXVfH8.js +0 -3
- package/dist/assets/RangeSlider-MZqvjtBp.js +0 -4
- package/dist/assets/RangeSlider.stories-BS4-l1u4.js +0 -117
- package/dist/assets/Rating.stories-wHsrBw3w.js +0 -116
- package/dist/assets/RatingInput.stories-BKAXF4Qv.js +0 -455
- package/dist/assets/SelectField-BvrdbknI.css +0 -1
- package/dist/assets/SelectField-DU60q2LU.js +0 -19
- package/dist/assets/SelectField.stories-BKCyFPQa.js +0 -517
- package/dist/assets/ShowOnIntersection.stories-BdO_3n9P.js +0 -17
- package/dist/assets/SingleSelectChips-CDtny-H7.js +0 -2
- package/dist/assets/Slider-B8ndK7PX.js +0 -2
- package/dist/assets/Slider-B_IRLClB.css +0 -1
- package/dist/assets/Slider.stories-CBV0fePJ.js +0 -69
- package/dist/assets/Spinner-8-RB4YZR.js +0 -1
- package/dist/assets/Spinner-CzIq-Vt3.css +0 -1
- package/dist/assets/Stars-BJkSwBV2.css +0 -1
- package/dist/assets/Stars-BSTkfC0i.js +0 -1
- package/dist/assets/Steps-DUeCVcxV.js +0 -26
- package/dist/assets/Steps-nUB2CDHz.css +0 -1
- package/dist/assets/Switch-DHmH1ale.css +0 -1
- package/dist/assets/Switch-Dyoj_Z1P.js +0 -12
- package/dist/assets/Switch.stories-CDVDjU2B.js +0 -151
- package/dist/assets/Text-D2ADMZ83.css +0 -1
- package/dist/assets/Text-DJTKRzSb.js +0 -1
- package/dist/assets/Text-DvShrljd.js +0 -1
- package/dist/assets/Text-O3SM8a3p.css +0 -1
- package/dist/assets/Text.stories-DRuLuJwb.js +0 -67
- package/dist/assets/TextField-BSJgR_zK.js +0 -6
- package/dist/assets/TextField.stories-rtu-asgN.js +0 -254
- package/dist/assets/TextHighlighted.stories-Bc0bMLCv.js +0 -32
- package/dist/assets/TextInline.stories-DKWvwjg6.js +0 -50
- package/dist/assets/TextareaField-DUqOyVK5.js +0 -53
- package/dist/assets/TextareaField.stories-CiRYJL_j.js +0 -272
- package/dist/assets/Toast-PKFBYWQw.css +0 -1
- package/dist/assets/Toast.stories-S5qFLRPf.js +0 -185
- package/dist/assets/TokyoUIAttach-BsMlsNHQ.js +0 -1
- package/dist/assets/TokyoUIAvailability7LateNight-BUCnoHXS.js +0 -1
- package/dist/assets/TokyoUICheck-DQLX_x10.js +0 -1
- package/dist/assets/TokyoUICheckmark-BHJrELn_.js +0 -1
- package/dist/assets/TokyoUIChevronDown-DiBNbDdz.js +0 -1
- package/dist/assets/TokyoUIChevronRight-DRhJYmWB.js +0 -1
- package/dist/assets/TokyoUIClose-BfMyMrDa.js +0 -1
- package/dist/assets/TokyoUIEmojiFrowning-DkxcBN-M.js +0 -1
- package/dist/assets/TokyoUIErrorWarning-GuwQvo24.js +0 -1
- package/dist/assets/TokyoUIExerciseClosedGapsJumble-BhG23ylY.css +0 -1
- package/dist/assets/TokyoUIExerciseClosedGapsJumble-C8roFqfh.js +0 -1
- package/dist/assets/TokyoUIEye-oyrTN--k.js +0 -1
- package/dist/assets/TokyoUIFav-C-stY9U_.js +0 -1
- package/dist/assets/TokyoUIInfo-BSNbI4Gr.js +0 -1
- package/dist/assets/TokyoUILanguage-BcrymOo9.js +0 -1
- package/dist/assets/TokyoUILibraryExplore-DvvKpWd6.js +0 -1
- package/dist/assets/TokyoUILock-B22xkFQW.js +0 -1
- package/dist/assets/TokyoUIMessages-hZLnK87p.js +0 -1
- package/dist/assets/TokyoUIMinus-C6TctZRw.js +0 -1
- package/dist/assets/TokyoUINotebook-mwleX-o1.js +0 -1
- package/dist/assets/TokyoUINotesWithPad-CG0gLTYm.js +0 -1
- package/dist/assets/TokyoUIPhone-CFykqUer.js +0 -1
- package/dist/assets/TokyoUISettings-BbgnUEy1.js +0 -1
- package/dist/assets/TokyoUISparkle-DPOw7W2T.js +0 -1
- package/dist/assets/TokyoUIStarFilled-CF0iG37X.js +0 -1
- package/dist/assets/TokyoUITag-B1Xueyd7.js +0 -1
- package/dist/assets/TokyoUIUpload-CrasJ02A.js +0 -1
- package/dist/assets/TokyoUIUser-XhPCF9-5.js +0 -1
- package/dist/assets/Tooltip-BiqKWYpo.js +0 -9
- package/dist/assets/Tooltip.stories-DCB24NyS.js +0 -93
- package/dist/assets/Tooltip.tests.stories-B3iLlPPq.js +0 -65
- package/dist/assets/VisuallyHidden-Jfhj9R2Y.css +0 -1
- package/dist/assets/VisuallyHidden-fvo3PSUE.js +0 -1
- package/dist/assets/WithTooltip-IO6J4KBT-BUV9ELqr.js +0 -9
- package/dist/assets/align-self-BYi8giLn.js +0 -1
- package/dist/assets/align-self-C4ATemga.css +0 -1
- package/dist/assets/ar-D1Y8jKvF.js +0 -1
- package/dist/assets/axe-BG-rWtCi.js +0 -30
- package/dist/assets/breakpoints-BfMlrtxE.js +0 -1
- package/dist/assets/breakpoints-CBpJ5xgl.js +0 -31
- package/dist/assets/breakpoints-Cu9uEe0J.js +0 -32
- package/dist/assets/breakpoints-CuJuvIR9.js +0 -30
- package/dist/assets/client-BN2KdiJY.js +0 -1
- package/dist/assets/componentNames-hc9KR2nX.js +0 -1
- package/dist/assets/constants-5om8Ptru.js +0 -1
- package/dist/assets/constants-DYYVurUY.js +0 -1
- package/dist/assets/consts-KAYct7Gj.js +0 -1
- package/dist/assets/createRequiredContext-B3Arn9-D.js +0 -241
- package/dist/assets/createRequiredContext-Cjxy1dPq.css +0 -1
- package/dist/assets/cs-CamDwf-r.js +0 -1
- package/dist/assets/de-CWLDjtzP.js +0 -1
- package/dist/assets/emotion-unitless.esm-BZwEwAnk.js +0 -1
- package/dist/assets/en-DmA3N6t9.js +0 -1
- package/dist/assets/es-C4sqCVWL.js +0 -1
- package/dist/assets/filterAttributesPassedByRadixUIAtRuntime-B7QTVwVw.js +0 -1
- package/dist/assets/filterAttributesPassedByRadixUIAtRuntime-Bye2JkZ0.js +0 -1
- package/dist/assets/fonts-explorer-B5KcfnOG.css +0 -1
- package/dist/assets/fonts-explorer.stories-CeMUwBuQ.js +0 -130
- package/dist/assets/formatter-QJ4M4OGQ-B2Vljo6_.js +0 -1
- package/dist/assets/fr-BxUkVECU.js +0 -1
- package/dist/assets/getTokenVar-CVkrm5Qs.js +0 -1
- package/dist/assets/getTokenVar-DmUJH1GU.js +0 -11
- package/dist/assets/gradientBorders-Q_ip9Ojv.js +0 -45
- package/dist/assets/hk-CamDwf-r.js +0 -1
- package/dist/assets/hover-C8NhPbjk.js +0 -13
- package/dist/assets/hover-C9fsErpn.js +0 -16
- package/dist/assets/hover-D55mJaWK.js +0 -14
- package/dist/assets/id-BUwhaEpp.js +0 -1
- package/dist/assets/iframe-B_74HtSc.js +0 -1891
- package/dist/assets/iframe-DR4kltvM.css +0 -1
- package/dist/assets/index-BJaBvJhB.js +0 -22
- package/dist/assets/index-BW8FBNWq.js +0 -193
- package/dist/assets/index-CC6DAVyL.js +0 -1
- package/dist/assets/index-Cnv20V_M.js +0 -1
- package/dist/assets/index-DIqvfT2b.js +0 -12
- package/dist/assets/index-DWFFXgf1.js +0 -1
- package/dist/assets/index-W3BB_3go.js +0 -41
- package/dist/assets/intro-DOuARa_Y.js +0 -31
- package/dist/assets/it-kJJ1S0qv.js +0 -1
- package/dist/assets/ja-CThSHCIs.js +0 -1
- package/dist/assets/ko-B1qhOecF.js +0 -1
- package/dist/assets/layout-relative-B9CiYPwj.js +0 -1
- package/dist/assets/layout-relative-BWwbkKin.css +0 -1
- package/dist/assets/layout-relative-DOxkgOJk.css +0 -1
- package/dist/assets/layout-relative.module-1z75aSwo-Dcy7i8oK.js +0 -1
- package/dist/assets/layout-relative.module-BIZVul8q.js +0 -1
- package/dist/assets/matchers-DMFSMG2O-CAdg16Fl.js +0 -14
- package/dist/assets/mcp-D2eIYE7x.js +0 -32
- package/dist/assets/message-DJT5rp5J.js +0 -1
- package/dist/assets/migrating-from-less-CxT_5hNC.js +0 -36
- package/dist/assets/mixins-DZk1Zeoo.js +0 -7
- package/dist/assets/nl-CEfRou2e.js +0 -1
- package/dist/assets/options-jUub4JL1.js +0 -1
- package/dist/assets/pl-B4SjM4RJ.js +0 -1
- package/dist/assets/playground.stories-DqwdOX0P.js +0 -6
- package/dist/assets/preload-helper-Dp1pzeXC.js +0 -1
- package/dist/assets/pt-B_cv-Bbz.js +0 -1
- package/dist/assets/react-18-DoE4ZK8O.js +0 -1
- package/dist/assets/render-icon-DSbVIpCz.js +0 -9
- package/dist/assets/render-icon-MT6RlyNs.js +0 -9
- package/dist/assets/ro-Wp2i1-uz.js +0 -1
- package/dist/assets/ru-C9RPHSvh.js +0 -1
- package/dist/assets/shared-strings-ThL9KyH0.js +0 -1
- package/dist/assets/store-B0wM9Zg8.js +0 -9
- package/dist/assets/styled-components.browser.esm-BHxIJD2_.js +0 -2
- package/dist/assets/styled-components.browser.esm-rrOBirU4.js +0 -2
- package/dist/assets/sv-BV70iAZ6.js +0 -1
- package/dist/assets/syntaxhighlighter-IQDEPFLK-BakL6JIW.js +0 -6
- package/dist/assets/text-accent-BQ9POoE5.js +0 -1
- package/dist/assets/text-centered-BEaaxMgl.js +0 -1
- package/dist/assets/text-centered-CT0UilMD.css +0 -1
- package/dist/assets/text-centered-CYnBFi3a.js +0 -1
- package/dist/assets/text-centered-DxXu3Wfr.css +0 -1
- package/dist/assets/th-DQ6Pn590.js +0 -1
- package/dist/assets/tokens-BEyO2LY-.js +0 -15
- package/dist/assets/tokens-Cg01svK-.js +0 -15
- package/dist/assets/tokens-CmSwgWJ8.js +0 -16
- package/dist/assets/tokens-im-qJUCZ.js +0 -1
- package/dist/assets/tr-ByOPzs3p.js +0 -1
- package/dist/assets/tw-CamDwf-r.js +0 -1
- package/dist/assets/ua-rcge5Swp.js +0 -1
- package/dist/assets/useControllableState-BB4EHwEp.js +0 -1
- package/dist/assets/useHostname-CbpnzdHv.js +0 -1
- package/dist/assets/useMergeRefs-CFhXCqbA.js +0 -1
- package/dist/assets/useMergeRefs-Caz9hOck.js +0 -1
- package/dist/assets/useOpenInteractionType-D3sASQWj.js +0 -15
- package/dist/assets/usePortalElement-Cbyb850w.js +0 -19
- package/dist/assets/useStableCallback-D5P5kDx5.js +0 -1
- package/dist/assets/useToken-OSVftwxQ.js +0 -1
- package/dist/assets/welcome-QqBTVkpV.js +0 -23
- package/dist/assets/zeroheight-BXMq4jvo.js +0 -75
- package/dist/assets/zh-B9zAtuTc.js +0 -1
- package/dist/sb-addons/storybook-5/manager-bundle.js +0 -3
- package/vitest.config.mts +0 -30
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{n as i,t as a}from"./Icon-CfZyHxyH.js";import{n as o,t as s}from"./FieldButton-lc__KGvz.js";import{n as c,t as l}from"./NumberField-BAofx_Ni.js";import{n as u,t as d}from"./TokyoUIPhone-Bw5Vf4vA.js";import{n as f,t as p}from"./TokyoUIAttach-CJ32NKTG.js";var m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j,M;t((()=>{m=e(n(),1),u(),f(),i(),c(),o(),h=r(),{action:g}=__STORYBOOK_MODULE_ACTIONS__,{expect:_,userEvent:v,within:y,fn:b}=__STORYBOOK_MODULE_TEST__,x={title:`components/NumberField`,component:l,args:{name:`number`,label:`Number`,defaultValue:void 0,placeholder:`Enter a number`,dataset:{testid:`field`,foo:`bar`},inputDataset:{testid:`input`,foo:`bar`},onChange:b(),onValueChange:b(),onBlur:b(),onFocus:b(),onClick:b(),onCopy:b(),onKeyDown:b(),onKeyUp:b(),onPaste:b()}},S={play:async({canvasElement:e,step:t,args:n})=>{let r=y(e),i=r.getByTestId(`field`),a=r.getByTestId(`input`);await t(`it should render correct label`,async()=>{_(y(i).getByTestId(`label`)).toHaveTextContent(`Number • Optional`),_(a).toHaveAccessibleName(`Number`)}),await t(`it should call onFocus when the input is focused`,async()=>{a.focus(),_(n.onFocus).toHaveBeenCalled()}),await t(`it should call callback when the value changes`,async()=>{await v.type(a,`42`),_(n.onValueChange).toHaveBeenCalledWith(42),_(n.onChange).toHaveBeenCalled()}),await t(`it should call onBlur when the input is blurred`,async()=>{await v.keyboard(`{tab}`),_(n.onBlur).toHaveBeenCalled()}),await t(`it should render the dataset props`,async()=>{_(i).toHaveAttribute(`data-testid`,`field`),_(i).toHaveAttribute(`data-foo`,`bar`),_(a).toHaveAttribute(`data-testid`,`input`),_(a).toHaveAttribute(`data-foo`,`bar`)})}},C={render:function(e){let[t,n]=(0,m.useState)(e.value);return(0,h.jsx)(l,{...e,value:t,onChange:t=>{n(Number(t.target.value)),e.onChange?.(t)}})},args:{label:`Controlled NumberField`,placeholder:`Enter a number...`,value:42},play:async({canvas:e,step:t})=>{await t(`it should render the correct initial value`,async()=>{await _(e.getByTestId(`input`)).toHaveValue(42)}),await t(`it should update the value when the user types`,async()=>{let t=e.getByTestId(`input`);await v.clear(t),await v.type(t,`100`),_(t).toHaveValue(100)})}},w={args:{icon:(0,h.jsx)(a,{svg:d,dataset:{testid:`icon`}})},play:async({canvas:e,step:t})=>{await t(`it should render the icon`,async()=>{_(e.getByTestId(`icon`)).toBeInTheDocument()})}},T={args:{description:`Enter a valid number`},play:async({canvas:e,step:t})=>{let n=e.getByTestId(`input`),r=e.getByTestId(`description`);await t(`it should render the description`,async()=>{_(n).toHaveAccessibleDescription(`Enter a valid number`),_(r).toHaveTextContent(`Enter a valid number`)})}},E={args:{required:!0},play:async({canvas:e,step:t})=>{let n=e.getByTestId(`input`),r=e.getByTestId(`label`);await t(`it should render correct label`,async()=>{_(n).toHaveAccessibleName(`Number`),_(r).toHaveTextContent(`Number`)}),await t(`it should render required attribute`,async()=>{_(n).toHaveAttribute(`required`)})}},D={args:{hideLabel:!0},play:async({canvas:e,step:t})=>{await t(`it should render correct a11y label`,async()=>{_(e.getByTestId(`input`)).toHaveAccessibleName(`Number`)})}},O={args:{error:`This is an error message`},play:async({canvas:e,step:t})=>{let n=e.getByTestId(`input`),r=e.getByTestId(`error`);await t(`it should render the error message`,async()=>{_(n).toHaveAccessibleErrorMessage(`This is an error message`),_(r).toHaveTextContent(`This is an error message`)})}},k={args:{disabled:!0},play:async({canvas:e,step:t})=>{let n=e.getByTestId(`input`);await t(`it should render the disabled input`,async()=>{_(n).toHaveAttribute(`disabled`)})}},A={args:{readOnly:!0},play:async({canvas:e,step:t})=>{let n=e.getByTestId(`input`);await t(`it should render the read only input`,async()=>{_(n).toHaveAttribute(`readonly`)})}},j={parameters:{chromatic:{disableSnapshot:!0}},args:{label:`Number of lessons`,placeholder:`How about 3?`,description:`These lessons will be scheduled automatically`},argTypes:{label:{control:`text`},placeholder:{control:`text`},description:{control:`text`},error:{control:`text`},value:{control:`number`},defaultValue:{control:`number`},inputDataset:{control:`object`},dataset:{control:`object`},id:{control:`text`},required:{control:`boolean`},hideLabel:{control:`boolean`},name:{control:`text`},disabled:{control:`boolean`},readOnly:{control:`boolean`},min:{control:`number`},max:{control:`number`},step:{control:`number`},icon:{options:[`None`,`With Icon`],mapping:{None:void 0,"With Icon":(0,h.jsx)(a,{svg:d})},control:`select`},button:{options:[`None`,`With Button`],mapping:{None:void 0,"With Button":(0,h.jsx)(s,{svg:p,assistiveText:`Do the thing`,onClick:g(`field button clicked`)})},control:`select`},maxLength:{control:`number`},hasError:{table:{disable:!0}}}},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
play: async ({
|
|
3
|
+
canvasElement,
|
|
4
|
+
step,
|
|
5
|
+
args
|
|
6
|
+
}) => {
|
|
7
|
+
const canvas = within(canvasElement);
|
|
8
|
+
const field = canvas.getByTestId('field');
|
|
9
|
+
const input = canvas.getByTestId('input');
|
|
10
|
+
await step('it should render correct label', async () => {
|
|
11
|
+
const label = within(field).getByTestId('label');
|
|
12
|
+
expect(label).toHaveTextContent('Number • Optional');
|
|
13
|
+
expect(input).toHaveAccessibleName('Number');
|
|
14
|
+
});
|
|
15
|
+
await step('it should call onFocus when the input is focused', async () => {
|
|
16
|
+
input.focus();
|
|
17
|
+
expect(args.onFocus).toHaveBeenCalled();
|
|
18
|
+
});
|
|
19
|
+
await step('it should call callback when the value changes', async () => {
|
|
20
|
+
await userEvent.type(input, '42');
|
|
21
|
+
expect(args.onValueChange).toHaveBeenCalledWith(42);
|
|
22
|
+
expect(args.onChange).toHaveBeenCalled();
|
|
23
|
+
});
|
|
24
|
+
await step('it should call onBlur when the input is blurred', async () => {
|
|
25
|
+
await userEvent.keyboard('{tab}');
|
|
26
|
+
expect(args.onBlur).toHaveBeenCalled();
|
|
27
|
+
});
|
|
28
|
+
await step('it should render the dataset props', async () => {
|
|
29
|
+
expect(field).toHaveAttribute('data-testid', 'field');
|
|
30
|
+
expect(field).toHaveAttribute('data-foo', 'bar');
|
|
31
|
+
expect(input).toHaveAttribute('data-testid', 'input');
|
|
32
|
+
expect(input).toHaveAttribute('data-foo', 'bar');
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}`,...S.parameters?.docs?.source},description:{story:"An empty field with a `label` and a `placeholder`.",...S.parameters?.docs?.description}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
36
|
+
render: function ControlledNumberField(args) {
|
|
37
|
+
const [value, setValue] = useState(args.value);
|
|
38
|
+
return <NumberField {...args} value={value} onChange={e => {
|
|
39
|
+
setValue(Number(e.target.value));
|
|
40
|
+
args.onChange?.(e);
|
|
41
|
+
}} />;
|
|
42
|
+
},
|
|
43
|
+
args: {
|
|
44
|
+
label: 'Controlled NumberField',
|
|
45
|
+
placeholder: 'Enter a number...',
|
|
46
|
+
value: 42
|
|
47
|
+
},
|
|
48
|
+
play: async ({
|
|
49
|
+
canvas,
|
|
50
|
+
step
|
|
51
|
+
}) => {
|
|
52
|
+
await step('it should render the correct initial value', async () => {
|
|
53
|
+
const input = canvas.getByTestId('input');
|
|
54
|
+
await expect(input).toHaveValue(42);
|
|
55
|
+
});
|
|
56
|
+
await step('it should update the value when the user types', async () => {
|
|
57
|
+
const input = canvas.getByTestId('input');
|
|
58
|
+
await userEvent.clear(input);
|
|
59
|
+
await userEvent.type(input, '100');
|
|
60
|
+
expect(input).toHaveValue(100);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}`,...C.parameters?.docs?.source},description:{story:`A controlled component where the value is managed by React state.`,...C.parameters?.docs?.description}}},w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
|
|
64
|
+
args: {
|
|
65
|
+
icon: <Icon svg={PhoneSvg} dataset={{
|
|
66
|
+
testid: 'icon'
|
|
67
|
+
}} />
|
|
68
|
+
},
|
|
69
|
+
play: async ({
|
|
70
|
+
canvas,
|
|
71
|
+
step
|
|
72
|
+
}) => {
|
|
73
|
+
await step('it should render the icon', async () => {
|
|
74
|
+
const icon = canvas.getByTestId('icon');
|
|
75
|
+
expect(icon).toBeInTheDocument();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}`,...w.parameters?.docs?.source}}},T.parameters={...T.parameters,docs:{...T.parameters?.docs,source:{originalSource:`{
|
|
79
|
+
args: {
|
|
80
|
+
description: 'Enter a valid number'
|
|
81
|
+
},
|
|
82
|
+
play: async ({
|
|
83
|
+
canvas,
|
|
84
|
+
step
|
|
85
|
+
}) => {
|
|
86
|
+
const input = canvas.getByTestId('input');
|
|
87
|
+
const description = canvas.getByTestId('description');
|
|
88
|
+
await step('it should render the description', async () => {
|
|
89
|
+
expect(input).toHaveAccessibleDescription('Enter a valid number');
|
|
90
|
+
expect(description).toHaveTextContent('Enter a valid number');
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}`,...T.parameters?.docs?.source}}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
|
|
94
|
+
args: {
|
|
95
|
+
required: true
|
|
96
|
+
},
|
|
97
|
+
play: async ({
|
|
98
|
+
canvas,
|
|
99
|
+
step
|
|
100
|
+
}) => {
|
|
101
|
+
const input = canvas.getByTestId('input');
|
|
102
|
+
const label = canvas.getByTestId('label');
|
|
103
|
+
await step('it should render correct label', async () => {
|
|
104
|
+
expect(input).toHaveAccessibleName('Number');
|
|
105
|
+
expect(label).toHaveTextContent('Number');
|
|
106
|
+
});
|
|
107
|
+
await step('it should render required attribute', async () => {
|
|
108
|
+
expect(input).toHaveAttribute('required');
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}`,...E.parameters?.docs?.source}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
|
|
112
|
+
args: {
|
|
113
|
+
hideLabel: true
|
|
114
|
+
},
|
|
115
|
+
play: async ({
|
|
116
|
+
canvas,
|
|
117
|
+
step
|
|
118
|
+
}) => {
|
|
119
|
+
await step('it should render correct a11y label', async () => {
|
|
120
|
+
const input = canvas.getByTestId('input');
|
|
121
|
+
expect(input).toHaveAccessibleName('Number');
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}`,...D.parameters?.docs?.source}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
|
|
125
|
+
args: {
|
|
126
|
+
error: 'This is an error message'
|
|
127
|
+
},
|
|
128
|
+
play: async ({
|
|
129
|
+
canvas,
|
|
130
|
+
step
|
|
131
|
+
}) => {
|
|
132
|
+
const input = canvas.getByTestId('input');
|
|
133
|
+
const error = canvas.getByTestId('error');
|
|
134
|
+
await step('it should render the error message', async () => {
|
|
135
|
+
expect(input).toHaveAccessibleErrorMessage('This is an error message');
|
|
136
|
+
expect(error).toHaveTextContent('This is an error message');
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}`,...O.parameters?.docs?.source}}},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
|
|
140
|
+
args: {
|
|
141
|
+
disabled: true
|
|
142
|
+
},
|
|
143
|
+
play: async ({
|
|
144
|
+
canvas,
|
|
145
|
+
step
|
|
146
|
+
}) => {
|
|
147
|
+
const input = canvas.getByTestId('input');
|
|
148
|
+
await step('it should render the disabled input', async () => {
|
|
149
|
+
expect(input).toHaveAttribute('disabled');
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}`,...k.parameters?.docs?.source}}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
|
|
153
|
+
args: {
|
|
154
|
+
readOnly: true
|
|
155
|
+
},
|
|
156
|
+
play: async ({
|
|
157
|
+
canvas,
|
|
158
|
+
step
|
|
159
|
+
}) => {
|
|
160
|
+
const input = canvas.getByTestId('input');
|
|
161
|
+
await step('it should render the read only input', async () => {
|
|
162
|
+
expect(input).toHaveAttribute('readonly');
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}`,...A.parameters?.docs?.source}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
|
|
166
|
+
parameters: {
|
|
167
|
+
chromatic: {
|
|
168
|
+
disableSnapshot: true
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
args: {
|
|
172
|
+
label: 'Number of lessons',
|
|
173
|
+
placeholder: 'How about 3?',
|
|
174
|
+
description: 'These lessons will be scheduled automatically'
|
|
175
|
+
},
|
|
176
|
+
argTypes: {
|
|
177
|
+
label: {
|
|
178
|
+
control: 'text'
|
|
179
|
+
},
|
|
180
|
+
placeholder: {
|
|
181
|
+
control: 'text'
|
|
182
|
+
},
|
|
183
|
+
description: {
|
|
184
|
+
control: 'text'
|
|
185
|
+
},
|
|
186
|
+
error: {
|
|
187
|
+
control: 'text'
|
|
188
|
+
},
|
|
189
|
+
value: {
|
|
190
|
+
control: 'number'
|
|
191
|
+
},
|
|
192
|
+
defaultValue: {
|
|
193
|
+
control: 'number'
|
|
194
|
+
},
|
|
195
|
+
inputDataset: {
|
|
196
|
+
control: 'object'
|
|
197
|
+
},
|
|
198
|
+
dataset: {
|
|
199
|
+
control: 'object'
|
|
200
|
+
},
|
|
201
|
+
id: {
|
|
202
|
+
control: 'text'
|
|
203
|
+
},
|
|
204
|
+
required: {
|
|
205
|
+
control: 'boolean'
|
|
206
|
+
},
|
|
207
|
+
hideLabel: {
|
|
208
|
+
control: 'boolean'
|
|
209
|
+
},
|
|
210
|
+
name: {
|
|
211
|
+
control: 'text'
|
|
212
|
+
},
|
|
213
|
+
disabled: {
|
|
214
|
+
control: 'boolean'
|
|
215
|
+
},
|
|
216
|
+
readOnly: {
|
|
217
|
+
control: 'boolean'
|
|
218
|
+
},
|
|
219
|
+
min: {
|
|
220
|
+
control: 'number'
|
|
221
|
+
},
|
|
222
|
+
max: {
|
|
223
|
+
control: 'number'
|
|
224
|
+
},
|
|
225
|
+
step: {
|
|
226
|
+
control: 'number'
|
|
227
|
+
},
|
|
228
|
+
icon: {
|
|
229
|
+
options: ['None', 'With Icon'],
|
|
230
|
+
mapping: {
|
|
231
|
+
None: undefined,
|
|
232
|
+
'With Icon': <Icon svg={PhoneSvg} />
|
|
233
|
+
},
|
|
234
|
+
control: 'select'
|
|
235
|
+
},
|
|
236
|
+
button: {
|
|
237
|
+
options: ['None', 'With Button'],
|
|
238
|
+
mapping: {
|
|
239
|
+
None: undefined,
|
|
240
|
+
'With Button': <FieldButton svg={AttachSvg} assistiveText="Do the thing" onClick={action('field button clicked')} />
|
|
241
|
+
},
|
|
242
|
+
control: 'select'
|
|
243
|
+
},
|
|
244
|
+
maxLength: {
|
|
245
|
+
control: 'number'
|
|
246
|
+
},
|
|
247
|
+
// Disable deprecated props
|
|
248
|
+
hasError: {
|
|
249
|
+
table: {
|
|
250
|
+
disable: true
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}`,...j.parameters?.docs?.source}}},M=[`Basic`,`Controlled`,`WithIcon`,`WithDescription`,`Required`,`WithHiddenLabel`,`HasError`,`Disabled`,`ReadOnly`,`Playground`]}))();export{S as Basic,C as Controlled,k as Disabled,O as HasError,j as Playground,A as ReadOnly,E as Required,T as WithDescription,D as WithHiddenLabel,w as WithIcon,M as __namedExportsOrder,x as default};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{ht as r,t as i,w as a}from"./dist-DtfJeYQK.js";import{t as o}from"./jsx-runtime-C2wGStra.js";import{n as s,t as c}from"./dist-Cc1j9Pjk.js";var l,u,d,f=t((()=>{a(),c(),i(),l=e(n(),1),u=o(),d=({onIntersect:e,once:t,threshold:n,tag:i,dataset:a,children:o})=>{let c=(0,l.useRef)(null);return(0,l.useEffect)(()=>{let r=([n],r)=>{n.isIntersecting&&(e(),t&&c.current&&r.unobserve(c.current))},i={threshold:n},a=new IntersectionObserver(r,i);return c.current&&a.observe(c.current),()=>a.disconnect()},[e,t,n]),(0,u.jsx)(i??`div`,{ref:c,...r(a,{preplyDsComponent:s.ObserverIntersection}),children:o})};try{d.displayName=`ObserveIntersection`,d.__docgenInfo={description:`An [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver) wrapper.
|
|
2
|
+
|
|
3
|
+
Triggers a callback when the wrapped component intersects with the viewport.
|
|
4
|
+
|
|
5
|
+
This can be useful in several use cases. Examples:
|
|
6
|
+
|
|
7
|
+
- Track an experiment, once a certain component scrolls into view.
|
|
8
|
+
- Trigger an animation, or a feature (e.g.: onboarding instructions).`,displayName:`ObserveIntersection`,props:{onIntersect:{defaultValue:null,description:``,name:`onIntersect`,required:!0,type:{name:`() => void`}},once:{defaultValue:null,description:``,name:`once`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},threshold:{defaultValue:null,description:``,name:`threshold`,required:!1,type:{name:`enum`,value:[{value:`number`}]}},tag:{defaultValue:null,description:``,name:`tag`,required:!1,type:{name:`enum`,value:[{value:`"div"`},{value:`"table"`},{value:`"th"`},{value:`"td"`},{value:`"article"`},{value:`"caption"`},{value:`"fieldset"`},{value:`"figcaption"`},{value:`"figure"`},{value:`"footer"`},{value:`"header"`},{value:`"li"`},{value:`"main"`},{value:`"ol"`},{value:`"p"`},{value:`"section"`},{value:`"span"`},{value:`"tbody"`},{value:`"tfoot"`},{value:`"thead"`},{value:`"tr"`},{value:`"ul"`}]}},dataset:{defaultValue:null,description:``,name:`dataset`,required:!1,type:{name:`enum`,value:[{value:`Dataset`}]}}}}}catch{}}));export{f as n,d as t};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{n as i,t as a}from"./ObserveIntersection-DPsyMqP-.js";var o,s,c,l,u;t((()=>{o=e(n(),1),i(),s=r(),c={title:`components/ObserveIntersection`,component:a,parameters:{tags:[`!test`],chromatic:{disableSnapshot:!0}}},l=()=>{let[e,t]=(0,o.useState)(!1);return(0,s.jsxs)(`div`,{tabIndex:0,style:{height:`200px`,overflowY:`scroll`,position:`relative`},children:[(0,s.jsx)(`div`,{style:{position:`sticky`,top:`2px`},children:e?`Intersected`:`Scroll down to intersect`}),(0,s.jsx)(`div`,{style:{height:`400px`,display:`flex`,alignItems:`end`},children:(0,s.jsx)(a,{onIntersect:()=>t(!0),children:`Observer`})})]})},l.storyName=`ObserveIntersection`,l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`() => {
|
|
2
|
+
const [isIntersecting, setIsIntersecting] = useState(false);
|
|
3
|
+
return (
|
|
4
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- This element is interactive; it's scrollable.
|
|
5
|
+
<div tabIndex={0} style={{
|
|
6
|
+
height: '200px',
|
|
7
|
+
overflowY: 'scroll',
|
|
8
|
+
position: 'relative'
|
|
9
|
+
}}>
|
|
10
|
+
<div style={{
|
|
11
|
+
position: 'sticky',
|
|
12
|
+
top: '2px'
|
|
13
|
+
}}>
|
|
14
|
+
{isIntersecting ? 'Intersected' : 'Scroll down to intersect'}
|
|
15
|
+
</div>
|
|
16
|
+
<div style={{
|
|
17
|
+
height: '400px',
|
|
18
|
+
display: 'flex',
|
|
19
|
+
alignItems: 'end'
|
|
20
|
+
}}>
|
|
21
|
+
<ObserveIntersection onIntersect={() => setIsIntersecting(true)}>
|
|
22
|
+
Observer
|
|
23
|
+
</ObserveIntersection>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
}`,...l.parameters?.docs?.source}}},u=[`Base`]}))();export{l as Base,u as __namedExportsOrder,c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.content__KHgp9{background-color:var(--79dffb);border-radius:var(--fa4b1a);padding:var(--1e685c);box-shadow:var(--df7dbb);gap:var(--66b80b);width:304px;z-index:var(--ds-onboarding-tooltip-z-index-override,auto);transform-origin:var(--radix-popover-content-transform-origin);will-change:transform, opacity;flex-direction:column;animation-duration:.15s;animation-timing-function:cubic-bezier(.25,0,.5,1.3);display:flex}.content__KHgp9[data-state=open]{animation-name:appear__G8agi}.content__KHgp9[data-state=closed]{animation-name:disappear__OWVSJ}.header__CaLti{flex-direction:row-reverse;justify-content:space-between;align-items:flex-start;display:flex}.close__3s-VD{border-radius:var(--5e8be4);margin-top:calc(var(--813599) * -1);margin-right:calc(var(--813599) * -1);cursor:pointer;background:0 0;border:none;padding:0}.close__3s-VD:focus-visible{outline-style:solid;outline-color:var(--603ec6);outline-width:var(--99d31f);outline-offset:var(--c0b12c)}.footer__X5qXF{margin-top:var(--66b80b);justify-content:flex-end;gap:var(--813599);align-items:center;display:flex}.arrow__0pg-s{fill:var(--79dffb)}@keyframes appear__G8agi{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes disappear__OWVSJ{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{ht as r,t as i}from"./dist-DtfJeYQK.js";import{t as a}from"./jsx-runtime-C2wGStra.js";import{B as o,H as s,St as c,U as l,V as u,W as d,_ as f,g as p,m,z as h}from"./iframe-f34VuKy-.js";import{n as g,t as _}from"./dist-Cc1j9Pjk.js";import{n as v,t as y}from"./Icon-CfZyHxyH.js";import{n as b,t as x}from"./Text-bm2vnOS2.js";import{n as S,t as C}from"./Heading-CEZfMm-F.js";import{n as w,t as T}from"./Button-DnVrHohm.js";import{n as E,t as D}from"./TokyoUIClose-cJyNy-kq.js";import{i as O,o as k,r as A}from"./lib-CXCPi5ID.js";import{n as j,t as M}from"./shared-strings-DrlpFtg5.js";var N,P,F,I,L,R,z,B,V=t((()=>{N=`content__KHgp9`,P=`appear__G8agi`,F=`disappear__OWVSJ`,I=`header__CaLti`,L=`close__3s-VD`,R=`footer__X5qXF`,z=`arrow__0pg-s`,B={content:N,appear:P,disappear:F,header:I,close:L,footer:R,arrow:z}})),H,U,W,G,K,q=t((()=>{H=e(n(),1),f(),E(),V(),m(),v(),b(),w(),S(),i(),_(),A(),j(),U=a(),W=e=>{e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView({behavior:`auto`,block:`nearest`,inline:`nearest`})},G=(0,H.forwardRef)(function({open:e,onOpenChange:t,disabled:n,title:i,text:a,children:f,side:m,dataset:_,actionLabel:v=(0,U.jsx)(O,{id:`preply-ds.onboardingTooltip.actionLabel`,defaultMessage:`Got it`,description:`Default onboarding tooltip action label. Used to acknowledge and close the tooltip.`}),actionOnClick:b,actionHref:S,counter:w,autoScroll:E=!0,...A},j){let{formatMessage:N}=k(),P=p(),F=(0,H.useId)(),I=(0,H.useId)(),L=(0,H.useId)(),R=(0,H.useRef)(null);return(0,H.useEffect)(()=>{e&&R.current&&E&&W(R.current)},[E,e]),n?f:(0,U.jsxs)(d,{open:e,onOpenChange:t,children:[(0,U.jsx)(c,{ref:j,...A,children:(0,U.jsx)(h,{ref:R,id:L,asChild:!0,children:f})}),(0,U.jsx)(l,{container:P,children:(0,U.jsxs)(s,{onInteractOutside:e=>{e.preventDefault()},side:m,className:B.content,"aria-labelledby":F,"aria-describedby":`${L} ${I}`,...r(_,{preplyDsComponent:g.OnboardingTooltip}),children:[(0,U.jsxs)(`div`,{className:B.header,children:[(0,U.jsx)(u,{className:B.close,"aria-label":N(M.close),"data-testid":`close`,children:(0,U.jsx)(y,{accent:`inverted`,svg:D})}),(0,U.jsx)(C,{tag:`h1`,variant:`small`,accent:`inverted`,id:F,"aria-describedby":L,children:i})]}),(0,U.jsx)(x,{variant:`default-regular`,accent:`inverted`,className:B.text,children:a}),(0,U.jsxs)(`div`,{className:B.footer,children:[w,(0,U.jsx)(T,{variant:`inverted`,size:`small`,onClick:b,href:S,dataset:{testid:`action`},wrap:!0,children:v})]}),(0,U.jsx)(o,{"aria-hidden":!0,className:B.arrow,width:18,height:11})]})})]})}),K=(0,H.forwardRef)(function(e,t){let[n,r]=(0,H.useState)(!0),i=t=>{t||e.onClose?.(),r(t)},a=()=>{e.actionOnClick?.(),r(!1),e.onClose?.()};return(0,U.jsx)(G,{...e,open:n,onOpenChange:i,actionOnClick:a,ref:t})});try{G.displayName=`InternalOnboardingTooltip`,G.__docgenInfo={description:``,displayName:`InternalOnboardingTooltip`,props:{title:{defaultValue:null,description:``,name:`title`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},text:{defaultValue:null,description:``,name:`text`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},disabled:{defaultValue:null,description:`Disables tooltip completely`,name:`disabled`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},onClose:{defaultValue:null,description:`Called when the tooltip is closed`,name:`onClose`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},actionLabel:{defaultValue:{value:`(
|
|
2
|
+
<FormattedMessage
|
|
3
|
+
id="preply-ds.onboardingTooltip.actionLabel"
|
|
4
|
+
defaultMessage="Got it"
|
|
5
|
+
description="Default onboarding tooltip action label. Used to acknowledge and close the tooltip."
|
|
6
|
+
/>
|
|
7
|
+
)`},description:`Label of the action button`,name:`actionLabel`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},actionOnClick:{defaultValue:null,description:`By default, the action button closes the tooltip.
|
|
8
|
+
|
|
9
|
+
Provide \`actionOnClick\` to also perform other action.`,name:`actionOnClick`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},actionHref:{defaultValue:null,description:`By default, the action button closes the tooltip.
|
|
10
|
+
|
|
11
|
+
Provide \`actionHref\` to also navigate to other page when the button is clicked.`,name:`actionHref`,required:!1,type:{name:`enum`,value:[{value:`string`}]}},side:{defaultValue:null,description:`Preferred side of the tooltip to appear from. Use if default side might block important content.`,name:`side`,required:!1,type:{name:`enum`,value:[{value:`"top"`},{value:`"bottom"`},{value:`"left"`},{value:`"right"`}]}},autoScroll:{defaultValue:{value:`true`},description:`If true, the tooltip will automatically scroll into view when it is opened.`,name:`autoScroll`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},dataset:{defaultValue:null,description:``,name:`dataset`,required:!1,type:{name:`enum`,value:[{value:`Dataset`}]}},counter:{defaultValue:null,description:``,name:`counter`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},open:{defaultValue:null,description:``,name:`open`,required:!0,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},onOpenChange:{defaultValue:null,description:``,name:`onOpenChange`,required:!0,type:{name:`(open: boolean) => void`}},ref:{defaultValue:null,description:"Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}",name:`ref`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`(instance: HTMLButtonElement | null) => void`},{value:`RefObject<HTMLButtonElement>`}]}},key:{defaultValue:null,description:``,name:`key`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`bigint`}]}}}}}catch{}try{K.displayName=`OnboardingTooltip`,K.__docgenInfo={description:`Informational pop-up that highlights specific UI element, e.g. to introduce new feature.
|
|
12
|
+
|
|
13
|
+
The direct child of the component should be html element, DS component,
|
|
14
|
+
or a component that forwards ref to the underlying DOM node.`,displayName:`OnboardingTooltip`,props:{title:{defaultValue:null,description:``,name:`title`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},text:{defaultValue:null,description:``,name:`text`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},disabled:{defaultValue:null,description:`Disables tooltip completely`,name:`disabled`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},onClose:{defaultValue:null,description:`Called when the tooltip is closed`,name:`onClose`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},actionLabel:{defaultValue:{value:`(
|
|
15
|
+
<FormattedMessage
|
|
16
|
+
id="preply-ds.onboardingTooltip.actionLabel"
|
|
17
|
+
defaultMessage="Got it"
|
|
18
|
+
description="Default onboarding tooltip action label. Used to acknowledge and close the tooltip."
|
|
19
|
+
/>
|
|
20
|
+
)`},description:`Label of the action button`,name:`actionLabel`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},actionOnClick:{defaultValue:null,description:`By default, the action button closes the tooltip.
|
|
21
|
+
|
|
22
|
+
Provide \`actionOnClick\` to also perform other action.`,name:`actionOnClick`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},actionHref:{defaultValue:null,description:`By default, the action button closes the tooltip.
|
|
23
|
+
|
|
24
|
+
Provide \`actionHref\` to also navigate to other page when the button is clicked.`,name:`actionHref`,required:!1,type:{name:`enum`,value:[{value:`string`}]}},side:{defaultValue:null,description:`Preferred side of the tooltip to appear from. Use if default side might block important content.`,name:`side`,required:!1,type:{name:`enum`,value:[{value:`"top"`},{value:`"bottom"`},{value:`"left"`},{value:`"right"`}]}},autoScroll:{defaultValue:{value:`true`},description:`If true, the tooltip will automatically scroll into view when it is opened.`,name:`autoScroll`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},dataset:{defaultValue:null,description:``,name:`dataset`,required:!1,type:{name:`enum`,value:[{value:`Dataset`}]}},ref:{defaultValue:null,description:"Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}",name:`ref`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`(instance: HTMLButtonElement | null) => void`},{value:`RefObject<HTMLButtonElement>`}]}},key:{defaultValue:null,description:``,name:`key`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`bigint`}]}}}}}catch{}}));export{K as n,q as r,G as t};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{n as i,r as a}from"./OnboardingTooltip-D8NhfEzc.js";import{n as o,t as s}from"./IconButton-CUt4Aks_.js";import{n as c,t as l}from"./TokyoUIFav-D3EBPocg.js";var u,d,f,p,m,h,g,_,v;t((()=>{u=e(n(),1),a(),o(),c(),d=r(),f={title:`Components/OnboardingTooltip`,component:i,parameters:{preventIframeFromScrollingParent:!0,docs:{story:{inline:!1,height:250},description:{component:`Are you looking for a step-by-step tour? Check out [OnboardingTour](/docs/components-onboardingtour--docs).
|
|
2
|
+
|
|
3
|
+
Also see [Composing Popovers](/docs/guides-composing-popovers--docs) for usage with other popovers.`}}},decorators:[e=>(0,d.jsx)(`div`,{style:{margin:`auto`,width:`max-content`},children:e()})]},p=e=>[!1,!1],m=e=>e=>{},h=()=>{let[e,t]=p(`new-feature`),n=m(`new-feature`);return(0,d.jsx)(i,{title:`New Feature Available!`,text:`We've added an exciting new feature to enhance your experience.`,disabled:t||e,onClose:()=>n(!0),children:(0,d.jsx)(s,{variant:`ghost`,svg:(0,d.jsx)(l,{}),assistiveText:`Favorite`})})},h.storyName=`OnboardingTooltip`,g={parameters:{chromatic:{disableSnapshot:!0},docs:{source:{type:`dynamic`}}},render:()=>(0,d.jsx)(i,{title:`New Feature Available!`,text:`We've added an exciting new feature to enhance your experience.`,children:(0,d.jsx)((0,u.forwardRef)(function(e,t){return(0,d.jsx)(`button`,{...e,ref:t})}),{children:`Custom child`})})},_={tags:[`!autodocs`],args:{title:`New Feature Available!`,text:`We've added an exciting new feature to enhance your experience.`,disabled:!1,onClose:()=>{},children:(0,d.jsx)(s,{variant:`ghost`,svg:(0,d.jsx)(l,{}),assistiveText:`Favorite`})},argTypes:{title:{control:`text`},text:{control:`text`},actionLabel:{control:`text`},actionOnClick:{control:!1},actionHref:{control:`text`},disabled:{control:`boolean`},dataset:{control:`object`},onClose:{control:!1},children:{control:!1}},parameters:{docs:{story:{height:450}},chromatic:{disableSnapshot:!0}},decorators:[e=>(0,d.jsx)(`div`,{style:{minHeight:`100vh`,display:`flex`},children:(0,d.jsx)(`div`,{style:{margin:`auto`,width:`max-content`},children:e()})})]},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`() => {
|
|
4
|
+
const [wasTooltipSeen, loading] = useIsFeatureActive('new-feature');
|
|
5
|
+
const setTooltipSeen = useToggleFeature('new-feature');
|
|
6
|
+
return <OnboardingTooltip title="New Feature Available!" text="We've added an exciting new feature to enhance your experience." disabled={loading || wasTooltipSeen} onClose={() => setTooltipSeen(true)}>
|
|
7
|
+
<IconButton variant="ghost" svg={<TokyoUIFav />} assistiveText="Favorite" />
|
|
8
|
+
</OnboardingTooltip>;
|
|
9
|
+
}`,...h.parameters?.docs?.source},description:{story:"Basic usage of the onboarding tooltip.\n\nUse `disabled` and `onClose` (or `actionOnClick`) props to control tooltip's visibility (We recommend using FeatureToggles for this)",...h.parameters?.docs?.description}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
10
|
+
parameters: {
|
|
11
|
+
chromatic: {
|
|
12
|
+
disableSnapshot: true
|
|
13
|
+
},
|
|
14
|
+
docs: {
|
|
15
|
+
source: {
|
|
16
|
+
type: 'dynamic'
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
render: () => {
|
|
21
|
+
const CustomButton = forwardRef<HTMLButtonElement, {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
}>(function CustomButton(props, ref) {
|
|
24
|
+
return <button {...props} ref={ref} />;
|
|
25
|
+
});
|
|
26
|
+
return <OnboardingTooltip title="New Feature Available!" text="We've added an exciting new feature to enhance your experience.">
|
|
27
|
+
<CustomButton>Custom child</CustomButton>
|
|
28
|
+
</OnboardingTooltip>;
|
|
29
|
+
}
|
|
30
|
+
}`,...g.parameters?.docs?.source},description:{story:`The onboarding tooltip works out of the box with html elements and DS components as children.
|
|
31
|
+
|
|
32
|
+
If you need to wrap a custom component with the onboarding tooltip, component should forward
|
|
33
|
+
the ref and spread props to the underlying DOM node:
|
|
34
|
+
|
|
35
|
+
\`\`\`tsx
|
|
36
|
+
const CustomButton = forwardRef<HTMLButtonElement, { children: ReactNode }>(
|
|
37
|
+
(props, ref) => {
|
|
38
|
+
return <button {...props} ref={ref} />;
|
|
39
|
+
},
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
<OnboardingTooltip
|
|
43
|
+
title="New Feature Available!"
|
|
44
|
+
text="We've added an exciting new feature to enhance your experience."
|
|
45
|
+
>
|
|
46
|
+
<CustomButton>Custom child</CustomButton>
|
|
47
|
+
</OnboardingTooltip>
|
|
48
|
+
\`\`\``,...g.parameters?.docs?.description}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
49
|
+
tags: ['!autodocs'],
|
|
50
|
+
args: {
|
|
51
|
+
title: 'New Feature Available!',
|
|
52
|
+
text: "We've added an exciting new feature to enhance your experience.",
|
|
53
|
+
disabled: false,
|
|
54
|
+
onClose: () => {},
|
|
55
|
+
children: <IconButton variant="ghost" svg={<TokyoUIFav />} assistiveText="Favorite" />
|
|
56
|
+
},
|
|
57
|
+
argTypes: {
|
|
58
|
+
title: {
|
|
59
|
+
control: 'text'
|
|
60
|
+
},
|
|
61
|
+
text: {
|
|
62
|
+
control: 'text'
|
|
63
|
+
},
|
|
64
|
+
actionLabel: {
|
|
65
|
+
control: 'text'
|
|
66
|
+
},
|
|
67
|
+
actionOnClick: {
|
|
68
|
+
control: false
|
|
69
|
+
},
|
|
70
|
+
actionHref: {
|
|
71
|
+
control: 'text'
|
|
72
|
+
},
|
|
73
|
+
disabled: {
|
|
74
|
+
control: 'boolean'
|
|
75
|
+
},
|
|
76
|
+
dataset: {
|
|
77
|
+
control: 'object'
|
|
78
|
+
},
|
|
79
|
+
onClose: {
|
|
80
|
+
control: false
|
|
81
|
+
},
|
|
82
|
+
children: {
|
|
83
|
+
control: false
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
parameters: {
|
|
87
|
+
docs: {
|
|
88
|
+
story: {
|
|
89
|
+
height: 450
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
chromatic: {
|
|
93
|
+
disableSnapshot: true
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
decorators: [story => <div style={{
|
|
97
|
+
minHeight: '100vh',
|
|
98
|
+
display: 'flex'
|
|
99
|
+
}}>
|
|
100
|
+
<div style={{
|
|
101
|
+
margin: 'auto',
|
|
102
|
+
width: 'max-content'
|
|
103
|
+
}}>
|
|
104
|
+
{story()}
|
|
105
|
+
</div>
|
|
106
|
+
</div>]
|
|
107
|
+
}`,..._.parameters?.docs?.source}}},v=[`Default`,`CustomChildComponent`,`Playground`]}))();export{g as CustomChildComponent,h as Default,_ as Playground,v as __namedExportsOrder,f as default};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{n as i,t as a}from"./Button-DnVrHohm.js";import{n as o,r as s}from"./OnboardingTooltip-D8NhfEzc.js";import{n as c,t as l}from"./IconButton-CUt4Aks_.js";import{n as u,t as d}from"./LayoutFlex-DdWp4cl3.js";import{n as f,t as p}from"./TokyoUIFav-D3EBPocg.js";function m(e){return new Promise(t=>setTimeout(t,e))}var h,g,_,v,y,b,x,S,C,w;t((()=>{e(n(),1),s(),c(),f(),i(),u(),h=r(),{within:g,userEvent:_,waitFor:v,expect:y}=__STORYBOOK_MODULE_TEST__,b={title:`Components/OnboardingTooltip/Tests`,component:o,parameters:{layout:`centered`,controls:{disable:!0},chromatic:{disableSnapshot:!0}},tags:[`!autodocs`,`!a11y-test`,`test`],decorators:[e=>(0,h.jsx)(`div`,{style:{margin:`100px 0`},children:e()})],args:{title:`Title`,text:`Body text`,actionLabel:`Action label`,disabled:!1,onClose:()=>{},dataset:{testid:`tooltip`},children:(0,h.jsx)(l,{svg:(0,h.jsx)(p,{}),assistiveText:`Favorite`})}},x={play:async({canvasElement:e,step:t})=>{let n=g(e);await t(`wait for tooltip to be visible`,async()=>{await v(()=>y(n.getByTestId(`tooltip`)).toBeVisible())}),await t(`close the tooltip`,()=>{let e=g(n.getByTestId(`tooltip`)).getByTestId(`close`);return _.click(e)}),await t(`wait for tooltip to be hidden`,async()=>{await v(()=>y(n.queryByTestId(`tooltip`)).toBeNull())})}},S={play:async({canvasElement:e,step:t})=>{let n=g(e);await t(`wait for tooltip to be visible`,async()=>{await v(()=>y(n.getByTestId(`tooltip`)).toBeVisible())}),await t(`close the tooltip`,()=>{let e=g(n.getByTestId(`tooltip`)).getByTestId(`action`);return _.click(e)}),await t(`wait for tooltip to be hidden`,async()=>{await v(()=>y(n.queryByTestId(`tooltip`)).toBeNull())})}},C={render:e=>(0,h.jsxs)(d,{gap:`24`,direction:`column`,children:[(0,h.jsx)(a,{children:`Click outside the tooltip`}),(0,h.jsx)(o,{...e,children:(0,h.jsx)(l,{svg:(0,h.jsx)(p,{}),assistiveText:`Favorite`})})]}),play:async({canvasElement:e,step:t})=>{let n=g(e);await t(`wait for tooltip to be visible`,async()=>{await v(()=>y(n.getByTestId(`tooltip`)).toBeVisible())}),await t(`click outside the tooltip`,()=>{let e=n.getByText(`Click outside the tooltip`);return _.click(e)}),await t(`check the tooltip remain open`,async()=>{await m(1e3),await y(n.getByTestId(`tooltip`)).toBeVisible()})}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
play: async ({
|
|
3
|
+
canvasElement,
|
|
4
|
+
step
|
|
5
|
+
}) => {
|
|
6
|
+
const canvas = within(canvasElement);
|
|
7
|
+
await step('wait for tooltip to be visible', async () => {
|
|
8
|
+
await waitFor(() => {
|
|
9
|
+
const tooltip = canvas.getByTestId('tooltip');
|
|
10
|
+
return expect(tooltip).toBeVisible();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
await step('close the tooltip', () => {
|
|
14
|
+
const tooltip = within(canvas.getByTestId('tooltip'));
|
|
15
|
+
const closeButton = tooltip.getByTestId('close');
|
|
16
|
+
return userEvent.click(closeButton);
|
|
17
|
+
});
|
|
18
|
+
await step('wait for tooltip to be hidden', async () => {
|
|
19
|
+
await waitFor(() => {
|
|
20
|
+
const tooltip = canvas.queryByTestId('tooltip');
|
|
21
|
+
return expect(tooltip).toBeNull();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}`,...x.parameters?.docs?.source}}},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
26
|
+
play: async ({
|
|
27
|
+
canvasElement,
|
|
28
|
+
step
|
|
29
|
+
}) => {
|
|
30
|
+
const canvas = within(canvasElement);
|
|
31
|
+
await step('wait for tooltip to be visible', async () => {
|
|
32
|
+
await waitFor(() => {
|
|
33
|
+
const tooltip = canvas.getByTestId('tooltip');
|
|
34
|
+
return expect(tooltip).toBeVisible();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
await step('close the tooltip', () => {
|
|
38
|
+
const tooltip = within(canvas.getByTestId('tooltip'));
|
|
39
|
+
const actionButton = tooltip.getByTestId('action');
|
|
40
|
+
return userEvent.click(actionButton);
|
|
41
|
+
});
|
|
42
|
+
await step('wait for tooltip to be hidden', async () => {
|
|
43
|
+
await waitFor(() => {
|
|
44
|
+
const tooltip = canvas.queryByTestId('tooltip');
|
|
45
|
+
return expect(tooltip).toBeNull();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}`,...S.parameters?.docs?.source}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
50
|
+
render: args => {
|
|
51
|
+
return <LayoutFlex gap="24" direction="column">
|
|
52
|
+
<Button>Click outside the tooltip</Button>
|
|
53
|
+
<OnboardingTooltip {...args}>
|
|
54
|
+
<IconButton svg={<TokyoUIFav />} assistiveText="Favorite" />
|
|
55
|
+
</OnboardingTooltip>
|
|
56
|
+
</LayoutFlex>;
|
|
57
|
+
},
|
|
58
|
+
play: async ({
|
|
59
|
+
canvasElement,
|
|
60
|
+
step
|
|
61
|
+
}) => {
|
|
62
|
+
const canvas = within(canvasElement);
|
|
63
|
+
await step('wait for tooltip to be visible', async () => {
|
|
64
|
+
await waitFor(() => {
|
|
65
|
+
const tooltip = canvas.getByTestId('tooltip');
|
|
66
|
+
return expect(tooltip).toBeVisible();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
await step('click outside the tooltip', () => {
|
|
70
|
+
const outsideButton = canvas.getByText('Click outside the tooltip');
|
|
71
|
+
return userEvent.click(outsideButton);
|
|
72
|
+
});
|
|
73
|
+
await step('check the tooltip remain open', async () => {
|
|
74
|
+
await delay(1000);
|
|
75
|
+
const tooltip = canvas.getByTestId('tooltip');
|
|
76
|
+
await expect(tooltip).toBeVisible();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}`,...C.parameters?.docs?.source}}},w=[`Default`,`CloseWithActionButton`,`DoNotCloseOnInteractionOutside`]}))();export{S as CloseWithActionButton,x as Default,C as DoNotCloseOnInteractionOutside,w as __namedExportsOrder,b as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.counter__ArBS-{min-width:max-content;color:var(--c2b191);font-size:var(--f7d879);font-weight:var(--87a7e3);line-height:var(--1cb31f);flex:1;margin:0}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{r as i,t as a}from"./OnboardingTooltip-D8NhfEzc.js";import{i as o,r as s}from"./lib-CXCPi5ID.js";var c,l,u=t((()=>{c=`counter__ArBS-`,l={counter:c}})),d,f,p,m,h,g=t((()=>{d=e(n(),1),i(),u(),s(),f=r(),p=({totalSteps:e,nextActionLabel:t=(0,f.jsx)(o,{id:`preply-ds.onboardingTour.nextActionLabel`,defaultMessage:`Next`,description:`Onboarding tour next action label`}),completeActionLabel:n=(0,f.jsx)(o,{id:`preply-ds.onboardingTour.completeActionLabel`,defaultMessage:`Got it`,description:`Onboarding tour complete action label`}),onClose:r,onComplete:i,onStepChange:a,disabled:s,children:c,ctx:l})=>{let[u,p]=(0,d.useState)(!0),[m,h]=(0,d.useState)(0),g={totalSteps:e,nextActionLabel:t,completeActionLabel:n,onClose:()=>{p(!1),r?.()},active:!s&&u,currentStep:m,onActionClick:()=>{if(m===e-1)i?.(),p(!1);else{let e=m+1;h(e),a?.(e)}}};return(0,f.jsx)(l.Provider,{value:g,children:c})},m=(0,d.forwardRef)(function({ctx:e,...t},n){let r=(0,d.useContext)(e);if(!r)throw Error(`OnboardingTourContext not found`);let{currentStep:i,totalSteps:s,onActionClick:c,onClose:u,active:p,nextActionLabel:m,completeActionLabel:h}=r,g=t.step===s-1,_=t.step===i,v=g?h:m,y=()=>{t.actionOnClick?.(),c()},b=e=>{e||u?.()};return(0,f.jsx)(a,{...t,counter:(0,f.jsx)(`p`,{className:l.counter,children:(0,f.jsx)(o,{id:`preply-ds.onboardingTour.counter`,defaultMessage:`{currentStep} of {totalSteps}`,description:`Onboarding tour step counter, e.g. '1 of 3'`,values:{currentStep:i+1,totalSteps:s}})}),open:p&&_,onOpenChange:b,actionLabel:v,actionOnClick:y,ref:n})}),h=()=>{let e=(0,d.createContext)(null);return{Provider:t=>(0,f.jsx)(p,{...t,ctx:e}),Step:(0,d.forwardRef)(function(t,n){return(0,f.jsx)(m,{...t,ctx:e,ref:n})})}};try{h.displayName=`createOnboardingTour`,h.__docgenInfo={description:`Creates a new onboarding tour.
|
|
2
|
+
|
|
3
|
+
This factory pattern allows multiple independent tours to be nested within each other
|
|
4
|
+
without context conflicts, as each tour maintains its own separate context and state.`,displayName:`createOnboardingTour`,props:{}}}catch{}}));export{g as n,h as t};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import{a as e,n as t}from"./chunk-BneVvdWh.js";import{t as n}from"./react-C7IZe2D1.js";import{t as r}from"./jsx-runtime-C2wGStra.js";import{n as i,t as a}from"./Text-bm2vnOS2.js";import{n as o,t as s}from"./OnboardingTour-DGI3bTQy.js";import{n as c,t as l}from"./LayoutFlex-DdWp4cl3.js";var u,d,f=t((()=>{u=e=>null,d=e=>null;try{u.displayName=`OnboardingTourProvider`,u.__docgenInfo={description:`For some reason, storybook fails to render arg tables for the components
|
|
2
|
+
when they're created with the \`createOnboardingTour\` function.
|
|
3
|
+
|
|
4
|
+
As a workaround, we're manually defining fake components with the same
|
|
5
|
+
props as originals just for props parsing ¯\\_(ツ)_/¯`,displayName:`OnboardingTourProvider`,props:{totalSteps:{defaultValue:null,description:`Total number of steps in the tour`,name:`totalSteps`,required:!0,type:{name:`number`}},nextActionLabel:{defaultValue:{value:`"Next"`},description:`Label for the "Next" action button`,name:`nextActionLabel`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},completeActionLabel:{defaultValue:{value:`"Got it"`},description:`Label for the "Complete" action button`,name:`completeActionLabel`,required:!1,type:{name:`enum`,value:[{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},disabled:{defaultValue:null,description:`Whether the tour is disabled`,name:`disabled`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},onClose:{defaultValue:null,description:`Called when the tour is closed`,name:`onClose`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},onComplete:{defaultValue:null,description:`Called when the tour is completed`,name:`onComplete`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},onStepChange:{defaultValue:null,description:`Called when the current step index changes`,name:`onStepChange`,required:!1,type:{name:`enum`,value:[{value:`(step: number) => void`}]}}}}}catch{}try{d.displayName=`OnboardingTourStep`,d.__docgenInfo={description:``,displayName:`OnboardingTourStep`,props:{title:{defaultValue:null,description:``,name:`title`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},text:{defaultValue:null,description:``,name:`text`,required:!0,type:{name:`enum`,value:[{value:`undefined`},{value:`null`},{value:`string`},{value:`number`},{value:`false`},{value:`true`},{value:`ReactElement<any, string | JSXElementConstructor<any>>`},{value:`Iterable<ReactNode>`},{value:`ReactPortal`}]}},dataset:{defaultValue:null,description:``,name:`dataset`,required:!1,type:{name:`enum`,value:[{value:`Dataset`}]}},side:{defaultValue:null,description:`Preferred side of the tooltip to appear from. Use if default side might block important content.`,name:`side`,required:!1,type:{name:`enum`,value:[{value:`"top"`},{value:`"bottom"`},{value:`"left"`},{value:`"right"`}]}},actionOnClick:{defaultValue:null,description:`By default, the action button closes the tooltip.
|
|
6
|
+
|
|
7
|
+
Provide \`actionOnClick\` to also perform other action.`,name:`actionOnClick`,required:!1,type:{name:`enum`,value:[{value:`() => void`}]}},autoScroll:{defaultValue:{value:`true`},description:`If true, the tooltip will automatically scroll into view when it is opened.`,name:`autoScroll`,required:!1,type:{name:`enum`,value:[{value:`false`},{value:`true`}]}},step:{defaultValue:null,description:`Zero-based step index`,name:`step`,required:!0,type:{name:`number`}}}}}catch{}})),p,m,h,g,_,v,y,b,x;t((()=>{p=e(n(),1),o(),i(),f(),c(),m=r(),h=s(),g={title:`Components/OnboardingTour`,component:u,subcomponents:{OnboardingTourStep:d},parameters:{preventIframeFromScrollingParent:!0,docs:{story:{inline:!1,height:250},description:{component:`Are you looking for a tooltip to highlight single element? Check out [OnboardingTooltip](/docs/components-onboardingtooltip--docs)`}}},decorators:[e=>(0,m.jsx)(`div`,{style:{margin:`auto`,width:`max-content`},children:e()})]},_=e=>[!1,!1],v=e=>e=>{},y=()=>{let[e,t]=_(`my-tour`),n=v(`my-tour`);return(0,m.jsxs)(h.Provider,{totalSteps:3,disabled:t||e,onComplete:()=>n(!0),children:[(0,m.jsx)(`div`,{style:{height:250},children:(0,m.jsx)(h.Step,{step:0,title:`Step 1`,text:`This is the first step of the onboarding tour.`,children:(0,m.jsx)(a,{children:`Step 1`})})}),(0,m.jsx)(`div`,{style:{height:250},children:(0,m.jsx)(h.Step,{step:1,title:`Step 2`,text:`This is the second step of the onboarding tour.`,children:(0,m.jsx)(a,{children:`Step 2`})})}),(0,m.jsx)(`div`,{style:{height:250},children:(0,m.jsx)(h.Step,{step:2,title:`Step 3`,text:`This is the final step of the onboarding tour.`,children:(0,m.jsx)(a,{children:`Step 3`})})})]})},y.storyName=`OnboardingTour`,b=()=>{let[e,t]=(0,p.useState)(!0);return(0,m.jsx)(h.Provider,{totalSteps:3,children:(0,m.jsxs)(l,{gap:`12`,children:[(0,m.jsx)(h.Step,{step:0,title:`First step`,text:`This is the first step of the onboarding tour.`,children:(0,m.jsx)(a,{children:`Step 1`})}),(0,m.jsx)(h.Step,{step:1,title:`Second step`,text:`This is the second step of the onboarding tour.`,actionOnClick:()=>t(!1),children:(0,m.jsx)(a,{children:`Step 2`})}),!e&&(0,m.jsx)(h.Step,{step:2,title:`Final step`,text:`This is the final step of the onboarding tour.`,children:(0,m.jsx)(a,{children:`Step 3 (I was hidden)`})})]})})},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`() => {
|
|
8
|
+
const [wasTourCompleted, loading] = useIsFeatureActive('my-tour');
|
|
9
|
+
const setTourCompleted = useToggleFeature('my-tour');
|
|
10
|
+
return <Tour.Provider totalSteps={3} disabled={loading || wasTourCompleted} onComplete={() => setTourCompleted(true)}>
|
|
11
|
+
<div style={{
|
|
12
|
+
height: 250
|
|
13
|
+
}}>
|
|
14
|
+
<Tour.Step step={0} title="Step 1" text="This is the first step of the onboarding tour.">
|
|
15
|
+
<Text>Step 1</Text>
|
|
16
|
+
</Tour.Step>
|
|
17
|
+
</div>
|
|
18
|
+
<div style={{
|
|
19
|
+
height: 250
|
|
20
|
+
}}>
|
|
21
|
+
<Tour.Step step={1} title="Step 2" text="This is the second step of the onboarding tour.">
|
|
22
|
+
<Text>Step 2</Text>
|
|
23
|
+
</Tour.Step>
|
|
24
|
+
</div>
|
|
25
|
+
<div style={{
|
|
26
|
+
height: 250
|
|
27
|
+
}}>
|
|
28
|
+
<Tour.Step step={2} title="Step 3" text="This is the final step of the onboarding tour.">
|
|
29
|
+
<Text>Step 3</Text>
|
|
30
|
+
</Tour.Step>
|
|
31
|
+
</div>
|
|
32
|
+
</Tour.Provider>;
|
|
33
|
+
}`,...y.parameters?.docs?.source},description:{story:"Basic usage of the onboarding tour.\n\n- Use `disabled` and `onComplete` (or `onClose`) props to control tour's visibility (We recommend using FeatureToggles for this)\n- Wrap each step element into `Tour.Step` component",...y.parameters?.docs?.description}}},b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`() => {
|
|
34
|
+
const [isStep3Hidden, setIsStep3Hidden] = useState(true);
|
|
35
|
+
return <Tour.Provider totalSteps={3}>
|
|
36
|
+
<LayoutFlex gap="12">
|
|
37
|
+
<Tour.Step step={0} title="First step" text="This is the first step of the onboarding tour.">
|
|
38
|
+
<Text>Step 1</Text>
|
|
39
|
+
</Tour.Step>
|
|
40
|
+
<Tour.Step step={1} title="Second step" text="This is the second step of the onboarding tour." actionOnClick={() => setIsStep3Hidden(false)}>
|
|
41
|
+
<Text>Step 2</Text>
|
|
42
|
+
</Tour.Step>
|
|
43
|
+
{!isStep3Hidden && <Tour.Step step={2} title="Final step" text="This is the final step of the onboarding tour.">
|
|
44
|
+
<Text>Step 3 (I was hidden)</Text>
|
|
45
|
+
</Tour.Step>}
|
|
46
|
+
</LayoutFlex>
|
|
47
|
+
</Tour.Provider>;
|
|
48
|
+
}`,...b.parameters?.docs?.source},description:{story:`Sometimes you need to perform an intermediate action before the tour can continue (e.g. show a modal, switch a tab, etc.)
|
|
49
|
+
|
|
50
|
+
You can do this by using \`actionOnClick\` prop on the Tour.Step component.`,...b.parameters?.docs?.description}}},x=[`Default`,`WithIntermediateAction`]}))();export{y as Default,b as WithIntermediateAction,x as __namedExportsOrder,g as default};
|