@thewhileloop/whileui 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -57
- package/dist/blocks/layout/form-modal-screen.d.ts +5 -1
- package/dist/blocks/layout/form-modal-screen.d.ts.map +1 -1
- package/dist/blocks/layout/form-modal-screen.js +2 -2
- package/dist/blocks/layout/form-modal-screen.js.map +1 -1
- package/dist/blocks/layout/loading-screen.d.ts +3 -1
- package/dist/blocks/layout/loading-screen.d.ts.map +1 -1
- package/dist/blocks/layout/loading-screen.js +2 -2
- package/dist/blocks/layout/loading-screen.js.map +1 -1
- package/dist/blocks/navigation/drawer-menu.d.ts +3 -1
- package/dist/blocks/navigation/drawer-menu.d.ts.map +1 -1
- package/dist/blocks/navigation/drawer-menu.js +6 -3
- package/dist/blocks/navigation/drawer-menu.js.map +1 -1
- package/dist/components/input/input.js +1 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/numeric-input/numeric-input.js +1 -1
- package/dist/components/numeric-input/numeric-input.js.map +1 -1
- package/dist/components/textarea/textarea.js +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/package.json +11 -9
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
# WhileUI Native
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Copy-paste components for React Native. You own the code.
|
|
4
4
|
|
|
5
|
-
Beautiful, accessible, themeable
|
|
6
|
-
|
|
7
|
-
Current version: **0.2.1**
|
|
5
|
+
Beautiful, accessible, themeable components built with [Uniwind](https://uniwind.dev) + Tailwind CSS v4.
|
|
8
6
|
|
|
9
7
|
## Installation
|
|
10
8
|
|
|
11
9
|
```bash
|
|
12
10
|
npm install @thewhileloop/whileui
|
|
13
11
|
# or
|
|
14
|
-
|
|
12
|
+
bun add @thewhileloop/whileui
|
|
15
13
|
```
|
|
16
14
|
|
|
17
15
|
### Required Peer Dependencies
|
|
18
16
|
|
|
19
17
|
```bash
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
bun add react@^19.0.0 react-native@^0.81.0 uniwind@^1.0.0 tailwindcss@^4.0.0
|
|
19
|
+
bun add react-native-reanimated react-native-safe-area-context react-native-screens
|
|
22
20
|
```
|
|
23
21
|
|
|
24
22
|
### Portal Dependencies (Select, Popover, Tooltip, HoverCard)
|
|
25
23
|
|
|
26
24
|
```bash
|
|
27
|
-
|
|
25
|
+
bun add @rn-primitives/portal @rn-primitives/hooks @rn-primitives/slot @rn-primitives/select @rn-primitives/popover @rn-primitives/tooltip @rn-primitives/hover-card
|
|
28
26
|
```
|
|
29
27
|
|
|
30
28
|
### Setup Uniwind (required)
|
|
@@ -165,6 +163,15 @@ function MyScreen() {
|
|
|
165
163
|
- **Accessible** — Proper ARIA roles, keyboard support, controlled/uncontrolled state.
|
|
166
164
|
- **Tree-Shakeable** — Only imports what you use. `sideEffects: false`.
|
|
167
165
|
|
|
166
|
+
## Quick Reference (AI / Code Generation)
|
|
167
|
+
|
|
168
|
+
- **Full-screen:** `AppShell` + `Header` in `header` + `BottomNav` in `bottomNav` + content in `children`
|
|
169
|
+
- **Layout:** `Stack` (vertical), `Row` (horizontal) — both support `gap`, `align`, `justify`
|
|
170
|
+
- **Auth callbacks:** Auth blocks use objects: `onSubmit({ email, password })`, `onSubmit({ firstName, lastName, email, password })`, etc. Wire to your auth service.
|
|
171
|
+
- **PortalHost:** Add `<PortalHost />` at app root for Select, Popover, Tooltip, HoverCard.
|
|
172
|
+
- **Uniwind:** `withUniwindConfig` must wrap metro config. `global.css` at app root, imported in `App.tsx`.
|
|
173
|
+
- **Reference:** Block props in `packages/ui/src/blocks`; flow patterns in README "Flow Patterns" section.
|
|
174
|
+
|
|
168
175
|
## Components
|
|
169
176
|
|
|
170
177
|
### Primitives
|
|
@@ -276,6 +283,9 @@ function MyScreen() {
|
|
|
276
283
|
| **ErrorState** | Error display with retry |
|
|
277
284
|
| **LoadingScreen** | Full-screen loading indicator |
|
|
278
285
|
| **OnboardingScreen** | Onboarding flow screen |
|
|
286
|
+
| **SplashScreen** | Branded splash (fade/scale/slide variants) |
|
|
287
|
+
| **MinimalSplash** | Minimal monochrome splash |
|
|
288
|
+
| **BrandedSplash** | Splash with brand imagery |
|
|
279
289
|
|
|
280
290
|
### Profile & Settings
|
|
281
291
|
|
|
@@ -304,17 +314,6 @@ function MyScreen() {
|
|
|
304
314
|
| **CheckoutSummary** | Cart summary with line items |
|
|
305
315
|
| **MetricCard** | Stats/progress card for dashboards |
|
|
306
316
|
|
|
307
|
-
### Splash & States
|
|
308
|
-
|
|
309
|
-
| Block | Description |
|
|
310
|
-
| -------------------- | ------------------------------ |
|
|
311
|
-
| **SplashScreen** | Branded splash screen |
|
|
312
|
-
| **MinimalSplash** | Minimal monochrome splash |
|
|
313
|
-
| **BrandedSplash** | Splash with brand imagery |
|
|
314
|
-
| **OnboardingScreen** | Paged onboarding with slides |
|
|
315
|
-
| **LoadingScreen** | Full-screen loading state |
|
|
316
|
-
| **EmptyState** | Placeholder empty/content-less |
|
|
317
|
-
| **ErrorState** | Error message with action |
|
|
318
317
|
|
|
319
318
|
### Media
|
|
320
319
|
|
|
@@ -373,21 +372,24 @@ import { AppShell, Header, BottomNav, ScrollView } from '@thewhileloop/whileui';
|
|
|
373
372
|
</AppShell>
|
|
374
373
|
```
|
|
375
374
|
|
|
376
|
-
|
|
375
|
+
### Flow Patterns
|
|
377
376
|
|
|
378
|
-
|
|
377
|
+
| Flow | Blocks |
|
|
378
|
+
| ---------- | ------------------------------------------------------------------------------ |
|
|
379
|
+
| Auth | SignInForm → SignUpForm → ForgotPasswordForm → VerifyEmailForm → ResetPasswordForm |
|
|
380
|
+
| Settings | ProfileHeader + SettingsSection + SettingsItem (+ FormModalScreen for edits) |
|
|
381
|
+
| E-commerce | ProductCard list → CheckoutSummary + ActionBar |
|
|
382
|
+
| App shell | AppShell + Header + BottomNav + content |
|
|
379
383
|
|
|
380
|
-
|
|
381
|
-
# Install dependencies
|
|
382
|
-
pnpm install
|
|
384
|
+
Block props: see TypeScript interfaces in `packages/ui/src/blocks`.
|
|
383
385
|
|
|
384
|
-
|
|
385
|
-
cd apps/starter
|
|
386
|
-
npx expo start
|
|
386
|
+
## Quick Start
|
|
387
387
|
|
|
388
|
-
|
|
388
|
+
```bash
|
|
389
|
+
bun install
|
|
389
390
|
cd apps/showcase
|
|
390
|
-
|
|
391
|
+
bun run dev
|
|
392
|
+
# Or: npx expo start --web
|
|
391
393
|
```
|
|
392
394
|
|
|
393
395
|
## Project Structure
|
|
@@ -426,7 +428,7 @@ whileui/
|
|
|
426
428
|
│ ├── App.tsx # Component showcase
|
|
427
429
|
│ ├── global.css # Theme variables (OKLCH) — at app root!
|
|
428
430
|
│ └── metro.config.js # Uniwind + monorepo config
|
|
429
|
-
└── package.json #
|
|
431
|
+
└── package.json # bun monorepo root
|
|
430
432
|
```
|
|
431
433
|
|
|
432
434
|
## Theming
|
|
@@ -506,19 +508,6 @@ const adapter: ThemeBridgeAdapter = {
|
|
|
506
508
|
const { mode, resolvedTheme, setMode, cycleMode } = useThemeBridge({ adapter });
|
|
507
509
|
```
|
|
508
510
|
|
|
509
|
-
## Using Components
|
|
510
|
-
|
|
511
|
-
Copy any component folder from `packages/ui/src/components/` into your project:
|
|
512
|
-
|
|
513
|
-
```tsx
|
|
514
|
-
import { cn } from './lib/cn';
|
|
515
|
-
import { tv, type VariantProps } from './lib/tv';
|
|
516
|
-
|
|
517
|
-
// Use the component with className overrides
|
|
518
|
-
<Button className="mt-4">
|
|
519
|
-
<ButtonText>Get Started</ButtonText>
|
|
520
|
-
</Button>;
|
|
521
|
-
```
|
|
522
511
|
|
|
523
512
|
## Tech Stack
|
|
524
513
|
|
|
@@ -526,7 +515,7 @@ import { tv, type VariantProps } from './lib/tv';
|
|
|
526
515
|
- **Variants**: [tailwind-variants](https://www.tailwind-variants.org/) (`tv()`)
|
|
527
516
|
- **Merging**: [clsx](https://github.com/lukeed/clsx) + [tailwind-merge](https://github.com/dcastil/tailwind-merge)
|
|
528
517
|
- **Expo**: SDK 54
|
|
529
|
-
- **Monorepo**:
|
|
518
|
+
- **Monorepo**: bun + Turborepo
|
|
530
519
|
|
|
531
520
|
## License
|
|
532
521
|
|
|
@@ -567,11 +556,12 @@ import { Input } from '@thewhileloop/whileui';
|
|
|
567
556
|
<Input placeholder="Email" variant="default" value={value} onChangeText={setValue} />;
|
|
568
557
|
```
|
|
569
558
|
|
|
570
|
-
| Prop
|
|
571
|
-
|
|
|
572
|
-
| variant
|
|
573
|
-
| placeholder
|
|
574
|
-
|
|
|
559
|
+
| Prop | Type | Default | Description |
|
|
560
|
+
| -------------------- | ---------------------- | ----------- | ------------------------------------------------ |
|
|
561
|
+
| variant | `'default' \| 'error'` | `'default'` | Input style variant |
|
|
562
|
+
| placeholder | `string` | — | Placeholder text |
|
|
563
|
+
| placeholderTextColor | `string` | — | Hex for placeholder (theme-aware when provided) |
|
|
564
|
+
| editable | `boolean` | `true` | Whether input is editable |
|
|
575
565
|
|
|
576
566
|
## NumericInput
|
|
577
567
|
|
|
@@ -590,14 +580,15 @@ import { NumericInput } from '@thewhileloop/whileui';
|
|
|
590
580
|
/>;
|
|
591
581
|
```
|
|
592
582
|
|
|
593
|
-
| Prop
|
|
594
|
-
|
|
|
595
|
-
| variant
|
|
596
|
-
| size
|
|
597
|
-
| value
|
|
598
|
-
| onValueChange
|
|
599
|
-
|
|
|
600
|
-
|
|
|
583
|
+
| Prop | Type | Default | Description |
|
|
584
|
+
| -------------------- | --------------------------------- | ----------- | --------------------------------- |
|
|
585
|
+
| variant | `'default' \| 'error'` | `'default'` | Input style |
|
|
586
|
+
| size | `'default' \| 'compact'` | `'default'` | Density size |
|
|
587
|
+
| value | `number \| null` | — | Controlled numeric value |
|
|
588
|
+
| onValueChange | `(value: number \| null) => void` | — | Numeric value change callback |
|
|
589
|
+
| placeholderTextColor | `string` | — | Hex for placeholder |
|
|
590
|
+
| prefix / suffix | `ReactNode` | — | Left/right slots |
|
|
591
|
+
| showSteppers | `boolean` | `false` | Show decrement/increment controls |
|
|
601
592
|
|
|
602
593
|
## FormField
|
|
603
594
|
|
|
@@ -10,9 +10,13 @@ export interface FormModalScreenProps extends Omit<ViewProps, 'className'> {
|
|
|
10
10
|
loading?: boolean;
|
|
11
11
|
saving?: boolean;
|
|
12
12
|
savingText?: string;
|
|
13
|
+
/** Hex color for spinner in loading state. ActivityIndicator requires hex. */
|
|
14
|
+
loadingSpinnerColor?: string;
|
|
15
|
+
/** Hex color for spinner in saving banner. Defaults to platform (Android blue) when not set. */
|
|
16
|
+
savingSpinnerColor?: string;
|
|
13
17
|
scrollEnabled?: boolean;
|
|
14
18
|
children: React.ReactNode;
|
|
15
19
|
}
|
|
16
|
-
declare function FormModalScreen({ className, title, subtitle, leftSlot, rightSlot, onClose, loading, saving, savingText, scrollEnabled, children, ...props }: FormModalScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function FormModalScreen({ className, title, subtitle, leftSlot, rightSlot, onClose, loading, saving, savingText, loadingSpinnerColor, savingSpinnerColor, scrollEnabled, children, ...props }: FormModalScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
17
21
|
export { FormModalScreen };
|
|
18
22
|
//# sourceMappingURL=form-modal-screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-modal-screen.d.ts","sourceRoot":"","sources":["../../../src/blocks/layout/form-modal-screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAQvF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAe,EACf,MAAc,EACd,UAAwB,EACxB,aAAoB,EACpB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAmEtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"form-modal-screen.d.ts","sourceRoot":"","sources":["../../../src/blocks/layout/form-modal-screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAQvF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gGAAgG;IAChG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAe,EACf,MAAc,EACd,UAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,aAAoB,EACpB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAmEtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -5,8 +5,8 @@ import { Text } from '../../components/text';
|
|
|
5
5
|
import { Spinner } from '../../components/spinner';
|
|
6
6
|
import { cn } from '../../lib/cn';
|
|
7
7
|
const { height: SCREEN_HEIGHT } = Dimensions.get('window');
|
|
8
|
-
function FormModalScreen({ className, title, subtitle, leftSlot, rightSlot, onClose, loading = false, saving = false, savingText = 'Saving...', scrollEnabled = true, children, ...props }) {
|
|
9
|
-
const content = loading ? (_jsx(SafeAreaView, { style: { flex: 1 }, className: "bg-background", edges: ['top'], children: _jsx(View, { style: { flex: 1 }, className: "items-center justify-center", children: _jsx(Spinner, {}) }) })) : (_jsxs(SafeAreaView, { style: { flex: 1 }, className: cn('bg-background', className), edges: ['top'], ...props, children: [_jsxs(View, { className: "flex-row items-center px-4 py-3 border-b border-border", children: [_jsx(View, { className: "w-12", children: leftSlot ? (leftSlot) : onClose ? (_jsx(Pressable, { onPress: onClose, disabled: saving, className: "p-2 -m-2 active:opacity-50 min-w-[44px] min-h-[44px] items-center justify-center", accessibilityRole: "button", accessibilityLabel: "Close", children: _jsx(Text, { className: "text-foreground text-xl font-medium", children: "\u00D7" }) })) : null }), _jsxs(View, { className: "flex-1 items-center", children: [_jsx(Text, { variant: "title", className: "text-center", children: title }), subtitle && (_jsx(Text, { variant: "caption", className: "text-center text-muted-foreground", children: subtitle }))] }), _jsx(View, { className: "w-12 items-end", children: rightSlot })] }), saving && (_jsxs(View, { className: "bg-primary px-4 py-2 flex-row items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm" }), _jsx(Text, { className: "text-primary-foreground text-sm", children: savingText })] })), _jsx(ScrollView, { style: { flex: 1 }, contentContainerStyle: { padding: 16, minHeight: SCREEN_HEIGHT * 0.4 }, scrollEnabled: !saving && scrollEnabled, keyboardShouldPersistTaps: "handled", children: children })] }));
|
|
8
|
+
function FormModalScreen({ className, title, subtitle, leftSlot, rightSlot, onClose, loading = false, saving = false, savingText = 'Saving...', loadingSpinnerColor, savingSpinnerColor, scrollEnabled = true, children, ...props }) {
|
|
9
|
+
const content = loading ? (_jsx(SafeAreaView, { style: { flex: 1 }, className: "bg-background", edges: ['top'], children: _jsx(View, { style: { flex: 1 }, className: "items-center justify-center", children: _jsx(Spinner, { color: loadingSpinnerColor }) }) })) : (_jsxs(SafeAreaView, { style: { flex: 1 }, className: cn('bg-background', className), edges: ['top'], ...props, children: [_jsxs(View, { className: "flex-row items-center px-4 py-3 border-b border-border", children: [_jsx(View, { className: "w-12", children: leftSlot ? (leftSlot) : onClose ? (_jsx(Pressable, { onPress: onClose, disabled: saving, className: "p-2 -m-2 active:opacity-50 min-w-[44px] min-h-[44px] items-center justify-center", accessibilityRole: "button", accessibilityLabel: "Close", children: _jsx(Text, { className: "text-foreground text-xl font-medium", children: "\u00D7" }) })) : null }), _jsxs(View, { className: "flex-1 items-center", children: [_jsx(Text, { variant: "title", className: "text-center", children: title }), subtitle && (_jsx(Text, { variant: "caption", className: "text-center text-muted-foreground", children: subtitle }))] }), _jsx(View, { className: "w-12 items-end", children: rightSlot })] }), saving && (_jsxs(View, { className: "bg-primary px-4 py-2 flex-row items-center justify-center gap-2", children: [_jsx(Spinner, { size: "sm", color: savingSpinnerColor }), _jsx(Text, { className: "text-primary-foreground text-sm", children: savingText })] })), _jsx(ScrollView, { style: { flex: 1 }, contentContainerStyle: { padding: 16, minHeight: SCREEN_HEIGHT * 0.4 }, scrollEnabled: !saving && scrollEnabled, keyboardShouldPersistTaps: "handled", children: children })] }));
|
|
10
10
|
// Wrap in SafeAreaProvider so layout works inside Modal (which renders outside app tree)
|
|
11
11
|
return (_jsx(SafeAreaProvider, { style: { flex: 1, minHeight: SCREEN_HEIGHT }, children: content }));
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-modal-screen.js","sourceRoot":"","sources":["../../../src/blocks/layout/form-modal-screen.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"form-modal-screen.js","sourceRoot":"","sources":["../../../src/blocks/layout/form-modal-screen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { type ViewProps } from 'react-native';
|
|
|
2
2
|
export interface LoadingScreenProps extends ViewProps {
|
|
3
3
|
message?: string;
|
|
4
4
|
size?: 'sm' | 'md' | 'lg';
|
|
5
|
+
/** Hex color for spinner. ActivityIndicator requires hex. */
|
|
6
|
+
spinnerColor?: string;
|
|
5
7
|
}
|
|
6
|
-
export declare function LoadingScreen({ message, size, className, ...props }: LoadingScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function LoadingScreen({ message, size, spinnerColor, className, ...props }: LoadingScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
//# sourceMappingURL=loading-screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-screen.d.ts","sourceRoot":"","sources":["../../../src/blocks/layout/loading-screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOpD,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"loading-screen.d.ts","sourceRoot":"","sources":["../../../src/blocks/layout/loading-screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOpD,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,IAAW,EACX,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAepB"}
|
|
@@ -4,12 +4,12 @@ import { Text } from '../../components/text';
|
|
|
4
4
|
import { Spinner } from '../../components/spinner';
|
|
5
5
|
import { cn } from '../../lib/cn';
|
|
6
6
|
// ─── Component ───────────────────────────────────────────────
|
|
7
|
-
export function LoadingScreen({ message, size = 'md', className, ...props }) {
|
|
7
|
+
export function LoadingScreen({ message, size = 'md', spinnerColor, className, ...props }) {
|
|
8
8
|
const spinnerSizes = {
|
|
9
9
|
sm: 'h-6 w-6',
|
|
10
10
|
md: 'h-10 w-10',
|
|
11
11
|
lg: 'h-16 w-16',
|
|
12
12
|
};
|
|
13
|
-
return (_jsxs(View, { className: cn('flex-1 items-center justify-center bg-background', className), ...props, children: [_jsx(View, { className: spinnerSizes[size], children: _jsx(Spinner, {}) }), message && _jsx(Text, { className: "mt-4 text-muted-foreground", children: message })] }));
|
|
13
|
+
return (_jsxs(View, { className: cn('flex-1 items-center justify-center bg-background', className), ...props, children: [_jsx(View, { className: spinnerSizes[size], children: _jsx(Spinner, { color: spinnerColor }) }), message && _jsx(Text, { className: "mt-4 text-muted-foreground", children: message })] }));
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=loading-screen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-screen.js","sourceRoot":"","sources":["../../../src/blocks/layout/loading-screen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"loading-screen.js","sourceRoot":"","sources":["../../../src/blocks/layout/loading-screen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAWlC,gEAAgE;AAEhE,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,IAAI,GAAG,IAAI,EACX,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACW;IACnB,MAAM,YAAY,GAAG;QACnB,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,WAAW;QACf,EAAE,EAAE,WAAW;KAChB,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE,SAAS,CAAC,KAAM,KAAK,aAC3F,KAAC,IAAI,IAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,YACjC,KAAC,OAAO,IAAC,KAAK,EAAE,YAAY,GAAI,GAC3B,EACN,OAAO,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,YAAE,OAAO,GAAQ,IACpE,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -19,8 +19,10 @@ export interface DrawerMenuProps {
|
|
|
19
19
|
onSelect?: (key: string) => void;
|
|
20
20
|
header?: React.ReactNode;
|
|
21
21
|
footer?: React.ReactNode;
|
|
22
|
+
/** Max width in px. On web, defaults to 360 when not provided. */
|
|
23
|
+
maxWidth?: number;
|
|
22
24
|
className?: string;
|
|
23
25
|
style?: StyleProp<ViewStyle>;
|
|
24
26
|
}
|
|
25
|
-
export declare function DrawerMenu({ visible, onClose, sections, activeKey, onSelect, header, footer, className, style, }: DrawerMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function DrawerMenu({ visible, onClose, sections, activeKey, onSelect, header, footer, maxWidth, className, style, }: DrawerMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
26
28
|
//# sourceMappingURL=drawer-menu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-menu.d.ts","sourceRoot":"","sources":["../../../src/blocks/navigation/drawer-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"drawer-menu.d.ts","sourceRoot":"","sources":["../../../src/blocks/navigation/drawer-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAetB,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAID,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,eAAe,2CAuHjB"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { View, Pressable, useWindowDimensions, StyleSheet, } from 'react-native';
|
|
3
|
+
import { View, Pressable, Platform, useWindowDimensions, StyleSheet, } from 'react-native';
|
|
4
4
|
import Animated, { useSharedValue, useAnimatedStyle, withTiming, Easing, interpolate, } from 'react-native-reanimated';
|
|
5
5
|
import { Text } from '../../components/text';
|
|
6
6
|
import { cn } from '../../lib/cn';
|
|
7
7
|
const DRAWER_WIDTH_RATIO = 0.82;
|
|
8
8
|
const OPEN_DURATION = 300;
|
|
9
9
|
const CLOSE_DURATION = 220;
|
|
10
|
-
|
|
10
|
+
const WEB_DEFAULT_MAX_WIDTH = 360;
|
|
11
|
+
export function DrawerMenu({ visible, onClose, sections, activeKey, onSelect, header, footer, maxWidth, className, style, }) {
|
|
11
12
|
const { width: screenWidth } = useWindowDimensions();
|
|
12
|
-
const
|
|
13
|
+
const rawWidth = screenWidth * DRAWER_WIDTH_RATIO;
|
|
14
|
+
const effectiveMaxWidth = maxWidth ?? (Platform.OS === 'web' ? WEB_DEFAULT_MAX_WIDTH : undefined);
|
|
15
|
+
const drawerWidth = effectiveMaxWidth != null ? Math.min(rawWidth, effectiveMaxWidth) : rawWidth;
|
|
13
16
|
const progress = useSharedValue(0);
|
|
14
17
|
React.useEffect(() => {
|
|
15
18
|
progress.value = withTiming(visible ? 1 : 0, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-menu.js","sourceRoot":"","sources":["../../../src/blocks/navigation/drawer-menu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,UAAU,GAGX,MAAM,cAAc,CAAC;AACtB,OAAO,QAAQ,EAAE,EACf,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,cAAc,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"drawer-menu.js","sourceRoot":"","sources":["../../../src/blocks/navigation/drawer-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const inputVariants = tv({
|
|
|
15
15
|
variant: 'default',
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
|
-
const Input = React.forwardRef(({ className, prefix, suffix, inputClassName, variant, editable = true, placeholderTextColor
|
|
18
|
+
const Input = React.forwardRef(({ className, prefix, suffix, inputClassName, variant, editable = true, placeholderTextColor, ...props }, ref) => {
|
|
19
19
|
return (_jsxs(View, { className: cn('flex-row items-center rounded-md border border-input bg-background', inputVariants({ variant }), !editable && 'opacity-50', className), children: [prefix && _jsx(View, { className: "pl-3", children: prefix }), _jsx(TextInput, { ref: ref, className: cn('flex-1 py-2 text-sm text-foreground placeholder:text-muted-foreground', prefix && 'pl-2', suffix && 'pr-2', inputClassName), editable: editable, placeholderTextColor: placeholderTextColor, ...props }), suffix && _jsx(View, { className: "pr-3", children: suffix })] }));
|
|
20
20
|
});
|
|
21
21
|
Input.displayName = 'Input';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,MAAM,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,EAAE,iGAAiG;IACvG,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,oBAAoB;SAC5B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC;AASH,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CACE,EACE,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,oBAAoB,
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,MAAM,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,EAAE,iGAAiG;IACvG,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,oBAAoB;SAC5B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC;AASH,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CACE,EACE,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,oBAAoB,EACpB,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,OAAO,CACL,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,oEAAoE,EACpE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAC1B,CAAC,QAAQ,IAAI,YAAY,EACzB,SAAS,CACV,aAEA,MAAM,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YAAE,MAAM,GAAQ,EACjD,KAAC,SAAS,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,uEAAuE,EACvE,MAAM,IAAI,MAAM,EAChB,MAAM,IAAI,MAAM,EAChB,cAAc,CACf,EACD,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,oBAAoB,KACtC,KAAK,GACT,EACD,MAAM,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YAAE,MAAM,GAAQ,IAC5C,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -73,7 +73,7 @@ function clampValue(value, min, max) {
|
|
|
73
73
|
}
|
|
74
74
|
return next;
|
|
75
75
|
}
|
|
76
|
-
const NumericInput = React.forwardRef(({ className, inputClassName, prefix, suffix, value, defaultValue, onValueChange, min, max, step = 1, showSteppers = false, variant = 'default', size = 'default', editable = true, placeholderTextColor
|
|
76
|
+
const NumericInput = React.forwardRef(({ className, inputClassName, prefix, suffix, value, defaultValue, onValueChange, min, max, step = 1, showSteppers = false, variant = 'default', size = 'default', editable = true, placeholderTextColor, onBlur, ...props }, ref) => {
|
|
77
77
|
const [internalText, setInternalText] = useState(() => toInputText(defaultValue));
|
|
78
78
|
const isControlled = value !== undefined;
|
|
79
79
|
const textValue = isControlled ? toInputText(value) : internalText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric-input.js","sourceRoot":"","sources":["../../../src/components/numeric-input/numeric-input.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"numeric-input.js","sourceRoot":"","sources":["../../../src/components/numeric-input/numeric-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ const textareaVariants = tv({
|
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
20
|
// ─── Component ───────────────────────────────────────────────
|
|
21
|
-
const Textarea = React.forwardRef(({ className, size, placeholderTextColor
|
|
21
|
+
const Textarea = React.forwardRef(({ className, size, placeholderTextColor, ...props }, ref) => {
|
|
22
22
|
return (_jsx(TextInput, { ref: ref, className: cn(textareaVariants({ size }), className), multiline: true, textAlignVertical: "top", placeholderTextColor: placeholderTextColor, ...props }));
|
|
23
23
|
});
|
|
24
24
|
Textarea.displayName = 'Textarea';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,gEAAgE;AAEhE,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,EAAE,wHAAwH;IAC9H,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,cAAc;YACvB,EAAE,EAAE,sBAAsB;YAC1B,EAAE,EAAE,yBAAyB;SAC9B;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,SAAS;KAChB;CACF,CAAC,CAAC;AASH,gEAAgE;AAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,gEAAgE;AAEhE,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,EAAE,wHAAwH;IAC9H,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,cAAc;YACvB,EAAE,EAAE,sBAAsB;YAC1B,EAAE,EAAE,yBAAyB;SAC9B;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,SAAS;KAChB;CACF,CAAC,CAAC;AASH,gEAAgE;AAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3D,OAAO,CACL,KAAC,SAAS,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EACpD,SAAS,QACT,iBAAiB,EAAC,KAAK,EACvB,oBAAoB,EAAE,oBAAoB,KACtC,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,gEAAgE;AAEhE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thewhileloop/whileui",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "WhileUI Native —
|
|
3
|
+
"version": "0.2.5",
|
|
4
|
+
"description": "WhileUI Native — Copy-paste components for React Native. You own the code.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
"ui",
|
|
14
14
|
"components",
|
|
15
15
|
"tailwind",
|
|
16
|
-
"uniwind"
|
|
17
|
-
"shadcn"
|
|
16
|
+
"uniwind"
|
|
18
17
|
],
|
|
19
18
|
"type": "module",
|
|
20
19
|
"main": "dist/index.js",
|
|
@@ -43,6 +42,13 @@
|
|
|
43
42
|
"publishConfig": {
|
|
44
43
|
"access": "public"
|
|
45
44
|
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsc -p tsconfig.json",
|
|
47
|
+
"prepack": "cp ../../README.md README.md",
|
|
48
|
+
"postpack": "rm -f README.md",
|
|
49
|
+
"prepare": "bun run build",
|
|
50
|
+
"typecheck": "tsc --noEmit"
|
|
51
|
+
},
|
|
46
52
|
"peerDependencies": {
|
|
47
53
|
"@rn-primitives/hooks": ">=1.0.0",
|
|
48
54
|
"@rn-primitives/hover-card": ">=1.0.0",
|
|
@@ -70,9 +76,5 @@
|
|
|
70
76
|
"@types/react": "~19.1.0",
|
|
71
77
|
"react-native-screens": "^4.23.0",
|
|
72
78
|
"typescript": "^5.7.0"
|
|
73
|
-
},
|
|
74
|
-
"scripts": {
|
|
75
|
-
"build": "tsc -p tsconfig.json",
|
|
76
|
-
"typecheck": "tsc --noEmit"
|
|
77
79
|
}
|
|
78
|
-
}
|
|
80
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 WhileLoop
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|