diff --git a/deploy/openubmc/Dockerfile b/deploy/openubmc/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..2fa003bd8a7c09994d57985fa7592b4f2b54eea9
--- /dev/null
+++ b/deploy/openubmc/Dockerfile
@@ -0,0 +1,160 @@
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/node:latest as Builder
+
+RUN mkdir -p /home/openubmc-datastat/web
+WORKDIR /home/openubmc-datastat/web
+COPY . /home/openubmc-datastat/web
+
+RUN npm install pnpm -g
+
+RUN pnpm install
+RUN pnpm build:openubmc
+
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/nginx:latest as NginxBuilder
+
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/base:latest
+
+ENV NGINX_CONFIG_FILE /etc/nginx/nginx.conf
+ENV NGINX_CONFIG_PATH /etc/nginx/
+ENV NGINX_PID /var/run/nginx.pid
+ENV NGINX_USER nginx
+ENV NGINX_GROUP nginx
+ENV NGINX_BIN /usr/share/nginx/sbin/
+ENV NGINX_HOME /usr/share/nginx/
+ENV NGINX_EXE_FILE /usr/share/nginx/sbin/nginx
+ENV DST_PATH /etc/nginx/cert
+
+COPY --from=NginxBuilder /usr/share/nginx /usr/share/nginx
+COPY --from=NginxBuilder /usr/share/nginx/sbin/nginx /usr/share/nginx/sbin/nginx
+COPY --from=NginxBuilder /etc/nginx/modules /etc/nginx/modules
+COPY --from=NginxBuilder /etc/nginx/geoip /etc/nginx/geoip
+COPY --from=NginxBuilder /etc/nginx/mime.types /etc/nginx/mime.types
+COPY --from=Builder /home/openubmc-datastat/web/dist/openubmc /usr/share/nginx/www/
+COPY ./deploy/monitor.sh ./deploy/entrypoint.sh /etc/nginx/
+COPY ./deploy/openubmc/nginx.conf /etc/nginx/nginx.conf.template
+
+RUN sed -i "s|repo.openeuler.org|mirrors.nju.edu.cn/openeuler|g" /etc/yum.repos.d/openEuler.repo \
+ && sed -i '/metalink/d' /etc/yum.repos.d/openEuler.repo \
+ && sed -i '/metadata_expire/d' /etc/yum.repos.d/openEuler.repo \
+ && yum update -y \
+ && yum install -y findutils passwd shadow pcre-devel net-tools libmaxminddb libmaxminddb-devel \
+ && find /usr/share/nginx/www -type d -print0| xargs -0 chmod 500 \
+ && find /usr/share/nginx/www -type f -print0| xargs -0 chmod 400 \
+ && touch /var/run/nginx.pid \
+ && groupadd -g 1000 nginx \
+ && useradd -u 1000 -g nginx -s /sbin/nologin nginx \
+ && sed -i '/^PATH="\$HOME\/\.local\/bin:\$HOME\/bin:\$PATH"/d; /^export PATH/d' /home/nginx/.bashrc \
+ && chmod 750 /usr \
+ && chmod 550 /usr/share \
+ && chown -R nginx:nginx /usr/share/nginx \
+ && find /usr/share/nginx -type d -print0 | xargs -0 chmod 500 \
+ && chmod 500 /usr/share/nginx/sbin/nginx \
+ && mkdir -p /var/log/nginx \
+ && mkdir -p /etc/nginx/cert \
+ && chown -R nginx:nginx /etc/nginx/cert \
+ && chmod -R 700 /etc/nginx/cert \
+ && chown -R nginx:nginx /var/log/nginx \
+ && chmod -R 640 /var/log/nginx \
+ && touch /var/log/nginx/error.log \
+ && touch /var/log/nginx/access.log \
+ && chmod 640 /var/log/nginx/error.log \
+ && chmod 640 /var/log/nginx/access.log \
+ && chmod 640 /var/log/dnf.librepo.log \
+ && chmod 640 /var/log/dnf.log \
+ && chmod 640 /var/log/dnf.rpm.log \
+ && chmod 640 /var/log/hawkey.log \
+ && chmod 640 /var/log/*.log \
+ && chmod 440 /etc/nginx/nginx*.conf* \
+ && chown -R nginx:nginx /var/log/nginx/* \
+ && mkdir -p /var/lib/nginx/tmp/client_body \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/client_body \
+ && mkdir -p /var/lib/nginx/tmp/fastcgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/fastcgi \
+ && mkdir -p /var/lib/nginx/tmp/proxy \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/proxy \
+ && mkdir -p /var/lib/nginx/tmp/scgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/scgi \
+ && mkdir -p /var/lib/nginx/tmp/uwsgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/uwsgi \
+ && chmod -R 500 /var/lib/nginx/ \
+ && chmod -R 750 /var/lib/nginx/tmp/proxy \
+ && chown -R nginx:nginx /var/lib/nginx/ \
+ && chown -R nginx:nginx /var/run/nginx.pid \
+ && chmod 640 /var/run/nginx.pid \
+ && chown -R nginx:nginx /etc/nginx \
+ && chmod 550 /etc/nginx \
+ && chmod 550 /etc/nginx/geoip/ \
+ && chmod 440 /etc/nginx/geoip/* \
+ && chmod 550 /etc/nginx/modules \
+ && chmod 440 /etc/nginx/modules/* \
+ && touch /etc/nginx/nginx.conf \
+ && chown nginx:nginx /etc/nginx/nginx.conf \
+ && chmod 640 /etc/nginx/nginx.conf \
+ && chmod 640 /etc/nginx/nginx.conf.template \
+ && chmod 440 /etc/nginx/mime.types \
+ && chmod 700 /var/lib/nginx/tmp/client_body \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld "$v"; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chown root:root "$v"; \
+ done; \
+ }; lsd "$NGINX_HOME" \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld $v; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chmod 550 "$v"; \
+ done; \
+ }; lsd $NGINX_HOME \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld $v; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chown $NGINX_USER:$NGINX_GROUP "$v"; \
+ done; \
+ }; lsd $NGINX_HOME \
+ && rm -rf /usr/share/nginx/html/ \
+ && rm -rf /usr/share/nginx/logs/ \
+ && echo "umask 0027" >> /etc/bashrc \
+ && echo "set +o history" >> /etc/bashrc \
+ && sed -i "s|HISTSIZE=1000|HISTSIZE=0|" /etc/profile \
+ && sed -i "s/PASS_MAX_DAYS.*/PASS_MAX_DAYS 30/" /etc/login.defs \
+ && echo "ALWAYS_SET_PATH yes" >> /etc/login.defs \
+ && chage --maxdays 30 nginx \
+ && passwd -l $NGINX_USER \
+ && yum clean all \
+ && usermod -s /sbin/nologin sync \
+ && usermod -s /sbin/nologin shutdown \
+ && usermod -s /sbin/nologin halt \
+ && echo "export TMOUT=1800 readonly TMOUT" >> /etc/profile \
+ && rm -rf /usr/bin/gdb* \
+ && rm -rf /usr/share/gdb \
+ && rm -rf /usr/share/gcc* \
+ && rm -rf /usr/lib64/python3.11/bdb.py \
+ && rm -rf /usr/lib64/python3.11/pdb.py \
+ && rm -rf /usr/lib64/python3.11/timeit.py \
+ && rm -rf /usr/lib64/python3.11/trace.py \
+ && rm -rf /usr/lib64/python3.11/tracemalloc.py \
+ && rm -rf /usr/share/licenses/glibc \
+ && rm -rf /usr/share/locale/ar \
+ && rm -rf /usr/share/locale/cpp \
+ && yum remove gdb-gdbserver findutils passwd shadow -y
+
+RUN chmod 500 /etc/nginx/monitor.sh \
+ && chmod 500 /etc/nginx/entrypoint.sh \
+ && chown nginx:nginx /etc/nginx/monitor.sh \
+ && chown nginx:nginx /etc/nginx/entrypoint.sh \
+ && sed -i "/PATH=/d" /home/nginx/.bashrc \
+ && source /home/nginx/.bashrc
+
+EXPOSE 8080
+
+USER nginx
+
+ENTRYPOINT ["/etc/nginx/entrypoint.sh"]
\ No newline at end of file
diff --git a/deploy/openubmc/nginx.conf b/deploy/openubmc/nginx.conf
new file mode 100644
index 0000000000000000000000000000000000000000..4f81fe66b32f5a21583d468577133c0fab696769
--- /dev/null
+++ b/deploy/openubmc/nginx.conf
@@ -0,0 +1,152 @@
+user $NGINX_USER;
+error_log /dev/stdout info;
+pid /var/run/nginx.pid;
+worker_processes auto;
+worker_rlimit_nofile 65535;
+events {
+ use epoll;
+ worker_connections 65535;
+}
+
+http {
+ include /etc/nginx/mime.types;
+
+ log_format main '[$time_local] remote_addr: $http_x_real_ip, request: "$request", '
+ 'status: $status, body_bytes_sent: $body_bytes_sent, http_referer: "$http_referer", '
+ 'http_user_agent: "$http_user_agent"';
+
+ access_log /dev/stdout main;
+
+ server_tokens off;
+ autoindex off;
+
+ port_in_redirect off;
+ absolute_redirect off;
+
+ client_header_buffer_size 1k;
+ large_client_header_buffers 4 8k;
+ client_body_buffer_size 16k;
+ client_max_body_size 50m;
+
+ client_header_timeout 10;
+ client_body_timeout 10;
+ client_body_in_file_only off;
+ keepalive_timeout 10 30;
+ send_timeout 10;
+
+ proxy_hide_header X-Powered-By;
+
+ limit_conn_zone $http_x_real_ip zone=limitperip:10m;
+ limit_req_zone $http_x_real_ip zone=frontendratelimit:10m rate=2000r/s;
+ limit_req_zone $http_x_real_ip zone=ratelimit:10m rate=200r/s;
+ underscores_in_headers on;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_comp_level 5;
+ gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php application/json;
+ gzip_vary on;
+
+ server {
+ listen ${LOCAL_IP}:8080 ssl;
+ server_name datastat.openeuler.org;
+ charset utf-8;
+ limit_conn limitperip 10;
+ ssl_session_tickets off;
+ ssl_session_timeout 10s;
+ ssl_session_cache shared:SSL:10m;
+
+ ssl_certificate "cert/server.crt";
+ ssl_certificate_key "cert/server.key";
+ ssl_password_file "cert/abc.txt";
+ ssl_dhparam "cert/dhparam.pem";
+ ssl_ecdh_curve auto;
+ ssl_protocols TLSv1.2 TLSv1.3;
+ ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384";
+ ssl_prefer_server_ciphers on;
+ ssl_stapling on;
+ ssl_stapling_verify on;
+ resolver 8.8.8.8 8.8.4.4 valid=60s;
+ resolver_timeout 5s;
+
+ if ($request_method !~ ^(GET|POST)$) {
+ return 444;
+ }
+
+ location ~ /\. {
+ deny all;
+ return 404;
+ }
+ location / {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+ proxy_set_header Host $host;
+
+ add_header X-XSS-Protection "1;mode=block";
+ add_header X-Content-Type-Options nosniff;
+ add_header X-Frame-Options DENY;
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
+ add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; frame-src 'none'";
+ add_header Cache-Control "no-cache, no-store, must-revalidate";
+ add_header Pragma no-cache;
+ add_header Expires 0;
+
+ location /assets {
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Frame-Options DENY;
+ add_header X-Content-Type-Options nosniff;
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
+ add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; frame-src 'none'";
+ add_header Cache-Control "public,max-age=1209600";
+ }
+
+ root /usr/share/nginx/www;
+ index index.html;
+ try_files $uri /index.html;
+ }
+
+ location /api-id/ {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+
+ add_header X-XSS-Protection "1;mode=block";
+ add_header X-Content-Type-Options nosniff;
+ add_header X-Frame-Options DENY;
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
+ add_header Cache-Control "no-cache, no-store, must-revalidate";
+ add_header Pragma no-cache;
+ add_header Expires 0;
+
+ proxy_pass https://usercenter.openubmc.cn/;
+ }
+
+ location /query/ {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+
+ proxy_pass https://dsapi.osinfra.cn/query/;
+ }
+
+ location /api-magic/ {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+
+ proxy_pass https://magicapi-plus.osinfra.cn/;
+ }
+
+ location /api-dsapi/ {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+
+ proxy_pass https://dsapi.osinfra.cn/;
+ }
+
+ error_page 401 402 403 405 406 407 413 414 /error.html;
+ error_page 500 501 502 503 504 505 /error.html;
+ error_page 404 /404.html;
+
+ location = /error.html {
+ root /usr/share/nginx/www;
+ }
+
+ location = /404.html {
+ root /usr/share/nginx/www;
+ }
+ }
+}
diff --git a/package.json b/package.json
index 0f4f8b5e04ef04b57593e351211c2e418b1cae60..356a2cb6a4eaf8d77a2a8d3fd8ea5def3d2730be 100644
--- a/package.json
+++ b/package.json
@@ -8,11 +8,13 @@
"dev:harmony": "pnpm --filter harmony dev",
"dev:lookeng": "pnpm --filter lookeng dev",
"dev:mindspore": "pnpm --filter mindspore dev",
+ "dev:openubmc": "pnpm --filter openubmc dev",
"build:euler": "pnpm --filter euler build",
"build:gauss": "pnpm --filter gauss build",
"build:harmony": "pnpm --filter harmony build",
"build:lookeng": "pnpm --filter lookeng build",
"build:mindspore": "pnpm --filter mindspore build",
+ "build:openubmc": "pnpm --filter openubmc build",
"build": "pnpm build:euler && pnpm build:gauss && pnpm build:lookeng && pnpm build:mindspore && pnpm build:harmony",
"lint:euler": "eslint \"packages/euler/src/**/*.{js,ts,vue,jsx,tsx}\"",
"fix:euler": "eslint --fix \"packages/euler/src/**/*.{js,ts,vue,jsx,tsx}\"",
@@ -24,8 +26,10 @@
"dependencies": {
"@element-plus/icons-vue": "^2.0.4",
"@opensig/open-analytics": "^0.0.9",
+ "@opensig/opendesign": "^1.0.1",
"@types/d3": "^7.4.0",
- "axios": "^1.8.2",
+ "@vueuse/core": "^13.9.0",
+ "axios": "^1.12.0",
"d3": "^7.4.4",
"echarts": "^5.3.2",
"element-plus": "^2.1.4",
@@ -35,15 +39,16 @@
"normalize.css": "^8.0.1",
"pinia": "^2.0.11",
"swiper": "^8.0.7",
- "vue": "^3.2.25",
- "vue-i18n": "^9.14.3",
- "vue-router": "^4.0.13"
+ "unplugin-icons": "22.2.0",
+ "vue": "^3.5.20",
+ "vue-i18n": "^9.14.5",
+ "vue-router": "^4.5.1"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.10.5",
"@types/js-cookie": "^3.0.6",
"@types/lodash-es": "^4.17.6",
- "@types/node": "^17.0.21",
+ "@types/node": "^22.0.0",
"@vitejs/plugin-vue": "^4.6.2",
"@vitejs/plugin-vue-jsx": "^4.1.1",
"@vue/eslint-config-prettier": "^10.2.0",
diff --git a/packages/euler/package.json b/packages/euler/package.json
index 96bf8d278bdff83d324e119a0dc9544a1d8ea8f9..1b6e28a05a1779ac197947c3aed7ef1255e9a74a 100644
--- a/packages/euler/package.json
+++ b/packages/euler/package.json
@@ -8,7 +8,6 @@
},
"dependencies": {
"@opensig/opendesign": "0.0.65",
- "shared": "workspace:^",
- "unplugin-icons": "^0.14.0"
+ "shared": "workspace:^"
}
}
diff --git a/packages/gauss/package.json b/packages/gauss/package.json
index ae0b47168b6feec6613c78c6aee94e8c77ec188a..f46729221ce60a81f0b40ff09c4cfd23a02106db 100644
--- a/packages/gauss/package.json
+++ b/packages/gauss/package.json
@@ -7,7 +7,6 @@
"build": "vue-tsc --noEmit && vite build"
},
"dependencies": {
- "shared": "workspace:^",
- "unplugin-icons": "^0.14.0"
+ "shared": "workspace:^"
}
}
diff --git a/packages/harmony/package.json b/packages/harmony/package.json
index c0bcbe2757ce510b4ae682725afdae917ce98d7a..a29ec0464bb19c6d5692e5cdf2d853a4b8fcd991 100644
--- a/packages/harmony/package.json
+++ b/packages/harmony/package.json
@@ -7,7 +7,6 @@
"build": "vue-tsc --noEmit && vite build"
},
"dependencies": {
- "shared": "workspace:^",
- "unplugin-icons": "^0.14.0"
+ "shared": "workspace:^"
}
}
\ No newline at end of file
diff --git a/packages/mindspore/package.json b/packages/mindspore/package.json
index 9ccbf1351b879a8ca736e086fc809b46896bd9ab..8f2019bad0349cb21f417ff47849faf47f9b2a30 100644
--- a/packages/mindspore/package.json
+++ b/packages/mindspore/package.json
@@ -7,7 +7,6 @@
"build": "vue-tsc --noEmit && vite build"
},
"dependencies": {
- "shared": "workspace:^",
- "unplugin-icons": "^0.14.0"
+ "shared": "workspace:^"
}
}
diff --git a/packages/openubmc/.env.development b/packages/openubmc/.env.development
new file mode 100644
index 0000000000000000000000000000000000000000..e4eb1492369acac287ec096d61000a9030593a3e
--- /dev/null
+++ b/packages/openubmc/.env.development
@@ -0,0 +1,4 @@
+VITE_COOKIE_DOMAIN = localhost
+VITE_LOGIN_ORIGIN = https://usercenter.openubmc.test.osinfra.cn
+VITE_MAIN_DOMAIN_URL = https://www.openubmc.cn
+VITE_FORUM_URL = https://discuss.openubmc.cn/
diff --git a/packages/openubmc/.env.production b/packages/openubmc/.env.production
new file mode 100644
index 0000000000000000000000000000000000000000..7c65a51b277e9aa5474bbc560bce3a7ef8b584ec
--- /dev/null
+++ b/packages/openubmc/.env.production
@@ -0,0 +1,4 @@
+VITE_COOKIE_DOMAIN = .openubmc.cn
+VITE_LOGIN_ORIGIN = https://usercenter.openubmc.cn
+VITE_MAIN_DOMAIN_URL = https://www.openubmc.cn
+VITE_FORUM_URL = https://discuss.openubmc.cn/
\ No newline at end of file
diff --git a/packages/openubmc/auto-imports.d.ts b/packages/openubmc/auto-imports.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..08908edd6a4136cad144e7a483f291f9d9618be2
--- /dev/null
+++ b/packages/openubmc/auto-imports.d.ts
@@ -0,0 +1,5 @@
+// Generated by 'unplugin-auto-import'
+export {}
+declare global {
+
+}
diff --git a/packages/openubmc/components.d.ts b/packages/openubmc/components.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f596a2017b09ceac9bca356985d7277184b9fc72
--- /dev/null
+++ b/packages/openubmc/components.d.ts
@@ -0,0 +1,40 @@
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// Generated by unplugin-vue-components
+// Read more: https://github.com/vuejs/core/pull/3399
+export {}
+
+declare module 'vue' {
+ export interface GlobalComponents {
+ AppFooter: typeof import('./src/components/AppFooter.vue')['default']
+ AppHeader: typeof import('./src/components/AppHeader.vue')['default']
+ CommonLayout: typeof import('./src/components/CommonLayout.vue')['default']
+ ElAvatar: typeof import('element-plus/es')['ElAvatar']
+ ElButton: typeof import('element-plus/es')['ElButton']
+ ElCol: typeof import('element-plus/es')['ElCol']
+ ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
+ ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
+ ElDialog: typeof import('element-plus/es')['ElDialog']
+ ElDropdown: typeof import('element-plus/es')['ElDropdown']
+ ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
+ ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
+ ElForm: typeof import('element-plus/es')['ElForm']
+ ElFormItem: typeof import('element-plus/es')['ElFormItem']
+ ElPopover: typeof import('element-plus/es')['ElPopover']
+ ElProgress: typeof import('element-plus/es')['ElProgress']
+ ElRow: typeof import('element-plus/es')['ElRow']
+ ElTable: typeof import('element-plus/es')['ElTable']
+ ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+ ElTooltip: typeof import('element-plus/es')['ElTooltip']
+ HeaderNav: typeof import('./src/components/HeaderNav.vue')['default']
+ LoadingArc: typeof import('./src/components/LoadingArc.vue')['default']
+ RouterLink: typeof import('vue-router')['RouterLink']
+ RouterView: typeof import('vue-router')['RouterView']
+ SectionCard: typeof import('./src/components/SectionCard.vue')['default']
+ ToggleRadios: typeof import('./src/components/ToggleRadios.vue')['default']
+ }
+ export interface ComponentCustomProperties {
+ vLoading: typeof import('element-plus/es')['ElLoadingDirective']
+ }
+}
diff --git a/packages/openubmc/index.html b/packages/openubmc/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..960ab56279a301a3bd19fd4fe8d73e74b4f24e20
--- /dev/null
+++ b/packages/openubmc/index.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ openUBMC DATASTAT
+
+
+
+
+
+
不支持IE,请使用其他浏览器访问!
+
IE is not supported, please use another browser to visit!
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/package.json b/packages/openubmc/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..ff981f948218f496e644e22b6c52d44ee8d27c58
--- /dev/null
+++ b/packages/openubmc/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "openubmc",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "type": "module",
+ "dependencies": {
+ "shared": "workspace:^"
+ }
+}
diff --git a/packages/openubmc/public/favicon.ico b/packages/openubmc/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..cdbaf4775beb766fd60d2c1fefda4a63e9a82fb0
Binary files /dev/null and b/packages/openubmc/public/favicon.ico differ
diff --git a/packages/openubmc/public/footer-bg.png b/packages/openubmc/public/footer-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..88098672605e6b5a302bff4662e3ee322428d27b
Binary files /dev/null and b/packages/openubmc/public/footer-bg.png differ
diff --git a/packages/openubmc/src/App.vue b/packages/openubmc/src/App.vue
new file mode 100644
index 0000000000000000000000000000000000000000..f21fb39607bcee1a5a6219a1e83686fbad29ca5a
--- /dev/null
+++ b/packages/openubmc/src/App.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/assets/bg.png b/packages/openubmc/src/assets/bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dfb42fe111972e1fef04774bef33d6c330a4bd9
Binary files /dev/null and b/packages/openubmc/src/assets/bg.png differ
diff --git a/packages/openubmc/src/assets/category/home/recordal.png b/packages/openubmc/src/assets/category/home/recordal.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4fc2f2c936e1fcf21e807d0a4fdc0cf49f59e51
Binary files /dev/null and b/packages/openubmc/src/assets/category/home/recordal.png differ
diff --git a/packages/openubmc/src/assets/category/home/wechat-qr.jpg b/packages/openubmc/src/assets/category/home/wechat-qr.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5a9c36940930dae423887dab0a7792b3d0a7e41e
Binary files /dev/null and b/packages/openubmc/src/assets/category/home/wechat-qr.jpg differ
diff --git a/packages/openubmc/src/assets/category/home/wechat.svg b/packages/openubmc/src/assets/category/home/wechat.svg
new file mode 100644
index 0000000000000000000000000000000000000000..350f46da1f8d939cda6dc7fc4983637ef6a6404b
--- /dev/null
+++ b/packages/openubmc/src/assets/category/home/wechat.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/openubmc/src/assets/cose.png b/packages/openubmc/src/assets/cose.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f73e16a97315914c40d41ec860474649ec501d5
Binary files /dev/null and b/packages/openubmc/src/assets/cose.png differ
diff --git a/packages/openubmc/src/assets/style/base.scss b/packages/openubmc/src/assets/style/base.scss
new file mode 100644
index 0000000000000000000000000000000000000000..272889167d507fee8a11c0e4b9a4b93310fa3482
--- /dev/null
+++ b/packages/openubmc/src/assets/style/base.scss
@@ -0,0 +1,124 @@
+/*
+ * base
+ */
+html,
+body {
+ margin: 0;
+ padding: 0;
+ -webkit-text-size-adjust: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ scroll-behavior: smooth;
+ box-sizing: border-box;
+ font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica', 'Arial', sans-serif;
+ width: 100%;
+ height: 100%;
+ @include text1;
+ @include scrollbar;
+}
+html {
+ overflow: auto;
+ @include respond-to('phone') {
+ background-color: var(--o-color-ubmc-bg);
+ }
+}
+
+*,
+:after,
+:before {
+ box-sizing: inherit;
+ margin: 0;
+ padding: 0;
+}
+
+img {
+ vertical-align: top;
+}
+
+[tabindex] {
+ outline: none;
+}
+
+a {
+ cursor: pointer;
+ color: var(--o-color-link1);
+ text-decoration: none;
+ &:hover {
+ @include respond-to('>phone') {
+ color: var(--o-color-ubmc-hover);
+ }
+ }
+ &:active {
+ @include respond-to('>phone') {
+ color: var(--o-color-ubmc-hover);
+ }
+ }
+}
+
+blockquote,
+figure,
+form,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p {
+ margin: 0;
+}
+dd,
+dl,
+li,
+ol,
+ul {
+ margin: 0;
+ padding: 0;
+}
+
+ol,
+ul {
+ list-style: none outside none;
+}
+
+button,
+input,
+optgroup,
+section,
+textarea {
+ font-family: inherit;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+}
+
+.highlight {
+ color: var(--o-color-ubmc);
+}
+
+svg {
+ &:not(.initial-fill) {
+ &:not(.o-svg-icon) {
+ path {
+ fill: currentColor;
+ }
+ }
+ }
+ &.o-svg-icon {
+ fill: currentColor;
+ }
+}
+@keyframes o-rotating {
+ 0% {
+ transform: rotate(0);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.o-rotating {
+ animation: o-rotating var(--o-rotate-duration, 1s) var(--o-easing-linear) infinite;
+}
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/style/element/index.scss b/packages/openubmc/src/assets/style/element/index.scss
new file mode 100644
index 0000000000000000000000000000000000000000..adbfc9185685f71823fd3c4b1b667ad2cf62c3ab
--- /dev/null
+++ b/packages/openubmc/src/assets/style/element/index.scss
@@ -0,0 +1,7 @@
+@forward 'element-plus/theme-chalk/src/common/var.scss' with (
+ $colors: (
+ 'primary': (
+ 'base': var(--o-color-primary1),
+ ),
+ )
+);
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/style/grid.scss b/packages/openubmc/src/assets/style/grid.scss
new file mode 100644
index 0000000000000000000000000000000000000000..5cd419305f31a5018cb5d73753ef7b17e3754eea
--- /dev/null
+++ b/packages/openubmc/src/assets/style/grid.scss
@@ -0,0 +1,67 @@
+@use './mixin/screen.scss' as *;
+
+@mixin inject-var($width, $padding, $gutter, $columns, $contentColumns) {
+ :root {
+ --grid-layout-width: #{$width}; // 栅格布局总宽度
+ --grid--layout-padding: #{$padding}; // 栅格布局左右的padding
+ --grid-column-gutter: #{$gutter}; // 栅格水槽宽度
+ --grid-column-total: #{$columns}; // 栅格总数
+ --grid-content-columns: #{$contentColumns}; // 内容区域所占栅格数量
+ --grid-full-width: calc(var(--grid-layout-width) - var(--grid--layout-padding) * 2); // 栅格布局内容宽度
+ --grid-column-width: calc((var(--grid-full-width) - var(--grid-column-gutter) * (var(--grid-column-total) - 1)) / var(--grid-column-total)); // 一个栅格的宽度
+ --grid-content-width: calc(var(--grid-column-width) * var(--grid-content-columns) + var(--grid-column-gutter) * (var(--grid-content-columns) - 1)); // 内容区域站栅格个数
+ }
+}
+
+// 1921px <= 屏幕宽度
+@include respond-to('>pc_l') {
+ @include inject-var(1920px, 64px, 32px, 24, 20);
+}
+
+// 1681px <= 屏幕宽度 <= 1920px
+@include respond-to('pc_l') {
+ @include inject-var(100vw, 64px, 32px, 24, 20);
+}
+
+// 1441px <= 屏幕宽度 <= 1680px
+@include respond-to('pc') {
+ @include inject-var(100vw, 64px, 32px, 24, 22);
+}
+
+// 1201px <= 屏幕宽度 <= 1440px
+@include respond-to('laptop') {
+ @include inject-var(100vw, 40px, 24px, 24, 22);
+}
+
+// 841px <= 屏幕宽度 <= 1200px
+@include respond-to('pad_h') {
+ @include inject-var(100vw, 32px, 16px, 12, 12);
+}
+
+// 601px <= 屏幕宽度 <= 840px
+@include respond-to('pad_v') {
+ @include inject-var(100vw, 32px, 16px, 8, 8);
+}
+
+// 屏幕宽度 <= 600px
+@include respond-to('phone') {
+ @include inject-var(100vw, 24px, 12px, 4, 4);
+}
+
+:root {
+ // --grid-: 个栅格的宽度
+ --grid-1: var(--grid-column-width);
+ @for $cnt from 2 to 24 {
+ $gutterCnt: $cnt - 1;
+ --grid-#{$cnt}: calc(var(--grid-column-width) * #{$cnt} + var(--grid-column-gutter) * #{$gutterCnt});
+ }
+}
+
+.grid-container {
+ display: flex;
+ width: 100vw;
+ max-width: 1920px;
+ margin: 0 auto;
+ padding-left: var(--grid--layout-padding);
+ padding-right: var(--grid--layout-padding);
+}
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/style/mixin/common.scss b/packages/openubmc/src/assets/style/mixin/common.scss
new file mode 100644
index 0000000000000000000000000000000000000000..dbc2d5a1868cb5ee95350b9e7138f999c38a566a
--- /dev/null
+++ b/packages/openubmc/src/assets/style/mixin/common.scss
@@ -0,0 +1,45 @@
+@use './screen.scss' as *;
+
+@mixin in-dark {
+ [data-o-theme='dark'] {
+ @content;
+ }
+}
+
+@mixin img-in-dark {
+ filter: brightness(80%) grayscale(20%) contrast(1.2);
+}
+
+@mixin scrollbar {
+ &::-webkit-scrollbar-track {
+ border-radius: 3px;
+ }
+
+ &::-webkit-scrollbar {
+ width: 4px;
+ height: 4px;
+ background-color: transparent;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border-radius: 3px;
+ background: var(--o-color-control1);
+ }
+}
+
+@mixin text-truncate($line-clamp: 1) {
+ overflow: hidden; // 公共属性:超出隐藏
+
+ @if $line-clamp == 1 {
+ /* 单行截断模式 */
+ white-space: nowrap; // 禁止换行
+ text-overflow: ellipsis; // 省略号
+ } @else {
+ /* 多行截断模式 */
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: $line-clamp; // 控制行数
+ word-break: break-all; // 允许单词断行(根据需求可选)
+ }
+}
+
diff --git a/packages/openubmc/src/assets/style/mixin/font.scss b/packages/openubmc/src/assets/style/mixin/font.scss
new file mode 100644
index 0000000000000000000000000000000000000000..537da0a54a6a34c759336e098a7a292db56c9383
--- /dev/null
+++ b/packages/openubmc/src/assets/style/mixin/font.scss
@@ -0,0 +1,233 @@
+@use './screen.scss' as *;
+
+// 一级数据展示
+@mixin display1 {
+ font-size: 56px;
+ line-height: 80px;
+ @include respond-to('laptop') {
+ font-size: 48px;
+ line-height: 64px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 40px;
+ line-height: 56px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 22px;
+ line-height: 30px;
+ }
+}
+
+// 二级数据展示
+@mixin display2 {
+ font-size: 48px;
+ line-height: 64px;
+ @include respond-to('laptop') {
+ font-size: 40px;
+ line-height: 56px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 32px;
+ line-height: 44px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 22px;
+ line-height: 28px;
+ }
+}
+
+// 三级数据展示
+@mixin display3 {
+ font-size: 40px;
+ line-height: 56px;
+ @include respond-to('laptop') {
+ font-size: 32px;
+ line-height: 44px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 24px;
+ line-height: 32px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 18px;
+ line-height: 26px;
+ }
+}
+
+// 一级标题
+@mixin h1 {
+ font-size: 32px;
+ line-height: 44px;
+ @include respond-to('laptop') {
+ font-size: 20px;
+ line-height: 28px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 20px;
+ line-height: 28px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 18px;
+ line-height: 26px;
+ }
+}
+
+// 二级标题
+@mixin h2 {
+ font-size: 24px;
+ line-height: 32px;
+ @include respond-to('laptop') {
+ font-size: 20px;
+ line-height: 28px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 18px;
+ line-height: 26px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+}
+
+// 三级标题
+@mixin h3 {
+ font-size: 22px;
+ line-height: 30px;
+ @include respond-to('laptop') {
+ font-size: 18px;
+ line-height: 26px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+ @include respond-to('pad_v') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+ @include respond-to('phone') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+}
+
+// 四级标题
+@mixin h4 {
+ font-size: 20px;
+ line-height: 28px;
+ @include respond-to('laptop') {
+ font-size: 18px;
+ line-height: 26px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+}
+
+// 常规正文
+@mixin text1 {
+ font-size: 16px;
+ line-height: 24px;
+ --line-height: 24px;
+ @include respond-to('laptop') {
+ font-size: 14px;
+ line-height: 22px;
+ --line-height: 22px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 14px;
+ line-height: 22px;
+ --line-height: 22px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 14px;
+ line-height: 22px;
+ --line-height: 22px;
+ }
+}
+
+// 大号正文
+@mixin text2 {
+ font-size: 18px;
+ line-height: 26px;
+ @include respond-to('laptop') {
+ font-size: 16px;
+ line-height: 24px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 14px;
+ line-height: 22px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 14px;
+ line-height: 22px;
+ }
+}
+
+// 提示文本1
+@mixin tip1 {
+ font-size: 14px;
+ line-height: 22px;
+ @include respond-to('laptop') {
+ font-size: 14px;
+ line-height: 22px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 12px;
+ line-height: 18px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 12px;
+ line-height: 18px;
+ }
+}
+
+// 提示文本2
+@mixin tip2 {
+ font-size: 12px;
+ line-height: 18px;
+ @include respond-to('laptop') {
+ font-size: 12px;
+ line-height: 18px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 12px;
+ line-height: 18px;
+ }
+ @include respond-to('<=pad_v') {
+ font-size: 10px;
+ line-height: 16px;
+ }
+}
+// 提示文本1
+@mixin tip1-response-max-height {
+ font-size: 14px;
+ line-height: 22px;
+ max-height: 44px;
+ @include respond-to('laptop-pc') {
+ font-size: 12px;
+ line-height: 18px;
+ max-height: 36px;
+ }
+ @include respond-to('pad_h') {
+ font-size: 12px;
+ line-height: 18px;
+ max-height: 36px;
+ }
+ @include respond-to('pad_v') {
+ font-size: 12px;
+ line-height: 18px;
+ max-height: 36px;
+ }
+ @include respond-to('phone') {
+ font-size: 10px;
+ line-height: 16px;
+ max-height: 32px;
+ }
+}
diff --git a/packages/openubmc/src/assets/style/mixin/screen.scss b/packages/openubmc/src/assets/style/mixin/screen.scss
new file mode 100644
index 0000000000000000000000000000000000000000..7ce92d66c3109e79e827f1059e486177690b056f
--- /dev/null
+++ b/packages/openubmc/src/assets/style/mixin/screen.scss
@@ -0,0 +1,94 @@
+@use 'sass:map';
+@use 'sass:list';
+@use 'sass:meta';
+
+// 断点定义
+$breakpoints: (
+ // phone
+ 'phone': (0, 600px),
+ '>phone': 601px,
+ // pad
+ 'pad': (601px, 1200px),
+ '<=pad': (0, 1200px),
+ '>pad': 1201px,
+ // pad-v
+ 'pad_v': (601px, 840px),
+ '<=pad_v': (0, 840px),
+ '>pad_v': 841px,
+ // pad-h
+ 'pad_h': (841px, 1200px),
+ // laptop
+ 'laptop': (1201px, 1440px),
+ '<=laptop': (0, 1440px),
+ '>laptop': 1441px,
+ 'pad-laptop': (601px, 1440px),
+ 'pad_v-laptop': (841px, 1440px),
+ 'laptop-pc': (1201px, 1680px),
+ '<=pc': (0, 1680px),
+ 'pc': (1441px, 1680px),
+ 'pc_l': (1681px, 1920px),
+ '>pc_l': 1921px
+);
+
+@mixin respond-to($breakname) {
+ $bp: map.get($breakpoints, $breakname);
+ @if meta.type-of($bp) == 'list' {
+ $min: list.nth($bp, 1);
+ $max: list.nth($bp, 2);
+ @if $min == 0 {
+ @media (max-width: $max) {
+ @content;
+ }
+ } @else {
+ @media (min-width: $min) and (max-width: $max) {
+ @content;
+ }
+ }
+ } @else {
+ @media (min-width: $bp) {
+ @content;
+ }
+ }
+}
+
+@mixin hoverable($hover: hover) {
+ @media (hover: $hover) {
+ @content;
+ }
+}
+
+@mixin hover() {
+ @media (hover: hover) {
+ &:hover {
+ @content;
+ }
+ }
+}
+
+@mixin me-hover() {
+ @content;
+ @media (hover: hover) {
+ &:hover {
+ @content;
+ }
+ }
+}
+
+@mixin x-hover() {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ @include hover {
+ transform: rotate(180deg);
+ }
+}
+
+@mixin x-svg-hover() {
+ overflow: hidden;
+ svg {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ }
+ @include hover {
+ svg {
+ transform: rotate(180deg);
+ }
+ }
+}
diff --git a/packages/openubmc/src/assets/style/theme/dark.token.css b/packages/openubmc/src/assets/style/theme/dark.token.css
new file mode 100644
index 0000000000000000000000000000000000000000..c9d31003a3ad54e5cf8d1a6230970a1c8bdd20d8
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/dark.token.css
@@ -0,0 +1,2064 @@
+/* theme: dark */
+[data-o-theme="dark"] {
+ /**
+ * @name
+ * @type palette
+ * @group white
+ * @description
+ */
+ --o-white: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group black
+ * @description
+ */
+ --o-black: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-1: 0, 4, 77;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-2: 6, 15, 120;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-3: 20, 37, 163;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-4: 40, 65, 207;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-5: 66, 99, 250;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-6: 84, 120, 251;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-7: 122, 154, 252;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-8: 160, 186, 253;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-9: 199, 217, 254;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-10: 238, 244, 255;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-1: 0, 77, 42;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-2: 2, 102, 53;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-3: 10, 127, 66;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-4: 22, 152, 80;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-5: 36, 177, 95;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-6: 51, 193, 104;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-7: 90, 208, 131;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-8: 135, 224, 163;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-9: 185, 239, 200;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-10: 240, 255, 244;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-1: 77, 24, 0;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-2: 120, 42, 1;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-3: 163, 68, 8;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-4: 207, 97, 19;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-5: 250, 130, 33;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-6: 251, 143, 32;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-7: 252, 174, 91;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-8: 253, 202, 139;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-9: 254, 227, 188;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-10: 255, 248, 237;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-1: 77, 0, 17;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-2: 115, 3, 24;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-3: 153, 9, 31;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-4: 192, 17, 37;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-5: 230, 28, 43;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-6: 235, 35, 45;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-7: 240, 82, 85;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-8: 245, 132, 130;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-9: 250, 183, 180;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-10: 255, 234, 232;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-1: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-2: 20, 20, 20;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-3: 28, 28, 28;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-4: 39, 39, 39;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-5: 47, 47, 47;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-6: 57, 57, 57;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-7: 67, 67, 67;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-8: 88, 88, 88;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-9: 122, 122, 122;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-10: 159, 159, 159;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-11: 185, 185, 185;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-12: 210, 210, 210;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-13: 238, 238, 238;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-14: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-1: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-2: 16, 28, 20;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-3: 23, 25, 28;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-4: 36, 36, 39;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-5: 40, 42, 47;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-6: 50, 53, 57;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-7: 61, 63, 67;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-8: 80, 84, 88;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-9: 113, 117, 122;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-10: 147, 152, 159;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-11: 172, 177, 185;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-12: 198, 202, 210;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-13: 231, 234, 238;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-14: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-1: 77, 54, 0;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-2: 119, 87, 2;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-3: 161, 126, 11;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-4: 203, 167, 24;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-5: 245, 211, 42;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-6: 247, 222, 54;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-7: 249, 234, 100;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-8: 251, 244, 146;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-9: 253, 251, 192;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-10: 255, 255, 240;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-1: 41, 77, 0;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-2: 63, 109, 3;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-3: 91, 142, 14;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-4: 121, 174, 30;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-5: 155, 207, 50;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-6: 172, 217, 68;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-7: 194, 226, 104;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-8: 214, 236, 144;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-9: 233, 245, 186;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-10: 251, 255, 232;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-1: 0, 73, 77;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-2: 2, 101, 103;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-3: 9, 129, 127;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-4: 18, 155, 148;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-5: 30, 181, 167;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-6: 42, 196, 178;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-7: 84, 211, 192;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-8: 130, 255, 208;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-9: 182, 240, 227;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-10: 239, 255, 251;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-1: 0, 34, 77;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-2: 1, 57, 117;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-3: 8, 86, 158;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-4: 18, 118, 199;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-5: 31, 153, 240;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-6: 42, 166, 243;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-7: 89, 191, 246;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-8: 137, 214, 249;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-9: 187, 233, 252;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-10: 237, 250, 255;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-1: 22, 0, 77;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-2: 40, 3, 118;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-3: 66, 15, 160;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-4: 98, 33, 202;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-5: 134, 57, 244;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-6: 152, 74, 246;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-7: 179, 114, 248;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-8: 205, 156, 251;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-9: 228, 198, 253;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-10: 249, 240, 255;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-1: 61, 0, 77;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-2: 93, 5, 110;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-3: 127, 16, 144;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-4: 164, 33, 178;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-5: 200, 54, 212;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-6: 216, 72, 221;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-7: 229, 109, 229;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-8: 238, 149, 235;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-9: 246, 191, 243;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-10: 255, 236, 253;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-1: 77, 0, 48;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-2: 114, 3, 70;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-3: 151, 12, 91;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-4: 189, 25, 112;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-5: 226, 41, 133;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-6: 232, 53, 137;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-7: 238, 97, 158;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-8: 243, 143, 183;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-9: 249, 192, 213;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-10: 255, 242, 247;
+ /**
+ * @name
+ * @type color
+ * @group base
+ * @description
+ */
+ --o-color-white: rgb(var(--o-white));
+ /**
+ * @name
+ * @type color
+ * @group base
+ * @description
+ */
+ --o-color-black: rgb(var(--o-black));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规
+ */
+ --o-color-primary1: rgb(var(--o-mixedgray-14));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮
+ */
+ --o-color-primary2: rgb(var(--o-mixedgray-13));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活
+ */
+ --o-color-primary3: rgb(var(--o-mixedgray-12));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用
+ */
+ --o-color-primary4: rgb(var(--o-mixedgray-8));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规-浅
+ */
+ --o-color-primary1-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮-浅
+ */
+ --o-color-primary2-light: rgb(var(--o-mixedgray-6));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活-浅
+ */
+ --o-color-primary3-light: rgb(var(--o-mixedgray-7));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用-浅
+ */
+ --o-color-primary4-light: rgb(var(--o-mixedgray-6));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 常规
+ */
+ --o-color-success1: rgb(var(--o-green-6));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 悬浮
+ */
+ --o-color-success2: rgb(var(--o-green-4));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 激活
+ */
+ --o-color-success3: rgb(var(--o-green-7));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 禁用
+ */
+ --o-color-success4: rgb(var(--o-green-3));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 常规-浅
+ */
+ --o-color-success1-light: rgb(var(--o-green-2));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 悬浮-浅
+ */
+ --o-color-success2-light: rgb(var(--o-green-3));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 激活-浅
+ */
+ --o-color-success3-light: rgb(var(--o-green-4));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 禁用-浅
+ */
+ --o-color-success4-light: rgb(var(--o-green-1));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 常规
+ */
+ --o-color-warning1: rgb(var(--o-orange-6));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 悬浮
+ */
+ --o-color-warning2: rgb(var(--o-orange-4));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 激活
+ */
+ --o-color-warning3: rgb(var(--o-orange-7));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 禁用
+ */
+ --o-color-warning4: rgb(var(--o-orange-3));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 常规-浅
+ */
+ --o-color-warning1-light: rgb(var(--o-orange-2));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 悬浮-浅
+ */
+ --o-color-warning2-light: rgb(var(--o-orange-3));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 激活-浅
+ */
+ --o-color-warning3-light: rgb(var(--o-orange-4));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 禁用-浅
+ */
+ --o-color-warning4-light: rgb(var(--o-orange-1));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 常规
+ */
+ --o-color-danger1: rgb(var(--o-red-6));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 悬浮
+ */
+ --o-color-danger2: rgb(var(--o-red-4));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 激活
+ */
+ --o-color-danger3: rgb(var(--o-red-7));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 禁用
+ */
+ --o-color-danger4: rgb(var(--o-red-3));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 常规-浅
+ */
+ --o-color-danger1-light: rgb(var(--o-red-2));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 悬浮-浅
+ */
+ --o-color-danger2-light: rgb(var(--o-red-3));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 激活-浅
+ */
+ --o-color-danger3-light: rgb(var(--o-red-4));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 禁用-浅
+ */
+ --o-color-danger4-light: rgb(var(--o-red-1));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 一级填充:页面背景
+ */
+ --o-color-fill1: rgb(var(--o-mixedgray-3));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 二级填充:区块/卡片
+ */
+ --o-color-fill2: rgb(var(--o-mixedgray-4));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 三级填充:卡片
+ */
+ --o-color-fill3: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 常规,常用于边框
+ */
+ --o-color-control1: rgba(var(--o-mixedgray-14), 0.25);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮,常用于边框
+ */
+ --o-color-control2: rgba(var(--o-mixedgray-14), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 激活,常用于边框
+ */
+ --o-color-control3: rgba(var(--o-mixedgray-14), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 禁用,常用于边框
+ */
+ --o-color-control4: rgba(var(--o-mixedgray-14), 0.15);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 常规-浅,常用于背景
+ */
+ --o-color-control1-light: rgb(var(--o-mixedgray-7));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮-浅,常用于背景
+ */
+ --o-color-control2-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 激活-浅,常用于背景
+ */
+ --o-color-control3-light: rgb(var(--o-mixedgray-6));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 禁用-浅,常用于背景
+ */
+ --o-color-control4-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 很浅,常用于表格背景色
+ */
+ --o-color-control-light: rgb(var(--o-mixedgray-4));
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 一级/强调/标题
+ */
+ --o-color-info1: rgba(var(--o-mixedgray-14), 1.0);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 二级/次强调/正文
+ */
+ --o-color-info2: rgba(var(--o-mixedgray-14), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 三级/辅助信息
+ */
+ --o-color-info3: rgba(var(--o-mixedgray-14), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 置灰/禁用
+ */
+ --o-color-info4: rgba(var(--o-mixedgray-14), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 一级/次强调/正文反色
+ */
+ --o-color-info1-inverse: rgba(var(--o-mixedgray-1), 1.0);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 二级/辅助信息反色
+ */
+ --o-color-info2-inverse: rgba(var(--o-mixedgray-1), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 三级/辅助信息反色
+ */
+ --o-color-info3-inverse: rgba(var(--o-mixedgray-1), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 置灰/禁用反色
+ */
+ --o-color-info4-inverse: rgba(var(--o-mixedgray-1), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group mask
+ * @description 全局遮罩
+ */
+ --o-color-mask1: rgba(var(--o-mixedgray-1), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group mask
+ * @description 局部遮罩
+ */
+ --o-color-mask2: rgba(var(--o-mixedgray-4), 0.2);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 常规
+ */
+ --o-color-link1: rgba(var(--o-deepblue-6), 1.0);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 悬浮
+ */
+ --o-color-link2: rgba(var(--o-deepblue-6), 0.7);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 激活
+ */
+ --o-color-link3: rgba(var(--o-deepblue-6), 0.9);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 禁用
+ */
+ --o-color-link4: rgba(var(--o-deepblue-6), 0.4);
+ /**
+ * @name 阴影1
+ * @type shadow
+ * @group shadow
+ * @description 用于卡片、小弹窗、楼层阴影
+ */
+ --o-shadow-1: 0 3px 8px rgba(var(--o-mixedgray-1), 0.08);
+ /**
+ * @name 阴影2
+ * @type shadow
+ * @group shadow
+ * @description 用于卡片悬浮阴影
+ */
+ --o-shadow-2: 0 2px 24px rgba(var(--o-mixedgray-1), 0.15);
+ /**
+ * @name 阴影3
+ * @type shadow
+ * @group shadow
+ * @description 用于提示阴影
+ */
+ --o-shadow-3: 0 8px 40px rgba(var(--o-mixedgray-1), 0.1);
+ /**
+ * @name 间距1
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距1
+ */
+ --o-gap-1: 4px;
+ /**
+ * @name 间距2
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距2
+ */
+ --o-gap-2: 8px;
+ /**
+ * @name 间距3
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距3
+ */
+ --o-gap-3: 12px;
+ /**
+ * @name 间距4
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距4
+ */
+ --o-gap-4: 16px;
+ /**
+ * @name 间距5
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距5
+ */
+ --o-gap-5: 24px;
+ /**
+ * @name 间距6
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距6
+ */
+ --o-gap-6: 32px;
+ /**
+ * @name 间距7
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距7
+ */
+ --o-gap-7: 40px;
+ /**
+ * @name 间距8
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距8
+ */
+ --o-gap-8: 48px;
+ /**
+ * @name 间距9
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距9
+ */
+ --o-gap-9: 64px;
+ /**
+ * @name 间距10
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距10
+ */
+ --o-gap-10: 72px;
+ /**
+ * @name 超小尺寸
+ * @type size
+ * @group control_size
+ * @description 超小尺寸
+ */
+ --o-control_size-2xs: 14px;
+ /**
+ * @name 小尺寸
+ * @type size
+ * @group control_size
+ * @description 小尺寸
+ */
+ --o-control_size-xs: 16px;
+ /**
+ * @name 小尺寸
+ * @type size
+ * @group control_size
+ * @description 小尺寸
+ */
+ --o-control_size-s: 24px;
+ /**
+ * @name 中尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-m: 32px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-l: 40px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-xl: 48px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-2xl: 56px;
+ /**
+ * @name 超小尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 超小尺寸图标
+ */
+ --o-icon_size-xs: 16px;
+ /**
+ * @name 小尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 小尺寸图标
+ */
+ --o-icon_size-s: 20px;
+ /**
+ * @name 中尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 中尺寸图标
+ */
+ --o-icon_size-m: 24px;
+ /**
+ * @name 大尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 大尺寸图标
+ */
+ --o-icon_size-l: 32px;
+ /**
+ * @name 超大尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 超大尺寸图标
+ */
+ --o-icon_size-xl: 40px;
+ /**
+ * @name 2xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 2xl尺寸图标
+ */
+ --o-icon_size-2xl: 48px;
+ /**
+ * @name 3xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 3xl尺寸图标
+ */
+ --o-icon_size-3xl: 56px;
+ /**
+ * @name 4xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 4xl尺寸图标
+ */
+ --o-icon_size-4xl: 64px;
+ /**
+ * @name 超小尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 超小尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-xs: 16px;
+ /**
+ * @name 小尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 小尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-s: 20px;
+ /**
+ * @name 中尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 中尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-m: 24px;
+ /**
+ * @name 大尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 大尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-l: 32px;
+ /**
+ * @name 超大尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 超大尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-xl: 40px;
+ /**
+ * @name 一级数据展示
+ * @type font
+ * @group font_size
+ * @description 一级数据展示
+ */
+ --o-font_size-display1: 56px;
+ /**
+ * @name 二级数据展示
+ * @type font
+ * @group font_size
+ * @description 二级数据展示
+ */
+ --o-font_size-display2: 48px;
+ /**
+ * @name 三级数据展示
+ * @type font
+ * @group font_size
+ * @description 三级数据展示
+ */
+ --o-font_size-display3: 40px;
+ /**
+ * @name 一级标题
+ * @type font
+ * @group font_size
+ * @description 一级标题
+ */
+ --o-font_size-h1: 32px;
+ /**
+ * @name 二级标题
+ * @type font
+ * @group font_size
+ * @description 二级标题
+ */
+ --o-font_size-h2: 24px;
+ /**
+ * @name 三级标题
+ * @type font
+ * @group font_size
+ * @description 三级标题
+ */
+ --o-font_size-h3: 22px;
+ /**
+ * @name 四级标题
+ * @type font
+ * @group font_size
+ * @description 四级标题
+ */
+ --o-font_size-h4: 20px;
+ /**
+ * @name 常规正文
+ * @type font
+ * @group font_size
+ * @description 常规正文
+ */
+ --o-font_size-text1: 16px;
+ /**
+ * @name 大号正文
+ * @type font
+ * @group font_size
+ * @description 大号正文
+ */
+ --o-font_size-text2: 18px;
+ /**
+ * @name 提示文本1
+ * @type font
+ * @group font_size
+ * @description 提示文本1
+ */
+ --o-font_size-tip1: 14px;
+ /**
+ * @name 提示文本2
+ * @type font
+ * @group font_size
+ * @description 提示文本2
+ */
+ --o-font_size-tip2: 12px;
+ /**
+ * @name 一级数据展示
+ * @type font
+ * @group line_height
+ * @description 一级数据展示
+ */
+ --o-line_height-display1: 80px;
+ /**
+ * @name 二级数据展示
+ * @type font
+ * @group line_height
+ * @description 二级数据展示
+ */
+ --o-line_height-display2: 64px;
+ /**
+ * @name 三级数据展示
+ * @type font
+ * @group line_height
+ * @description 三级数据展示
+ */
+ --o-line_height-display3: 56px;
+ /**
+ * @name 一级标题
+ * @type font
+ * @group line_height
+ * @description 一级标题
+ */
+ --o-line_height-h1: 44px;
+ /**
+ * @name 二级标题
+ * @type font
+ * @group line_height
+ * @description 二级标题
+ */
+ --o-line_height-h2: 32px;
+ /**
+ * @name 三级标题
+ * @type font
+ * @group line_height
+ * @description 三级标题
+ */
+ --o-line_height-h3: 30px;
+ /**
+ * @name 四级标题
+ * @type font
+ * @group line_height
+ * @description 四级标题
+ */
+ --o-line_height-h4: 28px;
+ /**
+ * @name 正文
+ * @type font
+ * @group line_height
+ * @description 正文
+ */
+ --o-line_height-text1: 24px;
+ /**
+ * @name 正文-大
+ * @type font
+ * @group line_height
+ * @description 正文-大
+ */
+ --o-line_height-text2: 26x;
+ /**
+ * @name 提示文本1
+ * @type font
+ * @group line_height
+ * @description 提示文本1
+ */
+ --o-line_height-tip1: 22px;
+ /**
+ * @name 提示文本2
+ * @type font
+ * @group line_height
+ * @description 提示文本2
+ */
+ --o-line_height-tip2: 18px;
+ /**
+ * @name 超小尺寸圆角
+ * @type size
+ * @group radius
+ * @description 超小尺寸圆角
+ */
+ --o-radius-xs: 4px;
+ /**
+ * @name 小尺寸圆角
+ * @type size
+ * @group radius
+ * @description 小尺寸圆角
+ */
+ --o-radius-s: 4px;
+ /**
+ * @name 中尺寸圆角
+ * @type size
+ * @group radius
+ * @description 中尺寸圆角
+ */
+ --o-radius-m: 4px;
+ /**
+ * @name 大尺寸圆角
+ * @type size
+ * @group radius
+ * @description 大尺寸圆角
+ */
+ --o-radius-l: 4px;
+ /**
+ * @name 大尺寸圆角
+ * @type size
+ * @group radius
+ * @description 大尺寸圆角,一般用于卡片
+ */
+ --o-radius-xl: 4px;
+ /**
+ * @name 超小尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 超小尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-xs: 4px;
+ /**
+ * @name 小尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 小尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-s: 4px;
+ /**
+ * @name 中尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 中尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-m: 4px;
+ /**
+ * @name 大尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 大尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-l: 4px;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于退出屏幕的动画
+ */
+ --o-duration-s: 200ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为standard-in时进入屏幕的动画
+ */
+ --o-duration-m1: 250ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为standard时开始、结束的动画
+ */
+ --o-duration-m2: 300ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized-in时进入屏幕的动画
+ */
+ --o-duration-m3: 400ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized时开始、结束的动画
+ */
+ --o-duration-l: 500ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized时,轮播切换动画
+ */
+ --o-duration-xl: 1000ms;
+ /**
+ * @name 线性动画曲线
+ * @type animation
+ * @group easing
+ * @description 线性曲线
+ */
+ --o-easing-linear: cubic-bezier(0, 0, 1, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard: cubic-bezier(0.2, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard-in: cubic-bezier(0, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard-out: cubic-bezier(0.3, 0, 1, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized-in: cubic-bezier(0.3, 0, 0.8, 0.15);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized-out: cubic-bezier(0.05, 0.7, 0.1, 1);
+ /**
+ * @name openUBMC主题色
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色
+ */
+ --o-ubmc-color: 0, 113, 243;
+ --o-ubmc-color2: 4, 86, 209;
+ --o-ubmc-color3: 0, 128, 255;
+ --o-ubmc-color4: 10, 59, 128;
+ /**
+ * 先在这里覆盖一下使用蓝色
+ */
+ --o-color-ubmc: rgb(var(--o-ubmc-color));
+ /**
+ * @name openUBMC主题色hover态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-hover: rgba(var(--o-ubmc-color2), 1);
+ /**
+ * @name openUBMC主题色激活态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-focus: rgba(var(--o-ubmc-color3), 1);
+ /**
+ * @name openUBMC主题色禁用态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-disabled: rgba(var(--o-ubmc-color4), 1);
+ /**
+ * @name openUBMC主题背景色
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色
+ */
+ --o-color-ubmc-bg: rgba(26, 26, 28, 1);
+ --o-color-ubmc-bg2: rgba(26, 26, 28, 1);
+ /**
+ * @name openUBMC主题背景色悬浮态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色悬浮态
+ */
+ --o-color-ubmc-bg-hover: rgba(26, 26, 28, 0.4);
+ /**
+ * @name openUBMC主题背景色悬浮态2
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色悬浮态2
+ */
+ --o-color-ubmc-bg-hover2: rgba(103, 163, 250, 0.4);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规
+ */
+ --o-color-primary1: var(--o-color-ubmc);
+ --o-color-link1: var(--o-color-primary1);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮
+ */
+ --o-color-primary2: var(--o-color-ubmc-hover);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活
+ */
+ --o-color-primary3: var(--o-color-ubmc-focus);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用
+ */
+ --o-color-primary4: var(--o-color-ubmc-disabled);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规-浅
+ */
+ --o-color-primary1-light: var(--o-color-ubmc);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮-浅
+ */
+ --o-color-primary2-light: var(--o-color-ubmc-hover);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活-浅
+ */
+ --o-color-primary3-light: var(--o-color-ubmc-focus);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用-浅
+ */
+ --o-color-primary4-light: var(--o-color-ubmc-disabled);
+
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮,常用于边框
+ */
+ --o-color-control2: rgba(var(--o-ubmc-color), 1);
+}
diff --git a/packages/openubmc/src/assets/style/theme/default-light.token.css b/packages/openubmc/src/assets/style/theme/default-light.token.css
new file mode 100644
index 0000000000000000000000000000000000000000..92e17c870ae1a458971864402681fcda93a60de4
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/default-light.token.css
@@ -0,0 +1,2065 @@
+/* theme: default|light */
+:root,
+[data-o-theme='light'] {
+ /**
+ * @name
+ * @type palette
+ * @group white
+ * @description
+ */
+ --o-white: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group black
+ * @description
+ */
+ --o-black: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-1: 232, 240, 255;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-2: 194, 213, 254;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-3: 157, 184, 253;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-4: 120, 153, 252;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-5: 83, 119, 251;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-6: 46, 83, 250;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-7: 29, 55, 207;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-8: 15, 32, 163;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-9: 6, 15, 120;
+ /**
+ * @name
+ * @type palette
+ * @group deepblue
+ * @description
+ */
+ --o-deepblue-10: 0, 4, 47;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-1: 232, 255, 238;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-2: 177, 239, 195;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-3: 128, 224, 158;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-4: 84, 208, 127;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-5: 45, 193, 101;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-6: 11, 177, 81;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-7: 7, 152, 72;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-8: 4, 127, 63;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-9: 2, 102, 53;
+ /**
+ * @name
+ * @type palette
+ * @group green
+ * @description
+ */
+ --o-green-10: 0, 77, 42;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-1: 255, 246, 232;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-2: 254, 226, 186;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-3: 253, 202, 140;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-4: 252, 176, 95;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-5: 251, 147, 50;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-6: 250, 115, 5;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-7: 207, 88, 3;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-8: 163, 64, 2;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-9: 120, 42, 1;
+ /**
+ * @name
+ * @type palette
+ * @group orange
+ * @description
+ */
+ --o-orange-10: 77, 24, 0;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-1: 255, 234, 232;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-2: 250, 185, 182;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-3: 245, 136, 134;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-4: 240, 87, 90;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-5: 235, 43, 52;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-6: 230, 0, 18;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-7: 192, 0, 22;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-8: 153, 0, 23;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-9: 115, 0, 21;
+ /**
+ * @name
+ * @type palette
+ * @group red
+ * @description
+ */
+ --o-red-10: 77, 0, 17;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-1: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-2: 247, 247, 247;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-3: 242, 242, 242;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-4: 237, 237, 237;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-5: 227, 227, 227;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-6: 214, 214, 214;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-7: 186, 186, 186;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-8: 148, 148, 148;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-9: 110, 110, 110;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-10: 79, 79, 79;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-11: 48, 48, 48;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-12: 36, 36, 36;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-13: 18, 18, 18;
+ /**
+ * @name
+ * @type palette
+ * @group gray
+ * @description
+ */
+ --o-gray-14: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-1: 255, 255, 255;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-2: 244, 245, 247;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-3: 237, 239, 242;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-4: 232, 234, 237;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-5: 224, 226, 230;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-6: 209, 214, 219;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-7: 179, 185, 191;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-8: 144, 150, 158;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-9: 104, 109, 117;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-10: 79, 84, 92;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-11: 55, 59, 66;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-12: 32, 35, 41;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-13: 18, 20, 23;
+ /**
+ * @name
+ * @type palette
+ * @group mixedgray
+ * @description
+ */
+ --o-mixedgray-14: 0, 0, 0;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-1: 255, 255, 232;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-2: 253, 251, 185;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-3: 251, 244, 139;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-4: 249, 233, 94;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-5: 247, 221, 49;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-6: 245, 205, 5;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-7: 203, 163, 3;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-8: 161, 124, 2;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-9: 119, 87, 1;
+ /**
+ * @name
+ * @type palette
+ * @group yellow
+ * @description
+ */
+ --o-yellow-10: 77, 54, 0;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-1: 251, 255, 232;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-2: 233, 245, 184;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-3: 213, 236, 139;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-4: 192, 226, 97;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-5: 169, 217, 59;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-6: 146, 207, 23;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-7: 116, 174, 15;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-8: 88, 142, 8;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-9: 63, 109, 3;
+ /**
+ * @name
+ * @type palette
+ * @group lime
+ * @description
+ */
+ --o-lime-10: 41, 77, 0;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-1: 232, 255, 249;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-2: 176, 240, 226;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-3: 125, 225, 207;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-4: 79, 221, 191;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-5: 38, 196, 177;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-6: 3, 181, 165;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-7: 2, 155, 147;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-8: 1, 129, 127;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-9: 0, 101, 103;
+ /**
+ * @name
+ * @type palette
+ * @group cyan
+ * @description
+ */
+ --o-cyan-10: 0, 73, 77;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-1: 232, 249, 255;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-2: 185, 233, 252;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-3: 138, 214, 249;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-4: 93, 192, 246;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-5: 48, 168, 243;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-6: 5, 142, 240;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-7: 3, 111, 199;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-8: 2, 83, 158;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-9: 1, 57, 117;
+ /**
+ * @name
+ * @type palette
+ * @group blue
+ * @description
+ */
+ --o-blue-10: 0, 34, 77;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-1: 245, 232, 255;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-2: 225, 192, 253;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-3: 203, 152, 251;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-4: 178, 113, 248;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-5: 152, 75, 246;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-6: 123, 37, 244;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-7: 92, 23, 202;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-8: 64, 12, 160;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-9: 41, 4, 118;
+ /**
+ * @name
+ * @type palette
+ * @group purple
+ * @description
+ */
+ --o-purple-10: 22, 0, 77;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-1: 255, 232, 253;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-2: 246, 188, 243;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-3: 238, 146, 235;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-4: 229, 107, 229;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-5: 216, 71, 221;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-6: 199, 37, 212;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-7: 163, 23, 178;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-8: 127, 13, 144;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-9: 93, 5, 110;
+ /**
+ * @name
+ * @type palette
+ * @group pink
+ * @description
+ */
+ --o-pink-10: 61, 0, 77;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-1: 255, 232, 240;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-2: 249, 185, 209;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-3: 243, 141, 182;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-4: 238, 98, 158;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-5: 232, 57, 139;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-6: 226, 18, 122;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-7: 189, 11, 106;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-8: 151, 6, 88;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-9: 114, 2, 69;
+ /**
+ * @name
+ * @type palette
+ * @group rosyred
+ * @description
+ */
+ --o-rosyred-10: 77, 0, 48;
+ /**
+ * @name
+ * @type color
+ * @group base
+ * @description
+ */
+ --o-color-white: rgb(var(--o-white));
+ /**
+ * @name
+ * @type color
+ * @group base
+ * @description
+ */
+ --o-color-black: rgb(var(--o-black));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规
+ */
+ --o-color-primary1: rgb(var(--o-mixedgray-12));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮
+ */
+ --o-color-primary2: rgb(var(--o-mixedgray-11));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活
+ */
+ --o-color-primary3: rgb(var(--o-mixedgray-13));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用
+ */
+ --o-color-primary4: rgb(var(--o-mixedgray-6));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规-浅
+ */
+ --o-color-primary1-light: rgb(var(--o-mixedgray-4));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮-浅
+ */
+ --o-color-primary2-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活-浅
+ */
+ --o-color-primary3-light: rgb(var(--o-mixedgray-6));
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用-浅
+ */
+ --o-color-primary4-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 常规
+ */
+ --o-color-success1: rgb(var(--o-green-6));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 悬浮
+ */
+ --o-color-success2: rgb(var(--o-green-4));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 激活
+ */
+ --o-color-success3: rgb(var(--o-green-7));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 禁用
+ */
+ --o-color-success4: rgb(var(--o-green-3));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 常规-浅
+ */
+ --o-color-success1-light: rgb(var(--o-green-2));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 悬浮-浅
+ */
+ --o-color-success2-light: rgb(var(--o-green-3));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 激活-浅
+ */
+ --o-color-success3-light: rgb(var(--o-green-4));
+ /**
+ * @name
+ * @type color
+ * @group success
+ * @description 禁用-浅
+ */
+ --o-color-success4-light: rgb(var(--o-green-1));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 常规
+ */
+ --o-color-warning1: rgb(var(--o-orange-6));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 悬浮
+ */
+ --o-color-warning2: rgb(var(--o-orange-4));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 激活
+ */
+ --o-color-warning3: rgb(var(--o-orange-7));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 禁用
+ */
+ --o-color-warning4: rgb(var(--o-orange-3));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 常规-浅
+ */
+ --o-color-warning1-light: rgb(var(--o-orange-2));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 悬浮-浅
+ */
+ --o-color-warning2-light: rgb(var(--o-orange-3));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 激活-浅
+ */
+ --o-color-warning3-light: rgb(var(--o-orange-4));
+ /**
+ * @name
+ * @type color
+ * @group warning
+ * @description 禁用-浅
+ */
+ --o-color-warning4-light: rgb(var(--o-orange-1));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 常规
+ */
+ --o-color-danger1: rgb(var(--o-red-6));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 悬浮
+ */
+ --o-color-danger2: rgb(var(--o-red-4));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 激活
+ */
+ --o-color-danger3: rgb(var(--o-red-7));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 禁用
+ */
+ --o-color-danger4: rgb(var(--o-red-3));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 常规-浅
+ */
+ --o-color-danger1-light: rgb(var(--o-red-2));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 悬浮-浅
+ */
+ --o-color-danger2-light: rgb(var(--o-red-3));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 激活-浅
+ */
+ --o-color-danger3-light: rgb(var(--o-red-4));
+ /**
+ * @name
+ * @type color
+ * @group danger
+ * @description 禁用-浅
+ */
+ --o-color-danger4-light: rgb(var(--o-red-1));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 一级填充:页面背景
+ */
+ --o-color-fill1: rgb(var(--o-mixedgray-2));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 二级填充:区块/卡片
+ */
+ --o-color-fill2: rgb(var(--o-mixedgray-1));
+ /**
+ * @name
+ * @type color
+ * @group fill
+ * @description 三级填充:卡片
+ */
+ --o-color-fill3: rgb(var(--o-mixedgray-3));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 常规,常用于边框
+ */
+ --o-color-control1: rgba(var(--o-mixedgray-14), 0.25);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮,常用于边框
+ */
+ --o-color-control2: rgba(var(--o-mixedgray-14), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 激活,常用于边框
+ */
+ --o-color-control3: rgba(var(--o-mixedgray-14), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 禁用,常用于边框
+ */
+ --o-color-control4: rgba(var(--o-mixedgray-14), 0.1);
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 常规-浅,常用于背景
+ */
+ --o-color-control1-light: rgb(var(--o-mixedgray-5));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮-浅,常用于背景
+ */
+ --o-color-control2-light: rgb(var(--o-mixedgray-3));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 激活-浅,常用于背景
+ */
+ --o-color-control3-light: rgb(var(--o-mixedgray-4));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 禁用-浅,常用于背景
+ */
+ --o-color-control4-light: rgb(var(--o-mixedgray-3));
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 很浅,常用于表格背景色
+ */
+ --o-color-control-light: rgb(var(--o-mixedgray-1));
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 一级/强调/标题
+ */
+ --o-color-info1: rgba(var(--o-mixedgray-14), 1);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 二级/次强调/正文
+ */
+ --o-color-info2: rgba(var(--o-mixedgray-14), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 三级/辅助信息
+ */
+ --o-color-info3: rgba(var(--o-mixedgray-14), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 置灰/禁用
+ */
+ --o-color-info4: rgba(var(--o-mixedgray-14), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 一级/次强调/正文反色
+ */
+ --o-color-info1-inverse: rgba(var(--o-mixedgray-1), 1);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 二级/辅助信息反色
+ */
+ --o-color-info2-inverse: rgba(var(--o-mixedgray-1), 0.8);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 三级/辅助信息反色
+ */
+ --o-color-info3-inverse: rgba(var(--o-mixedgray-1), 0.6);
+ /**
+ * @name
+ * @type color
+ * @group info
+ * @description 置灰/禁用反色
+ */
+ --o-color-info4-inverse: rgba(var(--o-mixedgray-1), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group mask
+ * @description 全局遮罩
+ */
+ --o-color-mask1: rgba(var(--o-mixedgray-14), 0.4);
+ /**
+ * @name
+ * @type color
+ * @group mask
+ * @description 局部遮罩
+ */
+ --o-color-mask2: rgba(var(--o-mixedgray-1), 0.2);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 常规
+ */
+ --o-color-link1: rgba(var(--o-deepblue-6), 1);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 悬浮
+ */
+ --o-color-link2: rgba(var(--o-deepblue-6), 0.7);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 激活
+ */
+ --o-color-link3: rgba(var(--o-deepblue-6), 0.9);
+ /**
+ * @name
+ * @type color
+ * @group link
+ * @description 禁用
+ */
+ --o-color-link4: rgba(var(--o-deepblue-6), 0.4);
+ /**
+ * @name 阴影1
+ * @type shadow
+ * @group shadow
+ * @description 用于卡片、小弹窗、楼层阴影
+ */
+ --o-shadow-1: 0 3px 8px rgba(var(--o-mixedgray-13), 0.08);
+ /**
+ * @name 阴影2
+ * @type shadow
+ * @group shadow
+ * @description 用于卡片悬浮阴影
+ */
+ --o-shadow-2: 0 2px 24px rgba(var(--o-mixedgray-13), 0.15);
+ /**
+ * @name 阴影3
+ * @type shadow
+ * @group shadow
+ * @description 用于提示阴影
+ */
+ --o-shadow-3: 0 8px 40px rgba(var(--o-mixedgray-13), 0.1);
+ /**
+ * @name 间距1
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距1
+ */
+ --o-gap-1: 4px;
+ /**
+ * @name 间距2
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距2
+ */
+ --o-gap-2: 8px;
+ /**
+ * @name 间距3
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距3
+ */
+ --o-gap-3: 12px;
+ /**
+ * @name 间距4
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距4
+ */
+ --o-gap-4: 16px;
+ /**
+ * @name 间距5
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距5
+ */
+ --o-gap-5: 24px;
+ /**
+ * @name 间距6
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距6
+ */
+ --o-gap-6: 32px;
+ /**
+ * @name 间距7
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距7
+ */
+ --o-gap-7: 40px;
+ /**
+ * @name 间距8
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距8
+ */
+ --o-gap-8: 48px;
+ /**
+ * @name 间距9
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距9
+ */
+ --o-gap-9: 64px;
+ /**
+ * @name 间距10
+ * @type gap
+ * @group gap
+ * @description 用于组件之间的间距10
+ */
+ --o-gap-10: 72px;
+ /**
+ * @name 超小尺寸
+ * @type size
+ * @group control_size
+ * @description 超小尺寸
+ */
+ --o-control_size-2xs: 14px;
+ /**
+ * @name 小尺寸
+ * @type size
+ * @group control_size
+ * @description 小尺寸
+ */
+ --o-control_size-xs: 16px;
+ /**
+ * @name 小尺寸
+ * @type size
+ * @group control_size
+ * @description 小尺寸
+ */
+ --o-control_size-s: 24px;
+ /**
+ * @name 中尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-m: 32px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-l: 40px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-xl: 48px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-2xl: 56px;
+ /**
+ * @name 超小尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 超小尺寸图标
+ */
+ --o-icon_size-xs: 16px;
+ /**
+ * @name 小尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 小尺寸图标
+ */
+ --o-icon_size-s: 20px;
+ /**
+ * @name 中尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 中尺寸图标
+ */
+ --o-icon_size-m: 24px;
+ /**
+ * @name 大尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 大尺寸图标
+ */
+ --o-icon_size-l: 32px;
+ /**
+ * @name 超大尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 超大尺寸图标
+ */
+ --o-icon_size-xl: 40px;
+ /**
+ * @name 2xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 2xl尺寸图标
+ */
+ --o-icon_size-2xl: 48px;
+ /**
+ * @name 3xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 3xl尺寸图标
+ */
+ --o-icon_size-3xl: 56px;
+ /**
+ * @name 4xl尺寸图标
+ * @type size
+ * @group icon_size
+ * @description 4xl尺寸图标
+ */
+ --o-icon_size-4xl: 64px;
+ /**
+ * @name 超小尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 超小尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-xs: 16px;
+ /**
+ * @name 小尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 小尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-s: 20px;
+ /**
+ * @name 中尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 中尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-m: 24px;
+ /**
+ * @name 大尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 大尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-l: 32px;
+ /**
+ * @name 超大尺寸图标
+ * @type size
+ * @group icon_size_control
+ * @description 超大尺寸控件图标(组件使用)
+ */
+ --o-icon_size_control-xl: 40px;
+ /**
+ * @name 一级数据展示
+ * @type font
+ * @group font_size
+ * @description 一级数据展示
+ */
+ --o-font_size-display1: 56px;
+ /**
+ * @name 二级数据展示
+ * @type font
+ * @group font_size
+ * @description 二级数据展示
+ */
+ --o-font_size-display2: 48px;
+ /**
+ * @name 三级数据展示
+ * @type font
+ * @group font_size
+ * @description 三级数据展示
+ */
+ --o-font_size-display3: 40px;
+ /**
+ * @name 一级标题
+ * @type font
+ * @group font_size
+ * @description 一级标题
+ */
+ --o-font_size-h1: 32px;
+ /**
+ * @name 二级标题
+ * @type font
+ * @group font_size
+ * @description 二级标题
+ */
+ --o-font_size-h2: 24px;
+ /**
+ * @name 三级标题
+ * @type font
+ * @group font_size
+ * @description 三级标题
+ */
+ --o-font_size-h3: 22px;
+ /**
+ * @name 四级标题
+ * @type font
+ * @group font_size
+ * @description 四级标题
+ */
+ --o-font_size-h4: 20px;
+ /**
+ * @name 常规正文
+ * @type font
+ * @group font_size
+ * @description 常规正文
+ */
+ --o-font_size-text1: 16px;
+ /**
+ * @name 大号正文
+ * @type font
+ * @group font_size
+ * @description 大号正文
+ */
+ --o-font_size-text2: 18px;
+ /**
+ * @name 提示文本1
+ * @type font
+ * @group font_size
+ * @description 提示文本1
+ */
+ --o-font_size-tip1: 14px;
+ /**
+ * @name 提示文本2
+ * @type font
+ * @group font_size
+ * @description 提示文本2
+ */
+ --o-font_size-tip2: 12px;
+ /**
+ * @name 一级数据展示
+ * @type font
+ * @group line_height
+ * @description 一级数据展示
+ */
+ --o-line_height-display1: 80px;
+ /**
+ * @name 二级数据展示
+ * @type font
+ * @group line_height
+ * @description 二级数据展示
+ */
+ --o-line_height-display2: 64px;
+ /**
+ * @name 三级数据展示
+ * @type font
+ * @group line_height
+ * @description 三级数据展示
+ */
+ --o-line_height-display3: 56px;
+ /**
+ * @name 一级标题
+ * @type font
+ * @group line_height
+ * @description 一级标题
+ */
+ --o-line_height-h1: 44px;
+ /**
+ * @name 二级标题
+ * @type font
+ * @group line_height
+ * @description 二级标题
+ */
+ --o-line_height-h2: 32px;
+ /**
+ * @name 三级标题
+ * @type font
+ * @group line_height
+ * @description 三级标题
+ */
+ --o-line_height-h3: 30px;
+ /**
+ * @name 四级标题
+ * @type font
+ * @group line_height
+ * @description 四级标题
+ */
+ --o-line_height-h4: 28px;
+ /**
+ * @name 正文
+ * @type font
+ * @group line_height
+ * @description 正文
+ */
+ --o-line_height-text1: 24px;
+ /**
+ * @name 正文-大
+ * @type font
+ * @group line_height
+ * @description 正文-大
+ */
+ --o-line_height-text2: 26px;
+ /**
+ * @name 提示文本1
+ * @type font
+ * @group line_height
+ * @description 提示文本1
+ */
+ --o-line_height-tip1: 22px;
+ /**
+ * @name 提示文本2
+ * @type font
+ * @group line_height
+ * @description 提示文本2
+ */
+ --o-line_height-tip2: 18px;
+ /**
+ * @name 超小尺寸圆角
+ * @type size
+ * @group radius
+ * @description 超小尺寸圆角
+ */
+ --o-radius-xs: 4px;
+ /**
+ * @name 小尺寸圆角
+ * @type size
+ * @group radius
+ * @description 小尺寸圆角
+ */
+ --o-radius-s: 4px;
+ /**
+ * @name 中尺寸圆角
+ * @type size
+ * @group radius
+ * @description 中尺寸圆角
+ */
+ --o-radius-m: 4px;
+ /**
+ * @name 大尺寸圆角
+ * @type size
+ * @group radius
+ * @description 大尺寸圆角
+ */
+ --o-radius-l: 4px;
+ /**
+ * @name 大尺寸圆角
+ * @type size
+ * @group radius
+ * @description 大尺寸圆角,一般用于卡片
+ */
+ --o-radius-xl: 4px;
+ /**
+ * @name 超小尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 超小尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-xs: 4px;
+ /**
+ * @name 小尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 小尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-s: 4px;
+ /**
+ * @name 中尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 中尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-m: 4px;
+ /**
+ * @name 大尺寸控件圆角
+ * @type size
+ * @group radius_control
+ * @description 大尺寸控件圆角(组件使用)
+ */
+ --o-radius_control-l: 4px;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于退出屏幕的动画
+ */
+ --o-duration-s: 200ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为standard-in时进入屏幕的动画
+ */
+ --o-duration-m1: 250ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为standard时开始、结束的动画
+ */
+ --o-duration-m2: 300ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized-in时进入屏幕的动画
+ */
+ --o-duration-m3: 400ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized时开始、结束的动画
+ */
+ --o-duration-l: 500ms;
+ /**
+ * @name 持续时间
+ * @type animation
+ * @group duration
+ * @description 用于当曲线为emphasized时,轮播切换动画
+ */
+ --o-duration-xl: 1000ms;
+ /**
+ * @name 线性动画曲线
+ * @type animation
+ * @group easing
+ * @description 线性曲线
+ */
+ --o-easing-linear: cubic-bezier(0, 0, 1, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard: cubic-bezier(0.2, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard-in: cubic-bezier(0, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于组件
+ */
+ --o-easing-standard-out: cubic-bezier(0.3, 0, 1, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized-in: cubic-bezier(0.3, 0, 0.8, 0.15);
+ /**
+ * @name 动画曲线
+ * @type animation
+ * @group easing
+ * @description 用于大卡片、场景切换
+ */
+ --o-easing-emphasized-out: cubic-bezier(0.05, 0.7, 0.1, 1);
+ /**
+ * @name openUBMC主题色
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色
+ */
+ --o-ubmc-color: 0, 113, 243;
+ --o-ubmc-color2: 51, 141, 245;
+ --o-ubmc-color3: 0, 84, 230;
+ --o-ubmc-color4: 153, 198, 250;
+ /**
+ * 先在这里覆盖一下使用蓝色
+ */
+ --o-color-ubmc: rgb(var(--o-ubmc-color));
+ /**
+ * @name openUBMC主题色hover态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-hover: rgba(var(--o-ubmc-color2), 1);
+ /**
+ * @name openUBMC主题色激活态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-focus: rgba(var(--o-ubmc-color3), 1);
+ /**
+ * @name openUBMC主题色禁用态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题色hover态
+ */
+ --o-color-ubmc-disabled: rgba(var(--o-ubmc-color4), 1);
+ /**
+ * @name openUBMC主题背景色
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色
+ */
+ --o-color-ubmc-bg: rgba(247, 248, 250, 1);
+ --o-color-ubmc-bg2: rgba(235, 241, 250, 1);
+ /**
+ * @name openUBMC主题背景色悬浮态
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色悬浮态
+ */
+ --o-color-ubmc-bg-hover: rgba(247, 248, 250, 0.4);
+ /**
+ * @name openUBMC主题背景色悬浮态2
+ * @type color
+ * @group ubmc
+ * @description openUBMC主题背景色悬浮态2
+ */
+ --o-color-ubmc-bg-hover2: rgba(103, 163, 250, 0.4);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规
+ */
+ --o-color-primary1: var(--o-color-ubmc);
+ --o-color-link1: var(--o-color-primary1);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮
+ */
+ --o-color-primary2: var(--o-color-ubmc-hover);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活
+ */
+ --o-color-primary3: var(--o-color-ubmc-focus);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用
+ */
+ --o-color-primary4: var(--o-color-ubmc-disabled);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 常规-浅
+ */
+ --o-color-primary1-light: var(--o-color-ubmc);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 悬浮-浅
+ */
+ --o-color-primary2-light: var(--o-color-ubmc-hover);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 激活-浅
+ */
+ --o-color-primary3-light: var(--o-color-ubmc-focus);
+ /**
+ * @name
+ * @type color
+ * @group primary
+ * @description 禁用-浅
+ */
+ --o-color-primary4-light: var(--o-color-ubmc-disabled);
+
+ /**
+ * @name
+ * @type color
+ * @group control
+ * @description 悬浮,常用于边框
+ */
+ --o-color-control2: rgba(var(--o-ubmc-color), 1);
+}
diff --git a/packages/openubmc/src/assets/style/theme/element-plus.scss b/packages/openubmc/src/assets/style/theme/element-plus.scss
new file mode 100644
index 0000000000000000000000000000000000000000..a3ceb7d17b810b0069c6afd4a424d0fb526081ee
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/element-plus.scss
@@ -0,0 +1,43 @@
+:root {
+ --el-color-primary: var(--o-color-primary3) !important;
+ --el-border-radius-base: var(--o-radius_control-m) !important;
+ --el-border-color: var(--o-color-control1) !important;
+ --el-border-color-hover: var(--o-color-control2) !important;
+ --el-border-color-disabled: var(--o-color-control4) !important;
+ @include respond-to('phone') {
+ --el-border-radius-base: var(--o-radius_control-xs) !important;
+ }
+}
+.el-input {
+ .el-input__wrapper {
+ background-color: var(--o-color-fill2);
+ }
+}
+.el-input--large {
+ font-size: 16px;
+}
+
+.el-select__wrapper {
+ .el-select__selection {
+ font-size: 16px;
+ }
+}
+.el-message {
+ &.mobile-message {
+ top: initial !important;
+ bottom: 80px;
+ border: none;
+ border-radius: 4px;
+ background-color: rgba(var(--o-mixedgray-14), 0.6);
+ padding: 9px 16px;
+ .el-icon {
+ display: none;
+ }
+ .el-message__content {
+ font-size: 14px;
+ line-height: 22px;
+ color: var(--o-color-info1-inverse);
+ }
+
+ }
+}
diff --git a/packages/openubmc/src/assets/style/theme/index.scss b/packages/openubmc/src/assets/style/theme/index.scss
new file mode 100644
index 0000000000000000000000000000000000000000..14d2aa491dcc29f2fbb6b2bc0b59d35059de5ef3
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/index.scss
@@ -0,0 +1,61 @@
+@use "./media.token.scss" as *;
+
+@use "./o-theme/index.scss" as *;
+
+
+
+.hover-stress {
+ color: var(--o-color-info2);
+ @include hover {
+ color: var(--o-color-info1) !important;
+ }
+}
+
+.hover-info1-to-info3 {
+ color: var(--o-color-info1);
+ @include hover {
+ color: var(--o-color-info3);
+ }
+}
+
+.hover-underline {
+ --link-color-hover: var(--o-color-ubmc-hover);
+ --link-underline-x: 100%;
+ background: linear-gradient(0deg, var(--link-color-hover), var(--link-color-hover)) no-repeat var(--link-underline-x) bottom;
+ background-size: 0 1px;
+ transition: background-size var(--o-easing-standard) var(--o-duration-m2);
+
+ @include hover {
+ background-size: var(--link-underline-x) 1px;
+ background-position-x: left;
+ }
+}
+a.hover-underline {
+ color: var(--o-color-ubmc);
+}
+
+.hover-icon-rotate {
+ .o-icon {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ }
+
+ @include hover {
+ .o-icon {
+ transform: rotate(-180deg);
+ }
+ }
+}
+.personal-wrapper {
+ display: flex;
+ .personal-left {
+ background-color: transparent;
+ width: 264px;
+ margin-right: var(--grid-column-gutter);
+ }
+ .personal-right {
+ flex-grow: 1;
+ @include respond-to('laptop-pc') {
+ width: var(--grid-17);
+ }
+ }
+}
diff --git a/packages/openubmc/src/assets/style/theme/media.token.scss b/packages/openubmc/src/assets/style/theme/media.token.scss
new file mode 100644
index 0000000000000000000000000000000000000000..fee386e28ba15bbeb085e0a359531771ed9d8fd7
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/media.token.scss
@@ -0,0 +1,157 @@
+@use '../mixin/screen.scss' as *;
+
+:root,
+[data-o-theme='light'],
+[data-o-theme='dark'] {
+ --layout-border-radius: 8px;
+ @include respond-to('pad_v') {
+ --layout-border-radius: 4px;
+ }
+
+ @include respond-to('phone') {
+ --layout-border-radius: 4px;
+ }
+}
+
+@include respond-to('laptop') {
+ :root,
+ [data-o-theme='light'],
+ [data-o-theme='dark'] {
+ /**
+ * @name 中尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-m: 28px;
+ /**
+ * @name 大尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-l: 36px;
+ }
+}
+
+@include respond-to('<=pad') {
+ :root,
+ [data-o-theme='light'],
+ [data-o-theme='dark'] {
+ /**
+ * @name 中尺寸
+ * @type size
+ * @group control_size
+ * @description 尺寸
+ */
+ --o-control_size-m: 28px;
+ }
+}
+
+:root,
+[data-o-theme='light'],
+[data-o-theme='dark'] {
+ --o-gap-t2c: 40px;
+ --o-gap-section: 72px;
+ --o-gap-section-3: 12px;
+ --o-gap-section-4: 16px;
+ --o-gap-section-5: 24px;
+ --o-gap-section-6: 32px;
+ --o-gap-section-7: 40px;
+ --o-gap-section-8: 48px;
+ --layout-header-height: 72px;
+
+ @include respond-to('laptop') {
+ --o-gap-t2c: 24px;
+ --o-gap-section: 56px;
+ --o-gap-section-3: 8px;
+ --o-gap-section-4: 12px;
+ --o-gap-section-5: 16px;
+ --o-gap-section-6: 24px;
+ --o-gap-section-7: 24px;
+ --o-gap-section-8: 40px;
+ --layout-header-height: 64px;
+ }
+
+ @include respond-to('pad_h') {
+ --o-gap-t2c: 16px;
+ --o-gap-section: 40px;
+ --o-gap-section-3: 8px;
+ --o-gap-section-4: 8px;
+ --o-gap-section-5: 12px;
+ --o-gap-section-6: 16px;
+ --o-gap-section-7: 16px;
+ --o-gap-section-8: 24px;
+ --layout-header-height: 56px;
+ }
+
+ @include respond-to('pad_v') {
+ --o-gap-t2c: 16px;
+ --o-gap-section: 32px;
+ --o-gap-section-3: 12px;
+ --o-gap-section-4: 16px;
+ --o-gap-section-5: 24px;
+ --o-gap-section-6: 28px;
+ --o-gap-section-7: 12px;
+ --layout-header-height: 48px;
+ }
+
+ @include respond-to('phone') {
+ --o-gap-t2c: 12px;
+ --o-gap-section: 32px;
+ --o-gap-section-3: 8px;
+ --o-gap-section-4: 12px;
+ --o-gap-section-5: 16px;
+ --o-gap-section-6: 24px;
+ --o-gap-section-7: 12px;
+ --layout-header-height: 48px;
+ }
+}
+
+:root,
+[data-o-theme='light'],
+[data-o-theme='dark'] {
+ @include respond-to('laptop') {
+ --o-icon_size-xs: 16px;
+ --o-icon_size-s: 20px;
+ --o-icon_size-m: 24px;
+ --o-icon_size-l: 32px;
+ --o-icon_size-xl: 40px;
+ --o-icon_size-2xl: 48px;
+ --o-icon_size-3xl: 48px;
+ --o-icon_size-4xl: 56px;
+ }
+
+ @include respond-to('pad_h') {
+ --o-icon_size-xs: 16px;
+ --o-icon_size-s: 20px;
+ --o-icon_size-m: 24px;
+ --o-icon_size-l: 24px;
+ --o-icon_size-xl: 32px;
+ --o-icon_size-2xl: 40px;
+ --o-icon_size-3xl: 40px;
+ --o-icon_size-4xl: 48px;
+ }
+
+ @include respond-to('pad_v') {
+ --o-icon_size-xs: 16px;
+ --o-icon_size-s: 20px;
+ --o-icon_size-m: 24px;
+ --o-icon_size-l: 24px;
+ --o-icon_size-xl: 32px;
+ --o-icon_size-2xl: 32px;
+ --o-icon_size-3xl: 40px;
+ --o-icon_size-4xl: 40px;
+ }
+
+ @include respond-to('phone') {
+ --o-icon_size-xs: 16px;
+ --o-icon_size-s: 24px;
+ --o-icon_size-m: 24px;
+ --o-icon_size-l: 24px;
+ --o-icon_size-xl: 32px;
+ --o-icon_size-2xl: 32px;
+ --o-icon_size-3xl: 40px;
+ --o-icon_size-4xl: 40px;
+ }
+}
diff --git a/packages/openubmc/src/assets/style/theme/mixin.scss b/packages/openubmc/src/assets/style/theme/mixin.scss
new file mode 100644
index 0000000000000000000000000000000000000000..4c606c0048ad0d6d5c60a223040b935447d31833
--- /dev/null
+++ b/packages/openubmc/src/assets/style/theme/mixin.scss
@@ -0,0 +1,89 @@
+// 断点定义
+$breakpoints: (
+ // phone
+ 'phone': (0, 600px),
+ '>phone': 601px,
+ // pad
+ 'pad': (601px, 1200px),
+ '<=pad': (0, 1200px),
+ '>pad': 1201px,
+ // pad-v
+ 'pad_v': (601px, 840px),
+ '<=pad_v': (0, 840px),
+ '>pad_v': 841px,
+ // pad-h
+ 'pad_h': (841px, 1200px),
+ // laptop
+ 'laptop': (1201px, 1440px),
+ '<=laptop': (0, 1440px),
+ '>laptop': 1441px,
+ 'pad-laptop': (601px, 1440px),
+ 'pad_v-laptop': (841px, 1440px),
+ 'laptop-pc': (1201px, 1680px),
+ 'pc': (1441px, 1680px),
+ 'pc_l': (1681px, 1920px),
+ '>pc_l': 1921px
+);
+
+@mixin respond-to($breakname) {
+ $bp: map-get($breakpoints, $breakname);
+ @if type-of($bp) == 'list' {
+ $min: nth($bp, 1);
+ $max: nth($bp, 2);
+ @if $min == 0 {
+ @media (max-width: $max) {
+ @content;
+ }
+ } @else {
+ @media (min-width: $min) and (max-width: $max) {
+ @content;
+ }
+ }
+ } @else {
+ @media (min-width: $bp) {
+ @content;
+ }
+ }
+}
+
+@mixin hoverable($hover: hover) {
+ @media (hover: $hover) {
+ @content;
+ }
+}
+
+@mixin hover() {
+ @media (hover: hover) {
+ &:hover {
+ @content;
+ }
+ }
+}
+
+@mixin me-hover() {
+ @content;
+ @media (hover: hover) {
+ &:hover {
+ @content;
+ }
+ }
+}
+
+@mixin x-hover() {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ @include hover {
+ transform: rotate(180deg);
+ }
+}
+
+@mixin x-svg-hover() {
+ overflow: hidden;
+ svg {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ }
+ @include hover {
+ svg {
+ transform: rotate(180deg);
+ }
+ }
+}
diff --git a/packages/openubmc/src/assets/svg-icons/empty.svg b/packages/openubmc/src/assets/svg-icons/empty.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3d5fb18b481f16f72226d869539a6756c682bccb
--- /dev/null
+++ b/packages/openubmc/src/assets/svg-icons/empty.svg
@@ -0,0 +1,107 @@
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/svg-icons/gitcode.svg b/packages/openubmc/src/assets/svg-icons/gitcode.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f5ce3889c6b6d57e560d09f9c17d54d8f3f714f3
--- /dev/null
+++ b/packages/openubmc/src/assets/svg-icons/gitcode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/svg-icons/logo-white.svg b/packages/openubmc/src/assets/svg-icons/logo-white.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9e07b88155b2484267aec03f95e9567bac72e8af
--- /dev/null
+++ b/packages/openubmc/src/assets/svg-icons/logo-white.svg
@@ -0,0 +1,13 @@
+
diff --git a/packages/openubmc/src/assets/svg-icons/logo.svg b/packages/openubmc/src/assets/svg-icons/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..87f55108845cf7ff9a4443269c278a2d5758e741
--- /dev/null
+++ b/packages/openubmc/src/assets/svg-icons/logo.svg
@@ -0,0 +1,13 @@
+
diff --git a/packages/openubmc/src/assets/svg-icons/mail.svg b/packages/openubmc/src/assets/svg-icons/mail.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a5905d9d9f205dbb433f96d2e6105e48351c119f
--- /dev/null
+++ b/packages/openubmc/src/assets/svg-icons/mail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/openubmc/src/assets/title-bg.png b/packages/openubmc/src/assets/title-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a0338c7cadf145c1ef346758bac79ae376adb3f
Binary files /dev/null and b/packages/openubmc/src/assets/title-bg.png differ
diff --git a/packages/openubmc/src/components/AppFooter.vue b/packages/openubmc/src/components/AppFooter.vue
new file mode 100644
index 0000000000000000000000000000000000000000..25f0abb56310d32ef2dc646e5bc1e726cf45ff68
--- /dev/null
+++ b/packages/openubmc/src/components/AppFooter.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/components/AppHeader.vue b/packages/openubmc/src/components/AppHeader.vue
new file mode 100644
index 0000000000000000000000000000000000000000..62af07bf18cff531e640012838e54d33b9a6738b
--- /dev/null
+++ b/packages/openubmc/src/components/AppHeader.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/components/CommonLayout.vue b/packages/openubmc/src/components/CommonLayout.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c2c09545b76452158e8aa9a64d5fc89a90548e23
--- /dev/null
+++ b/packages/openubmc/src/components/CommonLayout.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/components/HeaderNav.vue b/packages/openubmc/src/components/HeaderNav.vue
new file mode 100644
index 0000000000000000000000000000000000000000..4f1474e60ddb24ee66105a39061a2e92f351434e
--- /dev/null
+++ b/packages/openubmc/src/components/HeaderNav.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
diff --git a/packages/openubmc/src/components/LoadingArc.vue b/packages/openubmc/src/components/LoadingArc.vue
new file mode 100644
index 0000000000000000000000000000000000000000..2d6e9868af68782e521d6b823a66d361c34569d6
--- /dev/null
+++ b/packages/openubmc/src/components/LoadingArc.vue
@@ -0,0 +1,61 @@
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/components/SectionCard.vue b/packages/openubmc/src/components/SectionCard.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9c908ca765ca5efb588668726e390b7aaae3a875
--- /dev/null
+++ b/packages/openubmc/src/components/SectionCard.vue
@@ -0,0 +1,26 @@
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/components/ToggleRadios.vue b/packages/openubmc/src/components/ToggleRadios.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d0a69ffce4138d81d9c6c33a516cb265081cf804
--- /dev/null
+++ b/packages/openubmc/src/components/ToggleRadios.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/composables/useCommonFilters.ts b/packages/openubmc/src/composables/useCommonFilters.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c36d3b42f53bfc095bc2fb1c78a36a93928721ee
--- /dev/null
+++ b/packages/openubmc/src/composables/useCommonFilters.ts
@@ -0,0 +1,43 @@
+import i18n from '@/i18n';
+import { computed, ref } from 'vue';
+
+const contributionTypeLabelMap = {
+ pr: 'PR',
+ issue: 'Issue',
+ comment: 'Comment',
+} as Record;
+
+export default function useCommonFilters(_i18n = i18n.global) {
+ const contributionTypeOptions = computed(() => [
+ { label: _i18n.t('common.home.prs'), value: 'pr' },
+ { label: _i18n.t('common.home.issues'), value: 'issue' },
+ { label: _i18n.t('common.home.comments'), value: 'comment' },
+ ]);
+ const contributionType = ref(contributionTypeOptions.value[0].value);
+ const contributionTypeLabel = computed(() => contributionTypeLabelMap[contributionType.value]);
+
+ const today = new Date();
+ today.setHours(0, 0, 0, 0);
+ const initialTimeRange = [new Date(2024, 10, 1), today];
+ const timeRange = ref([]);
+ const disabledTimeRange = (date: Date) => {
+ return date < initialTimeRange[0] || date > initialTimeRange[1];
+ };
+
+ const commentTypeOptions = computed(() => [
+ { label: _i18n.t('common.from.all'), value: '' },
+ { label: _i18n.t('common.General'), value: 'normal' },
+ { label: _i18n.t('common.Order'), value: 'command' },
+ ]);
+ const commentType = ref('');
+
+ return {
+ contributionTypeOptions,
+ contributionType,
+ contributionTypeLabel,
+ timeRange,
+ disabledTimeRange,
+ commentTypeOptions,
+ commentType,
+ };
+}
diff --git a/packages/openubmc/src/config/home.ts b/packages/openubmc/src/config/home.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cdec25d41f90283c080718bc4f0bf61e50caac83
--- /dev/null
+++ b/packages/openubmc/src/config/home.ts
@@ -0,0 +1,123 @@
+export const FOOTER_LINK = [
+ {
+ title: '关于openUBMC',
+ children: [
+ {
+ title: '社区组织',
+ link: 'https://www.openubmc.cn/organizations',
+ },
+ {
+ title: '政策规则',
+ link: 'https://www.openubmc.cn/charter',
+ },
+ ],
+ },
+ {
+ title: '新闻和资讯',
+ children: [
+ {
+ title: '新闻资讯',
+ link: 'https://www.openubmc.cn/news',
+ },
+ {
+ title: '博客',
+ link: 'https://www.openubmc.cn/blogs',
+ },
+ {
+ title: '技术白皮书',
+ link: 'https://www.openubmc.cn/whitepaper',
+ },
+ ],
+ },
+ {
+ title: '获取与下载',
+ children: [
+ {
+ title: '社区发行版',
+ link: 'https://www.openubmc.cn/download',
+ },
+ {
+ title: '应用市场',
+ link: 'https://www.openubmc.cn/marketplace',
+ },
+ ],
+ },
+ {
+ title: '支持与服务',
+ children: [
+ {
+ title: '文档中心',
+ link: 'https://www.openubmc.cn/docs',
+ },
+ {
+ title: '常见FAQ',
+ link: 'https://www.openubmc.cn/docs/zh/development/faq/general.html',
+ },
+ {
+ title: '漏洞管理',
+ link: 'https://www.openubmc.cn/security-advisories',
+ },
+ ],
+ },
+ {
+ title: '互动与交流',
+ children: [
+ {
+ title: '社区论坛',
+ link: import.meta.env.VITE_FORUM_URL,
+ },
+ {
+ title: '邮件列表',
+ link: 'https://www.openubmc.cn/maillist',
+ },
+ ],
+ },
+ {
+ title: '贡献与成长',
+ children: [
+ {
+ title: 'SIG中心',
+ link: 'https://www.openubmc.cn/sig',
+ },
+ {
+ title: '贡献攻略',
+ link: 'https://www.openubmc.cn/contribution',
+ },
+ {
+ title: 'CLA签署',
+ link: 'https://clasign.osinfra.cn/sign/gitee_openubmc-1732941016829438030?lang=zh',
+ },
+ ],
+ },
+];
+
+export const FRIEND_LINK = [
+ {
+ title: '全球计算联盟',
+ link: 'https://gccorg.com/',
+ },
+ {
+ title: '鲲鹏社区',
+ link: 'https://www.hikunpeng.com/zh/',
+ },
+ {
+ title: '昇腾社区',
+ link: 'https://www.hiascend.com/zh/',
+ },
+ {
+ title: 'openEuler',
+ link: 'https://www.openeuler.org/zh/',
+ },
+ {
+ title: 'openGauss',
+ link: 'https://opengauss.org/zh/',
+ },
+ {
+ title: '昇思MindSpore',
+ link: 'https://www.mindspore.cn/',
+ },
+ {
+ title: 'openFuyao',
+ link: 'https://www.openfuyao.cn/',
+ },
+];
diff --git a/packages/openubmc/src/config/url-config.ts b/packages/openubmc/src/config/url-config.ts
new file mode 100644
index 0000000000000000000000000000000000000000..081e9478255f3e229c8c06cfd7a6119c3c73b98f
--- /dev/null
+++ b/packages/openubmc/src/config/url-config.ts
@@ -0,0 +1,7 @@
+const RECORDAL_URL = 'https://beian.miit.gov.cn/#/Integrated/index';
+const GITCODE_URL = 'https://gitcode.com/';
+const MAILWEB_URL = 'https://mailweb.openubmc.cn/';
+
+const BEIAN_URL = 'https://beian.mps.gov.cn/#/query/webSearch'
+
+export { RECORDAL_URL, GITCODE_URL, MAILWEB_URL, BEIAN_URL };
diff --git a/packages/openubmc/src/i18n/footer/index.ts b/packages/openubmc/src/i18n/footer/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..00407a0561867e04b833ba2e9a1aef4b9424b916
--- /dev/null
+++ b/packages/openubmc/src/i18n/footer/index.ts
@@ -0,0 +1,5 @@
+import zh from './zh';
+
+export default {
+ zh,
+};
diff --git a/packages/openubmc/src/i18n/footer/zh.ts b/packages/openubmc/src/i18n/footer/zh.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6e3ba6d09927d01520eef5079dc1c064289c83c4
--- /dev/null
+++ b/packages/openubmc/src/i18n/footer/zh.ts
@@ -0,0 +1,18 @@
+export default {
+ learn: '学习',
+ documentCenter: '文档中心',
+ videoTeaching: '视频教学',
+ community: '社区',
+ sigCenter: 'SIG中心',
+ forums: '论坛',
+ support: '支持',
+ FAQs: '常见FAQ',
+ problemFeedback: '问题反馈',
+ friendlyLink: '友情链接',
+ copyright: '版权所有 © {year} openUBMC 保留一切权利',
+ recordal: '粤A2-20044005号-293',
+ beian: '粤公网安备 44030002006086号',
+ privacyPolicy: '隐私政策',
+ legalStatement: '法律声明',
+ aboutCookies: '关于cookies',
+};
diff --git a/packages/openubmc/src/i18n/header/index.ts b/packages/openubmc/src/i18n/header/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3d6aa3c91005bd6265267e50859b22566eacdd4f
--- /dev/null
+++ b/packages/openubmc/src/i18n/header/index.ts
@@ -0,0 +1,5 @@
+import zh from "./zh";
+
+export default {
+ zh,
+}
\ No newline at end of file
diff --git a/packages/openubmc/src/i18n/header/zh.ts b/packages/openubmc/src/i18n/header/zh.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3267bccb1c3db58d0d5a95405bf02e47321aeff5
--- /dev/null
+++ b/packages/openubmc/src/i18n/header/zh.ts
@@ -0,0 +1,38 @@
+export default {
+ home: '首页',
+ development: '开发',
+ softwareCenter: '软件中心',
+ code: '代码仓',
+ testPlatform: '测试平台',
+ learn: '学习',
+ docsCenter: '文档中心',
+ videoTeach: '视频教学',
+ community: '社区',
+ orgStructure: '组织架构',
+ policyRules: '政策规则',
+ sig: 'SIG中心',
+ maillist: '邮件列表',
+ contributionGuide: '贡献攻略',
+ forum: '社区论坛',
+ growth: '开发者成长',
+ cla: 'CLA签署',
+ trends: '动态',
+ news: '新闻资讯',
+ blogs: '博客',
+ support: '支持',
+ faq: '常见FAQ',
+ feedback: '问题反馈',
+ security: '漏洞管理',
+ search: '搜索API、文档、教程、动态...',
+ search2: '搜索',
+ recentSearch: '最近搜索',
+ hotSearch: '热门搜索',
+ minisite: '活动大赛',
+ notOnline: '待上线',
+ releasePlatform: '发布平台',
+ communityReleases: '社区发行版',
+ download: '下载',
+ marketplace: '应用市场',
+ docs: '文档',
+ resourceCenter: '资源中心',
+};
diff --git a/packages/openubmc/src/i18n/index.ts b/packages/openubmc/src/i18n/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dd4f88dc019b0612305e6da959c472b79796ae65
--- /dev/null
+++ b/packages/openubmc/src/i18n/index.ts
@@ -0,0 +1,20 @@
+import { createI18n } from 'vue-i18n';
+import zhLanguage from './lang/zhLanguage';
+import enLanguage from './lang/enLanguage';
+import header from './header'
+import footer from './footer'
+
+export default createI18n({
+ legacy: false,
+ locale: 'zh',
+ messages: {
+ zh: {
+ common: zhLanguage,
+ header: header.zh,
+ footer: footer.zh
+ },
+ en: {
+ common: enLanguage,
+ },
+ },
+});
diff --git a/packages/openubmc/src/i18n/lang/enLanguage.ts b/packages/openubmc/src/i18n/lang/enLanguage.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a90963dbefa5f5e5702ce6e7fd508dfb7651835e
--- /dev/null
+++ b/packages/openubmc/src/i18n/lang/enLanguage.ts
@@ -0,0 +1,157 @@
+export default {
+ languageName: 'English',
+ datastat: 'DATASTAT',
+ nav: {
+ overview: 'Overview',
+ contributors: 'Detail',
+ },
+ home: {
+ moreData: 'Explore more details',
+ user: 'User',
+ contributors: 'Contributor',
+ partners: 'Organization Member',
+ prs: 'PR',
+ issues: 'Issue',
+ comments: 'Comment',
+ sigs: 'SIG',
+ repos: 'Repository',
+ isv: 'ISV',
+ },
+ from: {
+ type: 'Metric',
+ timeRange: 'Time Range',
+ lastonemonth: 'Last Month',
+ lasthalfyear: 'Last 6 Months',
+ lastoneyear: 'Last Year',
+ all: 'All',
+ displayRange: 'Display Range',
+ pleasePartner: 'Please enter an organization name',
+ version: 'Version statistics',
+ LOC: 'LOC',
+ },
+ startDate: 'Start date',
+ endDate: 'End date',
+ products: 'SIG Output',
+ productQuality: 'Output Quality',
+ processQuality: 'Process Quality',
+ tissueRobustness: 'Organizational Robustness',
+ influence: 'Influence',
+ vitalIndex: 'Activeness Index',
+ communityAverage: 'Community Average',
+ PRMerged: 'PR meraged',
+ IssueResolve: 'Issue resolve',
+ PREfficiency: 'PR efficiency',
+ toHome: 'Go to home page',
+ MailingList: 'Mailing List',
+ DynamicContribute: 'DynamicContribute',
+ channel: 'IRC Channel',
+ warehouse: 'Warehouse',
+ SIGContribution: 'SIG Contribution',
+ D1Number: 'D1',
+ SIGNumber: 'SIGNumber',
+ contribute: 'Contribute',
+ Maintainer: 'Maintainer',
+ communityRankings: 'Ranking',
+ combinedActivity: 'Overall Activeness',
+ contributionsTitle: 'Community Contribution data',
+ userContributor: 'Contribution by Individuals',
+ companyContributor: 'Contribution by Organizations',
+ groupActive: 'SIG Activity Overview',
+ Currentcontributionranking: 'Total Contributions',
+ Pleaseenterunitnameforsearch: 'Please enter an organization name',
+ Numbercontributors: 'Number of Contributors',
+ Contributordistribution: 'Contributor Distribution',
+ Commitcontribution: 'Submit Contributions',
+ participation: 'participation',
+ review: 'review',
+ Mergerequest: 'Merge request',
+ NeedsProblems: 'Needs & Problems',
+ slogan:
+ 'Related technology exploration in tuning field; Ai-assisted performance analysis',
+ ecological: 'Technology Ecosystem',
+ staffContributor: 'Employee Contributors',
+ active: 'Activeness',
+ groupRelations: 'Relationship Between TC Members and SIGs',
+ companyRelations: 'Relationship Between Organizations and SIGs',
+ currentVitalityIndex: 'Current Activeness Index',
+ historicalVitalityIndicators: 'Activeness Index Trends',
+ Note: 'Note: Members are sorted by last names alphabetically',
+ Committee: 'TC Member',
+ company: 'Organization',
+ interestGroup: 'SIG',
+ ranking: 'Rank',
+ Number: 'Number',
+ backVitality: 'Back to Overview',
+ searchTips:
+ 'The organization you are searching for has no contributions under the current search criteria. Try different search criteria. ',
+ de: 'in',
+ viewDetail: 'View Detail',
+ Participated1: 'participated in',
+ Participated2: 'special interest groups',
+ Participated3: 'a total of',
+ Participated4: 'unit members participated',
+ footer: {
+ about: 'About Data',
+ privacy: 'Privacy Policy',
+ privacyLink: `${import.meta.env.VITE_MAIN_DOMAIN_URL}/en/other/privacy/`,
+ legal: 'Legal Notice',
+ legalLink: `${import.meta.env.VITE_MAIN_DOMAIN_URL}/en/other/legal/`,
+ atom: 'openEuler, an open source OS incubated by the OpenAtom Foundation for digital infrastructure in server, cloud, edge, embedded scenarios, across Arm, x86, RISC-V, LoongArch, PowerPC, and SW-64 architectures.',
+ copyright: 'Copyright © {year} openEuler. All rights reserved.',
+ filingText1: 'J. ICP B. No. 2020036654-1',
+ filingText2: 'J.G.W.A.B. No. 11030102011597',
+ },
+ about: {
+ explain: 'Data Indicator Interpretation ',
+ definition: 'Data definition ',
+ name: 'Name',
+ },
+ prevPage: 'Prev',
+ nextPage: 'Next',
+ repositoryTechnology: 'Repository Management/Technology Innovation',
+ numberofsigs: 'Number of SIGs',
+ averageActiveness: 'Average Activeness',
+ governanceAndOperation: 'Community Governance and Operations',
+ viewOrganizationDetail: 'View Organization Contribution Details',
+ viewSIGDetail: 'View SIG Contribution Details',
+ contributors: 'Contributors',
+ SIGParticipation: 'SIG Participation',
+ noData: 'No data available',
+ noContributor: 'No contributor',
+ noSIGPart: 'No SIG participation',
+ enterGitee: 'Please enter a GitCode ID',
+ enterSIG: 'Please enter a SIG',
+ enterWord: 'Please enter a keyword search',
+ noMentor: 'No mentor',
+ CurrentSIG: 'Current SIG',
+ enterName: 'Please enter a name',
+ ViewOnPC1: 'View on PC for more details',
+ ViewOnPC2: 'and better experience',
+ introduction: 'Introduction',
+ individual: 'individual resume',
+ community: 'Community roles',
+ filtrate: 'Filtrate',
+ general: 'General',
+ key: 'Key',
+ display: 'Display Per Page',
+ bar: 'bar',
+ total: 'Total',
+ result: 'Bar Result',
+ create: 'Create',
+ task: 'task',
+ comment: 'Comment',
+ In: 'In',
+ login: 'Login',
+ personalCenter: 'Personal Center',
+ logout: 'Logout',
+ Confirm: 'Confirm',
+ Cancel: 'Cancel',
+ titleConfirm:
+ 'Are you sure you want to exit? The page is refreshed after you exit.',
+ pleaseConfirm: 'Confirm',
+ General: 'General Comment',
+ Order: 'Order Comment',
+ Goto: 'Go to',
+ page: '',
+ zhcontribut: '',
+};
diff --git a/packages/openubmc/src/i18n/lang/zhLanguage.ts b/packages/openubmc/src/i18n/lang/zhLanguage.ts
new file mode 100644
index 0000000000000000000000000000000000000000..50ca2e997ff9dce8745a90c50eb6ff6f343c8553
--- /dev/null
+++ b/packages/openubmc/src/i18n/lang/zhLanguage.ts
@@ -0,0 +1,154 @@
+export default {
+ languageName: '中文',
+ datastat: '贡献看板',
+ nav: {
+ overview: '数据总览',
+ contributors: '社区贡献',
+ },
+ home: {
+ moreData: '更多贡献数据',
+ user: '下载量 Download ',
+ contributors: '贡献者 Contributor',
+ partners: '单位成员 Organization Member',
+ prs: '合并请求 PR',
+ issues: '需求&问题 Issue',
+ comments: '评审 Comment',
+ sigs: '特别兴趣小组 SIG',
+ repos: '代码仓库 Repository',
+ isv: '满足兼容 ISV',
+ },
+ from: {
+ type: '度量指标',
+ timeRange: '统计周期',
+ lastonemonth: '最近一个月内',
+ lasthalfyear: '最近半年内',
+ lastoneyear: '最近一年内',
+ displayRange: '显示范围',
+ pleasePartner: '请输入单位名称搜索',
+ all: '全部',
+ version: '版本统计',
+ LOC: '代码行数 LOC',
+ },
+ startDate: 'Start date',
+ endDate: 'End date',
+ products: 'sig输出件',
+ productQuality: 'sig输出质量',
+ processQuality: '过程质量',
+ tissueRobustness: '组织稳健性',
+ influence: '影响力',
+ vitalIndex: '活力指数',
+ communityAverage: '社区平均',
+ PRMerged: '合并PR',
+ IssueResolve: 'Issue解决率',
+ PREfficiency: 'PR 效率',
+ D1Number: 'D1贡献者数量',
+ Maintainer: 'Maintainer数量',
+ communityRankings: '社区排名',
+ combinedActivity: '综合活跃度',
+ contributionsTitle: '社区贡献数据',
+ userContributor: '个人成员贡献',
+ companyContributor: '单位成员贡献',
+ currentVitalityIndex: '当前活力指数',
+ historicalVitalityIndicators: '活力指标历史趋势',
+ groupActive: '特别兴趣小组活跃度全景图',
+ Contributordistribution: '贡献者分布',
+ Commitcontribution: '提交贡献',
+ participation: '参与的',
+ ecological: '技术生态',
+ NeedsProblems: '需求&问题',
+ staffContributor: '员工贡献',
+ SIGContribution: 'SIG贡献',
+ SIGNumber: 'SIG数量',
+ review: '评审',
+ Currentcontributionranking: '累计贡献',
+ Pleaseenterunitnameforsearch: '请输入单位名称搜索',
+ Numbercontributors: '贡献者数量',
+ contribute: '贡献',
+ DynamicContribute: '贡献动态',
+ toHome: '前往主页',
+ MailingList: '邮件列表',
+ channel: 'IRC频道',
+ warehouse: '仓库',
+ slogan: '调优领域相关技术探索;AI辅助性能分析',
+ active: '活跃度',
+ Mergerequest: '合并请求',
+ groupRelations: '技术委员会委员与特别兴趣小组关系',
+ companyRelations: '单位成员与特别兴趣小组关系',
+ Note: '注:以下按姓氏拼音排序',
+ Committee: '技术委员会委员',
+ company: '单位成员',
+ interestGroup: '特别兴趣小组',
+ ranking: '排名',
+ backVitality: '回到数据总览',
+ searchTips: '您搜索的组织在当前条件下暂无贡献,请尝试其他搜索条件',
+ de: '的',
+ viewDetail: '查看详情',
+ Participated1: '共参与',
+ Participated2: '个特别兴趣小组',
+ Participated3: '共有',
+ Participated4: '个单位成员参与',
+ Number: '序号',
+ footer: {
+ about: '关于数据',
+ privacy: '隐私政策',
+ privacyLink: `${import.meta.env.VITE_MAIN_DOMAIN_URL}/zh/other/privacy/`,
+ legal: '法律声明',
+ legalLink: `${import.meta.env.VITE_MAIN_DOMAIN_URL}/zh/other/legal/`,
+ atom: 'openEuler是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持ARM、x86、RISC-V、loongArch、PowerPC、SW-64等多样性计算架构',
+ copyright: '版权所有 © {year} openEuler 保留一切权利',
+ filingText1: '京ICP备2020036654号-1',
+ filingText2: '京公网安备 11030102011597 号',
+ },
+ about: {
+ explain: '数据指标解释 ',
+ definition: '数据定义 ',
+ name: '指标名称',
+ },
+ prevPage: '上一页',
+ nextPage: '下一页',
+ repositoryTechnology: '代码仓管理/技术创新',
+ numberofsigs: '特别兴趣小组数量',
+ averageActiveness: '平均活跃度',
+ governanceAndOperation: '社区治理运营',
+ viewOrganizationDetail: '查看单位成员贡献详情',
+ viewSIGDetail: '查看特别兴趣小组贡献详情',
+ contributors: '贡献者',
+ SIGParticipation: '参与的SIG',
+ noData: '暂无数据',
+ noContributor: '暂无贡献者',
+ noSIGPart: '暂未参与SIG',
+ enterGitee: '请输入GitCode ID搜索',
+ enterSIG: '请输入SIG名称搜索',
+ enterWord: '请输入关键词搜索',
+ noMentor: '暂无Mentor',
+ CurrentSIG: '当前SIG',
+ enterName: '请输入名称搜索',
+ ViewOnPC1: '该图表更适合在PC浏览',
+ ViewOnPC2: '建议在PC查看更多信息',
+ introduction: '简介',
+ individual: '个人简介',
+ community: '社区角色',
+ filtrate: '筛选',
+ general: '一般特性',
+ key: '关键特性',
+ display: '每页显示',
+ bar: '条',
+ total: '共',
+ result: '条结果',
+ create: '创建了',
+ task: '任务',
+ comment: '评论了',
+ In: '在',
+ login: '登录',
+ personalCenter: '个人中心',
+ logout: '退出登录',
+ Confirm: '确认',
+ Cancel: '取消',
+ titleConfirm: '您确定要退出吗? 退出后,页面会自动刷新',
+ pleaseConfirm: '请确认',
+ General: '常规评论',
+ Order: '命令型评论',
+ Goto: '前往',
+ page: '页',
+ zhcontribut: '贡献',
+};
diff --git a/packages/openubmc/src/main.ts b/packages/openubmc/src/main.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9286898098d11abd30c5446a54c0b0b7358aca60
--- /dev/null
+++ b/packages/openubmc/src/main.ts
@@ -0,0 +1,19 @@
+import { createApp } from 'vue';
+import App from './App.vue';
+import router from './router';
+import { createPinia } from 'pinia';
+import '@opensig/opendesign/es/index.css';
+import i18n from './i18n';
+
+import 'shared/styles/base.scss';
+import 'shared/styles/index.scss';
+import '@/assets/style/theme/default-light.token.css';
+import '@/assets/style/theme/dark.token.css';
+
+const app = createApp(App);
+
+app.use(createPinia());
+app.use(router);
+app.use(i18n);
+
+app.mount('#app');
diff --git a/packages/openubmc/src/router/index.ts b/packages/openubmc/src/router/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cc9d4616de40fdaf99687263b2fd24f1256f8c39
--- /dev/null
+++ b/packages/openubmc/src/router/index.ts
@@ -0,0 +1,58 @@
+import i18n from '@/i18n';
+import { createRouter, createWebHistory } from 'vue-router';
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes: [
+ {
+ path: '/:lang(zh|en)',
+ children: [
+ {
+ path: '',
+ redirect() {
+ return `/${i18n.global.locale.value ?? 'zh'}/overview`;
+ },
+ },
+ {
+ path: 'overview',
+ name: 'overview',
+ component: () => import('@/views/overview/Index.vue'),
+ beforeEnter(to, from) {
+ if (from.name === 'detail') {
+ to.meta.transition = 'slide-up';
+ }
+ },
+ },
+ {
+ path: 'detail',
+ name: 'detail',
+ component: () => import('@/views/detail/Index.vue'),
+ beforeEnter(to, from) {
+ if (from.name === 'overview') {
+ to.meta.transition = 'slide-down';
+ }
+ },
+ },
+ {
+ path: 'sig/:id',
+ name: 'sig-detail',
+ component: () => import('@/views/sig/Index.vue'),
+ },
+ {
+ path: 'user/:id',
+ name: 'user-detail',
+ component: () => import('@/views/user/Index.vue'),
+ },
+ ],
+ },
+ { path: '/:pathMatch(.*)*', redirect: '/zh/overview' }
+ ],
+});
+
+router.beforeEach((to) => {
+ if (to.fullPath.startsWith('/en')) {
+ return to.fullPath.replace(/^\/en/, '/zh');
+ }
+});
+
+export default router;
diff --git a/packages/openubmc/src/shared/common.ts b/packages/openubmc/src/shared/common.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c9ad73fa6a1ae6c9cfa2123e51266dea679a09d0
--- /dev/null
+++ b/packages/openubmc/src/shared/common.ts
@@ -0,0 +1,12 @@
+/**
+ * 获取授权的相关回调链接
+ */
+/**
+ * 开源社区信息
+ */
+
+export const openCommunityInfo = {
+ name: 'openubmc',
+ link: import.meta.env.VITE_MAIN_DOMAIN_URL,
+ email: 'contact@openeuler.io',
+};
diff --git a/packages/openubmc/src/shared/utils/index.ts b/packages/openubmc/src/shared/utils/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..48674b0213df89a94539e0dc43e2a0febcf6d4ad
--- /dev/null
+++ b/packages/openubmc/src/shared/utils/index.ts
@@ -0,0 +1,35 @@
+/**
+ * @param arr 数组
+ * @param target 目标
+ * @param compareFn 比较函数,返回负数则target大于当前值,返回正数则target小于当前值
+ * @returns -1: 没找到,否则返回index
+ */
+export function binarySearch(arr: D[], target: T, compareFn: (current: D, target: T) => number) {
+ if (!arr.length) return -1;
+ if (arr.length === 1) return compareFn(arr[0], target) === 0 ? 0 : -1;
+ let left = 0, right = arr.length - 1;
+ while (left <= right) {
+ const mid = left + ((right - left) >> 1);
+ const cmp = compareFn(arr[mid], target);
+ if (cmp === 0) return mid;
+ if (cmp < 0) left = mid + 1;
+ else right = mid - 1;
+ }
+ return -1;
+}
+
+/**
+ * 获取指定时区偏移量的年份
+ * @param {number} offset - 时区偏移量(单位:小时)。例如,UTC+8 时区,传入 8。
+ * @returns {number} - 指定时区偏移量对应的年份
+ */
+export function getYearByOffset(offset = 8) {
+ // 获取当前时间的 UTC 时间
+ const now = new Date();
+ const utcTime = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
+
+ // 设置偏移
+ utcTime.setHours(utcTime.getHours() + offset);
+
+ return utcTime.getFullYear();
+}
\ No newline at end of file
diff --git a/packages/openubmc/src/stores/common.ts b/packages/openubmc/src/stores/common.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0c382fb40c27269e94ccdf21503445e1e908e17e
--- /dev/null
+++ b/packages/openubmc/src/stores/common.ts
@@ -0,0 +1,55 @@
+import { defineStore } from 'pinia';
+import { IObject } from 'shared/@types/interface';
+import { getOveriewAllUsersCount } from 'shared/api/api-new';
+import { request } from 'shared/plugins/axios';
+import { getNowFormatDate } from 'shared/utils/helper';
+
+interface stateTypes {
+ language: string;
+ ISPC: boolean;
+ isBlackHeader: boolean;
+ moNav: number;
+ companyNav: number;
+ sigNav: number;
+ time: string;
+ allData: IObject;
+ personNav: number;
+}
+export const useCommonStore = defineStore('common', {
+ state: (): stateTypes => ({
+ language: 'zh',
+ // 判断是否是PC
+ ISPC: false,
+ // 判断移动端header主题颜色
+ isBlackHeader: true,
+ moNav: 0,
+ companyNav: 0,
+ sigNav: 0,
+ personNav: 0,
+ // 时间
+ time: '--',
+ allData: {},
+ }),
+ actions: {
+ setLanguage(lang: string) {
+ this.language = lang;
+ },
+ setDevice(device: boolean) {
+ this.ISPC = device;
+ },
+ getAllData() {
+ this.time = getNowFormatDate();
+ request.get('/api-magic/stat_new/overview/count?community=openubmc').then((res) => {
+ if (res.data?.data) {
+ Object.assign(this.allData, res.data.data);
+ }
+ });
+ // 社区用户
+ getOveriewAllUsersCount('openubmc').then((res) => {
+ if (res.data) {
+ this.allData.users = res.data.total_count;
+ }
+ });
+ },
+ },
+});
diff --git a/packages/openubmc/src/stores/company.ts b/packages/openubmc/src/stores/company.ts
new file mode 100644
index 0000000000000000000000000000000000000000..26f06a15d870a4a1b978d7333ff3cbf457b388b9
--- /dev/null
+++ b/packages/openubmc/src/stores/company.ts
@@ -0,0 +1,69 @@
+import { defineStore } from 'pinia';
+import { ceil } from 'lodash-es';
+import { request } from 'shared/plugins/axios';
+import { openCommunityInfo } from '@/shared/common';
+import i18n from '@/i18n';
+
+interface Company {
+ company_zh: string;
+ company_en: string;
+ contribute: number;
+}
+
+export const useCompanyStore = defineStore('company', {
+ state: () => ({
+ rawData: [] as Company[],
+ companyData: [] as Company[],
+ // 显示排行数
+ displayCount: 10,
+ searchVal: '',
+ // 获取最大值
+ companyMaxNum: 0,
+ defaultNum: '',
+ companyForm: {
+ contributeType: 'pr',
+ timeRange: [] as Date[] | [Date, Date],
+ },
+ }),
+ getters: {
+ companyData(state) {
+ let res = state.rawData ?? [];
+ if (state.searchVal) {
+ const upperCaseSearchVal = state.searchVal.toUpperCase();
+ const lang = i18n.global.locale ?? 'zh';
+ res = res.filter((i) => i[lang.value === 'zh' ? 'company_zh' : 'company_en'].toUpperCase().includes(upperCaseSearchVal));
+ }
+ if (state.displayCount) {
+ return res.slice(0, state.displayCount);
+ }
+ return res;
+ },
+ },
+ actions: {
+ async getCompanyData() {
+ const params = {
+ community: openCommunityInfo.name,
+ contributeType: this.companyForm.contributeType,
+ } as Record;
+ if (this.companyForm.timeRange?.length === 2) {
+ params.start = this.companyForm.timeRange[0].getTime();
+ params.end = this.companyForm.timeRange[1].getTime();
+ }
+ try {
+ const res = await request.get('/api-magic/stat_new/company/contribute', { params }).then((res) => res.data);
+ if (res.code !== 1 || !res.data?.length) {
+ this.companyMaxNum = 0;
+ this.rawData = [];
+ return;
+ }
+ const { data } = res;
+ this.companyMaxNum = ceil(data[0]?.contribute ?? 0, -2);
+ this.rawData = data;
+ } catch (error) {
+ this.companyMaxNum = 0;
+ this.rawData = [];
+ console.log(error);
+ }
+ },
+ },
+});
diff --git a/packages/openubmc/src/stores/login.ts b/packages/openubmc/src/stores/login.ts
new file mode 100644
index 0000000000000000000000000000000000000000..aca4c8e091570e7e25425862417433265da63d30
--- /dev/null
+++ b/packages/openubmc/src/stores/login.ts
@@ -0,0 +1,43 @@
+import { defineStore } from 'pinia';
+import { request } from 'shared/plugins/axios';
+
+const useLoginStore = defineStore('login', {
+ state: () => ({
+ logining: false,
+ logined: false,
+ data: null as null | Record,
+ }),
+ getters: {
+ username(state) {
+ return state.data?.username as string ?? '';
+ },
+ photo(state) {
+ return state.data?.photo as string ?? '';
+ },
+ nickname(state) {
+ return state.data?.nickname as string ?? '';
+ },
+ },
+ actions: {
+ tokenExists() {
+ return Boolean(document.cookie.match(/\b_U_T_=[^;]+/)?.[0]);
+ },
+ getUserInfo(force?: boolean) {
+ if (!this.tokenExists()) return;
+ if (!force && this.logined) return;
+ this.logining = true;
+ request
+ .get('/api-id/oneid/personal/center/user?community=openubmc')
+ .then((res) => res.data)
+ .then((res) => {
+ if (res.code !== 200 || !res.data) return;
+ this.data = res.data;
+ this.logining = false;
+ this.logined = true;
+ })
+ .catch(() => (this.logining = false));
+ },
+ },
+});
+
+export default useLoginStore;
diff --git a/packages/openubmc/src/stores/person.ts b/packages/openubmc/src/stores/person.ts
new file mode 100644
index 0000000000000000000000000000000000000000..df74a96edb522f48f68fd39c2c1d79e50d065947
--- /dev/null
+++ b/packages/openubmc/src/stores/person.ts
@@ -0,0 +1,56 @@
+import { openCommunityInfo } from '@/shared/common';
+import { defineStore } from 'pinia';
+import { request } from 'shared/plugins/axios';
+
+export const usePersonalStore = defineStore('personal', {
+ state: () => ({
+ personalData: [],
+ personalMaxNum: 0, // 个人数据最大参数
+ // 筛选参数
+ personalForm: {
+ contributeType: 'pr',
+ timeRange: [] as Date[] | [Date, Date],
+ },
+ allUsers: [] as string[],
+ commentType: '',
+ }),
+ actions: {
+ async getPersonalData() {
+ const params = {
+ community: openCommunityInfo.name,
+ contributeType: this.personalForm.contributeType,
+ comment_type: this.commentType
+ } as Record;
+ if (this.personalForm.timeRange?.length === 2) {
+ params.start = this.personalForm.timeRange[0].getTime();
+ params.end = this.personalForm.timeRange[1].getTime();
+ }
+ try {
+ const res = await request.get('/api-magic/stat_new/user/contribute', { params }).then((res) => res.data);
+ if (res.code !== 1 || !res.data?.length) {
+ this.personalData = [];
+ this.personalMaxNum = 0;
+ return;
+ }
+ const { data } = res;
+ const userList = data;
+ this.personalData = userList.slice(0, 20);
+ this.personalMaxNum = userList[0].contribute;
+ } catch (error) {
+ this.personalData = [];
+ this.personalMaxNum = 0;
+ console.log(error);
+ }
+ },
+ },
+ getters: {
+ // top10
+ highRanking: (state) => {
+ return state.personalData.slice(0, 10);
+ },
+ // top10-20
+ lowRanking: (state) => {
+ return state.personalData.slice(10, 20);
+ },
+ },
+});
diff --git a/packages/openubmc/src/views/detail/CompanyContribution.vue b/packages/openubmc/src/views/detail/CompanyContribution.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a4eb252b09d412b4fcf87477463e4601a5112241
--- /dev/null
+++ b/packages/openubmc/src/views/detail/CompanyContribution.vue
@@ -0,0 +1,106 @@
+
+
+
+
+ {{ t('common.companyContributor') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ t('common.from.displayRange') }}
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/detail/CompanyDataBarChart.vue b/packages/openubmc/src/views/detail/CompanyDataBarChart.vue
new file mode 100644
index 0000000000000000000000000000000000000000..f2771d912de723fa1357de7bc64fe60f518e2f3c
--- /dev/null
+++ b/packages/openubmc/src/views/detail/CompanyDataBarChart.vue
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+ -
+
+
+ *
+ {{ (locale === 'en' && item.company_en) || item.company_zh }}
+
+
+ {{ index + 1 }}
+ {{ (locale === 'en' && item.company_en) || item.company_zh }}
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}
+ {{ (locale === 'en' && item.company_en) || item.company_zh }}
+
+
{{ item.contribute }}
+
+
+
+
+
+
+ {{ formatNumber(item.contribute) }}
+
+
+
+ {{ formatNumber(item.contribute) }}
+
+
+
+
+
+
+
0
+
+ {{ formatNumber(useCompany.companyMaxNum / 2) }}
+
+
+ {{ formatNumber(useCompany.companyMaxNum) }}
+
+
+
+
+
+
+
+
{{ t('common.searchTips') }}
+
+
+
+
+
diff --git a/packages/openubmc/src/views/detail/Index.vue b/packages/openubmc/src/views/detail/Index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7b50aa37370b5576e2b3e2a79bb57ba9e8aba765
--- /dev/null
+++ b/packages/openubmc/src/views/detail/Index.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
{{ t('common.backVitality') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/detail/SigOverview.vue b/packages/openubmc/src/views/detail/SigOverview.vue
new file mode 100644
index 0000000000000000000000000000000000000000..bda0e0df8a1a2f0ad87b101f063f69ec4862a6d3
--- /dev/null
+++ b/packages/openubmc/src/views/detail/SigOverview.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ {{ t('common.groupActive') }}
+
+
{{ t('common.active') }}
+
0
+
+
1
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/detail/UserContribution.vue b/packages/openubmc/src/views/detail/UserContribution.vue
new file mode 100644
index 0000000000000000000000000000000000000000..92e7a2be2254fb201fa8583d298ee9657ee1afa1
--- /dev/null
+++ b/packages/openubmc/src/views/detail/UserContribution.vue
@@ -0,0 +1,176 @@
+
+
+
+
+ {{ t('common.userContributor') }}
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ title }}
+
+
+
+
+ {{ scope.row.user_login }}
+
+
+
+
+
+ {{ contributionTypeLabelMap[personStore.personalForm.contributeType] }}
+
+
+
+ {{ row.contribute }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/overview/Index.vue b/packages/openubmc/src/views/overview/Index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ff535474e5cf2d8dc9b4af556bcd922be2f4f78c
--- /dev/null
+++ b/packages/openubmc/src/views/overview/Index.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
{{ useCommon.time }}
+
+
{{ t('common.home.moreData') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/sig/Index.vue b/packages/openubmc/src/views/sig/Index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..53168e427343fd4bca0a63e2e5c850e2afa75ab8
--- /dev/null
+++ b/packages/openubmc/src/views/sig/Index.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+ {{ t('common.nav.contributors') }}
+ {{ route.params.id }}
+
+
+
+
+
+
+
+
+ {{ sigName }}{{ t('common.userContributor') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+ {{ row.user_login }}
+
+
+
+
+
+
+ {{ row.contribute }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/sig/Sidebar.vue b/packages/openubmc/src/views/sig/Sidebar.vue
new file mode 100644
index 0000000000000000000000000000000000000000..f5d23e747222a5125f7ea08ed21fd3610a9903f1
--- /dev/null
+++ b/packages/openubmc/src/views/sig/Sidebar.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('common.toHome') }}
+
+
+
+
+
+
+ {{ sigInfo.mailing_list }}
+
+
+
+ {{ sigInfo.description }}
+
+
+
+
+
+
{{ title }} ({{ data.length }})
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/openubmc/src/views/user/ContributeDynamic.vue b/packages/openubmc/src/views/user/ContributeDynamic.vue
new file mode 100644
index 0000000000000000000000000000000000000000..3cf9dd31333a953d75323d1d18e73241338019f5
--- /dev/null
+++ b/packages/openubmc/src/views/user/ContributeDynamic.vue
@@ -0,0 +1,274 @@
+
+
+
+
+ {{ userName }} {{ t('common.DynamicContribute') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contributionTypeLabel }} {{ t('common.total') }}({{ total }}){{ t('common.bar') }}
+
+
+
+ {{ item.time }}
+
+ 在
+
{{ item.repo }}
+ 创建了
{{ contributionType === 'pr' ? 'Pull Request' : 'Issue' }} {{ item.info }}
+
+
+ 评论了
+
{{ item.repo }}
+ 的Pull Request
{{ item.info }}
+
+
+
+
+
+ 暂无数据
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/user/ContributionData.vue b/packages/openubmc/src/views/user/ContributionData.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5c48e59937a167d5e996f87a73ebf1632a0d5259
--- /dev/null
+++ b/packages/openubmc/src/views/user/ContributionData.vue
@@ -0,0 +1,306 @@
+
+
+
+
+ {{ userName }} SIG {{ t('common.contribute') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ {{ index + 1 }}
+ {{ item.sig_name }}
+
+
+
+
+
+
+ {{ item.rank }}
+ {{ item.sig_name }}
+
+
{{ item.contribute }}
+
{{ item.percent + '%' }}
+
+
+
+
+ {{ formatNumber(item.contribute) }}
+
+
{{ formatNumber(item.contribute) }}
+
+
+
+
+
+
0
+
+ {{ formatNumber(Math.floor(max / 2)) }}
+
+
+ {{ max }}
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/user/Index.vue b/packages/openubmc/src/views/user/Index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..27bde0b82777af40c1da49c89e5fe41430c2a274
--- /dev/null
+++ b/packages/openubmc/src/views/user/Index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+ {{ t('common.nav.contributors') }}
+ {{ route.params.id }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/openubmc/src/views/user/Sidebar.vue b/packages/openubmc/src/views/user/Sidebar.vue
new file mode 100644
index 0000000000000000000000000000000000000000..4084abd9e40a74347487522a163d7e422f5bdc4a
--- /dev/null
+++ b/packages/openubmc/src/views/user/Sidebar.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gitcode主页
+
+
+
+
+
+
+
+
+ 社区角色
+
+
+
+
+ {{ item.sig_name }}
+ {{
+ userRoleLabelMap[role as keyof typeof userRoleLabelMap]
+ }}
+
+
+
+
+
+
+ 贡献
+
+
+
+ 合并请求PR
+ {{ contributeData.pr.toLocaleString('en-US') }}
+ 评审Comment
+ {{ contributeData.comment.toLocaleString('en-US') }}
+
+
+ 需求&问题 Issue
+ {{ contributeData.issue.toLocaleString('en-US') }}
+ SIG数量
+ {{ contributeData.sig.toLocaleString('en-US') }}
+
+
+
+
+
+
diff --git a/packages/openubmc/tsconfig.json b/packages/openubmc/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..774b21dcea5481ded08cc4624c45d95d443a8c39
--- /dev/null
+++ b/packages/openubmc/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "useDefineForClassFields": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "strict": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "lib": ["esnext", "dom"],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ },
+ "types": ["unplugin-icons/types/vue", "element-plus/global","vite/client"]
+ },
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue",
+ "env.d.ts"
+, "../shared/hooks/useVirtualList.ts" ],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/packages/openubmc/tsconfig.node.json b/packages/openubmc/tsconfig.node.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0c7a49609d40b6cc0ca339c4ad74b694a24c7be
--- /dev/null
+++ b/packages/openubmc/tsconfig.node.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
+ "types": ["node"]
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/packages/openubmc/vite.config.js b/packages/openubmc/vite.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce4c3875693a368e1cbb21e5c6efa7dfd84ebf03
--- /dev/null
+++ b/packages/openubmc/vite.config.js
@@ -0,0 +1,78 @@
+/*
+* 版权所有(c)华为技术有限公司2025-2025
+*/
+import nodePath from 'path';
+import { defineConfig } from 'vite';
+import vue from '@vitejs/plugin-vue';
+import Icons from 'unplugin-icons/vite';
+import { FileSystemIconLoader } from 'unplugin-icons/loaders';
+
+import AutoImport from 'unplugin-auto-import/vite';
+import Components from 'unplugin-vue-components/vite';
+import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
+import vueJsxPlugin from '@vitejs/plugin-vue-jsx';
+
+export default defineConfig({
+ base: '/',
+ build: {
+ outDir: '../../dist/openubmc',
+ },
+ resolve: {
+ alias: {
+ '@/': `${nodePath.resolve(__dirname, './src')}/`,
+ 'shared/': `${nodePath.resolve(__dirname, '../', 'shared')}/`,
+ 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
+ },
+ },
+ plugins: [
+ vue(),
+ vueJsxPlugin(),
+ Icons({
+ compiler: 'vue3',
+ customCollections: {
+ shared: FileSystemIconLoader('../shared/svg-icons'),
+ app: FileSystemIconLoader('./src/assets/svg-icons'),
+ },
+ }),
+ AutoImport({
+ resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
+ }),
+ Components({
+ resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
+ }),
+ ],
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: `
+ @use "@/assets/style/mixin/common.scss" as *;
+ @use "@/assets/style/mixin/font.scss" as *;
+ @use "shared/styles/mixin/screen.scss" as *;
+ `,
+ },
+ },
+ },
+ server: {
+ proxy: {
+ '/query': {
+ target: 'https://dsapi.osinfra.cn/',
+ changeOrigin: true,
+ },
+ '/api-magic': {
+ target: 'https://magicapi.osinfra.cn/',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api-magic/, ''),
+ },
+ '/api-id': {
+ target: 'https://omapi.test.osinfra.cn/',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api-id/, ''),
+ },
+ '/ip-api/': {
+ target: 'http://ip-api.com/json/',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/ip-api/, ''),
+ },
+ },
+ },
+});
diff --git a/packages/shared/hooks/useScreen.ts b/packages/shared/hooks/useScreen.ts
index 25e579d49a6f92af6db52e67f175b31907bbb724..b68ba970717a8f8aa0d83997d8c9aad4e85d8001 100644
--- a/packages/shared/hooks/useScreen.ts
+++ b/packages/shared/hooks/useScreen.ts
@@ -1,3 +1,4 @@
+import { createSharedComposable } from '@vueuse/core';
import { ref, reactive, computed, onMounted, onUnmounted, nextTick } from 'vue';
export enum Size {
@@ -39,7 +40,7 @@ const CompareHandler = {
gt: (a: number, b: number) => a > b,
};
-export const useScreen = () => {
+export const useScreen = createSharedComposable(() => {
const screenSize = reactive({
width: 1440,
height: 0,
@@ -156,4 +157,4 @@ export const useScreen = () => {
isPadToLaptop, // [601, 1440]
isPadVToLaptop, // [841, 1440]
};
-};
+});
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 523e0c27433f9f0c1cae61e9be8c8043874f709a..dd9242ec22403515c7e7ebe8f626dadd6f1d5129 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -2,8 +2,5 @@
"name": "shared",
"private": true,
"version": "0.0.1",
- "scripts": {},
- "dependencies": {
- "unplugin-icons": "^0.14.0"
- }
+ "scripts": {}
}
diff --git a/packages/shared/utils/login.ts b/packages/shared/utils/login.ts
index 9c50750f8313ddeb536b2938bcaf747ad260b6c0..b80e2157af64c7f11876d0d02007688e7731d1c9 100644
--- a/packages/shared/utils/login.ts
+++ b/packages/shared/utils/login.ts
@@ -77,7 +77,7 @@ export function getUserAuth() {
}
// 退出登录
-export function logout(community: string) {
+export function logout() {
location.href = `${import.meta.env.VITE_LOGIN_ORIGIN}/logout?redirect_uri=${
window?.location?.origin
}`;
@@ -92,7 +92,7 @@ export function goToHome() {
window.location.href = `/${lang}/mobile`;
}
}
-export function showGuard(community: string) {
+export function showGuard() {
const origin = import.meta.env.VITE_LOGIN_ORIGIN;
const lang = window.localStorage.getItem('lang');
location.href = `${origin}/login?redirect_uri=${location.href}&lang=${lang}`;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cbe3133e63298b6a5d0eab84b592c4a4514cfaa4..7cb59c722978fe71a25d35a5b53391c384b3b9f7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,16 +10,22 @@ importers:
dependencies:
'@element-plus/icons-vue':
specifier: ^2.0.4
- version: 2.0.4(vue@3.2.25)
+ version: 2.0.4(vue@3.5.20(typescript@4.6.2))
'@opensig/open-analytics':
specifier: ^0.0.9
version: 0.0.9
+ '@opensig/opendesign':
+ specifier: ^1.0.1
+ version: 1.0.1(vue@3.5.20(typescript@4.6.2))
'@types/d3':
specifier: ^7.4.0
version: 7.4.0
+ '@vueuse/core':
+ specifier: ^13.9.0
+ version: 13.9.0(vue@3.5.20(typescript@4.6.2))
axios:
- specifier: ^1.8.2
- version: 1.8.2
+ specifier: ^1.12.0
+ version: 1.12.0
d3:
specifier: ^7.4.4
version: 7.4.4
@@ -28,7 +34,7 @@ importers:
version: 5.3.2
element-plus:
specifier: ^2.1.4
- version: 2.1.4(@types/lodash-es@4.17.6)(vue@3.2.25)
+ version: 2.1.4(@types/lodash-es@4.17.6)(vue@3.5.20(typescript@4.6.2))
html2canvas:
specifier: ^1.4.1
version: 1.4.1
@@ -43,19 +49,22 @@ importers:
version: 8.0.1
pinia:
specifier: ^2.0.11
- version: 2.0.12(typescript@4.6.2)(vue@3.2.25)
+ version: 2.0.12(typescript@4.6.2)(vue@3.5.20(typescript@4.6.2))
swiper:
specifier: ^8.0.7
version: 8.0.7
+ unplugin-icons:
+ specifier: 22.2.0
+ version: 22.2.0(@vue/compiler-sfc@3.5.20)(vue-template-compiler@2.7.16)
vue:
- specifier: ^3.2.25
- version: 3.2.25
+ specifier: ^3.5.20
+ version: 3.5.20(typescript@4.6.2)
vue-i18n:
- specifier: ^9.14.3
- version: 9.14.3(vue@3.2.25)
+ specifier: ^9.14.5
+ version: 9.14.5(vue@3.5.20(typescript@4.6.2))
vue-router:
- specifier: ^4.0.13
- version: 4.0.14(vue@3.2.25)
+ specifier: ^4.5.1
+ version: 4.5.1(vue@3.5.20(typescript@4.6.2))
devDependencies:
'@rushstack/eslint-patch':
specifier: ^1.10.5
@@ -67,14 +76,14 @@ importers:
specifier: ^4.17.6
version: 4.17.6
'@types/node':
- specifier: ^17.0.21
- version: 17.0.22
+ specifier: ^22.0.0
+ version: 22.0.0
'@vitejs/plugin-vue':
specifier: ^4.6.2
- version: 4.6.2(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)
+ version: 4.6.2(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))
'@vitejs/plugin-vue-jsx':
specifier: ^4.1.1
- version: 4.1.1(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)
+ version: 4.1.1(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))
'@vue/eslint-config-prettier':
specifier: ^10.2.0
version: 10.2.0(eslint@8.56.0)(prettier@3.2.5)
@@ -95,13 +104,13 @@ importers:
version: 4.6.2
unplugin-auto-import:
specifier: ^0.11.5
- version: 0.11.5(@vueuse/core@8.1.2(vue@3.2.25))(rollup@4.40.0)
+ version: 0.11.5(@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2)))(rollup@4.40.0)
unplugin-vue-components:
specifier: ^0.26.0
- version: 0.26.0(@babel/parser@7.26.8)(rollup@4.40.0)(vue@3.2.25)
+ version: 0.26.0(@babel/parser@7.28.3)(rollup@4.40.0)(vue@3.5.20(typescript@4.6.2))
vite:
specifier: 6.3.4
- version: 6.3.4(@types/node@17.0.22)(sass@1.49.9)
+ version: 6.3.4(@types/node@22.0.0)(sass@1.49.9)
vue-tsc:
specifier: ^1.8.25
version: 1.8.27(typescript@4.6.2)
@@ -110,46 +119,36 @@ importers:
dependencies:
'@opensig/opendesign':
specifier: 0.0.65
- version: 0.0.65(vue@3.2.25)
+ version: 0.0.65(vue@3.5.20(typescript@4.6.2))
shared:
specifier: workspace:^
version: link:../shared
- unplugin-icons:
- specifier: ^0.14.0
- version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16)
packages/gauss:
dependencies:
shared:
specifier: workspace:^
version: link:../shared
- unplugin-icons:
- specifier: ^0.14.0
- version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16)
packages/harmony:
dependencies:
shared:
specifier: workspace:^
version: link:../shared
- unplugin-icons:
- specifier: ^0.14.0
- version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16)
packages/mindspore:
dependencies:
shared:
specifier: workspace:^
version: link:../shared
- unplugin-icons:
- specifier: ^0.14.0
- version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16)
- packages/shared:
+ packages/openubmc:
dependencies:
- unplugin-icons:
- specifier: ^0.14.0
- version: 0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16)
+ shared:
+ specifier: workspace:^
+ version: link:../shared
+
+ packages/shared: {}
packages:
@@ -157,18 +156,15 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@antfu/install-pkg@0.1.0':
- resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==}
-
- '@antfu/utils@0.3.0':
- resolution: {integrity: sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==}
-
- '@antfu/utils@0.5.0':
- resolution: {integrity: sha512-MrAQ/MrPSxbh1bBrmwJjORfJymw4IqSHFBXqvxaga3ZdDM+/zokYF8DjyJpSjY2QmpmgQrajDUBJOWrYeARfzA==}
+ '@antfu/install-pkg@1.1.0':
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
'@antfu/utils@0.7.8':
resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==}
+ '@antfu/utils@8.1.1':
+ resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
+
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
@@ -235,14 +231,18 @@ packages:
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.16.7':
- resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.25.9':
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.27.1':
+ resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.25.9':
resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
engines: {node: '>=6.9.0'}
@@ -251,13 +251,13 @@ packages:
resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.24.7':
- resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
+ '@babel/parser@7.26.8':
+ resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==}
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/parser@7.26.8':
- resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==}
+ '@babel/parser@7.28.3':
+ resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -291,14 +291,14 @@ packages:
resolution: {integrity: sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.17.0':
- resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
- engines: {node: '>=6.9.0'}
-
'@babel/types@7.26.8':
resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.28.2':
+ resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
+ engines: {node: '>=6.9.0'}
+
'@ctrl/tinycolor@3.4.0':
resolution: {integrity: sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==}
engines: {node: '>=10'}
@@ -494,28 +494,31 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
- '@iconify/types@1.0.13':
- resolution: {integrity: sha512-jrJJVPnRM1HsMDnuHRTzMfgiSG6Z1U/2IYI7s8spFu9c7n1q3jcXa+3/YQz4tJVNgAhzm1dbnMxfIAyLDpCaWg==}
+ '@iconify/types@2.0.0':
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- '@iconify/utils@1.0.28':
- resolution: {integrity: sha512-hmSS50Q6qoOcq/TKhSV0VaI5+NFwQicJLk1MBLGDUQsGtOWdIagiYBz9ricpsw6dSu0cLW2a4ZAFg9V556yH8Q==}
+ '@iconify/utils@2.3.0':
+ resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
- '@intlify/core-base@9.14.3':
- resolution: {integrity: sha512-nbJ7pKTlXFnaXPblyfiH6awAx1C0PWNNuqXAR74yRwgi5A/Re/8/5fErLY0pv4R8+EHj3ZaThMHdnuC/5OBa6g==}
+ '@intlify/core-base@9.14.5':
+ resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==}
engines: {node: '>= 16'}
- '@intlify/message-compiler@9.14.3':
- resolution: {integrity: sha512-ANwC226BQdd+MpJ36rOYkChSESfPwu3Ss2Faw0RHTOknYLoHTX6V6e/JjIKVDMbzs0/H/df/rO6yU0SPiWHqNg==}
+ '@intlify/message-compiler@9.14.5':
+ resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==}
engines: {node: '>= 16'}
- '@intlify/shared@9.14.3':
- resolution: {integrity: sha512-hJXz9LA5VG7qNE00t50bdzDv8Z4q9fpcL81wj4y4duKavrv0KM8YNLTwXNEFINHjTsfrG9TXvPuEjVaAvZ7yWg==}
+ '@intlify/shared@9.14.5':
+ resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==}
engines: {node: '>= 16'}
'@jridgewell/gen-mapping@0.3.8':
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -553,6 +556,11 @@ packages:
peerDependencies:
vue: ^3.1.0
+ '@opensig/opendesign@1.0.1':
+ resolution: {integrity: sha512-aF5sCbNoqYfM89VS+u4RbB75M067EbvYJBbCjkigttVsXG2a/tDQKGgSoxCT4UnQq6SffOWY8o1Ks9JcXqel1Q==}
+ peerDependencies:
+ vue: ^3.3.0
+
'@pkgr/core@0.1.1':
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -800,14 +808,14 @@ packages:
'@types/lodash@4.14.180':
resolution: {integrity: sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==}
- '@types/node@17.0.22':
- resolution: {integrity: sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==}
+ '@types/node@22.0.0':
+ resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==}
'@types/semver@7.5.8':
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
- '@types/throttle-debounce@2.1.0':
- resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
+ '@types/web-bluetooth@0.0.21':
+ resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
'@typescript-eslint/eslint-plugin@6.21.0':
resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
@@ -909,17 +917,14 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@vue/compiler-core@3.2.25':
- resolution: {integrity: sha512-FlffKezIqztTCTyG0klkYRwhdyL6b1PTTCIerPb4p2R9qQaczccTX5g9ysi9w6tpLQ48a1WiXnFDJhWD7XoqwA==}
-
'@vue/compiler-core@3.4.27':
resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==}
'@vue/compiler-core@3.5.13':
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
- '@vue/compiler-dom@3.2.25':
- resolution: {integrity: sha512-4JrburkRg4VWbc8AKpzKFWbNY4MDXshqjFl53+vINq7zaw3Z7aSqnLv0EkKh8B8ynf/MYsAdygGutyVbEWYxOw==}
+ '@vue/compiler-core@3.5.20':
+ resolution: {integrity: sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==}
'@vue/compiler-dom@3.4.27':
resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==}
@@ -927,18 +932,21 @@ packages:
'@vue/compiler-dom@3.5.13':
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
- '@vue/compiler-sfc@3.2.25':
- resolution: {integrity: sha512-PminuOYIcFI7UZn+mdy2OPbogyAb0IHkVuqwmLDJiSRFhc/QAXQnO9KdS4nez3bQ9XlQmoAveQzcZuekHzdb5w==}
+ '@vue/compiler-dom@3.5.20':
+ resolution: {integrity: sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==}
'@vue/compiler-sfc@3.5.13':
resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
- '@vue/compiler-ssr@3.2.25':
- resolution: {integrity: sha512-+BAl8U5D3JkGR6086PFx1BQQ5km3z9fT88hy/7lzf8i3vEDdPQodadnX2t6tndFjIux05MEKg43DeocOojT0mw==}
+ '@vue/compiler-sfc@3.5.20':
+ resolution: {integrity: sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==}
'@vue/compiler-ssr@3.5.13':
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+ '@vue/compiler-ssr@3.5.20':
+ resolution: {integrity: sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==}
+
'@vue/devtools-api@6.1.3':
resolution: {integrity: sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==}
@@ -970,25 +978,19 @@ packages:
typescript:
optional: true
- '@vue/reactivity-transform@3.2.25':
- resolution: {integrity: sha512-fOiW67PUalicMfMr4Sc9l8mUtkN7ZD+G1/zJV8blzQ8GEZSeRcJm11gqve6Ps623ju5YORu7V/Q1gZoOJ9WO4g==}
-
- '@vue/reactivity@3.2.25':
- resolution: {integrity: sha512-Dxc/u/dxoneIDqyfmuwPVBR0G3OQJqe3Dtz4z3NGt+CGj4UuOZQfN5raJPmp6xGYgrtC6PAWoCgHhyrgr1qCtg==}
+ '@vue/reactivity@3.5.20':
+ resolution: {integrity: sha512-hS8l8x4cl1fmZpSQX/NXlqWKARqEsNmfkwOIYqtR2F616NGfsLUm0G6FQBK6uDKUCVyi1YOL8Xmt/RkZcd/jYQ==}
- '@vue/runtime-core@3.2.25':
- resolution: {integrity: sha512-2+fo5+lofT4xr8W2rtjyz+AM+UB1U/UNLH6ISFdHWNWuveSWxF+vkCQaATmhp6O3XA7QJAbHoRqIZor20EWSfQ==}
+ '@vue/runtime-core@3.5.20':
+ resolution: {integrity: sha512-vyQRiH5uSZlOa+4I/t4Qw/SsD/gbth0SW2J7oMeVlMFMAmsG1rwDD6ok0VMmjXY3eI0iHNSSOBilEDW98PLRKw==}
- '@vue/runtime-dom@3.2.25':
- resolution: {integrity: sha512-3gGeyHnygn4yG6bssRKhQIxnE8vgB8FtYUUwoYoA/Pm0vZ+bGPoZax4TbtZD9eW9rvs8CY8boNp4t/sJaPJrRQ==}
+ '@vue/runtime-dom@3.5.20':
+ resolution: {integrity: sha512-KBHzPld/Djw3im0CQ7tGCpgRedryIn4CcAl047EhFTCCPT2xFf4e8j6WeKLgEEoqPSl9TYqShc3Q6tpWpz/Xgw==}
- '@vue/server-renderer@3.2.25':
- resolution: {integrity: sha512-qFRmcyeyyhWbnTPn6cbCZ4bjeuPLSkUpFa98p4LEJtFBFbxjGnrHXHOjYxCY3Lznmxe0kMM3qG4t3GnjcXP12w==}
+ '@vue/server-renderer@3.5.20':
+ resolution: {integrity: sha512-HthAS0lZJDH21HFJBVNTtx+ULcIbJQRpjSVomVjfyPkFSpCwvsPTA+jIzOaUm3Hrqx36ozBHePztQFg6pj5aKg==}
peerDependencies:
- vue: 3.2.25
-
- '@vue/shared@3.2.25':
- resolution: {integrity: sha512-DkHJFV2gw9WBRmUCa21eyG0WvlF0l1QFOgTkWj29O4mt2Tv3BSE5PQOKhUruZIym4bBYCqx9ZGtoD1WohDprow==}
+ vue: 3.5.20
'@vue/shared@3.4.27':
resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==}
@@ -996,6 +998,14 @@ packages:
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+ '@vue/shared@3.5.20':
+ resolution: {integrity: sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==}
+
+ '@vueuse/core@13.9.0':
+ resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==}
+ peerDependencies:
+ vue: ^3.5.0
+
'@vueuse/core@8.1.2':
resolution: {integrity: sha512-prI2GzigBUtJNTcwRjJPzUPLFoRZM1RZFR464DFdwgU8TxRFf7dRvuvWFDNbCATzLExHFnGI3zTp9GkXTTZxgQ==}
peerDependencies:
@@ -1007,9 +1017,17 @@ packages:
vue:
optional: true
+ '@vueuse/metadata@13.9.0':
+ resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==}
+
'@vueuse/metadata@8.1.2':
resolution: {integrity: sha512-LrPtdiYMleygnGmz8mEmYI9h4Eyo+/igxZWNrwuPnqvL9pIO+8eUpBgPLH5GowKv3Nu0LPZSXSIuaWVJBSU1Cg==}
+ '@vueuse/shared@13.9.0':
+ resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==}
+ peerDependencies:
+ vue: ^3.5.0
+
'@vueuse/shared@8.1.2':
resolution: {integrity: sha512-4Hb9iPUhAz7ghO4hgvB2GV2FOy12qQGdhmQ+9HC6QN/J66DELhmxAvkZAtK5FBqZOSwzKszPqNqoyhRKQrrWGQ==}
peerDependencies:
@@ -1036,6 +1054,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
@@ -1064,8 +1087,8 @@ packages:
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- axios@1.8.2:
- resolution: {integrity: sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==}
+ axios@1.12.0:
+ resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -1137,6 +1160,12 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -1147,8 +1176,8 @@ packages:
css-line-break@2.1.0:
resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
- csstype@2.6.21:
- resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
d3-array@3.1.6:
resolution: {integrity: sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==}
@@ -1296,6 +1325,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.1:
+ resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -1461,9 +1499,8 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
- execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
+ exsolve@1.0.7:
+ resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -1520,8 +1557,8 @@ packages:
debug:
optional: true
- form-data@4.0.2:
- resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ form-data@4.0.4:
+ resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
engines: {node: '>= 6'}
fs.realpath@1.0.0:
@@ -1547,10 +1584,6 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -1571,6 +1604,10 @@ packages:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
+ globals@15.15.0:
+ resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
+ engines: {node: '>=18'}
+
globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -1610,10 +1647,6 @@ packages:
resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
engines: {node: '>=8.0.0'}
- human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
iconv-lite@0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
@@ -1670,10 +1703,6 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
- is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
-
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -1707,21 +1736,21 @@ packages:
jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
- kolorist@1.5.1:
- resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
+ kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
- local-pkg@0.4.1:
- resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
- engines: {node: '>=14'}
-
local-pkg@0.4.3:
resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
engines: {node: '>=14'}
+ local-pkg@1.1.2:
+ resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
+ engines: {node: '>=14'}
+
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -1745,9 +1774,6 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- magic-string@0.25.9:
- resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
-
magic-string@0.26.7:
resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
engines: {node: '>=12'}
@@ -1770,9 +1796,6 @@ packages:
memoize-one@6.0.0:
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -1789,10 +1812,6 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -1807,12 +1826,23 @@ packages:
mlly@1.4.2:
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
+ mlly@1.8.0:
+ resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+
ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
muggle-string@0.3.1:
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@3.3.8:
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -1834,17 +1864,9 @@ packages:
normalize.css@8.0.1:
resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
- npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
-
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -1857,6 +1879,9 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
+ package-manager-detector@1.3.0:
+ resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -1886,6 +1911,9 @@ packages:
pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1897,6 +1925,10 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
pinia@2.0.12:
resolution: {integrity: sha512-tUeuYGFrLU5irmGyRAIxp35q1OTcZ8sKpGT4XkPeVcG35W4R6cfXDbCGexzmVqH5lTQJJTXXbNGutIu9yS5yew==}
peerDependencies:
@@ -1912,10 +1944,20 @@ packages:
pkg-types@1.0.3:
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ pkg-types@2.3.0:
+ resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -1936,6 +1978,9 @@ packages:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
+ quansync@0.2.11:
+ resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -2002,9 +2047,6 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -2017,10 +2059,6 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
- source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
-
sourcemap-codec@1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
deprecated: Please use @jridgewell/sourcemap-codec instead
@@ -2032,10 +2070,6 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
- strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
-
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@@ -2068,14 +2102,13 @@ packages:
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ tinyexec@1.0.1:
+ resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+
tinyglobby@0.2.13:
resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
engines: {node: '>=12.0.0'}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -2112,6 +2145,12 @@ packages:
ufo@1.3.2:
resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
+ ufo@1.6.1:
+ resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+
+ undici-types@6.11.1:
+ resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==}
+
unimport@1.3.0:
resolution: {integrity: sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==}
@@ -2124,18 +2163,24 @@ packages:
'@vueuse/core':
optional: true
- unplugin-icons@0.14.0:
- resolution: {integrity: sha512-VznBG8Jl9D4jtsAIY8hycyQZEDB8KVjnk19MzMlifLLs4QoIUPx8TILDoy6U46yDeYViqZu4hvb5fYI5OarekQ==}
+ unplugin-icons@22.2.0:
+ resolution: {integrity: sha512-OdrXCiXexC1rFd0QpliAgcd4cMEEEQtoCf2WIrRIGu4iW6auBPpQKMCBeWxoe55phYdRyZLUWNOtzyTX+HOFSA==}
peerDependencies:
- '@svgr/core': '>=5.5.0'
- '@vue/compiler-sfc': ^3.0.2
+ '@svgr/core': '>=7.0.0'
+ '@svgx/core': ^1.0.1
+ '@vue/compiler-sfc': ^3.0.2 || ^2.7.0
+ svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
vue-template-compiler: ^2.6.12
vue-template-es2015-compiler: ^1.9.0
peerDependenciesMeta:
'@svgr/core':
optional: true
+ '@svgx/core':
+ optional: true
'@vue/compiler-sfc':
optional: true
+ svelte:
+ optional: true
vue-template-compiler:
optional: true
vue-template-es2015-compiler:
@@ -2154,27 +2199,14 @@ packages:
'@nuxt/kit':
optional: true
- unplugin@0.5.2:
- resolution: {integrity: sha512-3SPYtus/56cxyD4jfjrnqCvb6jPxvdqJNaRXnEaG2BhNEMaoygu/39AG+LwKmiIUzj4XHyitcfZ7scGlWfEigA==}
- peerDependencies:
- esbuild: '>=0.13'
- rollup: ^2.50.0
- vite: ^2.3.0
- webpack: 4 || 5
- peerDependenciesMeta:
- esbuild:
- optional: true
- rollup:
- optional: true
- vite:
- optional: true
- webpack:
- optional: true
-
unplugin@1.10.1:
resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==}
engines: {node: '>=14.0.0'}
+ unplugin@2.3.10:
+ resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==}
+ engines: {node: '>=18.12.0'}
+
update-browserslist-db@1.1.2:
resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==}
hasBin: true
@@ -2254,14 +2286,14 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
- vue-i18n@9.14.3:
- resolution: {integrity: sha512-C+E0KE8ihKjdYCQx8oUkXX+8tBItrYNMnGJuzEPevBARQFUN2tKez6ZVOvBrWH0+KT5wEk3vOWjNk7ygb2u9ig==}
+ vue-i18n@9.14.5:
+ resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==}
engines: {node: '>= 16'}
peerDependencies:
vue: ^3.0.0
- vue-router@4.0.14:
- resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==}
+ vue-router@4.5.1:
+ resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==}
peerDependencies:
vue: ^3.2.0
@@ -2274,8 +2306,13 @@ packages:
peerDependencies:
typescript: '*'
- vue@3.2.25:
- resolution: {integrity: sha512-jU3t7fyQDHoCWCqhmRrnSmYZvHC35tOJTP704di7HGfq5EcFA1cU/1ZPjUV1eCxJev65Khjyfni+vk9oa+eTtw==}
+ vue@3.5.20:
+ resolution: {integrity: sha512-2sBz0x/wis5TkF1XZ2vH25zWq3G1bFEPOfkBcx2ikowmphoQsPH6X0V3mmPCXA2K1N/XGTnifVyDQP4GfDDeQw==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
web-vitals@4.2.4:
resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==}
@@ -2284,9 +2321,6 @@ packages:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
- webpack-virtual-modules@0.4.3:
- resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
-
webpack-virtual-modules@0.6.2:
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
@@ -2319,19 +2353,15 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
- '@antfu/install-pkg@0.1.0':
- dependencies:
- execa: 5.1.1
- find-up: 5.0.0
-
- '@antfu/utils@0.3.0':
+ '@antfu/install-pkg@1.1.0':
dependencies:
- '@types/throttle-debounce': 2.1.0
-
- '@antfu/utils@0.5.0': {}
+ package-manager-detector: 1.3.0
+ tinyexec: 1.0.1
'@antfu/utils@0.7.8': {}
+ '@antfu/utils@8.1.1': {}
+
'@babel/code-frame@7.26.2':
dependencies:
'@babel/helper-validator-identifier': 7.25.9
@@ -2441,10 +2471,12 @@ snapshots:
'@babel/helper-string-parser@7.25.9': {}
- '@babel/helper-validator-identifier@7.16.7': {}
+ '@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.25.9': {}
+ '@babel/helper-validator-identifier@7.27.1': {}
+
'@babel/helper-validator-option@7.25.9': {}
'@babel/helpers@7.26.7':
@@ -2452,14 +2484,14 @@ snapshots:
'@babel/template': 7.26.8
'@babel/types': 7.26.8
- '@babel/parser@7.24.7':
- dependencies:
- '@babel/types': 7.17.0
-
'@babel/parser@7.26.8':
dependencies:
'@babel/types': 7.26.8
+ '@babel/parser@7.28.3':
+ dependencies:
+ '@babel/types': 7.28.2
+
'@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.8)':
dependencies:
'@babel/core': 7.26.8
@@ -2496,30 +2528,30 @@ snapshots:
'@babel/parser': 7.26.8
'@babel/template': 7.26.8
'@babel/types': 7.26.8
- debug: 4.3.4
+ debug: 4.4.1
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/types@7.17.0':
- dependencies:
- '@babel/helper-validator-identifier': 7.16.7
- to-fast-properties: 2.0.0
-
'@babel/types@7.26.8':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
+ '@babel/types@7.28.2':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+
'@ctrl/tinycolor@3.4.0': {}
- '@element-plus/icons-vue@1.1.4(vue@3.2.25)':
+ '@element-plus/icons-vue@1.1.4(vue@3.5.20(typescript@4.6.2))':
dependencies:
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
- '@element-plus/icons-vue@2.0.4(vue@3.2.25)':
+ '@element-plus/icons-vue@2.0.4(vue@3.5.20(typescript@4.6.2))':
dependencies:
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
'@esbuild/aix-ppc64@0.25.2':
optional: true
@@ -2631,30 +2663,32 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
- '@iconify/types@1.0.13': {}
+ '@iconify/types@2.0.0': {}
- '@iconify/utils@1.0.28':
+ '@iconify/utils@2.3.0':
dependencies:
- '@antfu/install-pkg': 0.1.0
- '@antfu/utils': 0.3.0
- '@iconify/types': 1.0.13
- debug: 4.3.4
- kolorist: 1.5.1
- local-pkg: 0.4.1
+ '@antfu/install-pkg': 1.1.0
+ '@antfu/utils': 8.1.1
+ '@iconify/types': 2.0.0
+ debug: 4.4.1
+ globals: 15.15.0
+ kolorist: 1.8.0
+ local-pkg: 1.1.2
+ mlly: 1.8.0
transitivePeerDependencies:
- supports-color
- '@intlify/core-base@9.14.3':
+ '@intlify/core-base@9.14.5':
dependencies:
- '@intlify/message-compiler': 9.14.3
- '@intlify/shared': 9.14.3
+ '@intlify/message-compiler': 9.14.5
+ '@intlify/shared': 9.14.5
- '@intlify/message-compiler@9.14.3':
+ '@intlify/message-compiler@9.14.5':
dependencies:
- '@intlify/shared': 9.14.3
+ '@intlify/shared': 9.14.5
source-map-js: 1.2.1
- '@intlify/shared@9.14.3': {}
+ '@intlify/shared@9.14.5': {}
'@jridgewell/gen-mapping@0.3.8':
dependencies:
@@ -2662,6 +2696,11 @@ snapshots:
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.25
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/set-array@1.2.1': {}
@@ -2693,10 +2732,14 @@ snapshots:
uuid: 10.0.0
web-vitals: 4.2.4
- '@opensig/opendesign@0.0.65(vue@3.2.25)':
+ '@opensig/opendesign@0.0.65(vue@3.5.20(typescript@4.6.2))':
dependencies:
date-fns: 2.30.0
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
+
+ '@opensig/opendesign@1.0.1(vue@3.5.20(typescript@4.6.2))':
+ dependencies:
+ vue: 3.5.20(typescript@4.6.2)
'@pkgr/core@0.1.1': {}
@@ -2907,11 +2950,13 @@ snapshots:
'@types/lodash@4.14.180': {}
- '@types/node@17.0.22': {}
+ '@types/node@22.0.0':
+ dependencies:
+ undici-types: 6.11.1
'@types/semver@7.5.8': {}
- '@types/throttle-debounce@2.1.0': {}
+ '@types/web-bluetooth@0.0.21': {}
'@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.6.2))(eslint@8.56.0)(typescript@4.6.2)':
dependencies:
@@ -2955,7 +3000,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 6.21.0(typescript@4.6.2)
'@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@4.6.2)
- debug: 4.3.4
+ debug: 4.4.1
eslint: 8.56.0
ts-api-utils: 1.4.3(typescript@4.6.2)
optionalDependencies:
@@ -2969,7 +3014,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.3.4
+ debug: 4.4.1
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@@ -3001,20 +3046,20 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
- '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)':
+ '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))':
dependencies:
'@babel/core': 7.26.8
'@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.8)
'@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.8)
- vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9)
- vue: 3.2.25
+ vite: 6.3.4(@types/node@22.0.0)(sass@1.49.9)
+ vue: 3.5.20(typescript@4.6.2)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue@3.2.25)':
+ '@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@22.0.0)(sass@1.49.9))(vue@3.5.20(typescript@4.6.2))':
dependencies:
- vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9)
- vue: 3.2.25
+ vite: 6.3.4(@types/node@22.0.0)(sass@1.49.9)
+ vue: 3.5.20(typescript@4.6.2)
'@volar/language-core@1.11.1':
dependencies:
@@ -3059,16 +3104,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vue/compiler-core@3.2.25':
- dependencies:
- '@babel/parser': 7.24.7
- '@vue/shared': 3.2.25
- estree-walker: 2.0.2
- source-map: 0.6.1
-
'@vue/compiler-core@3.4.27':
dependencies:
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.26.8
'@vue/shared': 3.4.27
entities: 4.5.0
estree-walker: 2.0.2
@@ -3082,10 +3120,13 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.2.25':
+ '@vue/compiler-core@3.5.20':
dependencies:
- '@vue/compiler-core': 3.2.25
- '@vue/shared': 3.2.25
+ '@babel/parser': 7.28.3
+ '@vue/shared': 3.5.20
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
'@vue/compiler-dom@3.4.27':
dependencies:
@@ -3097,18 +3138,10 @@ snapshots:
'@vue/compiler-core': 3.5.13
'@vue/shared': 3.5.13
- '@vue/compiler-sfc@3.2.25':
+ '@vue/compiler-dom@3.5.20':
dependencies:
- '@babel/parser': 7.24.7
- '@vue/compiler-core': 3.2.25
- '@vue/compiler-dom': 3.2.25
- '@vue/compiler-ssr': 3.2.25
- '@vue/reactivity-transform': 3.2.25
- '@vue/shared': 3.2.25
- estree-walker: 2.0.2
- magic-string: 0.25.9
- postcss: 8.5.3
- source-map: 0.6.1
+ '@vue/compiler-core': 3.5.20
+ '@vue/shared': 3.5.20
'@vue/compiler-sfc@3.5.13':
dependencies:
@@ -3119,19 +3152,31 @@ snapshots:
'@vue/shared': 3.5.13
estree-walker: 2.0.2
magic-string: 0.30.17
- postcss: 8.5.3
+ postcss: 8.5.6
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.2.25':
+ '@vue/compiler-sfc@3.5.20':
dependencies:
- '@vue/compiler-dom': 3.2.25
- '@vue/shared': 3.2.25
+ '@babel/parser': 7.28.3
+ '@vue/compiler-core': 3.5.20
+ '@vue/compiler-dom': 3.5.20
+ '@vue/compiler-ssr': 3.5.20
+ '@vue/shared': 3.5.20
+ estree-walker: 2.0.2
+ magic-string: 0.30.17
+ postcss: 8.5.6
+ source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.13':
dependencies:
'@vue/compiler-dom': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/compiler-ssr@3.5.20':
+ dependencies:
+ '@vue/compiler-dom': 3.5.20
+ '@vue/shared': 3.5.20
+
'@vue/devtools-api@6.1.3': {}
'@vue/devtools-api@6.6.4': {}
@@ -3171,56 +3216,62 @@ snapshots:
optionalDependencies:
typescript: 4.6.2
- '@vue/reactivity-transform@3.2.25':
+ '@vue/reactivity@3.5.20':
dependencies:
- '@babel/parser': 7.24.7
- '@vue/compiler-core': 3.2.25
- '@vue/shared': 3.2.25
- estree-walker: 2.0.2
- magic-string: 0.25.9
-
- '@vue/reactivity@3.2.25':
- dependencies:
- '@vue/shared': 3.2.25
+ '@vue/shared': 3.5.20
- '@vue/runtime-core@3.2.25':
+ '@vue/runtime-core@3.5.20':
dependencies:
- '@vue/reactivity': 3.2.25
- '@vue/shared': 3.2.25
+ '@vue/reactivity': 3.5.20
+ '@vue/shared': 3.5.20
- '@vue/runtime-dom@3.2.25':
+ '@vue/runtime-dom@3.5.20':
dependencies:
- '@vue/runtime-core': 3.2.25
- '@vue/shared': 3.2.25
- csstype: 2.6.21
+ '@vue/reactivity': 3.5.20
+ '@vue/runtime-core': 3.5.20
+ '@vue/shared': 3.5.20
+ csstype: 3.1.3
- '@vue/server-renderer@3.2.25(vue@3.2.25)':
+ '@vue/server-renderer@3.5.20(vue@3.5.20(typescript@4.6.2))':
dependencies:
- '@vue/compiler-ssr': 3.2.25
- '@vue/shared': 3.2.25
- vue: 3.2.25
-
- '@vue/shared@3.2.25': {}
+ '@vue/compiler-ssr': 3.5.20
+ '@vue/shared': 3.5.20
+ vue: 3.5.20(typescript@4.6.2)
'@vue/shared@3.4.27': {}
'@vue/shared@3.5.13': {}
- '@vueuse/core@8.1.2(vue@3.2.25)':
+ '@vue/shared@3.5.20': {}
+
+ '@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.21
+ '@vueuse/metadata': 13.9.0
+ '@vueuse/shared': 13.9.0(vue@3.5.20(typescript@4.6.2))
+ vue: 3.5.20(typescript@4.6.2)
+
+ '@vueuse/core@8.1.2(vue@3.5.20(typescript@4.6.2))':
dependencies:
'@vueuse/metadata': 8.1.2
- '@vueuse/shared': 8.1.2(vue@3.2.25)
- vue-demi: 0.12.4(vue@3.2.25)
+ '@vueuse/shared': 8.1.2(vue@3.5.20(typescript@4.6.2))
+ vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2))
optionalDependencies:
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
+
+ '@vueuse/metadata@13.9.0': {}
'@vueuse/metadata@8.1.2': {}
- '@vueuse/shared@8.1.2(vue@3.2.25)':
+ '@vueuse/shared@13.9.0(vue@3.5.20(typescript@4.6.2))':
+ dependencies:
+ vue: 3.5.20(typescript@4.6.2)
+
+ '@vueuse/shared@8.1.2(vue@3.5.20(typescript@4.6.2))':
dependencies:
- vue-demi: 0.12.4(vue@3.2.25)
+ vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2))
optionalDependencies:
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
acorn-jsx@5.3.2(acorn@8.11.3):
dependencies:
@@ -3230,6 +3281,8 @@ snapshots:
acorn@8.11.3: {}
+ acorn@8.15.0: {}
+
ajv@6.12.6:
dependencies:
fast-deep-equal: 3.1.3
@@ -3256,10 +3309,10 @@ snapshots:
asynckit@0.4.0: {}
- axios@1.8.2:
+ axios@1.12.0:
dependencies:
follow-redirects: 1.15.6
- form-data: 4.0.2
+ form-data: 4.0.4
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
@@ -3344,6 +3397,10 @@ snapshots:
concat-map@0.0.1: {}
+ confbox@0.1.8: {}
+
+ confbox@0.2.2: {}
+
convert-source-map@2.0.0: {}
cross-spawn@7.0.3:
@@ -3356,7 +3413,7 @@ snapshots:
dependencies:
utrie: 1.0.2
- csstype@2.6.21: {}
+ csstype@3.1.3: {}
d3-array@3.1.6:
dependencies:
@@ -3522,6 +3579,10 @@ snapshots:
dependencies:
ms: 2.1.2
+ debug@4.4.1:
+ dependencies:
+ ms: 2.1.3
+
deep-is@0.1.4: {}
delaunator@5.0.0:
@@ -3555,12 +3616,12 @@ snapshots:
electron-to-chromium@1.5.98: {}
- element-plus@2.1.4(@types/lodash-es@4.17.6)(vue@3.2.25):
+ element-plus@2.1.4(@types/lodash-es@4.17.6)(vue@3.5.20(typescript@4.6.2)):
dependencies:
'@ctrl/tinycolor': 3.4.0
- '@element-plus/icons-vue': 1.1.4(vue@3.2.25)
+ '@element-plus/icons-vue': 1.1.4(vue@3.5.20(typescript@4.6.2))
'@popperjs/core': 2.11.4
- '@vueuse/core': 8.1.2(vue@3.2.25)
+ '@vueuse/core': 8.1.2(vue@3.5.20(typescript@4.6.2))
async-validator: 4.0.7
dayjs: 1.11.0
escape-html: 1.0.3
@@ -3569,7 +3630,7 @@ snapshots:
lodash-unified: 1.0.2(@types/lodash-es@4.17.6)(lodash-es@4.17.21)(lodash@4.17.21)
memoize-one: 6.0.0
normalize-wheel-es: 1.1.1
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
transitivePeerDependencies:
- '@types/lodash-es'
- '@vue/composition-api'
@@ -3744,17 +3805,7 @@ snapshots:
esutils@2.0.3: {}
- execa@5.1.1:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
+ exsolve@1.0.7: {}
fast-deep-equal@3.1.3: {}
@@ -3802,11 +3853,12 @@ snapshots:
follow-redirects@1.15.6: {}
- form-data@4.0.2:
+ form-data@4.0.4:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
mime-types: 2.1.35
fs.realpath@1.0.0: {}
@@ -3836,8 +3888,6 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-stream@6.0.1: {}
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -3861,6 +3911,8 @@ snapshots:
dependencies:
type-fest: 0.20.2
+ globals@15.15.0: {}
+
globby@11.1.0:
dependencies:
array-union: 2.1.0
@@ -3895,8 +3947,6 @@ snapshots:
css-line-break: 2.1.0
text-segmentation: 1.0.3
- human-signals@2.1.0: {}
-
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
@@ -3941,8 +3991,6 @@ snapshots:
is-path-inside@3.0.3: {}
- is-stream@2.0.1: {}
-
isexe@2.0.0: {}
js-cookie@3.0.5: {}
@@ -3963,17 +4011,21 @@ snapshots:
jsonc-parser@3.2.0: {}
- kolorist@1.5.1: {}
+ kolorist@1.8.0: {}
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
- local-pkg@0.4.1: {}
-
local-pkg@0.4.3: {}
+ local-pkg@1.1.2:
+ dependencies:
+ mlly: 1.8.0
+ pkg-types: 2.3.0
+ quansync: 0.2.11
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@@ -3994,10 +4046,6 @@ snapshots:
dependencies:
yallist: 3.1.1
- magic-string@0.25.9:
- dependencies:
- sourcemap-codec: 1.4.8
-
magic-string@0.26.7:
dependencies:
sourcemap-codec: 1.4.8
@@ -4018,8 +4066,6 @@ snapshots:
memoize-one@6.0.0: {}
- merge-stream@2.0.0: {}
-
merge2@1.4.1: {}
micromatch@4.0.4:
@@ -4033,8 +4079,6 @@ snapshots:
dependencies:
mime-db: 1.52.0
- mimic-fn@2.1.0: {}
-
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
@@ -4054,10 +4098,21 @@ snapshots:
pkg-types: 1.0.3
ufo: 1.3.2
+ mlly@1.8.0:
+ dependencies:
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
+
ms@2.1.2: {}
+ ms@2.1.3: {}
+
muggle-string@0.3.1: {}
+ nanoid@3.3.11: {}
+
nanoid@3.3.8: {}
natural-compare@1.4.0: {}
@@ -4070,18 +4125,10 @@ snapshots:
normalize.css@8.0.1: {}
- npm-run-path@4.0.1:
- dependencies:
- path-key: 3.1.1
-
once@1.4.0:
dependencies:
wrappy: 1.0.2
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.0
-
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -4099,6 +4146,8 @@ snapshots:
dependencies:
p-limit: 3.1.0
+ package-manager-detector@1.3.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -4117,17 +4166,21 @@ snapshots:
pathe@1.1.1: {}
+ pathe@2.0.3: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
picomatch@4.0.2: {}
- pinia@2.0.12(typescript@4.6.2)(vue@3.2.25):
+ picomatch@4.0.3: {}
+
+ pinia@2.0.12(typescript@4.6.2)(vue@3.5.20(typescript@4.6.2)):
dependencies:
'@vue/devtools-api': 6.1.3
- vue: 3.2.25
- vue-demi: 0.12.4(vue@3.2.25)
+ vue: 3.5.20(typescript@4.6.2)
+ vue-demi: 0.12.4(vue@3.5.20(typescript@4.6.2))
optionalDependencies:
typescript: 4.6.2
@@ -4137,12 +4190,30 @@ snapshots:
mlly: 1.4.2
pathe: 1.1.1
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.8.0
+ pathe: 2.0.3
+
+ pkg-types@2.3.0:
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.7
+ pathe: 2.0.3
+
postcss@8.5.3:
dependencies:
nanoid: 3.3.8
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
prelude-ls@1.2.1: {}
prettier-linter-helpers@1.0.0:
@@ -4155,6 +4226,8 @@ snapshots:
punycode@2.1.1: {}
+ quansync@0.2.11: {}
+
queue-microtask@1.2.3: {}
readdirp@3.6.0:
@@ -4229,16 +4302,12 @@ snapshots:
shebang-regex@3.0.0: {}
- signal-exit@3.0.7: {}
-
slash@3.0.0: {}
source-map-js@1.0.2: {}
source-map-js@1.2.1: {}
- source-map@0.6.1: {}
-
sourcemap-codec@1.4.8: {}
ssr-window@4.0.2: {}
@@ -4247,8 +4316,6 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
- strip-final-newline@2.0.0: {}
-
strip-json-comments@3.1.1: {}
strip-literal@1.3.0:
@@ -4279,13 +4346,13 @@ snapshots:
text-table@0.2.0: {}
+ tinyexec@1.0.1: {}
+
tinyglobby@0.2.13:
dependencies:
fdir: 6.4.4(picomatch@4.0.2)
picomatch: 4.0.2
- to-fast-properties@2.0.0: {}
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
@@ -4310,6 +4377,10 @@ snapshots:
ufo@1.3.2: {}
+ ufo@1.6.1: {}
+
+ undici-types@6.11.1: {}
+
unimport@1.3.0(rollup@4.40.0):
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.40.0)
@@ -4326,7 +4397,7 @@ snapshots:
transitivePeerDependencies:
- rollup
- unplugin-auto-import@0.11.5(@vueuse/core@8.1.2(vue@3.2.25))(rollup@4.40.0):
+ unplugin-auto-import@0.11.5(@vueuse/core@13.9.0(vue@3.5.20(typescript@4.6.2)))(rollup@4.40.0):
dependencies:
'@antfu/utils': 0.7.8
'@rollup/pluginutils': 5.1.0(rollup@4.40.0)
@@ -4335,30 +4406,24 @@ snapshots:
unimport: 1.3.0(rollup@4.40.0)
unplugin: 1.10.1
optionalDependencies:
- '@vueuse/core': 8.1.2(vue@3.2.25)
+ '@vueuse/core': 13.9.0(vue@3.5.20(typescript@4.6.2))
transitivePeerDependencies:
- rollup
- unplugin-icons@0.14.0(@vue/compiler-sfc@3.5.13)(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))(vue-template-compiler@2.7.16):
+ unplugin-icons@22.2.0(@vue/compiler-sfc@3.5.20)(vue-template-compiler@2.7.16):
dependencies:
- '@antfu/install-pkg': 0.1.0
- '@antfu/utils': 0.5.0
- '@iconify/utils': 1.0.28
- debug: 4.3.4
- kolorist: 1.5.1
- local-pkg: 0.4.1
- unplugin: 0.5.2(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9))
+ '@antfu/install-pkg': 1.1.0
+ '@iconify/utils': 2.3.0
+ debug: 4.4.1
+ local-pkg: 1.1.2
+ unplugin: 2.3.10
optionalDependencies:
- '@vue/compiler-sfc': 3.5.13
+ '@vue/compiler-sfc': 3.5.20
vue-template-compiler: 2.7.16
transitivePeerDependencies:
- - esbuild
- - rollup
- supports-color
- - vite
- - webpack
- unplugin-vue-components@0.26.0(@babel/parser@7.26.8)(rollup@4.40.0)(vue@3.2.25):
+ unplugin-vue-components@0.26.0(@babel/parser@7.28.3)(rollup@4.40.0)(vue@3.5.20(typescript@4.6.2)):
dependencies:
'@antfu/utils': 0.7.8
'@rollup/pluginutils': 5.1.0(rollup@4.40.0)
@@ -4370,23 +4435,13 @@ snapshots:
minimatch: 9.0.4
resolve: 1.22.8
unplugin: 1.10.1
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
optionalDependencies:
- '@babel/parser': 7.26.8
+ '@babel/parser': 7.28.3
transitivePeerDependencies:
- rollup
- supports-color
- unplugin@0.5.2(esbuild@0.25.2)(rollup@4.40.0)(vite@6.3.4(@types/node@17.0.22)(sass@1.49.9)):
- dependencies:
- chokidar: 3.5.3
- webpack-sources: 3.2.3
- webpack-virtual-modules: 0.4.3
- optionalDependencies:
- esbuild: 0.25.2
- rollup: 4.40.0
- vite: 6.3.4(@types/node@17.0.22)(sass@1.49.9)
-
unplugin@1.10.1:
dependencies:
acorn: 8.11.3
@@ -4394,6 +4449,13 @@ snapshots:
webpack-sources: 3.2.3
webpack-virtual-modules: 0.6.2
+ unplugin@2.3.10:
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ acorn: 8.15.0
+ picomatch: 4.0.3
+ webpack-virtual-modules: 0.6.2
+
update-browserslist-db@1.1.2(browserslist@4.24.4):
dependencies:
browserslist: 4.24.4
@@ -4410,7 +4472,7 @@ snapshots:
uuid@10.0.0: {}
- vite@6.3.4(@types/node@17.0.22)(sass@1.49.9):
+ vite@6.3.4(@types/node@22.0.0)(sass@1.49.9):
dependencies:
esbuild: 0.25.2
fdir: 6.4.4(picomatch@4.0.2)
@@ -4419,17 +4481,17 @@ snapshots:
rollup: 4.40.0
tinyglobby: 0.2.13
optionalDependencies:
- '@types/node': 17.0.22
+ '@types/node': 22.0.0
fsevents: 2.3.3
sass: 1.49.9
- vue-demi@0.12.4(vue@3.2.25):
+ vue-demi@0.12.4(vue@3.5.20(typescript@4.6.2)):
dependencies:
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
vue-eslint-parser@8.3.0(eslint@8.56.0):
dependencies:
- debug: 4.3.4
+ debug: 4.4.1
eslint: 8.56.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
@@ -4453,17 +4515,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-i18n@9.14.3(vue@3.2.25):
+ vue-i18n@9.14.5(vue@3.5.20(typescript@4.6.2)):
dependencies:
- '@intlify/core-base': 9.14.3
- '@intlify/shared': 9.14.3
+ '@intlify/core-base': 9.14.5
+ '@intlify/shared': 9.14.5
'@vue/devtools-api': 6.6.4
- vue: 3.2.25
+ vue: 3.5.20(typescript@4.6.2)
- vue-router@4.0.14(vue@3.2.25):
+ vue-router@4.5.1(vue@3.5.20(typescript@4.6.2)):
dependencies:
- '@vue/devtools-api': 6.1.3
- vue: 3.2.25
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.20(typescript@4.6.2)
vue-template-compiler@2.7.16:
dependencies:
@@ -4477,20 +4539,20 @@ snapshots:
semver: 7.6.2
typescript: 4.6.2
- vue@3.2.25:
+ vue@3.5.20(typescript@4.6.2):
dependencies:
- '@vue/compiler-dom': 3.2.25
- '@vue/compiler-sfc': 3.2.25
- '@vue/runtime-dom': 3.2.25
- '@vue/server-renderer': 3.2.25(vue@3.2.25)
- '@vue/shared': 3.2.25
+ '@vue/compiler-dom': 3.5.20
+ '@vue/compiler-sfc': 3.5.20
+ '@vue/runtime-dom': 3.5.20
+ '@vue/server-renderer': 3.5.20(vue@3.5.20(typescript@4.6.2))
+ '@vue/shared': 3.5.20
+ optionalDependencies:
+ typescript: 4.6.2
web-vitals@4.2.4: {}
webpack-sources@3.2.3: {}
- webpack-virtual-modules@0.4.3: {}
-
webpack-virtual-modules@0.6.2: {}
which@2.0.2: