Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
17d19612
Unverified
Commit
17d19612
authored
Jun 26, 2023
by
zxhlyh
Committed by
GitHub
Jun 26, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feat/add icons (#450)
parent
addf150a
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
609 additions
and
44 deletions
+609
-44
IconBase.tsx
web/app/components/base/icons/IconBase.tsx
+31
-0
md.svg
web/app/components/base/icons/assets/public/files/md.svg
+18
-0
refresh-cw-05.svg
...ts/base/icons/assets/vender/line/arrows/refresh-cw-05.svg
+3
-0
database-03.svg
...base/icons/assets/vender/line/development/database-03.svg
+0
-0
file-plus-02.svg
...ents/base/icons/assets/vender/line/files/file-plus-02.svg
+3
-0
trash-03.svg
...onents/base/icons/assets/vender/line/general/trash-03.svg
+3
-0
database-03.svg
...ase/icons/assets/vender/solid/development/database-03.svg
+0
-0
script.js
web/app/components/base/icons/script.js
+107
-0
Md.json
web/app/components/base/icons/src/public/files/Md.json
+144
-0
Md.tsx
web/app/components/base/icons/src/public/files/Md.tsx
+14
-0
index.ts
web/app/components/base/icons/src/public/files/index.ts
+1
-0
RefreshCw05.json
...onents/base/icons/src/vender/line/arrows/RefreshCw05.json
+29
-0
RefreshCw05.tsx
...ponents/base/icons/src/vender/line/arrows/RefreshCw05.tsx
+14
-0
index.ts
...app/components/base/icons/src/vender/line/arrows/index.ts
+1
-0
Database03.json
...ts/base/icons/src/vender/line/development/Database03.json
+29
-0
Database03.tsx
...nts/base/icons/src/vender/line/development/Database03.tsx
+14
-0
index.ts
...omponents/base/icons/src/vender/line/development/index.ts
+1
-0
FilePlus02.json
...mponents/base/icons/src/vender/line/files/FilePlus02.json
+29
-0
FilePlus02.tsx
...omponents/base/icons/src/vender/line/files/FilePlus02.tsx
+14
-0
index.ts
web/app/components/base/icons/src/vender/line/files/index.ts
+1
-0
Trash03.json
...omponents/base/icons/src/vender/line/general/Trash03.json
+29
-0
Trash03.tsx
...components/base/icons/src/vender/line/general/Trash03.tsx
+14
-0
index.ts
...pp/components/base/icons/src/vender/line/general/index.ts
+1
-0
Database03.json
...s/base/icons/src/vender/solid/development/Database03.json
+28
-0
Database03.tsx
...ts/base/icons/src/vender/solid/development/Database03.tsx
+14
-0
index.ts
...mponents/base/icons/src/vender/solid/development/index.ts
+1
-0
utils.ts
web/app/components/base/icons/utils.ts
+52
-0
index.module.css
...a-source-page/data-source-notion/operate/index.module.css
+0
-14
index.tsx
...ing/data-source-page/data-source-notion/operate/index.tsx
+7
-6
index.module.css
web/app/components/header/account-setting/index.module.css
+0
-10
index.tsx
web/app/components/header/account-setting/index.tsx
+4
-13
package.json
web/package.json
+3
-1
No files found.
web/app/components/base/icons/IconBase.tsx
0 → 100644
View file @
17d19612
import
{
forwardRef
}
from
'react'
import
{
generate
}
from
'./utils'
import
type
{
AbstractNode
}
from
'./utils'
export
type
IconData
=
{
name
:
string
icon
:
AbstractNode
}
export
type
IconBaseProps
=
{
data
:
IconData
className
?:
string
onClick
?:
React
.
MouseEventHandler
<
SVGElement
>
style
?:
React
.
CSSProperties
}
const
IconBase
=
forwardRef
<
React
.
MutableRefObject
<
HTMLOrSVGElement
>
,
IconBaseProps
>
((
props
,
ref
)
=>
{
const
{
data
,
className
,
onClick
,
style
,
...
restProps
}
=
props
return
generate
(
data
.
icon
,
`svg-
${
data
.
name
}
`
,
{
className
,
onClick
,
style
,
'data-icon'
:
data
.
name
,
'aria-hidden'
:
'true'
,
...
restProps
,
'ref'
:
ref
,
})
})
export
default
IconBase
web/app/components/base/icons/assets/public/files/md.svg
0 → 100644
View file @
17d19612
<svg
width=
"32"
height=
"34"
viewBox=
"0 0 32 34"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<g
filter=
"url(#filter0_d_3777_37339)"
>
<path
d=
"M4 7.73349C4 5.49329 4 4.37318 4.43597 3.51753C4.81947 2.76489 5.43139 2.15296 6.18404 1.76947C7.03969 1.3335 8.15979 1.3335 10.4 1.3335H18.6667L28 10.6668V24.2668C28 26.507 28 27.6271 27.564 28.4828C27.1805 29.2354 26.5686 29.8474 25.816 30.2309C24.9603 30.6668 23.8402 30.6668 21.6 30.6668H10.4C8.15979 30.6668 7.03969 30.6668 6.18404 30.2309C5.43139 29.8474 4.81947 29.2354 4.43597 28.4828C4 27.6271 4 26.507 4 24.2668V7.73349Z"
fill=
"#309BEC"
/>
</g>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M21.9904 25.3335H10.0096C9.45202 25.3335 9 24.9138 9 24.396V18.271C9 17.7532 9.45202 17.3335 10.0096 17.3335H21.9904C22.548 17.3335 23 17.7532 23 18.271V24.396C23 24.9138 22.548 25.3335 21.9904 25.3335ZM12.3654 23.4585V21.021L13.7115 22.5835L15.0577 21.021V23.4585H16.4038V19.2085H15.0577L13.7115 20.771L12.3654 19.2085H11.0192V23.4585H12.3654ZM20.0385 21.3335H21.3846L19.3654 23.521L17.3462 21.3335H18.6923V19.2085H20.0385V21.3335Z"
fill=
"white"
/>
<path
opacity=
"0.5"
d=
"M18.6665 1.3335L27.9998 10.6668H21.3332C19.8604 10.6668 18.6665 9.47292 18.6665 8.00016V1.3335Z"
fill=
"white"
/>
<defs>
<filter
id=
"filter0_d_3777_37339"
x=
"2"
y=
"0.333496"
width=
"28"
height=
"33.3335"
filterUnits=
"userSpaceOnUse"
color-interpolation-filters=
"sRGB"
>
<feFlood
flood-opacity=
"0"
result=
"BackgroundImageFix"
/>
<feColorMatrix
in=
"SourceAlpha"
type=
"matrix"
values=
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
result=
"hardAlpha"
/>
<feOffset
dy=
"1"
/>
<feGaussianBlur
stdDeviation=
"1"
/>
<feColorMatrix
type=
"matrix"
values=
"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0"
/>
<feBlend
mode=
"normal"
in2=
"BackgroundImageFix"
result=
"effect1_dropShadow_3777_37339"
/>
<feBlend
mode=
"normal"
in=
"SourceGraphic"
in2=
"effect1_dropShadow_3777_37339"
result=
"shape"
/>
</filter>
</defs>
</svg>
web/app/components/base/icons/assets/vender/line/arrows/refresh-cw-05.svg
0 → 100644
View file @
17d19612
<svg
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M5.69773 13.1783C7.29715 13.8879 9.20212 13.8494 10.8334 12.9075C13.5438 11.3427 14.4724 7.87704 12.9076 5.16672L12.7409 4.87804M3.09233 10.8335C1.52752 8.12314 2.45615 4.65746 5.16647 3.09265C6.7978 2.15081 8.70277 2.11227 10.3022 2.82185M1.66226 10.8892L3.48363 11.3773L3.97166 9.5559M12.0284 6.44393L12.5164 4.62256L14.3378 5.1106"
stroke=
"#667085"
stroke-width=
"1.5"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</svg>
web/app/components/
header/assets/data-source
.svg
→
web/app/components/
base/icons/assets/vender/line/development/database-03
.svg
View file @
17d19612
File moved
web/app/components/base/icons/assets/vender/line/files/file-plus-02.svg
0 → 100644
View file @
17d19612
<svg
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M13.3333 6.99992V4.53325C13.3333 3.41315 13.3333 2.85309 13.1153 2.42527C12.9236 2.04895 12.6176 1.74299 12.2413 1.55124C11.8135 1.33325 11.2534 1.33325 10.1333 1.33325H5.86666C4.74655 1.33325 4.1865 1.33325 3.75868 1.55124C3.38235 1.74299 3.07639 2.04895 2.88464 2.42527C2.66666 2.85309 2.66666 3.41315 2.66666 4.53325V11.4666C2.66666 12.5867 2.66666 13.1467 2.88464 13.5746C3.07639 13.9509 3.38235 14.2569 3.75868 14.4486C4.1865 14.6666 4.74655 14.6666 5.86666 14.6666H7.99999M9.33332 7.33325H5.33332M6.66666 9.99992H5.33332M10.6667 4.66659H5.33332M12 13.9999V9.99992M9.99999 11.9999H14"
stroke=
"#667085"
stroke-width=
"1.5"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</svg>
web/app/components/base/icons/assets/vender/line/general/trash-03.svg
0 → 100644
View file @
17d19612
<svg
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M6 2H10M2 4H14M12.6667 4L12.1991 11.0129C12.129 12.065 12.0939 12.5911 11.8667 12.99C11.6666 13.3412 11.3648 13.6235 11.0011 13.7998C10.588 14 10.0607 14 9.00623 14H6.99377C5.93927 14 5.41202 14 4.99889 13.7998C4.63517 13.6235 4.33339 13.3412 4.13332 12.99C3.90607 12.5911 3.871 12.065 3.80086 11.0129L3.33333 4M6.66667 7V10.3333M9.33333 7V10.3333"
stroke=
"#667085"
stroke-width=
"1.5"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</svg>
web/app/components/
header/assets/data-source-blue
.svg
→
web/app/components/
base/icons/assets/vender/solid/development/database-03
.svg
View file @
17d19612
File moved
web/app/components/base/icons/script.js
0 → 100644
View file @
17d19612
const
path
=
require
(
'node:path'
)
const
{
open
,
readdir
,
access
,
mkdir
,
writeFile
,
appendFile
,
rm
}
=
require
(
'node:fs/promises'
)
const
{
parseXml
}
=
require
(
'@rgrove/parse-xml'
)
const
camelCase
=
require
(
'lodash/camelCase'
)
const
template
=
require
(
'lodash/template'
)
const
generateDir
=
async
(
currentPath
)
=>
{
try
{
await
mkdir
(
currentPath
,
{
recursive
:
true
})
}
catch
(
err
)
{
console
.
error
(
err
.
message
)
}
}
const
processSvgStructure
=
(
svgStructure
,
replaceFillOrStrokeColor
)
=>
{
if
(
svgStructure
?.
children
.
length
)
{
svgStructure
.
children
=
svgStructure
.
children
.
filter
(
c
=>
c
.
type
!==
'text'
)
svgStructure
.
children
.
forEach
((
child
)
=>
{
if
(
child
?.
name
===
'path'
&&
replaceFillOrStrokeColor
)
{
if
(
child
?.
attributes
?.
stroke
)
child
.
attributes
.
stroke
=
'currentColor'
if
(
child
?.
attributes
.
fill
)
child
.
attributes
.
fill
=
'currentColor'
}
if
(
child
?.
children
.
length
)
processSvgStructure
(
child
,
replaceFillOrStrokeColor
)
})
}
}
const
generateSvgComponent
=
async
(
fileHandle
,
entry
,
pathList
,
replaceFillOrStrokeColor
)
=>
{
const
currentPath
=
path
.
resolve
(
__dirname
,
'src'
,
...
pathList
.
slice
(
2
))
try
{
await
access
(
currentPath
)
}
catch
{
await
generateDir
(
currentPath
)
}
const
svgString
=
await
fileHandle
.
readFile
({
encoding
:
'utf8'
})
const
svgJson
=
parseXml
(
svgString
).
toJSON
()
const
svgStructure
=
svgJson
.
children
[
0
]
processSvgStructure
(
svgStructure
,
replaceFillOrStrokeColor
)
const
prefixFileName
=
camelCase
(
entry
.
split
(
'.'
)[
0
])
const
fileName
=
prefixFileName
.
charAt
(
0
).
toUpperCase
()
+
prefixFileName
.
slice
(
1
)
const
svgData
=
{
icon
:
svgStructure
,
name
:
fileName
,
}
const
componentRender
=
template
(
`
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import * as React from 'react'
import data from './<%= svgName %>.json'
import IconBase from '@/app/components/base/icons/IconBase'
import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
props,
ref,
) => <IconBase {...props} ref={ref} data={data as IconData} />)
export default Icon
`
.
trim
())
await
writeFile
(
path
.
resolve
(
currentPath
,
`
${
fileName
}
.json`
),
JSON
.
stringify
(
svgData
,
''
,
'
\
t'
))
await
writeFile
(
path
.
resolve
(
currentPath
,
`
${
fileName
}
.tsx`
),
`
${
componentRender
({
svgName
:
fileName
})}
\n`
)
const
indexingRender
=
template
(
`
export { default as <%= svgName %> } from './<%= svgName %>'
`
.
trim
())
await
appendFile
(
path
.
resolve
(
currentPath
,
'index.ts'
),
`
${
indexingRender
({
svgName
:
fileName
})}
\n`
)
}
const
walk
=
async
(
entry
,
pathList
,
replaceFillOrStrokeColor
)
=>
{
const
currentPath
=
path
.
resolve
(...
pathList
,
entry
)
let
fileHandle
try
{
fileHandle
=
await
open
(
currentPath
)
const
stat
=
await
fileHandle
.
stat
()
if
(
stat
.
isDirectory
())
{
const
files
=
await
readdir
(
currentPath
)
for
(
const
file
of
files
)
await
walk
(
file
,
[...
pathList
,
entry
],
replaceFillOrStrokeColor
)
}
if
(
stat
.
isFile
()
&&
/.+
\.
svg$/g
.
test
(
entry
))
await
generateSvgComponent
(
fileHandle
,
entry
,
pathList
,
replaceFillOrStrokeColor
)
}
finally
{
fileHandle
?.
close
()
}
}
(
async
()
=>
{
await
rm
(
path
.
resolve
(
__dirname
,
'src'
),
{
recursive
:
true
,
force
:
true
})
await
walk
(
'public'
,
[
__dirname
,
'assets'
])
await
walk
(
'vender'
,
[
__dirname
,
'assets'
],
true
)
})()
web/app/components/base/icons/src/public/files/Md.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"32"
,
"height"
:
"34"
,
"viewBox"
:
"0 0 32 34"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"g"
,
"attributes"
:
{
"filter"
:
"url(#filter0_d_3777_37339)"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M4 7.73349C4 5.49329 4 4.37318 4.43597 3.51753C4.81947 2.76489 5.43139 2.15296 6.18404 1.76947C7.03969 1.3335 8.15979 1.3335 10.4 1.3335H18.6667L28 10.6668V24.2668C28 26.507 28 27.6271 27.564 28.4828C27.1805 29.2354 26.5686 29.8474 25.816 30.2309C24.9603 30.6668 23.8402 30.6668 21.6 30.6668H10.4C8.15979 30.6668 7.03969 30.6668 6.18404 30.2309C5.43139 29.8474 4.81947 29.2354 4.43597 28.4828C4 27.6271 4 26.507 4 24.2668V7.73349Z"
,
"fill"
:
"#309BEC"
},
"children"
:
[]
}
]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M21.9904 25.3335H10.0096C9.45202 25.3335 9 24.9138 9 24.396V18.271C9 17.7532 9.45202 17.3335 10.0096 17.3335H21.9904C22.548 17.3335 23 17.7532 23 18.271V24.396C23 24.9138 22.548 25.3335 21.9904 25.3335ZM12.3654 23.4585V21.021L13.7115 22.5835L15.0577 21.021V23.4585H16.4038V19.2085H15.0577L13.7115 20.771L12.3654 19.2085H11.0192V23.4585H12.3654ZM20.0385 21.3335H21.3846L19.3654 23.521L17.3462 21.3335H18.6923V19.2085H20.0385V21.3335Z"
,
"fill"
:
"white"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"opacity"
:
"0.5"
,
"d"
:
"M18.6665 1.3335L27.9998 10.6668H21.3332C19.8604 10.6668 18.6665 9.47292 18.6665 8.00016V1.3335Z"
,
"fill"
:
"white"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"defs"
,
"attributes"
:
{},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"filter"
,
"attributes"
:
{
"id"
:
"filter0_d_3777_37339"
,
"x"
:
"2"
,
"y"
:
"0.333496"
,
"width"
:
"28"
,
"height"
:
"33.3335"
,
"filterUnits"
:
"userSpaceOnUse"
,
"color-interpolation-filters"
:
"sRGB"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"feFlood"
,
"attributes"
:
{
"flood-opacity"
:
"0"
,
"result"
:
"BackgroundImageFix"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feColorMatrix"
,
"attributes"
:
{
"in"
:
"SourceAlpha"
,
"type"
:
"matrix"
,
"values"
:
"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
,
"result"
:
"hardAlpha"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feOffset"
,
"attributes"
:
{
"dy"
:
"1"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feGaussianBlur"
,
"attributes"
:
{
"stdDeviation"
:
"1"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feColorMatrix"
,
"attributes"
:
{
"type"
:
"matrix"
,
"values"
:
"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feBlend"
,
"attributes"
:
{
"mode"
:
"normal"
,
"in2"
:
"BackgroundImageFix"
,
"result"
:
"effect1_dropShadow_3777_37339"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"feBlend"
,
"attributes"
:
{
"mode"
:
"normal"
,
"in"
:
"SourceGraphic"
,
"in2"
:
"effect1_dropShadow_3777_37339"
,
"result"
:
"shape"
},
"children"
:
[]
}
]
}
]
}
]
},
"name"
:
"Md"
}
\ No newline at end of file
web/app/components/base/icons/src/public/files/Md.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./Md.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/public/files/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
Md
}
from
'./Md'
web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"16"
,
"height"
:
"16"
,
"viewBox"
:
"0 0 16 16"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M5.69773 13.1783C7.29715 13.8879 9.20212 13.8494 10.8334 12.9075C13.5438 11.3427 14.4724 7.87704 12.9076 5.16672L12.7409 4.87804M3.09233 10.8335C1.52752 8.12314 2.45615 4.65746 5.16647 3.09265C6.7978 2.15081 8.70277 2.11227 10.3022 2.82185M1.66226 10.8892L3.48363 11.3773L3.97166 9.5559M12.0284 6.44393L12.5164 4.62256L14.3378 5.1106"
,
"stroke"
:
"currentColor"
,
"stroke-width"
:
"1.5"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
"name"
:
"RefreshCw05"
}
\ No newline at end of file
web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./RefreshCw05.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/vender/line/arrows/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
RefreshCw05
}
from
'./RefreshCw05'
web/app/components/base/icons/src/vender/line/development/Database03.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"16"
,
"height"
:
"16"
,
"viewBox"
:
"0 0 16 16"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M9.33333 13.3333C9.33333 14.0696 8.73638 14.6666 8 14.6666C7.26362 14.6666 6.66667 14.0696 6.66667 13.3333M9.33333 13.3333C9.33333 12.5969 8.73638 11.9999 8 11.9999M9.33333 13.3333H14M6.66667 13.3333C6.66667 12.5969 7.26362 11.9999 8 11.9999M6.66667 13.3333H2M8 11.9999V9.33325M14 3.33325C14 4.43782 11.3137 5.33325 8 5.33325C4.68629 5.33325 2 4.43782 2 3.33325M14 3.33325C14 2.22868 11.3137 1.33325 8 1.33325C4.68629 1.33325 2 2.22868 2 3.33325M14 3.33325V7.33325C14 8.43992 11.3333 9.33325 8 9.33325M2 3.33325V7.33325C2 8.43992 4.66667 9.33325 8 9.33325"
,
"stroke"
:
"currentColor"
,
"stroke-width"
:
"1.25"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
"name"
:
"Database03"
}
\ No newline at end of file
web/app/components/base/icons/src/vender/line/development/Database03.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./Database03.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/vender/line/development/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
Database03
}
from
'./Database03'
web/app/components/base/icons/src/vender/line/files/FilePlus02.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"16"
,
"height"
:
"16"
,
"viewBox"
:
"0 0 16 16"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M13.3333 6.99992V4.53325C13.3333 3.41315 13.3333 2.85309 13.1153 2.42527C12.9236 2.04895 12.6176 1.74299 12.2413 1.55124C11.8135 1.33325 11.2534 1.33325 10.1333 1.33325H5.86666C4.74655 1.33325 4.1865 1.33325 3.75868 1.55124C3.38235 1.74299 3.07639 2.04895 2.88464 2.42527C2.66666 2.85309 2.66666 3.41315 2.66666 4.53325V11.4666C2.66666 12.5867 2.66666 13.1467 2.88464 13.5746C3.07639 13.9509 3.38235 14.2569 3.75868 14.4486C4.1865 14.6666 4.74655 14.6666 5.86666 14.6666H7.99999M9.33332 7.33325H5.33332M6.66666 9.99992H5.33332M10.6667 4.66659H5.33332M12 13.9999V9.99992M9.99999 11.9999H14"
,
"stroke"
:
"currentColor"
,
"stroke-width"
:
"1.5"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
"name"
:
"FilePlus02"
}
\ No newline at end of file
web/app/components/base/icons/src/vender/line/files/FilePlus02.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./FilePlus02.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/vender/line/files/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
FilePlus02
}
from
'./FilePlus02'
web/app/components/base/icons/src/vender/line/general/Trash03.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"16"
,
"height"
:
"16"
,
"viewBox"
:
"0 0 16 16"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M6 2H10M2 4H14M12.6667 4L12.1991 11.0129C12.129 12.065 12.0939 12.5911 11.8667 12.99C11.6666 13.3412 11.3648 13.6235 11.0011 13.7998C10.588 14 10.0607 14 9.00623 14H6.99377C5.93927 14 5.41202 14 4.99889 13.7998C4.63517 13.6235 4.33339 13.3412 4.13332 12.99C3.90607 12.5911 3.871 12.065 3.80086 11.0129L3.33333 4M6.66667 7V10.3333M9.33333 7V10.3333"
,
"stroke"
:
"currentColor"
,
"stroke-width"
:
"1.5"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
"name"
:
"Trash03"
}
\ No newline at end of file
web/app/components/base/icons/src/vender/line/general/Trash03.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./Trash03.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/vender/line/general/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
Trash03
}
from
'./Trash03'
web/app/components/base/icons/src/vender/solid/development/Database03.json
0 → 100644
View file @
17d19612
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"16"
,
"height"
:
"16"
,
"viewBox"
:
"0 0 16 16"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M8.66659 9.98845C10.1231 9.93732 11.4455 9.71981 12.461 9.38077C13.0418 9.18687 13.5593 8.94109 13.9452 8.6353C14.3245 8.33478 14.6666 7.89967 14.6666 7.33341V3.33341C14.6666 2.76545 14.3207 2.33047 13.9411 2.03132C13.5539 1.72624 13.0351 1.48065 12.4534 1.28675C11.283 0.896612 9.70849 0.666748 7.99992 0.666748C6.29135 0.666748 4.71686 0.896612 3.54646 1.28675C2.96474 1.48065 2.44589 1.72624 2.05878 2.03132C1.67918 2.33047 1.33325 2.76545 1.33325 3.33341V7.33341C1.33325 7.89967 1.67538 8.33478 2.05463 8.6353C2.44053 8.94109 2.958 9.18687 3.53881 9.38077C4.55435 9.71981 5.87675 9.93732 7.33325 9.98845V11.4472C6.76498 11.6481 6.31458 12.0985 6.11372 12.6667H1.99992C1.63173 12.6667 1.33325 12.9652 1.33325 13.3334C1.33325 13.7016 1.63173 14.0001 1.99992 14.0001H6.11372C6.38828 14.7769 7.12911 15.3334 7.99992 15.3334C8.87073 15.3334 9.61156 14.7769 9.88612 14.0001H13.9999C14.3681 14.0001 14.6666 13.7016 14.6666 13.3334C14.6666 12.9652 14.3681 12.6667 13.9999 12.6667H9.88612C9.68526 12.0985 9.23486 11.6481 8.66659 11.4472V9.98845ZM2.66659 3.33337C2.66659 3.33337 2.66657 3.32994 2.66862 3.32322C2.67089 3.31579 2.67647 3.30111 2.68997 3.27913C2.71827 3.23303 2.77597 3.16373 2.88408 3.07853C3.1042 2.90506 3.46403 2.71968 3.9681 2.55166C4.96927 2.21793 6.39478 2.00008 7.99992 2.00008C9.60506 2.00008 11.0306 2.21793 12.0317 2.55166C12.5358 2.71968 12.8956 2.90506 13.1158 3.07853C13.2239 3.16373 13.2816 3.23303 13.3099 3.27913C13.3234 3.30111 13.329 3.31579 13.3312 3.32322C13.3333 3.32994 13.3333 3.33337 13.3333 3.33337C13.3333 3.33337 13.3332 3.33722 13.3312 3.34361C13.329 3.35104 13.3234 3.36572 13.3099 3.3877C13.2816 3.4338 13.2239 3.5031 13.1158 3.5883C12.8956 3.76177 12.5358 3.94715 12.0317 4.11517C11.0306 4.4489 9.60506 4.66675 7.99992 4.66675C6.39478 4.66675 4.96927 4.4489 3.9681 4.11517C3.46403 3.94715 3.1042 3.76177 2.88408 3.5883C2.77597 3.5031 2.71827 3.4338 2.68997 3.3877C2.67647 3.36572 2.67089 3.35104 2.66862 3.34361C2.6667 3.33731 2.66659 3.33337 2.66659 3.33337Z"
,
"fill"
:
"currentColor"
},
"children"
:
[]
}
]
},
"name"
:
"Database03"
}
\ No newline at end of file
web/app/components/base/icons/src/vender/solid/development/Database03.tsx
0 → 100644
View file @
17d19612
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./Database03.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/vender/solid/development/index.ts
0 → 100644
View file @
17d19612
export
{
default
as
Database03
}
from
'./Database03'
web/app/components/base/icons/utils.ts
0 → 100644
View file @
17d19612
import
React
from
'react'
export
type
AbstractNode
=
{
name
:
string
attributes
:
{
[
key
:
string
]:
string
}
children
?:
AbstractNode
[]
}
export
type
Attrs
=
{
[
key
:
string
]:
string
}
export
function
normalizeAttrs
(
attrs
:
Attrs
=
{}):
Attrs
{
return
Object
.
keys
(
attrs
).
reduce
((
acc
:
Attrs
,
key
)
=>
{
const
val
=
attrs
[
key
]
switch
(
key
)
{
case
'class'
:
acc
.
className
=
val
delete
acc
.
class
break
default
:
acc
[
key
]
=
val
}
return
acc
},
{})
}
export
function
generate
(
node
:
AbstractNode
,
key
:
string
,
rootProps
?:
{
[
key
:
string
]:
any
}
|
false
,
):
any
{
if
(
!
rootProps
)
{
return
React
.
createElement
(
node
.
name
,
{
key
,
...
normalizeAttrs
(
node
.
attributes
)
},
(
node
.
children
||
[]).
map
((
child
,
index
)
=>
generate
(
child
,
`
${
key
}
-
${
node
.
name
}
-
${
index
}
`
)),
)
}
return
React
.
createElement
(
node
.
name
,
{
key
,
...
normalizeAttrs
(
node
.
attributes
),
...
rootProps
,
},
(
node
.
children
||
[]).
map
((
child
,
index
)
=>
generate
(
child
,
`
${
key
}
-
${
node
.
name
}
-
${
index
}
`
)),
)
}
web/app/components/header/account-setting/data-source-page/data-source-notion/operate/index.module.css
deleted
100644 → 0
View file @
addf150a
.file-icon
{
background
:
url(../../../../assets/file.svg)
center
center
no-repeat
;
background-size
:
contain
;
}
.sync-icon
{
background
:
url(../../../../assets/sync.svg)
center
center
no-repeat
;
background-size
:
contain
;
}
.trash-icon
{
background
:
url(../../../../assets/trash.svg)
center
center
no-repeat
;
background-size
:
contain
;
}
\ No newline at end of file
web/app/components/header/account-setting/data-source-page/data-source-notion/operate/index.tsx
View file @
17d19612
...
@@ -5,12 +5,13 @@ import Link from 'next/link'
...
@@ -5,12 +5,13 @@ import Link from 'next/link'
import
{
useSWRConfig
}
from
'swr'
import
{
useSWRConfig
}
from
'swr'
import
{
EllipsisHorizontalIcon
}
from
'@heroicons/react/24/solid'
import
{
EllipsisHorizontalIcon
}
from
'@heroicons/react/24/solid'
import
{
Menu
,
Transition
}
from
'@headlessui/react'
import
{
Menu
,
Transition
}
from
'@headlessui/react'
import
cn
from
'classnames'
import
s
from
'./index.module.css'
import
{
apiPrefix
}
from
'@/config'
import
{
apiPrefix
}
from
'@/config'
import
{
syncDataSourceNotion
,
updateDataSourceNotionAction
}
from
'@/service/common'
import
{
syncDataSourceNotion
,
updateDataSourceNotionAction
}
from
'@/service/common'
import
Toast
from
'@/app/components/base/toast'
import
Toast
from
'@/app/components/base/toast'
import
type
{
DataSourceNotion
}
from
'@/models/common'
import
type
{
DataSourceNotion
}
from
'@/models/common'
import
{
FilePlus02
}
from
'@/app/components/base/icons/src/vender/line/files'
import
{
RefreshCw05
}
from
'@/app/components/base/icons/src/vender/line/arrows'
import
{
Trash03
}
from
'@/app/components/base/icons/src/vender/line/general'
type
OperateProps
=
{
type
OperateProps
=
{
workspace
:
DataSourceNotion
workspace
:
DataSourceNotion
...
@@ -23,7 +24,7 @@ export default function Operate({
...
@@ -23,7 +24,7 @@ export default function Operate({
cursor-pointer
cursor-pointer
`
`
const
itemIconClassName
=
`
const
itemIconClassName
=
`
mr-2 mt-[2px] w-4 h-4
mr-2 mt-[2px] w-4 h-4
text-gray-500
`
`
const
{
t
}
=
useTranslation
()
const
{
t
}
=
useTranslation
()
const
{
mutate
}
=
useSWRConfig
()
const
{
mutate
}
=
useSWRConfig
()
...
@@ -73,7 +74,7 @@ export default function Operate({
...
@@ -73,7 +74,7 @@ export default function Operate({
<
Link
<
Link
className=
{
itemClassName
}
className=
{
itemClassName
}
href=
{
`${apiPrefix}/oauth/data-source/notion`
}
>
href=
{
`${apiPrefix}/oauth/data-source/notion`
}
>
<
div
className=
{
cn
(
s
[
'file-icon'
],
itemIconClassName
)
}
></
div
>
<
FilePlus02
className=
{
itemIconClassName
}
/
>
<
div
>
<
div
>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.changeAuthorizedPages'
)
}
</
div
>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.changeAuthorizedPages'
)
}
</
div
>
<
div
className=
'leading-5 text-xs text-gray-500'
>
<
div
className=
'leading-5 text-xs text-gray-500'
>
...
@@ -84,7 +85,7 @@ export default function Operate({
...
@@ -84,7 +85,7 @@ export default function Operate({
</
Menu
.
Item
>
</
Menu
.
Item
>
<
Menu
.
Item
>
<
Menu
.
Item
>
<
div
className=
{
itemClassName
}
onClick=
{
handleSync
}
>
<
div
className=
{
itemClassName
}
onClick=
{
handleSync
}
>
<
div
className=
{
cn
(
s
[
'sync-icon'
],
itemIconClassName
)
}
/>
<
RefreshCw05
className=
{
itemIconClassName
}
/>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.sync'
)
}
</
div
>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.sync'
)
}
</
div
>
</
div
>
</
div
>
</
Menu
.
Item
>
</
Menu
.
Item
>
...
@@ -92,7 +93,7 @@ export default function Operate({
...
@@ -92,7 +93,7 @@ export default function Operate({
<
Menu
.
Item
>
<
Menu
.
Item
>
<
div
className=
'p-1'
>
<
div
className=
'p-1'
>
<
div
className=
{
itemClassName
}
onClick=
{
handleRemove
}
>
<
div
className=
{
itemClassName
}
onClick=
{
handleRemove
}
>
<
div
className=
{
cn
(
s
[
'trash-icon'
],
itemIconClassName
)
}
/>
<
Trash03
className=
{
itemIconClassName
}
/>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.remove'
)
}
</
div
>
<
div
className=
'leading-5'
>
{
t
(
'common.dataSource.notion.remove'
)
}
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
web/app/components/header/account-setting/index.module.css
View file @
17d19612
...
@@ -2,14 +2,4 @@
...
@@ -2,14 +2,4 @@
max-width
:
720px
!important
;
max-width
:
720px
!important
;
padding
:
0
!important
;
padding
:
0
!important
;
overflow-y
:
auto
;
overflow-y
:
auto
;
}
.data-source-icon
{
background
:
url(../assets/data-source.svg)
center
center
no-repeat
;
background-size
:
cover
;
}
.data-source-solid-icon
{
background
:
url(../assets/data-source-blue.svg)
center
center
no-repeat
;
background-size
:
cover
;
}
}
\ No newline at end of file
web/app/components/header/account-setting/index.tsx
View file @
17d19612
...
@@ -3,7 +3,6 @@ import { useTranslation } from 'react-i18next'
...
@@ -3,7 +3,6 @@ import { useTranslation } from 'react-i18next'
import
{
useState
}
from
'react'
import
{
useState
}
from
'react'
import
{
AtSymbolIcon
,
CubeTransparentIcon
,
GlobeAltIcon
,
UserIcon
,
UsersIcon
,
XMarkIcon
}
from
'@heroicons/react/24/outline'
import
{
AtSymbolIcon
,
CubeTransparentIcon
,
GlobeAltIcon
,
UserIcon
,
UsersIcon
,
XMarkIcon
}
from
'@heroicons/react/24/outline'
import
{
GlobeAltIcon
as
GlobalAltIconSolid
,
UserIcon
as
UserIconSolid
,
UsersIcon
as
UsersIconSolid
}
from
'@heroicons/react/24/solid'
import
{
GlobeAltIcon
as
GlobalAltIconSolid
,
UserIcon
as
UserIconSolid
,
UsersIcon
as
UsersIconSolid
}
from
'@heroicons/react/24/solid'
import
cn
from
'classnames'
import
AccountPage
from
'./account-page'
import
AccountPage
from
'./account-page'
import
MembersPage
from
'./members-page'
import
MembersPage
from
'./members-page'
import
IntegrationsPage
from
'./Integrations-page'
import
IntegrationsPage
from
'./Integrations-page'
...
@@ -12,21 +11,13 @@ import ProviderPage from './provider-page'
...
@@ -12,21 +11,13 @@ import ProviderPage from './provider-page'
import
DataSourcePage
from
'./data-source-page'
import
DataSourcePage
from
'./data-source-page'
import
s
from
'./index.module.css'
import
s
from
'./index.module.css'
import
Modal
from
'@/app/components/base/modal'
import
Modal
from
'@/app/components/base/modal'
import
{
Database03
}
from
'@/app/components/base/icons/src/vender/line/development'
import
{
Database03
as
Database03Solid
}
from
'@/app/components/base/icons/src/vender/solid/development'
const
iconClassName
=
`
const
iconClassName
=
`
w-4 h-4 ml-3 mr-2
w-4 h-4 ml-3 mr-2
`
`
type
IconProps
=
{
className
?:
string
}
const
DataSourceIcon
=
({
className
}:
IconProps
)
=>
(
<
div
className=
{
cn
(
s
[
'data-source-icon'
],
className
)
}
/>
)
const
DataSourceSolidIcon
=
({
className
}:
IconProps
)
=>
(
<
div
className=
{
cn
(
s
[
'data-source-solid-icon'
],
className
)
}
/>
)
type
IAccountSettingProps
=
{
type
IAccountSettingProps
=
{
onCancel
:
()
=>
void
onCancel
:
()
=>
void
activeTab
?:
string
activeTab
?:
string
...
@@ -81,8 +72,8 @@ export default function AccountSetting({
...
@@ -81,8 +72,8 @@ export default function AccountSetting({
{
{
key
:
'data-source'
,
key
:
'data-source'
,
name
:
t
(
'common.settings.dataSource'
),
name
:
t
(
'common.settings.dataSource'
),
icon
:
<
Data
SourceIcon
className=
{
iconClassName
}
/>,
icon
:
<
Data
base03
className=
{
iconClassName
}
/>,
activeIcon
:
<
Data
SourceSolidIcon
className=
{
iconClassName
}
/>,
activeIcon
:
<
Data
base03Solid
className=
{
iconClassName
}
/>,
},
},
],
],
},
},
...
...
web/package.json
View file @
17d19612
...
@@ -9,7 +9,8 @@
...
@@ -9,7 +9,8 @@
"lint"
:
"next lint"
,
"lint"
:
"next lint"
,
"fix"
:
"next lint --fix"
,
"fix"
:
"next lint --fix"
,
"eslint-fix"
:
"eslint --fix"
,
"eslint-fix"
:
"eslint --fix"
,
"prepare"
:
"cd ../ && husky install ./web/.husky"
"prepare"
:
"cd ../ && husky install ./web/.husky"
,
"gen-icons"
:
"node ./app/components/base/icons/script.js"
},
},
"dependencies"
:
{
"dependencies"
:
{
"@babel/runtime"
:
"^7.22.3"
,
"@babel/runtime"
:
"^7.22.3"
,
...
@@ -83,6 +84,7 @@
...
@@ -83,6 +84,7 @@
"devDependencies"
:
{
"devDependencies"
:
{
"@antfu/eslint-config"
:
"^0.36.0"
,
"@antfu/eslint-config"
:
"^0.36.0"
,
"@faker-js/faker"
:
"^7.6.0"
,
"@faker-js/faker"
:
"^7.6.0"
,
"@rgrove/parse-xml"
:
"^4.1.0"
,
"@types/js-cookie"
:
"^3.0.3"
,
"@types/js-cookie"
:
"^3.0.3"
,
"@types/negotiator"
:
"^0.6.1"
,
"@types/negotiator"
:
"^0.6.1"
,
"@types/qs"
:
"^6.9.7"
,
"@types/qs"
:
"^6.9.7"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment