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

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 (174) hide show
  1. package/README.md +11 -1
  2. package/lib/button/components/text-button/index.d.mts +24 -0
  3. package/lib/button/components/text-button/index.d.ts +24 -0
  4. package/lib/button/components/text-button/index.js +202 -0
  5. package/lib/button/components/text-button/index.js.map +1 -0
  6. package/lib/button/components/text-button/index.mjs +8 -0
  7. package/lib/button/components/text-button/index.mjs.map +1 -0
  8. package/lib/button/components/text-button/theme.d.mts +11 -0
  9. package/lib/button/components/text-button/theme.d.ts +11 -0
  10. package/lib/button/components/text-button/theme.js +65 -0
  11. package/lib/button/components/text-button/theme.js.map +1 -0
  12. package/lib/button/components/text-button/theme.mjs +5 -0
  13. package/lib/button/components/text-button/theme.mjs.map +1 -0
  14. package/lib/button/constant.d.mts +11 -0
  15. package/lib/button/constant.d.ts +11 -0
  16. package/lib/button/constant.js +13 -0
  17. package/lib/button/constant.js.map +1 -0
  18. package/lib/button/constant.mjs +3 -0
  19. package/lib/button/constant.mjs.map +1 -0
  20. package/lib/button/enum.d.mts +11 -0
  21. package/lib/button/enum.d.ts +11 -0
  22. package/lib/button/enum.js +19 -0
  23. package/lib/button/enum.js.map +1 -0
  24. package/lib/button/enum.mjs +3 -0
  25. package/lib/button/enum.mjs.map +1 -0
  26. package/lib/button/index.d.mts +26 -0
  27. package/lib/button/index.d.ts +26 -0
  28. package/lib/button/index.js +208 -0
  29. package/lib/button/index.js.map +1 -0
  30. package/lib/button/index.mjs +9 -0
  31. package/lib/button/index.mjs.map +1 -0
  32. package/lib/button/stories/text-button.stories.d.mts +55 -0
  33. package/lib/button/stories/text-button.stories.d.ts +55 -0
  34. package/lib/button/stories/text-button.stories.js +252 -0
  35. package/lib/button/stories/text-button.stories.js.map +1 -0
  36. package/lib/button/stories/text-button.stories.mjs +35 -0
  37. package/lib/button/stories/text-button.stories.mjs.map +1 -0
  38. package/lib/{chunk-3B7LTZRJ.mjs → chunk-6DXA3EX7.mjs} +8 -6
  39. package/lib/chunk-6DXA3EX7.mjs.map +1 -0
  40. package/lib/chunk-7NJDHQ2X.mjs +56 -0
  41. package/lib/chunk-7NJDHQ2X.mjs.map +1 -0
  42. package/lib/chunk-ELECTE3D.mjs +8 -0
  43. package/lib/chunk-ELECTE3D.mjs.map +1 -0
  44. package/lib/chunk-FF422IYY.mjs +38 -0
  45. package/lib/chunk-FF422IYY.mjs.map +1 -0
  46. package/lib/chunk-FVKIUNIP.mjs +58 -0
  47. package/lib/chunk-FVKIUNIP.mjs.map +1 -0
  48. package/lib/chunk-GQWO45DN.mjs +32 -0
  49. package/lib/chunk-GQWO45DN.mjs.map +1 -0
  50. package/lib/chunk-JB4TYHDE.mjs +11 -0
  51. package/lib/chunk-JB4TYHDE.mjs.map +1 -0
  52. package/lib/chunk-JFT6JILC.mjs +12 -0
  53. package/lib/chunk-JFT6JILC.mjs.map +1 -0
  54. package/lib/chunk-QOLETTSG.mjs +28 -0
  55. package/lib/chunk-QOLETTSG.mjs.map +1 -0
  56. package/lib/chunk-U22UKMAJ.mjs +84 -0
  57. package/lib/chunk-U22UKMAJ.mjs.map +1 -0
  58. package/lib/chunk-URJXIWFX.mjs +16 -0
  59. package/lib/chunk-URJXIWFX.mjs.map +1 -0
  60. package/lib/chunk-X2UWIBNH.mjs +16 -0
  61. package/lib/chunk-X2UWIBNH.mjs.map +1 -0
  62. package/lib/chunk-XO7SDD7W.mjs +17 -0
  63. package/lib/chunk-XO7SDD7W.mjs.map +1 -0
  64. package/lib/chunk-ZALXWB2J.mjs +27 -0
  65. package/lib/chunk-ZALXWB2J.mjs.map +1 -0
  66. package/lib/customized-link/external-link.d.mts +7 -0
  67. package/lib/customized-link/external-link.d.ts +7 -0
  68. package/lib/customized-link/external-link.js +18 -0
  69. package/lib/customized-link/external-link.js.map +1 -0
  70. package/lib/customized-link/external-link.mjs +3 -0
  71. package/lib/customized-link/external-link.mjs.map +1 -0
  72. package/lib/customized-link/index.d.mts +11 -0
  73. package/lib/customized-link/index.d.ts +11 -0
  74. package/lib/customized-link/index.js +42 -0
  75. package/lib/customized-link/index.js.map +1 -0
  76. package/lib/customized-link/index.mjs +5 -0
  77. package/lib/customized-link/index.mjs.map +1 -0
  78. package/lib/customized-link/internal-link.d.mts +7 -0
  79. package/lib/customized-link/internal-link.d.ts +7 -0
  80. package/lib/customized-link/internal-link.js +22 -0
  81. package/lib/customized-link/internal-link.js.map +1 -0
  82. package/lib/customized-link/internal-link.mjs +3 -0
  83. package/lib/customized-link/internal-link.mjs.map +1 -0
  84. package/lib/customized-link/type.d.mts +9 -0
  85. package/lib/customized-link/type.d.ts +9 -0
  86. package/lib/customized-link/type.js +4 -0
  87. package/lib/customized-link/type.js.map +1 -0
  88. package/lib/customized-link/type.mjs +3 -0
  89. package/lib/customized-link/type.mjs.map +1 -0
  90. package/lib/storybook/utils/get-enum-arg.d.mts +19 -0
  91. package/lib/storybook/utils/get-enum-arg.d.ts +19 -0
  92. package/lib/storybook/utils/get-enum-arg.js +31 -0
  93. package/lib/storybook/utils/get-enum-arg.js.map +1 -0
  94. package/lib/storybook/utils/get-enum-arg.mjs +3 -0
  95. package/lib/storybook/utils/get-enum-arg.mjs.map +1 -0
  96. package/lib/styles.css +199 -2
  97. package/lib/styles.css.map +1 -1
  98. package/lib/text/heading.d.mts +8 -8
  99. package/lib/text/heading.d.ts +8 -8
  100. package/lib/text/paragraph.d.mts +6 -6
  101. package/lib/text/paragraph.d.ts +6 -6
  102. package/lib/text/stories/heading.stories.d.mts +35 -0
  103. package/lib/text/stories/heading.stories.d.ts +35 -0
  104. package/lib/text/stories/heading.stories.js +131 -0
  105. package/lib/text/stories/heading.stories.js.map +1 -0
  106. package/lib/text/stories/heading.stories.mjs +50 -0
  107. package/lib/text/stories/heading.stories.mjs.map +1 -0
  108. package/lib/text/stories/paragraph.stories.d.mts +33 -0
  109. package/lib/text/stories/paragraph.stories.d.ts +33 -0
  110. package/lib/text/stories/paragraph.stories.js +108 -0
  111. package/lib/text/stories/paragraph.stories.js.map +1 -0
  112. package/lib/text/stories/paragraph.stories.mjs +40 -0
  113. package/lib/text/stories/paragraph.stories.mjs.map +1 -0
  114. package/lib/title-bar/components/title-tab/hook.d.mts +5 -0
  115. package/lib/title-bar/components/title-tab/hook.d.ts +5 -0
  116. package/lib/title-bar/components/title-tab/hook.js +34 -0
  117. package/lib/title-bar/components/title-tab/hook.js.map +1 -0
  118. package/lib/title-bar/components/title-tab/hook.mjs +3 -0
  119. package/lib/title-bar/components/title-tab/hook.mjs.map +1 -0
  120. package/lib/title-bar/components/title-tab/index.d.mts +11 -0
  121. package/lib/title-bar/components/title-tab/index.d.ts +11 -0
  122. package/lib/title-bar/components/title-tab/index.js +367 -0
  123. package/lib/title-bar/components/title-tab/index.js.map +1 -0
  124. package/lib/title-bar/components/title-tab/index.mjs +16 -0
  125. package/lib/title-bar/components/title-tab/index.mjs.map +1 -0
  126. package/lib/title-bar/components/title-tab/tab-item.d.mts +10 -0
  127. package/lib/title-bar/components/title-tab/tab-item.d.ts +10 -0
  128. package/lib/title-bar/components/title-tab/tab-item.js +250 -0
  129. package/lib/title-bar/components/title-tab/tab-item.js.map +1 -0
  130. package/lib/title-bar/components/title-tab/tab-item.mjs +13 -0
  131. package/lib/title-bar/components/title-tab/tab-item.mjs.map +1 -0
  132. package/lib/title-bar/components/title-tab/type.d.mts +8 -0
  133. package/lib/title-bar/components/title-tab/type.d.ts +8 -0
  134. package/lib/title-bar/components/title-tab/type.js +4 -0
  135. package/lib/title-bar/components/title-tab/type.js.map +1 -0
  136. package/lib/title-bar/components/title-tab/type.mjs +3 -0
  137. package/lib/title-bar/components/title-tab/type.mjs.map +1 -0
  138. package/lib/title-bar/components/title1.d.mts +10 -0
  139. package/lib/title-bar/components/title1.d.ts +10 -0
  140. package/lib/title-bar/components/title1.js +123 -0
  141. package/lib/title-bar/components/title1.js.map +1 -0
  142. package/lib/title-bar/components/title1.mjs +6 -0
  143. package/lib/title-bar/components/title1.mjs.map +1 -0
  144. package/lib/title-bar/components/title2.d.mts +3 -3
  145. package/lib/title-bar/components/title2.d.ts +3 -3
  146. package/lib/title-bar/components/title2.js +6 -4
  147. package/lib/title-bar/components/title2.js.map +1 -1
  148. package/lib/title-bar/components/title2.mjs +1 -1
  149. package/lib/title-bar/index.d.mts +15 -2
  150. package/lib/title-bar/index.d.ts +15 -2
  151. package/lib/title-bar/index.js +296 -8
  152. package/lib/title-bar/index.js.map +1 -1
  153. package/lib/title-bar/index.mjs +19 -3
  154. package/lib/title-bar/index.mjs.map +1 -1
  155. package/lib/title-bar/stories/title-tab.stories.d.mts +17 -0
  156. package/lib/title-bar/stories/title-tab.stories.d.ts +17 -0
  157. package/lib/title-bar/stories/title-tab.stories.js +391 -0
  158. package/lib/title-bar/stories/title-tab.stories.js.map +1 -0
  159. package/lib/title-bar/stories/title-tab.stories.mjs +39 -0
  160. package/lib/title-bar/stories/title-tab.stories.mjs.map +1 -0
  161. package/lib/title-bar/stories/title1.stories.d.mts +18 -0
  162. package/lib/title-bar/stories/title1.stories.d.ts +18 -0
  163. package/lib/title-bar/stories/title1.stories.js +155 -0
  164. package/lib/title-bar/stories/title1.stories.js.map +1 -0
  165. package/lib/title-bar/stories/title1.stories.mjs +35 -0
  166. package/lib/title-bar/stories/title1.stories.mjs.map +1 -0
  167. package/lib/title-bar/stories/title2.stories.d.mts +18 -0
  168. package/lib/title-bar/stories/title2.stories.d.ts +18 -0
  169. package/lib/title-bar/stories/title2.stories.js +304 -0
  170. package/lib/title-bar/stories/title2.stories.js.map +1 -0
  171. package/lib/title-bar/stories/title2.stories.mjs +38 -0
  172. package/lib/title-bar/stories/title2.stories.mjs.map +1 -0
  173. package/package.json +12 -5
  174. package/lib/chunk-3B7LTZRJ.mjs.map +0 -1
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+
5
+ // src/title-bar/components/title-tab/hook.ts
6
+ var useScrollStatus = (setShowNext) => {
7
+ const ref = react.useRef(null);
8
+ react.useEffect(() => {
9
+ if (!ref.current) return;
10
+ if (ref.current.scrollWidth > ref.current.clientWidth) {
11
+ setShowNext(true);
12
+ }
13
+ }, [setShowNext]);
14
+ react.useEffect(() => {
15
+ if (!ref.current) return;
16
+ const refEle = ref.current;
17
+ const handleScroll = () => {
18
+ if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {
19
+ setShowNext(false);
20
+ } else {
21
+ setShowNext(true);
22
+ }
23
+ };
24
+ refEle.addEventListener("scroll", handleScroll);
25
+ return () => {
26
+ refEle.removeEventListener("scroll", handleScroll);
27
+ };
28
+ }, [setShowNext]);
29
+ return ref;
30
+ };
31
+
32
+ exports.useScrollStatus = useScrollStatus;
33
+ //# sourceMappingURL=hook.js.map
34
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/title-bar/components/title-tab/hook.ts"],"names":["useRef","useEffect"],"mappings":";;;;;AAEO,IAAM,eAAA,GAAkB,CAAC,WAAA,KAAyC;AACvE,EAAA,MAAM,GAAA,GAAMA,aAAuB,IAAI,CAAA;AAEvC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,OAAA,EAAS;AAElB,IAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,WAAA,GAAc,GAAA,CAAI,QAAQ,WAAA,EAAa;AAErD,MAAA,WAAA,CAAY,IAAI,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,OAAA,EAAS;AAElB,IAAA,MAAM,SAAS,GAAA,CAAI,OAAA;AACnB,IAAA,MAAM,eAA8B,MAAM;AACxC,MAAA,IAAI,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,UAAA,IAAc,OAAO,WAAA,EAAa;AAEhE,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAE9C,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,YAAY,CAAA;AAAA,IACnD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,OAAO,GAAA;AACT","file":"hook.js","sourcesContent":["import { useRef, useEffect } from 'react'\n\nexport const useScrollStatus = (setShowNext: (show: boolean) => void) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!ref.current) return\n\n if (ref.current.scrollWidth > ref.current.clientWidth) {\n // scrollbar occur\n setShowNext(true)\n }\n }, [setShowNext])\n\n useEffect(() => {\n if (!ref.current) return\n\n const refEle = ref.current\n const handleScroll: EventListener = () => {\n if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {\n // scroll to end\n setShowNext(false)\n } else {\n setShowNext(true)\n }\n }\n\n refEle.addEventListener('scroll', handleScroll)\n\n return () => {\n refEle.removeEventListener('scroll', handleScroll)\n }\n }, [setShowNext])\n\n return ref\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { useScrollStatus } from '../../../chunk-GQWO45DN.mjs';
2
+ //# sourceMappingURL=hook.mjs.map
3
+ //# sourceMappingURL=hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"hook.mjs"}
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { Tab } from './type.mjs';
3
+
4
+ type TitleTabProps = {
5
+ title: string;
6
+ tabs: Tab[];
7
+ activeTabIndex?: number;
8
+ };
9
+ declare const TitleTab: FC<TitleTabProps>;
10
+
11
+ export { TitleTab as default };
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { Tab } from './type.js';
3
+
4
+ type TitleTabProps = {
5
+ title: string;
6
+ tabs: Tab[];
7
+ activeTabIndex?: number;
8
+ };
9
+ declare const TitleTab: FC<TitleTabProps>;
10
+
11
+ export { TitleTab as default };
@@ -0,0 +1,367 @@
1
+ 'use strict';
2
+
3
+ var clsx2 = require('clsx');
4
+ var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var Link = require('next/link');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var clsx2__default = /*#__PURE__*/_interopDefault(clsx2);
11
+ var React__default = /*#__PURE__*/_interopDefault(React);
12
+ var Link__default = /*#__PURE__*/_interopDefault(Link);
13
+
14
+ // src/title-bar/components/title-tab/index.tsx
15
+ var useScrollStatus = (setShowNext) => {
16
+ const ref = React.useRef(null);
17
+ React.useEffect(() => {
18
+ if (!ref.current) return;
19
+ if (ref.current.scrollWidth > ref.current.clientWidth) {
20
+ setShowNext(true);
21
+ }
22
+ }, [setShowNext]);
23
+ React.useEffect(() => {
24
+ if (!ref.current) return;
25
+ const refEle = ref.current;
26
+ const handleScroll = () => {
27
+ if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {
28
+ setShowNext(false);
29
+ } else {
30
+ setShowNext(true);
31
+ }
32
+ };
33
+ refEle.addEventListener("scroll", handleScroll);
34
+ return () => {
35
+ refEle.removeEventListener("scroll", handleScroll);
36
+ };
37
+ }, [setShowNext]);
38
+ return ref;
39
+ };
40
+ var ExternalLink = ({
41
+ to,
42
+ target = "_self",
43
+ className = "",
44
+ children
45
+ }) => {
46
+ return /* @__PURE__ */ jsxRuntime.jsx("a", { href: to, target, className, children });
47
+ };
48
+ var external_link_default = ExternalLink;
49
+ var InternalLink = ({
50
+ to,
51
+ target = "_self",
52
+ className = "",
53
+ children
54
+ }) => {
55
+ return /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: to, target, className, children });
56
+ };
57
+ var internal_link_default = InternalLink;
58
+
59
+ // src/text/enum/index.ts
60
+ var TYPE = {
61
+ default: "default",
62
+ article: "article"
63
+ };
64
+ var WEIGHT = {
65
+ extraLight: "extra-light",
66
+ normal: "normal",
67
+ bold: "bold"
68
+ };
69
+ var baseClass = "font-default leading-[150%] flex items-center m-0";
70
+ var variantClass = {
71
+ P1: "text-[16px]",
72
+ P2: "text-[14px]",
73
+ P3: "text-[12px]",
74
+ P4: "text-[10px]"
75
+ };
76
+ var ParagraphVariant = (variant) => {
77
+ const Component = ({
78
+ text = "",
79
+ weight = WEIGHT.normal,
80
+ className = "",
81
+ ...props
82
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
83
+ "p",
84
+ {
85
+ className: clsx2__default.default(
86
+ baseClass,
87
+ variantClass[variant],
88
+ `font-${weight}`,
89
+ className
90
+ ),
91
+ ...props,
92
+ children: text
93
+ }
94
+ );
95
+ Component.displayName = variant;
96
+ Component.Weight = WEIGHT;
97
+ return Component;
98
+ };
99
+ var P1 = ParagraphVariant("P1");
100
+ var P2 = ParagraphVariant("P2");
101
+ ParagraphVariant("P3");
102
+ ParagraphVariant("P4");
103
+
104
+ // src/button/enum.ts
105
+ var Size = /* @__PURE__ */ ((Size2) => {
106
+ Size2[Size2["S"] = 0] = "S";
107
+ Size2[Size2["L"] = 1] = "L";
108
+ return Size2;
109
+ })(Size || {});
110
+ var Style = /* @__PURE__ */ ((Style2) => {
111
+ Style2[Style2["BRAND"] = 0] = "BRAND";
112
+ Style2[Style2["DARK"] = 1] = "DARK";
113
+ Style2[Style2["LIGHT"] = 2] = "LIGHT";
114
+ return Style2;
115
+ })(Style || {});
116
+
117
+ // src/button/constant.ts
118
+ var THEME = {
119
+ normal: "normal",
120
+ photography: "photography",
121
+ transparent: "transparent",
122
+ index: "index"
123
+ };
124
+
125
+ // src/button/components/text-button/theme.ts
126
+ var getDisabledContainerTheme = (theme) => {
127
+ return [
128
+ // default theme
129
+ "text-gray-400 hover:text-gray-400",
130
+ // photography & transparent theme
131
+ {
132
+ "text-gray-500 hover:text-gray-500": theme === THEME.photography || theme === THEME.transparent
133
+ }
134
+ ];
135
+ };
136
+ var getActiveContainerTheme = (theme, style) => {
137
+ return [
138
+ // default theme
139
+ {
140
+ "text-gray-800 hover:text-gray-800": style === 2 /* LIGHT */,
141
+ "text-brand-heavy hover:text-brand-heavy": style === 1 /* DARK */,
142
+ "text-brand-dark hover:text-brand-dark": style === 0 /* BRAND */
143
+ },
144
+ // photography theme
145
+ {
146
+ "text-gray-400 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */,
147
+ "text-supportive-pastel hover:text-supportive-pastel": theme === THEME.photography && style !== 2 /* LIGHT */
148
+ },
149
+ // transparent theme
150
+ {
151
+ "text-gray-black hover:text-gray-black": theme === THEME.transparent && style === 2 /* LIGHT */,
152
+ "text-gray-200 hover:text-gray-200": theme === THEME.transparent && style !== 2 /* LIGHT */
153
+ }
154
+ ];
155
+ };
156
+ var getContainerTheme = (theme, style) => {
157
+ return [
158
+ // default theme
159
+ {
160
+ "text-gray-600 hover:text-gray-800": style === 2 /* LIGHT */,
161
+ "text-gray-800 hover:text-brand-heavy": style === 1 /* DARK */,
162
+ "text-brand-heavy hover:text-brand-dark": style === 0 /* BRAND */
163
+ },
164
+ // photography
165
+ {
166
+ "text-gray-300 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */,
167
+ "text-gray-white hover:text-supportive-pastel": theme === THEME.photography && style === 1 /* DARK */,
168
+ "text-supportive-faded hover:text-supportive-pastel": theme === THEME.photography && style === 0 /* BRAND */
169
+ },
170
+ // transparent theme
171
+ {
172
+ "text-gray-800 hover:text-gray-black": theme === THEME.transparent && style === 2 /* LIGHT */,
173
+ "text-gray-white hover:text-gray-200": theme === THEME.transparent && style !== 2 /* LIGHT */
174
+ }
175
+ ];
176
+ };
177
+ var TextButton = ({
178
+ text,
179
+ leftIconComponent,
180
+ rightIconComponent,
181
+ size = 0 /* S */,
182
+ theme = THEME.normal,
183
+ style = 1 /* DARK */,
184
+ active = false,
185
+ disabled = false,
186
+ loading = false,
187
+ className = ""
188
+ }) => {
189
+ const TextJSX = React.useMemo(
190
+ () => size === 0 /* S */ ? /* @__PURE__ */ jsxRuntime.jsx(P2, { text, weight: P2.Weight.bold }) : /* @__PURE__ */ jsxRuntime.jsx(P1, { text, weight: P1.Weight.bold }),
191
+ [size, text]
192
+ );
193
+ const themeClass = React.useMemo(() => {
194
+ const themeFunc = disabled ? getDisabledContainerTheme : active ? getActiveContainerTheme : getContainerTheme;
195
+ return themeFunc(theme, style);
196
+ }, [disabled, active, theme, style]);
197
+ return /* @__PURE__ */ jsxRuntime.jsx(
198
+ "div",
199
+ {
200
+ className: clsx2__default.default(
201
+ "flex items-center",
202
+ {
203
+ "cursor-default": disabled,
204
+ "cursor-pointer": !disabled
205
+ },
206
+ themeClass,
207
+ className
208
+ ),
209
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex justify-center items-center", children: [
210
+ /* @__PURE__ */ jsxRuntime.jsxs(
211
+ "div",
212
+ {
213
+ className: clsx2__default.default("flex justify-center items-center", {
214
+ "opacity-0": loading,
215
+ "opacity-100": !loading
216
+ }),
217
+ children: [
218
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center mr-[4px]", children: leftIconComponent }),
219
+ TextJSX,
220
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center ml-[4px]", children: rightIconComponent })
221
+ ]
222
+ }
223
+ ),
224
+ /* @__PURE__ */ jsxRuntime.jsx(
225
+ "span",
226
+ {
227
+ className: clsx2__default.default(
228
+ "inline-block absolute box-border animation-spin",
229
+ "border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]",
230
+ {
231
+ "size-[18px]": size === 0 /* S */,
232
+ "size-[24px]": size === 1 /* L */
233
+ },
234
+ {
235
+ "opacity-0": !loading,
236
+ "opacity-100": loading
237
+ }
238
+ )
239
+ }
240
+ )
241
+ ] })
242
+ }
243
+ );
244
+ };
245
+ TextButton.Size = Size;
246
+ TextButton.Style = Style;
247
+ TextButton.THEME = THEME;
248
+ var text_button_default = TextButton;
249
+ var TabItem = ({
250
+ text,
251
+ link,
252
+ isExternal = false,
253
+ isActive = false,
254
+ onClick,
255
+ className = ""
256
+ }) => {
257
+ const CustomizedLink = isExternal ? external_link_default : internal_link_default;
258
+ return /* @__PURE__ */ jsxRuntime.jsx(
259
+ "button",
260
+ {
261
+ className: clsx2__default.default("flex shrink-0 mr-[24px] last:mr-0", className),
262
+ onClick,
263
+ type: "button",
264
+ children: /* @__PURE__ */ jsxRuntime.jsx(CustomizedLink, { to: link, children: /* @__PURE__ */ jsxRuntime.jsx(
265
+ text_button_default,
266
+ {
267
+ text,
268
+ active: isActive,
269
+ size: text_button_default.Size.L,
270
+ className: "py-[16px]"
271
+ }
272
+ ) })
273
+ }
274
+ );
275
+ };
276
+ var tab_item_default = TabItem;
277
+ var baseClass2 = "font-bold";
278
+ var variantClass2 = {
279
+ H1: "text-[28px] leading-[125%] tablet:text-[36px]",
280
+ H2: "text-[24px] leading-[125%] tablet:text-[32px]",
281
+ H3: "text-[22px] leading-[150%] tablet:text-[28px]",
282
+ H4: "text-[18px] leading-[150%] tablet:text-[22px]",
283
+ H5: "text-[17px] leading-[150%] tablet:text-[18px]",
284
+ H6: "text-[16px] leading-[150%] tablet:text-[16px]"
285
+ };
286
+ var HeadingVariant = (variant) => {
287
+ const Component = ({
288
+ text = "",
289
+ type = TYPE.default,
290
+ className = "",
291
+ ...props
292
+ }) => {
293
+ const htmlTag = variant.toLowerCase();
294
+ const fontFamily = type === TYPE.article ? "font-title" : "font-default";
295
+ return React__default.default.createElement(
296
+ htmlTag,
297
+ {
298
+ className: clsx2__default.default(
299
+ fontFamily,
300
+ baseClass2,
301
+ variantClass2[variant],
302
+ className
303
+ ),
304
+ ...props
305
+ },
306
+ text
307
+ );
308
+ };
309
+ Component.displayName = variant;
310
+ Component.Type = TYPE;
311
+ return Component;
312
+ };
313
+ var H1 = HeadingVariant("H1");
314
+ HeadingVariant("H2");
315
+ HeadingVariant("H3");
316
+ HeadingVariant("H4");
317
+ HeadingVariant("H5");
318
+ HeadingVariant("H6");
319
+ var TitleTab = ({
320
+ title,
321
+ tabs = [],
322
+ activeTabIndex = 0
323
+ }) => {
324
+ const [activeIndex, setActiveIndex] = React.useState(activeTabIndex);
325
+ const [showGradientMask, setShowGradientMask] = React.useState(false);
326
+ const ref = useScrollStatus(setShowGradientMask);
327
+ React.useEffect(() => {
328
+ setActiveIndex(activeTabIndex);
329
+ }, [activeTabIndex]);
330
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full text-gray-800", children: [
331
+ /* @__PURE__ */ jsxRuntime.jsx(H1, { text: title }),
332
+ tabs.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
333
+ "div",
334
+ {
335
+ ref,
336
+ className: clsx2__default.default(
337
+ "flex items-center",
338
+ "overflow-x-scroll scrollbar:!w-0",
339
+ {
340
+ "[mask-image:linear-gradient(to_left,rgba(241,241,241,0),#f1f1f1_48px)] [-webkit-mask-image:linear-gradient(to_left,rgba(241,241,241,0),#f1f1f1_48px)]": showGradientMask
341
+ }
342
+ ),
343
+ children: tabs.map((tab, index) => {
344
+ const tabProps = { ...tab, isActive: index === activeIndex };
345
+ const handleClick = () => {
346
+ setActiveIndex(index);
347
+ };
348
+ return /* @__PURE__ */ React.createElement(tab_item_default, { ...tabProps, key: `tab-${tab.text}-${index}`, onClick: handleClick });
349
+ })
350
+ }
351
+ ) : null,
352
+ /* @__PURE__ */ jsxRuntime.jsx(
353
+ "div",
354
+ {
355
+ className: clsx2__default.default(
356
+ "w-full h-[1px] bg-gray-300 mt-[0px]",
357
+ "desktop:mt-[0px]"
358
+ )
359
+ }
360
+ )
361
+ ] });
362
+ };
363
+ var title_tab_default = TitleTab;
364
+
365
+ module.exports = title_tab_default;
366
+ //# sourceMappingURL=index.js.map
367
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/title-bar/components/title-tab/hook.ts","../../../../src/customized-link/external-link.tsx","../../../../src/customized-link/internal-link.tsx","../../../../src/text/enum/index.ts","../../../../src/text/paragraph.tsx","../../../../src/button/enum.ts","../../../../src/button/constant.ts","../../../../src/button/components/text-button/theme.ts","../../../../src/button/components/text-button/index.tsx","../../../../src/title-bar/components/title-tab/tab-item.tsx","../../../../src/text/heading.tsx","../../../../src/title-bar/components/title-tab/index.tsx"],"names":["useRef","useEffect","jsx","Link","clsx","Size","Style","useMemo","jsxs","baseClass","variantClass","React","useState","createElement"],"mappings":"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","file":"index.js","sourcesContent":["import { useRef, useEffect } from 'react'\n\nexport const useScrollStatus = (setShowNext: (show: boolean) => void) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!ref.current) return\n\n if (ref.current.scrollWidth > ref.current.clientWidth) {\n // scrollbar occur\n setShowNext(true)\n }\n }, [setShowNext])\n\n useEffect(() => {\n if (!ref.current) return\n\n const refEle = ref.current\n const handleScroll: EventListener = () => {\n if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {\n // scroll to end\n setShowNext(false)\n } else {\n setShowNext(true)\n }\n }\n\n refEle.addEventListener('scroll', handleScroll)\n\n return () => {\n refEle.removeEventListener('scroll', handleScroll)\n }\n }, [setShowNext])\n\n return ref\n}\n","import type { FC } from 'react'\nimport type { CustomizedLinkProps } from './type'\n\ntype ExternalLinkProps = CustomizedLinkProps\nconst ExternalLink: FC<ExternalLinkProps> = ({\n to,\n target = '_self',\n className = '',\n children,\n}) => {\n return (\n <a href={to} target={target} className={className}>\n {children}\n </a>\n )\n}\n\nexport default ExternalLink\n","'use client'\n\nimport Link from 'next/link'\nimport type { FC } from 'react'\nimport type { CustomizedLinkProps } from './type'\n\ntype InternalLinkProps = CustomizedLinkProps\nconst InternalLink: FC<InternalLinkProps> = ({\n to,\n target = '_self',\n className = '',\n children,\n}) => {\n return (\n <Link href={to} target={target} className={className}>\n {children}\n </Link>\n )\n}\n\nexport default InternalLink\n","import type { ValuesOf } from '../../types'\n\nexport const TYPE = {\n default: 'default',\n article: 'article',\n} as const\n\nexport type Type = ValuesOf<typeof TYPE>\n\nexport const WEIGHT = {\n extraLight: 'extra-light',\n normal: 'normal',\n bold: 'bold',\n} as const\n\nexport type Weight = ValuesOf<typeof WEIGHT>\n","import clsx from 'clsx'\nimport type React from 'react'\nimport { WEIGHT, type Weight } from './enum'\n\ntype ParagraphProps = React.HTMLAttributes<HTMLParagraphElement> & {\n text?: string\n weight?: Weight\n className?: string\n}\n\nconst baseClass = 'font-default leading-[150%] flex items-center m-0'\n\nconst variantClass = {\n P1: 'text-[16px]',\n P2: 'text-[14px]',\n P3: 'text-[12px]',\n P4: 'text-[10px]',\n}\n\nconst ParagraphVariant = (variant: keyof typeof variantClass) => {\n const Component: React.FC<ParagraphProps> & { Weight: typeof WEIGHT } = ({\n text = '',\n weight = WEIGHT.normal,\n className = '',\n ...props\n }) => (\n <p\n className={clsx(\n baseClass,\n variantClass[variant],\n `font-${weight}`,\n className\n )}\n {...props}\n >\n {text}\n </p>\n )\n Component.displayName = variant\n Component.Weight = WEIGHT\n return Component\n}\n\nconst P1 = ParagraphVariant('P1')\nconst P2 = ParagraphVariant('P2')\nconst P3 = ParagraphVariant('P3')\nconst P4 = ParagraphVariant('P4')\n\nexport { P1, P2, P3, P4 }\n","export enum Size {\n S,\n L,\n}\n\nexport enum Style {\n BRAND,\n DARK,\n LIGHT,\n}\n","import type { ValuesOf } from '../types'\n\nexport const THEME = {\n normal: 'normal',\n photography: 'photography',\n transparent: 'transparent',\n index: 'index',\n} as const\n\nexport type Theme = ValuesOf<typeof THEME>\n","// constants\nimport { THEME } from '../../constant'\n// type\nimport type { Theme } from '../../constant'\nimport type { ClassArray } from 'clsx'\n// enum\nimport { Style } from '../../enum'\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': 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': theme === THEME.photography && style === Style.LIGHT,\n 'text-supportive-pastel hover:text-supportive-pastel': theme === THEME.photography && style !== Style.LIGHT,\n },\n // transparent theme\n {\n 'text-gray-black hover:text-gray-black': theme === THEME.transparent && style === Style.LIGHT,\n 'text-gray-200 hover:text-gray-200': 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': theme === THEME.photography && style === Style.LIGHT,\n 'text-gray-white hover:text-supportive-pastel': theme === THEME.photography && style === Style.DARK,\n 'text-supportive-faded hover:text-supportive-pastel': theme === THEME.photography && style === Style.BRAND,\n },\n // transparent theme\n {\n 'text-gray-800 hover:text-gray-black': theme === THEME.transparent && style === Style.LIGHT,\n 'text-gray-white hover:text-gray-200': theme === THEME.transparent && style !== Style.LIGHT,\n },\n ]\n}","import { type FC, type ReactElement, useMemo } from 'react'\nimport clsx from 'clsx'\n// components\nimport { P1, P2 } from '../../../text/paragraph'\n// enums\nimport { Size, Style } from '../../enum'\n// type\nimport type { Theme } from '../../constant'\n// constants\nimport { THEME } from '../../constant'\n// utils\nimport { getContainerTheme, getActiveContainerTheme, getDisabledContainerTheme } 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 () => (size === Size.S ? <P2 text={text} weight={P2.Weight.bold} /> : <P1 text={text} weight={P1.Weight.bold} />),\n [size, text]\n )\n const themeClass = useMemo(() => {\n const themeFunc = disabled ? getDisabledContainerTheme : (active ? getActiveContainerTheme : 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 animation-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","import clsx from 'clsx'\nimport type { FC } from 'react'\n// type\nimport type { Tab } from './type'\n// component\nimport { ExternalLink, InternalLink } from '../../../customized-link'\nimport { TextButton } from '../../../button'\n\ntype TabItemProps = Tab & {\n onClick: () => void\n className?: string\n}\nconst TabItem: FC<TabItemProps> = ({\n text,\n link,\n isExternal = false,\n isActive = false,\n onClick,\n className = '',\n}) => {\n const CustomizedLink = isExternal ? ExternalLink : InternalLink\n return (\n <button\n className={clsx('flex shrink-0 mr-[24px] last:mr-0', className)}\n onClick={onClick}\n type=\"button\"\n >\n <CustomizedLink to={link}>\n <TextButton\n text={text}\n active={isActive}\n size={TextButton.Size.L}\n className=\"py-[16px]\"\n />\n </CustomizedLink>\n </button>\n )\n}\n\nexport default TabItem\n","import clsx from 'clsx'\nimport React from 'react'\nimport { TYPE, type Type } from './enum'\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","import clsx from 'clsx'\nimport { type FC, useState, useEffect } from 'react'\n// hook\nimport { useScrollStatus } from './hook'\n// components\nimport TabItem from './tab-item'\nimport { H1 } from '../../../text/heading'\n// type\nimport type { Tab } from './type'\n\ntype TitleTabProps = {\n title: string\n tabs: Tab[]\n activeTabIndex?: number\n}\nconst TitleTab: FC<TitleTabProps> = ({\n title,\n tabs = [],\n activeTabIndex = 0,\n}) => {\n const [activeIndex, setActiveIndex] = useState(activeTabIndex)\n const [showGradientMask, setShowGradientMask] = useState(false)\n\n const ref = useScrollStatus(setShowGradientMask)\n\n useEffect(() => {\n setActiveIndex(activeTabIndex)\n }, [activeTabIndex])\n\n return (\n <div className=\"flex flex-col w-full text-gray-800\">\n <H1 text={title} />\n {tabs.length > 0 ? (\n <div\n ref={ref}\n className={clsx(\n 'flex items-center',\n 'overflow-x-scroll scrollbar:!w-0',\n {\n '[mask-image:linear-gradient(to_left,rgba(241,241,241,0),#f1f1f1_48px)] [-webkit-mask-image:linear-gradient(to_left,rgba(241,241,241,0),#f1f1f1_48px)]':\n showGradientMask,\n }\n )}\n >\n {tabs.map((tab, index) => {\n const tabProps = { ...tab, isActive: index === activeIndex }\n const handleClick = () => {\n setActiveIndex(index)\n }\n return (\n <TabItem {...tabProps} key={`tab-${tab.text}-${index}`} onClick={handleClick} />\n )\n })}\n </div>\n ) : null}\n <div\n className={clsx(\n 'w-full h-[1px] bg-gray-300 mt-[0px]',\n 'desktop:mt-[0px]'\n )}\n />\n </div>\n )\n}\n\nexport default TitleTab\n"]}
@@ -0,0 +1,16 @@
1
+ export { title_tab_default as default } from '../../../chunk-7NJDHQ2X.mjs';
2
+ import '../../../chunk-GQWO45DN.mjs';
3
+ import '../../../chunk-FF422IYY.mjs';
4
+ import '../../../chunk-JHLT5GDV.mjs';
5
+ import '../../../chunk-ELECTE3D.mjs';
6
+ import '../../../chunk-U22UKMAJ.mjs';
7
+ import '../../../chunk-FVKIUNIP.mjs';
8
+ import '../../../chunk-HQG6Q2EY.mjs';
9
+ import '../../../chunk-UM7RNC2Y.mjs';
10
+ import '../../../chunk-JB4TYHDE.mjs';
11
+ import '../../../chunk-URJXIWFX.mjs';
12
+ import '../../../chunk-JFT6JILC.mjs';
13
+ import '../../../chunk-X2UWIBNH.mjs';
14
+ import '../../../chunk-XO7SDD7W.mjs';
15
+ //# sourceMappingURL=index.mjs.map
16
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { Tab } from './type.mjs';
3
+
4
+ type TabItemProps = Tab & {
5
+ onClick: () => void;
6
+ className?: string;
7
+ };
8
+ declare const TabItem: FC<TabItemProps>;
9
+
10
+ export { TabItem as default };
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { Tab } from './type.js';
3
+
4
+ type TabItemProps = Tab & {
5
+ onClick: () => void;
6
+ className?: string;
7
+ };
8
+ declare const TabItem: FC<TabItemProps>;
9
+
10
+ export { TabItem as default };