@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.
Files changed (194) 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 +156 -0
  5. package/lib/button/components/text-button/index.js.map +1 -0
  6. package/lib/button/components/text-button/index.mjs +7 -0
  7. package/lib/button/components/text-button/index.mjs.map +1 -0
  8. package/lib/button/constant.d.mts +11 -0
  9. package/lib/button/constant.d.ts +11 -0
  10. package/lib/button/constant.js +13 -0
  11. package/lib/button/constant.js.map +1 -0
  12. package/lib/button/constant.mjs +3 -0
  13. package/lib/button/constant.mjs.map +1 -0
  14. package/lib/button/enum.d.mts +11 -0
  15. package/lib/button/enum.d.ts +11 -0
  16. package/lib/button/enum.js +19 -0
  17. package/lib/button/enum.js.map +1 -0
  18. package/lib/button/enum.mjs +3 -0
  19. package/lib/button/enum.mjs.map +1 -0
  20. package/lib/button/index.d.mts +26 -0
  21. package/lib/button/index.d.ts +26 -0
  22. package/lib/button/index.js +162 -0
  23. package/lib/button/index.js.map +1 -0
  24. package/lib/button/index.mjs +8 -0
  25. package/lib/button/index.mjs.map +1 -0
  26. package/lib/button/stories/text-button.stories.d.mts +55 -0
  27. package/lib/button/stories/text-button.stories.d.ts +55 -0
  28. package/lib/button/stories/text-button.stories.js +206 -0
  29. package/lib/button/stories/text-button.stories.js.map +1 -0
  30. package/lib/button/stories/text-button.stories.mjs +34 -0
  31. package/lib/button/stories/text-button.stories.mjs.map +1 -0
  32. package/lib/chunk-6DXA3EX7.mjs +35 -0
  33. package/lib/chunk-6DXA3EX7.mjs.map +1 -0
  34. package/lib/chunk-7DK5MO62.mjs +8 -0
  35. package/lib/chunk-7DK5MO62.mjs.map +1 -0
  36. package/lib/chunk-CZVB2Y6O.mjs +27 -0
  37. package/lib/chunk-CZVB2Y6O.mjs.map +1 -0
  38. package/lib/chunk-GQWO45DN.mjs +32 -0
  39. package/lib/chunk-GQWO45DN.mjs.map +1 -0
  40. package/lib/chunk-GRCEZABQ.mjs +38 -0
  41. package/lib/chunk-GRCEZABQ.mjs.map +1 -0
  42. package/lib/chunk-HQG6Q2EY.mjs +42 -0
  43. package/lib/chunk-HQG6Q2EY.mjs.map +1 -0
  44. package/lib/chunk-JB4TYHDE.mjs +11 -0
  45. package/lib/chunk-JB4TYHDE.mjs.map +1 -0
  46. package/lib/chunk-JFT6JILC.mjs +12 -0
  47. package/lib/chunk-JFT6JILC.mjs.map +1 -0
  48. package/lib/chunk-JHLT5GDV.mjs +50 -0
  49. package/lib/chunk-JHLT5GDV.mjs.map +1 -0
  50. package/lib/chunk-QE5LVT7A.mjs +90 -0
  51. package/lib/chunk-QE5LVT7A.mjs.map +1 -0
  52. package/lib/chunk-QOLETTSG.mjs +28 -0
  53. package/lib/chunk-QOLETTSG.mjs.map +1 -0
  54. package/lib/chunk-R4F4LGAY.mjs +56 -0
  55. package/lib/chunk-R4F4LGAY.mjs.map +1 -0
  56. package/lib/chunk-UM7RNC2Y.mjs +14 -0
  57. package/lib/chunk-UM7RNC2Y.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/customized-link/external-link.d.mts +7 -0
  65. package/lib/customized-link/external-link.d.ts +7 -0
  66. package/lib/customized-link/external-link.js +18 -0
  67. package/lib/customized-link/external-link.js.map +1 -0
  68. package/lib/customized-link/external-link.mjs +3 -0
  69. package/lib/customized-link/external-link.mjs.map +1 -0
  70. package/lib/customized-link/index.d.mts +11 -0
  71. package/lib/customized-link/index.d.ts +11 -0
  72. package/lib/customized-link/index.js +42 -0
  73. package/lib/customized-link/index.js.map +1 -0
  74. package/lib/customized-link/index.mjs +5 -0
  75. package/lib/customized-link/index.mjs.map +1 -0
  76. package/lib/customized-link/internal-link.d.mts +7 -0
  77. package/lib/customized-link/internal-link.d.ts +7 -0
  78. package/lib/customized-link/internal-link.js +22 -0
  79. package/lib/customized-link/internal-link.js.map +1 -0
  80. package/lib/customized-link/internal-link.mjs +3 -0
  81. package/lib/customized-link/internal-link.mjs.map +1 -0
  82. package/lib/customized-link/type.d.mts +9 -0
  83. package/lib/customized-link/type.d.ts +9 -0
  84. package/lib/customized-link/type.js +4 -0
  85. package/lib/customized-link/type.js.map +1 -0
  86. package/lib/customized-link/type.mjs +3 -0
  87. package/lib/customized-link/type.mjs.map +1 -0
  88. package/lib/storybook/utils/get-enum-arg.d.mts +19 -0
  89. package/lib/storybook/utils/get-enum-arg.d.ts +19 -0
  90. package/lib/storybook/utils/get-enum-arg.js +31 -0
  91. package/lib/storybook/utils/get-enum-arg.js.map +1 -0
  92. package/lib/storybook/utils/get-enum-arg.mjs +3 -0
  93. package/lib/storybook/utils/get-enum-arg.mjs.map +1 -0
  94. package/lib/styles.css +178 -2
  95. package/lib/styles.css.map +1 -0
  96. package/lib/styles.d.mts +2 -0
  97. package/lib/styles.d.ts +2 -0
  98. package/lib/text/enum/index.d.mts +15 -0
  99. package/lib/text/enum/index.d.ts +15 -0
  100. package/lib/text/enum/index.js +6 -29
  101. package/lib/text/enum/index.js.map +1 -0
  102. package/lib/text/enum/index.mjs +3 -0
  103. package/lib/text/enum/index.mjs.map +1 -0
  104. package/lib/text/heading.d.mts +29 -0
  105. package/lib/text/heading.d.ts +29 -0
  106. package/lib/text/heading.js +20 -51
  107. package/lib/text/heading.js.map +1 -0
  108. package/lib/text/heading.mjs +4 -0
  109. package/lib/text/heading.mjs.map +1 -0
  110. package/lib/text/paragraph.d.mts +23 -0
  111. package/lib/text/paragraph.d.ts +23 -0
  112. package/lib/text/paragraph.js +17 -49
  113. package/lib/text/paragraph.js.map +1 -0
  114. package/lib/text/paragraph.mjs +4 -0
  115. package/lib/text/paragraph.mjs.map +1 -0
  116. package/lib/text/stories/heading.stories.d.mts +35 -0
  117. package/lib/text/stories/heading.stories.d.ts +35 -0
  118. package/lib/text/stories/heading.stories.js +131 -0
  119. package/lib/text/stories/heading.stories.js.map +1 -0
  120. package/lib/text/stories/heading.stories.mjs +50 -0
  121. package/lib/text/stories/heading.stories.mjs.map +1 -0
  122. package/lib/text/stories/paragraph.stories.d.mts +33 -0
  123. package/lib/text/stories/paragraph.stories.d.ts +33 -0
  124. package/lib/text/stories/paragraph.stories.js +108 -0
  125. package/lib/text/stories/paragraph.stories.js.map +1 -0
  126. package/lib/text/stories/paragraph.stories.mjs +40 -0
  127. package/lib/text/stories/paragraph.stories.mjs.map +1 -0
  128. package/lib/title-bar/components/title-tab/hook.d.mts +5 -0
  129. package/lib/title-bar/components/title-tab/hook.d.ts +5 -0
  130. package/lib/title-bar/components/title-tab/hook.js +34 -0
  131. package/lib/title-bar/components/title-tab/hook.js.map +1 -0
  132. package/lib/title-bar/components/title-tab/hook.mjs +3 -0
  133. package/lib/title-bar/components/title-tab/hook.mjs.map +1 -0
  134. package/lib/title-bar/components/title-tab/index.d.mts +11 -0
  135. package/lib/title-bar/components/title-tab/index.d.ts +11 -0
  136. package/lib/title-bar/components/title-tab/index.js +321 -0
  137. package/lib/title-bar/components/title-tab/index.js.map +1 -0
  138. package/lib/title-bar/components/title-tab/index.mjs +15 -0
  139. package/lib/title-bar/components/title-tab/index.mjs.map +1 -0
  140. package/lib/title-bar/components/title-tab/tab-item.d.mts +10 -0
  141. package/lib/title-bar/components/title-tab/tab-item.d.ts +10 -0
  142. package/lib/title-bar/components/title-tab/tab-item.js +204 -0
  143. package/lib/title-bar/components/title-tab/tab-item.js.map +1 -0
  144. package/lib/title-bar/components/title-tab/tab-item.mjs +12 -0
  145. package/lib/title-bar/components/title-tab/tab-item.mjs.map +1 -0
  146. package/lib/title-bar/components/title-tab/type.d.mts +8 -0
  147. package/lib/title-bar/components/title-tab/type.d.ts +8 -0
  148. package/lib/title-bar/components/title-tab/type.js +4 -0
  149. package/lib/title-bar/components/title-tab/type.js.map +1 -0
  150. package/lib/title-bar/components/title-tab/type.mjs +3 -0
  151. package/lib/title-bar/components/title-tab/type.mjs.map +1 -0
  152. package/lib/title-bar/components/title1.d.mts +10 -0
  153. package/lib/title-bar/components/title1.d.ts +10 -0
  154. package/lib/title-bar/components/title1.js +123 -0
  155. package/lib/title-bar/components/title1.js.map +1 -0
  156. package/lib/title-bar/components/title1.mjs +6 -0
  157. package/lib/title-bar/components/title1.mjs.map +1 -0
  158. package/lib/title-bar/components/title2.d.mts +11 -0
  159. package/lib/title-bar/components/title2.d.ts +11 -0
  160. package/lib/title-bar/components/title2.js +35 -64
  161. package/lib/title-bar/components/title2.js.map +1 -0
  162. package/lib/title-bar/components/title2.mjs +6 -0
  163. package/lib/title-bar/components/title2.mjs.map +1 -0
  164. package/lib/title-bar/index.d.mts +26 -0
  165. package/lib/title-bar/index.d.ts +26 -0
  166. package/lib/title-bar/index.js +275 -68
  167. package/lib/title-bar/index.js.map +1 -0
  168. package/lib/title-bar/index.mjs +29 -0
  169. package/lib/title-bar/index.mjs.map +1 -0
  170. package/lib/title-bar/stories/title-tab.stories.d.mts +17 -0
  171. package/lib/title-bar/stories/title-tab.stories.d.ts +17 -0
  172. package/lib/title-bar/stories/title-tab.stories.js +345 -0
  173. package/lib/title-bar/stories/title-tab.stories.js.map +1 -0
  174. package/lib/title-bar/stories/title-tab.stories.mjs +38 -0
  175. package/lib/title-bar/stories/title-tab.stories.mjs.map +1 -0
  176. package/lib/title-bar/stories/title1.stories.d.mts +18 -0
  177. package/lib/title-bar/stories/title1.stories.d.ts +18 -0
  178. package/lib/title-bar/stories/title1.stories.js +155 -0
  179. package/lib/title-bar/stories/title1.stories.js.map +1 -0
  180. package/lib/title-bar/stories/title1.stories.mjs +35 -0
  181. package/lib/title-bar/stories/title1.stories.mjs.map +1 -0
  182. package/lib/title-bar/stories/title2.stories.d.mts +18 -0
  183. package/lib/title-bar/stories/title2.stories.d.ts +18 -0
  184. package/lib/title-bar/stories/title2.stories.js +258 -0
  185. package/lib/title-bar/stories/title2.stories.js.map +1 -0
  186. package/lib/title-bar/stories/title2.stories.mjs +37 -0
  187. package/lib/title-bar/stories/title2.stories.mjs.map +1 -0
  188. package/lib/types/index.d.mts +3 -0
  189. package/lib/types/index.d.ts +3 -0
  190. package/lib/types/index.js +3 -17
  191. package/lib/types/index.js.map +1 -0
  192. package/lib/types/index.mjs +3 -0
  193. package/lib/types/index.mjs.map +1 -0
  194. package/package.json +12 -8
