@twreporter/react-typescript-components 0.1.0-beta.7 → 0.1.0-beta.9

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