├── .codecov.yml ├── .cz-config.js ├── .dockerignore ├── .editorconfig ├── .erda └── pipelines │ └── ci-build-ce.yml ├── .eslintignore ├── .eslintrc.js ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ └── bug-template.md ├── PULL_REQUEST_TEMPLATE.md ├── prlint.json ├── semantic.yml └── workflows │ ├── codecov.yml │ ├── codeql-analysis.yml │ ├── git-sync.yml │ └── license-check.yml ├── .gitignore ├── .husky ├── .gitignore ├── commit-msg └── pre-commit ├── .licenserc.json ├── .npmrc ├── .prettierrc.js ├── .stylelintignore ├── .stylelintrc.js ├── Dockerfile ├── LICENSE ├── README.md ├── VERSION ├── cert ├── dev │ ├── server.crt │ ├── server.csr │ ├── server.key │ └── server.pass.key └── test │ ├── server.crt │ ├── server.csr │ ├── server.key │ └── server.pass.key ├── cli ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── bin │ └── erda.ts ├── lib │ ├── add-license.ts │ ├── build-enterprise-online.ts │ ├── build-enterprise.ts │ ├── build-online.ts │ ├── build.ts │ ├── check-build-status.ts │ ├── check-license.ts │ ├── clear-installed-dependencies.ts │ ├── fetch-image-content.ts │ ├── i18n.ts │ ├── init.ts │ ├── local-icon.ts │ ├── pkg-version-setter.ts │ ├── service-generator.ts │ └── util │ │ ├── env.ts │ │ ├── file-walker.ts │ │ ├── gen-version.ts │ │ ├── git-commands.ts │ │ ├── google-translate.ts │ │ ├── i18n-config.ts │ │ ├── i18n-extract.ts │ │ ├── i18n-utils.ts │ │ ├── log.ts │ │ └── youdao-translate.ts ├── package.json ├── templates │ └── license.ts └── tsconfig.json ├── commitlint.config.js ├── core ├── package.json ├── src │ ├── agent.ts │ ├── config.ts │ ├── cube.ts │ ├── framework │ │ ├── regist-router.tsx │ │ └── regist-store.ts │ ├── history.ts │ ├── i18n.ts │ ├── index.tsx │ ├── service │ │ └── index.ts │ ├── stores │ │ ├── loading.ts │ │ ├── route.ts │ │ └── user-map.ts │ ├── types │ │ ├── global.d.ts │ │ └── shell.d.ts │ └── utils │ │ ├── event-hub.ts │ │ ├── global-space.ts │ │ ├── mf-helper.ts │ │ └── ws.ts ├── tsconfig.json ├── webpack.analyze.js ├── webpack.config.js ├── webpack.development.js └── webpack.production.js ├── cspell.json ├── docs ├── files │ ├── architecture.jpg │ └── logo.png ├── introduction_en.md └── introduction_zh.md ├── erda.yml ├── f2elint.config.js ├── install-cli.js ├── locales ├── en.json └── zh.json ├── modules ├── components │ ├── .dumi │ │ └── theme │ │ │ └── layout.tsx │ ├── .eslintrc.js │ ├── .fatherrc.ts │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.js │ ├── .umirc.ts │ ├── CHANGELOG.md │ ├── README.md │ ├── __tests__ │ │ ├── config-provider │ │ │ └── index.test.tsx │ │ ├── ellipsis │ │ │ └── index.test.tsx │ │ ├── extend-expect.ts │ │ ├── form-modal │ │ │ └── index.test.tsx │ │ ├── form │ │ │ └── index.test.tsx │ │ ├── icon │ │ │ └── index.test.tsx │ │ ├── pagination │ │ │ └── index.test.tsx │ │ ├── setupJest.ts │ │ ├── table │ │ │ ├── batch-operation.test.tsx │ │ │ └── index.test.tsx │ │ ├── types │ │ │ └── index.d.ts │ │ └── utils │ │ │ └── hooks │ │ │ └── index.test.tsx │ ├── babel.config.js │ ├── cspell.json │ ├── docs │ │ ├── components │ │ │ ├── configProvider │ │ │ │ ├── demos │ │ │ │ │ └── basic.tsx │ │ │ │ └── index.md │ │ │ ├── ellipsis │ │ │ │ ├── demos │ │ │ │ │ └── basic.tsx │ │ │ │ └── index.md │ │ │ ├── form │ │ │ │ ├── demos │ │ │ │ │ ├── array │ │ │ │ │ │ ├── array-field.tsx │ │ │ │ │ │ ├── array-object.tsx │ │ │ │ │ │ └── array-tabs.tsx │ │ │ │ │ ├── async-dataSource.tsx │ │ │ │ │ ├── basic.tsx │ │ │ │ │ ├── custom-comp.tsx │ │ │ │ │ ├── edit.tsx │ │ │ │ │ ├── form-tabs.tsx │ │ │ │ │ ├── layout │ │ │ │ │ │ ├── custom.tsx │ │ │ │ │ │ ├── multi-col.tsx │ │ │ │ │ │ └── none-form.tsx │ │ │ │ │ ├── linkage │ │ │ │ │ │ ├── async1.tsx │ │ │ │ │ │ ├── async2.tsx │ │ │ │ │ │ ├── dependency.tsx │ │ │ │ │ │ ├── one-to-one.tsx │ │ │ │ │ │ └── self.tsx │ │ │ │ │ ├── performance │ │ │ │ │ │ ├── antd.tsx │ │ │ │ │ │ └── erda.tsx │ │ │ │ │ ├── reset.tsx │ │ │ │ │ ├── selectTable.tsx │ │ │ │ │ ├── step-form.tsx │ │ │ │ │ └── validator.tsx │ │ │ │ └── index.md │ │ │ ├── formModal │ │ │ │ ├── demos │ │ │ │ │ ├── basic.tsx │ │ │ │ │ ├── edit.tsx │ │ │ │ │ └── exact-title.tsx │ │ │ │ └── index.md │ │ │ ├── icon │ │ │ │ ├── demos │ │ │ │ │ ├── basic.tsx │ │ │ │ │ ├── color-size.tsx │ │ │ │ │ └── custom.tsx │ │ │ │ └── index.md │ │ │ ├── pagination │ │ │ │ ├── demos │ │ │ │ │ └── basic.tsx │ │ │ │ └── index.md │ │ │ └── table │ │ │ │ ├── demos │ │ │ │ ├── basic.tsx │ │ │ │ ├── batch-operation.tsx │ │ │ │ ├── empty-text.tsx │ │ │ │ ├── pagination.tsx │ │ │ │ ├── row-action.tsx │ │ │ │ ├── row-selection.tsx │ │ │ │ └── sort.tsx │ │ │ │ └── index.md │ │ ├── index.md │ │ └── logo.png │ ├── gulpfile-build.js │ ├── gulpfile.js │ ├── jest.config.js │ ├── lint-staged.config.js │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── renovate.json │ ├── src │ │ ├── _util │ │ │ └── hooks.ts │ │ ├── context-provider │ │ │ ├── index.tsx │ │ │ └── style │ │ │ │ └── index.tsx │ │ ├── ellipsis │ │ │ ├── index.tsx │ │ │ └── style │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ ├── form-modal │ │ │ ├── index.tsx │ │ │ └── style │ │ │ │ └── index.ts │ │ ├── form │ │ │ ├── array-tabs │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── interface.ts │ │ │ ├── select-table │ │ │ │ ├── index.tsx │ │ │ │ └── style.less │ │ │ ├── style │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── utils.tsx │ │ ├── icon │ │ │ ├── index.tsx │ │ │ └── style │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ ├── index.tsx │ │ ├── locale-provider │ │ │ ├── context.ts │ │ │ └── index.tsx │ │ ├── locale │ │ │ ├── default.tsx │ │ │ ├── en_US.tsx │ │ │ └── zh_CN.tsx │ │ ├── pagination │ │ │ ├── index.tsx │ │ │ └── style │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ ├── style.ts │ │ ├── table │ │ │ ├── batch-operation.tsx │ │ │ ├── index.tsx │ │ │ ├── interface.ts │ │ │ ├── sorter.tsx │ │ │ ├── style │ │ │ │ ├── batch-operation.less │ │ │ │ ├── index.less │ │ │ │ ├── index.ts │ │ │ │ ├── table-config-header.less │ │ │ │ └── table-footer.less │ │ │ ├── table-config-header.tsx │ │ │ ├── table-footer.tsx │ │ │ └── utils.tsx │ │ ├── themes │ │ │ ├── color.less │ │ │ └── default.less │ │ └── types │ │ │ └── global.d.ts │ ├── tsconfig-jest.json │ ├── tsconfig.json │ ├── utils │ │ └── transformLess.js │ └── webpack.config.js ├── market │ ├── .env │ ├── .gitignore │ ├── craco.config.js │ ├── package.json │ ├── paths.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ └── manifest.json │ ├── src │ │ ├── App.tsx │ │ ├── images │ │ │ ├── download │ │ │ │ ├── download-bg1@2x.png │ │ │ │ ├── download-bg2@2x.png │ │ │ │ ├── download-bg@2x.png │ │ │ │ ├── download-c@2x.png │ │ │ │ ├── download-r1@2x.png │ │ │ │ ├── download-s1@2x.png │ │ │ │ ├── download-y1@2x.png │ │ │ │ └── download-y2@2x.png │ │ │ └── favicon.ico │ │ ├── index.js │ │ ├── pages │ │ │ ├── download-pc.scss │ │ │ ├── download-pc.tsx │ │ │ ├── download.scss │ │ │ ├── download.tsx │ │ │ └── utils.ts │ │ ├── react-app-env.d.ts │ │ └── styles │ │ │ ├── _resources.scss │ │ │ ├── _util.scss │ │ │ └── _variable.scss │ └── tsconfig.json └── uc │ ├── .env │ ├── .gitignore │ ├── craco.config.js │ ├── package.json │ ├── paths.json │ ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── manifest.json │ └── robots.txt │ ├── src │ ├── common │ │ ├── components │ │ │ ├── container.css │ │ │ ├── container.tsx │ │ │ ├── form-input.tsx │ │ │ └── message.tsx │ │ ├── history.ts │ │ ├── i18n.ts │ │ ├── index.ts │ │ └── utils.tsx │ ├── images │ │ ├── default-user.svg │ │ ├── edit.svg │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── login.png │ │ ├── login.svg │ │ ├── logo.svg │ │ ├── s_error.svg │ │ ├── s_info.svg │ │ ├── s_success.svg │ │ └── s_warning.svg │ ├── index.css │ ├── index.js │ ├── locales │ │ ├── en.json │ │ └── zh.json │ ├── ory │ │ ├── errors.ts │ │ ├── flow.tsx │ │ ├── index.tsx │ │ ├── node.tsx │ │ └── utils.tsx │ ├── pages │ │ ├── login │ │ │ └── index.tsx │ │ ├── recovery │ │ │ └── index.tsx │ │ ├── registration │ │ │ └── index.tsx │ │ └── setting │ │ │ └── index.tsx │ ├── react-app-env.d.ts │ ├── router.tsx │ ├── services │ │ └── uc.tsx │ └── types │ │ └── uc.d.ts │ ├── tailwind.config.js │ └── tsconfig.json ├── package.json ├── pipeline.yml ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── scheduler ├── .babelrc ├── .gitignore ├── nest-cli.json ├── package.json ├── src │ ├── app.module.ts │ ├── controllers │ │ ├── health.controller.ts │ │ ├── legacy-route.controller.ts │ │ ├── linkS-token.controller.ts │ │ ├── market.controller.ts │ │ ├── uc.controller.ts │ │ └── version.controller.ts │ ├── filters │ │ ├── error-catch.filter.ts │ │ └── not-found.filter.ts │ ├── main.ts │ ├── middlewares │ │ └── guard.middleware.ts │ ├── proxy.ts │ └── util.ts ├── tsconfig.build.json └── tsconfig.json └── shell ├── __mocks__ └── react.js ├── app ├── App-vite.tsx ├── App.tsx ├── agent.js ├── antd-default-props.tsx ├── antd-overwrite │ ├── avatar │ │ └── index.tsx │ ├── button │ │ └── index.tsx │ ├── input │ │ └── index.tsx │ ├── popconfirm │ │ └── index.tsx │ ├── range-picker │ │ └── index.tsx │ ├── select │ │ └── index.tsx │ ├── table │ │ ├── index.scss │ │ └── index.tsx │ ├── tabs │ │ └── index.tsx │ └── tag │ │ └── index.tsx ├── bootstrap.js ├── charts │ ├── components │ │ ├── bar-chart.jsx │ │ ├── chart-render.jsx │ │ ├── echarts.jsx │ │ ├── echarts.scss │ │ ├── hollow-pie-chart.jsx │ │ ├── map-chart.jsx │ │ ├── monitor-chart-new.jsx │ │ └── pie-chart.jsx │ ├── index.js │ ├── text-map.js │ ├── theme.js │ └── utils │ │ ├── convertor.ts │ │ ├── formatter.js │ │ ├── index.tsx │ │ ├── line-option.ts │ │ └── regist.tsx ├── common │ ├── __tests__ │ │ └── use-hook.test.tsx │ ├── components │ │ ├── add-member-modal │ │ │ ├── __tests__ │ │ │ │ ├── add-member-modal.test.tsx │ │ │ │ └── index.test.tsx │ │ │ ├── add-member-modal.tsx │ │ │ └── index.ts │ │ ├── addon-settings │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── addon-settings.scss │ │ │ ├── addon-settings.tsx │ │ │ └── index.tsx │ │ ├── authorize-member-modal │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── avatar │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── back-to-top │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── badge │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── base-list │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ └── list-item.test.tsx │ │ │ ├── index.scss │ │ │ ├── index.spec.d.ts │ │ │ ├── index.tsx │ │ │ └── list-item.tsx │ │ ├── batch-authorize-member-modal │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── batch-operation │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── board-grid │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── card-container │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── cards-layout │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── common-range-picker │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── comp-switcher │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── config-layout │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── configurable-filter │ │ │ ├── config-selector.scss │ │ │ ├── config-selector.tsx │ │ │ ├── external-item.scss │ │ │ ├── external-item.tsx │ │ │ ├── for__tests__ │ │ │ │ ├── config-selector.test.tsx │ │ │ │ ├── external-item.test.tsx │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── confirm-delete │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── contractive-filter │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── copy │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── crud-table │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── custom-filter │ │ │ └── index.tsx │ │ ├── debounce-search │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── delete-confirm │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── details-panel │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── dropdown-select-new │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── dropdown-select │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── duration │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── duration.scss │ │ │ └── index.tsx │ │ ├── edit-field │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── ellipsis │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── empty-holder │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── empty-list-holder │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── erda-alert │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── erda-icon │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── error-boundary │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── file-editor │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── file-select │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── filter-group │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── filter │ │ │ ├── __tests__ │ │ │ │ ├── base-filter.test.tsx │ │ │ │ └── index.test.tsx │ │ │ ├── base-filter.tsx │ │ │ └── index.tsx │ │ ├── form-builder │ │ │ ├── __tests__ │ │ │ │ ├── fields.test.tsx │ │ │ │ ├── form-builder.test.tsx │ │ │ │ ├── index.test.tsx │ │ │ │ └── readonly-field.test.tsx │ │ │ ├── fields.tsx │ │ │ ├── form-builder.tsx │ │ │ ├── index.tsx │ │ │ └── readonly-field.tsx │ │ ├── form-modal │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── head-operation-bar │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── holder │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── icon │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── if │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── image-upload │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── input-select │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── intro │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── json-checker │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── key-value-editor │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── key-value-list │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── key-value-table │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── key-value-textarea │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── kv-pair │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── lazy-render │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── load-more-selector │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── load-more │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── loading │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── log-roller │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── markdown-editor │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ └── upload-plugin.test.tsx │ │ │ ├── editor.tsx │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── upload-plugin.scss │ │ │ └── upload-plugin.tsx │ │ ├── markdown-render │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── member-selector │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── members-table │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ └── url-invite-modal.test.tsx │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ └── url-invite-modal.tsx │ │ ├── menu-popover │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── menu │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── metrics-monitor │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── monitor-chart │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── monitor │ │ │ ├── __tests__ │ │ │ │ ├── components │ │ │ │ │ ├── timeRangeSelector.test.tsx │ │ │ │ │ └── timeSelector.test.tsx │ │ │ │ ├── index.test.tsx │ │ │ │ ├── monitor-chart-panel.test.tsx │ │ │ │ ├── monitor-chart.test.tsx │ │ │ │ └── timeSelector.test.tsx │ │ │ ├── components │ │ │ │ ├── timeRangeSelector.tsx │ │ │ │ ├── timeSelector.scss │ │ │ │ └── timeSelector.tsx │ │ │ ├── index.ts │ │ │ ├── monitor-chart-panel.scss │ │ │ ├── monitor-chart-panel.tsx │ │ │ ├── monitor-chart.scss │ │ │ ├── monitor-chart.tsx │ │ │ └── timeSelector.tsx │ │ ├── no-auth-tip │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.ts │ │ │ └── no-auth-tip.tsx │ │ ├── operation-bar │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── pagination │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── panel │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── pure-log-roller │ │ │ ├── __tests__ │ │ │ │ ├── download-log-modal.test.tsx │ │ │ │ ├── index.test.tsx │ │ │ │ ├── log-content.test.tsx │ │ │ │ ├── log-roller.test.tsx │ │ │ │ └── log-utils.test.tsx │ │ │ ├── download-log-modal.tsx │ │ │ ├── index.ts │ │ │ ├── log-content.scss │ │ │ ├── log-content.tsx │ │ │ ├── log-roller.scss │ │ │ ├── log-roller.tsx │ │ │ └── log-util.ts │ │ ├── radio-tabs │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── readme.md │ │ ├── readonly-form │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── render-form-item │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── render-form │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── render-pure-form │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── responsive │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── search-table │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── setting-tabs │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── simple-log │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── simple-log-roller.test.tsx │ │ │ │ ├── simple-log-search.test.tsx │ │ │ │ └── simple-log.test.tsx │ │ │ ├── index.ts │ │ │ ├── simple-log-roller.tsx │ │ │ ├── simple-log-search.tsx │ │ │ ├── simple-log.jsx │ │ │ └── simple-log.scss │ │ ├── simple-panel │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── simple-tabs │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── switch-auto-scroll │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── table-actions │ │ │ ├── __tests__ │ │ │ │ └── operate-btn.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── table │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── table-config.test.tsx │ │ │ │ └── table-footer.test.tsx │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── interface.ts │ │ │ ├── table-config.tsx │ │ │ └── table-footer.tsx │ │ ├── tags-row │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── tags │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── terminal │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── text-block-info │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── time-select │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── time-select.test.tsx │ │ │ │ └── utils.test.tsx │ │ │ ├── index.ts │ │ │ ├── time-select.scss │ │ │ ├── time-select.tsx │ │ │ └── utils.ts │ │ ├── title │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── top-button-group │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.tsx │ │ ├── user-info │ │ │ ├── __tests__ │ │ │ │ └── user-info.test.tsx │ │ │ └── index.tsx │ │ └── user-profile │ │ │ ├── __tests__ │ │ │ └── index.test.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ ├── constants.ts │ ├── index.ts │ ├── services │ │ ├── addon.ts │ │ ├── dashboard.ts │ │ ├── index.ts │ │ ├── metrics.ts │ │ └── monitorCommon.ts │ ├── stores │ │ ├── _crud_module.ts │ │ ├── _member.ts │ │ ├── addon.ts │ │ ├── application-member.ts │ │ ├── common.ts │ │ ├── dashboard.ts │ │ ├── member-label.ts │ │ ├── member-scope.ts │ │ ├── metrics.ts │ │ ├── monitorCommon.ts │ │ ├── msp-project-member.ts │ │ ├── org-member.ts │ │ ├── project-member.ts │ │ └── sys-member.ts │ ├── types │ │ ├── common.d.ts │ │ ├── member.d.ts │ │ ├── metrics.d.ts │ │ ├── pipeline.d.ts │ │ ├── route.d.ts │ │ └── tree.d.ts │ ├── use-hooks.tsx │ └── utils │ │ ├── __tests__ │ │ ├── browser.test.tsx │ │ ├── chart-utils.test.tsx │ │ ├── component-utils.test.tsx │ │ ├── connect-cube.test.tsx │ │ ├── emoji.test.tsx │ │ ├── go-to.test.tsx │ │ ├── i18n-replace-link.test.tsx │ │ ├── index.test.tsx │ │ ├── query-string.test.tsx │ │ ├── str-num-date.test.tsx │ │ └── upload-props.test.tsx │ │ ├── axios-config.ts │ │ ├── browser.tsx │ │ ├── chart-utils.js │ │ ├── component-utils.tsx │ │ ├── connect-cube.tsx │ │ ├── create-scroll-component.tsx │ │ ├── emoji.ts │ │ ├── go-to.tsx │ │ ├── i18n-replace-link.tsx │ │ ├── index.ts │ │ ├── query-string.tsx │ │ ├── str-num-date.tsx │ │ ├── upload-props.tsx │ │ └── xterm.js ├── config-page │ ├── components │ │ ├── action-form.tsx │ │ ├── alert │ │ │ ├── alert.mock.ts │ │ │ ├── alert.scss │ │ │ ├── alert.spec.d.ts │ │ │ └── alert.tsx │ │ ├── api-editor │ │ │ ├── api-editor.mock.ts │ │ │ ├── api-editor.scss │ │ │ ├── api-editor.spec.d.ts │ │ │ └── api-editor.tsx │ │ ├── badge │ │ │ ├── badge.mock.ts │ │ │ ├── badge.scss │ │ │ ├── badge.spec.d.ts │ │ │ └── badge.tsx │ │ ├── bar-chart │ │ │ ├── bar-chart.mock.ts │ │ │ ├── bar-chart.scss │ │ │ ├── bar-chart.spec.d.ts │ │ │ └── bar-chart.tsx │ │ ├── base-list │ │ │ ├── base-list.mock.ts │ │ │ ├── base-list.spec.d.ts │ │ │ └── base-list.tsx │ │ ├── breadcrumb │ │ │ ├── breadcrumb.mock.ts │ │ │ ├── breadcrumb.spec.d.ts │ │ │ └── breadcrumb.tsx │ │ ├── bubble-graph │ │ │ ├── bubble-graph.spec.d.ts │ │ │ └── index.tsx │ │ ├── button │ │ │ ├── button.mock.ts │ │ │ ├── button.spec.d.ts │ │ │ └── button.tsx │ │ ├── card-container │ │ │ ├── card-container.mock.ts │ │ │ ├── card-container.spec.d.ts │ │ │ └── card-container.tsx │ │ ├── card │ │ │ ├── card.mock.ts │ │ │ ├── card.scss │ │ │ ├── card.spec.d.ts │ │ │ └── card.tsx │ │ ├── chart-block │ │ │ ├── chart-block.mock.ts │ │ │ ├── chart-block.spec.d.ts │ │ │ └── chart-block.tsx │ │ ├── chart-dashboard │ │ │ ├── chart-dashboard.spec.d.ts │ │ │ └── chart-dashboard.tsx │ │ ├── chart │ │ │ ├── chart.spec.d.ts │ │ │ └── chart.tsx │ │ ├── common.spec.d.ts │ │ ├── complex-graph │ │ │ ├── complex-graph.spec.d.ts │ │ │ └── index.tsx │ │ ├── compose-table │ │ │ ├── compose-table.spec.d.ts │ │ │ └── compose-table.tsx │ │ ├── configurable-filter │ │ │ ├── configurable-filter.mock.ts │ │ │ ├── configurable-filter.spec.d.ts │ │ │ └── configurable-filter.tsx │ │ ├── container │ │ │ ├── container.mock.ts │ │ │ ├── container.scss │ │ │ ├── container.spec.d.ts │ │ │ └── container.tsx │ │ ├── contractive-filter │ │ │ ├── contractive-filter.mock.ts │ │ │ ├── contractive-filter.spec.d.ts │ │ │ └── contractive-filter.tsx │ │ ├── copy-button │ │ │ ├── copy-button.mock.ts │ │ │ ├── copy-button.spec.d.ts │ │ │ └── copy-button.tsx │ │ ├── date-picker │ │ │ ├── date-picker.spec.d.ts │ │ │ └── date-picker.tsx │ │ ├── drawer │ │ │ ├── drawer.mock.ts │ │ │ ├── drawer.scss │ │ │ ├── drawer.spec.d.ts │ │ │ └── drawer.tsx │ │ ├── dropdown-select │ │ │ ├── dropdown-select.mock.ts │ │ │ ├── dropdown-select.scss │ │ │ ├── dropdown-select.spec.d.ts │ │ │ ├── dropdown-select.tsx │ │ │ └── v2 │ │ │ │ ├── dropdown-select.mock.ts │ │ │ │ ├── dropdown-select.scss │ │ │ │ ├── dropdown-select.spec.d.ts │ │ │ │ └── dropdown-select.tsx │ │ ├── dropdown │ │ │ ├── dropdown.spec.d.ts │ │ │ └── dropdown.tsx │ │ ├── edit-list │ │ │ ├── edit-list.spec.d.ts │ │ │ ├── edit-list.tsx │ │ │ ├── pure-edit-list.scss │ │ │ └── pure-edit-list.tsx │ │ ├── empty-holder │ │ │ ├── empty-holder.scss │ │ │ ├── empty-holder.spec.d.ts │ │ │ └── empty-holder.tsx │ │ ├── file-editor │ │ │ ├── file-editor.spec.d.ts │ │ │ └── file-editor.tsx │ │ ├── file-tree │ │ │ ├── file-tree.scss │ │ │ ├── file-tree.spec.d.ts │ │ │ └── file-tree.tsx │ │ ├── form-modal │ │ │ ├── form-modal.mock.ts │ │ │ ├── form-modal.spec.d.ts │ │ │ └── form-modal.tsx │ │ ├── form │ │ │ ├── form.mock.ts │ │ │ ├── form.spec.d.ts │ │ │ └── form.tsx │ │ ├── gantt │ │ │ ├── components │ │ │ │ ├── calendar │ │ │ │ │ ├── calendar.scss │ │ │ │ │ ├── calendar.tsx │ │ │ │ │ └── top-part-of-calendar.tsx │ │ │ │ ├── gantt │ │ │ │ │ ├── gantt.scss │ │ │ │ │ ├── gantt.tsx │ │ │ │ │ ├── task-gantt-content.tsx │ │ │ │ │ └── task-gantt.tsx │ │ │ │ ├── grid │ │ │ │ │ ├── grid-body.tsx │ │ │ │ │ ├── grid.scss │ │ │ │ │ └── grid.tsx │ │ │ │ ├── other │ │ │ │ │ ├── arrow.tsx │ │ │ │ │ ├── scroll.scss │ │ │ │ │ ├── scroll.tsx │ │ │ │ │ ├── tooltip.scss │ │ │ │ │ └── tooltip.tsx │ │ │ │ ├── task-item │ │ │ │ │ ├── bar │ │ │ │ │ │ ├── bar-date-handle.tsx │ │ │ │ │ │ ├── bar-display.tsx │ │ │ │ │ │ ├── bar-progress-handle.tsx │ │ │ │ │ │ ├── bar-small.tsx │ │ │ │ │ │ ├── bar.scss │ │ │ │ │ │ └── bar.tsx │ │ │ │ │ ├── milestone │ │ │ │ │ │ ├── milestone.scss │ │ │ │ │ │ └── milestone.tsx │ │ │ │ │ ├── project │ │ │ │ │ │ ├── project.scss │ │ │ │ │ │ └── project.tsx │ │ │ │ │ ├── task-item.tsx │ │ │ │ │ └── task-list.scss │ │ │ │ └── task-list │ │ │ │ │ ├── task-list-header.scss │ │ │ │ │ ├── task-list-header.tsx │ │ │ │ │ ├── task-list-table.scss │ │ │ │ │ ├── task-list-table.tsx │ │ │ │ │ ├── task-list.scss │ │ │ │ │ └── task-list.tsx │ │ │ ├── gantt.scss │ │ │ ├── gantt.spec.d.ts │ │ │ ├── gantt.tsx │ │ │ ├── helpers │ │ │ │ ├── bar-helper.ts │ │ │ │ ├── date-helper.ts │ │ │ │ └── other-helper.ts │ │ │ ├── types │ │ │ │ ├── bar-task.ts │ │ │ │ ├── date-setup.ts │ │ │ │ ├── gantt-task-actions.ts │ │ │ │ └── public-types.ts │ │ │ └── utils.ts │ │ ├── grid │ │ │ ├── grid.spec.d.ts │ │ │ └── grid.tsx │ │ ├── icon │ │ │ ├── icon.mock..ts │ │ │ ├── icon.spec.d.ts │ │ │ └── icon.tsx │ │ ├── image │ │ │ ├── image.scss │ │ │ ├── image.spec.d.ts │ │ │ └── image.tsx │ │ ├── index.tsx │ │ ├── info-preview │ │ │ ├── info-preview.mock.ts │ │ │ ├── info-preview.scss │ │ │ ├── info-preview.spec.d.ts │ │ │ └── info-preview.tsx │ │ ├── input-select │ │ │ ├── input-select.mock.ts │ │ │ ├── input-select.spec.d.ts │ │ │ └── input-select.tsx │ │ ├── input │ │ │ ├── input.spec.d.ts │ │ │ └── input.tsx │ │ ├── kanban │ │ │ ├── kanban.mock.ts │ │ │ ├── kanban.scss │ │ │ ├── kanban.spec.d.ts │ │ │ └── kanban.tsx │ │ ├── kv │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ └── kv.spec.d.ts │ │ ├── line-graph │ │ │ ├── index.tsx │ │ │ └── line-graph.spec.d.ts │ │ ├── linear-distribution │ │ │ ├── linear-distribution.scss │ │ │ ├── linear-distribution.spce.d.ts │ │ │ └── linear-distribution.tsx │ │ ├── list-new │ │ │ ├── list-new.scss │ │ │ ├── list-new.spec.d.ts │ │ │ ├── list-new.tsx │ │ │ └── list │ │ │ │ ├── index.scss │ │ │ │ ├── index.spec.d.ts │ │ │ │ ├── index.tsx │ │ │ │ └── list-item.tsx │ │ ├── list │ │ │ ├── list.mock.ts │ │ │ ├── list.scss │ │ │ ├── list.spec.d.ts │ │ │ └── list.tsx │ │ ├── markdown-editor │ │ │ ├── markdown-editor.spec.d.ts │ │ │ └── markdown-editor.tsx │ │ ├── markdown-preview │ │ │ ├── index.tsx │ │ │ ├── markdown-preview.mock.ts │ │ │ └── markdown-preview.spec.d.ts │ │ ├── modal │ │ │ ├── modal.spec.d.ts │ │ │ └── modal.tsx │ │ ├── not-found.tsx │ │ ├── panel │ │ │ ├── panel.scss │ │ │ ├── panel.spec.d.ts │ │ │ └── panel.tsx │ │ ├── pie-chart │ │ │ ├── pie-chart.mock.ts │ │ │ ├── pie-chart.scss │ │ │ ├── pie-chart.spec.d.ts │ │ │ └── pie-chart.tsx │ │ ├── popover │ │ │ ├── popover.scss │ │ │ ├── popover.spec.d.ts │ │ │ └── popover.tsx │ │ ├── radio-tabs │ │ │ ├── radio-tabs.mock.ts │ │ │ ├── radio-tabs.spec.d.ts │ │ │ └── radio-tabs.tsx │ │ ├── radio │ │ │ ├── radio.mock.ts │ │ │ ├── radio.spec.d.ts │ │ │ └── radio.tsx │ │ ├── scale-card │ │ │ ├── scale-card.mock.ts │ │ │ ├── scale-card.scss │ │ │ ├── scale-card.spec.d.ts │ │ │ └── scale-card.tsx │ │ ├── select-pro │ │ │ ├── select-pro.spec.d.ts │ │ │ └── select-pro.tsx │ │ ├── simple-chart │ │ │ ├── simple-chart.mock.ts │ │ │ ├── simple-chart.scss │ │ │ ├── simple-chart.spec.d.ts │ │ │ └── simple-chart.tsx │ │ ├── sort-drag-group │ │ │ ├── pure-sort-drag-group-list │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── sort-drag-group.mock.ts │ │ │ ├── sort-drag-group.spec.d.ts │ │ │ └── sort-drag-group.tsx │ │ ├── split-page │ │ │ ├── split-page.spec.d.ts │ │ │ └── split-page.tsx │ │ ├── table-group │ │ │ ├── table-group.scss │ │ │ ├── table-group.spec.d.ts │ │ │ └── table-group.tsx │ │ ├── table │ │ │ ├── render-types.tsx │ │ │ ├── table.mock.ts │ │ │ ├── table.scss │ │ │ ├── table.spec.d.ts │ │ │ ├── table.tsx │ │ │ └── v2 │ │ │ │ ├── table.spec.d.ts │ │ │ │ ├── table.tsx │ │ │ │ └── utils.tsx │ │ ├── tabs │ │ │ ├── tabs.scss │ │ │ ├── tabs.spec.d.ts │ │ │ └── tabs.tsx │ │ ├── tags │ │ │ ├── tags.spec.d.ts │ │ │ └── tags.tsx │ │ ├── text-block-group │ │ │ ├── text-block-group.mock.ts │ │ │ ├── text-block-group.scss │ │ │ ├── text-block-group.spec.d.ts │ │ │ └── text-block-group.tsx │ │ ├── text-block │ │ │ ├── text-block.spec.d.ts │ │ │ └── text-block.tsx │ │ ├── text-group │ │ │ ├── text-group.mock.ts │ │ │ ├── text-group.scss │ │ │ ├── text-group.spec.d.ts │ │ │ └── text-group.tsx │ │ ├── text │ │ │ ├── text.mock.ts │ │ │ ├── text.scss │ │ │ ├── text.spec.d.ts │ │ │ └── text.tsx │ │ ├── tiled-filter │ │ │ ├── tiled-filter-comp.tsx │ │ │ ├── tiled-filter.scss │ │ │ ├── tiled-filter.spec.d.ts │ │ │ └── tiled-filter.tsx │ │ ├── title │ │ │ ├── title.mock.ts │ │ │ ├── title.scss │ │ │ ├── title.spec.d.ts │ │ │ └── title.tsx │ │ ├── top-n │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── top-n.mock.ts │ │ │ └── top-n.spec.d.ts │ │ ├── tree-select │ │ │ ├── tree-select.mock.ts │ │ │ ├── tree-select.spec.d.ts │ │ │ └── tree-select.tsx │ │ └── user-profile │ │ │ ├── user-profile.mock.ts │ │ │ ├── user-profile.spec.d.ts │ │ │ └── user-profile.tsx │ ├── config-page.d.ts │ ├── debug.scss │ ├── debug.tsx │ ├── docs │ │ ├── alert.spec.md │ │ ├── api-editor.spec.md │ │ ├── badge.spec.md │ │ ├── breadcrumb.spec.md │ │ ├── button.spec.md │ │ ├── card.spec.md │ │ ├── chart-dashboard.spec.md │ │ ├── chart.spec.md │ │ ├── common.spec.md │ │ ├── container.spec.md │ │ ├── contractive-filter.spec.md │ │ ├── date-picker.spec.md │ │ ├── drawer.spec.md │ │ ├── dropdown-select.spec.md │ │ ├── dropdown.spec.md │ │ ├── edit-list.spec.md │ │ ├── empty-holder.spec.md │ │ ├── file-editor.spec.md │ │ ├── file-tree.spec.md │ │ ├── form-modal.spec.md │ │ ├── form.spec.md │ │ ├── grid.spec.md │ │ ├── icon.spec.md │ │ ├── image.spec.md │ │ ├── info-preview.spec.md │ │ ├── input-select.spec.md │ │ ├── input.spec.md │ │ ├── linear-distribution.spce.md │ │ ├── list.spec.md │ │ ├── markdown-editor.spec.md │ │ ├── modal.spec.md │ │ ├── panel.spec.md │ │ ├── popover.spec.md │ │ ├── radio.spec.md │ │ ├── select-pro.spec.md │ │ ├── select.spec.md │ │ ├── sort-drag-group.spec.md │ │ ├── split-page.spec.md │ │ ├── table-group.spec.md │ │ ├── table.spec.md │ │ ├── tabs.spec.md │ │ ├── tags.spec.md │ │ ├── test.spec.md │ │ ├── text-group.spec.md │ │ ├── text.spec.md │ │ ├── tiled-filter.spec.md │ │ ├── title.spec.md │ │ └── tree-select.spec.md │ ├── img-map.ts │ ├── index.tsx │ ├── mock │ │ ├── crud.mock.ts │ │ ├── data-rank.mock.ts │ │ ├── dev.mock.ts │ │ ├── gallery.tsx │ │ ├── index.tsx │ │ └── mock.tsx │ ├── page-render.tsx │ ├── readme.md │ ├── test.spec.d.ts │ └── utils.tsx ├── configForm │ ├── editor │ │ ├── common │ │ │ ├── components │ │ │ │ ├── drawer.scss │ │ │ │ ├── drawer.tsx │ │ │ │ ├── modal.scss │ │ │ │ ├── modal.tsx │ │ │ │ ├── tabs.scss │ │ │ │ └── tabs.tsx │ │ │ ├── index.ts │ │ │ └── util.scss │ │ ├── config.ts │ │ ├── form-editor.scss │ │ ├── form-editor.tsx │ │ ├── form-preview.scss │ │ ├── form-preview.tsx │ │ ├── index.scss │ │ ├── index.tsx │ │ └── types │ │ │ └── index.d.ts │ ├── form │ │ ├── context.ts │ │ ├── form-button.tsx │ │ ├── form-item │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── input.tsx │ │ │ └── select.tsx │ │ ├── form.tsx │ │ ├── index.tsx │ │ ├── utils.scss │ │ └── utils.ts │ └── nusi-form │ │ ├── config.tsx │ │ ├── form-editor.scss │ │ ├── form-editor.tsx │ │ ├── form-items │ │ ├── array-obj.scss │ │ ├── array-obj.tsx │ │ ├── check-when.scss │ │ ├── check-when.tsx │ │ ├── checkbox.tsx │ │ ├── clear-when.tsx │ │ ├── common │ │ │ ├── combiner.scss │ │ │ ├── combiner.tsx │ │ │ ├── config.ts │ │ │ └── index.tsx │ │ ├── custom-defined.tsx │ │ ├── custom.tsx │ │ ├── data-dynamic.scss │ │ ├── data-dynamic.tsx │ │ ├── data-static.tsx │ │ ├── date-picker.tsx │ │ ├── group.scss │ │ ├── group.tsx │ │ ├── index.tsx │ │ ├── input-array.scss │ │ ├── input-array.tsx │ │ ├── input-select.scss │ │ ├── input-select.tsx │ │ ├── input.tsx │ │ ├── inputNumber.tsx │ │ ├── map.tsx │ │ ├── radio.tsx │ │ ├── rules-input.tsx │ │ ├── select.tsx │ │ ├── switch.tsx │ │ ├── textarea.tsx │ │ ├── upload.scss │ │ └── upload.tsx │ │ ├── form-modal.scss │ │ ├── form-modal.tsx │ │ ├── form-test.tsx │ │ ├── form.tsx │ │ └── utils.ts ├── constants.ts ├── error-handler.jsx ├── files │ └── china.json ├── i18n-easy-edit │ ├── config.ts │ ├── index.ts │ ├── pages │ │ ├── edit-modal │ │ │ └── index.tsx │ │ ├── fixed-widget │ │ │ └── index.tsx │ │ ├── i18n-wrapper │ │ │ ├── index.less │ │ │ └── index.tsx │ │ ├── index.tsx │ │ └── publish-modal │ │ │ └── index.tsx │ ├── store │ │ └── index.ts │ └── utils │ │ ├── cache.ts │ │ ├── index.ts │ │ ├── mergedJSON.ts │ │ └── overwrite-i18n.tsx ├── i18n.ts ├── images │ ├── .gitkeep │ ├── Erda.png │ ├── Erda.svg │ ├── ali-cloud-cluster-bg.svg │ ├── android.svg │ ├── backlog-db.svg │ ├── backlog-dd.svg │ ├── cloud │ │ ├── aly.svg │ │ ├── aly_2.svg │ │ ├── txy.svg │ │ └── txy_2.svg │ ├── dcos-cluster-bg.svg │ ├── default-app-icon.png │ ├── default-breathing.gif │ ├── default-k8s-node.svg │ ├── default-k8s-pod.svg │ ├── default-k8s-workload.svg │ ├── default-loading.gif │ ├── default-market-service.svg │ ├── default-org-icon.svg │ ├── default-project-icon.png │ ├── default-project-main-bg.webp │ ├── default-test-case.svg │ ├── default-user-avatar.svg │ ├── defaultFileImage.png │ ├── dmtd.svg │ ├── dmtd_1.svg │ ├── dsjyy.svg │ ├── ecp.svg │ ├── edas-cluster-bg.svg │ ├── editor-background.png │ ├── empty-holder │ │ ├── create-app.svg │ │ ├── create-project.svg │ │ ├── empty-message.svg │ │ ├── star-app.svg │ │ ├── star-project.svg │ │ └── upload.svg │ ├── empty-project.png │ ├── empty-white-bg.svg │ ├── empty.svg │ ├── gallery-header.jpg │ ├── intro.png │ ├── invalid-doc.svg │ ├── k8s-cluster-bg.svg │ ├── kyy.svg │ ├── land-spring.jpg │ ├── msp │ │ ├── header-bg-large.svg │ │ ├── header-bg-middle.svg │ │ ├── header-bg-small.svg │ │ ├── microservice-governance-background.svg │ │ ├── microservice-governance-bottom.svg │ │ ├── microservice-governance-decoration.svg │ │ ├── microservice-governance-middle.svg │ │ └── microservice-governance-top.svg │ ├── no-cluster.png │ ├── org-home │ │ ├── tab-pane-header-selected-first.png │ │ ├── tab-pane-header-selected.png │ │ ├── tab-pane-header-unselected-first.png │ │ └── tab-pane-header-unselected.png │ ├── resources │ │ ├── addon.png │ │ ├── ali-cloud-1.svg │ │ ├── ali-cloud.svg │ │ ├── coding.png │ │ ├── container-service-1.svg │ │ ├── container-service.svg │ │ ├── edas-1.svg │ │ ├── edas.svg │ │ ├── github.png │ │ ├── gitlab.png │ │ ├── k8s-1.svg │ │ ├── k8s.svg │ │ ├── org.png │ │ ├── tg.svg │ │ ├── tg2.svg │ │ ├── zyb.svg │ │ └── zyb2.svg │ ├── ts.svg │ ├── upload_empty.svg │ ├── xmjyy.svg │ ├── ywyy.svg │ ├── zx-gray.svg │ └── zx.svg ├── index.js ├── interface │ ├── common.d.ts │ └── global.d.ts ├── layout │ ├── common │ │ ├── check-version.tsx │ │ ├── error-page.scss │ │ ├── error-page.tsx │ │ ├── index.ts │ │ ├── invite-to-org.tsx │ │ ├── split-page.scss │ │ └── split-page.tsx │ ├── entry.js │ ├── pages │ │ ├── page-container │ │ │ ├── components │ │ │ │ ├── announcement │ │ │ │ │ └── index.tsx │ │ │ │ ├── breadcrumb.tsx │ │ │ │ ├── chat-GPT │ │ │ │ │ ├── chat.tsx │ │ │ │ │ ├── functional-test-cases │ │ │ │ │ │ ├── desc-list.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── requirements-list.tsx │ │ │ │ │ ├── gpt-item.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── knowledge-base │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── simple-chat.tsx │ │ │ │ │ ├── sidebar.tsx │ │ │ │ │ └── user-item.tsx │ │ │ │ ├── header.scss │ │ │ │ ├── header.tsx │ │ │ │ ├── message │ │ │ │ │ ├── message.scss │ │ │ │ │ └── message.tsx │ │ │ │ ├── navigation │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── user-menu.scss │ │ │ │ │ └── user-menu.tsx │ │ │ │ ├── org-selector.tsx │ │ │ │ ├── shell │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── sidebar │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── menu-head.scss │ │ │ │ │ ├── menu-head.tsx │ │ │ │ │ └── sidebar-menu.tsx │ │ │ ├── layout.scss │ │ │ ├── layout.tsx │ │ │ ├── page-container.scss │ │ │ └── page-container.tsx │ │ └── tab │ │ │ └── tab.tsx │ ├── router.tsx │ ├── services │ │ ├── ai-chat.ts │ │ ├── ai-knowledge.ts │ │ ├── ai-test.ts │ │ ├── index.ts │ │ └── message.ts │ ├── stores │ │ ├── breadcrumb.ts │ │ ├── layout.ts │ │ └── message.ts │ └── types │ │ └── layout.d.ts ├── links-service.ts ├── locales │ ├── en.json │ ├── utils.ts │ └── zh.json ├── menus │ ├── appCenter.tsx │ ├── cmp.tsx │ ├── dop.tsx │ ├── ecp.tsx │ ├── index.ts │ ├── msp.tsx │ ├── orgCenter.tsx │ ├── project.tsx │ └── util.ts ├── modules │ ├── addonPlatform │ │ ├── entry.js │ │ ├── pages │ │ │ ├── addon-resource │ │ │ │ ├── addon-resource.scss │ │ │ │ ├── addon-resource.tsx │ │ │ │ └── pure-addon-resource.jsx │ │ │ ├── common │ │ │ │ ├── components │ │ │ │ │ ├── addon-card-list.scss │ │ │ │ │ ├── addon-card-list.tsx │ │ │ │ │ ├── addon-cards.scss │ │ │ │ │ ├── addon-cards.tsx │ │ │ │ │ ├── addon-detail-drawer.scss │ │ │ │ │ ├── addon-detail-drawer.tsx │ │ │ │ │ └── create-log.tsx │ │ │ │ └── configs.ts │ │ │ ├── jvm-profiler │ │ │ │ ├── analysis.tsx │ │ │ │ ├── jvm-overview.scss │ │ │ │ └── jvm-overview.tsx │ │ │ └── mysql │ │ │ │ ├── account.tsx │ │ │ │ └── consumer.tsx │ │ ├── services │ │ │ └── jvm.ts │ │ ├── stores │ │ │ └── jvm.ts │ │ └── types │ │ │ ├── addon.d.ts │ │ │ └── jvm.d.ts │ ├── apiManagePlatform │ │ ├── api-ws.ts │ │ ├── components │ │ │ ├── auth-wrap.tsx │ │ │ ├── chart.tsx │ │ │ ├── select-pro.scss │ │ │ ├── select-pro.tsx │ │ │ ├── sla-select.scss │ │ │ ├── sla-select.tsx │ │ │ ├── traffic-audit-drawer.tsx │ │ │ └── update-sla.tsx │ │ ├── configs.ts │ │ ├── entry.js │ │ ├── pages │ │ │ ├── access-manage │ │ │ │ ├── components │ │ │ │ │ ├── config.tsx │ │ │ │ │ ├── multi-input.scss │ │ │ │ │ └── multi-input.tsx │ │ │ │ ├── detail │ │ │ │ │ ├── authorization-user.tsx │ │ │ │ │ ├── detail-modal.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── limit.tsx │ │ │ │ │ ├── overview-chart.tsx │ │ │ │ │ ├── sla-editor.tsx │ │ │ │ │ ├── sla.scss │ │ │ │ │ └── sla.tsx │ │ │ │ ├── edit │ │ │ │ │ └── index.tsx │ │ │ │ └── list │ │ │ │ │ └── index.tsx │ │ │ ├── api-market │ │ │ │ ├── components │ │ │ │ │ ├── api-resource │ │ │ │ │ │ ├── api-resource.spec.d.ts │ │ │ │ │ │ ├── query-params-config.tsx │ │ │ │ │ │ ├── resource-summary.tsx │ │ │ │ │ │ ├── resource.mock.ts │ │ │ │ │ │ ├── resource.scss │ │ │ │ │ │ ├── resource.tsx │ │ │ │ │ │ └── response-config.tsx │ │ │ │ │ ├── apply-modal.tsx │ │ │ │ │ ├── asset-modal.tsx │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── export-file.tsx │ │ │ │ │ ├── export-record.scss │ │ │ │ │ ├── export-record.tsx │ │ │ │ │ └── relation.tsx │ │ │ │ ├── design │ │ │ │ │ ├── api-doc-add-modal.tsx │ │ │ │ │ ├── api-doc-tree.tsx │ │ │ │ │ ├── api-params-modal.scss │ │ │ │ │ ├── api-params-modal.tsx │ │ │ │ │ ├── api-publish-modal.tsx │ │ │ │ │ ├── basic-params-config.scss │ │ │ │ │ ├── basic-params-config.tsx │ │ │ │ │ ├── datatype-config.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── property-field.tsx │ │ │ │ │ ├── summary.tsx │ │ │ │ │ └── title.tsx │ │ │ │ ├── detail │ │ │ │ │ ├── components │ │ │ │ │ │ ├── api-body │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── api-detail.scss │ │ │ │ │ │ ├── api-detail.tsx │ │ │ │ │ │ ├── api-menu.scss │ │ │ │ │ │ ├── api-menu.tsx │ │ │ │ │ │ ├── api-preview-2.0.tsx │ │ │ │ │ │ ├── api-preview-3.0.tsx │ │ │ │ │ │ ├── api-view.scss │ │ │ │ │ │ ├── api-view.tsx │ │ │ │ │ │ ├── key-val-edit │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── select-version.tsx │ │ │ │ │ │ ├── test-modal-utils.tsx │ │ │ │ │ │ ├── test-modal.scss │ │ │ │ │ │ └── test-modal.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── list │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── version │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── version-info.tsx │ │ │ └── client │ │ │ │ ├── components │ │ │ │ └── config.tsx │ │ │ │ ├── detail │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ │ └── list │ │ │ │ └── index.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── api-access.ts │ │ │ ├── api-client.ts │ │ │ ├── api-design.ts │ │ │ ├── api-export.ts │ │ │ └── api-market.ts │ │ ├── stores │ │ │ ├── api-access.ts │ │ │ ├── api-client.ts │ │ │ ├── api-design.ts │ │ │ └── api-market.ts │ │ └── types │ │ │ ├── api-access.d.ts │ │ │ ├── api-client.d.ts │ │ │ ├── api-market.d.ts │ │ │ └── api-setting.d.ts │ ├── application │ │ ├── common │ │ │ ├── app-selector.scss │ │ │ ├── app-selector.tsx │ │ │ ├── components │ │ │ │ ├── action-select.scss │ │ │ │ ├── action-select.tsx │ │ │ │ ├── comment-box.scss │ │ │ │ ├── comment-box.tsx │ │ │ │ ├── create-add-on.scss │ │ │ │ ├── create-add-on.tsx │ │ │ │ ├── data-list.scss │ │ │ │ ├── data-list.tsx │ │ │ │ ├── deployments-field.tsx │ │ │ │ ├── dice-job-node.scss │ │ │ │ ├── dice-job-node.tsx │ │ │ │ ├── dice-service-node.scss │ │ │ │ ├── dice-service-node.tsx │ │ │ │ ├── dice-yaml-canvas.tsx │ │ │ │ ├── dice-yaml-editor-drawer.tsx │ │ │ │ ├── dice-yaml-editor-item-container.tsx │ │ │ │ ├── dice-yaml-editor-item.tsx │ │ │ │ ├── dice-yaml-editor-type.ts │ │ │ │ ├── dice-yaml-editor.scss │ │ │ │ ├── dice-yaml-editor.tsx │ │ │ │ ├── edit-global-variable.tsx │ │ │ │ ├── edit-stage.scss │ │ │ │ ├── edit-stage.tsx │ │ │ │ ├── file-container.scss │ │ │ │ ├── file-container.tsx │ │ │ │ ├── flow-item.scss │ │ │ │ ├── flow-item.tsx │ │ │ │ ├── goto-commit.scss │ │ │ │ ├── goto-commit.tsx │ │ │ │ ├── health-check-field.tsx │ │ │ │ ├── list-input-group.tsx │ │ │ │ ├── object-input-group.tsx │ │ │ │ ├── pipeline-node.scss │ │ │ │ ├── pipeline-node.tsx │ │ │ │ ├── point-component-abstract.ts │ │ │ │ ├── port-field.tsx │ │ │ │ ├── property-view.scss │ │ │ │ ├── property-view.tsx │ │ │ │ ├── resource-field.tsx │ │ │ │ ├── table-drawer.scss │ │ │ │ ├── table-drawer.tsx │ │ │ │ ├── task-resource-field.scss │ │ │ │ ├── variable-input-group.scss │ │ │ │ └── variable-input-group.tsx │ │ │ ├── config.ts │ │ │ ├── depends-on-data-filter.ts │ │ │ ├── dice-flow-util.ts │ │ │ ├── dice-yml-data-convert.tsx │ │ │ ├── dice-yml-editor-validator.ts │ │ │ ├── pipeline-yml-data-convert.tsx │ │ │ ├── types │ │ │ │ └── common.d.ts │ │ │ ├── yml-editor │ │ │ │ ├── dice-editor.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── pipeline-editor.scss │ │ │ │ ├── pipeline-editor.tsx │ │ │ │ └── utils.tsx │ │ │ └── yml-flow-util.ts │ │ ├── entry.js │ │ ├── pages │ │ │ ├── build-detail │ │ │ │ ├── build-log.tsx │ │ │ │ ├── config.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── pipeline-chart │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pipeline-node.scss │ │ │ │ │ └── pipeline-node.tsx │ │ │ │ ├── pipeline-log.scss │ │ │ │ └── pipeline-log.tsx │ │ │ ├── build │ │ │ │ ├── build.scss │ │ │ │ ├── build.tsx │ │ │ │ ├── data-task-creation.scss │ │ │ │ ├── data-task-creation.tsx │ │ │ │ └── dataTask.tsx │ │ │ ├── data-market │ │ │ │ └── data-market.tsx │ │ │ ├── data-model │ │ │ │ ├── data-model.tsx │ │ │ │ ├── index.scss │ │ │ │ └── model-star-chart.tsx │ │ │ ├── deploy-list │ │ │ │ ├── approve.tsx │ │ │ │ ├── deploy-list.tsx │ │ │ │ └── initiate.tsx │ │ │ ├── obsoleted-pipeline │ │ │ │ ├── config-detail │ │ │ │ │ ├── case-info.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── pipeline-editor │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── config.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── pipeline-detail.tsx │ │ │ │ ├── run-detail │ │ │ │ │ ├── build-detail.scss │ │ │ │ │ ├── build-detail.tsx │ │ │ │ │ ├── build-log.scss │ │ │ │ │ ├── build-log.tsx │ │ │ │ │ ├── config.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pipeline-chart │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── pipeline-node.scss │ │ │ │ │ │ └── pipeline-node.tsx │ │ │ │ │ ├── pipeline-log.scss │ │ │ │ │ └── pipeline-log.tsx │ │ │ │ └── scope-config.tsx │ │ │ ├── pipeline │ │ │ │ ├── index.tsx │ │ │ │ └── obsoleted-pipeline.tsx │ │ │ ├── problem │ │ │ │ ├── problem-detail.scss │ │ │ │ ├── problem-detail.tsx │ │ │ │ ├── problem-form.tsx │ │ │ │ ├── problem-list.scss │ │ │ │ └── problem-list.tsx │ │ │ ├── quality │ │ │ │ ├── entry.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── repo │ │ │ │ ├── branch-compare-detail.tsx │ │ │ │ ├── commit-detail.tsx │ │ │ │ ├── common.scss │ │ │ │ ├── common.tsx │ │ │ │ ├── components │ │ │ │ │ ├── add-pipelineyml.scss │ │ │ │ │ ├── add-pipelineyml.tsx │ │ │ │ │ ├── branch-compare.scss │ │ │ │ │ ├── branch-compare.tsx │ │ │ │ │ ├── branch-select.scss │ │ │ │ │ ├── branch-select.tsx │ │ │ │ │ ├── compare-detail.tsx │ │ │ │ │ ├── file-diff.scss │ │ │ │ │ ├── file-diff.tsx │ │ │ │ │ ├── mr-comments.tsx │ │ │ │ │ ├── repo-blame.scss │ │ │ │ │ ├── repo-blame.tsx │ │ │ │ │ ├── repo-breadcrumb.scss │ │ │ │ │ ├── repo-breadcrumb.tsx │ │ │ │ │ ├── repo-editor.scss │ │ │ │ │ ├── repo-editor.tsx │ │ │ │ │ ├── repo-file-container.tsx │ │ │ │ │ ├── repo-file.scss │ │ │ │ │ ├── repo-file.tsx │ │ │ │ │ ├── repo-mr-form.scss │ │ │ │ │ ├── repo-mr-form.tsx │ │ │ │ │ ├── repo-mr-table.scss │ │ │ │ │ ├── repo-mr-table.tsx │ │ │ │ │ ├── repo-nav.tsx │ │ │ │ │ ├── source-target-select.scss │ │ │ │ │ ├── source-target-select.tsx │ │ │ │ │ ├── start-tip.scss │ │ │ │ │ ├── start-tip.tsx │ │ │ │ │ ├── yml-editor.scss │ │ │ │ │ └── yml-editor.tsx │ │ │ │ ├── mr-detail.scss │ │ │ │ ├── mr-detail.tsx │ │ │ │ ├── repo-backup.tsx │ │ │ │ ├── repo-branch.scss │ │ │ │ ├── repo-branch.tsx │ │ │ │ ├── repo-commit.scss │ │ │ │ ├── repo-commit.tsx │ │ │ │ ├── repo-mr-creation.scss │ │ │ │ ├── repo-mr-creation.tsx │ │ │ │ ├── repo-mr.tsx │ │ │ │ ├── repo-tag.scss │ │ │ │ ├── repo-tag.tsx │ │ │ │ ├── repo-tree.scss │ │ │ │ ├── repo-tree.tsx │ │ │ │ └── util.tsx │ │ │ ├── settings │ │ │ │ ├── app-settings.scss │ │ │ │ ├── app-settings.tsx │ │ │ │ └── components │ │ │ │ │ ├── app-certificate-reference.tsx │ │ │ │ │ ├── app-info.tsx │ │ │ │ │ ├── app-library-reference.tsx │ │ │ │ │ ├── app-merge-description.scss │ │ │ │ │ ├── app-merge-description.tsx │ │ │ │ │ ├── app-notify │ │ │ │ │ ├── common-notify-group.tsx │ │ │ │ │ ├── external-user-table.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ └── notify-config.tsx │ │ │ │ │ ├── app-variable-config.tsx │ │ │ │ │ ├── app-version-push.tsx │ │ │ │ │ ├── sonar-config.tsx │ │ │ │ │ └── variable-config-form.tsx │ │ │ └── test │ │ │ │ ├── coverage-report.tsx │ │ │ │ ├── test-detail-container.tsx │ │ │ │ ├── test-detail.scss │ │ │ │ ├── test-detail.tsx │ │ │ │ ├── test-list.scss │ │ │ │ ├── test-list.tsx │ │ │ │ └── test-pie-chart.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── app-setting.ts │ │ │ ├── application.ts │ │ │ ├── build.ts │ │ │ ├── dataTask.js │ │ │ ├── deploy.ts │ │ │ ├── notify-group.ts │ │ │ ├── notify.ts │ │ │ ├── pipeline-config.ts │ │ │ ├── problem.ts │ │ │ ├── quality.ts │ │ │ ├── repo.ts │ │ │ └── test.js │ │ ├── stores │ │ │ ├── application.tsx │ │ │ ├── build.ts │ │ │ ├── certificate-reference.ts │ │ │ ├── dataTask.ts │ │ │ ├── deploy.ts │ │ │ ├── library-reference.ts │ │ │ ├── notify-group.ts │ │ │ ├── notify.ts │ │ │ ├── pipeline-config.ts │ │ │ ├── quality.ts │ │ │ ├── repo.ts │ │ │ └── test.ts │ │ ├── tabs.tsx │ │ └── types │ │ │ ├── application.d.ts │ │ │ ├── build.d.ts │ │ │ ├── common-notify-group.d.ts │ │ │ ├── config.d.ts │ │ │ ├── deploy.d.ts │ │ │ ├── notify.d.ts │ │ │ ├── pipeline-config.d.ts │ │ │ ├── problem.d.ts │ │ │ ├── quality.d.ts │ │ │ ├── release.d.ts │ │ │ ├── repo.d.ts │ │ │ ├── setting.d.ts │ │ │ └── test.d.ts │ ├── cmp │ │ ├── common │ │ │ ├── addon-detail │ │ │ │ ├── detail.scss │ │ │ │ ├── detail.tsx │ │ │ │ └── resource.tsx │ │ │ ├── alarm-record │ │ │ │ ├── detail.scss │ │ │ │ └── detail.tsx │ │ │ ├── alarm-state.tsx │ │ │ ├── alarm-strategy │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── notify-strategy-select.tsx │ │ │ │ ├── strategy-form.tsx │ │ │ │ └── trigger-condition-select.tsx │ │ │ ├── cloud-common │ │ │ │ └── index.tsx │ │ │ ├── cluster-terminal │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── xterm-binary.tsx │ │ │ │ └── xterm-channel.tsx │ │ │ ├── components │ │ │ │ ├── cluster-selector.tsx │ │ │ │ ├── instance-operation.scss │ │ │ │ ├── instance-operation.tsx │ │ │ │ ├── machine-form-modal.tsx │ │ │ │ ├── set-tag-form.tsx │ │ │ │ └── table-col.tsx │ │ │ ├── custom-alarm │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── custom-dashboard │ │ │ │ ├── custom-dashboard.tsx │ │ │ │ ├── data-loader.ts │ │ │ │ ├── import-export.scss │ │ │ │ ├── import-export.tsx │ │ │ │ └── index.tsx │ │ │ ├── regionData.ts │ │ │ ├── select-project-modal.tsx │ │ │ └── utils.ts │ │ ├── entry.js │ │ ├── pages │ │ │ ├── account-guidance │ │ │ │ ├── config.ts │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── alarm-overview │ │ │ │ └── index.tsx │ │ │ ├── alarm-record │ │ │ │ ├── detail.tsx │ │ │ │ ├── events │ │ │ │ │ ├── detail.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── notification │ │ │ │ │ ├── detail.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── alarm-report │ │ │ │ ├── custom-dashboard │ │ │ │ │ ├── custom-dashboard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── report-records │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ ├── alarm-strategy │ │ │ │ ├── cmp-stratege.tsx │ │ │ │ └── index.tsx │ │ │ ├── cloud-accounts │ │ │ │ └── index.tsx │ │ │ ├── cloud-source │ │ │ │ ├── config.ts │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── cluster-container │ │ │ │ ├── cluster-event-log.tsx │ │ │ │ ├── cluster-nodes-detail.tsx │ │ │ │ ├── cluster-nodes.tsx │ │ │ │ ├── cluster-pod-detail.tsx │ │ │ │ ├── cluster-pods.tsx │ │ │ │ ├── cluster-selector.tsx │ │ │ │ ├── cluster-terminal.scss │ │ │ │ ├── cluster-terminal.tsx │ │ │ │ ├── cluster-workload-detail.tsx │ │ │ │ ├── cluster-workload.tsx │ │ │ │ └── index.tsx │ │ │ ├── cluster-manage │ │ │ │ ├── add-cluster-forms │ │ │ │ │ ├── aliCloud-container-cluster-form.tsx │ │ │ │ │ ├── aliCloud-erdc-form.tsx │ │ │ │ │ ├── aliCloud-preview.tsx │ │ │ │ │ ├── cluster-form.scss │ │ │ │ │ ├── cluster-form.tsx │ │ │ │ │ ├── cluster-type-modal.scss │ │ │ │ │ ├── cluster-type-modal.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── cloud-machine-form-modal.tsx │ │ │ │ ├── cluster-detail.scss │ │ │ │ ├── cluster-detail.tsx │ │ │ │ ├── cluster-list.scss │ │ │ │ ├── cluster-list.tsx │ │ │ │ ├── cluster-log.scss │ │ │ │ ├── cluster-log.tsx │ │ │ │ ├── config.tsx │ │ │ │ ├── deploy-cluster-form.scss │ │ │ │ ├── deploy-cluster-form.tsx │ │ │ │ ├── deploy-cluster-forms │ │ │ │ │ ├── cluster-config-form.tsx │ │ │ │ │ ├── cluster-fps-form.tsx │ │ │ │ │ ├── cluster-ssh-form.tsx │ │ │ │ │ ├── docker-form.tsx │ │ │ │ │ ├── edit-table.scss │ │ │ │ │ ├── edit-table.tsx │ │ │ │ │ ├── jump-board-form.tsx │ │ │ │ │ ├── nodes-form.tsx │ │ │ │ │ ├── platform-form.tsx │ │ │ │ │ └── storage-form.tsx │ │ │ │ ├── deploy-cluster-log.scss │ │ │ │ ├── deploy-cluster-log.tsx │ │ │ │ ├── deploy-cluster.scss │ │ │ │ ├── deploy-cluster.tsx │ │ │ │ ├── form-utils.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── operation-history.tsx │ │ │ │ └── token-manage-modal.tsx │ │ │ ├── computing │ │ │ │ └── ecs │ │ │ │ │ ├── ecsCloud-operation-form.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── custom-alarm │ │ │ │ └── index.tsx │ │ │ ├── domain-manage │ │ │ │ └── index.tsx │ │ │ ├── middleware-chart │ │ │ │ └── index.tsx │ │ │ ├── middleware-dashboard │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── modal.scss │ │ │ │ ├── scale-modal.tsx │ │ │ │ ├── upgrade-modal.tsx │ │ │ │ └── usage-chart.tsx │ │ │ ├── middleware-detail │ │ │ │ ├── detail.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── monitor.tsx │ │ │ │ ├── resource.tsx │ │ │ │ ├── scale-info.tsx │ │ │ │ └── upgrade-info.tsx │ │ │ ├── networks │ │ │ │ ├── common │ │ │ │ │ ├── components │ │ │ │ │ │ ├── cidr-input.scss │ │ │ │ │ │ └── cidr-input.tsx │ │ │ │ │ ├── config.tsx │ │ │ │ │ └── util.ts │ │ │ │ ├── vpc │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── vpc-form-modal.tsx │ │ │ │ └── vsw │ │ │ │ │ └── index.tsx │ │ │ ├── pod-detail │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── storage │ │ │ │ └── oss │ │ │ │ │ └── index.tsx │ │ │ └── tasks │ │ │ │ ├── config.ts │ │ │ │ ├── job.tsx │ │ │ │ └── task-list.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── _common-custom-dashboard.ts │ │ │ ├── alarm-record.ts │ │ │ ├── alarm-report.ts │ │ │ ├── alarm-strategy.ts │ │ │ ├── cloud-accounts.ts │ │ │ ├── cloud-common.ts │ │ │ ├── cloud-overview.ts │ │ │ ├── cluster.ts │ │ │ ├── computing.ts │ │ │ ├── custom-alarm.ts │ │ │ ├── custom-dashboard.ts │ │ │ ├── domain-manage.ts │ │ │ ├── machine.ts │ │ │ ├── middleware-chart.ts │ │ │ ├── middleware-dashboard.ts │ │ │ ├── monitor-common-metadata.ts │ │ │ ├── networks.ts │ │ │ ├── pod-detail.ts │ │ │ ├── storage.ts │ │ │ ├── task.ts │ │ │ └── token-manage.ts │ │ ├── stores │ │ │ ├── _common-custom-alarm.ts │ │ │ ├── _common-custom-dashboard.ts │ │ │ ├── _common-monitor-metadata.ts │ │ │ ├── alarm-record.ts │ │ │ ├── alarm-report.ts │ │ │ ├── alarm-strategy.ts │ │ │ ├── analysis-monitor-metadata.ts │ │ │ ├── cloud-account.ts │ │ │ ├── cloud-common.ts │ │ │ ├── cloud-source.ts │ │ │ ├── cluster.ts │ │ │ ├── computing.ts │ │ │ ├── custom-alarm.ts │ │ │ ├── custom-dashboard.ts │ │ │ ├── machine.ts │ │ │ ├── middleware-chart.ts │ │ │ ├── middleware-dashboard.ts │ │ │ ├── networks.ts │ │ │ ├── pod-detail.ts │ │ │ ├── query-monitor-metadata.ts │ │ │ ├── storage.ts │ │ │ └── task.ts │ │ └── types │ │ │ ├── alarm-record.d.ts │ │ │ ├── alarm-report.d.ts │ │ │ ├── alarm-strategy.d.ts │ │ │ ├── cloud-accounts.d.ts │ │ │ ├── cloud-common.d.ts │ │ │ ├── cloud-overview.d.ts │ │ │ ├── cluster.d.ts │ │ │ ├── computing.d.ts │ │ │ ├── custom-alarm.d.ts │ │ │ ├── dashboard-model.d.ts │ │ │ ├── domain-manage.d.ts │ │ │ ├── machine.d.ts │ │ │ ├── middleware-dashboard.d.ts │ │ │ ├── monitor-common-metadata.d.ts │ │ │ ├── networks.d.ts │ │ │ ├── storage.d.ts │ │ │ └── task.d.ts │ ├── dcos │ │ ├── common │ │ │ ├── config.js │ │ │ ├── containers │ │ │ │ ├── terminal.scss │ │ │ │ └── terminal.tsx │ │ │ ├── custom-label.scss │ │ │ ├── custom-label.tsx │ │ │ ├── label-selector.scss │ │ │ └── label-selector.tsx │ │ ├── entry.js │ │ ├── pages │ │ │ ├── alarm-report │ │ │ │ ├── config │ │ │ │ │ ├── processChartList.ts │ │ │ │ │ └── topChartList.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── processDetail.scss │ │ │ │ ├── processDetail.tsx │ │ │ │ └── topTable.tsx │ │ │ ├── associated-addon │ │ │ │ └── index.tsx │ │ │ ├── cluster-dashboard │ │ │ │ ├── alarm-record.tsx │ │ │ │ ├── groupTabs.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── instance-list.scss │ │ │ │ ├── instance-list.tsx │ │ │ │ ├── machine-detail.scss │ │ │ │ ├── machine-detail.tsx │ │ │ │ ├── machine-list.tsx │ │ │ │ ├── machineTabs.tsx │ │ │ │ ├── resources-summary.scss │ │ │ │ ├── resources-summary.tsx │ │ │ │ └── resources-usage-trend.tsx │ │ │ ├── machine-manager │ │ │ │ ├── machine-offline-modal.tsx │ │ │ │ ├── machine-table.scss │ │ │ │ ├── machine-table.tsx │ │ │ │ └── tag-form.tsx │ │ │ └── service-manager │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── info-box.tsx │ │ │ │ ├── mq-manager │ │ │ │ ├── group.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── info.tsx │ │ │ │ └── topic.tsx │ │ │ │ ├── mq.tsx │ │ │ │ ├── rds-manager │ │ │ │ ├── account-form │ │ │ │ │ ├── add-account-form.tsx │ │ │ │ │ ├── change-permission-form.scss │ │ │ │ │ ├── change-permission-form.tsx │ │ │ │ │ └── reset-password-form.tsx │ │ │ │ ├── database.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── info.tsx │ │ │ │ └── rds-account.tsx │ │ │ │ ├── rds.tsx │ │ │ │ ├── redis-manager │ │ │ │ ├── index.tsx │ │ │ │ └── info.tsx │ │ │ │ ├── redis.tsx │ │ │ │ ├── service-list.scss │ │ │ │ └── service-list.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── alarm.ts │ │ │ ├── cloud-service.ts │ │ │ ├── dashboard.ts │ │ │ ├── machine.ts │ │ │ ├── purchase.ts │ │ │ └── service.ts │ │ ├── stores │ │ │ ├── cloud-service.ts │ │ │ ├── dashboard.ts │ │ │ ├── machine.ts │ │ │ ├── purchase.ts │ │ │ └── services.ts │ │ └── types │ │ │ ├── alarm.d.ts │ │ │ ├── cloud-service.d.ts │ │ │ ├── dashboard.d.ts │ │ │ ├── purchase.d.ts │ │ │ └── services.d.ts │ ├── dop │ │ ├── entry.js │ │ ├── locales │ │ │ ├── en.json │ │ │ └── zh.json │ │ ├── pages │ │ │ ├── addons │ │ │ │ └── sidebar-menu.tsx │ │ │ ├── form-editor │ │ │ │ ├── components │ │ │ │ │ ├── api-test.scss │ │ │ │ │ └── api-test.tsx │ │ │ │ ├── form-items │ │ │ │ │ ├── api-test.tsx │ │ │ │ │ ├── datasource-selector.tsx │ │ │ │ │ └── member-selector.tsx │ │ │ │ └── index.tsx │ │ │ ├── projects │ │ │ │ ├── apply-unblock-modal.tsx │ │ │ │ └── project-list-protocol.tsx │ │ │ ├── publisher │ │ │ │ └── index.tsx │ │ │ └── report │ │ │ │ ├── chart-column.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── rate-select.tsx │ │ ├── router.ts │ │ ├── services │ │ │ └── index.ts │ │ └── stores │ │ │ └── index.tsx │ ├── ecp │ │ ├── entry.js │ │ ├── pages │ │ │ ├── application │ │ │ │ ├── index.tsx │ │ │ │ ├── site-ip-manage.tsx │ │ │ │ └── site-manage.tsx │ │ │ ├── components │ │ │ │ └── monitor-drawer.tsx │ │ │ ├── resource │ │ │ │ ├── index.tsx │ │ │ │ └── machine-manage.tsx │ │ │ └── setting │ │ │ │ ├── detail.tsx │ │ │ │ └── index.tsx │ │ ├── router.ts │ │ ├── services │ │ │ └── machine-manage.ts │ │ ├── stores │ │ │ └── machine-manage.ts │ │ └── types │ │ │ └── machine-manage.d.ts │ ├── extra │ │ └── entry.js │ ├── gallery │ │ ├── entry.js │ │ ├── pages │ │ │ ├── detail.scss │ │ │ ├── detail.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── router.ts │ │ ├── services │ │ │ └── index.ts │ │ └── types │ │ │ └── market.d.ts │ ├── msp │ │ ├── alarm-manage │ │ │ ├── alarm-record │ │ │ │ ├── services │ │ │ │ │ └── alarm-record.ts │ │ │ │ └── stores │ │ │ │ │ └── alarm-record.ts │ │ │ ├── alarm-strategy │ │ │ │ ├── index.js │ │ │ │ ├── pages │ │ │ │ │ ├── alarm-index │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── msp-strategy.tsx │ │ │ │ │ └── custom-alarm │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── services │ │ │ │ │ ├── alarm-strategy.ts │ │ │ │ │ └── custom-alarm.ts │ │ │ │ └── stores │ │ │ │ │ ├── alarm-strategy.ts │ │ │ │ │ ├── analysis-monitor-metadata.ts │ │ │ │ │ └── custom-alarm.ts │ │ │ ├── alert-list │ │ │ │ ├── component │ │ │ │ │ └── alarm-detail-title.tsx │ │ │ │ ├── events │ │ │ │ │ ├── base-event-detail.tsx │ │ │ │ │ ├── base-event-list.tsx │ │ │ │ │ ├── detail.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── notification │ │ │ │ │ ├── base-notification-detail.tsx │ │ │ │ │ ├── base-notification-list.tsx │ │ │ │ │ ├── detail.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── index.ts │ │ │ ├── notify-group │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ └── overview │ │ │ │ ├── base-overview.tsx │ │ │ │ └── index.tsx │ │ ├── components │ │ │ ├── analyzer-chart.tsx │ │ │ ├── card-list.tsx │ │ │ ├── intro-page.tsx │ │ │ └── time-select.tsx │ │ ├── config.tsx │ │ ├── entry.js │ │ ├── env-overview │ │ │ ├── router.ts │ │ │ ├── service-list │ │ │ │ ├── pages │ │ │ │ │ ├── anomaly.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── no-services-holder.tsx │ │ │ │ │ ├── overview.tsx │ │ │ │ │ ├── process.tsx │ │ │ │ │ ├── service-list-dashboard.tsx │ │ │ │ │ ├── service-list.scss │ │ │ │ │ ├── service-name-select.scss │ │ │ │ │ ├── service-name-select.tsx │ │ │ │ │ ├── trace.tsx │ │ │ │ │ ├── transaction-detail.tsx │ │ │ │ │ ├── transaction.scss │ │ │ │ │ └── transaction.tsx │ │ │ │ └── router.ts │ │ │ └── topology │ │ │ │ ├── pages │ │ │ │ └── topology │ │ │ │ │ ├── component │ │ │ │ │ ├── floating-edge │ │ │ │ │ │ ├── connection-line.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── nodes │ │ │ │ │ │ ├── addon-node.tsx │ │ │ │ │ │ ├── api-gateway-node.tsx │ │ │ │ │ │ ├── common-node.scss │ │ │ │ │ │ ├── common-node.tsx │ │ │ │ │ │ ├── external-service-node.tsx │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── services-node.tsx │ │ │ │ │ ├── progress │ │ │ │ │ │ ├── circular.tsx │ │ │ │ │ │ ├── hexagon.tsx │ │ │ │ │ │ └── index.scss │ │ │ │ │ ├── topology-comp.tsx │ │ │ │ │ ├── topology-detail.tsx │ │ │ │ │ ├── topology-overview.scss │ │ │ │ │ └── topology-overview.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── utils │ │ │ │ │ └── index.ts │ │ │ │ ├── services │ │ │ │ └── topology.ts │ │ │ │ └── types │ │ │ │ └── topology.d.ts │ │ ├── env-setting │ │ │ ├── configuration │ │ │ │ ├── index.tsx │ │ │ │ ├── type-select.scss │ │ │ │ └── type-select.tsx │ │ │ ├── info │ │ │ │ └── index.tsx │ │ │ └── member-manage │ │ │ │ └── index.tsx │ │ ├── monitor │ │ │ ├── api-insight │ │ │ │ ├── common │ │ │ │ │ └── components │ │ │ │ │ │ ├── apiDelayPanel.tsx │ │ │ │ │ │ ├── apiRenderFactory.tsx │ │ │ │ │ │ ├── apiSizePanel.tsx │ │ │ │ │ │ ├── connectChart.tsx │ │ │ │ │ │ ├── filterNav.scss │ │ │ │ │ │ ├── filterNav.tsx │ │ │ │ │ │ └── topPVPanel.tsx │ │ │ │ ├── pages │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── delay │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── indices │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── request │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── transport │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── router.ts │ │ │ │ └── stores │ │ │ │ │ ├── filter.ts │ │ │ │ │ └── request.ts │ │ │ ├── browser-insight │ │ │ │ ├── common │ │ │ │ │ ├── components │ │ │ │ │ │ ├── biRenderFactory.tsx │ │ │ │ │ │ ├── slow-track-panel.tsx │ │ │ │ │ │ ├── sort-list │ │ │ │ │ │ │ ├── sort-list.scss │ │ │ │ │ │ │ ├── sort-list.tsx │ │ │ │ │ │ │ ├── sort-tab.scss │ │ │ │ │ │ │ ├── sort-tab.tsx │ │ │ │ │ │ │ ├── sortFactory.tsx │ │ │ │ │ │ │ ├── sub-tab.scss │ │ │ │ │ │ │ └── sub-tab.tsx │ │ │ │ │ │ └── table-panel.tsx │ │ │ │ │ └── utils │ │ │ │ │ │ └── index.ts │ │ │ │ ├── pages │ │ │ │ │ ├── ajax │ │ │ │ │ │ ├── ajax.tsx │ │ │ │ │ │ └── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ ├── browser │ │ │ │ │ │ ├── browser.tsx │ │ │ │ │ │ └── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ ├── comparative │ │ │ │ │ │ ├── comparative.scss │ │ │ │ │ │ └── comparative.tsx │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── domain.scss │ │ │ │ │ │ └── domain.tsx │ │ │ │ │ ├── exception │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── exception-trace-panel.tsx │ │ │ │ │ │ ├── exception.scss │ │ │ │ │ │ └── exception.tsx │ │ │ │ │ ├── geography-china │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── geography-china.tsx │ │ │ │ │ │ └── slow-track.tsx │ │ │ │ │ ├── overview │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── overview.tsx │ │ │ │ │ ├── page │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── page.scss │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── position │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── position.scss │ │ │ │ │ │ └── position.tsx │ │ │ │ │ ├── script │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── script-detail.tsx │ │ │ │ │ │ └── script.tsx │ │ │ │ │ └── summary │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ ├── summary-detail.tsx │ │ │ │ │ │ ├── summary.scss │ │ │ │ │ │ └── summary.tsx │ │ │ │ ├── router.ts │ │ │ │ ├── services │ │ │ │ │ └── comparative.js │ │ │ │ └── stores │ │ │ │ │ └── comparative.ts │ │ │ ├── error-insight │ │ │ │ ├── pages │ │ │ │ │ └── errors │ │ │ │ │ │ ├── error-card.scss │ │ │ │ │ │ ├── error-card.tsx │ │ │ │ │ │ ├── error-detail.scss │ │ │ │ │ │ ├── error-detail.tsx │ │ │ │ │ │ ├── error-filters.scss │ │ │ │ │ │ ├── error-filters.tsx │ │ │ │ │ │ ├── error-overview.scss │ │ │ │ │ │ └── error-overview.tsx │ │ │ │ ├── router.ts │ │ │ │ ├── services │ │ │ │ │ └── errors.ts │ │ │ │ ├── stores │ │ │ │ │ └── error.ts │ │ │ │ └── types │ │ │ │ │ └── index.d.ts │ │ │ ├── gateway-ingress │ │ │ │ ├── common │ │ │ │ │ └── components │ │ │ │ │ │ ├── domain-selector.scss │ │ │ │ │ │ ├── domain-selector.tsx │ │ │ │ │ │ ├── giRenderFactory.tsx │ │ │ │ │ │ ├── http-status-input.scss │ │ │ │ │ │ ├── http-status-input.tsx │ │ │ │ │ │ ├── statistics-selector.scss │ │ │ │ │ │ ├── statistics-selector.tsx │ │ │ │ │ │ ├── tab-right.scss │ │ │ │ │ │ └── tab-right.tsx │ │ │ │ ├── pages │ │ │ │ │ ├── connection │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── connection.tsx │ │ │ │ │ ├── latency │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── latency.tsx │ │ │ │ │ ├── qps │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── qps.tsx │ │ │ │ │ └── traffic │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── apiConfig.ts │ │ │ │ │ │ └── chartMap.ts │ │ │ │ │ │ └── traffic.tsx │ │ │ │ ├── router.ts │ │ │ │ ├── services │ │ │ │ │ └── common.ts │ │ │ │ └── stores │ │ │ │ │ └── common.ts │ │ │ ├── monitor-common │ │ │ │ ├── components │ │ │ │ │ ├── appGroupSelector.tsx │ │ │ │ │ ├── appsSelector.scss │ │ │ │ │ ├── appsSelector.tsx │ │ │ │ │ ├── chartFactory.tsx │ │ │ │ │ ├── moduleSelector.tsx │ │ │ │ │ ├── resource-usage │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ ├── resource-usage-charts.scss │ │ │ │ │ │ └── resource-usage-charts.tsx │ │ │ │ │ ├── sort-list │ │ │ │ │ │ ├── sort-list.scss │ │ │ │ │ │ ├── sort-list.tsx │ │ │ │ │ │ ├── sort-tab.scss │ │ │ │ │ │ ├── sort-tab.tsx │ │ │ │ │ │ ├── sortFactory.tsx │ │ │ │ │ │ ├── sub-tab.scss │ │ │ │ │ │ └── sub-tab.tsx │ │ │ │ │ ├── top-nav-right.scss │ │ │ │ │ └── top-tab-right.tsx │ │ │ │ ├── index.js │ │ │ │ ├── services │ │ │ │ │ └── monitorChart.ts │ │ │ │ └── stores │ │ │ │ │ └── monitorChart.ts │ │ │ ├── monitor-overview │ │ │ │ └── router.ts │ │ │ ├── status-insight │ │ │ │ ├── pages │ │ │ │ │ └── status │ │ │ │ │ │ ├── 3-month-uptime.tsx │ │ │ │ │ │ ├── add-modal.scss │ │ │ │ │ │ ├── add-modal.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── month-uptime.scss │ │ │ │ │ │ ├── month-uptime.tsx │ │ │ │ │ │ ├── past-incidents.tsx │ │ │ │ │ │ ├── status-chart.tsx │ │ │ │ │ │ ├── status-common.scss │ │ │ │ │ │ ├── status-detail-chart.tsx │ │ │ │ │ │ ├── status-detail.scss │ │ │ │ │ │ ├── status-detail.tsx │ │ │ │ │ │ ├── status.scss │ │ │ │ │ │ └── status.tsx │ │ │ │ ├── router.ts │ │ │ │ ├── services │ │ │ │ │ └── status.ts │ │ │ │ ├── stores │ │ │ │ │ └── status.ts │ │ │ │ └── types │ │ │ │ │ └── index.d.ts │ │ │ └── trace-insight │ │ │ │ ├── common │ │ │ │ └── utils │ │ │ │ │ ├── traceConstants.ts │ │ │ │ │ ├── traceConvert.ts │ │ │ │ │ └── traceSummary.ts │ │ │ │ ├── pages │ │ │ │ ├── trace-detail │ │ │ │ │ ├── components │ │ │ │ │ │ ├── trace-detail-filter.tsx │ │ │ │ │ │ ├── trace-detail.scss │ │ │ │ │ │ └── trace-detail.tsx │ │ │ │ │ ├── containers │ │ │ │ │ │ └── trace-detail.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── trace-querier │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── trace-common-panel.scss │ │ │ │ │ ├── trace-common-panel.tsx │ │ │ │ │ ├── trace-detail-filter.tsx │ │ │ │ │ ├── trace-detail-new.tsx │ │ │ │ │ ├── trace-graph │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── span-time-info.tsx │ │ │ │ │ ├── span-title-info.tsx │ │ │ │ │ ├── trace-detail-info.tsx │ │ │ │ │ ├── trace-header.tsx │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── trace-history-list.scss │ │ │ │ │ ├── trace-history-list.tsx │ │ │ │ │ ├── trace-querier.scss │ │ │ │ │ ├── trace-querier.tsx │ │ │ │ │ ├── trace-search-detail.scss │ │ │ │ │ ├── trace-search-detail.tsx │ │ │ │ │ ├── trace-search.tsx │ │ │ │ │ ├── trace-status-viewer.scss │ │ │ │ │ └── trace-status-viewer.tsx │ │ │ │ ├── router.ts │ │ │ │ ├── services │ │ │ │ ├── trace-detail.ts │ │ │ │ └── trace-querier.ts │ │ │ │ ├── stores │ │ │ │ ├── trace-detail.ts │ │ │ │ └── trace-querier.ts │ │ │ │ └── types │ │ │ │ └── index.d.ts │ │ ├── pages │ │ │ ├── micro-service │ │ │ │ ├── overview.scss │ │ │ │ ├── overview.tsx │ │ │ │ └── switch-env.tsx │ │ │ ├── transfer │ │ │ │ └── si.tsx │ │ │ └── wait-wrapper.tsx │ │ ├── query-analysis │ │ │ ├── custom-dashboard │ │ │ │ ├── index.ts │ │ │ │ ├── pages │ │ │ │ │ ├── custom-dashboard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── services │ │ │ │ │ └── custom-dashboard.ts │ │ │ │ └── stores │ │ │ │ │ ├── custom-dashboard.ts │ │ │ │ │ └── query-monitor-metadata.ts │ │ │ └── index.ts │ │ ├── router.ts │ │ ├── services │ │ │ ├── configCenter.ts │ │ │ ├── configuration.ts │ │ │ ├── dubbo.ts │ │ │ ├── gateway.ts │ │ │ ├── http.ts │ │ │ ├── index.ts │ │ │ ├── info.ts │ │ │ ├── log-analytics.ts │ │ │ ├── log-analyze.ts │ │ │ ├── service-list.ts │ │ │ ├── topology-service-analyze.ts │ │ │ ├── trace.ts │ │ │ └── zkproxy.ts │ │ ├── stores │ │ │ ├── config-center.ts │ │ │ ├── dubbo.ts │ │ │ ├── gateway.ts │ │ │ ├── http.ts │ │ │ ├── info.ts │ │ │ ├── log-analytics.ts │ │ │ ├── log-analyze.ts │ │ │ ├── micro-service.tsx │ │ │ ├── service-analytics.ts │ │ │ ├── topology-service-analyze.ts │ │ │ ├── trace.ts │ │ │ └── zkproxy.ts │ │ └── types │ │ │ ├── config-center.d.ts │ │ │ ├── configuration.d.ts │ │ │ ├── gateway.d.ts │ │ │ ├── index.d.ts │ │ │ ├── info.d.ts │ │ │ ├── log-analytics.d.ts │ │ │ ├── log-analyze.d.ts │ │ │ ├── monitor.d.ts │ │ │ ├── service-analytics.d.ts │ │ │ ├── service.d.ts │ │ │ ├── topology-service-analyze.d.ts │ │ │ └── zkproxy.d.ts │ ├── org │ │ ├── common │ │ │ ├── audit-render.tsx │ │ │ ├── audit-templates.json │ │ │ ├── card │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── cluster-quota.tsx │ │ │ ├── compact-select │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── config.ts │ │ │ ├── field-options-setting.tsx │ │ │ ├── issue-field-icon.scss │ │ │ └── issue-field-icon.tsx │ │ ├── entry.js │ │ ├── pages │ │ │ ├── announcement │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── approval │ │ │ │ └── index.tsx │ │ │ ├── certificate │ │ │ │ ├── detail-modal.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── projects │ │ │ │ ├── add-project.tsx │ │ │ │ ├── create-project.scss │ │ │ │ ├── create-project.tsx │ │ │ │ ├── import-project-template.scss │ │ │ │ ├── import-project-template.tsx │ │ │ │ ├── import-project.tsx │ │ │ │ ├── issue-field-manage.tsx │ │ │ │ ├── issue-field-modal.tsx │ │ │ │ ├── issue-field-setting-modal.scss │ │ │ │ ├── issue-field-setting-modal.tsx │ │ │ │ ├── issue-type-manage.tsx │ │ │ │ ├── operation-project-record.tsx │ │ │ │ ├── project-list.scss │ │ │ │ ├── project-list.tsx │ │ │ │ └── settings │ │ │ │ │ ├── info │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ │ └── member │ │ │ │ │ └── index.tsx │ │ │ ├── safety │ │ │ │ └── index.tsx │ │ │ └── setting │ │ │ │ ├── block-network.tsx │ │ │ │ ├── license-info.tsx │ │ │ │ ├── member-label.scss │ │ │ │ ├── member-label.tsx │ │ │ │ ├── notice-channel.tsx │ │ │ │ ├── operation-log-setting.tsx │ │ │ │ ├── org-info.tsx │ │ │ │ ├── org-setting.scss │ │ │ │ └── org-setting.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── announcement.ts │ │ │ ├── approval.ts │ │ │ ├── audit.ts │ │ │ ├── certificate.ts │ │ │ ├── issue-field.ts │ │ │ ├── license.ts │ │ │ ├── notice-channel.ts │ │ │ └── project-list.ts │ │ ├── stores │ │ │ ├── announcement.ts │ │ │ ├── approval.ts │ │ │ ├── audit.ts │ │ │ ├── certificate.ts │ │ │ ├── index.ts │ │ │ └── issue-field.ts │ │ └── types │ │ │ ├── announcement.d.ts │ │ │ ├── approval.d.ts │ │ │ ├── audit.d.ts │ │ │ ├── certificate.d.ts │ │ │ ├── import-export-file-list.d.ts │ │ │ ├── issue-field.d.ts │ │ │ └── notice-channel.d.ts │ ├── project │ │ ├── common │ │ │ ├── components │ │ │ │ ├── activity.scss │ │ │ │ ├── activity.tsx │ │ │ │ ├── branch-rule.tsx │ │ │ │ ├── configuration-center │ │ │ │ │ └── config-form-modal.jsx │ │ │ │ ├── datasource-selector.tsx │ │ │ │ ├── health-point.scss │ │ │ │ ├── health-point.tsx │ │ │ │ ├── issue-workflow-setting-modal.scss │ │ │ │ ├── issue-workflow-setting-modal.tsx │ │ │ │ ├── issue-workflow.scss │ │ │ │ ├── issue-workflow.tsx │ │ │ │ ├── issue │ │ │ │ │ ├── add-mr-relation.scss │ │ │ │ │ ├── add-mr-relation.tsx │ │ │ │ │ ├── comment-box.scss │ │ │ │ │ ├── comment-box.tsx │ │ │ │ │ ├── edit-issue-drawer │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta-fields.scss │ │ │ │ │ │ └── meta-fields.tsx │ │ │ │ │ ├── issue-activities.scss │ │ │ │ │ ├── issue-activities.tsx │ │ │ │ │ ├── issue-config.scss │ │ │ │ │ ├── issue-config.tsx │ │ │ │ │ ├── issue-drawer.scss │ │ │ │ │ ├── issue-drawer.tsx │ │ │ │ │ ├── issue-icon.scss │ │ │ │ │ ├── issue-icon.tsx │ │ │ │ │ ├── issue-relation.scss │ │ │ │ │ ├── issue-relation.tsx │ │ │ │ │ ├── issue-state.tsx │ │ │ │ │ ├── issue-testCase-relation.tsx │ │ │ │ │ ├── iteration-select.tsx │ │ │ │ │ ├── subscribers-selector.tsx │ │ │ │ │ ├── text-field-input.tsx │ │ │ │ │ ├── time-input.scss │ │ │ │ │ ├── time-input.tsx │ │ │ │ │ ├── time-trace.scss │ │ │ │ │ └── time-trace.tsx │ │ │ │ ├── iteration-selector.scss │ │ │ │ ├── iteration-selector.tsx │ │ │ │ ├── params-config │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── list-edit.tsx │ │ │ │ │ └── text-edit.tsx │ │ │ │ ├── pipeline-manage │ │ │ │ │ ├── common │ │ │ │ │ │ ├── config-env-selector.tsx │ │ │ │ │ │ └── tree-category │ │ │ │ │ │ │ ├── edit-category.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── tree.scss │ │ │ │ │ │ │ ├── tree.tsx │ │ │ │ │ │ │ └── utils.tsx │ │ │ │ │ ├── config-detail │ │ │ │ │ │ ├── case-edit-form.tsx │ │ │ │ │ │ ├── case-info.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── pipeline-editor │ │ │ │ │ │ │ ├── case-node.scss │ │ │ │ │ │ │ ├── case-node.tsx │ │ │ │ │ │ │ ├── case-tree-selector.tsx │ │ │ │ │ │ │ ├── case-yml-graphic-editor.scss │ │ │ │ │ │ │ ├── case-yml-graphic-editor.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── record-list.scss │ │ │ │ │ │ └── record-list.tsx │ │ │ │ │ ├── config.tsx │ │ │ │ │ ├── file-tree.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pipeline-detail.tsx │ │ │ │ │ ├── run-detail │ │ │ │ │ │ ├── base-info.scss │ │ │ │ │ │ ├── base-info.tsx │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── pipeline-chart │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── run-case-node.scss │ │ │ │ │ │ │ └── run-case-node.tsx │ │ │ │ │ │ ├── record-list.scss │ │ │ │ │ │ ├── record-list.tsx │ │ │ │ │ │ ├── result-view.scss │ │ │ │ │ │ ├── result-view.tsx │ │ │ │ │ │ ├── snippet-detail.scss │ │ │ │ │ │ └── snippet-detail.tsx │ │ │ │ │ └── scope-config.tsx │ │ │ │ ├── pipeline-new │ │ │ │ │ ├── category.scss │ │ │ │ │ ├── category.tsx │ │ │ │ │ ├── config.tsx │ │ │ │ │ ├── detail │ │ │ │ │ │ ├── build-log.scss │ │ │ │ │ │ ├── build-log.tsx │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── execute.scss │ │ │ │ │ │ ├── execute.tsx │ │ │ │ │ │ ├── in-params-form.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── info.tsx │ │ │ │ │ │ ├── pipeline-chart │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── pipeline-node.scss │ │ │ │ │ │ │ └── pipeline-node.tsx │ │ │ │ │ │ ├── pipeline-node.scss │ │ │ │ │ │ └── pipeline-node.tsx │ │ │ │ │ ├── form.scss │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── guide.scss │ │ │ │ │ ├── guide.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── list.tsx │ │ │ │ │ ├── record-detail.scss │ │ │ │ │ ├── record-detail.tsx │ │ │ │ │ └── records.tsx │ │ │ │ ├── project-selector.scss │ │ │ │ ├── project-selector.tsx │ │ │ │ ├── runtime-selector.scss │ │ │ │ ├── runtime-selector.tsx │ │ │ │ ├── scan-rule.tsx │ │ │ │ ├── section-info-edit.tsx │ │ │ │ ├── workflow-state-form.tsx │ │ │ │ └── workflow │ │ │ │ │ ├── add-flow.tsx │ │ │ │ │ ├── cards │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── code.tsx │ │ │ │ │ ├── merge-request.tsx │ │ │ │ │ ├── merge.tsx │ │ │ │ │ └── pipeline.tsx │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── issue-workflow.tsx │ │ │ │ │ └── mr-workflow.tsx │ │ │ ├── config.ts │ │ │ └── issue-config.ts │ │ ├── constants.ts │ │ ├── entry.js │ │ ├── pages │ │ │ ├── addon │ │ │ │ ├── addon-category.tsx │ │ │ │ └── custom-config.tsx │ │ │ ├── apps │ │ │ │ ├── app-form.scss │ │ │ │ ├── app-form.tsx │ │ │ │ ├── app-list.tsx │ │ │ │ ├── app-type-select.scss │ │ │ │ └── app-type-select.tsx │ │ │ ├── auto-test │ │ │ │ ├── import-file.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── scenes-import-record.tsx │ │ │ │ └── scenes.tsx │ │ │ ├── backlog │ │ │ │ ├── backlog.scss │ │ │ │ ├── backlog.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── issue-item.scss │ │ │ │ ├── issue-item.tsx │ │ │ │ ├── iteration-item.scss │ │ │ │ ├── iteration-item.tsx │ │ │ │ ├── iterations.scss │ │ │ │ └── iterations.tsx │ │ │ ├── config-sheet │ │ │ │ └── index.tsx │ │ │ ├── data-source │ │ │ │ └── index.tsx │ │ │ ├── deploy │ │ │ │ ├── add-deploy │ │ │ │ │ ├── add-release.scss │ │ │ │ │ ├── add-release.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── release-list.tsx │ │ │ │ ├── config.ts │ │ │ │ ├── deploy-config │ │ │ │ │ └── index.tsx │ │ │ │ ├── deploy-detail │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── flow │ │ │ │ └── records.tsx │ │ │ ├── homepage │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ └── readme-markdown.tsx │ │ │ ├── issue │ │ │ │ ├── all.tsx │ │ │ │ ├── board.tsx │ │ │ │ ├── component │ │ │ │ │ ├── table-view.scss │ │ │ │ │ └── table-view.tsx │ │ │ │ ├── gantt │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── import-export.scss │ │ │ │ ├── import-export.tsx │ │ │ │ ├── issue-dashboard.tsx │ │ │ │ ├── issue-protocol.tsx │ │ │ │ ├── statistics.tsx │ │ │ │ └── task-summary.tsx │ │ │ ├── iteration │ │ │ │ ├── iteration-modal.tsx │ │ │ │ └── table.tsx │ │ │ ├── milestone │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── milestone-group.scss │ │ │ │ ├── milestone-group.tsx │ │ │ │ ├── milestone-item.scss │ │ │ │ ├── milestone-item.tsx │ │ │ │ ├── milestone-table.scss │ │ │ │ └── milestone-table.tsx │ │ │ ├── pipelines │ │ │ │ ├── index.tsx │ │ │ │ ├── old-pipeline.tsx │ │ │ │ └── pipeline-config.tsx │ │ │ ├── plan-detail │ │ │ │ ├── batch-processing │ │ │ │ │ └── index.tsx │ │ │ │ ├── case-import-button │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── change-result │ │ │ │ │ └── index.tsx │ │ │ │ ├── columns │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── operation.tsx │ │ │ │ ├── common-comp.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── pass-and-next.scss │ │ │ │ ├── pass-and-next.tsx │ │ │ │ ├── report │ │ │ │ │ ├── basic-info │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── charts-result │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── export-pdf │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── number-info │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── personal-usecase │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── status-toggle.tsx │ │ │ │ └── test-record │ │ │ │ │ ├── build-history.scss │ │ │ │ │ ├── build-history.tsx │ │ │ │ │ ├── pipeline-detail.tsx │ │ │ │ │ └── test-record.tsx │ │ │ ├── release │ │ │ │ ├── application.scss │ │ │ │ ├── application.tsx │ │ │ │ ├── components │ │ │ │ │ ├── addon.scss │ │ │ │ │ ├── addon.tsx │ │ │ │ │ ├── application-detail.tsx │ │ │ │ │ ├── form.scss │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── project-detail.tsx │ │ │ │ │ ├── release-select.scss │ │ │ │ │ ├── release-select.tsx │ │ │ │ │ └── update.tsx │ │ │ │ ├── project.tsx │ │ │ │ └── release-protocol.tsx │ │ │ ├── resource │ │ │ │ ├── components │ │ │ │ │ ├── chart.jsx │ │ │ │ │ ├── config.js │ │ │ │ │ ├── resource.jsx │ │ │ │ │ ├── resource.scss │ │ │ │ │ ├── service-list.jsx │ │ │ │ │ └── service-list.scss │ │ │ │ ├── containers │ │ │ │ │ ├── chart.jsx │ │ │ │ │ └── service-list.tsx │ │ │ │ └── index.js │ │ │ ├── settings │ │ │ │ ├── components │ │ │ │ │ ├── project-cluster.scss │ │ │ │ │ ├── project-cluster.tsx │ │ │ │ │ ├── project-info.tsx │ │ │ │ │ ├── project-label.scss │ │ │ │ │ ├── project-label.tsx │ │ │ │ │ ├── project-settings.tsx │ │ │ │ │ └── workflow-setting │ │ │ │ │ │ ├── branch-policy-card.tsx │ │ │ │ │ │ ├── branch-policy.tsx │ │ │ │ │ │ ├── devops-workflow-drawer.tsx │ │ │ │ │ │ ├── devops-workflow.tsx │ │ │ │ │ │ └── line.tsx │ │ │ │ └── index.js │ │ │ ├── statistics │ │ │ │ ├── code-coverage.tsx │ │ │ │ └── test-dashboard.tsx │ │ │ ├── test-env │ │ │ │ ├── protocol-input.tsx │ │ │ │ ├── test-env-detail.tsx │ │ │ │ ├── test-env.scss │ │ │ │ └── test-env.tsx │ │ │ ├── test-manage │ │ │ │ ├── case │ │ │ │ │ ├── case-drawer │ │ │ │ │ │ ├── case-api.scss │ │ │ │ │ │ ├── case-api.tsx │ │ │ │ │ │ ├── case-footer.tsx │ │ │ │ │ │ ├── case-meta.tsx │ │ │ │ │ │ ├── case-step.scss │ │ │ │ │ │ ├── case-step.tsx │ │ │ │ │ │ ├── content-panel.scss │ │ │ │ │ │ ├── content-panel.tsx │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── related-bugs.scss │ │ │ │ │ │ ├── related-bugs.tsx │ │ │ │ │ │ └── select-env.tsx │ │ │ │ │ ├── columns │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── more-operation │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── filter-drawer.tsx │ │ │ │ │ ├── header │ │ │ │ │ │ ├── batch-processing │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── plan-modal │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── tag-modal │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── import-export.scss │ │ │ │ │ ├── import-export.tsx │ │ │ │ │ ├── manual-test.scss │ │ │ │ │ ├── manual-test.tsx │ │ │ │ │ ├── new-set.tsx │ │ │ │ │ ├── project-tree-modal │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── test-env-drawer │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── components │ │ │ │ │ ├── case-table │ │ │ │ │ │ ├── all-checkbox │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── case-checkbox │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── case-tree │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── title │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.js │ │ │ │ │ └── meta-modal │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── constants.ts │ │ │ │ └── types │ │ │ │ │ └── index.d.ts │ │ │ ├── test-plan │ │ │ │ ├── auto-test-plan-detail │ │ │ │ │ └── index.tsx │ │ │ │ ├── plan-modal.tsx │ │ │ │ ├── test-plan-protocol.tsx │ │ │ │ ├── test-plan.scss │ │ │ │ └── test-plan.tsx │ │ │ ├── test-report │ │ │ │ ├── create.tsx │ │ │ │ ├── download.tsx │ │ │ │ └── index.tsx │ │ │ ├── third-service │ │ │ │ └── components │ │ │ │ │ ├── addon-modal.scss │ │ │ │ │ ├── addon-modal.tsx │ │ │ │ │ ├── config.tsx │ │ │ │ │ ├── instance-form.tsx │ │ │ │ │ └── third-addon-form.tsx │ │ │ └── ticket │ │ │ │ └── index.tsx │ │ ├── router.tsx │ │ ├── services │ │ │ ├── addon.ts │ │ │ ├── auto-test-case.ts │ │ │ ├── branch-rule.ts │ │ │ ├── deploy.ts │ │ │ ├── file-tree.tsx │ │ │ ├── issue-workflow.ts │ │ │ ├── issue.ts │ │ │ ├── label.ts │ │ │ ├── pipeline.tsx │ │ │ ├── project-iteration.ts │ │ │ ├── project-workflow.ts │ │ │ ├── project.ts │ │ │ ├── release.ts │ │ │ ├── resource.ts │ │ │ ├── scan-rule.ts │ │ │ ├── test-case.ts │ │ │ ├── test-env.ts │ │ │ ├── test-plan.ts │ │ │ └── test-set.ts │ │ ├── stores │ │ │ ├── auto-test-case.ts │ │ │ ├── branch-rule.ts │ │ │ ├── custom-addon.ts │ │ │ ├── file-tree.tsx │ │ │ ├── issue-workflow.ts │ │ │ ├── issues.ts │ │ │ ├── iteration.ts │ │ │ ├── label.ts │ │ │ ├── project.tsx │ │ │ ├── release.ts │ │ │ ├── resource.ts │ │ │ ├── scan-rule.ts │ │ │ ├── test-case.ts │ │ │ ├── test-env.ts │ │ │ ├── test-plan.ts │ │ │ └── test-set.ts │ │ ├── tabs.tsx │ │ ├── types │ │ │ ├── auto-test.d.ts │ │ │ ├── custom-addon.d.ts │ │ │ ├── deploy.d.ts │ │ │ ├── devops-workflow.d.ts │ │ │ ├── issue-workflow.d.ts │ │ │ ├── issue.d.ts │ │ │ ├── iteration.d.ts │ │ │ ├── label.d.ts │ │ │ ├── project.d.ts │ │ │ ├── release.d.ts │ │ │ ├── resource.d.ts │ │ │ ├── scan-rule.d.ts │ │ │ ├── test-env.d.ts │ │ │ ├── test-plan.d.ts │ │ │ └── test.d.ts │ │ └── utils │ │ │ └── test-case.ts │ ├── publisher │ │ ├── entry.js │ │ ├── pages │ │ │ ├── artifacts │ │ │ │ ├── artifacts-detail.scss │ │ │ │ ├── artifacts-detail.tsx │ │ │ │ ├── artifacts-form-modal.tsx │ │ │ │ ├── artifacts-info.tsx │ │ │ │ ├── config.ts │ │ │ │ ├── gray-form-modal.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── upload-modal.tsx │ │ │ │ ├── version-form-modal.tsx │ │ │ │ ├── version-list.tsx │ │ │ │ └── vsrsion-list.scss │ │ │ ├── authenticate │ │ │ │ └── index.tsx │ │ │ ├── error-report │ │ │ │ ├── detail.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── publisher-manage │ │ │ │ ├── publisher-form-modal.tsx │ │ │ │ ├── publisher-info.tsx │ │ │ │ ├── publisher-list-v2.scss │ │ │ │ ├── publisher-list-v2.tsx │ │ │ │ ├── publisher-setting.scss │ │ │ │ └── publisher-setting.tsx │ │ │ ├── safety-manage │ │ │ │ └── index.tsx │ │ │ └── statistics │ │ │ │ ├── detail.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ ├── router.ts │ │ ├── services │ │ │ ├── authenticate.ts │ │ │ ├── error-report.ts │ │ │ ├── publisher.ts │ │ │ ├── safety.ts │ │ │ └── statistics.ts │ │ ├── stores │ │ │ ├── authenticate.ts │ │ │ ├── blacklist.ts │ │ │ ├── erase.ts │ │ │ ├── error-report.ts │ │ │ ├── publisher.ts │ │ │ └── statistics.ts │ │ └── types │ │ │ └── publisher.d.ts │ └── runtime │ │ ├── common │ │ ├── components │ │ │ ├── deployment-table.tsx │ │ │ ├── instance-table.scss │ │ │ ├── instance-table.tsx │ │ │ ├── pod-table.tsx │ │ │ ├── slide-panel-tabs.scss │ │ │ └── slide-panel-tabs.tsx │ │ └── logs │ │ │ ├── components │ │ │ ├── container-log.scss │ │ │ ├── container-log.tsx │ │ │ ├── deploy-log.scss │ │ │ ├── deploy-log.tsx │ │ │ ├── log-filter.tsx │ │ │ └── migration-log.tsx │ │ │ └── containers │ │ │ ├── container-log.scss │ │ │ └── container-log.tsx │ │ ├── entry.js │ │ ├── pages │ │ └── overview │ │ │ ├── components │ │ │ ├── activity.scss │ │ │ ├── activity.tsx │ │ │ ├── addon-card.scss │ │ │ ├── addon-card.tsx │ │ │ ├── deploy-status.scss │ │ │ ├── deploy-status.tsx │ │ │ ├── domain-modal.scss │ │ │ ├── domain-modal.tsx │ │ │ ├── elastic-scaling.scss │ │ │ ├── elastic-scaling.tsx │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── info.scss │ │ │ ├── info.tsx │ │ │ ├── resource-modal.scss │ │ │ ├── resource-modal.tsx │ │ │ ├── rollback-list.tsx │ │ │ ├── service-card.scss │ │ │ ├── service-card.tsx │ │ │ ├── service-dropdown.scss │ │ │ └── service-dropdown.tsx │ │ │ ├── containers │ │ │ └── index.tsx │ │ │ └── index.js │ │ ├── services │ │ ├── domain.ts │ │ ├── log.ts │ │ ├── runtime.ts │ │ └── service.ts │ │ ├── stores │ │ ├── domain.ts │ │ ├── log.ts │ │ ├── runtime.ts │ │ └── service.ts │ │ └── types │ │ ├── domain.d.ts │ │ ├── log.d.ts │ │ ├── runtime.d.ts │ │ └── service.d.ts ├── org-home │ ├── entry.js │ ├── pages │ │ └── land │ │ │ ├── index.scss │ │ │ └── index.tsx │ ├── router.tsx │ ├── services │ │ └── org.tsx │ ├── stores │ │ └── org.tsx │ └── types │ │ ├── org.d.ts │ │ └── personal-home.d.ts ├── static │ ├── api-design-worker.js │ ├── dom-to-image.min.js │ ├── favicon.ico │ ├── jspdf.min.js │ ├── roboto-regular.ttf │ ├── usecase_model_en.xlsx │ ├── usecase_model_en.xmind │ ├── usecase_model_zh.xlsx │ └── usecase_model_zh.xmind ├── styles │ ├── _color.scss │ ├── _mixin.scss │ ├── _variable.scss │ ├── antd-extension.scss │ ├── app.scss │ └── util.scss ├── theme-color.mjs ├── themes │ ├── dice.ts │ ├── index.ts │ └── theme.ts ├── user │ ├── common │ │ ├── connect-user.tsx │ │ ├── index.ts │ │ ├── perm-editor │ │ │ ├── add-scope.tsx │ │ │ ├── perm-editor.scss │ │ │ ├── perm-editor.tsx │ │ │ ├── perm-export.scss │ │ │ ├── perm-export.tsx │ │ │ ├── perm-table.tsx │ │ │ ├── role-editor.tsx │ │ │ └── utils.tsx │ │ └── with-auth.tsx │ ├── entry.js │ ├── services │ │ └── user.ts │ ├── stores │ │ ├── _perm-app.ts │ │ ├── _perm-msp.ts │ │ ├── _perm-org.ts │ │ ├── _perm-project.ts │ │ ├── _perm-state.ts │ │ ├── _perm-sys.ts │ │ ├── index.ts │ │ └── permission.ts │ └── types │ │ └── user.d.ts ├── views │ ├── css.js │ ├── index.ejs │ └── skeleton.html └── yml-chart │ ├── chart │ ├── config.ts │ ├── index.tsx │ ├── yml-chart-utils.tsx │ ├── yml-chart.scss │ └── yml-chart.tsx │ ├── common │ ├── action-config-form.tsx │ ├── action-select.scss │ ├── action-select.tsx │ ├── in-params-drawer.scss │ ├── in-params-drawer.tsx │ ├── out-params-drawer.scss │ ├── out-params-drawer.tsx │ ├── pipeline-graphic-editor.tsx │ ├── pipeline-node-drawer.scss │ └── pipeline-node-drawer.tsx │ ├── config.tsx │ ├── form-editor-for-pipeline │ ├── form-editor-config.ts │ └── form-editor.tsx │ ├── nodes │ ├── add-node.scss │ ├── add-node.tsx │ ├── add-row.scss │ ├── add-row.tsx │ ├── end-node.scss │ ├── end-node.tsx │ ├── index.tsx │ ├── pipeline-node.scss │ ├── pipeline-node.tsx │ ├── start-node.scss │ └── start-node.tsx │ ├── pipeline-editor.scss │ ├── pipeline-editor.tsx │ └── utils.tsx ├── auto_test ├── README.md ├── fixtures.ts ├── global-setup.ts ├── login.spec.ts ├── playwright.config.ts ├── tests │ ├── admin │ │ ├── audit.spec.ts │ │ ├── cluster-manage.spec.ts │ │ ├── global-config.spec.ts │ │ ├── org-manage.spec.ts │ │ └── user-manage.spec.ts │ ├── dop │ │ ├── add-ticket.spec.ts │ │ ├── app │ │ │ ├── app-config.spec.ts │ │ │ ├── app-manage.spec.ts │ │ │ ├── branch-rule.spec.ts │ │ │ ├── notify.spec.ts │ │ │ └── private-config.spec.ts │ │ ├── branches.spec.ts │ │ ├── deploy.spec.ts │ │ ├── history.spec.ts │ │ ├── layout.spec.ts │ │ ├── merge-requests.spec.ts │ │ ├── pipeline.spec.ts │ │ ├── project-manage.spec.ts │ │ ├── repo.spec.ts │ │ ├── sonar-test.spec.ts │ │ └── unit-test.spec.ts │ ├── org │ │ ├── audit-log.spec.ts │ │ ├── deployment-logging.spec.ts │ │ ├── matters-related.spec.ts │ │ ├── member-management.spec.ts │ │ ├── mobile-development-management.spec.ts │ │ ├── organization-information.spec.ts │ │ └── organization-manage.spec.ts │ └── pages │ │ ├── app-manage.ts │ │ ├── base.ts │ │ ├── notify.ts │ │ ├── project-manage.ts │ │ ├── user-manage.ts │ │ └── variable-config.ts └── util.ts ├── babel.config.js ├── index.html ├── jest.config.js ├── mf.config.js ├── package.json ├── postcss.config.mjs ├── snippets ├── filter.tsx ├── hook.ts └── layout.tsx ├── tailwind.config.mjs ├── test ├── extend-expect.d.ts ├── extend-expect.ts ├── jsx-control-statements.tsx ├── mock-stroe.js ├── setupJest.ts └── utils.ts ├── tools ├── comparison.js ├── detect-unused-files.ts ├── file-walker.js ├── find-unused-module.ts ├── gen-cp-go.js ├── gen-cp-md.js ├── gen-snippets.js ├── testcase-checker.js ├── traverse-module.ts └── tsconfig.json ├── tsconfig-jest.json ├── tsconfig-webpack.json ├── tsconfig.json ├── vite.config.js ├── webpack.analyze.js ├── webpack.config.js ├── webpack.development.js └── webpack.production.js /.dockerignore: -------------------------------------------------------------------------------- 1 | *node_modules/ -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | quote_type = single 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/node_modules/* 2 | public/* 3 | shell/app/static 4 | shell/app/files 5 | shell/app/external 6 | shell/tools 7 | shell/snippets 8 | shell/test/* -------------------------------------------------------------------------------- /.github/prlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": [ 3 | { 4 | "pattern": "^(build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\\([a-zA-Z,-]+\\))?:\\s", 5 | "message": "Your title needs to be prefixed with a topic" 6 | } 7 | ], 8 | "body": [ 9 | { 10 | "pattern": "\\|[^\\|]*中文[^\\|]*\\|[^\\|]*[^\\|\\s]+[^\\|]*\\|", 11 | "message": "You need fulfil chinese changelog" 12 | }, 13 | { 14 | "pattern": "\\|[^\\|]*English[^\\|]*\\|[^\\|]*[^\\|\\s]+[^\\|]*\\|", 15 | "message": "You need fulfil english changelog" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | titleOnly: true 2 | commitsOnly: false 3 | titleAndCommits: false 4 | 5 | types: 6 | - feat 7 | - fix 8 | - docs 9 | - style 10 | - refactor 11 | - perf 12 | - test 13 | - build 14 | - ci 15 | - chore 16 | - revert 17 | -------------------------------------------------------------------------------- /.github/workflows/git-sync.yml: -------------------------------------------------------------------------------- 1 | name: GIT SYNC 2 | 3 | on: [ push, delete ] 4 | 5 | jobs: 6 | build: 7 | if: github.repository == 'erda-project/erda-ui' 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - name: unshallow 12 | run: git fetch --unshallow origin 13 | - name: add remote 14 | run: git remote add mirror https://${{ secrets.ERDA_CLOUD_MIRROR_GIT_USERNAME }}:${{ secrets.ERDA_CLOUD_MIRROR_GIT_PASSWORD }}@erda.cloud/erda/dop/erda-project/erda-ui 15 | - name: push 16 | run: git push --tags --force --prune mirror "refs/remotes/origin/*:refs/heads/*" 17 | -------------------------------------------------------------------------------- /.github/workflows/license-check.yml: -------------------------------------------------------------------------------- 1 | name: LICENSE CHECK 2 | on: 3 | push: 4 | tags: 5 | - v* 6 | branches: 7 | - develop 8 | - master 9 | - release/* 10 | pull_request: 11 | jobs: 12 | LICENSE-CHECK: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Check License Lines 17 | uses: kt3k/license_checker@v1.0.6 18 | with: 19 | args: -q -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | pnpx --no-install commitlint --edit $1 5 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | # lint-staged may casuse issue when run concurrently, so set concurrency to 1 5 | pnpm run -r --parallel --workspace-concurrency=1 precommit 6 | -------------------------------------------------------------------------------- /.licenserc.json: -------------------------------------------------------------------------------- 1 | { 2 | "**/*.{js,ts,jsx,tsx}": [ 3 | "Copyright (c) 2021 Terminus, Inc.", 4 | "This program is free software: you can use, redistribute, and/or modify", 5 | "it under the terms of the GNU Affero General Public License, version 3" 6 | ], 7 | "ignore": [ 8 | "node_modules/", 9 | "core/.eslintrc.js", 10 | "shell/.cz-config.js", 11 | "shell/.eslintrc.js" 12 | ] 13 | } 14 | 15 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com/ 2 | @nodelib:registry=https://registry.npmmirror.com/ 3 | @mrmlnc:registry=https://registry.npmmirror.com/ 4 | sass_binary_site=https://npmmirror.com/mirrors/node-sass/ 5 | @terminus:registry=https://registry.npm.terminus.io 6 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | module.exports = { 15 | printWidth: 120, 16 | tabWidth: 2, 17 | semi: true, 18 | singleQuote: true, 19 | trailingComma: 'all', 20 | arrowParens: 'always', 21 | }; 22 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ 3 | dist/ 4 | public/ -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | module.exports = { 15 | extends: 'stylelint-config-ali', 16 | }; 17 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2.4 2 | -------------------------------------------------------------------------------- /cli/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | .pnpm-debug.log -------------------------------------------------------------------------------- /cli/.npmignore: -------------------------------------------------------------------------------- 1 | .*.swp 2 | ._* 3 | .DS_Store 4 | .git 5 | .hg 6 | .npmrc 7 | .lock-wscript 8 | .svn 9 | .wafpickle-* 10 | config.gypi 11 | CVS 12 | npm-debug.log 13 | .local-pack 14 | -------------------------------------------------------------------------------- /core/src/history.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | import { createBrowserHistory } from 'history'; 14 | 15 | const history = createBrowserHistory(); 16 | 17 | export default history; 18 | -------------------------------------------------------------------------------- /core/src/types/global.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | interface Obj { 15 | [k: string]: T; 16 | } 17 | type Nullable = T | null; 18 | -------------------------------------------------------------------------------- /docs/files/architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/docs/files/architecture.jpg -------------------------------------------------------------------------------- /docs/files/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/docs/files/logo.png -------------------------------------------------------------------------------- /f2elint.config.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | module.exports = { 15 | enableStylelint: true, 16 | enableMarkdownlint: false, 17 | enablePrettier: true, 18 | }; 19 | -------------------------------------------------------------------------------- /modules/components/.fatherrc.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export default { 15 | esm: 'rollup', 16 | cjs: 'rollup', 17 | }; 18 | -------------------------------------------------------------------------------- /modules/components/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | .umi/* 3 | .eslintcache 4 | src/.umi/ 5 | docs-dist/ 6 | dist 7 | lib 8 | es 9 | coverage 10 | -------------------------------------------------------------------------------- /modules/components/.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.png 2 | **/*.svg 3 | CODEOWNERS 4 | .dockerignore 5 | package.json 6 | .umi 7 | .umi-production 8 | lib/ 9 | es/ 10 | dist/ 11 | public/ 12 | _site/ 13 | coverage/ 14 | CNAME 15 | LICENSE 16 | pmpm-lock.yaml 17 | netlify.toml 18 | yarn-error.log 19 | *.sh 20 | *.snap 21 | .gitignore 22 | .npmignore 23 | .prettierignore 24 | .DS_Store 25 | .editorconfig 26 | .eslintignore 27 | .history 28 | **/*.yml 29 | src/form/interface.ts 30 | -------------------------------------------------------------------------------- /modules/components/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### [0.1.6](https://github.com/erda-project/erda-ui/compare/v0.1.5...v0.1.6) (2022-05-18) 6 | 7 | 8 | ### Features 9 | 10 | * **components:** add changelog & fix menu color issue ([3830a3b](https://github.com/erda-project/erda-ui/commit/3830a3b9d5a2038b80021a916f9e84586612d1f2)) 11 | 12 | 13 | ### Bug Fixes 14 | 15 | * **components:** change script ([f1379c5](https://github.com/erda-project/erda-ui/commit/f1379c57d0b32032d21ff8c4e6ade47ec4f546b8)) 16 | 17 | ### [0.1.5](https://github.com/erda-project/erda-ui/compare/v1.3.0-rc...v0.1.5) (2022-05-18) 18 | 19 | 20 | -------------------------------------------------------------------------------- /modules/components/cspell.json: -------------------------------------------------------------------------------- 1 | { 2 | "words": [ 3 | "alicdn", 4 | "aliyun", 5 | "antd", 6 | "arrowParens", 7 | "automerge", 8 | "bisheng", 9 | "browserslist", 10 | "chevronleft", 11 | "chevronright", 12 | "compat", 13 | "datasource", 14 | "docsearch", 15 | "dumi", 16 | "elint", 17 | "erda", 18 | "esbuild", 19 | "formily", 20 | "gulpfile", 21 | "huiche", 22 | "iconpark", 23 | "jinru", 24 | "jsonml", 25 | "modifyVars", 26 | "navs", 27 | "pnpm", 28 | "Popover", 29 | "precommit", 30 | "prettierrc", 31 | "shengxu", 32 | "stylelint", 33 | "tinycolor", 34 | "umirc", 35 | "unshift", 36 | "Unsort", 37 | "vars" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /modules/components/docs/components/configProvider/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ConfigProvider 3 | order: 7 4 | nav: 5 | path: /components 6 | title: 组件 7 | --- 8 | 9 | # ConfigProvider 10 | 11 | > 全局配置上下文 12 | 13 | ## 基本用法 14 | 15 | 16 | 17 | ## API 18 | 19 | | 参数 | 说明 | 类型 | 默认值 | 20 | | --------- | ------------------------------------------------------------------------------------------- | ------ | ------ | 21 | | locale | 语言包配置,语言包可到 @erda-ui/components/es/locale 目录下寻找,也可以添加自己的自定义语言 | object | - | 22 | | clsPrefix | 设置统一样式前缀。注意:需要配合 less 变量 @erda-prefix 使用 | string | erda | 23 | -------------------------------------------------------------------------------- /modules/components/docs/components/ellipsis/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ellipsis 3 | order: 1 4 | nav: 5 | path: /components 6 | title: 组件 7 | --- 8 | 9 | # 自动省略 Ellipsis 10 | 11 | 12 | 13 | ## API 14 | 15 | 参考[Antd Tooltip](https://ant.design/components/tooltip-cn/#API) 16 | -------------------------------------------------------------------------------- /modules/components/docs/components/icon/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Icon 3 | nav: 4 | path: /components 5 | title: 组件 6 | --- 7 | 8 | # Icon 图标 9 | 10 | ## 图标组件 11 | 12 | 13 | 14 | ## 添加自定义 iconfont 15 | 16 | 17 | 18 | ## 图标颜色大小 19 | 20 | 21 | 22 | ## API 23 | 24 | | 参数 | 说明 | 类型 | 默认值 | 25 | | --------- | ------------ | --------- | ------ | 26 | | isEditing | 是否编辑状态 | boolean | false | 27 | | formProps | 表单属性 | FormProps | - | 28 | | loading | 是否加载中 | boolean | false | 29 | -------------------------------------------------------------------------------- /modules/components/docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/components/docs/logo.png -------------------------------------------------------------------------------- /modules/components/lint-staged.config.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | module.exports = { 15 | '*.{ts,tsx},!.umirc.ts': 'eslint --cache --fix --max-warnings=0', 16 | '**/*.ts?(x)': () => 'tsc --noEmit', 17 | }; 18 | -------------------------------------------------------------------------------- /modules/components/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/components/public/favicon.ico -------------------------------------------------------------------------------- /modules/components/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "automerge": false, 4 | "dependencyDashboard": true, 5 | "rebaseWhen": "conflicted", 6 | "ignoreDeps": [], 7 | "labels": ["dependencies"], 8 | "postUpdateOptions": ["yarnDedupeHighest"], 9 | "prConcurrentLimit": 30, 10 | "prHourlyLimit": 0, 11 | "schedule": "on sunday before 6:00am", 12 | "timezone": "UTC" 13 | } 14 | -------------------------------------------------------------------------------- /modules/components/src/context-provider/style/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | -------------------------------------------------------------------------------- /modules/components/src/ellipsis/style/index.less: -------------------------------------------------------------------------------- 1 | @import '../../themes/default.less'; 2 | 3 | .@{erda-prefix}-ellipsis { 4 | overflow: hidden; 5 | text-overflow: ellipsis; 6 | white-space: nowrap; 7 | } 8 | -------------------------------------------------------------------------------- /modules/components/src/ellipsis/style/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import './index.less'; 15 | -------------------------------------------------------------------------------- /modules/components/src/form-modal/style/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import 'antd/lib/modal/style/index'; 15 | -------------------------------------------------------------------------------- /modules/components/src/form/style/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import '@formily/antd/esm/form-item/style.less'; 15 | import './index.less'; 16 | -------------------------------------------------------------------------------- /modules/components/src/icon/style/index.less: -------------------------------------------------------------------------------- 1 | .erda-icon { 2 | width: 20px; 3 | height: 20px; 4 | vertical-align: -0.15em; 5 | fill: currentColor; 6 | overflow: hidden; 7 | box-sizing: content-box; 8 | } 9 | -------------------------------------------------------------------------------- /modules/components/src/icon/style/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import './index.less'; 15 | -------------------------------------------------------------------------------- /modules/components/src/locale/en_US.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import defaultLocale from './default'; 15 | 16 | export default defaultLocale; 17 | -------------------------------------------------------------------------------- /modules/components/src/pagination/style/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import './index.less'; 15 | -------------------------------------------------------------------------------- /modules/components/src/table/style/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import './index.less'; 15 | import './table-config-header.less'; 16 | import './table-footer.less'; 17 | -------------------------------------------------------------------------------- /modules/components/src/table/style/table-footer.less: -------------------------------------------------------------------------------- 1 | @import '../../themes/default.less'; 2 | @import (reference) '~antd/es/style/themes/index.less'; 3 | 4 | @footer-prefix: ~'@{erda-prefix}-table-footer'; 5 | 6 | .@{footer-prefix} { 7 | padding: 0 1rem; 8 | display: flex; 9 | justify-content: space-between; 10 | background: @default-02; 11 | 12 | &-pagination { 13 | display: flex; 14 | align-items: center; 15 | justify-content: flex-end; 16 | } 17 | } 18 | 19 | .@{footer-prefix}-white { 20 | background: @white; 21 | } 22 | -------------------------------------------------------------------------------- /modules/components/src/themes/default.less: -------------------------------------------------------------------------------- 1 | @import './color.less'; 2 | 3 | @erda-prefix: erda; 4 | 5 | @root-entry-name: default; 6 | @primary-color: @default; 7 | -------------------------------------------------------------------------------- /modules/components/src/types/global.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | interface Obj { 15 | [k: string]: T; 16 | } 17 | -------------------------------------------------------------------------------- /modules/components/tsconfig-jest.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "target": "ES2020", 5 | "module": "ESNext", 6 | "lib": ["dom", "esnext"], 7 | "allowJs": true, 8 | "checkJs": false, 9 | "jsx": "react", 10 | "declaration": true, 11 | "sourceMap": true, 12 | "incremental": true, 13 | "strict": false, 14 | "noImplicitAny": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "noImplicitReturns": true, 18 | "moduleResolution": "node", 19 | "esModuleInterop": true, 20 | "strict": false, 21 | "skipLibCheck": false, 22 | "types": ["jest", "./__tests__/types/index.d.ts"], 23 | "baseUrl": "." 24 | }, 25 | "include": ["./src/**/*"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /modules/components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@erda-ui/components": ["src/index.tsx"] 6 | }, 7 | "strictNullChecks": true, 8 | "module": "esnext", 9 | "moduleResolution": "node", 10 | "esModuleInterop": true, 11 | "experimentalDecorators": true, 12 | "jsx": "react", 13 | "noUnusedParameters": true, 14 | "noUnusedLocals": true, 15 | "noImplicitAny": true, 16 | "target": "es6", 17 | "lib": ["dom", "es2017", "dom.iterable"], 18 | "skipLibCheck": true 19 | }, 20 | "exclude": ["node_modules", "lib", "es"] 21 | } 22 | -------------------------------------------------------------------------------- /modules/market/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /modules/market/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | !/public 15 | !.env 16 | 17 | # misc 18 | .DS_Store 19 | .env.local 20 | .env.development.local 21 | .env.test.local 22 | .env.production.local 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | /dist/ 29 | .pnpm-debug.log -------------------------------------------------------------------------------- /modules/market/paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /modules/market/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/public/favicon.ico -------------------------------------------------------------------------------- /modules/market/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "erda-ui market", 3 | "name": "erda-ui market", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /modules/market/src/images/download/download-bg1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-bg1@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-bg2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-bg2@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-bg@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-c@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-c@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-r1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-r1@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-s1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-s1@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-y1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-y1@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/download/download-y2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/download/download-y2@2x.png -------------------------------------------------------------------------------- /modules/market/src/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/market/src/images/favicon.ico -------------------------------------------------------------------------------- /modules/market/src/index.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import React from 'react'; 15 | import ReactDOM from 'react-dom'; 16 | import App from './App'; 17 | 18 | ReactDOM.render(, document.getElementById('root')); 19 | -------------------------------------------------------------------------------- /modules/market/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | /// 15 | declare module 'resolve-pathname'; 16 | -------------------------------------------------------------------------------- /modules/market/src/styles/_variable.scss: -------------------------------------------------------------------------------- 1 | // layout 2 | $header-height: 5rem; 3 | $mobile-header-height: 3.75rem; 4 | 5 | $radius: 4px; 6 | 7 | // color 8 | $primary: #5d48df !default; 9 | $white: #ffffff; 10 | -------------------------------------------------------------------------------- /modules/market/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./paths.json", 3 | "compilerOptions": { 4 | "target": "es5", 5 | "lib": ["dom", "dom.iterable", "esnext"], 6 | "allowJs": true, 7 | "skipLibCheck": true, 8 | "esModuleInterop": true, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "module": "esnext", 14 | "moduleResolution": "node", 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "noEmit": true, 18 | "jsx": "react-jsx", 19 | "baseUrl": "." 20 | }, 21 | "include": ["./src/*"] 22 | } 23 | -------------------------------------------------------------------------------- /modules/uc/.env: -------------------------------------------------------------------------------- 1 | SKIP_PREFLIGHT_CHECK=true -------------------------------------------------------------------------------- /modules/uc/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | !/public 15 | !.env 16 | 17 | # misc 18 | .DS_Store 19 | .env.local 20 | .env.development.local 21 | .env.test.local 22 | .env.production.local 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | -------------------------------------------------------------------------------- /modules/uc/paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "src/*": ["./src/*"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/uc/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/uc/public/favicon.ico -------------------------------------------------------------------------------- /modules/uc/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | Sign In to Erda 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /modules/uc/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/uc/public/logo192.png -------------------------------------------------------------------------------- /modules/uc/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Erda UI", 3 | "name": "Erda platform UI", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | } 15 | ], 16 | "start_url": ".", 17 | "display": "standalone", 18 | "theme_color": "#6A549E", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /modules/uc/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /modules/uc/src/common/components/container.css: -------------------------------------------------------------------------------- 1 | .st0 { 2 | fill: none; 3 | stroke: currentColor; 4 | stroke-width: 20; 5 | stroke-linecap: round; 6 | stroke-miterlimit: 3; 7 | } 8 | -------------------------------------------------------------------------------- /modules/uc/src/common/history.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import { createBrowserHistory } from 'history'; 15 | 16 | export default createBrowserHistory(); 17 | -------------------------------------------------------------------------------- /modules/uc/src/images/default-user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/uc/src/images/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/uc/src/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/uc/src/images/favicon.ico -------------------------------------------------------------------------------- /modules/uc/src/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/uc/src/images/favicon.png -------------------------------------------------------------------------------- /modules/uc/src/images/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/modules/uc/src/images/login.png -------------------------------------------------------------------------------- /modules/uc/src/images/s_error.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/uc/src/images/s_success.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/uc/src/images/s_warning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/uc/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 4 | 'Droid Sans', 'Helvetica Neue', sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | 9 | code { 10 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; 11 | } 12 | 13 | #login-root { 14 | height: 100vh; 15 | } 16 | 17 | @tailwind base; 18 | @tailwind components; 19 | @tailwind utilities; 20 | -------------------------------------------------------------------------------- /modules/uc/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | /// 15 | -------------------------------------------------------------------------------- /modules/uc/src/services/uc.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import axios from 'axios'; 15 | 16 | export const uploadImg = (fd: FormData) => { 17 | return axios.postForm('/api/files', fd).then((res) => res.data); 18 | }; 19 | -------------------------------------------------------------------------------- /modules/uc/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./paths.json", 3 | "compilerOptions": { 4 | "target": "es5", 5 | "lib": [ 6 | "dom", 7 | "dom.iterable", 8 | "esnext" 9 | ], 10 | "allowJs": true, 11 | "skipLibCheck": true, 12 | "esModuleInterop": true, 13 | "allowSyntheticDefaultImports": true, 14 | "strict": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "module": "esnext", 18 | "moduleResolution": "node", 19 | "resolveJsonModule": true, 20 | "isolatedModules": true, 21 | "noEmit": true, 22 | "jsx": "react-jsx", 23 | "baseUrl": "." 24 | }, 25 | "include": [ 26 | "src" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | # all packages in subdirs of packages 3 | - core 4 | - shell 5 | - scheduler 6 | - cli 7 | - modules/market 8 | - modules/uc 9 | - modules/components 10 | -------------------------------------------------------------------------------- /scheduler/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-async-to-generator"] 3 | } 4 | -------------------------------------------------------------------------------- /scheduler/.gitignore: -------------------------------------------------------------------------------- 1 | ui.log 2 | ui-error.log 3 | -------------------------------------------------------------------------------- /scheduler/nest-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "collection": "@nestjs/schematics", 3 | "sourceRoot": "src" 4 | } 5 | -------------------------------------------------------------------------------- /scheduler/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /scheduler/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "removeComments": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "allowSyntheticDefaultImports": true, 9 | "target": "esnext", 10 | "outDir": "./dist", 11 | "baseUrl": "./", 12 | "skipLibCheck": true, 13 | "esModuleInterop": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/antd-overwrite/table/index.scss: -------------------------------------------------------------------------------- 1 | .wrapped-table { 2 | .table-more-ops { 3 | padding: 3px; 4 | border-radius: 3px; 5 | 6 | &.ant-dropdown-open { 7 | background-color: #e8e8e8; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/bootstrap.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | const bootstrap = () => import('./index'); 15 | 16 | bootstrap(); 17 | -------------------------------------------------------------------------------- /shell/app/charts/components/echarts.scss: -------------------------------------------------------------------------------- 1 | .chart-dom { 2 | height: 270px; 3 | min-height: 240px; 4 | } 5 | -------------------------------------------------------------------------------- /shell/app/charts/utils/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import './regist'; 15 | 16 | export { getFormatter, formatValue } from './formatter'; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/add-member-modal/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import { AddMemberModal } from './add-member-modal'; 15 | 16 | export default AddMemberModal; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/addon-settings/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import AddonSettings from './addon-settings'; 15 | 16 | export default AddonSettings; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/avatar/index.scss: -------------------------------------------------------------------------------- 1 | .dice-avatar { 2 | @include avatar(24px); 3 | background-color: rgba(0, 0, 0, 0.04); 4 | } 5 | 6 | .dice-avatar-wrap { 7 | display: inline-flex; 8 | align-items: center; 9 | vertical-align: middle; 10 | } 11 | 12 | .dice-avatar-has-more { 13 | display: inline-block; 14 | width: 24px; 15 | height: 24px; 16 | line-height: 24px; 17 | text-align: center; 18 | // background: $ghostwhite; 19 | border-radius: 24px; 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/common/components/back-to-top/index.scss: -------------------------------------------------------------------------------- 1 | .scroll-top-btn { 2 | position: fixed; 3 | right: 32px; 4 | bottom: 50px; 5 | display: inline-block; 6 | width: 40px; 7 | height: 40px; 8 | font-size: 20px; 9 | line-height: 40px !important; 10 | text-align: center; 11 | background-color: $white; 12 | border-radius: 50%; 13 | box-shadow: 0 1px 3px 0 $color-text-sub; 14 | cursor: pointer; 15 | opacity: 70%; 16 | animation: fadeIn ease 0.3s; 17 | 18 | &:hover { 19 | opacity: 100%; 20 | } 21 | } 22 | 23 | @keyframes fadeIn { 24 | 0% { 25 | bottom: -40px; 26 | } 27 | 28 | 100% { 29 | bottom: 50px; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/common/components/card-container/index.scss: -------------------------------------------------------------------------------- 1 | .ec-card-container { 2 | padding: 0 8px 8px; 3 | border-radius: $radius; 4 | background-color: $white; 5 | } 6 | 7 | .ec-chart-container { 8 | position: relative; 9 | flex-direction: column; 10 | min-height: 200px; 11 | height: 100%; 12 | 13 | .chart-dom { 14 | height: 100%; 15 | min-height: 200px; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/common/components/cards-layout/index.scss: -------------------------------------------------------------------------------- 1 | .card-list-container { 2 | display: grid; 3 | padding: 3px; 4 | grid-gap: 20px 20px; 5 | 6 | &-g6 { 7 | grid-template-columns: repeat(6, 1fr); 8 | } 9 | 10 | &-g5 { 11 | grid-template-columns: repeat(5, 1fr); 12 | } 13 | 14 | &-g4 { 15 | grid-template-columns: repeat(4, 1fr); 16 | } 17 | 18 | &-g3 { 19 | grid-template-columns: repeat(3, 1fr); 20 | } 21 | 22 | &-g2 { 23 | grid-template-columns: repeat(2, 1fr); 24 | } 25 | 26 | &-g1 { 27 | grid-template-columns: 100%; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /shell/app/common/components/configurable-filter/config-selector.scss: -------------------------------------------------------------------------------- 1 | .filter-config-selector-item { 2 | .more-op { 3 | display: none; 4 | } 5 | 6 | &:hover { 7 | .more-op { 8 | display: flex; 9 | } 10 | } 11 | } 12 | 13 | .erda-configurable-filter-add { 14 | .ant-popover-content { 15 | .ant-popover-inner { 16 | &-content { 17 | padding: 0; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /shell/app/common/components/details-panel/index.scss: -------------------------------------------------------------------------------- 1 | .details-panel-template { 2 | .title-box { 3 | border-radius: $radius-lg; 4 | } 5 | 6 | .ant-anchor-wrapper { 7 | background-color: transparent; 8 | 9 | .ant-anchor { 10 | display: flex; 11 | align-items: center; 12 | width: 100%; 13 | padding: 0 0 0 16px; 14 | background-color: $white; 15 | 16 | .ant-anchor-ink { 17 | display: none; 18 | } 19 | } 20 | } 21 | 22 | .anchor-link-title-icon { 23 | display: flex; 24 | align-items: center; 25 | 26 | svg { 27 | width: 20px; 28 | height: 20px; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/common/components/duration/duration.scss: -------------------------------------------------------------------------------- 1 | .trace-duration { 2 | .ant-input, 3 | .ant-input-group-addon { 4 | background: transparent; 5 | border: none; 6 | } 7 | 8 | .ant-select { 9 | background: transparent; 10 | border: none; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/common/components/erda-icon/index.scss: -------------------------------------------------------------------------------- 1 | .primary-icon { 2 | // TODO: remove this style 3 | width: 1em; 4 | height: 1em; 5 | color: $white; 6 | background-color: $color-primary; 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/common/components/error-boundary/index.scss: -------------------------------------------------------------------------------- 1 | .error-boundary { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | 6 | i { 7 | margin-right: 50px; 8 | font-size: 120px; 9 | } 10 | 11 | .error-desc { 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: space-between; 15 | align-items: center; 16 | height: 100px; 17 | font-size: 30px; 18 | line-height: 30px; 19 | } 20 | } 21 | 22 | #main > .error-boundary { 23 | height: 80%; 24 | min-height: 460px; 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/common/components/file-editor/index.scss: -------------------------------------------------------------------------------- 1 | .file-editor-container { 2 | position: relative; 3 | 4 | .file-editor-actions { 5 | position: absolute; 6 | top: -10px; 7 | right: 20px; 8 | z-index: 10; 9 | padding: 8px; 10 | opacity: 0.3; 11 | 12 | > * { 13 | margin-left: 8px; 14 | } 15 | 16 | &:first-child { 17 | margin-left: 0; 18 | } 19 | 20 | &:hover { 21 | opacity: 1; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /shell/app/common/components/file-select/index.scss: -------------------------------------------------------------------------------- 1 | .upload-file-tip { 2 | width: 273px; 3 | overflow: hidden; 4 | color: $gray !important; 5 | text-align: left; 6 | text-overflow: ellipsis; 7 | 8 | &.placeholder { 9 | color: $color-text-holder !important; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/common/components/head-operation-bar/index.scss: -------------------------------------------------------------------------------- 1 | .head-operation-bar { 2 | .head-operations { 3 | iconpark-icon { 4 | color: $color-default-4; 5 | cursor: pointer; 6 | font-size: 20px; 7 | padding: 4px; 8 | margin-left: 12px; 9 | &:hover { 10 | background-color: $color-default-08; 11 | color: $color-default-8; 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/common/components/key-value-editor/index.scss: -------------------------------------------------------------------------------- 1 | .key-value-title { 2 | color: $color-dark-8; 3 | font-weight: 500; 4 | } 5 | -------------------------------------------------------------------------------- /shell/app/common/components/key-value-textarea/index.scss: -------------------------------------------------------------------------------- 1 | .key-value-textarea-wrap { 2 | .ant-input { 3 | // color: $yellow; 4 | font-family: PingFangSC-Regular, serif; 5 | line-height: 2em; 6 | // background-color: $navy; 7 | border-radius: 4px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/common/components/markdown-editor/upload-plugin.scss: -------------------------------------------------------------------------------- 1 | .upload-plugin-menu { 2 | width: 145px; 3 | 4 | .upload-item { 5 | display: inline-block; 6 | width: 145px; 7 | padding: 4px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/common/components/menu-popover/index.scss: -------------------------------------------------------------------------------- 1 | .menu-popover { 2 | width: 100px; 3 | 4 | .ant-popover-inner-content { 5 | padding: 5px 0; 6 | } 7 | 8 | .popover-item { 9 | display: block; 10 | height: 28px; 11 | line-height: 28px; 12 | text-align: center; 13 | cursor: pointer; 14 | transition: 0.3s all; 15 | 16 | &:hover { 17 | color: $white; 18 | background-color: $color-primary; 19 | } 20 | 21 | &.disabled { 22 | color: $color-disabled; 23 | 24 | &:hover { 25 | color: $color-disabled; 26 | } 27 | } 28 | } 29 | } 30 | 31 | .big-more-icon { 32 | width: 32px; 33 | height: 24px; 34 | font-size: 24px; 35 | } 36 | 37 | .sm-more-icon { 38 | font-size: 14px; 39 | } 40 | -------------------------------------------------------------------------------- /shell/app/common/components/monitor/components/timeSelector.scss: -------------------------------------------------------------------------------- 1 | .time-range-selector { 2 | width: 140px; 3 | } 4 | 5 | .monitor-time-selector { 6 | margin-right: 10px; 7 | margin-bottom: 15px; 8 | } 9 | 10 | .monitor-time-selector-inline { 11 | display: inline; 12 | margin-left: 15px; 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/common/components/monitor/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import TimeSelector from './timeSelector'; 15 | 16 | export default TimeSelector; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/monitor/monitor-chart.scss: -------------------------------------------------------------------------------- 1 | .monitor-chart-panel { 2 | .time-range-selector { 3 | position: absolute; 4 | } 5 | } 6 | 7 | .monitor-chart { 8 | position: relative; 9 | top: -20px; 10 | height: 100%; 11 | 12 | .monitor-chart-title { 13 | margin-bottom: 20px; 14 | font-size: 14px; 15 | line-height: 28px; 16 | } 17 | 18 | .time-range-selector { 19 | top: 0; 20 | right: 10px; 21 | z-index: 5; 22 | width: 120px; 23 | 24 | .ant-select-selection { 25 | color: $color-text; 26 | border: none; 27 | box-shadow: none; 28 | } 29 | } 30 | 31 | .empty-holder { 32 | top: 1.5625rem; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /shell/app/common/components/no-auth-tip/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import NoAuthTip from './no-auth-tip'; 15 | 16 | export default NoAuthTip; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/panel/index.scss: -------------------------------------------------------------------------------- 1 | .erda-panel { 2 | margin-bottom: 0.5rem; 3 | 4 | .erda-panel-item { 5 | margin-bottom: 0.75rem; 6 | } 7 | 8 | .erda-panel-label { 9 | color: $color-dark-4; 10 | } 11 | 12 | .erda-panel-value { 13 | margin-bottom: 0.25rem; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/common/components/pure-log-roller/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import LogRoller from './log-roller'; 15 | 16 | export default LogRoller; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/pure-log-roller/log-content.scss: -------------------------------------------------------------------------------- 1 | .log-list-box { 2 | white-space: nowrap; 3 | 4 | .log-item { 5 | span { 6 | display: inline-block; 7 | margin-right: 10px; 8 | } 9 | 10 | pre { 11 | display: inline; 12 | margin-right: 10px; 13 | overflow: visible; 14 | } 15 | 16 | a { 17 | color: $yellow; 18 | font-weight: bold; 19 | text-decoration: underline; 20 | } 21 | } 22 | 23 | .log-item-logtime { 24 | color: $green; 25 | vertical-align: top; 26 | } 27 | 28 | ::selection { 29 | color: $white; 30 | background: $green; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/common/components/radio-tabs/index.scss: -------------------------------------------------------------------------------- 1 | .erda-radio-tabs { 2 | .ant-radio-button-wrapper { 3 | padding: 0 20px; 4 | line-height: 30px; 5 | border: unset !important; 6 | color: $color-default; 7 | background-color: $color-default-06; 8 | box-shadow: unset !important; 9 | &.ant-radio-button-wrapper-checked { 10 | color: $white; 11 | } 12 | &:first-child { 13 | border-radius: 2px 0 0 2px; 14 | } 15 | &:last-child { 16 | border-radius: 0 2px 2px 0; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/common/components/render-pure-form/index.scss: -------------------------------------------------------------------------------- 1 | .render-form { 2 | &.ant-form-vertical { 3 | width: 40%; 4 | 5 | @include sm-width() { 6 | width: 100%; 7 | } 8 | 9 | .ant-form-item-label { 10 | text-align: left; 11 | } 12 | } 13 | 14 | .input-with-icon { 15 | width: 100%; 16 | } 17 | 18 | .render-form-op { 19 | display: inline-block; 20 | margin-left: 12px; 21 | font-size: 20px; 22 | line-height: inherit; 23 | vertical-align: middle; 24 | } 25 | 26 | .add-one { 27 | position: absolute; 28 | right: -30px; 29 | } 30 | 31 | .drop-one { 32 | position: absolute; 33 | right: -60px; 34 | } 35 | } 36 | 37 | .ant-modal-body { 38 | .render-form.ant-form-vertical { 39 | width: unset; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /shell/app/common/components/search-table/index.scss: -------------------------------------------------------------------------------- 1 | .search-table-header { 2 | margin-bottom: 12px; 3 | overflow: hidden; 4 | 5 | .search-input { 6 | width: 260px; 7 | 8 | &-left { 9 | display: inline-block; 10 | } 11 | 12 | &-right { 13 | float: right; 14 | } 15 | } 16 | 17 | .extra-items { 18 | &-left { 19 | display: inline-block; 20 | } 21 | 22 | &-right { 23 | float: right; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /shell/app/common/components/simple-log/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import SimpleLog from './simple-log'; 15 | 16 | export default SimpleLog; 17 | -------------------------------------------------------------------------------- /shell/app/common/components/simple-panel/index.scss: -------------------------------------------------------------------------------- 1 | .ec-simple-panel { 2 | .ec-simple-panel-title { 3 | display: block; 4 | padding: 11px 0; 5 | color: $color-text; 6 | font-size: 18px; 7 | } 8 | 9 | .ec-simple-panel-body { 10 | margin-bottom: $p20; 11 | background-color: $white; 12 | border-radius: $radius; 13 | } 14 | 15 | &.block { 16 | padding: 4px 20px 16px; 17 | background: $white; 18 | border-radius: 3px; 19 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.06), 0 2px 4px -3px rgba(0, 0, 0, 0.06), 0 2px 6px 0 rgba(0, 0, 0, 0.12); 20 | 21 | .ec-simple-panel-title { 22 | height: 48px; 23 | padding: unset; 24 | font-weight: bold; 25 | line-height: 48px; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /shell/app/common/components/table-actions/index.scss: -------------------------------------------------------------------------------- 1 | .table-operate-dropdown { 2 | ul { 3 | li { 4 | .table-operations-btn { 5 | display: block; 6 | width: 100%; 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/common/components/time-select/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import TimeSelect from './time-select'; 15 | 16 | export default TimeSelect; 17 | -------------------------------------------------------------------------------- /shell/app/config-page/components/alert/alert.scss: -------------------------------------------------------------------------------- 1 | .config-page-alert { 2 | .ant-alert-content { 3 | align-items: flex-start; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/config-page/components/badge/badge.scss: -------------------------------------------------------------------------------- 1 | .cp-badge-list { 2 | &-item { 3 | margin-right: 4px; 4 | &:last-child { 5 | margin-right: 0; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/config-page/components/bar-chart/bar-chart.scss: -------------------------------------------------------------------------------- 1 | .cp-bar-chart { 2 | position: relative; 3 | flex-direction: column; 4 | min-height: 100px; 5 | height: 100%; 6 | 7 | .chart-dom { 8 | height: 100%; 9 | min-height: 100px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/config-page/components/drawer/drawer.scss: -------------------------------------------------------------------------------- 1 | .dice-cp-drawer-content { 2 | position: relative; 3 | height: 100%; 4 | overflow: auto; 5 | } 6 | 7 | .dice-cp-drawer-operation { 8 | position: absolute; 9 | bottom: 0; 10 | left: 0; 11 | width: 100%; 12 | padding: $p8 $p16; 13 | text-align: right; 14 | } 15 | -------------------------------------------------------------------------------- /shell/app/config-page/components/dropdown-select/dropdown-select.scss: -------------------------------------------------------------------------------- 1 | .cp-dice-dropdown-select { 2 | text-align: center; 3 | 4 | &.dropdown-select-button { 5 | font-weight: bold; 6 | font-size: 18px; 7 | border: none; 8 | } 9 | 10 | &-image { 11 | width: 24px; 12 | height: 24px; 13 | border-radius: 50%; 14 | } 15 | 16 | .caret { 17 | svg { 18 | margin-bottom: 1px !important; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/other/scroll.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-vertical-scroll { 2 | overflow: hidden auto; 3 | width: 17px; 4 | flex-shrink: 0; 5 | } 6 | 7 | .erda-gantt-horizontal-scroll { 8 | overflow: auto; 9 | max-width: 100%; 10 | position: absolute; 11 | bottom: 0px; 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/other/tooltip.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-tooltip-default-container { 2 | background: $white; 3 | padding: 12px; 4 | box-shadow: 0 3px 6px $color-dark-1, 0 3px 6px $color-dark-2; 5 | } 6 | 7 | .erda-gantt-tooltip-default-container-paragraph { 8 | font-size: 12px; 9 | margin-bottom: 6px; 10 | color: $gray; 11 | } 12 | 13 | .erda-gantt-tooltip-details-container { 14 | position: absolute; 15 | display: flex; 16 | flex-shrink: 0; 17 | pointer-events: none; 18 | user-select: none; 19 | } 20 | 21 | .erda-gantt-tooltip-details-container-hidden { 22 | visibility: hidden; 23 | position: absolute; 24 | display: flex; 25 | pointer-events: none; 26 | } 27 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/task-item/milestone/milestone.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-milestone-wrapper { 2 | cursor: pointer; 3 | outline: none; 4 | } 5 | 6 | .erda-gantt-milestone-background { 7 | user-select: none; 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/task-item/project/project.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-project-wrapper { 2 | cursor: pointer; 3 | outline: none; 4 | } 5 | 6 | .erda-gantt-project-background { 7 | border-radius: 12px; 8 | } 9 | 10 | .erda-gantt-project-top { 11 | user-select: none; 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/task-item/task-list.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-task-bar-label { 2 | fill: $white; 3 | text-anchor: middle; 4 | font-weight: lighter; 5 | dominant-baseline: central; 6 | user-select: none; 7 | pointer-events: none; 8 | } 9 | 10 | .erda-gantt-task-bar-label-outside { 11 | fill: $gray; 12 | text-anchor: start; 13 | user-select: none; 14 | pointer-events: none; 15 | } 16 | 17 | .erda-gantt-task-foreign-render { 18 | user-select: none; 19 | pointer-events: none; 20 | overflow: visible; 21 | } 22 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/task-list/task-list-header.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-table { 2 | display: table; 3 | border-bottom: $color-border 1px solid; 4 | border-top: $color-border 1px solid; 5 | border-left: $color-border 1px solid; 6 | } 7 | 8 | .erda-gantt-table-header { 9 | display: table-row; 10 | list-style: none; 11 | } 12 | 13 | .erda-gantt-table-header-separator { 14 | border-right: 1px solid $color-border; 15 | opacity: 1; 16 | margin-left: -2px; 17 | } 18 | 19 | .erda-gantt-table-header-item { 20 | display: table-cell; 21 | vertical-align: -webkit-baseline-middle; 22 | vertical-align: middle; 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/components/task-list/task-list.scss: -------------------------------------------------------------------------------- 1 | .erda-gantt-task-list-box { 2 | border-right: 1px solid $color-border; 3 | z-index: 100; 4 | } 5 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/gantt.scss: -------------------------------------------------------------------------------- 1 | .cp-gantt-task-item { 2 | &-date { 3 | visibility: hidden; 4 | } 5 | &:hover { 6 | visibility: visible; 7 | } 8 | 9 | &-icon { 10 | color: rgba($color-default, 0.4); 11 | transition: all 0.2s; 12 | transform: rotate(-90deg); 13 | } 14 | 15 | &-expanded { 16 | transform: rotate(0); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/config-page/components/gantt/types/date-setup.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import { ViewMode } from './public-types'; 15 | 16 | export interface DateSetup { 17 | dates: Date[]; 18 | viewMode: ViewMode; 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/config-page/components/icon/icon.mock..ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export const textMock = { 15 | type: 'Icon', 16 | props: { 17 | iconType: 'lock', 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /shell/app/config-page/components/image/image.scss: -------------------------------------------------------------------------------- 1 | .cp-dice-image { 2 | margin: 0 auto; 3 | 4 | &.inline-block { 5 | display: inline-block; 6 | } 7 | 8 | &.block { 9 | display: block; 10 | } 11 | 12 | &.small { 13 | width: 32px; 14 | height: 32px; 15 | } 16 | 17 | &.normal { 18 | width: 48px; 19 | height: 48px; 20 | } 21 | 22 | &.big { 23 | width: 64px; 24 | height: 64px; 25 | } 26 | 27 | &.large { 28 | width: 128px; 29 | height: 128px; 30 | } 31 | 32 | &.circle { 33 | border-radius: 50%; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /shell/app/config-page/components/info-preview/info-preview.scss: -------------------------------------------------------------------------------- 1 | .dice-cp-preview { 2 | padding: 8px 0; 3 | 4 | &-item { 5 | margin-bottom: 20px; 6 | } 7 | 8 | &-desc { 9 | padding: 0 8px; 10 | color: $color-text-desc; 11 | border-left: 4px solid $color-border; 12 | } 13 | 14 | &-block-title { 15 | padding: 8px 15px; 16 | color: $color-info; 17 | line-height: 24px; 18 | background-color: $color-info-bg; 19 | border-left: 4px solid $color-info; 20 | } 21 | 22 | &-api { 23 | display: flex; 24 | 25 | .method { 26 | margin-right: 8px; 27 | padding: 0 8px; 28 | } 29 | 30 | .path { 31 | flex: 1; 32 | padding: 4px 8px; 33 | // line-height: 22px; 34 | word-break: break-all; 35 | background-color: $color-light-bg; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /shell/app/config-page/components/kv/index.scss: -------------------------------------------------------------------------------- 1 | .cp-kv { 2 | &.dark { 3 | .items { 4 | background: rgba($white, 0.02); 5 | 6 | .items-value { 7 | color: $white; 8 | } 9 | 10 | .items-title, 11 | .items-unit { 12 | color: rgba($white, 0.6); 13 | } 14 | } 15 | } 16 | 17 | &.light { 18 | .items { 19 | background: rgba($color-default, 0.02); 20 | 21 | .items-value { 22 | color: $color-default; 23 | } 24 | 25 | .items-title, 26 | .items-unit { 27 | color: rgba($color-default, 0.6); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/config-page/components/list-new/list-new.scss: -------------------------------------------------------------------------------- 1 | .erda-list { 2 | .chart-dom { 3 | width: 40px !important; 4 | height: 40px !important; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /shell/app/config-page/components/panel/panel.scss: -------------------------------------------------------------------------------- 1 | .cp-erda-panel { 2 | .erda-panel-value { 3 | line-height: 24px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/config-page/components/pie-chart/pie-chart.scss: -------------------------------------------------------------------------------- 1 | .cp-pie-chart { 2 | position: relative; 3 | flex-direction: column; 4 | min-height: 20px; 5 | height: 100%; 6 | 7 | .chart-dom { 8 | height: 100%; 9 | min-height: 20px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/config-page/components/popover/popover.scss: -------------------------------------------------------------------------------- 1 | .cp-popover { 2 | .ant-popover-inner { 3 | .ant-popover-inner-content { 4 | max-height: 90vh; 5 | overflow: auto; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/config-page/components/tabs/tabs.scss: -------------------------------------------------------------------------------- 1 | .dice-cp-tabs-extra { 2 | > * { 3 | margin-left: 8px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/config-page/components/title/title.mock.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | const mockData: CP_TITLE.Spec = { 15 | type: 'Title', 16 | props: { 17 | title: '标题', 18 | }, 19 | }; 20 | 21 | export default mockData; 22 | -------------------------------------------------------------------------------- /shell/app/config-page/components/top-n/index.scss: -------------------------------------------------------------------------------- 1 | .cp-data-rank { 2 | .items-wrapper { 3 | min-height: 232px; 4 | } 5 | 6 | .bg-icon-wrapper { 7 | width: 52px; 8 | height: 52px; 9 | } 10 | 11 | .ant-progress, 12 | .ant-progress-outer { 13 | line-height: 4px; 14 | height: 4px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/alert.spec.md: -------------------------------------------------------------------------------- 1 | # CP_ALERT 2 | 3 | ## 接口 4 | 5 | ### Spec 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ----- | ------- | ----- | --- | 9 | | type | 'Alert' | false | 10 | | props | IProps | true | , | 11 | 12 | ### IProps 13 | 14 | | 名称 | 类型 | 必填 | 15 | | -------- | --------- | -------- | --------- | ------- | ----- | 16 | | visible | boolean | true | 17 | | showIcon | boolean | true | 18 | | type | 'success' | 'normal' | 'warning' | 'error' | false | 19 | | message | string[] | string | false | 20 | 21 | ## 枚举 22 | 23 | ## 类型 24 | 25 | | 名称 | 值 | 26 | | ----- | --------------- | 27 | | Props | MakeProps | 28 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/chart.spec.md: -------------------------------------------------------------------------------- 1 | # CP_CHART 2 | 3 | ## 接口 4 | 5 | ### Spec 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ----- | ------- | ----- | --- | 9 | | type | 'Chart' | false | 10 | | props | IProps | false | 11 | | cId | string | false | , | 12 | 13 | ### IProps 14 | 15 | | 名称 | 类型 | 必填 | 16 | | ---------- | ------- | ----- | ----- | ----- | 17 | | chartType | 'line' | 'pie' | 'bar' | false | 18 | | option | Obj | false | 19 | | style | Obj | false | 20 | | visible | boolean | true | 21 | | title | string | false | 22 | | isLoadMore | boolean | true | 23 | 24 | ## 枚举 25 | 26 | ## 类型 27 | 28 | | 名称 | 值 | 29 | | ----- | ------------------- | 30 | | Props | MakeProps & { | 31 | 32 | extraContent?: React.ReactElement; 33 | 34 | } | 35 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/image.spec.md: -------------------------------------------------------------------------------- 1 | # CP_IMAGE 2 | 3 | ## 接口 4 | 5 | ### Spec 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ----- | ------- | ----- | --- | 9 | | type | 'Image' | false | 10 | | props | IProps | true | , | 11 | 12 | ### IProps 13 | 14 | | 名称 | 类型 | 必填 | 15 | | -------- | -------------- | -------- | ----- | ------- | ---- | 16 | | alt | string | true | 17 | | src | string | true | 18 | | isCircle | boolean | true | 19 | | size | 'small' | 'normal' | 'big' | 'large' | true | 20 | | visible | boolean | true | 21 | | type | string | true | 22 | | display | 'inline-block' | 'block' | true | 23 | 24 | ## 枚举 25 | 26 | ## 类型 27 | 28 | | 名称 | 值 | 29 | | ----- | --------------- | 30 | | Props | MakeProps | 31 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/input.spec.md: -------------------------------------------------------------------------------- 1 | # CP_INPUT 2 | 3 | ## 接口 4 | 5 | ### Spec 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ----- | ------- | ----- | --- | 9 | | type | 'Input' | false | 10 | | props | IProps | false | 11 | | state | IState | false | , | 12 | 13 | ### IState 14 | 15 | | 名称 | 类型 | 必填 | 16 | | ----- | ------ | ---- | --- | 17 | | value | string | true | , | 18 | 19 | ### IProps 20 | 21 | | 名称 | 类型 | 必填 | 22 | | ----------- | ------- | ---- | 23 | | disabled | boolean | true | 24 | | placeholder | string | true | 25 | 26 | ## 枚举 27 | 28 | ## 类型 29 | 30 | | 名称 | 值 | 31 | | ----- | --------------- | 32 | | Props | MakeProps | 33 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/select.spec.md: -------------------------------------------------------------------------------- 1 | # CP_SELECT 2 | 3 | ## 接口 4 | 5 | ### Inf 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ---- | -------- | ----- | 9 | | a | number | false | 10 | | b | string | false | 11 | | c | boolean | false | 12 | | d | string[] | false | 13 | | e | any | false | 14 | | f | null | true | 15 | 16 | ## 枚举 17 | 18 | ### en 19 | 20 | | 名称 | 值 | 21 | | ---- | ----- | 22 | | UP | UP1 | 23 | | LEFT | LEFT2 | 24 | 25 | ## 类型 26 | 27 | | 名称 | 值 | 28 | | ---- | --- | --- | --- | --- | ------ | --- | --- | -------------- | 29 | | Ta | 'a' | 'b' | , | Tb | string | , | Tc | Omit | 30 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/split-page.spec.md: -------------------------------------------------------------------------------- 1 | # CP_SPLIT_PAGE 2 | 3 | ## 接口 4 | 5 | ### Spec 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ---- | ----------- | ----- | 9 | | type | 'SplitPage' | false | 10 | 11 | ## 枚举 12 | 13 | ## 类型 14 | 15 | | 名称 | 值 | 16 | | ----- | ------------------- | 17 | | Props | MakeProps & { | 18 | 19 | left?: React.ReactElement; 20 | right?: React.ReactElement; 21 | 22 | } | 23 | -------------------------------------------------------------------------------- /shell/app/config-page/docs/test.spec.md: -------------------------------------------------------------------------------- 1 | # CP_SELECT 2 | 3 | ## 接口 4 | 5 | ### Inf 6 | 7 | | 名称 | 类型 | 必填 | 8 | | ---- | -------- | ----- | 9 | | a | number | false | 10 | | b | string | false | 11 | | c | boolean | false | 12 | | d | string[] | false | 13 | | e | any | false | 14 | | f | null | true | 15 | 16 | ## 枚举 17 | 18 | ### en 19 | 20 | | 名称 | 值 | 21 | | ---- | ----- | 22 | | UP | UP1 | 23 | | LEFT | LEFT2 | 24 | 25 | ## 类型 26 | 27 | | 名称 | 值 | 28 | | ---- | --- | --- | --- | --- | ------ | --- | --- | -------------- | 29 | | Ta | 'a' | 'b' | , | Tb | string | , | Tc | Omit | 30 | -------------------------------------------------------------------------------- /shell/app/configForm/editor/common/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export { Drawer } from './components/drawer'; 15 | export { Modal } from './components/modal'; 16 | export { Tabs } from './components/tabs'; 17 | -------------------------------------------------------------------------------- /shell/app/configForm/editor/form-editor.scss: -------------------------------------------------------------------------------- 1 | @import './common/util.scss'; 2 | 3 | .dice-form-editor { 4 | .content { 5 | padding: 0 20px; 6 | } 7 | 8 | .tip { 9 | padding: 10px; 10 | 11 | .tip-title { 12 | color: $color-text; 13 | } 14 | 15 | .tip-desc { 16 | color: $color-text-sub; 17 | font-size: 14px; 18 | } 19 | } 20 | 21 | .ant-form-item { 22 | margin-bottom: 8px; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /shell/app/configForm/editor/index.scss: -------------------------------------------------------------------------------- 1 | @import './common/util.scss'; 2 | 3 | .dice-form-configuration { 4 | display: flex; 5 | height: 100%; 6 | overflow: auto; 7 | 8 | .form-preview-box { 9 | flex: 1; 10 | padding: 12px; 11 | overflow: auto; 12 | } 13 | 14 | .form-editor-box { 15 | flex: 1; 16 | padding: 12px; 17 | overflow: auto; 18 | border-left: 1px solid $color-border; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/configForm/form/context.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import { createContext } from 'react'; 15 | 16 | export const Context = createContext({} as any); 17 | -------------------------------------------------------------------------------- /shell/app/configForm/form/form-item/index.scss: -------------------------------------------------------------------------------- 1 | @import '../utils.scss'; 2 | 3 | .dice-form-item { 4 | label { 5 | display: block; 6 | margin-bottom: 4px; 7 | color: $color-text-sub; 8 | font-size: 14px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/config.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export const FORM_GROUP = 'formGroup'; 15 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-editor.scss: -------------------------------------------------------------------------------- 1 | .dice-form-nusi-preview-item { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | padding: 12px; 6 | 7 | &.on-edit { 8 | background-color: $color-active-bg; 9 | } 10 | 11 | .form-view { 12 | flex: 1; 13 | 14 | .ant-form-item { 15 | margin-bottom: 0; 16 | } 17 | } 18 | 19 | .form-operation { 20 | width: 180px; 21 | margin-left: 12px; 22 | font-size: 14px; 23 | text-align: right; 24 | 25 | > span { 26 | margin-right: 8px; 27 | color: $color-primary; 28 | cursor: pointer; 29 | 30 | &:hover { 31 | text-decoration: underline; 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-items/common/combiner.scss: -------------------------------------------------------------------------------- 1 | .dice-form-nusi-combiner-component { 2 | .combiner-item { 3 | display: flex; 4 | align-items: center; 5 | margin-bottom: 8px; 6 | 7 | > * { 8 | margin-right: 8px; 9 | } 10 | } 11 | 12 | .combiner-operation { 13 | color: $color-text-sub; 14 | font-size: 20px; 15 | cursor: pointer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-items/data-dynamic.scss: -------------------------------------------------------------------------------- 1 | .dice-form-nusi-data-dynamic { 2 | .data-path { 3 | display: flex; 4 | 5 | > * { 6 | margin-right: 4px; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-items/group.scss: -------------------------------------------------------------------------------- 1 | .dice-form-group { 2 | .dice-form-group-children { 3 | display: block; 4 | 5 | &-row { 6 | display: flex; 7 | justify-content: space-between; 8 | margin-top: $p8; 9 | 10 | .ant-form-item { 11 | width: 100%; 12 | margin: 0 $p8; 13 | } 14 | } 15 | } 16 | 17 | .expand-icon { 18 | transform: rotate(180deg); 19 | transition: all 0.3s ease-in-out; 20 | } 21 | 22 | &.hide-children { 23 | .dice-form-group-children { 24 | display: none; 25 | } 26 | 27 | .expand-icon { 28 | transform: rotate(0deg); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-items/input-array.scss: -------------------------------------------------------------------------------- 1 | .ant-form-item-control { 2 | &.has-error { 3 | .dice-form-input-array { 4 | .ant-input { 5 | border-color: rgb(217, 217, 217); 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-items/input-select.scss: -------------------------------------------------------------------------------- 1 | .has-error { 2 | .input-select-input { 3 | border-color: $color-danger; 4 | .ant-input{ 5 | border-color: transparent; 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /shell/app/configForm/nusi-form/form-modal.scss: -------------------------------------------------------------------------------- 1 | .dice-cp-form-modal-tense { 2 | .ant-form-item { 3 | margin-bottom: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/i18n-easy-edit/pages/i18n-wrapper/index.less: -------------------------------------------------------------------------------- 1 | .i18n-wrapper { 2 | width: 100%; 3 | overflow: hidden; 4 | 5 | .edit-icon { 6 | display: none; 7 | padding: 0 2px; 8 | } 9 | .i18n-editable:hover { 10 | .edit-icon { 11 | display: inline-block; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shell/app/images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/.gitkeep -------------------------------------------------------------------------------- /shell/app/images/Erda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/Erda.png -------------------------------------------------------------------------------- /shell/app/images/default-app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/default-app-icon.png -------------------------------------------------------------------------------- /shell/app/images/default-breathing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/default-breathing.gif -------------------------------------------------------------------------------- /shell/app/images/default-loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/default-loading.gif -------------------------------------------------------------------------------- /shell/app/images/default-project-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/default-project-icon.png -------------------------------------------------------------------------------- /shell/app/images/default-project-main-bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/default-project-main-bg.webp -------------------------------------------------------------------------------- /shell/app/images/defaultFileImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/defaultFileImage.png -------------------------------------------------------------------------------- /shell/app/images/editor-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/editor-background.png -------------------------------------------------------------------------------- /shell/app/images/empty-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/empty-project.png -------------------------------------------------------------------------------- /shell/app/images/gallery-header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/gallery-header.jpg -------------------------------------------------------------------------------- /shell/app/images/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/intro.png -------------------------------------------------------------------------------- /shell/app/images/land-spring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/land-spring.jpg -------------------------------------------------------------------------------- /shell/app/images/msp/microservice-governance-decoration.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shell/app/images/no-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/no-cluster.png -------------------------------------------------------------------------------- /shell/app/images/org-home/tab-pane-header-selected-first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/org-home/tab-pane-header-selected-first.png -------------------------------------------------------------------------------- /shell/app/images/org-home/tab-pane-header-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/org-home/tab-pane-header-selected.png -------------------------------------------------------------------------------- /shell/app/images/org-home/tab-pane-header-unselected-first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/org-home/tab-pane-header-unselected-first.png -------------------------------------------------------------------------------- /shell/app/images/org-home/tab-pane-header-unselected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/org-home/tab-pane-header-unselected.png -------------------------------------------------------------------------------- /shell/app/images/resources/addon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/resources/addon.png -------------------------------------------------------------------------------- /shell/app/images/resources/coding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/resources/coding.png -------------------------------------------------------------------------------- /shell/app/images/resources/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/resources/github.png -------------------------------------------------------------------------------- /shell/app/images/resources/gitlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/resources/gitlab.png -------------------------------------------------------------------------------- /shell/app/images/resources/org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/images/resources/org.png -------------------------------------------------------------------------------- /shell/app/images/zx-gray.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shell/app/images/zx.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shell/app/index.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | if (process.env.VITE) { 15 | import('./App-vite'); 16 | } else { 17 | import('./App'); 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/layout/common/error-page.scss: -------------------------------------------------------------------------------- 1 | .basic-error-page { 2 | height: 100%; 3 | 4 | .info { 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | height: 100%; 9 | font-size: 24px; 10 | 11 | .desc { 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: space-between; 15 | min-height: 100px; 16 | font-size: 30px; 17 | line-height: 30px; 18 | } 19 | 20 | .contact-info { 21 | margin: 20px 0; 22 | font-size: 18px; 23 | line-height: 18px; 24 | } 25 | 26 | i { 27 | margin-right: 50px; 28 | font-size: 120px; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/layout/pages/page-container/components/navigation/user-menu.scss: -------------------------------------------------------------------------------- 1 | .erda-global-nav-user-menu { 2 | .ant-popover-inner-content { 3 | padding: 0; 4 | } 5 | 6 | &.no-arrow { 7 | .ant-popover-arrow-content { 8 | background-color: unset; 9 | } 10 | } 11 | 12 | .user-avatar { 13 | box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.15); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/layout/pages/page-container/components/shell/index.scss: -------------------------------------------------------------------------------- 1 | .erda-shell { 2 | display: flex; 3 | height: 100vh; 4 | width: 100%; 5 | overflow: hidden; 6 | 7 | .erda-nav { 8 | z-index: 1000; 9 | } 10 | 11 | .erda-main-content { 12 | position: relative; 13 | flex: 1; 14 | display: flex; 15 | flex-direction: column; 16 | min-width: 600px; 17 | margin-top: 36px; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/layout/pages/page-container/layout.scss: -------------------------------------------------------------------------------- 1 | .dice-body { 2 | position: relative; 3 | display: flex; 4 | flex: 1; 5 | flex-direction: column; 6 | overflow: hidden; 7 | } 8 | 9 | .empty-layout { 10 | height: 100vh; 11 | width: 100%; 12 | overflow: hidden; 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/layout/pages/page-container/page-container.scss: -------------------------------------------------------------------------------- 1 | #main { 2 | position: relative; 3 | display: flex; 4 | flex-direction: column; 5 | padding-right: 16px; 6 | height: 100%; 7 | overflow: auto; 8 | } 9 | 10 | .main-scroll-tip { 11 | bottom: 0; 12 | left: 0; 13 | pointer-events: none; 14 | position: absolute; 15 | right: 0; 16 | top: 48px; 17 | z-index: 2; 18 | transition: box-shadow 0.1s ease-in-out; 19 | &.show { 20 | box-shadow: 0 6px 11px -11px $color-default-3 inset; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/app/menus/msp.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export const getMspMenu = () => { 15 | // see shell/app/modules/extra/msp/config.tsx 16 | return []; 17 | }; 18 | -------------------------------------------------------------------------------- /shell/app/modules/addonPlatform/pages/addon-resource/addon-resource.scss: -------------------------------------------------------------------------------- 1 | .addon-resource-panel { 2 | .resource-config-panel { 3 | display: flex; 4 | min-height: 160px; 5 | margin-bottom: 20px; 6 | padding: 20px 20px; 7 | background-color: $white; 8 | border: 1px solid $color-border; 9 | border-radius: $radius; 10 | } 11 | 12 | .basic-info { 13 | @include grid-layout(); 14 | 15 | .info-key { 16 | height: 22px; 17 | margin-bottom: 4px; 18 | color: $color-text-desc; 19 | line-height: 22px; 20 | } 21 | 22 | .info-value { 23 | height: 22px; 24 | margin: 5px 0; 25 | line-height: 22px; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /shell/app/modules/addonPlatform/pages/common/components/addon-detail-drawer.scss: -------------------------------------------------------------------------------- 1 | .addon-detail { 2 | .title { 3 | display: inline-block; 4 | margin-bottom: $p8; 5 | font-size: 16px; 6 | line-height: 38px; 7 | } 8 | 9 | .info { 10 | margin-bottom: $p32; 11 | 12 | &-grid { 13 | display: grid; 14 | grid-template-columns: 50% 50%; 15 | row-gap: $p4; 16 | } 17 | } 18 | 19 | .ref { 20 | margin-bottom: $p32; 21 | } 22 | 23 | .param-k { 24 | margin-bottom: $p4; 25 | color: $color-text-desc; 26 | line-height: 22px; 27 | } 28 | 29 | .param-v { 30 | margin-bottom: $p12; 31 | padding-right: $p8; 32 | color: $color-text; 33 | line-height: $p32; 34 | } 35 | 36 | .copy-all { 37 | margin-right: $p4; 38 | color: $color-primary; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /shell/app/modules/addonPlatform/pages/jvm-profiler/jvm-overview.scss: -------------------------------------------------------------------------------- 1 | .jvm-overview { 2 | .info-item { 3 | margin-bottom: 8px; 4 | 5 | .label { 6 | color: $color-text-desc; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/components/select-pro.scss: -------------------------------------------------------------------------------- 1 | .select-pro { 2 | position: relative; 3 | 4 | .select-pro-icon { 5 | position: absolute; 6 | right: 10px; 7 | top: 50%; 8 | color: $color-dark-2; 9 | } 10 | 11 | .ant-select-arrow { 12 | display: none; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/components/sla-select.scss: -------------------------------------------------------------------------------- 1 | .sla-select { 2 | min-height: 220px; 3 | border: none; 4 | background-color: $white; 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/access-manage/components/multi-input.scss: -------------------------------------------------------------------------------- 1 | .multi-input-item { 2 | margin-bottom: 4px; 3 | 4 | .multi-input-icons { 5 | display: flex; 6 | width: 70px; 7 | margin-left: 10px; 8 | cursor: pointer; 9 | color: $gray; 10 | } 11 | 12 | .input-with-icon { 13 | display: flex; 14 | align-items: center; 15 | width: 30px; 16 | font-size: 20px; 17 | cursor: pointer; 18 | color: $gray; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/access-manage/detail/sla.scss: -------------------------------------------------------------------------------- 1 | .access-detail-page { 2 | .table-operations { 3 | span.table-operations-btn { 4 | &.default-sla { 5 | color: $color-text; 6 | text-decoration: none !important; 7 | cursor: unset !important; 8 | } 9 | } 10 | } 11 | } 12 | 13 | .sla-limit-operation { 14 | align-items: center; 15 | width: 15%; 16 | height: 32px; 17 | 18 | > div { 19 | height: 100%; 20 | } 21 | 22 | svg { 23 | display: flex; 24 | align-items: center; 25 | cursor: pointer; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/components/export-record.scss: -------------------------------------------------------------------------------- 1 | .export-record-modal { 2 | .ant-modal-close { 3 | .ant-modal-close-x { 4 | height: 48px; 5 | width: 48px; 6 | display: flex; 7 | align-items: center; 8 | justify-content: center; 9 | } 10 | } 11 | 12 | .ant-modal-body { 13 | padding: 16px; 14 | max-height: 80vh; 15 | display: flex; 16 | } 17 | 18 | .ant-modal-header { 19 | padding: 12px 16px; 20 | background-color: $color-default-02; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/design/api-params-modal.scss: -------------------------------------------------------------------------------- 1 | .api-params-modal { 2 | .schema-params-list { 3 | max-height: 500px; 4 | overflow: auto; 5 | } 6 | 7 | .ant-collapse > .ant-collapse-item { 8 | border-bottom: none; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/detail/components/api-body/index.scss: -------------------------------------------------------------------------------- 1 | .case-api-body { 2 | .body-type-choosen { 3 | display: flex; 4 | align-items: center; 5 | padding: 4px; 6 | border-bottom: 1px solid $color-border; 7 | } 8 | 9 | .body-value-container { 10 | .body-val-none { 11 | padding: 20px; 12 | text-align: center; 13 | } 14 | 15 | .key-val-item { 16 | &:last-child { 17 | border-bottom: 1px solid $color-border; 18 | } 19 | } 20 | } 21 | 22 | .test-json-editor { 23 | position: relative; 24 | 25 | .json-format-btn { 26 | position: absolute; 27 | top: -36px; 28 | right: 36px; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/detail/components/api-detail.scss: -------------------------------------------------------------------------------- 1 | .apis-detail { 2 | .title { 3 | margin: 0; 4 | padding: 7px 0; 5 | line-height: 24px; 6 | } 7 | 8 | &-item { 9 | margin-bottom: 20px; 10 | 11 | &:last-child { 12 | border: none; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/detail/components/api-view.scss: -------------------------------------------------------------------------------- 1 | .apis-view { 2 | flex-direction: row; 3 | height: 100%; 4 | 5 | .cline-id { 6 | width: 200px; 7 | } 8 | 9 | &-left { 10 | width: 300px; 11 | height: 100%; 12 | padding: 15px; 13 | overflow-y: auto; 14 | background: $white; 15 | } 16 | 17 | &-right { 18 | flex: 1; 19 | height: 100%; 20 | margin-left: 20px; 21 | padding: 15px; 22 | overflow-y: auto; 23 | background: $white; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/detail/components/test-modal.scss: -------------------------------------------------------------------------------- 1 | .api-test-modal { 2 | &.fullscreen { 3 | height: 100vh; 4 | padding: 0; 5 | 6 | .ant-modal-content { 7 | height: 100%; 8 | 9 | .ant-modal-body { 10 | height: calc(100% - 130px); 11 | overflow: auto; 12 | } 13 | } 14 | } 15 | 16 | .preview { 17 | border: 1px solid $color-border; 18 | border-radius: 3px; 19 | 20 | &-header { 21 | .ant-tabs-bar { 22 | background-color: #f2f2f2; 23 | 24 | .ant-tabs-nav-container { 25 | padding: 0 16px; 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/detail/index.scss: -------------------------------------------------------------------------------- 1 | .api-market-detail-tabs { 2 | margin-bottom: -15px; 3 | 4 | > div { 5 | margin-bottom: 0; 6 | border: none; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/api-market/version/index.scss: -------------------------------------------------------------------------------- 1 | .version-list { 2 | .asset-logo { 3 | svg, 4 | img { 5 | width: 100px; 6 | height: 100px; 7 | } 8 | } 9 | 10 | .content-wrap { 11 | min-height: 500px; 12 | 13 | .left { 14 | width: 300px; 15 | } 16 | 17 | .right { 18 | overflow: auto; 19 | } 20 | 21 | &:before { 22 | content: ''; 23 | display: block; 24 | width: 0; 25 | height: 100%; 26 | border-left: 1px solid $color-border; 27 | position: absolute; 28 | top: 0; 29 | left: 300px; 30 | } 31 | 32 | .instance-label, 33 | .instance-name { 34 | line-height: 22px; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /shell/app/modules/apiManagePlatform/pages/client/detail/index.scss: -------------------------------------------------------------------------------- 1 | .api-list { 2 | .asset_name { 3 | width: auto; 4 | max-width: 90%; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/app-selector.scss: -------------------------------------------------------------------------------- 1 | .head-app-selector { 2 | .load-more-selector { 3 | .results { 4 | padding: 0; 5 | border: 1px solid transparent; 6 | 7 | &:hover { 8 | box-shadow: unset; 9 | } 10 | 11 | .values, 12 | .value-item { 13 | width: 100%; 14 | } 15 | } 16 | } 17 | 18 | .head-app-name { 19 | display: flex; 20 | width: 100%; 21 | .icon { 22 | color: $color-text-icon; 23 | } 24 | 25 | &:hover { 26 | .icon { 27 | color: $color-default; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/components/dice-job-node.scss: -------------------------------------------------------------------------------- 1 | .edit-job-container { 2 | .ant-form-item-label label { 3 | color: $color-dark-8; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/components/goto-commit.scss: -------------------------------------------------------------------------------- 1 | .goto-commit-link { 2 | &.normal { 3 | color: $color-text; 4 | } 5 | 6 | &:hover { 7 | color: $color-primary; 8 | 9 | span { 10 | text-decoration: underline; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/components/property-view.scss: -------------------------------------------------------------------------------- 1 | .property-view { 2 | overflow-x: auto; 3 | color: $color-dark-6; 4 | font-size: 14px; 5 | line-height: 22px; 6 | letter-spacing: 0; 7 | 8 | .object-key { 9 | display: block; 10 | color: $color-dark-8; 11 | // font-weight: bold; 12 | font-size: 14px; 13 | line-height: 22px; 14 | letter-spacing: 0; 15 | } 16 | 17 | .object-value { 18 | display: block; 19 | padding-left: 8px; 20 | white-space: nowrap; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/components/table-drawer.scss: -------------------------------------------------------------------------------- 1 | .group-tag-purple { 2 | background: rgba(26, 54, 221, 0.2); 3 | } 4 | 5 | .group-tag-pink { 6 | background: rgba(240, 7, 44, 0.2); 7 | } 8 | 9 | .group-tag-green { 10 | background: rgba(0, 174, 96, 0.2); 11 | } 12 | 13 | .group-tag-blue { 14 | background: rgba(0, 157, 212, 0.2); 15 | } 16 | 17 | .group-tag-red { 18 | background: rgba(196, 0, 53, 0.2); 19 | } 20 | 21 | .group-tag-orange { 22 | background: rgba(244, 114, 1, 0.2); 23 | } 24 | 25 | .group-tag-purple-2 { 26 | background: rgba(143, 0, 242, 0.2); 27 | } 28 | 29 | .group-tag-green-2 { 30 | background: rgba(111, 194, 0, 0.2); 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/components/task-resource-field.scss: -------------------------------------------------------------------------------- 1 | .resource-input-group-title { 2 | display: block; 3 | color: $color-dark-8; 4 | font-weight: bold; 5 | font-size: 14px; 6 | line-height: 22px; 7 | letter-spacing: 0; 8 | } 9 | 10 | .resource-input-group-label { 11 | display: block; 12 | width: auto; 13 | margin-right: 8px; 14 | } 15 | 16 | .resource-input-group-input { 17 | display: block; 18 | width: 100%; 19 | } 20 | 21 | .resource-error { 22 | color: $red; 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/application/common/yml-editor/pipeline-editor.scss: -------------------------------------------------------------------------------- 1 | .new-yml-editor { 2 | &.app-repo-pipeline { 3 | .yml-svg-container-box { 4 | height: unset !important; 5 | } 6 | } 7 | 8 | &.graphic { 9 | .file-content { 10 | flex: 1; 11 | overflow-x: auto; 12 | overflow-y: hidden; 13 | } 14 | } 15 | 16 | .commit-file-form { 17 | padding: 16px 16px 0 16px; 18 | border-top: 1px solid $color-border; 19 | } 20 | } 21 | 22 | .repo-tree-page.full-page { 23 | .new-yml-editor { 24 | .ant-spin-container { 25 | display: unset; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/build-detail/pipeline-log.scss: -------------------------------------------------------------------------------- 1 | .pipeline-log { 2 | .pipeline-log-time { 3 | color: $color-text; 4 | 5 | .pipeline-log-title { 6 | padding: 10px; 7 | border: 1px solid $color-border; 8 | border-radius: $radius; 9 | } 10 | } 11 | } 12 | 13 | .pipeline-log-detail { 14 | height: 100%; 15 | padding: 10px; 16 | overflow: auto; 17 | color: $log-font-color; 18 | background-color: $log-bg-color; 19 | border-radius: $radius-lg; 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/build/data-task-creation.scss: -------------------------------------------------------------------------------- 1 | .data-task-transfer { 2 | width: 760px; 3 | 4 | .ant-transfer-operation { 5 | width: 40px; 6 | padding-left: 6px; 7 | } 8 | } 9 | 10 | .data-task { 11 | .footer { 12 | .iconfont { 13 | vertical-align: baseline; 14 | } 15 | 16 | > span { 17 | color: $color-text-desc; 18 | } 19 | } 20 | 21 | .image-txt-container { 22 | .tail { 23 | display: inline-block; 24 | width: calc(100% - 60px); 25 | direction: rtl; 26 | vertical-align: text-bottom; 27 | } 28 | 29 | .hack-safari { 30 | direction: ltr; 31 | } 32 | 33 | .head { 34 | display: inline-block; 35 | overflow: hidden; 36 | text-align: right; 37 | vertical-align: text-bottom; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/data-model/index.scss: -------------------------------------------------------------------------------- 1 | .flow-container { 2 | position: relative; 3 | width: 100%; 4 | height: 100%; 5 | background-repeat: repeat; 6 | background-size: contain; 7 | border: 1px solid $color-border; 8 | border-radius: $radius; 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/obsoleted-pipeline/run-detail/build-log.scss: -------------------------------------------------------------------------------- 1 | .log-content { 2 | height: 100%; 3 | 4 | .ant-tabs-content { 5 | height: 100%; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/obsoleted-pipeline/run-detail/pipeline-log.scss: -------------------------------------------------------------------------------- 1 | .pipeline-log { 2 | .pipeline-log-time { 3 | color: $color-text; 4 | 5 | .pipeline-log-title { 6 | padding: 10px; 7 | border: 1px solid $color-border; 8 | border-radius: $radius; 9 | } 10 | } 11 | } 12 | 13 | .pipeline-log-detail { 14 | height: 100%; 15 | padding: 10px; 16 | overflow: auto; 17 | color: $log-font-color; 18 | background-color: $log-bg-color; 19 | border-radius: $radius-lg; 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/components/branch-compare.scss: -------------------------------------------------------------------------------- 1 | .repo-branch-compare { 2 | display: flex; 3 | align-items: center; 4 | 5 | .compare-button { 6 | margin-left: $p12; 7 | } 8 | 9 | .switch-branch { 10 | display: inline-flex; 11 | justify-content: center; 12 | align-items: center; 13 | width: 36px; 14 | height: 34px; 15 | margin: 0 $p12; 16 | background-color: $white; 17 | border: 1px solid $color-border; 18 | border-radius: $radius; 19 | cursor: pointer; 20 | 21 | i { 22 | color: $color-dark-4; 23 | } 24 | 25 | &:hover { 26 | border-color: $color-active; 27 | 28 | i { 29 | color: $color-active; 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/components/repo-editor.scss: -------------------------------------------------------------------------------- 1 | .repo-file-editor { 2 | .commit-file-form { 3 | padding: 16px; 4 | border-top: 1px solid $color-border; 5 | 6 | .ant-form-item:last-child { 7 | margin-bottom: 0; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/components/repo-mr-table.scss: -------------------------------------------------------------------------------- 1 | .repo-mr-list { 2 | margin-bottom: 0; 3 | 4 | .mr-item { 5 | display: grid; 6 | justify-content: space-between; 7 | align-content: space-between; 8 | height: 96px; 9 | padding: 16px 12px; 10 | border-bottom: 1px solid $color-border; 11 | grid-template-columns: auto auto; 12 | 13 | .title { 14 | font-size: 16px; 15 | } 16 | 17 | .sub-title { 18 | color: $color-text-sub; 19 | } 20 | 21 | .desc { 22 | color: $color-text-desc; 23 | text-align: right; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/components/start-tip.scss: -------------------------------------------------------------------------------- 1 | .repo-start-tip { 2 | position: relative; 3 | 4 | .sub-title { 5 | margin: $p16 0 6px; 6 | 7 | > span { 8 | line-height: 24px; 9 | } 10 | } 11 | 12 | i.icon-xjym { 13 | margin-right: 0; 14 | margin-left: $p12; 15 | color: $color-text-desc; 16 | font-size: 20px; 17 | cursor: pointer; 18 | 19 | &:hover { 20 | color: $color-active; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/repo-branch.scss: -------------------------------------------------------------------------------- 1 | .repo-branch-search-input { 2 | width: 260px; 3 | } 4 | .repo-branch-list { 5 | .branch-item { 6 | padding: 16px 12px; 7 | color: $color-text; 8 | border-bottom: 1px solid $color-border; 9 | 10 | &-left { 11 | flex: 1; 12 | margin-right: 12px; 13 | overflow: hidden; 14 | line-height: 24px; 15 | } 16 | 17 | &-commit { 18 | max-width: calc(100% - 260px); 19 | } 20 | 21 | .dice-avatar-wrap .nowrap { 22 | max-width: 100px; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/repo-mr-creation.scss: -------------------------------------------------------------------------------- 1 | .mr-creation { 2 | margin-bottom: 50px; 3 | 4 | .mr-compare-diff { 5 | margin-top: 20px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/repo/repo-tag.scss: -------------------------------------------------------------------------------- 1 | .repo-tag-search-input { 2 | width: 260px; 3 | } 4 | .repo-tag-list { 5 | .branch-item { 6 | padding: $p16; 7 | color: $color-text; 8 | border-bottom: 1px solid $color-border; 9 | 10 | &-left { 11 | flex: 1; 12 | margin-right: $p8; 13 | overflow: hidden; 14 | line-height: $p24; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/settings/components/app-merge-description.scss: -------------------------------------------------------------------------------- 1 | .merge-des { 2 | button { 3 | margin-bottom: $p16; 4 | } 5 | 6 | .des-template { 7 | .title { 8 | color: $color-dark-4; 9 | line-height: $base-line-height; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/modules/application/pages/settings/components/app-notify/index.scss: -------------------------------------------------------------------------------- 1 | .notify-group-manage { 2 | position: relative; 3 | 4 | .notify-group-action { 5 | position: absolute; 6 | top: -52px; 7 | right: 12px; 8 | } 9 | 10 | .notify-group-item { 11 | display: flex; 12 | 13 | .item-left { 14 | flex: 1; 15 | 16 | .group-info { 17 | justify-content: start; 18 | } 19 | 20 | .group-address { 21 | word-wrap: break-word; 22 | word-break: break-all; 23 | } 24 | } 25 | 26 | .item-right { 27 | width: 250px; 28 | } 29 | } 30 | } 31 | 32 | .notify-test-dingtalk { 33 | position: absolute; 34 | text-align: right; 35 | right: 0; 36 | bottom: -26px; 37 | font-weight: bold; 38 | color: $color-primary; 39 | cursor: pointer; 40 | } 41 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/common/addon-detail/detail.scss: -------------------------------------------------------------------------------- 1 | .addon-detail-page { 2 | .info-grid { 3 | display: grid; 4 | grid-template-columns: 50% 50%; 5 | row-gap: 4px; 6 | } 7 | 8 | .title { 9 | display: inline-block; 10 | margin-bottom: 8px; 11 | font-size: 16px; 12 | line-height: 38px; 13 | } 14 | 15 | .param-k { 16 | margin-bottom: $p4; 17 | color: $color-text-desc; 18 | line-height: 22px; 19 | } 20 | 21 | .param-v { 22 | margin-bottom: $p12; 23 | padding-right: $p8; 24 | color: $color-text; 25 | line-height: $p32; 26 | } 27 | 28 | .copy-all { 29 | margin-right: $p4; 30 | color: $color-primary; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/common/alarm-record/detail.scss: -------------------------------------------------------------------------------- 1 | .alarm-record-detail { 2 | .content-block { 3 | max-height: 400px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/common/components/instance-operation.scss: -------------------------------------------------------------------------------- 1 | .instance-ops { 2 | .instance-op-icon { 3 | position: relative; 4 | margin-right: 12px; 5 | font-size: 20px; 6 | 7 | &:hover { 8 | color: $color-primary; 9 | cursor: pointer; 10 | } 11 | 12 | &:after { 13 | content: ''; 14 | position: absolute; 15 | top: 2px; 16 | right: -6px; 17 | width: 1px; 18 | height: 14px; 19 | background: $color-dark-1; 20 | } 21 | 22 | &:last-child { 23 | margin-right: 0; 24 | 25 | &::after { 26 | display: none; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/common/custom-alarm/index.scss: -------------------------------------------------------------------------------- 1 | .custom-alarm-form { 2 | .title { 3 | margin-bottom: 10px; 4 | margin-left: 20px; 5 | padding-bottom: 5px; 6 | border-bottom: 1px solid $color-border; 7 | } 8 | } 9 | 10 | .custom-alarm-previewer { 11 | width: 400px; 12 | } 13 | // todo temporarily,When the overflow style of the global td is removed, remove the style 14 | .filter-rule-table, 15 | .field-rule-table { 16 | td { 17 | overflow: visible; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/common/custom-dashboard/import-export.scss: -------------------------------------------------------------------------------- 1 | .import-export-modal { 2 | .ant-modal-header { 3 | padding: 0; 4 | } 5 | 6 | .ant-modal-body { 7 | padding: 0 16px; 8 | max-height: 80vh; 9 | display: flex; 10 | } 11 | 12 | .custom-dashboard-import-upload { 13 | .ant-upload-list-item:hover .ant-upload-list-item-info { 14 | background-color: transparent; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/alarm-report/report-records/index.scss: -------------------------------------------------------------------------------- 1 | .task-report-records { 2 | height: 100%; 3 | 4 | .search-records { 5 | position: relative; 6 | width: 260px; 7 | 8 | &::after { 9 | position: absolute; 10 | top: -16px; 11 | right: 0; 12 | bottom: -16px; 13 | display: block; 14 | height: 100%; 15 | border-right: thin solid rgba(0, 0, 0, 0.1); 16 | content: ''; 17 | } 18 | 19 | .active { 20 | color: $color-active; 21 | background: $color-active-bg; 22 | } 23 | } 24 | 25 | .bi-view-wrapper { 26 | padding: 30px 20px; 27 | 28 | .bi-chart-header { 29 | position: absolute; 30 | top: 0; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/cluster-container/cluster-terminal.scss: -------------------------------------------------------------------------------- 1 | .k8s-cluster-terminal-container { 2 | height: 100%; 3 | padding: 20px 0 10px 20px; 4 | overflow: hidden; 5 | background-color: $terminal-bgcolor; 6 | border-radius: 4px; 7 | 8 | .terminal-info { 9 | color: $platinum; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/cluster-manage/add-cluster-forms/cluster-form.scss: -------------------------------------------------------------------------------- 1 | .cluster-form { 2 | .more { 3 | &-btn { 4 | margin-left: 0.5rem; 5 | font-weight: bold; 6 | } 7 | 8 | &-form { 9 | margin-top: 0.9375rem; 10 | padding: 0.9375rem; 11 | border-top: 1px solid $color-border; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/cluster-manage/cluster-detail.scss: -------------------------------------------------------------------------------- 1 | .cluster-detail { 2 | min-width: 700px; 3 | } 4 | 5 | .cluster-cloud-detail { 6 | .ecs-item-row { 7 | .ant-table-row-expand-icon-cell { 8 | .ant-table-row-expand-icon { 9 | visibility: hidden !important; 10 | } 11 | } 12 | 13 | + tr { 14 | &.ant-table-expanded-row { 15 | display: none; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/cluster-manage/deploy-cluster-forms/edit-table.scss: -------------------------------------------------------------------------------- 1 | .node-edit-table { 2 | .edit-operation { 3 | width: 65px; 4 | text-align: center; 5 | } 6 | 7 | .node-type { 8 | width: 120px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/cluster-manage/deploy-cluster-log.scss: -------------------------------------------------------------------------------- 1 | .deploy-cluster-log { 2 | position: relative; 3 | height: 100%; 4 | padding: 10px 10px 10px 25px; 5 | overflow-y: auto; 6 | @include thin-scrollbar(); 7 | color: #bbbbbb; 8 | background-color: #3c444f; 9 | border-radius: 6px; 10 | 11 | pre { 12 | overflow: auto; 13 | @include thin-scrollbar(); 14 | 15 | &::-webkit-scrollbar { 16 | height: 3px; 17 | } 18 | color: #c2c1d0; 19 | font-size: 12px; 20 | font-family: Menlo, PingFangSC-Regular, Consolas, Courier, monospace; 21 | line-height: 1.7em; 22 | -webkit-font-smoothing: antialiased; 23 | } 24 | 25 | .log-state { 26 | position: absolute; 27 | left: 4px; 28 | font-size: 18px; 29 | 30 | &.bottom { 31 | bottom: 15px; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/middleware-dashboard/modal.scss: -------------------------------------------------------------------------------- 1 | .middleware-op-modal { 2 | > div { 3 | margin-bottom: 4px; 4 | } 5 | 6 | &.scale { 7 | .ant-row { 8 | margin-bottom: 4px; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/middleware-detail/index.scss: -------------------------------------------------------------------------------- 1 | .text-view { 2 | padding: 4px 11px; 3 | border: 1px solid $color-border; 4 | border-radius: 4px; 5 | 6 | p { 7 | margin-bottom: 0; 8 | line-height: 2em; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/networks/common/components/cidr-input.scss: -------------------------------------------------------------------------------- 1 | .cidr-input-form { 2 | display: flex; 3 | align-items: center; 4 | 5 | .ant-input, 6 | .ant-select, 7 | .error-check-item, 8 | .ant-form-explain { 9 | width: 80px; 10 | } 11 | 12 | .ant-form-item { 13 | margin-bottom: 0; 14 | } 15 | 16 | > .split { 17 | margin-right: 2px; 18 | margin-left: 2px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/networks/vpc/index.scss: -------------------------------------------------------------------------------- 1 | .cloud-resource-tags-container { 2 | position: relative; 3 | height: 25px; 4 | 5 | .cloud-resource-tags-box { 6 | white-space: nowrap; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/pod-detail/index.scss: -------------------------------------------------------------------------------- 1 | .pod-detail { 2 | .title { 3 | display: inline-block; 4 | margin-bottom: 8px; 5 | font-size: 16px; 6 | line-height: 38px; 7 | } 8 | 9 | .info-grid { 10 | display: grid; 11 | grid-template-columns: 50% 50%; 12 | row-gap: 4px; 13 | } 14 | 15 | .param-k { 16 | margin-bottom: 4px; 17 | color: $color-text-desc; 18 | line-height: 22px; 19 | } 20 | 21 | .param-v { 22 | margin-bottom: 12px; 23 | padding-right: 8px; 24 | color: $color-text; 25 | line-height: 32px; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /shell/app/modules/cmp/pages/tasks/job.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import React from 'react'; 15 | import TaskList from './task-list'; 16 | 17 | const Job = () => ; 18 | export default Job; 19 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/common/containers/terminal.scss: -------------------------------------------------------------------------------- 1 | .service-terminal { 2 | height: 100%; 3 | padding: 20px 0 10px 20px; 4 | overflow: hidden; 5 | background-color: $terminal-bgcolor; 6 | border-radius: 4px; 7 | 8 | .terminal-info { 9 | color: $platinum; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/common/custom-label.scss: -------------------------------------------------------------------------------- 1 | .custom-label-comp { 2 | line-height: 28px; 3 | 4 | .custom-label-input { 5 | width: 100px; 6 | height: 24px; 7 | margin: 0 4px; 8 | } 9 | 10 | .custom-label-add { 11 | height: 24px; 12 | margin: 0 4px; 13 | padding: 0 10px; 14 | font-size: 14px; 15 | line-height: 22px; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/common/label-selector.scss: -------------------------------------------------------------------------------- 1 | .label-selector-container { 2 | line-height: 28px; 3 | 4 | .label-group { 5 | margin-top: 4px; 6 | margin-bottom: 8px; 7 | 8 | .label-group-name { 9 | color: $color-text-sub; 10 | font-size: 14px; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/pages/cluster-dashboard/instance-list.scss: -------------------------------------------------------------------------------- 1 | .item-image { 2 | .image-name { 3 | position: relative; 4 | left: 0; 5 | display: block; 6 | width: 100%; 7 | height: 28px; 8 | line-height: 28px; 9 | 10 | .image-txt-container { 11 | position: absolute; 12 | width: 100%; 13 | height: 100%; 14 | 15 | .tail { 16 | display: inline-block; 17 | width: calc(100% - 45px); 18 | direction: rtl; 19 | } 20 | 21 | .hack-safari { 22 | direction: ltr; 23 | } 24 | 25 | .head { 26 | display: inline-block; 27 | overflow: hidden; 28 | text-align: right; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/pages/cluster-dashboard/machine-detail.scss: -------------------------------------------------------------------------------- 1 | .machine-detail-info-item { 2 | .label { 3 | color: $color-text-desc; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/pages/cluster-dashboard/resources-summary.scss: -------------------------------------------------------------------------------- 1 | .resource-summary-op-icon { 2 | cursor: pointer; 3 | color: $color-dark-4; 4 | 5 | &:hover { 6 | background-color: $color-bg-gray; 7 | color: $color-dark-8; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/pages/service-manager/index.scss: -------------------------------------------------------------------------------- 1 | .path-breadcrumb { 2 | display: inline-block; 3 | } 4 | 5 | .to-json { 6 | display: inline-block; 7 | float: right; 8 | } 9 | 10 | .manage-tabs-bar { 11 | height: 100%; 12 | 13 | .ant-tabs-content, 14 | .ant-tabs-tabpane { 15 | height: 100%; 16 | overflow: auto; 17 | } 18 | } 19 | 20 | .manager-link-title { 21 | .title-icon { 22 | width: 16px; 23 | height: 16px; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/modules/dcos/pages/service-manager/rds-manager/account-form/change-permission-form.scss: -------------------------------------------------------------------------------- 1 | .permission-transfer { 2 | & > .ant-transfer-list { 3 | &:nth-of-type(1) .permission-select { 4 | display: none; 5 | } 6 | 7 | &:last-of-type { 8 | width: calc(100% - 230px); 9 | } 10 | } 11 | 12 | .ant-transfer-list-content-item { 13 | display: inline-block; 14 | overflow: auto; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /shell/app/modules/dop/locales/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "addon info": "addon info", 3 | "addon setting": "addon setting", 4 | "number of application": "number of application", 5 | "Approval Request": "Approval Request", 6 | "Console": "Console", 7 | "deployment request": "deployment request", 8 | "JVM analysis": "JVM analysis", 9 | "Approved": "Approved", 10 | "Initiated by Me": "Initiated by Me", 11 | "search by owned project": "search by owned project", 12 | "Search by project name": "Search by project name" 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/dop/locales/zh.json: -------------------------------------------------------------------------------- 1 | { 2 | "addon info": "服务信息", 3 | "addon setting": "服务设置", 4 | "number of application": "应用数", 5 | "Approval Request": "审批请求", 6 | "Console": "控制台", 7 | "deployment request": "部署请求", 8 | "JVM analysis": "JVM 分析", 9 | "Approved": "我审批的", 10 | "Initiated by Me": "我发起的", 11 | "search by owned project": "通过所在项目搜索", 12 | "Search by project name": "通过项目名称搜索" 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/extra/entry.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | const entry = (registerModule) => { 15 | // register some modules here 16 | }; 17 | 18 | export default [entry]; 19 | -------------------------------------------------------------------------------- /shell/app/modules/gallery/pages/detail.scss: -------------------------------------------------------------------------------- 1 | .gallery-detail { 2 | .gallery-detail-download { 3 | > button { 4 | &:first-child { 5 | border-radius: 20px 0 0 20px !important; 6 | border-right-color: $white !important; 7 | } 8 | &:last-child { 9 | border-left-color: $white !important; 10 | border-radius: 0 20px 20px 0 !important; 11 | } 12 | } 13 | } 14 | } 15 | 16 | .version-list-menu { 17 | height: calc(100vh - 250px); 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/modules/gallery/pages/index.scss: -------------------------------------------------------------------------------- 1 | .gallery-lists { 2 | position: relative; 3 | 4 | .gallery-service { 5 | position: relative; 6 | .info-container { 7 | position: relative; 8 | &::after { 9 | height: 1px; 10 | width: 100%; 11 | position: absolute; 12 | bottom: -16px; 13 | content: ''; 14 | background-color: $color-border; 15 | } 16 | } 17 | } 18 | &::after { 19 | position: absolute; 20 | width: 100%; 21 | height: 2px; 22 | content: ''; 23 | bottom: 0; 24 | background-color: $white; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /shell/app/modules/msp/alarm-manage/notify-group/index.scss: -------------------------------------------------------------------------------- 1 | .msp-notify-group { 2 | .notify-group-manage { 3 | .notify-group-action { 4 | @extend %top-button-group; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/service-list/pages/index.scss: -------------------------------------------------------------------------------- 1 | .status-point { 2 | display: inline-block; 3 | width: 8px; 4 | height: 8px; 5 | border-radius: 100%; 6 | 7 | &.grey { 8 | background-color: $gray; 9 | } 10 | 11 | &.success, 12 | &.green { 13 | background-color: $green; 14 | } 15 | 16 | &.danger, 17 | &.red { 18 | background-color: $red; 19 | } 20 | } 21 | .service-overview { 22 | &-topology { 23 | background: $color-default; 24 | 25 | &.fixed-height { 26 | height: 420px; 27 | } 28 | 29 | .topology-wrapper { 30 | height: 372px; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/service-list/pages/service-list.scss: -------------------------------------------------------------------------------- 1 | .bg-header { 2 | background-color: $color-table-head-bg; 3 | } 4 | 5 | .language-wrapper { 6 | background-color: $color-default-04; 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/service-list/pages/service-name-select.scss: -------------------------------------------------------------------------------- 1 | .service-name-select { 2 | .load-more-selector { 3 | .results { 4 | padding: 0; 5 | border: 1px solid transparent; 6 | 7 | &:hover { 8 | box-shadow: unset; 9 | } 10 | 11 | .values, 12 | .value-item { 13 | width: 100%; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/service-list/pages/transaction.scss: -------------------------------------------------------------------------------- 1 | .transaction-detail-drawer { 2 | .ant-drawer-body { 3 | padding: 0; 4 | } 5 | } 6 | 7 | .transaction-analysis { 8 | .contractive-filter-item-wrap { 9 | .ant-input-affix-wrapper { 10 | width: 240px !important; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/topology/pages/topology/component/nodes/common-node.scss: -------------------------------------------------------------------------------- 1 | .topology-node-popover { 2 | width: 330px; 3 | 4 | .ant-popover-content { 5 | .ant-popover-arrow { 6 | display: none; 7 | } 8 | 9 | .ant-popover-inner { 10 | background: #443b59; 11 | 12 | .ant-popover-title { 13 | border-width: 0; 14 | padding: 0; 15 | } 16 | 17 | &-content { 18 | padding-top: 8px; 19 | 20 | .metric-detail { 21 | > div { 22 | background: rgba($white, 0.04); 23 | } 24 | } 25 | } 26 | } 27 | } 28 | } 29 | 30 | .node-handle { 31 | &-start, 32 | &-end { 33 | opacity: 0; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/topology/pages/topology/component/progress/index.scss: -------------------------------------------------------------------------------- 1 | .hexagon-progress, 2 | .circular-progress { 3 | .path { 4 | transition: all 0.3s ease 0s; 5 | } 6 | 7 | .fill-path { 8 | transform: translate(3px, 4px) scale(0.95); 9 | } 10 | } 11 | 12 | .shadow-wrapper { 13 | z-index: -1; 14 | 15 | .shadow { 16 | background: $color-default; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-overview/topology/pages/topology/component/topology-overview.scss: -------------------------------------------------------------------------------- 1 | .topology-overview { 2 | width: 280px; 3 | height: 100%; 4 | border-right: 1px solid rgba($white, 0.1); 5 | transition: all 0.3s ease-in-out; 6 | 7 | .content { 8 | overflow: hidden; 9 | 10 | > div { 11 | width: 280px; 12 | } 13 | } 14 | 15 | .card-item { 16 | width: 120px; 17 | height: 76px; 18 | background-color: rgba($white, 0.04); 19 | } 20 | 21 | &.collapse { 22 | width: 8px; 23 | 24 | .content { 25 | opacity: 0; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /shell/app/modules/msp/env-setting/configuration/type-select.scss: -------------------------------------------------------------------------------- 1 | .msp-conf-type-select { 2 | .conf-item { 3 | width: 220px; 4 | height: 100px; 5 | border: 1px solid rgba(7, 10, 26, 0.1); 6 | border-radius: 6px; 7 | cursor: pointer; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/api-insight/common/components/filterNav.scss: -------------------------------------------------------------------------------- 1 | .api-monitor-filter-nav { 2 | .app-service-select { 3 | display: flex; 4 | 5 | > div { 6 | flex: 1; 7 | } 8 | } 9 | 10 | .filter-row { 11 | justify-content: start; 12 | } 13 | 14 | .search-container { 15 | flex: 1; 16 | 17 | .search-fields { 18 | flex: 1; 19 | } 20 | } 21 | 22 | .monitor-time-selector-inline { 23 | margin-left: 0; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/api-insight/pages/config.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export const gatewayApiPrefix = '/api/gateway/openapi/metrics/charts'; 15 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/browser-insight/common/components/sort-list/sort-tab.scss: -------------------------------------------------------------------------------- 1 | .sort-tab { 2 | margin-bottom: 10px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/browser-insight/common/components/sort-list/sub-tab.scss: -------------------------------------------------------------------------------- 1 | .sub-tab { 2 | margin-bottom: 20px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/browser-insight/pages/domain/domain.scss: -------------------------------------------------------------------------------- 1 | .bi-domain-charts { 2 | table { 3 | table-layout: auto; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/browser-insight/pages/page/page.scss: -------------------------------------------------------------------------------- 1 | .page-chart-order { 2 | display: block; 3 | width: 300px; 4 | height: 150px; 5 | padding: 0 20px; 6 | background-color: $lightnavy; 7 | border-radius: 6px; 8 | 9 | .order-style, 10 | .show-all { 11 | height: 40px; 12 | line-height: 40px; 13 | } 14 | 15 | .show-all { 16 | display: block; 17 | width: 260px; 18 | margin-top: 10px; 19 | text-align: center; 20 | background-color: $gray; 21 | border-radius: 6px; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/browser-insight/pages/position/position.scss: -------------------------------------------------------------------------------- 1 | .position-bar-chart { 2 | margin-bottom: 0 !important; 3 | border-width: 0 !important; 4 | } 5 | 6 | .monitor-comparative-container { 7 | padding: 10px 15px; 8 | 9 | .monitor-comparative-tip { 10 | margin-bottom: 10px; 11 | } 12 | } 13 | 14 | .position-bars { 15 | margin-bottom: 20px; 16 | background-color: $white; 17 | border-radius: 4px; 18 | 19 | .sort-tab { 20 | margin-bottom: 0; 21 | padding-top: 15px; 22 | padding-left: 15px; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/error-insight/pages/errors/error-filters.scss: -------------------------------------------------------------------------------- 1 | .error-filters { 2 | .env-selector { 3 | width: 7rem; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/error-insight/pages/errors/error-overview.scss: -------------------------------------------------------------------------------- 1 | .error-overview { 2 | .no-more { 3 | color: $lightgray; 4 | text-align: center; 5 | } 6 | 7 | .page-total { 8 | margin-bottom: 10px; 9 | padding: 10px; 10 | font-size: 1.125rem; 11 | border-bottom: 1px solid $lightnavy; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/gateway-ingress/common/components/domain-selector.scss: -------------------------------------------------------------------------------- 1 | .gi-domain-selector { 2 | width: 200px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/gateway-ingress/common/components/http-status-input.scss: -------------------------------------------------------------------------------- 1 | .gi-http-status-input { 2 | width: 150px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/gateway-ingress/common/components/statistics-selector.scss: -------------------------------------------------------------------------------- 1 | .gi-statistics-selector { 2 | width: 90px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/gateway-ingress/common/components/tab-right.scss: -------------------------------------------------------------------------------- 1 | .gi-top-nav-right { 2 | &.filter-box { 3 | .flex-box { 4 | display: inline-flex; 5 | } 6 | } 7 | 8 | .condition-selector { 9 | width: 200px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/monitor-common/components/resource-usage/resource-usage-charts.scss: -------------------------------------------------------------------------------- 1 | .unit-detail { 2 | padding-top: 8px; 3 | 4 | .top-nav-right { 5 | margin-bottom: 20px; 6 | overflow: hidden; 7 | 8 | .time-range-selector { 9 | margin-left: 0; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/monitor-common/components/sort-list/sort-tab.scss: -------------------------------------------------------------------------------- 1 | .sort-tab { 2 | margin-bottom: 10px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/monitor-common/components/sort-list/sub-tab.scss: -------------------------------------------------------------------------------- 1 | .sub-tab { 2 | margin-bottom: 20px; 3 | } 4 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/monitor-common/components/top-nav-right.scss: -------------------------------------------------------------------------------- 1 | .top-nav-right { 2 | .condition-selector { 3 | width: 200px; 4 | } 5 | 6 | .time-range-selector { 7 | margin-left: 20px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/status-insight/pages/status/add-modal.scss: -------------------------------------------------------------------------------- 1 | .group-regs { 2 | .op-icon-add { 3 | position: absolute; 4 | right: 50%; 5 | margin-top: -8px; 6 | font-size: 20px; 7 | 8 | &:hover { 9 | color: $color-primary; 10 | cursor: pointer; 11 | } 12 | } 13 | 14 | .reg-item { 15 | display: flex; 16 | 17 | .input-form-item { 18 | width: 90%; 19 | } 20 | 21 | .op-icon-drop { 22 | margin: 6px 0 0 6px; 23 | font-size: 20px; 24 | 25 | &:hover { 26 | color: $color-primary; 27 | cursor: pointer; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/status-insight/pages/status/status.scss: -------------------------------------------------------------------------------- 1 | .project-status-page { 2 | 3 | .reason-analysis-span { 4 | color: $color-primary; 5 | } 6 | 7 | .status-list { 8 | margin-top: 5px; 9 | 10 | li { 11 | float: left; 12 | width: 1px; 13 | height: 12px; 14 | margin-right: 1px; 15 | 16 | &.grey { 17 | background: $platinum; 18 | } 19 | 20 | &.green { 21 | background: $green; 22 | } 23 | 24 | &.red { 25 | background: $red; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/trace-insight/pages/trace-detail/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import TraceDetail from './containers/trace-detail'; 15 | 16 | export default TraceDetail; 17 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/trace-insight/pages/trace-querier/trace-common-panel.scss: -------------------------------------------------------------------------------- 1 | .trace-common-panel { 2 | @extend %shallow-shadow; 3 | border-radius: $radius; 4 | 5 | .trace-common-panel-title { 6 | margin: 0; 7 | color: $color-text; 8 | font-size: 14px; 9 | } 10 | 11 | .card-body { 12 | position: relative; 13 | min-height: 200px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/modules/msp/monitor/trace-insight/pages/trace-querier/trace-search-detail.scss: -------------------------------------------------------------------------------- 1 | .trace-search-detail { 2 | position: fixed; 3 | top: 0; 4 | left: 48px; 5 | width: calc(100% - 48px); 6 | height: 100%; 7 | overflow: auto; 8 | background: $white; 9 | z-index: 1001; 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/org/common/card/index.scss: -------------------------------------------------------------------------------- 1 | .erda-card { 2 | .erda-card-header { 3 | line-height: 1; 4 | font-weight: bold; 5 | background-color: $color-table-head-bg; 6 | } 7 | 8 | .erda-card-body { 9 | color: $color-text-desc; 10 | background-color: $white; 11 | 12 | .label, 13 | .erda-panel-label { 14 | color: #302647; 15 | } 16 | 17 | .desc, 18 | .erda-panel-value { 19 | font-size: 12px; 20 | } 21 | 22 | .erda-panel-item, 23 | .erda-panel-value { 24 | margin-bottom: 0; 25 | } 26 | 27 | .erda-panel-list { 28 | padding: 1.5rem; 29 | margin: 0.5rem 0; 30 | background-color: $color-table-bg-hover; 31 | } 32 | 33 | .erda-panel { 34 | margin-bottom: 0; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /shell/app/modules/org/common/compact-select/index.scss: -------------------------------------------------------------------------------- 1 | .compact-select { 2 | display: flex; 3 | 4 | .select-addon-before { 5 | display: inline-flex; 6 | padding: 4px 11px; 7 | color: $color-text-sub; 8 | background-color: $color-dark-04; 9 | border: 1px solid $color-border; 10 | border-right: none; 11 | border-top-left-radius: 3px; 12 | border-bottom-left-radius: 3px; 13 | } 14 | 15 | .ant-select-selection { 16 | border-top-left-radius: 0; 17 | border-bottom-left-radius: 0; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /shell/app/modules/org/common/issue-field-icon.scss: -------------------------------------------------------------------------------- 1 | .issues-field-type-icon-box { 2 | display: flex; 3 | flex-shrink: 0; 4 | justify-content: center; 5 | align-items: center; 6 | width: 16px; 7 | height: 16px; 8 | color: $white; 9 | border-radius: $radius; 10 | 11 | .iconfont { 12 | margin-right: 0; 13 | font-size: 10px; 14 | } 15 | 16 | &.primary { 17 | background-color: $color-primary; 18 | } 19 | 20 | &.red { 21 | background-color: $color-danger; 22 | } 23 | 24 | &.darkcyan { 25 | background-color: $darkcyan; 26 | } 27 | 28 | &.palegreen { 29 | background-color: $palegreen; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/announcement/index.scss: -------------------------------------------------------------------------------- 1 | .org-notice-manage { 2 | .notice-filter { 3 | width: 268px; 4 | margin-bottom: $p12; 5 | } 6 | 7 | .operation-td { 8 | span { 9 | position: relative; 10 | margin-right: 16px; 11 | color: $color-active; 12 | cursor: pointer; 13 | 14 | &:after { 15 | content: ''; 16 | position: absolute; 17 | top: 3px; 18 | right: -8px; 19 | width: 1px; 20 | height: 14px; 21 | background: rgba(0, 0, 0, 0.1); 22 | } 23 | 24 | &:last-child { 25 | &:after { 26 | display: none; 27 | } 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/certificate/index.scss: -------------------------------------------------------------------------------- 1 | .upload-file-item { 2 | height: 32px; 3 | margin-top: 8px; 4 | padding: 0 12px; 5 | line-height: 32px; 6 | border: 1px solid $color-border; 7 | border-radius: $radius; 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/projects/create-project.scss: -------------------------------------------------------------------------------- 1 | .template-card-row { 2 | align-items: stretch; 3 | width: 676px; 4 | 5 | .template-card { 6 | width: 162px; 7 | text-align: justify; 8 | border: 1px solid $color-border; 9 | 10 | &.checked { 11 | border-color: $color-primary; 12 | } 13 | } 14 | 15 | .template-icon { 16 | width: 40px; 17 | height: 40px; 18 | } 19 | 20 | .template-description { 21 | line-height: 20px; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/projects/issue-field-setting-modal.scss: -------------------------------------------------------------------------------- 1 | .issue-field-layout { 2 | .field-grid { 3 | display: grid; 4 | width: 100%; 5 | grid-row-gap: 20px; 6 | grid-template-columns: 1fr 1fr 1fr; 7 | } 8 | 9 | .name { 10 | margin-bottom: $p16; 11 | padding: $p8; 12 | color: $color-primary; 13 | font-weight: 500; 14 | font-size: $p16; 15 | background-color: $color-bg; 16 | } 17 | 18 | .field-label { 19 | min-width: 100px; 20 | margin-right: $p8; 21 | color: $color-primary; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/projects/settings/info/index.scss: -------------------------------------------------------------------------------- 1 | .project-setting-info { 2 | .desc { 3 | display: -webkit-box; 4 | overflow: hidden; 5 | -webkit-box-orient: vertical; 6 | -webkit-line-clamp: 2; 7 | } 8 | 9 | .org-with-logo { 10 | width: calc(100% - 64px - 16px); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/modules/org/pages/setting/org-setting.scss: -------------------------------------------------------------------------------- 1 | .org-settings-main { 2 | .panel-title { 3 | margin-bottom: 19px; 4 | color: $color-text; 5 | } 6 | } 7 | 8 | .notice-channel { 9 | .add-channel-button { 10 | top: -90px; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/health-point.scss: -------------------------------------------------------------------------------- 1 | .health-point { 2 | display: inline-flex; 3 | align-items: center; 4 | margin-right: 6px; 5 | 6 | .ant-badge-status-text { 7 | display: none; 8 | } 9 | 10 | .health-text { 11 | margin: 0 8px; 12 | font-size: 14px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue-workflow.scss: -------------------------------------------------------------------------------- 1 | .issue-workflow { 2 | .default-workflow { 3 | display: flex; 4 | align-items: flex-start; 5 | 6 | &-content { 7 | display: flex; 8 | flex-grow: 1; 9 | flex-wrap: wrap; 10 | width: 0; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/add-mr-relation.scss: -------------------------------------------------------------------------------- 1 | .issue-comment-box { 2 | .filter-select { 3 | width: 170px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/comment-box.scss: -------------------------------------------------------------------------------- 1 | .issue-comment-arrow { 2 | position: relative; 3 | &:before { 4 | content: ''; 5 | position: absolute; 6 | width: 10px; 7 | top: 10px; 8 | left: -12px; 9 | border: 6px solid transparent; 10 | border-right-color: $color-default-04; 11 | } 12 | } 13 | 14 | .issue-md-arrow { 15 | position: relative; 16 | &:before { 17 | content: ''; 18 | position: absolute; 19 | top: 10px; 20 | height: 10px; 21 | width: 10px; 22 | left: -5px; 23 | z-index: 2; 24 | transform: rotate(45deg); 25 | background-color: #fbfbfb; 26 | border-bottom: 1px solid rgba(48, 38, 71, 0.2); 27 | border-left: 1px solid rgba(48, 38, 71, 0.2); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/issue-icon.scss: -------------------------------------------------------------------------------- 1 | .issues-type-icon-box { 2 | display: flex; 3 | flex-shrink: 0; 4 | justify-content: center; 5 | align-items: center; 6 | width: 16px; 7 | height: 16px; 8 | color: $white; 9 | border-radius: $radius; 10 | 11 | .iconfont { 12 | margin-right: 0; 13 | font-size: 10px; 14 | } 15 | 16 | &.primary { 17 | background-color: $color-primary; 18 | } 19 | 20 | &.red { 21 | background-color: $color-danger; 22 | } 23 | 24 | &.darkcyan { 25 | background-color: $darkcyan; 26 | } 27 | 28 | &.palegreen { 29 | background-color: $palegreen; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/issue-relation.scss: -------------------------------------------------------------------------------- 1 | .issue-relation-box { 2 | .issue-list { 3 | width: 0; 4 | } 5 | } 6 | .section-operate-title { 7 | &:hover { 8 | .op-icon { 9 | background-color: $color-default-06; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/time-input.scss: -------------------------------------------------------------------------------- 1 | .issue-part-save-group { 2 | position: absolute; 3 | top: 3px; 4 | right: -68px; 5 | text-align: right; 6 | } 7 | 8 | .issue-part-save, 9 | .issue-part-cancel { 10 | position: absolute; 11 | right: 0; 12 | display: inline-flex; 13 | justify-content: center; 14 | align-items: center; 15 | width: 28px; 16 | height: 22px; 17 | background-color: $white; 18 | border: 1px solid $platinum; 19 | border-radius: $radius; 20 | cursor: pointer; 21 | @extend %shallow-shadow; 22 | 23 | &:hover { 24 | background-color: $color-bg; 25 | } 26 | } 27 | 28 | .issue-part-save { 29 | right: 32px; 30 | } 31 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/issue/time-trace.scss: -------------------------------------------------------------------------------- 1 | .time-trace { 2 | padding: 3px 12px; 3 | width: 67%; 4 | height: 32px; 5 | 6 | &.active-hover:hover { 7 | background-color: $color-bg; 8 | cursor: pointer; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/iteration-selector.scss: -------------------------------------------------------------------------------- 1 | .iteration-selector.load-more-selector { 2 | .results { 3 | border: 1px solid transparent; 4 | 5 | .icon { 6 | color: $color-default-3; 7 | } 8 | 9 | &:hover { 10 | box-shadow: unset; 11 | 12 | .icon { 13 | color: $color-default; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/params-config/index.scss: -------------------------------------------------------------------------------- 1 | .project-params-config { 2 | .project-app-selector { 3 | &.load-more-selector { 4 | .results { 5 | padding: 0; 6 | border: 1px solid transparent; 7 | 8 | &:hover { 9 | box-shadow: unset; 10 | } 11 | 12 | .values, 13 | .value-item { 14 | width: 100%; 15 | } 16 | } 17 | } 18 | } 19 | 20 | .type-select { 21 | border-bottom: 3px solid transparent; 22 | padding-bottom: 4px; 23 | margin-top: 4px; 24 | &:hover, 25 | &.selected { 26 | border-bottom-color: $color-purple-highlight; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-manage/common/tree-category/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import TreeCategory from './tree'; 15 | 16 | export default TreeCategory; 17 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-manage/config-detail/pipeline-editor/case-yml-graphic-editor.scss: -------------------------------------------------------------------------------- 1 | .case-node-drawer { 2 | .ant-drawer-body { 3 | padding-top: 4px; 4 | } 5 | 6 | .case-node-chosen-tabs { 7 | display: flex; 8 | flex-direction: column; 9 | 10 | > .ant-tabs-content-holder { 11 | > .ant-tabs-content { 12 | flex: 1; 13 | height: 100%; 14 | 15 | > .ant-tabs-tabpane { 16 | overflow: auto; 17 | } 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/category.scss: -------------------------------------------------------------------------------- 1 | .pipeline-category { 2 | &-item { 3 | height: 52px; 4 | 5 | &.active { 6 | position: relative; 7 | background: $white; 8 | 9 | &::after { 10 | content: ''; 11 | position: absolute; 12 | top: 0; 13 | bottom: 0; 14 | right: 0; 15 | width: 3px; 16 | background-color: $color-purple-highlight; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/detail/build-log.scss: -------------------------------------------------------------------------------- 1 | .build-log-detail { 2 | height: 100%; 3 | > .ant-tabs-top { 4 | height: 100%; 5 | } 6 | .ant-tabs-content { 7 | height: 100%; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/detail/pipeline-node.scss: -------------------------------------------------------------------------------- 1 | .yml-chart-node { 2 | &.project-pipeline-node { 3 | width: 100%; 4 | height: 100%; 5 | padding: 0 12px; 6 | background-color: $white; 7 | border-radius: $radius; 8 | cursor: pointer; 9 | @extend %shallow-shadow; 10 | 11 | .pipeline-node-actions { 12 | display: none; 13 | } 14 | 15 | &:hover { 16 | @extend %hover-shadow; 17 | 18 | .pipeline-node-actions { 19 | display: flex; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/form.scss: -------------------------------------------------------------------------------- 1 | div.project-release-select.ant-select { 2 | .ant-select-selector { 3 | background-color: $color-default-06; 4 | border: none; 5 | } 6 | } 7 | 8 | .pipeline-form-add-tree { 9 | .ant-tree .ant-tree-title { 10 | width: 100%; 11 | } 12 | 13 | .ant-form-item { 14 | margin-bottom: 0; 15 | } 16 | } 17 | 18 | .pipeline-add-popover { 19 | .ant-popover-arrow { 20 | display: none; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/guide.scss: -------------------------------------------------------------------------------- 1 | .pipeline-guide-blue { 2 | border-color: $blue; 3 | background-color: rgba($blue, 0.1); 4 | 5 | .pipeline-guide-item { 6 | .remove-btn { 7 | display: none; 8 | color: $color-default; 9 | cursor: pointer; 10 | 11 | &:hover { 12 | color: $red; 13 | } 14 | } 15 | 16 | &:hover .remove-btn { 17 | display: block; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/pipeline-new/index.scss: -------------------------------------------------------------------------------- 1 | .common-pipeline { 2 | .pipeline-category-container { 3 | @media screen and (max-width: 1440px) { 4 | width: 240px; 5 | } 6 | @media screen and (min-width: 1441px) and (max-width: 2560px) { 7 | width: 360px; 8 | } 9 | @media screen and (min-width: 2561px) { 10 | width: 480px; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/project-selector.scss: -------------------------------------------------------------------------------- 1 | .head-project-selector { 2 | .load-more-selector { 3 | .results { 4 | padding: 0; 5 | border: 1px solid transparent; 6 | 7 | &:hover { 8 | box-shadow: unset; 9 | } 10 | 11 | .values, 12 | .value-item { 13 | width: 100%; 14 | } 15 | } 16 | } 17 | 18 | .head-project-name { 19 | display: flex; 20 | width: 100%; 21 | 22 | .icon { 23 | color: $color-text-icon; 24 | } 25 | 26 | &:hover { 27 | .icon { 28 | color: $color-default; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/runtime-selector.scss: -------------------------------------------------------------------------------- 1 | .runtimes-selector.load-more-selector { 2 | .results { 3 | border: 1px solid transparent; 4 | 5 | .icon { 6 | color: $color-default-3; 7 | } 8 | 9 | &:hover { 10 | box-shadow: unset; 11 | 12 | .icon { 13 | color: $color-default; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/workflow/config.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | // workflow for task 15 | export const TASK_FLOW = 'DEV'; 16 | -------------------------------------------------------------------------------- /shell/app/modules/project/common/components/workflow/index.scss: -------------------------------------------------------------------------------- 1 | .devops-workflow-steps { 2 | background-image: linear-gradient(to right, $white, $white), linear-gradient(to right, $white, $white), 3 | linear-gradient(to right, rgba($color-default, 0.1), rgba($white, 0)), 4 | linear-gradient(to left, rgba($color-default, 0.1), rgba($white, 0)); 5 | background-position: left center, right center, left center, right center; 6 | background-repeat: no-repeat; 7 | background-color: $white; 8 | background-size: 20px 100%, 20px 100%, 10px 88%, 10px 88%; 9 | background-attachment: local, local, scroll, scroll; 10 | } 11 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/apps/app-form.scss: -------------------------------------------------------------------------------- 1 | .ant-spin-nested-loading div .app-form-spin { 2 | position: fixed; 3 | z-index: 1; 4 | } 5 | .create-app-form { 6 | &.ant-form-vertical { 7 | width: 70%; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/backlog/index.scss: -------------------------------------------------------------------------------- 1 | .backlog-issue { 2 | display: flex; 3 | 4 | .backlog-left { 5 | flex: 3; 6 | margin-right: 6px; 7 | } 8 | 9 | .backlog-right { 10 | flex: 2; 11 | margin-left: 6px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/backlog/iterations.scss: -------------------------------------------------------------------------------- 1 | .backlog-iterations { 2 | &-title { 3 | display: flex; 4 | align-items: center; 5 | height: 32px; 6 | } 7 | 8 | .backlog-iteration-content { 9 | position: relative; 10 | flex: 1; 11 | height: 0; 12 | overflow: auto; 13 | } 14 | 15 | .backlog-iterations-empty-holder { 16 | position: absolute; 17 | top: 0; 18 | bottom: 0; 19 | display: flex; 20 | flex-direction: column; 21 | justify-content: center; 22 | align-items: center; 23 | height: 406px; 24 | margin: auto; 25 | padding-right: 40px; 26 | padding-left: 40px; 27 | 28 | img { 29 | width: 200px; 30 | height: 200px; 31 | } 32 | 33 | .desc { 34 | min-height: 160px; 35 | line-height: 26px; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/deploy/add-deploy/add-release.scss: -------------------------------------------------------------------------------- 1 | .project-deploy-add-release { 2 | height: 70vh; 3 | 4 | .ant-dropdown-menu-item { 5 | cursor: auto; 6 | 7 | &:hover { 8 | background: transparent; 9 | } 10 | } 11 | 12 | .load-more-selector { 13 | .results { 14 | padding: 0; 15 | border: 0; 16 | min-height: 30px; 17 | > div { 18 | line-height: 30px !important; 19 | height: 30px !important; 20 | } 21 | 22 | &:hover { 23 | box-shadow: unset; 24 | } 25 | 26 | .values, 27 | .value-item { 28 | width: 100%; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/deploy/index.scss: -------------------------------------------------------------------------------- 1 | .project-deploy-orders { 2 | .ant-spin-container { 3 | overflow-y: auto; 4 | padding: 0 12px; 5 | overflow-x: hidden; 6 | } 7 | .ant-timeline-item-head { 8 | background-color: transparent; 9 | } 10 | .ant-timeline-item .ant-timeline-item-content { 11 | margin: 0 0 0 16px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/issue/component/table-view.scss: -------------------------------------------------------------------------------- 1 | .issue-table-view { 2 | .title { 3 | min-width: 400px; 4 | } 5 | } 6 | 7 | .issue-member-selector { 8 | .results { 9 | padding: 4px 0; 10 | border: 0; 11 | 12 | &:hover { 13 | border: 0; 14 | box-shadow: unset; 15 | } 16 | } 17 | } 18 | 19 | .issue-field-selector { 20 | .arrow-icon { 21 | color: $color-text-icon; 22 | } 23 | 24 | &:hover { 25 | .arrow-icon { 26 | color: $color-primary; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/issue/import-export.scss: -------------------------------------------------------------------------------- 1 | .import-export-modal { 2 | .ant-modal-header { 3 | padding: 0; 4 | } 5 | 6 | .ant-modal-body { 7 | padding: 0 16px; 8 | max-height: 80vh; 9 | display: flex; 10 | } 11 | 12 | .issue-import-upload { 13 | .ant-upload-list-item:hover .ant-upload-list-item-info { 14 | background-color: transparent; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/milestone/index.scss: -------------------------------------------------------------------------------- 1 | .project-milestone { 2 | .search-container { 3 | display: flex; 4 | padding: $p8; 5 | border-radius: $p4; 6 | 7 | .milestone-date-picker { 8 | margin-right: $p16; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/milestone/milestone-group.scss: -------------------------------------------------------------------------------- 1 | .milestone-drag-over { 2 | border: 1px solid $color-active; 3 | border-radius: $p4; 4 | } 5 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/milestone/milestone-item.scss: -------------------------------------------------------------------------------- 1 | .milestone-info-card { 2 | &.dragging { 3 | background: repeating-linear-gradient( 4 | 45deg, 5 | $color-dark-06, 6 | $color-dark-06 2px, 7 | $color-white-8 0, 8 | $color-white-8 8px 9 | ); 10 | cursor: move; 11 | 12 | .milestone-info-card-content { 13 | background: transparent; 14 | opacity: 0; 15 | } 16 | } 17 | 18 | .milestone-title { 19 | display: flex; 20 | align-items: center; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/milestone/milestone-table.scss: -------------------------------------------------------------------------------- 1 | .milestone-timeline-container { 2 | margin-top: 20px; 3 | 4 | .milestone-module { 5 | padding: 18px 18px 8px; 6 | 7 | .ant-card { 8 | margin-bottom: 10px; 9 | border: none; 10 | @extend %shallow-shadow; 11 | 12 | &:hover { 13 | @extend %hover-shadow; 14 | } 15 | 16 | .milestone-item-container { 17 | display: flex; 18 | justify-content: space-between; 19 | align-items: center; 20 | 21 | .milestone-item { 22 | display: flex; 23 | text-align: left; 24 | } 25 | 26 | .ant-progress { 27 | width: 80px; 28 | } 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/plan-detail/case-import-button/index.scss: -------------------------------------------------------------------------------- 1 | .case-import-content { 2 | display: flex; 3 | 4 | .left { 5 | position: relative; 6 | width: 28%; 7 | margin-right: 2%; 8 | } 9 | 10 | .right { 11 | width: 70%; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/plan-detail/report/index.scss: -------------------------------------------------------------------------------- 1 | .report-page { 2 | .section-title { 3 | border-bottom: 1px solid $color-border; 4 | } 5 | 6 | .sub-section-title { 7 | margin-top: 24px; 8 | margin-bottom: 12px; 9 | font-weight: 500; 10 | font-size: 16px; 11 | line-height: 38px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/plan-detail/test-record/build-history.scss: -------------------------------------------------------------------------------- 1 | .build-history-wp { 2 | .active-tr { 3 | td { 4 | background-color: $color-active-bg; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/release/application.scss: -------------------------------------------------------------------------------- 1 | .release-app-list { 2 | border-right: 1px solid $color-default-1; 3 | 4 | @media screen and (max-width: 1440px) { 5 | width: 240px; 6 | } 7 | @media screen and (min-width: 1441px) and (max-width: 2560px) { 8 | width: 360px; 9 | } 10 | @media screen and (min-width: 2561px) { 11 | width: 480px; 12 | } 13 | } 14 | 15 | .release-right { 16 | .full-spin-height { 17 | height: calc(100% - 40px); 18 | } 19 | 20 | .dice-cp.container { 21 | height: 100%; 22 | 23 | & > div { 24 | height: 100%; 25 | } 26 | } 27 | 28 | .erda-table { 29 | display: flex; 30 | flex-direction: column; 31 | height: 100%; 32 | 33 | .ant-table-wrapper { 34 | flex: 1; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/release/components/addon.scss: -------------------------------------------------------------------------------- 1 | .addon-item { 2 | min-width: 260px; 3 | height: 86px; 4 | background: $white; 5 | border-radius: $radius; 6 | @extend %shallow-shadow; 7 | 8 | &:hover { 9 | @extend %hover-shadow; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/resource/components/resource.scss: -------------------------------------------------------------------------------- 1 | .project-resource { 2 | .path-breadcrumb { 3 | display: inline-block; 4 | padding-bottom: 20px; 5 | } 6 | 7 | .project-resource-time { 8 | margin-top: 24px; 9 | margin-bottom: 12px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/resource/index.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import ProjectResource from './components/resource'; 15 | 16 | export default ProjectResource; 17 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/settings/index.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import ProjectSettings from './components/project-settings'; 15 | 16 | export default ProjectSettings; 17 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-env/test-env.scss: -------------------------------------------------------------------------------- 1 | .test-env-list { 2 | li { 3 | height: 42px; 4 | padding: 0 12px; 5 | border-right: 2px solid transparent; 6 | cursor: pointer; 7 | 8 | &.active { 9 | background-color: $color-active-bg; 10 | border-right-color: $color-primary; 11 | } 12 | 13 | &:hover { 14 | background-color: $color-active-bg; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/case/case-drawer/case-step.scss: -------------------------------------------------------------------------------- 1 | .case-step-list { 2 | border: 1px solid $color-border; 3 | border-radius: $radius; 4 | 5 | .case-step { 6 | padding: 1px 0; 7 | 8 | &:not(:last-child) { 9 | border-bottom: 1px solid $color-border; 10 | } 11 | 12 | textarea { 13 | color: $color-text; 14 | border: none; 15 | box-shadow: none; 16 | resize: none; 17 | } 18 | } 19 | 20 | .delete-icon { 21 | margin: 6px; 22 | color: $color-text-desc; 23 | font-size: 18px; 24 | } 25 | 26 | .result-detail { 27 | padding-left: 28px; 28 | 29 | textarea { 30 | color: $color-text-sub; 31 | resize: none; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/case/case-drawer/content-panel.scss: -------------------------------------------------------------------------------- 1 | .content-panel { 2 | & + & { 3 | margin-top: 32px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/case/case-drawer/related-bugs.scss: -------------------------------------------------------------------------------- 1 | .related-bugs { 2 | .filter-select-wrap { 3 | .filter-select { 4 | width: 170px; 5 | } 6 | } 7 | 8 | .priority-icon { 9 | width: 18px; 10 | height: 18px; 11 | vertical-align: sub; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/case/import-export.scss: -------------------------------------------------------------------------------- 1 | .test-manage-import-export-modal { 2 | .ant-modal-header { 3 | padding: 0; 4 | } 5 | 6 | .ant-modal-body { 7 | padding: 0 16px; 8 | max-height: 80vh; 9 | display: flex; 10 | } 11 | 12 | .issue-import-upload { 13 | .ant-upload-list-item:hover .ant-upload-list-item-info { 14 | background-color: transparent; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/case/manual-test.scss: -------------------------------------------------------------------------------- 1 | .test-case-page { 2 | display: flex; 3 | padding-top: 12px; 4 | } 5 | 6 | .filter-group-drawer { 7 | .member-selector { 8 | background: $white; 9 | 10 | .results { 11 | border-color: $color-border; 12 | &:hover { 13 | border-color: $color-primary; 14 | box-shadow: none; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-manage/components/case-table/all-checkbox/index.scss: -------------------------------------------------------------------------------- 1 | .test-manage-all-checkbox { 2 | :global { 3 | .ant-checkbox-indeterminate .ant-checkbox-inner:after { 4 | transform: translate(-50%, -50%) scale(1) !important; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/test-plan/test-plan.scss: -------------------------------------------------------------------------------- 1 | .test-plan-list { 2 | td.passing-rate { 3 | .sub { 4 | display: flex; 5 | align-items: center; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shell/app/modules/project/pages/third-service/components/addon-modal.scss: -------------------------------------------------------------------------------- 1 | .third-addon-modal { 2 | .footer { 3 | padding-top: 10px; 4 | 5 | button { 6 | margin-left: 5px; 7 | } 8 | 9 | text-align: right; 10 | } 11 | 12 | .secondary-title { 13 | margin: 0; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/app/modules/publisher/pages/artifacts/artifacts-detail.scss: -------------------------------------------------------------------------------- 1 | .artifacts-detail { 2 | height: 100%; 3 | overflow: hidden; 4 | } 5 | 6 | .artifacts-content { 7 | flex: 1; 8 | padding: 12px; 9 | overflow: auto; 10 | background-color: $white; 11 | border-radius: 2px; 12 | 13 | &.bg-gray { 14 | padding: unset; 15 | background-color: $color-bg; 16 | 17 | > div { 18 | padding: 10px 32px 20px; 19 | } 20 | } 21 | 22 | .image-list { 23 | margin-bottom: 0; 24 | 25 | .image-item { 26 | padding: 5px 0; 27 | line-height: 20px; 28 | } 29 | 30 | li { 31 | overflow-x: auto; 32 | 33 | &:hover { 34 | background-color: $color-hover; 35 | } 36 | } 37 | } 38 | 39 | .file-container { 40 | margin-top: 30px; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /shell/app/modules/publisher/pages/publisher-manage/publisher-setting.scss: -------------------------------------------------------------------------------- 1 | .publisher-settings-main { 2 | .panel-title { 3 | margin-bottom: 19px; 4 | color: $color-text; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/common/logs/components/container-log.scss: -------------------------------------------------------------------------------- 1 | .container-log-item { 2 | span { 3 | display: inline-block; 4 | } 5 | 6 | a { 7 | span { 8 | margin-right: unset; 9 | } 10 | color: $orange; 11 | } 12 | 13 | pre { 14 | display: inline; 15 | margin-right: 0; 16 | overflow: visible; 17 | } 18 | 19 | .log-item-logtime { 20 | width: 200px; 21 | color: $green; 22 | vertical-align: top; 23 | } 24 | 25 | .log-item-level { 26 | width: 60px; 27 | color: #add8e6; 28 | 29 | &.warn { 30 | color: $color-warning; 31 | } 32 | 33 | &.error { 34 | color: $color-danger; 35 | } 36 | } 37 | 38 | ::selection { 39 | color: $white; 40 | background: $green; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/components/activity.scss: -------------------------------------------------------------------------------- 1 | .runtime-activity { 2 | .deployment-card { 3 | position: relative; 4 | //display: flex; 5 | min-height: 74px; 6 | padding: 12px; 7 | background-color: $white; 8 | border-bottom: 1px solid $color-border; 9 | 10 | &:last-child { 11 | border-bottom: unset; 12 | border-bottom-right-radius: $radius; 13 | border-bottom-left-radius: $radius; 14 | } 15 | 16 | &:first-child { 17 | border-top-left-radius: $radius; 18 | border-top-right-radius: $radius; 19 | } 20 | 21 | .status { 22 | color: $color-text-desc; 23 | } 24 | 25 | .extra-items { 26 | color: $color-dark-4; 27 | 28 | i { 29 | margin-right: 0; 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/components/elastic-scaling.scss: -------------------------------------------------------------------------------- 1 | .replicas-count { 2 | .ant-formily-item { 3 | margin-bottom: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/components/index.scss: -------------------------------------------------------------------------------- 1 | .runtime-overview { 2 | .overview-body-block { 3 | margin-bottom: $p20; 4 | } 5 | 6 | .overview-body-title { 7 | margin-bottom: $p12; 8 | color: $color-text; 9 | font-size: 18px; 10 | line-height: 26px; 11 | } 12 | 13 | .open-activity { 14 | position: absolute; 15 | top: 0; 16 | right: $p16; 17 | 18 | button { 19 | box-shadow: 0 2px 6px $darkgray; 20 | } 21 | } 22 | 23 | .runtime-deploy-logs { 24 | .ant-timeline { 25 | padding: 16px; 26 | background-color: $white; 27 | border-radius: $radius; 28 | } 29 | } 30 | } 31 | 32 | .redeploy-tip-btn { 33 | color: $color-primary; 34 | cursor: pointer; 35 | } 36 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/components/resource-modal.scss: -------------------------------------------------------------------------------- 1 | .adjust-resource { 2 | .ant-form { 3 | display: flex; 4 | margin-bottom: 20px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/components/service-dropdown.scss: -------------------------------------------------------------------------------- 1 | .modal-info { 2 | .ant-modal-confirm-content { 3 | margin-left: unset; 4 | } 5 | 6 | .ant-list-item { 7 | padding: $p8 0; 8 | } 9 | 10 | .ant-modal-confirm-body > .anticon { 11 | display: none; 12 | } 13 | 14 | .ant-list-item-content-single { 15 | justify-content: space-between; 16 | padding: 0 $p8; 17 | } 18 | 19 | .copy-icon { 20 | font-size: 16px; 21 | } 22 | 23 | .vip-addr { 24 | word-break: break-all; 25 | } 26 | 27 | .env-list { 28 | .env-item { 29 | word-break: break-all; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /shell/app/modules/runtime/pages/overview/index.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import OverView from './containers'; 15 | 16 | export default OverView; 17 | -------------------------------------------------------------------------------- /shell/app/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/favicon.ico -------------------------------------------------------------------------------- /shell/app/static/roboto-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/roboto-regular.ttf -------------------------------------------------------------------------------- /shell/app/static/usecase_model_en.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/usecase_model_en.xlsx -------------------------------------------------------------------------------- /shell/app/static/usecase_model_en.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/usecase_model_en.xmind -------------------------------------------------------------------------------- /shell/app/static/usecase_model_zh.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/usecase_model_zh.xlsx -------------------------------------------------------------------------------- /shell/app/static/usecase_model_zh.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erda-project/erda-ui/ec3b437ea40569bb2856310997b4b11ceece1f21/shell/app/static/usecase_model_zh.xmind -------------------------------------------------------------------------------- /shell/app/styles/_variable.scss: -------------------------------------------------------------------------------- 1 | // same with antd 2 | $base-line-height: 32px; 3 | $sm-line-height: 28px; 4 | $lg-line-height: 36px; 5 | 6 | // 圆角 7 | $radius: 3px; 8 | $border-radius: 3px; 9 | $radius-lg: 6px; 10 | 11 | // 间距 12 | $p4: 4px; 13 | $p8: 8px; 14 | $p12: 12px; 15 | $p16: 16px; 16 | $p20: 20px; 17 | $p24: 24px; 18 | $p28: 28px; 19 | $p32: 32px; 20 | 21 | // 响应式边距 breakpoint 22 | $b32: 32px; 23 | $b16: 16px; 24 | 25 | // 布局 26 | $nav-width: 56px; 27 | $sidebar-width: 184px; 28 | $subsider-fold-width: 56px; 29 | $sm-content-break-width: 600px; 30 | $md-content-break-width: 1024px; 31 | $lg-content-break-width: 1440px; 32 | $breadcrumb-height: 36px; 33 | 34 | $main-padding-break: 1272px; 35 | -------------------------------------------------------------------------------- /shell/app/themes/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | import * as diceTheme from './dice'; 15 | 16 | export const theme = diceTheme; 17 | -------------------------------------------------------------------------------- /shell/app/user/common/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export { WithAuth, usePerm, getAuth, isCreator, isAssignee } from './with-auth'; 15 | export { connectUser } from './connect-user'; 16 | -------------------------------------------------------------------------------- /shell/app/user/common/perm-editor/perm-export.scss: -------------------------------------------------------------------------------- 1 | .dice-perm-export-data { 2 | align-items: unset; 3 | } 4 | 5 | .dice-perm-export-pre { 6 | flex: 1 0 auto; 7 | width: 100%; 8 | min-height: 300px; 9 | padding: 16px; 10 | background-color: $color-dark-06; 11 | border: none; 12 | border-radius: $radius; 13 | outline: 0; 14 | 15 | &:focus { 16 | outline: 0; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/yml-chart/chart/index.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export { YmlChart } from './yml-chart'; 15 | export { externalKey, CHART_CONFIG, NodeType } from './config'; 16 | -------------------------------------------------------------------------------- /shell/app/yml-chart/chart/yml-chart.scss: -------------------------------------------------------------------------------- 1 | .yml-svg-container-box { 2 | overflow-x: auto; 3 | overflow-y: hidden; 4 | background-repeat: repeat; 5 | background-size: 100%; 6 | } 7 | 8 | .yml-svg-container { 9 | position: relative; 10 | min-width: 100%; 11 | min-height: 100%; 12 | 13 | &.editing { 14 | min-height: calc(100% - 210px); 15 | } 16 | 17 | .svg-model-node-carrier { 18 | overflow: visible; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /shell/app/yml-chart/common/in-params-drawer.scss: -------------------------------------------------------------------------------- 1 | .pipeline-in-params-drawer { 2 | .ant-drawer-body { 3 | padding-bottom: 50px; 4 | } 5 | 6 | &-footer { 7 | position: absolute; 8 | right: 0; 9 | bottom: 0; 10 | width: 100%; 11 | padding: 8px 16px; 12 | text-align: left; 13 | background-color: $white; 14 | border-top: 1px solid $color-border; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /shell/app/yml-chart/common/pipeline-node-drawer.scss: -------------------------------------------------------------------------------- 1 | .yml-node-drawer { 2 | .ant-drawer-body { 3 | overflow: auto; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /shell/app/yml-chart/nodes/add-node.scss: -------------------------------------------------------------------------------- 1 | .yml-chart-node { 2 | &.add-node { 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | width: 100%; 8 | height: 100%; 9 | color: $color-text-sub; 10 | background-color: $white; 11 | border-radius: $radius; 12 | cursor: pointer; 13 | @extend %shallow-shadow; 14 | 15 | &:hover { 16 | @extend %hover-shadow; 17 | color: $color-primary; 18 | } 19 | 20 | .add-icon { 21 | margin-right: 0; 22 | font-size: 40px; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /shell/app/yml-chart/nodes/add-row.scss: -------------------------------------------------------------------------------- 1 | .yml-chart-node { 2 | &.add-line { 3 | width: 100%; 4 | height: 100%; 5 | color: $lightgray; 6 | font-size: 24px; 7 | line-height: 14px; 8 | text-align: center; 9 | border: 1px solid $lightgray; 10 | border-radius: 100%; 11 | cursor: pointer; 12 | 13 | &:hover { 14 | color: $color-primary; 15 | border: 1px solid $color-primary; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell/app/yml-chart/nodes/end-node.scss: -------------------------------------------------------------------------------- 1 | .yml-chart-node { 2 | &.end-node { 3 | width: 100%; 4 | height: 100%; 5 | background-color: $white; 6 | border: 1px solid $color-border; 7 | border-radius: 100px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/yml-chart/nodes/start-node.scss: -------------------------------------------------------------------------------- 1 | .yml-chart-node { 2 | &.start-node { 3 | width: 100%; 4 | height: 100%; 5 | background-color: $white; 6 | border: 1px solid $color-border; 7 | border-radius: 100px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /shell/app/yml-chart/pipeline-editor.scss: -------------------------------------------------------------------------------- 1 | .pipeline-yml-editor { 2 | .file-content { 3 | flex: 1; 4 | } 5 | 6 | .commit-file-form { 7 | padding: 16px 16px 0 16px; 8 | border-top: 1px solid $color-border; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/auto_test/util.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Terminus, Inc. 2 | // 3 | // This program is free software: you can use, redistribute, and/or modify 4 | // it under the terms of the GNU Affero General Public License, version 3 5 | // or later ("AGPL"), as published by the Free Software Foundation. 6 | // 7 | // This program is distributed in the hope that it will be useful, but WITHOUT 8 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9 | // FITNESS FOR A PARTICULAR PURPOSE. 10 | // 11 | // You should have received a copy of the GNU Affero General Public License 12 | // along with this program. If not, see . 13 | 14 | export const wait = (second: number) => 15 | new Promise((re) => { 16 | setTimeout(re, second); 17 | }); 18 | -------------------------------------------------------------------------------- /shell/tools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "removeComments": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "allowSyntheticDefaultImports": true, 9 | "target": "ESNEXT", 10 | "outDir": "./dist", 11 | "baseUrl": "./", 12 | "skipLibCheck": true, 13 | "esModuleInterop": true 14 | }, 15 | "include": ["./**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /shell/tsconfig-jest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig-webpack.json", 3 | "compilerOptions": { 4 | "composite": true, 5 | "target": "ES2019", 6 | "module": "ESNext", 7 | "lib": ["dom", "esnext"], 8 | "allowJs": true, 9 | "checkJs": false, 10 | "jsx": "react", 11 | "declaration": true, 12 | "sourceMap": true, 13 | "incremental": true, 14 | "strict": false, 15 | "noImplicitAny": true, 16 | "noUnusedLocals": true, 17 | "noUnusedParameters": true, 18 | "noImplicitReturns": true, 19 | "moduleResolution": "node", 20 | "esModuleInterop": true, 21 | "strict": false, 22 | "skipLibCheck": false 23 | } 24 | } 25 | --------------------------------------------------------------------------------