viviui
v1.7.3
Published
這是一個引用了chakra-ui框架的一個npm
Readme
This is a Test project
這是一個引用了chakra-ui框架的一個npm
观看效果网址
https://viviui.vercel.app/?path=/story/footer--footer
Header使用
相关组件
Header:为其子级提供上下文的包装器。
HeaderButton:能接受到icon,title的按钮,以及接收其它chakra-ui的样式。
HeaderMenuButton:菜单列表的触发器。
DrawerItemHeader:选单的头部文字。
DrawerItemDivider:选单的线。
DrawerItemButton:选单的按钮。
import{ Header, HeaderButton, HeaderMenuButton, DrawerItemHeader, DrawerItemDivider, DrawerItemButton } from 'viviui'
用法
HeaderButton 的 Component 用法
- HeaderButton 默认在chakra响应式里小屏(sm) 的时候是隐藏
HeaderButton 能传入的参数
| 名称 | 说明 | | -------- | --------------------------------------- | | icon | 传入 react-icons 的 icon 名字。 | | title | 传入 HeaderButton 的文字 | | chidren | HeaderButton 的子集。 | | ...props | 能接受 chakra 的 Button 样式到 HeaderButton 里。 |
HeaderButton里的Props
| 名称 | 默认 | 描述 | | -------- | ------------------------------------------ | ----------- | | fontSize | {{ base: 'xs', sm: 'md', md: 'lg' }} | 字体随屏幕而变大变小 | | px | {{ base: 1, sm: 4 }} | 内边距随屏幕而变宽变窄 | | display | {{ base: 'none', sm: 'none', md: 'flex' }} | 随屏幕而显示隐藏 | | color | gray.500 | 字体颜色 | | variant | ghost | 要使用的按钮样式的变体 |
- 有 icon 的 HeaderButton

<HeaderButton icon={MdAccessibility} title='HeaderButton' />- 没有 icon 的 HeaderButton

<HeaderButton title='首页' />HeaderMenuButton 的 Component 用法
- MenuButton:菜单列表的触发器,需要和chakra 的 Menu 一起使用。
HeaderMenuButton 传入的参数
| 名称 | 描述 | | ----- | -------------------------- | | props | 能接收到 chakra 的 MenuButton样式 |
MenuButton 和 Menu 一起使用并传入头像到 MenuButton

