@brillout/docpress 0.10.4 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Layout.tsx +8 -5
- package/MenuModal/Collapsible.css +9 -5
- package/MenuModal/NavigationWithColumnLayout.css +1 -0
- package/MenuModal/NavigationWithColumnLayout.tsx +13 -6
- package/MenuModal/toggleMenuModal.ts +34 -48
- package/MenuModal.tsx +17 -30
- package/NavItemComponent.css +32 -11
- package/NavItemComponent.tsx +14 -3
- package/components/Link.tsx +5 -5
- package/config/resolveHeadingsData.ts +4 -2
- package/dist/NavItemComponent.d.ts +4 -0
- package/dist/NavItemComponent.js +6 -3
- package/dist/components/Link.js +5 -5
- package/dist/config/resolveHeadingsData.js +4 -2
- package/dist/parseMarkdownMini.d.ts +2 -0
- package/dist/{parseTitle.js → parseMarkdownMini.js} +5 -12
- package/dist/parsePageSections.js +2 -2
- package/dist/types/Heading.d.ts +4 -0
- package/dist/utils/Emoji/Emoji.d.ts +1 -1
- package/dist/utils/Emoji/Emoji.js +2 -6
- package/dist/utils/Emoji/assets.d.ts +1 -2
- package/dist/utils/Emoji/assets.js +1 -2
- package/icons/compass.svg +70 -0
- package/icons/globe.svg +30 -0
- package/icons/index.ts +4 -0
- package/icons/plug.svg +28 -0
- package/icons/scroll.svg +33 -0
- package/index.ts +1 -0
- package/package.json +1 -1
- package/{parseTitle.ts → parseMarkdownMini.ts} +5 -19
- package/parsePageSections.ts +2 -2
- package/types/Heading.ts +3 -1
- package/utils/Emoji/Emoji.ts +3 -7
- package/utils/Emoji/assets.ts +1 -2
- package/dist/parseTitle.d.ts +0 -5
- package/utils/Emoji/compass.svg +0 -1
package/Layout.tsx
CHANGED
|
@@ -9,10 +9,10 @@ export { blockMargin }
|
|
|
9
9
|
|
|
10
10
|
import React from 'react'
|
|
11
11
|
import { getNavItemsWithComputed, NavItem, NavItemComponent } from './NavItemComponent'
|
|
12
|
-
import {
|
|
12
|
+
import { parseMarkdownMini } from './parseMarkdownMini'
|
|
13
13
|
import { usePageContext, usePageContext2 } from './renderer/usePageContext'
|
|
14
14
|
import { NavSecondaryContent } from './NavSecondaryContent'
|
|
15
|
-
import {
|
|
15
|
+
import { coseMenuModalOnMouseLeave, openMenuModal, toggleMenuModal } from './MenuModal/toggleMenuModal'
|
|
16
16
|
import { MenuModal } from './MenuModal'
|
|
17
17
|
import { autoScrollNav_SSR } from './autoScrollNav'
|
|
18
18
|
import { SearchLink } from './docsearch/SearchLink'
|
|
@@ -22,7 +22,7 @@ import { PassThrough } from './utils/PassTrough'
|
|
|
22
22
|
import { Style } from './utils/Style'
|
|
23
23
|
import { cls } from './utils/cls'
|
|
24
24
|
import { iconBooks, iconPencil } from './icons'
|
|
25
|
-
import { getRepoHref
|
|
25
|
+
import { getRepoHref } from './components'
|
|
26
26
|
|
|
27
27
|
const blockMargin = 3
|
|
28
28
|
const mainViewPadding = 20
|
|
@@ -154,7 +154,7 @@ function LayoutLandingPage({ children }: { children: React.ReactNode }) {
|
|
|
154
154
|
function PageContent({ children }: { children: React.ReactNode }) {
|
|
155
155
|
const pageContext = usePageContext()
|
|
156
156
|
const { isLandingPage, pageTitle } = pageContext
|
|
157
|
-
const pageTitleParsed = pageTitle &&
|
|
157
|
+
const pageTitleParsed = pageTitle && parseMarkdownMini(pageTitle)
|
|
158
158
|
const { globalNote } = pageContext.config
|
|
159
159
|
const ifDocPage = (style: React.CSSProperties) => (isLandingPage ? {} : style)
|
|
160
160
|
return (
|
|
@@ -560,7 +560,7 @@ function MenuToggle({ menuId, ...props }: PropsDiv & { menuId: number }) {
|
|
|
560
560
|
}}
|
|
561
561
|
onMouseLeave={() => {
|
|
562
562
|
if (onMouseIgnore) return
|
|
563
|
-
|
|
563
|
+
coseMenuModalOnMouseLeave(menuId)
|
|
564
564
|
}}
|
|
565
565
|
onTouchStart={() => {
|
|
566
566
|
onMouseIgnore = setTimeout(() => {
|
|
@@ -583,6 +583,9 @@ function MenuToggle({ menuId, ...props }: PropsDiv & { menuId: number }) {
|
|
|
583
583
|
.link-hover-animation &:hover::before {
|
|
584
584
|
top: 0;
|
|
585
585
|
}
|
|
586
|
+
html.menu-modal-show & {
|
|
587
|
+
cursor: default !important;
|
|
588
|
+
}
|
|
586
589
|
}
|
|
587
590
|
&::before {
|
|
588
591
|
position: absolute;
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
.collapsible-icon {
|
|
2
2
|
display: none;
|
|
3
3
|
position: absolute;
|
|
4
|
-
|
|
4
|
+
right: -16px;
|
|
5
|
+
top: calc(100% / 2 - 5px);
|
|
5
6
|
margin-left: 9px;
|
|
6
7
|
vertical-align: middle;
|
|
7
8
|
}
|
|
8
9
|
:has(> .collapsible-icon) {
|
|
9
10
|
position: relative;
|
|
11
|
+
overflow: visible;
|
|
10
12
|
}
|
|
11
|
-
.collapsible-expanded
|
|
12
|
-
.collapsible-collapsed
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
.collapsible-expanded,
|
|
14
|
+
.collapsible-collapsed {
|
|
15
|
+
.collapsible-icon {
|
|
16
|
+
transition: transform 0.3s ease-in-out !important;
|
|
17
|
+
display: initial;
|
|
18
|
+
}
|
|
15
19
|
}
|
|
16
20
|
.collapsible-collapsed .collapsible-icon {
|
|
17
21
|
transform: rotate(-90deg);
|
|
@@ -12,7 +12,7 @@ import './NavigationWithColumnLayout.css'
|
|
|
12
12
|
import { Style } from '../utils/Style'
|
|
13
13
|
import { css } from '../utils/css'
|
|
14
14
|
|
|
15
|
-
const marginBottomOnExpand =
|
|
15
|
+
const marginBottomOnExpand = 15
|
|
16
16
|
function NavigationWithColumnLayout(props: { navItems: NavItem[] }) {
|
|
17
17
|
const pageContext = usePageContext()
|
|
18
18
|
const navItemsWithComputed = getNavItemsWithComputed(props.navItems, pageContext.urlPathname)
|
|
@@ -26,7 +26,11 @@ function NavigationWithColumnLayout(props: { navItems: NavItem[] }) {
|
|
|
26
26
|
return (
|
|
27
27
|
<>
|
|
28
28
|
<Style>{getStyle()}</Style>
|
|
29
|
-
<div
|
|
29
|
+
<div
|
|
30
|
+
id="menu-navigation-container"
|
|
31
|
+
className="navigation-content add-transition"
|
|
32
|
+
style={{ transitionProperty: 'height', height: 0 }}
|
|
33
|
+
>
|
|
30
34
|
{navItemsByColumnLayouts.map((columnLayout, i) => (
|
|
31
35
|
<div
|
|
32
36
|
id={`menu-navigation-${i}`}
|
|
@@ -94,6 +98,10 @@ function NavigationWithColumnLayout(props: { navItems: NavItem[] }) {
|
|
|
94
98
|
position: absolute;
|
|
95
99
|
width: 100%;
|
|
96
100
|
}
|
|
101
|
+
#menu-navigation-container {
|
|
102
|
+
position: relative;
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
}
|
|
97
105
|
${navItemsByColumnLayouts
|
|
98
106
|
.map((_, i) => {
|
|
99
107
|
const isFirst = i === 0
|
|
@@ -112,10 +120,11 @@ function NavigationWithColumnLayout(props: { navItems: NavItem[] }) {
|
|
|
112
120
|
${/* Performance optimization. */ ''}
|
|
113
121
|
${/* - Using clip-path transition instead of height transition doesn't make a difference: https://github.com/brillout/docpress/commit/005cba0b4cba9c1b526e8e26901ee04129d79715 */ ''}
|
|
114
122
|
${/* - Suprisingly, this is a performance regression when transitioning from one menu to another (the menu is kept open). Thus we apply this only when the menu is being closed/opened. */ ''}
|
|
115
|
-
html:not(.menu-modal-show-${i}).menu-modal-
|
|
123
|
+
html:not(.menu-modal-show-${i}).menu-modal-display-only-one & {
|
|
116
124
|
display: none;
|
|
117
125
|
}
|
|
118
126
|
}
|
|
127
|
+
${/* Button style */ ''}
|
|
119
128
|
.menu-toggle-${i} {
|
|
120
129
|
html.menu-modal-show.menu-modal-show-${i} & {
|
|
121
130
|
color: black !important;
|
|
@@ -127,9 +136,6 @@ function NavigationWithColumnLayout(props: { navItems: NavItem[] }) {
|
|
|
127
136
|
top: 0;
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
|
-
html.menu-modal-show & {
|
|
131
|
-
cursor: default !important;
|
|
132
|
-
}
|
|
133
139
|
}
|
|
134
140
|
`
|
|
135
141
|
})
|
|
@@ -159,6 +165,7 @@ function ColumnsWrapper({ children, numberOfColumns }: { children: React.ReactNo
|
|
|
159
165
|
style={{
|
|
160
166
|
width: numberOfColumns * (navLeftWidthMax + 20),
|
|
161
167
|
maxWidth: '100%',
|
|
168
|
+
paddingLeft: 3,
|
|
162
169
|
margin: 'auto',
|
|
163
170
|
}}
|
|
164
171
|
>
|
|
@@ -2,10 +2,9 @@ export { toggleMenuModal }
|
|
|
2
2
|
export { openMenuModal }
|
|
3
3
|
export { keepMenuModalOpen }
|
|
4
4
|
export { closeMenuModal }
|
|
5
|
-
export {
|
|
6
|
-
export { addListenerOpenMenuModal }
|
|
5
|
+
export { coseMenuModalOnMouseLeave }
|
|
7
6
|
|
|
8
|
-
import {
|
|
7
|
+
import { containerQueryMobileMenu } from '../Layout'
|
|
9
8
|
import { getHydrationPromise } from '../renderer/getHydrationPromise'
|
|
10
9
|
import { getViewportWidth } from '../utils/getViewportWidth'
|
|
11
10
|
import { isBrowser } from '../utils/isBrowser'
|
|
@@ -19,20 +18,23 @@ function openMenuModal(menuNavigationId: number) {
|
|
|
19
18
|
open(menuNavigationId)
|
|
20
19
|
}
|
|
21
20
|
async function open(menuNavigationId?: number) {
|
|
22
|
-
if (
|
|
21
|
+
if (toggleLock) {
|
|
23
22
|
if (menuNavigationId === undefined) {
|
|
24
|
-
clearTimeout(
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
clearTimeout(toggleLock?.timeoutAction)
|
|
24
|
+
toggleLock = undefined
|
|
25
|
+
} else {
|
|
26
|
+
// Register open() operation to be applied later, after the lock has resolved.
|
|
27
|
+
toggleLock.idToOpen = menuNavigationId
|
|
27
28
|
}
|
|
28
|
-
menuModalLock.idNext = menuNavigationId
|
|
29
29
|
return
|
|
30
30
|
}
|
|
31
31
|
const { classList } = document.documentElement
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
if (classList.contains('menu-modal-display-only-one')) {
|
|
33
|
+
classList.remove('menu-modal-display-only-one')
|
|
34
|
+
} else if (!classList.contains('menu-modal-show')) {
|
|
35
|
+
enableDisplayOnlyOne()
|
|
35
36
|
}
|
|
37
|
+
classList.add('menu-modal-show')
|
|
36
38
|
if (menuNavigationId !== undefined) {
|
|
37
39
|
const currentModalId = getCurrentMenuId()
|
|
38
40
|
if (currentModalId === menuNavigationId) return
|
|
@@ -45,65 +47,49 @@ async function open(menuNavigationId?: number) {
|
|
|
45
47
|
const height = window.getComputedStyle(document.getElementById(`menu-navigation-${menuNavigationId}`)!).height
|
|
46
48
|
document.getElementById('menu-navigation-container')!.style.height = height
|
|
47
49
|
}
|
|
48
|
-
listener?.()
|
|
49
|
-
}
|
|
50
|
-
let listener: () => void | undefined
|
|
51
|
-
function addListenerOpenMenuModal(cb: () => void) {
|
|
52
|
-
listener = cb
|
|
53
50
|
}
|
|
54
51
|
function closeMenuModal() {
|
|
55
52
|
const { classList } = document.documentElement
|
|
56
53
|
if (classList.contains('menu-modal-show')) {
|
|
57
|
-
|
|
58
|
-
// Remove:
|
|
59
|
-
// menu-modal-show-0
|
|
60
|
-
// menu-modal-show-1
|
|
61
|
-
// ...
|
|
62
|
-
classList.forEach((className) => {
|
|
63
|
-
if (className.startsWith('menu-modal-show-')) {
|
|
64
|
-
classList.remove(className)
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
})
|
|
54
|
+
enableDisplayOnlyOne()
|
|
68
55
|
classList.remove('menu-modal-show')
|
|
69
56
|
}
|
|
70
57
|
}
|
|
71
58
|
let timeoutModalAnimation: NodeJS.Timeout | undefined
|
|
72
|
-
function
|
|
59
|
+
function enableDisplayOnlyOne() {
|
|
73
60
|
const { classList } = document.documentElement
|
|
74
|
-
classList.add('menu-modal-
|
|
61
|
+
classList.add('menu-modal-display-only-one')
|
|
75
62
|
clearTimeout(timeoutModalAnimation)
|
|
76
63
|
timeoutModalAnimation = setTimeout(() => {
|
|
77
|
-
classList.remove('menu-modal-
|
|
78
|
-
|
|
79
|
-
}, 450)
|
|
64
|
+
classList.remove('menu-modal-display-only-one')
|
|
65
|
+
}, 430)
|
|
80
66
|
}
|
|
81
67
|
|
|
82
|
-
let
|
|
68
|
+
let toggleLock:
|
|
83
69
|
| {
|
|
84
70
|
idCurrent: number
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
idToOpen: number | undefined
|
|
72
|
+
timeoutAction: NodeJS.Timeout
|
|
87
73
|
}
|
|
88
74
|
| undefined
|
|
89
|
-
function
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
75
|
+
function coseMenuModalOnMouseLeave(menuId: number) {
|
|
76
|
+
clearTimeout(toggleLock?.timeoutAction)
|
|
77
|
+
const timeoutAction = setTimeout(action, 100)
|
|
78
|
+
toggleLock = {
|
|
79
|
+
idCurrent: menuId,
|
|
80
|
+
idToOpen: undefined,
|
|
81
|
+
timeoutAction,
|
|
82
|
+
}
|
|
83
|
+
return
|
|
84
|
+
function action() {
|
|
85
|
+
const { idCurrent, idToOpen: idNext } = toggleLock!
|
|
86
|
+
toggleLock = undefined
|
|
95
87
|
if (idNext === idCurrent) return
|
|
96
88
|
if (idNext === undefined) {
|
|
97
89
|
closeMenuModal()
|
|
98
90
|
} else {
|
|
99
91
|
openMenuModal(idNext)
|
|
100
92
|
}
|
|
101
|
-
}, 100)
|
|
102
|
-
clearTimeout(menuModalLock?.timeout)
|
|
103
|
-
menuModalLock = {
|
|
104
|
-
idCurrent: currentModalId,
|
|
105
|
-
idNext: undefined,
|
|
106
|
-
timeout,
|
|
107
93
|
}
|
|
108
94
|
}
|
|
109
95
|
function getCurrentMenuId(): null | number {
|
|
@@ -125,7 +111,7 @@ function toggleMenuModal(menuId: number) {
|
|
|
125
111
|
closeMenuModal()
|
|
126
112
|
} else {
|
|
127
113
|
openMenuModal(menuId)
|
|
128
|
-
if (getViewportWidth() <
|
|
114
|
+
if (getViewportWidth() < containerQueryMobileMenu) autoScroll()
|
|
129
115
|
}
|
|
130
116
|
}
|
|
131
117
|
|
package/MenuModal.tsx
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
export { MenuModal }
|
|
2
2
|
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react'
|
|
4
4
|
import { usePageContext } from './renderer/usePageContext'
|
|
5
5
|
import { css } from './utils/css'
|
|
6
|
-
import {
|
|
6
|
+
import { containerQueryMobileLayout, containerQueryMobileMenu } from './Layout'
|
|
7
7
|
import { NavSecondaryContent } from './NavSecondaryContent'
|
|
8
8
|
import { Style } from './utils/Style'
|
|
9
9
|
import { NavigationWithColumnLayout } from './MenuModal/NavigationWithColumnLayout'
|
|
10
|
-
import {
|
|
10
|
+
import { closeMenuModal, keepMenuModalOpen } from './MenuModal/toggleMenuModal'
|
|
11
11
|
|
|
12
12
|
function MenuModal({ isTopNav }: { isTopNav: boolean }) {
|
|
13
|
-
// `transition: height` doesn't work on `height: auto` => we have to manually set and change `height` to a fixed size.
|
|
14
|
-
const [height, setHeight] = useState(0)
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
addListenerOpenMenuModal(() => {
|
|
17
|
-
const { scrollHeight } = document.getElementById('menu-modal-scroll-container')!
|
|
18
|
-
const heightNew = scrollHeight + blockMargin
|
|
19
|
-
if (height !== heightNew) setHeight(heightNew)
|
|
20
|
-
})
|
|
21
|
-
})
|
|
22
13
|
return (
|
|
23
14
|
<>
|
|
24
15
|
<Style>{getStyle()}</Style>
|
|
@@ -32,10 +23,8 @@ function MenuModal({ isTopNav }: { isTopNav: boolean }) {
|
|
|
32
23
|
left: 0,
|
|
33
24
|
zIndex: 199, // maximum value, because docsearch's modal has `z-index: 200`
|
|
34
25
|
background: '#ededef',
|
|
35
|
-
transitionProperty: '
|
|
26
|
+
transitionProperty: 'opacity',
|
|
36
27
|
transitionTimingFunction: 'ease',
|
|
37
|
-
height,
|
|
38
|
-
overflow: 'hidden',
|
|
39
28
|
}}
|
|
40
29
|
onMouseOver={() => keepMenuModalOpen()}
|
|
41
30
|
onMouseLeave={closeMenuModal}
|
|
@@ -43,9 +32,8 @@ function MenuModal({ isTopNav }: { isTopNav: boolean }) {
|
|
|
43
32
|
<div
|
|
44
33
|
id="menu-modal-scroll-container"
|
|
45
34
|
style={{
|
|
46
|
-
overflowY: 'scroll',
|
|
47
|
-
// Workaround for bug with Firefox 128.1.0
|
|
48
35
|
overflowX: 'hidden',
|
|
36
|
+
overflowY: 'scroll',
|
|
49
37
|
// We don't set `container` to the parent #menu-modal-wrapper beacuse of a Chrome bug (showing a blank <MenuModal>). Edit: IIRC because #menu-modal-wrapper has `position: fixed`.
|
|
50
38
|
container: 'container-viewport / inline-size',
|
|
51
39
|
}}
|
|
@@ -53,8 +41,8 @@ function MenuModal({ isTopNav }: { isTopNav: boolean }) {
|
|
|
53
41
|
<Nav />
|
|
54
42
|
<NavSecondary className="show-only-for-mobile" />
|
|
55
43
|
</div>
|
|
56
|
-
<BorderBottom />
|
|
57
44
|
<CloseButton className="show-only-for-mobile" />
|
|
45
|
+
<BorderBottom />
|
|
58
46
|
</div>
|
|
59
47
|
</>
|
|
60
48
|
)
|
|
@@ -64,11 +52,9 @@ function BorderBottom() {
|
|
|
64
52
|
<div
|
|
65
53
|
id="border-bottom"
|
|
66
54
|
style={{
|
|
67
|
-
position: 'absolute',
|
|
68
55
|
background: '#fff',
|
|
69
56
|
height: 'var(--block-margin)',
|
|
70
57
|
width: '100%',
|
|
71
|
-
bottom: 0,
|
|
72
58
|
}}
|
|
73
59
|
/>
|
|
74
60
|
)
|
|
@@ -96,20 +82,20 @@ function NavSecondary({ className }: { className: string }) {
|
|
|
96
82
|
function getStyle() {
|
|
97
83
|
return css`
|
|
98
84
|
@media(min-width: ${containerQueryMobileMenu + 1}px) {
|
|
99
|
-
#menu-modal-scroll-container,
|
|
100
|
-
#menu-modal-wrapper {
|
|
101
|
-
max-height: calc(100vh - var(--nav-head-height));
|
|
102
|
-
}
|
|
103
85
|
#menu-modal-scroll-container {
|
|
86
|
+
max-height: calc(100vh - var(--nav-head-height) - var(--block-margin));
|
|
104
87
|
${/* https://github.com/brillout/docpress/issues/23 */ ''}
|
|
105
88
|
${/* https://stackoverflow.com/questions/64514118/css-overscroll-behavior-contain-when-target-element-doesnt-overflow */ ''}
|
|
106
89
|
${/* https://stackoverflow.com/questions/9538868/prevent-body-from-scrolling-when-a-modal-is-opened */ ''}
|
|
107
90
|
overscroll-behavior: none;
|
|
108
91
|
}
|
|
109
|
-
html:not(.menu-modal-show)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
92
|
+
html:not(.menu-modal-show) {
|
|
93
|
+
#menu-navigation-container {
|
|
94
|
+
height: 0 !important;
|
|
95
|
+
}
|
|
96
|
+
#menu-modal-wrapper {
|
|
97
|
+
pointer-events: none;
|
|
98
|
+
}
|
|
113
99
|
}
|
|
114
100
|
.show-only-for-mobile {
|
|
115
101
|
display: none !important;
|
|
@@ -142,11 +128,12 @@ function getStyle() {
|
|
|
142
128
|
#menu-modal-wrapper {
|
|
143
129
|
--nav-head-height: 0px !important;
|
|
144
130
|
}
|
|
145
|
-
#menu-modal-wrapper,
|
|
146
131
|
#menu-navigation-container {
|
|
147
|
-
height: auto!important;
|
|
132
|
+
height: auto !important;
|
|
148
133
|
}
|
|
149
134
|
}
|
|
135
|
+
|
|
136
|
+
${/* Hide same-page headings navigation */ ''}
|
|
150
137
|
@container container-viewport (min-width: ${containerQueryMobileLayout}px) {
|
|
151
138
|
#menu-modal-wrapper .nav-item-level-3 {
|
|
152
139
|
display: none;
|
package/NavItemComponent.css
CHANGED
|
@@ -19,24 +19,45 @@
|
|
|
19
19
|
letter-spacing: 0.15ch;
|
|
20
20
|
padding-left: var(--padding-left-global);
|
|
21
21
|
padding-right: 4px;
|
|
22
|
-
|
|
23
|
-
.nav-item-level-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
&:first-child,
|
|
23
|
+
.nav-item-level-1 + & {
|
|
24
|
+
padding-top: 5px;
|
|
25
|
+
}
|
|
26
26
|
}
|
|
27
27
|
.nav-item-level-1 {
|
|
28
|
+
display: inline-flex;
|
|
28
29
|
font-size: 19px;
|
|
29
30
|
text-transform: uppercase;
|
|
30
31
|
font-weight: 600;
|
|
31
32
|
letter-spacing: 0.14ch;
|
|
32
33
|
color: var(--color-text);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
#menu-modal-wrapper & {
|
|
35
|
+
margin-top: 10px;
|
|
36
|
+
padding-left: 9px;
|
|
37
|
+
padding-top: 6px;
|
|
38
|
+
padding-bottom: 6px;
|
|
39
|
+
border-left: 3px solid var(--category-color);
|
|
40
|
+
.collapsible-expanded &,
|
|
41
|
+
.collapsible-collapsed & {
|
|
42
|
+
text-decoration: underline;
|
|
43
|
+
text-decoration-color: var(--category-color);
|
|
44
|
+
text-decoration-thickness: 3px;
|
|
45
|
+
text-underline-offset: .3em;
|
|
46
|
+
border: 0;
|
|
47
|
+
margin: 0;
|
|
48
|
+
padding: 10px;
|
|
49
|
+
padding-left: 14px;
|
|
50
|
+
img {
|
|
51
|
+
display: none;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
#nav-left & {
|
|
56
|
+
border-bottom: 3px solid var(--category-color);
|
|
57
|
+
padding-bottom: 2px;
|
|
58
|
+
margin-top: 3px;
|
|
59
|
+
margin-bottom: 10px;
|
|
60
|
+
}
|
|
40
61
|
}
|
|
41
62
|
.nav-item-level-2 {
|
|
42
63
|
font-size: 14.4px;
|
package/NavItemComponent.tsx
CHANGED
|
@@ -7,7 +7,7 @@ export type { ColumnMap }
|
|
|
7
7
|
import React from 'react'
|
|
8
8
|
import { assert, assertWarning, jsxToTextContent } from './utils/server'
|
|
9
9
|
import './NavItemComponent.css'
|
|
10
|
-
import {
|
|
10
|
+
import { parseMarkdownMini } from './parseMarkdownMini'
|
|
11
11
|
import './global.d.ts'
|
|
12
12
|
|
|
13
13
|
type NavItemComputed = ReturnType<typeof getNavItemsWithComputed>[number]
|
|
@@ -15,6 +15,8 @@ type NavItem = {
|
|
|
15
15
|
level: number
|
|
16
16
|
url?: string | null
|
|
17
17
|
color?: string
|
|
18
|
+
titleIcon?: string
|
|
19
|
+
titleIconStyle?: React.CSSProperties
|
|
18
20
|
title: string
|
|
19
21
|
titleInNav: string
|
|
20
22
|
menuModalFullWidth?: true
|
|
@@ -34,8 +36,16 @@ function NavItemComponent({
|
|
|
34
36
|
}) {
|
|
35
37
|
assert([1, 2, 3, 4].includes(navItem.level), navItem)
|
|
36
38
|
|
|
37
|
-
const titleJsx =
|
|
38
|
-
const titleInNavJsx =
|
|
39
|
+
const titleJsx = parseMarkdownMini(navItem.title)
|
|
40
|
+
const titleInNavJsx = parseMarkdownMini(navItem.titleInNav)
|
|
41
|
+
|
|
42
|
+
const iconSize = 25
|
|
43
|
+
const icon = navItem.titleIcon && (
|
|
44
|
+
<img
|
|
45
|
+
src={navItem.titleIcon}
|
|
46
|
+
style={{ height: iconSize, width: iconSize, marginRight: 8, ...navItem.titleIconStyle }}
|
|
47
|
+
/>
|
|
48
|
+
)
|
|
39
49
|
|
|
40
50
|
if (navItem.level === 1 || navItem.level === 4) {
|
|
41
51
|
assert(navItem.url === undefined)
|
|
@@ -57,6 +67,7 @@ function NavItemComponent({
|
|
|
57
67
|
if (navItem.level === 1) {
|
|
58
68
|
children = (
|
|
59
69
|
<>
|
|
70
|
+
{icon}
|
|
60
71
|
{children}
|
|
61
72
|
<Chevron className="collapsible-icon" height={9} />
|
|
62
73
|
</>
|
package/components/Link.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import { isRepoLink, RepoLink } from './RepoLink'
|
|
|
6
6
|
import type { PageContextResolved } from '../config/resolvePageContext'
|
|
7
7
|
import { usePageContext } from '../renderer/usePageContext'
|
|
8
8
|
import { assert, assertUsage, determineSectionTitle, determineSectionUrlHash } from '../utils/server'
|
|
9
|
-
import {
|
|
9
|
+
import { parseMarkdownMini } from '../parseMarkdownMini'
|
|
10
10
|
import pc from '@brillout/picocolors'
|
|
11
11
|
|
|
12
12
|
function Link({
|
|
@@ -57,20 +57,20 @@ function getLinkText({
|
|
|
57
57
|
|
|
58
58
|
const breadcrumbParts: JSX.Element[] = []
|
|
59
59
|
if (linkData.linkBreadcrumb) {
|
|
60
|
-
breadcrumbParts.push(...(linkData.linkBreadcrumb ?? []).slice().reverse().map(
|
|
60
|
+
breadcrumbParts.push(...(linkData.linkBreadcrumb ?? []).slice().reverse().map(parseMarkdownMini))
|
|
61
61
|
}
|
|
62
|
-
breadcrumbParts.push(
|
|
62
|
+
breadcrumbParts.push(parseMarkdownMini(linkData.title))
|
|
63
63
|
|
|
64
64
|
if (hrefHash) {
|
|
65
65
|
let sectionTitle: JSX.Element | undefined = undefined
|
|
66
66
|
assert(!hrefHash.startsWith('#'))
|
|
67
67
|
if (isLinkOnSamePage) {
|
|
68
68
|
const linkDataPageSection = findLinkData(`#${hrefHash}`, pageContext)
|
|
69
|
-
sectionTitle =
|
|
69
|
+
sectionTitle = parseMarkdownMini(linkDataPageSection.title)
|
|
70
70
|
} else if ('sectionTitles' in linkData && linkData.sectionTitles) {
|
|
71
71
|
linkData.sectionTitles.forEach((title) => {
|
|
72
72
|
if (determineSectionUrlHash(title) === hrefHash) {
|
|
73
|
-
sectionTitle =
|
|
73
|
+
sectionTitle = parseMarkdownMini(title)
|
|
74
74
|
}
|
|
75
75
|
})
|
|
76
76
|
}
|
|
@@ -13,7 +13,7 @@ import type { NavItem } from '../NavItemComponent'
|
|
|
13
13
|
import type { LinkData } from '../components'
|
|
14
14
|
import type { Exports, PageContextOriginal } from './resolvePageContext'
|
|
15
15
|
import pc from '@brillout/picocolors'
|
|
16
|
-
import {
|
|
16
|
+
import { parseMarkdownMini } from '../parseMarkdownMini'
|
|
17
17
|
import { determineNavItemsColumnLayout } from '../renderer/determineNavItemsColumnLayout'
|
|
18
18
|
assert(!isBrowser())
|
|
19
19
|
|
|
@@ -93,6 +93,8 @@ function headingToNavItem(heading: HeadingResolved | HeadingDetachedResolved): N
|
|
|
93
93
|
titleInNav: heading.titleInNav,
|
|
94
94
|
menuModalFullWidth: heading.menuModalFullWidth,
|
|
95
95
|
color: heading.color,
|
|
96
|
+
titleIcon: heading.titleIcon,
|
|
97
|
+
titleIconStyle: heading.titleIconStyle,
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
function headingToLinkData(heading: HeadingResolved | HeadingDetachedResolved): LinkData {
|
|
@@ -129,7 +131,7 @@ function getTitles(
|
|
|
129
131
|
|
|
130
132
|
const { title } = activeHeading
|
|
131
133
|
let pageTitle = isLandingPage ? null : title
|
|
132
|
-
let documentTitle = activeHeading.titleDocument || jsxToTextContent(
|
|
134
|
+
let documentTitle = activeHeading.titleDocument || jsxToTextContent(parseMarkdownMini(title))
|
|
133
135
|
|
|
134
136
|
if (!isLandingPage) {
|
|
135
137
|
documentTitle += ' | ' + config.projectInfo.projectName
|
|
@@ -11,6 +11,8 @@ type NavItem = {
|
|
|
11
11
|
level: number;
|
|
12
12
|
url?: string | null;
|
|
13
13
|
color?: string;
|
|
14
|
+
titleIcon?: string;
|
|
15
|
+
titleIconStyle?: React.CSSProperties;
|
|
14
16
|
title: string;
|
|
15
17
|
titleInNav: string;
|
|
16
18
|
menuModalFullWidth?: true;
|
|
@@ -32,6 +34,8 @@ declare function getNavItemsWithComputed(navItems: NavItem[], currentUrl: string
|
|
|
32
34
|
level: number;
|
|
33
35
|
url?: string | null;
|
|
34
36
|
color?: string;
|
|
37
|
+
titleIcon?: string;
|
|
38
|
+
titleIconStyle?: React.CSSProperties;
|
|
35
39
|
title: string;
|
|
36
40
|
titleInNav: string;
|
|
37
41
|
menuModalFullWidth?: true;
|
package/dist/NavItemComponent.js
CHANGED
|
@@ -14,15 +14,17 @@ export { getNavItemsWithComputed };
|
|
|
14
14
|
import React from 'react';
|
|
15
15
|
import { assert, assertWarning, jsxToTextContent } from './utils/server';
|
|
16
16
|
import './NavItemComponent.css';
|
|
17
|
-
import {
|
|
17
|
+
import { parseMarkdownMini } from './parseMarkdownMini';
|
|
18
18
|
import './global.d.ts';
|
|
19
19
|
function NavItemComponent(_a) {
|
|
20
20
|
var _b;
|
|
21
21
|
var _c;
|
|
22
22
|
var navItem = _a.navItem, onClick = _a.onClick;
|
|
23
23
|
assert([1, 2, 3, 4].includes(navItem.level), navItem);
|
|
24
|
-
var titleJsx =
|
|
25
|
-
var titleInNavJsx =
|
|
24
|
+
var titleJsx = parseMarkdownMini(navItem.title);
|
|
25
|
+
var titleInNavJsx = parseMarkdownMini(navItem.titleInNav);
|
|
26
|
+
var iconSize = 25;
|
|
27
|
+
var icon = navItem.titleIcon && (React.createElement("img", { src: navItem.titleIcon, style: __assign({ height: iconSize, width: iconSize, marginRight: 8 }, navItem.titleIconStyle) }));
|
|
26
28
|
if (navItem.level === 1 || navItem.level === 4) {
|
|
27
29
|
assert(navItem.url === undefined);
|
|
28
30
|
}
|
|
@@ -39,6 +41,7 @@ function NavItemComponent(_a) {
|
|
|
39
41
|
var children = titleInNavJsx;
|
|
40
42
|
if (navItem.level === 1) {
|
|
41
43
|
children = (React.createElement(React.Fragment, null,
|
|
44
|
+
icon,
|
|
42
45
|
children,
|
|
43
46
|
React.createElement(Chevron, { className: "collapsible-icon", height: 9 })));
|
|
44
47
|
}
|
package/dist/components/Link.js
CHANGED
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import { isRepoLink, RepoLink } from './RepoLink';
|
|
4
4
|
import { usePageContext } from '../renderer/usePageContext';
|
|
5
5
|
import { assert, assertUsage, determineSectionTitle, determineSectionUrlHash } from '../utils/server';
|
|
6
|
-
import {
|
|
6
|
+
import { parseMarkdownMini } from '../parseMarkdownMini';
|
|
7
7
|
import pc from '@brillout/picocolors';
|
|
8
8
|
function Link(_a) {
|
|
9
9
|
var href = _a.href, text = _a.text, noBreadcrumb = _a.noBreadcrumb, doNotInferSectionTitle = _a.doNotInferSectionTitle, children = _a.children;
|
|
@@ -27,20 +27,20 @@ function getLinkText(_a) {
|
|
|
27
27
|
assert(isLinkOnSamePage);
|
|
28
28
|
var breadcrumbParts = [];
|
|
29
29
|
if (linkData.linkBreadcrumb) {
|
|
30
|
-
breadcrumbParts.push.apply(breadcrumbParts, ((_b = linkData.linkBreadcrumb) !== null && _b !== void 0 ? _b : []).slice().reverse().map(
|
|
30
|
+
breadcrumbParts.push.apply(breadcrumbParts, ((_b = linkData.linkBreadcrumb) !== null && _b !== void 0 ? _b : []).slice().reverse().map(parseMarkdownMini));
|
|
31
31
|
}
|
|
32
|
-
breadcrumbParts.push(
|
|
32
|
+
breadcrumbParts.push(parseMarkdownMini(linkData.title));
|
|
33
33
|
if (hrefHash) {
|
|
34
34
|
var sectionTitle_1 = undefined;
|
|
35
35
|
assert(!hrefHash.startsWith('#'));
|
|
36
36
|
if (isLinkOnSamePage) {
|
|
37
37
|
var linkDataPageSection = findLinkData("#".concat(hrefHash), pageContext);
|
|
38
|
-
sectionTitle_1 =
|
|
38
|
+
sectionTitle_1 = parseMarkdownMini(linkDataPageSection.title);
|
|
39
39
|
}
|
|
40
40
|
else if ('sectionTitles' in linkData && linkData.sectionTitles) {
|
|
41
41
|
linkData.sectionTitles.forEach(function (title) {
|
|
42
42
|
if (determineSectionUrlHash(title) === hrefHash) {
|
|
43
|
-
sectionTitle_1 =
|
|
43
|
+
sectionTitle_1 = parseMarkdownMini(title);
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
}
|
|
@@ -22,7 +22,7 @@ export { resolveHeadingsData };
|
|
|
22
22
|
import { assert, isBrowser, jsxToTextContent } from '../utils/server';
|
|
23
23
|
import { getConfig } from './getConfig';
|
|
24
24
|
import pc from '@brillout/picocolors';
|
|
25
|
-
import {
|
|
25
|
+
import { parseMarkdownMini } from '../parseMarkdownMini';
|
|
26
26
|
import { determineNavItemsColumnLayout } from '../renderer/determineNavItemsColumnLayout';
|
|
27
27
|
assert(!isBrowser());
|
|
28
28
|
function resolveHeadingsData(pageContext) {
|
|
@@ -77,6 +77,8 @@ function headingToNavItem(heading) {
|
|
|
77
77
|
titleInNav: heading.titleInNav,
|
|
78
78
|
menuModalFullWidth: heading.menuModalFullWidth,
|
|
79
79
|
color: heading.color,
|
|
80
|
+
titleIcon: heading.titleIcon,
|
|
81
|
+
titleIconStyle: heading.titleIconStyle,
|
|
80
82
|
};
|
|
81
83
|
}
|
|
82
84
|
function headingToLinkData(heading) {
|
|
@@ -107,7 +109,7 @@ function getTitles(activeHeading, pageContext, config) {
|
|
|
107
109
|
var isLandingPage = url === '/';
|
|
108
110
|
var title = activeHeading.title;
|
|
109
111
|
var pageTitle = isLandingPage ? null : title;
|
|
110
|
-
var documentTitle = activeHeading.titleDocument || jsxToTextContent(
|
|
112
|
+
var documentTitle = activeHeading.titleDocument || jsxToTextContent(parseMarkdownMini(title));
|
|
111
113
|
if (!isLandingPage) {
|
|
112
114
|
documentTitle += ' | ' + config.projectInfo.projectName;
|
|
113
115
|
}
|
|
@@ -7,14 +7,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
7
7
|
}
|
|
8
8
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
9
|
};
|
|
10
|
-
export {
|
|
11
|
-
export { withEmoji };
|
|
10
|
+
export { parseMarkdownMini };
|
|
12
11
|
import React from 'react';
|
|
13
|
-
|
|
14
|
-
function parseTitle(title) {
|
|
12
|
+
function parseMarkdownMini(markdown) {
|
|
15
13
|
var parts = [];
|
|
16
14
|
var current;
|
|
17
|
-
|
|
15
|
+
markdown.split('').forEach(function (letter) {
|
|
18
16
|
if (letter === '`') {
|
|
19
17
|
if ((current === null || current === void 0 ? void 0 : current.nodeType) === 'code') {
|
|
20
18
|
// </code>
|
|
@@ -39,14 +37,9 @@ function parseTitle(title) {
|
|
|
39
37
|
if (current) {
|
|
40
38
|
parts.push(current);
|
|
41
39
|
}
|
|
42
|
-
var
|
|
40
|
+
var parsed = React.createElement.apply(React, __spreadArray([React.Fragment,
|
|
43
41
|
{}], parts.map(function (part, i) {
|
|
44
42
|
return React.createElement(part.nodeType === 'code' ? 'code' : React.Fragment, { key: i }, part.content);
|
|
45
43
|
}), false));
|
|
46
|
-
return
|
|
47
|
-
}
|
|
48
|
-
function withEmoji(name, title) {
|
|
49
|
-
var style = { fontSize: '1.4em' };
|
|
50
|
-
//return React.createElement(React.Fragment, null, Emoji({ name, style }), ' ', title)
|
|
51
|
-
return React.createElement('span', { style: style }, Emoji({ name: name }), ' ', React.createElement('span', { style: { fontSize: '1rem' } }, title));
|
|
44
|
+
return parsed;
|
|
52
45
|
}
|
|
@@ -110,14 +110,14 @@ function parsePageSection(line) {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
var pageSectionId = determineSectionUrlHash(anchor);
|
|
113
|
-
var titleParsed =
|
|
113
|
+
var titleParsed = parseMarkdownMini(pageSectionTitle);
|
|
114
114
|
assert(pageSectionId === null || pageSectionId.length > 0);
|
|
115
115
|
var headingId = pageSectionId === null ? '' : " id=\"".concat(pageSectionId, "\"");
|
|
116
116
|
var headingHtml = "<h".concat(pageSectionLevel).concat(headingId, ">").concat(titleParsed, "</h").concat(pageSectionLevel, ">");
|
|
117
117
|
var pageSection = { pageSectionLevel: pageSectionLevel, pageSectionTitle: pageSectionTitle, pageSectionId: pageSectionId, headingHtml: headingHtml };
|
|
118
118
|
return pageSection;
|
|
119
119
|
}
|
|
120
|
-
function
|
|
120
|
+
function parseMarkdownMini(titleMarkdown) {
|
|
121
121
|
var parts = [];
|
|
122
122
|
var current;
|
|
123
123
|
titleMarkdown.split('').forEach(function (letter) {
|
package/dist/types/Heading.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ type HeadingResolved = {
|
|
|
12
12
|
menuModalFullWidth?: true;
|
|
13
13
|
category?: string;
|
|
14
14
|
color?: string;
|
|
15
|
+
titleIcon?: string;
|
|
16
|
+
titleIconStyle?: React.CSSProperties;
|
|
15
17
|
} & Tmp;
|
|
16
18
|
type HeadingDetachedResolved = Omit<HeadingResolved, 'level' | 'linkBreadcrumb'> & {
|
|
17
19
|
level: 2;
|
|
@@ -37,6 +39,8 @@ type IsCategory = {
|
|
|
37
39
|
type HeadingDefinitionLevel = ({
|
|
38
40
|
level: 1;
|
|
39
41
|
color: string;
|
|
42
|
+
titleIcon?: string;
|
|
43
|
+
titleIconStyle?: React.CSSProperties;
|
|
40
44
|
} & IsCategory) | ({
|
|
41
45
|
level: 4;
|
|
42
46
|
} & IsCategory) | {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export { Emoji };
|
|
3
3
|
export type { EmojiName };
|
|
4
|
-
type EmojiName = 'warning' | 'typescript' | 'shield' | 'mechanical-arm' | 'mountain' | 'rocket' | 'wrench' | '
|
|
4
|
+
type EmojiName = 'warning' | 'typescript' | 'shield' | 'mechanical-arm' | 'mountain' | 'rocket' | 'wrench' | 'seedling' | 'books' | 'plug' | 'earth' | 'gear' | 'red-heart' | 'high-voltage' | 'gem-stone' | 'dizzy' | 'sparkles' | 'writing-hang' | 'engine' | 'red-circle' | 'sparkling-heart' | 'gift' | 'package' | 'info' | 'lab' | 'trophy' | 'ribbon';
|
|
5
5
|
declare function Emoji({ name, style }: {
|
|
6
6
|
name: EmojiName;
|
|
7
7
|
style?: React.CSSProperties;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Let's eventually remove this. Telefunc is still using this as of 2024-12.
|
|
1
2
|
var __assign = (this && this.__assign) || function () {
|
|
2
3
|
__assign = Object.assign || function(t) {
|
|
3
4
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -11,7 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
12
|
};
|
|
12
13
|
import React from 'react';
|
|
13
14
|
import { assert } from '../assert';
|
|
14
|
-
import { iconMechanicalArm,
|
|
15
|
+
import { iconMechanicalArm, iconShield, iconTypescript, iconEngine } from './assets';
|
|
15
16
|
export { Emoji };
|
|
16
17
|
function Emoji(_a) {
|
|
17
18
|
var name = _a.name, style = _a.style;
|
|
@@ -91,11 +92,6 @@ function Emoji(_a) {
|
|
|
91
92
|
// https://www.unicompat.com/1F527 => 94.1%
|
|
92
93
|
(name === 'wrench' && Unicode(0x1f527)) ||
|
|
93
94
|
// ***
|
|
94
|
-
// U+1F9ED
|
|
95
|
-
// https://iconify.design/icon-sets/noto/compass.html
|
|
96
|
-
// https://www.unicompat.com/1F9ED => 67.1%
|
|
97
|
-
(name === 'compass' && Img(iconCompass, '1.4em')) ||
|
|
98
|
-
// ***
|
|
99
95
|
// U+1F331
|
|
100
96
|
// https://www.unicompat.com/1F331 => 94.1%
|
|
101
97
|
(name === 'seedling' && Unicode(0x1f331)) ||
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import iconMechanicalArm from './mechanical-arm.svg';
|
|
2
|
-
import iconCompass from './compass.svg';
|
|
3
2
|
import iconShield from './shield.svg';
|
|
4
3
|
import iconTypescript from './typescript.svg';
|
|
5
4
|
import iconEngine from './engine.png';
|
|
6
|
-
export { iconMechanicalArm,
|
|
5
|
+
export { iconMechanicalArm, iconShield, iconTypescript, iconEngine };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import iconMechanicalArm from './mechanical-arm.svg';
|
|
2
2
|
//import iconMountain from './mountain.svg'
|
|
3
|
-
import iconCompass from './compass.svg';
|
|
4
3
|
import iconShield from './shield.svg';
|
|
5
4
|
import iconTypescript from './typescript.svg';
|
|
6
5
|
import iconEngine from './engine.png';
|
|
7
|
-
export { iconMechanicalArm,
|
|
6
|
+
export { iconMechanicalArm, iconShield, iconTypescript, iconEngine };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<svg width="245" height="245" viewBox="0 0 245 245" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M122.5 245C190.155 245 245 190.155 245 122.5C245 54.8451 190.155 0 122.5 0C54.8451 0 0 54.8451 0 122.5C0 190.155 54.8451 245 122.5 245Z" fill="url(#paint0_linear_5_47)"/>
|
|
3
|
+
<path d="M122.5 224.665C178.924 224.665 224.665 178.924 224.665 122.5C224.665 66.0759 178.924 20.335 122.5 20.335C66.0758 20.335 20.335 66.0759 20.335 122.5C20.335 178.924 66.0758 224.665 122.5 224.665Z" fill="url(#paint1_linear_5_47)"/>
|
|
4
|
+
<path d="M122.5 218.785C175.677 218.785 218.785 175.677 218.785 122.5C218.785 69.3233 175.677 26.215 122.5 26.215C69.3232 26.215 26.215 69.3233 26.215 122.5C26.215 175.677 69.3232 218.785 122.5 218.785Z" fill="#362C15"/>
|
|
5
|
+
<path d="M122.5 214.988C173.579 214.988 214.987 173.579 214.987 122.5C214.987 71.4206 173.579 30.0125 122.5 30.0125C71.4205 30.0125 30.0125 71.4206 30.0125 122.5C30.0125 173.579 71.4205 214.988 122.5 214.988Z" fill="url(#paint2_radial_5_47)"/>
|
|
6
|
+
<path d="M122.5 209.108C170.332 209.108 209.107 170.332 209.107 122.5C209.107 74.668 170.332 35.8925 122.5 35.8925C74.668 35.8925 35.8925 74.668 35.8925 122.5C35.8925 170.332 74.668 209.108 122.5 209.108Z" stroke="#8A8C8E" stroke-width="0.633" stroke-miterlimit="10"/>
|
|
7
|
+
<path d="M112.414 51.593C80.7888 56.0846 55.7784 81.2992 51.5521 113.006H52.8588C57.0646 82.0138 81.5238 57.3709 112.414 52.92V51.593Z" fill="#8A8C8E"/>
|
|
8
|
+
<path d="M134.056 51.838V53.1446C164.273 58.1671 188.017 82.5038 192.162 113.006H193.468C189.303 81.7892 164.987 56.8809 134.056 51.838Z" fill="#8A8C8E"/>
|
|
9
|
+
<path d="M112.414 192.039C84.3821 187.997 61.638 167.396 54.5125 140.467H53.165C60.3313 168.111 83.6471 189.263 112.394 193.346V192.039H112.414Z" fill="#8A8C8E"/>
|
|
10
|
+
<path d="M190.488 140.467C183.485 166.927 161.414 187.303 134.056 191.856V193.162C162.129 188.589 184.771 167.662 191.835 140.487H190.488V140.467Z" fill="#8A8C8E"/>
|
|
11
|
+
<path d="M122.949 136.567V126.359L159.209 162.598L122.949 136.567Z" fill="white"/>
|
|
12
|
+
<path d="M123.276 127.135L156.167 160.026L123.276 136.404V127.135ZM122.623 125.583V136.751L162.231 165.191L122.623 125.583Z" fill="#A8A8A8"/>
|
|
13
|
+
<path d="M162.231 165.191L133.79 125.583H122.623L162.231 165.191Z" fill="#393839"/>
|
|
14
|
+
<path d="M85.9541 88.588L122.194 114.64V124.848L85.9541 88.588Z" fill="white"/>
|
|
15
|
+
<path d="M88.9759 91.1809L121.888 114.803V124.072L88.9759 91.1809ZM82.9121 86.0154L122.52 125.624V114.456L82.9121 86.0154Z" fill="#A8A8A8"/>
|
|
16
|
+
<path d="M82.9121 86.0154L111.373 125.624H122.52L82.9121 86.0154Z" fill="#393839"/>
|
|
17
|
+
<path d="M123.419 125.318L159.658 89.0575L133.627 125.318H123.419Z" fill="white"/>
|
|
18
|
+
<path d="M157.086 92.0792L133.464 124.991H124.195L157.086 92.0792ZM162.231 86.0154L122.623 125.624H133.79L162.231 86.0154Z" fill="#A8A8A8"/>
|
|
19
|
+
<path d="M162.231 86.0154L122.623 114.476V125.624L162.231 86.0154Z" fill="#393839"/>
|
|
20
|
+
<path d="M111.638 125.991H121.847L85.5868 162.251L111.638 125.991Z" fill="white"/>
|
|
21
|
+
<path d="M121.071 126.318L88.1797 159.23L111.802 126.338H121.071M122.623 125.685H111.475L83.0347 165.293L122.623 125.685Z" fill="#A8A8A8"/>
|
|
22
|
+
<path d="M83.0143 165.293L122.623 136.832V125.685L83.0143 165.293Z" fill="#393839"/>
|
|
23
|
+
<path d="M115.089 117.559L122.316 73.5204V124.787L115.089 117.559Z" fill="white"/>
|
|
24
|
+
<path d="M121.989 77.4812V124.011L115.436 117.457L121.989 77.4812ZM122.622 69.5596L114.742 117.682L122.643 125.583V69.5596H122.622Z" fill="#A8A8A8"/>
|
|
25
|
+
<path d="M122.623 69.5596L130.524 117.682L122.623 125.583V69.5596Z" fill="#616161"/>
|
|
26
|
+
<path d="M115.436 133.688L121.99 127.135V173.664L115.436 133.688Z" fill="white"/>
|
|
27
|
+
<path d="M121.336 128.686V165.722L116.11 133.913L121.336 128.686ZM122.622 125.583L114.721 133.484L122.622 181.606V125.583Z" fill="#A8A8A8"/>
|
|
28
|
+
<path d="M122.623 181.586L130.524 133.464L122.623 125.583V181.586Z" fill="#616161"/>
|
|
29
|
+
<path d="M70.5803 125.318L114.619 118.09L121.847 125.318H70.5803Z" fill="white"/>
|
|
30
|
+
<path d="M114.517 118.437L121.071 124.991H74.5413L114.517 118.437ZM114.742 117.743L66.6196 125.644H122.643L114.742 117.743Z" fill="#A8A8A8"/>
|
|
31
|
+
<path d="M66.6196 125.624L114.742 133.525L122.623 125.624H66.6196Z" fill="#616161"/>
|
|
32
|
+
<path d="M123.419 125.889H174.685L130.626 133.117L123.419 125.889Z" fill="white"/>
|
|
33
|
+
<path d="M170.704 126.216L130.728 132.77L124.174 126.216H170.704ZM178.646 125.583H122.623L130.524 133.484L178.646 125.583Z" fill="#A8A8A8"/>
|
|
34
|
+
<path d="M178.646 125.583L130.524 117.682L122.623 125.583H178.646Z" fill="#616161"/>
|
|
35
|
+
<path d="M91.9772 46.7542L115.028 128.298L129.973 122.5L91.9772 46.7542Z" fill="#ED0000"/>
|
|
36
|
+
<path d="M153.023 204.065L129.972 122.5L115.027 128.298L153.023 204.065Z" fill="#00AEFF"/>
|
|
37
|
+
<path d="M122.622 129.564C124.821 129.564 126.604 127.782 126.604 125.583C126.604 123.384 124.821 121.602 122.622 121.602C120.424 121.602 118.641 123.384 118.641 125.583C118.641 127.782 120.424 129.564 122.622 129.564Z" fill="#FFC800"/>
|
|
38
|
+
<path opacity="0.2" d="M112.822 100.593L126.216 127.277L134.342 156.024L120.948 129.34L112.822 100.593ZM93.0591 49.6533L116.109 131.218L154.125 206.964L131.055 125.399L93.0591 49.6533Z" fill="#424242"/>
|
|
39
|
+
<path d="M119.58 40.7517L129.319 53.0017V44.5083C129.319 43.3242 129.156 42.5279 128.809 42.0992C128.339 41.5275 127.563 41.2621 126.461 41.2825V40.7517H132.994V41.2825C132.157 41.3846 131.606 41.5275 131.32 41.6908C131.034 41.8542 130.81 42.14 130.646 42.5279C130.483 42.9158 130.401 43.5692 130.401 44.5083V60.9438H129.911L116.559 44.5083V57.0646C116.559 58.2079 116.824 58.9633 117.335 59.3717C117.845 59.78 118.458 59.9638 119.111 59.9638H119.58V60.4946H112.578V59.9638C113.66 59.9638 114.415 59.7392 114.844 59.29C115.273 58.8613 115.477 58.1058 115.477 57.0646V43.12L115.048 42.5892C114.64 42.0583 114.252 41.7113 113.945 41.5479C113.619 41.3846 113.17 41.2825 112.557 41.2621V40.7313H119.58V40.7517Z" fill="black"/>
|
|
40
|
+
<path d="M191.957 116.518V124.827H192.366C193.652 124.827 194.591 124.419 195.183 123.602C195.775 122.786 196.143 121.581 196.306 120.009H196.878V130.707H196.306C196.184 129.544 195.939 128.584 195.551 127.849C195.163 127.114 194.714 126.604 194.203 126.359C193.693 126.093 192.958 125.971 191.978 125.971V131.728C191.978 132.851 192.019 133.545 192.121 133.79C192.223 134.035 192.386 134.24 192.652 134.403C192.917 134.566 193.325 134.648 193.917 134.648H195.142C197.041 134.648 198.572 134.199 199.736 133.321C200.9 132.443 201.717 131.095 202.207 129.278H202.758L201.839 135.771H184.199V135.22H184.873C185.465 135.22 185.935 135.117 186.302 134.913C186.567 134.77 186.772 134.525 186.894 134.199C186.996 133.954 187.057 133.321 187.057 132.3V118.825C187.057 117.906 187.037 117.335 186.976 117.13C186.886 116.805 186.693 116.518 186.425 116.314C186.037 116.028 185.526 115.885 184.852 115.885H184.179V115.334H201.267V121.377H200.696C200.41 119.907 200.002 118.845 199.471 118.192C198.94 117.539 198.205 117.069 197.225 116.783C196.674 116.6 195.612 116.518 194.06 116.518H191.957Z" fill="black"/>
|
|
41
|
+
<path d="M128.502 183.505L128.666 190.304H128.053C127.767 188.609 127.053 187.221 125.91 186.18C124.766 185.138 123.541 184.628 122.214 184.628C121.193 184.628 120.377 184.893 119.785 185.445C119.192 185.996 118.886 186.629 118.886 187.323C118.886 187.772 118.988 188.18 119.192 188.528C119.478 188.997 119.948 189.467 120.601 189.936C121.071 190.263 122.153 190.855 123.868 191.692C126.257 192.856 127.87 193.979 128.686 195.02C129.503 196.061 129.911 197.266 129.911 198.593C129.911 200.288 129.237 201.758 127.91 203.003C126.583 204.228 124.889 204.84 122.847 204.84C122.214 204.84 121.602 204.779 121.03 204.636C120.458 204.514 119.744 204.269 118.886 203.901C118.396 203.697 118.008 203.595 117.702 203.595C117.437 203.595 117.171 203.697 116.865 203.901C116.579 204.105 116.334 204.412 116.15 204.82H115.599V197.123H116.15C116.6 199.287 117.437 200.941 118.702 202.084C119.968 203.228 121.316 203.799 122.765 203.799C123.888 203.799 124.787 203.493 125.46 202.88C126.134 202.268 126.461 201.553 126.461 200.737C126.461 200.247 126.338 199.798 126.073 199.328C125.807 198.879 125.42 198.45 124.909 198.042C124.399 197.633 123.46 197.103 122.132 196.449C120.275 195.53 118.947 194.755 118.131 194.122C117.314 193.489 116.702 192.774 116.252 191.978C115.803 191.182 115.599 190.304 115.599 189.365C115.599 187.731 116.191 186.363 117.396 185.22C118.58 184.077 120.091 183.505 121.908 183.505C122.561 183.505 123.215 183.587 123.827 183.75C124.297 183.873 124.868 184.097 125.542 184.424C126.216 184.75 126.685 184.914 126.971 184.914C127.237 184.914 127.441 184.832 127.584 184.669C127.727 184.505 127.87 184.118 128.012 183.505H128.502Z" fill="black"/>
|
|
42
|
+
<path d="M69.9271 115.865V116.416C69.5596 116.436 69.2329 116.538 68.9879 116.722C68.7429 116.906 68.4979 117.171 68.3142 117.539C68.2529 117.661 67.9467 118.417 67.3954 119.825L61.1479 136.302H60.5762L55.6354 123.439L50.1842 136.302H49.6125L43.0383 120.009C42.3646 118.376 41.895 117.375 41.65 117.028C41.3846 116.681 40.9354 116.477 40.3025 116.416V115.865H48.9592V116.416C48.265 116.436 47.7954 116.538 47.5708 116.742C47.3462 116.947 47.2237 117.171 47.2237 117.457C47.2237 117.825 47.4687 118.621 47.9383 119.825L51.8583 129.503L55.0025 121.928L54.1858 119.805C53.7367 118.641 53.3896 117.865 53.1446 117.477C52.8996 117.09 52.6137 116.804 52.3075 116.64C52.0012 116.477 51.5112 116.395 50.8987 116.395V115.844H60.5762V116.395C59.9025 116.395 59.4125 116.457 59.1267 116.559C58.9331 116.617 58.7632 116.735 58.6419 116.897C58.5207 117.059 58.4544 117.255 58.4529 117.457C58.4529 117.682 58.6775 118.376 59.1062 119.54L62.7404 128.992L65.9867 120.458C66.3337 119.58 66.5379 118.968 66.6196 118.641C66.7012 118.315 66.7421 118.008 66.7421 117.743C66.7421 117.335 66.5992 117.028 66.3337 116.783C66.0479 116.559 65.5375 116.436 64.7617 116.416V115.865H69.9271Z" fill="black"/>
|
|
43
|
+
<path opacity="0.2" d="M122.5 6.125C186.67 6.125 238.875 58.3304 238.875 122.5C238.875 186.67 186.67 238.875 122.5 238.875C58.3304 238.875 6.125 186.67 6.125 122.5C6.125 58.3304 58.3304 6.125 122.5 6.125ZM122.5 0C54.8392 0 0 54.8392 0 122.5C0 190.161 54.8392 245 122.5 245C190.161 245 245 190.161 245 122.5C245 54.8392 190.161 0 122.5 0Z" fill="#424242"/>
|
|
44
|
+
<defs>
|
|
45
|
+
<linearGradient id="paint0_linear_5_47" x1="42.8546" y1="25.8271" x2="221.215" y2="242.325" gradientUnits="userSpaceOnUse">
|
|
46
|
+
<stop offset="0.004" stop-color="#FFE7AD"/>
|
|
47
|
+
<stop offset="0.261" stop-color="#FFB200"/>
|
|
48
|
+
<stop offset="0.475" stop-color="#FAAE00"/>
|
|
49
|
+
<stop offset="0.731" stop-color="#EBA400"/>
|
|
50
|
+
<stop offset="1" stop-color="#D49300"/>
|
|
51
|
+
</linearGradient>
|
|
52
|
+
<linearGradient id="paint1_linear_5_47" x1="122.5" y1="18.865" x2="122.5" y2="250.288" gradientUnits="userSpaceOnUse">
|
|
53
|
+
<stop offset="0.001" stop-color="#543B0B"/>
|
|
54
|
+
<stop offset="0.016" stop-color="#563D0B"/>
|
|
55
|
+
<stop offset="0.248" stop-color="#785606"/>
|
|
56
|
+
<stop offset="0.468" stop-color="#906703"/>
|
|
57
|
+
<stop offset="0.671" stop-color="#9F7201"/>
|
|
58
|
+
<stop offset="0.841" stop-color="#A47600"/>
|
|
59
|
+
</linearGradient>
|
|
60
|
+
<radialGradient id="paint2_radial_5_47" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(122.5 122.5) scale(92.4957)">
|
|
61
|
+
<stop offset="0.001" stop-color="white"/>
|
|
62
|
+
<stop offset="0.205" stop-color="#FFFEFC"/>
|
|
63
|
+
<stop offset="0.373" stop-color="#FFFBF2"/>
|
|
64
|
+
<stop offset="0.528" stop-color="#FFF6E0"/>
|
|
65
|
+
<stop offset="0.673" stop-color="#FFEFC9"/>
|
|
66
|
+
<stop offset="0.8" stop-color="#FFE7AD"/>
|
|
67
|
+
<stop offset="1" stop-color="#F0C560"/>
|
|
68
|
+
</radialGradient>
|
|
69
|
+
</defs>
|
|
70
|
+
</svg>
|
package/icons/globe.svg
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<svg width="120.94" height="120.94" version="1.1" viewBox="0 0 120.94 120.94" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<radialGradient id="SVGID_1_" cx="43.972" cy="29.066" r="90.951" gradientTransform="matrix(.6257 .78 -.5815 .4665 30.239 -23.257)" gradientUnits="userSpaceOnUse">
|
|
3
|
+
<stop stop-color="#17A1F3" offset=".506"/>
|
|
4
|
+
<stop stop-color="#1B7FFA" offset=".7668"/>
|
|
5
|
+
<stop stop-color="#1366F0" offset=".9624"/>
|
|
6
|
+
<stop stop-color="#1160EE" offset="1"/>
|
|
7
|
+
</radialGradient>
|
|
8
|
+
<radialGradient id="SVGID_2_" cx="4.9296" cy="38.972" r="40.299" gradientTransform="matrix(.9806 -.1961 .1182 .5911 -7.6314 12.437)" gradientUnits="userSpaceOnUse">
|
|
9
|
+
<stop stop-color="#E3DDA6" offset=".3442"/>
|
|
10
|
+
<stop stop-color="#E3DDA6" stop-opacity="0" offset=".9961"/>
|
|
11
|
+
</radialGradient>
|
|
12
|
+
<radialGradient id="SVGID_3_" cx="42.188" cy="107.57" r="31.591" gradientTransform="translate(-3.1199 -4.4649)" gradientUnits="userSpaceOnUse">
|
|
13
|
+
<stop stop-color="#E3DDA6" offset=".7225"/>
|
|
14
|
+
<stop stop-color="#E3DDA6" stop-opacity="0" offset="1"/>
|
|
15
|
+
</radialGradient>
|
|
16
|
+
<radialGradient id="SVGID_4_" cx="62.919" cy="134.22" r="22.682" gradientTransform="translate(-3.1199 -4.4649)" gradientUnits="userSpaceOnUse">
|
|
17
|
+
<stop stop-color="#E3DDA6" offset=".4033"/>
|
|
18
|
+
<stop stop-color="#E3DDA6" stop-opacity="0" offset="1"/>
|
|
19
|
+
</radialGradient>
|
|
20
|
+
<g transform="translate(.00020733 .80504)">
|
|
21
|
+
<path d="m0.020132 60.215c0.68 24.4 16.99 59.55 61.45 59.1 43.32-0.44 60.76-36.3 59.4-62.06-1.37-25.76-21.66-57.46-61.79-57.23-40.14 0.22-59.8 33.96-59.06 60.19z" fill="url(#SVGID_1_)"/>
|
|
22
|
+
<path d="m59.91 0.015062s-0.45 1.27 2.17 2.07 4.01 0.85 5.88 1.71c1.87 0.85 2.99 2.19 5.66 3.58s3.58 1.71 4.06 0.75c0.22-0.43-0.69-2.35-0.69-2.35s0.43-1.82-0.21-2.46c-0.54-0.54-3.52-1.75-4.59-2.18-1-0.4-4.59-0.84-6.31-0.95-4.22-0.26-5.97-0.17-5.97-0.17z" fill="#fff"/>
|
|
23
|
+
<path d="m45.94 45.335c0.09 0.23 0.65 1.37 1.77 1.68s4.08 0.37 4.79 0.65c0.72 0.28 2.46 1.18 2.93 1.46s2.3 1.82 2.74 1.96c1.03 0.34 1.62-0.28 2.09-0.12s0.75 1.06 1.68 1.12c0.56 0.04 1.28-0.87 1.81-0.97s3.24 0.12 3.3-0.75-1.84-2.68-2.96-2.68c-0.94 0-1.09 0.81-1.81 0.84s-1.18-0.75-2.02-0.72-1.28 0.75-1.74 0.53c-0.47-0.22-5.48-3.67-6.79-4.05-1.31-0.37-4.73 0.09-5.2 0.22-0.46 0.15-0.74 0.43-0.59 0.83z" fill="#7add8a"/>
|
|
24
|
+
<path d="m24.07 16.785c0.75-1.82 1.93-4.57 3.53-6.34 1.61-1.77 4.36-4.23 4.36-4.23s4.9-2.57 12.29-4.49c7.39-1.92 14.54-1.7 14.54-1.7s-0.62 0.58-0.57 0.9c0.05 0.32 0.05 0.86 1.34 1.34 1.28 0.48 3.85 0.8 4.55 1.61 0.7 0.8 0.91 1.87 0.11 2.41s-2.25 0.37-3.64-0.05c-1.39-0.43-1.34-0.48-1.5-0.96s1.39-0.7 1.18-1.18-0.91-0.27-1.71-0.7-1.38-0.53-1.88-0.32-0.99 1.27-1.21 1.8-0.34 0.71-0.56 0.87-1.58 0.09-1.95 0.12-1.83 0.71-2.69 1.11c-0.87 0.4-2.69 0.84-3.1 1.18-0.4 0.34-0.77 0.9-0.09 1.33s2.2 0.87 3.1 1.18 2.48 0.34 2.69 0.62c0.22 0.28 0.03 1.58 0.19 1.77 0.15 0.19 0.74 0.96 1.11 0.9s0.9-1.49 1.11-1.92c0.22-0.43 1.7-0.93 1.58-1.61s-0.81-0.81-0.84-1.21 0.46-1.24 0.43-1.46 0.03-1.46 0.68-1.58 1.55 0.37 2.29 0.62 1.49-0.03 2.63 0.74c1.15 0.77 0.9 1.36 1.46 1.39s0.59-0.9 1.33-1.02 2.14 1.27 3.9 2.32 4.15 2.51 4.86 3.53 0.46 1.27 1.02 1.64 2.42 1.39 2.51 1.83c0.09 0.43-0.03 1.02-1.86 0.9s-2.6-0.59-3.04-1.05c-0.43-0.46-0.46-0.9-0.34-1.18s0.62-0.31 0.62-0.31 0.28-1.15-0.46-1.49-1.46-0.56-3.75-0.19-3.84 0.9-4.15 1.39c-0.31 0.5-0.03 1.11 0.37 1.11s1.86-0.84 2.38-0.68c0.53 0.15 0 1.86 0.4 2.11s1.61 0.12 2.26 0.15 1.33-0.06 1.67 0.46-0.59 1.02-1.46 1.39-2.14 1.21-2.51 1.52-0.99 0.59-1.24 0.06 0.03-1.52 0.03-1.52-2.11 0.84-2.45 1.24 0.19 1.64-0.5 2.29c-0.68 0.65-1.89 0.15-2.51 0.43s-1.7 1.33-2.42 2.2c-0.71 0.87-1.08 1.33-1.08 1.95s0.68 1.24-0.43 2.17-1.7 0.71-2.69 1.18c-0.99 0.46-2.48 1.33-3.07 2.63s0.15 3.9 0.28 4.8c0.12 0.9 0.56 2.91-0.46 2.94s-1.15-0.62-1.89-2.63-1.02-2.91-1.58-3.19-1.27-0.03-2.51 0.12-6.23 0.37-7.25 0.37-2.32-0.31-3.47 1.18-1.05 2.32-1.08 3.44-0.4 1.46-0.93 2.42-0.68 3.62-0.5 4.06c0.19 0.43 1.77 2.17 2.04 2.17 0.28 0 2.85 0.12 3.28-0.03s0.93-0.77 1.18-1.39 0.15-1.15 0.84-1.83 1.61-0.59 2.2-0.62 1.05-0.15 1.58-0.22c0.53-0.06 1.33 0.74 1.3 1.02s-1.18 1.46-1.49 2.11-0.31 0.65-0.31 0.65-0.22 0.99-0.5 1.42-0.5 0.87-0.74 1.18c-0.25 0.31-0.09 0.9 0.43 1.02 0.53 0.12 0.43-0.28 0.62-0.37s3.16-0.03 3.78 0.03 1.55 0.96 1.64 1.27 0.12 2.14-0.22 3.07-0.9 1.42-0.96 1.77c-0.06 0.34 0.09 0.87 0.09 0.87s0.46 0.87 1.15 1.52c0.68 0.65 1.42 1.05 1.42 1.05s1.58 0 2.42-0.03 1.42-0.15 1.98 0.25 1.55 1.58 1.77 1.55 0.53-1.24 2.26-2.63 2.42-1.55 3.44-1.7 1.21 0.31 1.21 0.31 0.46 0.4 1.27 0.06 0.71-0.84 1.95-0.77 2.01 0.74 2.85 0.96 2.42 0.34 4.09 0.43 2.69-0.15 3.31-0.06 1.15 0.81 1.49 1.11c0.34 0.31 0.34 0.81 0.34 0.81s0.65 0.15 1.27 0.59c0.62 0.43 1.21 1.52 1.98 1.83s2.17 0.15 3.81 0.25c1.64 0.09 2.11 0.28 2.94 1.08s1.33 1.86 1.64 2.76 0.77 2.97 0.77 2.97 1.21-0.37 3.1 0.4 2.04 1.55 2.04 1.55 2.94-0.09 3.75-0.06 2.91 1.46 3.13 1.95c0.22 0.5-0.22 4.31-0.15 4.89 0.06 0.59-2.17 3.78-2.73 4.31s-0.93 1.15-1.8 3.62-1.49 4.12-1.95 4.58-1.92 2.2-3.44 2.94-2.42 0.62-3.44 1.11c-1.02 0.5-1.8 2.11-2.29 3.22-0.5 1.11-0.19 2.48-0.46 2.91-0.28 0.43-3.84 3.93-4.52 4.15s-3.87-0.34-4.4 0.09 0.65 1.67 0.53 2.08c-0.12 0.4-1.15 1.49-2.04 2.17-0.9 0.68-1.67 1.67-2.29 1.77-0.62 0.09-1.39-0.34-2.01 0.37s0.06 1.86-0.22 2.35c-0.28 0.5-0.92 0.95-1.29 1.63s-0.64 0.92-0.64 0.92-2.82 0.25-4.5 0.34c-1.67 0.09-5.06 0.05-5.06 0.05s0.76-1.49 0.86-2.98-0.37-2.29-0.06-3.16 1.3-1.89 1.3-1.89 0.71-3.41 0.65-5.73-0.34-3.69-0.37-4.12 0.22-8.11 0.09-8.58c-0.12-0.46-1.77-1.33-2.57-2.04-0.81-0.71-3-1.67-3.59-2.57s-0.74-1.24-0.96-1.58-1.89-3.34-2.29-4.12c-0.4-0.77-1.39-1.46-1.8-2.54s-0.4-1.98-0.09-2.32 0.81-0.62 0.71-1.02c-0.09-0.4-0.99-0.46-0.68-1.77s1.39-2.48 1.67-2.73 0.5 0.03 0.77-0.22c0.28-0.25 2.01-1.73 2.23-2.01s0.15-2.26-0.15-3.1c-0.31-0.84-1.55-2.2-2.01-2.35s-1.58 1.15-2.57 1.11c-0.99-0.03-1.64 0-3.19-0.99s-3.72-2.91-4.18-3.72-0.28-1.11-0.56-1.55c-0.28-0.43-1.73-1.21-2.54-1.61s-1.64-0.28-2.11-0.59-2.73-2.82-3.16-3.34c-0.43-0.53-0.81-0.68-1.11-0.71s-0.59 0.4-0.84 0.46-2.26 0.09-2.57-0.06-2.73-1.39-3.93-2.51-2.73-1.89-3.41-2.82 0.03-1.92 0.12-2.42-0.03-2.35-0.09-3-1.18-1.83-1.33-3.13-0.59-2.6-0.71-3.22-0.06-2.79-0.22-2.91c-0.15-0.12-0.93-0.43-1.11 0.93s0.25 2.38 0.34 3.93 0.09 2.48 0.31 2.94 0.96 1.42 0.37 1.73-1.36-0.34-1.8-1.21c-0.43-0.87-0.09-2.51-0.46-3.31s-0.5-2.38-0.59-3.16c-0.09-0.77-0.43-2.73-0.34-4.43s0.62-1.86 0.62-1.86 0-1.98 0.03-2.38 2.01-4.12 3.62-6.19c1.65-2.05 2.83-3.66 2.83-3.66z" fill="#7add8a"/>
|
|
25
|
+
<path d="m38.5 52.165c0.16-2.52-1.21-2.67-1.64-2.52s-3 0.03-3.28 0.03-1.86-1.73-2.04-2.17c-0.19-0.43-0.03-3.1 0.5-4.06s0.9-1.3 0.93-2.42-0.06-1.95 1.08-3.44c1.15-1.49 2.45-1.18 3.47-1.18s6.01-0.22 7.25-0.37 1.95-0.4 2.51-0.12 0.84 1.18 1.58 3.19 0.87 2.66 1.89 2.63 0.59-2.04 0.46-2.94c-0.12-0.9-0.87-3.5-0.28-4.8s2.08-2.17 3.07-2.63 1.58-0.25 2.69-1.18 0.43-1.55 0.43-2.17 0.37-1.08 1.08-1.95 1.8-1.92 2.42-2.2 1.83 0.22 2.51-0.43 0.15-1.89 0.5-2.29c0.34-0.4 2.45-1.24 2.45-1.24s-0.28 0.99-0.03 1.52 0.87 0.25 1.24-0.06 1.64-1.15 2.51-1.52 1.8-0.87 1.46-1.39-1.02-0.43-1.67-0.46-1.86 0.09-2.26-0.15c-0.4-0.25 0.12-1.95-0.4-2.11-0.53-0.15-1.98 0.68-2.38 0.68s-0.68-0.62-0.37-1.11c0.31-0.5-9.63-1.42-10-1.36s-0.96-0.71-1.11-0.9 0.03-1.49-0.19-1.77-1.8-0.31-2.69-0.62c-0.9-0.31-2.42-0.74-3.1-1.18s-0.31-0.99 0.09-1.33 2.23-0.77 3.1-1.18c0.87-0.4 2.32-1.08 2.69-1.11s1.73 0.03 1.95-0.12 0.34-0.34 0.56-0.87 0.71-1.58 1.21-1.8 1.61-1.82 1.56-2.14c-0.05-0.32 0.57-0.9 0.57-0.9s-7.15-0.23-14.54 1.7c-7.39 1.93-12.29 4.49-12.29 4.49s-2.75 2.46-4.36 4.23-2.78 4.52-3.53 6.34c0 0-1.18 1.61-2.79 3.69s-3.59 5.79-3.62 6.19-0.03 2.38-0.03 2.38-0.53 0.15-0.62 1.86c-0.09 1.7 0.25 3.65 0.34 4.43 0.09 0.77 0.22 2.35 0.59 3.16s0.03 2.45 0.46 3.31c0.43 0.87 1.21 1.52 1.8 1.21s-0.15-1.27-0.37-1.73-0.22-1.39-0.31-2.94-0.53-2.57-0.34-3.93 0.96-1.05 1.11-0.93 0.09 2.29 0.22 2.91c0.12 0.62 0.56 1.92 0.71 3.22s1.27 2.48 1.33 3.13 0.19 2.51 0.09 3c-0.09 0.5-0.81 1.49-0.12 2.42 0.68 0.93 2.2 1.7 3.41 2.82s3.62 2.35 3.93 2.51c0.31 0.15 2.32 0.12 2.57 0.06s0.53-0.5 0.84-0.46 1.62 1.14 2.17 1.05c0.95-0.17 2.91-0.12 3.03-1.98z" fill="url(#SVGID_2_)"/>
|
|
26
|
+
<path d="m54.71 66.805c0.12 0.88 0.37 2.82 0.15 3.1s-1.95 1.77-2.23 2.01c-0.28 0.25-0.5-0.03-0.77 0.22-0.28 0.25-1.36 1.42-1.67 2.73s0.59 1.36 0.68 1.77-0.4 0.68-0.71 1.02-0.31 1.24 0.09 2.32 1.39 1.77 1.8 2.54c0.4 0.77 2.08 3.78 2.29 4.12 0.22 0.34 0.37 0.68 0.96 1.58s2.79 1.86 3.59 2.57c0.81 0.71 2.45 1.58 2.57 2.04s-0.12 8.15-0.09 8.58 0.31 1.8 0.37 4.12-0.65 5.73-0.65 5.73-0.99 1.02-1.3 1.89 0.15 1.67 0.06 3.16-0.86 2.98-0.86 2.98 3.38 0.04 5.06-0.05c1.67-0.09 4.5-0.34 4.5-0.34s0.27-0.24 0.64-0.92 1.01-1.13 1.29-1.63-0.4-1.64 0.22-2.35 1.39-0.28 2.01-0.37 1.39-1.08 2.29-1.77c0.9-0.68 1.92-1.77 2.04-2.17s-1.05-1.64-0.53-2.08c0.53-0.43 3.72 0.12 4.4-0.09 0.68-0.22 4.24-3.72 4.52-4.15s-0.03-1.8 0.46-2.91c0.5-1.11 0.83-18.84-4.46-26.54-6.19-9.02-27.31-11.65-26.72-7.11z" fill="url(#SVGID_3_)"/>
|
|
27
|
+
<path d="m54.73 66.845c0.12 0.88 0.37 2.82 0.15 3.1s-1.95 1.77-2.23 2.01c-0.28 0.25-0.5-0.03-0.77 0.22-0.28 0.25-1.36 1.42-1.67 2.73s0.59 1.36 0.68 1.77-0.4 0.68-0.71 1.02-0.31 1.24 0.09 2.32 1.39 1.77 1.8 2.54c0.4 0.77 2.08 3.78 2.29 4.12s0.37 0.68 0.96 1.58 2.79 1.86 3.59 2.57c0.81 0.71 2.45 1.58 2.57 2.04s-0.12 8.15-0.09 8.58 0.31 1.8 0.37 4.12-0.65 5.73-0.65 5.73-0.99 1.02-1.3 1.89 0.15 1.67 0.06 3.16-0.86 2.98-0.86 2.98 3.38 0.04 5.06-0.05c1.67-0.09 4.5-0.34 4.5-0.34s0.27-0.24 0.64-0.92 1.01-1.13 1.29-1.63-0.4-1.64 0.22-2.35 1.39-0.28 2.01-0.37 1.39-1.08 2.29-1.77c0.9-0.68 1.92-1.77 2.04-2.17s-1.05-1.64-0.53-2.08 3.72 0.12 4.4-0.09c0.68-0.22 4.24-3.72 4.52-4.15s-0.03-1.8 0.46-2.91c0.5-1.11 0.83-18.84-4.46-26.54-6.2-9.03-27.32-11.65-26.72-7.11z" fill="url(#SVGID_4_)"/>
|
|
28
|
+
<path d="m44.09 17.675c0.28 0.38 1.55-0.08 2.15-0.05s1.25 0.27 1.33 0.82c0.08 0.54-0.52 0.63-0.87 1.33-0.18 0.36-1.39 2.79-0.73 3.07 0.87 0.38 1.3-0.49 1.49-0.9s0.65-1.28 0.65-1.28 0.52-1.14 1.2-1.06c1.22 0.14 0.73 1.88 0.73 1.88s-0.27 1.3 0.38 1.6 1.28 0.08 1.63-0.05c0.35-0.14 0.95 0 1.66-0.3s1.01-0.57 1.49-0.76c0.49-0.19 0.92-0.08 0.98-0.52 0.05-0.43-0.38-0.87-1.11-0.92s-1.63 0.79-1.93 1.06-1.28 0.46-1.39-0.24 0.52-0.76 0.98-1.03 0.76-0.65 0.76-0.65-0.84-1.09-1.09-1.17c-0.24-0.08-1.22 0.22-2.2-0.46-0.91-0.63-1.28-1.49-1.52-1.71s-1.33-0.57-2.39-0.35-2.64 1.09-2.2 1.69z" fill="#4b9eec"/>
|
|
29
|
+
</g>
|
|
30
|
+
</svg>
|
package/icons/index.ts
CHANGED
|
@@ -4,3 +4,7 @@ export { default as iconBooks } from './books.svg'
|
|
|
4
4
|
export { default as iconSeedling } from './seedling.svg'
|
|
5
5
|
export { default as iconMagnifyingGlass } from './magnifying-glass.svg'
|
|
6
6
|
export { default as iconPencil } from './pencil.svg'
|
|
7
|
+
export { default as iconCompass } from './compass.svg'
|
|
8
|
+
export { default as iconScroll } from './scroll.svg'
|
|
9
|
+
export { default as iconGlobe } from './globe.svg'
|
|
10
|
+
export { default as iconPlug } from './plug.svg'
|
package/icons/plug.svg
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg id="Layer_1_copy" width="120.12" height="120.12" version="1.1" viewBox="0 0 120.12 120.12" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g transform="translate(.023263 -.00015649)">
|
|
3
|
+
<g transform="translate(-3.9625,-3.9425)">
|
|
4
|
+
<g fill="#c9c9c9">
|
|
5
|
+
<path d="m50.53 74.21-5 5c-0.97 0.97-2.54 0.97-3.5 0l-37.34-37.34c-0.97-0.97-0.97-2.54 0-3.5l5-5c0.97-0.97 2.54-0.97 3.5 0l37.34 37.34c0.97 0.97 0.97 2.53 0 3.5z"/>
|
|
6
|
+
<path d="m79.23 45.51-5 5c-0.97 0.97-2.54 0.97-3.5 0l-37.34-37.34c-0.97-0.97-0.97-2.54 0-3.5l5-5c0.97-0.97 2.54-0.97 3.5 0l37.34 37.34c0.97 0.96 0.97 2.53 0 3.5z"/>
|
|
7
|
+
</g>
|
|
8
|
+
<rect transform="matrix(.7071 -.7071 .7071 .7071 -34.428 42.56)" x="28.15" y="59.51" width="12.02" height="6.66" fill="#9e9e9e"/>
|
|
9
|
+
<rect transform="matrix(.7071 -.7071 .7071 .7071 -5.72 54.451)" x="56.86" y="30.8" width="12.01" height="6.66" fill="#9e9e9e"/>
|
|
10
|
+
<g fill="#616161">
|
|
11
|
+
<path d="m88.35 36.62-51.7 51.7c-1.26 1.26-3.29 1.26-4.55 0l-8.26-8.26c-1.26-1.26-1.26-3.29 0-4.55l51.7-51.7c1.26-1.26 3.29-1.26 4.55 0l8.26 8.26c1.25 1.26 1.25 3.29 0 4.55z"/>
|
|
12
|
+
<path d="m59.93 59.29-22.46 23.78s12.12 11.14 17.28 13.89c4.76 2.54 9.84 3.88 15.16 4.54 2.02 0.25 4.98-0.1 6.85 0.81 2.23 1.08 1.85 2.56 3.05 4.58 2.32 3.9 6.53 4.81 11.38 2.91 4.33-1.7 17.55-14.91 19.25-19.25 1.9-4.85 1.31-8.65-2.91-11.38-1.97-1.27-3.49-0.82-4.58-3.05-0.91-1.86-0.56-4.83-0.81-6.85-0.66-5.32-2-10.4-4.54-15.16-2.76-5.15-13.9-17.27-13.9-17.27z"/>
|
|
13
|
+
</g>
|
|
14
|
+
<path d="m91.93 75.74c-0.02 0.34-0.02 0.73 0.23 0.96 0.21 0.19 0.53 0.19 0.81 0.15 2.11-0.27 3.83-2 4.58-3.99s0.69-4.19 0.4-6.3c-0.88-6.41-3.86-12.52-8.38-17.16-0.51-0.52-1.14-1.07-1.87-0.97-1.62 0.21-3.69 5.26-3.87 6.71-0.32 2.64 2.18 4.05 3.63 6.03 3.06 4.17 4.73 9.39 4.47 14.57z" fill="#808080"/>
|
|
15
|
+
<path d="m71.98 32.13c-0.57 1.85 2.29 6.83 4.56 8.65 1.71 1.37 3.1 1.03 4.16 0.46 2.68-1.44 5.31-4.63 5.52-4.84 0.94-0.98 0.55-2.47-0.43-3.84-2.34-3.26-4.71-5.5-5.59-6.46-1.68-1.83-3.81-0.63-4.71 0.24-1.94 1.89-2.95 3.95-3.51 5.79z" fill="#808080"/>
|
|
16
|
+
<path d="m122.86 115.37-7.46 7.46c-1.55 1.55-3.37 1.68-5.68 0.16l-20.99-13.74c-1.77-1.58-1.85-4.33-0.17-6.02l14.71-14.71c1.68-1.68 4.43-1.6 6.02 0.17l13.74 20.99c1.36 2.53 1.38 4.14-0.17 5.69z" fill="#616161"/>
|
|
17
|
+
<path d="m113.71 96.84-7.14 7.14c-0.87 0.87-0.87 2.29 0 3.16s2.29 0.87 3.16 0l7.02-7.02-2.43-3.71c-0.21 0.11-0.42 0.25-0.61 0.43z" fill="#424242"/>
|
|
18
|
+
<path d="m110.03 112.52c-0.87-0.87-2.29-0.87-3.16 0l-5.2 5.2 3.83 2.5 4.54-4.54c0.87-0.87 0.87-2.29-0.01-3.16z" fill="#424242"/>
|
|
19
|
+
<path d="m121.24 106.98-5.84 5.84c-0.87 0.87-0.87 2.29 0 3.16s2.29 0.87 3.16 0l5.03-5-0.59-1.29z" fill="#424242"/>
|
|
20
|
+
<g fill="#424242">
|
|
21
|
+
<path d="m90.55 109.81s4.62-4.01 9.94-9.34 9.34-9.94 9.34-9.94c1.65 1.65-1.33 7.3-6.66 12.62s-10.97 8.3-12.62 6.66z"/>
|
|
22
|
+
<path d="m85.8 39.17-46 46c0.94 0.84 2.12 1.87 3.4 2.98 6.6-1.58 16.99-8.74 26.25-19.18 11.05-12.47 17.09-28.97 16.35-29.8z"/>
|
|
23
|
+
<path d="m79.91 98.98c-0.71 3.79 5.22 4.61 13.22-3.73 4.71-4.91 7.06-10.92 6.86-13.25-0.17-1.93-1.86-1.84-3.22-0.48-1.5 1.5-3.63 4.03-5.19 5.48-8.21 7.64-11.19 9.43-11.67 11.98z"/>
|
|
24
|
+
</g>
|
|
25
|
+
<path d="m101.94 93.38c2.76 0.75 6.38-3.92 6.98-6.26 0.37-1.44 0.21-3.55-1.03-4.53-2.01-1.58-3.61-0.68-4.72 0.62-1.5 1.77-3.98 9.43-1.23 10.17z" fill="#808080"/>
|
|
26
|
+
</g>
|
|
27
|
+
</g>
|
|
28
|
+
</svg>
|
package/icons/scroll.svg
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<svg width="120" height="118" viewBox="0 0 120 118" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M41.3199 12.4466H18.1299V27.9201H41.3199V12.4466Z" fill="#D9B836"/>
|
|
3
|
+
<path d="M110.59 117.96C115.787 117.96 120 112.149 120 104.98C120 97.8112 115.787 91.9998 110.59 91.9998C105.393 91.9998 101.18 97.8112 101.18 104.98C101.18 112.149 105.393 117.96 110.59 117.96Z" fill="#D5BC32"/>
|
|
4
|
+
<path d="M110.59 91.9998H105.41C105.41 91.9998 105.45 26.935 105.45 15.9558C105.45 4.97657 97.8399 0 95.0299 0H18.1299C18.1299 0 28.2299 1.24158 28.3599 15.9558C28.4499 26.4322 28.3599 80.3946 28.3599 97.6433C28.3599 114.892 34.7299 117.95 34.7299 117.95H110.11C110.18 117.95 110.25 117.939 110.32 117.929C110.41 117.929 110.5 117.95 110.59 117.95C115.79 117.95 120 112.142 120 104.97C120 97.8177 115.79 91.9998 110.59 91.9998Z" fill="#FFD511"/>
|
|
5
|
+
<path d="M110.59 91.9998H105.41C105.41 91.9998 105.45 26.935 105.45 15.9558C105.45 4.97657 97.8399 0 95.0299 0H18.1299C18.1299 0 28.2299 1.24158 28.3599 15.9558C28.4499 26.4322 28.3599 80.3946 28.3599 97.6433C28.3599 114.892 34.7299 117.95 34.7299 117.95H110.11C110.18 117.95 110.25 117.939 110.32 117.929C110.41 117.929 110.5 117.95 110.59 117.95C115.79 117.95 120 112.142 120 104.97C120 97.8177 115.79 91.9998 110.59 91.9998Z" fill="#FFD511"/>
|
|
6
|
+
<path d="M28.26 96.689L28.35 87.3516C28.35 87.3516 87.88 93.9801 105.39 72.8631V96.453L28.26 96.689Z" fill="#D5BC32"/>
|
|
7
|
+
<g opacity="0.6">
|
|
8
|
+
<path opacity="0.77" d="M41.52 24.1953C42.69 24.1953 43.87 24.1748 45.04 24.1953C45.93 24.2158 46.76 24.339 47.67 24.2466C48.65 24.144 49.63 23.9491 50.63 23.9798C51.85 24.0209 53.02 24.4005 54.25 24.4005C54.85 24.4005 55.39 24.2261 55.98 24.1953C56.66 24.1645 57.34 24.1953 58.02 24.1953H62.32" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
9
|
+
<path opacity="0.77" d="M75.01 24.1953C75.74 24.1953 76.5 24.2569 77.22 24.144C78.34 23.9696 79.41 23.4976 80.58 23.6002C81.83 23.7131 82.89 24.4621 84.12 24.6571C86.11 24.9546 87.98 23.7336 89.99 23.5386C90.63 23.4771 91.27 23.5181 91.91 23.5694C93.36 23.6925 94.79 23.8772 96.22 24.1132" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
10
|
+
<path opacity="0.77" d="M41.52 48.2162C42.52 48.2162 43.56 48.3188 44.55 48.2162C45.94 48.0726 47.28 47.5698 48.71 47.6416C50.15 47.7134 51.47 48.3599 52.88 48.6164C54.82 48.955 56.77 48.5343 58.69 48.2778C60.74 48.0007 62.69 48.2265 64.75 48.2265H72.45" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
11
|
+
<path opacity="0.77" d="M82.77 48.2163C83.51 48.2163 84.25 48.206 84.99 48.2163C86.24 48.2368 87.17 47.8264 88.36 47.5904C90.05 47.2518 91.74 47.7853 93.41 47.9598C94.64 48.0829 95.93 48.2265 97.16 48.2163" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
12
|
+
<path opacity="0.77" d="M64.5601 72.2782C65.9001 72.2782 67.3001 72.1858 68.6101 72.3705C70.8801 72.6989 72.7901 71.9704 75.0201 71.7344C77.1101 71.5086 79.2001 71.9396 81.3001 72.114C83.4801 72.2987 85.6701 72.2166 87.8601 72.1345C90.1301 72.0524 92.4001 72.2679 94.6901 72.2679" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
13
|
+
<path opacity="0.77" d="M40.5801 72.2782C42.5401 72.2782 44.4701 72.6579 46.4301 72.5142C47.0901 72.4629 47.7501 72.3705 48.4201 72.3398C49.7501 72.2679 51.0901 72.5758 52.4001 72.4219C53.2701 72.3192 54.1001 72.2782 54.9801 72.2782" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
14
|
+
<path opacity="0.77" d="M64.5601 12.2721C65.9001 12.2721 67.3001 12.1797 68.6101 12.3644C70.8801 12.6928 72.7901 11.9643 75.0201 11.7283C77.1101 11.5025 79.2001 11.9335 81.3001 12.1079C83.4801 12.2926 85.6701 12.2105 87.8601 12.1284C90.1301 12.0463 92.4001 12.2618 94.6901 12.2618" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
15
|
+
<path opacity="0.77" d="M40.5801 12.2721C42.5401 12.2721 44.4701 12.6517 46.4301 12.5081C47.0901 12.4568 47.7501 12.3644 48.4201 12.3337C49.7501 12.2618 51.0901 12.5697 52.4001 12.4157C53.2701 12.3131 54.1001 12.2721 54.9801 12.2721" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
16
|
+
<path opacity="0.77" d="M41.52 36.2725C42.48 36.2725 43.41 36.3135 44.35 36.3853C46.03 36.5085 47.59 35.7286 49.22 35.5542C51.27 35.3387 53.29 36.016 55.32 36.3238C57.33 36.6316 59.37 36.4469 61.39 36.3238C62.31 36.2622 63.27 36.1801 64.19 36.2006C65.18 36.2212 66.12 36.5393 67.11 36.529C68.38 36.5187 69.55 35.9441 70.8 35.7492C73.58 35.3079 76.35 36.7445 79.16 36.5495C80.08 36.488 80.97 36.252 81.88 36.1596C83 36.0467 84.13 36.1493 85.25 36.252L90.23 36.7137" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
17
|
+
<path opacity="0.77" d="M41.52 60.2729C42.48 60.2729 43.41 60.3139 44.35 60.3857C46.03 60.5089 47.59 59.729 49.22 59.5546C51.27 59.3391 53.29 60.0163 55.32 60.3242C57.33 60.632 59.37 60.4473 61.39 60.3242C62.31 60.2626 63.27 60.1805 64.19 60.201C65.18 60.2216 66.12 60.5397 67.11 60.5294C68.38 60.5191 69.55 59.9445 70.8 59.7496C73.58 59.3083 76.35 60.7449 79.16 60.5499C80.08 60.4884 80.97 60.2524 81.88 60.16C83 60.0471 84.13 60.1497 85.25 60.2523L90.23 60.7141" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
18
|
+
<path opacity="0.77" d="M54.3901 84.2425C54.9101 84.2528 55.3801 84.1296 55.8901 84.1091C56.6301 84.0681 57.3601 84.2835 58.0901 84.3964C59.8401 84.6632 61.6701 84.7966 63.4101 84.4067C64.3901 84.1809 65.3201 83.8013 66.3201 83.6576C68.8301 83.2882 71.3101 84.4375 73.8601 84.4272C76.0601 84.4067 78.4201 83.3806 80.5901 83.9757C82.0101 84.3554 83.4701 84.263 84.9701 84.263" stroke="#9E673C" stroke-width="3.0045" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
19
|
+
</g>
|
|
20
|
+
<path d="M34.25 91.9998V98.3308H118.66C117.02 94.5445 114.02 91.9998 110.59 91.9998H105.41H34.25Z" fill="#F9FFA8"/>
|
|
21
|
+
<path d="M34.7301 117.96C39.9271 117.96 44.1401 112.149 44.1401 104.98C44.1401 97.8112 39.9271 91.9998 34.7301 91.9998C29.5331 91.9998 25.3201 97.8112 25.3201 104.98C25.3201 112.149 29.5331 117.96 34.7301 117.96Z" fill="#D5BC32"/>
|
|
22
|
+
<path d="M41.71 104.303C41.71 109.772 38.37 112.871 34.79 113.876C30.18 115.169 28.26 114.04 28.26 114.04V94.565C28.26 94.565 31.51 93.7236 34.98 94.7292C38.52 95.745 41.71 98.8336 41.71 104.303Z" fill="#784D30"/>
|
|
23
|
+
<path d="M29.48 114.204C33.1914 114.204 36.2 109.771 36.2 104.303C36.2 98.834 33.1914 94.4008 29.48 94.4008C25.7687 94.4008 22.76 98.834 22.76 104.303C22.76 109.771 25.7687 114.204 29.48 114.204Z" fill="#784D30"/>
|
|
24
|
+
<path d="M29.48 114.215C33.1914 114.215 36.2 109.782 36.2 104.313C36.2 98.8443 33.1914 94.4111 29.48 94.4111C25.7687 94.4111 22.76 98.8443 22.76 104.313C22.76 109.782 25.7687 114.215 29.48 114.215Z" fill="#784D30"/>
|
|
25
|
+
<path d="M20.8599 108.93C23.3231 108.93 25.3199 106.863 25.3199 104.313C25.3199 101.763 23.3231 99.6955 20.8599 99.6955C18.3967 99.6955 16.3999 101.763 16.3999 104.313C16.3999 106.863 18.3967 108.93 20.8599 108.93Z" fill="#BA793E"/>
|
|
26
|
+
<path d="M29.0199 101.501C30.2899 101.902 31.8399 104.662 29.1999 107.309C28.5299 107.976 29.2199 109.454 29.6799 110.695C30.2599 112.275 30.6799 113.127 32.0199 112.183C33.8199 110.931 35.5299 107.35 35.5299 104.313C35.5299 99.3979 32.8199 95.4064 29.4799 95.4064C27.7599 95.4064 26.4199 95.9708 25.2899 98.3616C24.7899 99.4287 24.7399 100.793 26.3299 100.958C26.3299 100.968 28.1099 101.224 29.0199 101.501Z" fill="#BA793E"/>
|
|
27
|
+
<path d="M18.34 27.8482C23.9126 27.8482 28.43 21.6142 28.43 13.9241C28.43 6.23404 23.9126 0 18.34 0C12.7674 0 8.25 6.23404 8.25 13.9241C8.25 21.6142 12.7674 27.8482 18.34 27.8482Z" fill="#D5BC32"/>
|
|
28
|
+
<path d="M25.3201 13.2469C25.3201 18.716 21.9801 21.8148 18.4001 22.8203C13.7901 24.1132 11.8701 22.9845 11.8701 22.9845V3.50921C11.8701 3.50921 15.1201 2.66781 18.5901 3.67339C22.1201 4.67896 25.3201 7.77777 25.3201 13.2469Z" fill="#784D30"/>
|
|
29
|
+
<path d="M13.0901 23.1487C16.8015 23.1487 19.8101 18.7155 19.8101 13.2469C19.8101 7.77823 16.8015 3.34503 13.0901 3.34503C9.37876 3.34503 6.37012 7.77823 6.37012 13.2469C6.37012 18.7155 9.37876 23.1487 13.0901 23.1487Z" fill="#784D30"/>
|
|
30
|
+
<path d="M13.0901 23.159C16.8015 23.159 19.8101 18.7258 19.8101 13.2571C19.8101 7.78852 16.8015 3.35532 13.0901 3.35532C9.37876 3.35532 6.37012 7.78852 6.37012 13.2571C6.37012 18.7258 9.37876 23.159 13.0901 23.159Z" fill="#784D30"/>
|
|
31
|
+
<path d="M4.46 17.8746C6.92319 17.8746 8.92 15.8073 8.92 13.2572C8.92 10.707 6.92319 8.63974 4.46 8.63974C1.99681 8.63974 0 10.707 0 13.2572C0 15.8073 1.99681 17.8746 4.46 17.8746Z" fill="#BA793E"/>
|
|
32
|
+
<path d="M12.62 10.4457C13.89 10.8459 15.44 13.6061 12.8 16.2534C12.13 16.9203 12.82 18.3979 13.28 19.6395C13.86 21.2197 14.28 22.0713 15.62 21.1273C17.42 19.8755 19.13 16.2944 19.13 13.2572C19.13 8.34218 16.42 4.35066 13.08 4.35066C11.36 4.35066 10.02 4.91502 8.89 7.30582C8.39 8.37296 8.34 9.73767 9.93 9.90184C9.93 9.9121 11.72 10.1584 12.62 10.4457Z" fill="#BA793E"/>
|
|
33
|
+
</svg>
|
package/index.ts
CHANGED
|
@@ -12,5 +12,6 @@ export { usePageContext } from './renderer/usePageContext'
|
|
|
12
12
|
export * from './components/Note'
|
|
13
13
|
export * from './icons/index'
|
|
14
14
|
export { assert } from './utils/assert'
|
|
15
|
+
export { parseMarkdownMini } from './parseMarkdownMini'
|
|
15
16
|
export type { Config } from './types/Config'
|
|
16
17
|
export type { HeadingDefinition, HeadingDetachedDefinition } from './types/Heading'
|
package/package.json
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { withEmoji }
|
|
1
|
+
export { parseMarkdownMini }
|
|
3
2
|
|
|
4
3
|
import React from 'react'
|
|
5
|
-
import { Emoji, EmojiName } from './utils/server'
|
|
6
4
|
|
|
7
|
-
function
|
|
5
|
+
function parseMarkdownMini(markdown: string): JSX.Element {
|
|
8
6
|
type Part = { nodeType: 'text' | 'code'; content: string }
|
|
9
7
|
const parts: Part[] = []
|
|
10
8
|
let current: Part | undefined
|
|
11
|
-
|
|
9
|
+
markdown.split('').forEach((letter) => {
|
|
12
10
|
if (letter === '`') {
|
|
13
11
|
if (current?.nodeType === 'code') {
|
|
14
12
|
// </code>
|
|
@@ -32,7 +30,7 @@ function parseTitle(title: string): JSX.Element {
|
|
|
32
30
|
parts.push(current)
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
const
|
|
33
|
+
const parsed = React.createElement(
|
|
36
34
|
React.Fragment,
|
|
37
35
|
{},
|
|
38
36
|
...parts.map((part, i) =>
|
|
@@ -40,17 +38,5 @@ function parseTitle(title: string): JSX.Element {
|
|
|
40
38
|
),
|
|
41
39
|
)
|
|
42
40
|
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function withEmoji(name: EmojiName, title: string | JSX.Element): JSX.Element {
|
|
47
|
-
const style = { fontSize: '1.4em' }
|
|
48
|
-
//return React.createElement(React.Fragment, null, Emoji({ name, style }), ' ', title)
|
|
49
|
-
return React.createElement(
|
|
50
|
-
'span',
|
|
51
|
-
{ style },
|
|
52
|
-
Emoji({ name }),
|
|
53
|
-
' ',
|
|
54
|
-
React.createElement('span', { style: { fontSize: '1rem' } }, title),
|
|
55
|
-
)
|
|
41
|
+
return parsed
|
|
56
42
|
}
|
package/parsePageSections.ts
CHANGED
|
@@ -86,7 +86,7 @@ function parsePageSection(line: string): PageSection & { headingHtml: string } {
|
|
|
86
86
|
}
|
|
87
87
|
const pageSectionId = determineSectionUrlHash(anchor)
|
|
88
88
|
|
|
89
|
-
const titleParsed =
|
|
89
|
+
const titleParsed = parseMarkdownMini(pageSectionTitle)
|
|
90
90
|
assert(pageSectionId === null || pageSectionId.length > 0)
|
|
91
91
|
const headingId = pageSectionId === null ? '' : ` id="${pageSectionId}"`
|
|
92
92
|
const headingHtml = `<h${pageSectionLevel}${headingId}>${titleParsed}</h${pageSectionLevel}>`
|
|
@@ -95,7 +95,7 @@ function parsePageSection(line: string): PageSection & { headingHtml: string } {
|
|
|
95
95
|
return pageSection
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
function
|
|
98
|
+
function parseMarkdownMini(titleMarkdown: string): string {
|
|
99
99
|
type Part = { nodeType: 'text' | 'code'; content: string }
|
|
100
100
|
const parts: Part[] = []
|
|
101
101
|
let current: Part | undefined
|
package/types/Heading.ts
CHANGED
|
@@ -13,6 +13,8 @@ type HeadingResolved = {
|
|
|
13
13
|
menuModalFullWidth?: true
|
|
14
14
|
category?: string
|
|
15
15
|
color?: string
|
|
16
|
+
titleIcon?: string
|
|
17
|
+
titleIconStyle?: React.CSSProperties
|
|
16
18
|
} & Tmp
|
|
17
19
|
|
|
18
20
|
type HeadingDetachedResolved = Omit<HeadingResolved, 'level' | 'linkBreadcrumb'> & {
|
|
@@ -41,7 +43,7 @@ type IsCategory = {
|
|
|
41
43
|
titleInNav?: undefined
|
|
42
44
|
}
|
|
43
45
|
type HeadingDefinitionLevel =
|
|
44
|
-
| ({ level: 1; color: string } & IsCategory)
|
|
46
|
+
| ({ level: 1; color: string; titleIcon?: string; titleIconStyle?: React.CSSProperties } & IsCategory)
|
|
45
47
|
| ({ level: 4 } & IsCategory)
|
|
46
48
|
| {
|
|
47
49
|
level: 2
|
package/utils/Emoji/Emoji.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
// Let's eventually remove this. Telefunc is still using this as of 2024-12.
|
|
2
|
+
|
|
1
3
|
import React from 'react'
|
|
2
4
|
import { assert } from '../assert'
|
|
3
5
|
|
|
4
|
-
import { iconMechanicalArm,
|
|
6
|
+
import { iconMechanicalArm, iconShield, iconTypescript, iconEngine } from './assets'
|
|
5
7
|
|
|
6
8
|
export { Emoji }
|
|
7
9
|
export type { EmojiName }
|
|
@@ -14,7 +16,6 @@ type EmojiName =
|
|
|
14
16
|
| 'mountain'
|
|
15
17
|
| 'rocket'
|
|
16
18
|
| 'wrench'
|
|
17
|
-
| 'compass'
|
|
18
19
|
| 'seedling'
|
|
19
20
|
| 'books'
|
|
20
21
|
| 'plug'
|
|
@@ -113,11 +114,6 @@ function Emoji({ name, style }: { name: EmojiName; style?: React.CSSProperties }
|
|
|
113
114
|
// https://www.unicompat.com/1F527 => 94.1%
|
|
114
115
|
(name === 'wrench' && Unicode(0x1f527)) ||
|
|
115
116
|
// ***
|
|
116
|
-
// U+1F9ED
|
|
117
|
-
// https://iconify.design/icon-sets/noto/compass.html
|
|
118
|
-
// https://www.unicompat.com/1F9ED => 67.1%
|
|
119
|
-
(name === 'compass' && Img(iconCompass, '1.4em')) ||
|
|
120
|
-
// ***
|
|
121
117
|
// U+1F331
|
|
122
118
|
// https://www.unicompat.com/1F331 => 94.1%
|
|
123
119
|
(name === 'seedling' && Unicode(0x1f331)) ||
|
package/utils/Emoji/assets.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import iconMechanicalArm from './mechanical-arm.svg'
|
|
2
2
|
//import iconMountain from './mountain.svg'
|
|
3
|
-
import iconCompass from './compass.svg'
|
|
4
3
|
import iconShield from './shield.svg'
|
|
5
4
|
import iconTypescript from './typescript.svg'
|
|
6
5
|
import iconEngine from './engine.png'
|
|
7
6
|
|
|
8
|
-
export { iconMechanicalArm,
|
|
7
|
+
export { iconMechanicalArm, iconShield, iconTypescript, iconEngine }
|
package/dist/parseTitle.d.ts
DELETED
package/utils/Emoji/compass.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 128 128"><linearGradient id="IconifyId-17a9a1bedc8-7759f1-57" x1="24.99" x2="112.35" y1="16.65" y2="122.69" gradientUnits="userSpaceOnUse"><stop stop-color="#FFE7AD" offset=".004"/><stop stop-color="#FFB200" offset=".261"/><stop stop-color="#FAAE00" offset=".475"/><stop stop-color="#EBA400" offset=".731"/><stop stop-color="#D49300" offset="1"/></linearGradient><circle cx="64" cy="64" r="60" fill="url(#IconifyId-17a9a1bedc8-7759f1-57)"/><linearGradient id="IconifyId-17a9a1bedc8-7759f1-58" x1="64" x2="64" y1="13.24" y2="126.59" gradientUnits="userSpaceOnUse"><stop stop-color="#543B0B" offset=".001"/><stop stop-color="#563D0B" offset=".016"/><stop stop-color="#785606" offset=".248"/><stop stop-color="#906703" offset=".468"/><stop stop-color="#9F7201" offset=".671"/><stop stop-color="#A47600" offset=".841"/></linearGradient><circle cx="64" cy="64" r="50.04" fill="url(#IconifyId-17a9a1bedc8-7759f1-58)"/><circle cx="64" cy="64" r="47.16" fill="#362C15"/><radialGradient id="IconifyId-17a9a1bedc8-7759f1-59" cx="64" cy="64" r="45.304" gradientUnits="userSpaceOnUse"><stop stop-color="#fff" offset=".001"/><stop stop-color="#FFFEFC" offset=".205"/><stop stop-color="#FFFBF2" offset=".373"/><stop stop-color="#FFF6E0" offset=".528"/><stop stop-color="#FFEFC9" offset=".673"/><stop stop-color="#FFE7AD" offset=".8"/><stop stop-color="#F0C560" offset="1"/></radialGradient><circle cx="64" cy="64" r="45.3" fill="url(#IconifyId-17a9a1bedc8-7759f1-59)"/><circle cx="64" cy="64" r="42.42" fill="none" stroke="#8A8C8E" stroke-miterlimit="10" stroke-width=".633"/><path d="M59.06 29.27c-15.49 2.2-27.74 14.55-29.81 30.08h.64c2.06-15.18 14.04-27.25 29.17-29.43v-.65z" fill="#8A8C8E"/><path d="M69.66 29.39v.64c14.8 2.46 26.43 14.38 28.46 29.32h.64c-2.04-15.29-13.95-27.49-29.1-29.96z" fill="#8A8C8E"/><path d="M59.06 98.06C45.33 96.08 34.19 85.99 30.7 72.8h-.66c3.51 13.54 14.93 23.9 29.01 25.9v-.64z" fill="#8A8C8E"/><path d="M97.3 72.8c-3.43 12.96-14.24 22.94-27.64 25.17v.64c13.75-2.24 24.84-12.49 28.3-25.8h-.66z" fill="#8A8C8E"/><path fill="#fff" d="M64.22 70.89v-5l17.76 17.75z"/><path d="M64.38 66.27l16.11 16.11l-16.11-11.57v-4.54m-.32-.76v5.47l19.4 13.93l-19.4-19.4z" fill="#A8A8A8"/><path fill="#393839" d="M83.46 84.91l-13.93-19.4h-5.47z"/><path fill="#fff" d="M46.1 47.39l17.75 12.76v5z"/><path d="M47.58 48.66L63.7 60.23v4.54L47.58 48.66m-2.97-2.53l19.4 19.4v-5.47l-19.4-13.93z" fill="#A8A8A8"/><path fill="#393839" d="M44.61 46.13l13.94 19.4h5.46z"/><path fill="#fff" d="M64.45 65.38L82.2 47.62L69.45 65.38z"/><path d="M80.94 49.1L69.37 65.22h-4.54L80.94 49.1m2.52-2.97l-19.4 19.4h5.47l13.93-19.4z" fill="#A8A8A8"/><path fill="#393839" d="M83.46 46.13l-19.4 13.94v5.46z"/><path fill="#fff" d="M58.68 65.71h5L45.92 83.47z"/><path d="M63.3 65.87L47.19 81.99l11.57-16.11h4.54m.76-.32H58.6l-13.93 19.4l19.39-19.4z" fill="#A8A8A8"/><path fill="#393839" d="M44.66 84.96l19.4-13.94v-5.46z"/><path fill="#fff" d="M60.37 61.58l3.54-21.57v25.11z"/><path d="M63.75 41.95v22.79l-3.21-3.21l3.21-19.58m.31-3.88L60.2 61.64l3.87 3.87V38.07h-.01z" fill="#A8A8A8"/><path fill="#616161" d="M64.06 38.07l3.87 23.57l-3.87 3.87z"/><path fill="#fff" d="M60.54 69.48l3.21-3.21v22.79z"/><path d="M63.43 67.03v18.14l-2.56-15.58l2.56-2.56m.63-1.52l-3.87 3.87l3.87 23.57V65.51z" fill="#A8A8A8"/><path fill="#616161" d="M64.06 92.94l3.87-23.57l-3.87-3.86z"/><path fill="#fff" d="M38.57 65.38l21.57-3.54l3.54 3.54z"/><path d="M60.09 62.01l3.21 3.21H40.51l19.58-3.21m.11-.34l-23.57 3.87h27.44l-3.87-3.87z" fill="#A8A8A8"/><path fill="#616161" d="M36.63 65.53L60.2 69.4l3.86-3.87z"/><path fill="#fff" d="M64.45 65.66h25.11L67.98 69.2z"/><path d="M87.61 65.82l-19.58 3.21l-3.21-3.21h22.79m3.89-.31H64.06l3.87 3.87l23.57-3.87z" fill="#A8A8A8"/><path fill="#616161" d="M91.5 65.51l-23.57-3.87l-3.87 3.87z"/><path fill="#ED0000" d="M49.05 26.9l11.29 39.94L67.66 64z"/><path fill="#00AEFF" d="M78.95 103.95L67.66 64l-7.32 2.84z"/><circle cx="64.06" cy="65.51" r="1.95" fill="#FFC800"/><path d="M59.26 53.27l6.56 13.07l3.98 14.08l-6.56-13.07l-3.98-14.08m-9.68-24.95l11.29 39.95l18.62 37.1l-11.3-39.95l-18.61-37.1z" fill="#424242" opacity=".2"/><path d="M62.57 23.96l4.77 6V25.8c0-.58-.08-.97-.25-1.18c-.23-.28-.61-.41-1.15-.4v-.26h3.2v.26c-.41.05-.68.12-.82.2s-.25.22-.33.41s-.12.51-.12.97v8.05h-.24l-6.54-8.05v6.15c0 .56.13.93.38 1.13s.55.29.87.29h.23v.26h-3.43v-.26c.53 0 .9-.11 1.11-.33c.21-.21.31-.58.31-1.09v-6.83l-.21-.26c-.2-.26-.39-.43-.54-.51c-.16-.08-.38-.13-.68-.14v-.26h3.44z" fill="#000"/><path d="M98.02 61.07v4.07h.2c.63 0 1.09-.2 1.38-.6s.47-.99.55-1.76h.28v5.24h-.28c-.06-.57-.18-1.04-.37-1.4s-.41-.61-.66-.73c-.25-.13-.61-.19-1.09-.19v2.82c0 .55.02.89.07 1.01s.13.22.26.3s.33.12.62.12h.6c.93 0 1.68-.22 2.25-.65s.97-1.09 1.21-1.98h.27l-.45 3.18h-8.64v-.27h.33c.29 0 .52-.05.7-.15c.13-.07.23-.19.29-.35c.05-.12.08-.43.08-.93v-6.6c0-.45-.01-.73-.04-.83a.756.756 0 0 0-.27-.4c-.19-.14-.44-.21-.77-.21h-.33v-.27h8.37v2.96h-.28c-.14-.72-.34-1.24-.6-1.56s-.62-.55-1.1-.69c-.27-.09-.79-.13-1.55-.13h-1.03z" fill="#000"/><path d="M66.94 93.88l.08 3.33h-.3c-.14-.83-.49-1.51-1.05-2.02s-1.16-.76-1.81-.76c-.5 0-.9.13-1.19.4s-.44.58-.44.92c0 .22.05.42.15.59c.14.23.37.46.69.69c.23.16.76.45 1.6.86c1.17.57 1.96 1.12 2.36 1.63s.6 1.1.6 1.75c0 .83-.33 1.55-.98 2.16c-.65.6-1.48.9-2.48.9c-.31 0-.61-.03-.89-.1c-.28-.06-.63-.18-1.05-.36c-.24-.1-.43-.15-.58-.15c-.13 0-.26.05-.41.15c-.14.1-.26.25-.35.45h-.27v-3.77h.27c.22 1.06.63 1.87 1.25 2.43s1.28.84 1.99.84c.55 0 .99-.15 1.32-.45s.49-.65.49-1.05c0-.24-.06-.46-.19-.69c-.13-.22-.32-.43-.57-.63s-.71-.46-1.36-.78c-.91-.45-1.56-.83-1.96-1.14s-.7-.66-.92-1.05s-.32-.82-.32-1.28c0-.8.29-1.47.88-2.03c.58-.56 1.32-.84 2.21-.84c.32 0 .64.04.94.12c.23.06.51.17.84.33s.56.24.7.24c.13 0 .23-.04.3-.12s.14-.27.21-.57h.24z" fill="#000"/><path d="M38.25 60.75v.27c-.18.01-.34.06-.46.15s-.24.22-.33.4c-.03.06-.18.43-.45 1.12l-3.06 8.07h-.28l-2.42-6.3l-2.67 6.3h-.28l-3.22-7.98c-.33-.8-.56-1.29-.68-1.46c-.13-.17-.35-.27-.66-.3v-.27h4.24v.27c-.34.01-.57.06-.68.16s-.17.21-.17.35c0 .18.12.57.35 1.16l1.92 4.74l1.54-3.71l-.4-1.04c-.22-.57-.39-.95-.51-1.14s-.26-.33-.41-.41s-.39-.12-.69-.12v-.27h4.74v.27c-.33 0-.57.03-.71.08a.463.463 0 0 0-.33.44c0 .11.11.45.32 1.02l1.78 4.63L36.32 63c.17-.43.27-.73.31-.89s.06-.31.06-.44c0-.2-.07-.35-.2-.47c-.14-.11-.39-.17-.77-.18v-.27h2.53z" fill="#000"/><path d="M64 7c31.43 0 57 25.57 57 57s-25.57 57-57 57S7 95.43 7 64S32.57 7 64 7m0-3C30.86 4 4 30.86 4 64s26.86 60 60 60s60-26.86 60-60S97.14 4 64 4z" fill="#424242" opacity=".2"/></svg>
|