gitextract_bqdxkhyg/ ├── .browserslistrc ├── .commitlintrc.js ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .gitconfig ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc.mjs ├── .stylelintignore ├── LICENSE ├── README.md ├── apps/ │ └── web-antd/ │ ├── Dockerfile │ ├── docker-compose.yml │ ├── docker-entrypoint.sh │ ├── index.html │ ├── nginx.conf │ ├── package.json │ ├── postcss.config.mjs │ ├── public/ │ │ └── tinymce/ │ │ ├── langs/ │ │ │ ├── README.md │ │ │ └── zh_CN.js │ │ ├── plugins/ │ │ │ ├── emoticons/ │ │ │ │ └── js/ │ │ │ │ ├── emojiimages.js │ │ │ │ └── emojis.js │ │ │ └── help/ │ │ │ └── js/ │ │ │ └── i18n/ │ │ │ └── keynav/ │ │ │ ├── ar.js │ │ │ ├── bg_BG.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr_FR.js │ │ │ ├── he_IL.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu_HU.js │ │ │ ├── id.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── kk.js │ │ │ ├── ko_KR.js │ │ │ ├── ms.js │ │ │ ├── nb_NO.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── pt_BR.js │ │ │ ├── pt_PT.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sl_SI.js │ │ │ ├── sv_SE.js │ │ │ ├── th_TH.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh_CN.js │ │ │ └── zh_TW.js │ │ ├── skins/ │ │ │ ├── content/ │ │ │ │ ├── dark/ │ │ │ │ │ └── content.js │ │ │ │ ├── default/ │ │ │ │ │ └── content.js │ │ │ │ ├── document/ │ │ │ │ │ └── content.js │ │ │ │ ├── tinymce-5/ │ │ │ │ │ └── content.js │ │ │ │ ├── tinymce-5-dark/ │ │ │ │ │ └── content.js │ │ │ │ └── writer/ │ │ │ │ └── content.js │ │ │ └── ui/ │ │ │ ├── oxide/ │ │ │ │ ├── content.inline.js │ │ │ │ ├── content.js │ │ │ │ ├── skin.js │ │ │ │ └── skin.shadowdom.js │ │ │ ├── oxide-dark/ │ │ │ │ ├── content.inline.js │ │ │ │ ├── content.js │ │ │ │ ├── skin.js │ │ │ │ └── skin.shadowdom.js │ │ │ ├── tinymce-5/ │ │ │ │ ├── content.inline.js │ │ │ │ ├── content.js │ │ │ │ ├── skin.js │ │ │ │ └── skin.shadowdom.js │ │ │ └── tinymce-5-dark/ │ │ │ ├── content.inline.js │ │ │ ├── content.js │ │ │ ├── skin.js │ │ │ └── skin.shadowdom.js │ │ └── tinymce.d.ts │ ├── src/ │ │ ├── adapter/ │ │ │ ├── component/ │ │ │ │ └── index.ts │ │ │ ├── form.ts │ │ │ └── vxe-table.ts │ │ ├── api/ │ │ │ ├── aiflow/ │ │ │ │ ├── API文档.md │ │ │ │ ├── adapters.ts │ │ │ │ ├── index.ts │ │ │ │ ├── runtime.ts │ │ │ │ └── types.d.ts │ │ │ ├── chat/ │ │ │ │ ├── chatconfig/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── message/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ └── provider/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── common.d.ts │ │ │ ├── core/ │ │ │ │ ├── auth.ts │ │ │ │ ├── captcha.ts │ │ │ │ ├── index.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── upload.ts │ │ │ │ └── user.ts │ │ │ ├── graph/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── helper.ts │ │ │ ├── index.ts │ │ │ ├── knowledge/ │ │ │ │ ├── attach/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── fragment/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ └── info/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── mcp/ │ │ │ │ ├── market/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ └── tool/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── monitor/ │ │ │ │ ├── cache/ │ │ │ │ │ └── index.ts │ │ │ │ ├── logininfo/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── online/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ └── operlog/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── operator/ │ │ │ │ └── configurationManage/ │ │ │ │ └── index.ts │ │ │ ├── request.ts │ │ │ ├── system/ │ │ │ │ ├── client/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── dept/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── dict/ │ │ │ │ │ ├── dict-data-model.d.ts │ │ │ │ │ ├── dict-data.ts │ │ │ │ │ ├── dict-type-model.d.ts │ │ │ │ │ ├── dict-type.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── menu/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── notice/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── oss/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── oss-config/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── post/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── profile/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── role/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── social/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── tenant/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ ├── tenant-package/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model.d.ts │ │ │ │ └── user/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── tool/ │ │ │ │ └── gen/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ └── workflow/ │ │ │ ├── category/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── definition/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── instance/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── spel/ │ │ │ │ ├── index.tsx │ │ │ │ └── model.d.ts │ │ │ └── task/ │ │ │ ├── index.ts │ │ │ └── model.d.ts │ │ ├── app.vue │ │ ├── bootstrap.ts │ │ ├── components/ │ │ │ ├── cropper/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── cropper-avatar.vue │ │ │ │ ├── cropper-modal.vue │ │ │ │ ├── cropper.vue │ │ │ │ └── typing.ts │ │ │ ├── description/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── description.vue │ │ │ │ ├── typing.ts │ │ │ │ └── useDescription.ts │ │ │ ├── dict/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── type.d.ts │ │ │ ├── global/ │ │ │ │ ├── button.ts │ │ │ │ ├── index.ts │ │ │ │ └── slot.ts │ │ │ ├── table/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── options-tag.vue │ │ │ │ └── table-switch.vue │ │ │ ├── tenant-toggle/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ └── index.vue │ │ │ ├── tinymce/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── editor.vue │ │ │ │ ├── helper.ts │ │ │ │ └── tinymce.ts │ │ │ ├── tree/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── data.tsx │ │ │ │ ├── helper.tsx │ │ │ │ ├── hook.tsx │ │ │ │ ├── menu-select-table.vue │ │ │ │ └── tree-select-panel.vue │ │ │ ├── upload/ │ │ │ │ ├── index.ts │ │ │ │ └── src/ │ │ │ │ ├── file-upload.vue │ │ │ │ ├── helper.ts │ │ │ │ ├── hook.ts │ │ │ │ ├── image-upload.vue │ │ │ │ ├── note.md │ │ │ │ └── props.d.ts │ │ │ └── upload-old/ │ │ │ ├── index.ts │ │ │ └── src/ │ │ │ ├── file-upload.vue │ │ │ ├── helper.ts │ │ │ ├── image-upload.vue │ │ │ ├── typing.ts │ │ │ └── use-upload.ts │ │ ├── layouts/ │ │ │ ├── auth.vue │ │ │ ├── basic.vue │ │ │ └── index.ts │ │ ├── locales/ │ │ │ ├── README.md │ │ │ ├── index.ts │ │ │ └── langs/ │ │ │ ├── en-US/ │ │ │ │ ├── component.json │ │ │ │ ├── demos.json │ │ │ │ ├── http.json │ │ │ │ ├── menu.json │ │ │ │ ├── page.json │ │ │ │ └── pages.json │ │ │ └── zh-CN/ │ │ │ ├── component.json │ │ │ ├── demos.json │ │ │ ├── http.json │ │ │ ├── menu.json │ │ │ ├── page.json │ │ │ └── pages.json │ │ ├── main.ts │ │ ├── packages/ │ │ │ └── workflow-designer/ │ │ │ ├── StandaloneWorkflowDesigner.vue │ │ │ ├── components/ │ │ │ │ ├── CommonNodeHeader.vue │ │ │ │ ├── RunDetail.vue │ │ │ │ ├── RuntimeNodes.vue │ │ │ │ ├── SvgIcon.vue │ │ │ │ ├── WfVariableSelector.vue │ │ │ │ ├── edges/ │ │ │ │ │ ├── CustomEdge.vue │ │ │ │ │ ├── CustomEdge2.vue │ │ │ │ │ └── SpecialEdge.vue │ │ │ │ └── nodes/ │ │ │ │ ├── AnswerNode.vue │ │ │ │ ├── ClassifierNode.vue │ │ │ │ ├── Dalle3Node.vue │ │ │ │ ├── DocumentExtractorNode.vue │ │ │ │ ├── EndNode.vue │ │ │ │ ├── FaqExtractorNode.vue │ │ │ │ ├── GoogleNode.vue │ │ │ │ ├── HumanFeedbackNode.vue │ │ │ │ ├── KeywordExtractorNode.vue │ │ │ │ ├── NodeShell.vue │ │ │ │ ├── StartNode.vue │ │ │ │ ├── SwitcherNode.vue │ │ │ │ ├── TemplateNode.vue │ │ │ │ ├── TestNode.vue │ │ │ │ └── TongyiwanxNode.vue │ │ │ ├── docs/ │ │ │ │ ├── README.md │ │ │ │ ├── WorkflowDesigner树状架构分析.md │ │ │ │ ├── WorkflowDesigner详细树状架构.md │ │ │ │ ├── 图标说明.md │ │ │ │ └── 流程编排架构说明.md │ │ │ ├── index.ts │ │ │ ├── panels/ │ │ │ │ └── RightPanel.vue │ │ │ ├── properties/ │ │ │ │ ├── AnswerNodeProperty.vue │ │ │ │ ├── ClassifierNodeProperty.vue │ │ │ │ ├── GenericNodeProperty.vue │ │ │ │ ├── KeywordExtractorNodeProperty.vue │ │ │ │ ├── StartNodeProperty.vue │ │ │ │ ├── SwitcherNodeProperty.vue │ │ │ │ ├── TestNodeProperty.vue │ │ │ │ └── defaults.ts │ │ │ ├── store/ │ │ │ │ └── index.ts │ │ │ ├── types/ │ │ │ │ └── index.d.ts │ │ │ └── utils/ │ │ │ ├── operators.ts │ │ │ └── workflow-util.ts │ │ ├── preferences.ts │ │ ├── router/ │ │ │ ├── access.ts │ │ │ ├── guard.ts │ │ │ ├── index.ts │ │ │ └── routes/ │ │ │ ├── core.ts │ │ │ ├── index.ts │ │ │ ├── local.ts │ │ │ └── modules/ │ │ │ ├── aiflow.ts │ │ │ ├── dashboard.ts │ │ │ ├── knowledge.ts │ │ │ └── vben.ts │ │ ├── store/ │ │ │ ├── auth.ts │ │ │ ├── dict.ts │ │ │ ├── index.ts │ │ │ ├── notify.ts │ │ │ └── tenant.ts │ │ ├── upload-tip.ts │ │ ├── utils/ │ │ │ ├── dict.ts │ │ │ ├── file/ │ │ │ │ ├── base64Conver.ts │ │ │ │ ├── download.ts │ │ │ │ └── index.ts │ │ │ ├── message.ts │ │ │ ├── modal.tsx │ │ │ ├── popup.ts │ │ │ └── render.tsx │ │ └── views/ │ │ ├── _core/ │ │ │ ├── README.md │ │ │ ├── about/ │ │ │ │ └── index.vue │ │ │ ├── authentication/ │ │ │ │ ├── code-login.vue │ │ │ │ ├── forget-password.vue │ │ │ │ ├── login.vue │ │ │ │ ├── oauth-login.vue │ │ │ │ ├── qrcode-login.vue │ │ │ │ └── register.vue │ │ │ ├── fallback/ │ │ │ │ ├── coming-soon.vue │ │ │ │ ├── forbidden.vue │ │ │ │ ├── internal-error.vue │ │ │ │ ├── not-found.vue │ │ │ │ └── offline.vue │ │ │ ├── oauth-common.ts │ │ │ ├── profile/ │ │ │ │ ├── components/ │ │ │ │ │ ├── account-bind.vue │ │ │ │ │ ├── base-setting.vue │ │ │ │ │ ├── online-device.vue │ │ │ │ │ └── secure-setting.vue │ │ │ │ ├── index.vue │ │ │ │ ├── mitt.ts │ │ │ │ ├── profile-panel.vue │ │ │ │ └── setting-panel.vue │ │ │ └── social-callback/ │ │ │ └── index.vue │ │ ├── aiflow/ │ │ │ ├── README.md │ │ │ ├── data.ts │ │ │ ├── edit.vue │ │ │ ├── index.vue │ │ │ ├── run.vue │ │ │ └── workflow-modal.vue │ │ ├── chat/ │ │ │ ├── message/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── message-modal.vue │ │ │ ├── model/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── model-modal.vue │ │ │ └── provider/ │ │ │ ├── data.ts │ │ │ ├── index.vue │ │ │ ├── options.ts │ │ │ └── provider-modal.vue │ │ ├── dashboard/ │ │ │ ├── analytics/ │ │ │ │ ├── analytics-trends.vue │ │ │ │ ├── analytics-visits-data.vue │ │ │ │ ├── analytics-visits-sales.vue │ │ │ │ ├── analytics-visits-source.vue │ │ │ │ ├── analytics-visits.vue │ │ │ │ └── index.vue │ │ │ └── workspace/ │ │ │ └── index.vue │ │ ├── knowledge/ │ │ │ ├── attach/ │ │ │ │ ├── attach-modal.vue │ │ │ │ ├── data.ts │ │ │ │ └── index.vue │ │ │ ├── fragment/ │ │ │ │ ├── data.ts │ │ │ │ ├── fragment-modal.vue │ │ │ │ └── index.vue │ │ │ └── info/ │ │ │ ├── components/ │ │ │ │ └── KnowledgeAddModal.vue │ │ │ ├── data.ts │ │ │ ├── detail/ │ │ │ │ ├── components/ │ │ │ │ │ ├── FileManagement.vue │ │ │ │ │ ├── KnowledgeConfig.vue │ │ │ │ │ └── RetrievalTest.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ ├── info-drawer.vue │ │ │ └── info-modal.vue │ │ ├── mcp/ │ │ │ ├── market/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── market-drawer.vue │ │ │ └── tool/ │ │ │ ├── data.tsx │ │ │ ├── index.vue │ │ │ └── tool-drawer.vue │ │ ├── monitor/ │ │ │ ├── admin/ │ │ │ │ └── index.vue │ │ │ ├── cache/ │ │ │ │ ├── components/ │ │ │ │ │ ├── command-chart.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── memory-chart.vue │ │ │ │ │ └── redis-description.vue │ │ │ │ └── index.vue │ │ │ ├── logininfor/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── login-info-modal.vue │ │ │ ├── online/ │ │ │ │ ├── data.ts │ │ │ │ └── index.vue │ │ │ ├── operlog/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── operation-preview-drawer.vue │ │ │ └── snailjob/ │ │ │ └── index.vue │ │ ├── nodeManage/ │ │ │ ├── data.ts │ │ │ ├── index.d.ts │ │ │ ├── index.vue │ │ │ └── modal.vue │ │ ├── system/ │ │ │ ├── client/ │ │ │ │ ├── client-drawer.vue │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── secret-input.vue │ │ │ ├── config/ │ │ │ │ ├── config-modal.vue │ │ │ │ ├── data.ts │ │ │ │ └── index.vue │ │ │ ├── dept/ │ │ │ │ ├── data.ts │ │ │ │ ├── dept-drawer.vue │ │ │ │ └── index.vue │ │ │ ├── dict/ │ │ │ │ ├── data/ │ │ │ │ │ ├── data.ts │ │ │ │ │ ├── dict-data-drawer.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── tag-style-picker.vue │ │ │ │ ├── data.vue │ │ │ │ ├── index.vue │ │ │ │ ├── mitt.ts │ │ │ │ └── type/ │ │ │ │ ├── data.ts │ │ │ │ ├── dict-type-modal.vue │ │ │ │ ├── index-refactor.vue │ │ │ │ └── index.vue │ │ │ ├── menu/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── menu-drawer.vue │ │ │ ├── notice/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── notice-modal.vue │ │ │ ├── oss/ │ │ │ │ ├── config.vue │ │ │ │ ├── constant.ts │ │ │ │ ├── data.tsx │ │ │ │ ├── fallback-image.txt │ │ │ │ ├── file-upload-modal.vue │ │ │ │ ├── image-upload-modal.vue │ │ │ │ └── index.vue │ │ │ ├── oss-config/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── oss-config-drawer.vue │ │ │ ├── post/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── post-drawer.vue │ │ │ ├── role/ │ │ │ │ ├── authUser.vue │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ ├── role-auth-modal.vue │ │ │ │ └── role-drawer.vue │ │ │ ├── role-assign/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── role-assign-drawer.vue │ │ │ ├── tenant/ │ │ │ │ ├── data.tsx │ │ │ │ ├── index.vue │ │ │ │ └── tenant-drawer.vue │ │ │ ├── tenantPackage/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── tenant-package-drawer.vue │ │ │ └── user/ │ │ │ ├── authRole.vue │ │ │ ├── data.tsx │ │ │ ├── dept-tree.vue │ │ │ ├── index.vue │ │ │ ├── user-drawer.vue │ │ │ ├── user-import-modal.vue │ │ │ ├── user-info-modal.vue │ │ │ └── user-reset-pwd-modal.vue │ │ ├── tool/ │ │ │ └── gen/ │ │ │ ├── code-preview-modal.vue │ │ │ ├── data.tsx │ │ │ ├── edit-gen.vue │ │ │ ├── edit-steps/ │ │ │ │ ├── basic-setting.vue │ │ │ │ ├── basic.tsx │ │ │ │ ├── gen-config.vue │ │ │ │ ├── gen-data.tsx │ │ │ │ └── index.ts │ │ │ ├── editTable.vue │ │ │ ├── index.vue │ │ │ └── table-import-modal.vue │ │ └── workflow/ │ │ ├── category/ │ │ │ ├── category-modal.vue │ │ │ ├── data.ts │ │ │ └── index.vue │ │ ├── components/ │ │ │ ├── actions/ │ │ │ │ ├── flow-actions.vue │ │ │ │ └── index.ts │ │ │ ├── apply-modal.vue │ │ │ ├── approval-card.vue │ │ │ ├── approval-content.vue │ │ │ ├── approval-details.vue │ │ │ ├── approval-modal.vue │ │ │ ├── approval-panel.vue │ │ │ ├── approval-rejection-modal.vue │ │ │ ├── approval-timeline-item.vue │ │ │ ├── approval-timeline.vue │ │ │ ├── copy-component.vue │ │ │ ├── flow-designer.vue │ │ │ ├── flow-info-modal.vue │ │ │ ├── flow-interfere-modal.vue │ │ │ ├── flow-preview.vue │ │ │ ├── helper.tsx │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── type.d.ts │ │ │ └── user-select-modal.vue │ │ ├── leave/ │ │ │ ├── api/ │ │ │ │ ├── index.ts │ │ │ │ └── model.d.ts │ │ │ ├── data.tsx │ │ │ ├── hook.ts │ │ │ ├── index.vue │ │ │ ├── leave-description.vue │ │ │ ├── leave-drawer.vue │ │ │ ├── leave-form.vue │ │ │ └── leaveEdit.vue │ │ ├── processDefinition/ │ │ │ ├── category-tree.vue │ │ │ ├── constant.ts │ │ │ ├── data.tsx │ │ │ ├── design.vue │ │ │ ├── index.vue │ │ │ ├── process-definition-deploy-modal.vue │ │ │ └── process-definition-modal.vue │ │ ├── processInstance/ │ │ │ ├── data.tsx │ │ │ ├── index.vue │ │ │ ├── instance-invalid-modal.vue │ │ │ └── instance-variable-modal.vue │ │ ├── register.ts │ │ ├── spel/ │ │ │ ├── common.ts │ │ │ ├── data.tsx │ │ │ ├── index.vue │ │ │ ├── spel-drawer.vue │ │ │ └── spel-previewer.vue │ │ └── task/ │ │ ├── allTaskWaiting.vue │ │ ├── constant.ts │ │ ├── myDocument.vue │ │ ├── taskCopyList.vue │ │ ├── taskFinish.vue │ │ └── taskWaiting.vue │ ├── tailwind.config.mjs │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── types/ │ │ ├── directive.d.ts │ │ └── global-components.d.ts │ └── vite.config.mts ├── docker-compose-all.yaml ├── eslint.config.mjs ├── internal/ │ ├── lint-configs/ │ │ ├── commitlint-config/ │ │ │ ├── index.mjs │ │ │ └── package.json │ │ ├── eslint-config/ │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── configs/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── comments.ts │ │ │ │ │ ├── disableds.ts │ │ │ │ │ ├── ignores.ts │ │ │ │ │ ├── import.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── javascript.ts │ │ │ │ │ ├── jsdoc.ts │ │ │ │ │ ├── jsonc.ts │ │ │ │ │ ├── node.ts │ │ │ │ │ ├── perfectionist.ts │ │ │ │ │ ├── prettier.ts │ │ │ │ │ ├── regexp.ts │ │ │ │ │ ├── test.ts │ │ │ │ │ ├── turbo.ts │ │ │ │ │ ├── typescript.ts │ │ │ │ │ ├── unicorn.ts │ │ │ │ │ └── vue.ts │ │ │ │ ├── custom-config.ts │ │ │ │ ├── index.ts │ │ │ │ └── util.ts │ │ │ └── tsconfig.json │ │ ├── prettier-config/ │ │ │ ├── index.mjs │ │ │ └── package.json │ │ └── stylelint-config/ │ │ ├── index.mjs │ │ └── package.json │ ├── node-utils/ │ │ ├── build.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── hash.test.ts │ │ │ │ └── path.test.ts │ │ │ ├── constants.ts │ │ │ ├── date.ts │ │ │ ├── fs.ts │ │ │ ├── git.ts │ │ │ ├── hash.ts │ │ │ ├── index.ts │ │ │ ├── monorepo.ts │ │ │ ├── path.ts │ │ │ ├── prettier.ts │ │ │ └── spinner.ts │ │ └── tsconfig.json │ ├── tailwind-config/ │ │ ├── build.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── module.d.ts │ │ │ ├── plugins/ │ │ │ │ └── entry.ts │ │ │ └── postcss.config.ts │ │ └── tsconfig.json │ ├── tsconfig/ │ │ ├── base.json │ │ ├── library.json │ │ ├── node.json │ │ ├── package.json │ │ ├── web-app.json │ │ └── web.json │ └── vite-config/ │ ├── build.config.ts │ ├── package.json │ ├── src/ │ │ ├── config/ │ │ │ ├── application.ts │ │ │ ├── common.ts │ │ │ ├── index.ts │ │ │ └── library.ts │ │ ├── index.ts │ │ ├── options.ts │ │ ├── plugins/ │ │ │ ├── archiver.ts │ │ │ ├── extra-app-config.ts │ │ │ ├── importmap.ts │ │ │ ├── index.ts │ │ │ ├── inject-app-loading/ │ │ │ │ ├── README.md │ │ │ │ ├── default-loading-antd.html │ │ │ │ ├── default-loading.html │ │ │ │ └── index.ts │ │ │ ├── inject-metadata.ts │ │ │ ├── license.ts │ │ │ ├── nitro-mock.ts │ │ │ ├── print.ts │ │ │ └── vxe-table.ts │ │ ├── typing.ts │ │ └── utils/ │ │ └── env.ts │ └── tsconfig.json ├── package.json ├── packages/ │ ├── @core/ │ │ ├── README.md │ │ ├── base/ │ │ │ ├── README.md │ │ │ ├── design/ │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── global.css │ │ │ │ │ │ ├── nprogress.css │ │ │ │ │ │ ├── transition.css │ │ │ │ │ │ └── ui.css │ │ │ │ │ ├── design-tokens/ │ │ │ │ │ │ ├── dark.css │ │ │ │ │ │ ├── default.css │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── scss-bem/ │ │ │ │ │ ├── bem.scss │ │ │ │ │ └── constants.scss │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.mts │ │ │ ├── icons/ │ │ │ │ ├── build.config.ts │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── create-icon.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── lucide.ts │ │ │ │ └── tsconfig.json │ │ │ ├── shared/ │ │ │ │ ├── build.config.ts │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── storage-manager.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── storage-manager.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── color/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── convert.test.ts │ │ │ │ │ │ ├── color.ts │ │ │ │ │ │ ├── convert.ts │ │ │ │ │ │ ├── generator.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── constants/ │ │ │ │ │ │ ├── dict-enum.ts │ │ │ │ │ │ ├── globals.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── vben.ts │ │ │ │ │ ├── global-state.ts │ │ │ │ │ ├── store.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── diff.test.ts │ │ │ │ │ │ ├── dom.test.ts │ │ │ │ │ │ ├── inference.test.ts │ │ │ │ │ │ ├── letter.test.ts │ │ │ │ │ │ ├── resources.test.ts │ │ │ │ │ │ ├── state-handler.test.ts │ │ │ │ │ │ ├── tree.test.ts │ │ │ │ │ │ ├── unique.test.ts │ │ │ │ │ │ ├── update-css-variables.test.ts │ │ │ │ │ │ ├── util.test.ts │ │ │ │ │ │ └── window.test.ts │ │ │ │ │ ├── cn.ts │ │ │ │ │ ├── date.ts │ │ │ │ │ ├── diff.ts │ │ │ │ │ ├── dom.ts │ │ │ │ │ ├── download.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inference.ts │ │ │ │ │ ├── letter.ts │ │ │ │ │ ├── merge.ts │ │ │ │ │ ├── nprogress.ts │ │ │ │ │ ├── resources.ts │ │ │ │ │ ├── state-handler.ts │ │ │ │ │ ├── to.ts │ │ │ │ │ ├── tree.ts │ │ │ │ │ ├── unique.ts │ │ │ │ │ ├── update-css-variables.ts │ │ │ │ │ ├── util.ts │ │ │ │ │ └── window.ts │ │ │ │ └── tsconfig.json │ │ │ └── typings/ │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.d.ts │ │ │ │ ├── basic.d.ts │ │ │ │ ├── helper.d.ts │ │ │ │ ├── index.ts │ │ │ │ ├── menu-record.ts │ │ │ │ ├── tabs.ts │ │ │ │ └── vue-router.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vue-router.d.ts │ │ ├── composables/ │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── use-sortable.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── use-is-mobile.ts │ │ │ │ ├── use-layout-style.ts │ │ │ │ ├── use-namespace.ts │ │ │ │ ├── use-priority-value.ts │ │ │ │ ├── use-scroll-lock.ts │ │ │ │ ├── use-simple-locale/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.ts │ │ │ │ │ └── messages.ts │ │ │ │ └── use-sortable.ts │ │ │ └── tsconfig.json │ │ ├── preferences/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── config.test.ts.snap │ │ │ │ ├── config.test.ts │ │ │ │ └── preferences.test.ts │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preferences.ts │ │ │ │ ├── types.ts │ │ │ │ ├── update-css-variables.ts │ │ │ │ └── use-preferences.ts │ │ │ └── tsconfig.json │ │ └── ui-kit/ │ │ ├── README.md │ │ ├── form-ui/ │ │ │ ├── __tests__/ │ │ │ │ └── form-api.test.ts │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── postcss.config.mjs │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ └── form-actions.vue │ │ │ │ ├── config.ts │ │ │ │ ├── form-api.ts │ │ │ │ ├── form-render/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── dependencies.ts │ │ │ │ │ ├── expandable.ts │ │ │ │ │ ├── form-field.vue │ │ │ │ │ ├── form-label.vue │ │ │ │ │ ├── form.vue │ │ │ │ │ ├── helper.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ ├── use-form-context.ts │ │ │ │ ├── use-vben-form.ts │ │ │ │ ├── vben-form.vue │ │ │ │ └── vben-use-form.vue │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ ├── layout-ui/ │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── postcss.config.mjs │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout-content.vue │ │ │ │ │ ├── layout-footer.vue │ │ │ │ │ ├── layout-header.vue │ │ │ │ │ ├── layout-sidebar.vue │ │ │ │ │ ├── layout-tabbar.vue │ │ │ │ │ └── widgets/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── sidebar-collapse-button.vue │ │ │ │ │ └── sidebar-fixed-button.vue │ │ │ │ ├── hooks/ │ │ │ │ │ └── use-layout.ts │ │ │ │ ├── index.ts │ │ │ │ ├── vben-layout.ts │ │ │ │ └── vben-layout.vue │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ ├── menu-ui/ │ │ │ ├── README.md │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── postcss.config.mjs │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── collapse-transition.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── menu-badge-dot.vue │ │ │ │ │ ├── menu-badge.vue │ │ │ │ │ ├── menu-item.vue │ │ │ │ │ ├── menu.vue │ │ │ │ │ ├── normal-menu/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── normal-menu.ts │ │ │ │ │ │ └── normal-menu.vue │ │ │ │ │ ├── sub-menu-content.vue │ │ │ │ │ └── sub-menu.vue │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-menu-context.ts │ │ │ │ │ ├── use-menu-scroll.ts │ │ │ │ │ └── use-menu.ts │ │ │ │ ├── index.ts │ │ │ │ ├── menu.vue │ │ │ │ ├── sub-menu.vue │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── index.ts │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ ├── popup-ui/ │ │ │ ├── build.config.ts │ │ │ ├── package.json │ │ │ ├── postcss.config.mjs │ │ │ ├── src/ │ │ │ │ ├── alert/ │ │ │ │ │ ├── AlertBuilder.ts │ │ │ │ │ ├── alert.ts │ │ │ │ │ ├── alert.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── drawer/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── drawer-api.test.ts │ │ │ │ │ ├── drawer-api.ts │ │ │ │ │ ├── drawer.ts │ │ │ │ │ ├── drawer.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-drawer.ts │ │ │ │ ├── index.ts │ │ │ │ └── modal/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── modal-api.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modal-api.ts │ │ │ │ ├── modal.ts │ │ │ │ ├── modal.vue │ │ │ │ ├── use-modal-draggable.ts │ │ │ │ └── use-modal.ts │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ ├── shadcn-ui/ │ │ │ ├── build.config.ts │ │ │ ├── components.json │ │ │ ├── package.json │ │ │ ├── postcss.config.mjs │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── avatar/ │ │ │ │ │ │ ├── avatar.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── back-top/ │ │ │ │ │ │ ├── back-top.vue │ │ │ │ │ │ ├── backtop.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── use-backtop.ts │ │ │ │ │ ├── breadcrumb/ │ │ │ │ │ │ ├── breadcrumb-background.vue │ │ │ │ │ │ ├── breadcrumb-view.vue │ │ │ │ │ │ ├── breadcrumb.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── button-group.vue │ │ │ │ │ │ ├── button.ts │ │ │ │ │ │ ├── button.vue │ │ │ │ │ │ ├── check-button-group.vue │ │ │ │ │ │ ├── icon-button.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── checkbox/ │ │ │ │ │ │ ├── checkbox.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context-menu/ │ │ │ │ │ │ ├── context-menu.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── interface.ts │ │ │ │ │ ├── count-to-animator/ │ │ │ │ │ │ ├── count-to-animator.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ │ ├── dropdown-menu.vue │ │ │ │ │ │ ├── dropdown-radio-menu.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── interface.ts │ │ │ │ │ ├── expandable-arrow/ │ │ │ │ │ │ ├── expandable-arrow.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── full-screen/ │ │ │ │ │ │ ├── full-screen.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hover-card/ │ │ │ │ │ │ ├── hover-card.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── icon/ │ │ │ │ │ │ ├── icon.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── input-captcha/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── input-captcha.vue │ │ │ │ │ ├── input-password/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── input-password.vue │ │ │ │ │ │ └── password-strength.vue │ │ │ │ │ ├── logo/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── logo.vue │ │ │ │ │ ├── pin-input/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── input.vue │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── popover/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── popover.vue │ │ │ │ │ ├── render-content/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── render-content.vue │ │ │ │ │ ├── scrollbar/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── scrollbar.vue │ │ │ │ │ ├── segmented/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── segmented.vue │ │ │ │ │ │ ├── tabs-indicator.vue │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── select/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── select.vue │ │ │ │ │ ├── spine-text/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── spine-text.vue │ │ │ │ │ ├── spinner/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loading.vue │ │ │ │ │ │ └── spinner.vue │ │ │ │ │ └── tooltip/ │ │ │ │ │ ├── help-tooltip.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── tooltip.vue │ │ │ │ ├── index.ts │ │ │ │ └── ui/ │ │ │ │ ├── accordion/ │ │ │ │ │ ├── Accordion.vue │ │ │ │ │ ├── AccordionContent.vue │ │ │ │ │ ├── AccordionItem.vue │ │ │ │ │ ├── AccordionTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── alert-dialog/ │ │ │ │ │ ├── AlertDialog.vue │ │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ │ ├── AlertDialogOverlay.vue │ │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── avatar/ │ │ │ │ │ ├── Avatar.vue │ │ │ │ │ ├── AvatarFallback.vue │ │ │ │ │ ├── AvatarImage.vue │ │ │ │ │ ├── avatar.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── badge/ │ │ │ │ │ ├── Badge.vue │ │ │ │ │ ├── badge.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ │ ├── BreadcrumbEllipsis.vue │ │ │ │ │ ├── BreadcrumbItem.vue │ │ │ │ │ ├── BreadcrumbLink.vue │ │ │ │ │ ├── BreadcrumbList.vue │ │ │ │ │ ├── BreadcrumbPage.vue │ │ │ │ │ ├── BreadcrumbSeparator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button/ │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── button.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── card/ │ │ │ │ │ ├── Card.vue │ │ │ │ │ ├── CardContent.vue │ │ │ │ │ ├── CardDescription.vue │ │ │ │ │ ├── CardFooter.vue │ │ │ │ │ ├── CardHeader.vue │ │ │ │ │ ├── CardTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── Checkbox.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── context-menu/ │ │ │ │ │ ├── ContextMenu.vue │ │ │ │ │ ├── ContextMenuCheckboxItem.vue │ │ │ │ │ ├── ContextMenuContent.vue │ │ │ │ │ ├── ContextMenuGroup.vue │ │ │ │ │ ├── ContextMenuItem.vue │ │ │ │ │ ├── ContextMenuLabel.vue │ │ │ │ │ ├── ContextMenuPortal.vue │ │ │ │ │ ├── ContextMenuRadioGroup.vue │ │ │ │ │ ├── ContextMenuRadioItem.vue │ │ │ │ │ ├── ContextMenuSeparator.vue │ │ │ │ │ ├── ContextMenuShortcut.vue │ │ │ │ │ ├── ContextMenuSub.vue │ │ │ │ │ ├── ContextMenuSubContent.vue │ │ │ │ │ ├── ContextMenuSubTrigger.vue │ │ │ │ │ ├── ContextMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dialog/ │ │ │ │ │ ├── Dialog.vue │ │ │ │ │ ├── DialogClose.vue │ │ │ │ │ ├── DialogContent.vue │ │ │ │ │ ├── DialogDescription.vue │ │ │ │ │ ├── DialogFooter.vue │ │ │ │ │ ├── DialogHeader.vue │ │ │ │ │ ├── DialogOverlay.vue │ │ │ │ │ ├── DialogScrollContent.vue │ │ │ │ │ ├── DialogTitle.vue │ │ │ │ │ ├── DialogTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ ├── DropdownMenu.vue │ │ │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ │ │ ├── DropdownMenuContent.vue │ │ │ │ │ ├── DropdownMenuGroup.vue │ │ │ │ │ ├── DropdownMenuItem.vue │ │ │ │ │ ├── DropdownMenuLabel.vue │ │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ │ ├── DropdownMenuRadioItem.vue │ │ │ │ │ ├── DropdownMenuSeparator.vue │ │ │ │ │ ├── DropdownMenuShortcut.vue │ │ │ │ │ ├── DropdownMenuSub.vue │ │ │ │ │ ├── DropdownMenuSubContent.vue │ │ │ │ │ ├── DropdownMenuSubTrigger.vue │ │ │ │ │ ├── DropdownMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── form/ │ │ │ │ │ ├── FormControl.vue │ │ │ │ │ ├── FormDescription.vue │ │ │ │ │ ├── FormItem.vue │ │ │ │ │ ├── FormLabel.vue │ │ │ │ │ ├── FormMessage.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── injectionKeys.ts │ │ │ │ │ └── useFormField.ts │ │ │ │ ├── hover-card/ │ │ │ │ │ ├── HoverCard.vue │ │ │ │ │ ├── HoverCardContent.vue │ │ │ │ │ ├── HoverCardTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── Input.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── label/ │ │ │ │ │ ├── Label.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── number-field/ │ │ │ │ │ ├── NumberField.vue │ │ │ │ │ ├── NumberFieldContent.vue │ │ │ │ │ ├── NumberFieldDecrement.vue │ │ │ │ │ ├── NumberFieldIncrement.vue │ │ │ │ │ ├── NumberFieldInput.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pagination/ │ │ │ │ │ ├── PaginationEllipsis.vue │ │ │ │ │ ├── PaginationFirst.vue │ │ │ │ │ ├── PaginationLast.vue │ │ │ │ │ ├── PaginationNext.vue │ │ │ │ │ ├── PaginationPrev.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pin-input/ │ │ │ │ │ ├── PinInput.vue │ │ │ │ │ ├── PinInputGroup.vue │ │ │ │ │ ├── PinInputInput.vue │ │ │ │ │ ├── PinInputSeparator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── popover/ │ │ │ │ │ ├── Popover.vue │ │ │ │ │ ├── PopoverContent.vue │ │ │ │ │ ├── PopoverTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── radio-group/ │ │ │ │ │ ├── RadioGroup.vue │ │ │ │ │ ├── RadioGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── resizable/ │ │ │ │ │ ├── ResizableHandle.vue │ │ │ │ │ ├── ResizablePanelGroup.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── scroll-area/ │ │ │ │ │ ├── ScrollArea.vue │ │ │ │ │ ├── ScrollBar.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── select/ │ │ │ │ │ ├── Select.vue │ │ │ │ │ ├── SelectContent.vue │ │ │ │ │ ├── SelectGroup.vue │ │ │ │ │ ├── SelectItem.vue │ │ │ │ │ ├── SelectItemText.vue │ │ │ │ │ ├── SelectLabel.vue │ │ │ │ │ ├── SelectScrollDownButton.vue │ │ │ │ │ ├── SelectScrollUpButton.vue │ │ │ │ │ ├── SelectSeparator.vue │ │ │ │ │ ├── SelectTrigger.vue │ │ │ │ │ ├── SelectValue.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── separator/ │ │ │ │ │ ├── Separator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sheet/ │ │ │ │ │ ├── Sheet.vue │ │ │ │ │ ├── SheetClose.vue │ │ │ │ │ ├── SheetContent.vue │ │ │ │ │ ├── SheetDescription.vue │ │ │ │ │ ├── SheetFooter.vue │ │ │ │ │ ├── SheetHeader.vue │ │ │ │ │ ├── SheetOverlay.vue │ │ │ │ │ ├── SheetTitle.vue │ │ │ │ │ ├── SheetTrigger.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── sheet.ts │ │ │ │ ├── switch/ │ │ │ │ │ ├── Switch.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tabs/ │ │ │ │ │ ├── Tabs.vue │ │ │ │ │ ├── TabsContent.vue │ │ │ │ │ ├── TabsList.vue │ │ │ │ │ ├── TabsTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── textarea/ │ │ │ │ │ ├── Textarea.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── toggle/ │ │ │ │ │ ├── Toggle.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── toggle.ts │ │ │ │ ├── toggle-group/ │ │ │ │ │ ├── ToggleGroup.vue │ │ │ │ │ ├── ToggleGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tooltip/ │ │ │ │ │ ├── Tooltip.vue │ │ │ │ │ ├── TooltipContent.vue │ │ │ │ │ ├── TooltipProvider.vue │ │ │ │ │ ├── TooltipTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ └── tree/ │ │ │ │ ├── index.ts │ │ │ │ ├── tree.vue │ │ │ │ └── types.ts │ │ │ ├── tailwind.config.mjs │ │ │ └── tsconfig.json │ │ └── tabs-ui/ │ │ ├── build.config.ts │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── index.ts │ │ │ │ ├── tabs/ │ │ │ │ │ └── tabs.vue │ │ │ │ ├── tabs-chrome/ │ │ │ │ │ └── tabs.vue │ │ │ │ └── widgets/ │ │ │ │ ├── index.ts │ │ │ │ ├── tool-more.vue │ │ │ │ └── tool-screen.vue │ │ │ ├── index.ts │ │ │ ├── tabs-view.vue │ │ │ ├── types.ts │ │ │ ├── use-tabs-drag.ts │ │ │ └── use-tabs-view-scroll.ts │ │ ├── tailwind.config.mjs │ │ └── tsconfig.json │ ├── constants/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── core.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── effects/ │ │ ├── README.md │ │ ├── access/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── access-control.vue │ │ │ │ ├── accessible.ts │ │ │ │ ├── directive.ts │ │ │ │ ├── index.ts │ │ │ │ └── use-access.ts │ │ │ └── tsconfig.json │ │ ├── common-ui/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── components/ │ │ │ │ │ ├── api-component/ │ │ │ │ │ │ ├── api-component.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── captcha/ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ └── useCaptchaPoints.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── point-selection-captcha/ │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ └── point-selection-captcha-card.vue │ │ │ │ │ │ ├── slider-captcha/ │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ ├── slider-captcha-action.vue │ │ │ │ │ │ │ ├── slider-captcha-bar.vue │ │ │ │ │ │ │ └── slider-captcha-content.vue │ │ │ │ │ │ ├── slider-rotate-captcha/ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── slider-translate-captcha/ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── code-mirror/ │ │ │ │ │ │ ├── code-mirror.vue │ │ │ │ │ │ ├── data.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── col-page/ │ │ │ │ │ │ ├── col-page.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── count-to/ │ │ │ │ │ │ ├── count-to.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── ellipsis-text/ │ │ │ │ │ │ ├── ellipsis-text.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── icon-picker/ │ │ │ │ │ │ ├── icon-picker.vue │ │ │ │ │ │ ├── icons.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── json-preview/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── json-preview.vue │ │ │ │ │ ├── json-viewer/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ ├── style.scss │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── loading/ │ │ │ │ │ │ ├── directive.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loading.vue │ │ │ │ │ │ └── spinner.vue │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ ├── editor.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── preview.vue │ │ │ │ │ ├── page/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── page.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── page.vue │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── resize/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── resize.vue │ │ │ │ │ ├── tippy/ │ │ │ │ │ │ ├── directive.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── tree/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── tree.vue │ │ │ │ ├── index.ts │ │ │ │ └── ui/ │ │ │ │ ├── about/ │ │ │ │ │ ├── about.ts │ │ │ │ │ ├── about.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── authentication/ │ │ │ │ │ ├── auth-title.vue │ │ │ │ │ ├── code-login.vue │ │ │ │ │ ├── dingding-login.vue │ │ │ │ │ ├── forget-password.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── login-expired-modal.vue │ │ │ │ │ ├── login.vue │ │ │ │ │ ├── qrcode-login.vue │ │ │ │ │ ├── register.vue │ │ │ │ │ ├── third-party-login.vue │ │ │ │ │ └── types.ts │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── analysis/ │ │ │ │ │ │ ├── analysis-chart-card.vue │ │ │ │ │ │ ├── analysis-charts-tabs.vue │ │ │ │ │ │ ├── analysis-overview.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── typing.ts │ │ │ │ │ └── workbench/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── workbench-header.vue │ │ │ │ │ ├── workbench-project.vue │ │ │ │ │ ├── workbench-quick-nav.vue │ │ │ │ │ ├── workbench-todo.vue │ │ │ │ │ └── workbench-trends.vue │ │ │ │ ├── fallback/ │ │ │ │ │ ├── fallback.ts │ │ │ │ │ ├── fallback.vue │ │ │ │ │ ├── icons/ │ │ │ │ │ │ ├── icon-403.vue │ │ │ │ │ │ ├── icon-404.vue │ │ │ │ │ │ ├── icon-500.vue │ │ │ │ │ │ ├── icon-coming-soon.vue │ │ │ │ │ │ └── icon-offline.vue │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── hooks/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-app-config.ts │ │ │ │ ├── use-content-maximize.ts │ │ │ │ ├── use-design-tokens.ts │ │ │ │ ├── use-hover-toggle.ts │ │ │ │ ├── use-pagination.ts │ │ │ │ ├── use-refresh.ts │ │ │ │ ├── use-tabs.ts │ │ │ │ └── use-watermark.ts │ │ │ └── tsconfig.json │ │ ├── layouts/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── authentication/ │ │ │ │ │ ├── authentication.vue │ │ │ │ │ ├── form.vue │ │ │ │ │ ├── icons/ │ │ │ │ │ │ └── slogan.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── toolbar.vue │ │ │ │ │ └── types.ts │ │ │ │ ├── basic/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── content/ │ │ │ │ │ │ ├── content-spinner.vue │ │ │ │ │ │ ├── content.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── use-content-spinner.ts │ │ │ │ │ ├── copyright/ │ │ │ │ │ │ ├── copyright.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── footer/ │ │ │ │ │ │ ├── footer.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── header/ │ │ │ │ │ │ ├── header.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout.vue │ │ │ │ │ ├── menu/ │ │ │ │ │ │ ├── extra-menu.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── menu.vue │ │ │ │ │ │ ├── mixed-menu.vue │ │ │ │ │ │ ├── use-extra-menu.ts │ │ │ │ │ │ ├── use-mixed-menu.ts │ │ │ │ │ │ └── use-navigation.ts │ │ │ │ │ └── tabbar/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── tabbar.vue │ │ │ │ │ └── use-tabbar.ts │ │ │ │ ├── iframe/ │ │ │ │ │ ├── iframe-router-view.vue │ │ │ │ │ ├── iframe-view.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── widgets/ │ │ │ │ ├── breadcrumb.vue │ │ │ │ ├── check-updates/ │ │ │ │ │ ├── check-updates.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── color-toggle.vue │ │ │ │ ├── global-search/ │ │ │ │ │ ├── global-search.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── search-panel.vue │ │ │ │ ├── index.ts │ │ │ │ ├── language-toggle.vue │ │ │ │ ├── layout-toggle.vue │ │ │ │ ├── lock-screen/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lock-screen-modal.vue │ │ │ │ │ └── lock-screen.vue │ │ │ │ ├── notification/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── notification.vue │ │ │ │ │ └── types.ts │ │ │ │ ├── preferences/ │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── block.vue │ │ │ │ │ │ ├── checkbox-item.vue │ │ │ │ │ │ ├── general/ │ │ │ │ │ │ │ ├── animation.vue │ │ │ │ │ │ │ └── general.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── input-item.vue │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ ├── breadcrumb.vue │ │ │ │ │ │ │ ├── content.vue │ │ │ │ │ │ │ ├── copyright.vue │ │ │ │ │ │ │ ├── footer.vue │ │ │ │ │ │ │ ├── header.vue │ │ │ │ │ │ │ ├── layout.vue │ │ │ │ │ │ │ ├── navigation.vue │ │ │ │ │ │ │ ├── sidebar.vue │ │ │ │ │ │ │ ├── tabbar.vue │ │ │ │ │ │ │ └── widget.vue │ │ │ │ │ │ ├── number-field-item.vue │ │ │ │ │ │ ├── select-item.vue │ │ │ │ │ │ ├── shortcut-keys/ │ │ │ │ │ │ │ └── global.vue │ │ │ │ │ │ ├── switch-item.vue │ │ │ │ │ │ ├── theme/ │ │ │ │ │ │ │ ├── builtin.vue │ │ │ │ │ │ │ ├── color-mode.vue │ │ │ │ │ │ │ ├── radius.vue │ │ │ │ │ │ │ └── theme.vue │ │ │ │ │ │ └── toggle-item.vue │ │ │ │ │ ├── icons/ │ │ │ │ │ │ ├── content-compact.vue │ │ │ │ │ │ ├── full-content.vue │ │ │ │ │ │ ├── header-mixed-nav.vue │ │ │ │ │ │ ├── header-nav.vue │ │ │ │ │ │ ├── header-sidebar-nav.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── mixed-nav.vue │ │ │ │ │ │ ├── setting.vue │ │ │ │ │ │ ├── sidebar-mixed-nav.vue │ │ │ │ │ │ └── sidebar-nav.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── preferences-button.vue │ │ │ │ │ ├── preferences-drawer.vue │ │ │ │ │ ├── preferences.vue │ │ │ │ │ └── use-open-preferences.ts │ │ │ │ ├── theme-toggle/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── theme-button.vue │ │ │ │ │ └── theme-toggle.vue │ │ │ │ └── user-dropdown/ │ │ │ │ ├── index.ts │ │ │ │ └── user-dropdown.vue │ │ │ └── tsconfig.json │ │ ├── plugins/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── echarts/ │ │ │ │ │ ├── echarts-ui.vue │ │ │ │ │ ├── echarts.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-echarts.ts │ │ │ │ ├── motion/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ └── vxe-table/ │ │ │ │ ├── api.ts │ │ │ │ ├── extends.ts │ │ │ │ ├── index.ts │ │ │ │ ├── init.ts │ │ │ │ ├── style.css │ │ │ │ ├── types.ts │ │ │ │ ├── use-vxe-grid.ts │ │ │ │ └── use-vxe-grid.vue │ │ │ └── tsconfig.json │ │ └── request/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── request-client/ │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── downloader.test.ts │ │ │ │ ├── downloader.ts │ │ │ │ ├── interceptor.ts │ │ │ │ ├── sse.test.ts │ │ │ │ ├── sse.ts │ │ │ │ ├── uploader.test.ts │ │ │ │ └── uploader.ts │ │ │ ├── preset-interceptors.ts │ │ │ ├── request-client.test.ts │ │ │ ├── request-client.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── icons/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── iconify/ │ │ │ │ └── index.ts │ │ │ ├── iconify-offline/ │ │ │ │ ├── index.ts │ │ │ │ └── menu-icons.ts │ │ │ ├── icons/ │ │ │ │ └── empty-icon.vue │ │ │ ├── index.ts │ │ │ └── svg/ │ │ │ ├── index.ts │ │ │ └── load.ts │ │ └── tsconfig.json │ ├── locales/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── i18n.ts │ │ │ ├── index.ts │ │ │ ├── langs/ │ │ │ │ ├── en-US/ │ │ │ │ │ ├── authentication.json │ │ │ │ │ ├── common.json │ │ │ │ │ ├── preferences.json │ │ │ │ │ └── ui.json │ │ │ │ └── zh-CN/ │ │ │ │ ├── authentication.json │ │ │ │ ├── common.json │ │ │ │ ├── preferences.json │ │ │ │ └── ui.json │ │ │ └── typing.ts │ │ └── tsconfig.json │ ├── preferences/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── stores/ │ │ ├── package.json │ │ ├── shim-pinia.d.ts │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ ├── access.test.ts │ │ │ │ ├── access.ts │ │ │ │ ├── index.ts │ │ │ │ ├── tabbar.test.ts │ │ │ │ ├── tabbar.ts │ │ │ │ ├── user.test.ts │ │ │ │ └── user.ts │ │ │ └── setup.ts │ │ └── tsconfig.json │ ├── styles/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── antd/ │ │ │ │ └── index.css │ │ │ ├── ele/ │ │ │ │ └── index.css │ │ │ ├── global/ │ │ │ │ └── index.scss │ │ │ ├── index.ts │ │ │ └── naive/ │ │ │ └── index.css │ │ └── tsconfig.json │ ├── types/ │ │ ├── README.md │ │ ├── global.d.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── user.ts │ │ └── tsconfig.json │ └── utils/ │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── encryption/ │ │ │ ├── base.ts │ │ │ ├── crypto.ts │ │ │ ├── impl/ │ │ │ │ ├── aes.ts │ │ │ │ ├── rsa.ts │ │ │ │ ├── sm2.ts │ │ │ │ └── sm4.ts │ │ │ └── index.ts │ │ ├── helpers/ │ │ │ ├── __tests__/ │ │ │ │ ├── enum-options.test.ts │ │ │ │ ├── find-menu-by-path.test.ts │ │ │ │ ├── generate-menus.test.ts │ │ │ │ ├── generate-routes-frontend.test.ts │ │ │ │ └── merge-route-modules.test.ts │ │ │ ├── enum-options.ts │ │ │ ├── find-menu-by-path.ts │ │ │ ├── generate-menus.ts │ │ │ ├── generate-routes-backend.ts │ │ │ ├── generate-routes-frontend.ts │ │ │ ├── get-popup-container.ts │ │ │ ├── index.ts │ │ │ ├── merge-route-modules.ts │ │ │ ├── mitt.ts │ │ │ ├── request.ts │ │ │ ├── reset-routes.ts │ │ │ ├── safe.ts │ │ │ ├── tree.ts │ │ │ ├── unmount-global-loading.ts │ │ │ └── uuid.ts │ │ └── index.ts │ └── tsconfig.json ├── pnpm-workspace.yaml ├── scripts/ │ ├── clean.mjs │ ├── deploy/ │ │ ├── Dockerfile │ │ ├── build-local-docker-image.sh │ │ └── nginx.conf │ ├── turbo-run/ │ │ ├── README.md │ │ ├── bin/ │ │ │ └── turbo-run.mjs │ │ ├── build.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── run.ts │ │ └── tsconfig.json │ └── vsh/ │ ├── README.md │ ├── bin/ │ │ └── vsh.mjs │ ├── build.config.ts │ ├── package.json │ ├── src/ │ │ ├── check-circular/ │ │ │ └── index.ts │ │ ├── check-dep/ │ │ │ └── index.ts │ │ ├── code-workspace/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── lint/ │ │ │ └── index.ts │ │ └── publint/ │ │ └── index.ts │ └── tsconfig.json ├── stylelint.config.mjs └── turbo.json