@@ -0,0 +1,35 @@
1
+ import { title1_default } from '../../chunk-CZVB2Y6O.mjs';
2
+ import '../../chunk-JHLT5GDV.mjs';
3
+ import '../../chunk-HQG6Q2EY.mjs';
4
+ import '../../chunk-UM7RNC2Y.mjs';
5
+
6
+ // src/title-bar/stories/title1.stories.ts
7
+ var meta = {
8
+ title: "Title Bar/Title1",
9
+ component: title1_default
10
+ };
11
+ var title1_stories_default = meta;
12
+ var Basic = {
13
+ args: {
14
+ title: "\u6A19\u984C",
15
+ subtitle: "\u526F\u6A19"
16
+ },
17
+ parameters: { controls: { exclude: ["className"] } }
18
+ };
19
+ var TagBar = {
20
+ args: {
21
+ title: "#\u5831\u5C0E\u8005"
22
+ },
23
+ parameters: { controls: { exclude: ["subtitle", "className"] } }
24
+ };
25
+ var BookmarkBar = {
26
+ args: {
27
+ title: "\u6211\u7684\u66F8\u7C64",
28
+ subtitle: "\u5168\u90E8 55"
29
+ },
30
+ parameters: { controls: { exclude: ["className"] } }
31
+ };
32
+
33
+ export { Basic, BookmarkBar, TagBar, title1_stories_default as default };
34
+ //# sourceMappingURL=title1.stories.mjs.map
35
+ //# sourceMappingURL=title1.stories.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/title-bar/stories/title1.stories.ts"],"names":[],"mappings":";;;;;;AAIA,IAAM,IAAA,GAAO;AAAA,EACX,KAAA,EAAO,kBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAO,sBAAA,GAAQ;AAGR,IAAM,KAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,cAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,WAAW,GAAE;AACnD;AAEO,IAAM,MAAA,GAAgB;AAAA,EAC3B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,UAAA,EAAY,WAAW,CAAA,EAAE;AAC/D;AAEO,IAAM,WAAA,GAAqB;AAAA,EAChC,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,0BAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,WAAW,GAAE;AACnD","file":"title1.stories.mjs","sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite'\n// components\nimport Title1 from '../components/title1'\n\nconst meta = {\n title: 'Title Bar/Title1',\n component: Title1,\n} satisfies Meta<typeof Title1>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\nexport const Basic: Story = {\n args: {\n title: '標題',\n subtitle: '副標',\n },\n parameters: { controls: { exclude: ['className'] } },\n}\n\nexport const TagBar: Story = {\n args: {\n title: '#報導者',\n },\n parameters: { controls: { exclude: ['subtitle', 'className'] } },\n}\n\nexport const BookmarkBar: Story = {\n args: {\n title: '我的書籤',\n subtitle: '全部 55',\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
+ renderButton?: React.ReactNode;
10
+ className?: string;
11
+ }>;
12
+ };
13
+
14
+ type Story = StoryObj<typeof meta>;
15
+ declare const Basic: Story;
16
+ declare const WithButton: Story;
17
+
18
+ export { Basic, WithButton, 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
+ renderButton?: React.ReactNode;
10
+ className?: string;
11
+ }>;
12
+ };
13
+
14
+ type Story = StoryObj<typeof meta>;
15
+ declare const Basic: Story;
16
+ declare const WithButton: Story;
17
+
18
+ export { Basic, WithButton, meta as default };
@@ -0,0 +1,258 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var clsx3 = require('clsx');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var clsx3__default = /*#__PURE__*/_interopDefault(clsx3);
12
+ var React__default = /*#__PURE__*/_interopDefault(React);
13
+
14
+ // src/title-bar/components/title2.tsx
15
+
16
+ // src/text/enum/index.ts
17
+ var TYPE = {
18
+ default: "default",
19
+ article: "article"
20
+ };
21
+ var WEIGHT = {
22
+ extraLight: "extra-light",
23
+ normal: "normal",
24
+ bold: "bold"
25
+ };
26
+
27
+ // src/text/heading.tsx
28
+ var baseClass = "font-bold";
29
+ var variantClass = {
30
+ H1: "text-[28px] leading-[125%] tablet:text-[36px]",
31
+ H2: "text-[24px] leading-[125%] tablet:text-[32px]",
32
+ H3: "text-[22px] leading-[150%] tablet:text-[28px]",
33
+ H4: "text-[18px] leading-[150%] tablet:text-[22px]",
34
+ H5: "text-[17px] leading-[150%] tablet:text-[18px]",
35
+ H6: "text-[16px] leading-[150%] tablet:text-[16px]"
36
+ };
37
+ var HeadingVariant = (variant) => {
38
+ const Component = ({
39
+ text = "",
40
+ type = TYPE.default,
41
+ className = "",
42
+ ...props
43
+ }) => {
44
+ const htmlTag = variant.toLowerCase();
45
+ const fontFamily = type === TYPE.article ? "font-title" : "font-default";
46
+ return React__default.default.createElement(
47
+ htmlTag,
48
+ {
49
+ className: clsx3__default.default(
50
+ fontFamily,
51
+ baseClass,
52
+ variantClass[variant],
53
+ className
54
+ ),
55
+ ...props
56
+ },
57
+ text
58
+ );
59
+ };
60
+ Component.displayName = variant;
61
+ Component.Type = TYPE;
62
+ return Component;
63
+ };
64
+ HeadingVariant("H1");
65
+ HeadingVariant("H2");
66
+ HeadingVariant("H3");
67
+ HeadingVariant("H4");
68
+ var H5 = HeadingVariant("H5");
69
+ HeadingVariant("H6");
70
+ var baseClass2 = "font-default leading-[150%] flex items-center m-0";
71
+ var variantClass2 = {
72
+ P1: "text-[16px]",
73
+ P2: "text-[14px]",
74
+ P3: "text-[12px]",
75
+ P4: "text-[10px]"
76
+ };
77
+ var ParagraphVariant = (variant) => {
78
+ const Component = ({
79
+ text = "",
80
+ weight = WEIGHT.normal,
81
+ className = "",
82
+ ...props
83
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
84
+ "p",
85
+ {
86
+ className: clsx3__default.default(
87
+ baseClass2,
88
+ variantClass2[variant],
89
+ `font-${weight}`,
90
+ className
91
+ ),
92
+ ...props,
93
+ children: text
94
+ }
95
+ );
96
+ Component.displayName = variant;
97
+ Component.Weight = WEIGHT;
98
+ return Component;
99
+ };
100
+ var P1 = ParagraphVariant("P1");
101
+ var P2 = ParagraphVariant("P2");
102
+ ParagraphVariant("P3");
103
+ ParagraphVariant("P4");
104
+ var Title2 = ({
105
+ title,
106
+ subtitle = "",
107
+ renderButton = null,
108
+ className = ""
109
+ }) => {
110
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex justify-between flex-col", className), children: [
111
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row justify-between", children: [
112
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default("flex items-baseline gap-[16px]"), children: [
113
+ /* @__PURE__ */ jsxRuntime.jsx(H5, { className: "text-gray-800", text: title }),
114
+ subtitle ? /* @__PURE__ */ jsxRuntime.jsx(P2, { className: "text-gray-600", text: subtitle }) : null
115
+ ] }),
116
+ renderButton || null
117
+ ] }),
118
+ /* @__PURE__ */ jsxRuntime.jsx(
119
+ "div",
120
+ {
121
+ className: clsx3__default.default(
122
+ "w-full h-[1px] bg-gray-800 mt-[8px]",
123
+ "desktop:mt-[16px]"
124
+ )
125
+ }
126
+ )
127
+ ] });
128
+ };
129
+ var title2_default = Title2;
130
+
131
+ // src/button/enum.ts
132
+ var Size = /* @__PURE__ */ ((Size2) => {
133
+ Size2[Size2["S"] = 0] = "S";
134
+ Size2[Size2["L"] = 1] = "L";
135
+ return Size2;
136
+ })(Size || {});
137
+ var Style = /* @__PURE__ */ ((Style2) => {
138
+ Style2[Style2["BRAND"] = 0] = "BRAND";
139
+ Style2[Style2["DARK"] = 1] = "DARK";
140
+ Style2[Style2["LIGHT"] = 2] = "LIGHT";
141
+ return Style2;
142
+ })(Style || {});
143
+
144
+ // src/button/constant.ts
145
+ var THEME = {
146
+ normal: "normal",
147
+ photography: "photography",
148
+ transparent: "transparent",
149
+ index: "index"
150
+ };
151
+ var TextButton = ({
152
+ text,
153
+ leftIconComponent,
154
+ rightIconComponent,
155
+ size = 0 /* S */,
156
+ theme = THEME.normal,
157
+ style = 1 /* DARK */,
158
+ active = false,
159
+ disabled = false,
160
+ loading = false,
161
+ className = ""
162
+ }) => {
163
+ const TextJSX = React.useMemo(
164
+ () => size === 0 /* S */ ? /* @__PURE__ */ jsxRuntime.jsx(P2, { text }) : /* @__PURE__ */ jsxRuntime.jsx(P1, { text }),
165
+ [size, text]
166
+ );
167
+ return /* @__PURE__ */ jsxRuntime.jsx(
168
+ "div",
169
+ {
170
+ className: clsx3__default.default(
171
+ "flex items-center",
172
+ {
173
+ "cursor-default": disabled,
174
+ "cursor-pointer": !disabled
175
+ },
176
+ {
177
+ "text-gray-500 hover:text-gray-500": disabled && (theme === THEME.photography || theme === THEME.transparent),
178
+ "text-gray-400 hover:text-gray-400": disabled || theme === THEME.photography && style === 2 /* LIGHT */ && !active && !disabled,
179
+ "text-gray-200 hover:text-supportive-pastel": theme === THEME.photography && !active && !disabled,
180
+ "text-gray-300 hover:text-gray-400": theme === THEME.photography && style === 2 /* LIGHT */ && active && !disabled,
181
+ "text-gray-white hover:text-supportive-pastel": theme === THEME.photography && style === 1 /* DARK */ && active && !disabled,
182
+ "text-supportive-faded hover:text-supportive-pastel": theme === THEME.photography && style === 0 /* BRAND */ && active && !disabled,
183
+ "text-gray-100 hover:text-gray-200": theme === THEME.transparent && !active && !disabled,
184
+ "text-gray-white hover:text-gray-white": theme === THEME.transparent && active && !disabled,
185
+ "text-gray-600 hover:text-brand-heavy": theme === THEME.normal && !active && !disabled,
186
+ "text-brand-heavy hover:text-brand-heavy": theme === THEME.normal && active && !disabled
187
+ },
188
+ className
189
+ ),
190
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex justify-center items-center", children: [
191
+ /* @__PURE__ */ jsxRuntime.jsxs(
192
+ "div",
193
+ {
194
+ className: clsx3__default.default("flex justify-center items-center", {
195
+ "opacity-0": loading,
196
+ "opacity-100": !loading
197
+ }),
198
+ children: [
199
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center mr-[4px]", children: leftIconComponent }),
200
+ TextJSX,
201
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center ml-[4px]", children: rightIconComponent })
202
+ ]
203
+ }
204
+ ),
205
+ /* @__PURE__ */ jsxRuntime.jsx(
206
+ "span",
207
+ {
208
+ className: clsx3__default.default(
209
+ "inline-block absolute box-border animation-spin",
210
+ "border-2 border-solid border-gray-400 border-t-gray-600 rounded-[50%]",
211
+ {
212
+ "size-[18px]": size === 0 /* S */,
213
+ "size-[24px]": size === 1 /* L */
214
+ },
215
+ {
216
+ "opacity-0": !loading,
217
+ "opacity-100": loading
218
+ }
219
+ )
220
+ }
221
+ )
222
+ ] })
223
+ }
224
+ );
225
+ };
226
+ TextButton.Size = Size;
227
+ TextButton.Style = Style;
228
+ TextButton.THEME = THEME;
229
+ var text_button_default = TextButton;
230
+ var meta = {
231
+ title: "Title Bar/Title2",
232
+ component: title2_default
233
+ };
234
+ var title2_stories_default = meta;
235
+ var Basic = {
236
+ args: {
237
+ title: "RWD \u6A19\u984C",
238
+ subtitle: "\u526F\u6A19"
239
+ },
240
+ parameters: { controls: { exclude: ["className"] } }
241
+ };
242
+ var WithButton = {
243
+ render: (args) => {
244
+ const buttonJSX = /* @__PURE__ */ jsxRuntime.jsx(text_button_default, { text: "NOT RWD \u6309\u9215" });
245
+ return /* @__PURE__ */ jsxRuntime.jsx(title2_default, { ...args, renderButton: buttonJSX });
246
+ },
247
+ args: {
248
+ title: "RWD \u6A19\u984C",
249
+ subtitle: "\u526F\u6A19"
250
+ },
251
+ parameters: { controls: { exclude: ["className", "renderButton"] } }
252
+ };
253
+
254
+ exports.Basic = Basic;
255
+ exports.WithButton = WithButton;
256
+ exports.default = title2_stories_default;
257
+ //# sourceMappingURL=title2.stories.js.map
258
+ //# sourceMappingURL=title2.stories.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/button/enum.ts","../../../src/button/constant.ts","../../../src/button/components/text-button/index.tsx","../../../src/title-bar/stories/title2.stories.tsx"],"names":["React","clsx","baseClass","variantClass","jsx","jsxs","Size","Style","useMemo"],"mappings":"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","file":"title2.stories.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","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 type { Meta, StoryObj } from '@storybook/react-vite'\n// components\nimport Title2 from '../components/title2'\nimport { TextButton } from '../../button'\n\nconst meta = {\n title: 'Title Bar/Title2',\n component: Title2,\n} satisfies Meta<typeof Title2>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\nexport const Basic: Story = {\n args: {\n title: 'RWD 標題',\n subtitle: '副標',\n },\n parameters: { controls: { exclude: ['className'] } },\n}\n\nexport const WithButton: Story = {\n render: (args) => {\n const buttonJSX = <TextButton text=\"NOT RWD 按鈕\" />\n return <Title2 {...args} renderButton={buttonJSX} />\n },\n args: {\n title: 'RWD 標題',\n subtitle: '副標',\n },\n parameters: { controls: { exclude: ['className', 'renderButton'] } },\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { title2_default } from '../../chunk-6DXA3EX7.mjs';
2
+ import '../../chunk-JHLT5GDV.mjs';
3
+ import '../../chunk-7DK5MO62.mjs';
4
+ import { text_button_default } from '../../chunk-QE5LVT7A.mjs';
5
+ import '../../chunk-HQG6Q2EY.mjs';
6
+ import '../../chunk-UM7RNC2Y.mjs';
7
+ import '../../chunk-JB4TYHDE.mjs';
8
+ import '../../chunk-URJXIWFX.mjs';
9
+ import { jsx } from 'react/jsx-runtime';
10
+
11
+ var meta = {
12
+ title: "Title Bar/Title2",
13
+ component: title2_default
14
+ };
15
+ var title2_stories_default = meta;
16
+ var Basic = {
17
+ args: {
18
+ title: "RWD \u6A19\u984C",
19
+ subtitle: "\u526F\u6A19"
20
+ },
21
+ parameters: { controls: { exclude: ["className"] } }
22
+ };
23
+ var WithButton = {
24
+ render: (args) => {
25
+ const buttonJSX = /* @__PURE__ */ jsx(text_button_default, { text: "NOT RWD \u6309\u9215" });
26
+ return /* @__PURE__ */ jsx(title2_default, { ...args, renderButton: buttonJSX });
27
+ },
28
+ args: {
29
+ title: "RWD \u6A19\u984C",
30
+ subtitle: "\u526F\u6A19"
31
+ },
32
+ parameters: { controls: { exclude: ["className", "renderButton"] } }
33
+ };
34
+
35
+ export { Basic, WithButton, title2_stories_default as default };
36
+ //# sourceMappingURL=title2.stories.mjs.map
37
+ //# sourceMappingURL=title2.stories.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/title-bar/stories/title2.stories.tsx"],"names":[],"mappings":";;;;;;;;;;AAKA,IAAM,IAAA,GAAO;AAAA,EACX,KAAA,EAAO,kBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAO,sBAAA,GAAQ;AAGR,IAAM,KAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,kBAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,WAAW,GAAE;AACnD;AAEO,IAAM,UAAA,GAAoB;AAAA,EAC/B,MAAA,EAAQ,CAAC,IAAA,KAAS;AAChB,IAAA,MAAM,SAAA,mBAAY,GAAA,CAAC,mBAAA,EAAA,EAAW,IAAA,EAAK,sBAAA,EAAa,CAAA;AAChD,IAAA,uBAAO,GAAA,CAAC,cAAA,EAAA,EAAQ,GAAG,IAAA,EAAM,cAAc,SAAA,EAAW,CAAA;AAAA,EACpD,CAAA;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,kBAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY,EAAE,QAAA,EAAU,EAAE,SAAS,CAAC,WAAA,EAAa,cAAc,CAAA,EAAE;AACnE","file":"title2.stories.mjs","sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite'\n// components\nimport Title2 from '../components/title2'\nimport { TextButton } from '../../button'\n\nconst meta = {\n title: 'Title Bar/Title2',\n component: Title2,\n} satisfies Meta<typeof Title2>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\nexport const Basic: Story = {\n args: {\n title: 'RWD 標題',\n subtitle: '副標',\n },\n parameters: { controls: { exclude: ['className'] } },\n}\n\nexport const WithButton: Story = {\n render: (args) => {\n const buttonJSX = <TextButton text=\"NOT RWD 按鈕\" />\n return <Title2 {...args} renderButton={buttonJSX} />\n },\n args: {\n title: 'RWD 標題',\n subtitle: '副標',\n },\n parameters: { controls: { exclude: ['className', 'renderButton'] } },\n}\n"]}
@@ -0,0 +1,3 @@
1
+ type ValuesOf<T> = T[keyof T];
2
+
3
+ export type { ValuesOf };
@@ -0,0 +1,3 @@
1
+ type ValuesOf<T> = T[keyof T];
2
+
3
+ export type { ValuesOf };
@@ -1,18 +1,4 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ 'use strict';
15
2
 