<Menu placement='bottom-end'>
<MenuButton as='div'>
<Avatar name='vivi' src={MyImage} size='sm' cursor='pointer' />
</MenuButton>
<MenuList w='280px'>
<NextLink href='/' passHref>
<MenuItem as='a'>
<Box as={IoMdHome} mr='4px' />
<span>返回 Macau School</span>
</MenuItem>
</NextLink>
<Link href='/'>
<MenuItem>
<Box as={AiOutlineLogout} mr='4px' />
<span>登出</span>
</MenuItem>
</Link>
</MenuList>
</Menu>DrawerItemButton,DrawerItemHeader,DrawerItemDivider 的 Component 用法
- DrawerItemButton,DrawerItemHeader,DrawerItemDivider 需要和 chakra 的 Drawer 一起使用,都需要放在 Drawer 标签的 DrawerBody 里面
- DrawerItemHeader: chakra-ui Drawer的头部文字。
- DrawerItemDivider: chakra-ui Drawer的线。
- DrawerItemButton: chakra-ui Drawer的按钮。
DrawerItemButton
能接受的参数
| 名称 | 描述 | | -------- | --------------------------- | | title | 传入文字进 DrawerItemButton。 | | icon | 传入 react-icons 的 icon 名字。 | | children | DrawerItemButton的子集。 | | ...props | 能接收到 chakra-ui 的 Button 样式。 |
props
| 名称 | 默认 | 描述 | | -------------- | --------------------------------------- | ------ | | _hover | {{ ml: '2px', background: '# CEEDFF’ }} | 鼠标移到焦点 | | width | 100% | 宽度 | | justifyContent | flex-start | 整体排列左侧 | | bg | none | 背景 |
DrawerItemHeader
| 名称 | 描述 | | ----- | -------------------------------------- | | props | 能接收到 chakra-ui 的字体样式,children 也可以解构进去。 |
DrawerItemDivider
| 名称 | 描述 | | ----- | ---------------------------- | | props | 能接收到 chakra-ui 的 Divider 样式。 |
DrawerItemButton,DrawerItemHeader,DrawerItemDivider 和 chakra 的 Drawer 一起使用

const DrawerExample = () => {
const { isOpen, onOpen, onClose } = useDisclosure();
return (
<>
<IconButton
onClick={onOpen}
aria-label='Navigation Menu'
fontSize='20px'
variant='ghost'
icon={MdDehaze}
marginRight='-16px'
/>
<Drawer placement='left' onClose={onClose} isOpen={isOpen}>
<DrawerOverlay />
<DrawerContent>
<DrawerCloseButton />
<DrawerItemHeader borderBottomWidth='1px'>選項</DrawerItemHeader>
<DrawerBody fontSize={{ sm: 'xs', md: 'sm' }}>
<DrawerItemButton icon={IoMdPaper}>首頁</DrawerItemButton>
<DrawerItemDivider />
<DrawerItemButton icon={MdDashboard}>学校專頁</DrawerItemButton>
<DrawerItemDivider />
<DrawerItemButton icon={IoMdSearch}>搜索</DrawerItemButton>
<DrawerItemDivider />
<DrawerItemButton icon={IoMdHome}>返回 Macau School</DrawerItemButton>
<DrawerItemDivider />
<DrawerItemButton icon={AiOutlineLogout}>登出</DrawerItemButton>
<DrawerItemDivider />
</DrawerBody>
</DrawerContent>
</Drawer>
</>
)
}Header 的 Component 用法
| 名称 | 描述 | | -------------- | ------------------------------------ | | logo | 自定义logo并出现在header左侧,logo的跳转路径需要自己去传。 | | left | 自定义header的left数据。 | | right | 自定义header的right数据。 | | center | 自定义header的center数据。 | | drawerItems | 直接传入选单里的数据。 | | containerProps | 传入 chakra 能接受的 Box 样式到头部 | | …props | 传入 chakra 能接收的 Box 样式到最外层的 Box 里 |
props
| 名称 | 默认 | 描述 | | ----------------- | ----- | ------- | | pos | fixed | 固定单位 | | top | 0 | 离屏幕上方为0 | | left | 0 | 离屏幕左方为0 | | right | 0 | 离屏幕右方为0 | | zIndex | 4 | | | borderBottomWidth | 1px | 底线为1px | | width | full | 满屏 |
containerProps
| 名称 | 默认 | 描述 | | -------- | ------ | ----------- | | height | 4rem | Header 的高 | | width | full | 宽满屏 | | maxWidth | 1280px | 最大的宽为1280px | | mx | auto | x轴上外边距一样 | | px | 8px | x轴上内边距为8px |
logo与right数据头像menu
网页版

手机版


<Header
logo={
<NextLink href='/' passHref>
<Box
as='a'
d='block'
>
<Heading as='h1' size='lg' letterSpacing='-.1rem'>
<Box as='span' d={{ base: 'none', sm: 'inline' }}>
Macau School
</Box>
<Box as='span' d={{ base: 'inline', sm: 'none' }}>
MS
</Box>
<Box as='span' color='blue.500' d={{ base: 'none', md: 'inline' }}>
{' '}學不停
</Box>
</Heading>
</Box>
</NextLink>
}
right={
<Menu placement='bottom-end'>
<MenuButton as='div'>
<Avatar name='vivi' src={MyImage} size='sm' cursor='pointer' />
</MenuButton>
<MenuList w='280px'>
<NextLink href='/' passHref>
<MenuItem as='a'>
<Box as={IoMdHome} mr='4px' />
<span>返回 Macau School</span>
</MenuItem>
</NextLink>
<Link href='/'>
<MenuItem>
<Box as={AiOutlineLogout} mr='4px' />
<span>登出</span>
</MenuItem>
</Link>
</MenuList>
</Menu>
}
/>传入 logo center right 的数据案例
网页版

手机版
点击menu前

点击menu后

center={ <> <HeaderButton icon={IoMdPaper} title='首頁' /> <HeaderButton icon={MdDashboard} title='学校專頁' /> <HeaderButton icon={IoMdSearch} title='搜索' /> </> } right={ <Menu placement='bottom-end'> <MenuButton as='div'> <Avatar name='vivi' src={MyImage} size='sm' cursor='pointer' /> </MenuButton> <MenuList w='280px'> <NextLink href='/' passHref> <MenuItem as='a'> <Box as={IoMdHome} mr='4px' /> <span>返回 Macau School</span> </MenuItem> </NextLink> <Link href='/'> <MenuItem> <Box as={AiOutlineLogout} mr='4px' /> <span>登出</span> </MenuItem> </Link> </MenuList> </Menu> } drawerItems={ <> <DrawerItemButton icon={IoMdPaper}>首頁</DrawerItemButton> <DrawerItemDivider /> <DrawerItemButton icon={MdDashboard}>学校專頁</DrawerItemButton> <DrawerItemDivider /> <DrawerItemButton icon={IoMdSearch}>搜索</DrawerItemButton> <DrawerItemDivider /> <DrawerItemButton icon={IoMdHome}>返回 Macau School</DrawerItemButton> <DrawerItemDivider /> <DrawerItemButton icon={AiOutlineLogout}>登出</DrawerItemButton> <DrawerItemDivider /> </> }/>
Hero
相关组件
Hero:为其子级提供上下文的包装器。
import{ Hero } from 'viviui'
用法
Hero的用法
Hero 能传入的参数
| 名称 | 描述 | | -------------- | -------------------------------------- | | title | 传入标题。 | | subtitle | 传入小标题。 | | noBottomBorder | 可以不要底线。 | | leftButton | 输入左边按钮。 | | rightButton | 输入右边按钮。 | | drawerItems | 选单里的数据。 | | children | Hero的子孙。 | | …props | 传入 chakra 能接受的 Box 样式到 Hero 的最外层 Box 里 |
props
| 名称 | 默认 | 描述 | | -- | ----- | ------ | | pt | 160px | 上方的内边距 | | pb | 94 | 下方的内边距 |
- title,subtitle,children,children传入了按钮。
网页版

手机版

<Hero
title={
<>
我的學校
<Box as='span' color='blue.500'>
{' '}
SCHOOL
</Box>
</>
}
subtitle='SCHOOL 是一個簡單的、多模組的線上的學校系統。可透過 SCHOOL 進行日常校園管理,了解學生學習生活,促進發掘學生閃光點等等。專為澳門中小幼學校而設。'
>
<Button size='lg' as='a' variantColor='blue' w={{ base: '100%', sm: 'auto' }}>
登入到我的學校
</Button>
</Hero>FeatureGrid
相关组件
FeatrueGrid:为其子级提供上下文的包装器。
Featrure:能接受到icon,title,subtitle,children及其它chakra-ui样式。
FeatrueGrid 和 Featrure 需要一起使用。
import{ FeatrueGrid, Featrure } from 'viviui'
用法
FeatrueGrid
children:可以自定义他的儿子,也可以使用 Featrure 的 component
gridProps:传入 chakra 能接受的 Grid 样式到 FeatrueGrid
...props:传入 chakra 能接受 Box 的样式进 FeatrueGrid 的最外层 Box 里Featrure
title: 傳入title
icon: 傳入 react-icons 的 icon 名字
subtitle: 傳入subtitle
children: Featrure 的子孫
...props: 傳入 chakra 能接受的 Box 样式到 Featrure 的最外层 Box 裏网页版

手机版

<FeatrueGrid>
<Feature
title='學生成長檔案'
subtitle='SCHOOL 替每個學生都建立一個成長檔案,老師能記錄學生的學習生活,如學生的擅好,長處等。
使老師更能發現學生的閃光點。同學也能充分了解校園生活所帶給他的歷程。'
icon={MdAccessibility}
/>
<Feature
title='學生相冊'
subtitle='每個小朋友成長的瞬間都值得紀念。SCHOOL 提供的學生相冊除了能作為記錄學生活動相片外,也能和學生成長檔案、學生活動事件相連結。讓系統能客觀地分析學生的智能發展方向。'
icon={MdPhoto}
/>
<Feature
title='與基力掛勾的學生評估表'
subtitle='每個小朋友成長的瞬間都值得紀念。SCHOOL 提供的學生相冊除了能作為記錄學生活動相片外,也能和學生成長檔案、學生活動事件相連結。讓系統能客觀地分析學生的智能發展方向。'
icon={MdShowChart}
/>
</FeatrueGrid>ModalSelector
相關組件
ModalSelector: 包容器
SquareButton:左侧新增按钮
ModalSelectorOption:弹出窗口后的 modal 数据
EditButton:右侧編輯按钮
import { ModalSelector, SquareButton, ModalSelectorOption, EditButton } from "viviui"
用法
SquareButton 的 Component 用法
SquareButton 能傳入的參數
| 名字 | 描述 | | ----- | --------------------------------------------------- | | props | 傳入 children 和 chakra 能接受的 Button 样式到 SquareButton 裏 |
SquareButton 裏的 props
| 名字 | 默認 | 描述 | | -------- | ------------------------------ | --------- | | fontSize | {{ base: '14px', md: '16px' }} | 隨著屏幕字體的變化 |
新增按鈕

<SquareButton>新增管理员</SquareButton>EditButton
EditButton 能傳入的參數
| 名字 | 描述 | | ----- | ----------------------------------------------------- | | props | 傳入 children 和 chakra 能接受的 IconButton 样式到 EditButton 裏 |

<EditButton icon='edit' />ModalSelector
ModalSelector 能傳入的參數
| 名称 | 描述 | | ---------- | ------------------------------------- | | left | 左侧数据 | | right | 右侧数据 | | value | 自定义中间顯示的数据 | | children | 点击中间value按钮时,自定义弹出的数据 | | modalTitle | 弹出框中的标题 | | …props | 能接受 chakra 的 Box 样式到 ModalSelector 里。 |
ModalSelector 裏的 props
| 名称 | 默认 | 描述 | | -------------- | ------ | -------------- | | display | flex | 默認為 flex 類型 | | justifyContent | center | 讓整個 Box 居中中間 | | mt | 10px | 裏 top 外邊距為10px |
點擊中間前

點擊中間后

const ModalSelectorTest = () => {
const [values, setValues] = useState('cdsj6 2019/2020 Dashboard')
return (
<ModalSelector
modalTitle='Dashboard 選擇'
value={values}
onChange={setValues}
left={
<SquareButton>新增</SquareButton>
}
right={
<EditButton icon='edit' />
}
>
<ModalSelectorOption value='cdsj6 2019/2020 Dashboard'>
cdsj6 2019/2020 Dashboard
</ModalSelectorOption>
<ModalSelectorOption value='cdsj6 2020/2021 Dashboard'>
cdsj6 2020/2021 Dashboard
</ModalSelectorOption>
<ModalSelectorOption value='cdsj6 2021/2022 Dashboard'>
cdsj6 2021/2022 Dashboard
</ModalSelectorOption>
</ModalSelector>
)
}ModalSelector
相關組件
ModalSelector: 包容器
SquareButton: 左侧新增按钮
ModalSelectorOption: 弹出窗口后的 modal 数据
EditButton: 右侧編輯按钮
import { ModalSelector, SquareButton, ModalSelectorOption, EditButton } from "viviui"
用法
SquareButton 的 Component 用法
SquareButton 能傳入的參數
| 名字 | 描述 | | ----- | --------------------------------------------------- | | props | 傳入 children 和 chakra 能接受的 Button 样式到 SquareButton 裏 |
SquareButton 裏的 props
| 名字 | 默認 | 描述 | | -------- | ------------------------------ | --------- | | fontSize | {{ base: '14px', md: '16px' }} | 隨著屏幕字體的變化 |
新增按鈕

<SquareButton>新增管理员</SquareButton>EditButton
EditButton 能傳入的參數
| 名字 | 描述 | | ----- | ----------------------------------------------------- | | props | 傳入 children 和 chakra 能接受的 IconButton 样式到 EditButton 裏 |

<EditButton icon='edit' />ModalSelector
ModalSelector 能傳入的參數
| 名称 | 描述 | | ---------- | ------------------------------------- | | left | 左侧数据 | | right | 右侧数据 | | value | 自定义中间顯示的数据 | | children | 点击中间value按钮时,自定义弹出的数据 | | modalTitle | 弹出框中的标题 | | …props | 能接受 chakra 的 Box 样式到 ModalSelector 里。 |
ModalSelector 裏的 props
| 名称 | 默认 | 描述 | | -------------- | ------ | -------------- | | display | flex | 默認為 flex 類型 | | justifyContent | center | 讓整個 Box 居中中間 | | mt | 10px | 裏 top 外邊距為10px |
- 點擊中間前

- 點擊中間后

const ModalSelectorTest = () => {
const [values, setValues] = useState('cdsj6 2019/2020 Dashboard')
return (
<ModalSelector
modalTitle='Dashboard 選擇'
value={values}
onChange={setValues}
left={
<SquareButton>新增</SquareButton>
}
right={
<EditButton icon='edit' />
}
>
<ModalSelectorOption value='cdsj6 2019/2020 Dashboard'>
cdsj6 2019/2020 Dashboard
</ModalSelectorOption>
<ModalSelectorOption value='cdsj6 2020/2021 Dashboard'>
cdsj6 2020/2021 Dashboard
</ModalSelectorOption>
<ModalSelectorOption value='cdsj6 2021/2022 Dashboard'>
cdsj6 2021/2022 Dashboard
</ModalSelectorOption>
</ModalSelector>
)
}Fieldset
Fieldset: 横线中间有字,横线默认有
LeftFieldsetButton: 线左边的Button
import { Fieldset, LeftFieldsetButton } from "viviui"
LeftFieldsetButton的 Component 用法
LeftFieldsetButton 傳入的參數
| 名字 | 描述 | | ----- | --------------------------------------------------- | | props | 能接受 children 及 chakra 的 Button 样式到 RoundedButton 里。 |
LeftFieldsetButton 的 props
| 名字 | 默認 | 描述 | | ----------- | ------------------------------- | -------------- | | borderWidth | 1px | 變框綫的寬度 | | rounded | 999px | 四角為最大的弧度 | | minW | {{ base: '80px', sm: '110px' }} | 最小寬度隨屏幕而變 | | position | absolute | 絕對定位 | | top | 0 | 離上層固定定位的top為0 | | left | 0 | 離上層固定定位的left為0 |

<LeftFieldsetButton>新增</LeftFieldsetButton>Fieldset 的 Component 用法
- 需要添加一個背景顔色,橫綫是橫穿在字裏的,需要給背景顔色,擋住在字后面的橫綫,不會改變整個box 的背景顔色的。
Fieldset 傳入的參數
| 名字 | 描述 | | -------- | -------------------------------- | | title | 横线上的标题 | | left | 标题左侧數據 | | children | 子集内容 | | …props | 能接受 chakra 的 Box 样式到 Fieldset 里。 |
Fieldset 的 props
| 名字 | 默認 | 描述 | | --------- | -------- | ------------- | | position | relative | 固定定位,從而改變綫的類型 | | width | full | 寬為滿屏 | | textAlign | center | 字在 Box 的中間 | | my | 20px | 在Y軸上,外邊距為20px |
- 左邊沒有按鈕時

<Fieldset title='班級' bg='white' />- 左邊有按鈕

<Fieldset
bg='white'
title='班級'
left={
<LeftFieldsetButton>新增</LeftFieldsetButton>
}
/>Group
相關組件
Group: 为其子级提供上下文的包装器。
Card: 单个卡片
import { Group, Card } from "viviui"
用法
Card 的 component 的用法
Card 接收的參數
| 名字 | 描述 | | -------- | ---------------------------- | | title | 顯示在 Card 的標題 | | children | 它的子集數據 | | ...props | 能接受 chakra 的 Box 样式到 Card 里。 |
Card 的 props
| 名字 | 默認 | 描述 | | ------------ | ------------------------------------ | --------------- | | bg | white | 背景為白色 | | w | {['45%', '30.5%', '22.5%', '22.6%']} | 寬隨著屏幕放大縮小而做改變 | | p | 20px | 内邊距為20px | | borderRadius | 10px | 邊框的弧度為10px | | d | inline-block | 為行快標簽 | | m | {['2%', '1%', '1%', '1%']} | 外邊框隨著屏幕放大縮小而做改變 | | shadow | 2px 2px 6px 0px #b9b9b9 | 邊框陰影 |

<Card title="甲班" />Group 的 Component 用法
Group 能接受到的值
| 名字 | 描述 | | -------- | ---------------------------- | | children | 接收 CardDeck 的子集 | | ...props | 能接受 chakra 的 Box 样式到 Card 里。 |
Group 的 props
| 名字 | 默認 | 描述 | | -------- | ----- | ------------ | | mx | auto | X軸上外邊距為 auto | | px | 8px | X軸上内邊距為 8px | | width | full | 寬為滿屏 | | maxWidth | 960px | 最大寬度為960px | | pb | 16px | 外邊居底部為16px |
- 最大屏時

- 小屏時

- 最小屏時

const Group= () => {
return (
<Group>
<Card title='甲班' />
<Card title='乙班' />
<Card title='丙班' />
<Card title='丁班' />
<Card title='超級班' />
</Group>
)
}page
相关组件
Page:为其子级提供上下文的包装器。
HeaderPage: Page 頭部的 Heading 文字 。
BackButton: 返回按鈕。
DeleteButton: 刪除按鈕。
DeleteRemind: 刪除提示及按鈕。
LabelName: 標簽加名字,例:name:vivi。
ManageMent: 有副標題的頁面。
ColumnIconText: 輸入 icon 與文字,文字下有橫綫。
NewButton: 一個新的按鈕。
Row: 顯示簡單個人學校用戶的使用 component。
SureButton: 確認按鈕。
import{ Page, HeaderPage, BackButton, DeleteIconButton, DeleteRemind, LabelName, ManageMent, ColumnIconText NewButton, Row, SureButton } from 'viviui'
用法
HeaderPage 的 component 用法
HeaderPage 接收的參數
| 名字 | 描述 | | ----- | ------------------------------------------------ | | props | 能接受 children 與 chakra 的 Hading 样式到 HeaderPage 里。 |
HeaderPage 的 props
| 名字 | 默認 | 描述 | | --------- | ------ | ---- | | textAlign | center | 字體居中 |
只需要直接傳入文字就行了

<HeaderPage>這是HeaderPage component</HeaderPage>BackButton 的 component 用法
BackButton 接收的參數
| 名字 | 描述 | | ----- | ------------------------------------------------ | | props | 能接受 children 與 chakra 的 Button 样式到 BackButton 里。 |
BackButton 的 props
| 名字 | 默認 | 描述 | | --------------- | --------------------------------------------------- | ---------------------------- | | backgroundColor | #c2c2c2 | BackButton 的背景顔色 | | minW | {{ base: '100%', sm: '100%', md: '200px' }} | BackButton 隨著屏幕的擴大縮小而變化 | | mr | 12px | 右邊外邊距為 12px | | mt | 32px | 上面外邊距為 32px | | color | white | 字體顔色為白色 | | _hover | {{backgroundColor: '#b8b8b8'}} | 鼠標移上去后顔色改變 | | _active | {{boxShadow: '0 0 0 3px rgba(175, 175, 175, 0.6)'}} | 點下去那瞬間會對 BackButton 進行邊框陰影賦值 |
點擊前

點擊下去不動的時候

<BackButton>返回</BackButton>DeleteIconButton 的 component 用法
DeleteIconButton 接收的參數
| 名字 | 描述 | | ----- | ---------------------------------------------------------- | | props | 能接受 children 與 chakra 的 IconButton 样式到 DeleteIconButton 里。 |
DeleteIconButton 的 props
| 名字 | 默認 | 描述 | | ------------ | ------ | -------------------- | | icon | delete | 默認為 delete 垃圾桶的 icon | | variantColor | red | 默認背景為紅色 |

<DeleteIconButton />DeleteRemind 的 component 用法
DeleteRemind接收的參數
| 名字 | 描述 | | -------- | ------------------------------------ | | title | DeleteRemind 的標題 | | content | DeleteRemind 的文字説明 | | children | 刪除按鈕所放的 children 位置 | | …props | 能接受 chakra 的 Box 样式到 DeleteRemind 里。 |
DeleteRemind 的 props
| 名字 | 默認 | 描述 | | ---------- | ----------------- | ------------------- | | border | 1px solid #FED7D7 | 邊框是實綫1px,顔色是#FED7D7 | | background | #FFF5F5 | 背景顔色 | | rounded | 16px | 邊框的弧度 | | mt | 80px | 上方的外邊距為80px | | p | 20px | 内邊距為20px |
網頁版

手機版

<DeleteRemind
title='標題'
content='這裏是添加的正文提示。'
>
<SureButton variantColor='red'>刪除</SureButton>
</DeleteRemind>LabelName、Row 的 component 用法
- LabelName 和 Row 的 component 需要一起用
LabelName 的 component 用法
LabelName 接收的參數
| 名字 | 描述 | | -------- | --------------------------------- | | label | LabelName 的標簽。 | | name | LabelName 標簽后的名字 | | type | LabelName 的類型 | | children | LabelName的子集 | | ...props | 能接受 chakra 的 Box 样式到 LabelName 里。 |
LabelName 的props
| 名字 | 默認 | 描述 | | ---------- | ------------------------------- | --------------- | | display | {{ base: 'block', sm: 'flex' }} | 隨著屏幕擴大縮小而改變排列類型 | | lineHeight | 40px | 字體高度為40px |
Row 的 component 用法
Row 接收的參數
| 名字 | 描述 | | ------------ | --------------------------------- | | right | LabelName 的標簽。 | | left | LabelName 標簽后的名字 | | name | Row 的 ch | | profilePhoto | 頭像的路徑 | | noDivider | 是否需要底綫 | | children | Row 的子集 | | ...props | 能接受 chakra 的 Box 样式到 LabelName 里。 |
Row 的 props
| 名字 | 默認 | 描述 | | -------- | ---------------------------------------------------------- | --------------- | | justify | space-between | 排列是兩邊有距離的排列 | | width | full | 寬的屏幕是滿屏 | | maxWidth | 1280px | 最大寬度為 1280px | | mx | auto | x軸上外邊距為 auto | | px | {{ base: '1.25rem', sm: '1.25rem', md: '1.25rem', lg: 0 }} | 内邊距隨著屏幕的擴大縮小而變化 |
網頁版

手機版

<Row
profilePhoto={MyImage}
name='vivi'
left={
<>
<LabelName type='(学生)' name='vivi' label='姓名' />
</>
}
right={
<>
<DeleteIconButton />
<EditButton icon='edit' variantColor='blue' ml='5px' />
</>
}
/>ColumnIconText 和 Management 的 component 用法
ColumnIconText 的 component 用法
ColumnIconText 接收的參數
| 名字 | 描述 | | ------------- | ------------------------------------------- | | icon | ColumnIconText 的icon | | title | ColumnIconText 的文字 | | children | ColumnIconText 的子集 | | listIconProps | 能接受 chakra 的 ListIcon 样式到 ColumnIconText 里。 | | dividerProps | 能接受 chakra 的 Box 样式到 ColumnIconText 里。 | | …props | 能接受 chakra 的 Box 样式到 ColumnIconText 里。 |
ColumnIconText 的 listIconProps
| 名字 | 默認 | 描述 | | ---------- | ------------------------------ | ------------- | | fontSize | {{ base: '23px', md: '26px' }} | 字體隨著屏幕擴大縮小而變化 | | alignItems | center | 上下居中 |
ColumnIconText 的 listIconProps
| 名字 | 默認 | 描述 | | -------- | ------------------------------ | ------------- | | fontSize | {{ base: '23px', md: '26px' }} | 字體隨著屏幕擴大縮小而變化 |
ColumnIconText 的 dividerProps
| 名字 | 默認 | 描述 | | ------------ | ------------------------------------------------------- | --------------- | | w | { base: 'calc(100% - 32px)', md: 'calc(100% - 35px)' }} | 隨著屏幕擴大縮小計算出它的寬度 | | borderBottom | 1px solid #ededed | 底綫為實綫 1px | | p | 8px | 内邊距為8px |
Management 的 component 用法
Management 接收的參數
| 名字 | 描述 | | ---------------- | -------------------------------------- | | subTitle | Management 的 副標題 | | children | Management 的子集 | | descriptionProps | 能接受 chakra 的 Heading 样式到 Management 里。 | | ...props | 能接受 chakra 的 Box 样式到 Management 里。 |
Management 的 descriptionProps
| 名字 | 默認 | 描述 | | -------- | ------------------------------ | ------------- | | fontSize | {{ base: '15px', sm: '1rem' }} | 字體隨著屏幕擴大縮小而變化 | | mt | 40px | 外邊距的頭部 | | mb | 16px | 外邊距的地步 |

<Management
px='5%'
subTitle='你是管理员,可以拥有以下操作...'
>
<ColumnLine icon={FaSchool} color='#316bc3'>修改学校</ColumnLine>
<ColumnLine icon={FaUserEdit} color='#316bc3'>学校用户</ColumnLine>
<ColumnLine icon={GoTrashcan} color='#316bc3'>批量新增</ColumnLine>
<ColumnLine icon={AiTwotoneSetting} color='#316bc3'>专长设定</ColumnLine>
<ColumnLine icon={AiTwotoneSetting} color='#316bc3'>智能设定</ColumnLine>
</Management>NewButton 的 component 用法
NewButton 傳入的參數
| 名字 | 描述 | | ----- | ----------------------------------------------- | | props | 能接受 children 與 chakra 的 Button 样式到 NewButton 里。 |
NewButton 的 props
| 名字 | 默認 | 描述 | | ------------ | ----- | --------------- | | variantColor | blue | NewButton 的背景顔色 | | rounded | 999px | 邊框的弧度 | | mt | 8px | 頭部的外邊距 |

<NewButton w='100px'>新增</NewButton>SureButton 的 component 用法
SureButton 傳入的參數
| 名字 | 描述 | | ----- | ----------------------------------------------- | | props | 能接受 children 與 chakra 的 Button 样式到 NewButton 里。 |
SureButton 的 props
| 名字 | 默認 | 描述 | | ------------ | ------------------------------------------- | ---------------- | | variantColor | blue | SureButton 的背景顔色 | | minW | {{ base: '100%', sm: '100%', md: '200px' }} | 邊框的弧度 | | mr | 12px | 右邊外邊距 12px | | mt | 32px | 頭部的外邊距 32px |

<SureButton>確認</SureButton>Page 的 component 用法
Page 能傳入的參數
| 名字 | 描述 | | --------- | ----------------------------------------------- | | backurl | Page 板塊以上的數據 | | nodivider | title 底綫默認為 true ,不需要這個 title 底綫時直接傳入 nodivider | | children | Page的子集 | | ...props | 传入 chakra 能接受的 Box 样式到 Page 的最外层 Box 里 |
网页版

手机版

const editDashboard = () => {
return (
<Page>
<HeaderPage size='lg' as='h2' pt={4}>編輯 Dashboard</HeaderPage>
<HeaderPage
fontSize={{ base: '17px', md: '25px' }}
mt={5}
>
聖若瑟教區中學第六校
</HeaderPage>
<Box as='article' px={{ base: 8, sm: 8, md: 16 }} pb={16}>
<Box
d='flex'
justifyContent='space-between'
flexDirection={{ base: 'column-reverse', md: 'initial' }}
>
<BackButton>返回</BackButton>
<SureButton>確認</SureButton>
</Box>
<DeleteRemind
title='刪除 Dashboard'
content='删除 Dashborad 後后,將會清空該 Dashborad 的所有資料,該操作不能還原,請謹慎操作。'
>
<SureButton variantColor='red'>刪除</SureButton>
</DeleteRemind>
</Box>
</Page>
)
}网页版

手机版

<Page
title={
<HeaderPage size='lg' as='h2' pt={4}>編輯學校</HeaderPage>
}
>
<Box as='article' px={{ base: 8, sm: 8, md: 16 }} pb={16}>
<Box
top='0px'
left='0px'
bottom='0px'
right='0px'
my={5}
>
<Row
profilePhoto={MyImage}
name='vivi'
left={
<>
<LabelName type='(学生)' name='vivi' label='姓名' />
<LabelName name='343546' label='學號' />
<LabelName name='vivi' label='姓名' />
</>
}
right={
<>
<DeleteIconButton />
<EditButton icon='edit' variantColor='blue' />
</>
}
/>
</Box>
</Box>
</Page>网页版

手机版

<Page
title={
<HeaderPage>
管理员
</HeaderPage>
}
>
<Management
px='5%'
subTitle='你是管理员,可以拥有以下操作...'
>
<ColumnLine icon={FaSchool} color='#316bc3'>修改学校</ColumnLine>
<ColumnLine icon={FaUserEdit} color='#316bc3'>学校用户</ColumnLine>
<ColumnLine icon={GoTrashcan} color='#316bc3'>批量新增</ColumnLine>
<ColumnLine icon={AiTwotoneSetting} color='#316bc3'>专长设定</ColumnLine>
<ColumnLine icon={AiTwotoneSetting} color='#316bc3'>智能设定</ColumnLine>
</Management>
</Page>Table
相关组件
Table:为其子级提供上下文的包装器。
TableHead: Table 的他头部
TableBody: Table 的正文内容。
TableCell: 选单的头部文字。
TableRow: 选单的线。
import{ Table, TableHead, TableBody, TableCell, TableRow } from 'viviui'
用法
Table 、 TableHead 、TableBody、TableCell 和 TableRow 是同个使用的。
Table
Table 能传入的值
| 名字 | 描述 | | ----- | ------------------------------ | | props | 能接收 children 和 chakra 的 Box 样式 |
Table 的 props
| 名字 | 默认 | 描述 | | ------------- | ------- | ---------- | | w | 99% | 宽为父级容器的99% | | m | auto | 外边距为auto | | letterSpacing | 0.05rem | 文字之间的距离 |
- TableHead
TableHead 能传入的值
| 名字 | 描述 | | -------- | ------------------------------ | | children | TableHead 的子集 | | props | 能接收 children 和 chakra 的 Box 样式 |
- TableBody
TableBody 能传入的值
| 名字 | 描述 | | -------- | ------------------- | | children | TableBody 的子集 | | …props | 能接收 chakra 的 Box 样式 |
- TableRow
TableRow 能传入的值
| 名字 | 描述 | | -------- | ------------------- | | children | TableRow 的子集 | | …props | 能接收 chakra 的 Box 样式 |
TableRow 的 props
| 名字 | 默认 | 描述 | | -- | ---- | ------ | | h | 40px | 高为40px |
网页版

手机版

const table = () => {
const data = [
{
fieldName: '姓名',
describe: '必填'
},
{
fieldName: '英文姓名',
describe: '選填'
},
{
fieldName: '性別',
describe: '選填可'
},
{
fieldName: '學生證號碼',
describe: '選填'
},
{
fieldName: '身份證號碼',
describe: '選填可留空'
},
{
fieldName: '教青',
describe: '選填可留空'
},
{
fieldName: '拍卡卡號',
describe: '選填可留空'
},
{
fieldName: '電郵信箱',
describe: '必填'
},
{
fieldName: '學生',
describe: '學生'
},
{
fieldName: '老師',
describe: '學生'
},
{
fieldName: '學校主管',
describe: '學生'
},
{
fieldName: '學校管理員',
describe: '學生'
}
]
return (
<Table>
<TableHead>
<TableRow>
<TableCell w='50px'>序號</TableCell>
<TableCell>名稱</TableCell>
<TableCell>值</TableCell>
</TableRow>
</TableHead>
<TableBody>
{data.map((item, index) => {
return (
<>
<TableRow>
<TableCell textAlign='center'>
{index + 1}
</TableCell>
<TableCell px={{ base: '1', sm: '1', md: '4' }}>
{item.fieldName}
</TableCell>
<TableCell px={{ base: '1', sm: '1', md: '4' }} py={3}>
{item.describe}
</TableCell>
</TableRow>
</>
)
})}
</TableBody>
</Table>
)
}FullScreenView
相关组件
FullScreenView:为其子级提供上下文的包装器。
RedButton:红色并且四个角都是弧度为最大的弧度。
BlueButton:菜单列表的触发器。
ButtonGrid:选单的头部文字。
LargeTitle:选单的线。
import{ FullScreenView, RedButton, BlueButton, BUttonGrid, LargeTitle } from 'viviui'
用法
RedButton 的 component 用法
RedButton 能传入的参数
| 名称 | 描述 | | --------- | ------------------------------------- | | leftIcon | 接收左边的自定义 icon | | rightIcon | 接收右边的自定义icon | | children | Button的子集 | | ...props | 能接收到 chakra 的 Button 样式到 RedButton 里 |
RedButton 里的 props
| 名称 | 默认 | 描述 | | ------------ | ------------------------------ | ------------------------ | | size | lg | chakra 的 Button 宽度 | | bg | #E53E3E | 背景颜色为红色 | | w | {{ base: '98%', sm: '340px' }} | 宽度当最小屏时为98% | | variant | solid | variant 是 Button 显示颜色的类型 | | borderRadius | 9999px | 弧度为 9999px | | color | #fff | 字体颜色为#fff | | _hover | background: ‘#C53030’ | 鼠标移上去,背景颜色是#C53030 | | _active | background: ‘#9B2C2C' | 鼠标点击的那瞬间背景颜色是#9B2C2C |
- 按钮左边放icon

<RedButton
leftIcon={
<AiFillGoogleSquare
size='24px'
/>
}
>
这是一个红色按钮
</RedButton>- 按钮右边放icon

<RedButton
rightIcon={
<AiFillGoogleSquare
size='24px'
/>
}
>
这是一个红色按钮
</RedButton>BlueButton 的 component 用法
BlueButton 能传入的参数
| 名称 | 描述 | | --------- | ------------------------------------- | | leftIcon | 接收左边的自定义 icon | | rightIcon | 接收右边的自定义icon | | children | Button的子集 | | ...props | 能接收到 chakra 的 Button 样式到 RedButton 里 |
BlueButton 里的 props
| 名称 | 默认 | 描述 | | ------------ | ------------------------------ | ------------------------ | | size | lg | chakra 的 Button 宽度 | | w | {{ base: '98%', sm: '340px' }} | 宽度当最小屏时为98% | | variantColor | blue | variant 是 Button 显示颜色的类型 | | borderRadius | 9999px | 弧度为 9999px |
- 按钮左边放icon

<BlueButton leftIcon={<AiFillGoogleSquare size='24px' />}>
这是一个蓝色按钮
</BlueButton>- 按钮右边放icon

<BlueButton rightIcon={<AiFillGoogleSquare size='24px' />}>
这是一个蓝色按钮
</BlueButton>ButtonGrid 的 component 用法
- 包裹着按钮的一个组件
ButtonGrid 能传入的参数
| 名称 | 描述 | | ----- | -------------------------------------------------- | | props | 能接收 children 和 chakra 的 SimpleGrid 样式到 ButtonGrid |
ButtonGrid 里的 props
| 名称 | 默认 | 描述 | | ------- | ------------------------------- | ------------ | | columns | 1 | 一行只显示一个 | | spacing | 16px | 两个子集之间的距离 | | py | 16px | 在Y轴的外边距宽度 | | w | {{ base: '100%', sm: '340px' }} | 宽度在最小屏时为100% |

<ButtonGrid>
<RedButton leftIcon={<AiFillGoogleSquare size='24px' />}>
这是一个红色按钮
</RedButton>
<RedButton rightIcon={<AiFillGoogleSquare size='24px' />}>
这是一个红色按钮
</RedButton>
<BlueButton leftIcon={<AiFillGoogleSquare size='24px' />}>
这是一个蓝色按钮
</BlueButton>
<BlueButton rightIcon={<AiFillGoogleSquare size='24px' />}>
这是一个蓝色按钮
</BlueButton>
</ButtonGrid>LargeTitle 的 component 用法
LargeTitle 能传入的参数
| 名称 | 说明 | | ----- | ---------------------------------- | | props | 能接收 children 和 chakra 的 Heading 样式 |
LargeTitle 里的 props
| 名称 | 默认 | 描述 | | --------- | ------ | ---------- | | size | 2xl | 字体大小 | | w | 100% | 宽度为100% | | mb | 16px | 底部内边距为16px | | textAlign | center | 字体居中 |

<LargeTitle>这是一个标题</LargeTitle>FullScreenView 的 component 用法
FullScreenView 能传入的参数
| 名称 | 描述 | | --------- | ----------------------------------- | | closePath | 点击右上角关闭按钮后要返回的路径 | | children | FullScreenView 的子集 | | ...props | 接收 chakra的 Box 样式到 FullScreenView 里 |
FullScreenView 的 props
| 名称 | 默认 | 描述 | | -------------- | ---------- | -------------------- | | pos | fixed | 固定定位 | | top | 0 | 离上方0 | | left | 0 | 离左边0 | | right | 0 | 离右边0 | | bottom | 0 | 离下边0 | | w | 100% | 宽 100% | | h | 100% | 高100% | | d | flex | display 为 flex | | alignItems | center | 字体垂直居中 | | justifyContent | flex-start | 内容从 start 开始排列 | | flexDirection | column | flexDirection 从上到下排列 | | zIndex | 4000 | zIndex为4000 | | overflowY | auto | 滚动条为auto |

<FullScreenView closePath='/'>
<LargeTitle>登入</LargeTitle>
<ButtonGrid>
<RedButton leftIcon={<AiFillGoogleSquare size='24px' />}>
使用google登入
</RedButton>
<RedButton leftIcon={<AiFillGoogleSquare size='24px' />}>
使用google登入
</RedButton>
<RedButton leftIcon={<AiFillGoogleSquare size='24px' />}>
使用google登入
</RedButton>
<RedButton leftIcon={<AiFillGoogleSquare size='24px' />}>
使用google登入
</RedButton>
</ButtonGrid>
</FullScreenView>Crumb
相关组件
Crumb
CrumbLink:Breadcrumb的 link 元素。
import{ Crumb, CrumbLink } from 'viviui'
Crumb 和 CrumbLink 需要一起使用
Crumb 能传入的参数
| 名称 | 描述 | | -------- | -------------------------------------- | | children | Crumb 的儿子 | | ...props | 接受chakra 的 Breadcrumb 样式到 Crumb 里 |
Crumb 的 Props
| 名称 | 默认 | 描述 | | --------- | ----------------------------- | --------- | | spacing | 8px | 子集之间的距离 | | separator | | 子集之间的icon |
CrumbLink 能传入的参数
| 名称 | 描述 | | ----- | -------------------------------------------------- | | props | 能接受 children chakra 的 BreadcrumbLink 到 CrumbLink 里 |
CrumbLink 的 Props
| 名称 | 默认 | 描述 | | ---------- | ------- | ---- | | color | #1b6ac9 | 字体颜色 | | fontWeight | bold | 字体加粗 |

<Crumb>
<CrumbLink>vivi</CrumbLink>
<CrumbLink>vivi</CrumbLink>
<CrumbLink>vivi</CrumbLink>
</Crumb>