chore(ShortcutModal): clean up shortcut modal (#1614)

Signed-off-by: James <james@jan.ai>
Co-authored-by: James <james@jan.ai>
This commit is contained in:
NamH 2024-01-16 12:37:55 +07:00 committed by GitHub
parent 9bfcecc542
commit eb70e139fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 103 additions and 141 deletions

View File

@ -0,0 +1,99 @@
import React from 'react'
import {
Modal,
ModalTrigger,
Button,
ModalContent,
ModalHeader,
ModalTitle,
} from '@janhq/uikit'
const availableShortcuts = [
{
combination: 'E',
modifierKeys: [isMac ? '⌘' : 'Ctrl'],
description: 'Show list your models',
},
{
combination: 'K',
modifierKeys: [isMac ? '⌘' : 'Ctrl'],
description: 'Show list navigation pages',
},
{
combination: 'B',
modifierKeys: [isMac ? '⌘' : 'Ctrl'],
description: 'Toggle collapsible left panel',
},
{
combination: ',',
modifierKeys: [isMac ? '⌘' : 'Ctrl'],
description: 'Navigate to setting page',
},
{
combination: 'Enter',
description: 'Send a message',
},
{
combination: 'Shift + Enter',
description: 'Insert new line in input box',
},
{
combination: 'Arrow Up',
description: 'Navigate to previous option (within search dialog)',
},
{
combination: 'Arrow Down',
description: 'Navigate to next option (within search dialog)',
},
]
const ShortcutModal: React.FC = () => (
<Modal>
<ModalTrigger asChild>
<Button size="sm" themes="secondary">
Show
</Button>
</ModalTrigger>
<ModalContent className="max-w-2xl">
<ModalHeader>
<ModalTitle>Keyboard Shortcuts</ModalTitle>
</ModalHeader>
<div className="my-2 flex flex-col items-center justify-center gap-2">
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2 py-2">
<h6>Combination</h6>
</div>
<div className="w-full py-2">
<h6>Description</h6>
</div>
</div>
{availableShortcuts.map((shortcut, index) => {
return (
<div
key={shortcut.combination}
className={
index === availableShortcuts.length - 1
? 'flex w-full gap-4 pb-2'
: 'flex w-full gap-4 border-b border-border pb-2'
}
>
<div className="w-1/2 py-2">
<div className="inline-flex items-center justify-center rounded-full bg-secondary px-1 py-0.5 text-xs font-bold text-muted-foreground">
<p>{`${shortcut.modifierKeys?.[0] ?? ''} ${
shortcut.combination
}`}</p>
</div>
</div>
<div className="w-full py-2">
<p>{shortcut.description}</p>
</div>
</div>
)
})}
</div>
</ModalContent>
</Modal>
)
export default ShortcutModal

View File

@ -4,24 +4,16 @@
import { useContext, useEffect, useState } from 'react'
import { fs } from '@janhq/core'
import {
Switch,
Button,
Modal,
ModalContent,
ModalHeader,
ModalTitle,
ModalTrigger,
} from '@janhq/uikit'
import { Switch, Button } from '@janhq/uikit'
import { atom, useAtom } from 'jotai'
import ShortCut from '@/containers/Shortcut'
import ShortcutModal from '@/containers/ShortcutModal'
import { toaster } from '@/containers/Toast'
import { FeatureToggleContext } from '@/context/FeatureToggle'
import { useSettings } from '@/hooks/useSettings'
import { toaster } from '@/containers/Toast'
const serverEnabledAtom = atom<boolean>(false)
@ -173,136 +165,7 @@ const Advanced = () => {
Shortcuts that you might find useful in Jan app.
</p>
</div>
<Modal>
<ModalTrigger asChild>
<Button size="sm" themes="secondary">
Show
</Button>
</ModalTrigger>
<ModalContent className="max-w-2xl">
<ModalHeader>
<ModalTitle>Keyboard Shortcuts</ModalTitle>
</ModalHeader>
<div className="my-2 flex flex-col items-center justify-center gap-2">
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<h6>Combination</h6>
</div>
</div>
<div className="w-full">
<div className="py-2">
<h6>Description</h6>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<ShortCut menu="E" />
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Show list your models</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<ShortCut menu="K" />
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Show list navigation pages</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<ShortCut menu="B" />
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Toggle collapsible left panel</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<ShortCut menu="," />
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Navigate to setting page</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<div className="inline-flex items-center justify-center rounded-full bg-secondary px-1 py-0.5 text-xs font-bold text-muted-foreground">
<p>Enter</p>
</div>
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Send a message</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<div className="inline-flex items-center justify-center rounded-full bg-secondary px-1 py-0.5 text-xs font-bold text-muted-foreground">
<p>Shift + Enter</p>
</div>
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Insert new line in input box</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 border-b border-border pb-2">
<div className="w-1/2">
<div className="py-2">
<div className="inline-flex items-center justify-center rounded-full bg-secondary px-1 py-0.5 text-xs font-bold text-muted-foreground">
<p>Arrow Up</p>
</div>
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Navigate to previous option (within search dialog)</p>
</div>
</div>
</div>
<div className="flex w-full gap-4 pb-2">
<div className="w-1/2">
<div className="py-2">
<div className="inline-flex items-center justify-center rounded-full bg-secondary px-1 py-0.5 text-xs font-bold text-muted-foreground">
<p>Arrow Down</p>
</div>
</div>
</div>
<div className="w-full">
<div className="py-2">
<p>Navigate to next option (within search dialog)</p>
</div>
</div>
</div>
</div>
</ModalContent>
</Modal>
<ShortcutModal />
</div>
</div>
)