@aithe/aithe-ui 26.3.1 → 26.3.2

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 (171) hide show
  1. package/README.md +8 -5
  2. package/dist/apps/api/i18n/de-DE.d.ts.map +1 -1
  3. package/dist/apps/api/i18n/de-DE.js +1 -0
  4. package/dist/apps/api/i18n/en-US.d.ts.map +1 -1
  5. package/dist/apps/api/i18n/en-US.js +1 -0
  6. package/dist/apps/api/i18n/es-ES.d.ts.map +1 -1
  7. package/dist/apps/api/i18n/es-ES.js +1 -0
  8. package/dist/apps/api/i18n/fr-FR.d.ts.map +1 -1
  9. package/dist/apps/api/i18n/fr-FR.js +1 -0
  10. package/dist/apps/api/i18n/ja-JP.d.ts.map +1 -1
  11. package/dist/apps/api/i18n/ja-JP.js +1 -0
  12. package/dist/apps/api/i18n/ko-KR.d.ts.map +1 -1
  13. package/dist/apps/api/i18n/ko-KR.js +1 -0
  14. package/dist/apps/api/i18n/pt-BR.d.ts.map +1 -1
  15. package/dist/apps/api/i18n/pt-BR.js +1 -0
  16. package/dist/apps/api/i18n/zh-CN.d.ts.map +1 -1
  17. package/dist/apps/api/i18n/zh-CN.js +1 -0
  18. package/dist/apps/api/i18n/zh-HK.d.ts.map +1 -1
  19. package/dist/apps/api/i18n/zh-HK.js +1 -0
  20. package/dist/apps/api/i18n/zh-TW.d.ts.map +1 -1
  21. package/dist/apps/api/i18n/zh-TW.js +1 -0
  22. package/dist/apps/api/pages/docs.d.ts.map +1 -1
  23. package/dist/apps/api/pages/docs.js +2 -0
  24. package/dist/apps/demo/app.d.ts.map +1 -1
  25. package/dist/apps/demo/app.js +2 -0
  26. package/dist/apps/demo/i18n/de-DE.d.ts.map +1 -1
  27. package/dist/apps/demo/i18n/de-DE.js +20 -0
  28. package/dist/apps/demo/i18n/en-US.d.ts.map +1 -1
  29. package/dist/apps/demo/i18n/en-US.js +20 -0
  30. package/dist/apps/demo/i18n/es-ES.d.ts.map +1 -1
  31. package/dist/apps/demo/i18n/es-ES.js +20 -0
  32. package/dist/apps/demo/i18n/fr-FR.d.ts.map +1 -1
  33. package/dist/apps/demo/i18n/fr-FR.js +20 -0
  34. package/dist/apps/demo/i18n/ja-JP.d.ts.map +1 -1
  35. package/dist/apps/demo/i18n/ja-JP.js +20 -0
  36. package/dist/apps/demo/i18n/ko-KR.d.ts.map +1 -1
  37. package/dist/apps/demo/i18n/ko-KR.js +20 -0
  38. package/dist/apps/demo/i18n/pt-BR.d.ts.map +1 -1
  39. package/dist/apps/demo/i18n/pt-BR.js +20 -0
  40. package/dist/apps/demo/i18n/zh-CN.d.ts.map +1 -1
  41. package/dist/apps/demo/i18n/zh-CN.js +20 -0
  42. package/dist/apps/demo/i18n/zh-HK.d.ts.map +1 -1
  43. package/dist/apps/demo/i18n/zh-HK.js +20 -0
  44. package/dist/apps/demo/i18n/zh-TW.d.ts.map +1 -1
  45. package/dist/apps/demo/i18n/zh-TW.js +20 -0
  46. package/dist/apps/demo/pages/autoform.d.ts.map +1 -1
  47. package/dist/apps/demo/pages/autoform.js +10 -0
  48. package/dist/apps/demo/pages/autoview.d.ts +3 -0
  49. package/dist/apps/demo/pages/autoview.d.ts.map +1 -0
  50. package/dist/apps/demo/pages/autoview.js +310 -0
  51. package/dist/apps/demo/pages/form.d.ts.map +1 -1
  52. package/dist/apps/demo/pages/form.js +20 -0
  53. package/dist/components/data/tree-menu.js +1 -1
  54. package/dist/components/display/autoview.d.ts +139 -0
  55. package/dist/components/display/autoview.d.ts.map +1 -0
  56. package/dist/components/display/autoview.js +460 -0
  57. package/dist/components/display/desc.d.ts +4 -0
  58. package/dist/components/display/desc.d.ts.map +1 -1
  59. package/dist/components/display/desc.js +45 -3
  60. package/dist/components/form/autoform-item.d.ts +6 -0
  61. package/dist/components/form/autoform-item.d.ts.map +1 -1
  62. package/dist/components/form/autoform-item.js +34 -4
  63. package/dist/components/form/combobox.d.ts +4 -0
  64. package/dist/components/form/combobox.d.ts.map +1 -1
  65. package/dist/components/form/combobox.js +56 -13
  66. package/dist/components/form/select.d.ts +4 -0
  67. package/dist/components/form/select.d.ts.map +1 -1
  68. package/dist/components/form/select.js +84 -40
  69. package/dist/components/navigation/sub-menu.d.ts.map +1 -1
  70. package/dist/components/navigation/sub-menu.js +0 -1
  71. package/dist/core/autoform/autoview.d.ts +86 -0
  72. package/dist/core/autoform/autoview.d.ts.map +1 -0
  73. package/dist/core/autoform/autoview.js +37 -0
  74. package/dist/core/autoform/index.d.ts +2 -0
  75. package/dist/core/autoform/index.d.ts.map +1 -1
  76. package/dist/core/autoform/index.js +1 -0
  77. package/dist/core/datahub/__tests__/force-options.test.d.ts +8 -0
  78. package/dist/core/datahub/__tests__/force-options.test.d.ts.map +1 -0
  79. package/dist/core/datahub/__tests__/force-options.test.js +161 -0
  80. package/dist/core/datahub/core/api-styles.d.ts.map +1 -1
  81. package/dist/core/datahub/core/api-styles.js +5 -0
  82. package/dist/core/datahub/core/datahub-core.d.ts +50 -0
  83. package/dist/core/datahub/core/datahub-core.d.ts.map +1 -1
  84. package/dist/core/datahub/core/datahub-core.js +160 -81
  85. package/dist/core/datahub/types.d.ts +18 -0
  86. package/dist/core/datahub/types.d.ts.map +1 -1
  87. package/dist/core/markdown/plugins.d.ts +2 -1
  88. package/dist/core/markdown/plugins.d.ts.map +1 -1
  89. package/dist/core/markdown/plugins.js +168 -21
  90. package/dist/core/types.d.ts +2 -0
  91. package/dist/core/types.d.ts.map +1 -1
  92. package/dist/index.d.ts +1 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +1267 -753
  95. package/dist/index.js.map +1 -1
  96. package/dist/index.umd.js +282 -138
  97. package/dist/index.umd.js.map +1 -1
  98. package/dist/styles/i18n/locales/de-DE.d.ts.map +1 -1
  99. package/dist/styles/i18n/locales/de-DE.js +3 -0
  100. package/dist/styles/i18n/locales/en-US.d.ts.map +1 -1
  101. package/dist/styles/i18n/locales/en-US.js +3 -0
  102. package/dist/styles/i18n/locales/es-ES.d.ts.map +1 -1
  103. package/dist/styles/i18n/locales/es-ES.js +3 -0
  104. package/dist/styles/i18n/locales/fr-FR.d.ts.map +1 -1
  105. package/dist/styles/i18n/locales/fr-FR.js +3 -0
  106. package/dist/styles/i18n/locales/ja-JP.d.ts.map +1 -1
  107. package/dist/styles/i18n/locales/ja-JP.js +3 -0
  108. package/dist/styles/i18n/locales/ko-KR.d.ts.map +1 -1
  109. package/dist/styles/i18n/locales/ko-KR.js +3 -0
  110. package/dist/styles/i18n/locales/pt-BR.d.ts.map +1 -1
  111. package/dist/styles/i18n/locales/pt-BR.js +3 -0
  112. package/dist/styles/i18n/locales/zh-CN.d.ts.map +1 -1
  113. package/dist/styles/i18n/locales/zh-CN.js +3 -0
  114. package/dist/styles/i18n/locales/zh-HK.d.ts.map +1 -1
  115. package/dist/styles/i18n/locales/zh-HK.js +3 -0
  116. package/dist/styles/i18n/locales/zh-TW.d.ts.map +1 -1
  117. package/dist/styles/i18n/locales/zh-TW.js +3 -0
  118. package/docs/api/display/autoview.md +277 -0
  119. package/docs/api/display/desc.md +56 -14
  120. package/docs/api/form/autoform-item.md +16 -1
  121. package/docs/api/form/autoform.md +3 -2
  122. package/docs/api/form/combobox.md +27 -7
  123. package/docs/api/form/select.md +30 -8
  124. package/docs/api/summary.md +1 -0
  125. package/docs/autoform.md +1 -32
  126. package/docs/changelog/CHANGELOG.md +76 -1
  127. package/docs/changelog/VERSION_26.3.1.md +5 -5
  128. package/docs/changelog/VERSION_26.3.2.md +852 -0
  129. package/docs/datahub.md +3 -0
  130. package/docs/framework-integration.md +1 -1
  131. package/docs/guide.md +7 -6
  132. package/docs/i18n.md +1 -3
  133. package/docs/issue/26.3.2/issue_26.3.2.1.md +46 -0
  134. package/docs/issue/26.3.2/issue_26.3.2.2.md +82 -0
  135. package/docs/issue/26.3.2/issue_26.3.2.3.md +57 -0
  136. package/docs/issue/26.3.2/issue_26.3.2.4.md +43 -0
  137. package/docs/issue/AGENTS.md +24 -3
  138. package/docs/markdown.md +2 -2
  139. package/docs/quickstart.md +3 -3
  140. package/docs/theming.md +5 -4
  141. package/package.json +1 -1
  142. package/dist/components/navigation/dropdown.d.ts +0 -56
  143. package/dist/components/navigation/dropdown.d.ts.map +0 -1
  144. /package/docs/issue/{issue_26.2.2.1.md → 26.2.2/issue_26.2.2.1.md} +0 -0
  145. /package/docs/issue/{issue_26.2.2.2.md → 26.2.2/issue_26.2.2.2.md} +0 -0
  146. /package/docs/issue/{issue_26.2.2.3.md → 26.2.2/issue_26.2.2.3.md} +0 -0
  147. /package/docs/issue/{issue_26.2.2.4.md → 26.2.2/issue_26.2.2.4.md} +0 -0
  148. /package/docs/issue/{issue_26.2.3.1.md → 26.2.3/issue_26.2.3.1.md} +0 -0
  149. /package/docs/issue/{issue_26.2.3.10.md → 26.2.3/issue_26.2.3.10.md} +0 -0
  150. /package/docs/issue/{issue_26.2.3.11.md → 26.2.3/issue_26.2.3.11.md} +0 -0
  151. /package/docs/issue/{issue_26.2.3.12.md → 26.2.3/issue_26.2.3.12.md} +0 -0
  152. /package/docs/issue/{issue_26.2.3.13.md → 26.2.3/issue_26.2.3.13.md} +0 -0
  153. /package/docs/issue/{issue_26.2.3.14.md → 26.2.3/issue_26.2.3.14.md} +0 -0
  154. /package/docs/issue/{issue_26.2.3.15.md → 26.2.3/issue_26.2.3.15.md} +0 -0
  155. /package/docs/issue/{issue_26.2.3.16.md → 26.2.3/issue_26.2.3.16.md} +0 -0
  156. /package/docs/issue/{issue_26.2.3.2.md → 26.2.3/issue_26.2.3.2.md} +0 -0
  157. /package/docs/issue/{issue_26.2.3.3.md → 26.2.3/issue_26.2.3.3.md} +0 -0
  158. /package/docs/issue/{issue_26.2.3.4.md → 26.2.3/issue_26.2.3.4.md} +0 -0
  159. /package/docs/issue/{issue_26.2.3.5.md → 26.2.3/issue_26.2.3.5.md} +0 -0
  160. /package/docs/issue/{issue_26.2.3.6.md → 26.2.3/issue_26.2.3.6.md} +0 -0
  161. /package/docs/issue/{issue_26.2.3.7.md → 26.2.3/issue_26.2.3.7.md} +0 -0
  162. /package/docs/issue/{issue_26.2.3.8.md → 26.2.3/issue_26.2.3.8.md} +0 -0
  163. /package/docs/issue/{issue_26.2.3.9.md → 26.2.3/issue_26.2.3.9.md} +0 -0
  164. /package/docs/issue/{issue_26.3.1.0.md → 26.3.1/issue_26.3.1.0.md} +0 -0
  165. /package/docs/issue/{issue_26.3.1.1.md → 26.3.1/issue_26.3.1.1.md} +0 -0
  166. /package/docs/issue/{issue_26.3.1.2.md → 26.3.1/issue_26.3.1.2.md} +0 -0
  167. /package/docs/issue/{issue_26.3.1.3.md → 26.3.1/issue_26.3.1.3.md} +0 -0
  168. /package/docs/issue/{issue_26.3.1.4.md → 26.3.1/issue_26.3.1.4.md} +0 -0
  169. /package/docs/issue/{issue_26.3.1.5.md → 26.3.1/issue_26.3.1.5.md} +0 -0
  170. /package/docs/issue/{issue_26.3.1.6.md → 26.3.1/issue_26.3.1.6.md} +0 -0
  171. /package/docs/issue/{issue_26.3.1.7.md → 26.3.1/issue_26.3.1.7.md} +0 -0
@@ -71,6 +71,16 @@ const basicFields = [
71
71
  pattern: String.raw `^[^\s@]+@[^\s@]+\.[^\s@]+$`,
72
72
  message: 'Please enter a valid email',
73
73
  },
74
+ {
75
+ name: 'password',
76
+ type: 'input',
77
+ label: 'Password',
78
+ icon: 'lock',
79
+ required: true,
80
+ placeholder: 'Enter your password',
81
+ inputType: 'password',
82
+ message: 'Password is required',
83
+ },
74
84
  {
75
85
  name: 'bio',
76
86
  type: 'textarea',
@@ -0,0 +1,3 @@
1
+ import type { DemoPage } from '../editor';
2
+ export declare const autoViewPage: DemoPage;
3
+ //# sourceMappingURL=autoview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoview.d.ts","sourceRoot":"","sources":["../../../../src/apps/demo/pages/autoview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAiQ1C,eAAO,MAAM,YAAY,EAAE,QA8E1B,CAAC"}
@@ -0,0 +1,310 @@
1
+ import { t } from '../../../styles/i18n';
2
+ function setupAutoView(fieldsJson, data) {
3
+ return (root) => {
4
+ const view = root.querySelector('aithe-autoview');
5
+ if (view) {
6
+ view.fields = JSON.stringify(fieldsJson);
7
+ view.data = data;
8
+ }
9
+ };
10
+ }
11
+ function formatDisplayCode(fieldsJson, data) {
12
+ return `// fields\n${JSON.stringify(fieldsJson, null, 2)}\n\n// data\n${JSON.stringify(data, null, 2)}`;
13
+ }
14
+ const basicFields = [
15
+ { name: 'username', type: 'input', label: 'Username' },
16
+ { name: 'email', type: 'input', label: 'Email', inputType: 'email' },
17
+ { name: 'bio', type: 'textarea', label: 'Bio', span: 2 },
18
+ ];
19
+ const basicData = {
20
+ username: 'John Doe',
21
+ email: 'john@example.com',
22
+ bio: 'Frontend engineer who loves building design systems and Web Components.',
23
+ };
24
+ const selectionFields = [
25
+ {
26
+ name: 'role',
27
+ type: 'select',
28
+ label: 'Role',
29
+ options: [
30
+ { label: 'Admin', id: 'admin' },
31
+ { label: 'Editor', id: 'editor' },
32
+ { label: 'Viewer', id: 'viewer' },
33
+ ],
34
+ },
35
+ {
36
+ name: 'department',
37
+ type: 'radio',
38
+ label: 'Department',
39
+ options: [
40
+ { label: 'Engineering', id: 'eng' },
41
+ { label: 'Design', id: 'design' },
42
+ { label: 'Marketing', id: 'marketing' },
43
+ ],
44
+ },
45
+ {
46
+ name: 'skills',
47
+ type: 'checkbox',
48
+ label: 'Skills',
49
+ options: [
50
+ { label: 'TypeScript', id: 'ts' },
51
+ { label: 'Python', id: 'py' },
52
+ { label: 'Go', id: 'go' },
53
+ { label: 'Rust', id: 'rs' },
54
+ ],
55
+ },
56
+ { name: 'notifications', type: 'switch', label: 'Notifications' },
57
+ ];
58
+ const selectionData = {
59
+ role: 'editor',
60
+ department: 'design',
61
+ skills: ['ts', 'go'],
62
+ notifications: true,
63
+ };
64
+ const advancedFields = [
65
+ { name: 'priority', type: 'slider', label: 'Priority' },
66
+ { name: 'satisfaction', type: 'rate', label: 'Satisfaction' },
67
+ { name: 'theme', type: 'color-picker', label: 'Brand Color' },
68
+ { name: 'startDate', type: 'date-picker', label: 'Start Date', filter: 'date yyyy-MM-dd' },
69
+ { name: 'deadline', type: 'time-picker', label: 'Deadline' },
70
+ {
71
+ name: 'tags',
72
+ type: 'combobox',
73
+ label: 'Tags',
74
+ options: [
75
+ { label: 'Bug', id: 'bug' },
76
+ { label: 'Feature', id: 'feature' },
77
+ { label: 'Improvement', id: 'improvement' },
78
+ ],
79
+ },
80
+ ];
81
+ const advancedData = {
82
+ priority: '7',
83
+ satisfaction: '4',
84
+ theme: '#4d8dff',
85
+ startDate: '2026-08-31',
86
+ deadline: '18:30',
87
+ tags: 'feature',
88
+ };
89
+ const dependencyFields = [
90
+ {
91
+ name: 'province',
92
+ type: 'select',
93
+ label: 'Province',
94
+ options: [
95
+ { label: 'Beijing', id: 'BJ' },
96
+ { label: 'Shanghai', id: 'SH' },
97
+ { label: 'Guangdong', id: 'GD' },
98
+ ],
99
+ },
100
+ {
101
+ name: 'city',
102
+ type: 'select',
103
+ label: 'City',
104
+ dependencies: ['province'],
105
+ rules: [
106
+ { type: 'show', condition: "province !== ''" },
107
+ {
108
+ type: 'update',
109
+ condition: "province === 'BJ'",
110
+ options: [
111
+ { label: 'Haidian', id: 'hd' },
112
+ { label: 'Chaoyang', id: 'cy' },
113
+ ],
114
+ },
115
+ {
116
+ type: 'update',
117
+ condition: "province === 'SH'",
118
+ options: [
119
+ { label: 'Pudong', id: 'pd' },
120
+ { label: "Jing'an", id: 'ja' },
121
+ ],
122
+ },
123
+ {
124
+ type: 'update',
125
+ condition: "province === 'GD'",
126
+ options: [
127
+ { label: 'Guangzhou', id: 'gz' },
128
+ { label: 'Shenzhen', id: 'sz' },
129
+ ],
130
+ },
131
+ ],
132
+ },
133
+ { name: 'hasCar', type: 'switch', label: 'Has a car?' },
134
+ {
135
+ name: 'carModel',
136
+ type: 'input',
137
+ label: 'Car Model',
138
+ dependencies: ['hasCar'],
139
+ rules: [{ type: 'show', condition: 'hasCar === true' }],
140
+ },
141
+ ];
142
+ const dependencyData = {
143
+ province: 'BJ',
144
+ city: 'hd',
145
+ hasCar: true,
146
+ carModel: 'Tesla Model 3',
147
+ };
148
+ const fullFields = [
149
+ { name: 'fullName', type: 'input', label: 'Full Name' },
150
+ { name: 'email', type: 'input', label: 'Email', inputType: 'email' },
151
+ { name: 'phone', type: 'input', label: 'Phone', inputType: 'tel' },
152
+ {
153
+ name: 'role',
154
+ type: 'select',
155
+ label: 'Role',
156
+ options: [
157
+ { label: 'Developer', id: 'dev' },
158
+ { label: 'Designer', id: 'design' },
159
+ { label: 'Manager', id: 'mgr' },
160
+ ],
161
+ },
162
+ { name: 'experience', type: 'slider', label: 'Years of Experience' },
163
+ { name: 'rating', type: 'rate', label: 'Self Rating' },
164
+ { name: 'theme', type: 'color-picker', label: 'Favorite Color' },
165
+ { name: 'startDate', type: 'date-picker', label: 'Start Date', filter: 'date yyyy-MM-dd' },
166
+ { name: 'remote', type: 'switch', label: 'Remote Work' },
167
+ {
168
+ name: 'skills',
169
+ type: 'checkbox',
170
+ label: 'Skills',
171
+ options: [
172
+ { label: 'Frontend', id: 'fe' },
173
+ { label: 'Backend', id: 'be' },
174
+ { label: 'DevOps', id: 'ops' },
175
+ { label: 'Data', id: 'data' },
176
+ ],
177
+ },
178
+ {
179
+ name: 'team',
180
+ type: 'radio',
181
+ label: 'Team',
182
+ options: [
183
+ { label: 'Alpha', id: 'alpha' },
184
+ { label: 'Beta', id: 'beta' },
185
+ { label: 'Gamma', id: 'gamma' },
186
+ ],
187
+ },
188
+ { name: 'notes', type: 'textarea', label: 'Additional Notes', span: 2 },
189
+ ];
190
+ const fullData = {
191
+ fullName: 'Jane Smith',
192
+ email: 'jane@company.com',
193
+ phone: '+1 555-0123',
194
+ role: 'dev',
195
+ experience: '5',
196
+ rating: '4',
197
+ theme: '#1677ff',
198
+ startDate: '2026-03-15',
199
+ remote: true,
200
+ skills: ['fe', 'be'],
201
+ team: 'beta',
202
+ notes: 'Passionate about building accessible and performant web applications.',
203
+ };
204
+ const emptyFields = [
205
+ { name: 'username', type: 'input', label: 'Username' },
206
+ { name: 'role', type: 'select', label: 'Role', options: [{ label: 'Admin', id: 'admin' }] },
207
+ { name: 'active', type: 'switch', label: 'Active' },
208
+ { name: 'createdAt', type: 'date-picker', label: 'Created At', filter: 'date yyyy-MM-dd' },
209
+ ];
210
+ const emptyData = {
211
+ username: '',
212
+ role: '',
213
+ active: false,
214
+ createdAt: '',
215
+ };
216
+ const borderStyleFields = [
217
+ { name: 'name', type: 'input', label: 'Name' },
218
+ { name: 'department', type: 'input', label: 'Department' },
219
+ { name: 'position', type: 'input', label: 'Position' },
220
+ { name: 'email', type: 'input', label: 'Email', inputType: 'email' },
221
+ { name: 'phone', type: 'input', label: 'Phone', inputType: 'tel' },
222
+ { name: 'location', type: 'input', label: 'Location' },
223
+ ];
224
+ const borderStyleData = {
225
+ name: 'Jane Smith',
226
+ department: 'Engineering',
227
+ position: 'Senior Frontend Engineer',
228
+ email: 'jane@company.com',
229
+ phone: '+1 555-0123',
230
+ location: 'San Francisco, CA',
231
+ };
232
+ export const autoViewPage = {
233
+ key: 'autoview',
234
+ title: () => t('demo.autoView.title'),
235
+ description: () => t('demo.autoView.description'),
236
+ examples: [
237
+ {
238
+ title: () => t('demo.autoView.basic.title'),
239
+ description: () => t('demo.autoView.basic.description'),
240
+ code: '<aithe-autoview column="2" border></aithe-autoview>',
241
+ displayCode: formatDisplayCode(basicFields, basicData),
242
+ setup: setupAutoView(basicFields, basicData),
243
+ previewHeight: '240px',
244
+ },
245
+ {
246
+ title: () => t('demo.autoView.selection.title'),
247
+ description: () => t('demo.autoView.selection.description'),
248
+ code: '<aithe-autoview column="2" border></aithe-autoview>',
249
+ displayCode: formatDisplayCode(selectionFields, selectionData),
250
+ setup: setupAutoView(selectionFields, selectionData),
251
+ previewHeight: '280px',
252
+ },
253
+ {
254
+ title: () => t('demo.autoView.advanced.title'),
255
+ description: () => t('demo.autoView.advanced.description'),
256
+ code: '<aithe-autoview column="2" border></aithe-autoview>',
257
+ displayCode: formatDisplayCode(advancedFields, advancedData),
258
+ setup: setupAutoView(advancedFields, advancedData),
259
+ previewHeight: '320px',
260
+ },
261
+ {
262
+ title: () => t('demo.autoView.dependency.title'),
263
+ description: () => t('demo.autoView.dependency.description'),
264
+ code: '<aithe-autoview column="2" border></aithe-autoview>',
265
+ displayCode: formatDisplayCode(dependencyFields, dependencyData),
266
+ setup: setupAutoView(dependencyFields, dependencyData),
267
+ previewHeight: '280px',
268
+ },
269
+ {
270
+ title: () => t('demo.autoView.full.title'),
271
+ description: () => t('demo.autoView.full.description'),
272
+ code: '<aithe-autoview column="2" border title="Employee Profile"></aithe-autoview>',
273
+ displayCode: formatDisplayCode(fullFields, fullData),
274
+ setup: setupAutoView(fullFields, fullData),
275
+ previewHeight: '520px',
276
+ },
277
+ {
278
+ title: () => t('demo.autoView.empty.title'),
279
+ description: () => t('demo.autoView.empty.description'),
280
+ code: '<aithe-autoview column="2" border></aithe-autoview>',
281
+ displayCode: formatDisplayCode(emptyFields, emptyData),
282
+ setup: setupAutoView(emptyFields, emptyData),
283
+ previewHeight: '200px',
284
+ },
285
+ {
286
+ title: () => t('demo.autoView.borderNone.title'),
287
+ description: () => t('demo.autoView.borderNone.description'),
288
+ code: '<aithe-autoview column="2" border-style="none" label-background="none"></aithe-autoview>',
289
+ displayCode: formatDisplayCode(borderStyleFields, borderStyleData),
290
+ setup: setupAutoView(borderStyleFields, borderStyleData),
291
+ previewHeight: '240px',
292
+ },
293
+ {
294
+ title: () => t('demo.autoView.borderFull.title'),
295
+ description: () => t('demo.autoView.borderFull.description'),
296
+ code: '<aithe-autoview column="2" border-style="full" label-background="filled"></aithe-autoview>',
297
+ displayCode: formatDisplayCode(borderStyleFields, borderStyleData),
298
+ setup: setupAutoView(borderStyleFields, borderStyleData),
299
+ previewHeight: '240px',
300
+ },
301
+ {
302
+ title: () => t('demo.autoView.borderRow.title'),
303
+ description: () => t('demo.autoView.borderRow.description'),
304
+ code: '<aithe-autoview column="2" border-style="row" label-background="none"></aithe-autoview>',
305
+ displayCode: formatDisplayCode(borderStyleFields, borderStyleData),
306
+ setup: setupAutoView(borderStyleFields, borderStyleData),
307
+ previewHeight: '240px',
308
+ },
309
+ ],
310
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../src/apps/demo/pages/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,eAAO,MAAM,QAAQ,EAAE,QAiGtB,CAAC"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../src/apps/demo/pages/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,eAAO,MAAM,QAAQ,EAAE,QAqHtB,CAAC"}
@@ -39,6 +39,26 @@ export const formPage = {
39
39
  options='[{"label":"A/B Test","id":"ab-test","icon":"barChart"},{"label":"Assistant Shell","id":"assistant-shell","icon":"terminal"},{"label":"Retrieval QA","id":"retrieval-qa","icon":"search","intent":"primary"},{"label":"Workflow Editor","id":"workflow-editor","icon":"edit","intent":"warning"}]'
40
40
  ></aithe-combobox>
41
41
  <aithe-switch checked></aithe-switch>
42
+ </div>`,
43
+ },
44
+ {
45
+ title: () => 'Grouped Select & Combobox',
46
+ description: () => 'Options with a `group` field are automatically grouped under a header. 带 group 字段的选项会自动按分组标题展示。',
47
+ code: `<div style="display:grid;gap:16px;max-width:420px;">
48
+ <aithe-select
49
+ title="Region selector"
50
+ icon="globe"
51
+ placeholder="Choose a city"
52
+ clearable
53
+ searchable
54
+ options='[{"label":"上海","id":"sh","group":"华东"},{"label":"杭州","id":"hz","group":"华东"},{"label":"北京","id":"bj","group":"华北"},{"label":"天津","id":"tj","group":"华北"},{"label":"广州","id":"gz","group":"华南"},{"label":"深圳","id":"sz","group":"华南"}]'
55
+ ></aithe-select>
56
+ <aithe-combobox
57
+ title="Preset search"
58
+ icon="search"
59
+ placeholder="Search presets"
60
+ options='[{"label":"A/B Test","id":"ab-test","group":"Analytics","icon":"barChart"},{"label":"Funnel","id":"funnel","group":"Analytics","icon":"filter"},{"label":"Assistant Shell","id":"assistant-shell","group":"Automation","icon":"terminal"},{"label":"Workflow Editor","id":"workflow-editor","group":"Automation","icon":"edit"}]'
61
+ ></aithe-combobox>
42
62
  </div>`,
43
63
  },
44
64
  {
@@ -250,7 +250,6 @@ let AitheTreeMenu = class AitheTreeMenu extends AitheElement {
250
250
 
251
251
  .group-toggle.active {
252
252
  color: var(--aithe-color-text);
253
- background: var(--aithe-color-surface-muted);
254
253
  }
255
254
 
256
255
  .group-toggle:hover:not(:disabled) {
@@ -287,6 +286,7 @@ let AitheTreeMenu = class AitheTreeMenu extends AitheElement {
287
286
  display: grid;
288
287
  gap: var(--aithe-space-2);
289
288
  padding-left: var(--aithe-space-4);
289
+ padding-top: var(--aithe-space-2);
290
290
  }
291
291
 
292
292
  .horizontal .children {
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @file JSON-driven read-only auto view / JSON 驱动的只读自动视图
3
+ * @description Renders a read-only detail view from a FormFieldConfig JSON array and a data object.
4
+ * Built as a thin adapter on top of <aithe-desc>: parses the field config, resolves
5
+ * dependency-based visibility, transforms values per control type, and injects
6
+ * type-aware read-only content into <aithe-desc-item> slots.
7
+ * 基于 <aithe-desc> 的轻量适配器:解析字段配置,解析依赖联动显隐,
8
+ * 按控件类型转换值,将类型感知的只读内容注入 <aithe-desc-item> 的 slot。
9
+ */
10
+ import { type TemplateResult } from 'lit';
11
+ import { AitheElement } from '../../core/aithe-element';
12
+ import './desc.js';
13
+ import './label.js';
14
+ import '../basic/tag.js';
15
+ /**
16
+ * JSON-driven read-only detail view, the display-only counterpart of <aithe-autoform>.
17
+ * JSON 驱动的只读详情视图,<aithe-autoform> 的只读镜像。
18
+ *
19
+ * @description Shares the same FormFieldConfig model as autoform, rendering field values
20
+ * as a structured description list. Supports dependency-based show/hide rules,
21
+ * per-type read-only renderers (switch→badge, select→label lookup, etc.),
22
+ * and custom renderers via ViewRegistry.
23
+ * 与 autoform 共用 FormFieldConfig 模型,将字段值渲染为结构化描述列表。
24
+ * 支持依赖联动显隐、按类型的只读渲染器(switch→徽章、select→label 反查等),
25
+ * 以及通过 ViewRegistry 注册的自定义渲染器。
26
+ *
27
+ * @slot title - Custom title content (passed through to desc). 自定义标题内容(透传给 desc)。
28
+ * @slot extra - Extra action content in the header (passed through to desc). 头部额外操作内容(透传给 desc)。
29
+ *
30
+ * @fires aithe-view-ready - Emitted after initial render with current visible values. 初始渲染完成后触发,携带当前可见字段值。
31
+ *
32
+ * @example
33
+ * ```html
34
+ * <aithe-autoview
35
+ * fields='[
36
+ * {"name":"username","type":"input","label":"用户名"},
37
+ * {"name":"role","type":"select","label":"角色",
38
+ * "options":[{"label":"管理员","id":"admin"}]},
39
+ * {"name":"active","type":"switch","label":"状态"}
40
+ * ]'
41
+ * .data=${{username:"张三",role:"admin",active:true}}
42
+ * column="2"
43
+ * border
44
+ * ></aithe-autoview>
45
+ * ```
46
+ */
47
+ export declare class AitheAutoView extends AitheElement {
48
+ /**
49
+ * JSON string of field configuration array. Same model as autoform's `fields`.
50
+ * 字段配置数组的 JSON 字符串,与 autoform 的 `fields` 模型一致。
51
+ */
52
+ fields: string;
53
+ /**
54
+ * Display data object. Values are keyed by field name.
55
+ * Supports passing an object directly or a JSON string.
56
+ * 展示数据对象,按字段名取值。支持直接传对象或 JSON 字符串。
57
+ */
58
+ data: Record<string, unknown> | string;
59
+ /** Number of columns in the grid layout. Passed to desc. 网格列数,透传给 desc。 */
60
+ column: number;
61
+ /** Whether to show borders. Passed to desc. 是否显示边框,透传给 desc。 */
62
+ border: boolean;
63
+ /** Border style: 'none' / 'full' / 'row'. Passed to desc. 边框样式,透传给 desc。 */
64
+ borderStyle: 'none' | 'full' | 'row';
65
+ /** Label background style: 'filled' / 'none'. Passed to desc. 标签背景样式,透传给 desc。 */
66
+ labelBackground: 'filled' | 'none';
67
+ /** Layout direction. Passed to desc. 布局方向,透传给 desc。 */
68
+ direction: 'horizontal' | 'vertical';
69
+ /** Label cell width. Passed to desc. 标签单元格宽度,透传给 desc。 */
70
+ labelWidth: string;
71
+ /** Size preset. Passed to desc. 尺寸规格,透传给 desc。 */
72
+ size: 'sm' | 'md' | 'lg';
73
+ /** Title text in the header. Passed to desc. 头部标题文本,透传给 desc。 */
74
+ title: string;
75
+ /** Whether to show the title header. When false, the header row is hidden even if title or extra slot is set. Passed to desc. 是否显示标题头。为 false 时隐藏标题行,即使设置了 title 或 extra slot 也不显示,透传给 desc。 */
76
+ showTitle: boolean;
77
+ /** Max visible rows. 0 means no limit. Passed to desc. 最大可见行数,0 表示不限制,透传给 desc。 */
78
+ maxRows: number;
79
+ /** Global empty value placeholder. Falls back to i18n. 全局空值占位文本,回退到 i18n。 */
80
+ emptyText: string;
81
+ static readonly styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
82
+ private get _data();
83
+ private get _emptyText();
84
+ /**
85
+ * Returns the values of all visible fields.
86
+ * 返回所有可见字段的值。
87
+ */
88
+ getValues(): Record<string, unknown>;
89
+ /** Parses the fields JSON string into a typed array with fallback sanitization. 解析 fields JSON 字符串为类型化数组,含容错。 */
90
+ private parseFields;
91
+ /** Normalizes options from JSON string or array. 将 options 从 JSON 字符串或数组统一为数组。 */
92
+ private normalizeOptions;
93
+ /** Normalizes dependency rules, parsing options for 'update' type rules. 规范化依赖规则。 */
94
+ private normalizeRules;
95
+ /**
96
+ * Evaluates show/hide rules to determine field visibility.
97
+ * Only 'show' and 'hide' rule types are honored in read-only mode;
98
+ * disable/enable/clear/update are ignored.
99
+ * 评估 show/hide 规则决定字段可见性。
100
+ * 只读模式下仅生效 show/hide,忽略 disable/enable/clear/update。
101
+ */
102
+ private isVisible;
103
+ /** Resolves the raw string value for a field from data or default. 从 data 或缺省值解析字段的原始字符串值。 */
104
+ private resolveRawValue;
105
+ /** Transforms the raw string value into its typed display value. 将原始字符串值转换为类型化的展示值。 */
106
+ private transformValue;
107
+ /** Renders the type-aware read-only content for a field. 渲染字段的类型感知只读内容。 */
108
+ private renderContent;
109
+ /** Renders one of the built-in read-only views by control type. 按控件类型渲染内置只读视图。 */
110
+ private renderBuiltin;
111
+ /** Renders a filter-formatted text value. 渲染过滤器格式化后的文本值。 */
112
+ private renderFiltered;
113
+ /** Renders the label of a matched option for select/radio. 渲染 select/radio 匹配选项的 label。 */
114
+ private renderOptionLabel;
115
+ /** Renders multiple tags for checkbox values. 渲染 checkbox 多值的标签组。 */
116
+ private renderCheckboxTags;
117
+ /** Renders a yes/no tag for switch. 渲染 switch 的 是/否 标签。 */
118
+ private renderSwitch;
119
+ /** Renders a formatted date value. 渲染格式化日期值。 */
120
+ private renderDate;
121
+ /** Renders a color chip plus hex text. 渲染色块及色值文本。 */
122
+ private renderColor;
123
+ /** Renders a plain text value with empty fallback. 渲染纯文本值,空值回退。 */
124
+ private renderPlain;
125
+ render(): TemplateResult;
126
+ /** Renders a single desc-item with type-aware content. 渲染单个 desc-item 及其类型感知内容。 */
127
+ private renderItem;
128
+ /**
129
+ * Emits `aithe-view-ready` after the first render with the values of all visible fields.
130
+ * 初始渲染完成后发射 `aithe-view-ready`,携带所有可见字段的值。
131
+ */
132
+ firstUpdated(): void;
133
+ }
134
+ declare global {
135
+ interface HTMLElementTagNameMap {
136
+ 'aithe-autoview': AitheAutoView;
137
+ }
138
+ }
139
+ //# sourceMappingURL=autoview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoview.d.ts","sourceRoot":"","sources":["../../../src/components/display/autoview.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C;;;OAGG;IACyB,MAAM,SAAQ;IAE1C;;;;OAIG;IACyB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAM;IAExE,2EAA2E;IAC/C,MAAM,SAAK;IAEvC,gEAAgE;IACnC,MAAM,UAAQ;IAE3C,4EAA4E;IACrB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAU;IAErG,kFAAkF;IACvB,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAY;IAEzG,uDAAuD;IAC3B,SAAS,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEhF,0DAA0D;IACJ,UAAU,SAAW;IAE3E,kDAAkD;IACb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAErE,iEAAiE;IACrC,KAAK,SAAM;IAEvC,gMAAgM;IAC1I,SAAS,UAAQ;IAEvE,mFAAmF;IAChC,OAAO,SAAK;IAE/D,6EAA6E;IACxB,SAAS,SAAM;IAEpE,MAAM,CAAC,QAAQ,CAAC,MAAM,0DA2CpB;IAEF,OAAO,KAAK,KAAK,GAWhB;IAED,OAAO,KAAK,UAAU,GAErB;IAED;;;OAGG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAapC,iHAAiH;IACjH,OAAO,CAAC,WAAW;IAcnB,kFAAkF;IAClF,OAAO,CAAC,gBAAgB;IAaxB,qFAAqF;IACrF,OAAO,CAAC,cAAc;IAWtB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAmBjB,8FAA8F;IAC9F,OAAO,CAAC,eAAe;IAWvB,uFAAuF;IACvF,OAAO,CAAC,cAAc;IAsBtB,2EAA2E;IAC3E,OAAO,CAAC,aAAa;IAgBrB,kFAAkF;IAClF,OAAO,CAAC,aAAa;IAgCrB,4DAA4D;IAC5D,OAAO,CAAC,cAAc;IAMtB,2FAA2F;IAC3F,OAAO,CAAC,iBAAiB;IAKzB,qEAAqE;IACrE,OAAO,CAAC,kBAAkB;IAW1B,2DAA2D;IAC3D,OAAO,CAAC,YAAY;IAOpB,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAMlB,qDAAqD;IACrD,OAAO,CAAC,WAAW;IAQnB,mEAAmE;IACnE,OAAO,CAAC,WAAW;IAMV,MAAM,IAAI,cAAc;IAwBjC,mFAAmF;IACnF,OAAO,CAAC,UAAU;IAgBlB;;;OAGG;IACM,YAAY,IAAI,IAAI;CAG9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,aAAa,CAAC;KACjC;CACF"}