16
- // src/types/index.ts
17
- var types_exports = {};
18
- module.exports = __toCommonJS(types_exports);
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=index.mjs.map
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
package/package.json CHANGED
@@ -3,17 +3,16 @@
3
3
  "description": "React components using TypeScript and Tailwind CSS",
4
4
  "author": "twreporter <developer@twreporter.org>",
5
5
  "license": "MIT",
6
- "version": "0.1.0-beta.4",
6
+ "version": "0.1.0-beta.6",
7
7
  "type": "commonjs",
8
- "main": "lib/index.js",
9
- "module": "lib/index.mjs",
10
- "types": "lib/index.d.ts",
11
8
  "scripts": {
12
9
  "clean": "rm -rf lib",
13
10
  "build:styles": "tailwindcss -i ./src/styles.css -o ./lib/styles.css",
14
11
  "build:components": "tsup src/* --outDir lib",
15
12
  "build": "yarn clean && yarn build:components && yarn build:styles",
16
- "prepublishOnly": "yarn build"
13
+ "prepublishOnly": "yarn build",
14
+ "storybook": "storybook dev -p 6006",
15
+ "build-storybook": "storybook build"
17
16
  },
18
17
  "peerDependencies": {
19
18
  "react": "^19.0.0",
@@ -24,14 +23,18 @@
24
23
  "clsx": "^2.1.1"
25
24
  },
26
25
  "devDependencies": {
26
+ "@storybook/addon-docs": "^9.1.3",
27
+ "@storybook/react-vite": "^9.1.3",
27
28
  "@tailwindcss/cli": "^4.1.11",
28
29
  "@tailwindcss/postcss": "^4.1.11",
29
- "@twreporter/tailwind-config": "^0.1.0-beta.4",
30
+ "@twreporter/tailwind-config": "^0.1.0-beta.5",
30
31
  "@types/react": "^19",
31
32
  "@types/react-dom": "^19",
32
33
  "autoprefixer": "^10.4.21",
34
+ "storybook": "^9.1.3",
33
35
  "tsup": "^8.5.0",
34
- "typescript": "^5"
36
+ "typescript": "^5",
37
+ "vite": "^7.1.3"
35
38
  },
36
39
  "files": [
37
40
  "lib"
@@ -40,5 +43,6 @@
40
43
  "type": "git",
41
44
  "url": "git+https://github.com/twreporter/www-public-monorepo.git",
42
45
  "directory": "packages/react-typescript-components"
43
- }
46
+ },
47
+ "gitHead": "e6324b04c86a7c94d16137e9198358f0c26e2888"
44
48
  }