@twreporter/react-typescript-components 0.1.0-beta.7 → 0.1.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/lib/button/constants.d.mts +3 -0
- package/lib/button/constants.d.ts +3 -0
- package/lib/button/constants.js +5 -0
- package/lib/button/constants.mjs +3 -0
- package/lib/button/index.d.mts +130 -23
- package/lib/button/index.d.ts +130 -23
- package/lib/button/index.js +11 -207
- package/lib/button/index.mjs +7 -9
- package/lib/button-CO0UXA6C.js +552 -0
- package/lib/button-CO0UXA6C.js.map +1 -0
- package/lib/button-DL6w1ghn.mjs +519 -0
- package/lib/button-DL6w1ghn.mjs.map +1 -0
- package/lib/chunk-BxBTb9qk.js +39 -0
- package/lib/constants/external-links.d.mts +16 -0
- package/lib/constants/external-links.d.ts +16 -0
- package/lib/constants/external-links.js +3 -0
- package/lib/constants/external-links.mjs +3 -0
- package/lib/constants/internal-links.d.mts +51 -0
- package/lib/constants/internal-links.d.ts +51 -0
- package/lib/constants/internal-links.js +3 -0
- package/lib/constants/internal-links.mjs +3 -0
- package/lib/constants/release-branch.d.mts +3 -0
- package/lib/constants/release-branch.d.ts +3 -0
- package/lib/constants/release-branch.js +3 -0
- package/lib/constants/release-branch.mjs +3 -0
- package/lib/constants/request-origins.d.mts +68 -0
- package/lib/constants/request-origins.d.ts +68 -0
- package/lib/constants/request-origins.js +47 -0
- package/lib/constants/request-origins.js.map +1 -0
- package/lib/constants/request-origins.mjs +46 -0
- package/lib/constants/request-origins.mjs.map +1 -0
- package/lib/constants/theme.d.mts +3 -0
- package/lib/constants/theme.d.ts +3 -0
- package/lib/constants/theme.js +3 -0
- package/lib/constants/theme.mjs +3 -0
- package/lib/constants-2TRY2zTK.js +38 -0
- package/lib/constants-2TRY2zTK.js.map +1 -0
- package/lib/constants-BS3rPbaX.d.ts +17 -0
- package/lib/constants-BWFuBApI.mjs +14 -0
- package/lib/constants-BWFuBApI.mjs.map +1 -0
- package/lib/constants-B_NgWFML.d.ts +24 -0
- package/lib/constants-BmxSMOOn.js +36 -0
- package/lib/constants-BmxSMOOn.js.map +1 -0
- package/lib/constants-BqeEbkVD.mjs +20 -0
- package/lib/constants-BqeEbkVD.mjs.map +1 -0
- package/lib/constants-CIX1G5rj.d.mts +24 -0
- package/lib/constants-CMMcn0f-.d.ts +11 -0
- package/lib/constants-COxV6T69.d.mts +11 -0
- package/lib/constants-CQscYQcW.mjs +25 -0
- package/lib/constants-CQscYQcW.mjs.map +1 -0
- package/lib/constants-D7_N9Z7C.d.mts +17 -0
- package/lib/constants-DF_II8Fz.js +43 -0
- package/lib/constants-DF_II8Fz.js.map +1 -0
- package/lib/constants-DQxcqnYL.d.ts +29 -0
- package/lib/constants-DRyQ6AuU.js +15 -0
- package/lib/constants-DRyQ6AuU.js.map +1 -0
- package/lib/constants-DWy9qTkZ.d.mts +22 -0
- package/lib/constants-K2ObjToq.js +26 -0
- package/lib/constants-K2ObjToq.js.map +1 -0
- package/lib/constants-gCmka4Fp.d.ts +22 -0
- package/lib/constants-mrRqEvQT.d.mts +29 -0
- package/lib/constants-oTHAnh6r.mjs +18 -0
- package/lib/constants-oTHAnh6r.mjs.map +1 -0
- package/lib/constants-t0lkfgqP.mjs +9 -0
- package/lib/constants-t0lkfgqP.mjs.map +1 -0
- package/lib/customized-link/external-link.d.mts +3 -7
- package/lib/customized-link/external-link.d.ts +3 -7
- package/lib/customized-link/external-link.js +2 -17
- package/lib/customized-link/external-link.mjs +3 -3
- package/lib/customized-link/index.d.mts +10 -8
- package/lib/customized-link/index.d.ts +10 -8
- package/lib/customized-link/index.js +6 -40
- package/lib/customized-link/index.mjs +5 -5
- package/lib/customized-link/internal-link.d.mts +3 -7
- package/lib/customized-link/internal-link.d.ts +3 -7
- package/lib/customized-link/internal-link.js +3 -19
- package/lib/customized-link/internal-link.mjs +6 -3
- package/lib/customized-link/type.d.mts +2 -9
- package/lib/customized-link/type.d.ts +2 -9
- package/lib/customized-link/type.js +0 -4
- package/lib/customized-link/type.mjs +1 -3
- package/lib/customized-link-BkuKVCKQ.mjs +12 -0
- package/lib/customized-link-BkuKVCKQ.mjs.map +1 -0
- package/lib/customized-link-CK7Xlgdt.js +17 -0
- package/lib/customized-link-CK7Xlgdt.js.map +1 -0
- package/lib/divider/constants.d.mts +3 -0
- package/lib/divider/constants.d.ts +3 -0
- package/lib/divider/constants.js +3 -0
- package/lib/divider/constants.mjs +3 -0
- package/lib/divider/index.d.mts +15 -0
- package/lib/divider/index.d.ts +15 -0
- package/lib/divider/index.js +6 -0
- package/lib/divider/index.mjs +4 -0
- package/lib/divider-Bb3tebJO.mjs +15 -0
- package/lib/divider-Bb3tebJO.mjs.map +1 -0
- package/lib/divider-b3Shh7FV.js +29 -0
- package/lib/divider-b3Shh7FV.js.map +1 -0
- package/lib/dropdown-menu/index.d.mts +17 -0
- package/lib/dropdown-menu/index.d.ts +17 -0
- package/lib/dropdown-menu/index.js +13 -0
- package/lib/dropdown-menu/index.mjs +13 -0
- package/lib/dropdown-menu-Da9XSi5T.mjs +135 -0
- package/lib/dropdown-menu-Da9XSi5T.mjs.map +1 -0
- package/lib/dropdown-menu-pmVRiPhM.js +180 -0
- package/lib/dropdown-menu-pmVRiPhM.js.map +1 -0
- package/lib/external-link-2XoC1_oL.d.ts +9 -0
- package/lib/external-link-Bq-CThgd.d.mts +9 -0
- package/lib/external-link-CEDvlQYo.js +23 -0
- package/lib/external-link-CEDvlQYo.js.map +1 -0
- package/lib/external-link-Cx9S31Ye.mjs +16 -0
- package/lib/external-link-Cx9S31Ye.mjs.map +1 -0
- package/lib/external-links-2b4M_rcA.mjs +17 -0
- package/lib/external-links-2b4M_rcA.mjs.map +1 -0
- package/lib/external-links-SfJjb48j.js +23 -0
- package/lib/external-links-SfJjb48j.js.map +1 -0
- package/lib/hamburger-menu/index.d.mts +7 -0
- package/lib/hamburger-menu/index.d.ts +6 -0
- package/lib/hamburger-menu/index.js +21 -0
- package/lib/hamburger-menu/index.mjs +21 -0
- package/lib/hamburger-menu-CMHvrA25.js +486 -0
- package/lib/hamburger-menu-CMHvrA25.js.map +1 -0
- package/lib/hamburger-menu-UYqFVwiu.mjs +471 -0
- package/lib/hamburger-menu-UYqFVwiu.mjs.map +1 -0
- package/lib/header/index.d.mts +26 -0
- package/lib/header/index.d.ts +25 -0
- package/lib/header/index.js +468 -0
- package/lib/header/index.js.map +1 -0
- package/lib/header/index.mjs +462 -0
- package/lib/header/index.mjs.map +1 -0
- package/lib/heading-CWQISn4r.js +75 -0
- package/lib/heading-CWQISn4r.js.map +1 -0
- package/lib/heading-Dt90Ed74.mjs +37 -0
- package/lib/heading-Dt90Ed74.mjs.map +1 -0
- package/lib/icons/constants.d.mts +3 -0
- package/lib/icons/constants.d.ts +3 -0
- package/lib/icons/constants.js +5 -0
- package/lib/icons/constants.mjs +3 -0
- package/lib/icons/index.d.mts +40 -0
- package/lib/icons/index.d.ts +40 -0
- package/lib/icons/index.js +12 -0
- package/lib/icons/index.mjs +5 -0
- package/lib/icons-CtVvOt3y.mjs +57 -0
- package/lib/icons-CtVvOt3y.mjs.map +1 -0
- package/lib/icons-teg1h03Q.js +107 -0
- package/lib/icons-teg1h03Q.js.map +1 -0
- package/lib/index-Ej3agYJF.d.mts +5 -0
- package/lib/index-H3peA2d_.d.ts +5 -0
- package/lib/internal-link-CqTu3Yi5.js +2278 -0
- package/lib/internal-link-CqTu3Yi5.js.map +1 -0
- package/lib/internal-link-DCSEl1jM.d.ts +9 -0
- package/lib/internal-link-NQb751uB.mjs +2299 -0
- package/lib/internal-link-NQb751uB.mjs.map +1 -0
- package/lib/internal-link-P1QwjWbL.d.mts +9 -0
- package/lib/internal-links-BF-974mA.mjs +52 -0
- package/lib/internal-links-BF-974mA.mjs.map +1 -0
- package/lib/internal-links-CBkMU8cY.js +58 -0
- package/lib/internal-links-CBkMU8cY.js.map +1 -0
- package/lib/logo/constants.d.mts +3 -0
- package/lib/logo/constants.d.ts +3 -0
- package/lib/logo/constants.js +5 -0
- package/lib/logo/constants.mjs +3 -0
- package/lib/logo/index.d.mts +42 -0
- package/lib/logo/index.d.ts +42 -0
- package/lib/logo/index.js +8 -0
- package/lib/logo/index.mjs +5 -0
- package/lib/logo-CaawAABC.mjs +64 -0
- package/lib/logo-CaawAABC.mjs.map +1 -0
- package/lib/logo-rQxaglyD.js +83 -0
- package/lib/logo-rQxaglyD.js.map +1 -0
- package/lib/paragraph-BWXQNQtX.mjs +30 -0
- package/lib/paragraph-BWXQNQtX.mjs.map +1 -0
- package/lib/paragraph-CJvb0_cM.js +56 -0
- package/lib/paragraph-CJvb0_cM.js.map +1 -0
- package/lib/release-branch-CRZV4Ivz.js +18 -0
- package/lib/release-branch-CRZV4Ivz.js.map +1 -0
- package/lib/release-branch-CsBbhuYE.d.ts +14 -0
- package/lib/release-branch-DIEpb2N0.d.mts +14 -0
- package/lib/release-branch-DNCD1uH_.mjs +12 -0
- package/lib/release-branch-DNCD1uH_.mjs.map +1 -0
- package/lib/styles.css +965 -0
- package/lib/text/constants.d.mts +3 -0
- package/lib/text/constants.d.ts +3 -0
- package/lib/text/constants.js +4 -0
- package/lib/text/constants.mjs +3 -0
- package/lib/text/heading.d.mts +22 -20
- package/lib/text/heading.d.ts +22 -20
- package/lib/text/heading.js +9 -70
- package/lib/text/heading.mjs +4 -4
- package/lib/text/paragraph.d.mts +18 -16
- package/lib/text/paragraph.d.ts +18 -16
- package/lib/text/paragraph.js +6 -57
- package/lib/text/paragraph.mjs +4 -4
- package/lib/theme-BDGfJ8n-.d.ts +13 -0
- package/lib/theme-BG6yZVj-.mjs +11 -0
- package/lib/theme-BG6yZVj-.mjs.map +1 -0
- package/lib/theme-BqjiyFsg.d.mts +13 -0
- package/lib/theme-DDBlIbeS.js +17 -0
- package/lib/theme-DDBlIbeS.js.map +1 -0
- package/lib/title-bar/index.d.mts +55 -23
- package/lib/title-bar/index.d.ts +55 -23
- package/lib/title-bar/index.js +131 -403
- package/lib/title-bar/index.js.map +1 -1
- package/lib/title-bar/index.mjs +140 -25
- package/lib/title-bar/index.mjs.map +1 -1
- package/lib/type-C4hJK9H9.d.ts +11 -0
- package/lib/type-DeNBwt-o.d.mts +11 -0
- package/lib/types/index.d.mts +2 -3
- package/lib/types/index.d.ts +2 -3
- package/lib/types/index.js +0 -4
- package/lib/types/index.mjs +1 -3
- package/package.json +11 -6
- package/lib/button/components/text-button/index.d.mts +0 -24
- package/lib/button/components/text-button/index.d.ts +0 -24
- package/lib/button/components/text-button/index.js +0 -202
- package/lib/button/components/text-button/index.js.map +0 -1
- package/lib/button/components/text-button/index.mjs +0 -8
- package/lib/button/components/text-button/index.mjs.map +0 -1
- package/lib/button/components/text-button/theme.d.mts +0 -11
- package/lib/button/components/text-button/theme.d.ts +0 -11
- package/lib/button/components/text-button/theme.js +0 -65
- package/lib/button/components/text-button/theme.js.map +0 -1
- package/lib/button/components/text-button/theme.mjs +0 -5
- package/lib/button/components/text-button/theme.mjs.map +0 -1
- package/lib/button/constant.d.mts +0 -11
- package/lib/button/constant.d.ts +0 -11
- package/lib/button/constant.js +0 -13
- package/lib/button/constant.js.map +0 -1
- package/lib/button/constant.mjs +0 -3
- package/lib/button/constant.mjs.map +0 -1
- package/lib/button/enum.d.mts +0 -11
- package/lib/button/enum.d.ts +0 -11
- package/lib/button/enum.js +0 -19
- package/lib/button/enum.js.map +0 -1
- package/lib/button/enum.mjs +0 -3
- package/lib/button/enum.mjs.map +0 -1
- package/lib/button/index.js.map +0 -1
- package/lib/button/index.mjs.map +0 -1
- package/lib/button/stories/text-button.stories.d.mts +0 -55
- package/lib/button/stories/text-button.stories.d.ts +0 -55
- package/lib/button/stories/text-button.stories.js +0 -252
- package/lib/button/stories/text-button.stories.js.map +0 -1
- package/lib/button/stories/text-button.stories.mjs +0 -35
- package/lib/button/stories/text-button.stories.mjs.map +0 -1
- package/lib/chunk-6DXA3EX7.mjs +0 -35
- package/lib/chunk-6DXA3EX7.mjs.map +0 -1
- package/lib/chunk-7NJDHQ2X.mjs +0 -56
- package/lib/chunk-7NJDHQ2X.mjs.map +0 -1
- package/lib/chunk-ELECTE3D.mjs +0 -8
- package/lib/chunk-ELECTE3D.mjs.map +0 -1
- package/lib/chunk-FF422IYY.mjs +0 -38
- package/lib/chunk-FF422IYY.mjs.map +0 -1
- package/lib/chunk-FVKIUNIP.mjs +0 -58
- package/lib/chunk-FVKIUNIP.mjs.map +0 -1
- package/lib/chunk-GQWO45DN.mjs +0 -32
- package/lib/chunk-GQWO45DN.mjs.map +0 -1
- package/lib/chunk-HQG6Q2EY.mjs +0 -42
- package/lib/chunk-HQG6Q2EY.mjs.map +0 -1
- package/lib/chunk-JB4TYHDE.mjs +0 -11
- package/lib/chunk-JB4TYHDE.mjs.map +0 -1
- package/lib/chunk-JFT6JILC.mjs +0 -12
- package/lib/chunk-JFT6JILC.mjs.map +0 -1
- package/lib/chunk-JHLT5GDV.mjs +0 -50
- package/lib/chunk-JHLT5GDV.mjs.map +0 -1
- package/lib/chunk-QOLETTSG.mjs +0 -28
- package/lib/chunk-QOLETTSG.mjs.map +0 -1
- package/lib/chunk-U22UKMAJ.mjs +0 -84
- package/lib/chunk-U22UKMAJ.mjs.map +0 -1
- package/lib/chunk-UM7RNC2Y.mjs +0 -14
- package/lib/chunk-UM7RNC2Y.mjs.map +0 -1
- package/lib/chunk-URJXIWFX.mjs +0 -16
- package/lib/chunk-URJXIWFX.mjs.map +0 -1
- package/lib/chunk-X2UWIBNH.mjs +0 -16
- package/lib/chunk-X2UWIBNH.mjs.map +0 -1
- package/lib/chunk-XO7SDD7W.mjs +0 -17
- package/lib/chunk-XO7SDD7W.mjs.map +0 -1
- package/lib/chunk-ZALXWB2J.mjs +0 -27
- package/lib/chunk-ZALXWB2J.mjs.map +0 -1
- package/lib/customized-link/external-link.js.map +0 -1
- package/lib/customized-link/external-link.mjs.map +0 -1
- package/lib/customized-link/index.js.map +0 -1
- package/lib/customized-link/index.mjs.map +0 -1
- package/lib/customized-link/internal-link.js.map +0 -1
- package/lib/customized-link/internal-link.mjs.map +0 -1
- package/lib/customized-link/type.js.map +0 -1
- package/lib/customized-link/type.mjs.map +0 -1
- package/lib/storybook/utils/get-enum-arg.d.mts +0 -19
- package/lib/storybook/utils/get-enum-arg.d.ts +0 -19
- package/lib/storybook/utils/get-enum-arg.js +0 -31
- package/lib/storybook/utils/get-enum-arg.js.map +0 -1
- package/lib/storybook/utils/get-enum-arg.mjs +0 -3
- package/lib/storybook/utils/get-enum-arg.mjs.map +0 -1
- package/lib/styles.css.map +0 -1
- package/lib/styles.d.mts +0 -2
- package/lib/styles.d.ts +0 -2
- package/lib/text/enum/index.d.mts +0 -15
- package/lib/text/enum/index.d.ts +0 -15
- package/lib/text/enum/index.js +0 -17
- package/lib/text/enum/index.js.map +0 -1
- package/lib/text/enum/index.mjs +0 -3
- package/lib/text/enum/index.mjs.map +0 -1
- package/lib/text/heading.js.map +0 -1
- package/lib/text/heading.mjs.map +0 -1
- package/lib/text/paragraph.js.map +0 -1
- package/lib/text/paragraph.mjs.map +0 -1
- package/lib/text/stories/heading.stories.d.mts +0 -35
- package/lib/text/stories/heading.stories.d.ts +0 -35
- package/lib/text/stories/heading.stories.js +0 -131
- package/lib/text/stories/heading.stories.js.map +0 -1
- package/lib/text/stories/heading.stories.mjs +0 -50
- package/lib/text/stories/heading.stories.mjs.map +0 -1
- package/lib/text/stories/paragraph.stories.d.mts +0 -33
- package/lib/text/stories/paragraph.stories.d.ts +0 -33
- package/lib/text/stories/paragraph.stories.js +0 -108
- package/lib/text/stories/paragraph.stories.js.map +0 -1
- package/lib/text/stories/paragraph.stories.mjs +0 -40
- package/lib/text/stories/paragraph.stories.mjs.map +0 -1
- package/lib/title-bar/components/title-tab/hook.d.mts +0 -5
- package/lib/title-bar/components/title-tab/hook.d.ts +0 -5
- package/lib/title-bar/components/title-tab/hook.js +0 -34
- package/lib/title-bar/components/title-tab/hook.js.map +0 -1
- package/lib/title-bar/components/title-tab/hook.mjs +0 -3
- package/lib/title-bar/components/title-tab/hook.mjs.map +0 -1
- package/lib/title-bar/components/title-tab/index.d.mts +0 -11
- package/lib/title-bar/components/title-tab/index.d.ts +0 -11
- package/lib/title-bar/components/title-tab/index.js +0 -367
- package/lib/title-bar/components/title-tab/index.js.map +0 -1
- package/lib/title-bar/components/title-tab/index.mjs +0 -16
- package/lib/title-bar/components/title-tab/index.mjs.map +0 -1
- package/lib/title-bar/components/title-tab/tab-item.d.mts +0 -10
- package/lib/title-bar/components/title-tab/tab-item.d.ts +0 -10
- package/lib/title-bar/components/title-tab/tab-item.js +0 -250
- package/lib/title-bar/components/title-tab/tab-item.js.map +0 -1
- package/lib/title-bar/components/title-tab/tab-item.mjs +0 -13
- package/lib/title-bar/components/title-tab/tab-item.mjs.map +0 -1
- package/lib/title-bar/components/title-tab/type.d.mts +0 -8
- package/lib/title-bar/components/title-tab/type.d.ts +0 -8
- package/lib/title-bar/components/title-tab/type.js +0 -4
- package/lib/title-bar/components/title-tab/type.js.map +0 -1
- package/lib/title-bar/components/title-tab/type.mjs +0 -3
- package/lib/title-bar/components/title-tab/type.mjs.map +0 -1
- package/lib/title-bar/components/title1.d.mts +0 -10
- package/lib/title-bar/components/title1.d.ts +0 -10
- package/lib/title-bar/components/title1.js +0 -123
- package/lib/title-bar/components/title1.js.map +0 -1
- package/lib/title-bar/components/title1.mjs +0 -6
- package/lib/title-bar/components/title1.mjs.map +0 -1
- package/lib/title-bar/components/title2.d.mts +0 -11
- package/lib/title-bar/components/title2.d.ts +0 -11
- package/lib/title-bar/components/title2.js +0 -131
- package/lib/title-bar/components/title2.js.map +0 -1
- package/lib/title-bar/components/title2.mjs +0 -6
- package/lib/title-bar/components/title2.mjs.map +0 -1
- package/lib/title-bar/stories/title-tab.stories.d.mts +0 -17
- package/lib/title-bar/stories/title-tab.stories.d.ts +0 -17
- package/lib/title-bar/stories/title-tab.stories.js +0 -391
- package/lib/title-bar/stories/title-tab.stories.js.map +0 -1
- package/lib/title-bar/stories/title-tab.stories.mjs +0 -39
- package/lib/title-bar/stories/title-tab.stories.mjs.map +0 -1
- package/lib/title-bar/stories/title1.stories.d.mts +0 -18
- package/lib/title-bar/stories/title1.stories.d.ts +0 -18
- package/lib/title-bar/stories/title1.stories.js +0 -155
- package/lib/title-bar/stories/title1.stories.js.map +0 -1
- package/lib/title-bar/stories/title1.stories.mjs +0 -35
- package/lib/title-bar/stories/title1.stories.mjs.map +0 -1
- package/lib/title-bar/stories/title2.stories.d.mts +0 -18
- package/lib/title-bar/stories/title2.stories.d.ts +0 -18
- package/lib/title-bar/stories/title2.stories.js +0 -304
- package/lib/title-bar/stories/title2.stories.js.map +0 -1
- package/lib/title-bar/stories/title2.stories.mjs +0 -38
- package/lib/title-bar/stories/title2.stories.mjs.map +0 -1
- package/lib/types/index.js.map +0 -1
- package/lib/types/index.mjs.map +0 -1
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
const require_chunk = require('../chunk-BxBTb9qk.js');
|
|
2
|
+
require('../constants-BmxSMOOn.js');
|
|
3
|
+
require('../constants-K2ObjToq.js');
|
|
4
|
+
require('../paragraph-CJvb0_cM.js');
|
|
5
|
+
const require_theme = require('../theme-DDBlIbeS.js');
|
|
6
|
+
const require_button = require('../button-CO0UXA6C.js');
|
|
7
|
+
const require_external_links = require('../external-links-SfJjb48j.js');
|
|
8
|
+
const require_internal_links = require('../internal-links-CBkMU8cY.js');
|
|
9
|
+
const require_release_branch = require('../release-branch-CRZV4Ivz.js');
|
|
10
|
+
const require_external_link = require('../external-link-CEDvlQYo.js');
|
|
11
|
+
const require_internal_link = require('../internal-link-CqTu3Yi5.js');
|
|
12
|
+
require('../customized-link-CK7Xlgdt.js');
|
|
13
|
+
require('../constants-DRyQ6AuU.js');
|
|
14
|
+
const require_divider = require('../divider-b3Shh7FV.js');
|
|
15
|
+
const require_dropdown_menu = require('../dropdown-menu-pmVRiPhM.js');
|
|
16
|
+
require('../constants-DF_II8Fz.js');
|
|
17
|
+
const require_icons = require('../icons-teg1h03Q.js');
|
|
18
|
+
const require_constants$4 = require('../constants-2TRY2zTK.js');
|
|
19
|
+
const require_hamburger_menu = require('../hamburger-menu-CMHvrA25.js');
|
|
20
|
+
const require_logo = require('../logo-rQxaglyD.js');
|
|
21
|
+
let react = require("react");
|
|
22
|
+
react = require_chunk.__toESM(react);
|
|
23
|
+
let clsx = require("clsx");
|
|
24
|
+
clsx = require_chunk.__toESM(clsx);
|
|
25
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
|
|
27
|
+
let react_transition_group = require("react-transition-group");
|
|
28
|
+
react_transition_group = require_chunk.__toESM(react_transition_group);
|
|
29
|
+
let lodash_map = require("lodash/map");
|
|
30
|
+
lodash_map = require_chunk.__toESM(lodash_map);
|
|
31
|
+
|
|
32
|
+
//#region src/header/constants/z-index.ts
|
|
33
|
+
const ZIndex = {
|
|
34
|
+
tabBarMobile: "z-10",
|
|
35
|
+
tabBarTablet: "z-3",
|
|
36
|
+
hamburger: "z-4",
|
|
37
|
+
header: "z-3",
|
|
38
|
+
topRow: "z-2",
|
|
39
|
+
channel: "z-1"
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/header/constants/animation.ts
|
|
44
|
+
const ANIMATION = {
|
|
45
|
+
step1Duration: "duration-[200ms]",
|
|
46
|
+
step2Delay: "delay-[150ms]",
|
|
47
|
+
step2Duration: "duration-[50ms]",
|
|
48
|
+
step3Delay: "delay-[150ms]",
|
|
49
|
+
step3Duration: "duration-[200ms]"
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/header/components/top-row/icons.tsx
|
|
54
|
+
const Icons = ({ releaseBranch = require_release_branch.RELEASE_BRANCH.master, theme = require_theme.THEME.normal }) => {
|
|
55
|
+
const { isLinkExternal } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
56
|
+
const LinkComponent = isLinkExternal ? require_external_link.external_link_default : require_internal_link.internal_link_default;
|
|
57
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
58
|
+
className: "ml-[24px] flex flex-row gap-[16px]",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.icon_button_default, {
|
|
61
|
+
iconComponent: require_icons.Search(releaseBranch),
|
|
62
|
+
theme
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
65
|
+
to: require_internal_links.INTERNAL_LINKS.myReading.index,
|
|
66
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.icon_button_default, {
|
|
67
|
+
iconComponent: require_icons.KidStar(releaseBranch),
|
|
68
|
+
theme
|
|
69
|
+
})
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
72
|
+
to: require_internal_links.INTERNAL_LINKS.account.index,
|
|
73
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.icon_button_default, {
|
|
74
|
+
iconComponent: require_icons.Member(releaseBranch),
|
|
75
|
+
theme
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region src/header/utils/theme.ts
|
|
84
|
+
const selectLogoType = (theme) => {
|
|
85
|
+
switch (theme) {
|
|
86
|
+
case require_theme.THEME.photography:
|
|
87
|
+
case require_theme.THEME.transparent: return require_constants$4.LOGO_TYPE.white;
|
|
88
|
+
default: return require_constants$4.LOGO_TYPE.default;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const selectHeaderTheme = (theme) => {
|
|
92
|
+
switch (theme) {
|
|
93
|
+
case require_theme.THEME.photography: return {
|
|
94
|
+
bgColor: "bg-photo-dark",
|
|
95
|
+
topRowBgColor: "bg-photo-dark"
|
|
96
|
+
};
|
|
97
|
+
case require_theme.THEME.transparent: return {
|
|
98
|
+
bgColor: "bg-opacity-black-02",
|
|
99
|
+
topRowBgColor: "bg-transparent"
|
|
100
|
+
};
|
|
101
|
+
case require_theme.THEME.index: return {
|
|
102
|
+
bgColor: "bg-gray-white",
|
|
103
|
+
topRowBgColor: "bg-gray-white"
|
|
104
|
+
};
|
|
105
|
+
default: return {
|
|
106
|
+
bgColor: "bg-gray-100",
|
|
107
|
+
topRowBgColor: "bg-gray-100"
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const selectSloganTheme = (theme) => {
|
|
112
|
+
switch (theme) {
|
|
113
|
+
case require_theme.THEME.photography:
|
|
114
|
+
case require_theme.THEME.transparent: return "text-gray-white";
|
|
115
|
+
default: return "text-gray-800";
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/header/components/top-row/index.tsx
|
|
121
|
+
const TopRow = ({ topRowBgColor, logoType }) => {
|
|
122
|
+
const { toUseNarrow, releaseBranch, theme, isLinkExternal } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
123
|
+
const { toggleHamburger } = (0, react.useContext)(require_dropdown_menu.HamburgerContext);
|
|
124
|
+
const LinkComponent = isLinkExternal ? require_external_link.external_link_default : require_internal_link.internal_link_default;
|
|
125
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
126
|
+
className: (0, clsx.default)(`flex items-center justify-between ${ZIndex.topRow} px-[16px] ${topRowBgColor}`, toUseNarrow ? "py-[16px]" : "py-[24px]"),
|
|
127
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
128
|
+
className: "flex items-center",
|
|
129
|
+
children: [
|
|
130
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
131
|
+
className: (0, clsx.default)(toUseNarrow ? "opacity-100" : "opacity-0", `transition-opacity ${ANIMATION.step3Duration}`, toUseNarrow ? "delay-350" : "delay-0"),
|
|
132
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.icon_button_default, {
|
|
133
|
+
iconComponent: require_icons.Hamburger(releaseBranch),
|
|
134
|
+
theme,
|
|
135
|
+
onClick: toggleHamburger
|
|
136
|
+
})
|
|
137
|
+
}),
|
|
138
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
139
|
+
className: (0, clsx.default)(`flex items-center mr-[16px] transition-all ${ANIMATION.step3Duration}`, toUseNarrow ? "ml-[24px]" : "ml-0", toUseNarrow ? "translate-x-0" : "-translate-x-[24px]", toUseNarrow ? `${ANIMATION.step3Delay}` : "delay-0"),
|
|
140
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
141
|
+
to: require_internal_links.INTERNAL_LINKS.home,
|
|
142
|
+
className: (0, clsx.default)(`transition-height ${ANIMATION.step3Duration}`, toUseNarrow ? `${ANIMATION.step3Delay}` : "delay-0"),
|
|
143
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_logo.logo_header_default, {
|
|
144
|
+
type: logoType,
|
|
145
|
+
releaseBranch,
|
|
146
|
+
className: (0, clsx.default)(toUseNarrow ? "h-[24px]" : "h-[32px]")
|
|
147
|
+
})
|
|
148
|
+
})
|
|
149
|
+
}),
|
|
150
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
151
|
+
className: (0, clsx.default)(`transition-opacity ${ANIMATION.step3Duration}`, "flex items-center font-serif font-normal text-[14px]", toUseNarrow ? `${ANIMATION.step3Delay}` : "delay-0", toUseNarrow ? "pointer-events-none" : "pointer-events-auto", toUseNarrow ? "opacity-0" : "opacity-100", selectSloganTheme(theme)),
|
|
152
|
+
children: "深度 × 開放 × 非營利"
|
|
153
|
+
})
|
|
154
|
+
]
|
|
155
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
156
|
+
className: "flex items-center",
|
|
157
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
158
|
+
className: (0, clsx.default)("flex items-center gap-[16px]", `transition-opacity ${ANIMATION.step3Duration}`, toUseNarrow ? `${ANIMATION.step3Delay}` : "delay-0", toUseNarrow ? "pointer-events-none" : "pointer-events-auto", toUseNarrow ? "opacity-0" : "opacity-100"),
|
|
159
|
+
children: require_hamburger_menu.HEADER_ACTION_LINKS.map((link) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
160
|
+
to: link.to,
|
|
161
|
+
target: link.target,
|
|
162
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.pill_button_default, {
|
|
163
|
+
text: link.label,
|
|
164
|
+
theme,
|
|
165
|
+
type: link.type
|
|
166
|
+
})
|
|
167
|
+
}, link.label))
|
|
168
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icons, {
|
|
169
|
+
releaseBranch,
|
|
170
|
+
theme
|
|
171
|
+
})]
|
|
172
|
+
})]
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
var top_row_default = TopRow;
|
|
176
|
+
|
|
177
|
+
//#endregion
|
|
178
|
+
//#region src/header/components/channels/constants/index.ts
|
|
179
|
+
const CHANNELS = [
|
|
180
|
+
{
|
|
181
|
+
label: "最新",
|
|
182
|
+
to: require_internal_links.INTERNAL_LINKS.latest,
|
|
183
|
+
target: "_self"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
label: "深度專題",
|
|
187
|
+
to: require_internal_links.INTERNAL_LINKS.topics,
|
|
188
|
+
target: "_self"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
label: "國際兩岸",
|
|
192
|
+
to: require_internal_links.INTERNAL_LINKS.categories.world,
|
|
193
|
+
target: "_self"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
label: "人權司法",
|
|
197
|
+
to: require_internal_links.INTERNAL_LINKS.categories.humanRights,
|
|
198
|
+
target: "_self"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
label: "政治社會",
|
|
202
|
+
to: require_internal_links.INTERNAL_LINKS.categories.politicsAndSociety,
|
|
203
|
+
target: "_self"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
label: "醫療健康",
|
|
207
|
+
to: require_internal_links.INTERNAL_LINKS.categories.health,
|
|
208
|
+
target: "_self"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
label: "環境永續",
|
|
212
|
+
to: require_internal_links.INTERNAL_LINKS.categories.environment,
|
|
213
|
+
target: "_self"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
label: "經濟產業",
|
|
217
|
+
to: require_internal_links.INTERNAL_LINKS.categories.econ,
|
|
218
|
+
target: "_self"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
label: "文化生活",
|
|
222
|
+
to: require_internal_links.INTERNAL_LINKS.categories.culture,
|
|
223
|
+
target: "_self"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
label: "教育校園",
|
|
227
|
+
to: require_internal_links.INTERNAL_LINKS.categories.education,
|
|
228
|
+
target: "_self"
|
|
229
|
+
}
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region src/header/components/channels/index.tsx
|
|
234
|
+
const _ = { map: lodash_map.default };
|
|
235
|
+
const ChannelItem = ({ link = {
|
|
236
|
+
href: "",
|
|
237
|
+
target: "_self"
|
|
238
|
+
}, label = "" }) => {
|
|
239
|
+
const { theme, isLinkExternal } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
240
|
+
const LinkComponent = isLinkExternal ? require_external_link.external_link_default : require_internal_link.internal_link_default;
|
|
241
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
242
|
+
className: (0, clsx.default)("flex items-center", "[&>a]:no-underline"),
|
|
243
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
244
|
+
to: link.href,
|
|
245
|
+
target: link.target,
|
|
246
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.text_button_default, {
|
|
247
|
+
text: label,
|
|
248
|
+
size: require_button.text_button_default.Size.l,
|
|
249
|
+
theme,
|
|
250
|
+
style: require_button.text_button_default.Style.dark
|
|
251
|
+
})
|
|
252
|
+
})
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
const Channel = () => {
|
|
256
|
+
const { releaseBranch, theme } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
257
|
+
const { toggleHamburger } = (0, react.useContext)(require_dropdown_menu.HamburgerContext);
|
|
258
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
259
|
+
className: "flex flex-col items-center",
|
|
260
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
261
|
+
className: "flex items-center justify-between w-full px-[16px] py-[8px]",
|
|
262
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.icon_button_default, {
|
|
263
|
+
iconComponent: require_icons.Hamburger(releaseBranch),
|
|
264
|
+
theme,
|
|
265
|
+
onClick: toggleHamburger
|
|
266
|
+
}), _.map(CHANNELS, (channel) => {
|
|
267
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChannelItem, {
|
|
268
|
+
label: channel.label,
|
|
269
|
+
link: {
|
|
270
|
+
href: channel.to,
|
|
271
|
+
target: channel.target
|
|
272
|
+
}
|
|
273
|
+
}, `channel-${channel.label}`);
|
|
274
|
+
})]
|
|
275
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_divider.divider_default, {})]
|
|
276
|
+
});
|
|
277
|
+
};
|
|
278
|
+
var channels_default = Channel;
|
|
279
|
+
|
|
280
|
+
//#endregion
|
|
281
|
+
//#region src/header/components/desktop-and-above.tsx
|
|
282
|
+
const DesktopAndAbove = ({ topRowBgColor, logoType }) => {
|
|
283
|
+
const { toUseNarrow } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
284
|
+
const channelRef = (0, react.useRef)(null);
|
|
285
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
286
|
+
className: "hidden desktop:flex desktop:flex-col",
|
|
287
|
+
children: [
|
|
288
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(top_row_default, {
|
|
289
|
+
topRowBgColor,
|
|
290
|
+
logoType
|
|
291
|
+
}),
|
|
292
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
293
|
+
className: (0, clsx.default)(`transition-opacity ${ANIMATION.step2Duration}`, toUseNarrow ? "opacity-0" : "opacity-100", toUseNarrow ? "delay-0" : `${ANIMATION.step2Delay}`),
|
|
294
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_divider.divider_default, { direction: require_divider.divider_default.Direction.horizontal })
|
|
295
|
+
}),
|
|
296
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
297
|
+
className: `${ZIndex.channel}`,
|
|
298
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_transition_group.CSSTransition, {
|
|
299
|
+
in: !toUseNarrow,
|
|
300
|
+
nodeRef: channelRef,
|
|
301
|
+
classNames: {
|
|
302
|
+
enter: `opacity-0 -translate-y-full`,
|
|
303
|
+
enterActive: `transition-all ease-linear ${ANIMATION.step1Duration} ${ANIMATION.step2Delay} opacity-100 translate-y-0`,
|
|
304
|
+
exit: `opacity-100 translate-y-0`,
|
|
305
|
+
exitActive: `transition-all ease-linear ${ANIMATION.step1Duration} -translate-y-full`
|
|
306
|
+
},
|
|
307
|
+
timeout: {
|
|
308
|
+
appear: 0,
|
|
309
|
+
enter: 350,
|
|
310
|
+
exit: 200
|
|
311
|
+
},
|
|
312
|
+
unmountOnExit: true,
|
|
313
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
314
|
+
ref: channelRef,
|
|
315
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(channels_default, {})
|
|
316
|
+
})
|
|
317
|
+
})
|
|
318
|
+
})
|
|
319
|
+
]
|
|
320
|
+
});
|
|
321
|
+
};
|
|
322
|
+
var desktop_and_above_default = DesktopAndAbove;
|
|
323
|
+
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/header/components/tablet-and-below.tsx
|
|
326
|
+
const TabletAndBelow = ({ topRowBgColor, logoType }) => {
|
|
327
|
+
const { isLinkExternal } = (0, react.useContext)(require_dropdown_menu.HeaderContext);
|
|
328
|
+
const LinkComponent = isLinkExternal ? require_external_link.external_link_default : require_internal_link.internal_link_default;
|
|
329
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
330
|
+
className: (0, clsx.default)(`flex items-center justify-between ${ZIndex.topRow} py-[16px] ${topRowBgColor}`, "desktop:hidden"),
|
|
331
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
332
|
+
to: require_internal_links.INTERNAL_LINKS.home,
|
|
333
|
+
className: "flex items-center",
|
|
334
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_logo.logo_header_default, {
|
|
335
|
+
type: logoType,
|
|
336
|
+
className: "h-[21px]"
|
|
337
|
+
})
|
|
338
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
339
|
+
className: "flex flex-row items-center gap-[24px]",
|
|
340
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
341
|
+
to: require_external_links.EXTERNAL_LINKS.monthlyDonation,
|
|
342
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.pill_button_default, {
|
|
343
|
+
text: "贊助",
|
|
344
|
+
theme: require_button.pill_button_default.Theme.normal,
|
|
345
|
+
type: require_button.pill_button_default.Type.primary,
|
|
346
|
+
style: require_button.pill_button_default.Style.brand
|
|
347
|
+
})
|
|
348
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LinkComponent, {
|
|
349
|
+
to: require_internal_links.INTERNAL_LINKS.account.index,
|
|
350
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.text_button_default, {
|
|
351
|
+
text: "登入",
|
|
352
|
+
theme: require_button.text_button_default.Theme.normal,
|
|
353
|
+
style: require_button.text_button_default.Style.dark,
|
|
354
|
+
size: require_button.text_button_default.Size.s
|
|
355
|
+
})
|
|
356
|
+
})]
|
|
357
|
+
})]
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
var tablet_and_below_default = TabletAndBelow;
|
|
361
|
+
|
|
362
|
+
//#endregion
|
|
363
|
+
//#region src/header/index.tsx
|
|
364
|
+
const HIDE_HEADER_THRESHOLD = 8;
|
|
365
|
+
const TRANSFORM_HEADER_THRESHOLD = 40;
|
|
366
|
+
const TRANSFORM_TIMEOUT = 800;
|
|
367
|
+
const Header = ({ releaseBranch, isLinkExternal, theme, pathname, referrerPath, hamburgerContext }) => {
|
|
368
|
+
const isAuthed = false;
|
|
369
|
+
const { bgColor, topRowBgColor } = selectHeaderTheme(theme);
|
|
370
|
+
const logoType = selectLogoType(theme);
|
|
371
|
+
const { isHamburgerMenuOpen } = hamburgerContext;
|
|
372
|
+
const [toUseNarrow, setToUseNarrow] = (0, react.useState)(false);
|
|
373
|
+
const [hideHeader, setHideHeader] = (0, react.useState)(false);
|
|
374
|
+
const lastKnownPageYOffset = (0, react.useRef)(0);
|
|
375
|
+
const ticking = (0, react.useRef)(false);
|
|
376
|
+
const currentY = (0, react.useRef)(0);
|
|
377
|
+
const readyY = (0, react.useRef)(0);
|
|
378
|
+
const isTransforming = (0, react.useRef)(false);
|
|
379
|
+
const transformTimer = (0, react.useRef)(null);
|
|
380
|
+
const getScrollState = (0, react.useCallback)((scrollTop, scrollDirection) => {
|
|
381
|
+
const isCurrentNarrow = toUseNarrow;
|
|
382
|
+
const nextToUseNarrow = scrollTop > TRANSFORM_HEADER_THRESHOLD;
|
|
383
|
+
const scrollState = {
|
|
384
|
+
toUseNarrow,
|
|
385
|
+
hideHeader
|
|
386
|
+
};
|
|
387
|
+
if (isTransforming.current) return scrollState;
|
|
388
|
+
if (scrollDirection === "up") {
|
|
389
|
+
readyY.current = scrollTop;
|
|
390
|
+
scrollState.hideHeader = false;
|
|
391
|
+
}
|
|
392
|
+
if (scrollDirection === "down") {
|
|
393
|
+
if (isCurrentNarrow && scrollTop - readyY.current > HIDE_HEADER_THRESHOLD) scrollState.hideHeader = true;
|
|
394
|
+
}
|
|
395
|
+
if (isCurrentNarrow) scrollState.toUseNarrow = scrollDirection === "down" ? true : nextToUseNarrow;
|
|
396
|
+
else scrollState.toUseNarrow = scrollDirection === "up" ? false : nextToUseNarrow;
|
|
397
|
+
if (isCurrentNarrow !== scrollState.toUseNarrow) {
|
|
398
|
+
if (!transformTimer.current) {
|
|
399
|
+
isTransforming.current = true;
|
|
400
|
+
transformTimer.current = setTimeout(() => {
|
|
401
|
+
isTransforming.current = false;
|
|
402
|
+
readyY.current = currentY.current;
|
|
403
|
+
transformTimer.current = null;
|
|
404
|
+
}, TRANSFORM_TIMEOUT);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return scrollState;
|
|
408
|
+
}, [toUseNarrow, hideHeader]);
|
|
409
|
+
const updateScrollState = (0, react.useCallback)((currentScrollTop) => {
|
|
410
|
+
const scrollDirection = currentScrollTop > currentY.current ? "down" : "up";
|
|
411
|
+
currentY.current = currentScrollTop;
|
|
412
|
+
const updateState = getScrollState(currentScrollTop, scrollDirection);
|
|
413
|
+
setToUseNarrow(() => updateState.toUseNarrow);
|
|
414
|
+
setHideHeader(() => updateState.hideHeader);
|
|
415
|
+
}, [getScrollState]);
|
|
416
|
+
const handleScroll = (0, react.useCallback)(() => {
|
|
417
|
+
lastKnownPageYOffset.current = window.pageYOffset;
|
|
418
|
+
if (!ticking.current) {
|
|
419
|
+
window.requestAnimationFrame(() => {
|
|
420
|
+
updateScrollState(lastKnownPageYOffset.current);
|
|
421
|
+
ticking.current = false;
|
|
422
|
+
});
|
|
423
|
+
ticking.current = true;
|
|
424
|
+
}
|
|
425
|
+
}, [updateScrollState]);
|
|
426
|
+
(0, react.useEffect)(() => {
|
|
427
|
+
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
428
|
+
return () => {
|
|
429
|
+
window.removeEventListener("scroll", handleScroll);
|
|
430
|
+
};
|
|
431
|
+
}, [handleScroll]);
|
|
432
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_dropdown_menu.HeaderContext, {
|
|
433
|
+
value: {
|
|
434
|
+
releaseBranch,
|
|
435
|
+
isLinkExternal,
|
|
436
|
+
isAuthed,
|
|
437
|
+
theme,
|
|
438
|
+
pathname,
|
|
439
|
+
referrerPath,
|
|
440
|
+
toUseNarrow,
|
|
441
|
+
hideHeader
|
|
442
|
+
},
|
|
443
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_dropdown_menu.HamburgerContext, {
|
|
444
|
+
value: hamburgerContext,
|
|
445
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
|
|
446
|
+
className: (0, clsx.default)(`w-full top-0 transition-transform duration-300 ${bgColor}`, theme === require_theme.THEME.transparent ? "fixed" : "sticky", hideHeader ? "ease-in" : "ease-out", hideHeader ? "-translate-y-full" : "translate-y-0"),
|
|
447
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
448
|
+
className: (0, clsx.default)(`flex flex-col mx-auto px-[24px] ${ZIndex.header}`, "tablet:px-[32px]", "desktop:px-[48px]", "hd:w-[1280px] hd:px-0"),
|
|
449
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(desktop_and_above_default, {
|
|
450
|
+
topRowBgColor,
|
|
451
|
+
logoType
|
|
452
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(tablet_and_below_default, {
|
|
453
|
+
topRowBgColor,
|
|
454
|
+
logoType
|
|
455
|
+
})]
|
|
456
|
+
})
|
|
457
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
458
|
+
className: (0, clsx.default)(`fixed top-0 ${ZIndex.hamburger} transition-transform duration-300 ease-in-out`, isHamburgerMenuOpen ? "opacity-100" : "opacity-0", "tablet:-left-[320px]", isHamburgerMenuOpen ? "tablet:translate-x-[320px] tablet:opacity-100" : "tablet:translate-x-0 tablet:opacity-100", "desktop:-left-[280px]", isHamburgerMenuOpen ? "desktop:translate-x-[280px] desktop:opacity-100" : "desktop:translate-x-0 desktop:opacity-100"),
|
|
459
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_hamburger_menu.hamburger_menu_default, {})
|
|
460
|
+
})]
|
|
461
|
+
})
|
|
462
|
+
});
|
|
463
|
+
};
|
|
464
|
+
var header_default = Header;
|
|
465
|
+
|
|
466
|
+
//#endregion
|
|
467
|
+
module.exports = header_default;
|
|
468
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Icons: FC<{\n releaseBranch?: ReleaseBranch\n theme?: Theme\n}>","RELEASE_BRANCH","THEME","HeaderContext","ExternalLink","InternalLink","IconButton","Search","INTERNAL_LINKS","KidStar","Member","THEME","LOGO_TYPE","TopRow: FC<TopRowProps>","HeaderContext","HamburgerContext","ExternalLink","InternalLink","IconButton","Hamburger","INTERNAL_LINKS","LogoHeader","HEADER_ACTION_LINKS","PillButton","CHANNELS: ChannelType[]","INTERNAL_LINKS","ChannelItem: FC<ChannelItemProps>","HeaderContext","ExternalLink","InternalLink","TextButton","HamburgerContext","IconButton","Hamburger","Divider","DesktopAndAbove: FC<DesktopAndAboveProps>","HeaderContext","TopRow","Divider","CSSTransition","Channel","TabletAndBelow: FC<TabletAndBelowProps>","HeaderContext","ExternalLink","InternalLink","INTERNAL_LINKS","LogoHeader","EXTERNAL_LINKS","PillButton","TextButton","Header: FC<HeaderProps>","HeaderContext","HamburgerContext","THEME","DesktopAndAbove","TabletAndBelow","HamburgerMenu"],"sources":["../../src/header/constants/z-index.ts","../../src/header/constants/animation.ts","../../src/header/components/top-row/icons.tsx","../../src/header/utils/theme.ts","../../src/header/components/top-row/index.tsx","../../src/header/components/channels/constants/index.ts","../../src/header/components/channels/index.tsx","../../src/header/components/desktop-and-above.tsx","../../src/header/components/tablet-and-below.tsx","../../src/header/index.tsx"],"sourcesContent":["export const ZIndex = {\n tabBarMobile: 'z-10',\n tabBarTablet: 'z-3',\n hamburger: 'z-4',\n header: 'z-3',\n topRow: 'z-2',\n channel: 'z-1',\n} as const\n","export const ANIMATION = {\n step1Duration: 'duration-[200ms]',\n step2Delay: 'delay-[150ms]',\n step2Duration: 'duration-[50ms]',\n step3Delay: 'delay-[150ms]',\n step3Duration: 'duration-[200ms]',\n} as const\n","import { useContext, type FC } from 'react'\n// context\nimport { HeaderContext } from '../../context'\n// constants\nimport { THEME, type Theme } from '../../../constants/theme'\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../../constants/release-branch'\nimport { INTERNAL_LINKS } from '../../../constants/internal-links'\n// icons\nimport { Search, KidStar, Member } from '../../../icons'\n// button\nimport { IconButton } from '../../../button'\n// link\nimport { ExternalLink, InternalLink } from '../../../customized-link'\n\nexport const Icons: FC<{\n releaseBranch?: ReleaseBranch\n theme?: Theme\n}> = ({ releaseBranch = RELEASE_BRANCH.master, theme = THEME.normal }) => {\n const { isLinkExternal } = useContext(HeaderContext)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div className=\"ml-[24px] flex flex-row gap-[16px]\">\n <IconButton iconComponent={Search(releaseBranch)} theme={theme} />\n <LinkComponent to={INTERNAL_LINKS.myReading.index}>\n <IconButton iconComponent={KidStar(releaseBranch)} theme={theme} />\n </LinkComponent>\n <LinkComponent to={INTERNAL_LINKS.account.index}>\n <IconButton iconComponent={Member(releaseBranch)} theme={theme} />\n </LinkComponent>\n </div>\n )\n}\n","import { THEME, type Theme } from '../../constants/theme'\nimport { LOGO_TYPE } from '../../logo/constants'\n\nexport const selectLogoType = (theme: Theme) => {\n switch (theme) {\n case THEME.photography:\n case THEME.transparent:\n return LOGO_TYPE.white\n default:\n return LOGO_TYPE.default\n }\n}\n\nexport const selectHeaderTheme = (theme: Theme) => {\n switch (theme) {\n case THEME.photography:\n return {\n bgColor: 'bg-photo-dark',\n topRowBgColor: 'bg-photo-dark',\n }\n case THEME.transparent:\n return {\n bgColor: 'bg-opacity-black-02',\n topRowBgColor: 'bg-transparent',\n }\n case THEME.index:\n return {\n bgColor: 'bg-gray-white',\n topRowBgColor: 'bg-gray-white',\n }\n default:\n return {\n bgColor: 'bg-gray-100',\n topRowBgColor: 'bg-gray-100',\n }\n }\n}\n\nexport const selectSloganTheme = (theme: Theme) => {\n switch (theme) {\n case THEME.photography:\n case THEME.transparent:\n return 'text-gray-white'\n default:\n return 'text-gray-800'\n }\n}\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext, HamburgerContext } from '../../context'\n// constants\nimport { ZIndex } from '../../constants/z-index'\nimport { ANIMATION } from '../../constants/animation'\nimport { HEADER_ACTION_LINKS } from '../../constants/action-links'\nimport { INTERNAL_LINKS } from '../../../constants/internal-links'\n// logo\nimport { LogoHeader } from '../../../logo'\nimport type { LogoType } from '../../../logo/constants'\n// buton\nimport { IconButton, PillButton } from '../../../button'\n// components\nimport { Icons } from './icons'\nimport { Hamburger } from '../../../icons'\n// utils\nimport { selectSloganTheme } from '../../utils/theme'\n// link\nimport { ExternalLink, InternalLink } from '../../../customized-link'\n\ntype TopRowProps = {\n topRowBgColor: string\n logoType: LogoType\n}\nconst TopRow: FC<TopRowProps> = ({ topRowBgColor, logoType }) => {\n const { toUseNarrow, releaseBranch, theme, isLinkExternal } =\n useContext(HeaderContext)\n const { toggleHamburger } = useContext(HamburgerContext)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n `flex items-center justify-between ${ZIndex.topRow} px-[16px] ${topRowBgColor}`,\n toUseNarrow ? 'py-[16px]' : 'py-[24px]'\n )}\n >\n {/* left group */}\n <div className=\"flex items-center\">\n <div\n className={clsx(\n toUseNarrow ? 'opacity-100' : 'opacity-0',\n `transition-opacity ${ANIMATION.step3Duration}`,\n toUseNarrow ? 'delay-350' : 'delay-0'\n )}\n >\n <IconButton\n iconComponent={Hamburger(releaseBranch)}\n theme={theme}\n onClick={toggleHamburger}\n />\n </div>\n {/* Logo */}\n <div\n className={clsx(\n `flex items-center mr-[16px] transition-all ${ANIMATION.step3Duration}`,\n toUseNarrow ? 'ml-[24px]' : 'ml-0',\n toUseNarrow ? 'translate-x-0' : '-translate-x-[24px]',\n toUseNarrow ? `${ANIMATION.step3Delay}` : 'delay-0'\n )}\n >\n <LinkComponent\n to={INTERNAL_LINKS.home}\n className={clsx(\n `transition-height ${ANIMATION.step3Duration}`,\n toUseNarrow ? `${ANIMATION.step3Delay}` : 'delay-0'\n )}\n >\n <LogoHeader\n type={logoType}\n releaseBranch={releaseBranch}\n className={clsx(toUseNarrow ? 'h-[24px]' : 'h-[32px]')}\n />\n </LinkComponent>\n </div>\n <div\n className={clsx(\n `transition-opacity ${ANIMATION.step3Duration}`,\n 'flex items-center font-serif font-normal text-[14px]',\n toUseNarrow ? `${ANIMATION.step3Delay}` : 'delay-0',\n toUseNarrow ? 'pointer-events-none' : 'pointer-events-auto',\n toUseNarrow ? 'opacity-0' : 'opacity-100',\n selectSloganTheme(theme)\n )}\n >\n 深度 × 開放 × 非營利\n </div>\n </div>\n {/* right group */}\n <div className=\"flex items-center\">\n <div\n className={clsx(\n 'flex items-center gap-[16px]',\n `transition-opacity ${ANIMATION.step3Duration}`,\n toUseNarrow ? `${ANIMATION.step3Delay}` : 'delay-0',\n toUseNarrow ? 'pointer-events-none' : 'pointer-events-auto',\n toUseNarrow ? 'opacity-0' : 'opacity-100'\n )}\n >\n {HEADER_ACTION_LINKS.map((link) => (\n <LinkComponent to={link.to} target={link.target} key={link.label}>\n <PillButton text={link.label} theme={theme} type={link.type} />\n </LinkComponent>\n ))}\n </div>\n {/* icons */}\n <Icons releaseBranch={releaseBranch} theme={theme} />\n </div>\n </div>\n )\n}\n\nexport default TopRow\n","import { INTERNAL_LINKS } from '../../../../constants/internal-links'\nimport type { LinkTarget } from '../../../../customized-link/type'\n\ntype ChannelType = {\n label: string\n to: string\n target: LinkTarget\n}\nexport const CHANNELS: ChannelType[] = [\n {\n label: '最新',\n to: INTERNAL_LINKS.latest,\n target: '_self',\n },\n {\n label: '深度專題',\n to: INTERNAL_LINKS.topics,\n target: '_self',\n },\n {\n label: '國際兩岸',\n to: INTERNAL_LINKS.categories.world,\n target: '_self',\n },\n {\n label: '人權司法',\n to: INTERNAL_LINKS.categories.humanRights,\n target: '_self',\n },\n {\n label: '政治社會',\n to: INTERNAL_LINKS.categories.politicsAndSociety,\n target: '_self',\n },\n {\n label: '醫療健康',\n to: INTERNAL_LINKS.categories.health,\n target: '_self',\n },\n {\n label: '環境永續',\n to: INTERNAL_LINKS.categories.environment,\n target: '_self',\n },\n {\n label: '經濟產業',\n to: INTERNAL_LINKS.categories.econ,\n target: '_self',\n },\n {\n label: '文化生活',\n to: INTERNAL_LINKS.categories.culture,\n target: '_self',\n },\n {\n label: '教育校園',\n to: INTERNAL_LINKS.categories.education,\n target: '_self',\n },\n]\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext, HamburgerContext } from '../../context'\n// components\nimport { IconButton, TextButton } from '../../../button'\nimport { Hamburger } from '../../../icons'\nimport Divider from '../../../divider'\n// constants\nimport { CHANNELS } from './constants'\n// link\nimport { ExternalLink, InternalLink } from '../../../customized-link'\nimport type { LinkTarget } from '../../../customized-link/type'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\ntype ChannelItemProps = {\n link: {\n href: string\n target: LinkTarget\n }\n label: string\n}\nconst ChannelItem: FC<ChannelItemProps> = ({\n link = { href: '', target: '_self' },\n label = '',\n}) => {\n const { theme, isLinkExternal } = useContext(HeaderContext)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div className={clsx('flex items-center', '[&>a]:no-underline')}>\n <LinkComponent to={link.href} target={link.target}>\n <TextButton\n text={label}\n size={TextButton.Size.l}\n theme={theme}\n style={TextButton.Style.dark}\n />\n </LinkComponent>\n </div>\n )\n}\n\nconst Channel = () => {\n const { releaseBranch, theme } = useContext(HeaderContext)\n const { toggleHamburger } = useContext(HamburgerContext)\n return (\n <div className=\"flex flex-col items-center\">\n <div className=\"flex items-center justify-between w-full px-[16px] py-[8px]\">\n <IconButton\n iconComponent={Hamburger(releaseBranch)}\n theme={theme}\n onClick={toggleHamburger}\n />\n {_.map(CHANNELS, (channel) => {\n return (\n <ChannelItem\n key={`channel-${channel.label}`}\n label={channel.label}\n link={{\n href: channel.to,\n target: channel.target,\n }}\n />\n )\n })}\n </div>\n <Divider />\n </div>\n )\n}\n\nexport default Channel\n","import { useContext, useRef, type FC } from 'react'\nimport clsx from 'clsx'\nimport { CSSTransition } from 'react-transition-group'\n// context\nimport { HeaderContext } from '../context'\n// constants\nimport { ZIndex } from '../constants/z-index'\nimport { ANIMATION } from '../constants/animation'\n// compontents\nimport TopRow from './top-row'\nimport Channel from './channels'\nimport Divider from '../../divider'\n// type\nimport type { LogoType } from '../../logo/constants'\ntype DesktopAndAboveProps = {\n topRowBgColor: string\n logoType: LogoType\n}\nconst DesktopAndAbove: FC<DesktopAndAboveProps> = ({\n topRowBgColor,\n logoType,\n}) => {\n const { toUseNarrow } = useContext(HeaderContext)\n const channelRef = useRef<HTMLDivElement>(null)\n return (\n <div className=\"hidden desktop:flex desktop:flex-col\">\n <TopRow topRowBgColor={topRowBgColor} logoType={logoType} />\n {/* divider */}\n <div\n className={clsx(\n `transition-opacity ${ANIMATION.step2Duration}`,\n toUseNarrow ? 'opacity-0' : 'opacity-100',\n toUseNarrow ? 'delay-0' : `${ANIMATION.step2Delay}`\n )}\n >\n <Divider direction={Divider.Direction.horizontal} />\n </div>\n {/* channels */}\n <div className={`${ZIndex.channel}`}>\n <CSSTransition\n in={!toUseNarrow}\n nodeRef={channelRef}\n classNames={{\n enter: `opacity-0 -translate-y-full`,\n enterActive: `transition-all ease-linear ${ANIMATION.step1Duration} ${ANIMATION.step2Delay} opacity-100 translate-y-0`,\n exit: `opacity-100 translate-y-0`,\n exitActive: `transition-all ease-linear ${ANIMATION.step1Duration} -translate-y-full`,\n }}\n timeout={{ appear: 0, enter: 350, exit: 200 }}\n unmountOnExit\n >\n <div ref={channelRef}>\n <Channel />\n </div>\n </CSSTransition>\n </div>\n </div>\n )\n}\n\nexport default DesktopAndAbove\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../context'\n// constants\nimport { ZIndex } from '../constants/z-index'\nimport { INTERNAL_LINKS } from '../../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\n// logo\nimport { LogoHeader } from '../../logo'\nimport type { LogoType } from '../../logo/constants'\n// link\nimport { ExternalLink, InternalLink } from '../../customized-link'\n// button\nimport { PillButton, TextButton } from '../../button'\n\ntype TabletAndBelowProps = {\n topRowBgColor: string\n logoType: LogoType\n}\nconst TabletAndBelow: FC<TabletAndBelowProps> = ({\n topRowBgColor,\n logoType,\n}) => {\n const { isLinkExternal } = useContext(HeaderContext)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n `flex items-center justify-between ${ZIndex.topRow} py-[16px] ${topRowBgColor}`,\n 'desktop:hidden'\n )}\n >\n {/* logo */}\n <LinkComponent to={INTERNAL_LINKS.home} className=\"flex items-center\">\n <LogoHeader type={logoType} className=\"h-[21px]\" />\n </LinkComponent>\n {/* actions */}\n <div className=\"flex flex-row items-center gap-[24px]\">\n <LinkComponent to={EXTERNAL_LINKS.monthlyDonation}>\n <PillButton\n text=\"贊助\"\n theme={PillButton.Theme.normal}\n type={PillButton.Type.primary}\n style={PillButton.Style.brand}\n />\n </LinkComponent>\n <LinkComponent to={INTERNAL_LINKS.account.index}>\n <TextButton\n text=\"登入\"\n theme={TextButton.Theme.normal}\n style={TextButton.Style.dark}\n size={TextButton.Size.s}\n />\n </LinkComponent>\n </div>\n </div>\n )\n}\n\nexport default TabletAndBelow\n","import { useRef, useState, useCallback, useEffect, type FC } from 'react'\nimport clsx from 'clsx'\n\n// constants\nimport { THEME, type Theme } from '../constants/theme'\nimport type { ReleaseBranch } from '../constants/release-branch'\nimport { ZIndex } from './constants/z-index'\n// components\nimport DesktopAndAbove from './components/desktop-and-above'\nimport TabletAndBelow from './components/tablet-and-below'\n// context\nimport {\n HeaderContext,\n HamburgerContext,\n type HamburgerContextType,\n} from './context'\n// utils\nimport { selectHeaderTheme, selectLogoType } from './utils/theme'\n// hamburger menu\nimport HamburgerMenu from '../hamburger-menu'\n\nconst HIDE_HEADER_THRESHOLD = 8\nconst TRANSFORM_HEADER_THRESHOLD = 40\nconst TRANSFORM_TIMEOUT = 800\n\ntype HeaderProps = {\n releaseBranch: ReleaseBranch\n isLinkExternal: boolean\n theme: Theme\n pathname: string\n referrerPath: string\n hamburgerContext: HamburgerContextType\n}\nconst Header: FC<HeaderProps> = ({\n releaseBranch,\n isLinkExternal,\n theme,\n pathname,\n referrerPath,\n hamburgerContext,\n}) => {\n const isAuthed = false\n\n const { bgColor, topRowBgColor } = selectHeaderTheme(theme)\n const logoType = selectLogoType(theme)\n\n const { isHamburgerMenuOpen } = hamburgerContext\n\n const [toUseNarrow, setToUseNarrow] = useState(false)\n const [hideHeader, setHideHeader] = useState(false)\n\n // TODO: get isAuthed from redux\n // const isAuthed = useSelector(state => _.get(state, 'auth.isAuthed', false))\n\n const lastKnownPageYOffset = useRef(0)\n const ticking = useRef(false)\n const currentY = useRef(0)\n const readyY = useRef(0)\n const isTransforming = useRef(false)\n const transformTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const getScrollState = useCallback(\n (scrollTop: number, scrollDirection: 'up' | 'down') => {\n const isCurrentNarrow = toUseNarrow\n const nextToUseNarrow = scrollTop > TRANSFORM_HEADER_THRESHOLD\n const scrollState = { toUseNarrow, hideHeader }\n\n if (isTransforming.current) {\n return scrollState\n }\n\n if (scrollDirection === 'up') {\n readyY.current = scrollTop\n scrollState.hideHeader = false\n }\n\n if (scrollDirection === 'down') {\n if (\n isCurrentNarrow &&\n scrollTop - readyY.current > HIDE_HEADER_THRESHOLD\n ) {\n scrollState.hideHeader = true\n }\n }\n\n if (isCurrentNarrow) {\n scrollState.toUseNarrow =\n scrollDirection === 'down' ? true : nextToUseNarrow\n } else {\n scrollState.toUseNarrow =\n scrollDirection === 'up' ? false : nextToUseNarrow\n }\n\n if (isCurrentNarrow !== scrollState.toUseNarrow) {\n if (!transformTimer.current) {\n isTransforming.current = true\n transformTimer.current = setTimeout(() => {\n isTransforming.current = false\n readyY.current = currentY.current\n transformTimer.current = null\n }, TRANSFORM_TIMEOUT)\n }\n }\n\n return scrollState\n },\n [toUseNarrow, hideHeader]\n )\n\n const updateScrollState = useCallback(\n (currentScrollTop: number) => {\n const scrollDirection =\n currentScrollTop > currentY.current ? 'down' : 'up'\n currentY.current = currentScrollTop\n const updateState = getScrollState(currentScrollTop, scrollDirection)\n setToUseNarrow(() => updateState.toUseNarrow)\n setHideHeader(() => updateState.hideHeader)\n },\n [getScrollState]\n )\n\n const handleScroll = useCallback(() => {\n lastKnownPageYOffset.current = window.pageYOffset\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n updateScrollState(lastKnownPageYOffset.current)\n ticking.current = false\n })\n ticking.current = true\n }\n }, [updateScrollState])\n\n useEffect(() => {\n window.addEventListener('scroll', handleScroll, { passive: true })\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [handleScroll])\n\n return (\n <HeaderContext\n value={{\n releaseBranch,\n isLinkExternal,\n isAuthed,\n theme,\n pathname,\n referrerPath,\n toUseNarrow,\n hideHeader,\n }}\n >\n <HamburgerContext value={hamburgerContext}>\n <header\n className={clsx(\n `w-full top-0 transition-transform duration-300 ${bgColor}`,\n theme === THEME.transparent ? 'fixed' : 'sticky',\n hideHeader ? 'ease-in' : 'ease-out',\n hideHeader ? '-translate-y-full' : 'translate-y-0'\n )}\n >\n <div\n className={clsx(\n `flex flex-col mx-auto px-[24px] ${ZIndex.header}`,\n 'tablet:px-[32px]',\n 'desktop:px-[48px]',\n 'hd:w-[1280px] hd:px-0'\n )}\n >\n <DesktopAndAbove\n topRowBgColor={topRowBgColor}\n logoType={logoType}\n />\n <TabletAndBelow topRowBgColor={topRowBgColor} logoType={logoType} />\n </div>\n </header>\n <div\n className={clsx(\n `fixed top-0 ${ZIndex.hamburger} transition-transform duration-300 ease-in-out`,\n isHamburgerMenuOpen ? 'opacity-100' : 'opacity-0',\n 'tablet:-left-[320px]',\n isHamburgerMenuOpen\n ? 'tablet:translate-x-[320px] tablet:opacity-100'\n : 'tablet:translate-x-0 tablet:opacity-100',\n 'desktop:-left-[280px]',\n isHamburgerMenuOpen\n ? 'desktop:translate-x-[280px] desktop:opacity-100'\n : 'desktop:translate-x-0 desktop:opacity-100'\n )}\n >\n <HamburgerMenu />\n </div>\n </HamburgerContext>\n </HeaderContext>\n )\n}\n\nexport default Header\n"],"mappings":"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"}
|