Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
7a7fdc05
Unverified
Commit
7a7fdc05
authored
Sep 23, 2022
by
tom goriunov
Committed by
GitHub
Sep 23, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'main' into tx-internal-filters-and-search
parents
46ff91ae
33b1ad24
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
322 additions
and
41 deletions
+322
-41
apps.ts
data/apps.ts
+20
-0
empty_search_result.svg
icons/empty_search_result.svg
+2
-2
star_outline.svg
icons/star_outline.svg
+3
-0
Tag.ts
theme/components/Tag.ts
+1
-0
breakpoints.ts
theme/foundations/breakpoints.ts
+2
-2
apps.ts
types/client/apps.ts
+5
-4
AppList.tsx
ui/apps/AppList.tsx
+2
-2
AppModal.tsx
ui/apps/AppModal.tsx
+245
-0
NavLink.tsx
ui/blocks/navigation/NavLink.tsx
+31
-30
Apps.tsx
ui/pages/Apps.tsx
+11
-1
No files found.
data/apps.ts
View file @
7a7fdc05
...
@@ -4,6 +4,7 @@ import { APP_CATEGORIES } from 'ui/apps/constants';
...
@@ -4,6 +4,7 @@ import { APP_CATEGORIES } from 'ui/apps/constants';
export
const
TEMPORARY_DEMO_APPS
:
Array
<
AppItemOverview
>
=
[
export
const
TEMPORARY_DEMO_APPS
:
Array
<
AppItemOverview
>
=
[
{
{
author
:
'
xDaichain
'
,
id
:
'
easy-staking
'
,
id
:
'
easy-staking
'
,
title
:
'
Easy Staking
'
,
title
:
'
Easy Staking
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -18,6 +19,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -18,6 +19,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
curve
'
,
id
:
'
curve
'
,
title
:
'
Curve
'
,
title
:
'
Curve
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -33,6 +35,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -33,6 +35,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
honwyswap
'
,
id
:
'
honwyswap
'
,
title
:
'
HonwySwap
'
,
title
:
'
HonwySwap
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -48,6 +51,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -48,6 +51,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
sushi
'
,
id
:
'
sushi
'
,
title
:
'
Sushi
'
,
title
:
'
Sushi
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -61,6 +65,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -61,6 +65,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
bao-finance
'
,
id
:
'
bao-finance
'
,
title
:
'
Bao Finance
'
,
title
:
'
Bao Finance
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -74,6 +79,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -74,6 +79,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
component
'
,
id
:
'
component
'
,
title
:
'
Component
'
,
title
:
'
Component
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -89,6 +95,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -89,6 +95,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
pooltogether
'
,
id
:
'
pooltogether
'
,
title
:
'
PoolTogether
'
,
title
:
'
PoolTogether
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -102,6 +109,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -102,6 +109,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
swapr
'
,
id
:
'
swapr
'
,
title
:
'
Swapr
'
,
title
:
'
Swapr
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -115,6 +123,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -115,6 +123,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
levinswap
'
,
id
:
'
levinswap
'
,
title
:
'
Levinswap
'
,
title
:
'
Levinswap
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -129,6 +138,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -129,6 +138,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
omen
'
,
id
:
'
omen
'
,
title
:
'
Omen
'
,
title
:
'
Omen
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -142,6 +152,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -142,6 +152,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
nifty-ink
'
,
id
:
'
nifty-ink
'
,
title
:
'
Nifty Ink
'
,
title
:
'
Nifty Ink
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -155,6 +166,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -155,6 +166,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
treasure-chess
'
,
id
:
'
treasure-chess
'
,
title
:
'
Treasure Chess
'
,
title
:
'
Treasure Chess
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -168,6 +180,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -168,6 +180,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
unique-one
'
,
id
:
'
unique-one
'
,
title
:
'
Unique.One
'
,
title
:
'
Unique.One
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -183,6 +196,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -183,6 +196,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
cold-truth-culture
'
,
id
:
'
cold-truth-culture
'
,
title
:
'
Cold Truth Culture
'
,
title
:
'
Cold Truth Culture
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -196,6 +210,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -196,6 +210,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
xdai-bridge
'
,
id
:
'
xdai-bridge
'
,
title
:
'
xDai Bridge
'
,
title
:
'
xDai Bridge
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -209,6 +224,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -209,6 +224,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
omni-bridge
'
,
id
:
'
omni-bridge
'
,
title
:
'
OmniBridge
'
,
title
:
'
OmniBridge
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -222,6 +238,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -222,6 +238,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
gnosis-safe
'
,
id
:
'
gnosis-safe
'
,
title
:
'
Gnosis Safe
'
,
title
:
'
Gnosis Safe
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -235,6 +252,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -235,6 +252,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
multisender
'
,
id
:
'
multisender
'
,
title
:
'
Multisender
'
,
title
:
'
Multisender
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -250,6 +268,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -250,6 +268,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
disperse
'
,
id
:
'
disperse
'
,
title
:
'
Disperse
'
,
title
:
'
Disperse
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
@@ -263,6 +282,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
...
@@ -263,6 +282,7 @@ export const TEMPORARY_DEMO_APPS: Array<AppItemOverview> = [
github
:
'
https://github.com/mikhin
'
,
github
:
'
https://github.com/mikhin
'
,
},
},
{
{
author
:
'
xDaichain
'
,
id
:
'
symmetric
'
,
id
:
'
symmetric
'
,
title
:
'
Symmetric
'
,
title
:
'
Symmetric
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
logo
:
'
https://www.fillmurray.com/144/144
'
,
...
...
icons/empty_search_result.svg
View file @
7a7fdc05
<svg
viewBox=
"0 0 240 192"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<svg
viewBox=
"0 0 240 192"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M82.667 4H56a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4ZM56 0a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V8a8 8 0 0 0-8-8H56Zm122.667 4H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4ZM152 0a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V8a8 8 0 0 0-8-8H152ZM56 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H56a4 4 0 0 1-4-4V56a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H56a8 8 0 0 1-8-8V56Zm34.667 44H56a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V104a4 4 0 0 0-4-4ZM56 96a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V104a8 8 0 0 0-8-8H56Zm0 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H56a4 4 0 0 1-4-4V152a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H56a8 8 0 0 1-8-8V152ZM178.667 52H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V56a4 4 0 0 0-4-4ZM152 48a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8H152Zm0 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H152a4 4 0 0 1-4-4V104a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H152a8 8 0 0 1-8-8V104Zm34.667 44H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V152a4 4 0 0 0-4-4ZM152 144a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V152a8 8 0 0 0-8-8H152ZM8 28h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V32Zm104-4h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H104a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8V32Zm130.667-4H200a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V32a4 4 0 0 0-4-4ZM200 24a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V32a8 8 0 0 0-8-8H200Zm-96 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H104a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8V80Zm34.667 44H104a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM104 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H104Zm96-44h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H200a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H200a8 8 0 0 1-8-8V80Zm34.667 44H200a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM200 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H200ZM8 76h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V80Zm34.667 44H8a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM8 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H8Z"
fill=
"url(#empty_svg__a)"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M82.667 4H56a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4ZM56 0a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V8a8 8 0 0 0-8-8H56Zm122.667 4H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4ZM152 0a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V8a8 8 0 0 0-8-8H152ZM56 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H56a4 4 0 0 1-4-4V56a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H56a8 8 0 0 1-8-8V56Zm34.667 44H56a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V104a4 4 0 0 0-4-4ZM56 96a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V104a8 8 0 0 0-8-8H56Zm0 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H56a4 4 0 0 1-4-4V152a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H56a8 8 0 0 1-8-8V152ZM178.667 52H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V56a4 4 0 0 0-4-4ZM152 48a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8H152Zm0 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H152a4 4 0 0 1-4-4V104a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H152a8 8 0 0 1-8-8V104Zm34.667 44H152a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V152a4 4 0 0 0-4-4ZM152 144a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V152a8 8 0 0 0-8-8H152ZM8 28h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V32Zm104-4h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H104a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8V32Zm130.667-4H200a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V32a4 4 0 0 0-4-4ZM200 24a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V32a8 8 0 0 0-8-8H200Zm-96 52h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H104a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8V80Zm34.667 44H104a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM104 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H104Zm96-44h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H200a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H200a8 8 0 0 1-8-8V80Zm34.667 44H200a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM200 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H200ZM8 76h26.667a4 4 0 0 1 4 4v26.667a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4V80a4 4 0 0 1 4-4Zm-8 4a8 8 0 0 1 8-8h26.667a8 8 0 0 1 8 8v26.667a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V80Zm34.667 44H8a4 4 0 0 0-4 4v26.667a4 4 0 0 0 4 4h26.667a4 4 0 0 0 4-4V128a4 4 0 0 0-4-4ZM8 120a8 8 0 0 0-8 8v26.667a8 8 0 0 0 8 8h26.667a8 8 0 0 0 8-8V128a8 8 0 0 0-8-8H8Z"
fill=
"url(#empty_s
earch_result_s
vg__a)"
/>
<path
d=
"m135.337 94.376 11.182 11.242-3.694 3.715-11.18-11.245a23.31 23.31 0 0 1-14.666 5.17c-12.971 0-23.498-10.586-23.498-23.629C93.48 66.586 104.008 56 116.979 56c12.971 0 23.499 10.586 23.499 23.629a23.614 23.614 0 0 1-5.141 14.747Zm-5.238-1.948a18.372 18.372 0 0 0 5.157-12.799c0-10.155-8.18-18.378-18.277-18.378-10.099 0-18.276 8.223-18.276 18.378 0 10.153 8.177 18.378 18.276 18.378a18.166 18.166 0 0 0 12.729-5.185l.391-.394Z"
fill=
"#A0AEC0"
/>
<path
d=
"m135.337 94.376 11.182 11.242-3.694 3.715-11.18-11.245a23.31 23.31 0 0 1-14.666 5.17c-12.971 0-23.498-10.586-23.498-23.629C93.48 66.586 104.008 56 116.979 56c12.971 0 23.499 10.586 23.499 23.629a23.614 23.614 0 0 1-5.141 14.747Zm-5.238-1.948a18.372 18.372 0 0 0 5.157-12.799c0-10.155-8.18-18.378-18.277-18.378-10.099 0-18.276 8.223-18.276 18.378 0 10.153 8.177 18.378 18.276 18.378a18.166 18.166 0 0 0 12.729-5.185l.391-.394Z"
fill=
"#A0AEC0"
/>
<defs>
<defs>
<radialGradient
id=
"empty_svg__a"
cx=
"0"
cy=
"0"
r=
"1"
gradientUnits=
"userSpaceOnUse"
gradientTransform=
"rotate(103.716 25.035 85.404) scale(58.3301 137.703)"
>
<radialGradient
id=
"empty_s
earch_result_s
vg__a"
cx=
"0"
cy=
"0"
r=
"1"
gradientUnits=
"userSpaceOnUse"
gradientTransform=
"rotate(103.716 25.035 85.404) scale(58.3301 137.703)"
>
<stop
offset=
".081"
stop-color=
"#CBD5E0"
stop-opacity=
"0"
/>
<stop
offset=
".081"
stop-color=
"#CBD5E0"
stop-opacity=
"0"
/>
<stop
offset=
".563"
stop-color=
"#CBD5E0"
stop-opacity=
".54"
/>
<stop
offset=
".563"
stop-color=
"#CBD5E0"
stop-opacity=
".54"
/>
<stop
offset=
"1"
stop-color=
"#CBD5E0"
stop-opacity=
"0"
/>
<stop
offset=
"1"
stop-color=
"#CBD5E0"
stop-opacity=
"0"
/>
...
...
icons/star_outline.svg
0 → 100644
View file @
7a7fdc05
<svg
viewBox=
"0 0 18 18"
fill=
"currentColor"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M13.76 17.333a.604.604 0 0 1-.294-.075l.293.075Zm.004 0a.625.625 0 0 0 .477-.234.671.671 0 0 0 .14-.538l-.853-5.21 3.615-3.689a.69.69 0 0 0 .16-.677.663.663 0 0 0-.194-.301.617.617 0 0 0-.316-.149l-4.884-.743a.208.208 0 0 1-.157-.117l-2.186-4.64a.65.65 0 0 0-.233-.269.61.61 0 0 0-.666 0 .65.65 0 0 0-.232.269l-2.186 4.64a.208.208 0 0 1-.158.117l-4.884.743a.618.618 0 0 0-.316.149.663.663 0 0 0-.193.3.69.69 0 0 0 .16.678l3.54 3.614a.208.208 0 0 1 .058.18l-.837 5.105a.69.69 0 0 0 .038.36.657.657 0 0 0 .213.286.613.613 0 0 0 .663.05L8.9 14.854a.208.208 0 0 1 .2 0l4.366 2.405m-7.795-2.915c-.028.172.154.3.307.216L8.9 12.95a.208.208 0 0 1 .2 0l2.923 1.61a.208.208 0 0 0 .306-.216l-.566-3.452a.208.208 0 0 1 .057-.18l2.486-2.536a.208.208 0 0 0-.118-.351l-3.408-.519a.208.208 0 0 1-.157-.117L9.189 4.145a.208.208 0 0 0-.377 0L7.378 7.19a.208.208 0 0 1-.158.117l-3.408.519a.208.208 0 0 0-.117.351l2.485 2.537a.208.208 0 0 1 .057.18l-.566 3.45Zm8.093 2.99h-.003.003Z"
fill=
"#4A5568"
/>
</svg>
theme/components/Tag.ts
View file @
7a7fdc05
...
@@ -23,6 +23,7 @@ const sizes = {
...
@@ -23,6 +23,7 @@ const sizes = {
minH
:
6
,
minH
:
6
,
minW
:
6
,
minW
:
6
,
fontSize
:
'
sm
'
,
fontSize
:
'
sm
'
,
lineHeight
:
'
sm
'
,
px
:
2
,
px
:
2
,
py
:
'
2px
'
,
py
:
'
2px
'
,
},
},
...
...
theme/foundations/breakpoints.ts
View file @
7a7fdc05
const
breakpoints
=
{
const
breakpoints
=
{
// maybe we need them in future
// maybe we need them in future
// sm: '320
px',
sm
:
'
414
px
'
,
// md: '768px',
// md: '768px',
lg
:
'
1000px
'
,
lg
:
'
1000px
'
,
xl
:
'
1440px
'
,
xl
:
'
1440px
'
,
// these breakpoint are needed just to make others work
// these breakpoint are needed just to make others work
...
...
types/client/apps.ts
View file @
7a7fdc05
...
@@ -12,10 +12,11 @@ export type AppItemPreview = {
...
@@ -12,10 +12,11 @@ export type AppItemPreview = {
}
}
export
type
AppItemOverview
=
AppItemPreview
&
{
export
type
AppItemOverview
=
AppItemPreview
&
{
author
:
string
;
url
:
string
;
url
:
string
;
description
:
string
;
description
:
string
;
site
:
string
;
site
?
:
string
;
twitter
:
string
;
twitter
?
:
string
;
telegram
:
string
;
telegram
?
:
string
;
github
:
string
;
github
?
:
string
;
}
}
ui/apps/AppList.tsx
View file @
7a7fdc05
import
{
Grid
,
GridItem
,
VisuallyHidden
,
Heading
}
from
'
@chakra-ui/react
'
;
import
{
Grid
,
GridItem
,
VisuallyHidden
,
Heading
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
AppItem
Over
view
}
from
'
types/client/apps
'
;
import
type
{
AppItem
Pre
view
}
from
'
types/client/apps
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
AppCard
from
'
ui/apps/AppCard
'
;
import
AppCard
from
'
ui/apps/AppCard
'
;
import
EmptySearchResult
from
'
ui/apps/EmptySearchResult
'
;
import
EmptySearchResult
from
'
ui/apps/EmptySearchResult
'
;
type
Props
=
{
type
Props
=
{
apps
:
Array
<
AppItem
Over
view
>
;
apps
:
Array
<
AppItem
Pre
view
>
;
}
}
const
AppList
=
({
apps
}:
Props
)
=>
{
const
AppList
=
({
apps
}:
Props
)
=>
{
...
...
ui/apps/AppModal.tsx
0 → 100644
View file @
7a7fdc05
import
{
LinkIcon
,
StarIcon
}
from
'
@chakra-ui/icons
'
;
import
{
Box
,
Button
,
Heading
,
Icon
,
IconButton
,
Image
,
Link
,
List
,
Modal
,
ModalBody
,
ModalCloseButton
,
ModalContent
,
ModalFooter
,
ModalHeader
,
ModalOverlay
,
Tag
,
Text
,
}
from
'
@chakra-ui/react
'
;
import
type
{
FunctionComponent
}
from
'
react
'
;
import
React
,
{
useCallback
}
from
'
react
'
;
import
type
{
AppCategory
,
AppItemOverview
}
from
'
types/client/apps
'
;
import
{
TEMPORARY_DEMO_APPS
}
from
'
data/apps
'
;
import
ghIcon
from
'
icons/social/git.svg
'
;
import
tgIcon
from
'
icons/social/telega.svg
'
;
import
twIcon
from
'
icons/social/tweet.svg
'
;
import
starOutlineIcon
from
'
icons/star_outline.svg
'
;
import
{
nbsp
}
from
'
lib/html-entities
'
;
type
Props
=
{
id
:
string
|
null
;
onClose
:
()
=>
void
;
}
const
AppModal
=
({
id
,
onClose
,
}:
Props
)
=>
{
const
handleFavorite
=
useCallback
(()
=>
{
// TODO: implement
},
[]);
if
(
!
id
)
{
return
null
;
}
const
{
title
,
author
,
description
,
url
,
site
,
github
,
telegram
,
twitter
,
logo
,
categories
,
}
=
TEMPORARY_DEMO_APPS
.
find
(
app
=>
app
.
id
===
id
)
as
AppItemOverview
;
const
isFavorite
=
false
;
const
socialLinks
=
[
Boolean
(
telegram
)
&&
{
icon
:
tgIcon
,
url
:
telegram
,
},
Boolean
(
twitter
)
&&
{
icon
:
twIcon
,
url
:
twitter
,
},
Boolean
(
github
)
&&
{
icon
:
ghIcon
,
url
:
github
,
},
].
filter
(
Boolean
)
as
Array
<
{
icon
:
FunctionComponent
;
url
:
string
}
>
;
return
(
<
Modal
isOpen=
{
Boolean
(
id
)
}
onClose=
{
onClose
}
size=
{
{
base
:
'
full
'
,
lg
:
'
md
'
}
}
isCentered
>
<
ModalOverlay
/>
<
ModalContent
>
<
ModalHeader
display=
"grid"
gridTemplateColumns=
{
{
base
:
'
auto 1fr
'
}
}
paddingRight=
{
{
sm
:
12
}
}
>
<
Box
w=
{
{
base
:
'
72px
'
,
sm
:
'
144px
'
}
}
h=
{
{
base
:
'
72px
'
,
sm
:
'
144px
'
}
}
marginRight=
{
{
base
:
6
,
sm
:
8
}
}
gridRow=
{
{
base
:
'
1 / 3
'
,
sm
:
'
1 / 4
'
}
}
>
<
Image
src=
{
logo
}
alt=
{
`${ title } app icon`
}
/>
</
Box
>
<
Heading
as=
"h2"
gridColumn=
{
2
}
fontSize=
{
{
base
:
'
2xl
'
,
sm
:
'
3xl
'
}
}
fontWeight=
"medium"
lineHeight=
{
1
}
color=
"blue.600"
whiteSpace=
"nowrap"
overflow=
"hidden"
textOverflow=
"ellipsis"
>
{
title
}
</
Heading
>
<
Text
variant=
"secondary"
gridColumn=
{
2
}
fontSize=
"sm"
fontWeight=
"normal"
lineHeight=
{
1
}
>
By
{
nbsp
}{
author
}
</
Text
>
<
Box
gridColumn=
{
{
base
:
'
1 / 3
'
,
sm
:
2
}
}
marginTop=
{
{
base
:
6
,
sm
:
0
}
}
>
<
Box
display=
"flex"
>
<
Button
href=
{
url
}
as=
"a"
size=
"sm"
marginRight=
{
2
}
width=
{
{
base
:
'
100%
'
,
sm
:
'
auto
'
}
}
>
Launch app
</
Button
>
<
IconButton
aria
-
label=
"Mark as favorite"
title=
"Mark as favorite"
variant=
"outline"
colorScheme=
"gray"
w=
{
9
}
h=
{
8
}
onClick=
{
handleFavorite
}
icon=
{
isFavorite
?
<
Icon
as=
{
StarIcon
}
w=
{
4
}
h=
{
4
}
color=
"yellow.400"
/>
:
<
Icon
as=
{
starOutlineIcon
}
w=
{
4
}
h=
{
4
}
/>
}
/>
</
Box
>
</
Box
>
</
ModalHeader
>
<
ModalCloseButton
/>
<
ModalBody
>
<
Heading
as=
"h3"
fontSize=
"2xl"
marginBottom=
{
4
}
>
Overview
</
Heading
>
<
Box
marginBottom=
{
2
}
>
{
categories
.
map
((
category
:
AppCategory
)
=>
(
<
Tag
colorScheme=
"blue"
marginRight=
{
2
}
marginBottom=
{
2
}
key=
{
category
.
id
}
>
{
category
.
name
}
</
Tag
>
))
}
</
Box
>
<
Text
>
{
description
}
</
Text
>
</
ModalBody
>
<
ModalFooter
display=
"flex"
flexDirection=
{
{
base
:
'
column
'
,
sm
:
'
row
'
}
}
alignItems=
{
{
base
:
'
flex-start
'
,
sm
:
'
center
'
}
}
>
{
site
&&
(
<
Link
isExternal
href=
{
site
}
display=
"flex"
alignItems=
"center"
paddingRight=
{
{
sm
:
2
}
}
marginBottom=
{
{
base
:
3
,
sm
:
0
}
}
maxW=
"100%"
overflow=
"hidden"
>
<
Icon
as=
{
LinkIcon
}
display=
"inline"
verticalAlign=
"baseline"
boxSize=
{
3
}
marginRight=
{
2
}
/>
<
Text
color=
"inherit"
whiteSpace=
"nowrap"
overflow=
"hidden"
textOverflow=
"ellipsis"
>
{
site
}
</
Text
>
</
Link
>
)
}
{
socialLinks
.
length
&&
(
<
List
marginLeft=
{
{
sm
:
'
auto
'
}
}
display=
"grid"
gridAutoFlow=
"column"
columnGap=
{
2
}
>
{
socialLinks
.
map
(({
icon
,
url
})
=>
(
<
Link
aria
-
label=
{
`Link to ${ url }`
}
title=
{
url
}
key=
{
url
}
href=
{
url
}
display=
"flex"
alignItems=
"center"
justifyContent=
"center"
isExternal
w=
{
10
}
h=
{
10
}
>
<
Icon
as=
{
icon
}
w=
"20px"
h=
"20px"
display=
"block"
/>
</
Link
>
))
}
</
List
>
)
}
</
ModalFooter
>
</
ModalContent
>
</
Modal
>
);
};
export
default
AppModal
;
ui/blocks/navigation/NavLink.tsx
View file @
7a7fdc05
import
{
Link
,
Icon
,
Text
,
HStack
,
Tooltip
}
from
'
@chakra-ui/react
'
;
import
{
Link
,
Icon
,
Text
,
HStack
,
Tooltip
,
Box
}
from
'
@chakra-ui/react
'
;
import
NextLink
from
'
next/link
'
;
import
NextLink
from
'
next/link
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
...
@@ -28,36 +28,37 @@ const NavLink = ({ text, url, icon, isCollapsed, isActive, px }: Props) => {
...
@@ -28,36 +28,37 @@ const NavLink = ({ text, url, icon, isCollapsed, isActive, px }: Props) => {
})();
})();
return
(
return
(
<
NextLink
href=
{
url
}
passHref
>
<
Box
as=
"li"
listStyleType=
"none"
w=
"100%"
>
<
Link
<
NextLink
href=
{
url
}
passHref
>
as=
"li"
<
Link
listStyleType=
"none"
w=
{
width
}
w=
{
width
}
px=
{
px
||
(
isCollapsed
?
'
15px
'
:
3
)
}
px=
{
px
||
(
isCollapsed
?
'
15px
'
:
3
)
}
py=
{
2.5
}
py=
{
2.5
}
display=
"flex"
color=
{
isActive
?
colors
.
text
.
active
:
colors
.
text
.
default
}
color=
{
isActive
?
colors
.
text
.
active
:
colors
.
text
.
default
}
bgColor=
{
isActive
?
colors
.
bg
.
active
:
colors
.
bg
.
default
}
bgColor=
{
isActive
?
colors
.
bg
.
active
:
colors
.
bg
.
default
}
_hover=
{
{
color
:
isActive
?
colors
.
text
.
active
:
colors
.
text
.
hover
}
}
_hover=
{
{
color
:
isActive
?
colors
.
text
.
active
:
colors
.
text
.
hover
}
}
borderRadius=
"base"
borderRadius=
"base"
whiteSpace=
"nowrap"
whiteSpace=
"nowrap"
{
...
getDefaultTransitionProps
({
transitionProperty
:
'
width
,
padding
'
})
}
{
...
getDefaultTransitionProps
({
transitionProperty
:
'
width
,
padding
'
})
}
>
<
Tooltip
label=
{
text
}
hasArrow=
{
false
}
isDisabled=
{
!
isCollapsed
}
placement=
"right"
variant=
"nav"
gutter=
{
15
}
color=
{
isActive
?
colors
.
text
.
active
:
colors
.
text
.
hover
}
>
>
<
HStack
spacing=
{
3
}
>
<
Tooltip
<
Icon
as=
{
icon
}
boxSize=
"30px"
/>
label=
{
text
}
{
!
isCollapsed
&&
<
Text
variant=
"inherit"
fontSize=
"sm"
lineHeight=
"20px"
>
{
text
}
</
Text
>
}
hasArrow=
{
false
}
</
HStack
>
isDisabled=
{
!
isCollapsed
}
</
Tooltip
>
placement=
"right"
</
Link
>
variant=
"nav"
</
NextLink
>
gutter=
{
15
}
color=
{
isActive
?
colors
.
text
.
active
:
colors
.
text
.
hover
}
>
<
HStack
spacing=
{
3
}
>
<
Icon
as=
{
icon
}
boxSize=
"30px"
/>
{
!
isCollapsed
&&
<
Text
variant=
"inherit"
fontSize=
"sm"
lineHeight=
"20px"
>
{
text
}
</
Text
>
}
</
HStack
>
</
Tooltip
>
</
Link
>
</
NextLink
>
</
Box
>
);
);
};
};
...
...
ui/pages/Apps.tsx
View file @
7a7fdc05
import
debounce
from
'
lodash/debounce
'
;
import
debounce
from
'
lodash/debounce
'
;
import
React
,
{
useCallback
,
useState
}
from
'
react
'
;
import
React
,
{
useCallback
,
useState
}
from
'
react
'
;
import
type
{
AppItemOverview
}
from
'
types/client/apps
'
;
import
{
TEMPORARY_DEMO_APPS
}
from
'
data/apps
'
;
import
{
TEMPORARY_DEMO_APPS
}
from
'
data/apps
'
;
import
AppList
from
'
ui/apps/AppList
'
;
import
AppList
from
'
ui/apps/AppList
'
;
import
FilterInput
from
'
ui/shared/FilterInput
'
;
import
FilterInput
from
'
ui/shared/FilterInput
'
;
import
AppModal
from
'
ui/apps/AppModal
'
;
const
defaultDisplayedApps
=
[
...
TEMPORARY_DEMO_APPS
]
const
defaultDisplayedApps
=
[
...
TEMPORARY_DEMO_APPS
]
.
sort
((
a
,
b
)
=>
a
.
title
.
localeCompare
(
b
.
title
));
.
sort
((
a
,
b
)
=>
a
.
title
.
localeCompare
(
b
.
title
));
const
Apps
=
()
=>
{
const
Apps
=
()
=>
{
const
[
displayedApps
,
setDisplayedApps
]
=
useState
(
defaultDisplayedApps
);
const
[
displayedApps
,
setDisplayedApps
]
=
useState
<
Array
<
AppItemOverview
>>
(
defaultDisplayedApps
);
const
[
displayedAppId
,
setDisplayedAppId
]
=
useState
<
string
|
null
>
(
'
component
'
);
const
filterApps
=
(
q
:
string
)
=>
{
const
filterApps
=
(
q
:
string
)
=>
{
const
apps
=
displayedApps
const
apps
=
displayedApps
...
@@ -21,10 +25,16 @@ const Apps = () => {
...
@@ -21,10 +25,16 @@ const Apps = () => {
// eslint-disable-next-line react-hooks/exhaustive-deps
// eslint-disable-next-line react-hooks/exhaustive-deps
const
debounceFilterApps
=
useCallback
(
debounce
(
q
=>
filterApps
(
q
),
500
),
[]);
const
debounceFilterApps
=
useCallback
(
debounce
(
q
=>
filterApps
(
q
),
500
),
[]);
const
clearDisplayedAppId
=
useCallback
(()
=>
setDisplayedAppId
(
null
),
[]);
return
(
return
(
<>
<>
<
FilterInput
onChange=
{
debounceFilterApps
}
marginBottom=
{
{
base
:
'
4
'
,
lg
:
'
6
'
}
}
placeholder=
"Find app"
/>
<
FilterInput
onChange=
{
debounceFilterApps
}
marginBottom=
{
{
base
:
'
4
'
,
lg
:
'
6
'
}
}
placeholder=
"Find app"
/>
<
AppList
apps=
{
displayedApps
}
/>
<
AppList
apps=
{
displayedApps
}
/>
<
AppModal
id=
{
displayedAppId
}
onClose=
{
clearDisplayedAppId
}
/>
</>
</>
);
);
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment