@pickle-ui/react-native 0.0.0-stage → 0.0.0
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 +92 -2
- package/dist/components/Badge.d.ts +11 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Badge.js +33 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Button.d.ts +13 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +39 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +20 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +29 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Text.d.ts +10 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Text.js +28 -0
- package/dist/components/Text.js.map +1 -0
- package/dist/entries/badge.d.ts +3 -0
- package/dist/entries/badge.d.ts.map +1 -0
- package/dist/entries/badge.js +2 -0
- package/dist/entries/badge.js.map +1 -0
- package/dist/entries/button.d.ts +3 -0
- package/dist/entries/button.d.ts.map +1 -0
- package/dist/entries/button.js +2 -0
- package/dist/entries/button.js.map +1 -0
- package/dist/entries/card.d.ts +3 -0
- package/dist/entries/card.d.ts.map +1 -0
- package/dist/entries/card.js +2 -0
- package/dist/entries/card.js.map +1 -0
- package/dist/entries/cn.d.ts +2 -0
- package/dist/entries/cn.d.ts.map +1 -0
- package/dist/entries/cn.js +2 -0
- package/dist/entries/cn.js.map +1 -0
- package/dist/entries/text.d.ts +3 -0
- package/dist/entries/text.d.ts.map +1 -0
- package/dist/entries/text.js +2 -0
- package/dist/entries/text.js.map +1 -0
- package/dist/entries/use-color-token.d.ts +2 -0
- package/dist/entries/use-color-token.d.ts.map +1 -0
- package/dist/entries/use-color-token.js +2 -0
- package/dist/entries/use-color-token.js.map +1 -0
- package/dist/hooks/useColorToken.d.ts +9 -0
- package/dist/hooks/useColorToken.d.ts.map +1 -0
- package/dist/hooks/useColorToken.js +13 -0
- package/dist/hooks/useColorToken.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +6 -0
- package/dist/lib/cn.js.map +1 -0
- package/package.json +91 -3
- package/src/base.css +6 -0
- package/src/components/Badge.stories.tsx +47 -0
- package/src/components/Badge.test.tsx +11 -0
- package/src/components/Badge.tsx +42 -0
- package/src/components/Button.stories.tsx +87 -0
- package/src/components/Button.test.tsx +34 -0
- package/src/components/Button.tsx +70 -0
- package/src/components/Card.stories.tsx +55 -0
- package/src/components/Card.test.tsx +23 -0
- package/src/components/Card.tsx +55 -0
- package/src/components/Text.stories.tsx +60 -0
- package/src/components/Text.test.tsx +15 -0
- package/src/components/Text.tsx +37 -0
- package/src/components/_internal/Story.tsx +148 -0
- package/src/entries/badge.ts +2 -0
- package/src/entries/button.ts +2 -0
- package/src/entries/card.ts +8 -0
- package/src/entries/cn.ts +1 -0
- package/src/entries/text.ts +2 -0
- package/src/entries/use-color-token.ts +1 -0
- package/src/hooks/useColorToken.ts +13 -0
- package/src/index.ts +8 -0
- package/src/lib/cn.test.ts +9 -0
- package/src/lib/cn.ts +6 -0
- package/src/styles.css +12 -0
- package/src/uniwind-types.d.ts +10 -0
package/README.md
CHANGED
|
@@ -1,3 +1,93 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @pickle-ui/react-native
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Pickle UI components for React Native apps built with Expo, styled with
|
|
4
|
+
Pickle's tokens through [Uniwind](https://uniwind.dev). They reuse the names
|
|
5
|
+
of `@pickle-ui/react` (`variant`, `size`, `tone`, `Card.Header`, …) with
|
|
6
|
+
native sizes and React Native primitives.
|
|
7
|
+
|
|
8
|
+
Browse them in the [Storybook](https://ugogo.github.io/pickle-ui/react-native/),
|
|
9
|
+
rendered in the browser through react-native-web.
|
|
10
|
+
|
|
11
|
+
## Use Pickle UI
|
|
12
|
+
|
|
13
|
+
In an Expo app, install the package with Uniwind and Tailwind:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx expo install @pickle-ui/react-native@beta uniwind tailwindcss
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Point Uniwind's Metro plugin at your stylesheet in `metro.config.js`:
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
const { getDefaultConfig } = require('expo/metro-config');
|
|
23
|
+
const { withUniwindConfig } = require('uniwind/metro');
|
|
24
|
+
|
|
25
|
+
module.exports = withUniwindConfig(getDefaultConfig(__dirname), {
|
|
26
|
+
cssEntryFile: './src/global.css',
|
|
27
|
+
dtsFile: './src/uniwind-types.d.ts',
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Import Pickle's stylesheet in `src/global.css`, and import that file once
|
|
32
|
+
from your root layout:
|
|
33
|
+
|
|
34
|
+
```css
|
|
35
|
+
@import '@pickle-ui/react-native/styles.css';
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`styles.css` brings Tailwind, Uniwind, the tokens and the components' classes,
|
|
39
|
+
so don't import `tailwindcss` or `uniwind` again. Uniwind compiles each
|
|
40
|
+
imported stylesheet on its own to find themes, and the tokens only compile
|
|
41
|
+
after Tailwind and Uniwind, which is why they come from the same file.
|
|
42
|
+
|
|
43
|
+
To bring your own token set, import its pieces instead: `tailwindcss`,
|
|
44
|
+
`uniwind`, your tokens as Uniwind themes, then
|
|
45
|
+
`@pickle-ui/react-native/base.css`, which only adds the components to
|
|
46
|
+
Uniwind's content sources.
|
|
47
|
+
|
|
48
|
+
Then use the components:
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
import { Button, Card, Text } from '@pickle-ui/react-native';
|
|
52
|
+
|
|
53
|
+
export function Welcome() {
|
|
54
|
+
return (
|
|
55
|
+
<Card>
|
|
56
|
+
<Card.Header>
|
|
57
|
+
<Card.Title>Welcome</Card.Title>
|
|
58
|
+
<Card.Description>Pickle UI on iOS and Android.</Card.Description>
|
|
59
|
+
</Card.Header>
|
|
60
|
+
<Card.Content>
|
|
61
|
+
<Button onPress={() => {}}>Get started</Button>
|
|
62
|
+
</Card.Content>
|
|
63
|
+
</Card>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
[`examples/mobile`](../../examples/mobile) is a complete app with the setup
|
|
69
|
+
steps, token overrides and runtime brand colors.
|
|
70
|
+
|
|
71
|
+
## Exports
|
|
72
|
+
|
|
73
|
+
Each export is also available from its own subpath.
|
|
74
|
+
|
|
75
|
+
| Export | Subpath | Notes |
|
|
76
|
+
| --------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
77
|
+
| `Badge` | `@pickle-ui/react-native/badge` | `variant`: `default`, `secondary`, `success`, `inProgress`, `inReview` |
|
|
78
|
+
| `Button` | `@pickle-ui/react-native/button` | `variant`: `default`, `secondary`, `outline`, `ghost`, `destructive`; `size`: `sm`, `md`, `lg` |
|
|
79
|
+
| `Card` | `@pickle-ui/react-native/card` | Parts: `Card.Header`, `Card.Title`, `Card.Description`, `Card.Content` |
|
|
80
|
+
| `Text` | `@pickle-ui/react-native/text` | `variant`: `h1` … `h4`, `lead`, `body`, `small`; `tone`: `muted`, `primary`, `destructive` |
|
|
81
|
+
| `cn` | `@pickle-ui/react-native/cn` | Joins class names; later classes win |
|
|
82
|
+
| `useColorToken` | `@pickle-ui/react-native/use-color-token` | Reads a token as a color string, for props that don't take a `className` |
|
|
83
|
+
|
|
84
|
+
Every component takes the props of the React Native element it renders,
|
|
85
|
+
`className` included, and merges your `className` last.
|
|
86
|
+
|
|
87
|
+
## Theming
|
|
88
|
+
|
|
89
|
+
The tokens are Uniwind themes. Override them in `global.css` inside
|
|
90
|
+
`@variant light` and `@variant dark` blocks, declaring each variable in both
|
|
91
|
+
themes, or at runtime with Uniwind's `ScopedVariables` and
|
|
92
|
+
`Uniwind.updateCSSVariables`. See the
|
|
93
|
+
[`@pickle-ui/tokens` README](../tokens/README.md#react-native).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "inProgress" | "inReview" | "secondary" | "success" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export type BadgeProps = React.ComponentProps<typeof View> & VariantProps<typeof badgeVariants> & {
|
|
7
|
+
children: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function Badge({ children, className, variant, ...props }: BadgeProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAQ,IAAI,EAAE,MAAM,cAAc,CAAC;AAK1C,QAAA,MAAM,aAAa;;8EAWjB,CAAC;AAeH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GACxD,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,+BAM3E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { Text, View } from 'react-native';
|
|
4
|
+
import { cn } from '../lib/cn';
|
|
5
|
+
// Status variants use the `-subtle` token pairs, like `Badge` on the web.
|
|
6
|
+
const badgeVariants = cva('self-start rounded-sm px-1.5 py-0.5', {
|
|
7
|
+
defaultVariants: { variant: 'default' },
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: 'bg-primary',
|
|
11
|
+
inProgress: 'bg-info-subtle',
|
|
12
|
+
inReview: 'bg-warning-subtle',
|
|
13
|
+
secondary: 'bg-secondary',
|
|
14
|
+
success: 'bg-success-subtle',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
const labelVariants = cva('text-xs font-medium', {
|
|
19
|
+
defaultVariants: { variant: 'default' },
|
|
20
|
+
variants: {
|
|
21
|
+
variant: {
|
|
22
|
+
default: 'text-primary-foreground',
|
|
23
|
+
inProgress: 'text-info-subtle-foreground',
|
|
24
|
+
inReview: 'text-warning-subtle-foreground',
|
|
25
|
+
secondary: 'text-secondary-foreground',
|
|
26
|
+
success: 'text-success-subtle-foreground',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
export function Badge({ children, className, variant, ...props }) {
|
|
31
|
+
return (_jsx(View, { className: cn(badgeVariants({ variant }), className), ...props, children: _jsx(Text, { className: labelVariants({ variant }), children: children }) }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,0EAA0E;AAC1E,MAAM,aAAa,GAAG,GAAG,CAAC,qCAAqC,EAAE;IAC/D,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IACvC,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE,mBAAmB;SAC7B;KACF;CACF,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,GAAG,CAAC,qBAAqB,EAAE;IAC/C,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IACvC,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,yBAAyB;YAClC,UAAU,EAAE,6BAA6B;YACzC,QAAQ,EAAE,gCAAgC;YAC1C,SAAS,EAAE,2BAA2B;YACtC,OAAO,EAAE,gCAAgC;SAC1C;KACF;CACF,CAAC,CAAC;AAKH,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAc;IAC1E,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,YACnE,KAAC,IAAI,IAAC,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,YAAG,QAAQ,GAAQ,GACzD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Pressable } from 'react-native';
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
size?: "md" | "lg" | "sm" | null | undefined;
|
|
5
|
+
variant?: "default" | "secondary" | "destructive" | "ghost" | "outline" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type ButtonProps = Omit<React.ComponentProps<typeof Pressable>, 'children'> & VariantProps<typeof buttonVariants> & {
|
|
8
|
+
children: string;
|
|
9
|
+
labelClassName?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function Button({ children, className, labelClassName, size, variant, ...props }: ButtonProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAK/C,QAAA,MAAM,cAAc;;;8EAmBnB,CAAC;AAgBF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EACtC,UAAU,CACX,GACC,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEJ,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,+BAYb"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { Pressable, Text } from 'react-native';
|
|
4
|
+
import { cn } from '../lib/cn';
|
|
5
|
+
// Same variant and size names as `Button` in @pickle-ui/react.
|
|
6
|
+
const buttonVariants = cva('flex-row items-center justify-center gap-2 rounded-lg border active:opacity-80 disabled:opacity-60', {
|
|
7
|
+
defaultVariants: { size: 'md', variant: 'default' },
|
|
8
|
+
variants: {
|
|
9
|
+
size: {
|
|
10
|
+
lg: 'h-11 px-5',
|
|
11
|
+
md: 'h-10 px-4',
|
|
12
|
+
sm: 'h-8 px-3',
|
|
13
|
+
},
|
|
14
|
+
variant: {
|
|
15
|
+
default: 'border-primary bg-primary',
|
|
16
|
+
destructive: 'border-destructive bg-destructive',
|
|
17
|
+
ghost: 'border-transparent active:bg-accent',
|
|
18
|
+
outline: 'border-input bg-popover',
|
|
19
|
+
secondary: 'border-transparent bg-secondary',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const labelVariants = cva('font-medium', {
|
|
24
|
+
defaultVariants: { size: 'md', variant: 'default' },
|
|
25
|
+
variants: {
|
|
26
|
+
size: { lg: 'text-base', md: 'text-sm', sm: 'text-xs' },
|
|
27
|
+
variant: {
|
|
28
|
+
default: 'text-primary-foreground',
|
|
29
|
+
destructive: 'text-destructive-foreground',
|
|
30
|
+
ghost: 'text-foreground',
|
|
31
|
+
outline: 'text-foreground',
|
|
32
|
+
secondary: 'text-secondary-foreground',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
export function Button({ children, className, labelClassName, size, variant, ...props }) {
|
|
37
|
+
return (_jsx(Pressable, { accessibilityRole: "button", className: cn(buttonVariants({ size, variant }), className), ...props, children: _jsx(Text, { className: cn(labelVariants({ size, variant }), labelClassName), children: children }) }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,+DAA+D;AAC/D,MAAM,cAAc,GAAG,GAAG,CACxB,oGAAoG,EACpG;IACE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE;IACnD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,UAAU;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,2BAA2B;YACpC,WAAW,EAAE,mCAAmC;YAChD,KAAK,EAAE,qCAAqC;YAC5C,OAAO,EAAE,yBAAyB;YAClC,SAAS,EAAE,iCAAiC;SAC7C;KACF;CACF,CACF,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,EAAE;IACvC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE;IACnD,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;QACvD,OAAO,EAAE;YACP,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,6BAA6B;YAC1C,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,2BAA2B;SACvC;KACF;CACF,CAAC,CAAC;AAWH,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACI;IACZ,OAAO,CACL,KAAC,SAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KACvD,KAAK,YAET,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,CAAC,YAClE,QAAQ,GACJ,GACG,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { View } from 'react-native';
|
|
2
|
+
import { Text } from './Text';
|
|
3
|
+
export type CardContentProps = React.ComponentProps<typeof View>;
|
|
4
|
+
export type CardDescriptionProps = React.ComponentProps<typeof Text>;
|
|
5
|
+
export type CardHeaderProps = React.ComponentProps<typeof View>;
|
|
6
|
+
export type CardProps = React.ComponentProps<typeof View>;
|
|
7
|
+
export type CardTitleProps = React.ComponentProps<typeof Text>;
|
|
8
|
+
declare function CardContent({ className, ...props }: CardContentProps): import("react").JSX.Element;
|
|
9
|
+
declare function CardDescription({ className, ...props }: CardDescriptionProps): import("react").JSX.Element;
|
|
10
|
+
declare function CardHeader({ className, ...props }: CardHeaderProps): import("react").JSX.Element;
|
|
11
|
+
declare function CardRoot({ className, ...props }: CardProps): import("react").JSX.Element;
|
|
12
|
+
declare function CardTitle({ className, ...props }: CardTitleProps): import("react").JSX.Element;
|
|
13
|
+
declare const Card: typeof CardRoot & {
|
|
14
|
+
Content: typeof CardContent;
|
|
15
|
+
Description: typeof CardDescription;
|
|
16
|
+
Header: typeof CardHeader;
|
|
17
|
+
Title: typeof CardTitle;
|
|
18
|
+
};
|
|
19
|
+
export { Card, CardContent, CardDescription, CardHeader, CardTitle };
|
|
20
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AAE/D,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAE7D;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAErE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAE3D;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAUnD;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAQzD;AAID,QAAA,MAAM,IAAI;;;;;CAKR,CAAC;AAEH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { cn } from '../lib/cn';
|
|
4
|
+
import { Text } from './Text';
|
|
5
|
+
function CardContent({ className, ...props }) {
|
|
6
|
+
return _jsx(View, { className: cn('gap-3 px-5', className), ...props });
|
|
7
|
+
}
|
|
8
|
+
function CardDescription({ className, ...props }) {
|
|
9
|
+
return _jsx(Text, { className: className, tone: "muted", ...props });
|
|
10
|
+
}
|
|
11
|
+
function CardHeader({ className, ...props }) {
|
|
12
|
+
return _jsx(View, { className: cn('gap-1 px-5', className), ...props });
|
|
13
|
+
}
|
|
14
|
+
function CardRoot({ className, ...props }) {
|
|
15
|
+
return (_jsx(View, { className: cn('border-border bg-card gap-4 rounded-xl border py-5', className), ...props }));
|
|
16
|
+
}
|
|
17
|
+
function CardTitle({ className, ...props }) {
|
|
18
|
+
return (_jsx(Text, { className: cn('text-card-foreground', className), variant: "h4", ...props }));
|
|
19
|
+
}
|
|
20
|
+
// Same compound shape as `Card` in @pickle-ui/react. The parts are exported
|
|
21
|
+
// so Fast Refresh keeps their state; the public entry only exports `Card`.
|
|
22
|
+
const Card = Object.assign(CardRoot, {
|
|
23
|
+
Content: CardContent,
|
|
24
|
+
Description: CardDescription,
|
|
25
|
+
Header: CardHeader,
|
|
26
|
+
Title: CardTitle,
|
|
27
|
+
});
|
|
28
|
+
export { Card, CardContent, CardDescription, CardHeader, CardTitle };
|
|
29
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ9B,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoB;IAC5D,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwB;IACpE,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,OAAO,KAAK,KAAK,GAAI,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmB;IAC1D,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAClD,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAkB;IACxD,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAChD,OAAO,EAAC,IAAI,KACR,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,eAAe;IAC5B,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;CACjB,CAAC,CAAC;AAEH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Text as NativeText } from 'react-native';
|
|
3
|
+
declare const textVariants: (props?: ({
|
|
4
|
+
tone?: "destructive" | "muted" | "primary" | null | undefined;
|
|
5
|
+
variant?: "body" | "h1" | "h2" | "h3" | "h4" | "small" | "lead" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type TextProps = React.ComponentProps<typeof NativeText> & VariantProps<typeof textVariants>;
|
|
8
|
+
export declare function Text({ className, tone, variant, ...props }: TextProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAKlD,QAAA,MAAM,YAAY;;;8EAkBhB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,GAC7D,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAEpC,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAOrE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { Text as NativeText } from 'react-native';
|
|
4
|
+
import { cn } from '../lib/cn';
|
|
5
|
+
// Same variant and tone names as `Text` in @pickle-ui/react.
|
|
6
|
+
const textVariants = cva('text-foreground', {
|
|
7
|
+
defaultVariants: { variant: 'body' },
|
|
8
|
+
variants: {
|
|
9
|
+
tone: {
|
|
10
|
+
destructive: 'text-destructive',
|
|
11
|
+
muted: 'text-muted-foreground',
|
|
12
|
+
primary: 'text-primary',
|
|
13
|
+
},
|
|
14
|
+
variant: {
|
|
15
|
+
body: 'text-sm',
|
|
16
|
+
h1: 'text-3xl font-semibold tracking-tight',
|
|
17
|
+
h2: 'text-2xl font-semibold tracking-tight',
|
|
18
|
+
h3: 'text-xl font-semibold',
|
|
19
|
+
h4: 'text-lg font-medium',
|
|
20
|
+
lead: 'text-base',
|
|
21
|
+
small: 'text-xs',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
export function Text({ className, tone, variant, ...props }) {
|
|
26
|
+
return (_jsx(NativeText, { className: cn(textVariants({ tone, variant }), className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=Text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,6DAA6D;AAC7D,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE;IAC1C,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;IACpC,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,kBAAkB;YAC/B,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,cAAc;SACxB;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,uCAAuC;YAC3C,EAAE,EAAE,uCAAuC;YAC3C,EAAE,EAAE,uBAAuB;YAC3B,EAAE,EAAE,qBAAqB;YACzB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,SAAS;SACjB;KACF;CACF,CAAC,CAAC;AAKH,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAa;IACpE,OAAO,CACL,KAAC,UAAU,IACT,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/entries/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/entries/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/entries/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/entries/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/entries/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,cAAc,GACf,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/entries/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/entries/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../../src/entries/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/entries/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/entries/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-color-token.d.ts","sourceRoot":"","sources":["../../src/entries/use-color-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-color-token.js","sourceRoot":"","sources":["../../src/entries/use-color-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a token as a color string, for props that take a color instead of a
|
|
3
|
+
* className (navigation options, `Switch`, `placeholderTextColor`).
|
|
4
|
+
* `useColorToken('primary')` returns the value behind `bg-primary`, or
|
|
5
|
+
* `undefined` when the token doesn't exist, so a typo never turns into the
|
|
6
|
+
* color `"undefined"`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useColorToken(name: string): string | undefined;
|
|
9
|
+
//# sourceMappingURL=useColorToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColorToken.d.ts","sourceRoot":"","sources":["../../src/hooks/useColorToken.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useCSSVariable } from 'uniwind';
|
|
2
|
+
/**
|
|
3
|
+
* Reads a token as a color string, for props that take a color instead of a
|
|
4
|
+
* className (navigation options, `Switch`, `placeholderTextColor`).
|
|
5
|
+
* `useColorToken('primary')` returns the value behind `bg-primary`, or
|
|
6
|
+
* `undefined` when the token doesn't exist, so a typo never turns into the
|
|
7
|
+
* color `"undefined"`.
|
|
8
|
+
*/
|
|
9
|
+
export function useColorToken(name) {
|
|
10
|
+
const value = useCSSVariable(`--${name}`);
|
|
11
|
+
return typeof value === 'string' ? value : undefined;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=useColorToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColorToken.js","sourceRoot":"","sources":["../../src/hooks/useColorToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// The public API is the union of the subpath entries in ./entries: add a
|
|
2
|
+
// component there and re-export it here (see "Public API" in AGENTS.md).
|
|
3
|
+
export * from './entries/badge';
|
|
4
|
+
export * from './entries/button';
|
|
5
|
+
export * from './entries/card';
|
|
6
|
+
export * from './entries/cn';
|
|
7
|
+
export * from './entries/text';
|
|
8
|
+
export * from './entries/use-color-token';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
|
package/dist/lib/cn.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/lib/cn.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,UAEtE"}
|
package/dist/lib/cn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../../src/lib/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,wEAAwE;AACxE,MAAM,UAAU,EAAE,CAAC,GAAG,OAAiD;IACrE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,94 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pickle-ui/react-native",
|
|
3
|
-
"version": "0.0.0
|
|
4
|
-
"
|
|
5
|
-
"description": "
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "React Native components for Expo, styled with Pickle UI's tokens through Uniwind.",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"**/*.css"
|
|
10
|
+
],
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/ugogo/pickle-ui.git",
|
|
14
|
+
"directory": "packages/react-native"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"@pickle-ui/source": "./src/index.ts",
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./styles.css": "./src/styles.css",
|
|
27
|
+
"./base.css": "./src/base.css",
|
|
28
|
+
"./*": {
|
|
29
|
+
"@pickle-ui/source": "./src/entries/*.ts",
|
|
30
|
+
"types": "./dist/entries/*.d.ts",
|
|
31
|
+
"import": "./dist/entries/*.js",
|
|
32
|
+
"default": "./dist/entries/*.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"src"
|
|
38
|
+
],
|
|
39
|
+
"keywords": [
|
|
40
|
+
"react-native",
|
|
41
|
+
"expo",
|
|
42
|
+
"components",
|
|
43
|
+
"ui",
|
|
44
|
+
"tailwind",
|
|
45
|
+
"uniwind"
|
|
46
|
+
],
|
|
47
|
+
"author": "Ugo Onali",
|
|
48
|
+
"license": "MIT",
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"class-variance-authority": "^0.7.1",
|
|
51
|
+
"tailwind-merge": "^3.6.0",
|
|
52
|
+
"@pickle-ui/tokens": "1.0.0-beta.6"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@react-native/jest-preset": "^0.88.1",
|
|
56
|
+
"@storybook/addon-docs": "^10.6.3",
|
|
57
|
+
"@storybook/react-native-web-vite": "^10.6.5",
|
|
58
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
59
|
+
"@testing-library/react-native": "^14.1.0",
|
|
60
|
+
"@types/jest": "^30.0.0",
|
|
61
|
+
"@types/react": "^19.3.0",
|
|
62
|
+
"babel-preset-expo": "^58.0.21",
|
|
63
|
+
"expo": "^58.0.20",
|
|
64
|
+
"jest": "^30.5.2",
|
|
65
|
+
"jest-expo": "~58.0.12",
|
|
66
|
+
"react": "19.3.0",
|
|
67
|
+
"react-doctor": "^0.5.6",
|
|
68
|
+
"react-dom": "19.3.0",
|
|
69
|
+
"react-native": "0.88.0",
|
|
70
|
+
"react-native-web": "^0.21.4",
|
|
71
|
+
"storybook": "^10.6.3",
|
|
72
|
+
"tailwindcss": "^4.3.3",
|
|
73
|
+
"test-renderer": "^1.3.1",
|
|
74
|
+
"typescript": "^6.0.3",
|
|
75
|
+
"uniwind": "^1.13.0",
|
|
76
|
+
"vite": "^8.3.5"
|
|
77
|
+
},
|
|
78
|
+
"peerDependencies": {
|
|
79
|
+
"react": "^19.0.0",
|
|
80
|
+
"react-native": "*",
|
|
81
|
+
"tailwindcss": "^4.0.0",
|
|
82
|
+
"uniwind": "^1.13.0"
|
|
83
|
+
},
|
|
84
|
+
"scripts": {
|
|
85
|
+
"dev": "storybook dev -p 6007",
|
|
86
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { force: true, recursive: true })\"",
|
|
87
|
+
"build": "pnpm run clean && tsc -p tsconfig.build.json",
|
|
88
|
+
"typecheck": "tsc --noEmit",
|
|
89
|
+
"storybook": "storybook dev -p 6007",
|
|
90
|
+
"build-storybook": "storybook build",
|
|
91
|
+
"test": "jest",
|
|
92
|
+
"doctor": "react-doctor"
|
|
93
|
+
}
|
|
6
94
|
}
|
package/src/base.css
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pickle's components as a content source, so Uniwind generates the classes
|
|
3
|
+
* they use. `styles.css` imports it; import it alone, after `uniwind`, to
|
|
4
|
+
* bring your own token set instead of `@pickle-ui/tokens/native.css`.
|
|
5
|
+
*/
|
|
6
|
+
@source './components/**/*.{ts,tsx}';
|