@twreporter/react-typescript-components 0.1.0-beta.20 → 0.1.0-beta.21

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.
Files changed (86) hide show
  1. package/lib/{constants-BG4oRMD_.mjs → constants-B8QkNSRh.mjs} +2 -2
  2. package/lib/{constants-BG4oRMD_.mjs.map → constants-B8QkNSRh.mjs.map} +1 -1
  3. package/lib/{constants-Dt5HD0aL.js → constants-CUzusjTU.js} +2 -2
  4. package/lib/{constants-Dt5HD0aL.js.map → constants-CUzusjTU.js.map} +1 -1
  5. package/lib/{constants-DRxdMM_X.mjs → constants-DKqcALfv.mjs} +1 -1
  6. package/lib/{constants-DRxdMM_X.mjs.map → constants-DKqcALfv.mjs.map} +1 -1
  7. package/lib/{constants-5phfWHvb.mjs → constants-Npoq7yu0.mjs} +1 -1
  8. package/lib/{constants-5phfWHvb.mjs.map → constants-Npoq7yu0.mjs.map} +1 -1
  9. package/lib/{constants-D8wNUvoZ.js → constants-R6EfY15A.js} +1 -1
  10. package/lib/{constants-D8wNUvoZ.js.map → constants-R6EfY15A.js.map} +1 -1
  11. package/lib/{constants-C2moxnps.js → constants-pqSeExjX.js} +1 -1
  12. package/lib/{constants-C2moxnps.js.map → constants-pqSeExjX.js.map} +1 -1
  13. package/lib/{context-BgdqM3zA.mjs → context-C9AuSZIE.mjs} +1 -1
  14. package/lib/{context-BgdqM3zA.mjs.map → context-C9AuSZIE.mjs.map} +1 -1
  15. package/lib/{context-I1lTR5SO.js → context-vBt5fnU9.js} +1 -1
  16. package/lib/{context-I1lTR5SO.js.map → context-vBt5fnU9.js.map} +1 -1
  17. package/lib/customized-link/index.d.ts +3 -3
  18. package/lib/dropdown-menu/index.js +5 -5
  19. package/lib/dropdown-menu/index.mjs +5 -5
  20. package/lib/{dropdown-menu-CKH3qADt.js → dropdown-menu-CTUg6MST.js} +4 -4
  21. package/lib/{dropdown-menu-CKH3qADt.js.map → dropdown-menu-CTUg6MST.js.map} +1 -1
  22. package/lib/{dropdown-menu-DMp_Bmo0.mjs → dropdown-menu-MOuxtoud.mjs} +4 -4
  23. package/lib/{dropdown-menu-DMp_Bmo0.mjs.map → dropdown-menu-MOuxtoud.mjs.map} +1 -1
  24. package/lib/footer/index.js +6 -6
  25. package/lib/footer/index.mjs +6 -6
  26. package/lib/footer/links.js +3 -3
  27. package/lib/footer/links.mjs +3 -3
  28. package/lib/footer/logo.js +3 -3
  29. package/lib/footer/logo.mjs +3 -3
  30. package/lib/hamburger-menu/index.js +8 -8
  31. package/lib/hamburger-menu/index.mjs +8 -8
  32. package/lib/{hamburger-menu-DoyJVziw.mjs → hamburger-menu-B-n_-t91.mjs} +7 -7
  33. package/lib/{hamburger-menu-DoyJVziw.mjs.map → hamburger-menu-B-n_-t91.mjs.map} +1 -1
  34. package/lib/{hamburger-menu-DJe2IBTm.js → hamburger-menu-CYiCx5_x.js} +7 -7
  35. package/lib/{hamburger-menu-DJe2IBTm.js.map → hamburger-menu-CYiCx5_x.js.map} +1 -1
  36. package/lib/header/index.js +12 -12
  37. package/lib/header/index.mjs +10 -10
  38. package/lib/hooks/index.d.mts +3 -3
  39. package/lib/hooks/index.d.ts +3 -3
  40. package/lib/hooks/use-outside-click.d.mts +1 -1
  41. package/lib/hooks/use-outside-click.d.ts +1 -1
  42. package/lib/icons/constants.js +1 -1
  43. package/lib/icons/constants.mjs +1 -1
  44. package/lib/icons/index.js +2 -2
  45. package/lib/icons/index.mjs +2 -2
  46. package/lib/{icons-qP5oNB0W.js → icons-BZI6_5JJ.js} +2 -2
  47. package/lib/{icons-qP5oNB0W.js.map → icons-BZI6_5JJ.js.map} +1 -1
  48. package/lib/{icons-I7T-auOQ.mjs → icons-C5UqghX2.mjs} +2 -2
  49. package/lib/{icons-I7T-auOQ.mjs.map → icons-C5UqghX2.mjs.map} +1 -1
  50. package/lib/input/index.d.mts +2 -2
  51. package/lib/input/index.d.ts +2 -2
  52. package/lib/input/index.js +3 -3
  53. package/lib/input/index.mjs +3 -3
  54. package/lib/{input-DH_jroRh.mjs → input-BJWcutA3.mjs} +2 -2
  55. package/lib/{input-DH_jroRh.mjs.map → input-BJWcutA3.mjs.map} +1 -1
  56. package/lib/{input-D29yD1k-.js → input-e0a-Wul_.js} +2 -2
  57. package/lib/{input-D29yD1k-.js.map → input-e0a-Wul_.js.map} +1 -1
  58. package/lib/{links-Buz2DUOO.mjs → links-CFjOQl4o.mjs} +2 -2
  59. package/lib/{links-Buz2DUOO.mjs.map → links-CFjOQl4o.mjs.map} +1 -1
  60. package/lib/{links-CPX07u-O.js → links-DMd-CuUJ.js} +2 -2
  61. package/lib/{links-CPX07u-O.js.map → links-DMd-CuUJ.js.map} +1 -1
  62. package/lib/logo/constants.js +1 -1
  63. package/lib/logo/constants.mjs +1 -1
  64. package/lib/logo/index.d.mts +7 -7
  65. package/lib/logo/index.js +2 -2
  66. package/lib/logo/index.mjs +2 -2
  67. package/lib/{logo-DzRRd4Y-.js → logo-B35M1BaX.js} +2 -2
  68. package/lib/{logo-DzRRd4Y-.js.map → logo-B35M1BaX.js.map} +1 -1
  69. package/lib/{logo-BSp7gsND.js → logo-CeaVUbIW.js} +2 -2
  70. package/lib/{logo-BSp7gsND.js.map → logo-CeaVUbIW.js.map} +1 -1
  71. package/lib/{logo-CBWWiQoO.mjs → logo-DkEpjnPV.mjs} +2 -2
  72. package/lib/{logo-CBWWiQoO.mjs.map → logo-DkEpjnPV.mjs.map} +1 -1
  73. package/lib/{logo-mBe4a2OP.mjs → logo-lPQ3Apwn.mjs} +2 -2
  74. package/lib/{logo-mBe4a2OP.mjs.map → logo-lPQ3Apwn.mjs.map} +1 -1
  75. package/lib/tab-bar/constants.js +3 -3
  76. package/lib/tab-bar/constants.mjs +3 -3
  77. package/lib/tab-bar/index.js +5 -5
  78. package/lib/tab-bar/index.mjs +5 -5
  79. package/lib/{tab-bar-jI3fYt_7.mjs → tab-bar-C_FxNWkG.mjs} +4 -4
  80. package/lib/{tab-bar-jI3fYt_7.mjs.map → tab-bar-C_FxNWkG.mjs.map} +1 -1
  81. package/lib/{tab-bar-CVPd5go9.js → tab-bar-USs-mSXE.js} +4 -4
  82. package/lib/{tab-bar-CVPd5go9.js.map → tab-bar-USs-mSXE.js.map} +1 -1
  83. package/lib/use-outside-click-BA-T3hJc.d.ts +7 -0
  84. package/lib/{use-outside-click-COJmPFYr.d.ts → use-outside-click-E-9eTkfz.d.mts} +1 -1
  85. package/package.json +6 -3
  86. package/lib/use-outside-click-B_hZCUDr.d.mts +0 -7
@@ -4,9 +4,9 @@ import "../paragraph-Cf9jr8RF.mjs";
4
4
  import "../theme-BG6yZVj-.mjs";
5
5
  import "../button-D_AWI7r9.mjs";
6
6
  import "../release-branch-DNCD1uH_.mjs";
7
- import "../constants-5phfWHvb.mjs";
8
- import "../icons-I7T-auOQ.mjs";
7
+ import "../constants-Npoq7yu0.mjs";
8
+ import "../icons-C5UqghX2.mjs";
9
9
  import "../theme-DURvzYaJ.mjs";
10
- import { input_default, search_bar_default } from "../input-DH_jroRh.mjs";
10
+ import { input_default, search_bar_default } from "../input-BJWcutA3.mjs";
11
11
 
12
12
  export { search_bar_default as SearchBar, input_default as default };
@@ -1,7 +1,7 @@
1
1
  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
- import { Cross, Search } from "./icons-I7T-auOQ.mjs";
4
+ import { Cross, Search } from "./icons-C5UqghX2.mjs";
5
5
  import { selectThemeStyle } from "./theme-DURvzYaJ.mjs";
6
6
  import { useState } from "react";
7
7
  import clsx from "clsx";
@@ -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-DH_jroRh.mjs.map
71
+ //# sourceMappingURL=input-BJWcutA3.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-DH_jroRh.mjs","names":["SearchBar: FC<SearchBarProps> & {\n Theme: typeof THEME\n}","IconButton"],"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,QAAQ,MAAM,QACd,gBAAgB,eAAe,QAC/B,WAAW,aACX,UAAU,aACV,aAAa,aACb,YAAY,MACZ,YAAY,IACZ,iBAAiB,cACb;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,GAAG;CAC5C,MAAM,CAAC,OAAO,YAAY,SAAS,MAAM;CACzC,MAAM,EACJ,SACA,cACA,gBACA,aACA,OACA,YACA,qBACE,iBAAiB,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,qBAAC;EACC,WAAW,KAAK,qBAAqB,UAAU;EAC/C;EACU;EACD;EACA;aAET,qBAAC;GACC,WAAW,KACT,2FACA,gBACA,SACA,QACI,KAAK,cAAc,aAAa,eAAe,GAC/C,qBACL;cAED,oBAAC;IACC,MAAK;IACQ;IACb,OAAO;IACG;IACF;IAEG;IACX,WAAW,KACT,0GACA,qGACA,OACA,kBACA,WACD;KACD,EACF,oBAACC;IACQ;IACP,eAAe,OAAO,cAAc;IACpC,eAAe,SAAS,SAAS;KACjC;IACE,EACN,oBAACA;GACQ;GACP,eAAe,MAAM,cAAc;GACnC,SAAS;GACT,WAAW,KAAK,mBAAmB,sBAAsB;IACzD;GACG;;AAGX,UAAU,QAAQ;AAElB,yBAAe;;;;ACrHf,oBAAe,EACb,+BACD"}
1
+ {"version":3,"file":"input-BJWcutA3.mjs","names":["SearchBar: FC<SearchBarProps> & {\n Theme: typeof THEME\n}","IconButton"],"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,QAAQ,MAAM,QACd,gBAAgB,eAAe,QAC/B,WAAW,aACX,UAAU,aACV,aAAa,aACb,YAAY,MACZ,YAAY,IACZ,iBAAiB,cACb;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,GAAG;CAC5C,MAAM,CAAC,OAAO,YAAY,SAAS,MAAM;CACzC,MAAM,EACJ,SACA,cACA,gBACA,aACA,OACA,YACA,qBACE,iBAAiB,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,qBAAC;EACC,WAAW,KAAK,qBAAqB,UAAU;EAC/C;EACU;EACD;EACA;aAET,qBAAC;GACC,WAAW,KACT,2FACA,gBACA,SACA,QACI,KAAK,cAAc,aAAa,eAAe,GAC/C,qBACL;cAED,oBAAC;IACC,MAAK;IACQ;IACb,OAAO;IACG;IACF;IAEG;IACX,WAAW,KACT,0GACA,qGACA,OACA,kBACA,WACD;KACD,EACF,oBAACC;IACQ;IACP,eAAe,OAAO,cAAc;IACpC,eAAe,SAAS,SAAS;KACjC;IACE,EACN,oBAACA;GACQ;GACP,eAAe,MAAM,cAAc;GACnC,SAAS;GACT,WAAW,KAAK,mBAAmB,sBAAsB;IACzD;GACG;;AAGX,UAAU,QAAQ;AAElB,yBAAe;;;;ACrHf,oBAAe,EACb,+BACD"}
@@ -2,7 +2,7 @@ const require_chunk = require('./chunk-BxBTb9qk.js');
2
2
  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
