@twreporter/react-typescript-components 0.1.0-beta.4 → 0.1.0-beta.6
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 +156 -0
- package/lib/button/components/text-button/index.js.map +1 -0
- package/lib/button/components/text-button/index.mjs +7 -0
- package/lib/button/components/text-button/index.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 +162 -0
- package/lib/button/index.js.map +1 -0
- package/lib/button/index.mjs +8 -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 +206 -0
- package/lib/button/stories/text-button.stories.js.map +1 -0
- package/lib/button/stories/text-button.stories.mjs +34 -0
- package/lib/button/stories/text-button.stories.mjs.map +1 -0
- package/lib/chunk-6DXA3EX7.mjs +35 -0
- package/lib/chunk-6DXA3EX7.mjs.map +1 -0
- package/lib/chunk-7DK5MO62.mjs +8 -0
- package/lib/chunk-7DK5MO62.mjs.map +1 -0
- package/lib/chunk-CZVB2Y6O.mjs +27 -0
- package/lib/chunk-CZVB2Y6O.mjs.map +1 -0
- package/lib/chunk-GQWO45DN.mjs +32 -0
- package/lib/chunk-GQWO45DN.mjs.map +1 -0
- package/lib/chunk-GRCEZABQ.mjs +38 -0
- package/lib/chunk-GRCEZABQ.mjs.map +1 -0
- package/lib/chunk-HQG6Q2EY.mjs +42 -0
- package/lib/chunk-HQG6Q2EY.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-JHLT5GDV.mjs +50 -0
- package/lib/chunk-JHLT5GDV.mjs.map +1 -0
- package/lib/chunk-QE5LVT7A.mjs +90 -0
- package/lib/chunk-QE5LVT7A.mjs.map +1 -0
- package/lib/chunk-QOLETTSG.mjs +28 -0
- package/lib/chunk-QOLETTSG.mjs.map +1 -0
- package/lib/chunk-R4F4LGAY.mjs +56 -0
- package/lib/chunk-R4F4LGAY.mjs.map +1 -0
- package/lib/chunk-UM7RNC2Y.mjs +14 -0
- package/lib/chunk-UM7RNC2Y.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/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 +178 -2
- package/lib/styles.css.map +1 -0
- package/lib/styles.d.mts +2 -0
- package/lib/styles.d.ts +2 -0
- package/lib/text/enum/index.d.mts +15 -0
- package/lib/text/enum/index.d.ts +15 -0
- package/lib/text/enum/index.js +6 -29
- package/lib/text/enum/index.js.map +1 -0
- package/lib/text/enum/index.mjs +3 -0
- package/lib/text/enum/index.mjs.map +1 -0
- package/lib/text/heading.d.mts +29 -0
- package/lib/text/heading.d.ts +29 -0
- package/lib/text/heading.js +20 -51
- package/lib/text/heading.js.map +1 -0
- package/lib/text/heading.mjs +4 -0
- package/lib/text/heading.mjs.map +1 -0
- package/lib/text/paragraph.d.mts +23 -0
- package/lib/text/paragraph.d.ts +23 -0
- package/lib/text/paragraph.js +17 -49
- package/lib/text/paragraph.js.map +1 -0
- package/lib/text/paragraph.mjs +4 -0
- package/lib/text/paragraph.mjs.map +1 -0
- 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 +321 -0
- package/lib/title-bar/components/title-tab/index.js.map +1 -0
- package/lib/title-bar/components/title-tab/index.mjs +15 -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 +204 -0
- package/lib/title-bar/components/title-tab/tab-item.js.map +1 -0
- package/lib/title-bar/components/title-tab/tab-item.mjs +12 -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 +11 -0
- package/lib/title-bar/components/title2.d.ts +11 -0
- package/lib/title-bar/components/title2.js +35 -64
- package/lib/title-bar/components/title2.js.map +1 -0
- package/lib/title-bar/components/title2.mjs +6 -0
- package/lib/title-bar/components/title2.mjs.map +1 -0
- package/lib/title-bar/index.d.mts +26 -0
- package/lib/title-bar/index.d.ts +26 -0
- package/lib/title-bar/index.js +275 -68
- package/lib/title-bar/index.js.map +1 -0
- package/lib/title-bar/index.mjs +29 -0
- package/lib/title-bar/index.mjs.map +1 -0
- 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 +345 -0
- package/lib/title-bar/stories/title-tab.stories.js.map +1 -0
- package/lib/title-bar/stories/title-tab.stories.mjs +38 -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 +258 -0
- package/lib/title-bar/stories/title2.stories.js.map +1 -0
- package/lib/title-bar/stories/title2.stories.mjs +37 -0
- package/lib/title-bar/stories/title2.stories.mjs.map +1 -0
- package/lib/types/index.d.mts +3 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/index.js +3 -17
- package/lib/types/index.js.map +1 -0
- package/lib/types/index.mjs +3 -0
- package/lib/types/index.mjs.map +1 -0
- package/package.json +12 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/text/enum/index.ts","../../../src/text/heading.tsx","../../../src/text/paragraph.tsx","../../../src/title-bar/components/title2.tsx"],"names":["React","clsx","baseClass","variantClass","jsx","jsxs"],"mappings":"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","file":"title2.js","sourcesContent":["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 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 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","import clsx from 'clsx'\nimport type React from 'react'\n// components\nimport { H5 } from '../../text/heading'\nimport { P2 } from '../../text/paragraph'\n\ntype Title2Props = {\n title: string\n subtitle?: string\n renderButton?: React.ReactNode\n className?: string\n}\n\nconst Title2: React.FC<Title2Props> = ({\n title,\n subtitle = '',\n renderButton = null,\n className = '',\n}) => {\n return (\n <div className={clsx('flex justify-between flex-col', className)}>\n <div className=\"flex flex-row justify-between\">\n <div className={clsx('flex items-baseline gap-[16px]')}>\n <H5 className=\"text-gray-800\" text={title} />\n {subtitle ? <P2 className=\"text-gray-600\" text={subtitle} /> : null}\n </div>\n {renderButton || null}\n </div>\n <div\n className={clsx(\n 'w-full h-[1px] bg-gray-800 mt-[8px]',\n 'desktop:mt-[16px]'\n )}\n />\n </div>\n )\n}\n\nexport default Title2\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"title2.mjs"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Tab } from './components/title-tab/type.mjs';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
export { default as Title2 } from './components/title2.mjs';
|
|
4
|
+
export { default as Title1 } from './components/title1.mjs';
|
|
5
|
+
export { default as TitleTab } from './components/title-tab/index.mjs';
|
|
6
|
+
|
|
7
|
+
declare const _default: {
|
|
8
|
+
Title2: react.FC<{
|
|
9
|
+
title: string;
|
|
10
|
+
subtitle?: string;
|
|
11
|
+
renderButton?: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
}>;
|
|
14
|
+
Title1: react.FC<{
|
|
15
|
+
title: string;
|
|
16
|
+
subtitle?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
}>;
|
|
19
|
+
TitleTab: react.FC<{
|
|
20
|
+
title: string;
|
|
21
|
+
tabs: Tab[];
|
|
22
|
+
activeTabIndex?: number;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { _default as default };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Tab } from './components/title-tab/type.js';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
export { default as Title2 } from './components/title2.js';
|
|
4
|
+
export { default as Title1 } from './components/title1.js';
|
|
5
|
+
export { default as TitleTab } from './components/title-tab/index.js';
|
|
6
|
+
|
|
7
|
+
declare const _default: {
|
|
8
|
+
Title2: react.FC<{
|
|
9
|
+
title: string;
|
|
10
|
+
subtitle?: string;
|
|
11
|
+
renderButton?: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
}>;
|
|
14
|
+
Title1: react.FC<{
|
|
15
|
+
title: string;
|
|
16
|
+
subtitle?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
}>;
|
|
19
|
+
TitleTab: react.FC<{
|
|
20
|
+
title: string;
|
|
21
|
+
tabs: Tab[];
|
|
22
|
+
activeTabIndex?: number;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { _default as default };
|
package/lib/title-bar/index.js
CHANGED
|
@@ -1,46 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
'use strict';
|
|
29
2
|
|
|
30
|
-
|
|
31
|
-
var title_bar_exports = {};
|
|
32
|
-
__export(title_bar_exports, {
|
|
33
|
-
Title2: () => title2_default,
|
|
34
|
-
default: () => title_bar_default
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(title_bar_exports);
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
37
4
|
|
|
38
|
-
|
|
39
|
-
var
|
|
5
|
+
var clsx3 = require('clsx');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var Link = require('next/link');
|
|
40
9
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var clsx3__default = /*#__PURE__*/_interopDefault(clsx3);
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
14
|
+
var Link__default = /*#__PURE__*/_interopDefault(Link);
|
|
15
|
+
|
|
16
|
+
// src/title-bar/components/title2.tsx
|
|
44
17
|
|
|
45
18
|
// src/text/enum/index.ts
|
|
46
19
|
var TYPE = {
|
|
@@ -72,10 +45,10 @@ var HeadingVariant = (variant) => {
|
|
|
72
45
|
}) => {
|
|
73
46
|
const htmlTag = variant.toLowerCase();
|
|
74
47
|
const fontFamily = type === TYPE.article ? "font-title" : "font-default";
|
|
75
|
-
return
|
|
48
|
+
return React__default.default.createElement(
|
|
76
49
|
htmlTag,
|
|
77
50
|
{
|
|
78
|
-
className:
|
|
51
|
+
className: clsx3__default.default(
|
|
79
52
|
fontFamily,
|
|
80
53
|
baseClass,
|
|
81
54
|
variantClass[variant],
|
|
@@ -92,14 +65,10 @@ var HeadingVariant = (variant) => {
|
|
|
92
65
|
};
|
|
93
66
|
var H1 = HeadingVariant("H1");
|
|
94
67
|
var H2 = HeadingVariant("H2");
|
|
95
|
-
|
|
96
|
-
|
|
68
|
+
HeadingVariant("H3");
|
|
69
|
+
HeadingVariant("H4");
|
|
97
70
|
var H5 = HeadingVariant("H5");
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// src/text/paragraph.tsx
|
|
101
|
-
var import_clsx2 = __toESM(require("clsx"));
|
|
102
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
71
|
+
HeadingVariant("H6");
|
|
103
72
|
var baseClass2 = "font-default leading-[150%] flex items-center m-0";
|
|
104
73
|
var variantClass2 = {
|
|
105
74
|
P1: "text-[16px]",
|
|
@@ -113,10 +82,10 @@ var ParagraphVariant = (variant) => {
|
|
|
113
82
|
weight = WEIGHT.normal,
|
|
114
83
|
className = "",
|
|
115
84
|
...props
|
|
116
|
-
}) => /* @__PURE__ */
|
|
85
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
117
86
|
"p",
|
|
118
87
|
{
|
|
119
|
-
className:
|
|
88
|
+
className: clsx3__default.default(
|
|
120
89
|
baseClass2,
|
|
121
90
|
variantClass2[variant],
|
|
122
91
|
`font-${weight}`,
|
|
@@ -132,27 +101,26 @@ var ParagraphVariant = (variant) => {
|
|
|
132
101
|
};
|
|
133
102
|
var P1 = ParagraphVariant("P1");
|
|
134
103
|
var P2 = ParagraphVariant("P2");
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// src/title-bar/components/title2.tsx
|
|
139
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
104
|
+
ParagraphVariant("P3");
|
|
105
|
+
ParagraphVariant("P4");
|
|
140
106
|
var Title2 = ({
|
|
141
107
|
title,
|
|
142
108
|
subtitle = "",
|
|
143
109
|
renderButton = null,
|
|
144
110
|
className = ""
|
|
145
111
|
}) => {
|
|
146
|
-
return /* @__PURE__ */
|
|
147
|
-
/* @__PURE__ */
|
|
148
|
-
/* @__PURE__ */
|
|
149
|
-
|
|
112
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex justify-between flex-col", className), children: [
|
|
113
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row justify-between", children: [
|
|
114
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex items-baseline gap-[16px]"), children: [
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx(H5, { className: "text-gray-800", text: title }),
|
|
116
|
+
subtitle ? /* @__PURE__ */ jsxRuntime.jsx(P2, { className: "text-gray-600", text: subtitle }) : null
|
|
117
|
+
] }),
|
|
118
|
+
renderButton || null
|
|
150
119
|
] }),
|
|
151
|
-
|
|
152
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
153
121
|
"div",
|
|
154
122
|
{
|
|
155
|
-
className:
|
|
123
|
+
className: clsx3__default.default(
|
|
156
124
|
"w-full h-[1px] bg-gray-800 mt-[8px]",
|
|
157
125
|
"desktop:mt-[16px]"
|
|
158
126
|
)
|
|
@@ -161,12 +129,251 @@ var Title2 = ({
|
|
|
161
129
|
] });
|
|
162
130
|
};
|
|
163
131
|
var title2_default = Title2;
|
|
132
|
+
var Title1 = ({ title, subtitle = "", className = "" }) => {
|
|
133
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex justify-between flex-col", className), children: [
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex items-baseline gap-[16px]"), children: [
|
|
135
|
+
/* @__PURE__ */ jsxRuntime.jsx(H2, { className: "text-gray-800", text: title }),
|
|
136
|
+
subtitle ? /* @__PURE__ */ jsxRuntime.jsx(P1, { className: "text-gray-600", text: subtitle }) : null
|
|
137
|
+
] }),
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
"div",
|
|
140
|
+
{
|
|
141
|
+
className: clsx3__default.default(
|
|
142
|
+
"w-full h-[1px] bg-gray-800 mt-[8px]",
|
|
143
|
+
"desktop:mt-[16px]"
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] });
|
|
148
|
+
};
|
|
149
|
+
var title1_default = Title1;
|
|
150
|
+
var useScrollStatus = (setShowNext) => {
|
|
151
|
+
const ref = React.useRef(null);
|
|
152
|
+
React.useEffect(() => {
|
|
153
|
+
if (!ref.current) return;
|
|
154
|
+
if (ref.current.scrollWidth > ref.current.clientWidth) {
|
|
155
|
+
setShowNext(true);
|
|
156
|
+
}
|
|
157
|
+
}, [setShowNext]);
|
|
158
|
+
React.useEffect(() => {
|
|
159
|
+
if (!ref.current) return;
|
|
160
|
+
const refEle = ref.current;
|
|
161
|
+
const handleScroll = () => {
|
|
162
|
+
if (refEle.offsetWidth + refEle.scrollLeft >= refEle.scrollWidth) {
|
|
163
|
+
setShowNext(false);
|
|
164
|
+
} else {
|
|
165
|
+
setShowNext(true);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
refEle.addEventListener("scroll", handleScroll);
|
|
169
|
+
return () => {
|
|
170
|
+
refEle.removeEventListener("scroll", handleScroll);
|
|
171
|
+
};
|
|
172
|
+
}, [setShowNext]);
|
|
173
|
+
return ref;
|
|
174
|
+
};
|
|
175
|
+
var ExternalLink = ({
|
|
176
|
+
to,
|
|
177
|
+
target = "_self",
|
|
178
|
+
className = "",
|
|
179
|
+
children
|
|
180
|
+
}) => {
|
|
181
|
+
return /* @__PURE__ */ jsxRuntime.jsx("a", { href: to, target, className, children });
|
|
182
|
+
};
|
|
183
|
+
var external_link_default = ExternalLink;
|
|
184
|
+
var InternalLink = ({
|
|
185
|
+
to,
|
|
186
|
+
target = "_self",
|
|
187
|
+
className = "",
|
|
188
|
+
children
|
|
189
|
+
}) => {
|
|
190
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: to, target, className, children });
|
|
191
|
+
};
|
|
192
|
+
var internal_link_default = InternalLink;
|
|
193
|
+
|
|
194
|
+
// src/button/enum.ts
|
|
195
|
+
var Size = /* @__PURE__ */ ((Size2) => {
|
|
196
|
+
Size2[Size2["S"] = 0] = "S";
|
|
197
|
+
Size2[Size2["L"] = 1] = "L";
|
|
198
|
+
return Size2;
|
|
199
|
+
})(Size || {});
|
|
200
|
+
var Style = /* @__PURE__ */ ((Style2) => {
|
|
201
|
+
Style2[Style2["BRAND"] = 0] = "BRAND";
|
|
202
|
+
Style2[Style2["DARK"] = 1] = "DARK";
|
|
203
|
+
Style2[Style2["LIGHT"] = 2] = "LIGHT";
|
|
204
|
+
return Style2;
|
|
205
|
+
})(Style || {});
|
|
206
|
+
|
|
207
|
+
// src/button/constant.ts
|
|
208
|
+
var THEME = {
|
|
209
|
+
normal: "normal",
|
|
210
|
+
photography: "photography",
|
|
211
|
+
transparent: "transparent",
|
|
212
|
+
index: "index"
|
|
213
|
+
};
|
|
214
|
+
var TextButton = ({
|
|
215
|
+
text,
|
|
216
|
+
leftIconComponent,
|
|
217
|
+
rightIconComponent,
|
|
218
|
+
size = 0 /* S */,
|
|
219
|
+
theme = THEME.normal,
|
|
220
|
+
style = 1 /* DARK */,
|
|
221
|
+
active = false,
|
|
222
|
+
disabled = false,
|
|
223
|
+
loading = false,
|
|
224
|
+
className = ""
|
|
225
|
+
}) => {
|
|
226
|
+
const TextJSX = React.useMemo(
|
|
227
|
+
() => size === 0 /* S */ ? /* @__PURE__ */ jsxRuntime.jsx(P2, { text }) : /* @__PURE__ */ jsxRuntime.jsx(P1, { text }),
|
|
228
|
+
[size, text]
|
|
229
|
+
);
|
|
230
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
231
|
+
"div",
|
|
232
|
+
{
|
|
233
|
+
className: clsx3__default.default(
|
|
234
|
+
"flex items-center",
|
|
235
|
+
{
|
|
236
|
+
"cursor-default": disabled,
|
|
237
|
+
"cursor-pointer": !disabled
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"text-gray-500 hover:text-gray-500": disabled && (theme === THEME.photography || theme === THEME.transparent),
|
|
241
|
+
"text-gray-400 hover:text-gray-400": disabled || theme === THEME.photography && style === 2 /* LIGHT */ && !active && !disabled,
|
|
242
|
+
"text-gray-200 hover:text-supportive-pastel": theme === THEME.photography && !active && !disabled,
|
|
243
|
+
"text-gray-300 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */ && active && !disabled,
|
|
244
|
+
"text-gray-white hover:text-supportive-pastel": theme === THEME.photography && style === 1 /* DARK */ && active && !disabled,
|
|
245
|
+
"text-supportive-faded hover:text-supportive-pastel": theme === THEME.photography && style === 0 /* BRAND */ && active && !disabled,
|
|
246
|
+
"text-gray-100 hover:text-gray-200": theme === THEME.transparent && !active && !disabled,
|
|
247
|
+
"text-gray-white hover:text-gray-white": theme === THEME.transparent && active && !disabled,
|
|
248
|
+
"text-gray-600 hover:text-brand-heavy": theme === THEME.normal && !active && !disabled,
|
|
249
|
+
"text-brand-heavy hover:text-brand-heavy": theme === THEME.normal && active && !disabled
|
|
250
|
+
},
|
|
251
|
+
className
|
|
252
|
+
),
|
|
253
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex justify-center items-center", children: [
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
255
|
+
"div",
|
|
256
|
+
{
|
|
257
|
+
className: clsx3__default.default("flex justify-center items-center", {
|
|
258
|
+
"opacity-0": loading,
|
|
259
|
+
"opacity-100": !loading
|
|
260
|
+
}),
|
|
261
|
+
children: [
|
|
262
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center mr-[4px]", children: leftIconComponent }),
|
|
263
|
+
TextJSX,
|
|
264
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center ml-[4px]", children: rightIconComponent })
|
|
265
|
+
]
|
|
266
|
+
}
|
|
267
|
+
),
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
269
|
+
"span",
|
|
270
|
+
{
|
|
271
|
+
className: clsx3__default.default(
|
|
272
|
+
"inline-block absolute box-border animation-spin",
|
|
273
|
+
"border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]",
|
|
274
|
+
{
|
|
275
|
+
"size-[18px]": size === 0 /* S */,
|
|
276
|
+
"size-[24px]": size === 1 /* L */
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"opacity-0": !loading,
|
|
280
|
+
"opacity-100": loading
|
|
281
|
+
}
|
|
282
|
+
)
|
|
283
|
+
}
|
|
284
|
+
)
|
|
285
|
+
] })
|
|
286
|
+
}
|
|
287
|
+
);
|
|
288
|
+
};
|
|
289
|
+
TextButton.Size = Size;
|
|
290
|
+
TextButton.Style = Style;
|
|
291
|
+
TextButton.THEME = THEME;
|
|
292
|
+
var text_button_default = TextButton;
|
|
293
|
+
var TabItem = ({
|
|
294
|
+
text,
|
|
295
|
+
link,
|
|
296
|
+
isExternal = false,
|
|
297
|
+
isActive = false,
|
|
298
|
+
onClick,
|
|
299
|
+
className = ""
|
|
300
|
+
}) => {
|
|
301
|
+
const CustomizedLink = isExternal ? external_link_default : internal_link_default;
|
|
302
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
303
|
+
"button",
|
|
304
|
+
{
|
|
305
|
+
className: clsx3__default.default("flex shrink-0 mr-[24px] last:mr-0", className),
|
|
306
|
+
onClick,
|
|
307
|
+
type: "button",
|
|
308
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CustomizedLink, { to: link, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
309
|
+
text_button_default,
|
|
310
|
+
{
|
|
311
|
+
text,
|
|
312
|
+
active: isActive,
|
|
313
|
+
size: text_button_default.Size.L,
|
|
314
|
+
className: "py-[16px]"
|
|
315
|
+
}
|
|
316
|
+
) })
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
};
|
|
320
|
+
var tab_item_default = TabItem;
|
|
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: clsx3__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: clsx3__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;
|
|
164
366
|
|
|
165
367
|
// src/title-bar/index.ts
|
|
166
368
|
var title_bar_default = {
|
|
167
|
-
Title2: title2_default
|
|
369
|
+
Title2: title2_default,
|
|
370
|
+
Title1: title1_default,
|
|
371
|
+
TitleTab: title_tab_default
|
|
168
372
|
};
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
373
|
+
|
|
374
|
+
exports.Title1 = title1_default;
|
|
375
|
+
exports.Title2 = title2_default;
|
|
376
|
+
exports.TitleTab = title_tab_default;
|
|
377
|
+
exports.default = title_bar_default;
|
|
378
|
+
//# sourceMappingURL=index.js.map
|
|
379
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/text/enum/index.ts","../../src/text/heading.tsx","../../src/text/paragraph.tsx","../../src/title-bar/components/title2.tsx","../../src/title-bar/components/title1.tsx","../../src/title-bar/components/title-tab/hook.ts","../../src/customized-link/external-link.tsx","../../src/customized-link/internal-link.tsx","../../src/button/enum.ts","../../src/button/constant.ts","../../src/button/components/text-button/index.tsx","../../src/title-bar/components/title-tab/tab-item.tsx","../../src/title-bar/components/title-tab/index.tsx","../../src/title-bar/index.ts"],"names":["React","clsx","baseClass","variantClass","jsx","jsxs","useRef","useEffect","Link","Size","Style","useMemo","useState","createElement"],"mappings":"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","file":"index.js","sourcesContent":["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 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 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","import clsx from 'clsx'\nimport type React from 'react'\n// components\nimport { H5 } from '../../text/heading'\nimport { P2 } from '../../text/paragraph'\n\ntype Title2Props = {\n title: string\n subtitle?: string\n renderButton?: React.ReactNode\n className?: string\n}\n\nconst Title2: React.FC<Title2Props> = ({\n title,\n subtitle = '',\n renderButton = null,\n className = '',\n}) => {\n return (\n <div className={clsx('flex justify-between flex-col', className)}>\n <div className=\"flex flex-row justify-between\">\n <div className={clsx('flex items-baseline gap-[16px]')}>\n <H5 className=\"text-gray-800\" text={title} />\n {subtitle ? <P2 className=\"text-gray-600\" text={subtitle} /> : null}\n </div>\n {renderButton || null}\n </div>\n <div\n className={clsx(\n 'w-full h-[1px] bg-gray-800 mt-[8px]',\n 'desktop:mt-[16px]'\n )}\n />\n </div>\n )\n}\n\nexport default Title2\n","import clsx from 'clsx'\nimport type { FC } from 'react'\n// components\nimport { H2 } from '../../text/heading'\nimport { P1 } from '../../text/paragraph'\n\ntype Title1Props = {\n title: string\n subtitle?: string\n className?: string\n}\n\nconst Title1: FC<Title1Props> = ({ title, subtitle = '', className = '' }) => {\n return (\n <div className={clsx('flex justify-between flex-col', className)}>\n <div className={clsx('flex items-baseline gap-[16px]')}>\n <H2 className=\"text-gray-800\" text={title} />\n {subtitle ? <P1 className=\"text-gray-600\" text={subtitle} /> : null}\n </div>\n <div\n className={clsx(\n 'w-full h-[1px] bg-gray-800 mt-[8px]',\n 'desktop:mt-[16px]'\n )}\n />\n </div>\n )\n}\n\nexport default Title1\n","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","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","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\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} /> : <P1 text={text} />),\n [size, text]\n )\n\n return (\n <div\n className={clsx(\n 'flex items-center',\n {\n 'cursor-default': disabled,\n 'cursor-pointer': !disabled,\n },\n {\n 'text-gray-500 hover:text-gray-500':\n disabled &&\n (theme === THEME.photography || theme === THEME.transparent),\n 'text-gray-400 hover:text-gray-400':\n disabled ||\n (theme === THEME.photography &&\n style === Style.LIGHT &&\n !active &&\n !disabled),\n 'text-gray-200 hover:text-supportive-pastel':\n theme === THEME.photography && !active && !disabled,\n 'text-gray-300 hover:text-gray-400':\n theme === THEME.photography &&\n style === Style.LIGHT &&\n active &&\n !disabled,\n 'text-gray-white hover:text-supportive-pastel':\n theme === THEME.photography &&\n style === Style.DARK &&\n active &&\n !disabled,\n 'text-supportive-faded hover:text-supportive-pastel':\n theme === THEME.photography &&\n style === Style.BRAND &&\n active &&\n !disabled,\n 'text-gray-100 hover:text-gray-200':\n theme === THEME.transparent && !active && !disabled,\n 'text-gray-white hover:text-gray-white':\n theme === THEME.transparent && active && !disabled,\n 'text-gray-600 hover:text-brand-heavy':\n theme === THEME.normal && !active && !disabled,\n 'text-brand-heavy hover:text-brand-heavy':\n theme === THEME.normal && active && !disabled,\n },\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 { 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 Title2 from './components/title2'\nimport Title1 from './components/title1'\nimport TitleTab from './components/title-tab'\n\nexport { Title2, Title1, TitleTab }\n\nexport default {\n Title2,\n Title1,\n TitleTab,\n}\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { title_tab_default } from '../chunk-R4F4LGAY.mjs';
|
|
2
|
+
export { title_tab_default as TitleTab } from '../chunk-R4F4LGAY.mjs';
|
|
3
|
+
import '../chunk-GRCEZABQ.mjs';
|
|
4
|
+
import { title1_default } from '../chunk-CZVB2Y6O.mjs';
|
|
5
|
+
export { title1_default as Title1 } from '../chunk-CZVB2Y6O.mjs';
|
|
6
|
+
import { title2_default } from '../chunk-6DXA3EX7.mjs';
|
|
7
|
+
export { title2_default as Title2 } from '../chunk-6DXA3EX7.mjs';
|
|
8
|
+
import '../chunk-GQWO45DN.mjs';
|
|
9
|
+
import '../chunk-JHLT5GDV.mjs';
|
|
10
|
+
import '../chunk-7DK5MO62.mjs';
|
|
11
|
+
import '../chunk-QE5LVT7A.mjs';
|
|
12
|
+
import '../chunk-HQG6Q2EY.mjs';
|
|
13
|
+
import '../chunk-UM7RNC2Y.mjs';
|
|
14
|
+
import '../chunk-JB4TYHDE.mjs';
|
|
15
|
+
import '../chunk-URJXIWFX.mjs';
|
|
16
|
+
import '../chunk-JFT6JILC.mjs';
|
|
17
|
+
import '../chunk-X2UWIBNH.mjs';
|
|
18
|
+
import '../chunk-XO7SDD7W.mjs';
|
|
19
|
+
|
|
20
|
+
// src/title-bar/index.ts
|
|
21
|
+
var title_bar_default = {
|
|
22
|
+
Title2: title2_default,
|
|
23
|
+
Title1: title1_default,
|
|
24
|
+
TitleTab: title_tab_default
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export { title_bar_default as default };
|
|
28
|
+
//# sourceMappingURL=index.mjs.map
|
|
29
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/title-bar/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,IAAO,iBAAA,GAAQ;AAAA,EACb,MAAA,EAAA,cAAA;AAAA,EACA,MAAA,EAAA,cAAA;AAAA,EACA,QAAA,EAAA;AACF","file":"index.mjs","sourcesContent":["import Title2 from './components/title2'\nimport Title1 from './components/title1'\nimport TitleTab from './components/title-tab'\n\nexport { Title2, Title1, TitleTab }\n\nexport default {\n Title2,\n Title1,\n TitleTab,\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { Tab } from '../components/title-tab/type.mjs';
|
|
3
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
4
|
+
|
|
5
|
+
declare const meta: {
|
|
6
|
+
title: string;
|
|
7
|
+
component: react.FC<{
|
|
8
|
+
title: string;
|
|
9
|
+
tabs: Tab[];
|
|
10
|
+
activeTabIndex?: number;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
type Story = StoryObj<typeof meta>;
|
|
15
|
+
declare const Basic: Story;
|
|
16
|
+
|
|
17
|
+
export { Basic, meta as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { Tab } from '../components/title-tab/type.js';
|
|
3
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
4
|
+
|
|
5
|
+
declare const meta: {
|
|
6
|
+
title: string;
|
|
7
|
+
component: react.FC<{
|
|
8
|
+
title: string;
|
|
9
|
+
tabs: Tab[];
|
|
10
|
+
activeTabIndex?: number;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
type Story = StoryObj<typeof meta>;
|
|
15
|
+
declare const Basic: Story;
|
|
16
|
+
|
|
17
|
+
export { Basic, meta as default };
|