秋田弘 7 months ago
parent
commit
87b77b4362
  1. 2
      README.md
  2. 3
      frontend/auto-imports.d.ts
  3. 7202
      frontend/package-lock.json
  4. 1
      frontend/public/docx/assets/index.6dcf988b.css
  5. 107
      frontend/public/docx/assets/index.bae472f7.js
  6. 1
      frontend/public/docx/assets/save.5057a734.svg
  7. 1
      frontend/public/docx/assets/table-border-dash.8cfd45a5.svg
  8. 1
      frontend/public/docx/assets/table-border-internal.78ae9ca1.svg
  9. 415
      frontend/public/docx/assets/vendor.d13e5cc9.js
  10. 95
      frontend/public/docx/index.html
  11. 435
      frontend/src/components/builtin/MarkDown.vue
  12. 182
      frontend/src/components/oa/ShareFiles.vue
  13. 171
      frontend/src/components/setting/SetFilePwd.vue
  14. 5
      frontend/src/components/window/IframeFile.vue
  15. 1
      frontend/src/system/applist.ts
  16. 9
      frontend/src/system/core/FileOs.ts
  17. 38
      frontend/src/system/notification/Notification.ts
  18. 2
      godo/cmd/serve.go
  19. 30
      godo/files/fs.go
  20. 4
      godo/files/pwdfile.go
  21. 21
      packages/baiban/.eslintrc.cjs
  22. 24
      packages/baiban/.gitignore
  23. 1
      packages/baiban/README.md
  24. 13
      packages/baiban/index.html
  25. 6736
      packages/baiban/package-lock.json
  26. 31
      packages/baiban/package.json
  27. 5026
      packages/baiban/pnpm-lock.yaml
  28. 6
      packages/baiban/postcss.config.js
  29. 1
      packages/baiban/public/save.svg
  30. BIN
      packages/baiban/public/static/card-repo.png
  31. 26
      packages/baiban/public/static/card_repo.svg
  32. BIN
      packages/baiban/public/static/embed-icons/codepen.png
  33. BIN
      packages/baiban/public/static/embed-icons/codesandbox.png
  34. BIN
      packages/baiban/public/static/embed-icons/desmos.png
  35. BIN
      packages/baiban/public/static/embed-icons/excalidraw.png
  36. BIN
      packages/baiban/public/static/embed-icons/felt.png
  37. BIN
      packages/baiban/public/static/embed-icons/figma.png
  38. BIN
      packages/baiban/public/static/embed-icons/github_gist.png
  39. BIN
      packages/baiban/public/static/embed-icons/google_calendar.png
  40. BIN
      packages/baiban/public/static/embed-icons/google_maps.png
  41. BIN
      packages/baiban/public/static/embed-icons/google_slides.png
  42. BIN
      packages/baiban/public/static/embed-icons/observable.png
  43. BIN
      packages/baiban/public/static/embed-icons/replit.png
  44. BIN
      packages/baiban/public/static/embed-icons/scratch.png
  45. BIN
      packages/baiban/public/static/embed-icons/spotify.png
  46. BIN
      packages/baiban/public/static/embed-icons/tldraw.png
  47. BIN
      packages/baiban/public/static/embed-icons/val_town.png
  48. BIN
      packages/baiban/public/static/embed-icons/vimeo.png
  49. BIN
      packages/baiban/public/static/embed-icons/youtube.png
  50. BIN
      packages/baiban/public/static/fonts/IBMPlexMono-Medium.woff2
  51. BIN
      packages/baiban/public/static/fonts/IBMPlexSans-Medium.woff2
  52. BIN
      packages/baiban/public/static/fonts/IBMPlexSerif-Medium.woff2
  53. BIN
      packages/baiban/public/static/fonts/Shantell_Sans-Tldrawish.woff2
  54. BIN
      packages/baiban/public/static/github-hero-dark-draw.png
  55. BIN
      packages/baiban/public/static/github-hero-dark.png
  56. BIN
      packages/baiban/public/static/github-hero-light-2.png
  57. BIN
      packages/baiban/public/static/github-hero-light-draw.png
  58. BIN
      packages/baiban/public/static/github-hero-light.png
  59. BIN
      packages/baiban/public/static/github-hero_dark-2.png
  60. 3
      packages/baiban/public/static/icons/icon/align-bottom.svg
  61. 4
      packages/baiban/public/static/icons/icon/align-center-horizontal.svg
  62. 3
      packages/baiban/public/static/icons/icon/align-center-vertical.svg
  63. 4
      packages/baiban/public/static/icons/icon/align-left.svg
  64. 4
      packages/baiban/public/static/icons/icon/align-right.svg
  65. 3
      packages/baiban/public/static/icons/icon/align-top.svg
  66. 3
      packages/baiban/public/static/icons/icon/arrow-left.svg
  67. 3
      packages/baiban/public/static/icons/icon/arrowhead-arrow.svg
  68. 3
      packages/baiban/public/static/icons/icon/arrowhead-bar.svg
  69. 4
      packages/baiban/public/static/icons/icon/arrowhead-diamond.svg
  70. 4
      packages/baiban/public/static/icons/icon/arrowhead-dot.svg
  71. 3
      packages/baiban/public/static/icons/icon/arrowhead-none.svg
  72. 3
      packages/baiban/public/static/icons/icon/arrowhead-square.svg
  73. 3
      packages/baiban/public/static/icons/icon/arrowhead-triangle-inverted.svg
  74. 3
      packages/baiban/public/static/icons/icon/arrowhead-triangle.svg
  75. 3
      packages/baiban/public/static/icons/icon/blob.svg
  76. 3
      packages/baiban/public/static/icons/icon/bring-forward.svg
  77. 3
      packages/baiban/public/static/icons/icon/bring-to-front.svg
  78. 5
      packages/baiban/public/static/icons/icon/broken.svg
  79. 4
      packages/baiban/public/static/icons/icon/check-circle.svg
  80. 3
      packages/baiban/public/static/icons/icon/check.svg
  81. 3
      packages/baiban/public/static/icons/icon/chevron-down.svg
  82. 3
      packages/baiban/public/static/icons/icon/chevron-left.svg
  83. 3
      packages/baiban/public/static/icons/icon/chevron-right.svg
  84. 3
      packages/baiban/public/static/icons/icon/chevron-up.svg
  85. 3
      packages/baiban/public/static/icons/icon/chevrons-ne.svg
  86. 3
      packages/baiban/public/static/icons/icon/chevrons-sw.svg
  87. 4
      packages/baiban/public/static/icons/icon/clipboard-copied.svg
  88. 15
      packages/baiban/public/static/icons/icon/clipboard-copy.svg
  89. 3
      packages/baiban/public/static/icons/icon/color.svg
  90. 3
      packages/baiban/public/static/icons/icon/cross-2.svg
  91. 4
      packages/baiban/public/static/icons/icon/cross-circle.svg
  92. 3
      packages/baiban/public/static/icons/icon/dash-dashed.svg
  93. 14
      packages/baiban/public/static/icons/icon/dash-dotted.svg
  94. 3
      packages/baiban/public/static/icons/icon/dash-draw.svg
  95. 3
      packages/baiban/public/static/icons/icon/dash-solid.svg
  96. 4
      packages/baiban/public/static/icons/icon/disconnected.svg
  97. 12
      packages/baiban/public/static/icons/icon/discord.svg
  98. 6
      packages/baiban/public/static/icons/icon/distribute-horizontal.svg
  99. 6
      packages/baiban/public/static/icons/icon/distribute-vertical.svg
  100. 3
      packages/baiban/public/static/icons/icon/dot.svg

2
README.md

@ -10,7 +10,7 @@
[English](README.en.md) | 简体中文
[FAQ](./docs/Faq.md) | [API](./docs/Api.md) | [应用开发](./docs/Store.md)
[使用文档](https://docs.godoos.com/zh/godoos.html) | [FAQ](./docs/Faq.md) | [应用开发](./docs/Store.md)
</div>

3
frontend/auto-imports.d.ts

@ -3,7 +3,6 @@
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
// biome-ignore lint: disable
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
@ -72,6 +71,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue')
}

7202
frontend/package-lock.json

File diff suppressed because it is too large

1
frontend/public/docx/assets/index.6dcf988b.css

File diff suppressed because one or more lines are too long

107
frontend/public/docx/assets/index.bae472f7.js

File diff suppressed because one or more lines are too long

1
frontend/public/docx/assets/save.5057a734.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731468009721" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4260" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M877.141333 0.938667H146.773333c-80.810667 0-145.92 65.109333-145.92 145.92v730.282666c0 80.810667 65.706667 145.92 145.92 145.92h730.282667c80.810667 0 145.92-65.706667 145.92-145.92V146.773333c0-80.810667-65.109333-145.92-145.92-145.92z m-581.12 75.178666h433.237334V363.52H295.936V76.117333z m654.336 801.024c0 19.626667-7.594667 37.888-21.418666 51.797334a72.618667 72.618667 0 0 1-51.797334 21.418666H146.773333a72.618667 72.618667 0 0 1-51.797333-21.418666 71.594667 71.594667 0 0 1-21.418667-51.797334V146.773333A73.386667 73.386667 0 0 1 146.773333 73.642667h73.386667v291.84c0 19.626667 7.509333 37.888 21.333333 51.797333a72.277333 72.277333 0 0 0 51.2 21.418667H731.306667c19.626667 0 37.888-7.594667 51.797333-21.418667a72.618667 72.618667 0 0 0 21.418667-51.797333V74.24h72.704c19.626667 0 37.888 7.594667 51.797333 21.504a72.618667 72.618667 0 0 1 21.418667 51.797333v729.6z" fill="#13227a" p-id="4261"></path><path d="M582.826667 140.544c-20.906667 0-37.973333 17.066667-37.973334 37.973333v73.216c0 20.821333 17.066667 37.888 37.888 37.888 10.154667 0 19.626667-3.754667 26.538667-11.349333a38.997333 38.997333 0 0 0 11.349333-26.453333v-73.386667c0-20.821333-17.066667-37.888-37.888-37.888z" fill="#13227a" p-id="4262"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
frontend/public/docx/assets/table-border-dash.8cfd45a5.svg

@ -0,0 +1 @@
<svg width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M13 3h-1V2h1a1 1 0 011 1v1h-1V3zm-3-1v1H8.5v2h-1V3H6V2h4zM4 2v1H3v1H2V3a1 1 0 011-1h1zM2 6h1v1.5h2v1H3V10H2V6zm0 6h1v1h1v1H3a1 1 0 01-1-1v-1zm4 2v-1h1.5v-2h1v2H10v1H6zm6 0v-1h1v-1h1v1a1 1 0 01-1 1h-1zm2-4h-1V8.5h-2v-1h2V6h1v4zM8.5 7.5v-1h-1v1h-1v1h1v1h1v-1h1v-1h-1z" fill="#000000"/></svg>

After

Width:  |  Height:  |  Size: 413 B

1
frontend/public/docx/assets/table-border-internal.78ae9ca1.svg

@ -0,0 +1 @@
<svg width="16" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 3a.5.5 0 01.5-.5h11a.5.5 0 01.5.5v11a.5.5 0 01-.5.5H3a.5.5 0 01-.5-.5V3z" stroke="#AAACB0"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 5V3H8v2h1zm0 9v-2H8v2h1zM5 8H3v1h2V8zm9 0h-2v1h2V8zM9 7v1h1v1H9v1H8V9H7V8h1V7h1z" fill="#3D4757"/></svg>

After

Width:  |  Height:  |  Size: 337 B

415
frontend/public/docx/assets/vendor.d13e5cc9.js

File diff suppressed because one or more lines are too long

95
frontend/public/docx/index.html

