nitro-web 0.0.1

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.
Files changed (152) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintrc.json +86 -0
  3. package/_example/.env-example +16 -0
  4. package/_example/client/config.ts +5 -0
  5. package/_example/client/css/index.css +35 -0
  6. package/_example/client/fonts/Roboto-Bold.ttf +0 -0
  7. package/_example/client/fonts/Roboto-BoldItalic.ttf +0 -0
  8. package/_example/client/fonts/Roboto-Italic.ttf +0 -0
  9. package/_example/client/fonts/Roboto-Medium.ttf +0 -0
  10. package/_example/client/fonts/Roboto-MediumItalic.ttf +0 -0
  11. package/_example/client/fonts/Roboto-Regular.ttf +0 -0
  12. package/_example/client/fonts/inter-v13-latin-300.woff2 +0 -0
  13. package/_example/client/fonts/inter-v13-latin-500.woff2 +0 -0
  14. package/_example/client/fonts/inter-v13-latin-600.woff2 +0 -0
  15. package/_example/client/fonts/inter-v13-latin-700.woff2 +0 -0
  16. package/_example/client/fonts/inter-v13-latin-800.woff2 +0 -0
  17. package/_example/client/fonts/inter-v13-latin-900.woff2 +0 -0
  18. package/_example/client/fonts/inter-v13-latin-regular.woff2 +0 -0
  19. package/_example/client/imgs/android-chrome-512x512.png +0 -0
  20. package/_example/client/imgs/favicon.png +0 -0
  21. package/_example/client/imgs/icons/calendar.svg +3 -0
  22. package/_example/client/imgs/icons/email.svg +6 -0
  23. package/_example/client/imgs/icons/eye-open.svg +4 -0
  24. package/_example/client/imgs/icons/eye.svg +5 -0
  25. package/_example/client/imgs/icons/filter.svg +7 -0
  26. package/_example/client/imgs/icons/left-circle.svg +3 -0
  27. package/_example/client/imgs/icons/left.svg +3 -0
  28. package/_example/client/imgs/icons/line-options.svg +5 -0
  29. package/_example/client/imgs/icons/line.svg +3 -0
  30. package/_example/client/imgs/icons/person.svg +7 -0
  31. package/_example/client/imgs/icons/plus-circle.svg +5 -0
  32. package/_example/client/imgs/icons/plus.svg +5 -0
  33. package/_example/client/imgs/icons/right-circle.svg +3 -0
  34. package/_example/client/imgs/icons/right.svg +3 -0
  35. package/_example/client/imgs/icons/search.svg +3 -0
  36. package/_example/client/imgs/icons/shield.svg +6 -0
  37. package/_example/client/imgs/icons/tick-circle-solid.svg +8 -0
  38. package/_example/client/imgs/icons/tick-circle.svg +6 -0
  39. package/_example/client/imgs/icons/tick.svg +5 -0
  40. package/_example/client/imgs/icons/up2-small.svg +4 -0
  41. package/_example/client/imgs/icons/up2.svg +4 -0
  42. package/_example/client/imgs/icons/updown.svg +6 -0
  43. package/_example/client/imgs/icons/v-big-dark.svg +3 -0
  44. package/_example/client/imgs/icons/v-dark.svg +3 -0
  45. package/_example/client/imgs/icons/v.svg +3 -0
  46. package/_example/client/imgs/icons/v2-active.svg +6 -0
  47. package/_example/client/imgs/icons/x1.svg +4 -0
  48. package/_example/client/imgs/logo/logo-white.svg +20 -0
  49. package/_example/client/imgs/logo/logo.svg +20 -0
  50. package/_example/client/imgs/no-image.jpg +0 -0
  51. package/_example/client/imgs/user.jpg +0 -0
  52. package/_example/client/index.html +12 -0
  53. package/_example/client/index.ts +47 -0
  54. package/_example/components/auth.api.js +1 -0
  55. package/_example/components/index.tsx +225 -0
  56. package/_example/components/partials/layouts.tsx +5 -0
  57. package/_example/components/settings.api.js +1 -0
  58. package/_example/server/config.js +120 -0
  59. package/_example/server/email/welcome.html +27 -0
  60. package/_example/server/index.js +32 -0
  61. package/_example/tailwind.config.js +84 -0
  62. package/_example/tsconfig.json +32 -0
  63. package/_example/types.d.ts +7 -0
  64. package/_example/webpack.config.js +4 -0
  65. package/client/app.js +300 -0
  66. package/client/css/components.css +84 -0
  67. package/client/css/fonts.css +67 -0
  68. package/client/imgs/icons/calendar.svg +3 -0
  69. package/client/imgs/icons/email.svg +6 -0
  70. package/client/imgs/icons/eye-open.svg +4 -0
  71. package/client/imgs/icons/eye.svg +5 -0
  72. package/client/imgs/icons/filter.svg +7 -0
  73. package/client/imgs/icons/left-circle.svg +3 -0
  74. package/client/imgs/icons/left.svg +3 -0
  75. package/client/imgs/icons/line-options.svg +5 -0
  76. package/client/imgs/icons/line.svg +3 -0
  77. package/client/imgs/icons/person.svg +7 -0
  78. package/client/imgs/icons/plus-circle.svg +5 -0
  79. package/client/imgs/icons/plus.svg +5 -0
  80. package/client/imgs/icons/right-circle.svg +3 -0
  81. package/client/imgs/icons/right.svg +3 -0
  82. package/client/imgs/icons/search.svg +3 -0
  83. package/client/imgs/icons/shield.svg +6 -0
  84. package/client/imgs/icons/tick-circle-solid.svg +8 -0
  85. package/client/imgs/icons/tick-circle.svg +6 -0
  86. package/client/imgs/icons/tick.svg +5 -0
  87. package/client/imgs/icons/up2-small.svg +4 -0
  88. package/client/imgs/icons/up2.svg +4 -0
  89. package/client/imgs/icons/updown.svg +6 -0
  90. package/client/imgs/icons/v-big-dark.svg +3 -0
  91. package/client/imgs/icons/v-dark.svg +3 -0
  92. package/client/imgs/icons/v.svg +3 -0
  93. package/client/imgs/icons/v2-active.svg +6 -0
  94. package/client/imgs/icons/x1.svg +4 -0
  95. package/client.js +42 -0
  96. package/components/auth/auth.api.js +419 -0
  97. package/components/auth/reset.jsx +88 -0
  98. package/components/auth/signin.jsx +74 -0
  99. package/components/auth/signup.jsx +62 -0
  100. package/components/billing/stripe.api.js +267 -0
  101. package/components/partials/element/accordion.jsx +82 -0
  102. package/components/partials/element/avatar.jsx +28 -0
  103. package/components/partials/element/button.jsx +66 -0
  104. package/components/partials/element/dropdown.jsx +185 -0
  105. package/components/partials/element/initials.jsx +56 -0
  106. package/components/partials/element/message.jsx +124 -0
  107. package/components/partials/element/modal.jsx +229 -0
  108. package/components/partials/element/sidebar.jsx +166 -0
  109. package/components/partials/element/tooltip.jsx +146 -0
  110. package/components/partials/element/topbar.jsx +25 -0
  111. package/components/partials/form/checkbox.jsx +74 -0
  112. package/components/partials/form/drop-handler.jsx +62 -0
  113. package/components/partials/form/drop.jsx +125 -0
  114. package/components/partials/form/form-error.jsx +21 -0
  115. package/components/partials/form/input-color.jsx +77 -0
  116. package/components/partials/form/input-currency.jsx +133 -0
  117. package/components/partials/form/input-date.jsx +223 -0
  118. package/components/partials/form/input.jsx +131 -0
  119. package/components/partials/form/location.jsx +212 -0
  120. package/components/partials/form/select.jsx +369 -0
  121. package/components/partials/form/toggle.jsx +46 -0
  122. package/components/partials/is-first-render.js +15 -0
  123. package/components/partials/layout/layout1.jsx +32 -0
  124. package/components/partials/layout/layout2.jsx +47 -0
  125. package/components/partials/not-found.jsx +7 -0
  126. package/components/partials/styleguide.jsx +252 -0
  127. package/components/settings/settings-account.jsx +143 -0
  128. package/components/settings/settings-business.jsx +121 -0
  129. package/components/settings/settings-team--member.jsx +108 -0
  130. package/components/settings/settings-team.jsx +76 -0
  131. package/components/settings/settings.api.js +54 -0
  132. package/package.json +175 -0
  133. package/readme.md +43 -0
  134. package/server/email/index.js +192 -0
  135. package/server/email/partials/email.css +153 -0
  136. package/server/email/partials/layout1.swig +92 -0
  137. package/server/email/partials/line.swig +8 -0
  138. package/server/email/partials/vert-10.swig +8 -0
  139. package/server/email/partials/vert-15.swig +8 -0
  140. package/server/email/partials/vert-20.swig +8 -0
  141. package/server/email/partials/vert-25.swig +8 -0
  142. package/server/email/partials/vert-30.swig +8 -0
  143. package/server/email/partials/vert-35.swig +8 -0
  144. package/server/email/partials/vert-50.swig +8 -0
  145. package/server/email/reset-password.html +21 -0
  146. package/server/email/welcome.html +21 -0
  147. package/server/models/company.js +76 -0
  148. package/server/models/user.js +45 -0
  149. package/server/router.js +355 -0
  150. package/server.js +20 -0
  151. package/util.js +1145 -0
  152. package/webpack.config.js +302 -0
