openxiangda 1.0.264 → 2.0.0-alpha.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 (537) hide show
  1. package/README.md +11 -666
  2. package/bin/run.js +11 -0
  3. package/dist/browser/AuthoritativeSelector.d.ts +37 -0
  4. package/dist/browser/AuthoritativeSelector.d.ts.map +1 -0
  5. package/dist/browser/AuthoritativeSelector.js +357 -0
  6. package/dist/browser/AuthoritativeSelector.js.map +1 -0
  7. package/dist/browser/FilePreviewPage.d.ts +2 -0
  8. package/dist/browser/FilePreviewPage.d.ts.map +1 -0
  9. package/dist/browser/FilePreviewPage.js +191 -0
  10. package/dist/browser/FilePreviewPage.js.map +1 -0
  11. package/dist/browser/Shell.d.ts +6 -0
  12. package/dist/browser/Shell.d.ts.map +1 -0
  13. package/dist/browser/Shell.js +198 -0
  14. package/dist/browser/Shell.js.map +1 -0
  15. package/dist/browser/appearance.d.ts +12 -0
  16. package/dist/browser/appearance.d.ts.map +1 -0
  17. package/dist/browser/appearance.js +100 -0
  18. package/dist/browser/appearance.js.map +1 -0
  19. package/dist/browser/application.d.ts +8 -0
  20. package/dist/browser/application.d.ts.map +1 -0
  21. package/dist/browser/application.js +42 -0
  22. package/dist/browser/application.js.map +1 -0
  23. package/dist/browser/components/platform-fields/AddressField.d.ts +12 -0
  24. package/dist/browser/components/platform-fields/AddressField.d.ts.map +1 -0
  25. package/dist/browser/components/platform-fields/AddressField.js +179 -0
  26. package/dist/browser/components/platform-fields/AddressField.js.map +1 -0
  27. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts +9 -0
  28. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -0
  29. package/dist/browser/components/platform-fields/AttachmentFileList.js +164 -0
  30. package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -0
  31. package/dist/browser/components/platform-fields/CascadeField.d.ts +13 -0
  32. package/dist/browser/components/platform-fields/CascadeField.d.ts.map +1 -0
  33. package/dist/browser/components/platform-fields/CascadeField.js +14 -0
  34. package/dist/browser/components/platform-fields/CascadeField.js.map +1 -0
  35. package/dist/browser/components/platform-fields/DateTimeField.d.ts +16 -0
  36. package/dist/browser/components/platform-fields/DateTimeField.d.ts.map +1 -0
  37. package/dist/browser/components/platform-fields/DateTimeField.js +51 -0
  38. package/dist/browser/components/platform-fields/DateTimeField.js.map +1 -0
  39. package/dist/browser/components/platform-fields/JsonField.d.ts +11 -0
  40. package/dist/browser/components/platform-fields/JsonField.d.ts.map +1 -0
  41. package/dist/browser/components/platform-fields/JsonField.js +40 -0
  42. package/dist/browser/components/platform-fields/JsonField.js.map +1 -0
  43. package/dist/browser/components/platform-fields/LocationField.d.ts +11 -0
  44. package/dist/browser/components/platform-fields/LocationField.d.ts.map +1 -0
  45. package/dist/browser/components/platform-fields/LocationField.js +73 -0
  46. package/dist/browser/components/platform-fields/LocationField.js.map +1 -0
  47. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.d.ts +12 -0
  48. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.d.ts.map +1 -0
  49. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.js +269 -0
  50. package/dist/browser/components/platform-fields/PlatformDirectoryPicker.js.map +1 -0
  51. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts +12 -0
  52. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts.map +1 -0
  53. package/dist/browser/components/platform-fields/ResourceReferenceField.js +22 -0
  54. package/dist/browser/components/platform-fields/ResourceReferenceField.js.map +1 -0
  55. package/dist/browser/components/platform-fields/RichTextField.d.ts +14 -0
  56. package/dist/browser/components/platform-fields/RichTextField.d.ts.map +1 -0
  57. package/dist/browser/components/platform-fields/RichTextField.js +214 -0
  58. package/dist/browser/components/platform-fields/RichTextField.js.map +1 -0
  59. package/dist/browser/components/platform-fields/SignatureField.d.ts +15 -0
  60. package/dist/browser/components/platform-fields/SignatureField.d.ts.map +1 -0
  61. package/dist/browser/components/platform-fields/SignatureField.js +179 -0
  62. package/dist/browser/components/platform-fields/SignatureField.js.map +1 -0
  63. package/dist/browser/components/platform-fields/SubtableField.d.ts +18 -0
  64. package/dist/browser/components/platform-fields/SubtableField.d.ts.map +1 -0
  65. package/dist/browser/components/platform-fields/SubtableField.js +236 -0
  66. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -0
  67. package/dist/browser/components/platform-fields/address-value.d.ts +13 -0
  68. package/dist/browser/components/platform-fields/address-value.d.ts.map +1 -0
  69. package/dist/browser/components/platform-fields/address-value.js +70 -0
  70. package/dist/browser/components/platform-fields/address-value.js.map +1 -0
  71. package/dist/browser/components/platform-fields/cascade-value.d.ts +6 -0
  72. package/dist/browser/components/platform-fields/cascade-value.d.ts.map +1 -0
  73. package/dist/browser/components/platform-fields/cascade-value.js +47 -0
  74. package/dist/browser/components/platform-fields/cascade-value.js.map +1 -0
  75. package/dist/browser/components/platform-fields/directory-value.d.ts +7 -0
  76. package/dist/browser/components/platform-fields/directory-value.d.ts.map +1 -0
  77. package/dist/browser/components/platform-fields/directory-value.js +35 -0
  78. package/dist/browser/components/platform-fields/directory-value.js.map +1 -0
  79. package/dist/browser/components/platform-fields/field-form-codec.d.ts +10 -0
  80. package/dist/browser/components/platform-fields/field-form-codec.d.ts.map +1 -0
  81. package/dist/browser/components/platform-fields/field-form-codec.js +82 -0
  82. package/dist/browser/components/platform-fields/field-form-codec.js.map +1 -0
  83. package/dist/browser/components/platform-fields/location-value.d.ts +20 -0
  84. package/dist/browser/components/platform-fields/location-value.d.ts.map +1 -0
  85. package/dist/browser/components/platform-fields/location-value.js +57 -0
  86. package/dist/browser/components/platform-fields/location-value.js.map +1 -0
  87. package/dist/browser/components/platform-fields/resource-query.d.ts +14 -0
  88. package/dist/browser/components/platform-fields/resource-query.d.ts.map +1 -0
  89. package/dist/browser/components/platform-fields/resource-query.js +102 -0
  90. package/dist/browser/components/platform-fields/resource-query.js.map +1 -0
  91. package/dist/browser/components/platform-fields/rich-text-value.d.ts +12 -0
  92. package/dist/browser/components/platform-fields/rich-text-value.d.ts.map +1 -0
  93. package/dist/browser/components/platform-fields/rich-text-value.js +83 -0
  94. package/dist/browser/components/platform-fields/rich-text-value.js.map +1 -0
  95. package/dist/browser/components/platform-fields/subtable-value.d.ts +31 -0
  96. package/dist/browser/components/platform-fields/subtable-value.d.ts.map +1 -0
  97. package/dist/browser/components/platform-fields/subtable-value.js +120 -0
  98. package/dist/browser/components/platform-fields/subtable-value.js.map +1 -0
  99. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts +8 -0
  100. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts.map +1 -0
  101. package/dist/browser/components/resource/GeneratedResourceCrud.js +580 -0
  102. package/dist/browser/components/resource/GeneratedResourceCrud.js.map +1 -0
  103. package/dist/browser/components/resource/ResourceBatchActions.d.ts +25 -0
  104. package/dist/browser/components/resource/ResourceBatchActions.d.ts.map +1 -0
  105. package/dist/browser/components/resource/ResourceBatchActions.js +168 -0
  106. package/dist/browser/components/resource/ResourceBatchActions.js.map +1 -0
  107. package/dist/browser/components/resource/StandardResourcePages.d.ts +57 -0
  108. package/dist/browser/components/resource/StandardResourcePages.d.ts.map +1 -0
  109. package/dist/browser/components/resource/StandardResourcePages.js +89 -0
  110. package/dist/browser/components/resource/StandardResourcePages.js.map +1 -0
  111. package/dist/browser/components/resource/SurfaceFields.d.ts +88 -0
  112. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -0
  113. package/dist/browser/components/resource/SurfaceFields.js +497 -0
  114. package/dist/browser/components/resource/SurfaceFields.js.map +1 -0
  115. package/dist/browser/components/resource/generated-resource-definition.d.ts +19 -0
  116. package/dist/browser/components/resource/generated-resource-definition.d.ts.map +1 -0
  117. package/dist/browser/components/resource/generated-resource-definition.js +2 -0
  118. package/dist/browser/components/resource/generated-resource-definition.js.map +1 -0
  119. package/dist/browser/components/resource/resource-import.d.ts +15 -0
  120. package/dist/browser/components/resource/resource-import.d.ts.map +1 -0
  121. package/dist/browser/components/resource/resource-import.js +197 -0
  122. package/dist/browser/components/resource/resource-import.js.map +1 -0
  123. package/dist/browser/data-provider.d.ts +4 -0
  124. package/dist/browser/data-provider.d.ts.map +1 -0
  125. package/dist/browser/data-provider.js +45 -0
  126. package/dist/browser/data-provider.js.map +1 -0
  127. package/dist/browser/platform-client.d.ts +81 -0
  128. package/dist/browser/platform-client.d.ts.map +1 -0
  129. package/dist/browser/platform-client.js +422 -0
  130. package/dist/browser/platform-client.js.map +1 -0
  131. package/dist/browser/resource-definitions.d.ts +8 -0
  132. package/dist/browser/resource-definitions.d.ts.map +1 -0
  133. package/dist/browser/resource-definitions.js +14 -0
  134. package/dist/browser/resource-definitions.js.map +1 -0
  135. package/dist/browser/runtime-meta.d.ts +22 -0
  136. package/dist/browser/runtime-meta.d.ts.map +1 -0
  137. package/dist/browser/runtime-meta.js +79 -0
  138. package/dist/browser/runtime-meta.js.map +1 -0
  139. package/dist/browser/runtime.d.ts +13 -0
  140. package/dist/browser/runtime.d.ts.map +1 -0
  141. package/dist/browser/runtime.js +47 -0
  142. package/dist/browser/runtime.js.map +1 -0
  143. package/dist/browser/styles.css +1941 -0
  144. package/dist/config.d.ts +2 -0
  145. package/dist/config.d.ts.map +1 -0
  146. package/dist/config.js +2 -0
  147. package/dist/config.js.map +1 -0
  148. package/dist/core.d.ts +6 -0
  149. package/dist/core.d.ts.map +1 -0
  150. package/dist/core.js +4 -0
  151. package/dist/core.js.map +1 -0
  152. package/dist/field-kit.d.ts +22 -0
  153. package/dist/field-kit.d.ts.map +1 -0
  154. package/dist/field-kit.js +22 -0
  155. package/dist/field-kit.js.map +1 -0
  156. package/dist/index.d.ts +2 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +2 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/nest.d.ts +10 -0
  161. package/dist/nest.d.ts.map +1 -0
  162. package/dist/nest.js +9 -0
  163. package/dist/nest.js.map +1 -0
  164. package/dist/react.d.ts +12 -0
  165. package/dist/react.d.ts.map +1 -0
  166. package/dist/react.js +11 -0
  167. package/dist/react.js.map +1 -0
  168. package/dist/testing.d.ts +4 -0
  169. package/dist/testing.d.ts.map +1 -0
  170. package/dist/testing.js +4 -0
  171. package/dist/testing.js.map +1 -0
  172. package/package.json +95 -200
  173. package/skills/manifest.json +10 -0
  174. package/skills/openxiangda-v2/SKILL.md +55 -0
  175. package/skills/openxiangda-v2/references/architecture.md +7 -0
  176. package/skills/openxiangda-v2/references/backend.md +116 -0
  177. package/skills/openxiangda-v2/references/data-authz.md +93 -0
  178. package/skills/openxiangda-v2/references/delivery.md +11 -0
  179. package/skills/openxiangda-v2/references/discovery.md +15 -0
  180. package/skills/openxiangda-v2/references/frontend.md +10 -0
  181. package/skills/openxiangda-v2/references/testing.md +16 -0
  182. package/skills/openxiangda-v2/references/workflow-notification.md +69 -0
  183. package/skills/openxiangda-v2/references/workspace.md +21 -0
  184. package/bin/openxiangda.js +0 -26
  185. package/lib/app-function-invoke.js +0 -28
  186. package/lib/application-environments.js +0 -1134
  187. package/lib/change-baseline.js +0 -1359
  188. package/lib/cli.js +0 -31084
  189. package/lib/config.js +0 -450
  190. package/lib/content-cache.js +0 -97
  191. package/lib/delivery-v2-cli.js +0 -329
  192. package/lib/delivery-v2-executor.js +0 -1703
  193. package/lib/delivery-v2-package.js +0 -1176
  194. package/lib/dependency-capsule.js +0 -246
  195. package/lib/design-gates.js +0 -668
  196. package/lib/design-review.js +0 -220
  197. package/lib/developer-center.js +0 -160
  198. package/lib/form-field-contract.js +0 -79
  199. package/lib/form-schema-loader.js +0 -181
  200. package/lib/git-remote-identity.js +0 -89
  201. package/lib/http.js +0 -196
  202. package/lib/integration-bundle.js +0 -225
  203. package/lib/js-code-build.js +0 -175
  204. package/lib/open-api.js +0 -256
  205. package/lib/policy.js +0 -137
  206. package/lib/publish-context.js +0 -98
  207. package/lib/publish-lease-heartbeat.js +0 -182
  208. package/lib/publish-lease.js +0 -221
  209. package/lib/release-error-classification.js +0 -41
  210. package/lib/release-explain.js +0 -75
  211. package/lib/release-mainline.js +0 -654
  212. package/lib/release-plan.js +0 -550
  213. package/lib/release-telemetry.js +0 -182
  214. package/lib/resource-binding-contract.js +0 -210
  215. package/lib/role-resolution.js +0 -57
  216. package/lib/runtime-lineage.js +0 -326
  217. package/lib/sdd.js +0 -3306
  218. package/lib/skills.js +0 -453
  219. package/lib/source-dependencies.js +0 -921
  220. package/lib/task-status.js +0 -330
  221. package/lib/utils.js +0 -178
  222. package/lib/workspace-bootstrap.js +0 -268
  223. package/lib/workspace-init.js +0 -202
  224. package/lib/worktree-cleanup.js +0 -631
  225. package/lib/worktree-owner.js +0 -354
  226. package/openxiangda-skills/SKILL.md +0 -226
  227. package/openxiangda-skills/references/architecture-design.md +0 -409
  228. package/openxiangda-skills/references/architecture-patterns.md +0 -264
  229. package/openxiangda-skills/references/automation-v3.md +0 -349
  230. package/openxiangda-skills/references/best-practices.md +0 -272
  231. package/openxiangda-skills/references/component-guide.md +0 -287
  232. package/openxiangda-skills/references/connector-resources.md +0 -80
  233. package/openxiangda-skills/references/data-views.md +0 -360
  234. package/openxiangda-skills/references/forms/component-registry.md +0 -90
  235. package/openxiangda-skills/references/forms/form-schema.md +0 -146
  236. package/openxiangda-skills/references/forms/layout-and-rules.md +0 -24
  237. package/openxiangda-skills/references/notifications.md +0 -227
  238. package/openxiangda-skills/references/openxiangda-api.md +0 -971
  239. package/openxiangda-skills/references/pages/app-shell.md +0 -66
  240. package/openxiangda-skills/references/pages/page-sdk.md +0 -401
  241. package/openxiangda-skills/references/pages/publish-flow.md +0 -84
  242. package/openxiangda-skills/references/pages/workspace-structure.md +0 -41
  243. package/openxiangda-skills/references/permission-design-patterns.md +0 -313
  244. package/openxiangda-skills/references/permissions-settings.md +0 -468
  245. package/openxiangda-skills/references/platform-data-model.md +0 -340
  246. package/openxiangda-skills/references/resource-manifest-cheatsheet.md +0 -936
  247. package/openxiangda-skills/references/school-contact-relations.md +0 -224
  248. package/openxiangda-skills/references/style-system.md +0 -218
  249. package/openxiangda-skills/references/troubleshooting.md +0 -271
  250. package/openxiangda-skills/references/workflow-v3.md +0 -441
  251. package/openxiangda-skills/references/workspace-state.md +0 -115
  252. package/openxiangda-skills/skills/openxiangda-app/SKILL.md +0 -118
  253. package/openxiangda-skills/skills/openxiangda-architecture-design/SKILL.md +0 -137
  254. package/openxiangda-skills/skills/openxiangda-core/SKILL.md +0 -222
  255. package/openxiangda-skills/skills/openxiangda-form/SKILL.md +0 -184
  256. package/openxiangda-skills/skills/openxiangda-inspect/SKILL.md +0 -63
  257. package/openxiangda-skills/skills/openxiangda-open-api/SKILL.md +0 -57
  258. package/openxiangda-skills/skills/openxiangda-open-api/agents/openai.yaml +0 -4
  259. package/openxiangda-skills/skills/openxiangda-open-api/references/backend-authentication.md +0 -63
  260. package/openxiangda-skills/skills/openxiangda-open-api/references/dingtalk-api.openapi.json +0 -15653
  261. package/openxiangda-skills/skills/openxiangda-page/SKILL.md +0 -154
  262. package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +0 -209
  263. package/openxiangda-skills/skills/openxiangda-workflow-automation/SKILL.md +0 -201
  264. package/packages/sdk/bin/lowcode-workspace.mjs +0 -4
  265. package/packages/sdk/dist/ProcessPreview-DSUIJi5V.d.mts +0 -1292
  266. package/packages/sdk/dist/ProcessPreview-DSUIJi5V.d.ts +0 -1292
  267. package/packages/sdk/dist/build/index.cjs +0 -1
  268. package/packages/sdk/dist/build/index.d.mts +0 -60
  269. package/packages/sdk/dist/build/index.d.ts +0 -60
  270. package/packages/sdk/dist/build/index.mjs +0 -1
  271. package/packages/sdk/dist/components/index.cjs +0 -148
  272. package/packages/sdk/dist/components/index.d.mts +0 -970
  273. package/packages/sdk/dist/components/index.d.ts +0 -970
  274. package/packages/sdk/dist/components/index.mjs +0 -148
  275. package/packages/sdk/dist/dataManagementApi-Ro9itwm8.d.ts +0 -142
  276. package/packages/sdk/dist/dataManagementApi-p_HOhQnA.d.mts +0 -142
  277. package/packages/sdk/dist/runtime/index.cjs +0 -148
  278. package/packages/sdk/dist/runtime/index.d.mts +0 -171
  279. package/packages/sdk/dist/runtime/index.d.ts +0 -171
  280. package/packages/sdk/dist/runtime/index.mjs +0 -148
  281. package/packages/sdk/dist/runtime/react.cjs +0 -148
  282. package/packages/sdk/dist/runtime/react.d.mts +0 -3202
  283. package/packages/sdk/dist/runtime/react.d.ts +0 -3202
  284. package/packages/sdk/dist/runtime/react.mjs +0 -148
  285. package/packages/sdk/dist/styles/antd-theme.cjs +0 -1
  286. package/packages/sdk/dist/styles/antd-theme.d.mts +0 -6
  287. package/packages/sdk/dist/styles/antd-theme.d.ts +0 -6
  288. package/packages/sdk/dist/styles/antd-theme.mjs +0 -1
  289. package/packages/sdk/dist/styles/tailwind-preset.cjs +0 -1
  290. package/packages/sdk/dist/styles/tailwind-preset.d.mts +0 -74
  291. package/packages/sdk/dist/styles/tailwind-preset.d.ts +0 -74
  292. package/packages/sdk/dist/styles/tailwind-preset.mjs +0 -1
  293. package/packages/sdk/dist/styles/tokens.css +0 -74
  294. package/packages/sdk/dist/workflow/index.cjs +0 -3
  295. package/packages/sdk/dist/workflow/index.d.mts +0 -291
  296. package/packages/sdk/dist/workflow/index.d.ts +0 -291
  297. package/packages/sdk/dist/workflow/index.mjs +0 -3
  298. package/packages/sdk/source/admin-list/AdminList.tsx +0 -1734
  299. package/packages/sdk/source/admin-list/README.md +0 -12
  300. package/packages/sdk/source/admin-list/dataSources.ts +0 -345
  301. package/packages/sdk/source/admin-list/index.ts +0 -42
  302. package/packages/sdk/source/admin-list/preferences.ts +0 -174
  303. package/packages/sdk/source/admin-list/types.ts +0 -273
  304. package/packages/sdk/src/build-source/README.md +0 -9
  305. package/packages/sdk/src/build-source/bin/lowcode-workspace.mjs +0 -7
  306. package/packages/sdk/src/build-source/package.json +0 -34
  307. package/packages/sdk/src/build-source/scripts/build-forms.mjs +0 -1129
  308. package/packages/sdk/src/build-source/scripts/build-pages.mjs +0 -897
  309. package/packages/sdk/src/build-source/scripts/build-workspace.mjs +0 -89
  310. package/packages/sdk/src/build-source/scripts/publish-all.mjs +0 -190
  311. package/packages/sdk/src/build-source/scripts/publish-oss.mjs +0 -144
  312. package/packages/sdk/src/build-source/scripts/register-bundle.mjs +0 -1
  313. package/packages/sdk/src/build-source/scripts/register.mjs +0 -362
  314. package/packages/sdk/src/build-source/scripts/sync-schema.mjs +0 -381
  315. package/packages/sdk/src/build-source/scripts/utils/form-api.mjs +0 -1058
  316. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.mjs +0 -57
  317. package/packages/sdk/src/build-source/scripts/utils/incremental.mjs +0 -348
  318. package/packages/sdk/src/build-source/scripts/utils/load-config.mjs +0 -331
  319. package/packages/sdk/src/build-source/scripts/utils/mime-types.mjs +0 -70
  320. package/packages/sdk/src/build-source/scripts/utils/namespace-css.mjs +0 -77
  321. package/packages/sdk/src/build-source/scripts/utils/oss-client.mjs +0 -128
  322. package/packages/sdk/src/build-source/scripts/utils/pages.mjs +0 -150
  323. package/packages/sdk/src/build-source/scripts/utils/progress.mjs +0 -57
  324. package/packages/sdk/src/build-source/scripts/utils/publish-oss-patterns.mjs +0 -20
  325. package/packages/sdk/src/build-source/scripts/utils/register-payload.mjs +0 -90
  326. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.mjs +0 -44
  327. package/packages/sdk/src/build-source/scripts/utils/schema-transform.mjs +0 -142
  328. package/packages/sdk/src/build-source/scripts/utils/static-assets.mjs +0 -165
  329. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +0 -283
  330. package/packages/sdk/src/build-source/scripts/utils/tailwind-token-warnings.mjs +0 -146
  331. package/packages/sdk/src/build-source/scripts/utils/workspace-style-entry.mjs +0 -29
  332. package/packages/sdk/src/build-source/src/cli.mjs +0 -735
  333. package/policy/openxiangda-policy.json +0 -72
  334. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-form.mdc +0 -24
  335. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-page.mdc +0 -25
  336. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-resources.mdc +0 -32
  337. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda-workflow-automation.mdc +0 -26
  338. package/templates/openxiangda-react-spa/.cursor/rules/openxiangda.mdc +0 -68
  339. package/templates/openxiangda-react-spa/.env.example +0 -4
  340. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-form.md +0 -37
  341. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-page.md +0 -29
  342. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-resources.md +0 -32
  343. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda-workflow-automation.md +0 -34
  344. package/templates/openxiangda-react-spa/.qoder/rules/openxiangda.md +0 -66
  345. package/templates/openxiangda-react-spa/AGENTS.md +0 -192
  346. package/templates/openxiangda-react-spa/DELIVERY.md +0 -43
  347. package/templates/openxiangda-react-spa/app-workspace.config.ts +0 -50
  348. package/templates/openxiangda-react-spa/index.html +0 -12
  349. package/templates/openxiangda-react-spa/package.json +0 -53
  350. package/templates/openxiangda-react-spa/postcss.config.cjs +0 -6
  351. package/templates/openxiangda-react-spa/scripts/build-js-code.mjs +0 -600
  352. package/templates/openxiangda-react-spa/scripts/deploy.mjs +0 -18
  353. package/templates/openxiangda-react-spa/scripts/guard-publish.mjs +0 -21
  354. package/templates/openxiangda-react-spa/src/app/navigation.ts +0 -73
  355. package/templates/openxiangda-react-spa/src/app/router.tsx +0 -146
  356. package/templates/openxiangda-react-spa/src/app/starter-content.ts +0 -144
  357. package/templates/openxiangda-react-spa/src/forms/.gitkeep +0 -1
  358. package/templates/openxiangda-react-spa/src/layouts/AdminShell.tsx +0 -570
  359. package/templates/openxiangda-react-spa/src/main.tsx +0 -21
  360. package/templates/openxiangda-react-spa/src/pages/admin/AdminDashboardPage.tsx +0 -170
  361. package/templates/openxiangda-react-spa/src/pages/admin/LoginLogPage.tsx +0 -425
  362. package/templates/openxiangda-react-spa/src/pages/defaults/DataRoutePage.tsx +0 -36
  363. package/templates/openxiangda-react-spa/src/pages/defaults/FilePreviewRoutePage.tsx +0 -65
  364. package/templates/openxiangda-react-spa/src/pages/defaults/FormRoutePage.tsx +0 -235
  365. package/templates/openxiangda-react-spa/src/pages/public/PublicRegisterPage.tsx +0 -15
  366. package/templates/openxiangda-react-spa/src/pages/states/NotFoundPage.tsx +0 -31
  367. package/templates/openxiangda-react-spa/src/resources/menus/menus.json +0 -22
  368. package/templates/openxiangda-react-spa/src/resources/permissions/page-groups/app-admin.json +0 -8
  369. package/templates/openxiangda-react-spa/src/resources/permissions/page-groups/public-visitor.json +0 -8
  370. package/templates/openxiangda-react-spa/src/resources/public-access/public-register.json +0 -14
  371. package/templates/openxiangda-react-spa/src/resources/roles/roles.json +0 -15
  372. package/templates/openxiangda-react-spa/src/resources/routes/public-register.json +0 -8
  373. package/templates/openxiangda-react-spa/src/runtime/default-page-overrides.tsx +0 -35
  374. package/templates/openxiangda-react-spa/src/runtime/default-routes.ts +0 -16
  375. package/templates/openxiangda-react-spa/src/shared/form-schema.ts +0 -135
  376. package/templates/openxiangda-react-spa/src/shared/mac-admin.tsx +0 -651
  377. package/templates/openxiangda-react-spa/src/shared/ui.tsx +0 -22
  378. package/templates/openxiangda-react-spa/src/styles/index.css +0 -105
  379. package/templates/openxiangda-react-spa/tailwind.config.cjs +0 -37
  380. package/templates/openxiangda-react-spa/tsconfig.app.json +0 -36
  381. package/templates/openxiangda-react-spa/tsconfig.js-code-nodes.json +0 -19
  382. package/templates/openxiangda-react-spa/tsconfig.json +0 -7
  383. package/templates/openxiangda-react-spa/tsconfig.node.json +0 -10
  384. package/templates/openxiangda-react-spa/vite.config.ts +0 -209
  385. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-form.mdc +0 -24
  386. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-page.mdc +0 -21
  387. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-resources.mdc +0 -40
  388. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-workflow-automation.mdc +0 -21
  389. package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda.mdc +0 -81
  390. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-form.md +0 -38
  391. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-page.md +0 -39
  392. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-resources.md +0 -59
  393. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-workflow-automation.md +0 -46
  394. package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda.md +0 -82
  395. package/templates/sy-lowcode-app-workspace/AGENTS.md +0 -158
  396. package/templates/sy-lowcode-app-workspace/DELIVERY.md +0 -43
  397. package/templates/sy-lowcode-app-workspace/app-workspace.config.ts +0 -51
  398. package/templates/sy-lowcode-app-workspace/examples/best-practices/README.md +0 -43
  399. package/templates/sy-lowcode-app-workspace/examples/best-practices/access-governance.md +0 -239
  400. package/templates/sy-lowcode-app-workspace/examples/best-practices/catalog.json +0 -99
  401. package/templates/sy-lowcode-app-workspace/examples/best-practices/decision-guide.md +0 -94
  402. package/templates/sy-lowcode-app-workspace/examples/best-practices/design-style.md +0 -91
  403. package/templates/sy-lowcode-app-workspace/examples/best-practices/module-structure.md +0 -48
  404. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/index.ts +0 -2
  405. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/permissions.test.ts +0 -52
  406. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/permissions.ts +0 -37
  407. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/types.ts +0 -19
  408. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/index.ts +0 -4
  409. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/permissions.test.ts +0 -42
  410. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/permissions.ts +0 -25
  411. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/state-machine.test.ts +0 -63
  412. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/state-machine.ts +0 -73
  413. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/ticket-query.test.ts +0 -34
  414. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/ticket-query.ts +0 -73
  415. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/service-ticket/types.ts +0 -66
  416. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/page.tsx +0 -1
  417. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/schema.ts +0 -109
  418. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/customer-profile/page.tsx +0 -1
  419. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/customer-profile/schema.ts +0 -92
  420. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/service-ticket/page.tsx +0 -1
  421. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/service-ticket/schema.ts +0 -153
  422. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/ticket-action-log/page.tsx +0 -1
  423. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/ticket-action-log/schema.ts +0 -65
  424. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/js-code-nodes/daily_ticket_digest/index.ts +0 -44
  425. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/js-code-nodes/sync_roles_to_platform/index.ts +0 -33
  426. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/App.tsx +0 -8
  427. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/GlassHomeDashboard.tsx +0 -232
  428. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/index.tsx +0 -10
  429. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/page.config.ts +0 -14
  430. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/styles.css +0 -196
  431. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/App.tsx +0 -7
  432. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/WorkbenchPage.tsx +0 -36
  433. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/components/ConfigPanel.tsx +0 -34
  434. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/components/PreviewPanel.tsx +0 -17
  435. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/index.tsx +0 -10
  436. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/page.config.ts +0 -9
  437. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/reducer.ts +0 -29
  438. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/interactive-workbench/styles.css +0 -24
  439. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/App.tsx +0 -8
  440. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/MintAnalyticsDashboard.tsx +0 -279
  441. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/index.tsx +0 -10
  442. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/page.config.ts +0 -14
  443. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/styles.css +0 -163
  444. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/App.tsx +0 -7
  445. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/MobilePortalShell.tsx +0 -31
  446. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/index.tsx +0 -10
  447. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/modules/MobileHome.tsx +0 -13
  448. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/page.config.ts +0 -14
  449. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/routes.ts +0 -13
  450. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mobile-portal-shell/styles.css +0 -11
  451. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/App.tsx +0 -8
  452. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/OpsMonitorDashboard.tsx +0 -306
  453. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/index.tsx +0 -10
  454. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/page.config.ts +0 -14
  455. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/styles.css +0 -248
  456. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/App.tsx +0 -7
  457. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/PcPortalShell.tsx +0 -35
  458. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/components/PortalMetric.tsx +0 -11
  459. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/index.tsx +0 -10
  460. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/modules/HomeModule.tsx +0 -25
  461. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/modules/TicketsModule.tsx +0 -14
  462. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/page.config.ts +0 -14
  463. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/routes.ts +0 -19
  464. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/pc-portal-shell/styles.css +0 -35
  465. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/App.tsx +0 -7
  466. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/TicketOpsPage.tsx +0 -105
  467. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketActionTimeline.tsx +0 -22
  468. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketDetailDrawer.tsx +0 -44
  469. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/components/TicketTableActions.tsx +0 -57
  470. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/index.tsx +0 -10
  471. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/page.config.ts +0 -9
  472. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/service-ticket-ops/styles.css +0 -35
  473. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/App.tsx +0 -8
  474. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/WorkOrderListDrawerPage.tsx +0 -371
  475. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/index.tsx +0 -10
  476. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/page.config.ts +0 -14
  477. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/styles.css +0 -182
  478. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/automations/daily-ticket-digest/automation.json +0 -25
  479. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/automations/daily-ticket-digest/trigger.json +0 -9
  480. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/notifications/daily-ticket-digest.json +0 -24
  481. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/permissions/form-groups/service-ticket-college.json +0 -21
  482. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/permissions/roles.json +0 -17
  483. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/resources/workflows/expense-approval-workflow.json +0 -48
  484. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/ConfirmAction.tsx +0 -22
  485. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/QueryState.tsx +0 -37
  486. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/StatusTag.tsx +0 -20
  487. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/DashboardPrimitives.tsx +0 -832
  488. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/chartOptions.ts +0 -140
  489. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/sampleData.ts +0 -466
  490. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/styles.css +0 -874
  491. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/types.ts +0 -150
  492. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/hooks/useTicketOps.ts +0 -96
  493. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/services/role-governance.ts +0 -48
  494. package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/services/service-ticket.ts +0 -113
  495. package/templates/sy-lowcode-app-workspace/examples/forms/customer/page.tsx +0 -1
  496. package/templates/sy-lowcode-app-workspace/examples/forms/customer/schema.ts +0 -36
  497. package/templates/sy-lowcode-app-workspace/index.html +0 -12
  498. package/templates/sy-lowcode-app-workspace/package.json +0 -58
  499. package/templates/sy-lowcode-app-workspace/postcss.config.cjs +0 -9
  500. package/templates/sy-lowcode-app-workspace/scripts/build-js-code.mjs +0 -600
  501. package/templates/sy-lowcode-app-workspace/scripts/guard-publish.mjs +0 -29
  502. package/templates/sy-lowcode-app-workspace/src/dev/App.tsx +0 -820
  503. package/templates/sy-lowcode-app-workspace/src/forms/.gitkeep +0 -1
  504. package/templates/sy-lowcode-app-workspace/src/forms/README.md +0 -52
  505. package/templates/sy-lowcode-app-workspace/src/index.css +0 -26
  506. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/.gitkeep +0 -1
  507. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/types.d.ts +0 -3
  508. package/templates/sy-lowcode-app-workspace/src/main.tsx +0 -29
  509. package/templates/sy-lowcode-app-workspace/src/pages/.gitkeep +0 -1
  510. package/templates/sy-lowcode-app-workspace/src/runtime/builtin-overrides.tsx +0 -8
  511. package/templates/sy-lowcode-app-workspace/src/shared/form-schema.ts +0 -135
  512. package/templates/sy-lowcode-app-workspace/src/types/app-workspace.types.ts +0 -88
  513. package/templates/sy-lowcode-app-workspace/tailwind.config.cjs +0 -31
  514. package/templates/sy-lowcode-app-workspace/tsconfig.app.json +0 -40
  515. package/templates/sy-lowcode-app-workspace/tsconfig.examples.json +0 -24
  516. package/templates/sy-lowcode-app-workspace/tsconfig.js-code-nodes.json +0 -19
  517. package/templates/sy-lowcode-app-workspace/tsconfig.json +0 -7
  518. package/templates/sy-lowcode-app-workspace/tsconfig.node.json +0 -10
  519. package/templates/sy-lowcode-app-workspace/vite.config.ts +0 -85
  520. package/v2/README.md +0 -35
  521. package/v2/skills/manifest.json +0 -45
  522. package/v2/skills/openxiangda-v1-maintenance/SKILL.md +0 -21
  523. package/v2/skills/openxiangda-v1-maintenance/agents/openai.yaml +0 -4
  524. package/v2/skills/openxiangda-v2/SKILL.md +0 -38
  525. package/v2/skills/openxiangda-v2-architecture/SKILL.md +0 -29
  526. package/v2/skills/openxiangda-v2-architecture/agents/openai.yaml +0 -4
  527. package/v2/skills/openxiangda-v2-backend/SKILL.md +0 -28
  528. package/v2/skills/openxiangda-v2-backend/agents/openai.yaml +0 -4
  529. package/v2/skills/openxiangda-v2-data-authz/SKILL.md +0 -28
  530. package/v2/skills/openxiangda-v2-data-authz/agents/openai.yaml +0 -4
  531. package/v2/skills/openxiangda-v2-delivery/SKILL.md +0 -30
  532. package/v2/skills/openxiangda-v2-delivery/agents/openai.yaml +0 -4
  533. package/v2/skills/openxiangda-v2-frontend/SKILL.md +0 -21
  534. package/v2/skills/openxiangda-v2-frontend/agents/openai.yaml +0 -4
  535. package/v2/skills/openxiangda-v2-workflow-events/SKILL.md +0 -28
  536. package/v2/skills/openxiangda-v2-workflow-events/agents/openai.yaml +0 -4
  537. /package/{v2/skills → skills}/openxiangda-v2/agents/openai.yaml +0 -0