- const require_icons = require('./icons-qP5oNB0W.js');
5
+ const require_icons = require('./icons-BZI6_5JJ.js');
6
6
  const require_theme$1 = require('./theme-BLdi7Moc.js');
7
7
  let react = require("react");
8
8
  react = require_chunk.__toESM(react);
@@ -83,4 +83,4 @@ Object.defineProperty(exports, 'search_bar_default', {
83
83
  return search_bar_default;
84
84
  }
85
85
  });
86
- //# sourceMappingURL=input-D29yD1k-.js.map
86
+ //# sourceMappingURL=input-e0a-Wul_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-D29yD1k-.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"}
1
+ {"version":3,"file":"input-e0a-Wul_.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 { P2, P3 } from "./paragraph-Cf9jr8RF.mjs";
2
2
  import { icon_button_default } from "./button-D_AWI7r9.mjs";
3
3
  import { forClientSideRendering } from "./request-origins-CGkNWg8R.mjs";
4
4
  import { external_link_default } from "./external-link-BMIFL3DE.mjs";
5
- import { SocialMedia } from "./icons-I7T-auOQ.mjs";
5
+ import { SocialMedia } from "./icons-C5UqghX2.mjs";
6
6
  import clsx from "clsx";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import map from "lodash/map";
@@ -83,4 +83,4 @@ const LinkButtonGroups = ({ linksGroups }) => {
83
83
 
84
84
  //#endregion
85
85
  export { LinkButtonGroups, SocialLinks, StaticLinks };
86
- //# sourceMappingURL=links-Buz2DUOO.mjs.map
86
+ //# sourceMappingURL=links-CFjOQl4o.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"links-Buz2DUOO.mjs","names":["ExternalLink","IconButton"],"sources":["../src/footer/links.tsx"],"sourcesContent":["import clsx from 'clsx'\n// text\nimport { P2, P3 } from '../text/paragraph'\n// constants\nimport type { ReleaseBranch } from '../constants/release-branch'\nimport { forClientSideRendering } from '../constants/request-origins'\n// button\nimport { IconButton } from '../button'\n// link\nimport { ExternalLink } from '../customized-link'\n// icon\nimport { SocialMedia } from '../icons'\n// types\nimport type { LinkType, SocialMediaLink } from './types'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\nexport const SocialLinks = ({\n releaseBranch,\n links,\n}: {\n releaseBranch: ReleaseBranch\n links: SocialMediaLink[]\n}) => {\n return (\n <div className=\"flex gap-[16px]\">\n {_.map(links, (link) => {\n const iconComponent = (\n <SocialMedia mediaType={link.icon} releaseBranch={releaseBranch} />\n )\n return (\n <ExternalLink key={link.icon} to={link.link} target=\"_blank\">\n <IconButton iconComponent={iconComponent} />\n </ExternalLink>\n )\n })}\n </div>\n )\n}\n\nexport const StaticLinks = ({\n releaseBranch,\n}: {\n releaseBranch: ReleaseBranch\n}) => {\n const mainOrigin = forClientSideRendering[releaseBranch].main\n return (\n <>\n <ExternalLink to={`${mainOrigin}/a/license-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"許可協議\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink to={`${mainOrigin}/a/privacy-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"隱私政策\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink\n to={'https://twreporter.gitbook.io/the-reporter-brand-guidelines'}\n target=\"_blank\"\n >\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"品牌規範\"\n />\n </ExternalLink>\n </>\n )\n}\n\nexport const LinkButtonGroups = ({\n linksGroups,\n}: {\n releaseBranch: ReleaseBranch\n linksGroups: LinkType[][]\n}) => {\n return _.map(linksGroups, (links, indexofGroup) => {\n return (\n <div\n key={indexofGroup}\n className={clsx(\n 'flex flex-col gap-[8px] basis-1/3',\n 'desktop:w-[120px] desktop:gap-[16px] desktop:basis-auto'\n )}\n >\n {_.map(links, (link, indexofLink) => {\n return (\n <ExternalLink\n key={indexofLink}\n to={link.link}\n target=\"_blank\"\n id={link.id}\n >\n <P2\n className=\"text-gray-600 hover:text-gray-800\"\n text={link.text}\n />\n </ExternalLink>\n )\n })}\n </div>\n )\n })\n}\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,IAAI,EACR,KACD;AAED,MAAa,eAAe,EAC1B,eACA,YAII;AACJ,QACE,oBAAC;EAAI,WAAU;YACZ,EAAE,IAAI,QAAQ,SAAS;GACtB,MAAM,gBACJ,oBAAC;IAAY,WAAW,KAAK;IAAqB;KAAiB;AAErE,UACE,oBAACA;IAA6B,IAAI,KAAK;IAAM,QAAO;cAClD,oBAACC,uBAA0B,gBAAiB;MAD3B,KAAK,KAET;IAEjB;GACE;;AAIV,MAAa,eAAe,EAC1B,oBAGI;CACJ,MAAM,aAAa,uBAAuB,eAAe;AACzD,QACE;EACE,oBAACD;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,oBAAC;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,oBAACA;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,oBAAC;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,oBAACA;GACC,IAAI;GACJ,QAAO;aAEP,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;KACd;;AAIP,MAAa,oBAAoB,EAC/B,kBAII;AACJ,QAAO,EAAE,IAAI,cAAc,OAAO,iBAAiB;AACjD,SACE,oBAAC;GAEC,WAAW,KACT,qCACA,0DACD;aAEA,EAAE,IAAI,QAAQ,MAAM,gBAAgB;AACnC,WACE,oBAACA;KAEC,IAAI,KAAK;KACT,QAAO;KACP,IAAI,KAAK;eAET,oBAAC;MACC,WAAU;MACV,MAAM,KAAK;OACX;OARG,YASQ;KAEjB;KApBG,aAqBD;GAER"}
1
+ {"version":3,"file":"links-CFjOQl4o.mjs","names":["ExternalLink","IconButton"],"sources":["../src/footer/links.tsx"],"sourcesContent":["import clsx from 'clsx'\n// text\nimport { P2, P3 } from '../text/paragraph'\n// constants\nimport type { ReleaseBranch } from '../constants/release-branch'\nimport { forClientSideRendering } from '../constants/request-origins'\n// button\nimport { IconButton } from '../button'\n// link\nimport { ExternalLink } from '../customized-link'\n// icon\nimport { SocialMedia } from '../icons'\n// types\nimport type { LinkType, SocialMediaLink } from './types'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\nexport const SocialLinks = ({\n releaseBranch,\n links,\n}: {\n releaseBranch: ReleaseBranch\n links: SocialMediaLink[]\n}) => {\n return (\n <div className=\"flex gap-[16px]\">\n {_.map(links, (link) => {\n const iconComponent = (\n <SocialMedia mediaType={link.icon} releaseBranch={releaseBranch} />\n )\n return (\n <ExternalLink key={link.icon} to={link.link} target=\"_blank\">\n <IconButton iconComponent={iconComponent} />\n </ExternalLink>\n )\n })}\n </div>\n )\n}\n\nexport const StaticLinks = ({\n releaseBranch,\n}: {\n releaseBranch: ReleaseBranch\n}) => {\n const mainOrigin = forClientSideRendering[releaseBranch].main\n return (\n <>\n <ExternalLink to={`${mainOrigin}/a/license-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"許可協議\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink to={`${mainOrigin}/a/privacy-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"隱私政策\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink\n to={'https://twreporter.gitbook.io/the-reporter-brand-guidelines'}\n target=\"_blank\"\n >\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"品牌規範\"\n />\n </ExternalLink>\n </>\n )\n}\n\nexport const LinkButtonGroups = ({\n linksGroups,\n}: {\n releaseBranch: ReleaseBranch\n linksGroups: LinkType[][]\n}) => {\n return _.map(linksGroups, (links, indexofGroup) => {\n return (\n <div\n key={indexofGroup}\n className={clsx(\n 'flex flex-col gap-[8px] basis-1/3',\n 'desktop:w-[120px] desktop:gap-[16px] desktop:basis-auto'\n )}\n >\n {_.map(links, (link, indexofLink) => {\n return (\n <ExternalLink\n key={indexofLink}\n to={link.link}\n target=\"_blank\"\n id={link.id}\n >\n <P2\n className=\"text-gray-600 hover:text-gray-800\"\n text={link.text}\n />\n </ExternalLink>\n )\n })}\n </div>\n )\n })\n}\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,IAAI,EACR,KACD;AAED,MAAa,eAAe,EAC1B,eACA,YAII;AACJ,QACE,oBAAC;EAAI,WAAU;YACZ,EAAE,IAAI,QAAQ,SAAS;GACtB,MAAM,gBACJ,oBAAC;IAAY,WAAW,KAAK;IAAqB;KAAiB;AAErE,UACE,oBAACA;IAA6B,IAAI,KAAK;IAAM,QAAO;cAClD,oBAACC,uBAA0B,gBAAiB;MAD3B,KAAK,KAET;IAEjB;GACE;;AAIV,MAAa,eAAe,EAC1B,oBAGI;CACJ,MAAM,aAAa,uBAAuB,eAAe;AACzD,QACE;EACE,oBAACD;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,oBAAC;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,oBAACA;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,oBAAC;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,oBAACA;GACC,IAAI;GACJ,QAAO;aAEP,oBAAC;IACC,WAAU;IACV,MAAK;KACL;IACW;KACd;;AAIP,MAAa,oBAAoB,EAC/B,kBAII;AACJ,QAAO,EAAE,IAAI,cAAc,OAAO,iBAAiB;AACjD,SACE,oBAAC;GAEC,WAAW,KACT,qCACA,0DACD;aAEA,EAAE,IAAI,QAAQ,MAAM,gBAAgB;AACnC,WACE,oBAACA;KAEC,IAAI,KAAK;KACT,QAAO;KACP,IAAI,KAAK;eAET,oBAAC;MACC,WAAU;MACV,MAAM,KAAK;OACX;OARG,YASQ;KAEjB;KApBG,aAqBD;GAER"}
@@ -3,7 +3,7 @@ const require_paragraph = require('./paragraph-iuz3jP0Q.js');
3
3
  const require_button = require('./button-Dk0MxlKd.js');
4
4
  const require_request_origins = require('./request-origins-BDXulkK9.js');
5
5
  const require_external_link = require('./external-link-Ce1_loKh.js');
6
- const require_icons = require('./icons-qP5oNB0W.js');
6
+ const require_icons = require('./icons-BZI6_5JJ.js');
7
7
  let clsx = require("clsx");
8
8
  clsx = require_chunk.__toESM(clsx);
9
9
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -104,4 +104,4 @@ Object.defineProperty(exports, 'StaticLinks', {
104
104
  return StaticLinks;
105
105
  }
106
106
  });
107
- //# sourceMappingURL=links-CPX07u-O.js.map
107
+ //# sourceMappingURL=links-DMd-CuUJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"links-CPX07u-O.js","names":["SocialMedia","ExternalLink","IconButton","forClientSideRendering","P3","P2"],"sources":["../src/footer/links.tsx"],"sourcesContent":["import clsx from 'clsx'\n// text\nimport { P2, P3 } from '../text/paragraph'\n// constants\nimport type { ReleaseBranch } from '../constants/release-branch'\nimport { forClientSideRendering } from '../constants/request-origins'\n// button\nimport { IconButton } from '../button'\n// link\nimport { ExternalLink } from '../customized-link'\n// icon\nimport { SocialMedia } from '../icons'\n// types\nimport type { LinkType, SocialMediaLink } from './types'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\nexport const SocialLinks = ({\n releaseBranch,\n links,\n}: {\n releaseBranch: ReleaseBranch\n links: SocialMediaLink[]\n}) => {\n return (\n <div className=\"flex gap-[16px]\">\n {_.map(links, (link) => {\n const iconComponent = (\n <SocialMedia mediaType={link.icon} releaseBranch={releaseBranch} />\n )\n return (\n <ExternalLink key={link.icon} to={link.link} target=\"_blank\">\n <IconButton iconComponent={iconComponent} />\n </ExternalLink>\n )\n })}\n </div>\n )\n}\n\nexport const StaticLinks = ({\n releaseBranch,\n}: {\n releaseBranch: ReleaseBranch\n}) => {\n const mainOrigin = forClientSideRendering[releaseBranch].main\n return (\n <>\n <ExternalLink to={`${mainOrigin}/a/license-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"許可協議\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink to={`${mainOrigin}/a/privacy-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"隱私政策\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink\n to={'https://twreporter.gitbook.io/the-reporter-brand-guidelines'}\n target=\"_blank\"\n >\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"品牌規範\"\n />\n </ExternalLink>\n </>\n )\n}\n\nexport const LinkButtonGroups = ({\n linksGroups,\n}: {\n releaseBranch: ReleaseBranch\n linksGroups: LinkType[][]\n}) => {\n return _.map(linksGroups, (links, indexofGroup) => {\n return (\n <div\n key={indexofGroup}\n className={clsx(\n 'flex flex-col gap-[8px] basis-1/3',\n 'desktop:w-[120px] desktop:gap-[16px] desktop:basis-auto'\n )}\n >\n {_.map(links, (link, indexofLink) => {\n return (\n <ExternalLink\n key={indexofLink}\n to={link.link}\n target=\"_blank\"\n id={link.id}\n >\n <P2\n className=\"text-gray-600 hover:text-gray-800\"\n text={link.text}\n />\n </ExternalLink>\n )\n })}\n </div>\n )\n })\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,IAAI,EACR,yBACD;AAED,MAAa,eAAe,EAC1B,eACA,YAII;AACJ,QACE,2CAAC;EAAI,WAAU;YACZ,EAAE,IAAI,QAAQ,SAAS;GACtB,MAAM,gBACJ,2CAACA;IAAY,WAAW,KAAK;IAAqB;KAAiB;AAErE,UACE,2CAACC;IAA6B,IAAI,KAAK;IAAM,QAAO;cAClD,2CAACC,sCAA0B,gBAAiB;MAD3B,KAAK,KAET;IAEjB;GACE;;AAIV,MAAa,eAAe,EAC1B,oBAGI;CACJ,MAAM,aAAaC,+CAAuB,eAAe;AACzD,QACE;EACE,2CAACF;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,2CAACA;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,2CAACH;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,2CAACA;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,2CAACH;GACC,IAAI;GACJ,QAAO;aAEP,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;KACd;;AAIP,MAAa,oBAAoB,EAC/B,kBAII;AACJ,QAAO,EAAE,IAAI,cAAc,OAAO,iBAAiB;AACjD,SACE,2CAAC;GAEC,6BACE,qCACA,0DACD;aAEA,EAAE,IAAI,QAAQ,MAAM,gBAAgB;AACnC,WACE,2CAACH;KAEC,IAAI,KAAK;KACT,QAAO;KACP,IAAI,KAAK;eAET,2CAACI;MACC,WAAU;MACV,MAAM,KAAK;OACX;OARG,YASQ;KAEjB;KApBG,aAqBD;GAER"}
1
+ {"version":3,"file":"links-DMd-CuUJ.js","names":["SocialMedia","ExternalLink","IconButton","forClientSideRendering","P3","P2"],"sources":["../src/footer/links.tsx"],"sourcesContent":["import clsx from 'clsx'\n// text\nimport { P2, P3 } from '../text/paragraph'\n// constants\nimport type { ReleaseBranch } from '../constants/release-branch'\nimport { forClientSideRendering } from '../constants/request-origins'\n// button\nimport { IconButton } from '../button'\n// link\nimport { ExternalLink } from '../customized-link'\n// icon\nimport { SocialMedia } from '../icons'\n// types\nimport type { LinkType, SocialMediaLink } from './types'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\nexport const SocialLinks = ({\n releaseBranch,\n links,\n}: {\n releaseBranch: ReleaseBranch\n links: SocialMediaLink[]\n}) => {\n return (\n <div className=\"flex gap-[16px]\">\n {_.map(links, (link) => {\n const iconComponent = (\n <SocialMedia mediaType={link.icon} releaseBranch={releaseBranch} />\n )\n return (\n <ExternalLink key={link.icon} to={link.link} target=\"_blank\">\n <IconButton iconComponent={iconComponent} />\n </ExternalLink>\n )\n })}\n </div>\n )\n}\n\nexport const StaticLinks = ({\n releaseBranch,\n}: {\n releaseBranch: ReleaseBranch\n}) => {\n const mainOrigin = forClientSideRendering[releaseBranch].main\n return (\n <>\n <ExternalLink to={`${mainOrigin}/a/license-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"許可協議\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink to={`${mainOrigin}/a/privacy-footer`} target=\"_blank\">\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"隱私政策\"\n />\n </ExternalLink>\n <P3 className=\"text-gray-600\" text=\"|\" />\n <ExternalLink\n to={'https://twreporter.gitbook.io/the-reporter-brand-guidelines'}\n target=\"_blank\"\n >\n <P3\n className=\"text-gray-600 underline underline-offset-[4px]\"\n text=\"品牌規範\"\n />\n </ExternalLink>\n </>\n )\n}\n\nexport const LinkButtonGroups = ({\n linksGroups,\n}: {\n releaseBranch: ReleaseBranch\n linksGroups: LinkType[][]\n}) => {\n return _.map(linksGroups, (links, indexofGroup) => {\n return (\n <div\n key={indexofGroup}\n className={clsx(\n 'flex flex-col gap-[8px] basis-1/3',\n 'desktop:w-[120px] desktop:gap-[16px] desktop:basis-auto'\n )}\n >\n {_.map(links, (link, indexofLink) => {\n return (\n <ExternalLink\n key={indexofLink}\n to={link.link}\n target=\"_blank\"\n id={link.id}\n >\n <P2\n className=\"text-gray-600 hover:text-gray-800\"\n text={link.text}\n />\n </ExternalLink>\n )\n })}\n </div>\n )\n })\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,IAAI,EACR,yBACD;AAED,MAAa,eAAe,EAC1B,eACA,YAII;AACJ,QACE,2CAAC;EAAI,WAAU;YACZ,EAAE,IAAI,QAAQ,SAAS;GACtB,MAAM,gBACJ,2CAACA;IAAY,WAAW,KAAK;IAAqB;KAAiB;AAErE,UACE,2CAACC;IAA6B,IAAI,KAAK;IAAM,QAAO;cAClD,2CAACC,sCAA0B,gBAAiB;MAD3B,KAAK,KAET;IAEjB;GACE;;AAIV,MAAa,eAAe,EAC1B,oBAGI;CACJ,MAAM,aAAaC,+CAAuB,eAAe;AACzD,QACE;EACE,2CAACF;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,2CAACA;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,2CAACH;GAAa,IAAI,GAAG,WAAW;GAAoB,QAAO;aACzD,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;EACf,2CAACA;GAAG,WAAU;GAAgB,MAAK;IAAM;EACzC,2CAACH;GACC,IAAI;GACJ,QAAO;aAEP,2CAACG;IACC,WAAU;IACV,MAAK;KACL;IACW;KACd;;AAIP,MAAa,oBAAoB,EAC/B,kBAII;AACJ,QAAO,EAAE,IAAI,cAAc,OAAO,iBAAiB;AACjD,SACE,2CAAC;GAEC,6BACE,qCACA,0DACD;aAEA,EAAE,IAAI,QAAQ,MAAM,gBAAgB;AACnC,WACE,2CAACH;KAEC,IAAI,KAAK;KACT,QAAO;KACP,IAAI,KAAK;eAET,2CAACI;MACC,WAAU;MACV,MAAM,KAAK;OACX;OARG,YASQ;KAEjB;KApBG,aAqBD;GAER"}
@@ -1,4 +1,4 @@
1
- const require_constants = require('../constants-C2moxnps.js');
1
+ const require_constants = require('../constants-pqSeExjX.js');
2
2
 
3
3
  exports.LOGO = require_constants.LOGO;
4
4
  exports.LOGO_SYMBOL_TYPE = require_constants.LOGO_SYMBOL_TYPE;
@@ -1,3 +1,3 @@
1
- import { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE } from "../constants-DRxdMM_X.mjs";
1
+ import { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE } from "../constants-DKqcALfv.mjs";
2
2
 
3
3
  export { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE };
@@ -1,7 +1,7 @@
1
1
  import "../index-CUE6zs36.mjs";
2
2
  import { ReleaseBranch } from "../release-branch-uF0B5lcE.mjs";
3
3
  import { LOGO_SYMBOL_TYPE, LOGO_TYPE, LogoSymbolType, LogoType } from "../constants-oNjXcfW2.mjs";
4
- import * as react8 from "react";
4
+ import * as react11 from "react";
5
5
  import React from "react";
6
6
 
7
7
  //#region src/logo/components/logo-header.d.ts
@@ -33,22 +33,22 @@ declare const LogoHeader: React.FC<LogoHeaderProps> & {
33
33
  //#endregion
34
34
  //#region src/logo/index.d.ts
35
35
  declare const _default: {
36
- LogoHeader: react8.FC<{
36
+ LogoHeader: react11.FC<{
37
37
  type: LogoType;
38
38
  releaseBranch?: ReleaseBranch;
39
- } & react8.ImgHTMLAttributes<HTMLImageElement>> & {
39
+ } & react11.ImgHTMLAttributes<HTMLImageElement>> & {
40
40
  Type: typeof LOGO_TYPE;
41
41
  };
42
- LogoSymbol: react8.FC<{
42
+ LogoSymbol: react11.FC<{
43
43
  type: LogoSymbolType;
44
44
  releaseBranch?: ReleaseBranch;
45
- } & react8.ImgHTMLAttributes<HTMLImageElement>> & {
45
+ } & react11.ImgHTMLAttributes<HTMLImageElement>> & {
46
46
  Type: typeof LOGO_SYMBOL_TYPE;
47
47
  };
48
- LogoFooter: react8.FC<{
48
+ LogoFooter: react11.FC<{
49
49
  type: LogoType;
50
50
  releaseBranch?: ReleaseBranch;
51
- } & react8.ImgHTMLAttributes<HTMLImageElement>> & {
51
+ } & react11.ImgHTMLAttributes<HTMLImageElement>> & {
52
52
  Type: typeof LOGO_TYPE;
53
53
  };
54
54
  };
package/lib/logo/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, '__esModule', { value: true });
2
2
  require('../release-branch-CRZV4Ivz.js');
3
- require('../constants-C2moxnps.js');
4
- const require_logo = require('../logo-DzRRd4Y-.js');
3
+ const require_logo = require('../logo-B35M1BaX.js');
4
+ require('../constants-pqSeExjX.js');
5
5
 
6
6
  exports.LogoFooter = require_logo.logo_footer_default;
7
7
  exports.LogoHeader = require_logo.logo_header_default;
@@ -1,5 +1,5 @@
1
1
  import "../release-branch-DNCD1uH_.mjs";
2
- import "../constants-DRxdMM_X.mjs";
3
- import { logo_default, logo_footer_default, logo_header_default, logo_symbol_default } from "../logo-CBWWiQoO.mjs";
2
+ import { logo_default, logo_footer_default, logo_header_default, logo_symbol_default } from "../logo-DkEpjnPV.mjs";
3
+ import "../constants-DKqcALfv.mjs";
4
4
 
5
5
  export { logo_footer_default as LogoFooter, logo_header_default as LogoHeader, logo_symbol_default as LogoSymbol, logo_default as default };
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('./chunk-BxBTb9qk.js');
2
2
  const require_release_branch = require('./release-branch-CRZV4Ivz.js');
3
- const require_constants = require('./constants-C2moxnps.js');
3
+ const require_constants = require('./constants-pqSeExjX.js');
4
4
  let clsx = require("clsx");
5
5
  clsx = require_chunk.__toESM(clsx);
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -103,4 +103,4 @@ Object.defineProperty(exports, 'logo_symbol_default', {
103
103
  return logo_symbol_default;
104
104
  }
105
105
  });
106
- //# sourceMappingURL=logo-DzRRd4Y-.js.map
106
+ //# sourceMappingURL=logo-B35M1BaX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo-DzRRd4Y-.js","names":["LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","LOGO_TYPE","RELEASE_BRANCH","pathUtil","LOGO","LogoHeader","LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n}","LOGO_SYMBOL_TYPE","RELEASE_BRANCH","pathUtil","LOGO","LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","LOGO_TYPE","RELEASE_BRANCH","pathUtil","LOGO"],"sources":["../src/logo/utils/path.ts","../src/logo/components/logo-header.tsx","../src/logo/components/logo-symbol.tsx","../src/logo/components/logo-footer.tsx","../src/logo/index.ts"],"sourcesContent":["import type { ReleaseBranch } from '../../constants/release-branch'\nimport type { Logo, LogoType, LogoSymbolType } from '../constants'\n\nconst baseGCSDir = 'https://www.twreporter.org/images/logo/'\n\nfunction selectLogoPath(\n logo: Logo,\n branch: ReleaseBranch,\n type: LogoType | LogoSymbolType\n) {\n switch (logo) {\n case 'header': {\n const defaultPath = `${baseGCSDir}logo-header.${branch}.svg`\n const whitePath = `${baseGCSDir}logo-header-white.${branch}.svg`\n return type === 'white' ? whitePath : defaultPath\n }\n case 'footer': {\n const path = {\n default: `${baseGCSDir}logo-footer.${branch}.svg`,\n white: `${baseGCSDir}logo-footer-white.${branch}.svg`,\n }\n return path[type as LogoType]\n }\n case 'symbol': {\n const path = {\n default: `${baseGCSDir}logo-symbol-default.${branch}.svg`,\n black: `${baseGCSDir}logo-symbol-black.${branch}.svg`,\n white: `${baseGCSDir}logo-symbol-white.${branch}.svg`,\n }\n return path[type]\n }\n case 'loading-fallback': {\n return `${baseGCSDir}logo-loading-fallback.${branch}.svg`\n }\n default: {\n return ''\n }\n }\n}\n\nexport default {\n selectLogoPath,\n}\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.header, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_SYMBOL_TYPE, type LogoSymbolType } from '../constants'\n\ntype LogoSymbolProps = {\n type: LogoSymbolType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n} = ({\n type = LOGO_SYMBOL_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.symbol, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoSymbol.Type = LOGO_SYMBOL_TYPE\n\nexport default LogoSymbol\n","import type React from 'react'\nimport clsx from 'clsx'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.footer, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img\n className={clsx(\n 'w-[232px] h-[25px]',\n 'desktop:w-[272px] desktop:h-[29px]'\n )}\n alt=\"The Reporter Logo\"\n src={logoSrc}\n {...props}\n />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import LogoHeader from './components/logo-header'\nimport LogoSymbol from './components/logo-symbol'\nimport LogoFooter from './components/logo-footer'\n\nexport default {\n LogoHeader,\n LogoSymbol,\n LogoFooter,\n}\n\nexport { LogoHeader, LogoSymbol, LogoFooter }\n"],"mappings":";;;;;;;;;AAGA,MAAM,aAAa;AAEnB,SAAS,eACP,MACA,QACA,MACA;AACA,SAAQ,MAAR;EACE,KAAK,UAAU;GACb,MAAM,cAAc,GAAG,WAAW,cAAc,OAAO;GACvD,MAAM,YAAY,GAAG,WAAW,oBAAoB,OAAO;AAC3D,UAAO,SAAS,UAAU,YAAY;;EAExC,KAAK,SAKH,QAJa;GACX,SAAS,GAAG,WAAW,cAAc,OAAO;GAC5C,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,SAMH,QALa;GACX,SAAS,GAAG,WAAW,sBAAsB,OAAO;GACpD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GAChD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,mBACH,QAAO,GAAG,WAAW,wBAAwB,OAAO;EAEtD,QACE,QAAO;;;AAKb,mBAAe,EACb,gBACD;;;;AC3BD,MAAMA,gBAAsE,EAC1E,OAAOC,4BAAU,SACjB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,aAAW,OAAOH;AAElB,0BAAeI;;;;ACff,MAAMC,cAED,EACH,OAAOC,mCAAiB,SACxB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,WAAW,OAAOH;AAElB,0BAAe;;;;AChBf,MAAMI,cAAsE,EAC1E,OAAOC,4BAAU,SACjB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EACC,6BACE,sBACA,qCACD;EACD,KAAI;EACJ,KAAK;EACL,GAAI;GACJ;;AAIN,WAAW,OAAOH;AAElB,0BAAe;;;;ACnCf,mBAAe;CACb;CACA;CACA;CACD"}
1
+ {"version":3,"file":"logo-B35M1BaX.js","names":["LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","LOGO_TYPE","RELEASE_BRANCH","pathUtil","LOGO","LogoHeader","LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n}","LOGO_SYMBOL_TYPE","RELEASE_BRANCH","pathUtil","LOGO","LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","LOGO_TYPE","RELEASE_BRANCH","pathUtil","LOGO"],"sources":["../src/logo/utils/path.ts","../src/logo/components/logo-header.tsx","../src/logo/components/logo-symbol.tsx","../src/logo/components/logo-footer.tsx","../src/logo/index.ts"],"sourcesContent":["import type { ReleaseBranch } from '../../constants/release-branch'\nimport type { Logo, LogoType, LogoSymbolType } from '../constants'\n\nconst baseGCSDir = 'https://www.twreporter.org/images/logo/'\n\nfunction selectLogoPath(\n logo: Logo,\n branch: ReleaseBranch,\n type: LogoType | LogoSymbolType\n) {\n switch (logo) {\n case 'header': {\n const defaultPath = `${baseGCSDir}logo-header.${branch}.svg`\n const whitePath = `${baseGCSDir}logo-header-white.${branch}.svg`\n return type === 'white' ? whitePath : defaultPath\n }\n case 'footer': {\n const path = {\n default: `${baseGCSDir}logo-footer.${branch}.svg`,\n white: `${baseGCSDir}logo-footer-white.${branch}.svg`,\n }\n return path[type as LogoType]\n }\n case 'symbol': {\n const path = {\n default: `${baseGCSDir}logo-symbol-default.${branch}.svg`,\n black: `${baseGCSDir}logo-symbol-black.${branch}.svg`,\n white: `${baseGCSDir}logo-symbol-white.${branch}.svg`,\n }\n return path[type]\n }\n case 'loading-fallback': {\n return `${baseGCSDir}logo-loading-fallback.${branch}.svg`\n }\n default: {\n return ''\n }\n }\n}\n\nexport default {\n selectLogoPath,\n}\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.header, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_SYMBOL_TYPE, type LogoSymbolType } from '../constants'\n\ntype LogoSymbolProps = {\n type: LogoSymbolType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n} = ({\n type = LOGO_SYMBOL_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.symbol, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoSymbol.Type = LOGO_SYMBOL_TYPE\n\nexport default LogoSymbol\n","import type React from 'react'\nimport clsx from 'clsx'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.footer, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img\n className={clsx(\n 'w-[232px] h-[25px]',\n 'desktop:w-[272px] desktop:h-[29px]'\n )}\n alt=\"The Reporter Logo\"\n src={logoSrc}\n {...props}\n />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import LogoHeader from './components/logo-header'\nimport LogoSymbol from './components/logo-symbol'\nimport LogoFooter from './components/logo-footer'\n\nexport default {\n LogoHeader,\n LogoSymbol,\n LogoFooter,\n}\n\nexport { LogoHeader, LogoSymbol, LogoFooter }\n"],"mappings":";;;;;;;;;AAGA,MAAM,aAAa;AAEnB,SAAS,eACP,MACA,QACA,MACA;AACA,SAAQ,MAAR;EACE,KAAK,UAAU;GACb,MAAM,cAAc,GAAG,WAAW,cAAc,OAAO;GACvD,MAAM,YAAY,GAAG,WAAW,oBAAoB,OAAO;AAC3D,UAAO,SAAS,UAAU,YAAY;;EAExC,KAAK,SAKH,QAJa;GACX,SAAS,GAAG,WAAW,cAAc,OAAO;GAC5C,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,SAMH,QALa;GACX,SAAS,GAAG,WAAW,sBAAsB,OAAO;GACpD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GAChD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,mBACH,QAAO,GAAG,WAAW,wBAAwB,OAAO;EAEtD,QACE,QAAO;;;AAKb,mBAAe,EACb,gBACD;;;;AC3BD,MAAMA,gBAAsE,EAC1E,OAAOC,4BAAU,SACjB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,aAAW,OAAOH;AAElB,0BAAeI;;;;ACff,MAAMC,cAED,EACH,OAAOC,mCAAiB,SACxB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,WAAW,OAAOH;AAElB,0BAAe;;;;AChBf,MAAMI,cAAsE,EAC1E,OAAOC,4BAAU,SACjB,gBAAgBC,sCAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAeC,uBAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,2CAAC;EACC,6BACE,sBACA,qCACD;EACD,KAAI;EACJ,KAAK;EACL,GAAI;GACJ;;AAIN,WAAW,OAAOH;AAElB,0BAAe;;;;ACnCf,mBAAe;CACb;CACA;CACA;CACD"}
@@ -1,7 +1,7 @@
1
1
  const require_chunk = require('./chunk-BxBTb9qk.js');
2
2
  const require_release_branch = require('./release-branch-CRZV4Ivz.js');
3
3
  const require_internal_link = require('./internal-link-Bq4yp13E.js');
4
- const require_logo = require('./logo-DzRRd4Y-.js');
4
+ const require_logo = require('./logo-B35M1BaX.js');
5
5
  let react = require("react");
6
6
  react = require_chunk.__toESM(react);
7
7
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -29,4 +29,4 @@ Object.defineProperty(exports, 'logo_default', {
29
29
  return logo_default;
30
30
  }
31
31
  });
32
- //# sourceMappingURL=logo-BSp7gsND.js.map
32
+ //# sourceMappingURL=logo-CeaVUbIW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo-BSp7gsND.js","names":["Logo: FC<LogoProps>","RELEASE_BRANCH","InternalLink","LogoFooter"],"sources":["../src/footer/logo.tsx"],"sourcesContent":["import { useState, type FC } from 'react'\n// components\nimport { LogoFooter } from '../logo'\nimport { InternalLink } from '../customized-link'\n// constants\nimport { RELEASE_BRANCH, type ReleaseBranch } from '../constants/release-branch'\n\ntype LogoProps = {\n releaseBranch?: ReleaseBranch\n}\nconst Logo: FC<LogoProps> = ({ releaseBranch = RELEASE_BRANCH.master }) => {\n const [isHover, setIsHover] = useState(false)\n return (\n <InternalLink\n to=\"/\"\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n <LogoFooter\n releaseBranch={releaseBranch}\n type={isHover ? LogoFooter.Type.default : LogoFooter.Type.white}\n />\n </InternalLink>\n )\n}\n\nexport default Logo\n"],"mappings":";;;;;;;;;;AAUA,MAAMA,QAAuB,EAAE,gBAAgBC,sCAAe,aAAa;CACzE,MAAM,CAAC,SAAS,kCAAuB,MAAM;AAC7C,QACE,2CAACC;EACC,IAAG;EACH,oBAAoB,WAAW,KAAK;EACpC,oBAAoB,WAAW,MAAM;YAErC,2CAACC;GACgB;GACf,MAAM,UAAUA,iCAAW,KAAK,UAAUA,iCAAW,KAAK;IAC1D;GACW;;AAInB,mBAAe"}
1
+ {"version":3,"file":"logo-CeaVUbIW.js","names":["Logo: FC<LogoProps>","RELEASE_BRANCH","InternalLink","LogoFooter"],"sources":["../src/footer/logo.tsx"],"sourcesContent":["import { useState, type FC } from 'react'\n// components\nimport { LogoFooter } from '../logo'\nimport { InternalLink } from '../customized-link'\n// constants\nimport { RELEASE_BRANCH, type ReleaseBranch } from '../constants/release-branch'\n\ntype LogoProps = {\n releaseBranch?: ReleaseBranch\n}\nconst Logo: FC<LogoProps> = ({ releaseBranch = RELEASE_BRANCH.master }) => {\n const [isHover, setIsHover] = useState(false)\n return (\n <InternalLink\n to=\"/\"\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n <LogoFooter\n releaseBranch={releaseBranch}\n type={isHover ? LogoFooter.Type.default : LogoFooter.Type.white}\n />\n </InternalLink>\n )\n}\n\nexport default Logo\n"],"mappings":";;;;;;;;;;AAUA,MAAMA,QAAuB,EAAE,gBAAgBC,sCAAe,aAAa;CACzE,MAAM,CAAC,SAAS,kCAAuB,MAAM;AAC7C,QACE,2CAACC;EACC,IAAG;EACH,oBAAoB,WAAW,KAAK;EACpC,oBAAoB,WAAW,MAAM;YAErC,2CAACC;GACgB;GACf,MAAM,UAAUA,iCAAW,KAAK,UAAUA,iCAAW,KAAK;IAC1D;GACW;;AAInB,mBAAe"}
@@ -1,5 +1,5 @@
1
1
  import { RELEASE_BRANCH } from "./release-branch-DNCD1uH_.mjs";
2
- import { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE } from "./constants-DRxdMM_X.mjs";
2
+ import { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE } from "./constants-DKqcALfv.mjs";
3
3
  import clsx from "clsx";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
 
@@ -77,4 +77,4 @@ var logo_default = {
77
77
 
78
78
  //#endregion
79
79
  export { logo_default, logo_footer_default, logo_header_default, logo_symbol_default };
80
- //# sourceMappingURL=logo-CBWWiQoO.mjs.map
80
+ //# sourceMappingURL=logo-DkEpjnPV.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo-CBWWiQoO.mjs","names":["LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","pathUtil","LogoHeader","LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n}","pathUtil","LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","pathUtil"],"sources":["../src/logo/utils/path.ts","../src/logo/components/logo-header.tsx","../src/logo/components/logo-symbol.tsx","../src/logo/components/logo-footer.tsx","../src/logo/index.ts"],"sourcesContent":["import type { ReleaseBranch } from '../../constants/release-branch'\nimport type { Logo, LogoType, LogoSymbolType } from '../constants'\n\nconst baseGCSDir = 'https://www.twreporter.org/images/logo/'\n\nfunction selectLogoPath(\n logo: Logo,\n branch: ReleaseBranch,\n type: LogoType | LogoSymbolType\n) {\n switch (logo) {\n case 'header': {\n const defaultPath = `${baseGCSDir}logo-header.${branch}.svg`\n const whitePath = `${baseGCSDir}logo-header-white.${branch}.svg`\n return type === 'white' ? whitePath : defaultPath\n }\n case 'footer': {\n const path = {\n default: `${baseGCSDir}logo-footer.${branch}.svg`,\n white: `${baseGCSDir}logo-footer-white.${branch}.svg`,\n }\n return path[type as LogoType]\n }\n case 'symbol': {\n const path = {\n default: `${baseGCSDir}logo-symbol-default.${branch}.svg`,\n black: `${baseGCSDir}logo-symbol-black.${branch}.svg`,\n white: `${baseGCSDir}logo-symbol-white.${branch}.svg`,\n }\n return path[type]\n }\n case 'loading-fallback': {\n return `${baseGCSDir}logo-loading-fallback.${branch}.svg`\n }\n default: {\n return ''\n }\n }\n}\n\nexport default {\n selectLogoPath,\n}\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.header, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_SYMBOL_TYPE, type LogoSymbolType } from '../constants'\n\ntype LogoSymbolProps = {\n type: LogoSymbolType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n} = ({\n type = LOGO_SYMBOL_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.symbol, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoSymbol.Type = LOGO_SYMBOL_TYPE\n\nexport default LogoSymbol\n","import type React from 'react'\nimport clsx from 'clsx'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.footer, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img\n className={clsx(\n 'w-[232px] h-[25px]',\n 'desktop:w-[272px] desktop:h-[29px]'\n )}\n alt=\"The Reporter Logo\"\n src={logoSrc}\n {...props}\n />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import LogoHeader from './components/logo-header'\nimport LogoSymbol from './components/logo-symbol'\nimport LogoFooter from './components/logo-footer'\n\nexport default {\n LogoHeader,\n LogoSymbol,\n LogoFooter,\n}\n\nexport { LogoHeader, LogoSymbol, LogoFooter }\n"],"mappings":";;;;;;AAGA,MAAM,aAAa;AAEnB,SAAS,eACP,MACA,QACA,MACA;AACA,SAAQ,MAAR;EACE,KAAK,UAAU;GACb,MAAM,cAAc,GAAG,WAAW,cAAc,OAAO;GACvD,MAAM,YAAY,GAAG,WAAW,oBAAoB,OAAO;AAC3D,UAAO,SAAS,UAAU,YAAY;;EAExC,KAAK,SAKH,QAJa;GACX,SAAS,GAAG,WAAW,cAAc,OAAO;GAC5C,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,SAMH,QALa;GACX,SAAS,GAAG,WAAW,sBAAsB,OAAO;GACpD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GAChD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,mBACH,QAAO,GAAG,WAAW,wBAAwB,OAAO;EAEtD,QACE,QAAO;;;AAKb,mBAAe,EACb,gBACD;;;;AC3BD,MAAMA,gBAAsE,EAC1E,OAAO,UAAU,SACjB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,aAAW,OAAO;AAElB,0BAAeC;;;;ACff,MAAMC,cAED,EACH,OAAO,iBAAiB,SACxB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,WAAW,OAAO;AAElB,0BAAe;;;;AChBf,MAAMC,cAAsE,EAC1E,OAAO,UAAU,SACjB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EACC,WAAW,KACT,sBACA,qCACD;EACD,KAAI;EACJ,KAAK;EACL,GAAI;GACJ;;AAIN,WAAW,OAAO;AAElB,0BAAe;;;;ACnCf,mBAAe;CACb;CACA;CACA;CACD"}
1
+ {"version":3,"file":"logo-DkEpjnPV.mjs","names":["LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","pathUtil","LogoHeader","LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n}","pathUtil","LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE }","pathUtil"],"sources":["../src/logo/utils/path.ts","../src/logo/components/logo-header.tsx","../src/logo/components/logo-symbol.tsx","../src/logo/components/logo-footer.tsx","../src/logo/index.ts"],"sourcesContent":["import type { ReleaseBranch } from '../../constants/release-branch'\nimport type { Logo, LogoType, LogoSymbolType } from '../constants'\n\nconst baseGCSDir = 'https://www.twreporter.org/images/logo/'\n\nfunction selectLogoPath(\n logo: Logo,\n branch: ReleaseBranch,\n type: LogoType | LogoSymbolType\n) {\n switch (logo) {\n case 'header': {\n const defaultPath = `${baseGCSDir}logo-header.${branch}.svg`\n const whitePath = `${baseGCSDir}logo-header-white.${branch}.svg`\n return type === 'white' ? whitePath : defaultPath\n }\n case 'footer': {\n const path = {\n default: `${baseGCSDir}logo-footer.${branch}.svg`,\n white: `${baseGCSDir}logo-footer-white.${branch}.svg`,\n }\n return path[type as LogoType]\n }\n case 'symbol': {\n const path = {\n default: `${baseGCSDir}logo-symbol-default.${branch}.svg`,\n black: `${baseGCSDir}logo-symbol-black.${branch}.svg`,\n white: `${baseGCSDir}logo-symbol-white.${branch}.svg`,\n }\n return path[type]\n }\n case 'loading-fallback': {\n return `${baseGCSDir}logo-loading-fallback.${branch}.svg`\n }\n default: {\n return ''\n }\n }\n}\n\nexport default {\n selectLogoPath,\n}\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.header, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import type React from 'react'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_SYMBOL_TYPE, type LogoSymbolType } from '../constants'\n\ntype LogoSymbolProps = {\n type: LogoSymbolType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoSymbol: React.FC<LogoSymbolProps> & {\n Type: typeof LOGO_SYMBOL_TYPE\n} = ({\n type = LOGO_SYMBOL_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.symbol, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img alt=\"The Reporter Logo\" src={logoSrc} {...props} />\n )\n}\n\nLogoSymbol.Type = LOGO_SYMBOL_TYPE\n\nexport default LogoSymbol\n","import type React from 'react'\nimport clsx from 'clsx'\n// utils\nimport pathUtil from '../utils/path'\n// constants\nimport {\n RELEASE_BRANCH,\n type ReleaseBranch,\n} from '../../constants/release-branch'\nimport { LOGO, LOGO_TYPE, type LogoType } from '../constants'\n\ntype LogoHeaderProps = {\n type: LogoType\n releaseBranch?: ReleaseBranch\n} & React.ImgHTMLAttributes<HTMLImageElement>\n\nconst LogoHeader: React.FC<LogoHeaderProps> & { Type: typeof LOGO_TYPE } = ({\n type = LOGO_TYPE.default,\n releaseBranch = RELEASE_BRANCH.master,\n ...props\n}) => {\n const logoSrc = pathUtil.selectLogoPath(LOGO.footer, releaseBranch, type)\n\n return (\n // biome-ignore lint/performance/noImgElement: use next image later\n <img\n className={clsx(\n 'w-[232px] h-[25px]',\n 'desktop:w-[272px] desktop:h-[29px]'\n )}\n alt=\"The Reporter Logo\"\n src={logoSrc}\n {...props}\n />\n )\n}\n\nLogoHeader.Type = LOGO_TYPE\n\nexport default LogoHeader\n","import LogoHeader from './components/logo-header'\nimport LogoSymbol from './components/logo-symbol'\nimport LogoFooter from './components/logo-footer'\n\nexport default {\n LogoHeader,\n LogoSymbol,\n LogoFooter,\n}\n\nexport { LogoHeader, LogoSymbol, LogoFooter }\n"],"mappings":";;;;;;AAGA,MAAM,aAAa;AAEnB,SAAS,eACP,MACA,QACA,MACA;AACA,SAAQ,MAAR;EACE,KAAK,UAAU;GACb,MAAM,cAAc,GAAG,WAAW,cAAc,OAAO;GACvD,MAAM,YAAY,GAAG,WAAW,oBAAoB,OAAO;AAC3D,UAAO,SAAS,UAAU,YAAY;;EAExC,KAAK,SAKH,QAJa;GACX,SAAS,GAAG,WAAW,cAAc,OAAO;GAC5C,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,SAMH,QALa;GACX,SAAS,GAAG,WAAW,sBAAsB,OAAO;GACpD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GAChD,OAAO,GAAG,WAAW,oBAAoB,OAAO;GACjD,CACW;EAEd,KAAK,mBACH,QAAO,GAAG,WAAW,wBAAwB,OAAO;EAEtD,QACE,QAAO;;;AAKb,mBAAe,EACb,gBACD;;;;AC3BD,MAAMA,gBAAsE,EAC1E,OAAO,UAAU,SACjB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,aAAW,OAAO;AAElB,0BAAeC;;;;ACff,MAAMC,cAED,EACH,OAAO,iBAAiB,SACxB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EAAI,KAAI;EAAoB,KAAK;EAAS,GAAI;GAAS;;AAI5D,WAAW,OAAO;AAElB,0BAAe;;;;AChBf,MAAMC,cAAsE,EAC1E,OAAO,UAAU,SACjB,gBAAgB,eAAe,OAC/B,GAAG,YACC;CACJ,MAAM,UAAUC,aAAS,eAAe,KAAK,QAAQ,eAAe,KAAK;AAEzE,QAEE,oBAAC;EACC,WAAW,KACT,sBACA,qCACD;EACD,KAAI;EACJ,KAAK;EACL,GAAI;GACJ;;AAIN,WAAW,OAAO;AAElB,0BAAe;;;;ACnCf,mBAAe;CACb;CACA;CACA;CACD"}
@@ -1,6 +1,6 @@
1
1
  import { internal_link_default } from "./internal-link-DCXJvzgx.mjs";
2
2
  import { RELEASE_BRANCH } from "./release-branch-DNCD1uH_.mjs";
3
- import { logo_footer_default } from "./logo-CBWWiQoO.mjs";
3
+ import { logo_footer_default } from "./logo-DkEpjnPV.mjs";
4
4
  import { useState } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -21,4 +21,4 @@ var logo_default = Logo;
21
21
 
22
22
  //#endregion
23
23
  export { logo_default };
24
- //# sourceMappingURL=logo-mBe4a2OP.mjs.map
24
+ //# sourceMappingURL=logo-lPQ3Apwn.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo-mBe4a2OP.mjs","names":["Logo: FC<LogoProps>","InternalLink","LogoFooter"],"sources":["../src/footer/logo.tsx"],"sourcesContent":["import { useState, type FC } from 'react'\n// components\nimport { LogoFooter } from '../logo'\nimport { InternalLink } from '../customized-link'\n// constants\nimport { RELEASE_BRANCH, type ReleaseBranch } from '../constants/release-branch'\n\ntype LogoProps = {\n releaseBranch?: ReleaseBranch\n}\nconst Logo: FC<LogoProps> = ({ releaseBranch = RELEASE_BRANCH.master }) => {\n const [isHover, setIsHover] = useState(false)\n return (\n <InternalLink\n to=\"/\"\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n <LogoFooter\n releaseBranch={releaseBranch}\n type={isHover ? LogoFooter.Type.default : LogoFooter.Type.white}\n />\n </InternalLink>\n )\n}\n\nexport default Logo\n"],"mappings":";;;;;;;AAUA,MAAMA,QAAuB,EAAE,gBAAgB,eAAe,aAAa;CACzE,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;AAC7C,QACE,oBAACC;EACC,IAAG;EACH,oBAAoB,WAAW,KAAK;EACpC,oBAAoB,WAAW,MAAM;YAErC,oBAACC;GACgB;GACf,MAAM,UAAUA,oBAAW,KAAK,UAAUA,oBAAW,KAAK;IAC1D;GACW;;AAInB,mBAAe"}
1
+ {"version":3,"file":"logo-lPQ3Apwn.mjs","names":["Logo: FC<LogoProps>","InternalLink","LogoFooter"],"sources":["../src/footer/logo.tsx"],"sourcesContent":["import { useState, type FC } from 'react'\n// components\nimport { LogoFooter } from '../logo'\nimport { InternalLink } from '../customized-link'\n// constants\nimport { RELEASE_BRANCH, type ReleaseBranch } from '../constants/release-branch'\n\ntype LogoProps = {\n releaseBranch?: ReleaseBranch\n}\nconst Logo: FC<LogoProps> = ({ releaseBranch = RELEASE_BRANCH.master }) => {\n const [isHover, setIsHover] = useState(false)\n return (\n <InternalLink\n to=\"/\"\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n <LogoFooter\n releaseBranch={releaseBranch}\n type={isHover ? LogoFooter.Type.default : LogoFooter.Type.white}\n />\n </InternalLink>\n )\n}\n\nexport default Logo\n"],"mappings":";;;;;;;AAUA,MAAMA,QAAuB,EAAE,gBAAgB,eAAe,aAAa;CACzE,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;AAC7C,QACE,oBAACC;EACC,IAAG;EACH,oBAAoB,WAAW,KAAK;EACpC,oBAAoB,WAAW,MAAM;YAErC,oBAACC;GACgB;GACf,MAAM,UAAUA,oBAAW,KAAK,UAAUA,oBAAW,KAAK;IAC1D;GACW;;AAInB,mBAAe"}
@@ -1,7 +1,7 @@
1
1
  require('../internal-links-DxtMobuI.js');
2
2
  require('../release-branch-CRZV4Ivz.js');
3
- require('../constants-D8wNUvoZ.js');
4
- require('../icons-qP5oNB0W.js');
5
- const require_constants$1 = require('../constants-Dt5HD0aL.js');
3
+ require('../constants-R6EfY15A.js');
4
+ require('../icons-BZI6_5JJ.js');
5
+ const require_constants$1 = require('../constants-CUzusjTU.js');
6
6
 
7
7
  exports.TabBarItems = require_constants$1.TabBarItems;
@@ -1,7 +1,7 @@
1
1
  import "../internal-links-CP3dqmrz.mjs";
2
2
  import "../release-branch-DNCD1uH_.mjs";
3
- import "../constants-5phfWHvb.mjs";
4
- import "../icons-I7T-auOQ.mjs";
5
- import { TabBarItems } from "../constants-BG4oRMD_.mjs";
3
+ import "../constants-Npoq7yu0.mjs";
4
+ import "../icons-C5UqghX2.mjs";
5
+ import { TabBarItems } from "../constants-B8QkNSRh.mjs";
6
6
 
7
7
  export { TabBarItems };
@@ -8,11 +8,11 @@ require('../release-branch-CRZV4Ivz.js');
8
8
  require('../external-link-Ce1_loKh.js');
9
9
  require('../internal-link-Bq4yp13E.js');
10
10
  require('../customized-link-BDKQVdcH.js');
11
- require('../context-I1lTR5SO.js');
12
- require('../constants-D8wNUvoZ.js');
13
- require('../icons-qP5oNB0W.js');
14
- const require_tab_bar = require('../tab-bar-CVPd5go9.js');
11
+ require('../constants-R6EfY15A.js');
12
+ require('../icons-BZI6_5JJ.js');
13
+ require('../context-vBt5fnU9.js');
14
+ const require_tab_bar = require('../tab-bar-USs-mSXE.js');
15
15
  require('../theme-B9k1Udon.js');
16
- require('../constants-Dt5HD0aL.js');
16
+ require('../constants-CUzusjTU.js');
17
17
 
18
18
  module.exports = require_tab_bar.tab_bar_default;
@@ -8,11 +8,11 @@ import "../internal-links-CP3dqmrz.mjs";
8
8
  import "../release-branch-DNCD1uH_.mjs";
9
9
  import "../external-link-BMIFL3DE.mjs";
10
10
  import "../customized-link-D3p9rjEe.mjs";
11
- import "../context-BgdqM3zA.mjs";
12
- import "../constants-5phfWHvb.mjs";
13
- import "../icons-I7T-auOQ.mjs";
14
- import { tab_bar_default } from "../tab-bar-jI3fYt_7.mjs";
11
+ import "../constants-Npoq7yu0.mjs";
12
+ import "../icons-C5UqghX2.mjs";
13
+ import "../context-C9AuSZIE.mjs";
14
+ import { tab_bar_default } from "../tab-bar-C_FxNWkG.mjs";
15
15
  import "../theme-Cf9NG_eL.mjs";
16
- import "../constants-BG4oRMD_.mjs";
16
+ import "../constants-B8QkNSRh.mjs";
17
17
 
18
18
  export { tab_bar_default as default };
@@ -2,10 +2,10 @@ import { internal_link_default } from "./internal-link-DCXJvzgx.mjs";
2
2
  import { THEME } from "./theme-BG6yZVj-.mjs";
3
3
  import { icon_with_text_button_default } from "./button-D_AWI7r9.mjs";
4
4
  import { external_link_default } from "./external-link-BMIFL3DE.mjs";
5
- import { HamburgerContext, HeaderContext } from "./context-BgdqM3zA.mjs";
6
- import { Hamburger } from "./icons-I7T-auOQ.mjs";
5
+ import { Hamburger } from "./icons-C5UqghX2.mjs";
6
+ import { HamburgerContext, HeaderContext } from "./context-C9AuSZIE.mjs";
7
7
  import { selectTabBarTheme } from "./theme-Cf9NG_eL.mjs";
8
- import { TabBarItems } from "./constants-BG4oRMD_.mjs";
8
+ import { TabBarItems } from "./constants-B8QkNSRh.mjs";
9
9
  import { useContext } from "react";
10
10
  import clsx from "clsx";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -59,4 +59,4 @@ var tab_bar_default = TabBar;
59
59
 
60
60
  //#endregion
61
61
  export { ZIndex, tab_bar_default };
62
- //# sourceMappingURL=tab-bar-jI3fYt_7.mjs.map
62
+ //# sourceMappingURL=tab-bar-C_FxNWkG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-bar-jI3fYt_7.mjs","names":["TabBar: FC<TabBarProps>","ExternalLink","InternalLink","IconWithTextButton"],"sources":["../src/header/constants/z-index.ts","../src/tab-bar/index.tsx"],"sourcesContent":["export const ZIndex = {\n tabBarMobile: 'z-10',\n tabBarTablet: 'tablet:z-3',\n hamburger: 'z-4',\n header: 'z-3',\n topRow: 'z-2',\n channel: 'z-1',\n} as const\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HamburgerContext, HeaderContext } from '../header/context'\n// z-index\nimport { ZIndex } from '../header/constants/z-index'\n// button\nimport { IconWithTextButton } from '../button'\n// icons\nimport { Hamburger } from '../icons'\n// theme\nimport { THEME } from '../constants/theme'\nimport { selectTabBarTheme } from './theme'\n// constants\nimport { TabBarItems } from './constants'\n// links\nimport { InternalLink, ExternalLink } from '../customized-link'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\ntype TabBarProps = {\n className?: string\n}\nconst TabBar: FC<TabBarProps> = ({ className = '' }) => {\n const { theme, releaseBranch, isLinkExternal, pathname } =\n useContext(HeaderContext)\n const { toggleHamburger, isHamburgerMenuOpen } = useContext(HamburgerContext)\n const { bgColor } = selectTabBarTheme(theme)\n const iconTheme = theme === THEME.photography ? theme : THEME.normal\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n 'w-screen fixed left-0 bottom-0 flex justify-between px-[16px] pt-[8px] pb-[calc(8px+env(safe-area-inset-bottom,0))] shadow-[0_0_2px_rgba(0,0,0,0.15)]',\n 'desktop:hidden',\n bgColor,\n ZIndex.tabBarMobile,\n ZIndex.tabBarTablet,\n className\n )}\n >\n {_.map(TabBarItems(releaseBranch), (item) => {\n const isActive = !isHamburgerMenuOpen && pathname === item.link\n return (\n <LinkComponent\n key={item.text}\n to={item.link}\n target={item.target}\n className=\"flex justify-center flex-1\"\n >\n <IconWithTextButton\n text={item.text}\n iconComponent={item.icon}\n theme={iconTheme}\n active={isActive}\n />\n </LinkComponent>\n )\n })}\n <IconWithTextButton\n text=\"選單\"\n iconComponent={Hamburger(releaseBranch)}\n className=\"flex justify-center flex-1\"\n onClick={toggleHamburger}\n active={isHamburgerMenuOpen}\n theme={iconTheme}\n />\n </div>\n )\n}\nexport default TabBar\n"],"mappings":";;;;;;;;;;;;;;AAAA,MAAa,SAAS;CACpB,cAAc;CACd,cAAc;CACd,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,SAAS;CACV;;;;ACYD,MAAM,IAAI,EACR,KACD;AAKD,MAAMA,UAA2B,EAAE,YAAY,SAAS;CACtD,MAAM,EAAE,OAAO,eAAe,gBAAgB,aAC5C,WAAW,cAAc;CAC3B,MAAM,EAAE,iBAAiB,wBAAwB,WAAW,iBAAiB;CAC7E,MAAM,EAAE,YAAY,kBAAkB,MAAM;CAC5C,MAAM,YAAY,UAAU,MAAM,cAAc,QAAQ,MAAM;CAC9D,MAAM,gBAAgB,iBAAiBC,wBAAeC;AACtD,QACE,qBAAC;EACC,WAAW,KACT,yJACA,kBACA,SACA,OAAO,cACP,OAAO,cACP,UACD;aAEA,EAAE,IAAI,YAAY,cAAc,GAAG,SAAS;GAC3C,MAAM,WAAW,CAAC,uBAAuB,aAAa,KAAK;AAC3D,UACE,oBAAC;IAEC,IAAI,KAAK;IACT,QAAQ,KAAK;IACb,WAAU;cAEV,oBAACC;KACC,MAAM,KAAK;KACX,eAAe,KAAK;KACpB,OAAO;KACP,QAAQ;MACR;MAVG,KAAK,KAWI;IAElB,EACF,oBAACA;GACC,MAAK;GACL,eAAe,UAAU,cAAc;GACvC,WAAU;GACV,SAAS;GACT,QAAQ;GACR,OAAO;IACP;GACE;;AAGV,sBAAe"}
1
+ {"version":3,"file":"tab-bar-C_FxNWkG.mjs","names":["TabBar: FC<TabBarProps>","ExternalLink","InternalLink","IconWithTextButton"],"sources":["../src/header/constants/z-index.ts","../src/tab-bar/index.tsx"],"sourcesContent":["export const ZIndex = {\n tabBarMobile: 'z-10',\n tabBarTablet: 'tablet:z-3',\n hamburger: 'z-4',\n header: 'z-3',\n topRow: 'z-2',\n channel: 'z-1',\n} as const\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HamburgerContext, HeaderContext } from '../header/context'\n// z-index\nimport { ZIndex } from '../header/constants/z-index'\n// button\nimport { IconWithTextButton } from '../button'\n// icons\nimport { Hamburger } from '../icons'\n// theme\nimport { THEME } from '../constants/theme'\nimport { selectTabBarTheme } from './theme'\n// constants\nimport { TabBarItems } from './constants'\n// links\nimport { InternalLink, ExternalLink } from '../customized-link'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\ntype TabBarProps = {\n className?: string\n}\nconst TabBar: FC<TabBarProps> = ({ className = '' }) => {\n const { theme, releaseBranch, isLinkExternal, pathname } =\n useContext(HeaderContext)\n const { toggleHamburger, isHamburgerMenuOpen } = useContext(HamburgerContext)\n const { bgColor } = selectTabBarTheme(theme)\n const iconTheme = theme === THEME.photography ? theme : THEME.normal\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n 'w-screen fixed left-0 bottom-0 flex justify-between px-[16px] pt-[8px] pb-[calc(8px+env(safe-area-inset-bottom,0))] shadow-[0_0_2px_rgba(0,0,0,0.15)]',\n 'desktop:hidden',\n bgColor,\n ZIndex.tabBarMobile,\n ZIndex.tabBarTablet,\n className\n )}\n >\n {_.map(TabBarItems(releaseBranch), (item) => {\n const isActive = !isHamburgerMenuOpen && pathname === item.link\n return (\n <LinkComponent\n key={item.text}\n to={item.link}\n target={item.target}\n className=\"flex justify-center flex-1\"\n >\n <IconWithTextButton\n text={item.text}\n iconComponent={item.icon}\n theme={iconTheme}\n active={isActive}\n />\n </LinkComponent>\n )\n })}\n <IconWithTextButton\n text=\"選單\"\n iconComponent={Hamburger(releaseBranch)}\n className=\"flex justify-center flex-1\"\n onClick={toggleHamburger}\n active={isHamburgerMenuOpen}\n theme={iconTheme}\n />\n </div>\n )\n}\nexport default TabBar\n"],"mappings":";;;;;;;;;;;;;;AAAA,MAAa,SAAS;CACpB,cAAc;CACd,cAAc;CACd,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,SAAS;CACV;;;;ACYD,MAAM,IAAI,EACR,KACD;AAKD,MAAMA,UAA2B,EAAE,YAAY,SAAS;CACtD,MAAM,EAAE,OAAO,eAAe,gBAAgB,aAC5C,WAAW,cAAc;CAC3B,MAAM,EAAE,iBAAiB,wBAAwB,WAAW,iBAAiB;CAC7E,MAAM,EAAE,YAAY,kBAAkB,MAAM;CAC5C,MAAM,YAAY,UAAU,MAAM,cAAc,QAAQ,MAAM;CAC9D,MAAM,gBAAgB,iBAAiBC,wBAAeC;AACtD,QACE,qBAAC;EACC,WAAW,KACT,yJACA,kBACA,SACA,OAAO,cACP,OAAO,cACP,UACD;aAEA,EAAE,IAAI,YAAY,cAAc,GAAG,SAAS;GAC3C,MAAM,WAAW,CAAC,uBAAuB,aAAa,KAAK;AAC3D,UACE,oBAAC;IAEC,IAAI,KAAK;IACT,QAAQ,KAAK;IACb,WAAU;cAEV,oBAACC;KACC,MAAM,KAAK;KACX,eAAe,KAAK;KACpB,OAAO;KACP,QAAQ;MACR;MAVG,KAAK,KAWI;IAElB,EACF,oBAACA;GACC,MAAK;GACL,eAAe,UAAU,cAAc;GACvC,WAAU;GACV,SAAS;GACT,QAAQ;GACR,OAAO;IACP;GACE;;AAGV,sBAAe"}
@@ -3,10 +3,10 @@ const require_theme = require('./theme-DDBlIbeS.js');
3
3
  const require_button = require('./button-Dk0MxlKd.js');
4
4
  const require_external_link = require('./external-link-Ce1_loKh.js');
5
5
  const require_internal_link = require('./internal-link-Bq4yp13E.js');
6
- const require_context = require('./context-I1lTR5SO.js');
7
- const require_icons = require('./icons-qP5oNB0W.js');
6
+ const require_icons = require('./icons-BZI6_5JJ.js');
7
+ const require_context = require('./context-vBt5fnU9.js');
8
8
  const require_theme$1 = require('./theme-B9k1Udon.js');
9
- const require_constants = require('./constants-Dt5HD0aL.js');
9
+ const require_constants = require('./constants-CUzusjTU.js');
10
10
  let react = require("react");
11
11
  react = require_chunk.__toESM(react);
12
12
  let clsx = require("clsx");
@@ -75,4 +75,4 @@ Object.defineProperty(exports, 'tab_bar_default', {
75
75
  return tab_bar_default;
76
76
  }
77
77
  });
78
- //# sourceMappingURL=tab-bar-CVPd5go9.js.map
78
+ //# sourceMappingURL=tab-bar-USs-mSXE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-bar-CVPd5go9.js","names":["TabBar: FC<TabBarProps>","HeaderContext","HamburgerContext","selectTabBarTheme","THEME","ExternalLink","InternalLink","TabBarItems","IconWithTextButton","Hamburger"],"sources":["../src/header/constants/z-index.ts","../src/tab-bar/index.tsx"],"sourcesContent":["export const ZIndex = {\n tabBarMobile: 'z-10',\n tabBarTablet: 'tablet:z-3',\n hamburger: 'z-4',\n header: 'z-3',\n topRow: 'z-2',\n channel: 'z-1',\n} as const\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HamburgerContext, HeaderContext } from '../header/context'\n// z-index\nimport { ZIndex } from '../header/constants/z-index'\n// button\nimport { IconWithTextButton } from '../button'\n// icons\nimport { Hamburger } from '../icons'\n// theme\nimport { THEME } from '../constants/theme'\nimport { selectTabBarTheme } from './theme'\n// constants\nimport { TabBarItems } from './constants'\n// links\nimport { InternalLink, ExternalLink } from '../customized-link'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\ntype TabBarProps = {\n className?: string\n}\nconst TabBar: FC<TabBarProps> = ({ className = '' }) => {\n const { theme, releaseBranch, isLinkExternal, pathname } =\n useContext(HeaderContext)\n const { toggleHamburger, isHamburgerMenuOpen } = useContext(HamburgerContext)\n const { bgColor } = selectTabBarTheme(theme)\n const iconTheme = theme === THEME.photography ? theme : THEME.normal\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n 'w-screen fixed left-0 bottom-0 flex justify-between px-[16px] pt-[8px] pb-[calc(8px+env(safe-area-inset-bottom,0))] shadow-[0_0_2px_rgba(0,0,0,0.15)]',\n 'desktop:hidden',\n bgColor,\n ZIndex.tabBarMobile,\n ZIndex.tabBarTablet,\n className\n )}\n >\n {_.map(TabBarItems(releaseBranch), (item) => {\n const isActive = !isHamburgerMenuOpen && pathname === item.link\n return (\n <LinkComponent\n key={item.text}\n to={item.link}\n target={item.target}\n className=\"flex justify-center flex-1\"\n >\n <IconWithTextButton\n text={item.text}\n iconComponent={item.icon}\n theme={iconTheme}\n active={isActive}\n />\n </LinkComponent>\n )\n })}\n <IconWithTextButton\n text=\"選單\"\n iconComponent={Hamburger(releaseBranch)}\n className=\"flex justify-center flex-1\"\n onClick={toggleHamburger}\n active={isHamburgerMenuOpen}\n theme={iconTheme}\n />\n </div>\n )\n}\nexport default TabBar\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,MAAa,SAAS;CACpB,cAAc;CACd,cAAc;CACd,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,SAAS;CACV;;;;ACYD,MAAM,IAAI,EACR,yBACD;AAKD,MAAMA,UAA2B,EAAE,YAAY,SAAS;CACtD,MAAM,EAAE,OAAO,eAAe,gBAAgB,mCACjCC,8BAAc;CAC3B,MAAM,EAAE,iBAAiB,8CAAmCC,iCAAiB;CAC7E,MAAM,EAAE,YAAYC,kCAAkB,MAAM;CAC5C,MAAM,YAAY,UAAUC,oBAAM,cAAc,QAAQA,oBAAM;CAC9D,MAAM,gBAAgB,iBAAiBC,8CAAeC;AACtD,QACE,4CAAC;EACC,6BACE,yJACA,kBACA,SACA,OAAO,cACP,OAAO,cACP,UACD;aAEA,EAAE,IAAIC,8BAAY,cAAc,GAAG,SAAS;GAC3C,MAAM,WAAW,CAAC,uBAAuB,aAAa,KAAK;AAC3D,UACE,2CAAC;IAEC,IAAI,KAAK;IACT,QAAQ,KAAK;IACb,WAAU;cAEV,2CAACC;KACC,MAAM,KAAK;KACX,eAAe,KAAK;KACpB,OAAO;KACP,QAAQ;MACR;MAVG,KAAK,KAWI;IAElB,EACF,2CAACA;GACC,MAAK;GACL,eAAeC,wBAAU,cAAc;GACvC,WAAU;GACV,SAAS;GACT,QAAQ;GACR,OAAO;IACP;GACE;;AAGV,sBAAe"}
1
+ {"version":3,"file":"tab-bar-USs-mSXE.js","names":["TabBar: FC<TabBarProps>","HeaderContext","HamburgerContext","selectTabBarTheme","THEME","ExternalLink","InternalLink","TabBarItems","IconWithTextButton","Hamburger"],"sources":["../src/header/constants/z-index.ts","../src/tab-bar/index.tsx"],"sourcesContent":["export const ZIndex = {\n tabBarMobile: 'z-10',\n tabBarTablet: 'tablet:z-3',\n hamburger: 'z-4',\n header: 'z-3',\n topRow: 'z-2',\n channel: 'z-1',\n} as const\n","import { useContext, type FC } from 'react'\nimport clsx from 'clsx'\n// context\nimport { HamburgerContext, HeaderContext } from '../header/context'\n// z-index\nimport { ZIndex } from '../header/constants/z-index'\n// button\nimport { IconWithTextButton } from '../button'\n// icons\nimport { Hamburger } from '../icons'\n// theme\nimport { THEME } from '../constants/theme'\nimport { selectTabBarTheme } from './theme'\n// constants\nimport { TabBarItems } from './constants'\n// links\nimport { InternalLink, ExternalLink } from '../customized-link'\n// lodash\nimport map from 'lodash/map'\nconst _ = {\n map,\n}\n\ntype TabBarProps = {\n className?: string\n}\nconst TabBar: FC<TabBarProps> = ({ className = '' }) => {\n const { theme, releaseBranch, isLinkExternal, pathname } =\n useContext(HeaderContext)\n const { toggleHamburger, isHamburgerMenuOpen } = useContext(HamburgerContext)\n const { bgColor } = selectTabBarTheme(theme)\n const iconTheme = theme === THEME.photography ? theme : THEME.normal\n const LinkComponent = isLinkExternal ? ExternalLink : InternalLink\n return (\n <div\n className={clsx(\n 'w-screen fixed left-0 bottom-0 flex justify-between px-[16px] pt-[8px] pb-[calc(8px+env(safe-area-inset-bottom,0))] shadow-[0_0_2px_rgba(0,0,0,0.15)]',\n 'desktop:hidden',\n bgColor,\n ZIndex.tabBarMobile,\n ZIndex.tabBarTablet,\n className\n )}\n >\n {_.map(TabBarItems(releaseBranch), (item) => {\n const isActive = !isHamburgerMenuOpen && pathname === item.link\n return (\n <LinkComponent\n key={item.text}\n to={item.link}\n target={item.target}\n className=\"flex justify-center flex-1\"\n >\n <IconWithTextButton\n text={item.text}\n iconComponent={item.icon}\n theme={iconTheme}\n active={isActive}\n />\n </LinkComponent>\n )\n })}\n <IconWithTextButton\n text=\"選單\"\n iconComponent={Hamburger(releaseBranch)}\n className=\"flex justify-center flex-1\"\n onClick={toggleHamburger}\n active={isHamburgerMenuOpen}\n theme={iconTheme}\n />\n </div>\n )\n}\nexport default TabBar\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,MAAa,SAAS;CACpB,cAAc;CACd,cAAc;CACd,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,SAAS;CACV;;;;ACYD,MAAM,IAAI,EACR,yBACD;AAKD,MAAMA,UAA2B,EAAE,YAAY,SAAS;CACtD,MAAM,EAAE,OAAO,eAAe,gBAAgB,mCACjCC,8BAAc;CAC3B,MAAM,EAAE,iBAAiB,8CAAmCC,iCAAiB;CAC7E,MAAM,EAAE,YAAYC,kCAAkB,MAAM;CAC5C,MAAM,YAAY,UAAUC,oBAAM,cAAc,QAAQA,oBAAM;CAC9D,MAAM,gBAAgB,iBAAiBC,8CAAeC;AACtD,QACE,4CAAC;EACC,6BACE,yJACA,kBACA,SACA,OAAO,cACP,OAAO,cACP,UACD;aAEA,EAAE,IAAIC,8BAAY,cAAc,GAAG,SAAS;GAC3C,MAAM,WAAW,CAAC,uBAAuB,aAAa,KAAK;AAC3D,UACE,2CAAC;IAEC,IAAI,KAAK;IACT,QAAQ,KAAK;IACb,WAAU;cAEV,2CAACC;KACC,MAAM,KAAK;KACX,eAAe,KAAK;KACpB,OAAO;KACP,QAAQ;MACR;MAVG,KAAK,KAWI;IAElB,EACF,2CAACA;GACC,MAAK;GACL,eAAeC,wBAAU,cAAc;GACvC,WAAU;GACV,SAAS;GACT,QAAQ;GACR,OAAO;IACP;GACE;;AAGV,sBAAe"}
@@ -0,0 +1,7 @@
1
+ import * as react9 from "react";
2
+
3
+ //#region src/hooks/use-outside-click.d.ts
4
+ declare const useOutsideClick: (callback: () => void) => react9.RefObject<HTMLDivElement | null>;
5
+ //#endregion
6
+ export { useOutsideClick };
7
+ //# sourceMappingURL=use-outside-click-BA-T3hJc.d.ts.map
@@ -4,4 +4,4 @@ import * as react8 from "react";
4
4
  declare const useOutsideClick: (callback: () => void) => react8.RefObject<HTMLDivElement | null>;
5
5
  //#endregion
6
6
  export { useOutsideClick };
7
- //# sourceMappingURL=use-outside-click-COJmPFYr.d.ts.map
7
+ //# sourceMappingURL=use-outside-click-E-9eTkfz.d.mts.map
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "React components using TypeScript and Tailwind CSS",
4
4
  "author": "twreporter <developer@twreporter.org>",
5
5
  "license": "MIT",
6
- "version": "0.1.0-beta.20",
6
+ "version": "0.1.0-beta.21",
7
7
  "type": "commonjs",
8
8
  "scripts": {
9
9
  "clean": "rm -rf lib",
@@ -12,7 +12,10 @@
12
12
  "build": "yarn clean && yarn build:components && yarn build:styles",
13
13
  "prepublishOnly": "yarn build",
14
14
  "storybook": "storybook dev -p 6006",
15
- "build-storybook": "storybook build"
15
+ "build-storybook": "storybook build",
16
+ "build-storybook:dev": "STORYBOOK_BASE_PATH=/www-public-monorepo/dev storybook build --output-dir ../../storybook-static-dev",
17
+ "build-storybook:staging": "STORYBOOK_BASE_PATH=/www-public-monorepo/staging storybook build --output-dir ../../storybook-static-staging",
18
+ "build-storybook:prod": "STORYBOOK_BASE_PATH=/www-public-monorepo storybook build --output-dir ../../storybook-static-prod"
16
19
  },
17
20
  "peerDependencies": {
18
21
  "react": "^19.0.0",
@@ -50,5 +53,5 @@
50
53
  "url": "git+https://github.com/twreporter/www-public-monorepo.git",
51
54
  "directory": "packages/react-typescript-components"
52
55
  },
53
- "gitHead": "60abf62135d961ce33937d80f6c43a674b96faf4"
56
+ "gitHead": "65bb6102208271eff57d92119048621f0c986673"
54
57
  }