feat(client): add component library and simplify routing (#66)
* feat(client): add component library and simplify routing
Remove tab layout, explore page, modal, and unused template
components. Replace with single-page layout and a dev component
showcase with per-component detail pages.
- Add Button with label prop, leading/trailing icon support
- Add FeedCard, SerifText, SansSerifText, MonospaceText
- Add colocated *.showcase.tsx files for each component
- Use Stack navigator with themed headers
Co-authored-by: Ona <no-reply@ona.com>
* fix(client): render showcase as JSX component
Co-authored-by: Ona <no-reply@ona.com>
* chore(client): remove dead code chain
Remove ThemedText, useThemeColor, useColorScheme hook,
Colors, and Fonts — none referenced by current screens.
Co-authored-by: Ona <no-reply@ona.com>
---------
Co-authored-by: Ona <no-reply@ona.com>
2026-03-13 00:23:06 +00:00
|
|
|
import { View } from "react-native"
|
|
|
|
|
import tw from "twrnc"
|
|
|
|
|
|
2026-04-12 18:33:46 +01:00
|
|
|
import { type Showcase, Section } from "../showcase"
|
feat(client): add component library and simplify routing (#66)
* feat(client): add component library and simplify routing
Remove tab layout, explore page, modal, and unused template
components. Replace with single-page layout and a dev component
showcase with per-component detail pages.
- Add Button with label prop, leading/trailing icon support
- Add FeedCard, SerifText, SansSerifText, MonospaceText
- Add colocated *.showcase.tsx files for each component
- Use Stack navigator with themed headers
Co-authored-by: Ona <no-reply@ona.com>
* fix(client): render showcase as JSX component
Co-authored-by: Ona <no-reply@ona.com>
* chore(client): remove dead code chain
Remove ThemedText, useThemeColor, useColorScheme hook,
Colors, and Fonts — none referenced by current screens.
Co-authored-by: Ona <no-reply@ona.com>
---------
Co-authored-by: Ona <no-reply@ona.com>
2026-03-13 00:23:06 +00:00
|
|
|
import { Button } from "./button"
|
|
|
|
|
import { FeedCard } from "./feed-card"
|
|
|
|
|
import { SansSerifText } from "./sans-serif-text"
|
|
|
|
|
import { SerifText } from "./serif-text"
|
|
|
|
|
|
|
|
|
|
function FeedCardShowcase() {
|
|
|
|
|
return (
|
|
|
|
|
<View style={tw`gap-6`}>
|
|
|
|
|
<Section title="Default">
|
|
|
|
|
<FeedCard style={tw`p-4`}>
|
|
|
|
|
<SansSerifText>Card content goes here</SansSerifText>
|
|
|
|
|
</FeedCard>
|
|
|
|
|
</Section>
|
|
|
|
|
<Section title="With mixed content">
|
|
|
|
|
<FeedCard style={tw`p-4 gap-2`}>
|
|
|
|
|
<SerifText style={tw`text-xl`}>Title</SerifText>
|
|
|
|
|
<SansSerifText>Body text inside a feed card.</SansSerifText>
|
|
|
|
|
<Button style={tw`self-start mt-2`} label="Action" />
|
|
|
|
|
</FeedCard>
|
|
|
|
|
</Section>
|
|
|
|
|
</View>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const feedCardShowcase: Showcase = {
|
|
|
|
|
title: "FeedCard",
|
|
|
|
|
component: FeedCardShowcase,
|
|
|
|
|
}
|