@@ -0,0 +1,1941 @@
1
+ html,
2
+ body,
3
+ #root {
4
+ min-height: 100%;
5
+ margin: 0;
6
+ background: var(--oxa-shell-bg, #f5f5f5);
7
+ }
8
+
9
+ body {
10
+ color: var(--oxa-shell-text, #1f1f1f);
11
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
12
+ "Helvetica Neue", Arial, "Noto Sans", "PingFang SC", "Microsoft YaHei",
13
+ sans-serif;
14
+ }
15
+
16
+ * {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ .oxa-loading,
21
+ .oxa-page-loading {
22
+ display: grid;
23
+ min-height: 60vh;
24
+ place-items: center;
25
+ }
26
+
27
+ .oxa-global-request-loading {
28
+ position: fixed;
29
+ z-index: 1300;
30
+ top: 0;
31
+ right: 0;
32
+ left: 0;
33
+ height: 2px;
34
+ overflow: hidden;
35
+ pointer-events: none;
36
+ }
37
+
38
+ .oxa-global-request-loading span {
39
+ position: absolute;
40
+ width: 38%;
41
+ height: 100%;
42
+ border-radius: 2px;
43
+ background: var(--oxa-shell-primary, #1677ff);
44
+ animation: oxa-request-progress 1.1s ease-in-out infinite;
45
+ box-shadow: 0 0 8px var(--oxa-shell-primary, #1677ff);
46
+ }
47
+
48
+ @keyframes oxa-request-progress {
49
+ from {
50
+ transform: translateX(-120%);
51
+ }
52
+
53
+ to {
54
+ transform: translateX(380%);
55
+ }
56
+ }
57
+
58
+ .oxa-app-layout {
59
+ min-height: 100vh;
60
+ background: var(--oxa-shell-bg, #f5f5f5);
61
+ }
62
+
63
+ .oxa-sider {
64
+ position: sticky !important;
65
+ top: 0;
66
+ z-index: 20;
67
+ height: 100vh;
68
+ border-right: 1px solid var(--oxa-shell-border, #f0f0f0);
69
+ background: var(--oxa-shell-surface, #fff) !important;
70
+ box-shadow: none;
71
+ }
72
+
73
+ .oxa-sider .ant-layout-sider-children {
74
+ display: flex;
75
+ flex-direction: column;
76
+ min-height: 100%;
77
+ }
78
+
79
+ .oxa-brand {
80
+ display: flex;
81
+ min-height: 64px;
82
+ align-items: center;
83
+ gap: 12px;
84
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
85
+ padding: 12px 18px;
86
+ }
87
+
88
+ .oxa-brand-mark {
89
+ position: relative;
90
+ width: 32px;
91
+ min-width: 32px;
92
+ height: 36px;
93
+ }
94
+
95
+ .oxa-brand-mark::before,
96
+ .oxa-brand-mark::after {
97
+ position: absolute;
98
+ bottom: 2px;
99
+ width: 10px;
100
+ height: 34px;
101
+ border-radius: 3px 3px 1px 1px;
102
+ background: var(--oxa-shell-primary, #1677ff);
103
+ content: "";
104
+ transform-origin: bottom;
105
+ }
106
+
107
+ .oxa-brand-mark::before {
108
+ left: 5px;
109
+ transform: rotate(27deg);
110
+ }
111
+
112
+ .oxa-brand-mark::after {
113
+ right: 5px;
114
+ transform: rotate(-27deg);
115
+ }
116
+
117
+ .oxa-brand-mark span {
118
+ position: absolute;
119
+ z-index: 1;
120
+ right: 4px;
121
+ bottom: 3px;
122
+ width: 15px;
123
+ height: 9px;
124
+ background: var(--oxa-shell-surface, #fff);
125
+ transform: skewX(-27deg);
126
+ }
127
+
128
+ .oxa-brand-copy {
129
+ display: grid;
130
+ min-width: 0;
131
+ gap: 5px;
132
+ }
133
+
134
+ .oxa-brand-copy strong {
135
+ overflow: hidden;
136
+ color: var(--oxa-shell-text, #1f1f1f);
137
+ font-size: 16px;
138
+ line-height: 1.2;
139
+ text-overflow: ellipsis;
140
+ white-space: nowrap;
141
+ }
142
+
143
+ .oxa-brand-copy span {
144
+ overflow: hidden;
145
+ color: var(--oxa-shell-text-secondary, #595959);
146
+ font-size: 12px;
147
+ text-overflow: ellipsis;
148
+ white-space: nowrap;
149
+ }
150
+
151
+ .oxa-menu {
152
+ flex: 1;
153
+ overflow-y: auto;
154
+ border-inline-end: 0 !important;
155
+ background: transparent !important;
156
+ padding: 6px 12px 80px;
157
+ }
158
+
159
+ .oxa-menu .ant-menu-submenu-title,
160
+ .oxa-menu .ant-menu-item {
161
+ min-height: 44px;
162
+ margin-inline: 0;
163
+ margin-block: 4px;
164
+ color: var(--oxa-shell-text-secondary, #595959);
165
+ font-weight: 600;
166
+ }
167
+
168
+ .oxa-menu .ant-menu-submenu .ant-menu-item {
169
+ font-weight: 500;
170
+ }
171
+
172
+ .oxa-menu .ant-menu-item-selected {
173
+ color: var(--oxa-shell-primary, #1677ff);
174
+ background: var(--oxa-shell-primary-bg, #e6f4ff) !important;
175
+ }
176
+
177
+ .oxa-sider-footer {
178
+ position: absolute;
179
+ right: 12px;
180
+ bottom: 16px;
181
+ left: 12px;
182
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
183
+ background: var(--oxa-shell-surface, #fff);
184
+ padding-top: 12px;
185
+ }
186
+
187
+ .oxa-sider-footer .ant-btn {
188
+ min-height: 42px;
189
+ justify-content: flex-start;
190
+ color: var(--oxa-shell-text-secondary, #595959);
191
+ font-weight: 600;
192
+ }
193
+
194
+ .oxa-workspace {
195
+ min-width: 0;
196
+ background: var(--oxa-shell-bg, #f5f5f5);
197
+ }
198
+
199
+ .oxa-topbar {
200
+ position: sticky;
201
+ top: 0;
202
+ z-index: 15;
203
+ display: flex;
204
+ height: 52px;
205
+ align-items: center;
206
+ justify-content: space-between;
207
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
208
+ background: var(--oxa-shell-surface, #fff) !important;
209
+ padding: 0 20px !important;
210
+ line-height: normal;
211
+ }
212
+
213
+ .oxa-topbar .ant-breadcrumb {
214
+ color: var(--oxa-shell-text-secondary, #595959);
215
+ font-weight: 500;
216
+ }
217
+
218
+ .oxa-topbar .ant-breadcrumb-link {
219
+ cursor: pointer;
220
+ }
221
+
222
+ .oxa-current-user {
223
+ display: inline-flex;
224
+ min-width: 0;
225
+ height: 36px;
226
+ align-items: center;
227
+ gap: 8px;
228
+ justify-content: flex-end;
229
+ border: 0;
230
+ border-radius: 6px;
231
+ background: transparent;
232
+ padding: 3px 6px;
233
+ color: var(--oxa-shell-text, #1f1f1f);
234
+ cursor: pointer;
235
+ transition: background 0.2s;
236
+ }
237
+
238
+ .oxa-current-user:hover,
239
+ .oxa-current-user:focus-visible {
240
+ background: var(--oxa-shell-hover, rgb(0 0 0 / 6%));
241
+ outline: 0;
242
+ }
243
+
244
+ .oxa-current-user-avatar {
245
+ background: var(--oxa-shell-primary, #1677ff);
246
+ }
247
+
248
+ .oxa-current-user strong {
249
+ max-width: 96px;
250
+ overflow: hidden;
251
+ font-size: 13px;
252
+ font-weight: 600;
253
+ text-overflow: ellipsis;
254
+ white-space: nowrap;
255
+ }
256
+
257
+ .oxa-current-user-chevron {
258
+ color: var(--oxa-shell-text-tertiary, #8c8c8c);
259
+ font-size: 10px;
260
+ }
261
+
262
+ .oxa-user-dropdown {
263
+ width: 292px;
264
+ overflow: hidden;
265
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
266
+ border-radius: 8px;
267
+ background: var(--oxa-shell-elevated, #fff);
268
+ box-shadow: var(--oxa-shell-shadow, 0 1px 6px rgb(0 0 0 / 8%));
269
+ padding-top: 4px;
270
+ }
271
+
272
+ .oxa-user-dropdown-profile {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 12px;
276
+ padding: 14px 16px 10px;
277
+ }
278
+
279
+ .oxa-user-dropdown-profile > div:last-child {
280
+ display: grid;
281
+ min-width: 0;
282
+ flex: 1;
283
+ gap: 2px;
284
+ }
285
+
286
+ .oxa-user-dropdown-profile strong,
287
+ .oxa-user-dropdown-profile span,
288
+ .oxa-user-dropdown-profile small {
289
+ overflow: hidden;
290
+ text-overflow: ellipsis;
291
+ white-space: nowrap;
292
+ }
293
+
294
+ .oxa-user-dropdown-profile span,
295
+ .oxa-user-dropdown-profile small,
296
+ .oxa-user-dropdown-roles > span,
297
+ .oxa-user-dropdown-theme > span {
298
+ color: var(--oxa-shell-text-secondary, #595959);
299
+ font-size: 12px;
300
+ }
301
+
302
+ .oxa-user-dropdown-roles,
303
+ .oxa-user-dropdown-theme {
304
+ display: grid;
305
+ gap: 7px;
306
+ margin: 0 12px;
307
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
308
+ padding: 10px 4px;
309
+ }
310
+
311
+ .oxa-user-dropdown > .ant-dropdown-menu {
312
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
313
+ border-radius: 0;
314
+ box-shadow: none;
315
+ }
316
+
317
+ .oxa-role-switch-select {
318
+ width: 100%;
319
+ }
320
+
321
+ .oxa-role-switch-option {
322
+ display: grid;
323
+ min-width: 0;
324
+ gap: 2px;
325
+ padding: 2px 0;
326
+ }
327
+
328
+ .oxa-role-switch-option strong,
329
+ .oxa-role-switch-option span {
330
+ overflow: hidden;
331
+ text-overflow: ellipsis;
332
+ white-space: nowrap;
333
+ }
334
+
335
+ .oxa-role-switch-option span {
336
+ color: var(--oxa-shell-text-secondary, #595959);
337
+ font-size: 12px;
338
+ }
339
+
340
+ .oxa-role-switch-help {
341
+ margin: 10px 0 0 !important;
342
+ }
343
+
344
+ .oxa-route-history {
345
+ position: sticky;
346
+ z-index: 14;
347
+ top: 52px;
348
+ height: 36px;
349
+ overflow: hidden;
350
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
351
+ background: var(--oxa-shell-surface, #fff);
352
+ padding: 0 12px;
353
+ }
354
+
355
+ .oxa-route-history .ant-tabs,
356
+ .oxa-route-history .ant-tabs-nav {
357
+ height: 35px;
358
+ margin: 0;
359
+ }
360
+
361
+ .oxa-route-history .ant-tabs-content-holder {
362
+ display: none;
363
+ }
364
+
365
+ .oxa-route-history .ant-tabs-tab {
366
+ border: 0 !important;
367
+ border-right: 1px solid var(--oxa-shell-border, #f0f0f0) !important;
368
+ border-radius: 0 !important;
369
+ background: transparent !important;
370
+ padding: 5px 12px !important;
371
+ }
372
+
373
+ .oxa-route-history .ant-tabs-tab-active {
374
+ background: var(--oxa-shell-primary-bg, #e6f4ff) !important;
375
+ }
376
+
377
+ .oxa-mobile-page {
378
+ min-height: 100vh;
379
+ box-sizing: border-box;
380
+ background: var(--oxa-shell-bg, #f5f5f5);
381
+ padding: 16px;
382
+ }
383
+
384
+ .oxa-mobile-header {
385
+ display: grid;
386
+ gap: 6px;
387
+ margin-bottom: 14px;
388
+ }
389
+
390
+ .oxa-mobile-header .ant-typography {
391
+ margin: 0;
392
+ }
393
+
394
+ .oxa-mobile-form {
395
+ margin-top: 14px;
396
+ }
397
+
398
+ .oxa-mobile-field .ant-form-item-control-input-content {
399
+ min-height: 44px;
400
+ }
401
+
402
+ .oxa-mobile-input {
403
+ width: 100%;
404
+ min-height: 42px;
405
+ box-sizing: border-box;
406
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
407
+ border-radius: 8px;
408
+ background: var(--oxa-shell-surface, #fff);
409
+ padding: 9px 11px;
410
+ color: var(--oxa-shell-text, #1f1f1f);
411
+ font: inherit;
412
+ }
413
+
414
+ .oxa-mobile-input:focus {
415
+ border-color: var(--oxa-shell-primary, #1677ff);
416
+ outline: 2px solid
417
+ color-mix(in srgb, var(--oxa-shell-primary, #1677ff) 15%, transparent);
418
+ }
419
+
420
+ .oxa-mobile-filter,
421
+ .oxa-mobile-pagination,
422
+ .oxa-mobile-record-heading,
423
+ .oxa-mobile-record-fields {
424
+ display: grid;
425
+ gap: 10px;
426
+ }
427
+
428
+ .oxa-mobile-filter {
429
+ margin: 14px 0;
430
+ }
431
+
432
+ .oxa-mobile-record-list {
433
+ display: grid;
434
+ gap: 12px;
435
+ margin-top: 14px;
436
+ }
437
+
438
+ .oxa-mobile-record-card {
439
+ border-color: var(--oxa-shell-border, #f0f0f0);
440
+ }
441
+
442
+ .oxa-mobile-record-heading {
443
+ grid-template-columns: minmax(0, 1fr) auto;
444
+ align-items: center;
445
+ }
446
+
447
+ .oxa-mobile-record-heading a {
448
+ overflow: hidden;
449
+ color: var(--oxa-shell-primary, #1677ff);
450
+ font-size: 16px;
451
+ font-weight: 650;
452
+ text-overflow: ellipsis;
453
+ white-space: nowrap;
454
+ }
455
+
456
+ .oxa-mobile-record-fields {
457
+ grid-template-columns: repeat(2, minmax(0, 1fr));
458
+ margin: 12px 0;
459
+ }
460
+
461
+ .oxa-mobile-record-fields > div {
462
+ min-width: 0;
463
+ }
464
+
465
+ .oxa-mobile-pagination {
466
+ grid-template-columns: 1fr auto 1fr;
467
+ align-items: center;
468
+ margin-top: 14px;
469
+ }
470
+
471
+ .oxa-mobile-pagination .ant-btn:last-child {
472
+ justify-self: end;
473
+ }
474
+
475
+ .oxa-content {
476
+ min-width: 0;
477
+ background: var(--oxa-shell-bg, #f5f5f5);
478
+ }
479
+
480
+ .oxa-main {
481
+ width: 100%;
482
+ max-width: 1680px;
483
+ min-height: calc(100vh - 88px);
484
+ margin: 0 auto;
485
+ padding: 20px 24px 48px;
486
+ }
487
+
488
+ .oxa-title {
489
+ margin: 0;
490
+ color: var(--oxa-shell-text, #1f1f1f);
491
+ font-size: 19px;
492
+ }
493
+
494
+ .oxa-muted {
495
+ color: var(--oxa-shell-text-secondary, #595959);
496
+ }
497
+
498
+ .oxa-page-heading {
499
+ display: flex;
500
+ width: 100%;
501
+ align-items: center;
502
+ justify-content: space-between;
503
+ gap: 16px;
504
+ margin-bottom: 18px;
505
+ }
506
+
507
+ .oxa-list-card,
508
+ .oxa-section-card,
509
+ .oxa-detail-hero,
510
+ .oxa-edit-hero {
511
+ border-color: var(--oxa-shell-border, #f0f0f0);
512
+ background: var(--oxa-shell-surface, #fff);
513
+ box-shadow: var(--oxa-shell-shadow, 0 1px 6px rgb(0 0 0 / 8%));
514
+ }
515
+
516
+ .oxa-list-card > .ant-card-body {
517
+ padding: 0;
518
+ }
519
+
520
+ .oxa-list-surface {
521
+ display: grid;
522
+ }
523
+
524
+ .oxa-search-panel {
525
+ display: grid;
526
+ grid-template-columns: minmax(0, 1fr) auto;
527
+ align-items: start;
528
+ gap: 12px;
529
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
530
+ padding: 16px;
531
+ }
532
+
533
+ .oxa-filter-grid {
534
+ display: grid;
535
+ grid-template-columns: repeat(4, minmax(170px, 1fr));
536
+ gap: 12px;
537
+ }
538
+
539
+ .oxa-filter-item > .ant-select,
540
+ .oxa-filter-item > .ant-picker {
541
+ width: 100%;
542
+ }
543
+
544
+ .oxa-filter-item.is-collapsed {
545
+ display: none;
546
+ }
547
+
548
+ .oxa-filter-actions,
549
+ .oxa-list-toolbar,
550
+ .oxa-list-toolbar-primary,
551
+ .oxa-list-toolbar-secondary {
552
+ display: flex;
553
+ align-items: center;
554
+ gap: 8px;
555
+ }
556
+
557
+ .oxa-filter-actions {
558
+ align-items: flex-start;
559
+ }
560
+
561
+ .oxa-list-toolbar {
562
+ min-height: 56px;
563
+ justify-content: space-between;
564
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
565
+ padding: 10px 16px;
566
+ }
567
+
568
+ .oxa-list-toolbar-secondary .ant-btn {
569
+ color: var(--oxa-shell-text-secondary, #595959);
570
+ }
571
+
572
+ .oxa-batch-bar {
573
+ display: flex;
574
+ min-height: 52px;
575
+ align-items: center;
576
+ justify-content: space-between;
577
+ gap: 12px;
578
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
579
+ background: var(--ant-color-primary-bg, #e6f4ff);
580
+ padding: 8px 16px;
581
+ }
582
+
583
+ .oxa-import-errors {
584
+ max-height: 180px;
585
+ margin: 8px 0 0;
586
+ overflow: auto;
587
+ padding-left: 20px;
588
+ }
589
+
590
+ .oxa-list-card .ant-table-wrapper {
591
+ border: 0;
592
+ border-radius: 0;
593
+ overflow: hidden;
594
+ }
595
+
596
+ .oxa-list-card .ant-table-thead > tr > th {
597
+ background: var(--oxa-shell-subtle, #fafafa);
598
+ color: var(--oxa-shell-text, #1f1f1f);
599
+ font-weight: 600;
600
+ }
601
+
602
+ .oxa-list-card .ant-table-pagination {
603
+ margin: 16px !important;
604
+ }
605
+
606
+ .oxa-sections {
607
+ display: grid;
608
+ gap: 16px;
609
+ }
610
+
611
+ .oxa-resource-form {
612
+ display: grid;
613
+ gap: 16px;
614
+ }
615
+
616
+ .oxa-section-card .ant-card-head {
617
+ min-height: 48px;
618
+ padding-inline: 18px;
619
+ }
620
+
621
+ .oxa-section-card .ant-card-body {
622
+ padding: 18px;
623
+ }
624
+
625
+ .oxa-grid {
626
+ display: grid;
627
+ grid-template-columns: repeat(3, minmax(0, 1fr));
628
+ column-gap: 20px;
629
+ }
630
+
631
+ .oxa-field-wide {
632
+ grid-column: 1 / -1;
633
+ }
634
+
635
+ .oxa-actions {
636
+ position: sticky;
637
+ z-index: 5;
638
+ bottom: 0;
639
+ display: flex;
640
+ justify-content: flex-end;
641
+ gap: 10px;
642
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
643
+ background: color-mix(
644
+ in srgb,
645
+ var(--oxa-shell-surface, #fff) 96%,
646
+ transparent
647
+ );
648
+ padding: 14px 0;
649
+ backdrop-filter: blur(8px);
650
+ }
651
+
652
+ .oxa-form-full .oxa-actions {
653
+ margin-top: 4px;
654
+ padding-inline: 18px;
655
+ box-shadow: 0 -3px 12px color-mix(in srgb, var(--oxa-shell-text, #1f1f1f) 4%, transparent);
656
+ }
657
+
658
+ .oxa-authoritative-selector {
659
+ width: 100%;
660
+ }
661
+
662
+ .oxa-selector-option {
663
+ display: flex;
664
+ width: 100%;
665
+ min-height: 40px;
666
+ align-items: center;
667
+ }
668
+
669
+ .oxa-selector-option-copy {
670
+ display: grid;
671
+ min-width: 0;
672
+ gap: 2px;
673
+ }
674
+
675
+ .oxa-selector-option-copy strong,
676
+ .oxa-selector-option-copy small {
677
+ overflow: hidden;
678
+ text-overflow: ellipsis;
679
+ white-space: nowrap;
680
+ }
681
+
682
+ .oxa-selector-option-copy small,
683
+ .oxa-selector-tag small,
684
+ .oxa-resolved-item small {
685
+ color: var(--oxa-shell-text-secondary, #595959);
686
+ font-size: 11px;
687
+ }
688
+
689
+ .oxa-selector-icon {
690
+ display: grid;
691
+ width: 28px;
692
+ height: 28px;
693
+ place-items: center;
694
+ border-radius: 7px;
695
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
696
+ color: var(--oxa-shell-primary, #1677ff);
697
+ font-size: 14px;
698
+ }
699
+
700
+ .oxa-selector-avatar {
701
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
702
+ color: var(--oxa-shell-primary, #1677ff);
703
+ font-size: 12px;
704
+ }
705
+
706
+ .oxa-selector-tag {
707
+ display: inline-flex;
708
+ height: 26px;
709
+ align-items: center;
710
+ gap: 5px;
711
+ border-color: var(--oxa-shell-border, #f0f0f0);
712
+ background: var(--oxa-shell-subtle, #fafafa);
713
+ padding-inline: 4px 7px;
714
+ }
715
+
716
+ .oxa-selector-tag .ant-avatar {
717
+ width: 20px !important;
718
+ min-width: 20px;
719
+ height: 20px !important;
720
+ font-size: 10px;
721
+ line-height: 20px;
722
+ }
723
+
724
+ .oxa-resolved-values {
725
+ display: inline-flex;
726
+ flex-wrap: wrap;
727
+ gap: 8px;
728
+ }
729
+
730
+ .oxa-resolved-item {
731
+ display: inline-flex;
732
+ min-height: 30px;
733
+ align-items: center;
734
+ gap: 7px;
735
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
736
+ border-radius: 7px;
737
+ background: var(--oxa-shell-subtle, #fafafa);
738
+ padding: 4px 8px;
739
+ }
740
+
741
+ .oxa-resolved-item > span:last-child {
742
+ display: grid;
743
+ gap: 1px;
744
+ }
745
+
746
+ .oxa-resolved-resource .oxa-resolved-item {
747
+ border-color: var(--oxa-shell-primary-border, #91caff);
748
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
749
+ color: var(--oxa-shell-primary, #1677ff);
750
+ }
751
+
752
+ .oxa-directory-trigger {
753
+ display: flex;
754
+ min-height: 38px;
755
+ align-items: center;
756
+ gap: 8px;
757
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
758
+ border-radius: 8px;
759
+ background: var(--oxa-shell-surface, #fff);
760
+ color: var(--oxa-shell-text, #1f1f1f);
761
+ padding: 3px 5px 3px 10px;
762
+ cursor: pointer;
763
+ transition: border-color 0.2s, box-shadow 0.2s;
764
+ }
765
+
766
+ .oxa-directory-trigger:hover,
767
+ .oxa-directory-trigger:focus-visible {
768
+ border-color: var(--oxa-shell-primary, #1677ff);
769
+ box-shadow: 0 0 0 2px
770
+ color-mix(in srgb, var(--oxa-shell-primary, #1677ff) 10%, transparent);
771
+ outline: 0;
772
+ }
773
+
774
+ .oxa-directory-trigger.is-disabled {
775
+ border-color: var(--oxa-shell-border-strong, #d9d9d9);
776
+ background: var(--oxa-shell-subtle, #fafafa);
777
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
778
+ cursor: not-allowed;
779
+ }
780
+
781
+ .oxa-directory-trigger-icon {
782
+ color: var(--oxa-shell-primary, #1677ff);
783
+ }
784
+
785
+ .oxa-directory-trigger-values {
786
+ display: flex;
787
+ min-width: 0;
788
+ flex: 1;
789
+ flex-wrap: wrap;
790
+ align-items: center;
791
+ gap: 4px;
792
+ }
793
+
794
+ .oxa-directory-placeholder {
795
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
796
+ }
797
+
798
+ .oxa-directory-panel {
799
+ display: grid;
800
+ gap: 14px;
801
+ }
802
+
803
+ .oxa-directory-main {
804
+ display: grid;
805
+ min-height: 460px;
806
+ grid-template-columns: 220px minmax(280px, 1fr) 240px;
807
+ overflow: hidden;
808
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
809
+ border-radius: 8px;
810
+ background: var(--oxa-shell-surface, #fff);
811
+ }
812
+
813
+ .oxa-directory-tree-pane,
814
+ .oxa-directory-member-pane,
815
+ .oxa-directory-selected-pane {
816
+ min-width: 0;
817
+ padding: 14px;
818
+ }
819
+
820
+ .oxa-directory-tree-pane {
821
+ border-right: 1px solid var(--oxa-shell-border, #f0f0f0);
822
+ background: var(--oxa-shell-subtle, #fafafa);
823
+ }
824
+
825
+ .oxa-directory-member-pane {
826
+ display: grid;
827
+ min-height: 460px;
828
+ grid-template-rows: auto minmax(0, 1fr) auto;
829
+ gap: 10px;
830
+ }
831
+
832
+ .oxa-directory-members {
833
+ max-height: 364px;
834
+ overflow: auto;
835
+ }
836
+
837
+ .oxa-directory-member-row {
838
+ min-height: 58px;
839
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
840
+ padding: 8px 4px;
841
+ }
842
+
843
+ .oxa-directory-results {
844
+ display: grid;
845
+ gap: 6px;
846
+ }
847
+
848
+ .oxa-directory-department-row {
849
+ display: flex;
850
+ min-height: 54px;
851
+ align-items: center;
852
+ gap: 10px;
853
+ border: 1px solid transparent;
854
+ border-radius: 7px;
855
+ padding: 8px;
856
+ cursor: pointer;
857
+ }
858
+
859
+ .oxa-directory-department-row:hover,
860
+ .oxa-directory-department-row:focus-visible {
861
+ border-color: var(--oxa-shell-primary-border, #91caff);
862
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
863
+ outline: 0;
864
+ }
865
+
866
+ .oxa-directory-department-row > span:nth-child(2) {
867
+ display: grid;
868
+ min-width: 0;
869
+ flex: 1;
870
+ gap: 2px;
871
+ }
872
+
873
+ .oxa-directory-department-row small {
874
+ color: var(--oxa-shell-text-secondary, #595959);
875
+ font-size: 11px;
876
+ }
877
+
878
+ .oxa-directory-selected-pane {
879
+ border-left: 1px solid var(--oxa-shell-border, #f0f0f0);
880
+ background: var(--oxa-shell-subtle, #fafafa);
881
+ }
882
+
883
+ .oxa-directory-pane-title,
884
+ .oxa-directory-pagination,
885
+ .oxa-directory-footer {
886
+ display: flex;
887
+ align-items: center;
888
+ justify-content: space-between;
889
+ gap: 10px;
890
+ }
891
+
892
+ .oxa-directory-pane-title {
893
+ min-height: 32px;
894
+ margin-bottom: 10px;
895
+ color: var(--oxa-shell-text, #1f1f1f);
896
+ font-weight: 600;
897
+ }
898
+
899
+ .oxa-directory-member-row {
900
+ display: flex;
901
+ width: 100%;
902
+ align-items: center;
903
+ gap: 10px;
904
+ cursor: pointer;
905
+ }
906
+
907
+ .oxa-directory-member-row > span:last-child,
908
+ .oxa-directory-selected-item > span:nth-child(2) {
909
+ display: grid;
910
+ min-width: 0;
911
+ flex: 1;
912
+ gap: 2px;
913
+ }
914
+
915
+ .oxa-directory-member-row small,
916
+ .oxa-directory-selected-item small {
917
+ overflow: hidden;
918
+ color: var(--oxa-shell-text-secondary, #595959);
919
+ font-size: 11px;
920
+ text-overflow: ellipsis;
921
+ white-space: nowrap;
922
+ }
923
+
924
+ .oxa-directory-selected-list {
925
+ display: grid;
926
+ gap: 8px;
927
+ }
928
+
929
+ .oxa-directory-selected-item {
930
+ display: flex;
931
+ align-items: center;
932
+ gap: 8px;
933
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
934
+ border-radius: 7px;
935
+ background: var(--oxa-shell-surface, #fff);
936
+ padding: 7px;
937
+ }
938
+
939
+ .oxa-department-main {
940
+ grid-template-columns: minmax(300px, 1fr) 240px;
941
+ }
942
+
943
+ .oxa-directory-footer {
944
+ justify-content: flex-end;
945
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
946
+ padding-top: 14px;
947
+ }
948
+
949
+ .oxa-file-field {
950
+ display: grid;
951
+ gap: 10px;
952
+ }
953
+
954
+ .oxa-file-dropzone .ant-upload-drag {
955
+ min-height: 72px;
956
+ border-color: var(--oxa-shell-border-strong, #d9d9d9);
957
+ background: var(--oxa-shell-subtle, #fafafa);
958
+ padding: 12px;
959
+ }
960
+
961
+ .oxa-file-dropzone .ant-upload-drag-container {
962
+ display: grid;
963
+ gap: 5px;
964
+ color: var(--oxa-shell-text-secondary, #595959);
965
+ }
966
+
967
+ .oxa-file-dropzone small {
968
+ color: var(--oxa-shell-text-tertiary, #8c8c8c);
969
+ }
970
+
971
+ .oxa-file-dropzone kbd {
972
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
973
+ border-bottom-width: 2px;
974
+ border-radius: 4px;
975
+ background: var(--oxa-shell-surface, #fff);
976
+ padding: 1px 5px;
977
+ color: var(--oxa-shell-text, #1f1f1f);
978
+ font-family: inherit;
979
+ }
980
+
981
+ .oxa-file-list {
982
+ display: grid;
983
+ gap: 8px;
984
+ }
985
+
986
+ .oxa-file-item,
987
+ .oxa-file-error {
988
+ display: flex;
989
+ min-height: 50px;
990
+ align-items: center;
991
+ gap: 10px;
992
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
993
+ border-radius: 8px;
994
+ background: var(--oxa-shell-surface, #fff);
995
+ padding: 7px 9px;
996
+ }
997
+
998
+ .oxa-file-kind {
999
+ display: grid;
1000
+ width: 32px;
1001
+ height: 32px;
1002
+ place-items: center;
1003
+ border-radius: 7px;
1004
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
1005
+ color: var(--oxa-shell-primary, #1677ff);
1006
+ }
1007
+
1008
+ .oxa-file-thumbnail {
1009
+ display: block;
1010
+ width: 32px;
1011
+ height: 32px;
1012
+ object-fit: cover;
1013
+ }
1014
+
1015
+ .oxa-file-meta {
1016
+ display: grid;
1017
+ min-width: 0;
1018
+ flex: 1;
1019
+ gap: 2px;
1020
+ }
1021
+
1022
+ .oxa-file-name-button {
1023
+ border: 0;
1024
+ background: transparent;
1025
+ padding: 0;
1026
+ color: inherit;
1027
+ font: inherit;
1028
+ text-align: left;
1029
+ cursor: pointer;
1030
+ }
1031
+
1032
+ .oxa-file-name-button:hover strong {
1033
+ color: var(--oxa-shell-primary, #1677ff);
1034
+ }
1035
+
1036
+ .oxa-file-name-button:disabled {
1037
+ cursor: wait;
1038
+ opacity: 0.65;
1039
+ }
1040
+
1041
+ .oxa-file-meta strong {
1042
+ overflow: hidden;
1043
+ text-overflow: ellipsis;
1044
+ white-space: nowrap;
1045
+ }
1046
+
1047
+ .oxa-file-meta small,
1048
+ .oxa-file-empty {
1049
+ color: var(--oxa-shell-text-secondary, #595959);
1050
+ font-size: 12px;
1051
+ }
1052
+
1053
+ .oxa-file-error {
1054
+ border-color: var(--oxa-shell-error-border, #ffccc7);
1055
+ background: var(--oxa-shell-error-bg, #fff2f0);
1056
+ color: var(--oxa-shell-error, #ff4d4f);
1057
+ }
1058
+
1059
+ .oxa-file-error > span {
1060
+ flex: 1;
1061
+ }
1062
+
1063
+ .oxa-file-empty {
1064
+ border: 1px dashed var(--oxa-shell-border-strong, #d9d9d9);
1065
+ border-radius: 8px;
1066
+ padding: 10px;
1067
+ text-align: center;
1068
+ }
1069
+
1070
+ .oxa-location-field {
1071
+ display: grid;
1072
+ gap: 10px;
1073
+ }
1074
+
1075
+ .oxa-location-field .ant-alert {
1076
+ max-width: 520px;
1077
+ }
1078
+
1079
+ .oxa-location-value {
1080
+ display: inline-grid;
1081
+ max-width: 100%;
1082
+ gap: 2px;
1083
+ }
1084
+
1085
+ .oxa-location-value > span {
1086
+ overflow-wrap: anywhere;
1087
+ }
1088
+
1089
+ .oxa-location-value-readonly {
1090
+ min-width: 160px;
1091
+ }
1092
+
1093
+ .oxa-address-field {
1094
+ display: grid;
1095
+ gap: 8px;
1096
+ width: 100%;
1097
+ }
1098
+
1099
+ .oxa-address-field > .ant-cascader,
1100
+ .oxa-address-field > .ant-select {
1101
+ width: 100%;
1102
+ }
1103
+
1104
+ .oxa-address-value {
1105
+ display: inline-flex;
1106
+ flex-direction: column;
1107
+ gap: 2px;
1108
+ }
1109
+
1110
+ .oxa-mobile-address-field {
1111
+ grid-template-columns: minmax(0, 1fr) auto;
1112
+ }
1113
+
1114
+ .oxa-mobile-address-field > .ant-btn:first-child {
1115
+ min-width: 0;
1116
+ overflow: hidden;
1117
+ text-align: left;
1118
+ text-overflow: ellipsis;
1119
+ white-space: nowrap;
1120
+ }
1121
+
1122
+ .oxa-address-mobile-levels {
1123
+ display: grid;
1124
+ gap: 12px;
1125
+ }
1126
+
1127
+ .oxa-address-mobile-levels > .ant-select {
1128
+ width: 100%;
1129
+ }
1130
+
1131
+ .oxa-address-mobile-actions {
1132
+ display: flex;
1133
+ justify-content: flex-end;
1134
+ margin-top: 20px;
1135
+ width: 100%;
1136
+ }
1137
+
1138
+ .oxa-rich-text-field,
1139
+ .oxa-json-field {
1140
+ display: grid;
1141
+ gap: 8px;
1142
+ width: 100%;
1143
+ }
1144
+
1145
+ .oxa-rich-text-toolbar {
1146
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
1147
+ border-bottom: 0;
1148
+ border-radius: 6px 6px 0 0;
1149
+ padding: 6px;
1150
+ }
1151
+
1152
+ .oxa-rich-text-editor {
1153
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
1154
+ border-radius: 0 0 6px 6px;
1155
+ min-height: 160px;
1156
+ overflow-wrap: anywhere;
1157
+ padding: 10px 12px;
1158
+ }
1159
+
1160
+ .oxa-rich-text-editor:focus {
1161
+ border-color: var(--oxa-shell-primary, #1677ff);
1162
+ box-shadow: 0 0 0 2px rgb(5 145 255 / 10%);
1163
+ outline: 0;
1164
+ }
1165
+
1166
+ .oxa-rich-text-value {
1167
+ max-width: 100%;
1168
+ overflow-wrap: anywhere;
1169
+ }
1170
+
1171
+ .oxa-rich-text-value img {
1172
+ height: auto;
1173
+ max-width: 100%;
1174
+ }
1175
+
1176
+ .oxa-mobile-rich-text-field .oxa-rich-text-editor {
1177
+ min-height: 220px;
1178
+ }
1179
+
1180
+ .oxa-json-field textarea,
1181
+ .oxa-json-value {
1182
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1183
+ }
1184
+
1185
+ .oxa-json-value {
1186
+ margin: 0;
1187
+ max-height: 320px;
1188
+ max-width: 100%;
1189
+ overflow: auto;
1190
+ white-space: pre-wrap;
1191
+ word-break: break-word;
1192
+ }
1193
+
1194
+ .oxa-json-valid {
1195
+ color: var(--oxa-shell-success, #389e0d);
1196
+ }
1197
+
1198
+ .oxa-signature-field,
1199
+ .oxa-signature-value,
1200
+ .oxa-signature-pad {
1201
+ display: grid;
1202
+ gap: 10px;
1203
+ width: 100%;
1204
+ }
1205
+
1206
+ .oxa-signature-value {
1207
+ justify-items: start;
1208
+ }
1209
+
1210
+ .oxa-signature-image {
1211
+ max-height: 180px;
1212
+ max-width: min(100%, 520px);
1213
+ object-fit: contain;
1214
+ }
1215
+
1216
+ .oxa-signature-hash {
1217
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1218
+ overflow-wrap: anywhere;
1219
+ }
1220
+
1221
+ .oxa-signature-canvas {
1222
+ background: #fff;
1223
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
1224
+ border-radius: 6px;
1225
+ height: 240px;
1226
+ touch-action: none;
1227
+ user-select: none;
1228
+ width: 100%;
1229
+ }
1230
+
1231
+ .oxa-subtable-field {
1232
+ width: 100%;
1233
+ min-width: 0;
1234
+ }
1235
+
1236
+ .oxa-subtable-toolbar {
1237
+ display: flex;
1238
+ min-height: 32px;
1239
+ align-items: center;
1240
+ justify-content: space-between;
1241
+ margin-bottom: 8px;
1242
+ }
1243
+
1244
+ .oxa-subtable-loading {
1245
+ display: flex;
1246
+ min-height: 88px;
1247
+ align-items: center;
1248
+ justify-content: center;
1249
+ }
1250
+
1251
+ .oxa-mobile-subtable-list {
1252
+ border-top: 1px solid #e5e7eb;
1253
+ }
1254
+
1255
+ .oxa-mobile-subtable-row {
1256
+ padding: 12px 0;
1257
+ border-bottom: 1px solid #e5e7eb;
1258
+ }
1259
+
1260
+ .oxa-mobile-subtable-values {
1261
+ display: grid;
1262
+ gap: 10px;
1263
+ margin-bottom: 8px;
1264
+ }
1265
+
1266
+ .oxa-mobile-subtable-values > div {
1267
+ display: grid;
1268
+ grid-template-columns: minmax(88px, 32%) minmax(0, 1fr);
1269
+ gap: 8px;
1270
+ align-items: start;
1271
+ }
1272
+
1273
+ .oxa-mobile-subtable-editor {
1274
+ display: grid;
1275
+ gap: 4px;
1276
+ }
1277
+
1278
+ .oxa-mobile-number-field {
1279
+ align-items: center;
1280
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
1281
+ border-radius: 6px;
1282
+ display: grid;
1283
+ gap: 8px;
1284
+ grid-template-columns: auto minmax(0, 1fr) auto;
1285
+ min-height: 40px;
1286
+ padding: 0 10px;
1287
+ }
1288
+
1289
+ .oxa-mobile-number-field > input {
1290
+ border: 0;
1291
+ min-width: 0;
1292
+ outline: 0;
1293
+ width: 100%;
1294
+ }
1295
+
1296
+ .oxa-mobile-location-field .ant-space {
1297
+ width: 100%;
1298
+ }
1299
+
1300
+ .oxa-dictionary-drawer .ant-drawer-body {
1301
+ padding: 22px;
1302
+ }
1303
+
1304
+ .oxa-detail-hero,
1305
+ .oxa-edit-hero {
1306
+ margin-bottom: 16px;
1307
+ }
1308
+
1309
+ .oxa-detail-hero .ant-card-body,
1310
+ .oxa-edit-hero .ant-card-body {
1311
+ padding: 18px 20px;
1312
+ }
1313
+
1314
+ .oxa-detail-hero-top,
1315
+ .oxa-detail-hero-main,
1316
+ .oxa-edit-hero-title {
1317
+ display: flex;
1318
+ align-items: center;
1319
+ justify-content: space-between;
1320
+ gap: 16px;
1321
+ }
1322
+
1323
+ .oxa-file-preview-page {
1324
+ min-height: 100vh;
1325
+ background: var(--oxa-shell-bg, #f5f5f5);
1326
+ }
1327
+
1328
+ .oxa-file-preview-toolbar {
1329
+ position: sticky;
1330
+ z-index: 10;
1331
+ top: 0;
1332
+ display: flex;
1333
+ min-height: 66px;
1334
+ align-items: center;
1335
+ justify-content: space-between;
1336
+ gap: 20px;
1337
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
1338
+ background: color-mix(
1339
+ in srgb,
1340
+ var(--oxa-shell-surface, #fff) 96%,
1341
+ transparent
1342
+ );
1343
+ padding: 10px 20px;
1344
+ box-shadow: var(--oxa-shell-shadow, 0 1px 6px rgb(0 0 0 / 8%));
1345
+ backdrop-filter: blur(12px);
1346
+ }
1347
+
1348
+ .oxa-file-preview-toolbar > div:last-child {
1349
+ display: flex;
1350
+ gap: 8px;
1351
+ }
1352
+
1353
+ .oxa-file-preview-title {
1354
+ display: flex;
1355
+ min-width: 0;
1356
+ align-items: center;
1357
+ gap: 12px;
1358
+ }
1359
+
1360
+ .oxa-file-preview-title > .anticon {
1361
+ color: var(--oxa-shell-primary, #1677ff);
1362
+ font-size: 26px;
1363
+ }
1364
+
1365
+ .oxa-file-preview-title > div {
1366
+ display: grid;
1367
+ min-width: 0;
1368
+ gap: 2px;
1369
+ }
1370
+
1371
+ .oxa-file-preview-title strong,
1372
+ .oxa-file-preview-title span {
1373
+ overflow: hidden;
1374
+ text-overflow: ellipsis;
1375
+ white-space: nowrap;
1376
+ }
1377
+
1378
+ .oxa-file-preview-title span {
1379
+ color: var(--oxa-shell-text-secondary, #595959);
1380
+ font-size: 12px;
1381
+ }
1382
+
1383
+ .oxa-file-preview-body {
1384
+ display: grid;
1385
+ min-height: calc(100vh - 66px);
1386
+ place-items: center;
1387
+ padding: 20px;
1388
+ }
1389
+
1390
+ .oxa-preview-frame {
1391
+ width: 100%;
1392
+ height: calc(100vh - 106px);
1393
+ border: 0;
1394
+ border-radius: 8px;
1395
+ background: var(--oxa-shell-surface, #fff);
1396
+ box-shadow: 0 8px 32px rgb(24 42 72 / 10%);
1397
+ }
1398
+
1399
+ .oxa-preview-image {
1400
+ max-width: 100%;
1401
+ max-height: calc(100vh - 106px);
1402
+ border-radius: 8px;
1403
+ object-fit: contain;
1404
+ box-shadow: 0 8px 32px rgb(24 42 72 / 12%);
1405
+ }
1406
+
1407
+ .oxa-docx-preview,
1408
+ .oxa-spreadsheet-preview {
1409
+ width: 100%;
1410
+ height: calc(100vh - 106px);
1411
+ overflow: auto;
1412
+ border-radius: 8px;
1413
+ background: var(--oxa-shell-surface, #fff);
1414
+ box-shadow: 0 8px 32px rgb(24 42 72 / 10%);
1415
+ }
1416
+
1417
+ .oxa-docx-preview .docx-wrapper {
1418
+ min-height: 100%;
1419
+ background: var(--oxa-shell-subtle, #fafafa);
1420
+ padding: 24px;
1421
+ }
1422
+
1423
+ .oxa-spreadsheet-preview {
1424
+ display: flex;
1425
+ flex-direction: column;
1426
+ }
1427
+
1428
+ .oxa-spreadsheet-preview > .ant-segmented {
1429
+ flex: 0 0 auto;
1430
+ margin: 12px;
1431
+ }
1432
+
1433
+ .oxa-spreadsheet-scroll {
1434
+ min-height: 0;
1435
+ flex: 1;
1436
+ overflow: auto;
1437
+ border-top: 1px solid var(--oxa-shell-border, #f0f0f0);
1438
+ }
1439
+
1440
+ .oxa-spreadsheet-scroll table {
1441
+ min-width: 100%;
1442
+ border-spacing: 0;
1443
+ border-collapse: separate;
1444
+ font-size: 13px;
1445
+ }
1446
+
1447
+ .oxa-spreadsheet-scroll th,
1448
+ .oxa-spreadsheet-scroll td {
1449
+ min-width: 96px;
1450
+ max-width: 360px;
1451
+ border-right: 1px solid var(--oxa-shell-border, #f0f0f0);
1452
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
1453
+ padding: 7px 9px;
1454
+ background: var(--oxa-shell-surface, #fff);
1455
+ text-align: left;
1456
+ vertical-align: top;
1457
+ white-space: pre-wrap;
1458
+ word-break: break-word;
1459
+ }
1460
+
1461
+ .oxa-spreadsheet-scroll th {
1462
+ position: sticky;
1463
+ z-index: 1;
1464
+ left: 0;
1465
+ min-width: 52px;
1466
+ background: var(--oxa-shell-subtle, #fafafa);
1467
+ color: var(--oxa-shell-text-secondary, #595959);
1468
+ text-align: center;
1469
+ }
1470
+
1471
+ .oxa-detail-hero-top {
1472
+ align-items: flex-start;
1473
+ }
1474
+
1475
+ .oxa-detail-hero-top > .ant-btn:first-child,
1476
+ .oxa-edit-hero-title .ant-btn-link {
1477
+ height: auto;
1478
+ padding: 0;
1479
+ }
1480
+
1481
+ .oxa-detail-hero-main {
1482
+ margin-top: 14px;
1483
+ align-items: flex-end;
1484
+ }
1485
+
1486
+ .oxa-detail-hero-main .ant-typography,
1487
+ .oxa-edit-hero-title .ant-typography {
1488
+ margin-top: 0;
1489
+ margin-bottom: 4px;
1490
+ }
1491
+
1492
+ .oxa-detail-hero-main h2.ant-typography {
1493
+ font-size: 22px;
1494
+ }
1495
+
1496
+ .oxa-resource-name.ant-typography {
1497
+ margin-bottom: 2px;
1498
+ font-size: 18px;
1499
+ }
1500
+
1501
+ .oxa-record-meta {
1502
+ color: var(--oxa-shell-text-secondary, #595959);
1503
+ font-size: 12px;
1504
+ }
1505
+
1506
+ .oxa-edit-hero-title {
1507
+ margin-bottom: 14px;
1508
+ align-items: flex-end;
1509
+ }
1510
+
1511
+ .oxa-edit-hero-title h2.ant-typography {
1512
+ margin-top: 8px;
1513
+ font-size: 22px;
1514
+ }
1515
+
1516
+ .oxa-detail-layout {
1517
+ display: block;
1518
+ }
1519
+
1520
+ .oxa-detail-main,
1521
+ .oxa-detail-aside {
1522
+ display: grid;
1523
+ gap: 16px;
1524
+ }
1525
+
1526
+ .oxa-detail-aside {
1527
+ position: sticky;
1528
+ top: 108px;
1529
+ }
1530
+
1531
+ .oxa-detail-main .ant-descriptions-item-label,
1532
+ .oxa-detail-aside .ant-descriptions-item-label {
1533
+ color: var(--oxa-shell-text-secondary, #595959);
1534
+ }
1535
+
1536
+ .oxa-audit-collapse {
1537
+ overflow: hidden;
1538
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
1539
+ border-radius: 8px;
1540
+ background: var(--oxa-shell-surface, #fff);
1541
+ }
1542
+
1543
+ .oxa-audit-collapse > .ant-collapse-item > .ant-collapse-header {
1544
+ min-height: 52px;
1545
+ align-items: center;
1546
+ padding: 14px 18px;
1547
+ }
1548
+
1549
+ .oxa-audit-collapse .ant-collapse-content-box {
1550
+ padding: 0 18px 12px !important;
1551
+ }
1552
+
1553
+ .oxa-audit-collapse-heading {
1554
+ display: flex;
1555
+ min-width: 0;
1556
+ flex: 1;
1557
+ align-items: center;
1558
+ justify-content: space-between;
1559
+ gap: 16px;
1560
+ }
1561
+
1562
+ .oxa-audit-collapse-heading span {
1563
+ color: var(--oxa-shell-text-secondary, #595959);
1564
+ font-size: 12px;
1565
+ }
1566
+
1567
+ .oxa-audit-loading {
1568
+ padding: 18px 0;
1569
+ color: var(--oxa-shell-text-secondary, #595959);
1570
+ text-align: center;
1571
+ }
1572
+
1573
+ .oxa-audit-entry {
1574
+ display: grid;
1575
+ gap: 4px;
1576
+ padding: 10px 0;
1577
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
1578
+ }
1579
+
1580
+ .oxa-audit-entry:last-child {
1581
+ border-bottom: 0;
1582
+ }
1583
+
1584
+ .oxa-audit-heading,
1585
+ .oxa-audit-meta,
1586
+ .oxa-audit-change-values {
1587
+ display: flex;
1588
+ align-items: center;
1589
+ gap: 8px;
1590
+ }
1591
+
1592
+ .oxa-audit-heading {
1593
+ justify-content: space-between;
1594
+ }
1595
+
1596
+ .oxa-audit-meta {
1597
+ flex-wrap: wrap;
1598
+ color: var(--oxa-shell-text-secondary, #595959);
1599
+ font-size: 12px;
1600
+ }
1601
+
1602
+ .oxa-audit-meta .ant-typography {
1603
+ font-size: 12px;
1604
+ }
1605
+
1606
+ .oxa-audit-changes {
1607
+ display: grid;
1608
+ gap: 7px;
1609
+ margin-top: 4px;
1610
+ }
1611
+
1612
+ .oxa-audit-change {
1613
+ display: grid;
1614
+ gap: 3px;
1615
+ padding: 7px 8px;
1616
+ border-radius: 6px;
1617
+ background: var(--oxa-shell-subtle, #fafafa);
1618
+ }
1619
+
1620
+ .oxa-audit-change-values {
1621
+ min-width: 0;
1622
+ color: var(--oxa-shell-text-secondary, #595959);
1623
+ font-size: 12px;
1624
+ }
1625
+
1626
+ .oxa-audit-change-values > :not(svg) {
1627
+ min-width: 0;
1628
+ overflow: hidden;
1629
+ text-overflow: ellipsis;
1630
+ white-space: nowrap;
1631
+ }
1632
+
1633
+ .oxa-audit-entry > span {
1634
+ color: var(--oxa-shell-text-secondary, #595959);
1635
+ font-size: 12px;
1636
+ }
1637
+
1638
+ .oxa-mobile-reference-trigger {
1639
+ display: flex;
1640
+ width: 100%;
1641
+ min-height: 42px;
1642
+ align-items: center;
1643
+ justify-content: space-between;
1644
+ gap: 8px;
1645
+ padding: 9px 12px;
1646
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9);
1647
+ border-radius: 8px;
1648
+ background: var(--oxa-shell-surface, #fff);
1649
+ color: var(--oxa-shell-text, #1f1f1f);
1650
+ font: inherit;
1651
+ text-align: left;
1652
+ }
1653
+
1654
+ .oxa-mobile-reference-trigger:disabled {
1655
+ background: var(--oxa-shell-subtle, #fafafa);
1656
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
1657
+ }
1658
+
1659
+ .oxa-mobile-reference-placeholder {
1660
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
1661
+ }
1662
+
1663
+ .oxa-mobile-reference-backdrop {
1664
+ position: fixed;
1665
+ z-index: 1200;
1666
+ inset: 0;
1667
+ display: flex;
1668
+ align-items: flex-end;
1669
+ background: var(--oxa-shell-mask, rgb(0 0 0 / 45%));
1670
+ }
1671
+
1672
+ .oxa-mobile-reference-sheet {
1673
+ display: grid;
1674
+ width: 100%;
1675
+ max-height: min(78vh, 640px);
1676
+ gap: 12px;
1677
+ padding: 16px 16px max(16px, env(safe-area-inset-bottom));
1678
+ overflow: auto;
1679
+ border-radius: 16px 16px 0 0;
1680
+ background: var(--oxa-shell-elevated, #fff);
1681
+ box-shadow: 0 -8px 32px rgb(15 23 42 / 18%);
1682
+ }
1683
+
1684
+ .oxa-mobile-reference-header {
1685
+ display: flex;
1686
+ align-items: center;
1687
+ justify-content: space-between;
1688
+ color: var(--oxa-shell-text, #1f1f1f);
1689
+ }
1690
+
1691
+ .oxa-mobile-reference-header button,
1692
+ .oxa-mobile-reference-more,
1693
+ .oxa-mobile-reference-confirm {
1694
+ border: 0;
1695
+ background: transparent;
1696
+ color: var(--oxa-shell-primary, #1677ff);
1697
+ font: inherit;
1698
+ }
1699
+
1700
+ .oxa-mobile-reference-search {
1701
+ width: 100%;
1702
+ }
1703
+
1704
+ .oxa-mobile-reference-options {
1705
+ display: grid;
1706
+ gap: 4px;
1707
+ }
1708
+
1709
+ .oxa-mobile-reference-option {
1710
+ display: flex;
1711
+ min-height: 48px;
1712
+ align-items: center;
1713
+ gap: 10px;
1714
+ padding: 8px 4px;
1715
+ border: 0;
1716
+ border-radius: 8px;
1717
+ background: transparent;
1718
+ color: var(--oxa-shell-text, #1f1f1f);
1719
+ font: inherit;
1720
+ text-align: left;
1721
+ }
1722
+
1723
+ .oxa-mobile-reference-option.is-selected {
1724
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
1725
+ }
1726
+
1727
+ .oxa-mobile-reference-option:disabled {
1728
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
1729
+ opacity: 0.7;
1730
+ }
1731
+
1732
+ .oxa-mobile-reference-option-copy {
1733
+ display: grid;
1734
+ min-width: 0;
1735
+ flex: 1;
1736
+ gap: 2px;
1737
+ }
1738
+
1739
+ .oxa-mobile-reference-option-copy small {
1740
+ overflow: hidden;
1741
+ color: var(--oxa-shell-text-secondary, #595959);
1742
+ font-size: 12px;
1743
+ text-overflow: ellipsis;
1744
+ white-space: nowrap;
1745
+ }
1746
+
1747
+ .oxa-mobile-reference-loading,
1748
+ .oxa-mobile-reference-empty,
1749
+ .oxa-mobile-reference-error {
1750
+ padding: 12px 4px;
1751
+ color: var(--oxa-shell-text-secondary, #595959);
1752
+ font-size: 13px;
1753
+ text-align: center;
1754
+ }
1755
+
1756
+ .oxa-mobile-reference-error {
1757
+ color: var(--oxa-shell-error, #ff4d4f);
1758
+ }
1759
+
1760
+ .oxa-mobile-reference-more,
1761
+ .oxa-mobile-reference-confirm {
1762
+ min-height: 42px;
1763
+ border-radius: 8px;
1764
+ background: var(--oxa-shell-primary-bg, #e6f4ff);
1765
+ font-weight: 600;
1766
+ text-align: center;
1767
+ }
1768
+
1769
+ .oxa-mobile-reference-confirm {
1770
+ background: var(--oxa-shell-primary, #1677ff);
1771
+ color: #fff;
1772
+ }
1773
+
1774
+ .oxa-mobile-file-field {
1775
+ display: grid;
1776
+ gap: 8px;
1777
+ }
1778
+
1779
+ .oxa-mobile-file-button {
1780
+ display: inline-flex !important;
1781
+ width: 100%;
1782
+ min-height: 42px;
1783
+ align-items: center;
1784
+ justify-content: center;
1785
+ border: 1px solid var(--oxa-shell-border-strong, #d9d9d9) !important;
1786
+ border-radius: 8px;
1787
+ background: var(--oxa-shell-surface, #fff) !important;
1788
+ color: var(--oxa-shell-primary, #1677ff);
1789
+ font-weight: 600;
1790
+ }
1791
+
1792
+ .oxa-mobile-file-button.ant-btn:disabled {
1793
+ background: var(--oxa-shell-subtle, #fafafa);
1794
+ color: var(--oxa-shell-text-disabled, rgb(0 0 0 / 25%));
1795
+ }
1796
+
1797
+ .oxa-mobile-pending-files {
1798
+ display: grid;
1799
+ gap: 8px;
1800
+ }
1801
+
1802
+ .oxa-mobile-pending-file {
1803
+ display: flex;
1804
+ min-height: 42px;
1805
+ align-items: center;
1806
+ gap: 8px;
1807
+ padding: 7px 9px;
1808
+ border: 1px solid var(--oxa-shell-border, #f0f0f0);
1809
+ border-radius: 8px;
1810
+ background: var(--oxa-shell-subtle, #fafafa);
1811
+ font-size: 13px;
1812
+ }
1813
+
1814
+ .oxa-mobile-pending-file-name {
1815
+ min-width: 0;
1816
+ overflow: hidden;
1817
+ text-overflow: ellipsis;
1818
+ white-space: nowrap;
1819
+ }
1820
+
1821
+ .oxa-mobile-pending-file-copy {
1822
+ display: grid;
1823
+ min-width: 0;
1824
+ flex: 1;
1825
+ gap: 2px;
1826
+ }
1827
+
1828
+ .oxa-mobile-pending-file-copy small {
1829
+ color: var(--oxa-shell-text-secondary, #595959);
1830
+ font-size: 12px;
1831
+ }
1832
+
1833
+ .oxa-mobile-pending-status {
1834
+ color: var(--oxa-shell-primary, #1677ff);
1835
+ white-space: nowrap;
1836
+ }
1837
+
1838
+ .oxa-mobile-pending-error {
1839
+ max-width: 42%;
1840
+ overflow: hidden;
1841
+ color: var(--oxa-shell-error, #ff4d4f);
1842
+ text-overflow: ellipsis;
1843
+ white-space: nowrap;
1844
+ }
1845
+
1846
+ @media (max-width: 1280px) {
1847
+ .oxa-grid,
1848
+ .oxa-filter-grid {
1849
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1850
+ }
1851
+
1852
+ .oxa-detail-aside {
1853
+ position: static;
1854
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1855
+ }
1856
+ }
1857
+
1858
+ @media (max-width: 900px) {
1859
+ .oxa-topbar {
1860
+ height: 52px;
1861
+ padding: 0 12px !important;
1862
+ }
1863
+
1864
+ .oxa-current-user {
1865
+ min-width: 0;
1866
+ }
1867
+
1868
+ .oxa-current-user strong,
1869
+ .oxa-current-user-chevron {
1870
+ display: none;
1871
+ }
1872
+
1873
+ .oxa-route-history {
1874
+ top: 52px;
1875
+ }
1876
+
1877
+ .oxa-main {
1878
+ padding: 16px;
1879
+ }
1880
+
1881
+ .oxa-grid,
1882
+ .oxa-filter-grid,
1883
+ .oxa-detail-aside {
1884
+ grid-template-columns: 1fr;
1885
+ }
1886
+
1887
+ .oxa-search-panel {
1888
+ grid-template-columns: 1fr;
1889
+ }
1890
+
1891
+ .oxa-filter-actions,
1892
+ .oxa-list-toolbar,
1893
+ .oxa-batch-bar {
1894
+ align-items: stretch;
1895
+ flex-direction: column;
1896
+ }
1897
+
1898
+ .oxa-list-toolbar-primary,
1899
+ .oxa-list-toolbar-secondary {
1900
+ flex-wrap: wrap;
1901
+ }
1902
+
1903
+ .oxa-detail-hero-main,
1904
+ .oxa-detail-hero-top,
1905
+ .oxa-edit-hero-title,
1906
+ .oxa-page-heading {
1907
+ align-items: flex-start;
1908
+ flex-direction: column;
1909
+ }
1910
+
1911
+ .oxa-record-meta {
1912
+ align-self: stretch;
1913
+ }
1914
+
1915
+ .oxa-directory-main,
1916
+ .oxa-department-main {
1917
+ min-height: 0;
1918
+ grid-template-columns: 1fr;
1919
+ }
1920
+
1921
+ .oxa-directory-tree-pane,
1922
+ .oxa-directory-selected-pane {
1923
+ border: 0;
1924
+ border-bottom: 1px solid var(--oxa-shell-border, #f0f0f0);
1925
+ }
1926
+
1927
+ .oxa-directory-tree-pane,
1928
+ .oxa-directory-member-pane,
1929
+ .oxa-directory-selected-pane {
1930
+ max-height: 34vh;
1931
+ overflow: auto;
1932
+ }
1933
+ }
1934
+
1935
+ @media (prefers-reduced-motion: reduce) {
1936
+ .oxa-global-request-loading span {
1937
+ width: 100%;
1938
+ animation: none;
1939
+ transform: none;
1940
+ }
1941
+ }