@ -5,69 +5,14 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/png" href="./assets/favicon.fbfa22e6.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>docx</title>
<style>
.first-screen-loading {
width: 200px;
height: 200px;
position: fixed;
top: 50%;
left: 50%;
margin-top: -100px;
margin-left: -100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.first-screen-loading-spinner {
width: 36px;
height: 36px;
border: 3px solid #d14424;
border-top-color: transparent;
border-radius: 50%;
animation: spinner .8s linear infinite;
}
.first-screen-loading-text {
margin-top: 20px;
color: #d14424;
}
@keyframes spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
<script>
// 假设加载动画持续2秒,2秒后隐藏加载动画并显示.menu
setTimeout(function () {
var loading = document.querySelector('.first-screen-loading');
var menu = document.querySelector('#app');
// 隐藏加载动画
loading.style.display = 'none';
// 显示菜单
menu.style.display = 'block';
}, 3000); // 2000毫秒后执行,根据实际情况调整
</script>
<script type="module" crossorigin src="./assets/index.82ba8f6a.js"></script>
<link rel="stylesheet" href="./assets/index.ea630926.css">
<title>word</title>
<script type="module" crossorigin src="./assets/index.bae472f7.js"></script>
<link rel="modulepreload" href="./assets/vendor.d13e5cc9.js">
<link rel="stylesheet" href="./assets/index.6dcf988b.css">
</head>
<body>
<div class="first-screen-loading">
<div class="first-screen-loading-spinner"></div>
<div class="first-screen-loading-text">正在加载中,请稍等 ...</div>
</div>
<div id="app" style="display: none;">
<div id="app">
<div class="menu" editor-component="menu">
<div class="menu-item">
<div class="menu-item__undo">
@ -90,11 +35,10 @@
<div class="options">
<ul>
<li data-family="Microsoft YaHei" style="font-family:'Microsoft YaHei';">微软雅黑</li>
<li data-family="宋体" style="font-family:'宋体';">宋体</li>
<li data-family="黑体" style="font-family:'黑体';">黑体</li>
<li data-family="仿宋" style="font-family:'仿宋';">仿宋</li>
<li data-family="楷体" style="font-family:'楷体';">楷体</li>
<li data-family="等线" style="font-family:'等线';">等线</li>
<li data-family="华文宋体" style="font-family:'华文宋体';">华文宋体</li>
<li data-family="华文黑体" style="font-family:'华文黑体';">华文黑体</li>
<li data-family="华文仿宋" style="font-family:'华文仿宋';">华文仿宋</li>
<li data-family="华文楷体" style="font-family:'华文楷体';">华文楷体</li>
<li data-family="华文琥珀" style="font-family:'华文琥珀';">华文琥珀</li>
<li data-family="华文楷体" style="font-family:'华文楷体';">华文楷体</li>
<li data-family="华文隶书" style="font-family:'华文隶书';">华文隶书</li>
@ -266,7 +210,7 @@
</li>
<li data-list-type="ul" data-list-style='square'>
<label>空心方块列表:</label>
<ul style="list-style-type: square;">
<ul style="list-style-type: '☐ ';">
<li>________</li>
</ul>
</li>
@ -390,21 +334,12 @@
<button>替换</button>
</div>
</div>
<div class="menu-item__print" data-menu="print" title="打印">
<div class="menu-item__print" data-menu="print">
<i></i>
</div>
<div class="menu-item__import" data-menu="import" title="导入">
<i></i>
<input type="file" id="file-docx" style="display: none; width: 0; height: 0" accept=".docx" />
</div>
<div class="menu-item__export" data-menu="export" title="导出">
<div class="menu-item__save" data-menu="save">
<i></i>
</div>
<div class="menu-item__save" data-menu="save" title="保存">
<i></i>
</div>
</div>
</div>
<div class="catalog" editor-component="catalog">
@ -436,7 +371,7 @@
<span>页面:<span class="page-no">1</span>/<span class="page-size">1</span></span>
<span>字数:<span class="word-count">0</span></span>
</div>
<div class="editor-mode" title="编辑模式(编辑、清洁、只读、表单)">编辑模式</div>
<div class="editor-mode" title="编辑模式(编辑、清洁、只读、表单、设计)">编辑模式</div>
<div>
<div class="page-scale-minus" title="缩小(Ctrl+-)">
<i></i>
@ -483,6 +418,10 @@
</div>
</div>
</div>
<div style="display: none;">
<input type="file" name="file-docx" id="file-docx" accept=".docx" />
<input type="file" name="file-excel" id="file-excel" accept=".xlsx" />
</div>
</body>

435
frontend/src/components/builtin/MarkDown.vue

@ -1,204 +1,259 @@
<script lang="ts" setup>
import { BrowserWindow, System } from "@/system";
import { inject, onMounted, ref, toRaw, onUnmounted } from "vue";
import { notifyError, notifySuccess } from "@/util/msg";
import Vditor from "vditor";
import "vditor/dist/index.css";
import { getMdOption } from "@/util/vditor";
import { isBase64, decodeBase64 } from "@/util/file";
import moment from "moment";
import { useHistoryStore } from "@/stores/history";
import { getSplit } from "@/system/config";
import { saveAs } from "file-saver";
import { useHistoryStore } from "@/stores/history";
import { BrowserWindow, System } from "@/system";
import { getSplit, getSystemConfig } from "@/system/config";
import { decodeBase64, isBase64 } from "@/util/file";
import { notifyError, notifySuccess } from "@/util/msg";
import { isShareFile } from "@/util/sharePath.ts";
import { getMdOption } from "@/util/vditor";
import { saveAs } from "file-saver";
import moment from "moment";
import Vditor from "vditor";
import "vditor/dist/index.css";
import { inject, onMounted, onUnmounted, ref, toRaw } from "vue";
const historyStore = useHistoryStore();
const historyStore = useHistoryStore();
const drawerBox = ref(false);
const baseTitle = ref("");
const content = ref("");
const sys: any = inject<System>("system");
const win: any = inject<BrowserWindow>("browserWindow");
const isSaveing = ref(false);
const vditor = ref();
const filepath: any = ref("");
const fileInput: any = ref(null);
const SP = getSplit();
console.log(SP);
const drawerBox = ref(false);
const baseTitle = ref("");
const content = ref("");
const sys: any = inject<System>("system");
const win: any = inject<BrowserWindow>("browserWindow");
const isSaveing = ref(false);
const vditor = ref();
const filepath: any = ref("");
const fileInput: any = ref(null);
const SP = getSplit();
console.log(SP);
const debouncedHandleKeyDown = (event: KeyboardEvent) => {
//
if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "s") {
event.stopPropagation(); //
event.preventDefault(); //
if (!isSaveing.value) {
saveData();
}
}
};
const debouncedHandleKeyDown = (event: KeyboardEvent) => {
//
if (
(event.metaKey || event.ctrlKey) &&
event.key.toLowerCase() === "s"
) {
event.stopPropagation(); //
event.preventDefault(); //
if (!isSaveing.value) {
saveData();
}
}
};
const getDateTime = (t: any) => {
return moment(t).format("MM-DD HH:mm");
};
function getTitle() {
let title = win.getTitle();
console.log(title);
if (title.indexOf(SP) > -1) {
title = title.split(SP).pop();
title = title.split(".");
title.pop();
return title.join(".");
} else {
return "";
}
}
onMounted(async () => {
const editorOptions: any = getMdOption();
editorOptions.input = (val: any) => {
content.value = val;
};
const getDateTime = (t: any) => {
return moment(t).format("MM-DD HH:mm");
};
function getTitle() {
let title = win.getTitle();
console.log(title);
if (title.indexOf(SP) > -1) {
title = title.split(SP).pop();
title = title.split(".");
title.pop();
return title.join(".");
} else {
return "";
}
}
onMounted(async () => {
const editorOptions: any = getMdOption();
editorOptions.input = (val: any) => {
content.value = val;
};
vditor.value = new Vditor("vditorContainer", editorOptions);
baseTitle.value = getTitle();
if (win.config && win.config.content) {
let winContent = toRaw(win.config.content);
if (winContent && isBase64(winContent)) {
winContent = decodeBase64(winContent);
}
//console.log(winContent);
setTimeout(() => {
if (winContent && winContent != "") {
//console.log(winContent)
vditor.value.setValue(winContent);
}
}, 1000);
}
document.addEventListener("keydown", debouncedHandleKeyDown);
});
//
onUnmounted(() => {
document.removeEventListener("keydown", debouncedHandleKeyDown);
});
vditor.value = new Vditor("vditorContainer", editorOptions);
baseTitle.value = getTitle();
if (win.config && win.config.content) {
let winContent = toRaw(win.config.content);
if (winContent && isBase64(winContent)) {
winContent = decodeBase64(winContent);
}
//console.log(winContent);
setTimeout(() => {
if (winContent && winContent != "") {
//console.log(winContent)
vditor.value.setValue(winContent);
}
}, 1000);
}
document.addEventListener("keydown", debouncedHandleKeyDown);
});
//
onUnmounted(() => {
document.removeEventListener("keydown", debouncedHandleKeyDown);
});
async function saveData() {
if (isSaveing.value) {
return;
}
isSaveing.value = true;
if (baseTitle.value == "") {
notifyError("请输入标题");
isSaveing.value = false;
return;
}
//console.log(win.config.path)
if (!filepath.value || filepath.value == "") {
filepath.value = `${SP}C${SP}Users${SP}Desktop${SP}${baseTitle.value}.md`;
}
let refreshDesktop = false;
if (win.config.path) {
filepath.value = win.config.path;
let fileTitleArr = filepath.value.split(SP).pop().split(".");
fileTitleArr.pop();
const oldTitle = fileTitleArr.join(".");
if (oldTitle != baseTitle.value) {
filepath.value = filepath.value.replace(oldTitle, baseTitle.value);
refreshDesktop = true;
async function saveData() {
if (isSaveing.value) {
return;
}
isSaveing.value = true;
if (baseTitle.value == "") {
notifyError("请输入标题");
isSaveing.value = false;
return;
}
//console.log(win.config.path)
if (!filepath.value || filepath.value == "") {
filepath.value = `${SP}C${SP}Users${SP}Desktop${SP}${baseTitle.value}.md`;
}
let refreshDesktop = false;
if (win.config.path) {
filepath.value = win.config.path;
let fileTitleArr = filepath.value.split(SP).pop().split(".");
fileTitleArr.pop();
const oldTitle = fileTitleArr.join(".");
if (oldTitle != baseTitle.value) {
filepath.value = filepath.value.replace(
oldTitle,
baseTitle.value
);
refreshDesktop = true;
}
} else {
refreshDesktop = true;
}
let res
if (isShareFile(filepath.value)) {
const file = await sys?.fs.getShareInfo(filepath.value);
const isWrite = file.fs.sender === getSystemConfig().userInfo.id ? 1 : file.fs.is_write;
res = await sys?.fs.writeShareFile(
filepath.value,
vditor.value.getValue(),
isWrite
)
} else {
res = await sys?.fs.writeFile(filepath.value, vditor.value.getValue());
}
} else {
refreshDesktop = true;
}
//console.log(path)
await sys?.fs.writeFile(filepath.value, vditor.value.getValue());
notifySuccess("保存成功!");
isSaveing.value = false;
if (refreshDesktop) {
sys.refershAppList();
}
historyStore.addList("markdown", {
title: toRaw(baseTitle.value),
path: filepath.value,
time: Date.now(),
});
}
function uploadFile(event: any) {
const file = event.target.files[0];
if (!file) {
return;
}
const reader = new FileReader();
reader.onload = (e: any) => {
baseTitle.value = file.name.substring(0, file.name.lastIndexOf("."));
vditor.value.setValue(e.target.result);
};
reader.readAsText(file);
}
function importMd() {
fileInput.value.click();
}
function download() {
if (baseTitle.value == "") {
notifyError("标题不能为空");
return;
}
const contentData = vditor.value.getValue();
if (contentData == "") {
notifyError("内容不能为空");
return;
}
let blob = new Blob([contentData], { type: "text/plain;charset=utf-8" });
saveAs(blob, baseTitle.value + ".md");
}
if (res && res.code !== -1) {
notifySuccess(res.message || "保存成功!");
} else {
notifyError(res.message || "保存失败");
}
isSaveing.value = false;
if (refreshDesktop) {
sys.refershAppList();
}
historyStore.addList("markdown", {
title: toRaw(baseTitle.value),
path: filepath.value,
time: Date.now(),
});
}
function uploadFile(event: any) {
const file = event.target.files[0];
if (!file) {
return;
}
const reader = new FileReader();
reader.onload = (e: any) => {
baseTitle.value = file.name.substring(
0,
file.name.lastIndexOf(".")
);
vditor.value.setValue(e.target.result);
};
reader.readAsText(file);
}
function importMd() {
fileInput.value.click();
}
function download() {
if (baseTitle.value == "") {
notifyError("标题不能为空");
return;
}
const contentData = vditor.value.getValue();
if (contentData == "") {
notifyError("内容不能为空");
return;
}
let blob = new Blob([contentData], {
type: "text/plain;charset=utf-8",
});
saveAs(blob, baseTitle.value + ".md");
}
</script>
<template>
<el-drawer
v-model="drawerBox"
direction="ltr"
style="height: 100vh"
:show-close="false"
:with-header="false"
>
<div
class="list-item"
v-for="(item, index) in historyStore.getList('markdown')"
:key="index"
>
<div class="list-title">
<el-tooltip
class="box-item"
effect="dark"
:content="item.path"
placement="top-start"
>
{{ item.title }}
</el-tooltip>
</div>
<div class="list-time">
{{ getDateTime(item.time) }}
</div>
</div>
</el-drawer>
<el-row justify="space-between" :gutter="20" :span="24" style="margin: 10px 20px">
<el-col :span="5">
<el-button @click.stop="drawerBox = !drawerBox" icon="Menu" circle />
<el-button @click.stop="importMd" icon="Upload" circle />
<el-drawer
v-model="drawerBox"
direction="ltr"
style="height: 100vh"
:show-close="false"
:with-header="false"
>
<div
class="list-item"
v-for="(item, index) in historyStore.getList('markdown')"
:key="index"
>
<div class="list-title">
<el-tooltip
class="box-item"
effect="dark"
:content="item.path"
placement="top-start"
>
{{ item.title }}
</el-tooltip>
</div>
<div class="list-time">
{{ getDateTime(item.time) }}
</div>
</div>
</el-drawer>
<el-row
justify="space-between"
:gutter="20"
:span="24"
style="margin: 10px 20px"
>
<el-col :span="5">
<el-button
@click.stop="drawerBox = !drawerBox"
icon="Menu"
circle
/>
<el-button
@click.stop="importMd"
icon="Upload"
circle
/>
<el-button @click.stop="download" icon="Download" circle />
<input
type="file"
ref="fileInput"
accept=".md"
style="display: none"
@change="uploadFile"
/>
</el-col>
<el-col :span="15">
<el-input v-model="baseTitle" placeholder="输入标题" />
</el-col>
<el-col :span="2">
<el-button @click.stop="saveData()" icon="Finished" :loading="isSaveing" circle />
</el-col>
</el-row>
<div id="vditorContainer" style="margin: 10px 20px"></div>
<el-button
@click.stop="download"
icon="Download"
circle
/>
<input
type="file"
ref="fileInput"
accept=".md"
style="display: none"
@change="uploadFile"
/>
</el-col>
<el-col :span="15">
<el-input
v-model="baseTitle"
placeholder="输入标题"
/>
</el-col>
<el-col :span="2">
<el-button
@click.stop="saveData()"
icon="Finished"
:loading="isSaveing"
circle
/>
</el-col>
</el-row>
<div
id="vditorContainer"
style="margin: 10px 20px"
></div>
</template>
<style scoped>
@import "@/assets/left.scss";
@import "@/assets/left.scss";
</style>

182
frontend/src/components/oa/ShareFiles.vue

@ -1,82 +1,114 @@
<template>
<el-form :model="form" label-width="auto" style="max-width: 560px;margin-top:20px;padding: 20px;">
<el-form-item label="分享给">
<el-select v-model="form.receverid" filterable multiple clearable collapse-tags placeholder="选择人员"
popper-class="custom-header" :max-collapse-tags="1" value-key="id" style="width: 240px" @change="checkUsers">
<template #header>
<el-checkbox v-model="checkAll" @change="handleCheckAll">
全选
</el-checkbox>
</template>
<el-option v-for="item in userList" :key="item.id" :label="item.nickname" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="编辑权限">
<el-switch v-model="form.iswrite" active-value="1" inactive-value="0" />
</el-form-item>
<div class="btn-group">
<el-button type="primary" @click="onSubmit">发布分享</el-button>
</div>
</el-form>
<el-form
:model="form"
label-width="auto"
style="max-width: 560px; margin-top: 20px; padding: 20px"
>
<el-form-item label="分享给">
<el-select
v-model="form.receverid"
filterable
multiple
clearable
collapse-tags
placeholder="选择人员"
popper-class="custom-header"
:max-collapse-tags="1"
value-key="id"
style="width: 240px"
@change="checkUsers"
>
<template #header>
<el-checkbox
v-model="checkAll"
@change="handleCheckAll"
>
全选
</el-checkbox>
</template>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="编辑权限">
<el-switch
v-model="form.iswrite"
active-value="1"
inactive-value="0"
/>
</el-form-item>
<div class="btn-group">
<el-button
type="primary"
@click="onSubmit"
>发布分享</el-button
>
</div>
</el-form>
</template>
<script lang="ts" setup>
import { ref, inject, onMounted } from 'vue';
import { useSystem, BrowserWindow } from '@/system';
import { getSystemConfig, fetchPost } from "@/system/config";
import { notifySuccess, notifyError } from "@/util/msg";
const window: BrowserWindow | undefined = inject("browserWindow");
const sys = useSystem()
const userInfo: any = sys.getConfig('userInfo')
let userList = ref(userInfo.user_shares)
const checkAll = ref(false)
const form: any = ref({
senderid: '',
receverid: [],
path: '',
iswrite: '0'
})
const config = ref(getSystemConfig())
import { BrowserWindow, useSystem } from "@/system";
import { fetchPost, getSystemConfig } from "@/system/config";
import { notifyError, notifySuccess } from "@/util/msg";
import { inject, onMounted, ref } from "vue";
const window: BrowserWindow | undefined = inject("browserWindow");
const sys = useSystem();
const userInfo: any = sys.getConfig("userInfo");
let userList = ref(userInfo.user_shares);
const checkAll = ref(false);
const form: any = ref({
senderid: "",
receverid: [],
path: "",
iswrite: "0",
});
const config = ref(getSystemConfig());
const handleCheckAll = (val: any) => {
if (val) {
form.value.receverid = userList.value.map((d: any) => d.value)
} else {
form.value.receverid.value = []
}
}
const checkUsers = (val: any) => {
const res:any = []
val.forEach((item: any) => {
if(item){
res.push(item)
}
})
form.value.receverid = res
}
const onSubmit = async () => {
const apiUrl = config.value.userInfo.url + '/files/share'
form.value.senderid = config.value.userInfo.id
form.value.path = window?.config.path || ''
const temp = {...form.value}
temp.senderid = temp.senderid.toString()
temp.receverid = temp.receverid.map((item:any) => item.toString())
const res = await fetchPost(apiUrl, new URLSearchParams(temp))
if (res.ok) {
notifySuccess("分享文件成功")
} else {
notifyError("分享文件失败")
}
}
onMounted(() => {
userList.value = userList.value.filter((item: any)=> {
return item?.id !== config.value.userInfo.id
})
})
const handleCheckAll = (val: any) => {
if (val) {
form.value.receverid = userList.value.map((d: any) => d.value);
} else {
form.value.receverid.value = [];
}
};
const checkUsers = (val: any) => {
const res: any = [];
val.forEach((item: any) => {
if (item) {
res.push(item);
}
});
form.value.receverid = res;
};
const onSubmit = async () => {
const apiUrl = config.value.userInfo.url + "/files/share";
form.value.senderid = config.value.userInfo.id;
form.value.path = window?.config.path || "";
const temp = { ...form.value };
temp.senderid = temp.senderid.toString();
temp.receverid = temp.receverid.map((item: any) => item.toString());
const res = await fetchPost(apiUrl, new URLSearchParams(temp));
const result = await res.json();
if (res.ok) {
notifySuccess(result.message || "分享文件成功");
} else {
notifyError(result.message || "分享文件失败");
}
};
onMounted(() => {
userList.value = userList.value.filter((item: any) => {
return item?.id !== config.value.userInfo.id;
});
});
</script>
<style scoped>
.btn-group{
display: flex;
justify-content: center;
}
</style>
.btn-group {
display: flex;
justify-content: center;
}
</style>

171
frontend/src/components/setting/SetFilePwd.vue

@ -1,81 +1,106 @@
<template>
<div class="file-pwd-box">
<div v-if="setPwd">
<div class="setting-item" >
<label>文件密码</label>
<el-input v-model="filePwd" placeholder="请设置6-10位的密码" type="password" show-password/>
</div>
<div class="setting-item">
<label></label>
<el-button @click="toSetFilePwd" type="primary">{{ t("setFilePwd") }}</el-button>
<el-button @click="clearPwd" type="primary">取消文件加密</el-button>
</div>
</div>
<div v-else class="setting-item">
<label></label>
<el-button @click="setPwd = true" type="primary">设置文件密码</el-button>
</div>
</div>
<div class="file-pwd-box">
<div v-if="setPwd">
<div class="setting-item">
<label>文件密码</label>
<el-input
v-model="filePwd"
placeholder="请设置6-10位的密码"
type="password"
show-password
/>
</div>
<div class="setting-item">
<label></label>
<el-button
@click="toSetFilePwd"
type="primary"
>{{ t("setFilePwd") }}</el-button
>
<el-button
@click="clearPwd"
type="primary"
>取消文件加密</el-button
>
</div>
</div>
<div
v-else
class="setting-item"
>
<label></label>
<el-button
@click="setPwd = true"
type="primary"
>设置文件密码</el-button
>
</div>
</div>
</template>
<script lang="ts" setup>
import { md5 } from "js-md5";
import { ref, onMounted } from "vue";
import { t } from "@/system";
import { fetchGet, getApiUrl, setSystemKey, getSystemConfig } from "@/system/config";
import { notifySuccess, notifyError } from "@/util/msg";
const filePwd = ref('')
const setPwd = ref(false)
const config = getSystemConfig()
const params = {
isPwd: 1,
pwd: '',
salt: getSystemConfig().file.salt
}
//
async function toSetFilePwd() {
if (filePwd.value.length < 6 || filePwd.value.length > 10) {
notifyError("密码长度应该在6-10位之间")
return
}
params.pwd = md5(filePwd.value)
params.isPwd = filePwd.value === '' ? 0 : 1
const url = getApiUrl() + '/file/setfilepwd'
const header = {
'Salt': params.salt ? params.salt : 'vIf_wIUedciAd0nTm6qjJA==',
'FilePwd': params.pwd
}
await fetchGet(`${getApiUrl()}/file/changeispwd?ispwd=${params.isPwd}`)
const res = await fetchGet(url, header)
if (res.ok){
notifySuccess("设置文件密码成功");
} else {
params.isPwd = 0
params.pwd = ''
notifyError("设置文件密码失败")
}
setSystemKey('file',params)
}
async function clearPwd() {
setPwd.value = false
filePwd.value = ''
params.isPwd = 0
await fetchGet(`${getApiUrl()}/file/changeispwd?ispwd=0`)
setSystemKey('file',params)
}
onMounted(() => {
params.isPwd = config.file.isPwd
setPwd.value = params.isPwd ? true : false
})
import { t } from "@/system";
import {
fetchGet,
getApiUrl,
getSystemConfig,
setSystemKey,
} from "@/system/config";
import { notifyError, notifySuccess } from "@/util/msg";
import { md5 } from "js-md5";
import { onMounted, ref } from "vue";
const filePwd = ref("");
const setPwd = ref(false);
const config = getSystemConfig();
const params = {
isPwd: 1,
pwd: "",
salt: getSystemConfig().file.salt,
};
//
async function toSetFilePwd() {
if (filePwd.value.length < 6 || filePwd.value.length > 10) {
notifyError("密码长度应该在6-10位之间");
return;
}
params.pwd = md5(filePwd.value);
params.isPwd = filePwd.value === "" ? 0 : 1;
const url = getApiUrl() + "/file/setfilepwd";
const header = {
salt: params.salt ? params.salt : "vIf_wIUedciAd0nTm6qjJA==",
pwd: params.pwd,
};
await fetchGet(`${getApiUrl()}/file/changeispwd?ispwd=${params.isPwd}`);
const res = await fetchGet(url, header);
if (res.ok) {
notifySuccess("设置文件密码成功");
} else {
params.isPwd = 0;
params.pwd = "";
notifyError("设置文件密码失败");
}
setSystemKey("file", params);
}
async function clearPwd() {
setPwd.value = false;
filePwd.value = "";
params.isPwd = 0;
await fetchGet(`${getApiUrl()}/file/changeispwd?ispwd=0`);
setSystemKey("file", params);
}
onMounted(() => {
params.isPwd = config.file.isPwd;
setPwd.value = params.isPwd ? true : false;
});
</script>
<style scoped>
@import "./setStyle.css";
.file-pwd-box {
padding-top: 20px;
}
.setting-item {
display: flex;
align-items: center;
}
@import "./setStyle.css";
.file-pwd-box {
padding-top: 20px;
}
.setting-item {
display: flex;
align-items: center;
}
</style>

5
frontend/src/components/window/IframeFile.vue

@ -75,7 +75,7 @@
if (isShareFile(path)) {
const file = await sys?.fs.getShareInfo(path);
isShare.value = true;
isWrite.value = file.fs.is_write;
isWrite.value = file.fs.sender === getSystemConfig().userInfo.id ? 1 : file.fs.is_write;
if (
!isWrite.value &&
file.fs.sender !== getSystemConfig().userInfo.id
@ -119,7 +119,8 @@
// console.log("", res, isShare);
new Notify({
title: "提示",
content: res.code === 0 ? "文件已保存" : "文件保存失败",
content: res.message
// content: res.code === 0 ? "" : res.message,
});
sys.refershAppList();
} else if (eventData.type == "initSuccess") {

1
frontend/src/system/applist.ts

@ -81,6 +81,7 @@ export const appList = [
name: "document",
appIcon: "word",
url: "/docx/index.html",
//url:"http://localhost:3000/",
width: 800,
frame: true,
height: 600,

9
frontend/src/system/core/FileOs.ts

@ -115,15 +115,17 @@ export async function handleExists(path: string): Promise<any> {
export async function handleReadFile(path: string, header?: { [key: string]: string }): Promise<any> {
const userType = getSystemConfig().userType
//console.log('请求头:', header);
// let head = userType === 'member' ? { pwd: header?.pwd || '' } : { ...header }
let head = {}
if (userType === 'member') {
head = {
pwd: header?.pwd || ''
}
} else if (getSystemConfig().file.isPwd === 1) {
// } else if (getSystemConfig().file.isPwd === 1) {
} else if (header) {
head = {
pwd: md5(header?.pwd || ''),
pwd: header?.pwd === '' ? '' : md5(header?.pwd),
salt: header?.salt || ''
}
}
@ -426,8 +428,9 @@ export const useOsFile = () => {
}
}
}
} else {
head = { ...header }
}
//console.log('创建露肩:', path);
const response = await handleWriteFile(path, content, head);
if (response) {

38
frontend/src/system/notification/Notification.ts

@ -21,26 +21,26 @@ export class Notify {
}, option.timeout || 5000);
// 检查浏览器是否支持通知
if ('Notification' in window) {
// 请求通知权限
Notification.requestPermission().then(function (permission) {
if (permission === 'granted') {
// 创建通知
const notification = new Notification(option.title, {
body: option.content,
});
// if ('Notification' in window) {
// // 请求通知权限
// Notification.requestPermission().then(function (permission) {
// if (permission === 'granted') {
// // 创建通知
// const notification = new Notification(option.title, {
// body: option.content,
// });
// 点击通知时触发的事件
notification.onclick = function () {
// console.log('通知被点击了');
};
} else {
// console.warn('用户拒绝了通知权限');
}
});
} else {
// console.error('浏览器不支持通知');
}
// // 点击通知时触发的事件
// notification.onclick = function () {
// // console.log('通知被点击了');
// };
// } else {
// // console.warn('用户拒绝了通知权限');
// }
// });
// } else {
// // console.error('浏览器不支持通知');
// }
}
close() {
const sys = useSystem();

2
godo/cmd/serve.go

@ -86,7 +86,7 @@ func (l loggingMiddleware) Middleware(next http.Handler) http.Handler {
// CORS 中间件
func corsMiddleware() mux.MiddlewareFunc {
allowHeaders := "Content-Type, Accept, Authorization, Origin,filePwd,salt"
allowHeaders := "Content-Type, Accept, Authorization, Origin,Pwd,Salt"
allowMethods := "GET, POST, PUT, DELETE, OPTIONS"
return func(next http.Handler) http.Handler {

30
godo/files/fs.go

@ -182,6 +182,12 @@ func HandleUnlink(w http.ResponseWriter, r *http.Request) {
libs.HTTPError(w, http.StatusConflict, err.Error())
return
}
// 如果有同名隐藏文件,也要删除掉
hiddenFilePath := filepath.Join(basePath, filepath.Dir(path), "."+filepath.Base(path))
_, err = os.Stat(hiddenFilePath)
if err == nil {
os.Remove(hiddenFilePath)
}
res := libs.APIResponse{Message: fmt.Sprintf("File '%s' successfully removed.", path)}
json.NewEncoder(w).Encode(res)
}
@ -230,7 +236,15 @@ func HandleRename(w http.ResponseWriter, r *http.Request) {
libs.HTTPError(w, http.StatusConflict, err.Error())
return
}
// 如果是一个加密文件,则隐藏文件的名字也要改
if IsHaveHiddenFile(basePath, oldPath) {
oldHiddenFilePath := filepath.Join(basePath, filepath.Dir(oldPath), "."+filepath.Base(oldPath))
newHiddenFilePath := filepath.Join(basePath, filepath.Dir(newPath), "."+filepath.Base(newPath))
err = os.Rename(oldHiddenFilePath, newHiddenFilePath)
if err != nil {
log.Printf("Error renaming hidden file: %s", err.Error())
}
}
err = CheckAddDesktop(newPath)
if err != nil {
log.Printf("Error adding file to desktop: %s", err.Error())
@ -311,6 +325,15 @@ func HandleCopyFile(w http.ResponseWriter, r *http.Request) {
if err != nil {
log.Printf("Error adding file to desktop: %s", err.Error())
}
// 如果是一个复制的加密文件,则隐藏的文件也要复制过去
if IsHaveHiddenFile(basePath, srcPath) {
hiddenSrcPath := filepath.Join(basePath, filepath.Dir(srcPath), "."+filepath.Base(srcPath))
hiddenDstPath := filepath.Join(basePath, filepath.Dir(dstPath), "."+filepath.Base(dstPath))
if err := CopyFile(hiddenSrcPath, hiddenDstPath); err != nil {
libs.HTTPError(w, http.StatusInternalServerError, err.Error())
return
}
}
res := libs.APIResponse{Message: fmt.Sprintf("File '%s' successfully copied to '%s'.", srcPath, dstPath)}
json.NewEncoder(w).Encode(res)
}
@ -361,9 +384,8 @@ func HandleWriteFile(w http.ResponseWriter, r *http.Request) {
// 没有加密写入明文
if !ispwd {
_, err := io.Copy(file, fileContent)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
if _, err := file.Write(filedata); err != nil {
libs.HTTPError(w, http.StatusInternalServerError, err.Error())
return
}
CheckAddDesktop(filePath)

4
godo/files/pwdfile.go

@ -72,7 +72,7 @@ func HandleReadFile(w http.ResponseWriter, r *http.Request) {
// 设置文件密码
func HandleSetFilePwd(w http.ResponseWriter, r *http.Request) {
fPwd := r.Header.Get("filepwd")
fPwd := r.Header.Get("Pwd")
salt, err := GetSalt(r) // 获取盐值
// 处理获取盐值时的错误
if err != nil || fPwd == "" {
@ -102,7 +102,7 @@ func HandleSetFilePwd(w http.ResponseWriter, r *http.Request) {
// 更改文件密码
func HandleChangeFilePwd(w http.ResponseWriter, r *http.Request) {
filePwd := r.Header.Get("filePwd")
filePwd := r.Header.Get("Pwd")
salt, err := GetSalt(r) // 获取盐值
if err != nil || filePwd == "" { // 检查错误和密码是否为空
libs.ErrorMsg(w, "参数错误")

21
packages/baiban/.eslintrc.cjs

@ -0,0 +1,21 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
settings: { react: { version: '18.2' } },
plugins: ['react-refresh'],
rules: {
'react/jsx-no-target-blank': 'off',
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}

24
packages/baiban/.gitignore

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

1
packages/baiban/README.md

@ -0,0 +1 @@
# use the tldraw library

13
packages/baiban/index.html

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>draw</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

6736
packages/baiban/package-lock.json

File diff suppressed because it is too large

31
packages/baiban/package.json

@ -0,0 +1,31 @@
{
"name": "mydraw",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"@tldraw/assets": "^2.1.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"tldraw": "^2.1.4"
},
"devDependencies": {
"@types/react": "^18.2.66",
"@types/react-dom": "^18.2.22",
"@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.19",
"eslint": "^8.57.0",
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.4",
"vite": "^5.2.0"
}
}

5026
packages/baiban/pnpm-lock.yaml

File diff suppressed because it is too large

6
packages/baiban/postcss.config.js

@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

1
packages/baiban/public/save.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717909582361" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4272" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M931.882 259.882l-167.764-167.764A96 96 0 0 0 696.236 64H160C106.98 64 64 106.98 64 160v704c0 53.02 42.98 96 96 96h704c53.02 0 96-42.98 96-96V327.764a96 96 0 0 0-28.118-67.882zM512 832c-70.692 0-128-57.308-128-128 0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128z m192-609.04V424c0 13.254-10.746 24-24 24H216c-13.254 0-24-10.746-24-24V216c0-13.254 10.746-24 24-24h457.04c6.366 0 12.47 2.528 16.97 7.03l6.96 6.96A23.992 23.992 0 0 1 704 222.96z" p-id="4273"></path></svg>

After

Width:  |  Height:  |  Size: 827 B

BIN
packages/baiban/public/static/card-repo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

26
packages/baiban/public/static/card_repo.svg

@ -0,0 +1,26 @@
<svg width="1080" height="160" viewBox="0 0 1080 160" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="path-1-outside-1_3296_32770" maskUnits="userSpaceOnUse" x="364" y="27" width="342" height="106" fill="black">
<rect fill="white" x="364" y="27" width="342" height="106"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M377 48.7912C377 43.936 380.798 40 385.482 40H449.098C453.783 40 457.58 43.936 457.58 48.7912V111.209C457.58 116.064 453.783 120 449.098 120H385.482C380.798 120 377 116.064 377 111.209V48.7912ZM424.571 62.8801C424.571 64.8134 423.905 66.4539 422.574 67.8014C421.243 69.1489 419.622 69.8226 417.712 69.8226C415.744 69.8226 414.095 69.1489 412.764 67.8014C411.433 66.4539 410.767 64.8134 410.767 62.8801C410.767 60.9467 411.433 59.3063 412.764 57.9588C414.095 56.6113 415.744 55.9375 417.712 55.9375C419.622 55.9375 421.243 56.6113 422.574 57.9588C423.905 59.3063 424.571 60.9467 424.571 62.8801ZM410.68 87.2107C410.68 85.2774 411.346 83.6369 412.677 82.2894C414.066 80.8833 415.744 80.1803 417.712 80.1803C419.564 80.1803 421.185 80.8833 422.574 82.2894C423.963 83.6369 424.774 85.1602 425.005 86.8592C425.468 90.0229 424.889 93.1573 423.269 96.2624C421.706 99.3675 419.449 101.74 416.497 103.381C414.876 104.318 413.545 104.289 412.503 103.293C411.519 102.355 411.809 101.242 413.371 99.9534C414.24 99.309 414.963 98.4887 415.542 97.4928C416.121 96.4968 416.497 95.4715 416.671 94.4169C416.728 93.9482 416.526 93.7139 416.063 93.7139C414.905 93.6553 413.719 93.0108 412.503 91.7805C411.288 90.5502 410.68 89.0269 410.68 87.2107Z"/>
<path d="M529.906 104.783C530.387 104.783 530.628 104.543 530.628 104.065V94.3261C530.628 93.3656 529.844 92.587 528.877 92.587H527.607C527.212 92.587 526.906 92.4783 526.687 92.2609C526.512 92.087 526.424 91.8261 526.424 91.4783V56.587C526.424 56.1087 526.183 55.8696 525.701 55.8696H514.644C513.676 55.8696 512.892 56.6482 512.892 57.6087V95.3913C512.892 98.5217 513.79 100.87 515.585 102.435C517.381 104 519.68 104.783 522.483 104.783H529.906Z"/>
<path d="M507.242 94.2609C507.242 93.3004 506.458 92.5217 505.491 92.5217H500.87C499.381 92.5217 498.374 92.2609 497.849 91.7391C497.192 91.1304 496.863 90.1522 496.863 88.8043V83.0435C496.863 82.083 497.648 81.3043 498.615 81.3043H505.491C506.458 81.3043 507.242 80.5257 507.242 79.5652V69.8261C507.242 69.3478 507.002 69.1087 506.52 69.1087H498.615C497.648 69.1087 496.863 68.3301 496.863 67.3696V59.8478C496.863 59.3696 496.622 59.1304 496.141 59.1304H485.477C484.51 59.1304 483.725 59.9091 483.725 60.8696V67.3696C483.725 68.3301 482.941 69.1087 481.973 69.1087H480.353C479.386 69.1087 478.601 69.8873 478.601 70.8478V80.587C478.601 81.0652 478.842 81.3043 479.324 81.3043H481.973C482.941 81.3043 483.725 82.083 483.725 83.0435V89.7826C483.725 94.8261 485.061 98.587 487.732 101.065C490.404 103.543 494.28 104.783 499.36 104.783H506.52C507.002 104.783 507.242 104.543 507.242 104.065V94.2609Z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M545.711 68.4565C547.726 68.4565 549.456 68.9565 550.901 69.9565C552.262 70.8705 553.385 72.0568 554.27 73.5156C554.426 73.7713 554.701 73.9348 555.001 73.9348C555.458 73.9348 555.828 73.5675 555.828 73.1144V57.6087C555.828 56.6482 556.612 55.8696 557.58 55.8696H568.243C568.725 55.8696 568.966 56.1087 568.966 56.587V103.043C568.966 104.004 568.182 104.783 567.214 104.783H556.55C556.069 104.783 555.828 104.543 555.828 104.065V100.148C555.828 99.6821 555.447 99.3043 554.978 99.3043C554.689 99.3043 554.42 99.4511 554.259 99.6893C553.14 101.339 551.89 102.689 550.507 103.739C549.018 104.87 547.157 105.435 544.923 105.435C541.901 105.435 539.515 104.413 537.763 102.37C536.011 100.326 535.135 97.587 535.135 94.1522V80.4565C535.135 76.7174 536.033 73.7826 537.829 71.6522C539.668 69.5217 542.296 68.4565 545.711 68.4565ZM548.996 93.0435C549.478 93.5652 550.332 93.8261 551.558 93.8261C552.797 93.8261 553.886 93.6774 554.825 93.3801C555.457 93.18 555.828 92.5622 555.828 91.9034V81.5829C555.828 81.0014 555.542 80.4427 555.014 80.1911C554.6 79.9938 554.171 79.8431 553.726 79.7391C552.981 79.5217 552.259 79.413 551.558 79.413C549.324 79.413 548.208 80.5217 548.208 82.7391V90.5652C548.208 91.7391 548.47 92.5652 548.996 93.0435Z"/>
<path d="M588.228 104.783C589.195 104.783 589.98 104.004 589.98 103.043V84.6928C589.98 84.0869 590.292 83.5143 590.842 83.2503C591.381 82.9911 591.947 82.7772 592.542 82.6087C593.461 82.3044 594.49 82.1522 595.629 82.1522C596.461 82.1522 597.249 82.2174 597.994 82.3478C598.726 82.469 599.44 82.6277 600.134 82.8239C600.24 82.8537 600.349 82.8696 600.458 82.8696C601.093 82.8696 601.607 82.3591 601.607 81.7294V69.8261C601.607 69.5217 601.497 69.2609 601.278 69.0435C601.147 68.913 600.906 68.7826 600.556 68.6522C600.205 68.5217 599.68 68.4565 598.979 68.4565C596.921 68.4565 595.279 69.087 594.052 70.3478C592.966 71.4664 592.12 73.0989 591.514 75.2453C591.418 75.5851 591.11 75.8261 590.754 75.8261C590.326 75.8261 589.98 75.4818 589.98 75.057V69.8261C589.98 69.3478 589.739 69.1087 589.257 69.1087H578.396C577.429 69.1087 576.644 69.8873 576.644 70.8478V104.065C576.644 104.543 576.885 104.783 577.367 104.783H588.228Z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M638.295 81.8261V92.3913C638.295 92.9268 638.482 93.2772 638.855 93.4425C638.96 93.4893 639.069 93.5295 639.178 93.5672C639.3 93.6094 639.422 93.6304 639.544 93.6304H639.631C640.599 93.6304 641.383 94.4091 641.383 95.3696V104.065C641.383 104.543 641.142 104.783 640.66 104.783H636.259C634.113 104.783 632.142 104.348 630.347 103.478C628.788 102.705 627.594 101.587 626.763 100.124C626.573 99.7893 626.224 99.5652 625.837 99.5652C625.46 99.5652 625.118 99.7765 624.931 100.101C624 101.715 622.783 102.993 621.282 103.935C619.661 104.935 617.581 105.435 615.041 105.435C611.975 105.435 609.545 104.609 607.749 102.957C605.954 101.304 605.056 99.0652 605.056 96.2391V93.6957C605.056 90.6522 605.954 88.2609 607.749 86.5217C609.589 84.7826 612.172 83.913 615.501 83.913H624.697C625.205 83.913 625.617 83.5043 625.617 83C625.617 81.4783 625.201 80.4565 624.369 79.9348C623.581 79.3696 622.048 79.087 619.771 79.087C615.972 79.087 612.216 79.6361 608.503 80.7343C608.395 80.7661 608.284 80.7826 608.171 80.7826C607.539 80.7826 607.027 80.2739 607.027 79.6463V71.2609C607.027 70.9565 607.092 70.7391 607.224 70.6087C607.53 70.3043 608.362 69.9783 609.72 69.6304C611.121 69.2826 612.808 68.9783 614.778 68.7174C616.793 68.413 618.851 68.2609 620.953 68.2609C626.953 68.2609 631.332 69.3478 634.091 71.5217C636.894 73.6522 638.295 77.087 638.295 81.8261ZM619.442 96.0435C621.348 96.0435 623.127 95.6161 624.777 94.7612C625.312 94.4845 625.617 93.9194 625.617 93.3211V91.9783C625.617 91.0178 624.833 90.2391 623.865 90.2391H619.574C618.829 90.2391 618.26 90.4348 617.866 90.8261C617.515 91.2609 617.34 91.7826 617.34 92.3913V93.9565C617.34 95.3478 618.041 96.0435 619.442 96.0435Z"/>
<path d="M664.776 69.1087C663.958 69.1087 663.25 69.6696 663.068 70.4605C662.137 74.5177 661.277 78.3279 660.489 81.8913C659.711 85.5887 659.125 89.0962 658.73 92.4139C658.682 92.8093 658.346 93.1087 657.945 93.1087C657.503 93.1087 657.147 92.7472 657.154 92.3083C657.205 88.9664 657.069 85.6245 656.744 82.2826C656.438 78.6739 656.044 74.6522 655.562 70.2174C655.518 69.7391 655.43 69.4348 655.299 69.3043C655.168 69.1739 654.971 69.1087 654.708 69.1087H645.295C644.208 69.1087 643.383 70.0825 643.568 71.1467C644.447 76.2065 645.292 81.2663 646.102 86.3261C647.066 92.0652 648.029 97.587 648.993 102.891C649.143 103.562 649.309 104.041 649.491 104.328C649.548 104.417 649.623 104.493 649.711 104.552C649.938 104.706 650.18 104.783 650.438 104.783H662.158C662.955 104.783 663.651 104.249 663.852 103.484C664.192 102.194 664.494 101.039 664.758 100.022C665.109 98.6739 665.415 97.3478 665.678 96.0435C665.941 94.7391 666.204 93.3043 666.466 91.7391C666.743 90.2865 667.038 88.5325 667.35 86.4772C667.409 86.0907 667.743 85.8043 668.137 85.8043C668.535 85.8043 668.871 86.0965 668.924 86.4877C669.191 88.4532 669.423 90.1385 669.62 91.5435C669.882 93.0652 670.123 94.413 670.342 95.587C670.605 96.7174 670.868 97.8696 671.13 99.0435C671.393 100.174 671.7 101.478 672.05 102.957C672.238 103.59 672.425 104.047 672.613 104.329C672.671 104.417 672.746 104.493 672.834 104.552C673.061 104.706 673.303 104.783 673.561 104.783H685.485C686.338 104.783 687.067 104.172 687.212 103.338L689.984 87.3043C690.991 81.4783 691.976 75.6957 692.94 69.9565C692.983 69.3913 692.786 69.1087 692.349 69.1087H682.245C681.344 69.1087 680.589 69.7887 680.503 70.68C680.125 74.5767 679.782 78.2703 679.473 81.7609C679.189 85.3908 679.055 88.9084 679.072 92.3138C679.074 92.7513 678.719 93.1087 678.278 93.1087C677.874 93.1087 677.535 92.8065 677.489 92.4081C677.091 89.0194 676.482 85.5355 675.663 81.9565C674.831 78.1304 673.911 74.087 672.904 69.8261C672.773 69.3478 672.51 69.1087 672.116 69.1087H664.776Z"/>
</mask>
<path fill-rule="evenodd" clip-rule="evenodd" d="M377 48.7912C377 43.936 380.798 40 385.482 40H449.098C453.783 40 457.58 43.936 457.58 48.7912V111.209C457.58 116.064 453.783 120 449.098 120H385.482C380.798 120 377 116.064 377 111.209V48.7912ZM424.571 62.8801C424.571 64.8134 423.905 66.4539 422.574 67.8014C421.243 69.1489 419.622 69.8226 417.712 69.8226C415.744 69.8226 414.095 69.1489 412.764 67.8014C411.433 66.4539 410.767 64.8134 410.767 62.8801C410.767 60.9467 411.433 59.3063 412.764 57.9588C414.095 56.6113 415.744 55.9375 417.712 55.9375C419.622 55.9375 421.243 56.6113 422.574 57.9588C423.905 59.3063 424.571 60.9467 424.571 62.8801ZM410.68 87.2107C410.68 85.2774 411.346 83.6369 412.677 82.2894C414.066 80.8833 415.744 80.1803 417.712 80.1803C419.564 80.1803 421.185 80.8833 422.574 82.2894C423.963 83.6369 424.774 85.1602 425.005 86.8592C425.468 90.0229 424.889 93.1573 423.269 96.2624C421.706 99.3675 419.449 101.74 416.497 103.381C414.876 104.318 413.545 104.289 412.503 103.293C411.519 102.355 411.809 101.242 413.371 99.9534C414.24 99.309 414.963 98.4887 415.542 97.4928C416.121 96.4968 416.497 95.4715 416.671 94.4169C416.728 93.9482 416.526 93.7139 416.063 93.7139C414.905 93.6553 413.719 93.0108 412.503 91.7805C411.288 90.5502 410.68 89.0269 410.68 87.2107Z" fill="black"/>
<path d="M529.906 104.783C530.387 104.783 530.628 104.543 530.628 104.065V94.3261C530.628 93.3656 529.844 92.587 528.877 92.587H527.607C527.212 92.587 526.906 92.4783 526.687 92.2609C526.512 92.087 526.424 91.8261 526.424 91.4783V56.587C526.424 56.1087 526.183 55.8696 525.701 55.8696H514.644C513.676 55.8696 512.892 56.6482 512.892 57.6087V95.3913C512.892 98.5217 513.79 100.87 515.585 102.435C517.381 104 519.68 104.783 522.483 104.783H529.906Z" fill="black"/>
<path d="M507.242 94.2609C507.242 93.3004 506.458 92.5217 505.491 92.5217H500.87C499.381 92.5217 498.374 92.2609 497.849 91.7391C497.192 91.1304 496.863 90.1522 496.863 88.8043V83.0435C496.863 82.083 497.648 81.3043 498.615 81.3043H505.491C506.458 81.3043 507.242 80.5257 507.242 79.5652V69.8261C507.242 69.3478 507.002 69.1087 506.52 69.1087H498.615C497.648 69.1087 496.863 68.3301 496.863 67.3696V59.8478C496.863 59.3696 496.622 59.1304 496.141 59.1304H485.477C484.51 59.1304 483.725 59.9091 483.725 60.8696V67.3696C483.725 68.3301 482.941 69.1087 481.973 69.1087H480.353C479.386 69.1087 478.601 69.8873 478.601 70.8478V80.587C478.601 81.0652 478.842 81.3043 479.324 81.3043H481.973C482.941 81.3043 483.725 82.083 483.725 83.0435V89.7826C483.725 94.8261 485.061 98.587 487.732 101.065C490.404 103.543 494.28 104.783 499.36 104.783H506.52C507.002 104.783 507.242 104.543 507.242 104.065V94.2609Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M545.711 68.4565C547.726 68.4565 549.456 68.9565 550.901 69.9565C552.262 70.8705 553.385 72.0568 554.27 73.5156C554.426 73.7713 554.701 73.9348 555.001 73.9348C555.458 73.9348 555.828 73.5675 555.828 73.1144V57.6087C555.828 56.6482 556.612 55.8696 557.58 55.8696H568.243C568.725 55.8696 568.966 56.1087 568.966 56.587V103.043C568.966 104.004 568.182 104.783 567.214 104.783H556.55C556.069 104.783 555.828 104.543 555.828 104.065V100.148C555.828 99.6821 555.447 99.3043 554.978 99.3043C554.689 99.3043 554.42 99.4511 554.259 99.6893C553.14 101.339 551.89 102.689 550.507 103.739C549.018 104.87 547.157 105.435 544.923 105.435C541.901 105.435 539.515 104.413 537.763 102.37C536.011 100.326 535.135 97.587 535.135 94.1522V80.4565C535.135 76.7174 536.033 73.7826 537.829 71.6522C539.668 69.5217 542.296 68.4565 545.711 68.4565ZM548.996 93.0435C549.478 93.5652 550.332 93.8261 551.558 93.8261C552.797 93.8261 553.886 93.6774 554.825 93.3801C555.457 93.18 555.828 92.5622 555.828 91.9034V81.5829C555.828 81.0014 555.542 80.4427 555.014 80.1911C554.6 79.9938 554.171 79.8431 553.726 79.7391C552.981 79.5217 552.259 79.413 551.558 79.413C549.324 79.413 548.208 80.5217 548.208 82.7391V90.5652C548.208 91.7391 548.47 92.5652 548.996 93.0435Z" fill="black"/>
<path d="M588.228 104.783C589.195 104.783 589.98 104.004 589.98 103.043V84.6928C589.98 84.0869 590.292 83.5143 590.842 83.2503C591.381 82.9911 591.947 82.7772 592.542 82.6087C593.461 82.3044 594.49 82.1522 595.629 82.1522C596.461 82.1522 597.249 82.2174 597.994 82.3478C598.726 82.469 599.44 82.6277 600.134 82.8239C600.24 82.8537 600.349 82.8696 600.458 82.8696C601.093 82.8696 601.607 82.3591 601.607 81.7294V69.8261C601.607 69.5217 601.497 69.2609 601.278 69.0435C601.147 68.913 600.906 68.7826 600.556 68.6522C600.205 68.5217 599.68 68.4565 598.979 68.4565C596.921 68.4565 595.279 69.087 594.052 70.3478C592.966 71.4664 592.12 73.0989 591.514 75.2453C591.418 75.5851 591.11 75.8261 590.754 75.8261C590.326 75.8261 589.98 75.4818 589.98 75.057V69.8261C589.98 69.3478 589.739 69.1087 589.257 69.1087H578.396C577.429 69.1087 576.644 69.8873 576.644 70.8478V104.065C576.644 104.543 576.885 104.783 577.367 104.783H588.228Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M638.295 81.8261V92.3913C638.295 92.9268 638.482 93.2772 638.855 93.4425C638.96 93.4893 639.069 93.5295 639.178 93.5672C639.3 93.6094 639.422 93.6304 639.544 93.6304H639.631C640.599 93.6304 641.383 94.4091 641.383 95.3696V104.065C641.383 104.543 641.142 104.783 640.66 104.783H636.259C634.113 104.783 632.142 104.348 630.347 103.478C628.788 102.705 627.594 101.587 626.763 100.124C626.573 99.7893 626.224 99.5652 625.837 99.5652C625.46 99.5652 625.118 99.7765 624.931 100.101C624 101.715 622.783 102.993 621.282 103.935C619.661 104.935 617.581 105.435 615.041 105.435C611.975 105.435 609.545 104.609 607.749 102.957C605.954 101.304 605.056 99.0652 605.056 96.2391V93.6957C605.056 90.6522 605.954 88.2609 607.749 86.5217C609.589 84.7826 612.172 83.913 615.501 83.913H624.697C625.205 83.913 625.617 83.5043 625.617 83C625.617 81.4783 625.201 80.4565 624.369 79.9348C623.581 79.3696 622.048 79.087 619.771 79.087C615.972 79.087 612.216 79.6361 608.503 80.7343C608.395 80.7661 608.284 80.7826 608.171 80.7826C607.539 80.7826 607.027 80.2739 607.027 79.6463V71.2609C607.027 70.9565 607.092 70.7391 607.224 70.6087C607.53 70.3043 608.362 69.9783 609.72 69.6304C611.121 69.2826 612.808 68.9783 614.778 68.7174C616.793 68.413 618.851 68.2609 620.953 68.2609C626.953 68.2609 631.332 69.3478 634.091 71.5217C636.894 73.6522 638.295 77.087 638.295 81.8261ZM619.442 96.0435C621.348 96.0435 623.127 95.6161 624.777 94.7612C625.312 94.4845 625.617 93.9194 625.617 93.3211V91.9783C625.617 91.0178 624.833 90.2391 623.865 90.2391H619.574C618.829 90.2391 618.26 90.4348 617.866 90.8261C617.515 91.2609 617.34 91.7826 617.34 92.3913V93.9565C617.34 95.3478 618.041 96.0435 619.442 96.0435Z" fill="black"/>
<path d="M664.776 69.1087C663.958 69.1087 663.25 69.6696 663.068 70.4605C662.137 74.5177 661.277 78.3279 660.489 81.8913C659.711 85.5887 659.125 89.0962 658.73 92.4139C658.682 92.8093 658.346 93.1087 657.945 93.1087C657.503 93.1087 657.147 92.7472 657.154 92.3083C657.205 88.9664 657.069 85.6245 656.744 82.2826C656.438 78.6739 656.044 74.6522 655.562 70.2174C655.518 69.7391 655.43 69.4348 655.299 69.3043C655.168 69.1739 654.971 69.1087 654.708 69.1087H645.295C644.208 69.1087 643.383 70.0825 643.568 71.1467C644.447 76.2065 645.292 81.2663 646.102 86.3261C647.066 92.0652 648.029 97.587 648.993 102.891C649.143 103.562 649.309 104.041 649.491 104.328C649.548 104.417 649.623 104.493 649.711 104.552C649.938 104.706 650.18 104.783 650.438 104.783H662.158C662.955 104.783 663.651 104.249 663.852 103.484C664.192 102.194 664.494 101.039 664.758 100.022C665.109 98.6739 665.415 97.3478 665.678 96.0435C665.941 94.7391 666.204 93.3043 666.466 91.7391C666.743 90.2865 667.038 88.5325 667.35 86.4772C667.409 86.0907 667.743 85.8043 668.137 85.8043C668.535 85.8043 668.871 86.0965 668.924 86.4877C669.191 88.4532 669.423 90.1385 669.62 91.5435C669.882 93.0652 670.123 94.413 670.342 95.587C670.605 96.7174 670.868 97.8696 671.13 99.0435C671.393 100.174 671.7 101.478 672.05 102.957C672.238 103.59 672.425 104.047 672.613 104.329C672.671 104.417 672.746 104.493 672.834 104.552C673.061 104.706 673.303 104.783 673.561 104.783H685.485C686.338 104.783 687.067 104.172 687.212 103.338L689.984 87.3043C690.991 81.4783 691.976 75.6957 692.94 69.9565C692.983 69.3913 692.786 69.1087 692.349 69.1087H682.245C681.344 69.1087 680.589 69.7887 680.503 70.68C680.125 74.5767 679.782 78.2703 679.473 81.7609C679.189 85.3908 679.055 88.9084 679.072 92.3138C679.074 92.7513 678.719 93.1087 678.278 93.1087C677.874 93.1087 677.535 92.8065 677.489 92.4081C677.091 89.0194 676.482 85.5355 675.663 81.9565C674.831 78.1304 673.911 74.087 672.904 69.8261C672.773 69.3478 672.51 69.1087 672.116 69.1087H664.776Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M377 48.7912C377 43.936 380.798 40 385.482 40H449.098C453.783 40 457.58 43.936 457.58 48.7912V111.209C457.58 116.064 453.783 120 449.098 120H385.482C380.798 120 377 116.064 377 111.209V48.7912ZM424.571 62.8801C424.571 64.8134 423.905 66.4539 422.574 67.8014C421.243 69.1489 419.622 69.8226 417.712 69.8226C415.744 69.8226 414.095 69.1489 412.764 67.8014C411.433 66.4539 410.767 64.8134 410.767 62.8801C410.767 60.9467 411.433 59.3063 412.764 57.9588C414.095 56.6113 415.744 55.9375 417.712 55.9375C419.622 55.9375 421.243 56.6113 422.574 57.9588C423.905 59.3063 424.571 60.9467 424.571 62.8801ZM410.68 87.2107C410.68 85.2774 411.346 83.6369 412.677 82.2894C414.066 80.8833 415.744 80.1803 417.712 80.1803C419.564 80.1803 421.185 80.8833 422.574 82.2894C423.963 83.6369 424.774 85.1602 425.005 86.8592C425.468 90.0229 424.889 93.1573 423.269 96.2624C421.706 99.3675 419.449 101.74 416.497 103.381C414.876 104.318 413.545 104.289 412.503 103.293C411.519 102.355 411.809 101.242 413.371 99.9534C414.24 99.309 414.963 98.4887 415.542 97.4928C416.121 96.4968 416.497 95.4715 416.671 94.4169C416.728 93.9482 416.526 93.7139 416.063 93.7139C414.905 93.6553 413.719 93.0108 412.503 91.7805C411.288 90.5502 410.68 89.0269 410.68 87.2107Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path d="M529.906 104.783C530.387 104.783 530.628 104.543 530.628 104.065V94.3261C530.628 93.3656 529.844 92.587 528.877 92.587H527.607C527.212 92.587 526.906 92.4783 526.687 92.2609C526.512 92.087 526.424 91.8261 526.424 91.4783V56.587C526.424 56.1087 526.183 55.8696 525.701 55.8696H514.644C513.676 55.8696 512.892 56.6482 512.892 57.6087V95.3913C512.892 98.5217 513.79 100.87 515.585 102.435C517.381 104 519.68 104.783 522.483 104.783H529.906Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path d="M507.242 94.2609C507.242 93.3004 506.458 92.5217 505.491 92.5217H500.87C499.381 92.5217 498.374 92.2609 497.849 91.7391C497.192 91.1304 496.863 90.1522 496.863 88.8043V83.0435C496.863 82.083 497.648 81.3043 498.615 81.3043H505.491C506.458 81.3043 507.242 80.5257 507.242 79.5652V69.8261C507.242 69.3478 507.002 69.1087 506.52 69.1087H498.615C497.648 69.1087 496.863 68.3301 496.863 67.3696V59.8478C496.863 59.3696 496.622 59.1304 496.141 59.1304H485.477C484.51 59.1304 483.725 59.9091 483.725 60.8696V67.3696C483.725 68.3301 482.941 69.1087 481.973 69.1087H480.353C479.386 69.1087 478.601 69.8873 478.601 70.8478V80.587C478.601 81.0652 478.842 81.3043 479.324 81.3043H481.973C482.941 81.3043 483.725 82.083 483.725 83.0435V89.7826C483.725 94.8261 485.061 98.587 487.732 101.065C490.404 103.543 494.28 104.783 499.36 104.783H506.52C507.002 104.783 507.242 104.543 507.242 104.065V94.2609Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M545.711 68.4565C547.726 68.4565 549.456 68.9565 550.901 69.9565C552.262 70.8705 553.385 72.0568 554.27 73.5156C554.426 73.7713 554.701 73.9348 555.001 73.9348C555.458 73.9348 555.828 73.5675 555.828 73.1144V57.6087C555.828 56.6482 556.612 55.8696 557.58 55.8696H568.243C568.725 55.8696 568.966 56.1087 568.966 56.587V103.043C568.966 104.004 568.182 104.783 567.214 104.783H556.55C556.069 104.783 555.828 104.543 555.828 104.065V100.148C555.828 99.6821 555.447 99.3043 554.978 99.3043C554.689 99.3043 554.42 99.4511 554.259 99.6893C553.14 101.339 551.89 102.689 550.507 103.739C549.018 104.87 547.157 105.435 544.923 105.435C541.901 105.435 539.515 104.413 537.763 102.37C536.011 100.326 535.135 97.587 535.135 94.1522V80.4565C535.135 76.7174 536.033 73.7826 537.829 71.6522C539.668 69.5217 542.296 68.4565 545.711 68.4565ZM548.996 93.0435C549.478 93.5652 550.332 93.8261 551.558 93.8261C552.797 93.8261 553.886 93.6774 554.825 93.3801C555.457 93.18 555.828 92.5622 555.828 91.9034V81.5829C555.828 81.0014 555.542 80.4427 555.014 80.1911C554.6 79.9938 554.171 79.8431 553.726 79.7391C552.981 79.5217 552.259 79.413 551.558 79.413C549.324 79.413 548.208 80.5217 548.208 82.7391V90.5652C548.208 91.7391 548.47 92.5652 548.996 93.0435Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path d="M588.228 104.783C589.195 104.783 589.98 104.004 589.98 103.043V84.6928C589.98 84.0869 590.292 83.5143 590.842 83.2503C591.381 82.9911 591.947 82.7772 592.542 82.6087C593.461 82.3044 594.49 82.1522 595.629 82.1522C596.461 82.1522 597.249 82.2174 597.994 82.3478C598.726 82.469 599.44 82.6277 600.134 82.8239C600.24 82.8537 600.349 82.8696 600.458 82.8696C601.093 82.8696 601.607 82.3591 601.607 81.7294V69.8261C601.607 69.5217 601.497 69.2609 601.278 69.0435C601.147 68.913 600.906 68.7826 600.556 68.6522C600.205 68.5217 599.68 68.4565 598.979 68.4565C596.921 68.4565 595.279 69.087 594.052 70.3478C592.966 71.4664 592.12 73.0989 591.514 75.2453C591.418 75.5851 591.11 75.8261 590.754 75.8261C590.326 75.8261 589.98 75.4818 589.98 75.057V69.8261C589.98 69.3478 589.739 69.1087 589.257 69.1087H578.396C577.429 69.1087 576.644 69.8873 576.644 70.8478V104.065C576.644 104.543 576.885 104.783 577.367 104.783H588.228Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M638.295 81.8261V92.3913C638.295 92.9268 638.482 93.2772 638.855 93.4425C638.96 93.4893 639.069 93.5295 639.178 93.5672C639.3 93.6094 639.422 93.6304 639.544 93.6304H639.631C640.599 93.6304 641.383 94.4091 641.383 95.3696V104.065C641.383 104.543 641.142 104.783 640.66 104.783H636.259C634.113 104.783 632.142 104.348 630.347 103.478C628.788 102.705 627.594 101.587 626.763 100.124C626.573 99.7893 626.224 99.5652 625.837 99.5652C625.46 99.5652 625.118 99.7765 624.931 100.101C624 101.715 622.783 102.993 621.282 103.935C619.661 104.935 617.581 105.435 615.041 105.435C611.975 105.435 609.545 104.609 607.749 102.957C605.954 101.304 605.056 99.0652 605.056 96.2391V93.6957C605.056 90.6522 605.954 88.2609 607.749 86.5217C609.589 84.7826 612.172 83.913 615.501 83.913H624.697C625.205 83.913 625.617 83.5043 625.617 83C625.617 81.4783 625.201 80.4565 624.369 79.9348C623.581 79.3696 622.048 79.087 619.771 79.087C615.972 79.087 612.216 79.6361 608.503 80.7343C608.395 80.7661 608.284 80.7826 608.171 80.7826C607.539 80.7826 607.027 80.2739 607.027 79.6463V71.2609C607.027 70.9565 607.092 70.7391 607.224 70.6087C607.53 70.3043 608.362 69.9783 609.72 69.6304C611.121 69.2826 612.808 68.9783 614.778 68.7174C616.793 68.413 618.851 68.2609 620.953 68.2609C626.953 68.2609 631.332 69.3478 634.091 71.5217C636.894 73.6522 638.295 77.087 638.295 81.8261ZM619.442 96.0435C621.348 96.0435 623.127 95.6161 624.777 94.7612C625.312 94.4845 625.617 93.9194 625.617 93.3211V91.9783C625.617 91.0178 624.833 90.2391 623.865 90.2391H619.574C618.829 90.2391 618.26 90.4348 617.866 90.8261C617.515 91.2609 617.34 91.7826 617.34 92.3913V93.9565C617.34 95.3478 618.041 96.0435 619.442 96.0435Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
<path d="M664.776 69.1087C663.958 69.1087 663.25 69.6696 663.068 70.4605C662.137 74.5177 661.277 78.3279 660.489 81.8913C659.711 85.5887 659.125 89.0962 658.73 92.4139C658.682 92.8093 658.346 93.1087 657.945 93.1087C657.503 93.1087 657.147 92.7472 657.154 92.3083C657.205 88.9664 657.069 85.6245 656.744 82.2826C656.438 78.6739 656.044 74.6522 655.562 70.2174C655.518 69.7391 655.43 69.4348 655.299 69.3043C655.168 69.1739 654.971 69.1087 654.708 69.1087H645.295C644.208 69.1087 643.383 70.0825 643.568 71.1467C644.447 76.2065 645.292 81.2663 646.102 86.3261C647.066 92.0652 648.029 97.587 648.993 102.891C649.143 103.562 649.309 104.041 649.491 104.328C649.548 104.417 649.623 104.493 649.711 104.552C649.938 104.706 650.18 104.783 650.438 104.783H662.158C662.955 104.783 663.651 104.249 663.852 103.484C664.192 102.194 664.494 101.039 664.758 100.022C665.109 98.6739 665.415 97.3478 665.678 96.0435C665.941 94.7391 666.204 93.3043 666.466 91.7391C666.743 90.2865 667.038 88.5325 667.35 86.4772C667.409 86.0907 667.743 85.8043 668.137 85.8043C668.535 85.8043 668.871 86.0965 668.924 86.4877C669.191 88.4532 669.423 90.1385 669.62 91.5435C669.882 93.0652 670.123 94.413 670.342 95.587C670.605 96.7174 670.868 97.8696 671.13 99.0435C671.393 100.174 671.7 101.478 672.05 102.957C672.238 103.59 672.425 104.047 672.613 104.329C672.671 104.417 672.746 104.493 672.834 104.552C673.061 104.706 673.303 104.783 673.561 104.783H685.485C686.338 104.783 687.067 104.172 687.212 103.338L689.984 87.3043C690.991 81.4783 691.976 75.6957 692.94 69.9565C692.983 69.3913 692.786 69.1087 692.349 69.1087H682.245C681.344 69.1087 680.589 69.7887 680.503 70.68C680.125 74.5767 679.782 78.2703 679.473 81.7609C679.189 85.3908 679.055 88.9084 679.072 92.3138C679.074 92.7513 678.719 93.1087 678.278 93.1087C677.874 93.1087 677.535 92.8065 677.489 92.4081C677.091 89.0194 676.482 85.5355 675.663 81.9565C674.831 78.1304 673.911 74.087 672.904 69.8261C672.773 69.3478 672.51 69.1087 672.116 69.1087H664.776Z" stroke="white" stroke-width="26" mask="url(#path-1-outside-1_3296_32770)"/>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

BIN
packages/baiban/public/static/embed-icons/codepen.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
packages/baiban/public/static/embed-icons/codesandbox.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

BIN
packages/baiban/public/static/embed-icons/desmos.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
packages/baiban/public/static/embed-icons/excalidraw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

BIN
packages/baiban/public/static/embed-icons/felt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

BIN
packages/baiban/public/static/embed-icons/figma.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
packages/baiban/public/static/embed-icons/github_gist.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
packages/baiban/public/static/embed-icons/google_calendar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

BIN
packages/baiban/public/static/embed-icons/google_maps.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
packages/baiban/public/static/embed-icons/google_slides.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
packages/baiban/public/static/embed-icons/observable.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 B

BIN
packages/baiban/public/static/embed-icons/replit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

BIN
packages/baiban/public/static/embed-icons/scratch.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
packages/baiban/public/static/embed-icons/spotify.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
packages/baiban/public/static/embed-icons/tldraw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
packages/baiban/public/static/embed-icons/val_town.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

BIN
packages/baiban/public/static/embed-icons/vimeo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

BIN
packages/baiban/public/static/embed-icons/youtube.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

BIN
packages/baiban/public/static/fonts/IBMPlexMono-Medium.woff2

Binary file not shown.

BIN
packages/baiban/public/static/fonts/IBMPlexSans-Medium.woff2

Binary file not shown.

BIN
packages/baiban/public/static/fonts/IBMPlexSerif-Medium.woff2

Binary file not shown.

BIN
packages/baiban/public/static/fonts/Shantell_Sans-Tldrawish.woff2

Binary file not shown.

BIN
packages/baiban/public/static/github-hero-dark-draw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

BIN
packages/baiban/public/static/github-hero-dark.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

BIN
packages/baiban/public/static/github-hero-light-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
packages/baiban/public/static/github-hero-light-draw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

BIN
packages/baiban/public/static/github-hero-light.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

BIN
packages/baiban/public/static/github-hero_dark-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

3
packages/baiban/public/static/icons/icon/align-bottom.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18 5C18 4.44772 17.5523 4 17 4H13C12.4477 4 12 4.44772 12 5L12 28H3C2.44772 28 2 28.4477 2 29C2 29.5523 2.44772 30 3 30L27 30C27.5523 30 28 29.5523 28 29C28 28.4477 27.5523 28 27 28H18L18 5Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 320 B

4
packages/baiban/public/static/icons/icon/align-center-horizontal.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.99976 13C1.99976 12.4477 2.44747 12 2.99976 12H26.9998C27.552 12 27.9998 12.4477 27.9998 13V17C27.9998 17.5523 27.552 18 26.9998 18H2.99976C2.44747 18 1.99976 17.5523 1.99976 17V13Z" fill="black"/>
<path d="M13.9998 3C13.9998 2.44772 14.4475 2 14.9998 2C15.552 2 15.9998 2.44772 15.9998 3V27C15.9998 27.5523 15.552 28 14.9998 28C14.4475 28 13.9998 27.5523 13.9998 27V3Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 501 B

3
packages/baiban/public/static/icons/icon/align-center-vertical.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.9998 2C12.4475 2 11.9998 2.44772 11.9998 3V14H2.99976C2.44747 14 1.99976 14.4477 1.99976 15C1.99976 15.5523 2.44747 16 2.99976 16H11.9998V27C11.9998 27.5523 12.4475 28 12.9998 28H16.9998C17.552 28 17.9998 27.5523 17.9998 27V16H26.9998C27.552 16 27.9998 15.5523 27.9998 15C27.9998 14.4477 27.552 14 26.9998 14H17.9998V3C17.9998 2.44772 17.552 2 16.9998 2H12.9998Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 495 B

4
packages/baiban/public/static/icons/icon/align-left.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 3C0 2.44772 0.447715 2 1 2C1.55228 2 2 2.44772 2 3V27C2 27.5523 1.55228 28 1 28C0.447715 28 0 27.5523 0 27V3Z" fill="black"/>
<path d="M0 12H25C25.5523 12 26 12.4477 26 13V17C26 17.5523 25.5523 18 25 18H0V12Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 340 B

4
packages/baiban/public/static/icons/icon/align-right.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.99976 13C3.99976 12.4477 4.44747 12 4.99976 12H29.9998V18H4.99976C4.44747 18 3.99976 17.5523 3.99976 17V13Z" fill="black"/>
<path d="M27.9998 3C27.9998 2.44772 28.4475 2 28.9998 2C29.552 2 29.9998 2.44772 29.9998 3V27C29.9998 27.5523 29.552 28 28.9998 28C28.4475 28 27.9998 27.5523 27.9998 27V3Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 427 B

3
packages/baiban/public/static/icons/icon/align-top.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2.99988 1.52588e-05C2.44759 1.52588e-05 1.99988 0.447731 1.99988 1.00002C1.99988 1.5523 2.44759 2.00002 2.99988 2.00002H11.9999V25C11.9999 25.5523 12.4476 26 12.9999 26H16.9999C17.5522 26 17.9999 25.5523 17.9999 25V2.00002H26.9999C27.5522 2.00002 27.9999 1.5523 27.9999 1.00002C27.9999 0.447731 27.5522 1.52588e-05 26.9999 1.52588e-05H2.99988Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 473 B

3
packages/baiban/public/static/icons/icon/arrow-left.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.4996 21.5001L5.99963 15.0001M5.99963 15.0001L12.4996 8.50012M5.99963 15.0001L23.9999 15.0001" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 291 B

3
packages/baiban/public/static/icons/icon/arrowhead-arrow.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 15L27 15M13 26L29 15L13 4" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 223 B

3
packages/baiban/public/static/icons/icon/arrowhead-bar.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 15L29 15M29 15V2M29 15V28" stroke="black" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 199 B

4
packages/baiban/public/static/icons/icon/arrowhead-diamond.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.4142 3.82822L28.3137 13.7277C29.0948 14.5088 29.0948 15.7751 28.3137 16.5561L18.4142 26.4556C17.6332 27.2367 16.3669 27.2367 15.5858 26.4556L5.68631 16.5561C4.90526 15.7751 4.90526 14.5088 5.68631 13.7277L15.5858 3.82822C16.3669 3.04717 17.6332 3.04717 18.4142 3.82822Z" stroke="black" stroke-width="2"/>
<path d="M1 15H5" stroke="black" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 496 B

4
packages/baiban/public/static/icons/icon/arrowhead-dot.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M29 15C29 21.0751 24.0751 26 18 26C11.9249 26 7 21.0751 7 15C7 8.92487 11.9249 4 18 4C24.0751 4 29 8.92487 29 15Z" stroke="black" stroke-width="2"/>
<path d="M1 15H6" stroke="black" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 336 B

3
packages/baiban/public/static/icons/icon/arrowhead-none.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 15L29 15" stroke="black" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 182 B

3
packages/baiban/public/static/icons/icon/arrowhead-square.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 15L5 15M8 27H26C27.6569 27 29 25.6569 29 24V6C29 4.34315 27.6569 3 26 3H8C6.34315 3 5 4.34315 5 6V24C5 25.6569 6.34315 27 8 27Z" stroke="black" stroke-width="2" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 301 B

3
packages/baiban/public/static/icons/icon/arrowhead-triangle-inverted.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 14C0.447715 14 0 14.4477 0 15C5.96046e-08 15.5523 0.447715 16 1 16L1 14ZM29 2H30C30 1.62447 29.7896 1.2806 29.4553 1.10964C29.1209 0.938677 28.7189 0.969452 28.4145 1.18932L29 2ZM29 28L28.4145 28.8107C28.7189 29.0305 29.1209 29.0613 29.4553 28.8904C29.7896 28.7194 30 28.3755 30 28H29ZM1 16L11 16V14L1 14L1 16ZM28 2V28H30V2H28ZM29.5855 27.1893L11.5855 14.1893L10.4145 15.8107L28.4145 28.8107L29.5855 27.1893ZM11.5855 15.8107L29.5855 2.81068L28.4145 1.18932L10.4145 14.1893L11.5855 15.8107Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 621 B

3
packages/baiban/public/static/icons/icon/arrowhead-triangle.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 15.1539L11.6923 15.1539M12.6923 3.46155V26.5385L28.8462 15L12.6923 3.46155Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 273 B

3
packages/baiban/public/static/icons/icon/blob.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.98125 12.4723C1.83836 12.6938 2.09551 13.0008 2.33213 12.8846C3.14685 12.4842 3.93568 12.0619 4.70733 11.5967C4.93448 11.4598 5.18303 11.7046 5.0359 11.9253C3.13151 14.7818 -1.59634 21.7981 3.60918 22.2578C6.76899 22.5368 9.93894 19.9616 12.9133 17.2735C13.1318 17.0759 13.4376 17.335 13.2743 17.5802C10.8537 21.2143 6.41515 28.636 12.2493 28.99C17.3234 29.298 16.1533 24.5977 27.679 18.2524C28.5169 17.7911 28.7805 16.8396 28.5707 15.9125C28.1988 13.9184 24.4364 13.9496 22.3466 14.4984C22.0925 14.5651 21.8477 14.245 22.0182 14.045C24.5643 11.0592 31.8711 3.60414 27.2697 1.27741C23.219 -0.770836 13.918 8.89819 9.96535 12.5406C9.75706 12.7325 9.52989 12.5192 9.69793 12.2912C11.6423 9.65308 14.1864 6.73192 14.6429 3.69364C14.7073 3.26555 14.628 2.86103 14.4053 2.48008C14.1825 2.09913 13.8587 1.8145 13.4339 1.6262C9.1247 -0.284007 4.20268 9.02761 1.98125 12.4723Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1000 B

3
packages/baiban/public/static/icons/icon/bring-forward.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.50024 12.6388L15.0002 6.5M15.0002 6.5L21.5002 12.6388M15.0002 6.5L15.0002 23.5" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 276 B

3
packages/baiban/public/static/icons/icon/bring-to-front.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.50024 15.4998L15.0002 8.99976M15.0002 8.99976L21.5002 15.4998M15.0002 8.99976L15.0002 27M3 3L27 3" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 295 B

5
packages/baiban/public/static/icons/icon/broken.svg

@ -0,0 +1,5 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M28.0001 12C28.0001 11.4477 27.5524 11 27.0001 11C26.4478 11 26.0001 11.4477 26.0001 12V26H12C11.4477 26 11 26.4477 11 27C11 27.5523 11.4477 28 12 28H26.9C27.4523 28 28.0001 27.4522 28.0001 26.8999V12Z" fill="black"/>
<path d="M2 18C2 18.5523 2.44769 19 2.99997 19C3.55225 19 4 18.5523 4 18L4 4L18 4C18.5523 4 19 3.55228 19 3C19 2.44772 18.5523 2 18 2L3.10007 2C2.54779 2 2 2.54781 2 3.10009L2 18Z" fill="black"/>
<rect x="1.58411" y="27.0018" width="35.9461" height="2" rx="1" transform="rotate(-45 1.58411 27.0018)" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 645 B

4
packages/baiban/public/static/icons/icon/check-circle.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.9998 27.2949C21.7904 27.2949 27.2954 21.7899 27.2954 14.9993C27.2954 8.20858 21.7904 2.70361 14.9998 2.70361C8.20907 2.70361 2.7041 8.20858 2.7041 14.9993C2.7041 21.7899 8.20907 27.2949 14.9998 27.2949Z" stroke="black" stroke-width="2"/>
<path d="M20.7075 9.39489C21.1367 9.67551 21.2572 10.2509 20.9765 10.6801L14.6629 20.3363C14.5141 20.5639 14.273 20.7148 14.0033 20.7492C13.7336 20.7836 13.4624 20.6981 13.2612 20.5152L9.17587 16.8013C8.79644 16.4564 8.76848 15.8691 9.11342 15.4897C9.45835 15.1103 10.0456 15.0823 10.425 15.4273L13.7046 18.4087L19.4223 9.66389C19.7029 9.2347 20.2784 9.11426 20.7075 9.39489Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 746 B

3
packages/baiban/public/static/icons/icon/check.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.9339 7.45369C23.5118 7.83148 23.6739 8.60615 23.2961 9.18396L14.7961 22.184C14.5958 22.4903 14.2712 22.6935 13.9082 22.7398C13.5451 22.7862 13.1799 22.6711 12.909 22.4248L7.40905 17.4248C6.89822 16.9604 6.86058 16.1699 7.32496 15.6591C7.78935 15.1482 8.57991 15.1106 9.09073 15.575L13.506 19.5888L21.2037 7.81584C21.5815 7.23803 22.3561 7.07589 22.9339 7.45369Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 494 B

3
packages/baiban/public/static/icons/icon/chevron-down.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.27047 12.3161C6.6482 11.9131 7.28103 11.8927 7.68394 12.2705L15 19.1293L22.3161 12.2705C22.719 11.8927 23.3518 11.9131 23.7295 12.3161C24.1073 12.719 24.0869 13.3518 23.6839 13.7295L15.6839 21.2295C15.2993 21.5902 14.7007 21.5902 14.3161 21.2295L6.31606 13.7295C5.91315 13.3518 5.89274 12.719 6.27047 12.3161Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 481 B

3
packages/baiban/public/static/icons/icon/chevron-left.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.6836 6.27028C18.0865 6.64801 18.1069 7.28085 17.7292 7.68376L10.8704 14.9998L17.7292 22.3159C18.1069 22.7188 18.0865 23.3516 17.6836 23.7294C17.2807 24.1071 16.6478 24.0867 16.2701 23.6838L8.7701 15.6838C8.40948 15.2991 8.40948 14.7005 8.7701 14.3159L16.2701 6.31588C16.6478 5.91297 17.2807 5.89255 17.6836 6.27028Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 488 B

3
packages/baiban/public/static/icons/icon/chevron-right.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3168 6.27013C12.7197 5.8924 13.3525 5.91281 13.7303 6.31573L21.2303 14.3157C21.5909 14.7004 21.5909 15.299 21.2303 15.6836L13.7303 23.6836C13.3525 24.0865 12.7197 24.1069 12.3168 23.7292C11.9139 23.3515 11.8935 22.7186 12.2712 22.3157L19.13 14.9997L12.2712 7.68361C11.8935 7.2807 11.9139 6.64786 12.3168 6.27013Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 485 B

3
packages/baiban/public/static/icons/icon/chevron-up.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.27047 17.6839C6.6482 18.0869 7.28103 18.1073 7.68394 17.7295L15 10.8707L22.3161 17.7295C22.719 18.1073 23.3518 18.0869 23.7295 17.6839C24.1073 17.281 24.0869 16.6482 23.6839 16.2705L15.6839 8.77046C15.2993 8.40984 14.7007 8.40984 14.3161 8.77046L6.31606 16.2705C5.91315 16.6482 5.89274 17.281 6.27047 17.6839Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 481 B

3
packages/baiban/public/static/icons/icon/chevrons-ne.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5271 8.73255L13.7947 15.0002L7.52722 21.2677M16.2052 8.73242L22.4728 15L16.2053 21.2675" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 285 B

3
packages/baiban/public/static/icons/icon/chevrons-sw.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.4728 21.2675L16.2052 14.9999L22.4727 8.73242M13.7947 21.2676L7.5271 15L13.7946 8.73254" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 285 B

4
packages/baiban/public/static/icons/icon/clipboard-copied.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 2V4H18V2H8ZM6 1.5C6 0.671573 6.67157 0 7.5 0H18.5C19.3284 0 20 0.671572 20 1.5V2H21C22.6569 2 24 3.34315 24 5V14H22V5C22 4.44772 21.5523 4 21 4H20V4.5C20 5.32843 19.3284 6 18.5 6H7.5C6.67157 6 6 5.32843 6 4.5V4H5C4.44771 4 4 4.44772 4 5V25C4 25.5523 4.44772 26 5 26H12V28H5C3.34315 28 2 26.6569 2 25V5C2 3.34314 3.34315 2 5 2H6V1.5Z" fill="black"/>
<path d="M27.5197 17.173C28.0099 17.4936 28.1475 18.1509 27.827 18.6411L20.6149 29.6713C20.445 29.9313 20.1696 30.1037 19.8615 30.143C19.5534 30.1823 19.2436 30.0846 19.0138 29.8757L14.3472 25.6333C13.9137 25.2393 13.8818 24.5685 14.2758 24.1351C14.6698 23.7017 15.3406 23.6697 15.774 24.0638L19.5203 27.4694L26.0516 17.4803C26.3721 16.9901 27.0294 16.8525 27.5197 17.173Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 893 B

15
packages/baiban/public/static/icons/icon/clipboard-copy.svg

@ -0,0 +1,15 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 2V4H18V2H8ZM6 1.5C6 0.671573 6.67157 0 7.5 0H18.5C19.3284 0 20 0.671572 20 1.5V2H21C22.6569 2 24 3.34315 24 5V14H22V5C22 4.44772 21.5523 4 21 4H20V4.5C20 5.32843 19.3284 6 18.5 6H7.5C6.67157 6 6 5.32843 6 4.5V4H5C4.44771 4 4 4.44772 4 5V25C4 25.5523 4.44772 26 5 26H12V28H5C3.34315 28 2 26.6569 2 25V5C2 3.34314 3.34315 2 5 2H6V1.5Z" fill="black"/>
<path d="M28 29C28 29.5523 27.5523 30 27 30C26.4477 30 26 29.5523 26 29C26 28.4477 26.4477 28 27 28C27.5523 28 28 28.4477 28 29Z" fill="black"/>
<path d="M28 25C28 25.5523 27.5523 26 27 26C26.4477 26 26 25.5523 26 25C26 24.4477 26.4477 24 27 24C27.5523 24 28 24.4477 28 25Z" fill="black"/>
<path d="M28 21C28 21.5523 27.5523 22 27 22C26.4477 22 26 21.5523 26 21C26 20.4477 26.4477 20 27 20C27.5523 20 28 20.4477 28 21Z" fill="black"/>
<path d="M28 17C28 17.5523 27.5523 18 27 18C26.4477 18 26 17.5523 26 17C26 16.4477 26.4477 16 27 16C27.5523 16 28 16.4477 28 17Z" fill="black"/>
<path d="M24 17C24 17.5523 23.5523 18 23 18C22.4477 18 22 17.5523 22 17C22 16.4477 22.4477 16 23 16C23.5523 16 24 16.4477 24 17Z" fill="black"/>
<path d="M20 17C20 17.5523 19.5523 18 19 18C18.4477 18 18 17.5523 18 17C18 16.4477 18.4477 16 19 16C19.5523 16 20 16.4477 20 17Z" fill="black"/>
<path d="M16 17C16 17.5523 15.5523 18 15 18C14.4477 18 14 17.5523 14 17C14 16.4477 14.4477 16 15 16C15.5523 16 16 16.4477 16 17Z" fill="black"/>
<path d="M16 21C16 21.5523 15.5523 22 15 22C14.4477 22 14 21.5523 14 21C14 20.4477 14.4477 20 15 20C15.5523 20 16 20.4477 16 21Z" fill="black"/>
<path d="M16 25C16 25.5523 15.5523 26 15 26C14.4477 26 14 25.5523 14 25C14 24.4477 14.4477 24 15 24C15.5523 24 16 24.4477 16 25Z" fill="black"/>
<path d="M16 29C16 29.5523 15.5523 30 15 30C14.4477 30 14 29.5523 14 29C14 28.4477 14.4477 28 15 28C15.5523 28 16 28.4477 16 29Z" fill="black"/>
<path d="M20 29C20 29.5523 19.5523 30 19 30C18.4477 30 18 29.5523 18 29C18 28.4477 18.4477 28 19 28C19.5523 28 20 28.4477 20 29Z" fill="black"/>
<path d="M24 29C24 29.5523 23.5523 30 23 30C22.4477 30 22 29.5523 22 29C22 28.4477 22.4477 28 23 28C23.5523 28 24 28.4477 24 29Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

3
packages/baiban/public/static/icons/icon/color.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="13" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 149 B

3
packages/baiban/public/static/icons/icon/cross-2.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M23.5631 8.06315C24.0123 7.61405 24.0123 6.88591 23.5631 6.4368C23.114 5.9877 22.3859 5.9877 21.9368 6.4368L15 13.3736L8.06315 6.4368C7.61405 5.9877 6.88591 5.9877 6.4368 6.4368C5.9877 6.88591 5.9877 7.61405 6.4368 8.06315L13.3736 15L6.4368 21.9368C5.9877 22.3859 5.9877 23.114 6.4368 23.5631C6.88591 24.0123 7.61405 24.0123 8.06315 23.5631L15 16.6263L21.9368 23.5631C22.3859 24.0123 23.114 24.0123 23.5631 23.5631C24.0123 23.114 24.0123 22.3859 23.5631 21.9368L16.6263 15L23.5631 8.06315Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 618 B

4
packages/baiban/public/static/icons/icon/cross-circle.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.4422 11.8925C19.8106 11.524 19.8106 10.9264 19.4422 10.5579C19.0736 10.1894 18.4761 10.1894 18.1076 10.5579L15 13.6654L11.8925 10.5579C11.524 10.1894 10.9264 10.1894 10.5579 10.5579C10.1894 10.9264 10.1894 11.524 10.5579 11.8925L13.6654 15L10.5579 18.1075C10.1894 18.4761 10.1894 19.0736 10.5579 19.4421C10.9264 19.8107 11.524 19.8107 11.8925 19.4421L15 16.3346L18.1076 19.4421C18.4761 19.8107 19.0736 19.8107 19.4422 19.4421C19.8106 19.0736 19.8106 18.4761 19.4422 18.1075L16.3346 15L19.4422 11.8925Z" fill="black"/>
<path d="M14.9998 27.2949C21.7904 27.2949 27.2954 21.7899 27.2954 14.9993C27.2954 8.20858 21.7904 2.70361 14.9998 2.70361C8.20907 2.70361 2.7041 8.20858 2.7041 14.9993C2.7041 21.7899 8.20907 27.2949 14.9998 27.2949Z" stroke="black" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 885 B

3
packages/baiban/public/static/icons/icon/dash-dashed.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.4647 2.24741C13.2859 2.08493 14.1339 2 15 2C15.8661 2 16.7141 2.08493 17.5353 2.24741C18.4079 2.42002 18.9753 3.26726 18.8026 4.13978C18.63 5.01229 17.7828 5.57968 16.9103 5.40707C16.2937 5.2851 15.6552 5.2209 15 5.2209C14.3448 5.2209 13.7063 5.2851 13.0897 5.40707C12.2172 5.57968 11.37 5.01229 11.1974 4.13978C11.0248 3.26726 11.5921 2.42002 12.4647 2.24741ZM10.01 4.63292C10.5048 5.372 10.3068 6.37227 9.56771 6.86708C8.50059 7.5815 7.5815 8.50059 6.86708 9.56771C6.37227 10.3068 5.372 10.5048 4.63292 10.01C3.89383 9.51521 3.69581 8.51495 4.19061 7.77586C5.13925 6.35889 6.35889 5.13925 7.77586 4.19061C8.51495 3.69581 9.51521 3.89383 10.01 4.63292ZM19.99 4.63292C20.4848 3.89383 21.4851 3.69581 22.2241 4.19061C23.6411 5.13925 24.8607 6.35889 25.8094 7.77586C26.3042 8.51495 26.1062 9.51521 25.3671 10.01C24.628 10.5048 23.6277 10.3068 23.1329 9.56771C22.4185 8.50059 21.4994 7.5815 20.4323 6.86708C19.6932 6.37227 19.4952 5.372 19.99 4.63292ZM4.13978 11.1974C5.01229 11.37 5.57968 12.2172 5.40707 13.0897C5.2851 13.7063 5.2209 14.3448 5.2209 15C5.2209 15.6552 5.2851 16.2937 5.40707 16.9103C5.57968 17.7828 5.01229 18.63 4.13978 18.8026C3.26726 18.9752 2.42002 18.4079 2.24741 17.5353C2.08493 16.7141 2 15.8661 2 15C2 14.1339 2.08493 13.2859 2.24741 12.4647C2.42002 11.5921 3.26726 11.0247 4.13978 11.1974ZM25.8602 11.1974C26.7327 11.0248 27.58 11.5921 27.7526 12.4647C27.9151 13.2859 28 14.1339 28 15C28 15.8661 27.9151 16.7141 27.7526 17.5353C27.58 18.4079 26.7327 18.9753 25.8602 18.8026C24.9877 18.63 24.4203 17.7828 24.5929 16.9103C24.7149 16.2937 24.7791 15.6552 24.7791 15C24.7791 14.3448 24.7149 13.7063 24.5929 13.0897C24.4203 12.2172 24.9877 11.37 25.8602 11.1974ZM4.63292 19.99C5.372 19.4952 6.37227 19.6932 6.86708 20.4323C7.5815 21.4994 8.50059 22.4185 9.56771 23.1329C10.3068 23.6277 10.5048 24.628 10.01 25.3671C9.51521 26.1062 8.51495 26.3042 7.77586 25.8094C6.35889 24.8607 5.13925 23.6411 4.19061 22.2241C3.69581 21.4851 3.89383 20.4848 4.63292 19.99ZM25.3671 19.99C26.1062 20.4848 26.3042 21.4851 25.8094 22.2241C24.8607 23.6411 23.6411 24.8607 22.2241 25.8094C21.4851 26.3042 20.4848 26.1062 19.99 25.3671C19.4952 24.628 19.6932 23.6277 20.4323 23.1329C21.4994 22.4185 22.4185 21.4994 23.1329 20.4323C23.6277 19.6932 24.628 19.4952 25.3671 19.99ZM11.1974 25.8602C11.37 24.9877 12.2172 24.4203 13.0897 24.5929C13.7063 24.7149 14.3448 24.7791 15 24.7791C15.6552 24.7791 16.2937 24.7149 16.9103 24.5929C17.7828 24.4203 18.63 24.9877 18.8026 25.8602C18.9752 26.7327 18.4079 27.58 17.5353 27.7526C16.7141 27.9151 15.8661 28 15 28C14.1339 28 13.2859 27.9151 12.4647 27.7526C11.5921 27.58 11.0247 26.7327 11.1974 25.8602Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

14
packages/baiban/public/static/icons/icon/dash-dotted.svg

@ -0,0 +1,14 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17 3.7915C17 4.89607 16.1046 5.7915 15 5.7915C13.8954 5.7915 13 4.89607 13 3.7915C13 2.68693 13.8954 1.7915 15 1.7915C16.1046 1.7915 17 2.68693 17 3.7915Z" fill="black"/>
<path d="M17 25.7915C17 26.8961 16.1046 27.7915 15 27.7915C13.8954 27.7915 13 26.8961 13 25.7915C13 24.6869 13.8954 23.7915 15 23.7915C16.1046 23.7915 17 24.6869 17 25.7915Z" fill="black"/>
<path d="M22.232 6.26525C21.6798 7.22184 20.4566 7.54959 19.5 6.9973C18.5434 6.44502 18.2157 5.22184 18.7679 4.26525C19.3202 3.30867 20.5434 2.98092 21.5 3.5332C22.4566 4.08549 22.7843 5.30867 22.232 6.26525Z" fill="black"/>
<path d="M11.232 25.3178C10.6798 26.2744 9.45658 26.6021 8.5 26.0499C7.54341 25.4976 7.21566 24.2744 7.76794 23.3178C8.32023 22.3612 9.54341 22.0335 10.5 22.5858C11.4566 23.138 11.7843 24.3612 11.232 25.3178Z" fill="black"/>
<path d="M25.5262 11.0236C24.5697 11.5758 23.3465 11.2481 22.7942 10.2915C22.2419 9.33491 22.5697 8.11173 23.5263 7.55945C24.4828 7.00716 25.706 7.33491 26.2583 8.2915C26.8106 9.24808 26.4828 10.4713 25.5262 11.0236Z" fill="black"/>
<path d="M6.47376 22.0236C5.51717 22.5758 4.29399 22.2481 3.74171 21.2915C3.18942 20.3349 3.51717 19.1117 4.47376 18.5594C5.43035 18.0072 6.65353 18.3349 7.20581 19.2915C7.7581 20.2481 7.43035 21.4713 6.47376 22.0236Z" fill="black"/>
<path d="M26 16.7915C24.8954 16.7915 24 15.8961 24 14.7915C24 13.6869 24.8954 12.7915 26 12.7915C27.1046 12.7915 28 13.6869 28 14.7915C28 15.8961 27.1046 16.7915 26 16.7915Z" fill="black"/>
<path d="M4 16.7915C2.89543 16.7915 2 15.8961 2 14.7915C2 13.6869 2.89543 12.7915 4 12.7915C5.10457 12.7915 6 13.6869 6 14.7915C6 15.8961 5.10457 16.7915 4 16.7915Z" fill="black"/>
<path d="M23.5262 22.0236C22.5697 21.4713 22.2419 20.2481 22.7942 19.2915C23.3465 18.3349 24.5697 18.0072 25.5263 18.5594C26.4828 19.1117 26.8106 20.3349 26.2583 21.2915C25.706 22.2481 24.4828 22.5758 23.5262 22.0236Z" fill="black"/>
<path d="M4.47376 11.0236C3.51717 10.4713 3.18942 9.24808 3.74171 8.2915C4.29399 7.33491 5.51717 7.00716 6.47376 7.55945C7.43035 8.11173 7.7581 9.33491 7.20581 10.2915C6.65353 11.2481 5.43034 11.5758 4.47376 11.0236Z" fill="black"/>
<path d="M18.768 25.3178C18.2157 24.3612 18.5434 23.138 19.5 22.5857C20.4566 22.0334 21.6798 22.3612 22.2321 23.3178C22.7843 24.2743 22.4566 25.4975 21.5 26.0498C20.5434 26.6021 19.3202 26.2743 18.768 25.3178Z" fill="black"/>
<path d="M7.76795 6.2652C7.21567 5.30862 7.54342 4.08544 8.5 3.53315C9.45659 2.98087 10.6798 3.30862 11.2321 4.2652C11.7843 5.22179 11.4566 6.44497 10.5 6.99725C9.54342 7.54954 8.32024 7.22179 7.76795 6.2652Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

3
packages/baiban/public/static/icons/icon/dash-draw.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.888 15.7331C21.888 11.5738 17.8658 8.92277 13.1123 8.92277C9.48121 8.92277 6.98189 11.5642 6.27145 14.1692C4.96079 18.9749 7.8945 23.0277 11.6746 24.0908C17.7126 25.2814 21.888 21.4921 21.888 15.7331ZM17.1431 2.1844C22.0563 2.9037 26.0951 6.6011 27.4241 11.3531C31.2814 24.4598 14.8135 33.1322 6.27145 24.5902C-3.45849 14.8611 4.83063 0.187141 17.1431 2.1844Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 532 B

3
packages/baiban/public/static/icons/icon/dash-solid.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="15" cy="15" r="11.5" stroke="black" stroke-width="3"/>
</svg>

After

Width:  |  Height:  |  Size: 170 B

4
packages/baiban/public/static/icons/icon/disconnected.svg

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.6246 8.08966C8.94285 8.1985 3.90974 10.7717 0.702407 14.7107C0.294387 15.2118 0.414914 15.9436 0.934298 16.3281C1.47615 16.7292 2.23941 16.5967 2.66586 16.0746C5.14686 13.0369 8.88675 10.9431 13.1591 10.4712L14.6246 8.08966ZM10.7967 14.3104C8.56295 15.0878 6.64328 16.4668 5.26387 18.2363C4.90293 18.6993 5.02803 19.3584 5.4999 19.7077C6.03125 20.101 6.78272 19.9442 7.19471 19.4272C7.56521 18.9623 7.98227 18.5316 8.43945 18.1411L10.7967 14.3104ZM20.3687 17.2713L21.5219 15.3972C22.7718 16.1511 23.8624 17.1153 24.7362 18.2362C25.0972 18.6992 24.9721 19.3583 24.5002 19.7076C23.9689 20.1009 23.2174 19.9442 22.8054 19.4272C22.1335 18.584 21.3085 17.8534 20.3687 17.2713ZM17.4759 21.9723L18.5682 20.1972C19.2365 20.6457 19.8039 21.2169 20.2326 21.8754C20.4882 22.268 20.3516 22.7786 19.975 23.0573C19.4174 23.4701 18.5978 23.1841 18.1652 22.6416C17.9665 22.3924 17.7347 22.1674 17.4759 21.9723ZM23.2506 12.5879L24.4705 10.6054C26.3359 11.6891 27.9726 13.0833 29.2977 14.7106C29.7057 15.2117 29.5852 15.9436 29.0658 16.3281C28.5239 16.7291 27.7607 16.5967 27.3342 16.0746C26.2093 14.6972 24.8255 13.5139 23.2506 12.5879Z" fill="black"/>
<rect x="23.376" y="0.169067" width="3" height="33.372" rx="1.5" transform="rotate(31.6059 23.376 0.169067)" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

12
packages/baiban/public/static/icons/icon/discord.svg

@ -0,0 +1,12 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_916_107895)">
<path d="M8.16097 14.0244C8.64823 13.4997 9.30953 13.2032 10.0001 13.2C10.6908 13.2032 11.3521 13.4997 11.8393 14.0244C12.3266 14.5492 12.6001 15.2595 12.6001 16C12.6001 16.7404 12.3266 17.4507 11.8393 17.9755C11.3521 18.5002 10.6908 18.7967 10.0001 18.8C9.30953 18.7967 8.64823 18.5002 8.16097 17.9755C7.67371 17.4507 7.40015 16.7404 7.40015 16C7.40015 15.2595 7.67371 14.5492 8.16097 14.0244Z" fill="black"/>
<path d="M18.1585 14.0244C18.6458 13.4997 19.3071 13.2032 19.9977 13.2C20.6883 13.2032 21.3496 13.4997 21.8369 14.0244C22.3241 14.5492 22.5977 15.2595 22.5977 16C22.5977 16.7404 22.3241 17.4507 21.8369 17.9755C21.3496 18.5002 20.6883 18.7967 19.9977 18.8C19.3071 18.7967 18.6458 18.5002 18.1585 17.9755C17.6713 17.4507 17.3977 16.7404 17.3977 16C17.3977 15.2595 17.6713 14.5492 18.1585 14.0244Z" fill="black"/>
<path d="M12 6.79999C11.7912 6.08523 10.7517 4.71816 10 4.60004C8.47088 4.76658 6.03082 5.624 4.6 6.40004C3.57476 7.57227 2.52044 10.5558 2.10918 12.2C1.425 14.9355 1.04398 18.2476 0.994873 21.4C1.95111 23.2185 5.42945 25.2 7.5 25.4C7.98332 24.876 9.4 22.6 9.4 22.6M17.9951 6.79999C18.2039 6.08523 19.2434 4.71816 19.9951 4.60004C21.5242 4.76658 23.9643 5.624 25.3951 6.40004C26.4204 7.57227 27.4747 10.5558 27.8859 12.2C28.5701 14.9355 28.9511 18.2476 29.0002 21.4C28.044 23.2185 24.5657 25.2 22.4951 25.4C22.0118 24.876 20.5951 22.6 20.5951 22.6M7 9C7.6 8.2 9.99998 7 15 7C20 7 22.4 8.2 23 9M5.80005 20.4002C6.6 21.6002 8.40002 23.0002 15 23.0002C21.6001 23.0002 23.4 21.6003 24.2001 20.4002" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_916_107895">
<rect width="30" height="30" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

6
packages/baiban/public/static/icons/icon/distribute-horizontal.svg

@ -0,0 +1,6 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.99976 12H10.9998C11.552 12 11.9998 12.4477 11.9998 13V17C11.9998 17.5523 11.552 18 10.9998 18H1.99976V12Z" fill="black"/>
<path d="M17.9998 13C17.9998 12.4477 18.4475 12 18.9998 12H27.9998V18H18.9998C18.4475 18 17.9998 17.5523 17.9998 17V13Z" fill="black"/>
<path d="M0 3C0 2.44772 0.447715 2 1 2C1.55228 2 2 2.44772 2 3V27C2 27.5523 1.55228 28 1 28C0.447715 28 0 27.5523 0 27V3Z" fill="black"/>
<path d="M27.9998 3C27.9998 2.44772 28.4475 2 28.9998 2C29.552 2 29.9998 2.44772 29.9998 3V27C29.9998 27.5523 29.552 28 28.9998 28C28.4475 28 27.9998 27.5523 27.9998 27V3Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 699 B

6
packages/baiban/public/static/icons/icon/distribute-vertical.svg

@ -0,0 +1,6 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.0002 2L18.0002 2V11C18.0002 11.5523 17.5525 12 17.0002 12H13.0002C12.448 12 12.0002 11.5523 12.0002 11V2Z" fill="black"/>
<path d="M12.0002 19C12.0002 18.4477 12.448 18 13.0002 18H17.0002C17.5525 18 18.0002 18.4477 18.0002 19V28H12.0002V19Z" fill="black"/>
<path d="M2 1C2 0.447715 2.44772 0 3 0H27C27.5523 0 28 0.447715 28 1C28 1.55228 27.5523 2 27 2H3C2.44772 2 2 1.55228 2 1Z" fill="black"/>
<path d="M2 29C2 28.4477 2.44772 28 3 28H27C27.5523 28 28 28.4477 28 29C28 29.5523 27.5523 30 27 30H3C2.44772 30 2 29.5523 2 29Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 656 B

3
packages/baiban/public/static/icons/icon/dot.svg

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="14.5" cy="15.5" r="4.5" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 154 B

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save