Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
79dc7bf
feat(react-native-ui-lite): virtualize tree with LegendList for perfo…
dannyhw Jan 15, 2026
bc039df
fix: add left padding to tree content
dannyhw Jan 15, 2026
5bc72be
chore: remove unused insets from MobileMenuDrawer
dannyhw Jan 15, 2026
b5d40c8
fix: add padding and improve styling for search results
dannyhw Jan 15, 2026
65ddb0d
fix: lint
dannyhw Jan 15, 2026
fa85b06
refactor: extract static styles and memoize theme-dependent styles
dannyhw Jan 15, 2026
6ee9214
fix: flatlist with scroll to initial
dannyhw Jan 15, 2026
ad698ab
fix: scroll to from serch
dannyhw Jan 15, 2026
32d5063
fix: legend list warning and add more example stories
dannyhw Jan 15, 2026
73d4f2c
fixes for scroll to
dannyhw Jan 16, 2026
213fcff
feat: use microfuzz for faster search
dannyhw Jan 16, 2026
1bd4ceb
fix: color for icons in search results
dannyhw Jan 16, 2026
578f82f
fix: bump expo
dannyhw Jan 16, 2026
3982cd9
fix: clear icon color
dannyhw Jan 16, 2026
97f97cf
remove unused flatlist version
dannyhw Jan 16, 2026
12921eb
simplify scroll to
dannyhw Jan 16, 2026
e96ee61
fix: web search crash
dannyhw Jan 16, 2026
e9b57b0
fix: improve examples
dannyhw Jan 16, 2026
54eb04b
Merge remote-tracking branch 'origin/next' into feat/lite-ui-virtuali…
dannyhw Jan 16, 2026
cd785f5
Merge remote-tracking branch 'origin/next' into feat/lite-ui-virtuali…
dannyhw Jan 31, 2026
62d60bc
add radon config
dannyhw Jan 31, 2026
209d08a
add easing to drawer
dannyhw Jan 31, 2026
2762356
more drag area
dannyhw Jan 31, 2026
827c315
fix: press area for story
dannyhw Jan 31, 2026
9494050
usability fixes
dannyhw Jan 31, 2026
061447b
update versions
dannyhw Jan 31, 2026
4972f8a
shadow on drawer
dannyhw Jan 31, 2026
586c9ac
Merge remote-tracking branch 'origin/next' into feat/lite-ui-virtuali…
dannyhw Jan 31, 2026
5dc11b5
bump
dannyhw Jan 31, 2026
fddfee4
fix: conflict
dannyhw Jan 31, 2026
5e99a2f
v10.2.2-alpha.0
dannyhw Jan 31, 2026
0ccb0f2
fix press area
dannyhw Jan 31, 2026
4fa0ce2
resize handle for desktop view
dannyhw Jan 31, 2026
900db1a
v10.2.2-alpha.1
dannyhw Jan 31, 2026
0d9307d
Merge branch 'next' into feat/lite-ui-virtualized-tree
dannyhw Feb 8, 2026
af294af
v10.2.2-alpha.2
dannyhw Feb 8, 2026
7b78239
Merge branch 'next' into feat/lite-ui-virtualized-tree
dannyhw Feb 8, 2026
3631aed
fix
dannyhw Feb 8, 2026
841dfe0
fix: roles
dannyhw Feb 8, 2026
9175a5e
fix: roles
dannyhw Feb 8, 2026
7e6fdac
trap focus
dannyhw Feb 8, 2026
b57fd18
fix
dannyhw Feb 8, 2026
a1c7eda
fix
dannyhw Feb 8, 2026
88fccc6
fix
dannyhw Feb 8, 2026
0a1660d
fix
dannyhw Feb 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ built-storybooks
.eslintcache
examples/expo-example/.maestro/diffs
examples/expo-example/.maestro/screenshots
examples/expo-example/components/PerfTesting/*.stories.tsx
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "Radon IDE panel",
"type": "radon-ide",
"request": "launch",
"appRoot": "./examples/expo-example",
"env": {
"EXPO_PUBLIC_STORYBOOK_ENABLED": "true",
"EXPO_PUBLIC_LITE_UI": "true"
},
"ios": {},
"android": {},
"usePrebuild": false
}
]
}
15 changes: 14 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Always check first if the react-native-best-practices skill can be used

## Development Commands

```bash
Expand All @@ -15,9 +17,12 @@ yarn example # Run the expo example app with Storybook

# Testing
yarn test # Run unit tests across all packages
yarn test:ci # Run tests in CI mode

# Code Quality
yarn lint # Run ESLint across the codebase
yarn format:check # Check Prettier formatting
yarn format:fix # Auto-fix Prettier formatting

# Documentation (from docs/ directory)
cd docs
Expand Down Expand Up @@ -63,7 +68,14 @@ The `withStorybook` Metro wrapper:
- Enables `unstable_allowRequireContext` for dynamic story imports
- Automatically generates `storybook.requires.ts` file
- Optional WebSocket server for remote control
- Can be conditionally enabled/disabled via options
- Can be conditionally enabled/disabled via `enabled` option
- Supports `liteMode` for reduced bundle size

### Testing

- Uses **jest** with `jest-expo` preset
- `universal-test-renderer` for portable story testing
- Story generation tested with Node's native test runner

### Key Concepts

Expand All @@ -72,3 +84,4 @@ The `withStorybook` Metro wrapper:
3. **Story requires generation** - Automatic generation of story imports via Metro
4. **Portable stories** - Reuse stories in unit tests
5. **WebSocket support** - Remote control stories from external devices
6. **Lite mode** - Alternative UI without heavy dependencies (reanimated, etc.)
2 changes: 1 addition & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "docs",
"version": "10.2.1",
"version": "10.2.2-alpha.2",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ const meta = {
component: LoginForm,
args: {
onSubmit: fn(),
emailLabel: 'Email Address',
emailPlaceholder: 'Enter your email',
passwordLabel: 'Password',
passwordPlaceholder: 'Enter your password',
submitButtonTitle: 'Sign In',
},
} satisfies Meta<typeof LoginForm>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,23 @@ export interface LoginFormProps {
loading?: boolean;
emailError?: string;
passwordError?: string;
emailLabel?: string;
emailPlaceholder?: string;
passwordLabel?: string;
passwordPlaceholder?: string;
submitButtonTitle?: string;
}

export const LoginForm: React.FC<LoginFormProps> = ({
onSubmit,
loading = false,
emailError,
passwordError,
emailLabel = 'Email Address',
emailPlaceholder = 'Enter your email',
passwordLabel = 'Password',
passwordPlaceholder = 'Enter your password',
submitButtonTitle = 'Sign In',
}) => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
Expand All @@ -26,22 +36,22 @@ export const LoginForm: React.FC<LoginFormProps> = ({
return (
<View style={styles.container}>
<TextInput
label="Email Address"
placeholder="Enter your email"
label={emailLabel}
placeholder={emailPlaceholder}
value={email}
onChangeText={setEmail}
error={emailError}
/>
<TextInput
label="Password"
placeholder="Enter your password"
label={passwordLabel}
placeholder={passwordPlaceholder}
value={password}
onChangeText={setPassword}
secureTextEntry
error={passwordError}
/>
<Button
title="Sign In"
title={submitButtonTitle}
onPress={handleSubmit}
loading={loading}
disabled={!email || !password}
Expand Down
Loading