package/client/app.js ADDED
@@ -0,0 +1,300 @@
1
+ import { createBrowserRouter, redirect, useParams, RouterProvider } from 'react-router-dom'
2
+ import ReactDOM from 'react-dom/client'
3
+ import { createContainer } from 'react-tracked'
4
+ import { axios, camelCase, pick, toArray, setTimeoutPromise } from '../util.js'
5
+
6
+ export async function setupApp(config, layouts) {
7
+ // Fetch state and init app
8
+ const settings = {
9
+ middleware: Object.assign(defaultMiddleware, config.middleware || {}),
10
+ beforeApp: config.beforeApp || defaultBeforeApp,
11
+ beforeStoreUpdate: config.beforeStoreUpdate || defaultBeforeStoreUpdate,
12
+ layouts: layouts,
13
+ }
14
+ if (!settings.layouts) throw new Error('layouts are required')
15
+ const data = (await settings.beforeApp()) || {}
16
+ window.sharedStore = createStore(data, settings.beforeStoreUpdate)
17
+
18
+ const root = ReactDOM.createRoot(document.getElementById('app'))
19
+ root.render(<App settings={settings} />)
20
+ }
21
+
22
+ function App({ settings }) {
23
+ // Should only render once
24
+ const Provider = window.sharedStore.Provider
25
+ // const themeNormalised = theme
26
+ const router = getRouter(settings)
27
+ // const theme = pick(themeNormalised, []) // e.g. 'topPanelHeight'
28
+
29
+ useEffect(() => {
30
+ /**
31
+ * Save the scroll position before navigating to a new react route, works in react-router-dom@6.24.1
32
+ * https://stackoverflow.com/a/71399121/1900648
33
+ *
34
+ * We will need to save the scroll position to sessionStorage since popstate (via the back button) has already
35
+ * updated window.history.state before this function is called, but the route/layout has not yet changed.
36
+ *
37
+ * Note that an empty loader function is required in the route object for this to work. If missing, only the
38
+ * 'idle' event is fired, after route/layout change.
39
+ */
40
+ const sessionHistory = JSON.parse(sessionStorage.getItem('sessionHistory') || '{}')
41
+ router.subscribe((state, a, b) => { // eslint-disable-line
42
+ // @param state.historyAction - 'POP', 'PUSH', 'REPLACE'
43
+ // @param state.navigation.state - 'loading', 'idle' (after navigation)
44
+ if (state.navigation.state === 'idle') return
45
+ sessionHistory[state.location.key] = scrollbarElement().scrollTop // 100k pages == 1.6MB (we're good, lol)
46
+ sessionStorage.setItem('sessionHistory', JSON.stringify(sessionHistory))
47
+ })
48
+ }, [])
49
+
50
+ return (
51
+ <Provider>
52
+ {/* <ThemeProvider theme={themeNormalised}> */}
53
+ <RouterProvider router={router} />
54
+ <AfterApp settings={settings} />
55
+ {/* </ThemeProvider> */}
56
+ </Provider>
57
+ )
58
+ }
59
+
60
+ function AfterApp(settings) {
61
+ if (settings.afterApp) settings.afterApp()
62
+ return (null)
63
+ }
64
+
65
+ function createStore(newStoreData, beforeStoreUpdate) {
66
+ // @param {object} newStoreData - normally provided from a /login or /state request data
67
+ return createContainer(() => {
68
+ // Normally only setup once
69
+ // Fast reload - rebuilds <Root/>, and then createContainer() without providing the initialState
70
+ // Hot reload - rebuilds the whole app
71
+ let [store, setStore] = useState(() => beforeStoreUpdate(null, newStoreData || window.sharedStoreCache || {})) // runs only once
72
+
73
+ // Wrap the setState function to always run beforeStoreUpdate
74
+ const wrappedSetStore = (updater) => {
75
+ if (typeof updater === 'function') {
76
+ setStore((prevStore) => {
77
+ const nextState = updater(prevStore)
78
+ return beforeStoreUpdate(prevStore, nextState)
79
+ })
80
+ } else {
81
+ setStore((prevStore) => beforeStoreUpdate(prevStore, updater))
82
+ }
83
+ }
84
+
85
+ window.sharedStoreCache = store
86
+ newStoreData = null
87
+ return [store, wrappedSetStore]
88
+ })
89
+ }
90
+
91
+ function getRouter(settings) {
92
+ /**
93
+ * Get all routes from components folder
94
+ * @return {array} routes for for creatingBrowserRouter
95
+ */
96
+ // During build time, webpack returns `require` function, which also contains all matching files
97
+ // https://webpack.js.org/guides/dependency-management/#requirecontext
98
+
99
+ let requireContext
100
+ try {
101
+ requireContext = import.meta.webpackContext('componentsDir', { // components is the alias in webpack.config.js
102
+ recursive: true,
103
+ regExp: /(?<!\.api)\.(j|t)sx$/,
104
+ })
105
+ } catch (e) {
106
+ const text = 'Please add resolve.alias: { components: path.join(dirname, "components") } to your webpack configuration:'
107
+ console.error(text, e)
108
+ throw new Error(text)
109
+ }
110
+ // Loop files
111
+ // const components = {}
112
+ const layouts = []
113
+
114
+ for (const filename of requireContext.keys()) {
115
+ const file = requireContext(filename) // require
116
+
117
+ // Loop exported file components
118
+ for (const key in file) {
119
+ const isReactFnComponentOrFnRef = typeof file[key] === 'function' || !!file[key]?.render
120
+ if (!file.hasOwnProperty(key) || key.match(/route/i) || !isReactFnComponentOrFnRef) continue
121
+ const componentRoutes = toArray(file[key].route || file.route || file.Route)
122
+ const componentName = key || camelCase(key.replace(/^.*[\\\/]|\.jsx$/g, '')) // eslint-disable-line
123
+ // console.log(file)
124
+ // Todo: need to retrieve the original function name for default exports during minification.
125
+ // console.log(1, file[key].name, key, componentName, file[key])
126
+
127
+ // Create global component
128
+ // if (components[componentName]) continue
129
+ // components[componentName] = file[key]
130
+
131
+ // Loop component's routes
132
+ for (let i=0, l=componentRoutes.length; i<l; i++) {
133
+ const route = componentRoutes[i]
134
+ const routePaths = Object.keys(pick(route, /^(get\s+)?\/|^\*$/))
135
+
136
+ for (const routePath of routePaths) {
137
+ const layoutNum = (route.meta?.layout || 1) - 1
138
+ // get the routes middleware
139
+ const middleware = toArray(route[routePath]).filter(o => {
140
+ if (o === true) return // ignore true
141
+ else if (settings.middleware[o]) return true
142
+ else console.error(`No middleware named '${o}' defined under config.middleware, skipping..`)
143
+ })
144
+ // Push route to layout
145
+ if (!layouts[layoutNum]) layouts[layoutNum] = []
146
+ layouts[layoutNum].push({
147
+ component: file[key],
148
+ meta: {
149
+ ...(route.meta || {}),
150
+ layout: layoutNum,
151
+ },
152
+ middleware: middleware,
153
+ name: componentName,
154
+ path: routePath,
155
+ redirect: route.redirect,
156
+ })
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ // Generate createBrowserRouter array
163
+ let nonce
164
+ const createBrowserRouterArray = layouts.map((routes, i) => {
165
+ if (!routes) return
166
+ const Layout = settings.layouts[i]
167
+ if (!Layout) throw new Error(`Please pass Layout${i+1 || ''} to appSetup()`)
168
+ return {
169
+ // path: '/', // (disbaled: page component with path:'/' doesnt work)
170
+ element: <>
171
+ <Layout />
172
+ <RestoreScroll />
173
+ </>,
174
+ children: routes.map((route) => {
175
+ return {
176
+ element: <RouteComponent route={route} />,
177
+ path: route.path,
178
+ loader: async (/*{ request }*/) => {
179
+ // wait for sharedStore/sharedStoreCache to be setup
180
+ if (!nonce) nonce = true && await setTimeoutPromise(() => {}, 0) // eslint-disable-line
181
+ for (let key of route.middleware) {
182
+ let error = settings.middleware[key](route, window.sharedStoreCache||{})
183
+ if (error && error.redirect) {
184
+ return redirect(error.redirect)
185
+ }
186
+ }
187
+ return null
188
+ },
189
+ }
190
+ }),
191
+ }
192
+ }).filter(o => o)
193
+
194
+ // console.log(createBrowserRouterArray) ////////////////////////
195
+
196
+ // Create BrowserRouter (if there is no error above otheriwse router will be empty)
197
+ if (createBrowserRouterArray.length) {
198
+ return createBrowserRouter(createBrowserRouterArray)
199
+ }
200
+ }
201
+
202
+ function RestoreScroll() {
203
+ const location = useLocation()
204
+
205
+ useEffect(() => {
206
+ // Restore scroll position after navigation over 1 second to account for requests
207
+ const sessionHistory = JSON.parse(sessionStorage.getItem('sessionHistory') || '{}')
208
+ const previousScrollY = sessionHistory[location.key] || 0
209
+ // console.log(3, previousScrollY, window.history.state)
210
+ const attemptScroll = (attempts = 0) => {
211
+ if (scrollbarElement().scrollTop !== previousScrollY && attempts < 100) {
212
+ scrollbarElement().scrollTo(0, previousScrollY)
213
+ setTimeout(() => attemptScroll(attempts + 1), 10)
214
+ }
215
+ }
216
+ attemptScroll()
217
+ }, [location])
218
+
219
+ return (null)
220
+ }
221
+
222
+ function RouteComponent({ route }) {
223
+ const params = useParams()
224
+ const location = useLocation()
225
+ document.title = route.meta.title
226
+ return <route.component route={route} params={params} location={location} />
227
+ }
228
+
229
+ function scrollbarElement() {
230
+ // main element that has page scrollbar
231
+ // this needs to be non-body element otherwise the Modal.jsx doesn't open/close smoothly
232
+ return document.getElementById('app') // was window.scrollY
233
+ }
234
+
235
+ // ---- Overridable defaults ------------
236
+
237
+ async function defaultBeforeApp() {
238
+ /**
239
+ * Gets called once before React is initialised
240
+ * @return {promise} - newStoreData which is used for window.store, later merged with the config.store() defaults
241
+ */
242
+ let newStoreData
243
+ try {
244
+ // Unload prehot data
245
+ if (window.prehot) {
246
+ window.sharedStoreCache = window.prehot.sharedStoreCache
247
+ delete window.prehot
248
+ }
249
+ if (!window.sharedStoreCache) {
250
+ newStoreData = (await axios().get('/api/state', { 'axios-retry': { retries: 7 }, timeout: 4000 })).data
251
+ }
252
+ } catch (err) {
253
+ console.error('We had trouble connecting to the API, please refresh')
254
+ console.log(err)
255
+ }
256
+ return newStoreData || window.sharedStoreCache
257
+ }
258
+
259
+ function defaultBeforeStoreUpdate(store, newStoreData) {
260
+ /**
261
+ * Get store object (called on signup/signin/signout/state)
262
+ * @param {object} store - existing store
263
+ * @param {object} <newStoreData> - pass to override store with /login or /state request data
264
+ * @return {object} store
265
+ */
266
+ if (!newStoreData) return newStoreData
267
+ store = {
268
+ ...(store || {
269
+ message: null,
270
+ stripeProducts: [],
271
+ user: null, // defined if user is signed in
272
+ }),
273
+ ...(newStoreData || {}),
274
+ }
275
+
276
+ // Used to verify if the current cookie belongs to this user
277
+ // E.g. signout > signin (to a different user on another tab)
278
+ axios().defaults.headers.userid = store?.user?._id
279
+ return store
280
+ }
281
+
282
+ const defaultMiddleware = {
283
+ // Global middleware that can referenced from component routes
284
+ isAdmin: (route, store) => {
285
+ let user = store.user || { type: 'visitor' }
286
+ if (user.type.match(/admin/)) return
287
+ else if (user.type && user.type !== 'visitor') return { redirect: '/signin?unauth' }
288
+ else return { redirect: '/signin?signin' }
289
+ },
290
+ isSubscribed: (route, store) => {
291
+ let user = store.user || { type: 'visitor', company: {} }
292
+ if (!user.company.currentSubscription) return
293
+ else return { redirect: '/plans/subscribe' }
294
+ },
295
+ isUser: (route, store) => {
296
+ let user = store.user || { type: 'visitor' }
297
+ if (user.type !== 'visitor') return
298
+ else return { redirect: '/signin?signin' }
299
+ },
300
+ }
@@ -0,0 +1,84 @@
1
+
2
+ /* ---- Tailwind UI Components ---------- */
3
+
4
+ @layer base {
5
+ .border-bottom-with-space {
6
+ @apply relative mb-[6px] after:content-[""] after:absolute after:bottom-[-4px] after:left-0 after:h-[1px] after:w-full after:bg-gray-200;
7
+ }
8
+ }
9
+
10
+ @layer components {
11
+ .btn-blue {
12
+ @apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
13
+ }
14
+ }
15
+
16
+ /* ---- Typography (wysiwyg) ------------ */
17
+
18
+ .content {
19
+ ol a,
20
+ ul a,
21
+ p a {
22
+ text-decoration: none;
23
+ }
24
+ ol a:hover,
25
+ ul a:hover,
26
+ p a:hover,
27
+ ol a:focus,
28
+ ul a:focus,
29
+ p a:focus {
30
+ text-decoration: none;
31
+ }
32
+ }
33
+
34
+ /* ---- Elements --------------------- */
35
+
36
+ .underline1,
37
+ .underline2,
38
+ .underline3 {
39
+ /* e.g. new project subscribe title */
40
+ position: relative;
41
+ display: inline-block;
42
+ &:before {
43
+ content: "";
44
+ position: absolute;
45
+ bottom: 0.15em;
46
+ height: 1px;
47
+ width: 100%;
48
+ background-color: transparent;
49
+ transition: background 0.2s ease;
50
+ }
51
+ &.is-active,
52
+ &:hover {
53
+ &:before {
54
+ background-color: currentColor;
55
+ }
56
+ &.is-white:before {
57
+ background-color: white;
58
+ }
59
+ }
60
+ &.underline2:before {
61
+ bottom: 0.1em;
62
+ }
63
+ /* more of a dotted line, e.g. subscription features */
64
+ &.underline3 {
65
+ &:before {
66
+ bottom: -0.08em;
67
+ background: repeating-linear-gradient(90deg, currentColor 0 3px, transparent 0 6px) top;
68
+ opacity: 0.12;
69
+ transition: opacity 0.15s ease;
70
+ }
71
+ &.is-active,
72
+ &:hover {
73
+ &:before {
74
+ opacity: 1;
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+ /* ---- Misc ------------------------- */
81
+
82
+ .__PrivateStripeElementLoader {
83
+ display: none !important;
84
+ }
@@ -0,0 +1,67 @@
1
+
2
+ /* ---- Font Inter ------------ */
3
+
4
+ /* https://gwfh.mranftl.com/fonts/inter?subsets=latin */
5
+ /* inter-300 - latin */
6
+ @font-face {
7
+ font-display: swap;
8
+ font-family: 'Inter';
9
+ font-style: normal;
10
+ font-weight: 300;
11
+ src: url('/assets/fonts/inter-v13-latin-300.woff2') format('woff2');
12
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
13
+ }
14
+ /* inter-regular - latin */
15
+ @font-face {
16
+ font-display: swap;
17
+ font-family: 'Inter';
18
+ font-style: normal;
19
+ font-weight: 400;
20
+ src: url('/assets/fonts/inter-v13-latin-regular.woff2') format('woff2');
21
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
22
+ }
23
+ /* inter-500 - latin */
24
+ @font-face {
25
+ font-display: swap;
26
+ font-family: 'Inter';
27
+ font-style: normal;
28
+ font-weight: 500;
29
+ src: url('/assets/fonts/inter-v13-latin-500.woff2') format('woff2');
30
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
31
+ }
32
+ /* inter-600 - latin */
33
+ @font-face {
34
+ font-display: swap;
35
+ font-family: 'Inter';
36
+ font-style: normal;
37
+ font-weight: 600;
38
+ src: url('/assets/fonts/inter-v13-latin-600.woff2') format('woff2');
39
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
40
+ }
41
+ /* inter-700 - latin */
42
+ @font-face {
43
+ font-display: swap;
44
+ font-family: 'Inter';
45
+ font-style: normal;
46
+ font-weight: 700;
47
+ src: url('/assets/fonts/inter-v13-latin-700.woff2') format('woff2');
48
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
49
+ }
50
+ /* inter-800 - latin */
51
+ @font-face {
52
+ font-display: swap;
53
+ font-family: 'Inter';
54
+ font-style: normal;
55
+ font-weight: 800;
56
+ src: url('/assets/fonts/inter-v13-latin-800.woff2') format('woff2');
57
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
58
+ }
59
+ /* inter-900 - latin */
60
+ @font-face {
61
+ font-display: swap;
62
+ font-family: 'Inter';
63
+ font-style: normal;
64
+ font-weight: 900;
65
+ src: url('/assets/fonts/inter-v13-latin-900.woff2') format('woff2');
66
+ /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
67
+ }
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.5 3.5H13V3V2.5C13 2.0124 12.8443 1.58884 12.4698 1.313C12.1287 1.06182 11.6906 1 11.2778 1H2.72222C2.30939 1 1.87133 1.06182 1.53024 1.313C1.15567 1.58884 1 2.0124 1 2.5V3V3.5H1.5H12.5ZM1.5 4H1V4.5V11.2778C1 11.8402 1.28355 12.2851 1.66974 12.5738C2.0478 12.8564 2.53263 13 3.00698 13H11.2778C11.7597 13 12.2031 12.8506 12.5268 12.5268C12.8506 12.2031 13 11.7597 13 11.2778V4.5V4H12.5H1.5ZM0.5 2.52778C0.5 1.41483 1.41483 0.5 2.52778 0.5H11.4722C12.5852 0.5 13.5 1.41483 13.5 2.52778V11.4722C13.5 12.5852 12.5852 13.5 11.4722 13.5H2.52778C1.41483 13.5 0.5 12.5852 0.5 11.4722V2.52778ZM3.36053 6.47164C3.44909 6.38309 3.5692 6.33333 3.69444 6.33333C3.81969 6.33333 3.9398 6.38309 4.02836 6.47164C4.11692 6.5602 4.16667 6.68032 4.16667 6.80556C4.16667 6.9308 4.11692 7.05091 4.02836 7.13947C3.9398 7.22803 3.81969 7.27778 3.69444 7.27778C3.5692 7.27778 3.44909 7.22803 3.36053 7.13947C3.27197 7.05091 3.22222 6.9308 3.22222 6.80556C3.22222 6.68031 3.27197 6.5602 3.36053 6.47164ZM6.66609 6.47164C6.75465 6.38309 6.87476 6.33333 7 6.33333C7.12524 6.33333 7.24535 6.38309 7.33391 6.47164C7.42247 6.5602 7.47222 6.68031 7.47222 6.80556C7.47222 6.9308 7.42247 7.05091 7.33391 7.13947C7.24535 7.22803 7.12524 7.27778 7 7.27778C6.87476 7.27778 6.75465 7.22803 6.66609 7.13947C6.57753 7.05091 6.52778 6.9308 6.52778 6.80556C6.52778 6.68032 6.57753 6.5602 6.66609 6.47164ZM9.97164 6.47164C10.0602 6.38309 10.1803 6.33333 10.3056 6.33333C10.4308 6.33333 10.5509 6.38309 10.6395 6.47164C10.728 6.5602 10.7778 6.68031 10.7778 6.80556C10.7778 6.9308 10.728 7.05091 10.6395 7.13947C10.5509 7.22803 10.4308 7.27778 10.3056 7.27778C10.1803 7.27778 10.0602 7.22803 9.97164 7.13947C9.88309 7.05091 9.83333 6.9308 9.83333 6.80556C9.83333 6.68031 9.88309 6.5602 9.97164 6.47164ZM3.36053 9.97164C3.44909 9.88309 3.5692 9.83333 3.69444 9.83333C3.81969 9.83333 3.9398 9.88309 4.02836 9.97164C4.11692 10.0602 4.16667 10.1803 4.16667 10.3056C4.16667 10.4308 4.11691 10.5509 4.02836 10.6395C3.9398 10.728 3.81969 10.7778 3.69444 10.7778C3.5692 10.7778 3.44909 10.728 3.36053 10.6395C3.27197 10.5509 3.22222 10.4308 3.22222 10.3056C3.22222 10.1803 3.27197 10.0602 3.36053 9.97164ZM6.66609 9.97164C6.75465 9.88309 6.87476 9.83333 7 9.83333C7.12524 9.83333 7.24535 9.88309 7.33391 9.97164C7.42247 10.0602 7.47222 10.1803 7.47222 10.3056C7.47222 10.4308 7.42247 10.5509 7.33391 10.6395C7.24535 10.728 7.12524 10.7778 7 10.7778C6.87476 10.7778 6.75465 10.728 6.66609 10.6395C6.57753 10.5509 6.52778 10.4308 6.52778 10.3056C6.52778 10.1803 6.57753 10.0602 6.66609 9.97164Z" stroke="#D6CBE2"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="13" height="10" viewBox="0 0 13 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <rect x="0.85" y="0.85" width="11.3" height="8.3" rx="1.15" stroke="#D6CBE2" stroke-width="1.7"/>
4
+ <path d="M1 2.5L5.35117 5.26893C6.04435 5.71004 6.93679 5.68234 7.60127 5.19908L12 2" stroke="#D6CBE2" stroke-width="1.7"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="17" height="12" viewBox="0 0 17 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M16.1142 5.9414L16.1143 5.94168L16.1462 6.00025L16.1144 6.05878C14.5319 8.96792 11.6062 10.75 8.5 10.75C5.39365 10.75 2.46796 8.96776 0.885708 6.05893C0.885684 6.05889 0.885659 6.05884 0.885634 6.05879L0.853633 5.99993L0.885415 5.94145C2.46806 3.03206 5.39362 1.25 8.5 1.25C11.6062 1.25 14.5319 3.03227 16.1142 5.9414Z" stroke="#8D8399" stroke-width="1.5"/>
3
+ <path d="M10.75 6C10.75 7.24264 9.74264 8.25 8.5 8.25C7.25736 8.25 6.25 7.24264 6.25 6C6.25 4.75736 7.25736 3.75 8.5 3.75C9.74264 3.75 10.75 4.75736 10.75 6Z" stroke="#8D8399" stroke-width="1.5"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="17" height="12" viewBox="0 0 17 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M16.1142 5.9414L16.1143 5.94168L16.1462 6.00025L16.1144 6.05878C14.5319 8.96792 11.6062 10.75 8.5 10.75C5.39365 10.75 2.46796 8.96776 0.885708 6.05893C0.885684 6.05889 0.885659 6.05884 0.885634 6.05879L0.853633 5.99993L0.885415 5.94145C2.46806 3.03206 5.39362 1.25 8.5 1.25C11.6062 1.25 14.5319 3.03227 16.1142 5.9414Z" stroke="#8D8399" stroke-width="1.5"/>
3
+ <path d="M10.75 6C10.75 7.24264 9.74264 8.25 8.5 8.25C7.25736 8.25 6.25 7.24264 6.25 6C6.25 4.75736 7.25736 3.75 8.5 3.75C9.74264 3.75 10.75 4.75736 10.75 6Z" stroke="#8D8399" stroke-width="1.5"/>
4
+ <path d="M2 9.5L15 2.5" stroke="#FBFBFB" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <rect width="12" height="2" rx="1" fill="#D6CBE2"/>
4
+ <rect x="2" y="4" width="8" height="2" rx="1" fill="#D6CBE2"/>
5
+ <rect x="4" y="8" width="4" height="2" rx="1" fill="#D6CBE2"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.22222 5.66667L4.88889 8M4.88889 8L7.22222 10.3333M4.88889 8H11.1111M1 8C1 11.866 4.13401 15 8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="7" height="11" viewBox="0 0 7 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M5.01779 1.09998L1.01779 5.49998L5.01779 9.89998" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="37" viewBox="0 0 24 37" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="11.8934" cy="25" r="2" fill="#3A3942"/>
3
+ <circle cx="11.8934" cy="18" r="2" fill="#3A3942"/>
4
+ <circle cx="11.8934" cy="11" r="2" fill="#3A3942"/>
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="3" height="18" viewBox="0 0 3 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <line x1="1.5" y1="2.18557e-08" x2="1.5" y2="18" stroke="#EEEDEF"/>
3
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <path d="M13 7.00002H10.3333M11.6667 8.33335L11.6667 5.66669" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
4
+ <path d="M1 11.741C1 10.1323 2.13155 8.76197 3.66936 8.50843L3.80788 8.4856C5.03928 8.28258 6.29405 8.28258 7.52545 8.4856L7.66397 8.50843C9.20178 8.76197 10.3333 10.1323 10.3333 11.741C10.3333 12.4363 9.78768 13 9.11458 13H2.21875C1.54565 13 1 12.4363 1 11.741Z" stroke="white" stroke-width="1.5"/>
5
+ <path d="M8.3889 3.625C8.3889 5.07475 7.17012 6.25 5.66668 6.25C4.16324 6.25 2.94446 5.07475 2.94446 3.625C2.94446 2.17525 4.16324 1 5.66668 1C7.17012 1 8.3889 2.17525 8.3889 3.625Z" stroke="white" stroke-width="1.5"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="14.5" cy="14.5" r="13.5" stroke="#E8E8E8" stroke-width="2"/>
3
+ <line x1="14.5" y1="18.5" x2="14.5" y2="10.5" stroke="#1E1D20" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <line x1="18.5" y1="14.5" x2="10.5" y2="14.5" stroke="#1E1D20" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <path d="M1.5 6H10.5M6 1.5L6 10.5" stroke="white" stroke-width="1.8" stroke-linecap="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.77778 10.3333L11.1111 8M11.1111 8L8.77778 5.66667M11.1111 8H4.88889M15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15C11.866 15 15 11.866 15 8Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="7" height="11" viewBox="0 0 7 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M1.93219 9.90002L5.93219 5.50002L1.93219 1.10002" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="13" height="14" viewBox="0 0 13 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10.2275 9.59501C10.2576 9.61776 10.2868 9.64294 10.3145 9.67057L12.752 12.1081C12.8296 12.183 12.8915 12.2727 12.934 12.3718C12.9766 12.4709 12.999 12.5776 13 12.6854C13.0009 12.7933 12.9804 12.9003 12.9395 13.0002C12.8986 13.1 12.8383 13.1907 12.762 13.267C12.6857 13.3433 12.595 13.4036 12.4952 13.4445C12.3953 13.4853 12.2883 13.5059 12.1804 13.505C12.0726 13.504 11.9659 13.4816 11.8668 13.439C11.7677 13.3964 11.678 13.3345 11.6031 13.2569L9.16558 10.8194C9.13839 10.7923 9.11314 10.7632 9.09002 10.7325C7.93912 11.5957 6.50386 11.9906 5.07338 11.8378C3.64289 11.685 2.32346 10.9958 1.38087 9.90897C0.438275 8.82215 -0.0574365 7.41851 -0.006413 5.98079C0.0446105 4.54306 0.638577 3.17809 1.65584 2.16083C2.6731 1.14357 4.03807 0.5496 5.4758 0.498577C6.91352 0.447553 8.31716 0.943264 9.40398 1.88586C10.4908 2.82845 11.18 4.14788 11.3328 5.57837C11.4857 7.00885 11.0907 8.44411 10.2275 9.59501ZM5.67751 10.245C6.75496 10.245 7.78827 9.81699 8.55014 9.05513C9.31201 8.29326 9.74002 7.25995 9.74002 6.1825C9.74002 5.10506 9.31201 4.07175 8.55014 3.30988C7.78827 2.54801 6.75496 2.12 5.67751 2.12C4.60007 2.12 3.56676 2.54801 2.80489 3.30988C2.04302 4.07175 1.61501 5.10506 1.61501 6.1825C1.61501 7.25995 2.04302 8.29326 2.80489 9.05513C3.56676 9.81699 4.60007 10.245 5.67751 10.245Z" fill="#D6CBE2"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="14" height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <path d="M9.90654 13.8235L10.042 13.7264C10.4657 13.4226 10.6776 13.2706 10.8671 13.1077C11.8971 12.2225 12.5888 10.9885 12.8191 9.62598C12.8614 9.37522 12.8835 9.10994 12.9275 8.5794L12.9503 8.30507C13.0232 7.4269 13.0159 6.54361 12.9286 5.66685L12.9015 5.39553C12.7487 3.86121 11.8404 2.51644 10.4983 1.83738C8.29161 0.720874 5.70839 0.720874 3.50169 1.83738C2.15956 2.51644 1.25128 3.86121 1.09845 5.39553L1.07143 5.66685C0.984097 6.54361 0.97683 7.4269 1.04972 8.30507L1.07249 8.5794C1.11653 9.10994 1.13855 9.37522 1.18092 9.62598C1.41116 10.9885 2.10292 12.2225 3.13285 13.1077C3.32239 13.2706 3.53433 13.4226 3.95805 13.7264L4.09346 13.8235C4.66955 14.2366 4.95762 14.4432 5.24631 14.5868C6.35447 15.1377 7.64553 15.1377 8.75369 14.5868C9.04238 14.4432 9.33045 14.2367 9.90654 13.8235Z" stroke="white" stroke-width="1.5"/>
4
+ <path d="M4.82291 7.8021L6.40624 9.38544L9.17707 6.41669" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <circle cx="10" cy="10" r="9.25" stroke="#7647DA" stroke-width="1.5"/>
4
+ <path d="M6.55145 10.2475L9.27492 13.0064L13.425 7.04828" stroke="#7647DA" stroke-width="1.5" stroke-linejoin="round"/>
5
+ <circle cx="10" cy="10" r="10" fill="#8656ED"/>
6
+ <path d="M5.88235 9.80394L8.62745 12.549L14.1176 7.05884" stroke="white" stroke-width="2.35294"/>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <circle cx="10" cy="10" r="9.25" stroke="#7647DA" stroke-width="1.5"/>
4
+ <path d="M6.55145 10.2475L9.27492 13.0064L13.425 7.04828" stroke="#7647DA" stroke-width="1.5" stroke-linejoin="round"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <path d="M10.8 1L3.94287 9L1.20001 5.8" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="14" height="19" viewBox="0 0 14 19" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 16.72H14V19H0V16.72Z" fill="#D6CBE2"/>
3
+ <path d="M5.64095 12.8102V5.17819C5.64095 5.17819 3.6021 7.65608 2.93926 8.22031C2.27642 8.78454 0.847125 7.52269 1.33939 6.67005C1.64216 6.14565 3.2952 3.64443 4.38675 2.2717C5.4783 0.898964 5.8342 0.624404 6.28508 0.235452C6.73595 -0.153499 7.4478 0.00658673 7.75629 0.235409L7.76852 0.244473C8.07639 0.472719 8.51675 0.799185 9.65465 2.2717C10.8123 3.76972 12.1189 5.7509 12.7031 6.67005C13.2872 7.5892 11.6963 8.69302 11.0862 8.22031C10.476 7.7476 8.40897 5.17819 8.40897 5.17819V12.8102C8.40897 13.8258 5.64095 13.8079 5.64095 12.8102Z" fill="#D6CBE2"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="18" height="25" viewBox="0 0 18 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 22H18V25H0V22Z" fill="#D6CBE2"/>
3
+ <path d="M7.25265 16.8555V6.81341C7.25265 6.81341 4.63127 10.0738 3.77905 10.8162C2.92683 11.5586 1.08916 9.89827 1.72208 8.77638C2.11134 8.08638 4.23668 4.7953 5.64011 2.98907C7.04353 1.18285 7.50112 0.821585 8.08081 0.309806C8.66051 -0.201973 9.57574 0.00866675 9.97238 0.309749L9.98809 0.321675C10.3839 0.621999 10.9501 1.05156 12.4131 2.98907C13.9015 4.96016 15.5814 7.56698 16.3325 8.77638C17.0836 9.98579 15.0381 11.4382 14.2536 10.8162C13.4692 10.1942 10.8115 6.81341 10.8115 6.81341V16.8555C10.8115 18.1918 7.25265 18.1683 7.25265 16.8555Z" fill="#D6CBE2"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="10" height="15" viewBox="0 0 10 15" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g>
3
+ <path d="M1 10.1818L5 13.3636L9 10.1818" stroke="#D6CBE2" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M1 4.18182L5 1.00001L9 4.18182" stroke="#D6CBE2" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="18" height="12" viewBox="0 0 18 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M3.71043 3.82593L9.0065 8.7079L14.3026 3.82593" stroke="#3A3942" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="9" viewBox="0 0 14 9" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M2.88589 2.86945L7.00506 6.53092L11.1242 2.86945" stroke="#3A3942" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="9" viewBox="0 0 14 9" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M2.88589 2.86945L7.00506 6.53092L11.1242 2.86945" stroke="#D6CBE2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="11" height="11" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <mask id="path-1-inside-1_3047_23129" fill="white">
3
+ <path d="M5.50001 0.0649414L10.4498 5.01469L5.50001 9.96444L0.55026 5.01469L5.50001 0.0649414Z"/>
4
+ </mask>
5
+ <path d="M5.50001 9.96444L4.08579 11.3786L5.50001 12.7929L6.91422 11.3786L5.50001 9.96444ZM9.03554 3.60048L4.08579 8.55022L6.91422 11.3786L11.864 6.4289L9.03554 3.60048ZM6.91422 8.55022L1.96447 3.60048L-0.863953 6.4289L4.08579 11.3786L6.91422 8.55022Z" fill="black" mask="url(#path-1-inside-1_3047_23129)"/>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <line y1="-1" x2="16" y2="-1" transform="matrix(0.707104 0.70711 -0.707104 0.70711 1.17761 2.59583)" stroke="black" stroke-width="2"/>
3
+ <line y1="-1" x2="16" y2="-1" transform="matrix(0.707107 -0.707107 0.707112 0.707101 2.50867 13.9096)" stroke="black" stroke-width="2"/>
4
+ </svg>