@twreporter/react-typescript-components 0.1.0-beta.16 → 0.1.0-beta.17

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 (172) hide show
  1. package/lib/button/constants.d.mts +2 -2
  2. package/lib/button/index.d.mts +12 -12
  3. package/lib/button/index.js +1 -1
  4. package/lib/button/index.mjs +1 -1
  5. package/lib/{button-hDNHA85d.mjs → button-D_AWI7r9.mjs} +8 -2
  6. package/lib/button-D_AWI7r9.mjs.map +1 -0
  7. package/lib/{button-D50NHdly.js → button-Dk0MxlKd.js} +8 -2
  8. package/lib/button-Dk0MxlKd.js.map +1 -0
  9. package/lib/constants/release-branch.d.mts +2 -2
  10. package/lib/constants/theme.d.mts +2 -2
  11. package/lib/{constants-BNxn_qJc.js → constants-91DoZaeP.js} +1 -1
  12. package/lib/{constants-BNxn_qJc.js.map → constants-91DoZaeP.js.map} +1 -1
  13. package/lib/constants-BGUGvo1A.d.ts +22 -0
  14. package/lib/constants-BP47D2l7.js +36 -0
  15. package/lib/constants-BP47D2l7.js.map +1 -0
  16. package/lib/{constants--CDeoDub.mjs → constants-BYqJQzQQ.mjs} +1 -1
  17. package/lib/{constants--CDeoDub.mjs.map → constants-BYqJQzQQ.mjs.map} +1 -1
  18. package/lib/{constants-Cb4Udkwt.d.mts → constants-BnVX84Yl.d.mts} +2 -2
  19. package/lib/{constants-nmH6p6-y.js → constants-BuIUKM2c.js} +1 -1
  20. package/lib/{constants-nmH6p6-y.js.map → constants-BuIUKM2c.js.map} +1 -1
  21. package/lib/{constants-B6oiTL1L.d.mts → constants-C2kTkuiJ.d.mts} +2 -2
  22. package/lib/{constants-CBjyeHSl.d.ts → constants-COhDITk3.d.ts} +1 -1
  23. package/lib/{constants-CVmr4VOP.d.mts → constants-Cg4dfRV_.d.mts} +2 -2
  24. package/lib/constants-CxHP9dkH.d.mts +22 -0
  25. package/lib/{constants-z9Q8ph_H.mjs → constants-Cz7n-nLz.mjs} +1 -1
  26. package/lib/{constants-z9Q8ph_H.mjs.map → constants-Cz7n-nLz.mjs.map} +1 -1
  27. package/lib/{constants-B_NgWFML.d.ts → constants-CzHmv07x.d.ts} +1 -1
  28. package/lib/constants-Dfgyc0ND.mjs +18 -0
  29. package/lib/constants-Dfgyc0ND.mjs.map +1 -0
  30. package/lib/{constants-D-mBwgNQ.d.mts → constants-P65Nafg1.d.mts} +2 -2
  31. package/lib/{constants-BqAhJjFv.d.mts → constants-oX1rftqQ.d.mts} +2 -2
  32. package/lib/customized-link/external-link.d.mts +2 -2
  33. package/lib/customized-link/external-link.js +1 -1
  34. package/lib/customized-link/external-link.mjs +1 -1
  35. package/lib/customized-link/index.d.mts +6 -6
  36. package/lib/customized-link/index.js +3 -3
  37. package/lib/customized-link/index.mjs +2 -2
  38. package/lib/customized-link/internal-link.d.mts +2 -2
  39. package/lib/customized-link/internal-link.js +1 -1
  40. package/lib/customized-link/type.d.mts +1 -1
  41. package/lib/{customized-link-DnaZxeKK.mjs → customized-link-DNKmWI0u.mjs} +2 -2
  42. package/lib/{customized-link-DnaZxeKK.mjs.map → customized-link-DNKmWI0u.mjs.map} +1 -1
  43. package/lib/{customized-link-DqW2a8oZ.js → customized-link-XNoMkeYw.js} +3 -3
  44. package/lib/{customized-link-DqW2a8oZ.js.map → customized-link-XNoMkeYw.js.map} +1 -1
  45. package/lib/divider/constants.d.mts +2 -2
  46. package/lib/divider/constants.js +1 -1
  47. package/lib/divider/constants.mjs +1 -1
  48. package/lib/divider/index.d.mts +2 -2
  49. package/lib/divider/index.js +2 -2
  50. package/lib/divider/index.mjs +2 -2
  51. package/lib/{divider-CE4u6SR5.mjs → divider-CEIxmAsH.mjs} +2 -2
  52. package/lib/{divider-CE4u6SR5.mjs.map → divider-CEIxmAsH.mjs.map} +1 -1
  53. package/lib/{divider-B1zvSjNJ.js → divider-Db3AhImD.js} +2 -2
  54. package/lib/{divider-B1zvSjNJ.js.map → divider-Db3AhImD.js.map} +1 -1
  55. package/lib/dropdown-menu/index.d.mts +1 -1
  56. package/lib/dropdown-menu/index.js +4 -4
  57. package/lib/dropdown-menu/index.mjs +3 -3
  58. package/lib/{dropdown-menu-D7VNOiIl.mjs → dropdown-menu-CuyS5r71.mjs} +2 -2
  59. package/lib/{dropdown-menu-D7VNOiIl.mjs.map → dropdown-menu-CuyS5r71.mjs.map} +1 -1
  60. package/lib/{dropdown-menu-BAqmP8qa.js → dropdown-menu-tbV9rhnw.js} +3 -3
  61. package/lib/{dropdown-menu-BAqmP8qa.js.map → dropdown-menu-tbV9rhnw.js.map} +1 -1
  62. package/lib/{external-link-DoBTwlV3.js → external-link-BMrkjNyi.js} +1 -1
  63. package/lib/{external-link-DoBTwlV3.js.map → external-link-BMrkjNyi.js.map} +1 -1
  64. package/lib/{external-link-DXT5ep5-.mjs → external-link-BykRRwmY.mjs} +1 -1
  65. package/lib/{external-link-DXT5ep5-.mjs.map → external-link-BykRRwmY.mjs.map} +1 -1
  66. package/lib/{external-link-goP_Ay-S.d.mts → external-link-khVeTReZ.d.mts} +2 -2
  67. package/lib/hamburger-menu/index.js +12 -9
  68. package/lib/hamburger-menu/index.mjs +11 -8
  69. package/lib/{hamburger-menu-DOrmybn_.mjs → hamburger-menu-Ca6QMgF9.mjs} +43 -35
  70. package/lib/hamburger-menu-Ca6QMgF9.mjs.map +1 -0
  71. package/lib/{hamburger-menu-DNfJ2jMA.js → hamburger-menu-qrLPGpHF.js} +44 -36
  72. package/lib/hamburger-menu-qrLPGpHF.js.map +1 -0
  73. package/lib/header/index.d.mts +3 -3
  74. package/lib/header/index.js +58 -17
  75. package/lib/header/index.js.map +1 -1
  76. package/lib/header/index.mjs +57 -16
  77. package/lib/header/index.mjs.map +1 -1
  78. package/lib/{heading-BSEtBLuY.mjs → heading-BWuXn7wB.mjs} +1 -1
  79. package/lib/{heading-BSEtBLuY.mjs.map → heading-BWuXn7wB.mjs.map} +1 -1
  80. package/lib/{heading-CNS7rJIc.js → heading-DJepEhoE.js} +1 -1
  81. package/lib/{heading-CNS7rJIc.js.map → heading-DJepEhoE.js.map} +1 -1
  82. package/lib/hooks/index.d.mts +10 -0
  83. package/lib/hooks/index.d.ts +10 -0
  84. package/lib/hooks/index.js +6 -0
  85. package/lib/hooks/index.mjs +4 -0
  86. package/lib/hooks/use-outside-click.d.mts +2 -0
  87. package/lib/hooks/use-outside-click.d.ts +2 -0
  88. package/lib/hooks/use-outside-click.js +3 -0
  89. package/lib/hooks/use-outside-click.mjs +3 -0
  90. package/lib/hooks-DFV2v01e.mjs +8 -0
  91. package/lib/hooks-DFV2v01e.mjs.map +1 -0
  92. package/lib/hooks-Mt5N4Z2W.js +13 -0
  93. package/lib/hooks-Mt5N4Z2W.js.map +1 -0
  94. package/lib/icons/constants.d.mts +2 -2
  95. package/lib/icons/constants.d.ts +1 -1
  96. package/lib/icons/index.d.mts +3 -3
  97. package/lib/icons/index.d.ts +1 -1
  98. package/lib/{index-CYb6xr3M.d.mts → index-DaRD2S-9.d.mts} +1 -1
  99. package/lib/input/constants.d.mts +3 -0
  100. package/lib/input/constants.d.ts +3 -0
  101. package/lib/input/constants.js +5 -0
  102. package/lib/input/constants.mjs +3 -0
  103. package/lib/input/index.d.mts +44 -0
  104. package/lib/input/index.d.ts +44 -0
  105. package/lib/input/index.js +15 -0
  106. package/lib/input/index.mjs +13 -0
  107. package/lib/input/theme.d.mts +16 -0
  108. package/lib/input/theme.d.ts +16 -0
  109. package/lib/input/theme.js +4 -0
  110. package/lib/input/theme.mjs +4 -0
  111. package/lib/input-_Hl5B4_K.mjs +73 -0
  112. package/lib/input-_Hl5B4_K.mjs.map +1 -0
  113. package/lib/input-czWOItrW.js +88 -0
  114. package/lib/input-czWOItrW.js.map +1 -0
  115. package/lib/{internal-link-B9ExuJfg.js → internal-link-BLXTBMRq.js} +1 -1
  116. package/lib/{internal-link-B9ExuJfg.js.map → internal-link-BLXTBMRq.js.map} +1 -1
  117. package/lib/{internal-link-Ciu7CWSY.d.mts → internal-link-BSb3__eR.d.mts} +2 -2
  118. package/lib/logo/constants.d.mts +2 -2
  119. package/lib/logo/constants.d.ts +1 -1
  120. package/lib/logo/index.d.mts +8 -8
  121. package/lib/logo/index.d.ts +6 -6
  122. package/lib/logo/index.js +1 -1
  123. package/lib/logo/index.mjs +1 -1
  124. package/lib/{logo-CuMjQGbj.js → logo-BTNfdxTv.js} +1 -1
  125. package/lib/{logo-CuMjQGbj.js.map → logo-BTNfdxTv.js.map} +1 -1
  126. package/lib/{logo-CxXblyO9.mjs → logo-D68VZ-fc.mjs} +1 -1
  127. package/lib/{logo-CxXblyO9.mjs.map → logo-D68VZ-fc.mjs.map} +1 -1
  128. package/lib/{release-branch-BqeBsvrl.d.mts → release-branch-8qGtkKtd.d.mts} +2 -2
  129. package/lib/styles.css +104 -9
  130. package/lib/tab-bar/constants.d.mts +3 -3
  131. package/lib/tab-bar/constants.js +1 -1
  132. package/lib/tab-bar/constants.mjs +1 -1
  133. package/lib/tab-bar/index.js +7 -7
  134. package/lib/tab-bar/index.mjs +6 -6
  135. package/lib/tab-bar/theme.d.mts +2 -2
  136. package/lib/tab-bar/theme.js +1 -1
  137. package/lib/tab-bar/theme.mjs +1 -1
  138. package/lib/{tab-bar-qKbhyjg-.js → tab-bar-Binq1EhQ.js} +7 -7
  139. package/lib/{tab-bar-qKbhyjg-.js.map → tab-bar-Binq1EhQ.js.map} +1 -1
  140. package/lib/{tab-bar-CdsxfUdk.mjs → tab-bar-BqiC7-Lw.mjs} +6 -6
  141. package/lib/{tab-bar-CdsxfUdk.mjs.map → tab-bar-BqiC7-Lw.mjs.map} +1 -1
  142. package/lib/text/constants.d.mts +2 -2
  143. package/lib/text/heading.d.mts +2 -2
  144. package/lib/text/heading.js +1 -1
  145. package/lib/text/heading.mjs +1 -1
  146. package/lib/text/paragraph.d.mts +2 -2
  147. package/lib/{theme-lCi6tmmS.d.mts → theme-B9CWW8U9.d.mts} +2 -2
  148. package/lib/{theme-W--MzZEH.js → theme-BOMyqC4d.js} +1 -1
  149. package/lib/{theme-W--MzZEH.js.map → theme-BOMyqC4d.js.map} +1 -1
  150. package/lib/theme-CIEkzycI.js +43 -0
  151. package/lib/theme-CIEkzycI.js.map +1 -0
  152. package/lib/theme-CkSx7UX3.mjs +38 -0
  153. package/lib/theme-CkSx7UX3.mjs.map +1 -0
  154. package/lib/{theme-DQCIQh_8.mjs → theme-PhMjSVv9.mjs} +1 -1
  155. package/lib/{theme-DQCIQh_8.mjs.map → theme-PhMjSVv9.mjs.map} +1 -1
  156. package/lib/title-bar/index.d.mts +4 -4
  157. package/lib/title-bar/index.d.ts +4 -4
  158. package/lib/title-bar/index.js +5 -5
  159. package/lib/title-bar/index.mjs +4 -4
  160. package/lib/{type-2Go0njwa.d.mts → type-4zpM3Fk5.d.mts} +1 -1
  161. package/lib/types/index.d.mts +1 -1
  162. package/lib/use-outside-click-436PXIeY.js +27 -0
  163. package/lib/use-outside-click-436PXIeY.js.map +1 -0
  164. package/lib/use-outside-click-Bz_v9VCq.mjs +20 -0
  165. package/lib/use-outside-click-Bz_v9VCq.mjs.map +1 -0
  166. package/lib/use-outside-click-CHxRFaTZ.d.ts +7 -0
  167. package/lib/use-outside-click-DToGSYRk.d.mts +7 -0
  168. package/package.json +2 -2
  169. package/lib/button-D50NHdly.js.map +0 -1
  170. package/lib/button-hDNHA85d.mjs.map +0 -1
  171. package/lib/hamburger-menu-DNfJ2jMA.js.map +0 -1
  172. package/lib/hamburger-menu-DOrmybn_.mjs.map +0 -1
