mirror of
https://github.com/kennethnym/freya
synced 2026-07-05 23:41:14 +01:00
chore: rename aelis to freya (#122)
This commit is contained in:
51
apps/freya-client/src/app/components/[name].tsx
Normal file
51
apps/freya-client/src/app/components/[name].tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import { useLocalSearchParams, useNavigation } from "expo-router"
|
||||
import { useEffect } from "react"
|
||||
import { ScrollView, View } from "react-native"
|
||||
import tw from "twrnc"
|
||||
|
||||
import { type Showcase } from "@/components/showcase"
|
||||
import { buttonShowcase } from "@/components/ui/button.showcase"
|
||||
import { feedCardShowcase } from "@/components/ui/feed-card.showcase"
|
||||
import { monospaceTextShowcase } from "@/components/ui/monospace-text.showcase"
|
||||
import { SansSerifText } from "@/components/ui/sans-serif-text"
|
||||
import { sansSerifTextShowcase } from "@/components/ui/sans-serif-text.showcase"
|
||||
import { serifTextShowcase } from "@/components/ui/serif-text.showcase"
|
||||
|
||||
const showcases: Record<string, Showcase> = {
|
||||
button: buttonShowcase,
|
||||
"feed-card": feedCardShowcase,
|
||||
"serif-text": serifTextShowcase,
|
||||
"sans-serif-text": sansSerifTextShowcase,
|
||||
"monospace-text": monospaceTextShowcase,
|
||||
}
|
||||
|
||||
export default function ComponentDetailScreen() {
|
||||
const { name } = useLocalSearchParams<{ name: string }>()
|
||||
const navigation = useNavigation()
|
||||
const showcase = showcases[name]
|
||||
|
||||
useEffect(() => {
|
||||
if (showcase) {
|
||||
navigation.setOptions({ title: showcase.title })
|
||||
}
|
||||
}, [navigation, showcase])
|
||||
|
||||
if (!showcase) {
|
||||
return (
|
||||
<View style={tw`bg-stone-100 dark:bg-stone-900 flex-1 items-center justify-center`}>
|
||||
<SansSerifText>Component not found</SansSerifText>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
const ShowcaseComponent = showcase.component
|
||||
|
||||
return (
|
||||
<ScrollView
|
||||
style={tw`bg-stone-100 dark:bg-stone-900 flex-1`}
|
||||
contentContainerStyle={tw`px-5 pb-10 pt-4 gap-6`}
|
||||
>
|
||||
<ShowcaseComponent />
|
||||
</ScrollView>
|
||||
)
|
||||
}
|
||||
39
apps/freya-client/src/app/components/index.tsx
Normal file
39
apps/freya-client/src/app/components/index.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
import { Link } from "expo-router"
|
||||
import { FlatList, Pressable, View } from "react-native"
|
||||
import tw from "twrnc"
|
||||
|
||||
import { SansSerifText } from "@/components/ui/sans-serif-text"
|
||||
|
||||
const components = [
|
||||
{ name: "button", label: "Button" },
|
||||
{ name: "feed-card", label: "FeedCard" },
|
||||
{ name: "serif-text", label: "SerifText" },
|
||||
{ name: "sans-serif-text", label: "SansSerifText" },
|
||||
{ name: "monospace-text", label: "MonospaceText" },
|
||||
] as const
|
||||
|
||||
export default function ComponentsScreen() {
|
||||
return (
|
||||
<View style={tw`flex-1`}>
|
||||
<View
|
||||
style={tw`mx-4 mt-4 rounded-xl border border-stone-200 dark:border-stone-800 overflow-hidden`}
|
||||
>
|
||||
<FlatList
|
||||
data={components}
|
||||
keyExtractor={(item) => item.name}
|
||||
scrollEnabled={false}
|
||||
ItemSeparatorComponent={() => (
|
||||
<View style={tw`border-b border-stone-200 dark:border-stone-800`} />
|
||||
)}
|
||||
renderItem={({ item }) => (
|
||||
<Link href={`/components/${item.name}`} asChild>
|
||||
<Pressable style={tw`px-4 py-3`}>
|
||||
<SansSerifText style={tw`text-base`}>{item.label}</SansSerifText>
|
||||
</Pressable>
|
||||
</Link>
|
||||
)}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user