react-vite-demo

react and vite demo

git clone https://9o.is/git/react-vite-demo.git

commit c07e5a803be1dec9933ff010debb66a93db6b954
parent b7e7c23f0c78de7967cf0bbbf3e7f2f94aa9e025
Author: Jul <jul@9o.is>
Date:   Wed, 14 Aug 2024 20:24:29 +0800

create button component

Diffstat:
Asrc/components/headless/Button.tsx | 12++++++++++++
Msrc/components/headless/index.ts | 1+
Msrc/components/page/EventsPage/EventsPage.tsx | 4++--
3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/components/headless/Button.tsx b/src/components/headless/Button.tsx @@ -0,0 +1,11 @@ +import { ReactNode } from "react" + +type ButtonProps = { + children: ReactNode + type?: "submit" | "button" | "reset" + disabled?: boolean +} + +export function Button({ type = "button", ...props }: ButtonProps) { + return <button type={type} {...props} /> +} +\ No newline at end of file diff --git a/src/components/headless/index.ts b/src/components/headless/index.ts @@ -1,4 +1,5 @@ export * from './Alert' +export * from './Button' export * from './ComboBox' export * from './Checkbox' export * from './Form' diff --git a/src/components/page/EventsPage/EventsPage.tsx b/src/components/page/EventsPage/EventsPage.tsx @@ -1,4 +1,4 @@ -import { Checkbox, ComboBox, Select, Progress, Alert, Form, FormDataMap } from '../../headless' +import { Checkbox, ComboBox, Select, Progress, Alert, Form, FormDataMap, Button } from '../../headless' import { useNumberFormatter } from '../../hooks' import { useSHEvents } from './useSHEvents' import { useFilteredSHEvents } from './useFilteredSHEvents' @@ -34,7 +34,7 @@ export function EventsPage() { <ComboBox label="City" name="city" options={cities} /> <Select label="Sort by price" name="priceSort" options={['ascending', 'descending']} /> <Checkbox label="Find Cheapest" name="cheapest" /> - <button type="submit" disabled={loading}>Search</button> + <Button type="submit" disabled={loading}>Search</Button> </Form> <Progress loading={loading}> <Progress.Bar>