@@ -1,3 +1,3 @@
1
- import "../index-CYb6xr3M.mjs";
2
- import { SIZE, STYLE, Size, Style, TYPE, Type } from "../constants-B6oiTL1L.mjs";
1
+ import "../index-DaRD2S-9.mjs";
2
+ import { SIZE, STYLE, Size, Style, TYPE, Type } from "../constants-C2kTkuiJ.mjs";
3
3
  export { SIZE, STYLE, Size, Style, TYPE, Type };
@@ -1,8 +1,8 @@
1
- import "../index-CYb6xr3M.mjs";
2
- import { SIZE, STYLE, Size, Style, TYPE, Type } from "../constants-B6oiTL1L.mjs";
3
- import { THEME, Theme } from "../theme-lCi6tmmS.mjs";
4
- import { WEIGHT, Weight } from "../constants-D-mBwgNQ.mjs";
5
- import * as react8 from "react";
1
+ import "../index-DaRD2S-9.mjs";
2
+ import { SIZE, STYLE, Size, Style, TYPE, Type } from "../constants-C2kTkuiJ.mjs";
3
+ import { THEME, Theme } from "../theme-B9CWW8U9.mjs";
4
+ import { WEIGHT, Weight } from "../constants-P65Nafg1.mjs";
5
+ import * as react0 from "react";
6
6
  import React$1, { FC, ReactElement } from "react";
7
7
 
8
8
  //#region src/button/components/text-button/index.d.ts
