@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,12 @@
1
+ # IconButton
2
+
3
+ 只有圖示的按鈕,一定要有 `label`。
4
+
5
+ - `label` 會成為 `aria-label` 與提示(Tooltip),寫成動作:「收合側邊欄」、「關閉」。不需要提示時設 `tooltip={false}`。
6
+ - 外框 `line-strong`,尺寸與 Button 同高(40 px)。
7
+ - 側邊欄的收合按鈕是例外:放在側邊欄左下角,無外框,收合後圖示左右翻轉。
8
+ - `icon`(必填):Phosphor 圖示名稱,例如 `'trash'`;或自訂圖示的 24 px path。
9
+
10
+ ```tsx
11
+ <IconButton icon="pencil-simple" label="編輯 api-gateway" onClick={edit} />
12
+ ```
@@ -0,0 +1,35 @@
1
+ # InlineCode
2
+
3
+ 句子裡的程式碼、檔案路徑和 ID。
4
+
5
+ - 外觀:淺灰底(`surface-sub`)、Geist Mono、字級是周圍文字的 0.875 倍,圓角 4 px,左右 5 px 內距。
6
+ - 指向某個地方的(例如檔案和行號 `child.c:86`)是連結:強調文字色(`accent-text`)加底線,給 `href` 或 `onClick`。
7
+ - 24 個字元以內的不會從中間斷行(例如 `h->post_send` 不會斷成 `h-` 和 `>post_send`);更長的路徑才會換行。
8
+ - Geist Mono 只用在程式碼本身,周圍的中文句子維持一般字體。
9
+
10
+ ```js
11
+ h(UI.InlineCode, null, 'IBTRACE_SHM');
12
+ h(UI.InlineCode, { href: '/code/child.c#L86' }, 'child.c:86');
13
+ ```
14
+
15
+ ## CodeText
16
+
17
+ 把含有反引號的文字(例如來自 Markdown 的筆記)轉成一般文字加 InlineCode,畫面上不會出現反引號。
18
+
19
+ ```js
20
+ h(UI.CodeText, {
21
+ text: '`ibmon_spawn` 在 `child.c:86` 設定 `IBTRACE_SHM`',
22
+ refHref: function (ref) {
23
+ return '/code/' + ref;
24
+ }, // 或 onRef(ref)
25
+ });
26
+ ```
27
+
28
+ - 看起來像「檔名:行號」或「檔名:起-迄」的片段(`trace.c:321-322`)會變成連結;其他片段是一般的行內程式碼。用 `isRef` 可以改判斷方式。
29
+ - 沒有給 `refHref` 或 `onRef` 時,全部都是一般的行內程式碼。
30
+
31
+ 引用連結:
32
+
33
+ - `refHref(ref)` 回傳網址就是連結;回傳 `undefined` 表示這個引用沒有目標,顯示成一般的行內程式碼。
34
+ - `onRef(ref, event)`:點擊時呼叫,元件會先 `preventDefault()`,網址和 hash 不會改變;按住 Ctrl、⌘、Shift 或用滑鼠中鍵時仍照 `href` 開新分頁。
35
+ - `isRef(span)`:決定哪些反引號內容算引用,預設是 `檔名.副檔名:行號`。`UI.Suggestion` 和 `UI.Term` 也接受同樣的 `refHref`、`onRef`、`isRef`。
@@ -0,0 +1,11 @@
1
+ # KpiCard
2
+
3
+ KPI 卡片,放在 Dashboard 最上方。
4
+
5
+ - 由上到下:標籤、大數字加單位、迷你折線、變化。
6
+ - 數字 31 px、Geist Mono、等寬數字;單位寫在數字後面(人、ms、%)。
7
+ - 大數字縮寫只出現在 KPI 卡片:1 萬以上寫成「1,284 萬」(`compact={false}` 可以關掉)。金額用 `format="money"`,顯示成「NT$ 1,284 萬」。
8
+ - 數字進場時從 0 數上來(900 ms)。跳動途中用和最終值相同的單位和小數位數,寬度先保留給最終值,所以不會忽寬忽窄。
9
+ - 卡片太窄、最終數字放不下時,字級自動從 31 px 縮小,最小 20 px。
10
+ - 變化:▲/▼ 加百分比,後面接灰色「較上週」(`compareLabel` 可改)。顏色看好壞:`good` 預設為 `delta > 0`,像錯誤率這種上升是壞事的指標要設 `good={false}`;回應時間下降是好事,設 `good`。
11
+ - 百分比的指標,變化用 `deltaUnit="pt"` 顯示「個百分點」。
@@ -0,0 +1,32 @@
1
+ # LayerGraph
2
+
3
+ 架構圖:項目(元件、服務、模組)分層排列,箭頭表示關係。給資料就會自己排版和畫線,不用自己畫 SVG。
4
+
5
+ - 分層:`layer` 0 在最上面,同一層由左到右照資料順序,置中排列。
6
+ - 共用項目(`shared: true`,幾乎每個項目都會用到的,例如 `src/common`)不畫在圖上,改在圖的下方列出,預設寫「N 個項目使用,共 M 次」(`sharedMeta`,`{a}` 是項目數、`{b}` 是次數),標題預設「共用項目」(`sharedLabel`)。
7
+ - 方框:淡灰底,左側一條灰色色條;第一行是名稱(Geist Mono),第二行是大小長條和文字,長條長度和最大的項目相比。大小給 `size`(函式數、檔案數、端點數),文字用 `sizeLabel` 換成專案的單位,預設「{n} 個項目」。
8
+ - 線:直角轉彎、轉角是圓的,每條線接在方框上不同的位置。線的粗細依次數(`count`),全部灰色。推測的關係(`inferred`)是細虛線,箭頭旁寫 `label`。一個方框收到兩條以上有標籤的線時,左半邊箭頭的標籤寫在箭頭左側、右半邊的寫在右側,只有一條時寫在右側;仍會碰到已經放好的標籤或其他箭頭時往上移一行(18 px)。標籤不會超出圖的左右邊界:放不下時改放另一側。選取時的「N 次」(`countLabel`)也一樣。
9
+ - 選取(`selected`、`onSelect`):點方框選取,再點一次取消。選取時相關的方框和線維持原樣、線變強調色並在箭頭旁寫「N 次」,其他淡到 40%。
10
+ - 層與層之間 56 px。圖比畫面寬時左右捲動,手機也一樣。
11
+ - 圖例預設放在下方:「次數越多線越粗」和「推測的關係」;`inferredText` 是推測的說明(Term),`inferredLabel` 換掉「推測」這個詞。
12
+ - 放在卡片上。直接放在頁面底色上時,外層加 `style: { '--ui-graph-bg': 'var(--bg)' }`。
13
+
14
+ ```tsx
15
+ <LayerGraph
16
+ nodes={[
17
+ { id: 'web', name: 'web', layer: 0, size: 91 },
18
+ { id: 'api', name: 'api', layer: 1, size: 114 },
19
+ { id: 'common', name: 'common', shared: true },
20
+ ]}
21
+ edges={[
22
+ { from: 'web', to: 'api', count: 18 },
23
+ { from: 'web', to: 'common', count: 6 },
24
+ ]}
25
+ sizeLabel="{n} 個端點"
26
+ countLabel="{n} 次請求"
27
+ selected={selected}
28
+ onSelect={setSelected}
29
+ />
30
+ ```
31
+
32
+ 從舊版升級:`fns` 改名 `size`,原本寫死的「N 個函式」「被 N 個元件呼叫」改用 `sizeLabel`、`sharedMeta` 傳入。
@@ -0,0 +1,10 @@
1
+ # LineChart
2
+
3
+ 折線圖。
4
+
5
+ - 平滑曲線,線寬 2.5 px,不填色。
6
+ - 多組資料依序用 `chart-1`、`chart-2`、`chart-3`;超過一組時上方顯示圖例。
7
+ - 格線為淡色虛線,底線實線;數字刻度用等寬字。
8
+ - 滑過時出現垂直參考線、各組的點,以及浮起卡片顯示日期和數值(加單位)。
9
+ - 進場時一條接一條畫出,間隔 150 ms。
10
+ - `label` 必填,作為圖表的 `aria-label`。
@@ -0,0 +1,7 @@
1
+ # LoadingBar
2
+
3
+ 水滴載入條,用於不知道要多久的載入。
4
+
5
+ - 高度 8 px,和進度條相同的軌道。
6
+ - 一段強調色流過去:前端先衝、後端跟上,所以中間會拉長,和導覽的水滴動畫一致。
7
+ - 減少動態效果時改成靜止的半透明條。
@@ -0,0 +1,8 @@
1
+ # LoginCard
2
+
3
+ 登入頁:淺灰底上置中的白色卡片。
4
+
5
+ - 只有帳號密碼登入。密碼欄右邊有眼睛按鈕可以顯示密碼。
6
+ - 「忘記密碼?」放在密碼標籤右邊(`forgotHref`)。
7
+ - 錯誤寫在各欄位下方:空著送出顯示「請輸入帳號/請輸入密碼」;帳密錯誤時把 `error.password` 設成「帳號或密碼不正確,請再試一次。」。
8
+ - 按 Enter 也會送出。
package/docs/Menu.md ADDED
@@ -0,0 +1,20 @@
1
+ # Menu
2
+
3
+ 「⋯」選單:一列或一個項目的更多操作。
4
+
5
+ - 按鈕是無外框的「⋯」IconButton,打開時灰底。
6
+ - 選單預設在按鈕下方、右緣對齊;往左超出視窗時改成左緣對齊,下方放不下時改到上方。
7
+ - 每個選項:圖示、文字、右邊的鍵盤快捷鍵(等寬字)。
8
+ - 危險選項(`danger: true`)自動移到最後,前面加分隔線,紅字(`danger-text`)。一定要給 `confirm`:按下時先跳確認對話框,確認後才執行 `onSelect`。
9
+ - 打開動畫:從按鈕所在的角落放大,180 ms。
10
+ - 鍵盤:打開後焦點在第一個選項,↑ ↓ 移動,打字跳到開頭相符的選項,Esc 關閉並回到按鈕;點外面也會關閉。
11
+
12
+ ```tsx
13
+ <Menu
14
+ label="api-gateway 的更多操作"
15
+ items={[
16
+ { label: '重新命名', icon: 'pencil-simple', onSelect: rename },
17
+ { label: '刪除', icon: 'trash', danger: true, confirm: { title: '刪除 api-gateway?' }, onSelect: remove },
18
+ ]}
19
+ />
20
+ ```
@@ -0,0 +1,8 @@
1
+ # MobileTabBar
2
+
3
+ 手機寬度(小於 600 px)時的底部分頁列。
4
+
5
+ - 只有圖示,不顯示文字;每個按鈕都有 `aria-label`。
6
+ - 按下已選中的分頁也會呼叫 `onChange`(例如「更多」每次都要打開);只在頁面真的改變時才做事的話,先比對目前的值。
7
+ - 選中:圖示後方一塊 `accent-soft` 圓角矩形(`radius-md`),圖示變 `accent-text`。
8
+ - 切換動畫:水滴膠囊,和 Tabs 相同的拉伸方式(前端 120 ms、後端 440 ms)。
@@ -0,0 +1,9 @@
1
+ # MultiSelect
2
+
3
+ 多選:選中的項目變成框內的標籤。
4
+
5
+ - 框內顯示前 2 個標籤,其餘寫成「+n」(滑過可看全部);`maxChips` 可以改數量。
6
+ - 輸入文字篩選選單;選單裡每個選項前面有勾選框。
7
+ - 依情況決定能不能新增:`creatable` 時,輸入清單裡沒有的名字會出現「新增「…」」,也可以按 Enter;不能新增時顯示「找不到符合的選項」。
8
+ - Backspace 移除最後一個標籤,Esc 關閉選單。
9
+ - 選項固定、使用者不該自己加的(例如狀態、權限)不要開 `creatable`;名稱或標籤這類可以自由增加的才開。
@@ -0,0 +1,9 @@
1
+ # NotificationBell
2
+
3
+ 頂部列的通知鈴鐺與通知中心。
4
+
5
+ - 鈴鐺上有紅色數字角標(`danger`),超過 99 顯示 99+;沒有未讀時不顯示。
6
+ - 點鈴鐺從下方彈出 360 px 的面板,點外面或按 Esc 關閉。
7
+ - 通知依時間分組(`group`,例如「今天」、「更早」),由新到舊。
8
+ - 未讀通知左側有強調色圓點;點一則通知交給 `onOpen` 處理(通常是標成已讀並前往)。
9
+ - 「全部標為已讀」在面板標題列右側,有未讀時才出現。
@@ -0,0 +1,9 @@
1
+ # Popover
2
+
3
+ 彈出框:按鈕旁邊浮出的小面板,放篩選條件、說明或少量設定。
4
+
5
+ - 滑過按鈕就打開,滑鼠移到面板上會保持打開;移開 150 ms 後關閉。點擊或用鍵盤 focus 按鈕也能打開,觸控裝置靠點擊。
6
+ - 點外面或按 Esc 關閉,右上角不放 ×。
7
+ - 有指向按鈕的箭頭;預設在按鈕下方、右緣對齊,放不下時換邊。
8
+ - 白底(`surface`)、`radius-lg`、`shadow-overlay`,出現時淡入 150 ms。
9
+ - 內容要用完整表單或很多欄位時,改用 Drawer。
@@ -0,0 +1,7 @@
1
+ # ProgressBar
2
+
3
+ 進度條,用於知道進度的工作(例如上傳)。
4
+
5
+ - 高度 8 px,軌道 `surface-sub`,填色 `accent`。
6
+ - 百分比寫在條的下方,等寬字。
7
+ - 到 100% 時條變 `success`,文字變「完成 ✓」。
@@ -0,0 +1,7 @@
1
+ # ProgressRing
2
+
3
+ 達成率圓環,放在卡片裡顯示「完成多少」。
4
+
5
+ - 預設 72 px,線寬 8 px,軌道 `surface-sub`,填色 `accent`,端點圓頭。
6
+ - 中間放百分比(等寬字);旁邊可以寫實際數量,例如「72 / 100 個專案」。
7
+ - 進場時和數字一起從 0 跑到目標值。
@@ -0,0 +1,22 @@
1
+ # ProjectSwitcher
2
+
3
+ 頂部列右邊的專案狀態:現在看的是哪個專案、資料是不是即時的,點了可以切換專案或環境。
4
+
5
+ - 外框 Chip:高度 40 px,和按鈕、輸入框一致,`line-strong` 外框,`radius-md`;內容是狀態圓點、「專案 · 狀態」,右邊下拉箭頭。
6
+ - 圓點:`live` 即時(`success`)、`stale` 已過期(`warning`)、`offline` 離線(`neutral-500`)。狀態文字可以用 `statusLabel` 改寫。
7
+ - 點了打開清單:每個選項是名稱加說明(例如環境),目前的選項是 `accent-soft` 底加勾;最下方可以放 `footer`,例如「所有資料來源設定」連結。點外面或按 Esc 關閉。
8
+ - 沒有 `options` 或 `onChange` 時只是顯示狀態,不能點。
9
+
10
+ ```js
11
+ h(UI.ProjectSwitcher, {
12
+ project: 'ibtrace',
13
+ status: 'live',
14
+ value: env,
15
+ onChange: setEnv,
16
+ options: [
17
+ { id: 'ib-build', label: 'ibtrace', detail: 'build 環境' },
18
+ { id: 'ib-rt', label: 'ibtrace', detail: 'runtime 環境' },
19
+ ],
20
+ footer: h('a', { href: '/settings/sources' }, '所有資料來源設定'),
21
+ });
22
+ ```
@@ -0,0 +1,7 @@
1
+ # RadioGroup
2
+
3
+ 單選群組。
4
+
5
+ - 外圈 22 px 圓形,2 px `line-strong` 邊框;選中時外圈變 `accent`,中間出現 10 px 圓點(彈出動畫)。
6
+ - `role="radiogroup"`,每個選項 `role="radio"`。
7
+ - 整列可點,高度 40 px。
@@ -0,0 +1,7 @@
1
+ # SearchField
2
+
3
+ 搜尋欄。
4
+
5
+ - 外框輸入框,左邊放大鏡圖示。
6
+ - 有內容時右邊出現清除鈕;瀏覽器內建的清除鈕已隱藏,不會出現兩個叉。
7
+ - `label` 預設為「搜尋」,作為 `aria-label`。
package/docs/Select.md ADDED
@@ -0,0 +1,7 @@
1
+ # Select
2
+
3
+ 下拉選單。一律不用瀏覽器原生 `<select>`。
4
+
5
+ - 依內容決定類型:選項超過 8 個時自動加上搜尋框,8 個以內是一般自訂選單;用 `searchable` 可手動指定。
6
+ - 選單向下展開(200 ms),按 Esc 關閉;選中項目用 `accent-soft` 底加勾。
7
+ - 搜尋沒有結果時只顯示一句話:「找不到符合的選項」。
@@ -0,0 +1,8 @@
1
+ # SettingsLayout
2
+
3
+ 設定頁:左側分類,右側內容。
4
+
5
+ - 分類清單 180 px,選中的分類有左側強調色指示條;手機寬度時改成上方橫向分類。
6
+ - 每個分類的內容用 `SettingsSection` 分成卡片。
7
+ - 自動儲存:使用者改完就存,右下角出現 Toast「已儲存」(`toast`),3 s 後消失。沒有「儲存」按鈕。
8
+ - 刪除帳號這類操作放在最後一個分類的最下方,用 `DangerZone` 紅框隔開,按下後先跳確認對話框。
@@ -0,0 +1,11 @@
1
+ # SideNav
2
+
3
+ Dashboard 類頁面的左側導覽,可以收合。
4
+
5
+ - 寬度:展開 240 px(`sidebar-width`),收合 72 px(`sidebar-collapsed`),底色 `surface-chrome`,右邊一條 `line`。
6
+ - 由上到下:品牌(文字名稱加 `accent` 色方塊)、選單項目、收合按鈕。品牌和收合按鈕固定大小;項目太多時,中間的選單自己捲動。
7
+ - 項目高度 40 px,滑過灰底(`surface-sub`),組與組之間用分隔線。
8
+ - 選中:左側 3 px 強調色指示條,用水滴方式移動到新項目;文字變粗、圖示變 `accent-text`。
9
+ - 子選單:點父項目展開,子項目縮排;收起時選中的子項目會標在父項目上。收合時,有子項目的父項目點了直接進第一個子頁面,頁面內再切換其他子頁面(例如用 Tabs)。
10
+ - 收合按鈕在左下角,只有圖示、沒有文字。收合後只剩圖示,滑過顯示名稱提示。
11
+ - `label` 是導覽的 `aria-label`,預設「主要導覽」。
@@ -0,0 +1,5 @@
1
+ # Skeleton
2
+
3
+ 資料載入中時顯示的骨架,用 `surface-sub` 底色。
4
+
5
+ - 開始載入就立即顯示(延遲 0 ms)。
@@ -0,0 +1,15 @@
1
+ # Suggestion
2
+
3
+ 修正建議:發現寫錯的地方時,直接給出建議的寫法,可以一鍵複製。
4
+
5
+ - 上下兩行:舊的在上,前面「−」,淡紅底(`danger-soft`);新的在下,前面「+」,淡綠底(`success-soft`)。螢幕閱讀器會念「原本:」和「改成:」。
6
+ - 文字用一般字體,反引號包起來的部分是行內程式碼;檔案和行號可以用 `refHref` 或 `onRef` 變成連結(同 CodeText,也可以給 `isRef`)。
7
+ - 右上角是複製圖示(提示「複製修正」)。按了把 `copyText`(預設是 `after` 原文,保留反引號,方便貼回 Markdown)複製到剪貼簿,圖示變成綠色的勾、提示寫「已複製」,2 秒後恢復。
8
+ - 只有新的寫法、沒有舊的時,不給 `before`。
9
+
10
+ ```js
11
+ h(UI.Suggestion, {
12
+ before: '`flush_ring` 在 `ring.c:96` 把資料寫回檔案。',
13
+ after: '`flush_ring` 在 `ring.c:104` 把資料寫回檔案。',
14
+ });
15
+ ```
package/docs/Switch.md ADDED
@@ -0,0 +1,8 @@
1
+ # Switch
2
+
3
+ 開關,用於立即生效的設定。
4
+
5
+ - Material 3 樣式:52 × 32 px,2 px 邊框。
6
+ - 圓鈕:關 16 px 灰色帶叉、開 24 px 白色帶勾、按住時 28 px。
7
+ - 滑動用水滴動畫(與導覽相同的 `MOTION`)。
8
+ - `label` 必填,作為 `aria-label`;畫面上的文字放在開關旁邊。
package/docs/Tabs.md ADDED
@@ -0,0 +1,10 @@
1
+ # Tabs
2
+
3
+ 同一頁裡切換不同檢視:分段控制。
4
+
5
+ - 每一項可以加 `count`,顯示在名稱右邊(Geist Mono、次要文字色)。結果清單的摘要用這種寫法,例如「全部 6 · 錯誤 2 · 要確認 1」。
6
+ - 手機上當作摘要使用時,各項平均分配寬度,不換行。
7
+
8
+ - `surface-sub` 灰底軌道,選中的是浮起的 `surface` 白塊,圓角 `radius-md` 10 px。
9
+ - 切換動畫:水滴。靠近目標的一端先移動(120 ms),另一端慢 2.2 倍才跟上(440 ms),移動中略為變細,到位後恢復;全程是同一塊,邊緣清晰。
10
+ - 內容切換:新內容的卡片依序浮起(外層加 `ui-rise-in`,並在切換時換 `key` 重新掛載)。
package/docs/Tag.md ADDED
@@ -0,0 +1,11 @@
1
+ # Tag
2
+
3
+ 說明一個項目「是什麼」的分類標籤,例如「編譯器」、「外部」、「規則:經由指標」。
4
+
5
+ - 只有小字:12 px、粗體、`ink-muted`,沒有框也沒有底色。
6
+ - 一律灰色,不用顏色區分類別;要表示進度或結果(完成、失敗、要確認)用 Badge。
7
+ - 放在名稱後面,同一列可以有多個。
8
+
9
+ ```js
10
+ h(UI.Tag, null, '編譯器');
11
+ ```
package/docs/Term.md ADDED
@@ -0,0 +1,30 @@
1
+ # Term
2
+
3
+ 名詞或關係標籤的說明:讀者可能看不懂的詞(例如「translation unit」、「LD_PRELOAD 攔截」)和關係標籤(例如「推測(規則)」)。
4
+
5
+ - 記號:詞的後面加一個小問號,滑過或打開時問號變強調色。文字本身維持周圍的字體和顏色,所以可以放在句子裡,也可以放在 `UI.Tag` 裡。
6
+ - 點一次打開,再點一次關閉;右上角也有 ×,按 Esc 或點外面也會關閉。
7
+ - 觸控範圍:放在句子裡時不擴大(WCAG 2.2 行內例外);單獨出現時(Tag 裡、圖例)自動擴大到 48 px,不用另外處理。
8
+ - 寬度 600 px 以上:詞的下方浮起小卡,寬 340 px。小於 600 px:從畫面下方打開,字比較大,按鈕至少 48 px。
9
+ - 說明裡的檔案和行號可以用 `refHref`、`onRef`、`isRef` 變成連結(同 CodeText)。
10
+ - 內容:標題(預設是詞本身)、一兩句說明(`text`,反引號變行內程式碼);關係的說明可以加證據那一行程式碼(`code`)和一個動作(`action`,例如「看這一行」)。
11
+ - 同一頁同一個詞出現很多次時,每次都可以加;說明要短,長篇的解釋改連到文件。
12
+
13
+ ```js
14
+ h('p', null, '起點經過 2 個 ', h(UI.Term, { text: '一個 `.c` 檔加上它 include 的標頭檔,編譯器一次處理的單位。' }, 'translation unit'), '。');
15
+
16
+ h(
17
+ UI.Tag,
18
+ null,
19
+ h(
20
+ UI.Term,
21
+ {
22
+ title: '推測(規則)',
23
+ text: '經由 `h->post_send` 呼叫,由規則推得,編譯器無法確認。',
24
+ code: ' 74 │ ret = h->post_send(qp, wr, bad_wr);',
25
+ action: { label: '看這一行', onClick: () => openLine('ops.c', 74) },
26
+ },
27
+ '推測(規則)',
28
+ ),
29
+ );
30
+ ```
@@ -0,0 +1,7 @@
1
+ # TextArea
2
+
3
+ 多行輸入。
4
+
5
+ - 隨內容自動長高,從 3 行開始,最多 8 行,之後在框內捲動。
6
+ - 右下角顯示字數 `n / 200`(等寬字);`maxLength` 可改上限。
7
+ - 樣式與 TextField 相同;`required` 加紅色星號。
@@ -0,0 +1,10 @@
1
+ # TextField
2
+
3
+ 單行文字輸入,標籤在上、說明或錯誤在下。
4
+
5
+ - 外框樣式:`surface-input` 底色、`line-strong` 邊框、`radius-md`。
6
+ - focus:邊框變 `accent` 並加 3 px `focus-ring` 光暈。
7
+ - 錯誤:`error` 給一句原因加修正方式;邊框變 `danger`,欄位內右側出現警示圖示,訊息用 `danger-text`。輸入框帶 `aria-invalid` 與 `aria-describedby`。
8
+ - 停用:`surface-sub` 灰底、`ink-muted` 灰字、無邊框。
9
+ - 標籤一定要有,不要只靠 placeholder。
10
+ - 必填:`required` 會在標籤後加紅色星號(`danger`)。
@@ -0,0 +1,9 @@
1
+ # ThemePicker
2
+
3
+ 主題選擇:自動、淺色、深色三張預覽卡片,放在設定頁的「外觀」。
4
+
5
+ - 每張卡片有一張小縮圖:自動是左上淺色、右下深色。
6
+ - 選中的卡片用 2 px 強調色外框,文字變粗。
7
+ - 不傳 `onChange` 時會直接呼叫 `UI.setTheme()`:在根元素設 `data-theme`,選擇存在 localStorage。
8
+ - 自動:跟著系統的 `prefers-color-scheme`,系統改變時也會跟著換。
9
+ - 切換時所有顏色用 300 ms 漸變;減少動態效果時直接切換。頁面載入時呼叫一次 `UI.initTheme()`。
package/docs/Toast.md ADDED
@@ -0,0 +1,7 @@
1
+ # Toast
2
+
3
+ 操作完成後的短暫提示,出現在畫面右下角。
4
+
5
+ - 卡片樣式:`surface` 底色、`line` 細框、`shadow-overlay` 陰影。
6
+ - 出現 3 s 後自動消失。
7
+ - 附「復原」(`actionLabel="復原"`)。
@@ -0,0 +1,9 @@
1
+ # Tooltip
2
+
3
+ 提示:滑過或用鍵盤移到元素上時出現的短文字。
4
+
5
+ - 深色(`ink` 底、`bg` 字),圓角 `radius-chip`,13 px 粗體。
6
+ - 預設在元素上方,有指向元素的箭頭;上方放不下時改到下方。
7
+ - 延遲 0 ms:滑過或 focus 立刻出現;移開、失焦或按 Esc 消失。
8
+ - 出現動畫:從箭頭那一側放大,220 ms,稍微回彈。減少動態效果時只淡入。
9
+ - IconButton 會自動用 `label` 加上 Tooltip;其他元素用 `<Tooltip label>` 包起來。只放短文字,不放按鈕或連結。
package/docs/TopBar.md ADDED
@@ -0,0 +1,9 @@
1
+ # TopBar
2
+
3
+ Dashboard 類頁面的頂部列,高 64 px(`header-height`)。
4
+
5
+ - 左側放頁面標題(`title`,20 px、字重 700)。
6
+ - 麵包屑放在內容區、頁面內容的最上方,不放在頂部列。
7
+ - 右側:填色搜尋框(`surface-sub` 灰底、無外框,附 Ctrl K 提示,Mac 上寫 ⌘K),接著放頭像或其他元素(`children`)。
8
+ - 寬度小於 600 px 時,搜尋框換成搜尋圖示(觸控區 48 px)。兩者都呼叫 `onSearch`,通常接到 CommandPalette,也都有 `data-tour="search"`,Tour 可以直接用 `target: 'search'`。
9
+ - 頁首行為依版面規則:往下捲時隱藏,往上捲時出現。
package/docs/Tour.md ADDED
@@ -0,0 +1,24 @@
1
+ # Tour
2
+
3
+ 第一次使用的導覽:一次介紹一個地方,整頁變暗,只亮出要介紹的地方。
4
+
5
+ - 亮出的地方加 3 px 強調色框;說明卡放在它下方(放不下時換到上方),寬 320 px,寫「1 / 3」、標題和一兩句說明(說明裡的反引號會變成行內程式碼)。
6
+ - 按鈕:左邊「略過」,右邊「上一步」和主要按鈕「下一步」,最後一步是「完成」。按 Esc 等於略過。導覽進行時頁面不能操作。
7
+ - 用 `UI.useTour(key)` 記住這個瀏覽器看過了沒有:沒看過會自動打開,看完或略過後不再出現。
8
+ - 頁面上要有「重看導覽」(例如說明選單或頁面底部的連結),呼叫 `tour.start()`。
9
+ - `target` 最好用名稱:在要介紹的元素上加 `data-tour="tree"`,`target` 寫 `'tree'`。TopBar 的搜尋框和手機的搜尋圖示都已經有 `data-tour="search"`,會用看得到的那一個。也可以給 CSS selector、ref 或元素。找不到時說明卡放在畫面中間。
10
+ - 步驟最多 3 到 5 步,只介紹第一次看不出用法的地方。
11
+
12
+ ```js
13
+ const tour = UI.useTour('codemap-flow');
14
+ h(UI.Tour, {
15
+ open: tour.open, onClose: tour.close,
16
+ steps: [
17
+ { target: 'search', title: '搜尋', text: '搜尋函式、檔案、元件與環境變數。快捷鍵 Ctrl K。' },
18
+ { target: 'tree', title: '流程樹', text: '名稱旁的標籤是關係的來源,點選問號查看依據。' },
19
+ { target: 'notes', title: '檢查筆記', text: '錯誤的位置附有修正建議,可直接複製。' }
20
+ ]
21
+ }),
22
+ h('section', { 'data-tour': 'tree' }, …),
23
+ h('button', { className: 'ui-link-btn', onClick: tour.start }, '重看導覽')
24
+ ```
@@ -0,0 +1,93 @@
1
+ # TreeList
2
+
3
+ 資料夾裡放檔案、可以一層層展開的清單。
4
+
5
+ ```js
6
+ h(UI.TreeList, {
7
+ title: '課程教材',
8
+ items: [
9
+ { id: 'rec', name: '上課錄影', children: [{ id: 'r4', name: 'SDNFV_20261029_1.mp4', date: '2026-11-05T01:16', size: 144284057, unseen: true }] },
10
+ { id: 'f1', name: '課程評分方式.docx', date: '2026-09-22', size: 53248 },
11
+ ],
12
+ defaultOpen: ['rec'],
13
+ onDownload: function (files) {
14
+ /* 一個或多個檔案 */
15
+ },
16
+ });
17
+ ```
18
+
19
+ ## 資料
20
+
21
+ - 資料夾有 `children`(可以是空陣列),檔案沒有。每個項目都要有唯一的 `id`。
22
+ - 檔案:`name`(副檔名從檔名取,也可以另外給 `ext`)、`date`(Date、時間戳或日期字串)、`size`(位元組)、`unseen`(使用者還沒打開或下載過)。
23
+ - 資料夾的檔案數和最新時間自動從裡面的檔案算出來,沒有資料就不顯示。
24
+ - 子項目很多時(例如呼叫關係)可以延遲載入:項目給 `hasChildren: true`、不給 `children`,再給 `loadChildren(node)`,回傳子項目陣列或 Promise。展開時才載入,載入中顯示一列骨架;失敗時寫「無法載入 X 的子項目:原因。」和「重試」。載入過的不會重複載入。
25
+ - `tags` 可以放文字或元件,例如 `h(UI.Term, …)`。
26
+
27
+ ## 選項
28
+
29
+ - `sort`:`'newest'`(預設)、`'oldest'`、`'name'`,或 `false` 照資料原本的順序。資料夾一律排在檔案前面。看情況選。
30
+ - `expand`:`'multi'`(預設,點資料夾展開或收合,標題列有「全部展開」)或 `'single'`(一次只開一個,同層的其他資料夾自動收合)。需要一次看到全部時用 `'multi'`,資料夾又多又雜時用 `'single'`。
31
+ - `meta`:名稱下方的次要文字(例如「2 個 caller」),一般字體、數字用 Geist Mono;沒有 `meta` 時顯示 `path`,整行 Geist Mono。
32
+ - `title` 加 `subtitle`:標題和下方一行次要文字(例如「17 個檔案」)。
33
+ - `height`:固定高度(例如 `'100%'` 填滿外層、或 `520`),標題列不動,清單在裡面捲動。放在固定高度的版面(例如側邊面板)時一定要給,不然下面的項目看不到。
34
+ - TreeList 本身就是一張卡片,不要再包進另一張卡片。真的要放進現有的卡片或面板時給 `bare`:沒有底色、陰影和圓角。
35
+ - `defaultOpen`:一開始展開的資料夾 `id`。
36
+ - `open` 加 `onToggle(node, isOpen, openIds)`:由外部控制展開,例如寫進網址。給了 `open` 時,請在 `onToggle` 裡更新它。
37
+ - `selectable`:顯示勾選框(滑過才出現,勾了一個之後全部顯示;觸控裝置一直顯示)。勾資料夾等於全選裡面的檔案。勾選後標題列換成「已選 n 個檔案 共 x MB」、「清除選取」和「下載」。`selected` 加 `onSelectChange` 可以由外部控制(只會有檔案的 `id`)。`bulkActions(files, clear)` 可以再加按鈕。
38
+ - `onDownload(files)`:每個檔案右邊的下載按鈕和批次下載都會呼叫它。
39
+ - `onOpen(file)`:點檔案列或按 Enter;沒給時改成下載。打開或下載後,請把那個檔案的 `unseen` 改成 `false`。
40
+ - `title`、`actions`:標題列的文字和右邊的按鈕。沒有標題時用 `label` 給螢幕閱讀器。
41
+ - `emptyText`:沒有任何項目時的文字,預設「這裡還沒有檔案」。
42
+
43
+ ## 外觀
44
+
45
+ - 每層縮排 28 px,左側細線(`line`)。資料夾用 Phosphor 的 folder/folder-open,前面有會轉 90° 的箭頭。
46
+ - 檔案圖示:文件形狀,底部色塊寫副檔名。PDF 紅、影片紫、音訊桃紅、簡報橘、文件藍、試算表綠、圖片青、程式碼深灰、壓縮檔和其他灰。
47
+ - 清單寬 640 px 以上:日期和大小在右側排成欄(Geist Mono)。比較窄:放在名稱下方,檔名最多兩行。
48
+ - 新檔案(`unseen`):日期變 `accent-text` 粗體;資料夾旁寫「2 個新」。
49
+ - 滑過列 `surface-sub`,勾選中的列 `accent-soft`。
50
+ - 展開時子項目往下長出 260 ms;減少動態效果時改成淡入。
51
+
52
+ ## 一般的樹
53
+
54
+ `kind="plain"` 用在不是檔案的階層,例如呼叫關係、元件結構。
55
+
56
+ ```js
57
+ h(UI.TreeList, {
58
+ kind: 'plain',
59
+ label: '呼叫流程',
60
+ items: [
61
+ {
62
+ id: 'root',
63
+ name: 'trace_post_send',
64
+ path: 'src/libibtrace/hooks/ops.c:55',
65
+ children: [
66
+ { id: 'hook_of', name: 'hook_of', path: 'src/libibtrace/hooks/ops.c:58', tags: ['編譯器'] },
67
+ { id: 'gettime', name: 'clock_gettime', meta: 'libc.so.6', tags: ['外部'], muted: true },
68
+ ],
69
+ },
70
+ ],
71
+ defaultOpen: ['root'],
72
+ selectedId: sel,
73
+ onSelect: function (n) {
74
+ setSel(n.id);
75
+ },
76
+ });
77
+ ```
78
+
79
+ - 每一列:名稱、分類標籤(`tags`,用 `UI.Tag` 顯示),名稱下方是位置:`meta` 直接顯示,或 `path` 用 `UI.format.path()` 保留頭尾、中間省略。
80
+ - 照資料原本的順序;有子項目的不會被排到前面。`sort` 仍然可以指定。
81
+ - 點一列呼叫 `onSelect`,選中的列是 `accent-soft` 底;點左邊的箭頭才展開或收合。Enter 選取,→ ← 展開收合。
82
+ - `muted: true` 的項目名稱用次要文字色(例如外部函式)。`icon` 可以放 Phosphor 圖示名稱。
83
+ - 預設不顯示「全部展開」;需要時加 `toggleAll: true`。沒有勾選和下載。
84
+
85
+ ## 手機上的縮排
86
+
87
+ 清單寬度小於 600 px 時(看清單本身的寬度),每層縮 16 px,最多縮 3 層;更深的不再縮排,名稱前加層數「L5」。檔案清單和一般的樹都適用。
88
+
89
+ ## 鍵盤
90
+
91
+ 一次只有一列能用 Tab 進入。↑ ↓ 移動,Home/End 到頭尾,→ 展開(已展開就到第一個子項目),← 收合或回到上一層,Enter 打開檔案或切換資料夾,空白鍵勾選。
92
+
93
+ `UI.format.fileSize(bytes)` 可以把位元組寫成「186 KB」、「54.9 MB」。