@dxtmisha/wiki 0.39.6 → 0.39.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/defineProperty-Bjg6wMoX.js +39 -0
  2. package/dist/library.d.ts +0 -1
  3. package/dist/library.js +25 -25
  4. package/dist/media.js +12 -0
  5. package/dist/storybook.js +26929 -11
  6. package/package.json +1 -1
  7. package/src/library.ts +0 -1
  8. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  9. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  10. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  11. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
  12. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
  13. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
  14. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  15. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  16. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  17. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  18. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  19. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  20. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  21. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  22. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  23. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  24. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  25. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  26. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  27. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  28. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  29. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
  30. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
  31. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
  32. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  33. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  34. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  35. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
  36. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
  37. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
  38. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  39. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  40. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  41. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  42. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  43. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  44. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  45. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  46. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  47. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  48. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  49. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  50. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  51. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  52. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  53. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  54. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  55. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  56. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  57. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  58. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  59. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  60. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  61. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  62. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
  63. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
  64. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
  65. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  66. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  67. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  68. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  69. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  70. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  71. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  72. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  73. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  74. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  75. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  76. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  77. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  78. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  79. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  80. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  81. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  82. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  83. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  84. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  85. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  86. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  87. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  88. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  89. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  90. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  91. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  92. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  93. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  94. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  95. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  96. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  97. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  98. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  99. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  100. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  101. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  102. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  103. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  104. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
  105. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
  106. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
  107. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  108. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  109. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  110. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  111. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  112. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  113. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  114. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  115. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  116. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  117. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  118. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  119. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  120. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  121. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  122. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  123. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  124. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  125. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  126. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  127. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  128. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  129. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  130. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  131. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  132. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  133. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  134. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  135. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  136. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  137. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  138. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  139. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  140. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  141. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  142. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  143. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  144. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  145. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  146. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  147. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  148. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  149. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  150. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  151. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  152. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  153. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  154. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  155. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  156. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  157. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  158. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  159. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  160. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  161. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  162. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  163. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  164. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  165. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  166. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  167. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  168. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  169. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  170. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  171. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  172. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  173. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  174. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  175. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  176. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  177. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  178. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  179. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  180. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  181. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  182. package/src/media/functional/ui/about/about.en.mdx +45 -0
  183. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  184. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  185. package/src/media/functional/ui/component/component.en.mdx +104 -0
  186. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  187. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  188. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  189. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  190. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  191. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  192. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  193. package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
  194. package/dist/WikiStorybookDescriptions-IKMchHA-.js +0 -26959