@@ -88,10 +88,10 @@ declare const IconWithTextButton: FC<IconWithTextButtonProps> & {
88
88
  //#endregion
89
89
  //#region src/button/index.d.ts
90
90
  declare const _default: {
91
- TextButton: react8.FC<{
91
+ TextButton: react0.FC<{
92
92
  text: string;
93
- leftIconComponent?: react8.ReactElement;
94
- rightIconComponent?: react8.ReactElement;
93
+ leftIconComponent?: react0.ReactElement;
94
+ rightIconComponent?: react0.ReactElement;
95
95
  size?: Size;
96
96
  style?: Style;
97
97
  theme?: Theme;
@@ -104,7 +104,7 @@ declare const _default: {
104
104
  Style: typeof STYLE;
105
105
  Theme: typeof THEME;
106
106
  };
107
- IconButton: react8.FC<{
107
+ IconButton: react0.FC<{
108
108
  iconComponent: React.ReactElement;
109
109
  theme?: Theme;
110
110
  type?: Type;
@@ -116,7 +116,7 @@ declare const _default: {
116
116
  Theme: typeof THEME;
117
117
  Type: typeof TYPE;
118
118
  };
119
- MenuButton: react8.FC<{
119
+ MenuButton: react0.FC<{
120
120
  text: string;
121
121
  color: string;
122
122
  fontWeight: Weight;
@@ -125,7 +125,7 @@ declare const _default: {
125
125
  }> & {
126
126
  FontWeight: typeof WEIGHT;
127
127
  };
128
- PillButton: react8.FC<{
128
+ PillButton: react0.FC<{
129
129
  text?: string;
130
130
  leftIconComponent?: React.ReactElement;
131
131
  rightIconComponent?: React.ReactElement;
@@ -142,7 +142,7 @@ declare const _default: {
142
142
  Size: typeof SIZE;
143
143
  Style: typeof STYLE;
144
144
  };
145
- IconWithTextButton: react8.FC<{
145
+ IconWithTextButton: react0.FC<{
146
146
  text?: string;
147
147
  iconComponent: React.ReactNode;
148
148
  theme?: Theme;
@@ -3,7 +3,7 @@ require('../constants-BmxSMOOn.js');
3
3
  require('../constants-Cndhv6qr.js');
4
4
  require('../paragraph-iuz3jP0Q.js');
5
5
  require('../theme-DDBlIbeS.js');
6
- const require_button = require('../button-D50NHdly.js');
6
+ const require_button = require('../button-Dk0MxlKd.js');
7
7
 
8
8
  exports.IconButton = require_button.icon_button_default;
9
9
  exports.IconWithTextButton = require_button.icon_with_text_button_default;
@@ -2,6 +2,6 @@ import "../constants-oTHAnh6r.mjs";
2
2
  import "../constants-CBSEPx91.mjs";
3
3
  import "../paragraph-Cf9jr8RF.mjs";
4
4
  import "../theme-BG6yZVj-.mjs";
5
- import { button_default, icon_button_default, icon_with_text_button_default, menu_button_default, pill_button_default, text_button_default } from "../button-hDNHA85d.mjs";
5
+ import { button_default, icon_button_default, icon_with_text_button_default, menu_button_default, pill_button_default, text_button_default } from "../button-D_AWI7r9.mjs";
6
6
 
7
7
  export { icon_button_default as IconButton, icon_with_text_button_default as IconWithTextButton, menu_button_default as MenuButton, pill_button_default as PillButton, text_button_default as TextButton, button_default as default };
@@ -139,9 +139,14 @@ const getSecondaryIconButtonTheme = (theme, active, disabled) => {
139
139
  //#region src/button/components/icon-button/index.tsx
140
140
  const IconButton = ({ iconComponent, theme = THEME.normal, type = TYPE.primary, disabled = false, active = false, className = "", onClick = () => {} }) => {
141
141
  const themeClass = type === TYPE.primary ? getPrimaryIconButtonTheme(theme, active, disabled) : getSecondaryIconButtonTheme(theme, active, disabled);
142
+ const handleClick = (e) => {
143
+ if (disabled) return;
144
+ e.stopPropagation();
145
+ onClick(e);
146
+ };
142
147
  return /* @__PURE__ */ jsx("button", {
143
148
  className: clsx("flex", "[&>svg]:w-[24px] [&>svg]:h-[24px]", disabled ? "cursor-default" : "cursor-pointer", themeClass, className),
144
- onClick: disabled ? () => {} : onClick,
149
+ onClick: handleClick,
145
150
  type: "button",
146
151
  children: iconComponent
147
152
  });
@@ -560,6 +565,7 @@ const IconWithTextButton = ({ text = "", iconComponent, theme = THEME.normal, di
560
565
  const { color, hoverColor, svgBgColor, svgHoverBgColor } = getIconWithTextButtonTheme(theme, active, disabled);
561
566
  const handleClick = (e) => {
562
567
  if (disabled) return;
568
+ e.stopPropagation();
563
569
  onClick(e);
564
570
  };
565
571
  return /* @__PURE__ */ jsxs("button", {
@@ -588,4 +594,4 @@ var button_default = {
588
594
 
589
595
  //#endregion
590
596
  export { button_default, icon_button_default, icon_with_text_button_default, menu_button_default, pill_button_default, text_button_default };
591
- //# sourceMappingURL=button-hDNHA85d.mjs.map
597
+ //# sourceMappingURL=button-D_AWI7r9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-D_AWI7r9.mjs","names":["getDisabledContainerTheme: ThemeFunc","getActiveContainerTheme: ThemeFunc","getContainerTheme: ThemeFunc","TextButton: FC<TextButtonProps> & {\n Size: typeof SIZE\n Style: typeof STYLE\n Theme: typeof THEME\n}","getPrimaryIconButtonTheme: ThemeFunc","getSecondaryIconButtonTheme: ThemeFunc","IconButton: React.FC<IconButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n}","MenuButton: React.FC<MenuButtonProps> & { FontWeight: typeof WEIGHT }","PillButton: FC<PillButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n Size: typeof SIZE\n Style: typeof STYLE\n}","IconWithTextButton: FC<IconWithTextButtonProps> & {\n Theme: typeof THEME\n}"],"sources":["../src/button/components/text-button/theme.ts","../src/button/components/text-button/index.tsx","../src/button/components/icon-button/theme.ts","../src/button/components/icon-button/index.tsx","../src/button/components/menu-button/index.tsx","../src/button/components/pill-button/theme.ts","../src/button/components/pill-button/index.tsx","../src/button/components/icon-with-text-button/theme.ts","../src/button/components/icon-with-text-button/index.tsx","../src/button/index.ts"],"sourcesContent":["// theme\nimport { THEME, type Theme } from '../../../constants/theme'\n// type\nimport type { ClassArray } from 'clsx'\n// constants\nimport { STYLE, type Style } from '../../constants'\n\ntype ThemeFunc = (theme: Theme, style?: Style) => ClassArray\n\nexport const getDisabledContainerTheme: ThemeFunc = (theme) => {\n return [\n // default theme\n 'text-gray-400 hover:text-gray-400',\n // photography & transparent theme\n {\n 'text-gray-500 hover:text-gray-500':\n theme === THEME.photography || theme === THEME.transparent,\n },\n ]\n}\n\nexport const getActiveContainerTheme: ThemeFunc = (theme, style) => {\n return [\n // default theme\n {\n 'text-gray-800 hover:text-gray-800': style === STYLE.light,\n 'text-brand-heavy hover:text-brand-heavy': style === STYLE.dark,\n 'text-brand-dark hover:text-brand-dark': style === STYLE.brand,\n },\n // photography theme\n {\n 'text-gray-400 hover:text-gray-400':\n theme === THEME.photography && style === STYLE.light,\n 'text-supportive-pastel hover:text-supportive-pastel':\n theme === THEME.photography && style !== STYLE.light,\n },\n // transparent theme\n {\n 'text-gray-black hover:text-gray-black':\n theme === THEME.transparent && style === STYLE.light,\n 'text-gray-200 hover:text-gray-200':\n theme === THEME.transparent && style !== STYLE.light,\n },\n ]\n}\n\nexport const getContainerTheme: ThemeFunc = (theme, style) => {\n return [\n // default theme\n {\n 'text-gray-600 hover:text-gray-800': style === STYLE.light,\n 'text-gray-800 hover:text-brand-heavy': style === STYLE.dark,\n 'text-brand-heavy hover:text-brand-dark': style === STYLE.brand,\n },\n // photography\n {\n 'text-gray-300 hover:text-gray-400':\n theme === THEME.photography && style === STYLE.light,\n 'text-gray-white hover:text-supportive-pastel':\n theme === THEME.photography && style === STYLE.dark,\n 'text-supportive-faded hover:text-supportive-pastel':\n theme === THEME.photography && style === STYLE.brand,\n },\n // transparent theme\n {\n 'text-gray-800 hover:text-gray-black':\n theme === THEME.transparent && style === STYLE.light,\n 'text-gray-white hover:text-gray-200':\n theme === THEME.transparent && style !== STYLE.light,\n },\n ]\n}\n","import { type FC, type ReactElement, useMemo } from 'react'\nimport clsx from 'clsx'\n// components\nimport { P1, P2 } from '../../../text/paragraph'\n// constants\nimport { SIZE, type Size, STYLE, type Style } from '../../constants'\nimport { THEME, type Theme } from '../../../constants/theme'\n// utils\nimport {\n getContainerTheme,\n getActiveContainerTheme,\n getDisabledContainerTheme,\n} from './theme'\n\ntype TextButtonProps = {\n text: string\n leftIconComponent?: ReactElement\n rightIconComponent?: ReactElement\n size?: Size\n style?: Style\n theme?: Theme\n active?: boolean\n disabled?: boolean\n loading?: boolean\n className?: string\n}\nconst TextButton: FC<TextButtonProps> & {\n Size: typeof SIZE\n Style: typeof STYLE\n Theme: typeof THEME\n} = ({\n text,\n leftIconComponent,\n rightIconComponent,\n size = SIZE.s,\n theme = THEME.normal,\n style = STYLE.dark,\n active = false,\n disabled = false,\n loading = false,\n className = '',\n}) => {\n const TextJSX = useMemo(\n () =>\n size === SIZE.s ? (\n <P2 text={text} weight={P2.Weight.bold} />\n ) : (\n <P1 text={text} weight={P1.Weight.bold} />\n ),\n [size, text]\n )\n const themeClass = useMemo(() => {\n const themeFunc = disabled\n ? getDisabledContainerTheme\n : active\n ? getActiveContainerTheme\n : getContainerTheme\n return themeFunc(theme, style)\n }, [disabled, active, theme, style])\n\n return (\n <div\n className={clsx(\n 'flex items-center',\n {\n 'cursor-default': disabled,\n 'cursor-pointer': !disabled,\n },\n themeClass,\n className\n )}\n >\n <div className=\"relative flex justify-center items-center\">\n <div\n className={clsx('flex justify-center items-center', {\n 'opacity-0': loading,\n 'opacity-100': !loading,\n })}\n >\n <div className=\"flex items-center mr-[4px]\">{leftIconComponent}</div>\n {TextJSX}\n <div className=\"flex items-center ml-[4px]\">{rightIconComponent}</div>\n </div>\n <span\n className={clsx(\n 'inline-block absolute box-border animate-spin',\n 'border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]',\n {\n 'size-[18px]': size === SIZE.s,\n 'size-[24px]': size === SIZE.l,\n },\n {\n 'opacity-0': !loading,\n 'opacity-100': loading,\n }\n )}\n />\n </div>\n </div>\n )\n}\nTextButton.Size = SIZE\nTextButton.Style = STYLE\nTextButton.Theme = THEME\n\nexport default TextButton\n","// constants\nimport { THEME, type Theme } from '../../../constants/theme'\n// type\nimport type { ClassArray } from 'clsx'\n\ntype ThemeFunc = (\n theme: Theme,\n active: boolean,\n disabled: boolean\n) => ClassArray\n\nexport const getPrimaryIconButtonTheme: ThemeFunc = (\n theme,\n active,\n disabled\n) => {\n if (disabled) {\n return ['text-gray-400 hover:text-gray-400']\n }\n return [\n // default theme\n 'text-gray-600 hover:text-gray-800 [&>svg]:bg-gray-600 desktop:[&>svg]:hover:bg-gray-800',\n {\n 'text-brand-heavy hover:text-brand-heavy [&>svg]:bg-brand-heavy desktop:[&>svg]:hover:bg-brand-heavy':\n theme === THEME.normal && active,\n },\n // photography theme\n {\n 'text-gray-white hover:text-supportive-pastel [&>svg]:bg-gray-white [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && !active,\n 'text-supportive-pastel hover:text-supportive-pastel [&>svg]:bg-supportive-pastel [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && active,\n },\n // transparent theme\n {\n 'text-gray-white hover:text-gray-200 [&>svg]:bg-gray-white [&>svg]:hover:bg-gray-200':\n theme === THEME.transparent && !active,\n 'text-gray-white hover:text-gray-white [&>svg]:bg-gray-white [&>svg]:hover:bg-gray-white':\n theme === THEME.transparent && active,\n },\n ]\n}\n\nexport const getSecondaryIconButtonTheme: ThemeFunc = (\n theme,\n active,\n disabled\n) => {\n if (disabled) {\n return ['text-gray-400 hover:text-gray-400']\n }\n return [\n // default theme\n 'text-gray-400 hover:text-gray-600 [&>svg]:bg-gray-400 [&>svg]:hover:bg-gray-600',\n {\n 'text-brand-heavy hover:text-brand-heavy [&>svg]:bg-brand-heavy [&>svg]:hover:bg-brand-heavy':\n theme === THEME.normal && active,\n },\n // photography theme\n {\n 'text-gray-400 hover:text-supportive-pastel [&>svg]:bg-gray-400 [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && !active,\n 'text-supportive-pastel hover:text-supportive-pastel [&>svg]:bg-supportive-pastel [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && active,\n },\n // transparent theme\n {\n 'text-gray-600 hover:text-gray-white [&>svg]:bg-gray-600 [&>svg]:hover:bg-gray-white':\n theme === THEME.transparent && !active,\n 'text-gray-600 hover:text-gray-600 [&>svg]:bg-gray-600 [&>svg]:hover:bg-gray-600':\n theme === THEME.transparent && active,\n },\n ]\n}\n","import type React from 'react'\nimport clsx from 'clsx'\n// constants\nimport { THEME, type Theme } from '../../../constants/theme'\nimport { TYPE, type Type } from '../../constants'\n// theme\nimport { getPrimaryIconButtonTheme, getSecondaryIconButtonTheme } from './theme'\n\ntype IconButtonProps = {\n iconComponent: React.ReactElement\n theme?: Theme\n type?: Type\n disabled?: boolean\n active?: boolean\n className?: string\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\nconst IconButton: React.FC<IconButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n} = ({\n iconComponent,\n theme = THEME.normal,\n type = TYPE.primary,\n disabled = false,\n active = false,\n className = '',\n onClick = () => {},\n}) => {\n const themeClass =\n type === TYPE.primary\n ? getPrimaryIconButtonTheme(theme, active, disabled)\n : getSecondaryIconButtonTheme(theme, active, disabled)\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return\n }\n e.stopPropagation()\n onClick(e)\n }\n return (\n <button\n className={clsx(\n 'flex',\n '[&>svg]:w-[24px] [&>svg]:h-[24px]',\n disabled ? 'cursor-default' : 'cursor-pointer',\n themeClass,\n className\n )}\n onClick={handleClick}\n type=\"button\"\n >\n {iconComponent}\n </button>\n )\n}\n\nIconButton.Theme = THEME\nIconButton.Type = TYPE\n\nexport default IconButton\n","import type React from 'react'\nimport clsx from 'clsx'\n// P1\nimport { P1 } from '../../../text/paragraph'\nimport { WEIGHT, type Weight } from '../../../text/constants'\n\ntype MenuButtonProps = {\n text: string\n color: string\n fontWeight: Weight\n className?: string\n p1ClassName?: string\n}\nconst MenuButton: React.FC<MenuButtonProps> & { FontWeight: typeof WEIGHT } = ({\n text,\n color,\n fontWeight,\n className = '',\n p1ClassName = '',\n}) => {\n return (\n <div className={clsx('cursor-pointer', color, className)}>\n <P1\n text={text}\n weight={fontWeight}\n className={clsx('py-[8px]', p1ClassName)}\n />\n </div>\n )\n}\nMenuButton.FontWeight = WEIGHT\n\nexport default MenuButton\n","import { THEME, type Theme } from '../../../constants/theme'\nimport { STYLE, type Style } from '../../constants'\n\nexport const getFilledPillButtonTheme = (\n theme: Theme,\n disabled: boolean,\n style: Style\n) => {\n if (disabled) {\n switch (theme) {\n case THEME.transparent:\n switch (style) {\n case STYLE.light:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n default:\n return {\n color: 'text-gray-700',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-700',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-700',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n }\n case THEME.photography:\n return {\n color: 'text-gray-700',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-700',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-700',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-700',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n }\n }\n switch (theme) {\n case THEME.photography:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n case STYLE.light:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n default:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-supportive-faded',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-supportive-pastel',\n borderColor: 'border-supportive-faded',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-supportive-pastel',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n }\n case THEME.transparent:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n case STYLE.light:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n default:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n }\n default:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-brand-heavy',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-brand-dark',\n borderColor: 'border-brand-heavy',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-brand-dark',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n }\n }\n}\n\nexport const getOutlinePillButtonTheme = (\n theme: Theme,\n disabled: boolean,\n style: Style\n) => {\n if (disabled) {\n switch (theme) {\n case THEME.transparent:\n switch (style) {\n case STYLE.light:\n return {\n color: 'text-gray-400',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n default:\n return {\n color: 'text-gray-500',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-500',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-500',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n }\n case THEME.photography:\n return {\n color: 'text-gray-500',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-500',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-500',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n default:\n return {\n color: 'text-gray-400',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n }\n }\n\n switch (theme) {\n case THEME.photography:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-200',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-200',\n }\n case STYLE.light:\n return {\n color: 'text-gray-300',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-300',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n default:\n return {\n color: 'text-supportive-faded',\n bgColor: 'bg-supportive-faded',\n hoverColor: 'hover:text-supportive-pastel',\n hoverBgColor: 'hover:bg-supportive-pastel',\n borderColor: 'border-supportive-faded',\n svgBgColor: '[&>svg]:bg-supportive-faded',\n borderHoverColor: 'hover:border-supportive-pastel',\n svgHoverBgColor: 'hover:[&>svg]:bg-supportive-pastel',\n }\n }\n case THEME.transparent:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-300',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-300',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-black',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-black',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-200',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-200',\n }\n }\n default:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-black',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-black',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n default:\n return {\n color: 'text-brand-heavy',\n bgColor: 'bg-brand-heavy',\n hoverColor: 'hover:text-brand-dark',\n hoverBgColor: 'hover:bg-brand-dark',\n borderColor: 'border-brand-heavy',\n svgBgColor: '[&>svg]:bg-brand-heavy',\n borderHoverColor: 'hover:border-brand-dark',\n svgHoverBgColor: 'hover:[&>svg]:bg-brand-dark',\n }\n }\n }\n}\n","import { useMemo, type FC } from 'react'\nimport clsx from 'clsx'\n// text\nimport { P1, P2 } from '../../../text/paragraph'\n// constants\nimport {\n SIZE,\n type Size,\n STYLE,\n type Style,\n TYPE,\n type Type,\n} from '../../constants'\nimport { THEME, type Theme } from '../../../constants/theme'\n// theme\nimport { getFilledPillButtonTheme, getOutlinePillButtonTheme } from './theme'\n\ntype PillButtonProps = {\n text?: string\n leftIconComponent?: React.ReactElement\n rightIconComponent?: React.ReactElement\n size?: Size\n theme?: Theme\n type?: Type\n style?: Style\n disabled?: boolean\n loading?: boolean\n className?: string\n}\nconst PillButton: FC<PillButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n Size: typeof SIZE\n Style: typeof STYLE\n} = ({\n text = '',\n leftIconComponent = null,\n rightIconComponent = null,\n size = SIZE.s,\n theme = THEME.normal,\n type = TYPE.primary,\n style = STYLE.brand,\n disabled = false,\n loading = false,\n className = '',\n}) => {\n const themeFunc =\n type === TYPE.primary ? getFilledPillButtonTheme : getOutlinePillButtonTheme\n const {\n color,\n bgColor,\n hoverColor,\n hoverBgColor,\n borderColor,\n svgBgColor,\n borderHoverColor,\n svgHoverBgColor,\n } = themeFunc(theme, disabled, style)\n\n const padding = size === SIZE.s ? 'py-[4px] px-[12px]' : 'py-[8px] px-[16px]'\n const iconSize =\n size === SIZE.s\n ? '[&>svg]:h-[18px] [&>svg]:w-[18px]'\n : '[&>svg]:h-[24px] [&>svg]:w-[24px]'\n\n const TextJSX = useMemo(\n () =>\n size === SIZE.s ? (\n <P2 text={text} weight={P2.Weight.bold} />\n ) : (\n <P1 text={text} weight={P1.Weight.bold} />\n ),\n [size, text]\n )\n\n return (\n <div\n className={clsx(\n 'w-fit flex items-center rounded-[40px] border-solid border-[1.5px]',\n borderColor,\n color,\n padding,\n disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer',\n type === TYPE.primary ? bgColor : 'bg-transparent',\n iconSize,\n svgBgColor,\n hoverColor,\n type === TYPE.primary ? hoverBgColor : 'bg-transparent',\n borderHoverColor,\n svgHoverBgColor,\n className\n )}\n >\n <div className=\"relative flex justify-center items-center\">\n <div\n className={clsx('flex justify-center items-center', {\n 'opacity-0': loading,\n 'opacity-100': !loading,\n })}\n >\n {leftIconComponent ? (\n <div className=\"flex items-center mr-[4px]\">\n {leftIconComponent}\n </div>\n ) : null}\n {TextJSX}\n {rightIconComponent ? (\n <div className=\"flex items-center ml-[4px]\">\n {rightIconComponent}\n </div>\n ) : null}\n </div>\n <span\n className={clsx(\n 'inline-block absolute box-border animate-spin',\n 'border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]',\n {\n 'size-[18px]': size === SIZE.s,\n 'size-[24px]': size === SIZE.l,\n },\n {\n 'opacity-0': !loading,\n 'opacity-100': loading,\n }\n )}\n />\n </div>\n </div>\n )\n}\nPillButton.Theme = THEME\nPillButton.Type = TYPE\nPillButton.Size = SIZE\nPillButton.Style = STYLE\n\nexport default PillButton\n","import { THEME, type Theme } from '../../../constants/theme'\n\nexport const getIconWithTextButtonTheme = (\n theme: Theme,\n isActive: boolean,\n isDisabled: boolean\n) => {\n if (isDisabled) {\n return {\n color: 'text-gray-400',\n hoverColor: 'hover:text-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-400',\n }\n }\n\n const switchKey = isActive ? `${theme}-active` : theme\n switch (switchKey) {\n case THEME.photography:\n return {\n color: 'text-gray-200',\n hoverColor: 'hover:text-supportive-pastel',\n svgBgColor: '[&>svg]:bg-gray-200',\n svgHoverBgColor: '[&>svg]:hover:bg-supportive-pastel',\n }\n case `${THEME.photography}-active`:\n return {\n color: 'text-supportive-pastel',\n hoverColor: 'hover:text-supportive-pastel',\n svgBgColor: '[&>svg]:bg-supportive-pastel',\n svgHoverBgColor: '[&>svg]:hover:bg-supportive-pastel',\n }\n case THEME.transparent:\n return {\n color: 'text-gray-100',\n hoverColor: 'hover:text-gray-200',\n svgBgColor: '[&>svg]:bg-gray-100',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-200',\n }\n case `${THEME.transparent}-active`:\n return {\n color: 'text-gray-white',\n hoverColor: 'hover:text-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-white',\n }\n case `${THEME.normal}-active`:\n return {\n color: 'text-brand-heavy',\n hoverColor: 'hover:text-brand-heavy',\n svgBgColor: '[&>svg]:bg-brand-heavy',\n svgHoverBgColor: '[&>svg]:hover:bg-brand-heavy',\n }\n default:\n return {\n color: 'text-gray-600',\n hoverColor: 'hover:text-brand-heavy',\n svgBgColor: '[&>svg]:bg-gray-600',\n svgHoverBgColor: '[&>svg]:hover:bg-brand-heavy',\n }\n }\n}\n","import type { FC } from 'react'\nimport clsx from 'clsx'\n// constants\nimport { THEME, type Theme } from '../../../constants/theme'\n// theme\nimport { getIconWithTextButtonTheme } from './theme'\n// text\nimport { P4 } from '../../../text/paragraph'\n\ntype IconWithTextButtonProps = {\n text?: string\n iconComponent: React.ReactNode\n theme?: Theme\n disabled?: boolean\n active?: boolean\n hideText?: boolean\n className?: string\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\nconst IconWithTextButton: FC<IconWithTextButtonProps> & {\n Theme: typeof THEME\n} = ({\n text = '',\n iconComponent,\n theme = THEME.normal,\n disabled = false,\n active = false,\n hideText = false,\n className = '',\n onClick = () => {},\n}) => {\n const { color, hoverColor, svgBgColor, svgHoverBgColor } =\n getIconWithTextButtonTheme(theme, active, disabled)\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return\n }\n e.stopPropagation()\n onClick(e)\n }\n return (\n <button\n className={clsx(\n 'flex flex-col items-center',\n '[&>svg]:w-[24px] [&>svg]:h-[24px]',\n color,\n hoverColor,\n svgBgColor,\n svgHoverBgColor,\n disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n type=\"button\"\n onClick={handleClick}\n >\n {iconComponent}\n <P4\n text={text}\n weight={P4.Weight.normal}\n className={clsx(\n 'mt-[2px] transition-opacity duration-[100ms]',\n hideText ? 'opacity-0' : 'opacity-100',\n hideText ? 'max-h-0' : 'max-h-none'\n )}\n />\n </button>\n )\n}\nIconWithTextButton.Theme = THEME\nexport default IconWithTextButton\n","import TextButton from './components/text-button'\nimport IconButton from './components/icon-button'\nimport MenuButton from './components/menu-button'\nimport PillButton from './components/pill-button'\nimport IconWithTextButton from './components/icon-with-text-button'\n\nexport { TextButton, IconButton, MenuButton, PillButton, IconWithTextButton }\n\nexport default {\n TextButton,\n IconButton,\n MenuButton,\n PillButton,\n IconWithTextButton,\n}\n"],"mappings":"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"}
@@ -143,9 +143,14 @@ const getSecondaryIconButtonTheme = (theme, active, disabled) => {
143
143
  //#region src/button/components/icon-button/index.tsx
144
144
  const IconButton = ({ iconComponent, theme = require_theme.THEME.normal, type = require_constants.TYPE.primary, disabled = false, active = false, className = "", onClick = () => {} }) => {
145
145
  const themeClass = type === require_constants.TYPE.primary ? getPrimaryIconButtonTheme(theme, active, disabled) : getSecondaryIconButtonTheme(theme, active, disabled);
146
+ const handleClick = (e) => {
147
+ if (disabled) return;
148
+ e.stopPropagation();
149
+ onClick(e);
150
+ };
146
151
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
147
152
  className: (0, clsx.default)("flex", "[&>svg]:w-[24px] [&>svg]:h-[24px]", disabled ? "cursor-default" : "cursor-pointer", themeClass, className),
148
- onClick: disabled ? () => {} : onClick,
153
+ onClick: handleClick,
149
154
  type: "button",
150
155
  children: iconComponent
151
156
  });
@@ -564,6 +569,7 @@ const IconWithTextButton = ({ text = "", iconComponent, theme = require_theme.TH
564
569
  const { color, hoverColor, svgBgColor, svgHoverBgColor } = getIconWithTextButtonTheme(theme, active, disabled);
565
570
  const handleClick = (e) => {
566
571
  if (disabled) return;
572
+ e.stopPropagation();
567
573
  onClick(e);
568
574
  };
569
575
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -627,4 +633,4 @@ Object.defineProperty(exports, 'text_button_default', {
627
633
  return text_button_default;
628
634
  }
629
635
  });
630
- //# sourceMappingURL=button-D50NHdly.js.map
636
+ //# sourceMappingURL=button-Dk0MxlKd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-Dk0MxlKd.js","names":["getDisabledContainerTheme: ThemeFunc","THEME","getActiveContainerTheme: ThemeFunc","STYLE","getContainerTheme: ThemeFunc","TextButton: FC<TextButtonProps> & {\n Size: typeof SIZE\n Style: typeof STYLE\n Theme: typeof THEME\n}","SIZE","THEME","STYLE","P2","P1","getPrimaryIconButtonTheme: ThemeFunc","THEME","getSecondaryIconButtonTheme: ThemeFunc","IconButton: React.FC<IconButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n}","THEME","TYPE","MenuButton: React.FC<MenuButtonProps> & { FontWeight: typeof WEIGHT }","P1","WEIGHT","THEME","STYLE","PillButton: FC<PillButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n Size: typeof SIZE\n Style: typeof STYLE\n}","SIZE","THEME","TYPE","STYLE","P2","P1","THEME","IconWithTextButton: FC<IconWithTextButtonProps> & {\n Theme: typeof THEME\n}","THEME","P4"],"sources":["../src/button/components/text-button/theme.ts","../src/button/components/text-button/index.tsx","../src/button/components/icon-button/theme.ts","../src/button/components/icon-button/index.tsx","../src/button/components/menu-button/index.tsx","../src/button/components/pill-button/theme.ts","../src/button/components/pill-button/index.tsx","../src/button/components/icon-with-text-button/theme.ts","../src/button/components/icon-with-text-button/index.tsx","../src/button/index.ts"],"sourcesContent":["// theme\nimport { THEME, type Theme } from '../../../constants/theme'\n// type\nimport type { ClassArray } from 'clsx'\n// constants\nimport { STYLE, type Style } from '../../constants'\n\ntype ThemeFunc = (theme: Theme, style?: Style) => ClassArray\n\nexport const getDisabledContainerTheme: ThemeFunc = (theme) => {\n return [\n // default theme\n 'text-gray-400 hover:text-gray-400',\n // photography & transparent theme\n {\n 'text-gray-500 hover:text-gray-500':\n theme === THEME.photography || theme === THEME.transparent,\n },\n ]\n}\n\nexport const getActiveContainerTheme: ThemeFunc = (theme, style) => {\n return [\n // default theme\n {\n 'text-gray-800 hover:text-gray-800': style === STYLE.light,\n 'text-brand-heavy hover:text-brand-heavy': style === STYLE.dark,\n 'text-brand-dark hover:text-brand-dark': style === STYLE.brand,\n },\n // photography theme\n {\n 'text-gray-400 hover:text-gray-400':\n theme === THEME.photography && style === STYLE.light,\n 'text-supportive-pastel hover:text-supportive-pastel':\n theme === THEME.photography && style !== STYLE.light,\n },\n // transparent theme\n {\n 'text-gray-black hover:text-gray-black':\n theme === THEME.transparent && style === STYLE.light,\n 'text-gray-200 hover:text-gray-200':\n theme === THEME.transparent && style !== STYLE.light,\n },\n ]\n}\n\nexport const getContainerTheme: ThemeFunc = (theme, style) => {\n return [\n // default theme\n {\n 'text-gray-600 hover:text-gray-800': style === STYLE.light,\n 'text-gray-800 hover:text-brand-heavy': style === STYLE.dark,\n 'text-brand-heavy hover:text-brand-dark': style === STYLE.brand,\n },\n // photography\n {\n 'text-gray-300 hover:text-gray-400':\n theme === THEME.photography && style === STYLE.light,\n 'text-gray-white hover:text-supportive-pastel':\n theme === THEME.photography && style === STYLE.dark,\n 'text-supportive-faded hover:text-supportive-pastel':\n theme === THEME.photography && style === STYLE.brand,\n },\n // transparent theme\n {\n 'text-gray-800 hover:text-gray-black':\n theme === THEME.transparent && style === STYLE.light,\n 'text-gray-white hover:text-gray-200':\n theme === THEME.transparent && style !== STYLE.light,\n },\n ]\n}\n","import { type FC, type ReactElement, useMemo } from 'react'\nimport clsx from 'clsx'\n// components\nimport { P1, P2 } from '../../../text/paragraph'\n// constants\nimport { SIZE, type Size, STYLE, type Style } from '../../constants'\nimport { THEME, type Theme } from '../../../constants/theme'\n// utils\nimport {\n getContainerTheme,\n getActiveContainerTheme,\n getDisabledContainerTheme,\n} from './theme'\n\ntype TextButtonProps = {\n text: string\n leftIconComponent?: ReactElement\n rightIconComponent?: ReactElement\n size?: Size\n style?: Style\n theme?: Theme\n active?: boolean\n disabled?: boolean\n loading?: boolean\n className?: string\n}\nconst TextButton: FC<TextButtonProps> & {\n Size: typeof SIZE\n Style: typeof STYLE\n Theme: typeof THEME\n} = ({\n text,\n leftIconComponent,\n rightIconComponent,\n size = SIZE.s,\n theme = THEME.normal,\n style = STYLE.dark,\n active = false,\n disabled = false,\n loading = false,\n className = '',\n}) => {\n const TextJSX = useMemo(\n () =>\n size === SIZE.s ? (\n <P2 text={text} weight={P2.Weight.bold} />\n ) : (\n <P1 text={text} weight={P1.Weight.bold} />\n ),\n [size, text]\n )\n const themeClass = useMemo(() => {\n const themeFunc = disabled\n ? getDisabledContainerTheme\n : active\n ? getActiveContainerTheme\n : getContainerTheme\n return themeFunc(theme, style)\n }, [disabled, active, theme, style])\n\n return (\n <div\n className={clsx(\n 'flex items-center',\n {\n 'cursor-default': disabled,\n 'cursor-pointer': !disabled,\n },\n themeClass,\n className\n )}\n >\n <div className=\"relative flex justify-center items-center\">\n <div\n className={clsx('flex justify-center items-center', {\n 'opacity-0': loading,\n 'opacity-100': !loading,\n })}\n >\n <div className=\"flex items-center mr-[4px]\">{leftIconComponent}</div>\n {TextJSX}\n <div className=\"flex items-center ml-[4px]\">{rightIconComponent}</div>\n </div>\n <span\n className={clsx(\n 'inline-block absolute box-border animate-spin',\n 'border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]',\n {\n 'size-[18px]': size === SIZE.s,\n 'size-[24px]': size === SIZE.l,\n },\n {\n 'opacity-0': !loading,\n 'opacity-100': loading,\n }\n )}\n />\n </div>\n </div>\n )\n}\nTextButton.Size = SIZE\nTextButton.Style = STYLE\nTextButton.Theme = THEME\n\nexport default TextButton\n","// constants\nimport { THEME, type Theme } from '../../../constants/theme'\n// type\nimport type { ClassArray } from 'clsx'\n\ntype ThemeFunc = (\n theme: Theme,\n active: boolean,\n disabled: boolean\n) => ClassArray\n\nexport const getPrimaryIconButtonTheme: ThemeFunc = (\n theme,\n active,\n disabled\n) => {\n if (disabled) {\n return ['text-gray-400 hover:text-gray-400']\n }\n return [\n // default theme\n 'text-gray-600 hover:text-gray-800 [&>svg]:bg-gray-600 desktop:[&>svg]:hover:bg-gray-800',\n {\n 'text-brand-heavy hover:text-brand-heavy [&>svg]:bg-brand-heavy desktop:[&>svg]:hover:bg-brand-heavy':\n theme === THEME.normal && active,\n },\n // photography theme\n {\n 'text-gray-white hover:text-supportive-pastel [&>svg]:bg-gray-white [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && !active,\n 'text-supportive-pastel hover:text-supportive-pastel [&>svg]:bg-supportive-pastel [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && active,\n },\n // transparent theme\n {\n 'text-gray-white hover:text-gray-200 [&>svg]:bg-gray-white [&>svg]:hover:bg-gray-200':\n theme === THEME.transparent && !active,\n 'text-gray-white hover:text-gray-white [&>svg]:bg-gray-white [&>svg]:hover:bg-gray-white':\n theme === THEME.transparent && active,\n },\n ]\n}\n\nexport const getSecondaryIconButtonTheme: ThemeFunc = (\n theme,\n active,\n disabled\n) => {\n if (disabled) {\n return ['text-gray-400 hover:text-gray-400']\n }\n return [\n // default theme\n 'text-gray-400 hover:text-gray-600 [&>svg]:bg-gray-400 [&>svg]:hover:bg-gray-600',\n {\n 'text-brand-heavy hover:text-brand-heavy [&>svg]:bg-brand-heavy [&>svg]:hover:bg-brand-heavy':\n theme === THEME.normal && active,\n },\n // photography theme\n {\n 'text-gray-400 hover:text-supportive-pastel [&>svg]:bg-gray-400 [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && !active,\n 'text-supportive-pastel hover:text-supportive-pastel [&>svg]:bg-supportive-pastel [&>svg]:hover:bg-supportive-pastel':\n theme === THEME.photography && active,\n },\n // transparent theme\n {\n 'text-gray-600 hover:text-gray-white [&>svg]:bg-gray-600 [&>svg]:hover:bg-gray-white':\n theme === THEME.transparent && !active,\n 'text-gray-600 hover:text-gray-600 [&>svg]:bg-gray-600 [&>svg]:hover:bg-gray-600':\n theme === THEME.transparent && active,\n },\n ]\n}\n","import type React from 'react'\nimport clsx from 'clsx'\n// constants\nimport { THEME, type Theme } from '../../../constants/theme'\nimport { TYPE, type Type } from '../../constants'\n// theme\nimport { getPrimaryIconButtonTheme, getSecondaryIconButtonTheme } from './theme'\n\ntype IconButtonProps = {\n iconComponent: React.ReactElement\n theme?: Theme\n type?: Type\n disabled?: boolean\n active?: boolean\n className?: string\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\nconst IconButton: React.FC<IconButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n} = ({\n iconComponent,\n theme = THEME.normal,\n type = TYPE.primary,\n disabled = false,\n active = false,\n className = '',\n onClick = () => {},\n}) => {\n const themeClass =\n type === TYPE.primary\n ? getPrimaryIconButtonTheme(theme, active, disabled)\n : getSecondaryIconButtonTheme(theme, active, disabled)\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return\n }\n e.stopPropagation()\n onClick(e)\n }\n return (\n <button\n className={clsx(\n 'flex',\n '[&>svg]:w-[24px] [&>svg]:h-[24px]',\n disabled ? 'cursor-default' : 'cursor-pointer',\n themeClass,\n className\n )}\n onClick={handleClick}\n type=\"button\"\n >\n {iconComponent}\n </button>\n )\n}\n\nIconButton.Theme = THEME\nIconButton.Type = TYPE\n\nexport default IconButton\n","import type React from 'react'\nimport clsx from 'clsx'\n// P1\nimport { P1 } from '../../../text/paragraph'\nimport { WEIGHT, type Weight } from '../../../text/constants'\n\ntype MenuButtonProps = {\n text: string\n color: string\n fontWeight: Weight\n className?: string\n p1ClassName?: string\n}\nconst MenuButton: React.FC<MenuButtonProps> & { FontWeight: typeof WEIGHT } = ({\n text,\n color,\n fontWeight,\n className = '',\n p1ClassName = '',\n}) => {\n return (\n <div className={clsx('cursor-pointer', color, className)}>\n <P1\n text={text}\n weight={fontWeight}\n className={clsx('py-[8px]', p1ClassName)}\n />\n </div>\n )\n}\nMenuButton.FontWeight = WEIGHT\n\nexport default MenuButton\n","import { THEME, type Theme } from '../../../constants/theme'\nimport { STYLE, type Style } from '../../constants'\n\nexport const getFilledPillButtonTheme = (\n theme: Theme,\n disabled: boolean,\n style: Style\n) => {\n if (disabled) {\n switch (theme) {\n case THEME.transparent:\n switch (style) {\n case STYLE.light:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n default:\n return {\n color: 'text-gray-700',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-700',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-700',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n }\n case THEME.photography:\n return {\n color: 'text-gray-700',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-700',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-700',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-700',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n }\n }\n switch (theme) {\n case THEME.photography:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n case STYLE.light:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n default:\n return {\n color: 'text-photo-dark',\n bgColor: 'bg-supportive-faded',\n hoverColor: 'hover:text-photo-dark',\n hoverBgColor: 'hover:bg-supportive-pastel',\n borderColor: 'border-supportive-faded',\n svgBgColor: '[&>svg]:bg-photo-dark',\n borderHoverColor: 'hover:border-supportive-pastel',\n svgHoverBgColor: 'hover:[&>svg]:bg-photo-dark',\n }\n }\n case THEME.transparent:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n case STYLE.light:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n default:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n }\n default:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-brand-heavy',\n hoverColor: 'hover:text-gray-white',\n hoverBgColor: 'hover:bg-brand-dark',\n borderColor: 'border-brand-heavy',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-brand-dark',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-white',\n }\n }\n }\n}\n\nexport const getOutlinePillButtonTheme = (\n theme: Theme,\n disabled: boolean,\n style: Style\n) => {\n if (disabled) {\n switch (theme) {\n case THEME.transparent:\n switch (style) {\n case STYLE.light:\n return {\n color: 'text-gray-400',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n default:\n return {\n color: 'text-gray-500',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-500',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-500',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n }\n case THEME.photography:\n return {\n color: 'text-gray-500',\n bgColor: 'bg-gray-500',\n hoverColor: 'hover:text-gray-500',\n hoverBgColor: 'hover:bg-gray-500',\n borderColor: 'border-gray-500',\n svgBgColor: '[&>svg]:bg-gray-500',\n borderHoverColor: 'hover:border-gray-500',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-500',\n }\n default:\n return {\n color: 'text-gray-400',\n bgColor: 'bg-gray-400',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n }\n }\n\n switch (theme) {\n case THEME.photography:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-200',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-200',\n }\n case STYLE.light:\n return {\n color: 'text-gray-300',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-300',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n default:\n return {\n color: 'text-supportive-faded',\n bgColor: 'bg-supportive-faded',\n hoverColor: 'hover:text-supportive-pastel',\n hoverBgColor: 'hover:bg-supportive-pastel',\n borderColor: 'border-supportive-faded',\n svgBgColor: '[&>svg]:bg-supportive-faded',\n borderHoverColor: 'hover:border-supportive-pastel',\n svgHoverBgColor: 'hover:[&>svg]:bg-supportive-pastel',\n }\n }\n case THEME.transparent:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-300',\n bgColor: 'bg-gray-300',\n hoverColor: 'hover:text-gray-400',\n hoverBgColor: 'hover:bg-gray-400',\n borderColor: 'border-gray-300',\n svgBgColor: '[&>svg]:bg-gray-300',\n borderHoverColor: 'hover:border-gray-400',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-400',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-black',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-black',\n }\n default:\n return {\n color: 'text-gray-white',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-200',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-200',\n }\n }\n default:\n switch (style) {\n case STYLE.dark:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-800',\n hoverColor: 'hover:text-gray-black',\n hoverBgColor: 'hover:bg-gray-black',\n borderColor: 'border-gray-800',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-black',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-black',\n }\n case STYLE.light:\n return {\n color: 'text-gray-800',\n bgColor: 'bg-gray-white',\n hoverColor: 'hover:text-gray-800',\n hoverBgColor: 'hover:bg-gray-200',\n borderColor: 'border-gray-white',\n svgBgColor: '[&>svg]:bg-gray-800',\n borderHoverColor: 'hover:border-gray-200',\n svgHoverBgColor: 'hover:[&>svg]:bg-gray-800',\n }\n default:\n return {\n color: 'text-brand-heavy',\n bgColor: 'bg-brand-heavy',\n hoverColor: 'hover:text-brand-dark',\n hoverBgColor: 'hover:bg-brand-dark',\n borderColor: 'border-brand-heavy',\n svgBgColor: '[&>svg]:bg-brand-heavy',\n borderHoverColor: 'hover:border-brand-dark',\n svgHoverBgColor: 'hover:[&>svg]:bg-brand-dark',\n }\n }\n }\n}\n","import { useMemo, type FC } from 'react'\nimport clsx from 'clsx'\n// text\nimport { P1, P2 } from '../../../text/paragraph'\n// constants\nimport {\n SIZE,\n type Size,\n STYLE,\n type Style,\n TYPE,\n type Type,\n} from '../../constants'\nimport { THEME, type Theme } from '../../../constants/theme'\n// theme\nimport { getFilledPillButtonTheme, getOutlinePillButtonTheme } from './theme'\n\ntype PillButtonProps = {\n text?: string\n leftIconComponent?: React.ReactElement\n rightIconComponent?: React.ReactElement\n size?: Size\n theme?: Theme\n type?: Type\n style?: Style\n disabled?: boolean\n loading?: boolean\n className?: string\n}\nconst PillButton: FC<PillButtonProps> & {\n Theme: typeof THEME\n Type: typeof TYPE\n Size: typeof SIZE\n Style: typeof STYLE\n} = ({\n text = '',\n leftIconComponent = null,\n rightIconComponent = null,\n size = SIZE.s,\n theme = THEME.normal,\n type = TYPE.primary,\n style = STYLE.brand,\n disabled = false,\n loading = false,\n className = '',\n}) => {\n const themeFunc =\n type === TYPE.primary ? getFilledPillButtonTheme : getOutlinePillButtonTheme\n const {\n color,\n bgColor,\n hoverColor,\n hoverBgColor,\n borderColor,\n svgBgColor,\n borderHoverColor,\n svgHoverBgColor,\n } = themeFunc(theme, disabled, style)\n\n const padding = size === SIZE.s ? 'py-[4px] px-[12px]' : 'py-[8px] px-[16px]'\n const iconSize =\n size === SIZE.s\n ? '[&>svg]:h-[18px] [&>svg]:w-[18px]'\n : '[&>svg]:h-[24px] [&>svg]:w-[24px]'\n\n const TextJSX = useMemo(\n () =>\n size === SIZE.s ? (\n <P2 text={text} weight={P2.Weight.bold} />\n ) : (\n <P1 text={text} weight={P1.Weight.bold} />\n ),\n [size, text]\n )\n\n return (\n <div\n className={clsx(\n 'w-fit flex items-center rounded-[40px] border-solid border-[1.5px]',\n borderColor,\n color,\n padding,\n disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer',\n type === TYPE.primary ? bgColor : 'bg-transparent',\n iconSize,\n svgBgColor,\n hoverColor,\n type === TYPE.primary ? hoverBgColor : 'bg-transparent',\n borderHoverColor,\n svgHoverBgColor,\n className\n )}\n >\n <div className=\"relative flex justify-center items-center\">\n <div\n className={clsx('flex justify-center items-center', {\n 'opacity-0': loading,\n 'opacity-100': !loading,\n })}\n >\n {leftIconComponent ? (\n <div className=\"flex items-center mr-[4px]\">\n {leftIconComponent}\n </div>\n ) : null}\n {TextJSX}\n {rightIconComponent ? (\n <div className=\"flex items-center ml-[4px]\">\n {rightIconComponent}\n </div>\n ) : null}\n </div>\n <span\n className={clsx(\n 'inline-block absolute box-border animate-spin',\n 'border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]',\n {\n 'size-[18px]': size === SIZE.s,\n 'size-[24px]': size === SIZE.l,\n },\n {\n 'opacity-0': !loading,\n 'opacity-100': loading,\n }\n )}\n />\n </div>\n </div>\n )\n}\nPillButton.Theme = THEME\nPillButton.Type = TYPE\nPillButton.Size = SIZE\nPillButton.Style = STYLE\n\nexport default PillButton\n","import { THEME, type Theme } from '../../../constants/theme'\n\nexport const getIconWithTextButtonTheme = (\n theme: Theme,\n isActive: boolean,\n isDisabled: boolean\n) => {\n if (isDisabled) {\n return {\n color: 'text-gray-400',\n hoverColor: 'hover:text-gray-400',\n svgBgColor: '[&>svg]:bg-gray-400',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-400',\n }\n }\n\n const switchKey = isActive ? `${theme}-active` : theme\n switch (switchKey) {\n case THEME.photography:\n return {\n color: 'text-gray-200',\n hoverColor: 'hover:text-supportive-pastel',\n svgBgColor: '[&>svg]:bg-gray-200',\n svgHoverBgColor: '[&>svg]:hover:bg-supportive-pastel',\n }\n case `${THEME.photography}-active`:\n return {\n color: 'text-supportive-pastel',\n hoverColor: 'hover:text-supportive-pastel',\n svgBgColor: '[&>svg]:bg-supportive-pastel',\n svgHoverBgColor: '[&>svg]:hover:bg-supportive-pastel',\n }\n case THEME.transparent:\n return {\n color: 'text-gray-100',\n hoverColor: 'hover:text-gray-200',\n svgBgColor: '[&>svg]:bg-gray-100',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-200',\n }\n case `${THEME.transparent}-active`:\n return {\n color: 'text-gray-white',\n hoverColor: 'hover:text-gray-white',\n svgBgColor: '[&>svg]:bg-gray-white',\n svgHoverBgColor: '[&>svg]:hover:bg-gray-white',\n }\n case `${THEME.normal}-active`:\n return {\n color: 'text-brand-heavy',\n hoverColor: 'hover:text-brand-heavy',\n svgBgColor: '[&>svg]:bg-brand-heavy',\n svgHoverBgColor: '[&>svg]:hover:bg-brand-heavy',\n }\n default:\n return {\n color: 'text-gray-600',\n hoverColor: 'hover:text-brand-heavy',\n svgBgColor: '[&>svg]:bg-gray-600',\n svgHoverBgColor: '[&>svg]:hover:bg-brand-heavy',\n }\n }\n}\n","import type { FC } from 'react'\nimport clsx from 'clsx'\n// constants\nimport { THEME, type Theme } from '../../../constants/theme'\n// theme\nimport { getIconWithTextButtonTheme } from './theme'\n// text\nimport { P4 } from '../../../text/paragraph'\n\ntype IconWithTextButtonProps = {\n text?: string\n iconComponent: React.ReactNode\n theme?: Theme\n disabled?: boolean\n active?: boolean\n hideText?: boolean\n className?: string\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\nconst IconWithTextButton: FC<IconWithTextButtonProps> & {\n Theme: typeof THEME\n} = ({\n text = '',\n iconComponent,\n theme = THEME.normal,\n disabled = false,\n active = false,\n hideText = false,\n className = '',\n onClick = () => {},\n}) => {\n const { color, hoverColor, svgBgColor, svgHoverBgColor } =\n getIconWithTextButtonTheme(theme, active, disabled)\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return\n }\n e.stopPropagation()\n onClick(e)\n }\n return (\n <button\n className={clsx(\n 'flex flex-col items-center',\n '[&>svg]:w-[24px] [&>svg]:h-[24px]',\n color,\n hoverColor,\n svgBgColor,\n svgHoverBgColor,\n disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n type=\"button\"\n onClick={handleClick}\n >\n {iconComponent}\n <P4\n text={text}\n weight={P4.Weight.normal}\n className={clsx(\n 'mt-[2px] transition-opacity duration-[100ms]',\n hideText ? 'opacity-0' : 'opacity-100',\n hideText ? 'max-h-0' : 'max-h-none'\n )}\n />\n </button>\n )\n}\nIconWithTextButton.Theme = THEME\nexport default IconWithTextButton\n","import TextButton from './components/text-button'\nimport IconButton from './components/icon-button'\nimport MenuButton from './components/menu-button'\nimport PillButton from './components/pill-button'\nimport IconWithTextButton from './components/icon-with-text-button'\n\nexport { TextButton, IconButton, MenuButton, PillButton, IconWithTextButton }\n\nexport default {\n TextButton,\n IconButton,\n MenuButton,\n PillButton,\n IconWithTextButton,\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import "../index-CYb6xr3M.mjs";
2
- import { RELEASE_BRANCH, ReleaseBranch } from "../release-branch-BqeBsvrl.mjs";
1
+ import "../index-DaRD2S-9.mjs";
2
+ import { RELEASE_BRANCH, ReleaseBranch } from "../release-branch-8qGtkKtd.mjs";
3
3
  export { RELEASE_BRANCH, ReleaseBranch };
@@ -1,3 +1,3 @@
1
- import "../index-CYb6xr3M.mjs";
2
- import { THEME, Theme } from "../theme-lCi6tmmS.mjs";
1
+ import "../index-DaRD2S-9.mjs";
2
+ import { THEME, Theme } from "../theme-B9CWW8U9.mjs";
3
3
  export { THEME, Theme };
@@ -36,4 +36,4 @@ Object.defineProperty(exports, 'TabBarItems', {
36
36
  return TabBarItems;
37
37
  }
38
38
  });
39
- //# sourceMappingURL=constants-BNxn_qJc.js.map
39
+ //# sourceMappingURL=constants-91DoZaeP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-BNxn_qJc.js","names":["TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[]","INTERNAL_LINKS","Home","Clock","Topic","KidStar"],"sources":["../src/tab-bar/constants.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport type { LinkTarget } from '../customized-link/type'\n// icons\nimport { Home, Clock, Topic, KidStar } from '../icons'\n// release branch\nimport type { ReleaseBranch } from '../constants/release-branch'\n\ntype TabBarItem = {\n text: string\n link: string\n target: LinkTarget\n icon: ReactElement\n}\nexport const TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[] = (\n releaseBranch\n) => [\n {\n text: '首頁',\n link: INTERNAL_LINKS.home,\n target: '_self',\n icon: Home(releaseBranch),\n },\n {\n text: '最新',\n link: INTERNAL_LINKS.latest,\n target: '_self',\n icon: Clock(releaseBranch),\n },\n {\n text: '深度專題',\n link: INTERNAL_LINKS.topics,\n target: '_self',\n icon: Topic(releaseBranch),\n },\n {\n text: '我的閱讀',\n link: INTERNAL_LINKS.myReading.index,\n target: '_self',\n icon: KidStar(releaseBranch),\n },\n]\n"],"mappings":";;;;AAcA,MAAaA,eACX,kBACG;CACH;EACE,MAAM;EACN,MAAMC,sCAAe;EACrB,QAAQ;EACR,MAAMC,mBAAK,cAAc;EAC1B;CACD;EACE,MAAM;EACN,MAAMD,sCAAe;EACrB,QAAQ;EACR,MAAME,oBAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAMF,sCAAe;EACrB,QAAQ;EACR,MAAMG,oBAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAMH,sCAAe,UAAU;EAC/B,QAAQ;EACR,MAAMI,sBAAQ,cAAc;EAC7B;CACF"}
1
+ {"version":3,"file":"constants-91DoZaeP.js","names":["TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[]","INTERNAL_LINKS","Home","Clock","Topic","KidStar"],"sources":["../src/tab-bar/constants.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport type { LinkTarget } from '../customized-link/type'\n// icons\nimport { Home, Clock, Topic, KidStar } from '../icons'\n// release branch\nimport type { ReleaseBranch } from '../constants/release-branch'\n\ntype TabBarItem = {\n text: string\n link: string\n target: LinkTarget\n icon: ReactElement\n}\nexport const TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[] = (\n releaseBranch\n) => [\n {\n text: '首頁',\n link: INTERNAL_LINKS.home,\n target: '_self',\n icon: Home(releaseBranch),\n },\n {\n text: '最新',\n link: INTERNAL_LINKS.latest,\n target: '_self',\n icon: Clock(releaseBranch),\n },\n {\n text: '深度專題',\n link: INTERNAL_LINKS.topics,\n target: '_self',\n icon: Topic(releaseBranch),\n },\n {\n text: '我的閱讀',\n link: INTERNAL_LINKS.myReading.index,\n target: '_self',\n icon: KidStar(releaseBranch),\n },\n]\n"],"mappings":";;;;AAcA,MAAaA,eACX,kBACG;CACH;EACE,MAAM;EACN,MAAMC,sCAAe;EACrB,QAAQ;EACR,MAAMC,mBAAK,cAAc;EAC1B;CACD;EACE,MAAM;EACN,MAAMD,sCAAe;EACrB,QAAQ;EACR,MAAME,oBAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAMF,sCAAe;EACrB,QAAQ;EACR,MAAMG,oBAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAMH,sCAAe,UAAU;EAC/B,QAAQ;EACR,MAAMI,sBAAQ,cAAc;EAC7B;CACF"}
@@ -0,0 +1,22 @@
1
+ import { ValuesOf } from "./index-H3peA2d_.js";
2
+
3
+ //#region src/input/constants.d.ts
4
+ declare const WIDTH_TYPE: {
5
+ readonly fit: "fit";
6
+ readonly stretch: "stretch";
7
+ };
8
+ type WidthType = ValuesOf<typeof WIDTH_TYPE>;
9
+ declare const TEXT_ALIGN: {
10
+ readonly left: "left";
11
+ readonly center: "center";
12
+ };
13
+ type TextAlign = ValuesOf<typeof TEXT_ALIGN>;
14
+ declare const TEXT_STATE: {
15
+ readonly default: "default";
16
+ readonly error: "error";
17
+ readonly disabled: "disabled";
18
+ };
19
+ type TextState = ValuesOf<typeof TEXT_STATE>;
20
+ //#endregion
21
+ export { TEXT_ALIGN, TEXT_STATE, TextAlign, TextState, WIDTH_TYPE, WidthType };
22
+ //# sourceMappingURL=constants-BGUGvo1A.d.ts.map
@@ -0,0 +1,36 @@
1
+
2
+ //#region src/input/constants.ts
3
+ const WIDTH_TYPE = {
4
+ fit: "fit",
5
+ stretch: "stretch"
6
+ };
7
+ const TEXT_ALIGN = {
8
+ left: "left",
9
+ center: "center"
10
+ };
11
+ const TEXT_STATE = {
12
+ default: "default",
13
+ error: "error",
14
+ disabled: "disabled"
15
+ };
16
+
17
+ //#endregion
18
+ Object.defineProperty(exports, 'TEXT_ALIGN', {
19
+ enumerable: true,
20
+ get: function () {
21
+ return TEXT_ALIGN;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, 'TEXT_STATE', {
25
+ enumerable: true,
26
+ get: function () {
27
+ return TEXT_STATE;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, 'WIDTH_TYPE', {
31
+ enumerable: true,
32
+ get: function () {
33
+ return WIDTH_TYPE;
34
+ }
35
+ });
36
+ //# sourceMappingURL=constants-BP47D2l7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-BP47D2l7.js","names":[],"sources":["../src/input/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\n// for search-bar\nexport const WIDTH_TYPE = {\n fit: 'fit',\n stretch: 'stretch',\n} as const\nexport type WidthType = ValuesOf<typeof WIDTH_TYPE>\n\n// for text-field\nexport const TEXT_ALIGN = {\n left: 'left',\n center: 'center',\n} as const\nexport type TextAlign = ValuesOf<typeof TEXT_ALIGN>\n\nexport const TEXT_STATE = {\n default: 'default',\n error: 'error',\n disabled: 'disabled',\n} as const\nexport type TextState = ValuesOf<typeof TEXT_STATE>\n"],"mappings":";;AAGA,MAAa,aAAa;CACxB,KAAK;CACL,SAAS;CACV;AAID,MAAa,aAAa;CACxB,MAAM;CACN,QAAQ;CACT;AAGD,MAAa,aAAa;CACxB,SAAS;CACT,OAAO;CACP,UAAU;CACX"}
@@ -31,4 +31,4 @@ const TabBarItems = (releaseBranch) => [
31
31
 
32
32
  //#endregion
33
33
  export { TabBarItems };
34
- //# sourceMappingURL=constants--CDeoDub.mjs.map
34
+ //# sourceMappingURL=constants-BYqJQzQQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants--CDeoDub.mjs","names":["TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[]"],"sources":["../src/tab-bar/constants.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport type { LinkTarget } from '../customized-link/type'\n// icons\nimport { Home, Clock, Topic, KidStar } from '../icons'\n// release branch\nimport type { ReleaseBranch } from '../constants/release-branch'\n\ntype TabBarItem = {\n text: string\n link: string\n target: LinkTarget\n icon: ReactElement\n}\nexport const TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[] = (\n releaseBranch\n) => [\n {\n text: '首頁',\n link: INTERNAL_LINKS.home,\n target: '_self',\n icon: Home(releaseBranch),\n },\n {\n text: '最新',\n link: INTERNAL_LINKS.latest,\n target: '_self',\n icon: Clock(releaseBranch),\n },\n {\n text: '深度專題',\n link: INTERNAL_LINKS.topics,\n target: '_self',\n icon: Topic(releaseBranch),\n },\n {\n text: '我的閱讀',\n link: INTERNAL_LINKS.myReading.index,\n target: '_self',\n icon: KidStar(releaseBranch),\n },\n]\n"],"mappings":";;;;AAcA,MAAaA,eACX,kBACG;CACH;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,KAAK,cAAc;EAC1B;CACD;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,MAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,MAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAM,eAAe,UAAU;EAC/B,QAAQ;EACR,MAAM,QAAQ,cAAc;EAC7B;CACF"}
1
+ {"version":3,"file":"constants-BYqJQzQQ.mjs","names":["TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[]"],"sources":["../src/tab-bar/constants.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { INTERNAL_LINKS } from '../constants/internal-links'\nimport type { LinkTarget } from '../customized-link/type'\n// icons\nimport { Home, Clock, Topic, KidStar } from '../icons'\n// release branch\nimport type { ReleaseBranch } from '../constants/release-branch'\n\ntype TabBarItem = {\n text: string\n link: string\n target: LinkTarget\n icon: ReactElement\n}\nexport const TabBarItems: (releaseBranch: ReleaseBranch) => TabBarItem[] = (\n releaseBranch\n) => [\n {\n text: '首頁',\n link: INTERNAL_LINKS.home,\n target: '_self',\n icon: Home(releaseBranch),\n },\n {\n text: '最新',\n link: INTERNAL_LINKS.latest,\n target: '_self',\n icon: Clock(releaseBranch),\n },\n {\n text: '深度專題',\n link: INTERNAL_LINKS.topics,\n target: '_self',\n icon: Topic(releaseBranch),\n },\n {\n text: '我的閱讀',\n link: INTERNAL_LINKS.myReading.index,\n target: '_self',\n icon: KidStar(releaseBranch),\n },\n]\n"],"mappings":";;;;AAcA,MAAaA,eACX,kBACG;CACH;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,KAAK,cAAc;EAC1B;CACD;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,MAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAM,eAAe;EACrB,QAAQ;EACR,MAAM,MAAM,cAAc;EAC3B;CACD;EACE,MAAM;EACN,MAAM,eAAe,UAAU;EAC/B,QAAQ;EACR,MAAM,QAAQ,cAAc;EAC7B;CACF"}
@@ -1,4 +1,4 @@
1
- import { ValuesOf } from "./index-CYb6xr3M.mjs";
1
+ import { ValuesOf } from "./index-DaRD2S-9.mjs";
2
2
 
3
3
  //#region src/divider/constants.d.ts
4
4
  declare const DIRECTION: {
@@ -8,4 +8,4 @@ declare const DIRECTION: {
8
8
  type Direction = ValuesOf<typeof DIRECTION>;
9
9
  //#endregion
10
10
  export { DIRECTION, Direction };
11
- //# sourceMappingURL=constants-Cb4Udkwt.d.mts.map
11
+ //# sourceMappingURL=constants-BnVX84Yl.d.mts.map
@@ -12,4 +12,4 @@ Object.defineProperty(exports, 'DIRECTION', {
12
12
  return DIRECTION;
13
13
  }
14
14
  });
15
- //# sourceMappingURL=constants-nmH6p6-y.js.map
15
+ //# sourceMappingURL=constants-BuIUKM2c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-nmH6p6-y.js","names":[],"sources":["../src/divider/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\nexport const DIRECTION = {\n horizontal: 'horizontal',\n vertical: 'vertical',\n} as const\n\nexport type Direction = ValuesOf<typeof DIRECTION>\n"],"mappings":";;AAEA,MAAa,YAAY;CACvB,YAAY;CACZ,UAAU;CACX"}
1
+ {"version":3,"file":"constants-BuIUKM2c.js","names":[],"sources":["../src/divider/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\nexport const DIRECTION = {\n horizontal: 'horizontal',\n vertical: 'vertical',\n} as const\n\nexport type Direction = ValuesOf<typeof DIRECTION>\n"],"mappings":";;AAEA,MAAa,YAAY;CACvB,YAAY;CACZ,UAAU;CACX"}
@@ -1,4 +1,4 @@
1
- import { ValuesOf } from "./index-CYb6xr3M.mjs";
1
+ import { ValuesOf } from "./index-DaRD2S-9.mjs";
2
2
 
3
3
  //#region src/button/constants.d.ts
4
4
  declare const SIZE: {
@@ -19,4 +19,4 @@ declare const TYPE: {
19
19
  type Type = ValuesOf<typeof TYPE>;
20
20
  //#endregion
21
21
  export { SIZE, STYLE, Size, Style, TYPE, Type };
22
- //# sourceMappingURL=constants-B6oiTL1L.d.mts.map
22
+ //# sourceMappingURL=constants-C2kTkuiJ.d.mts.map
@@ -27,4 +27,4 @@ declare const MEDIA_TYPE: {
27
27
  type MediaType = ValuesOf<typeof MEDIA_TYPE>;
28
28
  //#endregion
29
29
  export { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType };
30
- //# sourceMappingURL=constants-CBjyeHSl.d.ts.map
30
+ //# sourceMappingURL=constants-COhDITk3.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ValuesOf } from "./index-CYb6xr3M.mjs";
1
+ import { ValuesOf } from "./index-DaRD2S-9.mjs";
2
2
 
3
3
  //#region src/icons/constants.d.ts
4
4
  declare const ICON_TYPE: {
@@ -27,4 +27,4 @@ declare const MEDIA_TYPE: {
27
27
  type MediaType = ValuesOf<typeof MEDIA_TYPE>;
28
28
  //#endregion
29
29
  export { ARROW_DIRECTION, ArrowDirection, ICON_TYPE, IconType, MEDIA_TYPE, MediaType };
30
- //# sourceMappingURL=constants-CVmr4VOP.d.mts.map
30
+ //# sourceMappingURL=constants-Cg4dfRV_.d.mts.map
@@ -0,0 +1,22 @@
1
+ import { ValuesOf } from "./index-DaRD2S-9.mjs";
2
+
3
+ //#region src/input/constants.d.ts
4
+ declare const WIDTH_TYPE: {
5
+ readonly fit: "fit";
6
+ readonly stretch: "stretch";
7
+ };
8
+ type WidthType = ValuesOf<typeof WIDTH_TYPE>;
9
+ declare const TEXT_ALIGN: {
10
+ readonly left: "left";
11
+ readonly center: "center";
12
+ };
13
+ type TextAlign = ValuesOf<typeof TEXT_ALIGN>;
14
+ declare const TEXT_STATE: {
15
+ readonly default: "default";
16
+ readonly error: "error";
17
+ readonly disabled: "disabled";
18
+ };
19
+ type TextState = ValuesOf<typeof TEXT_STATE>;
20
+ //#endregion
21
+ export { TEXT_ALIGN, TEXT_STATE, TextAlign, TextState, WIDTH_TYPE, WidthType };
22
+ //# sourceMappingURL=constants-CxHP9dkH.d.mts.map
@@ -6,4 +6,4 @@ const DIRECTION = {
6
6
 
7
7
  //#endregion
8
8
  export { DIRECTION };
9
- //# sourceMappingURL=constants-z9Q8ph_H.mjs.map
9
+ //# sourceMappingURL=constants-Cz7n-nLz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-z9Q8ph_H.mjs","names":[],"sources":["../src/divider/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\nexport const DIRECTION = {\n horizontal: 'horizontal',\n vertical: 'vertical',\n} as const\n\nexport type Direction = ValuesOf<typeof DIRECTION>\n"],"mappings":";AAEA,MAAa,YAAY;CACvB,YAAY;CACZ,UAAU;CACX"}
1
+ {"version":3,"file":"constants-Cz7n-nLz.mjs","names":[],"sources":["../src/divider/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\nexport const DIRECTION = {\n horizontal: 'horizontal',\n vertical: 'vertical',\n} as const\n\nexport type Direction = ValuesOf<typeof DIRECTION>\n"],"mappings":";AAEA,MAAa,YAAY;CACvB,YAAY;CACZ,UAAU;CACX"}
@@ -21,4 +21,4 @@ declare const LOGO_SYMBOL_TYPE: {
21
21
  type LogoSymbolType = ValuesOf<typeof LOGO_SYMBOL_TYPE>;
22
22
  //#endregion
23
23
  export { LOGO, LOGO_SYMBOL_TYPE, LOGO_TYPE, Logo, LogoSymbolType, LogoType };
24
- //# sourceMappingURL=constants-B_NgWFML.d.ts.map
24
+ //# sourceMappingURL=constants-CzHmv07x.d.ts.map
@@ -0,0 +1,18 @@
1
+ //#region src/input/constants.ts
2
+ const WIDTH_TYPE = {
3
+ fit: "fit",
4
+ stretch: "stretch"
5
+ };
6
+ const TEXT_ALIGN = {
7
+ left: "left",
8
+ center: "center"
9
+ };
10
+ const TEXT_STATE = {
11
+ default: "default",
12
+ error: "error",
13
+ disabled: "disabled"
14
+ };
15
+
16
+ //#endregion
17
+ export { TEXT_ALIGN, TEXT_STATE, WIDTH_TYPE };
18
+ //# sourceMappingURL=constants-Dfgyc0ND.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-Dfgyc0ND.mjs","names":[],"sources":["../src/input/constants.ts"],"sourcesContent":["import type { ValuesOf } from '../types'\n\n// for search-bar\nexport const WIDTH_TYPE = {\n fit: 'fit',\n stretch: 'stretch',\n} as const\nexport type WidthType = ValuesOf<typeof WIDTH_TYPE>\n\n// for text-field\nexport const TEXT_ALIGN = {\n left: 'left',\n center: 'center',\n} as const\nexport type TextAlign = ValuesOf<typeof TEXT_ALIGN>\n\nexport const TEXT_STATE = {\n default: 'default',\n error: 'error',\n disabled: 'disabled',\n} as const\nexport type TextState = ValuesOf<typeof TEXT_STATE>\n"],"mappings":";AAGA,MAAa,aAAa;CACxB,KAAK;CACL,SAAS;CACV;AAID,MAAa,aAAa;CACxB,MAAM;CACN,QAAQ;CACT;AAGD,MAAa,aAAa;CACxB,SAAS;CACT,OAAO;CACP,UAAU;CACX"}