@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.
- package/README.md +11 -1
- package/lib/button/components/text-button/index.d.mts +24 -0
- package/lib/button/components/text-button/index.d.ts +24 -0
- package/lib/button/components/text-button/index.js +202 -0
- package/lib/button/components/text-button/index.js.map +1 -0
- package/lib/button/components/text-button/index.mjs +8 -0
- package/lib/button/components/text-button/index.mjs.map +1 -0
- package/lib/button/components/text-button/theme.d.mts +11 -0
- package/lib/button/components/text-button/theme.d.ts +11 -0
- package/lib/button/components/text-button/theme.js +65 -0
- package/lib/button/components/text-button/theme.js.map +1 -0
- package/lib/button/components/text-button/theme.mjs +5 -0
- package/lib/button/components/text-button/theme.mjs.map +1 -0
- package/lib/button/constant.d.mts +11 -0
- package/lib/button/constant.d.ts +11 -0
- package/lib/button/constant.js +13 -0
- package/lib/button/constant.js.map +1 -0
- package/lib/button/constant.mjs +3 -0
- package/lib/button/constant.mjs.map +1 -0
- package/lib/button/enum.d.mts +11 -0
- package/lib/button/enum.d.ts +11 -0
- package/lib/button/enum.js +19 -0
- package/lib/button/enum.js.map +1 -0
- package/lib/button/enum.mjs +3 -0
- package/lib/button/enum.mjs.map +1 -0
- package/lib/button/index.d.mts +26 -0
- package/lib/button/index.d.ts +26 -0
- package/lib/button/index.js +208 -0
- package/lib/button/index.js.map +1 -0
- package/lib/button/index.mjs +9 -0
- package/lib/button/index.mjs.map +1 -0
- package/lib/button/stories/text-button.stories.d.mts +55 -0
- package/lib/button/stories/text-button.stories.d.ts +55 -0
- package/lib/button/stories/text-button.stories.js +252 -0
- package/lib/button/stories/text-button.stories.js.map +1 -0
- package/lib/button/stories/text-button.stories.mjs +35 -0
- package/lib/button/stories/text-button.stories.mjs.map +1 -0
- package/lib/{chunk-3B7LTZRJ.mjs → chunk-6DXA3EX7.mjs} +8 -6
- package/lib/chunk-6DXA3EX7.mjs.map +1 -0
- package/lib/chunk-7NJDHQ2X.mjs +56 -0
- package/lib/chunk-7NJDHQ2X.mjs.map +1 -0
- package/lib/chunk-ELECTE3D.mjs +8 -0
- package/lib/chunk-ELECTE3D.mjs.map +1 -0
- package/lib/chunk-FF422IYY.mjs +38 -0
- package/lib/chunk-FF422IYY.mjs.map +1 -0
- package/lib/chunk-FVKIUNIP.mjs +58 -0
- package/lib/chunk-FVKIUNIP.mjs.map +1 -0
- package/lib/chunk-GQWO45DN.mjs +32 -0
- package/lib/chunk-GQWO45DN.mjs.map +1 -0
- package/lib/chunk-JB4TYHDE.mjs +11 -0
- package/lib/chunk-JB4TYHDE.mjs.map +1 -0
- package/lib/chunk-JFT6JILC.mjs +12 -0
- package/lib/chunk-JFT6JILC.mjs.map +1 -0
- package/lib/chunk-QOLETTSG.mjs +28 -0
- package/lib/chunk-QOLETTSG.mjs.map +1 -0
- package/lib/chunk-U22UKMAJ.mjs +84 -0
- package/lib/chunk-U22UKMAJ.mjs.map +1 -0
- package/lib/chunk-URJXIWFX.mjs +16 -0
- package/lib/chunk-URJXIWFX.mjs.map +1 -0
- package/lib/chunk-X2UWIBNH.mjs +16 -0
- package/lib/chunk-X2UWIBNH.mjs.map +1 -0
- package/lib/chunk-XO7SDD7W.mjs +17 -0
- package/lib/chunk-XO7SDD7W.mjs.map +1 -0
- package/lib/chunk-ZALXWB2J.mjs +27 -0
- package/lib/chunk-ZALXWB2J.mjs.map +1 -0
- package/lib/customized-link/external-link.d.mts +7 -0
- package/lib/customized-link/external-link.d.ts +7 -0
- package/lib/customized-link/external-link.js +18 -0
- package/lib/customized-link/external-link.js.map +1 -0
- package/lib/customized-link/external-link.mjs +3 -0
- package/lib/customized-link/external-link.mjs.map +1 -0
- package/lib/customized-link/index.d.mts +11 -0
- package/lib/customized-link/index.d.ts +11 -0
- package/lib/customized-link/index.js +42 -0
- package/lib/customized-link/index.js.map +1 -0
- package/lib/customized-link/index.mjs +5 -0
- package/lib/customized-link/index.mjs.map +1 -0
- package/lib/customized-link/internal-link.d.mts +7 -0
- package/lib/customized-link/internal-link.d.ts +7 -0
- package/lib/customized-link/internal-link.js +22 -0
- package/lib/customized-link/internal-link.js.map +1 -0
- package/lib/customized-link/internal-link.mjs +3 -0
- package/lib/customized-link/internal-link.mjs.map +1 -0
- package/lib/customized-link/type.d.mts +9 -0
- package/lib/customized-link/type.d.ts +9 -0
- package/lib/customized-link/type.js +4 -0
- package/lib/customized-link/type.js.map +1 -0
- package/lib/customized-link/type.mjs +3 -0
- package/lib/customized-link/type.mjs.map +1 -0
- package/lib/storybook/utils/get-enum-arg.d.mts +19 -0
- package/lib/storybook/utils/get-enum-arg.d.ts +19 -0
- package/lib/storybook/utils/get-enum-arg.js +31 -0
- package/lib/storybook/utils/get-enum-arg.js.map +1 -0
- package/lib/storybook/utils/get-enum-arg.mjs +3 -0
- package/lib/storybook/utils/get-enum-arg.mjs.map +1 -0
- package/lib/styles.css +199 -2
- package/lib/styles.css.map +1 -1
- package/lib/text/heading.d.mts +8 -8
- package/lib/text/heading.d.ts +8 -8
- package/lib/text/paragraph.d.mts +6 -6
- package/lib/text/paragraph.d.ts +6 -6
- package/lib/text/stories/heading.stories.d.mts +35 -0
- package/lib/text/stories/heading.stories.d.ts +35 -0
- package/lib/text/stories/heading.stories.js +131 -0
- package/lib/text/stories/heading.stories.js.map +1 -0
- package/lib/text/stories/heading.stories.mjs +50 -0
- package/lib/text/stories/heading.stories.mjs.map +1 -0
- package/lib/text/stories/paragraph.stories.d.mts +33 -0
- package/lib/text/stories/paragraph.stories.d.ts +33 -0
- package/lib/text/stories/paragraph.stories.js +108 -0
- package/lib/text/stories/paragraph.stories.js.map +1 -0
- package/lib/text/stories/paragraph.stories.mjs +40 -0
- package/lib/text/stories/paragraph.stories.mjs.map +1 -0
- package/lib/title-bar/components/title-tab/hook.d.mts +5 -0
- package/lib/title-bar/components/title-tab/hook.d.ts +5 -0
- package/lib/title-bar/components/title-tab/hook.js +34 -0
- package/lib/title-bar/components/title-tab/hook.js.map +1 -0
- package/lib/title-bar/components/title-tab/hook.mjs +3 -0
- package/lib/title-bar/components/title-tab/hook.mjs.map +1 -0
- package/lib/title-bar/components/title-tab/index.d.mts +11 -0
- package/lib/title-bar/components/title-tab/index.d.ts +11 -0
- package/lib/title-bar/components/title-tab/index.js +367 -0
- package/lib/title-bar/components/title-tab/index.js.map +1 -0
- package/lib/title-bar/components/title-tab/index.mjs +16 -0
- package/lib/title-bar/components/title-tab/index.mjs.map +1 -0
- package/lib/title-bar/components/title-tab/tab-item.d.mts +10 -0
- package/lib/title-bar/components/title-tab/tab-item.d.ts +10 -0
- package/lib/title-bar/components/title-tab/tab-item.js +250 -0
- package/lib/title-bar/components/title-tab/tab-item.js.map +1 -0
- package/lib/title-bar/components/title-tab/tab-item.mjs +13 -0
- package/lib/title-bar/components/title-tab/tab-item.mjs.map +1 -0
- package/lib/title-bar/components/title-tab/type.d.mts +8 -0
- package/lib/title-bar/components/title-tab/type.d.ts +8 -0
- package/lib/title-bar/components/title-tab/type.js +4 -0
- package/lib/title-bar/components/title-tab/type.js.map +1 -0
- package/lib/title-bar/components/title-tab/type.mjs +3 -0
- package/lib/title-bar/components/title-tab/type.mjs.map +1 -0
- package/lib/title-bar/components/title1.d.mts +10 -0
- package/lib/title-bar/components/title1.d.ts +10 -0
- package/lib/title-bar/components/title1.js +123 -0
- package/lib/title-bar/components/title1.js.map +1 -0
- package/lib/title-bar/components/title1.mjs +6 -0
- package/lib/title-bar/components/title1.mjs.map +1 -0
- package/lib/title-bar/components/title2.d.mts +3 -3
- package/lib/title-bar/components/title2.d.ts +3 -3
- package/lib/title-bar/components/title2.js +6 -4
- package/lib/title-bar/components/title2.js.map +1 -1
- package/lib/title-bar/components/title2.mjs +1 -1
- package/lib/title-bar/index.d.mts +15 -2
- package/lib/title-bar/index.d.ts +15 -2
- package/lib/title-bar/index.js +296 -8
- package/lib/title-bar/index.js.map +1 -1
- package/lib/title-bar/index.mjs +19 -3
- package/lib/title-bar/index.mjs.map +1 -1
- package/lib/title-bar/stories/title-tab.stories.d.mts +17 -0
- package/lib/title-bar/stories/title-tab.stories.d.ts +17 -0
- package/lib/title-bar/stories/title-tab.stories.js +391 -0
- package/lib/title-bar/stories/title-tab.stories.js.map +1 -0
- package/lib/title-bar/stories/title-tab.stories.mjs +39 -0
- package/lib/title-bar/stories/title-tab.stories.mjs.map +1 -0
- package/lib/title-bar/stories/title1.stories.d.mts +18 -0
- package/lib/title-bar/stories/title1.stories.d.ts +18 -0
- package/lib/title-bar/stories/title1.stories.js +155 -0
- package/lib/title-bar/stories/title1.stories.js.map +1 -0
- package/lib/title-bar/stories/title1.stories.mjs +35 -0
- package/lib/title-bar/stories/title1.stories.mjs.map +1 -0
- package/lib/title-bar/stories/title2.stories.d.mts +18 -0
- package/lib/title-bar/stories/title2.stories.d.ts +18 -0
- package/lib/title-bar/stories/title2.stories.js +304 -0
- package/lib/title-bar/stories/title2.stories.js.map +1 -0
- package/lib/title-bar/stories/title2.stories.mjs +38 -0
- package/lib/title-bar/stories/title2.stories.mjs.map +1 -0
- package/package.json +12 -5
- package/lib/chunk-3B7LTZRJ.mjs.map +0 -1
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var clsx2 = require('clsx');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var Link = require('next/link');
|
|
9
|
+
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var clsx2__default = /*#__PURE__*/_interopDefault(clsx2);
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
14
|
+
var Link__default = /*#__PURE__*/_interopDefault(Link);
|
|
15
|
+
|
|
16
|
+
// src/title-bar/components/title-tab/index.tsx
|
|
17
|
+
var useScrollStatus = (setShowNext) => {
|
|
18
|
+
const ref = React.useRef(null);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
if (!ref.current) return;
|
|
21
|
+
if (ref.current.scrollWidth > ref.current.clientWidth) {
|
|
22
|
+
setShowNext(true);
|
|
23
|
+
}
|
|
24
|
+
}, [setShowNext]);
|
|
25
|
+
React.useEffect(() => {
|
|
26
|
+
if (!ref.current) return;
|
|
27
|
+
const refEle = ref.current;
|
|
28
|
+
const handleScroll = () => {
|
|
29
|
+
if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {
|
|
30
|
+
setShowNext(false);
|
|
31
|
+
} else {
|
|
32
|
+
setShowNext(true);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
refEle.addEventListener("scroll", handleScroll);
|
|
36
|
+
return () => {
|
|
37
|
+
refEle.removeEventListener("scroll", handleScroll);
|
|
38
|
+
};
|
|
39
|
+
}, [setShowNext]);
|
|
40
|
+
return ref;
|
|
41
|
+
};
|
|
42
|
+
var ExternalLink = ({
|
|
43
|
+
to,
|
|
44
|
+
target = "_self",
|
|
45
|
+
className = "",
|
|
46
|
+
children
|
|
47
|
+
}) => {
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsx("a", { href: to, target, className, children });
|
|
49
|
+
};
|
|
50
|
+
var external_link_default = ExternalLink;
|
|
51
|
+
var InternalLink = ({
|
|
52
|
+
to,
|
|
53
|
+
target = "_self",
|
|
54
|
+
className = "",
|
|
55
|
+
children
|
|
56
|
+
}) => {
|
|
57
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: to, target, className, children });
|
|
58
|
+
};
|
|
59
|
+
var internal_link_default = InternalLink;
|
|
60
|
+
|
|
61
|
+
// src/text/enum/index.ts
|
|
62
|
+
var TYPE = {
|
|
63
|
+
default: "default",
|
|
64
|
+
article: "article"
|
|
65
|
+
};
|
|
66
|
+
var WEIGHT = {
|
|
67
|
+
extraLight: "extra-light",
|
|
68
|
+
normal: "normal",
|
|
69
|
+
bold: "bold"
|
|
70
|
+
};
|
|
71
|
+
var baseClass = "font-default leading-[150%] flex items-center m-0";
|
|
72
|
+
var variantClass = {
|
|
73
|
+
P1: "text-[16px]",
|
|
74
|
+
P2: "text-[14px]",
|
|
75
|
+
P3: "text-[12px]",
|
|
76
|
+
P4: "text-[10px]"
|
|
77
|
+
};
|
|
78
|
+
var ParagraphVariant = (variant) => {
|
|
79
|
+
const Component = ({
|
|
80
|
+
text = "",
|
|
81
|
+
weight = WEIGHT.normal,
|
|
82
|
+
className = "",
|
|
83
|
+
...props
|
|
84
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
+
"p",
|
|
86
|
+
{
|
|
87
|
+
className: clsx2__default.default(
|
|
88
|
+
baseClass,
|
|
89
|
+
variantClass[variant],
|
|
90
|
+
`font-${weight}`,
|
|
91
|
+
className
|
|
92
|
+
),
|
|
93
|
+
...props,
|
|
94
|
+
children: text
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
Component.displayName = variant;
|
|
98
|
+
Component.Weight = WEIGHT;
|
|
99
|
+
return Component;
|
|
100
|
+
};
|
|
101
|
+
var P1 = ParagraphVariant("P1");
|
|
102
|
+
var P2 = ParagraphVariant("P2");
|
|
103
|
+
ParagraphVariant("P3");
|
|
104
|
+
ParagraphVariant("P4");
|
|
105
|
+
|
|
106
|
+
// src/button/enum.ts
|
|
107
|
+
var Size = /* @__PURE__ */ ((Size2) => {
|
|
108
|
+
Size2[Size2["S"] = 0] = "S";
|
|
109
|
+
Size2[Size2["L"] = 1] = "L";
|
|
110
|
+
return Size2;
|
|
111
|
+
})(Size || {});
|
|
112
|
+
var Style = /* @__PURE__ */ ((Style2) => {
|
|
113
|
+
Style2[Style2["BRAND"] = 0] = "BRAND";
|
|
114
|
+
Style2[Style2["DARK"] = 1] = "DARK";
|
|
115
|
+
Style2[Style2["LIGHT"] = 2] = "LIGHT";
|
|
116
|
+
return Style2;
|
|
117
|
+
})(Style || {});
|
|
118
|
+
|
|
119
|
+
// src/button/constant.ts
|
|
120
|
+
var THEME = {
|
|
121
|
+
normal: "normal",
|
|
122
|
+
photography: "photography",
|
|
123
|
+
transparent: "transparent",
|
|
124
|
+
index: "index"
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/button/components/text-button/theme.ts
|
|
128
|
+
var getDisabledContainerTheme = (theme) => {
|
|
129
|
+
return [
|
|
130
|
+
// default theme
|
|
131
|
+
"text-gray-400 hover:text-gray-400",
|
|
132
|
+
// photography & transparent theme
|
|
133
|
+
{
|
|
134
|
+
"text-gray-500 hover:text-gray-500": theme === THEME.photography || theme === THEME.transparent
|
|
135
|
+
}
|
|
136
|
+
];
|
|
137
|
+
};
|
|
138
|
+
var getActiveContainerTheme = (theme, style) => {
|
|
139
|
+
return [
|
|
140
|
+
// default theme
|
|
141
|
+
{
|
|
142
|
+
"text-gray-800 hover:text-gray-800": style === 2 /* LIGHT */,
|
|
143
|
+
"text-brand-heavy hover:text-brand-heavy": style === 1 /* DARK */,
|
|
144
|
+
"text-brand-dark hover:text-brand-dark": style === 0 /* BRAND */
|
|
145
|
+
},
|
|
146
|
+
// photography theme
|
|
147
|
+
{
|
|
148
|
+
"text-gray-400 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */,
|
|
149
|
+
"text-supportive-pastel hover:text-supportive-pastel": theme === THEME.photography && style !== 2 /* LIGHT */
|
|
150
|
+
},
|
|
151
|
+
// transparent theme
|
|
152
|
+
{
|
|
153
|
+
"text-gray-black hover:text-gray-black": theme === THEME.transparent && style === 2 /* LIGHT */,
|
|
154
|
+
"text-gray-200 hover:text-gray-200": theme === THEME.transparent && style !== 2 /* LIGHT */
|
|
155
|
+
}
|
|
156
|
+
];
|
|
157
|
+
};
|
|
158
|
+
var getContainerTheme = (theme, style) => {
|
|
159
|
+
return [
|
|
160
|
+
// default theme
|
|
161
|
+
{
|
|
162
|
+
"text-gray-600 hover:text-gray-800": style === 2 /* LIGHT */,
|
|
163
|
+
"text-gray-800 hover:text-brand-heavy": style === 1 /* DARK */,
|
|
164
|
+
"text-brand-heavy hover:text-brand-dark": style === 0 /* BRAND */
|
|
165
|
+
},
|
|
166
|
+
// photography
|
|
167
|
+
{
|
|
168
|
+
"text-gray-300 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */,
|
|
169
|
+
"text-gray-white hover:text-supportive-pastel": theme === THEME.photography && style === 1 /* DARK */,
|
|
170
|
+
"text-supportive-faded hover:text-supportive-pastel": theme === THEME.photography && style === 0 /* BRAND */
|
|
171
|
+
},
|
|
172
|
+
// transparent theme
|
|
173
|
+
{
|
|
174
|
+
"text-gray-800 hover:text-gray-black": theme === THEME.transparent && style === 2 /* LIGHT */,
|
|
175
|
+
"text-gray-white hover:text-gray-200": theme === THEME.transparent && style !== 2 /* LIGHT */
|
|
176
|
+
}
|
|
177
|
+
];
|
|
178
|
+
};
|
|
179
|
+
var TextButton = ({
|
|
180
|
+
text,
|
|
181
|
+
leftIconComponent,
|
|
182
|
+
rightIconComponent,
|
|
183
|
+
size = 0 /* S */,
|
|
184
|
+
theme = THEME.normal,
|
|
185
|
+
style = 1 /* DARK */,
|
|
186
|
+
active = false,
|
|
187
|
+
disabled = false,
|
|
188
|
+
loading = false,
|
|
189
|
+
className = ""
|
|
190
|
+
}) => {
|
|
191
|
+
const TextJSX = React.useMemo(
|
|
192
|
+
() => size === 0 /* S */ ? /* @__PURE__ */ jsxRuntime.jsx(P2, { text, weight: P2.Weight.bold }) : /* @__PURE__ */ jsxRuntime.jsx(P1, { text, weight: P1.Weight.bold }),
|
|
193
|
+
[size, text]
|
|
194
|
+
);
|
|
195
|
+
const themeClass = React.useMemo(() => {
|
|
196
|
+
const themeFunc = disabled ? getDisabledContainerTheme : active ? getActiveContainerTheme : getContainerTheme;
|
|
197
|
+
return themeFunc(theme, style);
|
|
198
|
+
}, [disabled, active, theme, style]);
|
|
199
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
+
"div",
|
|
201
|
+
{
|
|
202
|
+
className: clsx2__default.default(
|
|
203
|
+
"flex items-center",
|
|
204
|
+
{
|
|
205
|
+
"cursor-default": disabled,
|
|
206
|
+
"cursor-pointer": !disabled
|
|
207
|
+
},
|
|
208
|
+
themeClass,
|
|
209
|
+
className
|
|
210
|
+
),
|
|
211
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex justify-center items-center", children: [
|
|
212
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
213
|
+
"div",
|
|
214
|
+
{
|
|
215
|
+
className: clsx2__default.default("flex justify-center items-center", {
|
|
216
|
+
"opacity-0": loading,
|
|
217
|
+
"opacity-100": !loading
|
|
218
|
+
}),
|
|
219
|
+
children: [
|
|
220
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center mr-[4px]", children: leftIconComponent }),
|
|
221
|
+
TextJSX,
|
|
222
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center ml-[4px]", children: rightIconComponent })
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
),
|
|
226
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
227
|
+
"span",
|
|
228
|
+
{
|
|
229
|
+
className: clsx2__default.default(
|
|
230
|
+
"inline-block absolute box-border animation-spin",
|
|
231
|
+
"border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]",
|
|
232
|
+
{
|
|
233
|
+
"size-[18px]": size === 0 /* S */,
|
|
234
|
+
"size-[24px]": size === 1 /* L */
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"opacity-0": !loading,
|
|
238
|
+
"opacity-100": loading
|
|
239
|
+
}
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
)
|
|
243
|
+
] })
|
|
244
|
+
}
|
|
245
|
+
);
|
|
246
|
+
};
|
|
247
|
+
TextButton.Size = Size;
|
|
248
|
+
TextButton.Style = Style;
|
|
249
|
+
TextButton.THEME = THEME;
|
|
250
|
+
var text_button_default = TextButton;
|
|
251
|
+
var TabItem = ({
|
|
252
|
+
text,
|
|
253
|
+
link,
|
|
254
|
+
isExternal = false,
|
|
255
|
+
isActive = false,
|
|
256
|
+
onClick,
|
|
257
|
+
className = ""
|
|
258
|
+
}) => {
|
|
259
|
+
const CustomizedLink = isExternal ? external_link_default : internal_link_default;
|
|
260
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
261
|
+
"button",
|
|
262
|
+
{
|
|
263
|
+
className: clsx2__default.default("flex shrink-0 mr-[24px] last:mr-0", className),
|
|
264
|
+
onClick,
|
|
265
|
+
type: "button",
|
|
266
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CustomizedLink, { to: link, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
267
|
+
text_button_default,
|
|
268
|
+
{
|
|
269
|
+
text,
|
|
270
|
+
active: isActive,
|
|
271
|
+
size: text_button_default.Size.L,
|
|
272
|
+
className: "py-[16px]"
|
|
273
|
+
}
|
|
274
|
+
) })
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
};
|
|
278
|
+
var tab_item_default = TabItem;
|
|
279
|
+
var baseClass2 = "font-bold";
|
|
280
|
+
var variantClass2 = {
|
|
281
|
+
H1: "text-[28px] leading-[125%] tablet:text-[36px]",
|
|
282
|
+
H2: "text-[24px] leading-[125%] tablet:text-[32px]",
|
|
283
|
+
H3: "text-[22px] leading-[150%] tablet:text-[28px]",
|
|
284
|
+
H4: "text-[18px] leading-[150%] tablet:text-[22px]",
|
|
285
|
+
H5: "text-[17px] leading-[150%] tablet:text-[18px]",
|
|
286
|
+
H6: "text-[16px] leading-[150%] tablet:text-[16px]"
|
|
287
|
+
};
|
|
288
|
+
var HeadingVariant = (variant) => {
|
|
289
|
+
const Component = ({
|
|
290
|
+
text = "",
|
|
291
|
+
type = TYPE.default,
|
|
292
|
+
className = "",
|
|
293
|
+
...props
|
|
294
|
+
}) => {
|
|
295
|
+
const htmlTag = variant.toLowerCase();
|
|
296
|
+
const fontFamily = type === TYPE.article ? "font-title" : "font-default";
|
|
297
|
+
return React__default.default.createElement(
|
|
298
|
+
htmlTag,
|
|
299
|
+
{
|
|
300
|
+
className: clsx2__default.default(
|
|
301
|
+
fontFamily,
|
|
302
|
+
baseClass2,
|
|
303
|
+
variantClass2[variant],
|
|
304
|
+
className
|
|
305
|
+
),
|
|
306
|
+
...props
|
|
307
|
+
},
|
|
308
|
+
text
|
|
309
|
+
);
|
|
310
|
+
};
|
|
311
|
+
Component.displayName = variant;
|
|
312
|
+
Component.Type = TYPE;
|
|
313
|
+
return Component;
|
|
314
|
+
};
|
|
315
|
+
var H1 = HeadingVariant("H1");
|
|
316
|
+
HeadingVariant("H2");
|
|
317
|
+
HeadingVariant("H3");
|
|
318
|
+
HeadingVariant("H4");
|
|
319
|
+
HeadingVariant("H5");
|
|
320
|
+
HeadingVariant("H6");
|
|
321
|
+
var TitleTab = ({
|
|
322
|
+
title,
|
|
323
|
+
tabs = [],
|
|
324
|
+
activeTabIndex = 0
|
|
325
|
+
}) => {
|
|
326
|
+
const [activeIndex, setActiveIndex] = React.useState(activeTabIndex);
|
|
327
|
+
const [showGradientMask, setShowGradientMask] = React.useState(false);
|
|
328
|
+
const ref = useScrollStatus(setShowGradientMask);
|
|
329
|
+
React.useEffect(() => {
|
|
330
|
+
setActiveIndex(activeTabIndex);
|
|
331
|
+
}, [activeTabIndex]);
|
|
332
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full text-gray-800", children: [
|
|
333
|
+
/* @__PURE__ */ jsxRuntime.jsx(H1, { text: title }),
|
|
334
|
+
tabs.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
335
|
+
"div",
|
|
336
|
+
{
|
|
337
|
+
ref,
|
|
338
|
+
className: clsx2__default.default(
|
|
339
|
+
"flex items-center",
|
|
340
|
+
"overflow-x-scroll scrollbar:!w-0",
|
|
341
|
+
{
|
|
342
|
+
"[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
|
|
343
|
+
}
|
|
344
|
+
),
|
|
345
|
+
children: tabs.map((tab, index) => {
|
|
346
|
+
const tabProps = { ...tab, isActive: index === activeIndex };
|
|
347
|
+
const handleClick = () => {
|
|
348
|
+
setActiveIndex(index);
|
|
349
|
+
};
|
|
350
|
+
return /* @__PURE__ */ React.createElement(tab_item_default, { ...tabProps, key: `tab-${tab.text}-${index}`, onClick: handleClick });
|
|
351
|
+
})
|
|
352
|
+
}
|
|
353
|
+
) : null,
|
|
354
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
355
|
+
"div",
|
|
356
|
+
{
|
|
357
|
+
className: clsx2__default.default(
|
|
358
|
+
"w-full h-[1px] bg-gray-300 mt-[0px]",
|
|
359
|
+
"desktop:mt-[0px]"
|
|
360
|
+
)
|
|
361
|
+
}
|
|
362
|
+
)
|
|
363
|
+
] });
|
|
364
|
+
};
|
|
365
|
+
var title_tab_default = TitleTab;
|
|
366
|
+
|
|
367
|
+
// src/title-bar/stories/title-tab.stories.tsx
|
|
368
|
+
var meta = {
|
|
369
|
+
title: "Title Bar/Title Tab",
|
|
370
|
+
component: title_tab_default
|
|
371
|
+
};
|
|
372
|
+
var title_tab_stories_default = meta;
|
|
373
|
+
var Basic = {
|
|
374
|
+
args: {
|
|
375
|
+
title: "\u4E3B\u5206\u985E",
|
|
376
|
+
tabs: [
|
|
377
|
+
{ text: "\u5B50\u5206\u985E1", isExternal: true, link: "https://www.google.com" },
|
|
378
|
+
{ text: "\u5B50\u5206\u985E2", isExternal: true, link: "https://www.google.com" },
|
|
379
|
+
{ text: "\u5B50\u5206\u985E3", isExternal: true, link: "https://www.google.com" },
|
|
380
|
+
{ text: "\u5B50\u5206\u985E4", isExternal: true, link: "https://www.google.com" },
|
|
381
|
+
{ text: "\u5B50\u5206\u985E5", isExternal: true, link: "https://www.google.com" },
|
|
382
|
+
{ text: "\u5B50\u5206\u985E6", isExternal: true, link: "https://www.google.com" }
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
parameters: { controls: { exclude: ["className"] } }
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
exports.Basic = Basic;
|
|
389
|
+
exports.default = title_tab_stories_default;
|
|
390
|
+
//# sourceMappingURL=title-tab.stories.js.map
|
|
391
|
+
//# sourceMappingURL=title-tab.stories.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","../../../src/title-bar/stories/title-tab.stories.tsx"],"names":["useRef","useEffect","jsx","Link","clsx","Size","Style","useMemo","jsxs","baseClass","variantClass","React","useState","createElement"],"mappings":"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","file":"title-tab.stories.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","import type { Meta, StoryObj } from '@storybook/react-vite'\n// components\nimport TitleTab from '../components/title-tab'\n\nconst meta = {\n title: 'Title Bar/Title Tab',\n component: TitleTab,\n} satisfies Meta<typeof TitleTab>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\nexport const Basic: Story = {\n args: {\n title: '主分類',\n tabs: [\n { text: '子分類1', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類2', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類3', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類4', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類5', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類6', isExternal: true, link: 'https://www.google.com' },\n ],\n },\n parameters: { controls: { exclude: ['className'] } },\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { title_tab_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
|
+
|
|
16
|
+
// src/title-bar/stories/title-tab.stories.tsx
|
|
17
|
+
var meta = {
|
|
18
|
+
title: "Title Bar/Title Tab",
|
|
19
|
+
component: title_tab_default
|
|
20
|
+
};
|
|
21
|
+
var title_tab_stories_default = meta;
|
|
22
|
+
var Basic = {
|
|
23
|
+
args: {
|
|
24
|
+
title: "\u4E3B\u5206\u985E",
|
|
25
|
+
tabs: [
|
|
26
|
+
{ text: "\u5B50\u5206\u985E1", isExternal: true, link: "https://www.google.com" },
|
|
27
|
+
{ text: "\u5B50\u5206\u985E2", isExternal: true, link: "https://www.google.com" },
|
|
28
|
+
{ text: "\u5B50\u5206\u985E3", isExternal: true, link: "https://www.google.com" },
|
|
29
|
+
{ text: "\u5B50\u5206\u985E4", isExternal: true, link: "https://www.google.com" },
|
|
30
|
+
{ text: "\u5B50\u5206\u985E5", isExternal: true, link: "https://www.google.com" },
|
|
31
|
+
{ text: "\u5B50\u5206\u985E6", isExternal: true, link: "https://www.google.com" }
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
parameters: { controls: { exclude: ["className"] } }
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { Basic, title_tab_stories_default as default };
|
|
38
|
+
//# sourceMappingURL=title-tab.stories.mjs.map
|
|
39
|
+
//# sourceMappingURL=title-tab.stories.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/title-bar/stories/title-tab.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,IAAM,IAAA,GAAO;AAAA,EACX,KAAA,EAAO,qBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAO,yBAAA,GAAQ;AAGR,IAAM,KAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM;AAAA,MACJ,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA,EAAyB;AAAA,MACjE,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA,EAAyB;AAAA,MACjE,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA,EAAyB;AAAA,MACjE,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA,EAAyB;AAAA,MACjE,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA,EAAyB;AAAA,MACjE,EAAE,IAAA,EAAM,qBAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,MAAM,wBAAA;AAAyB;AACnE,GACF;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,WAAW,GAAE;AACnD","file":"title-tab.stories.mjs","sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite'\n// components\nimport TitleTab from '../components/title-tab'\n\nconst meta = {\n title: 'Title Bar/Title Tab',\n component: TitleTab,\n} satisfies Meta<typeof TitleTab>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\nexport const Basic: Story = {\n args: {\n title: '主分類',\n tabs: [\n { text: '子分類1', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類2', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類3', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類4', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類5', isExternal: true, link: 'https://www.google.com' },\n { text: '子分類6', isExternal: true, link: 'https://www.google.com' },\n ],\n },\n parameters: { controls: { exclude: ['className'] } },\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
3
|
+
|
|
4
|
+
declare const meta: {
|
|
5
|
+
title: string;
|
|
6
|
+
component: react.FC<{
|
|
7
|
+
title: string;
|
|
8
|
+
subtitle?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type Story = StoryObj<typeof meta>;
|
|
14
|
+
declare const Basic: Story;
|
|
15
|
+
declare const TagBar: Story;
|
|
16
|
+
declare const BookmarkBar: Story;
|
|
17
|
+
|
|
18
|
+
export { Basic, BookmarkBar, TagBar, meta as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
3
|
+
|
|
4
|
+
declare const meta: {
|
|
5
|
+
title: string;
|
|
6
|
+
component: react.FC<{
|
|
7
|
+
title: string;
|
|
8
|
+
subtitle?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type Story = StoryObj<typeof meta>;
|
|
14
|
+
declare const Basic: Story;
|
|
15
|
+
declare const TagBar: Story;
|
|
16
|
+
declare const BookmarkBar: Story;
|
|
17
|
+
|
|
18
|
+
export { Basic, BookmarkBar, TagBar, meta as default };
|