@twreporter/react-typescript-components 0.1.0-beta.18 → 0.1.0-beta.19
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/lib/button/constants.d.mts +2 -2
- package/lib/button/index.d.mts +12 -12
- package/lib/constants/release-branch.d.mts +2 -2
- package/lib/constants/theme.d.mts +2 -2
- package/lib/constants-0fgvpoyZ.js +171 -0
- package/lib/constants-0fgvpoyZ.js.map +1 -0
- package/lib/{constants-CwFazfN4.d.mts → constants-B5th6nHM.d.mts} +2 -2
- package/lib/{constants-CIMBoUWq.d.mts → constants-B95_A0GY.d.mts} +2 -2
- package/lib/{constants-B_1Vpdib.js → constants-BV86fOLv.js} +1 -1
- package/lib/{constants-B_1Vpdib.js.map → constants-BV86fOLv.js.map} +1 -1
- package/lib/{constants-Br6I254P.mjs → constants-BZGBDC2T.mjs} +1 -1
- package/lib/{constants-Br6I254P.mjs.map → constants-BZGBDC2T.mjs.map} +1 -1
- package/lib/{constants-B-jtTtz5.d.mts → constants-D2OTwBsV.d.mts} +2 -2
- package/lib/{constants-DJDyKM0N.d.mts → constants-DZWOFPZT.d.mts} +2 -2
- package/lib/constants-DyO2QpJk.mjs +154 -0
- package/lib/constants-DyO2QpJk.mjs.map +1 -0
- package/lib/{constants-BL-KiLbo.d.mts → constants-IzZ4bWWt.d.mts} +2 -2
- package/lib/customized-link/external-link.d.mts +2 -2
- package/lib/customized-link/external-link.d.ts +2 -2
- package/lib/customized-link/external-link.js +1 -1
- package/lib/customized-link/external-link.mjs +1 -1
- package/lib/customized-link/index.d.mts +3 -3
- package/lib/customized-link/index.d.ts +3 -3
- package/lib/customized-link/index.js +3 -3
- package/lib/customized-link/index.mjs +3 -3
- package/lib/customized-link/internal-link.d.mts +2 -2
- package/lib/customized-link/internal-link.d.ts +2 -2
- package/lib/customized-link/internal-link.js +1 -1
- package/lib/customized-link/internal-link.mjs +1 -1
- package/lib/customized-link/type.d.mts +1 -1
- package/lib/customized-link/type.d.ts +1 -1
- package/lib/{customized-link-DnaZxeKK.mjs → customized-link-BacydHK_.mjs} +3 -3
- package/lib/{customized-link-DnaZxeKK.mjs.map → customized-link-BacydHK_.mjs.map} +1 -1
- package/lib/{customized-link-DqW2a8oZ.js → customized-link-CHH91yod.js} +3 -3
- package/lib/{customized-link-DqW2a8oZ.js.map → customized-link-CHH91yod.js.map} +1 -1
- package/lib/divider/constants.d.mts +2 -2
- package/lib/divider/index.d.mts +2 -2
- package/lib/dropdown-menu/index.d.mts +1 -1
- package/lib/dropdown-menu/index.d.ts +1 -1
- package/lib/dropdown-menu/index.js +4 -4
- package/lib/dropdown-menu/index.mjs +4 -4
- package/lib/{dropdown-menu-BAqmP8qa.js → dropdown-menu-D4XjLl7G.js} +3 -3
- package/lib/{dropdown-menu-BAqmP8qa.js.map → dropdown-menu-D4XjLl7G.js.map} +1 -1
- package/lib/{dropdown-menu-D7VNOiIl.mjs → dropdown-menu-jbg-kt3s.mjs} +3 -3
- package/lib/{dropdown-menu-D7VNOiIl.mjs.map → dropdown-menu-jbg-kt3s.mjs.map} +1 -1
- package/lib/{external-link-C3_4RBmQ.d.mts → external-link-0t606cM_.d.mts} +2 -2
- package/lib/{external-link-2XoC1_oL.d.ts → external-link-B3tELAVU.d.ts} +2 -2
- package/lib/{external-link-DXT5ep5-.mjs → external-link-Diro-q37.mjs} +4 -2
- package/lib/external-link-Diro-q37.mjs.map +1 -0
- package/lib/{external-link-DoBTwlV3.js → external-link-afU9uFB6.js} +4 -2
- package/lib/external-link-afU9uFB6.js.map +1 -0
- package/lib/footer/constants.d.mts +51 -0
- package/lib/footer/constants.d.ts +51 -0
- package/lib/footer/constants.js +7 -0
- package/lib/footer/constants.mjs +5 -0
- package/lib/footer/index.d.mts +12 -0
- package/lib/footer/index.d.ts +11 -0
- package/lib/footer/index.js +103 -0
- package/lib/footer/index.js.map +1 -0
- package/lib/footer/index.mjs +100 -0
- package/lib/footer/index.mjs.map +1 -0
- package/lib/footer/links.d.mts +23 -0
- package/lib/footer/links.d.ts +23 -0
- package/lib/footer/links.js +19 -0
- package/lib/footer/links.mjs +17 -0
- package/lib/footer/logo.d.mts +12 -0
- package/lib/footer/logo.d.ts +11 -0
- package/lib/footer/logo.js +9 -0
- package/lib/footer/logo.mjs +9 -0
- package/lib/hamburger-menu/index.js +8 -8
- package/lib/hamburger-menu/index.mjs +8 -8
- package/lib/{hamburger-menu-iIWjGEVX.mjs → hamburger-menu-MQgF0vLX.mjs} +6 -6
- package/lib/{hamburger-menu-iIWjGEVX.mjs.map → hamburger-menu-MQgF0vLX.mjs.map} +1 -1
- package/lib/{hamburger-menu-DGS62txC.js → hamburger-menu-baCi46g2.js} +6 -6
- package/lib/{hamburger-menu-DGS62txC.js.map → hamburger-menu-baCi46g2.js.map} +1 -1
- package/lib/header/index.d.mts +3 -3
- package/lib/header/index.js +15 -15
- package/lib/header/index.mjs +14 -14
- package/lib/{heading-Qm-0gpRy.mjs → heading-Cljxy-62.mjs} +1 -1
- package/lib/{heading-Qm-0gpRy.mjs.map → heading-Cljxy-62.mjs.map} +1 -1
- package/lib/{heading-Fvd7unhP.js → heading-Dnpw_s7U.js} +1 -1
- package/lib/{heading-Fvd7unhP.js.map → heading-Dnpw_s7U.js.map} +1 -1
- package/lib/hooks/index.d.mts +3 -3
- package/lib/hooks/index.js +2 -2
- package/lib/hooks/index.mjs +2 -2
- package/lib/hooks/use-outside-click.d.mts +1 -1
- package/lib/hooks/use-outside-click.js +1 -1
- package/lib/hooks/use-outside-click.mjs +1 -1
- package/lib/{hooks-B0DKeSXi.js → hooks-BxlKOoQu.js} +2 -2
- package/lib/{hooks-B0DKeSXi.js.map → hooks-BxlKOoQu.js.map} +1 -1
- package/lib/{hooks-CDCpkU85.mjs → hooks-DmImq-Z7.mjs} +2 -2
- package/lib/{hooks-CDCpkU85.mjs.map → hooks-DmImq-Z7.mjs.map} +1 -1
- package/lib/icons/constants.d.mts +2 -2
- package/lib/icons/index.d.mts +12 -12
- package/lib/{index-B0aBR23L.d.mts → index-DegwO8ei.d.mts} +1 -1
- package/lib/input/constants.d.mts +1 -1
- package/lib/input/index.d.mts +5 -5
- package/lib/input/index.js +2 -2
- package/lib/input/index.mjs +2 -2
- package/lib/input/theme.d.mts +2 -2
- package/lib/input/theme.js +1 -1
- package/lib/input/theme.mjs +1 -1
- package/lib/{input-VmgNb9pm.js → input-DaMbsNrg.js} +2 -2
- package/lib/{input-VmgNb9pm.js.map → input-DaMbsNrg.js.map} +1 -1
- package/lib/{input-BU_QJnbj.mjs → input-DvriSZ9o.mjs} +2 -2
- package/lib/{input-BU_QJnbj.mjs.map → input-DvriSZ9o.mjs.map} +1 -1
- package/lib/{internal-link-B9ExuJfg.js → internal-link-Bq4yp13E.js} +4 -2
- package/lib/{internal-link-B9ExuJfg.js.map → internal-link-Bq4yp13E.js.map} +1 -1
- package/lib/{internal-link-NQb751uB.mjs → internal-link-DCXJvzgx.mjs} +4 -2
- package/lib/{internal-link-NQb751uB.mjs.map → internal-link-DCXJvzgx.mjs.map} +1 -1
- package/lib/{internal-link-HG_KM8L7.d.mts → internal-link-Daag4Lrv.d.mts} +2 -2
- package/lib/{internal-link-DCSEl1jM.d.ts → internal-link-DtMsmfE9.d.ts} +2 -2
- package/lib/links-DO97xw7S.mjs +89 -0
- package/lib/links-DO97xw7S.mjs.map +1 -0
- package/lib/links-Xuo8pb4a.js +110 -0
- package/lib/links-Xuo8pb4a.js.map +1 -0
- package/lib/logo/constants.d.mts +2 -2
- package/lib/logo/index.d.mts +26 -11
- package/lib/logo/index.d.ts +18 -3
- package/lib/logo/index.js +2 -1
- package/lib/logo/index.mjs +2 -2
- package/lib/{logo-BTNfdxTv.js → logo-B3GSkN1O.js} +28 -5
- package/lib/logo-B3GSkN1O.js.map +1 -0
- package/lib/logo-C5NgKyYa.js +32 -0
- package/lib/logo-C5NgKyYa.js.map +1 -0
- package/lib/logo-CumKSrK5.mjs +24 -0
- package/lib/logo-CumKSrK5.mjs.map +1 -0
- package/lib/{logo-D68VZ-fc.mjs → logo-NfYCtrtN.mjs} +22 -6
- package/lib/logo-NfYCtrtN.mjs.map +1 -0
- package/lib/{release-branch-CFUcv043.d.mts → release-branch-CaxOk9Rq.d.mts} +2 -2
- package/lib/styles.css +126 -0
- package/lib/tab-bar/constants.d.mts +3 -3
- package/lib/tab-bar/constants.d.ts +1 -1
- package/lib/tab-bar/constants.js +1 -1
- package/lib/tab-bar/constants.mjs +1 -1
- package/lib/tab-bar/index.js +6 -6
- package/lib/tab-bar/index.mjs +6 -6
- package/lib/tab-bar/theme.d.mts +2 -2
- package/lib/tab-bar/theme.js +1 -1
- package/lib/tab-bar/theme.mjs +1 -1
- package/lib/{tab-bar-CXhDni4V.mjs → tab-bar-CQjgjdkW.mjs} +5 -5
- package/lib/{tab-bar-CXhDni4V.mjs.map → tab-bar-CQjgjdkW.mjs.map} +1 -1
- package/lib/{tab-bar-CZt-vw5x.js → tab-bar-Dq0ewfWA.js} +5 -5
- package/lib/{tab-bar-CZt-vw5x.js.map → tab-bar-Dq0ewfWA.js.map} +1 -1
- package/lib/text/constants.d.mts +2 -2
- package/lib/text/heading.d.mts +2 -2
- package/lib/text/heading.js +1 -1
- package/lib/text/heading.mjs +1 -1
- package/lib/text/paragraph.d.mts +2 -2
- package/lib/{theme-CmvdSSbX.js → theme-BQQzAfHb.js} +1 -1
- package/lib/{theme-CmvdSSbX.js.map → theme-BQQzAfHb.js.map} +1 -1
- package/lib/{theme-CE2RkJwt.mjs → theme-CDCgzSJw.mjs} +1 -1
- package/lib/{theme-CE2RkJwt.mjs.map → theme-CDCgzSJw.mjs.map} +1 -1
- package/lib/{theme-BQP-h-2z.d.mts → theme-Cx5oFufE.d.mts} +2 -2
- package/lib/{theme-Bgd_TUHZ.mjs → theme-D_LHh2_S.mjs} +1 -1
- package/lib/{theme-Bgd_TUHZ.mjs.map → theme-D_LHh2_S.mjs.map} +1 -1
- package/lib/{theme-Cv8rt4oO.js → theme-LkZX5giH.js} +1 -1
- package/lib/{theme-Cv8rt4oO.js.map → theme-LkZX5giH.js.map} +1 -1
- package/lib/title-bar/index.d.mts +4 -4
- package/lib/title-bar/index.d.ts +4 -4
- package/lib/title-bar/index.js +4 -4
- package/lib/title-bar/index.mjs +4 -4
- package/lib/{type-C4hJK9H9.d.ts → type-DGvbr3Rm.d.mts} +3 -1
- package/lib/{type-Dons5TOa.d.mts → type-ubTUOk6A.d.ts} +3 -1
- package/lib/types/index.d.mts +1 -1
- package/lib/{use-outside-click-DAfe2vPE.mjs → use-outside-click-Br_ste4n.mjs} +1 -1
- package/lib/{use-outside-click-DAfe2vPE.mjs.map → use-outside-click-Br_ste4n.mjs.map} +1 -1
- package/lib/{use-outside-click-BB1MpRid.js → use-outside-click-Cl1QlhTH.js} +1 -1
- package/lib/{use-outside-click-BB1MpRid.js.map → use-outside-click-Cl1QlhTH.js.map} +1 -1
- package/lib/use-outside-click-Diz2B7wx.d.mts +7 -0
- package/package.json +2 -2
- package/lib/external-link-DXT5ep5-.mjs.map +0 -1
- package/lib/external-link-DoBTwlV3.js.map +0 -1
- package/lib/logo-BTNfdxTv.js.map +0 -1
- package/lib/logo-D68VZ-fc.mjs.map +0 -1
- package/lib/use-outside-click-CSVLlhkD.d.mts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hamburger-menu-DGS62txC.js","names":["INTERNAL_LINKS","EXTERNAL_LINKS","SocialMedias: SocialMediaType[]","MEDIA_TYPE","EXTERNAL_LINKS","HEADER_ACTION_LINKS: ActionLink[]","INTERNAL_LINKS","TYPE","EXTERNAL_LINKS","HAMBURGER_MENU_ACION_LINKS: ActionLink[]","IconLink: FC<IconLinkProps>","HeaderContext","THEME","ExternalLink","InternalLink","selectHamburgerFooterTheme","Icon","P2","IconLink","IconLink: FC<IconLinkProps>","HeaderContext","THEME","selectHamburgerFooterTheme","ExternalLink","InternalLink","P2","SocialMedia: FC<SocialMediaProps>","HeaderContext","THEME","IconButton","SocialMediaIcon","SocialMedia","HamburgerMenu: FC","HeaderContext","HamburgerContext","THEME","selectHamburgerMenuTheme","selectLogoType","ExternalLink","InternalLink","INTERNAL_LINKS","IconButton","Cross","LogoSymbol","LogoHeader","EXTERNAL_LINKS","PillButton","Member","TextButton","SearchBar","selectHamburgerItemTheme","MenuButton","Divider","DropdownMenu","IconLink","LightLink","SocialMedia"],"sources":["../src/hamburger-menu/constants/channels.ts","../src/hamburger-menu/constants/social-media.ts","../src/header/constants/action-links.ts","../src/hamburger-menu/components/icon-link.tsx","../src/hamburger-menu/components/light-link.tsx","../src/hamburger-menu/components/social-media.tsx","../src/hamburger-menu/index.tsx"],"sourcesContent":["import { INTERNAL_LINKS } from '../../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\n\nexport const CHANNEL_TYPE = {\n link: 'link',\n divider: 'divider',\n dropdown: 'dropdown',\n iconLink: 'icon-link',\n lightLink: 'light-link',\n} as const\n\nexport const Channels = [\n {\n type: CHANNEL_TYPE.link,\n label: '最新',\n to: INTERNAL_LINKS.latest,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '深度專題',\n to: INTERNAL_LINKS.topics,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: '議題',\n dropdownItems: [\n {\n label: '國際兩岸',\n to: INTERNAL_LINKS.categories.world,\n target: '_self' as LinkTarget,\n },\n {\n label: '人權司法',\n to: INTERNAL_LINKS.categories.humanRights,\n target: '_self' as LinkTarget,\n },\n {\n label: '政治社會',\n to: INTERNAL_LINKS.categories.politicsAndSociety,\n target: '_self' as LinkTarget,\n },\n {\n label: '醫療健康',\n to: INTERNAL_LINKS.categories.health,\n target: '_self' as LinkTarget,\n },\n {\n label: '環境永續',\n to: INTERNAL_LINKS.categories.environment,\n target: '_self' as LinkTarget,\n },\n {\n label: '經濟產業',\n to: INTERNAL_LINKS.categories.econ,\n target: '_self' as LinkTarget,\n },\n {\n label: '文化生活',\n to: INTERNAL_LINKS.categories.culture,\n target: '_self' as LinkTarget,\n },\n {\n label: '教育校園',\n to: INTERNAL_LINKS.categories.education,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: '評論',\n dropdownItems: [\n {\n label: '書摘與書評',\n to: INTERNAL_LINKS.categories.opinion.bookReview,\n target: '_self' as LinkTarget,\n },\n {\n label: '讀者投書',\n to: INTERNAL_LINKS.categories.opinion.letter,\n target: '_self' as LinkTarget,\n },\n {\n label: '全部',\n to: INTERNAL_LINKS.categories.opinion.index,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.link,\n label: '人物故事',\n to: INTERNAL_LINKS.humanStory,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '影像',\n to: INTERNAL_LINKS.photography,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: 'Podcast',\n dropdownItems: [\n {\n label: '關於報導者 Podcast',\n to: INTERNAL_LINKS.podcast.aboutPodcast,\n target: '_self' as LinkTarget,\n },\n {\n label: 'The Real Story',\n to: INTERNAL_LINKS.categories.podcast.theRealStory,\n target: '_self' as LinkTarget,\n },\n {\n label: 'On the Ground 路邊攤計劃',\n to: INTERNAL_LINKS.categories.podcast.onTheGround,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.link,\n label: '少年報導者',\n to: EXTERNAL_LINKS.kidsReporter,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '報導者觀測站',\n to: EXTERNAL_LINKS.lawmaker,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '數位敘事',\n to: INTERNAL_LINKS.infographic,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '個人專區',\n icon: 'member',\n to: INTERNAL_LINKS.account.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '我的閱讀',\n icon: 'kid_star',\n to: INTERNAL_LINKS.myReading.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '已收藏',\n icon: 'bookmark_basic',\n to: INTERNAL_LINKS.myReading.savedBookmarks,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '造訪紀錄',\n icon: 'history',\n to: INTERNAL_LINKS.myReading.browsingHistory,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '基金會消息',\n to: INTERNAL_LINKS.categories.foundation.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '關於我們',\n to: INTERNAL_LINKS.about,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '影響力報告',\n to: INTERNAL_LINKS.influenceReport,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '報導者開放實驗室',\n to: EXTERNAL_LINKS.openLab,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '出版品與周邊',\n to: EXTERNAL_LINKS.publicationAndMerchandise,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n]\n","import { MEDIA_TYPE, type MediaType } from '../../icons/constants'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype SocialMediaType = {\n icon: MediaType\n link: string\n target: LinkTarget\n}\nexport const SocialMedias: SocialMediaType[] = [\n {\n icon: MEDIA_TYPE.facebook,\n link: EXTERNAL_LINKS.facebook,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.instagram,\n link: EXTERNAL_LINKS.instagram,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.threads,\n link: EXTERNAL_LINKS.threads,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.youtube,\n link: EXTERNAL_LINKS.youtube,\n target: '_blank',\n },\n]\n","import { INTERNAL_LINKS } from '../../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\nimport { TYPE, type Type } from '../../button/constants'\n\ntype ActionLink = {\n label: string\n to: string\n target: LinkTarget\n type: Type\n}\n\nexport const HEADER_ACTION_LINKS: ActionLink[] = [\n {\n label: '電子報',\n to: INTERNAL_LINKS.account.emailSubscription,\n target: '_self' as LinkTarget,\n type: TYPE.secondary,\n },\n {\n label: '贊助',\n to: EXTERNAL_LINKS.monthlyDonation,\n target: '_blank',\n type: TYPE.primary,\n },\n]\n\nexport const HAMBURGER_MENU_ACION_LINKS: ActionLink[] = [\n {\n label: '訂閱電子報',\n to: INTERNAL_LINKS.account.emailSubscription,\n target: '_self',\n type: TYPE.secondary,\n },\n {\n label: '贊助我們',\n to: EXTERNAL_LINKS.monthlyDonation,\n target: '_blank',\n type: TYPE.primary,\n },\n]\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// theme\nimport { THEME } from '../../constants/theme'\n// utils\nimport { selectHamburgerFooterTheme } from '../utils/theme'\n// icon\nimport { Icon } from '../../icons'\n// text\nimport { P2 } from '../../text/paragraph'\n// link\nimport { ExternalLink, InternalLink } from '../../customized-link'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype IconLinkProps = {\n label: string\n icon: string\n to: string\n target: LinkTarget\n}\nconst IconLink: FC<IconLinkProps> = ({ label, icon, to, target }) => {\n const { theme, releaseBranch, isLinkExternal } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n const {\n color,\n hoverColor,\n hoverBgColor,\n svgHoverBgColor,\n svgBgColor,\n activeColor,\n activeBgColor,\n svgActiveBgColor,\n } = selectHamburgerFooterTheme(footerTheme)\n return (\n <LinkComponent to={to} target={target}>\n <div\n className={clsx(\n 'py-[8px] px-[32px] flex items-center',\n '[&>svg]:h-[18px] [&>svg]:w-[18px] [&>svg]:mr-[4px]',\n color,\n hoverColor,\n hoverBgColor,\n svgHoverBgColor,\n svgBgColor,\n activeColor,\n activeBgColor,\n svgActiveBgColor\n )}\n >\n <Icon filename={icon} releaseBranch={releaseBranch} />\n <P2 text={label} />\n </div>\n </LinkComponent>\n )\n}\n\nexport default IconLink\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// theme\nimport { THEME } from '../../constants/theme'\n// utils\nimport { selectHamburgerFooterTheme } from '../utils/theme'\n// text\nimport { P2 } from '../../text/paragraph'\n// link\nimport { ExternalLink, InternalLink } from '../../customized-link'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype IconLinkProps = {\n label: string\n to: string\n target: LinkTarget\n}\nconst IconLink: FC<IconLinkProps> = ({ label, to, target }) => {\n const { theme, isLinkExternal } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const { color, hoverColor, hoverBgColor, activeColor, activeBgColor } =\n selectHamburgerFooterTheme(footerTheme)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <LinkComponent to={to} target={target}>\n <div\n className={clsx(\n 'py-[8px] px-[32px] flex items-center',\n '[&>svg]:h-[18px] [&>svg]:w-[18px] [&>svg]:mr-[4px]',\n color,\n hoverColor,\n hoverBgColor,\n activeColor,\n activeBgColor\n )}\n >\n <P2 text={label} />\n </div>\n </LinkComponent>\n )\n}\n\nexport default IconLink\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// icon\nimport { SocialMedia as SocialMediaIcon } from '../../icons'\n// type\nimport type { MediaType } from '../../icons/constants'\n// theme\nimport { THEME } from '../../constants/theme'\n// button\nimport { IconButton } from '../../button'\n\ntype SocialMediaProps = {\n mediaType: MediaType\n}\nconst SocialMedia: FC<SocialMediaProps> = ({ mediaType }) => {\n const { theme, releaseBranch } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const Icon = (\n <SocialMediaIcon mediaType={mediaType} releaseBranch={releaseBranch} />\n )\n return (\n <IconButton\n iconComponent={Icon}\n theme={footerTheme}\n className={clsx(\n '[&>svg]:h-[32px] [&>svg]:w-[32px]',\n '[&>svg]:tablet:h-[24px] [&>svg]:tablet:w-[24px]'\n )}\n />\n )\n}\n\nexport default SocialMedia\n","import { useContext, useState, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext, HamburgerContext } from '../header/context'\n// constants\nimport { THEME } from '../constants/theme'\nimport { Channels, CHANNEL_TYPE } from './constants/channels'\nimport { SocialMedias } from './constants/social-media'\nimport { HAMBURGER_MENU_ACION_LINKS } from '../header/constants/action-links'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../constants/external-links'\n// utils\nimport {\n selectHamburgerMenuTheme,\n selectHamburgerItemTheme,\n} from './utils/theme'\n// buttons\nimport { IconButton, MenuButton, PillButton, TextButton } from '../button'\n// icons\nimport { Cross, Member } from '../icons'\n// logo\nimport { LogoSymbol, LogoHeader } from '../logo'\n// utils\nimport { selectLogoType } from './utils/theme'\n// divider\nimport Divider from '../divider'\n// components\nimport { DropdownMenu } from '../dropdown-menu'\nimport IconLink from './components/icon-link'\nimport LightLink from './components/light-link'\nimport SocialMedia from './components/social-media'\n// link\nimport { ExternalLink, InternalLink } from '../customized-link'\n// search bar\nimport { SearchBar } from '../input'\n\nconst HamburgerMenu: FC = () => {\n const { theme, releaseBranch, isLinkExternal, isAuthed } =\n useContext(HeaderContext)\n const { closeHamburgerMenu } = useContext(HamburgerContext)\n\n const menuTheme = theme === THEME.photography ? theme : THEME.normal\n const { bgColor, scrollBarColor } = selectHamburgerMenuTheme(menuTheme)\n const logoType = selectLogoType(menuTheme)\n const [activeKey, setActiveKey] = useState('')\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n\n const onSearch = (keywords: string) => {\n if (typeof window === 'undefined') {\n return\n }\n window.location.href = `${INTERNAL_LINKS.search}?q=${encodeURIComponent(keywords)}`\n }\n\n return (\n <div\n className={clsx(\n 'w-screen h-screen overflow-y-scroll overscroll-contain',\n bgColor,\n // reserveHeightForIos15 is 48px\n `pb-[calc(48px+48px)]`,\n 'tablet:w-[320px] tablet:max-h-screen tablet:pb-0',\n 'desktop:w-[280px]',\n '[&::-webkit-scrollbar]:w-[4px]',\n '[&::-webkit-scrollbar]:bg-transparent',\n '[&::-webkit-scrollbar-thumb]:rounded-[2px]',\n scrollBarColor\n )}\n >\n {/* close icon */}\n <div\n className={clsx(\n 'hidden items-center justify-end pt-[24px] pr-[32px] pb-[16px]',\n 'tablet:flex'\n )}\n >\n <IconButton\n iconComponent={Cross(releaseBranch)}\n theme={menuTheme}\n onClick={closeHamburgerMenu}\n />\n </div>\n {/* logo */}\n <LinkComponent to={INTERNAL_LINKS.home}>\n <div\n className={clsx(\n 'hidden justify-center [&>img]:h-[24px] [&>img]:w-[24px]',\n 'tablet:flex'\n )}\n >\n <LogoSymbol type={logoType} releaseBranch={releaseBranch} />\n </div>\n </LinkComponent>\n {/* mobile hamburger header */}\n <div\n className={clsx(\n 'flex items-center justify-between px-[24px] py-[16px]',\n 'tablet:hidden'\n )}\n >\n <LinkComponent to={INTERNAL_LINKS.home}>\n <LogoHeader\n type={logoType}\n releaseBranch={releaseBranch}\n className=\"h-[21px]\"\n />\n </LinkComponent>\n <div className=\"flex items-center gap-[16px]\">\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 {isAuthed ? (\n <IconButton iconComponent={Member(releaseBranch)} />\n ) : (\n <TextButton\n text=\"登入\"\n theme={TextButton.Theme.normal}\n style={TextButton.Style.dark}\n size={TextButton.Size.s}\n />\n )}\n </LinkComponent>\n </div>\n </div>\n {/* search bar (visible on mobile and tablet) */}\n <div className=\"px-[32px] pt-[24px] pb-[8px] desktop:hidden\">\n <SearchBar\n onSearch={onSearch}\n autoFocus={false}\n placeholder=\"關鍵字搜尋\"\n theme={menuTheme}\n releaseBranch={releaseBranch}\n searchBarWidth=\"w-full\"\n />\n </div>\n {/* menu buttons */}\n <div className=\"flex flex-col pt-[16px]\">\n {Channels.map((channel, idx) => {\n if (channel.type === CHANNEL_TYPE.link) {\n const { color, hoverBgColor, activeBgColor } =\n selectHamburgerItemTheme(theme)\n return (\n <LinkComponent\n to={channel.to}\n target={channel.target}\n key={channel.label}\n >\n <MenuButton\n key={channel.label}\n text={channel.label}\n fontWeight={MenuButton.FontWeight.bold}\n color={color}\n p1ClassName={`${hoverBgColor} ${activeBgColor} pl-[32px] pr-[32px]`}\n />\n </LinkComponent>\n )\n }\n if (channel.type === CHANNEL_TYPE.divider) {\n return (\n <div className=\"py-[16px] px-[32px]\" key={`divider-${idx}`}>\n <Divider direction={Divider.Direction.horizontal} />\n </div>\n )\n }\n if (channel.type === CHANNEL_TYPE.dropdown) {\n const isActive = activeKey === channel.label\n const toggleFunc = (key: string) => {\n const nextActiveKey = activeKey === key ? '' : key\n setActiveKey(nextActiveKey)\n }\n return (\n <button\n onClick={() => toggleFunc(channel.label)}\n key={channel.label}\n type=\"button\"\n >\n <DropdownMenu\n text={channel.label}\n isActive={isActive}\n dropdownItems={channel.dropdownItems}\n />\n </button>\n )\n }\n if (channel.type === CHANNEL_TYPE.iconLink) {\n return (\n <IconLink\n label={channel.label}\n to={channel.to}\n target={channel.target}\n icon={channel.icon}\n key={channel.label}\n />\n )\n }\n if (channel.type === CHANNEL_TYPE.lightLink) {\n return (\n <LightLink\n label={channel.label}\n to={channel.to}\n target={channel.target}\n key={channel.label}\n />\n )\n }\n })}\n </div>\n {/* social media */}\n <div className=\"flex flex-row gap-[16px] justify-center\">\n {SocialMedias.map((socialMedia) => (\n <LinkComponent\n to={socialMedia.link}\n target={socialMedia.target}\n key={socialMedia.icon}\n >\n <SocialMedia mediaType={socialMedia.icon} />\n </LinkComponent>\n ))}\n </div>\n {/* action butoons */}\n <div\n className={clsx(\n 'flex flex-row gap-[16px] px-[32px] pt-[40px] pb-[32px]',\n 'tablet:flex-col'\n )}\n >\n {HAMBURGER_MENU_ACION_LINKS.map((link) => (\n <LinkComponent\n to={link.to}\n target={link.target}\n key={link.label}\n className=\"flex-1\"\n >\n <PillButton\n text={link.label}\n theme={theme}\n type={link.type}\n className=\"w-full justify-center\"\n size={PillButton.Size.l}\n />\n </LinkComponent>\n ))}\n </div>\n </div>\n )\n}\n\nexport default HamburgerMenu\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAa,eAAe;CAC1B,MAAM;CACN,SAAS;CACT,UAAU;CACV,UAAU;CACV,WAAW;CACZ;AAED,MAAa,WAAW;CACtB;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD,EACE,MAAM,aAAa,SACpB;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,eAAe;GACb;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW;IAC9B,QAAQ;IACT;GACF;EACF;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,eAAe;GACb;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW,QAAQ;IACtC,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW,QAAQ;IACtC,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW,QAAQ;IACtC,QAAQ;IACT;GACF;EACF;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD,EACE,MAAM,aAAa,SACpB;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,eAAe;GACb;IACE,OAAO;IACP,IAAIA,sCAAe,QAAQ;IAC3B,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW,QAAQ;IACtC,QAAQ;IACT;GACD;IACE,OAAO;IACP,IAAIA,sCAAe,WAAW,QAAQ;IACtC,QAAQ;IACT;GACF;EACF;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIC,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAID,sCAAe;EACnB,QAAQ;EACT;CACD,EACE,MAAM,aAAa,SACpB;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,MAAM;EACN,IAAIA,sCAAe,QAAQ;EAC3B,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,MAAM;EACN,IAAIA,sCAAe,UAAU;EAC7B,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,MAAM;EACN,IAAIA,sCAAe,UAAU;EAC7B,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,MAAM;EACN,IAAIA,sCAAe,UAAU;EAC7B,QAAQ;EACT;CACD,EACE,MAAM,aAAa,SACpB;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe,WAAW,WAAW;EACzC,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIC,sCAAe;EACnB,QAAQ;EACT;CACD;EACE,MAAM,aAAa;EACnB,OAAO;EACP,IAAIA,sCAAe;EACnB,QAAQ;EACT;CACD,EACE,MAAM,aAAa,SACpB;CACF;;;;AC/MD,MAAaC,eAAkC;CAC7C;EACE,MAAMC,+BAAW;EACjB,MAAMC,sCAAe;EACrB,QAAQ;EACT;CACD;EACE,MAAMD,+BAAW;EACjB,MAAMC,sCAAe;EACrB,QAAQ;EACT;CACD;EACE,MAAMD,+BAAW;EACjB,MAAMC,sCAAe;EACrB,QAAQ;EACT;CACD;EACE,MAAMD,+BAAW;EACjB,MAAMC,sCAAe;EACrB,QAAQ;EACT;CACF;;;;AClBD,MAAaC,sBAAoC,CAC/C;CACE,OAAO;CACP,IAAIC,sCAAe,QAAQ;CAC3B,QAAQ;CACR,MAAMC,uBAAK;CACZ,EACD;CACE,OAAO;CACP,IAAIC,sCAAe;CACnB,QAAQ;CACR,MAAMD,uBAAK;CACZ,CACF;AAED,MAAaE,6BAA2C,CACtD;CACE,OAAO;CACP,IAAIH,sCAAe,QAAQ;CAC3B,QAAQ;CACR,MAAMC,uBAAK;CACZ,EACD;CACE,OAAO;CACP,IAAIC,sCAAe;CACnB,QAAQ;CACR,MAAMD,uBAAK;CACZ,CACF;;;;AClBD,MAAMG,cAA+B,EAAE,OAAO,MAAM,IAAI,aAAa;CACnE,MAAM,EAAE,OAAO,eAAe,yCAA8BC,8BAAc;CAC1E,MAAM,cAAc,UAAUC,oBAAM,cAAcA,oBAAM,SAAS;CACjE,MAAM,gBAAgB,iBAAiBC,8CAAeC;CACtD,MAAM,EACJ,OACA,YACA,cACA,iBACA,YACA,aACA,eACA,qBACEC,iDAA2B,YAAY;AAC3C,QACE,2CAAC;EAAkB;EAAY;YAC7B,4CAAC;GACC,6BACE,wCACA,sDACA,OACA,YACA,cACA,iBACA,YACA,aACA,eACA,iBACD;cAED,2CAACC;IAAK,UAAU;IAAqB;KAAiB,EACtD,2CAACC,wBAAG,MAAM,QAAS;IACf;GACQ;;AAIpB,wBAAeC;;;;ACxCf,MAAMC,YAA+B,EAAE,OAAO,IAAI,aAAa;CAC7D,MAAM,EAAE,OAAO,yCAA8BC,8BAAc;CAC3D,MAAM,cAAc,UAAUC,oBAAM,cAAcA,oBAAM,SAAS;CACjE,MAAM,EAAE,OAAO,YAAY,cAAc,aAAa,kBACpDC,iDAA2B,YAAY;AAEzC,QACE,2CAFoB,iBAAiBC,8CAAeC;EAEjC;EAAY;YAC7B,2CAAC;GACC,6BACE,wCACA,sDACA,OACA,YACA,cACA,aACA,cACD;aAED,2CAACC,wBAAG,MAAM,QAAS;IACf;GACQ;;AAIpB,yBAAe;;;;AC5Bf,MAAMC,iBAAqC,EAAE,gBAAgB;CAC3D,MAAM,EAAE,OAAO,wCAA6BC,8BAAc;CAC1D,MAAM,cAAc,UAAUC,oBAAM,cAAcA,oBAAM,SAAS;AAIjE,QACE,2CAACC;EACC,eAJF,2CAACC;GAA2B;GAA0B;IAAiB;EAKrE,OAAO;EACP,6BACE,qCACA,kDACD;GACD;;AAIN,2BAAeC;;;;ACEf,MAAMC,sBAA0B;CAC9B,MAAM,EAAE,OAAO,eAAe,gBAAgB,mCACjCC,8BAAc;CAC3B,MAAM,EAAE,6CAAkCC,iCAAiB;CAE3D,MAAM,YAAY,UAAUC,oBAAM,cAAc,QAAQA,oBAAM;CAC9D,MAAM,EAAE,SAAS,mBAAmBC,+CAAyB,UAAU;CACvE,MAAM,WAAWC,qCAAe,UAAU;CAC1C,MAAM,CAAC,WAAW,oCAAyB,GAAG;CAC9C,MAAM,gBAAgB,iBAAiBC,8CAAeC;CAEtD,MAAM,YAAY,aAAqB;AACrC,MAAI,OAAO,WAAW,YACpB;AAEF,SAAO,SAAS,OAAO,GAAGC,sCAAe,OAAO,KAAK,mBAAmB,SAAS;;AAGnF,QACE,4CAAC;EACC,6BACE,0DACA,SAEA,wBACA,oDACA,qBACA,kCACA,yCACA,8CACA,eACD;;GAGD,2CAAC;IACC,6BACE,iEACA,cACD;cAED,2CAACC;KACC,eAAeC,oBAAM,cAAc;KACnC,OAAO;KACP,SAAS;MACT;KACE;GAEN,2CAAC;IAAc,IAAIF,sCAAe;cAChC,2CAAC;KACC,6BACE,2DACA,cACD;eAED,2CAACG;MAAW,MAAM;MAAyB;OAAiB;MACxD;KACQ;GAEhB,4CAAC;IACC,6BACE,yDACA,gBACD;eAED,2CAAC;KAAc,IAAIH,sCAAe;eAChC,2CAACI;MACC,MAAM;MACS;MACf,WAAU;OACV;MACY,EAChB,4CAAC;KAAI,WAAU;gBACb,2CAAC;MAAc,IAAIC,sCAAe;gBAChC,2CAACC;OACC,MAAK;OACL,OAAOA,mCAAW,MAAM;OACxB,MAAMA,mCAAW,KAAK;OACtB,OAAOA,mCAAW,MAAM;QACxB;OACY,EAChB,2CAAC;MAAc,IAAIN,sCAAe,QAAQ;gBACvC,WACC,2CAACC,sCAAW,eAAeM,qBAAO,cAAc,GAAI,GAEpD,2CAACC;OACC,MAAK;OACL,OAAOA,mCAAW,MAAM;OACxB,OAAOA,mCAAW,MAAM;OACxB,MAAMA,mCAAW,KAAK;QACtB;OAEU;MACZ;KACF;GAEN,2CAAC;IAAI,WAAU;cACb,2CAACC;KACW;KACV,WAAW;KACX,aAAY;KACZ,OAAO;KACQ;KACf,gBAAe;MACf;KACE;GAEN,2CAAC;IAAI,WAAU;cACZ,SAAS,KAAK,SAAS,QAAQ;AAC9B,SAAI,QAAQ,SAAS,aAAa,MAAM;MACtC,MAAM,EAAE,OAAO,cAAc,kBAC3BC,+CAAyB,MAAM;AACjC,aACE,2CAAC;OACC,IAAI,QAAQ;OACZ,QAAQ,QAAQ;iBAGhB,2CAACC;QAEC,MAAM,QAAQ;QACd,YAAYA,mCAAW,WAAW;QAC3B;QACP,aAAa,GAAG,aAAa,GAAG,cAAc;UAJzC,QAAQ,MAKb;SARG,QAAQ,MASC;;AAGpB,SAAI,QAAQ,SAAS,aAAa,QAChC,QACE,2CAAC;MAAI,WAAU;gBACb,2CAACC,mCAAQ,WAAWA,gCAAQ,UAAU,aAAc;QADZ,WAAW,MAE/C;AAGV,SAAI,QAAQ,SAAS,aAAa,UAAU;MAC1C,MAAM,WAAW,cAAc,QAAQ;MACvC,MAAM,cAAc,QAAgB;AAElC,oBADsB,cAAc,MAAM,KAAK,IACpB;;AAE7B,aACE,2CAAC;OACC,eAAe,WAAW,QAAQ,MAAM;OAExC,MAAK;iBAEL,2CAACC;QACC,MAAM,QAAQ;QACJ;QACV,eAAe,QAAQ;SACvB;SAPG,QAAQ,MAQN;;AAGb,SAAI,QAAQ,SAAS,aAAa,SAChC,QACE,2CAACC;MACC,OAAO,QAAQ;MACf,IAAI,QAAQ;MACZ,QAAQ,QAAQ;MAChB,MAAM,QAAQ;QACT,QAAQ,MACb;AAGN,SAAI,QAAQ,SAAS,aAAa,UAChC,QACE,2CAACC;MACC,OAAO,QAAQ;MACf,IAAI,QAAQ;MACZ,QAAQ,QAAQ;QACX,QAAQ,MACb;MAGN;KACE;GAEN,2CAAC;IAAI,WAAU;cACZ,aAAa,KAAK,gBACjB,2CAAC;KACC,IAAI,YAAY;KAChB,QAAQ,YAAY;eAGpB,2CAACC,wBAAY,WAAW,YAAY,OAAQ;OAFvC,YAAY,KAGH,CAChB;KACE;GAEN,2CAAC;IACC,6BACE,0DACA,kBACD;cAEA,2BAA2B,KAAK,SAC/B,2CAAC;KACC,IAAI,KAAK;KACT,QAAQ,KAAK;KAEb,WAAU;eAEV,2CAACV;MACC,MAAM,KAAK;MACJ;MACP,MAAM,KAAK;MACX,WAAU;MACV,MAAMA,mCAAW,KAAK;OACtB;OATG,KAAK,MAUI,CAChB;KACE;;GACF;;AAIV,6BAAe"}
|
|
1
|
+
{"version":3,"file":"hamburger-menu-baCi46g2.js","names":["INTERNAL_LINKS","EXTERNAL_LINKS","SocialMedias: SocialMediaType[]","MEDIA_TYPE","EXTERNAL_LINKS","HEADER_ACTION_LINKS: ActionLink[]","INTERNAL_LINKS","TYPE","EXTERNAL_LINKS","HAMBURGER_MENU_ACION_LINKS: ActionLink[]","IconLink: FC<IconLinkProps>","HeaderContext","THEME","ExternalLink","InternalLink","selectHamburgerFooterTheme","Icon","P2","IconLink","IconLink: FC<IconLinkProps>","HeaderContext","THEME","selectHamburgerFooterTheme","ExternalLink","InternalLink","P2","SocialMedia: FC<SocialMediaProps>","HeaderContext","THEME","IconButton","SocialMediaIcon","SocialMedia","HamburgerMenu: FC","HeaderContext","HamburgerContext","THEME","selectHamburgerMenuTheme","selectLogoType","ExternalLink","InternalLink","INTERNAL_LINKS","IconButton","Cross","LogoSymbol","LogoHeader","EXTERNAL_LINKS","PillButton","Member","TextButton","SearchBar","selectHamburgerItemTheme","MenuButton","Divider","DropdownMenu","IconLink","LightLink","SocialMedia"],"sources":["../src/hamburger-menu/constants/channels.ts","../src/hamburger-menu/constants/social-media.ts","../src/header/constants/action-links.ts","../src/hamburger-menu/components/icon-link.tsx","../src/hamburger-menu/components/light-link.tsx","../src/hamburger-menu/components/social-media.tsx","../src/hamburger-menu/index.tsx"],"sourcesContent":["import { INTERNAL_LINKS } from '../../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\n\nexport const CHANNEL_TYPE = {\n link: 'link',\n divider: 'divider',\n dropdown: 'dropdown',\n iconLink: 'icon-link',\n lightLink: 'light-link',\n} as const\n\nexport const Channels = [\n {\n type: CHANNEL_TYPE.link,\n label: '最新',\n to: INTERNAL_LINKS.latest,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '深度專題',\n to: INTERNAL_LINKS.topics,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: '議題',\n dropdownItems: [\n {\n label: '國際兩岸',\n to: INTERNAL_LINKS.categories.world,\n target: '_self' as LinkTarget,\n },\n {\n label: '人權司法',\n to: INTERNAL_LINKS.categories.humanRights,\n target: '_self' as LinkTarget,\n },\n {\n label: '政治社會',\n to: INTERNAL_LINKS.categories.politicsAndSociety,\n target: '_self' as LinkTarget,\n },\n {\n label: '醫療健康',\n to: INTERNAL_LINKS.categories.health,\n target: '_self' as LinkTarget,\n },\n {\n label: '環境永續',\n to: INTERNAL_LINKS.categories.environment,\n target: '_self' as LinkTarget,\n },\n {\n label: '經濟產業',\n to: INTERNAL_LINKS.categories.econ,\n target: '_self' as LinkTarget,\n },\n {\n label: '文化生活',\n to: INTERNAL_LINKS.categories.culture,\n target: '_self' as LinkTarget,\n },\n {\n label: '教育校園',\n to: INTERNAL_LINKS.categories.education,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: '評論',\n dropdownItems: [\n {\n label: '書摘與書評',\n to: INTERNAL_LINKS.categories.opinion.bookReview,\n target: '_self' as LinkTarget,\n },\n {\n label: '讀者投書',\n to: INTERNAL_LINKS.categories.opinion.letter,\n target: '_self' as LinkTarget,\n },\n {\n label: '全部',\n to: INTERNAL_LINKS.categories.opinion.index,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.link,\n label: '人物故事',\n to: INTERNAL_LINKS.humanStory,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '影像',\n to: INTERNAL_LINKS.photography,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.dropdown,\n label: 'Podcast',\n dropdownItems: [\n {\n label: '關於報導者 Podcast',\n to: INTERNAL_LINKS.podcast.aboutPodcast,\n target: '_self' as LinkTarget,\n },\n {\n label: 'The Real Story',\n to: INTERNAL_LINKS.categories.podcast.theRealStory,\n target: '_self' as LinkTarget,\n },\n {\n label: 'On the Ground 路邊攤計劃',\n to: INTERNAL_LINKS.categories.podcast.onTheGround,\n target: '_self' as LinkTarget,\n },\n ],\n },\n {\n type: CHANNEL_TYPE.link,\n label: '少年報導者',\n to: EXTERNAL_LINKS.kidsReporter,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '報導者觀測站',\n to: EXTERNAL_LINKS.lawmaker,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.link,\n label: '數位敘事',\n to: INTERNAL_LINKS.infographic,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '個人專區',\n icon: 'member',\n to: INTERNAL_LINKS.account.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '我的閱讀',\n icon: 'kid_star',\n to: INTERNAL_LINKS.myReading.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '已收藏',\n icon: 'bookmark_basic',\n to: INTERNAL_LINKS.myReading.savedBookmarks,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.iconLink,\n label: '造訪紀錄',\n icon: 'history',\n to: INTERNAL_LINKS.myReading.browsingHistory,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '基金會消息',\n to: INTERNAL_LINKS.categories.foundation.index,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '關於我們',\n to: INTERNAL_LINKS.about,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '影響力報告',\n to: INTERNAL_LINKS.influenceReport,\n target: '_self' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '報導者開放實驗室',\n to: EXTERNAL_LINKS.openLab,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.lightLink,\n label: '出版品與周邊',\n to: EXTERNAL_LINKS.publicationAndMerchandise,\n target: '_blank' as LinkTarget,\n },\n {\n type: CHANNEL_TYPE.divider,\n },\n]\n","import { MEDIA_TYPE, type MediaType } from '../../icons/constants'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype SocialMediaType = {\n icon: MediaType\n link: string\n target: LinkTarget\n}\nexport const SocialMedias: SocialMediaType[] = [\n {\n icon: MEDIA_TYPE.facebook,\n link: EXTERNAL_LINKS.facebook,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.instagram,\n link: EXTERNAL_LINKS.instagram,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.threads,\n link: EXTERNAL_LINKS.threads,\n target: '_blank',\n },\n {\n icon: MEDIA_TYPE.youtube,\n link: EXTERNAL_LINKS.youtube,\n target: '_blank',\n },\n]\n","import { INTERNAL_LINKS } from '../../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../../constants/external-links'\nimport type { LinkTarget } from '../../customized-link/type'\nimport { TYPE, type Type } from '../../button/constants'\n\ntype ActionLink = {\n label: string\n to: string\n target: LinkTarget\n type: Type\n}\n\nexport const HEADER_ACTION_LINKS: ActionLink[] = [\n {\n label: '電子報',\n to: INTERNAL_LINKS.account.emailSubscription,\n target: '_self' as LinkTarget,\n type: TYPE.secondary,\n },\n {\n label: '贊助',\n to: EXTERNAL_LINKS.monthlyDonation,\n target: '_blank',\n type: TYPE.primary,\n },\n]\n\nexport const HAMBURGER_MENU_ACION_LINKS: ActionLink[] = [\n {\n label: '訂閱電子報',\n to: INTERNAL_LINKS.account.emailSubscription,\n target: '_self',\n type: TYPE.secondary,\n },\n {\n label: '贊助我們',\n to: EXTERNAL_LINKS.monthlyDonation,\n target: '_blank',\n type: TYPE.primary,\n },\n]\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// theme\nimport { THEME } from '../../constants/theme'\n// utils\nimport { selectHamburgerFooterTheme } from '../utils/theme'\n// icon\nimport { Icon } from '../../icons'\n// text\nimport { P2 } from '../../text/paragraph'\n// link\nimport { ExternalLink, InternalLink } from '../../customized-link'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype IconLinkProps = {\n label: string\n icon: string\n to: string\n target: LinkTarget\n}\nconst IconLink: FC<IconLinkProps> = ({ label, icon, to, target }) => {\n const { theme, releaseBranch, isLinkExternal } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n const {\n color,\n hoverColor,\n hoverBgColor,\n svgHoverBgColor,\n svgBgColor,\n activeColor,\n activeBgColor,\n svgActiveBgColor,\n } = selectHamburgerFooterTheme(footerTheme)\n return (\n <LinkComponent to={to} target={target}>\n <div\n className={clsx(\n 'py-[8px] px-[32px] flex items-center',\n '[&>svg]:h-[18px] [&>svg]:w-[18px] [&>svg]:mr-[4px]',\n color,\n hoverColor,\n hoverBgColor,\n svgHoverBgColor,\n svgBgColor,\n activeColor,\n activeBgColor,\n svgActiveBgColor\n )}\n >\n <Icon filename={icon} releaseBranch={releaseBranch} />\n <P2 text={label} />\n </div>\n </LinkComponent>\n )\n}\n\nexport default IconLink\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// theme\nimport { THEME } from '../../constants/theme'\n// utils\nimport { selectHamburgerFooterTheme } from '../utils/theme'\n// text\nimport { P2 } from '../../text/paragraph'\n// link\nimport { ExternalLink, InternalLink } from '../../customized-link'\nimport type { LinkTarget } from '../../customized-link/type'\n\ntype IconLinkProps = {\n label: string\n to: string\n target: LinkTarget\n}\nconst IconLink: FC<IconLinkProps> = ({ label, to, target }) => {\n const { theme, isLinkExternal } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const { color, hoverColor, hoverBgColor, activeColor, activeBgColor } =\n selectHamburgerFooterTheme(footerTheme)\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <LinkComponent to={to} target={target}>\n <div\n className={clsx(\n 'py-[8px] px-[32px] flex items-center',\n '[&>svg]:h-[18px] [&>svg]:w-[18px] [&>svg]:mr-[4px]',\n color,\n hoverColor,\n hoverBgColor,\n activeColor,\n activeBgColor\n )}\n >\n <P2 text={label} />\n </div>\n </LinkComponent>\n )\n}\n\nexport default IconLink\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext } from '../../header/context'\n// icon\nimport { SocialMedia as SocialMediaIcon } from '../../icons'\n// type\nimport type { MediaType } from '../../icons/constants'\n// theme\nimport { THEME } from '../../constants/theme'\n// button\nimport { IconButton } from '../../button'\n\ntype SocialMediaProps = {\n mediaType: MediaType\n}\nconst SocialMedia: FC<SocialMediaProps> = ({ mediaType }) => {\n const { theme, releaseBranch } = useContext(HeaderContext)\n const footerTheme = theme === THEME.transparent ? THEME.normal : theme\n const Icon = (\n <SocialMediaIcon mediaType={mediaType} releaseBranch={releaseBranch} />\n )\n return (\n <IconButton\n iconComponent={Icon}\n theme={footerTheme}\n className={clsx(\n '[&>svg]:h-[32px] [&>svg]:w-[32px]',\n '[&>svg]:tablet:h-[24px] [&>svg]:tablet:w-[24px]'\n )}\n />\n )\n}\n\nexport default SocialMedia\n","import { useContext, useState, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HeaderContext, HamburgerContext } from '../header/context'\n// constants\nimport { THEME } from '../constants/theme'\nimport { Channels, CHANNEL_TYPE } from './constants/channels'\nimport { SocialMedias } from './constants/social-media'\nimport { HAMBURGER_MENU_ACION_LINKS } from '../header/constants/action-links'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport { EXTERNAL_LINKS } from '../constants/external-links'\n// utils\nimport {\n selectHamburgerMenuTheme,\n selectHamburgerItemTheme,\n} from './utils/theme'\n// buttons\nimport { IconButton, MenuButton, PillButton, TextButton } from '../button'\n// icons\nimport { Cross, Member } from '../icons'\n// logo\nimport { LogoSymbol, LogoHeader } from '../logo'\n// utils\nimport { selectLogoType } from './utils/theme'\n// divider\nimport Divider from '../divider'\n// components\nimport { DropdownMenu } from '../dropdown-menu'\nimport IconLink from './components/icon-link'\nimport LightLink from './components/light-link'\nimport SocialMedia from './components/social-media'\n// link\nimport { ExternalLink, InternalLink } from '../customized-link'\n// search bar\nimport { SearchBar } from '../input'\n\nconst HamburgerMenu: FC = () => {\n const { theme, releaseBranch, isLinkExternal, isAuthed } =\n useContext(HeaderContext)\n const { closeHamburgerMenu } = useContext(HamburgerContext)\n\n const menuTheme = theme === THEME.photography ? theme : THEME.normal\n const { bgColor, scrollBarColor } = selectHamburgerMenuTheme(menuTheme)\n const logoType = selectLogoType(menuTheme)\n const [activeKey, setActiveKey] = useState('')\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n\n const onSearch = (keywords: string) => {\n if (typeof window === 'undefined') {\n return\n }\n window.location.href = `${INTERNAL_LINKS.search}?q=${encodeURIComponent(keywords)}`\n }\n\n return (\n <div\n className={clsx(\n 'w-screen h-screen overflow-y-scroll overscroll-contain',\n bgColor,\n // reserveHeightForIos15 is 48px\n `pb-[calc(48px+48px)]`,\n 'tablet:w-[320px] tablet:max-h-screen tablet:pb-0',\n 'desktop:w-[280px]',\n '[&::-webkit-scrollbar]:w-[4px]',\n '[&::-webkit-scrollbar]:bg-transparent',\n '[&::-webkit-scrollbar-thumb]:rounded-[2px]',\n scrollBarColor\n )}\n >\n {/* close icon */}\n <div\n className={clsx(\n 'hidden items-center justify-end pt-[24px] pr-[32px] pb-[16px]',\n 'tablet:flex'\n )}\n >\n <IconButton\n iconComponent={Cross(releaseBranch)}\n theme={menuTheme}\n onClick={closeHamburgerMenu}\n />\n </div>\n {/* logo */}\n <LinkComponent to={INTERNAL_LINKS.home}>\n <div\n className={clsx(\n 'hidden justify-center [&>img]:h-[24px] [&>img]:w-[24px]',\n 'tablet:flex'\n )}\n >\n <LogoSymbol type={logoType} releaseBranch={releaseBranch} />\n </div>\n </LinkComponent>\n {/* mobile hamburger header */}\n <div\n className={clsx(\n 'flex items-center justify-between px-[24px] py-[16px]',\n 'tablet:hidden'\n )}\n >\n <LinkComponent to={INTERNAL_LINKS.home}>\n <LogoHeader\n type={logoType}\n releaseBranch={releaseBranch}\n className=\"h-[21px]\"\n />\n </LinkComponent>\n <div className=\"flex items-center gap-[16px]\">\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 {isAuthed ? (\n <IconButton iconComponent={Member(releaseBranch)} />\n ) : (\n <TextButton\n text=\"登入\"\n theme={TextButton.Theme.normal}\n style={TextButton.Style.dark}\n size={TextButton.Size.s}\n />\n )}\n </LinkComponent>\n </div>\n </div>\n {/* search bar (visible on mobile and tablet) */}\n <div className=\"px-[32px] pt-[24px] pb-[8px] desktop:hidden\">\n <SearchBar\n onSearch={onSearch}\n autoFocus={false}\n placeholder=\"關鍵字搜尋\"\n theme={menuTheme}\n releaseBranch={releaseBranch}\n searchBarWidth=\"w-full\"\n />\n </div>\n {/* menu buttons */}\n <div className=\"flex flex-col pt-[16px]\">\n {Channels.map((channel, idx) => {\n if (channel.type === CHANNEL_TYPE.link) {\n const { color, hoverBgColor, activeBgColor } =\n selectHamburgerItemTheme(theme)\n return (\n <LinkComponent\n to={channel.to}\n target={channel.target}\n key={channel.label}\n >\n <MenuButton\n key={channel.label}\n text={channel.label}\n fontWeight={MenuButton.FontWeight.bold}\n color={color}\n p1ClassName={`${hoverBgColor} ${activeBgColor} pl-[32px] pr-[32px]`}\n />\n </LinkComponent>\n )\n }\n if (channel.type === CHANNEL_TYPE.divider) {\n return (\n <div className=\"py-[16px] px-[32px]\" key={`divider-${idx}`}>\n <Divider direction={Divider.Direction.horizontal} />\n </div>\n )\n }\n if (channel.type === CHANNEL_TYPE.dropdown) {\n const isActive = activeKey === channel.label\n const toggleFunc = (key: string) => {\n const nextActiveKey = activeKey === key ? '' : key\n setActiveKey(nextActiveKey)\n }\n return (\n <button\n onClick={() => toggleFunc(channel.label)}\n key={channel.label}\n type=\"button\"\n >\n <DropdownMenu\n text={channel.label}\n isActive={isActive}\n dropdownItems={channel.dropdownItems}\n />\n </button>\n )\n }\n if (channel.type === CHANNEL_TYPE.iconLink) {\n return (\n <IconLink\n label={channel.label}\n to={channel.to}\n target={channel.target}\n icon={channel.icon}\n key={channel.label}\n />\n )\n }\n if (channel.type === CHANNEL_TYPE.lightLink) {\n return (\n <LightLink\n label={channel.label}\n to={channel.to}\n target={channel.target}\n key={channel.label}\n />\n )\n }\n })}\n </div>\n {/* social media */}\n <div className=\"flex flex-row gap-[16px] justify-center\">\n {SocialMedias.map((socialMedia) => (\n <LinkComponent\n to={socialMedia.link}\n target={socialMedia.target}\n key={socialMedia.icon}\n >\n <SocialMedia mediaType={socialMedia.icon} />\n </LinkComponent>\n ))}\n </div>\n {/* action butoons */}\n <div\n className={clsx(\n 'flex flex-row gap-[16px] px-[32px] pt-[40px] pb-[32px]',\n 'tablet:flex-col'\n )}\n >\n {HAMBURGER_MENU_ACION_LINKS.map((link) => (\n <LinkComponent\n to={link.to}\n target={link.target}\n key={link.label}\n className=\"flex-1\"\n >\n <PillButton\n text={link.label}\n theme={theme}\n type={link.type}\n className=\"w-full justify-center\"\n size={PillButton.Size.l}\n />\n </LinkComponent>\n ))}\n </div>\n </div>\n )\n}\n\nexport default HamburgerMenu\n"],"mappings":"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"}
|
package/lib/header/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../index-
|
|
2
|
-
import { Theme } from "../theme-
|
|
3
|
-
import { ReleaseBranch } from "../release-branch-
|
|
1
|
+
import "../index-DegwO8ei.mjs";
|
|
2
|
+
import { Theme } from "../theme-Cx5oFufE.mjs";
|
|
3
|
+
import { ReleaseBranch } from "../release-branch-CaxOk9Rq.mjs";
|
|
4
4
|
import { FC } from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/header/context/index.d.ts
|
package/lib/header/index.js
CHANGED
|
@@ -8,35 +8,35 @@ const require_external_links = require('../external-links-DCn-uTD-.js');
|
|
|
8
8
|
const require_internal_links = require('../internal-links-DxtMobuI.js');
|
|
9
9
|
const require_release_branch = require('../release-branch-CRZV4Ivz.js');
|
|
10
10
|
const require_request_origins = require('../request-origins-BDXulkK9.js');
|
|
11
|
-
const require_external_link = require('../external-link-
|
|
12
|
-
const require_internal_link = require('../internal-link-
|
|
13
|
-
require('../customized-link-
|
|
11
|
+
const require_external_link = require('../external-link-afU9uFB6.js');
|
|
12
|
+
const require_internal_link = require('../internal-link-Bq4yp13E.js');
|
|
13
|
+
require('../customized-link-CHH91yod.js');
|
|
14
14
|
require('../constants-nmH6p6-y.js');
|
|
15
15
|
const require_divider = require('../divider-B1zvSjNJ.js');
|
|
16
16
|
const require_context = require('../context-I1lTR5SO.js');
|
|
17
17
|
require('../constants-D8wNUvoZ.js');
|
|
18
18
|
const require_icons = require('../icons-qP5oNB0W.js');
|
|
19
19
|
const require_constants$4 = require('../constants-C2moxnps.js');
|
|
20
|
-
require('../dropdown-menu-
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
require('../theme-
|
|
24
|
-
const require_input = require('../input-
|
|
25
|
-
const require_tab_bar = require('../tab-bar-
|
|
26
|
-
const require_use_outside_click = require('../use-outside-click-
|
|
27
|
-
require('../hooks-
|
|
28
|
-
require('../theme-
|
|
29
|
-
require('../constants-
|
|
20
|
+
require('../dropdown-menu-D4XjLl7G.js');
|
|
21
|
+
const require_logo = require('../logo-B3GSkN1O.js');
|
|
22
|
+
const require_hamburger_menu = require('../hamburger-menu-baCi46g2.js');
|
|
23
|
+
require('../theme-LkZX5giH.js');
|
|
24
|
+
const require_input = require('../input-DaMbsNrg.js');
|
|
25
|
+
const require_tab_bar = require('../tab-bar-Dq0ewfWA.js');
|
|
26
|
+
const require_use_outside_click = require('../use-outside-click-Cl1QlhTH.js');
|
|
27
|
+
require('../hooks-BxlKOoQu.js');
|
|
28
|
+
require('../theme-BQQzAfHb.js');
|
|
29
|
+
require('../constants-BV86fOLv.js');
|
|
30
30
|
let react = require("react");
|
|
31
31
|
react = require_chunk.__toESM(react);
|
|
32
32
|
let clsx = require("clsx");
|
|
33
33
|
clsx = require_chunk.__toESM(clsx);
|
|
34
34
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
35
35
|
react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
|
|
36
|
-
let react_transition_group = require("react-transition-group");
|
|
37
|
-
react_transition_group = require_chunk.__toESM(react_transition_group);
|
|
38
36
|
let lodash_map = require("lodash/map");
|
|
39
37
|
lodash_map = require_chunk.__toESM(lodash_map);
|
|
38
|
+
let react_transition_group = require("react-transition-group");
|
|
39
|
+
react_transition_group = require_chunk.__toESM(react_transition_group);
|
|
40
40
|
let lodash_some = require("lodash/some");
|
|
41
41
|
lodash_some = require_chunk.__toESM(lodash_some);
|
|
42
42
|
let lodash_includes = require("lodash/includes");
|
package/lib/header/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { internal_link_default } from "../internal-link-
|
|
1
|
+
import { internal_link_default } from "../internal-link-DCXJvzgx.mjs";
|
|
2
2
|
import "../constants-oTHAnh6r.mjs";
|
|
3
3
|
import "../constants-CBSEPx91.mjs";
|
|
4
4
|
import "../paragraph-Cf9jr8RF.mjs";
|
|
@@ -8,29 +8,29 @@ import { EXTERNAL_LINKS } from "../external-links-B-A17Osq.mjs";
|
|
|
8
8
|
import { INTERNAL_LINKS } from "../internal-links-CP3dqmrz.mjs";
|
|
9
9
|
import { RELEASE_BRANCH } from "../release-branch-DNCD1uH_.mjs";
|
|
10
10
|
import { forClientSideRendering } from "../request-origins-CGkNWg8R.mjs";
|
|
11
|
-
import { external_link_default } from "../external-link-
|
|
12
|
-
import "../customized-link-
|
|
11
|
+
import { external_link_default } from "../external-link-Diro-q37.mjs";
|
|
12
|
+
import "../customized-link-BacydHK_.mjs";
|
|
13
13
|
import "../constants-z9Q8ph_H.mjs";
|
|
14
14
|
import { divider_default } from "../divider-CE4u6SR5.mjs";
|
|
15
15
|
import { HamburgerContext, HeaderContext } from "../context-BgdqM3zA.mjs";
|
|
16
16
|
import "../constants-5phfWHvb.mjs";
|
|
17
17
|
import { Arrow, Hamburger, KidStar, Member, Search } from "../icons-I7T-auOQ.mjs";
|
|
18
18
|
import { LOGO_TYPE } from "../constants-DRxdMM_X.mjs";
|
|
19
|
-
import "../dropdown-menu-
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import "../theme-
|
|
23
|
-
import { search_bar_default } from "../input-
|
|
24
|
-
import { ZIndex, tab_bar_default } from "../tab-bar-
|
|
25
|
-
import { useOutsideClick } from "../use-outside-click-
|
|
26
|
-
import "../hooks-
|
|
27
|
-
import "../theme-
|
|
28
|
-
import "../constants-
|
|
19
|
+
import "../dropdown-menu-jbg-kt3s.mjs";
|
|
20
|
+
import { logo_header_default } from "../logo-NfYCtrtN.mjs";
|
|
21
|
+
import { HEADER_ACTION_LINKS, hamburger_menu_default } from "../hamburger-menu-MQgF0vLX.mjs";
|
|
22
|
+
import "../theme-D_LHh2_S.mjs";
|
|
23
|
+
import { search_bar_default } from "../input-DvriSZ9o.mjs";
|
|
24
|
+
import { ZIndex, tab_bar_default } from "../tab-bar-CQjgjdkW.mjs";
|
|
25
|
+
import { useOutsideClick } from "../use-outside-click-Br_ste4n.mjs";
|
|
26
|
+
import "../hooks-DmImq-Z7.mjs";
|
|
27
|
+
import "../theme-CDCgzSJw.mjs";
|
|
28
|
+
import "../constants-BZGBDC2T.mjs";
|
|
29
29
|
import { useCallback, useContext, useEffect, useRef, useState } from "react";
|
|
30
30
|
import clsx from "clsx";
|
|
31
31
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
32
|
-
import { CSSTransition } from "react-transition-group";
|
|
33
32
|
import map from "lodash/map";
|
|
33
|
+
import { CSSTransition } from "react-transition-group";
|
|
34
34
|
import some from "lodash/some";
|
|
35
35
|
import includes from "lodash/includes";
|
|
36
36
|
import throttle from "lodash/throttle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading-
|
|
1
|
+
{"version":3,"file":"heading-Cljxy-62.mjs","names":["Component: React.FC<HeadingProps> & { Type: typeof TYPE }"],"sources":["../src/text/heading.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport React from 'react'\nimport { TYPE, type Type } from './constants'\n\ntype HeadingProps = React.HTMLAttributes<HTMLHeadingElement> & {\n text?: string\n type?: Type\n className?: string\n}\n\nconst baseClass = 'font-bold'\n\nconst variantClass = {\n H1: 'text-[28px] leading-[125%] tablet:text-[36px]',\n H2: 'text-[24px] leading-[125%] tablet:text-[32px]',\n H3: 'text-[22px] leading-[150%] tablet:text-[28px]',\n H4: 'text-[18px] leading-[150%] tablet:text-[22px]',\n H5: 'text-[17px] leading-[150%] tablet:text-[18px]',\n H6: 'text-[16px] leading-[150%] tablet:text-[16px]',\n}\n\nconst HeadingVariant = (variant: keyof typeof variantClass) => {\n const Component: React.FC<HeadingProps> & { Type: typeof TYPE } = ({\n text = '',\n type = TYPE.default,\n className = '',\n ...props\n }) => {\n const htmlTag = variant.toLowerCase() // 產生 'h1', 'h2', ...\n const fontFamily = type === TYPE.article ? 'font-title' : 'font-default'\n return React.createElement(\n htmlTag,\n {\n className: clsx(\n fontFamily,\n baseClass,\n variantClass[variant],\n className\n ),\n ...props,\n },\n text\n )\n }\n Component.displayName = variant\n Component.Type = TYPE\n return Component\n}\n\nconst H1 = HeadingVariant('H1')\nconst H2 = HeadingVariant('H2')\nconst H3 = HeadingVariant('H3')\nconst H4 = HeadingVariant('H4')\nconst H5 = HeadingVariant('H5')\nconst H6 = HeadingVariant('H6')\n\nexport { H1, H2, H3, H4, H5, H6 }\n"],"mappings":";;;;;AAUA,MAAM,YAAY;AAElB,MAAM,eAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAM,kBAAkB,YAAuC;CAC7D,MAAMA,aAA6D,EACjE,OAAO,IACP,OAAO,KAAK,SACZ,YAAY,GACZ,GAAG,YACC;EACJ,MAAM,UAAU,QAAQ,aAAa;EACrC,MAAM,aAAa,SAAS,KAAK,UAAU,eAAe;AAC1D,SAAO,MAAM,cACX,SACA;GACE,WAAW,KACT,YACA,WACA,aAAa,UACb,UACD;GACD,GAAG;GACJ,EACD,KACD;;AAEH,WAAU,cAAc;AACxB,WAAU,OAAO;AACjB,QAAO;;AAGT,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading-
|
|
1
|
+
{"version":3,"file":"heading-Dnpw_s7U.js","names":["Component: React.FC<HeadingProps> & { Type: typeof TYPE }","TYPE","React"],"sources":["../src/text/heading.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport React from 'react'\nimport { TYPE, type Type } from './constants'\n\ntype HeadingProps = React.HTMLAttributes<HTMLHeadingElement> & {\n text?: string\n type?: Type\n className?: string\n}\n\nconst baseClass = 'font-bold'\n\nconst variantClass = {\n H1: 'text-[28px] leading-[125%] tablet:text-[36px]',\n H2: 'text-[24px] leading-[125%] tablet:text-[32px]',\n H3: 'text-[22px] leading-[150%] tablet:text-[28px]',\n H4: 'text-[18px] leading-[150%] tablet:text-[22px]',\n H5: 'text-[17px] leading-[150%] tablet:text-[18px]',\n H6: 'text-[16px] leading-[150%] tablet:text-[16px]',\n}\n\nconst HeadingVariant = (variant: keyof typeof variantClass) => {\n const Component: React.FC<HeadingProps> & { Type: typeof TYPE } = ({\n text = '',\n type = TYPE.default,\n className = '',\n ...props\n }) => {\n const htmlTag = variant.toLowerCase() // 產生 'h1', 'h2', ...\n const fontFamily = type === TYPE.article ? 'font-title' : 'font-default'\n return React.createElement(\n htmlTag,\n {\n className: clsx(\n fontFamily,\n baseClass,\n variantClass[variant],\n className\n ),\n ...props,\n },\n text\n )\n }\n Component.displayName = variant\n Component.Type = TYPE\n return Component\n}\n\nconst H1 = HeadingVariant('H1')\nconst H2 = HeadingVariant('H2')\nconst H3 = HeadingVariant('H3')\nconst H4 = HeadingVariant('H4')\nconst H5 = HeadingVariant('H5')\nconst H6 = HeadingVariant('H6')\n\nexport { H1, H2, H3, H4, H5, H6 }\n"],"mappings":";;;;;;;;AAUA,MAAM,YAAY;AAElB,MAAM,eAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAM,kBAAkB,YAAuC;CAC7D,MAAMA,aAA6D,EACjE,OAAO,IACP,OAAOC,uBAAK,SACZ,YAAY,GACZ,GAAG,YACC;EACJ,MAAM,UAAU,QAAQ,aAAa;EACrC,MAAM,aAAa,SAASA,uBAAK,UAAU,eAAe;AAC1D,SAAOC,cAAM,cACX,SACA;GACE,6BACE,YACA,WACA,aAAa,UACb,UACD;GACD,GAAG;GACJ,EACD,KACD;;AAEH,WAAU,cAAc;AACxB,WAAU,OAAOD;AACjB,QAAO;;AAGT,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK;AAC/B,MAAM,KAAK,eAAe,KAAK"}
|
package/lib/hooks/index.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { useOutsideClick } from "../use-outside-click-
|
|
2
|
-
import * as
|
|
1
|
+
import { useOutsideClick } from "../use-outside-click-Diz2B7wx.mjs";
|
|
2
|
+
import * as react14 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/hooks/index.d.ts
|
|
5
5
|
declare const _default: {
|
|
6
|
-
useOutsideClick: (callback: () => void) =>
|
|
6
|
+
useOutsideClick: (callback: () => void) => react14.RefObject<HTMLDivElement | null>;
|
|
7
7
|
};
|
|
8
8
|
//#endregion
|
|
9
9
|
export { _default as default, useOutsideClick };
|
package/lib/hooks/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
-
const require_use_outside_click = require('../use-outside-click-
|
|
3
|
-
const require_hooks = require('../hooks-
|
|
2
|
+
const require_use_outside_click = require('../use-outside-click-Cl1QlhTH.js');
|
|
3
|
+
const require_hooks = require('../hooks-BxlKOoQu.js');
|
|
4
4
|
|
|
5
5
|
exports.default = require_hooks.hooks_default;
|
|
6
6
|
exports.useOutsideClick = require_use_outside_click.useOutsideClick;
|
package/lib/hooks/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useOutsideClick } from "../use-outside-click-
|
|
2
|
-
import { hooks_default } from "../hooks-
|
|
1
|
+
import { useOutsideClick } from "../use-outside-click-Br_ste4n.mjs";
|
|
2
|
+
import { hooks_default } from "../hooks-DmImq-Z7.mjs";
|
|
3
3
|
|
|
4
4
|
export { hooks_default as default, useOutsideClick };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { useOutsideClick } from "../use-outside-click-
|
|
1
|
+
import { useOutsideClick } from "../use-outside-click-Diz2B7wx.mjs";
|
|
2
2
|
export { useOutsideClick };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_use_outside_click = require('./use-outside-click-
|
|
1
|
+
const require_use_outside_click = require('./use-outside-click-Cl1QlhTH.js');
|
|
2
2
|
|
|
3
3
|
//#region src/hooks/index.ts
|
|
4
4
|
var hooks_default = { useOutsideClick: require_use_outside_click.useOutsideClick };
|
|
@@ -10,4 +10,4 @@ Object.defineProperty(exports, 'hooks_default', {
|
|
|
10
10
|
return hooks_default;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
//# sourceMappingURL=hooks-
|
|
13
|
+
//# sourceMappingURL=hooks-BxlKOoQu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-
|
|
1
|
+
{"version":3,"file":"hooks-BxlKOoQu.js","names":[],"sources":["../src/hooks/index.ts"],"sourcesContent":["import { useOutsideClick } from './use-outside-click'\n\nexport { useOutsideClick }\n\nexport default { useOutsideClick }\n"],"mappings":";;;AAIA,oBAAe,EAAE,4DAAiB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useOutsideClick } from "./use-outside-click-
|
|
1
|
+
import { useOutsideClick } from "./use-outside-click-Br_ste4n.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/hooks/index.ts
|
|
4
4
|
var hooks_default = { useOutsideClick };
|
|
5
5
|
|
|
6
6
|
//#endregion
|
|
7
7
|
export { hooks_default };
|
|
8
|
-
//# sourceMappingURL=hooks-
|
|
8
|
+
//# sourceMappingURL=hooks-DmImq-Z7.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-
|
|
1
|
+
{"version":3,"file":"hooks-DmImq-Z7.mjs","names":[],"sources":["../src/hooks/index.ts"],"sourcesContent":["import { useOutsideClick } from './use-outside-click'\n\nexport { useOutsideClick }\n\nexport default { useOutsideClick }\n"],"mappings":";;;AAIA,oBAAe,EAAE,iBAAiB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "../index-
|
|
2
|
-
import { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType } from "../constants-
|
|
1
|
+
import "../index-DegwO8ei.mjs";
|
|
2
|
+
import { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType } from "../constants-B95_A0GY.mjs";
|
|
3
3
|
export { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType };
|
package/lib/icons/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "../index-
|
|
2
|
-
import { RELEASE_BRANCH, ReleaseBranch } from "../release-branch-
|
|
3
|
-
import { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType } from "../constants-
|
|
1
|
+
import "../index-DegwO8ei.mjs";
|
|
2
|
+
import { RELEASE_BRANCH, ReleaseBranch } from "../release-branch-CaxOk9Rq.mjs";
|
|
3
|
+
import { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType } from "../constants-B95_A0GY.mjs";
|
|
4
4
|
import React from "react";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
6
6
|
|
|
7
7
|
//#region src/icons/index.d.ts
|
|
8
8
|
type IconProps = {
|
|
@@ -15,14 +15,14 @@ declare const Icon: React.FC<IconProps> & {
|
|
|
15
15
|
Type: typeof ICON_TYPE;
|
|
16
16
|
ReleaseBranch: typeof RELEASE_BRANCH;
|
|
17
17
|
};
|
|
18
|
-
declare const Hamburger: (releaseBranch: ReleaseBranch) =>
|
|
19
|
-
declare const Search: (releaseBranch: ReleaseBranch) =>
|
|
20
|
-
declare const KidStar: (releaseBranch: ReleaseBranch) =>
|
|
21
|
-
declare const Member: (releaseBranch: ReleaseBranch) =>
|
|
22
|
-
declare const Cross: (releaseBranch: ReleaseBranch) =>
|
|
23
|
-
declare const Home: (releaseBranch: ReleaseBranch) =>
|
|
24
|
-
declare const Topic: (releaseBranch: ReleaseBranch) =>
|
|
25
|
-
declare const Clock: (releaseBranch: ReleaseBranch) =>
|
|
18
|
+
declare const Hamburger: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
19
|
+
declare const Search: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
20
|
+
declare const KidStar: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
21
|
+
declare const Member: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
22
|
+
declare const Cross: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
23
|
+
declare const Home: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
24
|
+
declare const Topic: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
25
|
+
declare const Clock: (releaseBranch: ReleaseBranch) => react_jsx_runtime2.JSX.Element;
|
|
26
26
|
declare const Arrow: React.FC<{
|
|
27
27
|
direction?: ArrowDirection;
|
|
28
28
|
releaseBranch: ReleaseBranch;
|
package/lib/input/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../index-
|
|
2
|
-
import { THEME, Theme } from "../theme-
|
|
3
|
-
import { ReleaseBranch } from "../release-branch-
|
|
4
|
-
import * as
|
|
1
|
+
import "../index-DegwO8ei.mjs";
|
|
2
|
+
import { THEME, Theme } from "../theme-Cx5oFufE.mjs";
|
|
3
|
+
import { ReleaseBranch } from "../release-branch-CaxOk9Rq.mjs";
|
|
4
|
+
import * as react19 from "react";
|
|
5
5
|
import { FC } from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/input/components/search-bar.d.ts
|
|
@@ -22,7 +22,7 @@ declare const SearchBar: FC<SearchBarProps> & {
|
|
|
22
22
|
//#endregion
|
|
23
23
|
//#region src/input/index.d.ts
|
|
24
24
|
declare const _default: {
|
|
25
|
-
SearchBar:
|
|
25
|
+
SearchBar: react19.FC<{
|
|
26
26
|
placeholder?: string;
|
|
27
27
|
theme?: Theme;
|
|
28
28
|
releaseBranch?: ReleaseBranch;
|
package/lib/input/index.js
CHANGED
|
@@ -7,8 +7,8 @@ require('../button-Dk0MxlKd.js');
|
|
|
7
7
|
require('../release-branch-CRZV4Ivz.js');
|
|
8
8
|
require('../constants-D8wNUvoZ.js');
|
|
9
9
|
require('../icons-qP5oNB0W.js');
|
|
10
|
-
require('../theme-
|
|
11
|
-
const require_input = require('../input-
|
|
10
|
+
require('../theme-LkZX5giH.js');
|
|
11
|
+
const require_input = require('../input-DaMbsNrg.js');
|
|
12
12
|
|
|
13
13
|
exports.SearchBar = require_input.search_bar_default;
|
|
14
14
|
exports.default = require_input.input_default;
|
package/lib/input/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import "../button-D_AWI7r9.mjs";
|
|
|
6
6
|
import "../release-branch-DNCD1uH_.mjs";
|
|
7
7
|
import "../constants-5phfWHvb.mjs";
|
|
8
8
|
import "../icons-I7T-auOQ.mjs";
|
|
9
|
-
import "../theme-
|
|
10
|
-
import { input_default, search_bar_default } from "../input-
|
|
9
|
+
import "../theme-D_LHh2_S.mjs";
|
|
10
|
+
import { input_default, search_bar_default } from "../input-DvriSZ9o.mjs";
|
|
11
11
|
|
|
12
12
|
export { search_bar_default as SearchBar, input_default as default };
|
package/lib/input/theme.d.mts
CHANGED
package/lib/input/theme.js
CHANGED
package/lib/input/theme.mjs
CHANGED
|
@@ -3,7 +3,7 @@ const require_theme = require('./theme-DDBlIbeS.js');
|
|
|
3
3
|
const require_button = require('./button-Dk0MxlKd.js');
|
|
4
4
|
const require_release_branch = require('./release-branch-CRZV4Ivz.js');
|
|
5
5
|
const require_icons = require('./icons-qP5oNB0W.js');
|
|
6
|
-
const require_theme$1 = require('./theme-
|
|
6
|
+
const require_theme$1 = require('./theme-LkZX5giH.js');
|
|
7
7
|
let react = require("react");
|
|
8
8
|
react = require_chunk.__toESM(react);
|
|
9
9
|
let clsx = require("clsx");
|
|
@@ -83,4 +83,4 @@ Object.defineProperty(exports, 'search_bar_default', {
|
|
|
83
83
|
return search_bar_default;
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
-
//# sourceMappingURL=input-
|
|
86
|
+
//# sourceMappingURL=input-DaMbsNrg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-
|
|
1
|
+
{"version":3,"file":"input-DaMbsNrg.js","names":["SearchBar: FC<SearchBarProps> & {\n Theme: typeof THEME\n}","THEME","RELEASE_BRANCH","selectThemeStyle","IconButton","Search","Cross"],"sources":["../src/input/components/search-bar.tsx","../src/input/index.ts"],"sourcesContent":["import { useState } from 'react'\nimport type { FC, FormEvent, ChangeEvent } from 'react'\nimport clsx from 'clsx'\n// constants\nimport { THEME, type Theme } from '../../constants/theme'\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\n// theme\nimport { selectThemeStyle } from '../theme'\n// icons\nimport { Cross, Search } from '../../icons'\n// button\nimport { IconButton } from '../../button'\n\nconst defaultFunc = () => {}\ntype SearchBarProps = {\n placeholder?: string\n theme?: Theme\n releaseBranch?: ReleaseBranch\n onSearch?: (keywords: string) => void\n onClose?: () => void\n handleBlur?: () => void\n autoFocus?: boolean\n className?: string\n searchBarWidth?: string\n}\nconst SearchBar: FC<SearchBarProps> & {\n Theme: typeof THEME\n} = ({\n placeholder = '',\n theme = THEME.normal,\n releaseBranch = RELEASE_BRANCH.master,\n onSearch = defaultFunc,\n onClose = defaultFunc,\n handleBlur = defaultFunc,\n autoFocus = true,\n className = '',\n searchBarWidth = 'w-fit',\n}) => {\n const [keywords, setKeywords] = useState('')\n const [focus, setFocus] = useState(false)\n const {\n bgColor,\n focusBgColor,\n desktopBgColor,\n borderColor,\n color,\n focusColor,\n placeholderColor,\n } = selectThemeStyle(theme)\n const onFocus = () => setFocus(true)\n const onBlur = () => {\n setFocus(false)\n handleBlur()\n }\n const onSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n onSearch(keywords)\n }\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n const input = e.currentTarget.value\n setKeywords(input)\n }\n const onReset = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n setKeywords('')\n }\n\n return (\n <form\n className={clsx('flex items-center', className)}\n noValidate\n onSubmit={onSubmit}\n onReset={onReset}\n onFocus={onFocus}\n >\n <div\n className={clsx(\n 'flex items-center py-[8px] px-[16px] rounded-[40px] border-[1px] border-solid gap-[8px]',\n searchBarWidth,\n bgColor,\n focus\n ? clsx(focusBgColor, borderColor, desktopBgColor)\n : 'border-transparent'\n )}\n >\n <input\n type=\"search\"\n placeholder={placeholder}\n value={keywords}\n onChange={onChange}\n onBlur={onBlur}\n // biome-ignore lint/a11y/noAutofocus: autoFocus is intentionally used to focus the search input for better UX\n autoFocus={autoFocus}\n className={clsx(\n 'h-[24px] text-[14px] focus-visible:border-0 font-default w-[fill-available] w-[-webkit-fill-available]',\n 'focus-visible:outline-0 focus-visible:border-transparent [&::-webkit-search-cancel-button]:hidden',\n color,\n placeholderColor,\n focusColor\n )}\n />\n <IconButton\n theme={theme}\n iconComponent={Search(releaseBranch)}\n onClick={() => onSearch(keywords)}\n />\n </div>\n <IconButton\n theme={theme}\n iconComponent={Cross(releaseBranch)}\n onClick={onClose}\n className={clsx('ml-[8px] hidden', 'desktop:inline-flex')}\n />\n </form>\n )\n}\nSearchBar.Theme = THEME\n\nexport default SearchBar\n","import SearchBar from './components/search-bar'\n\nexport { SearchBar }\n\nexport default {\n SearchBar,\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB;AAY1B,MAAMA,aAED,EACH,cAAc,IACd,QAAQC,oBAAM,QACd,gBAAgBC,sCAAe,QAC/B,WAAW,aACX,UAAU,aACV,aAAa,aACb,YAAY,MACZ,YAAY,IACZ,iBAAiB,cACb;CACJ,MAAM,CAAC,UAAU,mCAAwB,GAAG;CAC5C,MAAM,CAAC,OAAO,gCAAqB,MAAM;CACzC,MAAM,EACJ,SACA,cACA,gBACA,aACA,OACA,YACA,qBACEC,iCAAiB,MAAM;CAC3B,MAAM,gBAAgB,SAAS,KAAK;CACpC,MAAM,eAAe;AACnB,WAAS,MAAM;AACf,cAAY;;CAEd,MAAM,YAAY,MAAkC;AAClD,IAAE,gBAAgB;AAClB,WAAS,SAAS;;CAEpB,MAAM,YAAY,MAAqC;EACrD,MAAM,QAAQ,EAAE,cAAc;AAC9B,cAAY,MAAM;;CAEpB,MAAM,WAAW,MAAkC;AACjD,IAAE,gBAAgB;AAClB,cAAY,GAAG;;AAGjB,QACE,4CAAC;EACC,6BAAgB,qBAAqB,UAAU;EAC/C;EACU;EACD;EACA;aAET,4CAAC;GACC,6BACE,2FACA,gBACA,SACA,0BACS,cAAc,aAAa,eAAe,GAC/C,qBACL;cAED,2CAAC;IACC,MAAK;IACQ;IACb,OAAO;IACG;IACF;IAEG;IACX,6BACE,0GACA,qGACA,OACA,kBACA,WACD;KACD,EACF,2CAACC;IACQ;IACP,eAAeC,qBAAO,cAAc;IACpC,eAAe,SAAS,SAAS;KACjC;IACE,EACN,2CAACD;GACQ;GACP,eAAeE,oBAAM,cAAc;GACnC,SAAS;GACT,6BAAgB,mBAAmB,sBAAsB;IACzD;GACG;;AAGX,UAAU,QAAQL;AAElB,yBAAe;;;;ACrHf,oBAAe,EACb,+BACD"}
|
|
@@ -2,7 +2,7 @@ import { THEME } from "./theme-BG6yZVj-.mjs";
|
|
|
2
2
|
import { icon_button_default } from "./button-D_AWI7r9.mjs";
|
|
3
3
|
import { RELEASE_BRANCH } from "./release-branch-DNCD1uH_.mjs";
|
|
4
4
|
import { Cross, Search } from "./icons-I7T-auOQ.mjs";
|
|
5
|
-
import { selectThemeStyle } from "./theme-
|
|
5
|
+
import { selectThemeStyle } from "./theme-D_LHh2_S.mjs";
|
|
6
6
|
import { useState } from "react";
|
|
7
7
|
import clsx from "clsx";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -68,4 +68,4 @@ var input_default = { SearchBar: search_bar_default };
|
|
|
68
68
|
|
|
69
69
|
//#endregion
|
|
70
70
|
export { input_default, search_bar_default };
|
|
71
|
-
//# sourceMappingURL=input-
|
|
71
|
+
//# sourceMappingURL=input-DvriSZ9o.mjs.map
|