包含以下組件
Panel
- 側邊面板元素名稱 | 類型 | 預設值 | 描述 |
---|---|---|---|
backdrop | 布林值 | true | 啟用面板背景(後方的深色半透明圖層) |
colors | 物件 | 帶有 Tailwind CSS 顏色類別的物件 | |
colors.bg | 字串 | 'bg-white dark:bg-black' | 面板背景顏色 |
component | 字串 | 'div' | 組件的 HTML 元素 |
floating | 布林值 | false | 啟用時,打開的面板將在側邊有額外空間 |
opened | 布林值 | false | 允許打開/關閉面板並設定其初始狀態 |
side | 'left' | 'right' | 'left' | 面板側邊 |
size | 字串 | 'w-72 h-screen' | Tailwind CSS 大小類別 |
onBackdropClick | 函數(e) | 背景元素上的點擊處理程序 |
import React, { useState } from 'react';import {Page,Navbar,NavbarBackLink,Panel,BlockTitle,Block,Link,Button,} from 'konsta/react';export default function SidePanelsPage() {const [leftPanelOpened, setLeftPanelOpened] = useState(false);const [rightPanelOpened, setRightPanelOpened] = useState(false);const [leftFloatingPanelOpened, setLeftFloatingPanelOpened] = useState(false);const [rightFloatingPanelOpened, setRightFloatingPanelOpened] =useState(false);return (<Page><Navbartitle="Panel / Side Panel"/><Block strongIos outlineIos className="space-y-4"><p>Konsta UI comes with 2 panels (on left and on right), both areoptional. You can put absolutely anything inside: data lists, forms,custom content, etc.</p></Block><BlockstrongIosoutlineIosclassName="flex space-x-4 rtl:space-x-reverse"><Button rounded onClick={() => setLeftPanelOpened(true)}>Left Panel</Button><Button rounded onClick={() => setRightPanelOpened(true)}>Right Panel</Button></Block><BlockTitle>Floating Panels</BlockTitle><BlockstrongIosoutlineIosclassName="flex space-x-4 rtl:space-x-reverse"><Button rounded onClick={() => setLeftFloatingPanelOpened(true)}>Left Panel</Button><Button rounded onClick={() => setRightFloatingPanelOpened(true)}>Right Panel</Button></Block><Panelside="left"opened={leftPanelOpened}onBackdropClick={() => setLeftPanelOpened(false)}><Page><Navbartitle="Left Panel"right={<Link navbar onClick={() => setLeftPanelOpened(false)}>Close</Link>}/><Block className="space-y-4"><p>Here comes left panel.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.Suspendisse faucibus mauris leo, eu bibendum neque congue non. Utleo mauris, eleifend eu commodo a, egestas ac urna. Maecenas inlacus faucibus, viverra ipsum pulvinar, molestie arcu. Etiamlacinia venenatis dignissim. Suspendisse non nisl semper tellusmalesuada suscipit eu et eros. Nulla eu enim quis quam elementumvulputate. Mauris ornare consequat nunc viverra pellentesque.Aenean semper eu massa sit amet aliquam. Integer et neque sedlibero mollis elementum at vitae ligula. Vestibulum pharetra sedlibero sed porttitor. Suspendisse a faucibus lectus.</p></Block></Page></Panel><Panelside="right"opened={rightPanelOpened}onBackdropClick={() => setRightPanelOpened(false)}><Page><Navbartitle="Right Panel"right={<Link navbar onClick={() => setRightPanelOpened(false)}>Close</Link>}/><Block className="space-y-4"><p>Here comes right panel.</p><p>Duis ut mauris sollicitudin, venenatis nisi sed, luctus ligula.Phasellus blandit nisl ut lorem semper pharetra. Nullam tortornibh, suscipit in consequat vel, feugiat sed quam. Nam risuslibero, auctor vel tristique ac, malesuada ut ante. Sed molestie,est in eleifend sagittis, leo tortor ullamcorper erat, atvulputate eros sapien nec libero. Mauris dapibus laoreet nibh quisbibendum. Fusce dolor sem, suscipit in iaculis id, pharetra aturna. Pellentesque tempor congue massa quis faucibus. Vestibulumnunc eros, convallis blandit dui sit amet, gravida adipiscinglibero.</p></Block></Page></Panel><Panelside="left"floatingopened={leftFloatingPanelOpened}onBackdropClick={() => setLeftFloatingPanelOpened(false)}><Page className="no-safe-areas-top no-safe-areas-bottom"><Navbartitle="Left Panel"right={<Link navbar onClick={() => setLeftFloatingPanelOpened(false)}>Close</Link>}/><Block className="space-y-4"><p>Here comes left panel.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.Suspendisse faucibus mauris leo, eu bibendum neque congue non. Utleo mauris, eleifend eu commodo a, egestas ac urna. Maecenas inlacus faucibus, viverra ipsum pulvinar, molestie arcu. Etiamlacinia venenatis dignissim. Suspendisse non nisl semper tellusmalesuada suscipit eu et eros. Nulla eu enim quis quam elementumvulputate. Mauris ornare consequat nunc viverra pellentesque.Aenean semper eu massa sit amet aliquam. Integer et neque sedlibero mollis elementum at vitae ligula. Vestibulum pharetra sedlibero sed porttitor. Suspendisse a faucibus lectus.</p></Block></Page></Panel><Panelside="right"floatingopened={rightFloatingPanelOpened}onBackdropClick={() => setRightFloatingPanelOpened(false)}><Page className="no-safe-areas-top no-safe-areas-bottom"><Navbartitle="Right Panel"right={<Link navbar onClick={() => setRightFloatingPanelOpened(false)}>Close</Link>}/><Block className="space-y-4"><p>Here comes right panel.</p><p>Duis ut mauris sollicitudin, venenatis nisi sed, luctus ligula.Phasellus blandit nisl ut lorem semper pharetra. Nullam tortornibh, suscipit in consequat vel, feugiat sed quam. Nam risuslibero, auctor vel tristique ac, malesuada ut ante. Sed molestie,est in eleifend sagittis, leo tortor ullamcorper erat, atvulputate eros sapien nec libero. Mauris dapibus laoreet nibh quisbibendum. Fusce dolor sem, suscipit in iaculis id, pharetra aturna. Pellentesque tempor congue massa quis faucibus. Vestibulumnunc eros, convallis blandit dui sit amet, gravida adipiscinglibero.</p></Block></Page></Panel></Page>);}SidePanelsPage.title = 'Panel / Side Panels';