@seanyeh77/ui 0.0.0-stage → 0.3.0

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 (564) hide show
  1. package/dist/bundle.js +81 -0
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/fonts/LICENSE-OFL.txt +93 -0
  4. package/dist/fonts/geist-mono-cyrillic-400-normal.woff2 +0 -0
  5. package/dist/fonts/geist-mono-cyrillic-500-normal.woff2 +0 -0
  6. package/dist/fonts/geist-mono-cyrillic-600-normal.woff2 +0 -0
  7. package/dist/fonts/geist-mono-cyrillic-700-normal.woff2 +0 -0
  8. package/dist/fonts/geist-mono-cyrillic-ext-400-normal.woff2 +0 -0
  9. package/dist/fonts/geist-mono-cyrillic-ext-500-normal.woff2 +0 -0
  10. package/dist/fonts/geist-mono-cyrillic-ext-600-normal.woff2 +0 -0
  11. package/dist/fonts/geist-mono-cyrillic-ext-700-normal.woff2 +0 -0
  12. package/dist/fonts/geist-mono-latin-400-normal.woff2 +0 -0
  13. package/dist/fonts/geist-mono-latin-500-normal.woff2 +0 -0
  14. package/dist/fonts/geist-mono-latin-600-normal.woff2 +0 -0
  15. package/dist/fonts/geist-mono-latin-700-normal.woff2 +0 -0
  16. package/dist/fonts/geist-mono-latin-ext-400-normal.woff2 +0 -0
  17. package/dist/fonts/geist-mono-latin-ext-500-normal.woff2 +0 -0
  18. package/dist/fonts/geist-mono-latin-ext-600-normal.woff2 +0 -0
  19. package/dist/fonts/geist-mono-latin-ext-700-normal.woff2 +0 -0
  20. package/dist/fonts/geist-mono-symbols2-400-normal.woff2 +0 -0
  21. package/dist/fonts/geist-mono-symbols2-500-normal.woff2 +0 -0
  22. package/dist/fonts/geist-mono-symbols2-600-normal.woff2 +0 -0
  23. package/dist/fonts/geist-mono-symbols2-700-normal.woff2 +0 -0
  24. package/dist/fonts/geist-mono-vietnamese-400-normal.woff2 +0 -0
  25. package/dist/fonts/geist-mono-vietnamese-500-normal.woff2 +0 -0
  26. package/dist/fonts/geist-mono-vietnamese-600-normal.woff2 +0 -0
  27. package/dist/fonts/geist-mono-vietnamese-700-normal.woff2 +0 -0
  28. package/dist/fonts/inter-cyrillic-400-normal.woff2 +0 -0
  29. package/dist/fonts/inter-cyrillic-500-normal.woff2 +0 -0
  30. package/dist/fonts/inter-cyrillic-600-normal.woff2 +0 -0
  31. package/dist/fonts/inter-cyrillic-700-normal.woff2 +0 -0
  32. package/dist/fonts/inter-cyrillic-ext-400-normal.woff2 +0 -0
  33. package/dist/fonts/inter-cyrillic-ext-500-normal.woff2 +0 -0
  34. package/dist/fonts/inter-cyrillic-ext-600-normal.woff2 +0 -0
  35. package/dist/fonts/inter-cyrillic-ext-700-normal.woff2 +0 -0
  36. package/dist/fonts/inter-greek-400-normal.woff2 +0 -0
  37. package/dist/fonts/inter-greek-500-normal.woff2 +0 -0
  38. package/dist/fonts/inter-greek-600-normal.woff2 +0 -0
  39. package/dist/fonts/inter-greek-700-normal.woff2 +0 -0
  40. package/dist/fonts/inter-greek-ext-400-normal.woff2 +0 -0
  41. package/dist/fonts/inter-greek-ext-500-normal.woff2 +0 -0
  42. package/dist/fonts/inter-greek-ext-600-normal.woff2 +0 -0
  43. package/dist/fonts/inter-greek-ext-700-normal.woff2 +0 -0
  44. package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
  45. package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
  46. package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
  47. package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
  48. package/dist/fonts/inter-latin-ext-400-normal.woff2 +0 -0
  49. package/dist/fonts/inter-latin-ext-500-normal.woff2 +0 -0
  50. package/dist/fonts/inter-latin-ext-600-normal.woff2 +0 -0
  51. package/dist/fonts/inter-latin-ext-700-normal.woff2 +0 -0
  52. package/dist/fonts/inter-vietnamese-400-normal.woff2 +0 -0
  53. package/dist/fonts/inter-vietnamese-500-normal.woff2 +0 -0
  54. package/dist/fonts/inter-vietnamese-600-normal.woff2 +0 -0
  55. package/dist/fonts/inter-vietnamese-700-normal.woff2 +0 -0
  56. package/dist/fonts/noto-sans-tc-0-400-normal.woff2 +0 -0
  57. package/dist/fonts/noto-sans-tc-0-500-normal.woff2 +0 -0
  58. package/dist/fonts/noto-sans-tc-0-600-normal.woff2 +0 -0
  59. package/dist/fonts/noto-sans-tc-0-700-normal.woff2 +0 -0
  60. package/dist/fonts/noto-sans-tc-1-400-normal.woff2 +0 -0
  61. package/dist/fonts/noto-sans-tc-1-500-normal.woff2 +0 -0
  62. package/dist/fonts/noto-sans-tc-1-600-normal.woff2 +0 -0
  63. package/dist/fonts/noto-sans-tc-1-700-normal.woff2 +0 -0
  64. package/dist/fonts/noto-sans-tc-10-400-normal.woff2 +0 -0
  65. package/dist/fonts/noto-sans-tc-10-500-normal.woff2 +0 -0
  66. package/dist/fonts/noto-sans-tc-10-600-normal.woff2 +0 -0
  67. package/dist/fonts/noto-sans-tc-10-700-normal.woff2 +0 -0
  68. package/dist/fonts/noto-sans-tc-101-400-normal.woff2 +0 -0
  69. package/dist/fonts/noto-sans-tc-101-500-normal.woff2 +0 -0
  70. package/dist/fonts/noto-sans-tc-101-600-normal.woff2 +0 -0
  71. package/dist/fonts/noto-sans-tc-101-700-normal.woff2 +0 -0
  72. package/dist/fonts/noto-sans-tc-102-400-normal.woff2 +0 -0
  73. package/dist/fonts/noto-sans-tc-102-500-normal.woff2 +0 -0
  74. package/dist/fonts/noto-sans-tc-102-600-normal.woff2 +0 -0
  75. package/dist/fonts/noto-sans-tc-102-700-normal.woff2 +0 -0
  76. package/dist/fonts/noto-sans-tc-103-400-normal.woff2 +0 -0
  77. package/dist/fonts/noto-sans-tc-103-500-normal.woff2 +0 -0
  78. package/dist/fonts/noto-sans-tc-103-600-normal.woff2 +0 -0
  79. package/dist/fonts/noto-sans-tc-103-700-normal.woff2 +0 -0
  80. package/dist/fonts/noto-sans-tc-104-400-normal.woff2 +0 -0
  81. package/dist/fonts/noto-sans-tc-104-500-normal.woff2 +0 -0
  82. package/dist/fonts/noto-sans-tc-104-600-normal.woff2 +0 -0
  83. package/dist/fonts/noto-sans-tc-104-700-normal.woff2 +0 -0
  84. package/dist/fonts/noto-sans-tc-105-400-normal.woff2 +0 -0
  85. package/dist/fonts/noto-sans-tc-105-500-normal.woff2 +0 -0
  86. package/dist/fonts/noto-sans-tc-105-600-normal.woff2 +0 -0
  87. package/dist/fonts/noto-sans-tc-105-700-normal.woff2 +0 -0
  88. package/dist/fonts/noto-sans-tc-106-400-normal.woff2 +0 -0
  89. package/dist/fonts/noto-sans-tc-106-500-normal.woff2 +0 -0
  90. package/dist/fonts/noto-sans-tc-106-600-normal.woff2 +0 -0
  91. package/dist/fonts/noto-sans-tc-106-700-normal.woff2 +0 -0
  92. package/dist/fonts/noto-sans-tc-107-400-normal.woff2 +0 -0
  93. package/dist/fonts/noto-sans-tc-107-500-normal.woff2 +0 -0
  94. package/dist/fonts/noto-sans-tc-107-600-normal.woff2 +0 -0
  95. package/dist/fonts/noto-sans-tc-107-700-normal.woff2 +0 -0
  96. package/dist/fonts/noto-sans-tc-108-400-normal.woff2 +0 -0
  97. package/dist/fonts/noto-sans-tc-108-500-normal.woff2 +0 -0
  98. package/dist/fonts/noto-sans-tc-108-600-normal.woff2 +0 -0
  99. package/dist/fonts/noto-sans-tc-108-700-normal.woff2 +0 -0
  100. package/dist/fonts/noto-sans-tc-109-400-normal.woff2 +0 -0
  101. package/dist/fonts/noto-sans-tc-109-500-normal.woff2 +0 -0
  102. package/dist/fonts/noto-sans-tc-109-600-normal.woff2 +0 -0
  103. package/dist/fonts/noto-sans-tc-109-700-normal.woff2 +0 -0
  104. package/dist/fonts/noto-sans-tc-11-400-normal.woff2 +0 -0
  105. package/dist/fonts/noto-sans-tc-11-500-normal.woff2 +0 -0
  106. package/dist/fonts/noto-sans-tc-11-600-normal.woff2 +0 -0
  107. package/dist/fonts/noto-sans-tc-11-700-normal.woff2 +0 -0
  108. package/dist/fonts/noto-sans-tc-110-400-normal.woff2 +0 -0
  109. package/dist/fonts/noto-sans-tc-110-500-normal.woff2 +0 -0
  110. package/dist/fonts/noto-sans-tc-110-600-normal.woff2 +0 -0
  111. package/dist/fonts/noto-sans-tc-110-700-normal.woff2 +0 -0
  112. package/dist/fonts/noto-sans-tc-111-400-normal.woff2 +0 -0
  113. package/dist/fonts/noto-sans-tc-111-500-normal.woff2 +0 -0
  114. package/dist/fonts/noto-sans-tc-111-600-normal.woff2 +0 -0
  115. package/dist/fonts/noto-sans-tc-111-700-normal.woff2 +0 -0
  116. package/dist/fonts/noto-sans-tc-112-400-normal.woff2 +0 -0
  117. package/dist/fonts/noto-sans-tc-112-500-normal.woff2 +0 -0
  118. package/dist/fonts/noto-sans-tc-112-600-normal.woff2 +0 -0
  119. package/dist/fonts/noto-sans-tc-112-700-normal.woff2 +0 -0
  120. package/dist/fonts/noto-sans-tc-113-400-normal.woff2 +0 -0
  121. package/dist/fonts/noto-sans-tc-113-500-normal.woff2 +0 -0
  122. package/dist/fonts/noto-sans-tc-113-600-normal.woff2 +0 -0
  123. package/dist/fonts/noto-sans-tc-113-700-normal.woff2 +0 -0
  124. package/dist/fonts/noto-sans-tc-114-400-normal.woff2 +0 -0
  125. package/dist/fonts/noto-sans-tc-114-500-normal.woff2 +0 -0
  126. package/dist/fonts/noto-sans-tc-114-600-normal.woff2 +0 -0
  127. package/dist/fonts/noto-sans-tc-114-700-normal.woff2 +0 -0
  128. package/dist/fonts/noto-sans-tc-115-400-normal.woff2 +0 -0
  129. package/dist/fonts/noto-sans-tc-115-500-normal.woff2 +0 -0
  130. package/dist/fonts/noto-sans-tc-115-600-normal.woff2 +0 -0
  131. package/dist/fonts/noto-sans-tc-115-700-normal.woff2 +0 -0
  132. package/dist/fonts/noto-sans-tc-116-400-normal.woff2 +0 -0
  133. package/dist/fonts/noto-sans-tc-116-500-normal.woff2 +0 -0
  134. package/dist/fonts/noto-sans-tc-116-600-normal.woff2 +0 -0
  135. package/dist/fonts/noto-sans-tc-116-700-normal.woff2 +0 -0
  136. package/dist/fonts/noto-sans-tc-117-400-normal.woff2 +0 -0
  137. package/dist/fonts/noto-sans-tc-117-500-normal.woff2 +0 -0
  138. package/dist/fonts/noto-sans-tc-117-600-normal.woff2 +0 -0
  139. package/dist/fonts/noto-sans-tc-117-700-normal.woff2 +0 -0
  140. package/dist/fonts/noto-sans-tc-118-400-normal.woff2 +0 -0
  141. package/dist/fonts/noto-sans-tc-118-500-normal.woff2 +0 -0
  142. package/dist/fonts/noto-sans-tc-118-600-normal.woff2 +0 -0
  143. package/dist/fonts/noto-sans-tc-118-700-normal.woff2 +0 -0
  144. package/dist/fonts/noto-sans-tc-119-400-normal.woff2 +0 -0
  145. package/dist/fonts/noto-sans-tc-119-500-normal.woff2 +0 -0
  146. package/dist/fonts/noto-sans-tc-119-600-normal.woff2 +0 -0
  147. package/dist/fonts/noto-sans-tc-119-700-normal.woff2 +0 -0
  148. package/dist/fonts/noto-sans-tc-12-400-normal.woff2 +0 -0
  149. package/dist/fonts/noto-sans-tc-12-500-normal.woff2 +0 -0
  150. package/dist/fonts/noto-sans-tc-12-600-normal.woff2 +0 -0
  151. package/dist/fonts/noto-sans-tc-12-700-normal.woff2 +0 -0
  152. package/dist/fonts/noto-sans-tc-120-400-normal.woff2 +0 -0
  153. package/dist/fonts/noto-sans-tc-120-500-normal.woff2 +0 -0
  154. package/dist/fonts/noto-sans-tc-120-600-normal.woff2 +0 -0
  155. package/dist/fonts/noto-sans-tc-120-700-normal.woff2 +0 -0
  156. package/dist/fonts/noto-sans-tc-121-400-normal.woff2 +0 -0
  157. package/dist/fonts/noto-sans-tc-121-500-normal.woff2 +0 -0
  158. package/dist/fonts/noto-sans-tc-121-600-normal.woff2 +0 -0
  159. package/dist/fonts/noto-sans-tc-121-700-normal.woff2 +0 -0
  160. package/dist/fonts/noto-sans-tc-122-400-normal.woff2 +0 -0
  161. package/dist/fonts/noto-sans-tc-122-500-normal.woff2 +0 -0
  162. package/dist/fonts/noto-sans-tc-122-600-normal.woff2 +0 -0
  163. package/dist/fonts/noto-sans-tc-122-700-normal.woff2 +0 -0
  164. package/dist/fonts/noto-sans-tc-123-400-normal.woff2 +0 -0
  165. package/dist/fonts/noto-sans-tc-123-500-normal.woff2 +0 -0
  166. package/dist/fonts/noto-sans-tc-123-600-normal.woff2 +0 -0
  167. package/dist/fonts/noto-sans-tc-123-700-normal.woff2 +0 -0
  168. package/dist/fonts/noto-sans-tc-2-400-normal.woff2 +0 -0
  169. package/dist/fonts/noto-sans-tc-2-500-normal.woff2 +0 -0
  170. package/dist/fonts/noto-sans-tc-2-600-normal.woff2 +0 -0
  171. package/dist/fonts/noto-sans-tc-2-700-normal.woff2 +0 -0
  172. package/dist/fonts/noto-sans-tc-23-400-normal.woff2 +0 -0
  173. package/dist/fonts/noto-sans-tc-23-500-normal.woff2 +0 -0
  174. package/dist/fonts/noto-sans-tc-23-600-normal.woff2 +0 -0
  175. package/dist/fonts/noto-sans-tc-23-700-normal.woff2 +0 -0
  176. package/dist/fonts/noto-sans-tc-24-400-normal.woff2 +0 -0
  177. package/dist/fonts/noto-sans-tc-24-500-normal.woff2 +0 -0
  178. package/dist/fonts/noto-sans-tc-24-600-normal.woff2 +0 -0
  179. package/dist/fonts/noto-sans-tc-24-700-normal.woff2 +0 -0
  180. package/dist/fonts/noto-sans-tc-25-400-normal.woff2 +0 -0
  181. package/dist/fonts/noto-sans-tc-25-500-normal.woff2 +0 -0
  182. package/dist/fonts/noto-sans-tc-25-600-normal.woff2 +0 -0
  183. package/dist/fonts/noto-sans-tc-25-700-normal.woff2 +0 -0
  184. package/dist/fonts/noto-sans-tc-26-400-normal.woff2 +0 -0
  185. package/dist/fonts/noto-sans-tc-26-500-normal.woff2 +0 -0
  186. package/dist/fonts/noto-sans-tc-26-600-normal.woff2 +0 -0
  187. package/dist/fonts/noto-sans-tc-26-700-normal.woff2 +0 -0
  188. package/dist/fonts/noto-sans-tc-27-400-normal.woff2 +0 -0
  189. package/dist/fonts/noto-sans-tc-27-500-normal.woff2 +0 -0
  190. package/dist/fonts/noto-sans-tc-27-600-normal.woff2 +0 -0
  191. package/dist/fonts/noto-sans-tc-27-700-normal.woff2 +0 -0
  192. package/dist/fonts/noto-sans-tc-28-400-normal.woff2 +0 -0
  193. package/dist/fonts/noto-sans-tc-28-500-normal.woff2 +0 -0
  194. package/dist/fonts/noto-sans-tc-28-600-normal.woff2 +0 -0
  195. package/dist/fonts/noto-sans-tc-28-700-normal.woff2 +0 -0
  196. package/dist/fonts/noto-sans-tc-29-400-normal.woff2 +0 -0
  197. package/dist/fonts/noto-sans-tc-29-500-normal.woff2 +0 -0
  198. package/dist/fonts/noto-sans-tc-29-600-normal.woff2 +0 -0
  199. package/dist/fonts/noto-sans-tc-29-700-normal.woff2 +0 -0
  200. package/dist/fonts/noto-sans-tc-30-400-normal.woff2 +0 -0
  201. package/dist/fonts/noto-sans-tc-30-500-normal.woff2 +0 -0
  202. package/dist/fonts/noto-sans-tc-30-600-normal.woff2 +0 -0
  203. package/dist/fonts/noto-sans-tc-30-700-normal.woff2 +0 -0
  204. package/dist/fonts/noto-sans-tc-31-400-normal.woff2 +0 -0
  205. package/dist/fonts/noto-sans-tc-31-500-normal.woff2 +0 -0
  206. package/dist/fonts/noto-sans-tc-31-600-normal.woff2 +0 -0
  207. package/dist/fonts/noto-sans-tc-31-700-normal.woff2 +0 -0
  208. package/dist/fonts/noto-sans-tc-32-400-normal.woff2 +0 -0
  209. package/dist/fonts/noto-sans-tc-32-500-normal.woff2 +0 -0
  210. package/dist/fonts/noto-sans-tc-32-600-normal.woff2 +0 -0
  211. package/dist/fonts/noto-sans-tc-32-700-normal.woff2 +0 -0
  212. package/dist/fonts/noto-sans-tc-33-400-normal.woff2 +0 -0
  213. package/dist/fonts/noto-sans-tc-33-500-normal.woff2 +0 -0
  214. package/dist/fonts/noto-sans-tc-33-600-normal.woff2 +0 -0
  215. package/dist/fonts/noto-sans-tc-33-700-normal.woff2 +0 -0
  216. package/dist/fonts/noto-sans-tc-34-400-normal.woff2 +0 -0
  217. package/dist/fonts/noto-sans-tc-34-500-normal.woff2 +0 -0
  218. package/dist/fonts/noto-sans-tc-34-600-normal.woff2 +0 -0
  219. package/dist/fonts/noto-sans-tc-34-700-normal.woff2 +0 -0
  220. package/dist/fonts/noto-sans-tc-35-400-normal.woff2 +0 -0
  221. package/dist/fonts/noto-sans-tc-35-500-normal.woff2 +0 -0
  222. package/dist/fonts/noto-sans-tc-35-600-normal.woff2 +0 -0
  223. package/dist/fonts/noto-sans-tc-35-700-normal.woff2 +0 -0
  224. package/dist/fonts/noto-sans-tc-36-400-normal.woff2 +0 -0
  225. package/dist/fonts/noto-sans-tc-36-500-normal.woff2 +0 -0
  226. package/dist/fonts/noto-sans-tc-36-600-normal.woff2 +0 -0
  227. package/dist/fonts/noto-sans-tc-36-700-normal.woff2 +0 -0
  228. package/dist/fonts/noto-sans-tc-37-400-normal.woff2 +0 -0
  229. package/dist/fonts/noto-sans-tc-37-500-normal.woff2 +0 -0
  230. package/dist/fonts/noto-sans-tc-37-600-normal.woff2 +0 -0
  231. package/dist/fonts/noto-sans-tc-37-700-normal.woff2 +0 -0
  232. package/dist/fonts/noto-sans-tc-38-400-normal.woff2 +0 -0
  233. package/dist/fonts/noto-sans-tc-38-500-normal.woff2 +0 -0
  234. package/dist/fonts/noto-sans-tc-38-600-normal.woff2 +0 -0
  235. package/dist/fonts/noto-sans-tc-38-700-normal.woff2 +0 -0
  236. package/dist/fonts/noto-sans-tc-39-400-normal.woff2 +0 -0
  237. package/dist/fonts/noto-sans-tc-39-500-normal.woff2 +0 -0
  238. package/dist/fonts/noto-sans-tc-39-600-normal.woff2 +0 -0
  239. package/dist/fonts/noto-sans-tc-39-700-normal.woff2 +0 -0
  240. package/dist/fonts/noto-sans-tc-4-400-normal.woff2 +0 -0
  241. package/dist/fonts/noto-sans-tc-4-500-normal.woff2 +0 -0
  242. package/dist/fonts/noto-sans-tc-4-600-normal.woff2 +0 -0
  243. package/dist/fonts/noto-sans-tc-4-700-normal.woff2 +0 -0
  244. package/dist/fonts/noto-sans-tc-40-400-normal.woff2 +0 -0
  245. package/dist/fonts/noto-sans-tc-40-500-normal.woff2 +0 -0
  246. package/dist/fonts/noto-sans-tc-40-600-normal.woff2 +0 -0
  247. package/dist/fonts/noto-sans-tc-40-700-normal.woff2 +0 -0
  248. package/dist/fonts/noto-sans-tc-41-400-normal.woff2 +0 -0
  249. package/dist/fonts/noto-sans-tc-41-500-normal.woff2 +0 -0
  250. package/dist/fonts/noto-sans-tc-41-600-normal.woff2 +0 -0
  251. package/dist/fonts/noto-sans-tc-41-700-normal.woff2 +0 -0
  252. package/dist/fonts/noto-sans-tc-42-400-normal.woff2 +0 -0
  253. package/dist/fonts/noto-sans-tc-42-500-normal.woff2 +0 -0
  254. package/dist/fonts/noto-sans-tc-42-600-normal.woff2 +0 -0
  255. package/dist/fonts/noto-sans-tc-42-700-normal.woff2 +0 -0
  256. package/dist/fonts/noto-sans-tc-43-400-normal.woff2 +0 -0
  257. package/dist/fonts/noto-sans-tc-43-500-normal.woff2 +0 -0
  258. package/dist/fonts/noto-sans-tc-43-600-normal.woff2 +0 -0
  259. package/dist/fonts/noto-sans-tc-43-700-normal.woff2 +0 -0
  260. package/dist/fonts/noto-sans-tc-44-400-normal.woff2 +0 -0
  261. package/dist/fonts/noto-sans-tc-44-500-normal.woff2 +0 -0
  262. package/dist/fonts/noto-sans-tc-44-600-normal.woff2 +0 -0
  263. package/dist/fonts/noto-sans-tc-44-700-normal.woff2 +0 -0
  264. package/dist/fonts/noto-sans-tc-45-400-normal.woff2 +0 -0
  265. package/dist/fonts/noto-sans-tc-45-500-normal.woff2 +0 -0
  266. package/dist/fonts/noto-sans-tc-45-600-normal.woff2 +0 -0
  267. package/dist/fonts/noto-sans-tc-45-700-normal.woff2 +0 -0
  268. package/dist/fonts/noto-sans-tc-46-400-normal.woff2 +0 -0
  269. package/dist/fonts/noto-sans-tc-46-500-normal.woff2 +0 -0
  270. package/dist/fonts/noto-sans-tc-46-600-normal.woff2 +0 -0
  271. package/dist/fonts/noto-sans-tc-46-700-normal.woff2 +0 -0
  272. package/dist/fonts/noto-sans-tc-47-400-normal.woff2 +0 -0
  273. package/dist/fonts/noto-sans-tc-47-500-normal.woff2 +0 -0
  274. package/dist/fonts/noto-sans-tc-47-600-normal.woff2 +0 -0
  275. package/dist/fonts/noto-sans-tc-47-700-normal.woff2 +0 -0
  276. package/dist/fonts/noto-sans-tc-48-400-normal.woff2 +0 -0
  277. package/dist/fonts/noto-sans-tc-48-500-normal.woff2 +0 -0
  278. package/dist/fonts/noto-sans-tc-48-600-normal.woff2 +0 -0
  279. package/dist/fonts/noto-sans-tc-48-700-normal.woff2 +0 -0
  280. package/dist/fonts/noto-sans-tc-49-400-normal.woff2 +0 -0
  281. package/dist/fonts/noto-sans-tc-49-500-normal.woff2 +0 -0
  282. package/dist/fonts/noto-sans-tc-49-600-normal.woff2 +0 -0
  283. package/dist/fonts/noto-sans-tc-49-700-normal.woff2 +0 -0
  284. package/dist/fonts/noto-sans-tc-50-400-normal.woff2 +0 -0
  285. package/dist/fonts/noto-sans-tc-50-500-normal.woff2 +0 -0
  286. package/dist/fonts/noto-sans-tc-50-600-normal.woff2 +0 -0
  287. package/dist/fonts/noto-sans-tc-50-700-normal.woff2 +0 -0
  288. package/dist/fonts/noto-sans-tc-51-400-normal.woff2 +0 -0
  289. package/dist/fonts/noto-sans-tc-51-500-normal.woff2 +0 -0
  290. package/dist/fonts/noto-sans-tc-51-600-normal.woff2 +0 -0
  291. package/dist/fonts/noto-sans-tc-51-700-normal.woff2 +0 -0
  292. package/dist/fonts/noto-sans-tc-52-400-normal.woff2 +0 -0
  293. package/dist/fonts/noto-sans-tc-52-500-normal.woff2 +0 -0
  294. package/dist/fonts/noto-sans-tc-52-600-normal.woff2 +0 -0
  295. package/dist/fonts/noto-sans-tc-52-700-normal.woff2 +0 -0
  296. package/dist/fonts/noto-sans-tc-53-400-normal.woff2 +0 -0
  297. package/dist/fonts/noto-sans-tc-53-500-normal.woff2 +0 -0
  298. package/dist/fonts/noto-sans-tc-53-600-normal.woff2 +0 -0
  299. package/dist/fonts/noto-sans-tc-53-700-normal.woff2 +0 -0
  300. package/dist/fonts/noto-sans-tc-54-400-normal.woff2 +0 -0
  301. package/dist/fonts/noto-sans-tc-54-500-normal.woff2 +0 -0
  302. package/dist/fonts/noto-sans-tc-54-600-normal.woff2 +0 -0
  303. package/dist/fonts/noto-sans-tc-54-700-normal.woff2 +0 -0
  304. package/dist/fonts/noto-sans-tc-55-400-normal.woff2 +0 -0
  305. package/dist/fonts/noto-sans-tc-55-500-normal.woff2 +0 -0
  306. package/dist/fonts/noto-sans-tc-55-600-normal.woff2 +0 -0
  307. package/dist/fonts/noto-sans-tc-55-700-normal.woff2 +0 -0
  308. package/dist/fonts/noto-sans-tc-56-400-normal.woff2 +0 -0
  309. package/dist/fonts/noto-sans-tc-56-500-normal.woff2 +0 -0
  310. package/dist/fonts/noto-sans-tc-56-600-normal.woff2 +0 -0
  311. package/dist/fonts/noto-sans-tc-56-700-normal.woff2 +0 -0
  312. package/dist/fonts/noto-sans-tc-57-400-normal.woff2 +0 -0
  313. package/dist/fonts/noto-sans-tc-57-500-normal.woff2 +0 -0
  314. package/dist/fonts/noto-sans-tc-57-600-normal.woff2 +0 -0
  315. package/dist/fonts/noto-sans-tc-57-700-normal.woff2 +0 -0
  316. package/dist/fonts/noto-sans-tc-58-400-normal.woff2 +0 -0
  317. package/dist/fonts/noto-sans-tc-58-500-normal.woff2 +0 -0
  318. package/dist/fonts/noto-sans-tc-58-600-normal.woff2 +0 -0
  319. package/dist/fonts/noto-sans-tc-58-700-normal.woff2 +0 -0
  320. package/dist/fonts/noto-sans-tc-59-400-normal.woff2 +0 -0
  321. package/dist/fonts/noto-sans-tc-59-500-normal.woff2 +0 -0
  322. package/dist/fonts/noto-sans-tc-59-600-normal.woff2 +0 -0
  323. package/dist/fonts/noto-sans-tc-59-700-normal.woff2 +0 -0
  324. package/dist/fonts/noto-sans-tc-60-400-normal.woff2 +0 -0
  325. package/dist/fonts/noto-sans-tc-60-500-normal.woff2 +0 -0
  326. package/dist/fonts/noto-sans-tc-60-600-normal.woff2 +0 -0
  327. package/dist/fonts/noto-sans-tc-60-700-normal.woff2 +0 -0
  328. package/dist/fonts/noto-sans-tc-61-400-normal.woff2 +0 -0
  329. package/dist/fonts/noto-sans-tc-61-500-normal.woff2 +0 -0
  330. package/dist/fonts/noto-sans-tc-61-600-normal.woff2 +0 -0
  331. package/dist/fonts/noto-sans-tc-61-700-normal.woff2 +0 -0
  332. package/dist/fonts/noto-sans-tc-62-400-normal.woff2 +0 -0
  333. package/dist/fonts/noto-sans-tc-62-500-normal.woff2 +0 -0
  334. package/dist/fonts/noto-sans-tc-62-600-normal.woff2 +0 -0
  335. package/dist/fonts/noto-sans-tc-62-700-normal.woff2 +0 -0
  336. package/dist/fonts/noto-sans-tc-63-400-normal.woff2 +0 -0
  337. package/dist/fonts/noto-sans-tc-63-500-normal.woff2 +0 -0
  338. package/dist/fonts/noto-sans-tc-63-600-normal.woff2 +0 -0
  339. package/dist/fonts/noto-sans-tc-63-700-normal.woff2 +0 -0
  340. package/dist/fonts/noto-sans-tc-64-400-normal.woff2 +0 -0
  341. package/dist/fonts/noto-sans-tc-64-500-normal.woff2 +0 -0
  342. package/dist/fonts/noto-sans-tc-64-600-normal.woff2 +0 -0
  343. package/dist/fonts/noto-sans-tc-64-700-normal.woff2 +0 -0
  344. package/dist/fonts/noto-sans-tc-65-400-normal.woff2 +0 -0
  345. package/dist/fonts/noto-sans-tc-65-500-normal.woff2 +0 -0
  346. package/dist/fonts/noto-sans-tc-65-600-normal.woff2 +0 -0
  347. package/dist/fonts/noto-sans-tc-65-700-normal.woff2 +0 -0
  348. package/dist/fonts/noto-sans-tc-66-400-normal.woff2 +0 -0
  349. package/dist/fonts/noto-sans-tc-66-500-normal.woff2 +0 -0
  350. package/dist/fonts/noto-sans-tc-66-600-normal.woff2 +0 -0
  351. package/dist/fonts/noto-sans-tc-66-700-normal.woff2 +0 -0
  352. package/dist/fonts/noto-sans-tc-67-400-normal.woff2 +0 -0
  353. package/dist/fonts/noto-sans-tc-67-500-normal.woff2 +0 -0
  354. package/dist/fonts/noto-sans-tc-67-600-normal.woff2 +0 -0
  355. package/dist/fonts/noto-sans-tc-67-700-normal.woff2 +0 -0
  356. package/dist/fonts/noto-sans-tc-68-400-normal.woff2 +0 -0
  357. package/dist/fonts/noto-sans-tc-68-500-normal.woff2 +0 -0
  358. package/dist/fonts/noto-sans-tc-68-600-normal.woff2 +0 -0
  359. package/dist/fonts/noto-sans-tc-68-700-normal.woff2 +0 -0
  360. package/dist/fonts/noto-sans-tc-69-400-normal.woff2 +0 -0
  361. package/dist/fonts/noto-sans-tc-69-500-normal.woff2 +0 -0
  362. package/dist/fonts/noto-sans-tc-69-600-normal.woff2 +0 -0
  363. package/dist/fonts/noto-sans-tc-69-700-normal.woff2 +0 -0
  364. package/dist/fonts/noto-sans-tc-70-400-normal.woff2 +0 -0
  365. package/dist/fonts/noto-sans-tc-70-500-normal.woff2 +0 -0
  366. package/dist/fonts/noto-sans-tc-70-600-normal.woff2 +0 -0
  367. package/dist/fonts/noto-sans-tc-70-700-normal.woff2 +0 -0
  368. package/dist/fonts/noto-sans-tc-71-400-normal.woff2 +0 -0
  369. package/dist/fonts/noto-sans-tc-71-500-normal.woff2 +0 -0
  370. package/dist/fonts/noto-sans-tc-71-600-normal.woff2 +0 -0
  371. package/dist/fonts/noto-sans-tc-71-700-normal.woff2 +0 -0
  372. package/dist/fonts/noto-sans-tc-72-400-normal.woff2 +0 -0
  373. package/dist/fonts/noto-sans-tc-72-500-normal.woff2 +0 -0
  374. package/dist/fonts/noto-sans-tc-72-600-normal.woff2 +0 -0
  375. package/dist/fonts/noto-sans-tc-72-700-normal.woff2 +0 -0
  376. package/dist/fonts/noto-sans-tc-73-400-normal.woff2 +0 -0
  377. package/dist/fonts/noto-sans-tc-73-500-normal.woff2 +0 -0
  378. package/dist/fonts/noto-sans-tc-73-600-normal.woff2 +0 -0
  379. package/dist/fonts/noto-sans-tc-73-700-normal.woff2 +0 -0
  380. package/dist/fonts/noto-sans-tc-74-400-normal.woff2 +0 -0
  381. package/dist/fonts/noto-sans-tc-74-500-normal.woff2 +0 -0
  382. package/dist/fonts/noto-sans-tc-74-600-normal.woff2 +0 -0
  383. package/dist/fonts/noto-sans-tc-74-700-normal.woff2 +0 -0
  384. package/dist/fonts/noto-sans-tc-75-400-normal.woff2 +0 -0
  385. package/dist/fonts/noto-sans-tc-75-500-normal.woff2 +0 -0
  386. package/dist/fonts/noto-sans-tc-75-600-normal.woff2 +0 -0
  387. package/dist/fonts/noto-sans-tc-75-700-normal.woff2 +0 -0
  388. package/dist/fonts/noto-sans-tc-76-400-normal.woff2 +0 -0
  389. package/dist/fonts/noto-sans-tc-76-500-normal.woff2 +0 -0
  390. package/dist/fonts/noto-sans-tc-76-600-normal.woff2 +0 -0
  391. package/dist/fonts/noto-sans-tc-76-700-normal.woff2 +0 -0
  392. package/dist/fonts/noto-sans-tc-77-400-normal.woff2 +0 -0
  393. package/dist/fonts/noto-sans-tc-77-500-normal.woff2 +0 -0
  394. package/dist/fonts/noto-sans-tc-77-600-normal.woff2 +0 -0
  395. package/dist/fonts/noto-sans-tc-77-700-normal.woff2 +0 -0
  396. package/dist/fonts/noto-sans-tc-78-400-normal.woff2 +0 -0
  397. package/dist/fonts/noto-sans-tc-78-500-normal.woff2 +0 -0
  398. package/dist/fonts/noto-sans-tc-78-600-normal.woff2 +0 -0
  399. package/dist/fonts/noto-sans-tc-78-700-normal.woff2 +0 -0
  400. package/dist/fonts/noto-sans-tc-79-400-normal.woff2 +0 -0
  401. package/dist/fonts/noto-sans-tc-79-500-normal.woff2 +0 -0
  402. package/dist/fonts/noto-sans-tc-79-600-normal.woff2 +0 -0
  403. package/dist/fonts/noto-sans-tc-79-700-normal.woff2 +0 -0
  404. package/dist/fonts/noto-sans-tc-80-400-normal.woff2 +0 -0
  405. package/dist/fonts/noto-sans-tc-80-500-normal.woff2 +0 -0
  406. package/dist/fonts/noto-sans-tc-80-600-normal.woff2 +0 -0
  407. package/dist/fonts/noto-sans-tc-80-700-normal.woff2 +0 -0
  408. package/dist/fonts/noto-sans-tc-81-400-normal.woff2 +0 -0
  409. package/dist/fonts/noto-sans-tc-81-500-normal.woff2 +0 -0
  410. package/dist/fonts/noto-sans-tc-81-600-normal.woff2 +0 -0
  411. package/dist/fonts/noto-sans-tc-81-700-normal.woff2 +0 -0
  412. package/dist/fonts/noto-sans-tc-82-400-normal.woff2 +0 -0
  413. package/dist/fonts/noto-sans-tc-82-500-normal.woff2 +0 -0
  414. package/dist/fonts/noto-sans-tc-82-600-normal.woff2 +0 -0
  415. package/dist/fonts/noto-sans-tc-82-700-normal.woff2 +0 -0
  416. package/dist/fonts/noto-sans-tc-83-400-normal.woff2 +0 -0
  417. package/dist/fonts/noto-sans-tc-83-500-normal.woff2 +0 -0
  418. package/dist/fonts/noto-sans-tc-83-600-normal.woff2 +0 -0
  419. package/dist/fonts/noto-sans-tc-83-700-normal.woff2 +0 -0
  420. package/dist/fonts/noto-sans-tc-84-400-normal.woff2 +0 -0
  421. package/dist/fonts/noto-sans-tc-84-500-normal.woff2 +0 -0
  422. package/dist/fonts/noto-sans-tc-84-600-normal.woff2 +0 -0
  423. package/dist/fonts/noto-sans-tc-84-700-normal.woff2 +0 -0
  424. package/dist/fonts/noto-sans-tc-85-400-normal.woff2 +0 -0
  425. package/dist/fonts/noto-sans-tc-85-500-normal.woff2 +0 -0
  426. package/dist/fonts/noto-sans-tc-85-600-normal.woff2 +0 -0
  427. package/dist/fonts/noto-sans-tc-85-700-normal.woff2 +0 -0
  428. package/dist/fonts/noto-sans-tc-86-400-normal.woff2 +0 -0
  429. package/dist/fonts/noto-sans-tc-86-500-normal.woff2 +0 -0
  430. package/dist/fonts/noto-sans-tc-86-600-normal.woff2 +0 -0
  431. package/dist/fonts/noto-sans-tc-86-700-normal.woff2 +0 -0
  432. package/dist/fonts/noto-sans-tc-87-400-normal.woff2 +0 -0
  433. package/dist/fonts/noto-sans-tc-87-500-normal.woff2 +0 -0
  434. package/dist/fonts/noto-sans-tc-87-600-normal.woff2 +0 -0
  435. package/dist/fonts/noto-sans-tc-87-700-normal.woff2 +0 -0
  436. package/dist/fonts/noto-sans-tc-88-400-normal.woff2 +0 -0
  437. package/dist/fonts/noto-sans-tc-88-500-normal.woff2 +0 -0
  438. package/dist/fonts/noto-sans-tc-88-600-normal.woff2 +0 -0
  439. package/dist/fonts/noto-sans-tc-88-700-normal.woff2 +0 -0
  440. package/dist/fonts/noto-sans-tc-89-400-normal.woff2 +0 -0
  441. package/dist/fonts/noto-sans-tc-89-500-normal.woff2 +0 -0
  442. package/dist/fonts/noto-sans-tc-89-600-normal.woff2 +0 -0
  443. package/dist/fonts/noto-sans-tc-89-700-normal.woff2 +0 -0
  444. package/dist/fonts/noto-sans-tc-90-400-normal.woff2 +0 -0
  445. package/dist/fonts/noto-sans-tc-90-500-normal.woff2 +0 -0
  446. package/dist/fonts/noto-sans-tc-90-600-normal.woff2 +0 -0
  447. package/dist/fonts/noto-sans-tc-90-700-normal.woff2 +0 -0
  448. package/dist/fonts/noto-sans-tc-91-400-normal.woff2 +0 -0
  449. package/dist/fonts/noto-sans-tc-91-500-normal.woff2 +0 -0
  450. package/dist/fonts/noto-sans-tc-91-600-normal.woff2 +0 -0
  451. package/dist/fonts/noto-sans-tc-91-700-normal.woff2 +0 -0
  452. package/dist/fonts/noto-sans-tc-92-400-normal.woff2 +0 -0
  453. package/dist/fonts/noto-sans-tc-92-500-normal.woff2 +0 -0
  454. package/dist/fonts/noto-sans-tc-92-600-normal.woff2 +0 -0
  455. package/dist/fonts/noto-sans-tc-92-700-normal.woff2 +0 -0
  456. package/dist/fonts/noto-sans-tc-93-400-normal.woff2 +0 -0
  457. package/dist/fonts/noto-sans-tc-93-500-normal.woff2 +0 -0
  458. package/dist/fonts/noto-sans-tc-93-600-normal.woff2 +0 -0
  459. package/dist/fonts/noto-sans-tc-93-700-normal.woff2 +0 -0
  460. package/dist/fonts/noto-sans-tc-94-400-normal.woff2 +0 -0
  461. package/dist/fonts/noto-sans-tc-94-500-normal.woff2 +0 -0
  462. package/dist/fonts/noto-sans-tc-94-600-normal.woff2 +0 -0
  463. package/dist/fonts/noto-sans-tc-94-700-normal.woff2 +0 -0
  464. package/dist/fonts/noto-sans-tc-95-400-normal.woff2 +0 -0
  465. package/dist/fonts/noto-sans-tc-95-500-normal.woff2 +0 -0
  466. package/dist/fonts/noto-sans-tc-95-600-normal.woff2 +0 -0
  467. package/dist/fonts/noto-sans-tc-95-700-normal.woff2 +0 -0
  468. package/dist/fonts/noto-sans-tc-96-400-normal.woff2 +0 -0
  469. package/dist/fonts/noto-sans-tc-96-500-normal.woff2 +0 -0
  470. package/dist/fonts/noto-sans-tc-96-600-normal.woff2 +0 -0
  471. package/dist/fonts/noto-sans-tc-96-700-normal.woff2 +0 -0
  472. package/dist/fonts/noto-sans-tc-cyrillic-400-normal.woff2 +0 -0
  473. package/dist/fonts/noto-sans-tc-cyrillic-500-normal.woff2 +0 -0
  474. package/dist/fonts/noto-sans-tc-cyrillic-600-normal.woff2 +0 -0
  475. package/dist/fonts/noto-sans-tc-cyrillic-700-normal.woff2 +0 -0
  476. package/dist/fonts/noto-sans-tc-latin-400-normal.woff2 +0 -0
  477. package/dist/fonts/noto-sans-tc-latin-500-normal.woff2 +0 -0
  478. package/dist/fonts/noto-sans-tc-latin-600-normal.woff2 +0 -0
  479. package/dist/fonts/noto-sans-tc-latin-700-normal.woff2 +0 -0
  480. package/dist/fonts/noto-sans-tc-latin-ext-400-normal.woff2 +0 -0
  481. package/dist/fonts/noto-sans-tc-latin-ext-500-normal.woff2 +0 -0
  482. package/dist/fonts/noto-sans-tc-latin-ext-600-normal.woff2 +0 -0
  483. package/dist/fonts/noto-sans-tc-latin-ext-700-normal.woff2 +0 -0
  484. package/dist/fonts/noto-sans-tc-vietnamese-400-normal.woff2 +0 -0
  485. package/dist/fonts/noto-sans-tc-vietnamese-500-normal.woff2 +0 -0
  486. package/dist/fonts/noto-sans-tc-vietnamese-600-normal.woff2 +0 -0
  487. package/dist/fonts/noto-sans-tc-vietnamese-700-normal.woff2 +0 -0
  488. package/dist/fonts.css +7543 -0
  489. package/dist/format-entry-B1gAZnIN.js +400 -0
  490. package/dist/format-entry-B1gAZnIN.js.map +1 -0
  491. package/dist/format-entry-BKj7P9i6.d.ts +64 -0
  492. package/dist/format.d.ts +2 -0
  493. package/dist/format.js +1 -0
  494. package/dist/index.d.ts +1435 -0
  495. package/dist/index.js +5875 -0
  496. package/dist/index.js.map +1 -0
  497. package/dist/styles.css +5240 -0
  498. package/dist/tokens.css +131 -0
  499. package/docs/AccentPicker.md +7 -0
  500. package/docs/ActionBar.md +17 -0
  501. package/docs/Alert.md +8 -0
  502. package/docs/AppShell.md +30 -0
  503. package/docs/Badge.md +17 -0
  504. package/docs/BarChart.md +7 -0
  505. package/docs/Breadcrumb.md +7 -0
  506. package/docs/Button.md +18 -0
  507. package/docs/Calendar.md +15 -0
  508. package/docs/Card.md +14 -0
  509. package/docs/Checkbox.md +8 -0
  510. package/docs/CodeView.md +21 -0
  511. package/docs/CommandPalette.md +30 -0
  512. package/docs/DangerZone.md +10 -0
  513. package/docs/DataTable.md +77 -0
  514. package/docs/DatePicker.md +7 -0
  515. package/docs/DateRangePicker.md +7 -0
  516. package/docs/DetailList.md +17 -0
  517. package/docs/Dialog.md +15 -0
  518. package/docs/Drawer.md +22 -0
  519. package/docs/EmptyState.md +6 -0
  520. package/docs/ErrorPage.md +7 -0
  521. package/docs/FileUpload.md +9 -0
  522. package/docs/FormGrid.md +7 -0
  523. package/docs/Format.md +27 -0
  524. package/docs/Graph.md +31 -0
  525. package/docs/Grid.md +18 -0
  526. package/docs/IconButton.md +12 -0
  527. package/docs/InlineCode.md +35 -0
  528. package/docs/KpiCard.md +11 -0
  529. package/docs/LayerGraph.md +32 -0
  530. package/docs/LineChart.md +10 -0
  531. package/docs/LoadingBar.md +7 -0
  532. package/docs/LoginCard.md +8 -0
  533. package/docs/Menu.md +20 -0
  534. package/docs/MobileTabBar.md +8 -0
  535. package/docs/MultiSelect.md +9 -0
  536. package/docs/NotificationBell.md +9 -0
  537. package/docs/Popover.md +9 -0
  538. package/docs/ProgressBar.md +7 -0
  539. package/docs/ProgressRing.md +7 -0
  540. package/docs/ProjectSwitcher.md +22 -0
  541. package/docs/RadioGroup.md +7 -0
  542. package/docs/SearchField.md +7 -0
  543. package/docs/Select.md +7 -0
  544. package/docs/SettingsLayout.md +8 -0
  545. package/docs/SideNav.md +11 -0
  546. package/docs/Skeleton.md +5 -0
  547. package/docs/Suggestion.md +15 -0
  548. package/docs/Switch.md +8 -0
  549. package/docs/Tabs.md +10 -0
  550. package/docs/Tag.md +11 -0
  551. package/docs/Term.md +30 -0
  552. package/docs/TextArea.md +7 -0
  553. package/docs/TextField.md +10 -0
  554. package/docs/ThemePicker.md +9 -0
  555. package/docs/Toast.md +7 -0
  556. package/docs/Tooltip.md +9 -0
  557. package/docs/TopBar.md +9 -0
  558. package/docs/Tour.md +24 -0
  559. package/docs/TreeList.md +93 -0
  560. package/docs/guidelines.md +269 -0
  561. package/docs/layout.md +35 -0
  562. package/docs/motion.md +63 -0
  563. package/package.json +59 -3
  564. package/README.md +0 -3
@@ -0,0 +1,269 @@
1
+ # 前端設計系統
2
+
3
+ 暖灰中性色、單一藍色強調,Inter 搭配思源黑體,等寬字 Geist Mono 只當點綴。淺色與深色兩套主題,主題可自動跟隨系統或手動切換,強調色可由使用者自訂。
4
+
5
+ 這份文件只記錄已經確認的選擇。
6
+
7
+ ## 色彩
8
+
9
+ 已確認的選擇:
10
+
11
+ - 中性色調:暖灰。
12
+ - 淺色主題底色:極淺灰。
13
+ - 深色主題底色:深灰。
14
+ - 卡片分層:陰影。
15
+ - 卡片裡不放卡片,避免多層陰影。區塊用 `Card`;TreeList、KpiCard、Alert、SettingsSection 本身就是卡片,單獨使用時不要再包一層,放進 `Card` 時會自動拿掉自己的陰影。卡片裡要再分區時,用 `surface-sub` 底色或分隔線。
16
+ - 強調色:預設 `#2457d6`,使用者可以自訂,不限定顏色。
17
+ - 強調色用量:中量,用在主要按鈕、連結、圖示、標籤與選取狀態。
18
+ - 語意色:配合強調色的飽和度。
19
+ - Tailwind:只用設計系統的 token class(`bg-surface`、`text-ink-muted`、`rounded-md`、`shadow-card`);Tailwind 內建的顏色、圓角和陰影(`text-gray-500`、`rounded-xl`、`shadow-lg`)由 ESLint 規則 `no-tailwind-defaults` 抓出來。
20
+
21
+ 主題設定有三個選項:自動(跟隨系統的 `prefers-color-scheme`)、淺色、深色。頁面根元素設 `data-theme="light"` 或 `"dark"`。
22
+
23
+ | 用途 | Token |
24
+ |---|---|
25
+ | 頁面底色 | `bg` |
26
+ | 卡片、面板、對話框 | `surface` + `shadow-card` |
27
+ | 次要底色(斑馬紋、灰底元件、骨架) | `surface-sub` |
28
+ | 頂部列、側邊欄、底部分頁列 | `surface-chrome` |
29
+ | 主要文字、次要文字 | `ink`、`ink-muted` |
30
+ | 分隔線、控制項邊框 | `line`、`line-strong` |
31
+ | 強調色與它的滑過、按下 | `accent`、`accent-hover`、`accent-press` |
32
+ | 強調文字、強調淺底、強調色上的文字 | `accent-text`、`accent-soft`、`on-accent` |
33
+ | 語意色 | `success`、`warning`、`danger` 各有實色、`-text`、`-soft`;資訊用 `info-text`、`info-soft` |
34
+
35
+ 文字 token 在兩套主題都對它的底色達到 4.5:1;`line-strong` 對 `surface` 達到 3:1。
36
+
37
+ ### 自訂強調色的換算
38
+
39
+ 使用者換強調色時,其他強調相關 token 依下列方式重新計算:
40
+
41
+ - `accent-hover`、`accent-press`:強調色混入 12% 與 22% 黑色。
42
+ - `accent-soft`:淺色主題為白色混入 12% 強調色;深色主題為 `bg` 混入 22% 強調色。
43
+ - `accent-text`:深色主題混入白色,直到對 `surface` 達 4.5:1。
44
+ - `on-accent`:白色與 `ink` 中對比較高者。
45
+ - 語意色:飽和度跟隨強調色。
46
+
47
+ ## 字體與排版
48
+
49
+ 已確認的選擇:
50
+
51
+ - 搭配方式:無襯線為主,等寬字只用在標籤與數字。
52
+ - 無襯線:Inter,中文用思源黑體(Noto Sans TC),對應 `sans`。
53
+ - 等寬:Geist Mono,對應 `mono`。
54
+ - 內文 16 px,字級比例 1.25,內文行高 1.65,標題字重 700,中文字距 0。
55
+ - 表格數字:等寬數字。
56
+ - 字型檔內附在 `dist/fonts.css`(Inter、Geist Mono、Noto Sans TC,字重 400 到 700),不從 Google Fonts 載入,離線或內網也能用;瀏覽器只下載頁面用到的字。
57
+
58
+ ## 間距、圓角與陰影
59
+
60
+ - 密度:緊密。區塊間距 `space-8` 32 px。
61
+ - 圓角:中圓角,`radius-sm` 6 px、`radius-md` 10 px、`radius-lg` 14 px。
62
+ - 表面:柔和陰影,`shadow-card`。
63
+
64
+ ## 圖示
65
+
66
+ - 圖示組:Phosphor(MIT 授權,可商用),平常用 Regular 線條版。
67
+ - 選中時換成同一個圖示的實心版(Fill)並用強調色,例如側邊欄和手機底部分頁列的選中項目。
68
+ - 線寬:Phosphor 的線寬固定,不另外調整;自訂的 24 × 24 線條圖示用 2 px(`icon-stroke`)。
69
+ - 尺寸:按鈕、表格、輸入框裡 20 px;側邊欄與手機底部分頁列 22 px;選單與小標記 16 px。
70
+ - 用法:`h(UI.Icon, { name: 'house' })`,加 `filled: true` 用實心版;名稱照 Phosphor,常用的 80 個已內建,`icons` 列出全部名稱(也接受 Lucide 的名稱,例如 `trash-2`)。
71
+ - 目前沒有 logo:以文字名稱加一個 `accent` 色方塊暫代。
72
+
73
+ ## 元件
74
+
75
+ 已確認的選擇:
76
+
77
+ - 主要按鈕:實心。
78
+ - 次要按鈕:外框。
79
+ - 按鈕與輸入框高度:40 px(`control-height`)。寬度小於 600 px 時,輸入框(文字、下拉、日期、密碼、多選)變成 48 px,整個框都是點擊範圍;按鈕外觀仍是 40 px。
80
+ - 輸入框:外框。
81
+ - Focus:外光暈。
82
+ - 欄位錯誤:紅框加圖示。
83
+ - 停用:灰底灰字。
84
+ - 主要按鈕:每個區塊最多一個。
85
+ - 危險按鈕:頁面上用實心紅色,按下後先跳確認對話框。
86
+ - 觸控點擊範圍:48 px(`touch-target`)。觸控螢幕上每個按鈕、分頁、開關和連結的外觀不變,點擊範圍自動擴大到至少 48 × 48 px。
87
+ - 例外:句子裡的文字連結和名詞說明(句中的 `Term` 和 InlineCode 連結)。Term 會自己判斷:旁邊有文字就是句中;單獨出現時(例如 Tag 裡的關係標籤、圖例)照樣擴大到 48 px,照 WCAG 2.2 的行內例外,不擴大,以免蓋到上下行。
88
+ - Badge:浮起 Chip,前置標記為進度圓圈,5 種狀態,高度 32 px(`chip-height`),文字用主要文字色。放在卡片上時改成圓點加文字(沒有底色和陰影,文字用狀態文字色)。
89
+ - Alert:頂部色條(3 px,`alert-bar`),只有資訊與成功可以關閉,動作用外框按鈕。
90
+ - 表格:灰底粗體表頭(捲動時固定);列高 48 px;斑馬紋加格線;滑過列用強調淺底(`accent-soft`);數字靠右;單位寫在每格數字後面;欄位標題不換行;排序箭頭滑過才顯示,點第三下還原;勾選框滑過才顯示,勾選後表頭換成批次操作列;換篩選、搜尋、檢視或摘要後看不到的已選列自動取消勾選,批次操作只處理畫面上的列;單筆操作滑過才顯示圖示;搜尋所有欄位並標示,「篩選」按鈕(按鈕上顯示條件數、勾選就生效、選項旁有筆數),右側顯示結果筆數,沒有結果時加「清除篩選」,條件寫進網址,可以隱藏欄位;合計列、固定第一欄、常用檢視、同一欄位多選依情況決定;頁碼分頁。手機寬度(小於 600 px)時,所有列放在同一張卡片裡用分隔線隔開;每列第一行是標題列(標題欄位加狀態),其他欄位名稱在上(12 px)、值在下並靠左,欄位之間 4 px;操作按鈕放在標題列最右邊;長文字最多 2 行加「顯示全部」;手機工具列不顯示「欄位」按鈕。
91
+ - 結果清單:上方用分段控制當摘要(全部加各狀態,附筆數),點了就篩選;排序看情況,預設照資料原本的順序。
92
+ - 載入:骨架,立即顯示(延遲 0 ms)。
93
+ - 空狀態:引導步驟,下方放次要按鈕;搜尋沒有結果時只顯示一句話。
94
+ - Toast:右下角,卡片樣式,3 s 後消失,附「復原」。
95
+ - 對話框:置中,寬 400 px,背景模糊;可以點遮罩、按 Esc 或右上角 × 關閉;按鈕次要在左、主要在右;危險動作用紅色實心按鈕。Dialog 一定要給 `open`;只有文件裡的靜態預覽寫 `modal={false}`,兩個都沒寫時開發主控台警告。
96
+ - DangerZone 沒給 `confirm` 時也先確認,標題是「<按鈕文字>?」。
97
+
98
+ ## 表單
99
+
100
+ - 勾選框:小圓角(`radius-sm`),勾選後強調色實心,勾號用描繪動畫畫出來;所有勾選框(包括表格的欄位選單、篩選和多選的選項)都用同一個勾。
101
+ - 單選:選中時外圈變強調色,中間出現圓點。
102
+ - 開關:Material 3 樣式,滑動用水滴動畫,圓鈕裡放勾(開)與叉(關)。
103
+ - 下拉選單:一律不用瀏覽器原生選單。依內容決定:選項超過 8 個時加上搜尋框(可搜尋選單),8 個以內用自訂選單;個別選單可以手動指定。選單向下展開。
104
+ - 搜尋欄:外框,左邊放放大鏡圖示,有內容時右邊出現清除鈕(隱藏瀏覽器內建的清除鈕)。
105
+ - 多行輸入:顯示字數(例如 `12 / 200`),隨內容自動長高,最多 8 行。
106
+ - 標籤:放在欄位上方。
107
+ - 必填:標籤後加紅色星號。
108
+ - 欄位排列:依螢幕寬度決定,960 px 以上雙欄,以下單欄(`FormGrid`);長欄位(例如多行輸入)跨滿兩欄。
109
+
110
+ ## 外觀
111
+
112
+ - 主題與強調色放在設定頁的「外觀」,不放在頂部列。
113
+ - 主題:自動、淺色、深色三張預覽卡片(`ThemePicker`)。
114
+ - 強調色:8 個推薦色票,加上可以輸入任何色碼的欄位(`AccentPicker`)。
115
+ - 切換主題時,所有顏色用 300 ms 漸變。
116
+
117
+ ## 通知
118
+
119
+ - 頂部列的鈴鐺有紅色數字角標,超過 99 顯示 99+。
120
+ - 點鈴鐺從下方彈出通知面板(360 px);依時間分組(今天、更早);未讀在左側有強調色圓點;「全部標為已讀」在面板標題列右側。
121
+
122
+ ## 頁面範本
123
+
124
+ - 錯誤頁:大號錯誤碼(等寬字、強調色),標題加一句說明,「回上一頁」和「回首頁」兩個按鈕。
125
+ - 登入頁:置中卡片;只有帳號密碼;密碼可以切換顯示;錯誤寫在欄位下方;「忘記密碼?」在密碼標籤右邊。
126
+ - 設定頁:左側分類;改完自動儲存,右下角提示「已儲存」;危險操作放在最下方紅框區塊。
127
+
128
+ ## 格式規則
129
+
130
+ - 日期 `2026/11/04(三)`:年份一律顯示,加星期;時間 24 小時制;一週內用相對時間(「2 小時前」、「昨天」)。
131
+ - 大數字只有 KPI 卡片縮寫(萬、億);金額 `NT$ 1,280`;負數用減號;小數位數依單位(金額 0、百分比 1、容量 1)。表格和 KPI 卡片的 `percent` 只決定一位小數,% 一律用 `unit: '%'` 加上。
132
+ - 行內程式碼:句子裡的程式碼、檔案路徑和 ID 用淺灰底等寬字(`InlineCode`,底色 `surface-sub`);指向檔案位置的(例如 `child.c:86`)是連結,強調文字色加底線。含反引號的文字用 `CodeText` 轉換,不顯示反引號。
133
+ - 檔案大小 `format.fileSize()`:未滿 1 MB 寫整數 KB(「186 KB」),以上寫一位小數的 MB 或 GB(「54.9 MB」)。
134
+ - 介面文字都經過 `t()` 可以翻譯;日期和數字都經過 `format`,其他語系自動用該語系的習慣。細節見元件「Format」。
135
+
136
+ ## 浮層
137
+
138
+ - 提示:深色,在元素上方,有箭頭;滑過或 focus 立刻出現(0 ms);從箭頭那一側放大出現。IconButton 的 `label` 會自動成為提示。
139
+ - 「⋯」選單:右緣對齊按鈕;選項是圖示、文字加快捷鍵;危險選項紅字放最後,前面加分隔線;從按鈕的角落放大打開。
140
+ - 彈出框:滑過打開(點擊和鍵盤也能打開);點外面或按 Esc 關閉;有箭頭。
141
+ - 側邊抽屜:寬 400 px,模糊遮罩,彈性滑入;按鈕固定在底部;有未儲存的修改時,關閉前先確認,底部的「取消」也一樣(`actions={(requestClose) => …}`)。
142
+ - 出界時換方向:選單、彈出框和提示在預設方向放不下時,改用另一個方向(右緣對齊改左緣、下方改上方、上方改下方)。
143
+
144
+ ## 進階表單
145
+
146
+ - 日期:輸入框可以直接打字(YYYY/MM/DD),右邊的圖示打開日曆;選中的日期是圓角方塊;今天下方有小圓點;一週從週日開始。
147
+ - 日期範圍:單一月曆加快捷(今天、最近 7 天、最近 30 天、本月、上個月)。
148
+ - 手機上(寬度小於 600 px):日期格 48 px,期間選擇的快捷移到月曆上方。
149
+ - 檔案上傳:一行拖放區,限制寫在拖放區裡;每個檔案有進度條;失敗時紅字寫原因並提供「重試」。
150
+ - 多選:標籤放在框內,顯示前 2 個再加「+n」;能不能新增選項依情況決定:選項由使用者自由增加的(名稱、標籤)可以新增,固定清單(狀態、權限)只能從清單選。
151
+
152
+ ## 數據呈現
153
+
154
+ - KPI 卡片:標籤、大數字、迷你折線(近期趨勢)、和上一期比的變化。數字 31 px、Geist Mono;單位放在數字後面。
155
+ - 變化標示:箭頭加彩色文字,後面接灰色「較上週」。顏色看好壞、不看方向:例如回應時間下降是好事,用綠色。
156
+ - 數字進場:從 0 數上來(900 ms)。
157
+ - 圖表配色:多色,依序 `chart-1` 藍、`chart-2` 青、`chart-3` 橘;只有一組資料時用 `chart-1`。
158
+ - 折線:平滑曲線,不填色。
159
+ - 長條:頂部 4 px 圓角。
160
+ - 格線:淡色虛線(`line`);底線用實線。
161
+ - 數值提示:滑過時出現浮起卡片(`surface` 加 `shadow-overlay`),折線圖同時顯示垂直參考線和各組的點。
162
+ - 圖表進場:依序長出:折線一條接一條畫出(間隔 150 ms),長條一根接一根長高(間隔 40 ms)。
163
+ - 進度條:8 px,百分比寫在條的下方;到 100% 時條變成功綠色,文字變「完成 ✓」。
164
+ - 不知道要多久時:水滴載入條,前端先衝、後端跟上,和導覽動畫一致。
165
+ - 達成率:圓環,中間放百分比。
166
+ - 元件架構圖:`LayerGraph`,分層圖。
167
+ - 共用元件不畫線,放在圖的下方,寫「被 N 個元件呼叫 M 次」。
168
+ - 方框:淡灰底(`graph-node`),左側灰色色條;名稱加大小長條(例如函式數)。選取的方框用 `accent-soft` 底、強調色色條和外框。
169
+ - 線:直角、轉角是圓的;每條線接在方框上不同的位置;全部灰色(`graph-edge`),粗細依呼叫次數;推測的關係是細虛線。
170
+ - 標籤放在箭頭旁:推測的關係一直顯示;其他線只有選取時、和選取元件有關的才寫「N 次」。同一個方框收到多條有標籤的線時,左半邊的標籤放箭頭左側、右半邊的放右側,必要時往上疊一行,不超出圖的邊界。文字用一般字體,程式名稱、路徑和數字用 Geist Mono。
171
+ - 選取一個方框時,沒有關係的方框和線變淡到 40%,相關的線變強調色。
172
+ - 層與層之間 56 px。手機上和電腦一樣,圖比畫面寬時左右捲動。
173
+ - 圖例放在圖的下方一列。
174
+ - 其他方框與箭頭的圖:用 `ui-graph-*` class 和 `GraphDefs`、`GraphLegend`,見 Graph 元件;外觀照上面的規則。
175
+ - 程式碼檢視:`CodeView`。
176
+ - 行號:灰色等寬數字靠右,沒有底色和分隔線。
177
+ - 目標行:淡強調色底(`accent-soft`),左側 3 px 強調色細條,行號變粗。
178
+ - 太長的行自動換行,續行縮排 4 個字元寬。
179
+ - 語法上色低調:關鍵字 `code-keyword`、常數與字串 `code-constant`、註解灰色斜體,其他用文字顏色。
180
+ - 手機上(寬度小於 600 px)只顯示目標行前後 2 行,下方「顯示全部 N 行」。
181
+
182
+ ## 階層清單
183
+
184
+ 資料夾裡放檔案、可以一層層展開的清單(`TreeList`),例如課程教材、專案文件。
185
+
186
+ - 層級:每層縮排 28 px,左側有一條細線(`line`)連起同一個資料夾裡的項目。子資料夾在同一個清單裡巢狀展開。
187
+ - 資料夾一律排在檔案前面。
188
+ - 排序看情況:預設新到舊,也可以舊到新(例如照上課順序)或依名稱。
189
+ - 展開方式看情況:需要一次看到全部時,點資料夾展開或收合,標題列有「全部展開」;資料夾又多又雜時,一次只開一個,打開一個時同層的其他資料夾自動收合。
190
+ - 展開動畫:子項目從資料夾下方往下長出,260 ms。
191
+ - 檔案圖示:文件形狀加副檔名,副檔名寫在底部的色塊裡,例如 PDF 紅、MP4 紫、PPTX 橘、DOCX 藍。不只靠顏色分辨。
192
+ - 日期與大小:清單寬 640 px 以上時,在右側排成欄;比較窄時,放在名稱下方,寫成「13 小時前 · 137.6 MB」。依照清單本身的寬度切換,不是看整個螢幕。日期照格式規則(一週內用相對時間)。
193
+ - 資料夾的資訊有資料才顯示:檔案數(「4 個檔案」)和裡面最新檔案的時間。
194
+ - 新檔案:使用者還沒打開或下載過的檔案算新。日期變成 `accent-text` 粗體,不另外加標籤;資料夾旁寫「2 個新」,展開時也看得到。打開或下載後就不再標示。
195
+ - 下載按鈕一直顯示在每個檔案的最右邊。
196
+ - 勾選看情況:需要時,勾選框滑過才顯示,和表格一致;勾了一個之後全部顯示。勾資料夾等於全選裡面的檔案,只勾一部分時資料夾顯示橫線。勾選後標題列換成「已選 3 個檔案 共 192.6 MB」,旁邊有「清除選取」和「下載」。
197
+ - 鍵盤:↑ ↓ 移動,→ 展開,← 收合或回到上一層,Enter 打開,空白鍵勾選。
198
+ - 手機上的縮排:清單寬度小於 600 px 時,每層縮 16 px,最多縮 3 層;更深的不再縮排,名稱前加層數(「L5」)。
199
+ - 一般的樹(`kind="plain"`,例如呼叫關係):沒有檔案圖示和大小;名稱下方放位置(Geist Mono、次要文字),長路徑保留頭尾、中間省略(「src/…/hooks/ops.c:58」,`format.path()`);照資料原本的順序,不把有子項目的排前面;點一列是選取,點箭頭是展開。
200
+ - 標籤只標例外:大部分列都一樣的屬性不標,只標需要留意的,用 Tag 包 Term;預設值在樹下方說明一次(例如程式碼地圖裡,沒有標示的關係都由編譯器確認,只標「推測(規則)」)。
201
+
202
+ ## 分類標籤
203
+
204
+ - 說明「這是什麼」的標籤(例如「外部」、「範本」、「規則:經由指標」),用 `Tag`:只有小字(12 px、粗體、`ink-muted`),沒有框也沒有底,一律灰色,不用顏色表示類別。
205
+ - 表示進度或結果的仍然用 Badge。
206
+
207
+ ## 詳細資訊與操作
208
+
209
+ - 一個項目的詳細欄位用 `DetailList`:寬度 600 px 以上時欄位名稱在左、值在右;比較窄時名稱在上、值在下,和手機表格卡片一致。
210
+ - 卡片上的多個操作用 `ActionBar`:寬度小於 600 px 時,最常用的一個是全寬的主要按鈕,其他收進右邊的「⋯」選單;比較寬時並排。
211
+
212
+ ## 文字語氣
213
+
214
+ - 按鈕文字:只用動詞,例如「儲存」、「刪除」、「取消」。
215
+ - 錯誤訊息:寫出原因加修正方式,例如「Email 格式不正確,例如 name@example.com」。
216
+ - 介面文字只寫重點,規則來自教材風格:
217
+ - 一句話講一件事,寫成「名稱:做什麼」,例如「Ctrl K:搜尋」。說明最多 2 句,每句約 25 字以內。
218
+ - 畫面上已經看得出來的不寫:標題、圖示或按鈕已經說明的事,不再用文字重講;沒有重點要補充時就不放說明。
219
+ - 同一件事只說一次:不在說明、提示和標題重複同一句話。
220
+ - 正式的書面用語,不用口語,例如「查看依據」,不寫「點一下看原因」;「版本衝突」,不寫「版本會打架」。
221
+ - 標題和連結不用問句,例如「重看導覽」,不寫「第一次使用?重看導覽」;「忘記密碼」,不寫「忘記密碼?」。確認對話框的標題例外,例如「刪除這個專案?」。
222
+ - 技術名詞保留常見的英文(translation unit、LD_PRELOAD),不另造中文;第一次出現時用 `Term` 說明。
223
+ - 較長的解釋放到文件,介面上給連結。
224
+ - 使用者要做的事寫在畫面上,例如空狀態寫下一步。
225
+
226
+ ## 導覽
227
+
228
+ - 側邊欄:選中用左側指示條(水滴方式移動);滑過灰底;項目高度 40 px;組與組之間用分隔線;收合後滑過顯示名稱提示;子選單展開縮排。平板固定收合時,有子頁面的項目點了直接進第一個子頁面,其他子頁面在頁面內切換。
229
+ - 頂部列:左邊頁面標題,右邊填色搜尋框(附 Ctrl K 提示,Mac 上寫 ⌘K);麵包屑放在內容區最上方。
230
+ - 麵包屑:箭頭「›」分隔,一般字。
231
+ - 分頁切換:分段控制,水滴動畫,內容依序浮起。
232
+ - 手機底部分頁列:只有圖示,選中時圖示後方出現膠囊,水滴動畫。放不下的頁面(沒有圖示、第 5 個以後、第二個以後的子頁面)放在最後一格「更多」,打開完整導覽;有子頁面的分頁打開第一個子頁面。
233
+ - 專案狀態:頂部列右邊放 `ProjectSwitcher`,外框 Chip 寫「ibtrace · 即時」,前面的圓點表示資料狀態(即時綠、已過期橘、離線灰);點了打開清單切換專案或環境,清單最下方可以放設定連結。
234
+
235
+ - 頂部列在手機上(寬度小於 600 px):搜尋框換成搜尋圖示,點了打開搜尋面板。
236
+
237
+ ## 搜尋、導覽與說明
238
+
239
+ - 搜尋面板:`CommandPalette`,一個搜尋找全部(頁面、設定、指令、檔案,以及專案自己的種類,例如程式碼地圖的函式、環境變數)。
240
+ - 入口:電腦上是頂部列的填色搜尋框,手機上是頂部列的搜尋圖示;任何頁面按 Ctrl K(Mac 是 ⌘K)都能打開。
241
+ - 樣子:畫面中間浮起的面板,電腦寬 640 px,手機上也一樣置中浮起(左右各留 12 px,在頂部列下方)。
242
+ - 結果:所有種類混在一起,最相關的在最上面(名稱開頭符合的優先);左邊是種類圖示;符合的字粗體。
243
+ - 鍵盤:↑ ↓ 選擇,Enter 打開,Esc 關閉;面板底部寫這三個按鍵,觸控裝置不顯示。
244
+ - 第一次使用的導覽:`Tour`,用 `useTour(key)` 記住看過了沒有。
245
+ - 樣子:整頁變暗,只亮出要介紹的地方(外加強調色框),旁邊的說明卡寫「1 / 3」、標題和一兩句說明。
246
+ - 可以略過,看完或略過後不再自動出現;頁面上要有「重看導覽」能重新開始。
247
+ - 修正建議:`Suggestion`,舊的和新的上下兩行,舊的前面「−」淡紅底,新的前面「+」淡綠底;右上角是複製圖示,按了複製修正後的整句,圖示變成勾,提示寫「已複製」。
248
+ - 名詞與關係的說明:`Term`,用在讀者可能看不懂的名詞(例如「translation unit」)和關係標籤(例如「推測的關係」)。
249
+ - 記號:名詞後面加一個小問號。
250
+ - 點一次打開、再點一次關閉,右上角也有 ×,按 Esc 或點外面也會關閉。
251
+ - 寬度 600 px 以上:名詞下方浮起小卡;小於 600 px:從畫面下方打開。
252
+ - 關係的說明附上證據那一行程式碼和「看這一行」。
253
+
254
+ 版面見「版面架構」,動畫見「動畫」。
255
+
256
+ ## 教材主題(teaching preset)
257
+
258
+ Slidev 教材投影片使用 `data-theme="teaching"`。投影片的 CSS 只讀 token 名稱,數值由這個 preset 提供。
259
+
260
+ 已確認的選擇:
261
+
262
+ - 混合方案:中性色與字型沿用設計系統,強調色、直角與細線邊框沿用投影片風格。
263
+ - 強調色:青綠 `#0f766e`。
264
+ - 圓角:全部 0 px(`radius-sm`、`radius-chip`、`radius-md`、`radius-lg`)。
265
+ - 陰影:不用(`shadow-*` 為 none),外框用 1.5 px 的 `line`。
266
+ - 字型:標題與內文 Inter 加思源黑體,程式碼 Geist Mono。
267
+ - 只有淺色。
268
+
269
+ `accent-hover`、`accent-press`、`accent-soft` 依「自訂強調色的換算」由 `#0f766e` 算出。版面、字級與投影片規則見 `teaching-materials-style`。
package/docs/layout.md ADDED
@@ -0,0 +1,35 @@
1
+ # 版面架構
2
+
3
+ 依使用情境選擇兩種架構之一。
4
+
5
+ ## Dashboard 類
6
+
7
+ - 側邊欄加頂部列。
8
+ - 側邊欄可收合:展開 240 px(`sidebar-width`),收合 72 px(`sidebar-collapsed`)。
9
+ - 收合按鈕在側邊欄左下角,只有圖示、沒有文字。
10
+
11
+ ## 展示類
12
+
13
+ - 只用頂部導覽。
14
+
15
+ ## 共通規則
16
+
17
+ - 內容最大寬度:滿版。
18
+ - 格線:12 欄。
19
+ - 卡片排列:均等格線。
20
+ - 區塊間距:緊密 32 px(`space-8`)。
21
+ - 手機導覽:底部分頁列。
22
+ - 頁首行為:往下捲時隱藏,往上捲時出現。
23
+ - 頁尾:精簡一行。
24
+
25
+ ## 斷點
26
+
27
+ | 名稱 | 寬度 (px) | Token |
28
+ |---|---|---|
29
+ | 手機 | 0 到 599 | 小於 `bp-tablet` |
30
+ | 平板 | 600 到 959 | `bp-tablet` |
31
+ | 桌面 | 960 到 1279 | `bp-desktop` |
32
+ | 大螢幕 | 1280 以上 | `bp-wide` |
33
+
34
+ - 平板寬度時,Dashboard 類的側邊欄收合成圖示(72 px)。
35
+ - 表單欄位:`bp-desktop`(960 px)以上雙欄,以下單欄。
package/docs/motion.md ADDED
@@ -0,0 +1,63 @@
1
+ # 動畫
2
+
3
+ 動畫程度:Level 3(細緻回饋、轉場,以及吸睛的進場效果)。
4
+
5
+ | 用途 | 時間 (ms) |
6
+ |---|---|
7
+ | hover、按下 | 150 |
8
+ | 分頁、開關、提示 | 300 |
9
+ | 主題切換 | 350 |
10
+ | 進場(逐項間隔 90) | 700 |
11
+
12
+ ## 導覽切換
13
+
14
+ | 項目 | 設定 |
15
+ |---|---|
16
+ | 動畫時間 | 200 ms |
17
+ | 拉伸程度 | 明顯:後端比前端慢 2.2 倍(前端 120 ms、後端 440 ms) |
18
+ | 停下來的形狀 | 圓角矩形(`radius-md` 10 px) |
19
+ | 停下來的邊緣 | 清晰 |
20
+ | 分頁指示 | 水滴:同一塊拉長再收回,移動中略為變細 |
21
+ | 側邊欄選中 | 水滴:指示條拉長移動再收回 |
22
+ | 內容切換 | 卡片依序浮起,間隔 40 ms |
23
+ | 手機分頁切換 | 水滴膠囊 |
24
+
25
+ ## 數據呈現
26
+
27
+ | 項目 | 設定 |
28
+ |---|---|
29
+ | KPI 數字 | 從 0 數上來,900 ms,ease-out |
30
+ | 折線 | 依序畫出,每條 900 ms,間隔 150 ms |
31
+ | 長條 | 依序由下長高,每根 500 ms,間隔 40 ms |
32
+ | 達成率圓環 | 和數字一起從 0 跑到目標值,900 ms |
33
+ | 不確定進度 | 水滴:1.4 s 一輪,前端用 ease-out、後端用 ease-in-out,所以中間會拉長 |
34
+
35
+ ## 浮層
36
+
37
+ | 項目 | 設定 |
38
+ |---|---|
39
+ | 提示 | 0 ms 延遲;從箭頭那一側放大,220 ms,稍微回彈 |
40
+ | 「⋯」選單 | 從按鈕所在的角落放大,180 ms |
41
+ | 彈出框 | 淡入 150 ms;滑鼠移開 150 ms 後關閉 |
42
+ | 側邊抽屜 | 彈性滑入 450 ms;滑出 300 ms;遮罩淡入 300 ms |
43
+
44
+ ## 外觀
45
+
46
+ | 項目 | 設定 |
47
+ |---|---|
48
+ | 切換主題 | 所有顏色漸變 300 ms |
49
+
50
+ ## 表格
51
+
52
+ | 項目 | 設定 |
53
+ |---|---|
54
+ | 排序 | 依序滑動:每列 320 ms,由上往下間隔 25 ms,ease-out |
55
+ | 還原排序 | 和排序相同 |
56
+ | 換到別頁的列 | 換出的往下滑出並淡出,換進的從下方滑入並淡入 |
57
+ | 換頁 | 下一頁整頁往上滑出、新頁從下方滑入;上一頁相反 |
58
+
59
+ ## 減少動態效果
60
+
61
+ 使用者在系統開啟「減少動態效果」(`prefers-reduced-motion: reduce`)時,只保留淡入淡出,關閉位移與縮放。
62
+
63
+ - 數據呈現:數字直接顯示最終值,圖表只淡入,水滴載入條改成靜止的半透明條。
package/package.json CHANGED
@@ -1,6 +1,62 @@
1
1
  {
2
2
  "name": "@seanyeh77/ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.3.0",
4
+ "description": "SeanYeh's design system: typed React components on Base UI, styled with design tokens.",
5
+ "license": "MIT",
6
+ "author": "Hsiu-An Yeh",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/seanyeh77/ui-design-system.git",
10
+ "directory": "packages/ui"
11
+ },
12
+ "homepage": "https://seanyeh77.github.io/ui-design-system/",
13
+ "type": "module",
14
+ "sideEffects": [
15
+ "*.css"
16
+ ],
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "default": "./dist/index.js"
21
+ },
22
+ "./format": {
23
+ "types": "./dist/format.d.ts",
24
+ "default": "./dist/format.js"
25
+ },
26
+ "./styles.css": "./dist/styles.css",
27
+ "./tokens.css": "./dist/tokens.css",
28
+ "./fonts.css": "./dist/fonts.css",
29
+ "./bundle.js": "./dist/bundle.js",
30
+ "./docs/*": "./docs/*",
31
+ "./package.json": "./package.json"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "docs"
36
+ ],
37
+ "peerDependencies": {
38
+ "react": ">=19",
39
+ "react-dom": ">=19"
40
+ },
41
+ "devDependencies": {
42
+ "@testing-library/react": "^16.3.3",
43
+ "@testing-library/user-event": "^14.6.8",
44
+ "@types/react": "^19.3.0",
45
+ "@types/react-dom": "^19.3.0",
46
+ "@vitest/browser-playwright": "^5.1.0",
47
+ "playwright": "^1.65.0",
48
+ "react": "^19.3.1",
49
+ "react-dom": "^19.3.1",
50
+ "tsdown": "^0.23.7",
51
+ "vitest": "^5.1.0",
52
+ "@seanyeh77/tokens": "^0.3.0"
53
+ },
54
+ "dependencies": {
55
+ "@base-ui/react": "^1.9.0"
56
+ },
57
+ "scripts": {
58
+ "build": "tsdown && node scripts/postbuild.ts",
59
+ "typecheck": "tsc -p .",
60
+ "test": "vitest run"
61
+ }
6
62
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.