@@ -0,0 +1,104 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/# UI/# Tạo và quản lý thành phần'/>
4
+
5
+ # Tạo và quản lý thành phần
6
+
7
+ Quy trình phát triển trong hệ thống **DXT UI** được tự động hóa tối đa bằng các mã lệnh tạo mã. Ý tưởng cốt lõi là nhà phát triển mô tả siêu dữ liệu của thành phần, và hệ thống sẽ tự động tạo và cập nhật các tệp cần thiết (props, styles, templates).
8
+
9
+ ```bash
10
+ npm run ui
11
+ npm run ui [ComponentName]
12
+ ```
13
+
14
+ Lệnh `npm run ui` là công cụ chính để làm việc với các thành phần. Nó tự động quét các thư mục, tìm các thư mục mới hoặc bị thay đổi và đồng bộ hóa tất cả các tệp liên quan (`props.ts`, `styleToken.scss`, `.vue`) dựa trên dữ liệu trong `properties.json`.
15
+
16
+ - Để tạo hoặc cập nhật một thành phần cụ thể, chỉ cần chạy lệnh sau khi thực hiện thay đổi đối với thư mục của nó.
17
+ - Để xây dựng lại hoàn toàn thư viện và cập nhật tất cả các xuất bản (exports), hãy chạy lệnh mà không có tham số.
18
+
19
+ ## Tạo một thành phần mới
20
+
21
+ Để tạo một thành phần mới từ đầu, hãy làm theo các bước sau:
22
+
23
+ 1. **Tạo thư mục**: Trong thư mục `src/components/Ui/` (hoặc trong dự án của bạn), hãy tạo một thư mục mới với tên của thành phần (ví dụ: `MyButton`).
24
+ 2. **Khởi tạo thành phần**: Thực thi lệnh `ui` (hoặc `npm run ui`). Mã lệnh sẽ tự động phát hiện thư mục mới và tạo các tệp cần thiết bên trong đó.
25
+
26
+ ```bash
27
+ npm run ui
28
+ ```
29
+
30
+ Hệ thống sẽ tạo tệp `properties.json` với cấu trúc cơ bản, cùng với tất cả các tệp hỗ trợ (props, styles, vue).
31
+
32
+ 3. **Điền các thuộc tính**: Chỉnh sửa tệp `properties.json` đã tạo bằng cách thêm các bộ sửa đổi và token.
33
+ 4. **Đồng bộ hóa các thay đổi**: Chạy lại lệnh `ui` để cập nhật tất cả các tệp liên quan dựa trên các thay đổi của bạn.
34
+
35
+ ```bash
36
+ npm run ui
37
+ ```
38
+
39
+ ### Kết quả tạo mã
40
+ Hệ thống sẽ tự động tạo các tệp sau dựa trên siêu dữ liệu của bạn và constructor đã chọn:
41
+ - `props.ts` — các thuộc tính được định kiểu mở rộng từ constructor và xác định các giá trị mặc định.
42
+ - `styleToken.scss` — các SCSS token và mixin.
43
+ - `DesignComponent.vue` — thành phần Vue chính với logic khởi tạo.
44
+ - `index.ts`, `wiki.ts`, `stories.ts` — các tệp xuất bản, tài liệu và câu chuyện (stories).
45
+
46
+
47
+ Trong tệp `.vue` được tạo, khi khởi tạo lớp `Design` (ví dụ: `BarsDesign`), bạn có thể truyền một đối tượng `components`. Điều này cho phép bạn kết nối các thành phần con cần thiết để thành phần hiện tại hoạt động (ví dụ: các biểu tượng hoặc chỉ báo tiến trình).
48
+
49
+ > Chỉ kết nối các thành phần thực sự được sử dụng. Nếu một thành phần phụ thuộc (ví dụ: `ripple`) không cần thiết trong việc triển khai của bạn, nó có thể được bỏ qua khỏi đối tượng.
50
+
51
+ Để quản lý các thuộc tính của thành phần con, hãy sử dụng tham số `compMod`. Điều này cho phép bạn truyền các giá trị mặc định cho các pro của các phần tử bên trong (ví dụ: đặt kích thước hoặc kiểu nút bên trong một bảng điều khiển điều hướng).
52
+
53
+ ```typescript
54
+ const design = new BarsDesign('my.bars', props, {
55
+ emits,
56
+ classes: classesToken,
57
+ components: {
58
+ button: MyButton
59
+ },
60
+ compMod: {
61
+ button: {
62
+ text: true,
63
+ size: 'xs',
64
+ inverse: true
65
+ }
66
+ }
67
+ })
68
+
69
+ ### Làm việc với Props và các giá trị mặc định
70
+
71
+ Tệp `props.ts` chứa một đối tượng `defaults` kết hợp các giá trị tiêu chuẩn từ constructor với các cài đặt cụ thể cho thành phần của bạn.
72
+
73
+ Ví dụ trong tệp `props.ts`:
74
+ ```typescript
75
+ export const defaults: object = {
76
+ ...defaultsBars,
77
+ iconBack: 'arrow_back',
78
+ paddingByIndent: true
79
+ }
80
+ ```
81
+
82
+
83
+ ## Cập nhật một thành phần
84
+
85
+ Nếu bạn cần thay đổi các thuộc tính của thành phần (thêm một bộ sửa đổi, thay đổi một token hoặc giá trị CSS), hãy tuân theo quy tắc **"Nguồn dữ liệu duy nhất" (Source of Truth)**:
86
+
87
+ 1. Chỉnh sửa tệp `properties.json`.
88
+ 2. Chạy lại lệnh:
89
+ ```bash
90
+ npm run ui MyButton
91
+ ```
92
+
93
+ Mã lệnh sẽ tự động cập nhật `props.ts` (thêm các kiểu mới), `styleToken.scss` (cập nhật biến) và các bản mẫu trong khi vẫn duy trì tính toàn vẹn của kiến trúc.
94
+
95
+ ## Xây dựng lại toàn bộ thư viện
96
+
97
+ Khi làm việc đồng thời trên nhiều thành phần hoặc nếu bạn muốn cập nhật các xuất bản thư viện toàn cầu (media, plugin, type), hãy sử dụng lệnh `ui` mà không cần đối số:
98
+
99
+ ```bash
100
+ npm run ui
101
+ ```
102
+
103
+
104
+
@@ -0,0 +1,72 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/# UI/# Project Setup'/>
4
+
5
+ # Project Setup
6
+
7
+ Before you start designing components, you need to prepare the work environment and configure the project files. The system requires key ecosystem packages and specific builder settings.
8
+
9
+ ## 1. Installing Dependencies
10
+
11
+ Install the full set of necessary `@dxtmisha` packages using your package manager:
12
+
13
+ ```bash
14
+ npm install @dxtmisha/configuration @dxtmisha/constructor @dxtmisha/functional @dxtmisha/functional-basic @dxtmisha/media @dxtmisha/styles @dxtmisha/scripts @dxtmisha/test @dxtmisha/wiki
15
+ ```
16
+
17
+ ## 2. Project Configuration (design.config.json)
18
+
19
+ Create a `design.config.json` file in the root directory of your project. This file defines global parameters for your design system, such as project name and documentation language.
20
+
21
+ ```json
22
+ {
23
+ "project": "Ui",
24
+ "name": "my-design",
25
+ "wikiLanguage": "en"
26
+ }
27
+ ```
28
+
29
+ *Note: You can use the `"extends"` property to inherit configuration from other packages.*
30
+
31
+ ## 3. Configuring Vite (vite.config.ts)
32
+
33
+ For correct building, it is recommended to use the pre-defined `viteComponents` object from the `@dxtmisha/configuration` package. It contains all necessary plugins and settings for working with components and documentation.
34
+
35
+ ```typescript
36
+ import { viteComponents } from '@dxtmisha/configuration/viteComponents'
37
+
38
+ // https://vite.dev/config/
39
+ export default viteComponents
40
+ ```
41
+
42
+ ## 4. Configuring TypeScript (tsconfig.app.json)
43
+
44
+ Add MDX file support to your TypeScript configuration. To do this, add `@types/mdx` to the `types` array in the `compilerOptions` section.
45
+
46
+ ```json
47
+ {
48
+ "compilerOptions": {
49
+ "types": [
50
+ "@types/mdx"
51
+ ]
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## 5. Adding Run Commands (package.json)
57
+
58
+ Add the following scripts to your `package.json` to automate code generation, documentation, and typing processes:
59
+
60
+ ```json
61
+ {
62
+ "scripts": {
63
+ "ui": "dxt-ui",
64
+ "wiki-storm": "dxt-wiki-storm",
65
+ "types": "dxt-types"
66
+ }
67
+ }
68
+ ```
69
+
70
+ - **ui**: Launches the main UI component generation cycle.
71
+ - **wiki-storm**: Generates and updates files for Wiki/Storybook.
72
+ - **types**: Updates data types based on the current configuration.
@@ -0,0 +1,72 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/# UI/# Подготовка проекта'/>
4
+
5
+ # Подготовка проекта
6
+
7
+ Перед началом проектирования компонентов необходимо подготовить рабочую среду и настроить конфигурационные файлы. Система требует наличия ключевых пакетов экосистемы и специфических настроек сборщика.
8
+
9
+ ## 1. Установка зависимостей
10
+
11
+ Установите полный набор необходимых пакетов `@dxtmisha` с помощью пакетного менеджера:
12
+
13
+ ```bash
14
+ npm install @dxtmisha/configuration @dxtmisha/constructor @dxtmisha/functional @dxtmisha/functional-basic @dxtmisha/media @dxtmisha/styles @dxtmisha/scripts @dxtmisha/test @dxtmisha/wiki
15
+ ```
16
+
17
+ ## 2. Конфигурация проекта (design.config.json)
18
+
19
+ Создайте файл `design.config.json` в корневом каталоге проекта. Этот файл определяет глобальные параметры вашей дизайн-системы, такие как название проекта и язык документации.
20
+
21
+ ```json
22
+ {
23
+ "project": "Ui",
24
+ "name": "my-design",
25
+ "wikiLanguage": "ru"
26
+ }
27
+ ```
28
+
29
+ *Примечание: Вы можете использовать свойство `"extends"` для наследования конфигурации от других пакетов.*
30
+
31
+ ## 3. Настройка Vite (vite.config.ts)
32
+
33
+ Для корректной сборки рекомендуется использовать предустановленный объект `viteComponents` из пакета `@dxtmisha/configuration`. Он содержит все необходимые плагины и настройки для работы с компонентами и документацией.
34
+
35
+ ```typescript
36
+ import { viteComponents } from '@dxtmisha/configuration/viteComponents'
37
+
38
+ // https://vite.dev/config/
39
+ export default viteComponents
40
+ ```
41
+
42
+ ## 4. Настройка TypeScript (tsconfig.app.json)
43
+
44
+ Добавьте поддержку MDX-файлов в конфигурацию TypeScript. Для этого необходимо добавить `@types/mdx` в массив `types` секции `compilerOptions`.
45
+
46
+ ```json
47
+ {
48
+ "compilerOptions": {
49
+ "types": [
50
+ "@types/mdx"
51
+ ]
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## 5. Добавление команд запуска (package.json)
57
+
58
+ Добавьте следующие скрипты в ваш `package.json` для автоматизации процессов генерации кода, документации и типизации:
59
+
60
+ ```json
61
+ {
62
+ "scripts": {
63
+ "ui": "dxt-ui",
64
+ "wiki-storm": "dxt-wiki-storm",
65
+ "types": "dxt-types"
66
+ }
67
+ }
68
+ ```
69
+
70
+ - **ui**: Запускает основной цикл генерации UI-компонентов.
71
+ - **wiki-storm**: Генерирует и обновляет файлы для Wiki/Storybook.
72
+ - **types**: Обновляет типы данных на основе текущей конфигурации.
@@ -0,0 +1,72 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/# UI/# Chuẩn bị dự án'/>
4
+
5
+ # Chuẩn bị dự án
6
+
7
+ Trước khi bạn bắt đầu thiết kế các thành phần, bạn cần chuẩn bị môi trường làm việc và cấu hình các tệp tin dự án. Hệ thống yêu cầu các gói cốt lõi trong hệ sinh thái và các cài đặt trình biên dịch cụ thể.
8
+
9
+ ## 1. Cài đặt các thành phần phụ thuộc
10
+
11
+ Cài đặt đầy đủ các gói `@dxtmisha` cần thiết bằng cách sử dụng trình quản lý gói của bạn:
12
+
13
+ ```bash
14
+ npm install @dxtmisha/configuration @dxtmisha/constructor @dxtmisha/functional @dxtmisha/functional-basic @dxtmisha/media @dxtmisha/styles @dxtmisha/scripts @dxtmisha/test @dxtmisha/wiki
15
+ ```
16
+
17
+ ## 2. Cấu hình dự án (design.config.json)
18
+
19
+ Tạo một tệp `design.config.json` trong thư mục gốc của dự án. Tệp này xác định các tham số toàn cầu cho hệ thống thiết kế của bạn, như tên dự án và ngôn ngữ tài liệu.
20
+
21
+ ```json
22
+ {
23
+ "project": "Ui",
24
+ "name": "my-design",
25
+ "wikiLanguage": "vi"
26
+ }
27
+ ```
28
+
29
+ *Lưu ý: Bạn có thể sử dụng thuộc tính `"extends"` để kế thừa cấu hình từ các gói khác.*
30
+
31
+ ## 3. Cấu hình Vite (vite.config.ts)
32
+
33
+ Để xây dựng đúng cách, khuyến nghị sử dụng đối tượng `viteComponents` đã được định nghĩa sẵn từ gói `@dxtmisha/configuration`. Nó chứa tất cả các plugin và cài đặt cần thiết để làm việc với các thành phần và tài liệu.
34
+
35
+ ```typescript
36
+ import { viteComponents } from '@dxtmisha/configuration/viteComponents'
37
+
38
+ // https://vite.dev/config/
39
+ export default viteComponents
40
+ ```
41
+
42
+ ## 4. Cấu hình TypeScript (tsconfig.app.json)
43
+
44
+ Thêm hỗ trợ loại tệp MDX vào cấu hình TypeScript của bạn. Để thực hiện việc này, hãy thêm `@types/mdx` vào mảng `types` trong phần `compilerOptions`.
45
+
46
+ ```json
47
+ {
48
+ "compilerOptions": {
49
+ "types": [
50
+ "@types/mdx"
51
+ ]
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## 5. Thêm các lệnh thực thi (package.json)
57
+
58
+ Thêm các mã lệnh sau vào tệp `package.json` của bạn để tự động hóa quá trình tạo mã, tài liệu và định kiểu:
59
+
60
+ ```json
61
+ {
62
+ "scripts": {
63
+ "ui": "dxt-ui",
64
+ "wiki-storm": "dxt-wiki-storm",
65
+ "types": "dxt-types"
66
+ }
67
+ }
68
+ ```
69
+
70
+ - **ui**: Khởi chạy chu kỳ tạo thành phần giao diện người dùng (UI) chính.
71
+ - **wiki-storm**: Tạo và cập nhật các tệp cho Wiki/Storybook.
72
+ - **types**: Cập nhật các kiểu dữ liệu dựa trên cấu hình hiện tại.
@@ -0,0 +1,114 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/# UI/# Wiki Data Configuration'/>
4
+
5
+ # Wiki Data Configuration
6
+
7
+ To manage demo data and Storybook arguments within a specific project (e.g., `d1`), the `src/wiki/wiki.ts` file is used. This file allows you to supplement or override global Wiki settings defined in the main `@dxtmisha/wiki` package.
8
+
9
+ ### Why is this needed?
10
+ The `wiki.ts` file serves as the central configuration point for:
11
+ - Overriding global default values for Storybook arguments (e.g., button text or icons).
12
+ - Configuring selection lists (options) for project-specific resources.
13
+ - Adding unique demo data not included in the base library.
14
+
15
+ ### How to work with the file
16
+ In each component package (e.g., `@dxtmisha/d1`), the `src/wiki/wiki.ts` file exports an object of type `StorybookArgsToList`. This object imports the base `wiki` data items and modifies them as needed.
17
+
18
+ ```typescript
19
+ import { StorybookControl, StorybookCategory, type StorybookArgsToList } from '@dxtmisha/wiki'
20
+ import { wiki } from '@dxtmisha/wiki/media'
21
+
22
+ export const wikiD1: StorybookArgsToList = {
23
+ // 1. Inheritance: Overriding existing argument 'image.value'
24
+ 'image.value': {
25
+ ...wiki['image.value'],
26
+ options: {
27
+ ...wiki['image.value']?.options,
28
+ value: 'mail-01'
29
+ }
30
+ },
31
+
32
+ // 2. New Parameter: Creating a completely new property
33
+ 'my.new.parameter': {
34
+ type: StorybookControl.text,
35
+ options: {
36
+ category: StorybookCategory.technical,
37
+ description: 'Description of a completely new parameter not in the base',
38
+ value: 'Default Value'
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+
45
+
46
+ ## Naming Conventions
47
+
48
+ The choice of key name in the `wiki` object determines the scope of the settings:
49
+
50
+ #### Global Properties
51
+ If the key consists only of the property name (e.g., `value`, `size`, `text`), the settings are considered **global**. They are automatically applied to all components in the system that have that property. This is useful for defining uniform descriptions or control types for the entire library.
52
+
53
+ #### Specific Properties
54
+ If the key contains a dot, it is interpreted as `[ComponentName].[PropertyName]` (e.g., `button.size`, `input.value`).
55
+ - Settings are applied **only to the specified component**.
56
+ - These values take precedence over global settings.
57
+ - Allows defining unique behavior or default values for a specific element without affecting others.
58
+
59
+ ## Data Type Structure
60
+
61
+ To correctly configure the `wiki.ts` file, it is important to understand the structure of the types used. Below is a detailed description of the main `StorybookArgsToList` type and its components.
62
+
63
+ ### `StorybookArgsToList`
64
+
65
+ This is a record type (`Record`) used for argument configuration.
66
+
67
+ - **Key**: Argument name (string).
68
+ - **Value**: An object of type `StorybookArgsToItem`.
69
+
70
+ ---
71
+
72
+ ### `StorybookArgsToItem`
73
+
74
+ Describes the configuration of a specific Storybook control.
75
+
76
+ - `type: StorybookControl` — defines the interface type for value control (text field, checkbox, etc.).
77
+ - `options: StorybookArgsToOptionsByType` — an object for advanced behavior and display settings.
78
+ - `isDemo?: boolean` — indicates that the parameter is for demonstration purposes only.
79
+ - `demo?: any` — demonstration data that will be substituted in examples.
80
+ - `hide?: boolean` — allows hiding the parameter from the argument table if it is purely technical.
81
+
82
+ ---
83
+
84
+ ### `StorybookArgsToOptionsByType`
85
+
86
+ An object for configuring argument metadata and constraints.
87
+
88
+ - `category?: StorybookCategory` — the category name for grouping in the table (use values from the `StorybookCategory` enum).
89
+ - `value?: any` — the current value of the argument.
90
+ - `defaultValue?: string | number | boolean` — the value that will be displayed as "default" in the documentation.
91
+ - `description?: string | Record<string, string>` — description of the property. Can be a string or an object for different languages.
92
+ - `options?: string[] | Record<string, string>` — a list of available options for selection (relevant for `select` or `radio` types).
93
+ - `min?: number` / `max?: number` — minimum and maximum values for numeric controls.
94
+ - `order?: number` — numeric index for sorting arguments in the list.
95
+
96
+ ---
97
+
98
+ ### Enums
99
+
100
+ #### `StorybookControl`
101
+ Defines the visual type of the control:
102
+ - `text` — text field.
103
+ - `boolean` — checkbox (true/false).
104
+ - `number` — numeric input.
105
+ - `select` — dropdown list (requires `options` to be filled).
106
+ - `object` — editor for JSON objects.
107
+
108
+ #### `StorybookCategory`
109
+ Used for grouping properties into logical blocks:
110
+ - `Values` — primary values.
111
+ - `Styles` — appearance parameters.
112
+ - `Technical` — technical and internal settings.
113
+ - `Adaptive` — responsiveness parameters.
114
+ - `Status` — component states.
@@ -0,0 +1,114 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/# UI/# Настройка данных Wiki'/>
4
+
5
+ # Настройка данных Wiki
6
+
7
+ Для управления демонстрационными данными и аргументами Storybook в рамках конкретного проекта (например, `d1`) используется файл `src/wiki/wiki.ts`. Этот файл позволяет дополнять или переопределять глобальные настройки Wiki, заданные в основном пакете `@dxtmisha/wiki`.
8
+
9
+ ### Зачем это нужно?
10
+ Файл `wiki.ts` служит центральной точкой конфигурации для:
11
+ - Переопределения значений по умолчанию для аргументов Storybook (например, текста кнопок или иконок).
12
+ - Настройки списков выбора (options) для специфичных для проекта ресурсов.
13
+ - Добавления уникальных демонстрационных данных, которые не входят в базовую библиотеку.
14
+
15
+ ### Как работать с файлом
16
+ В каждом пакете компонентов (например, в `@dxtmisha/d1`) файл `src/wiki/wiki.ts` экспортирует объект типа `StorybookArgsToList`. Этот объект импортирует базовые данные `wiki` и модифицирует их по необходимости.
17
+
18
+ ```typescript
19
+ import { StorybookControl, StorybookCategory, type StorybookArgsToList } from '@dxtmisha/wiki'
20
+ import { wiki } from '@dxtmisha/wiki/media'
21
+
22
+ export const wikiD1: StorybookArgsToList = {
23
+ // 1. Наследование: Переопределяем существующий аргумент 'image.value'
24
+ 'image.value': {
25
+ ...wiki['image.value'],
26
+ options: {
27
+ ...wiki['image.value']?.options,
28
+ value: 'mail-01'
29
+ }
30
+ },
31
+
32
+ // 2. Новый параметр: Создаем полностью новое свойство
33
+ 'my.new.parameter': {
34
+ type: StorybookControl.text,
35
+ options: {
36
+ category: StorybookCategory.technical,
37
+ description: 'Описание полностью нового параметра, которого нет в базе',
38
+ value: 'Default Value'
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+
45
+
46
+ ## Принципы именования ключей
47
+
48
+ Выбор названия ключа в объекте `wiki` определяет область применения настроек:
49
+
50
+ #### Глобальные свойства
51
+ Если ключ состоит только из названия свойства (например, `value`, `size`, `text`), настройки считаются **глобальными**. Они автоматически применяются ко всем компонентам, в которых присутствует данное свойство. Это удобно для задания единых описаний или типов контролов для всей библиотеки.
52
+
53
+ #### Специфичные свойства
54
+ Если ключ содержит точку, он интерпретируется как `[ComponentName].[PropertyName]` (например, `button.size`, `input.value`).
55
+ - Настройки применяются **только к указанному компоненту**.
56
+ - Эти значения имеют приоритет перед глобальными настройками.
57
+ - Позволяет задать уникальное поведение или значения по умолчанию для конкретного элемента, не затрагивая остальные.
58
+
59
+ ## Структура типов данных
60
+
61
+ Для корректной настройки файла `wiki.ts` важно понимать структуру используемых типов. Ниже приведено детальное описание основного типа `StorybookArgsToList` и его составляющих.
62
+
63
+ ### `StorybookArgsToList`
64
+
65
+ Это объектный тип (`Record`), используемый для конфигурации аргументов.
66
+
67
+ - **Ключ (Key)**: Название аргумента (строка).
68
+ - **Значение (Value)**: Объект типа `StorybookArgsToItem`.
69
+
70
+ ---
71
+
72
+ ### `StorybookArgsToItem`
73
+
74
+ Описывает конфигурацию конкретного элемента управления в Storybook.
75
+
76
+ - `type: StorybookControl` — определяет тип интерфейса для управления значением (текстовое поле, переключатель и т.д.).
77
+ - `options: StorybookArgsToOptionsByType` — объект расширенных настроек поведения и отображения.
78
+ - `isDemo?: boolean` — указывает, что параметр предназначен только для демонстрации.
79
+ - `demo?: any` — демонстрационные данные, которые будут подставлены в примеры.
80
+ - `hide?: boolean` — позволяет скрыть параметр из таблицы аргументов, если он является чисто техническим.
81
+
82
+ ---
83
+
84
+ ### `StorybookArgsToOptionsByType`
85
+
86
+ Объект для настройки метаданных и ограничений аргумента.
87
+
88
+ - `category?: StorybookCategory` — название категории для группировки в таблице (используйте значения из перечисления `StorybookCategory`).
89
+ - `value?: any` — текущее значение аргумента.
90
+ - `defaultValue?: string | number | boolean` — значение, которое будет отображаться как "по умолчанию" в документации.
91
+ - `description?: string | Record<string, string>` — описание свойства. Может быть строкой или объектом для разных языков.
92
+ - `options?: string[] | Record<string, string>` — список доступных вариантов для выбора (актуально для типов `select` или `radio`).
93
+ - `min?: number` / `max?: number` — минимальное и максимальное значение для числовых контролов.
94
+ - `order?: number` — числовой индекс для сортировки аргументов в списке.
95
+
96
+ ---
97
+
98
+ ### Перечисления (Enums)
99
+
100
+ #### `StorybookControl`
101
+ Определяет визуальный тип контрола:
102
+ - `text` — текстовое поле.
103
+ - `boolean` — переключатель (true/false).
104
+ - `number` — ввод числа.
105
+ - `select` — выпадающий список (требует заполнения `options`).
106
+ - `object` — редактор JSON-объектов.
107
+
108
+ #### `StorybookCategory`
109
+ Используется для группировки свойств в логические блоки:
110
+ - `Values` — основные значения.
111
+ - `Styles` — параметры внешнего вида.
112
+ - `Technical` — технические и внутренние настройки.
113
+ - `Adaptive` — параметры адаптивности.
114
+ - `Status` — состояния компонента.
@@ -0,0 +1,114 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/# UI/# Cấu hình dữ liệu Wiki'/>
4
+
5
+ # Cấu hình dữ liệu Wiki
6
+
7
+ Để quản lý dữ liệu demo và các đối số Storybook trong một dự án cụ thể (ví dụ: `d1`), tệp `src/wiki/wiki.ts` được sử dụng. Tệp này cho phép bạn bổ sung hoặc ghi đè các cài đặt Wiki toàn cầu được định nghĩa trong gói chính `@dxtmisha/wiki`.
8
+
9
+ ### Tại sao điều này lại cần thiết?
10
+ Tệp `wiki.ts` phục vụ như một điểm cấu hình trung tâm cho:
11
+ - Ghi đè các giá trị mặc định toàn cầu cho các đối số Storybook (ví dụ: văn bản nút hoặc biểu tượng).
12
+ - Cấu hình danh sách lựa chọn (options) cho các tài nguyên cụ thể của dự án.
13
+ - Thêm dữ liệu demo độc nhất không có trong thư viện cơ sở.
14
+
15
+ ### Cách làm việc với tệp
16
+ Trong mỗi gói thành phần (ví dụ: `@dxtmisha/d1`), tệp `src/wiki/wiki.ts` xuất bản một đối tượng kiểu `StorybookArgsToList`. Đối tượng này nhập dữ liệu `wiki` cơ sở và sửa đổi chúng khi cần thiết.
17
+
18
+ ```typescript
19
+ import { StorybookControl, StorybookCategory, type StorybookArgsToList } from '@dxtmisha/wiki'
20
+ import { wiki } from '@dxtmisha/wiki/media'
21
+
22
+ export const wikiD1: StorybookArgsToList = {
23
+ // 1. Kế thừa: Ghi đè đối số hiện có 'image.value'
24
+ 'image.value': {
25
+ ...wiki['image.value'],
26
+ options: {
27
+ ...wiki['image.value']?.options,
28
+ value: 'mail-01'
29
+ }
30
+ },
31
+
32
+ // 2. Tham số mới: Tạo một thuộc tính hoàn toàn mới
33
+ 'my.new.parameter': {
34
+ type: StorybookControl.text,
35
+ options: {
36
+ category: StorybookCategory.technical,
37
+ description: 'Mô tả của một tham số hoàn toàn mới không có trong cơ sở',
38
+ value: 'Giá trị mặc định'
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+
45
+
46
+ ## Nguyên tắc đặt tên khóa
47
+
48
+ Việc lựa chọn tên khóa trong đối tượng `wiki` xác định phạm vi áp dụng của các cài đặt:
49
+
50
+ #### Thuộc tính toàn cầu
51
+ Nếu khóa chỉ bao gồm tên thuộc tính (ví dụ: `value`, `size`, `text`), các cài đặt được coi là **toàn cầu** (global). Chúng được tự động áp dụng cho tất cả các thành phần trong hệ thống có thuộc tính đó. Điều này hữu ích để xác định các mô tả hoặc kiểu điều khiển đồng nhất cho toàn bộ thư viện.
52
+
53
+ #### Thuộc tính cụ thể
54
+ Nếu khóa chứa dấu chấm, nó được hiểu là `[TênThànhPhần].[TênThuộcTính]` (ví dụ: `button.size`, `input.value`).
55
+ - Các cài đặt **chỉ được áp dụng cho thành phần được chỉ định**.
56
+ - Các giá trị này được ưu tiên hơn các cài đặt toàn cầu.
57
+ - Cho phép xác định hành vi hoặc giá trị mặc định duy nhất cho một phần tử cụ thể mà không ảnh hưởng đến các phần tử khác.
58
+
59
+ ## Cấu trúc kiểu dữ liệu
60
+
61
+ Để cấu hình chính xác tệp `wiki.ts`, điều quan trọng là phải hiểu cấu trúc của các kiểu dữ liệu được sử dụng. Dưới đây là mô tả chi tiết về kiểu `StorybookArgsToList` chính và các thành phần của nó.
62
+
63
+ ### `StorybookArgsToList`
64
+
65
+ Đây là một kiểu bản ghi (`Record`) được sử dụng để cấu hình các đối số.
66
+
67
+ - **Khóa (Key)**: Tên đối số (chuỗi).
68
+ - **Giá trị (Value)**: Một đối tượng kiểu `StorybookArgsToItem`.
69
+
70
+ ---
71
+
72
+ ### `StorybookArgsToItem`
73
+
74
+ Mô tả cấu hình của một điều khiển Storybook cụ thể.
75
+
76
+ - `type: StorybookControl` — xác định kiểu giao diện để điều khiển giá trị (trường văn bản, hộp kiểm, v.v.).
77
+ - `options: StorybookArgsToOptionsByType` — một đối tượng cho các cài đặt hành vi và hiển thị nâng cao.
78
+ - `isDemo?: boolean` — chỉ ra rằng tham số này chỉ dành cho mục đích demo.
79
+ - `demo?: any` — dữ liệu demo sẽ được thay thế trong các ví dụ.
80
+ - `hide?: boolean` — cho phép ẩn tham số khỏi bảng đối số nếu nó thuần túy mang tính kỹ thuật.
81
+
82
+ ---
83
+
84
+ ### `StorybookArgsToOptionsByType`
85
+
86
+ Một đối tượng để cấu hình siêu dữ liệu và các ràng buộc của đối số.
87
+
88
+ - `category?: StorybookCategory` — tên danh mục để nhóm trong bảng (sử dụng các giá trị từ enum `StorybookCategory`).
89
+ - `value?: any` — giá trị hiện tại của đối số.
90
+ - `defaultValue?: string | number | boolean` — giá trị sẽ được hiển thị là "mặc định" trong tài liệu.
91
+ - `description?: string | Record<string, string>` — mô tả của thuộc tính. Có thể là một chuỗi hoặc một đối tượng cho các ngôn ngữ khác nhau.
92
+ - `options?: string[] | Record<string, string>` — danh sách các tùy chọn có sẵn để lựa chọn (có liên quan đến các kiểu `select` hoặc `radio`).
93
+ - `min?: number` / `max?: number` — giá trị tối thiểu và tối đa cho các điều khiển số.
94
+ - `order?: number` — chỉ số số để sắp xếp các đối số trong danh sách.
95
+
96
+ ---
97
+
98
+ ### Các Enum
99
+
100
+ #### `StorybookControl`
101
+ Xác định kiểu hiển thị của điều khiển:
102
+ - `text` — trường văn bản.
103
+ - `boolean` — hộp kiểm (true/false).
104
+ - `number` — nhập số.
105
+ - `select` — danh sách thả xuống (yêu cầu điền `options`).
106
+ - `object` — trình chỉnh sửa cho các đối tượng JSON.
107
+
108
+ #### `StorybookCategory`
109
+ Được sử dụng để nhóm các thuộc tính vào các khối logic:
110
+ - `Values` — các giá trị chính.
111
+ - `Styles` — các tham số ngoại hình.
112
+ - `Technical` — các cài đặt kỹ thuật và nội bộ.
113
+ - `Adaptive` — các tham số về khả năng đáp ứng.
114
+ - `Status` — các trạng thái của thành phần.