@frosted-ui/react-native 0.0.1-canary.100
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 +160 -0
- package/dist/components/accordion.d.ts +21 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +94 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +67 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +170 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +4 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +23 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +128 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +15 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +81 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +14 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +81 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/callout.d.ts +23 -0
- package/dist/components/callout.d.ts.map +1 -0
- package/dist/components/callout.js +128 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.d.ts +9 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +41 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +12 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +100 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/circular-progress.d.ts +21 -0
- package/dist/components/circular-progress.d.ts.map +1 -0
- package/dist/components/circular-progress.js +78 -0
- package/dist/components/circular-progress.js.map +1 -0
- package/dist/components/code.d.ts +18 -0
- package/dist/components/code.d.ts.map +1 -0
- package/dist/components/code.js +83 -0
- package/dist/components/code.js.map +1 -0
- package/dist/components/context-menu.d.ts +65 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +441 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.d.ts +49 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +141 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +65 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +441 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/heading.d.ts +15 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +8 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/hover-card.d.ts +24 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +49 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/icon-button.d.ts +14 -0
- package/dist/components/icon-button.d.ts.map +1 -0
- package/dist/components/icon-button.js +81 -0
- package/dist/components/icon-button.js.map +1 -0
- package/dist/components/icon.d.ts +27 -0
- package/dist/components/icon.d.ts.map +1 -0
- package/dist/components/icon.js +30 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +37 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +49 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/label.d.ts +8 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +26 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/link.d.ts +19 -0
- package/dist/components/link.d.ts.map +1 -0
- package/dist/components/link.js +68 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/list.d.ts +37 -0
- package/dist/components/list.d.ts.map +1 -0
- package/dist/components/list.js +112 -0
- package/dist/components/list.js.map +1 -0
- package/dist/components/native-only-animated-view.d.ts +219 -0
- package/dist/components/native-only-animated-view.d.ts.map +1 -0
- package/dist/components/native-only-animated-view.js +26 -0
- package/dist/components/native-only-animated-view.js.map +1 -0
- package/dist/components/popover.d.ts +24 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +52 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +14 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +52 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +18 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +122 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/segmented-control.d.ts +21 -0
- package/dist/components/segmented-control.d.ts.map +1 -0
- package/dist/components/segmented-control.js +113 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.d.ts +58 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +491 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +12 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +47 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.d.ts +28 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +137 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +30 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +248 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +17 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +199 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/switch.d.ts +12 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +188 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.d.ts +26 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +125 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text-area.d.ts +16 -0
- package/dist/components/text-area.d.ts.map +1 -0
- package/dist/components/text-area.js +121 -0
- package/dist/components/text-area.js.map +1 -0
- package/dist/components/text-field.d.ts +35 -0
- package/dist/components/text-field.d.ts.map +1 -0
- package/dist/components/text-field.js +300 -0
- package/dist/components/text-field.js.map +1 -0
- package/dist/components/text.d.ts +23 -0
- package/dist/components/text.d.ts.map +1 -0
- package/dist/components/text.js +44 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/tooltip.d.ts +24 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +63 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/button-styles.d.ts +13 -0
- package/dist/lib/button-styles.d.ts.map +1 -0
- package/dist/lib/button-styles.js +115 -0
- package/dist/lib/button-styles.js.map +1 -0
- package/dist/lib/color-utils.d.ts +26 -0
- package/dist/lib/color-utils.d.ts.map +1 -0
- package/dist/lib/color-utils.js +48 -0
- package/dist/lib/color-utils.js.map +1 -0
- package/dist/lib/dialog-styles.d.ts +42 -0
- package/dist/lib/dialog-styles.d.ts.map +1 -0
- package/dist/lib/dialog-styles.js +162 -0
- package/dist/lib/dialog-styles.js.map +1 -0
- package/dist/lib/full-window-overlay.d.ts +11 -0
- package/dist/lib/full-window-overlay.d.ts.map +1 -0
- package/dist/lib/full-window-overlay.js +16 -0
- package/dist/lib/full-window-overlay.js.map +1 -0
- package/dist/lib/panel-styles.d.ts +32 -0
- package/dist/lib/panel-styles.d.ts.map +1 -0
- package/dist/lib/panel-styles.js +96 -0
- package/dist/lib/panel-styles.js.map +1 -0
- package/dist/lib/text-input-styles.d.ts +36 -0
- package/dist/lib/text-input-styles.d.ts.map +1 -0
- package/dist/lib/text-input-styles.js +88 -0
- package/dist/lib/text-input-styles.js.map +1 -0
- package/dist/lib/theme-context.d.ts +80 -0
- package/dist/lib/theme-context.d.ts.map +1 -0
- package/dist/lib/theme-context.js +97 -0
- package/dist/lib/theme-context.js.map +1 -0
- package/dist/lib/theme-tokens.d.ts +222 -0
- package/dist/lib/theme-tokens.d.ts.map +1 -0
- package/dist/lib/theme-tokens.js +158 -0
- package/dist/lib/theme-tokens.js.map +1 -0
- package/dist/lib/theme.d.ts +40 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +194 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/types.d.ts +18 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/use-theme-tokens.d.ts +593 -0
- package/dist/lib/use-theme-tokens.d.ts.map +1 -0
- package/dist/lib/use-theme-tokens.js +44 -0
- package/dist/lib/use-theme-tokens.js.map +1 -0
- package/docs/llm/COLOR_SYSTEM.md +799 -0
- package/docs/llm/COMPONENTS.md +1329 -0
- package/docs/llm/DESIGN_PATTERNS.md +2567 -0
- package/docs/llm/README.md +118 -0
- package/docs/llm/TYPOGRAPHY.md +516 -0
- package/package.json +106 -0
package/README.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# @frosted-ui/react-native
|
|
2
|
+
|
|
3
|
+
A beautiful, accessible component library for React Native with a built-in design system.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### For Bare React Native Projects
|
|
8
|
+
|
|
9
|
+
1. Install the package and its peer dependencies:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @frosted-ui/react-native
|
|
13
|
+
# or
|
|
14
|
+
yarn add @frosted-ui/react-native
|
|
15
|
+
# or
|
|
16
|
+
pnpm add @frosted-ui/react-native
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. Install peer dependencies:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install react react-native react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
|
|
23
|
+
# or
|
|
24
|
+
yarn add react react-native react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
|
|
25
|
+
# or
|
|
26
|
+
pnpm add react react-native react-native-reanimated react-native-safe-area-context react-native-screens react-native-svg lucide-react-native
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
3. **Setup React Native Reanimated**: Follow the [React Native Reanimated installation guide](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/).
|
|
30
|
+
|
|
31
|
+
4. **Setup React Native Screens**: Follow the [React Native Screens installation guide](https://github.com/software-mansion/react-native-screens#installation).
|
|
32
|
+
|
|
33
|
+
5. **Setup React Native SVG**: Follow the [React Native SVG installation guide](https://github.com/software-mansion/react-native-svg#installation).
|
|
34
|
+
|
|
35
|
+
### For Expo Projects
|
|
36
|
+
|
|
37
|
+
The package works with Expo projects as well. Follow the same installation steps above, and Expo will handle the native module linking automatically.
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { Button, Text, ThemeProvider } from '@frosted-ui/react-native';
|
|
43
|
+
|
|
44
|
+
export default function App() {
|
|
45
|
+
return (
|
|
46
|
+
<ThemeProvider>
|
|
47
|
+
<Button variant="surface" size="2">
|
|
48
|
+
<Text>Hello World</Text>
|
|
49
|
+
</Button>
|
|
50
|
+
</ThemeProvider>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Theme Management
|
|
56
|
+
|
|
57
|
+
The library provides a `ThemeProvider` for managing light/dark mode:
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
import { ThemeProvider, useTheme } from '@frosted-ui/react-native';
|
|
61
|
+
|
|
62
|
+
function MyComponent() {
|
|
63
|
+
const { colorScheme, toggleColorScheme } = useTheme();
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<Button onPress={toggleColorScheme}>
|
|
67
|
+
<Text>Current theme: {colorScheme}</Text>
|
|
68
|
+
</Button>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default function App() {
|
|
73
|
+
return (
|
|
74
|
+
<ThemeProvider>
|
|
75
|
+
<MyComponent />
|
|
76
|
+
</ThemeProvider>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Accessing Theme Colors
|
|
82
|
+
|
|
83
|
+
Use `useThemeTokens` to access the design system colors in your components:
|
|
84
|
+
|
|
85
|
+
```tsx
|
|
86
|
+
import { useThemeTokens } from '@frosted-ui/react-native';
|
|
87
|
+
|
|
88
|
+
function MyComponent() {
|
|
89
|
+
const { colors, isDark } = useThemeTokens();
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<View style={{ backgroundColor: colors.background }}>
|
|
93
|
+
<Text style={{ color: colors.palettes.gray['12'] }}>Hello World</Text>
|
|
94
|
+
</View>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Requirements
|
|
100
|
+
|
|
101
|
+
- React >= 18.0.0
|
|
102
|
+
- React Native >= 0.70.0
|
|
103
|
+
- React Native Reanimated >= 3.0.0
|
|
104
|
+
- React Native Safe Area Context >= 4.0.0
|
|
105
|
+
- React Native Screens >= 3.0.0
|
|
106
|
+
- React Native SVG >= 13.0.0
|
|
107
|
+
- Lucide React Native >= 0.300.0
|
|
108
|
+
|
|
109
|
+
## Components
|
|
110
|
+
|
|
111
|
+
This library includes a comprehensive set of UI components:
|
|
112
|
+
|
|
113
|
+
- Accordion
|
|
114
|
+
- Alert Dialog
|
|
115
|
+
- Avatar
|
|
116
|
+
- Badge
|
|
117
|
+
- Button
|
|
118
|
+
- Card
|
|
119
|
+
- Checkbox
|
|
120
|
+
- Dialog
|
|
121
|
+
- Dropdown Menu
|
|
122
|
+
- Hover Card
|
|
123
|
+
- Icon
|
|
124
|
+
- Label
|
|
125
|
+
- Popover
|
|
126
|
+
- Progress
|
|
127
|
+
- Radio Group
|
|
128
|
+
- Select
|
|
129
|
+
- Separator
|
|
130
|
+
- Skeleton
|
|
131
|
+
- Spinner
|
|
132
|
+
- Switch
|
|
133
|
+
- Tabs
|
|
134
|
+
- Text
|
|
135
|
+
- Text Field
|
|
136
|
+
- Text Area
|
|
137
|
+
- Tooltip
|
|
138
|
+
|
|
139
|
+
## Styling
|
|
140
|
+
|
|
141
|
+
This library uses React Native's built-in styling system with a comprehensive design system. All components support light and dark mode out of the box, and include multiple color palettes (28+ accent colors) and variants.
|
|
142
|
+
|
|
143
|
+
## AI/LLM Documentation
|
|
144
|
+
|
|
145
|
+
This package includes comprehensive documentation designed for AI agents and LLMs to generate code using Frosted UI. When installed, the docs are available at:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
node_modules/@frosted-ui/react-native/docs/llm/
|
|
149
|
+
├── README.md # Overview and quick reference
|
|
150
|
+
├── COLOR_SYSTEM.md # Color palettes, shades, variants, accessibility
|
|
151
|
+
├── TYPOGRAPHY.md # Typography scale, font weights, components
|
|
152
|
+
├── COMPONENTS.md # Full component API reference
|
|
153
|
+
└── DESIGN_PATTERNS.md # UX patterns, layout composition, visual design
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
AI agents should read these files to understand how to properly use the design system when generating React Native applications.
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as AccordionPrimitive from '@rn-primitives/accordion';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
type AccordionRootProps = Omit<AccordionPrimitive.RootProps, 'asChild'> & React.RefAttributes<AccordionPrimitive.RootRef>;
|
|
4
|
+
declare function AccordionRoot({ children, ...props }: AccordionRootProps): React.JSX.Element;
|
|
5
|
+
type AccordionItemProps = AccordionPrimitive.ItemProps & React.RefAttributes<AccordionPrimitive.ItemRef>;
|
|
6
|
+
declare function AccordionItem({ children, value, ...props }: AccordionItemProps): React.JSX.Element;
|
|
7
|
+
type AccordionTriggerProps = AccordionPrimitive.TriggerProps & {
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
} & React.RefAttributes<AccordionPrimitive.TriggerRef>;
|
|
10
|
+
declare function AccordionTrigger({ children, ...props }: AccordionTriggerProps): React.JSX.Element;
|
|
11
|
+
type AccordionContentProps = AccordionPrimitive.ContentProps & React.RefAttributes<AccordionPrimitive.ContentRef>;
|
|
12
|
+
declare function AccordionContent({ children, ...props }: AccordionContentProps): React.JSX.Element;
|
|
13
|
+
declare const Accordion: {
|
|
14
|
+
Root: typeof AccordionRoot;
|
|
15
|
+
Item: typeof AccordionItem;
|
|
16
|
+
Trigger: typeof AccordionTrigger;
|
|
17
|
+
Content: typeof AccordionContent;
|
|
18
|
+
};
|
|
19
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionRoot, AccordionTrigger };
|
|
20
|
+
export type { AccordionContentProps, AccordionItemProps, AccordionRootProps, AccordionTriggerProps, };
|
|
21
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,KAAK,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,GACrE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAElD,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAMhE;AAED,KAAK,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,GACpD,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAElD,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAMvE;AAID,KAAK,qBAAqB,GAAG,kBAAkB,CAAC,YAAY,GAAG;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAEvD,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBA8DtE;AAED,KAAK,qBAAqB,GAAG,kBAAkB,CAAC,YAAY,GAC1D,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAErD,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAYtE;AAED,QAAA,MAAM,SAAS;;;;;CAKd,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACvF,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
2
|
+
import * as AccordionPrimitive from '@rn-primitives/accordion';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Platform, Pressable, View } from 'react-native';
|
|
5
|
+
import Svg, { Path } from 'react-native-svg';
|
|
6
|
+
import { Text } from './text';
|
|
7
|
+
// Custom chevron icon that matches web version
|
|
8
|
+
function ChevronIcon({ size, color }) {
|
|
9
|
+
return (<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
|
|
10
|
+
<Path d="M6 12L9.64645 8.35355C9.84171 8.15829 10.1583 8.15829 10.3536 8.35355L14 12" stroke={color} strokeWidth={1.5} strokeLinecap="round"/>
|
|
11
|
+
</Svg>);
|
|
12
|
+
}
|
|
13
|
+
function AccordionRoot({ children, ...props }) {
|
|
14
|
+
return (<AccordionPrimitive.Root {...props}>
|
|
15
|
+
{children}
|
|
16
|
+
</AccordionPrimitive.Root>);
|
|
17
|
+
}
|
|
18
|
+
function AccordionItem({ children, value, ...props }) {
|
|
19
|
+
return (<AccordionPrimitive.Item value={value} {...props}>
|
|
20
|
+
{children}
|
|
21
|
+
</AccordionPrimitive.Item>);
|
|
22
|
+
}
|
|
23
|
+
const TriggerWrapper = Platform.OS === 'web' ? View : Pressable;
|
|
24
|
+
function AccordionTrigger({ children, ...props }) {
|
|
25
|
+
const { isExpanded } = AccordionPrimitive.useItemContext();
|
|
26
|
+
const { colors } = useThemeTokens();
|
|
27
|
+
const gray = colors.palettes.gray;
|
|
28
|
+
// Trigger styles matching web CSS
|
|
29
|
+
const triggerStyle = {
|
|
30
|
+
flexDirection: 'row',
|
|
31
|
+
alignItems: 'center',
|
|
32
|
+
width: '100%',
|
|
33
|
+
gap: 8, // space-2
|
|
34
|
+
backgroundColor: gray.a3,
|
|
35
|
+
borderRadius: 8, // radius-4
|
|
36
|
+
paddingVertical: 8, // space-2
|
|
37
|
+
paddingHorizontal: 16, // space-4
|
|
38
|
+
// Inset border using boxShadow on web, borderWidth on native
|
|
39
|
+
...(Platform.OS === 'web'
|
|
40
|
+
? {
|
|
41
|
+
boxShadow: `0px 0px 0px 1px ${gray.a5} inset`,
|
|
42
|
+
}
|
|
43
|
+
: {
|
|
44
|
+
borderWidth: 1,
|
|
45
|
+
borderColor: gray.a5,
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
// Focus style for web
|
|
49
|
+
const focusStyle = Platform.OS === 'web'
|
|
50
|
+
? {
|
|
51
|
+
outlineWidth: 0,
|
|
52
|
+
}
|
|
53
|
+
: undefined;
|
|
54
|
+
// Chevron rotation style
|
|
55
|
+
const chevronStyle = {
|
|
56
|
+
transform: [{ rotate: isExpanded ? '0deg' : '180deg' }],
|
|
57
|
+
};
|
|
58
|
+
return (<AccordionPrimitive.Header>
|
|
59
|
+
<AccordionPrimitive.Trigger {...props} asChild>
|
|
60
|
+
<TriggerWrapper style={[triggerStyle, focusStyle]}>
|
|
61
|
+
<View style={chevronStyle}>
|
|
62
|
+
<ChevronIcon size={20} color={gray.a11}/>
|
|
63
|
+
</View>
|
|
64
|
+
<View style={{ flex: 1 }}>
|
|
65
|
+
<Text size="1" weight="bold" style={{
|
|
66
|
+
color: gray.a11,
|
|
67
|
+
textTransform: 'uppercase',
|
|
68
|
+
letterSpacing: 0.06 * 12, // 0.06em at font-size 12px
|
|
69
|
+
}}>
|
|
70
|
+
{children}
|
|
71
|
+
</Text>
|
|
72
|
+
</View>
|
|
73
|
+
</TriggerWrapper>
|
|
74
|
+
</AccordionPrimitive.Trigger>
|
|
75
|
+
</AccordionPrimitive.Header>);
|
|
76
|
+
}
|
|
77
|
+
function AccordionContent({ children, ...props }) {
|
|
78
|
+
// Content inner padding matching web CSS
|
|
79
|
+
const contentInnerStyle = {
|
|
80
|
+
paddingVertical: 16, // space-4
|
|
81
|
+
paddingHorizontal: 20, // space-5
|
|
82
|
+
};
|
|
83
|
+
return (<AccordionPrimitive.Content {...props}>
|
|
84
|
+
<View style={contentInnerStyle}>{children}</View>
|
|
85
|
+
</AccordionPrimitive.Content>);
|
|
86
|
+
}
|
|
87
|
+
const Accordion = {
|
|
88
|
+
Root: AccordionRoot,
|
|
89
|
+
Item: AccordionItem,
|
|
90
|
+
Trigger: AccordionTrigger,
|
|
91
|
+
Content: AccordionContent,
|
|
92
|
+
};
|
|
93
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionRoot, AccordionTrigger };
|
|
94
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Heading } from '../components/heading';
|
|
2
|
+
import { Text } from '../components/text';
|
|
3
|
+
import { type DialogSize } from '../lib/dialog-styles';
|
|
4
|
+
import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { View } from 'react-native';
|
|
7
|
+
type AlertDialogRootProps = React.ComponentProps<typeof AlertDialogPrimitive.Root>;
|
|
8
|
+
type AlertDialogTriggerProps = React.ComponentProps<typeof AlertDialogPrimitive.Trigger>;
|
|
9
|
+
interface AlertDialogContentProps extends Omit<AlertDialogPrimitive.ContentProps, 'asChild'>, React.RefAttributes<AlertDialogPrimitive.ContentRef> {
|
|
10
|
+
size?: DialogSize;
|
|
11
|
+
portalHost?: string;
|
|
12
|
+
}
|
|
13
|
+
declare function AlertDialogContent({ size, portalHost, children, style, ...props }: AlertDialogContentProps): React.JSX.Element;
|
|
14
|
+
declare namespace AlertDialogContent {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
declare function AlertDialogHeader({ style, ...props }: React.ComponentProps<typeof View>): React.JSX.Element;
|
|
18
|
+
declare namespace AlertDialogHeader {
|
|
19
|
+
var displayName: string;
|
|
20
|
+
}
|
|
21
|
+
declare function AlertDialogFooter({ style, ...props }: React.ComponentProps<typeof View>): React.JSX.Element;
|
|
22
|
+
declare namespace AlertDialogFooter {
|
|
23
|
+
var displayName: string;
|
|
24
|
+
}
|
|
25
|
+
type AlertDialogTitleProps = Omit<React.ComponentProps<typeof Heading>, 'as'>;
|
|
26
|
+
declare function AlertDialogTitle({ size: sizeProp, style, ...props }: AlertDialogTitleProps): React.JSX.Element;
|
|
27
|
+
declare namespace AlertDialogTitle {
|
|
28
|
+
var displayName: string;
|
|
29
|
+
}
|
|
30
|
+
type AlertDialogDescriptionProps = Omit<React.ComponentProps<typeof Text>, 'as'>;
|
|
31
|
+
declare function AlertDialogDescription({ size: sizeProp, style, ...props }: AlertDialogDescriptionProps): React.JSX.Element;
|
|
32
|
+
declare namespace AlertDialogDescription {
|
|
33
|
+
var displayName: string;
|
|
34
|
+
}
|
|
35
|
+
type AlertDialogActionProps = React.ComponentProps<typeof AlertDialogPrimitive.Action>;
|
|
36
|
+
declare function AlertDialogAction({ children, ...props }: AlertDialogActionProps): React.JSX.Element;
|
|
37
|
+
declare namespace AlertDialogAction {
|
|
38
|
+
var displayName: string;
|
|
39
|
+
}
|
|
40
|
+
type AlertDialogCancelProps = React.ComponentProps<typeof AlertDialogPrimitive.Cancel>;
|
|
41
|
+
declare function AlertDialogCancel({ children, ...props }: AlertDialogCancelProps): React.JSX.Element;
|
|
42
|
+
declare namespace AlertDialogCancel {
|
|
43
|
+
var displayName: string;
|
|
44
|
+
}
|
|
45
|
+
declare const AlertDialog: {
|
|
46
|
+
(props: AlertDialogRootProps): React.JSX.Element;
|
|
47
|
+
displayName: string;
|
|
48
|
+
} & {
|
|
49
|
+
Root: {
|
|
50
|
+
(props: AlertDialogRootProps): React.JSX.Element;
|
|
51
|
+
displayName: string;
|
|
52
|
+
};
|
|
53
|
+
Trigger: {
|
|
54
|
+
(props: AlertDialogTriggerProps): React.JSX.Element;
|
|
55
|
+
displayName: string;
|
|
56
|
+
};
|
|
57
|
+
Content: typeof AlertDialogContent;
|
|
58
|
+
Header: typeof AlertDialogHeader;
|
|
59
|
+
Footer: typeof AlertDialogFooter;
|
|
60
|
+
Title: typeof AlertDialogTitle;
|
|
61
|
+
Description: typeof AlertDialogDescription;
|
|
62
|
+
Action: typeof AlertDialogAction;
|
|
63
|
+
Cancel: typeof AlertDialogCancel;
|
|
64
|
+
};
|
|
65
|
+
export { AlertDialog };
|
|
66
|
+
export type { AlertDialogActionProps as ActionProps, AlertDialogCancelProps as CancelProps, AlertDialogContentProps as ContentProps, AlertDialogDescriptionProps as DescriptionProps, AlertDialogRootProps as RootProps, AlertDialogTitleProps as TitleProps, AlertDialogTriggerProps as TriggerProps, };
|
|
67
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/components/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA6C,IAAI,EAAkB,MAAM,cAAc,CAAC;AAuB/F,KAAK,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAKnF,KAAK,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAsDzF,UAAU,uBACR,SACE,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,SAAS,CAAC,EAClD,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC;IACtD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,IAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,uBAAuB,qBA6BzB;kBAnCQ,kBAAkB;;;AAuC3B,iBAAS,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAEhF;kBAFQ,iBAAiB;;;AAM1B,iBAAS,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAchF;kBAdQ,iBAAiB;;;AAkB1B,KAAK,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAE9E,iBAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAYnF;kBAZQ,gBAAgB;;;AAgBzB,KAAK,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAEjF,iBAAS,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,2BAA2B,qBAY/F;kBAZQ,sBAAsB;;;AAgB/B,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEvF,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,qBAMxE;kBANQ,iBAAiB;;;AAU1B,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEvF,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,qBAMxE;kBANQ,iBAAiB;;;AA6C1B,QAAA,MAAM,WAAW;YAhOe,oBAAoB;;;;gBAApB,oBAAoB;;;;gBAKjB,uBAAuB;;;;;;;;;;CAqOxD,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,sBAAsB,IAAI,WAAW,EACrC,sBAAsB,IAAI,WAAW,EACrC,uBAAuB,IAAI,YAAY,EACvC,2BAA2B,IAAI,gBAAgB,EAC/C,oBAAoB,IAAI,SAAS,EACjC,qBAAqB,IAAI,UAAU,EACnC,uBAAuB,IAAI,YAAY,GACxC,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Heading } from '../components/heading';
|
|
2
|
+
import { Text } from '../components/text';
|
|
3
|
+
import { getDialogBackdropStyle, getDialogContentStyle, getDialogDescriptionSize, getDialogOverlayStyle, getDialogSizeStyles, getDialogTitleSize, } from '../lib/dialog-styles';
|
|
4
|
+
import { useThemeTokens } from '../lib/use-theme-tokens';
|
|
5
|
+
import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { Platform, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
8
|
+
import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
|
|
9
|
+
import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
|
|
10
|
+
const AlertDialogContentContext = React.createContext({
|
|
11
|
+
size: '3',
|
|
12
|
+
});
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Components
|
|
15
|
+
// ============================================================================
|
|
16
|
+
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
17
|
+
const AlertDialogRoot = (props) => <AlertDialogPrimitive.Root {...props}/>;
|
|
18
|
+
AlertDialogRoot.displayName = 'AlertDialog.Root';
|
|
19
|
+
const AlertDialogTrigger = (props) => (<AlertDialogPrimitive.Trigger {...props} asChild/>);
|
|
20
|
+
AlertDialogTrigger.displayName = 'AlertDialog.Trigger';
|
|
21
|
+
// Overlay
|
|
22
|
+
function AlertDialogOverlay({ children, ...props }) {
|
|
23
|
+
const overlayStyle = getDialogOverlayStyle();
|
|
24
|
+
const backdropStyle = getDialogBackdropStyle();
|
|
25
|
+
if (Platform.OS === 'web') {
|
|
26
|
+
return (<FullWindowOverlay>
|
|
27
|
+
<AlertDialogPrimitive.Overlay style={overlayStyle} {...props}>
|
|
28
|
+
<View style={backdropStyle} pointerEvents="none"/>
|
|
29
|
+
{children}
|
|
30
|
+
</AlertDialogPrimitive.Overlay>
|
|
31
|
+
</FullWindowOverlay>);
|
|
32
|
+
}
|
|
33
|
+
// Native: AlertDialog should NOT dismiss on backdrop tap, so we use View (not Pressable)
|
|
34
|
+
const nativeBackdropStyle = getDialogBackdropStyle();
|
|
35
|
+
return (<FullWindowOverlay>
|
|
36
|
+
<AlertDialogPrimitive.Overlay {...props} asChild>
|
|
37
|
+
<View style={overlayStyle}>
|
|
38
|
+
{/* Animated backdrop */}
|
|
39
|
+
<Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(150)} style={nativeBackdropStyle} pointerEvents="none"/>
|
|
40
|
+
{/* Animated content */}
|
|
41
|
+
<Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(150)}>
|
|
42
|
+
{children}
|
|
43
|
+
</Animated.View>
|
|
44
|
+
</View>
|
|
45
|
+
</AlertDialogPrimitive.Overlay>
|
|
46
|
+
</FullWindowOverlay>);
|
|
47
|
+
}
|
|
48
|
+
AlertDialogOverlay.displayName = 'AlertDialog.Overlay';
|
|
49
|
+
function AlertDialogContent({ size = '3', portalHost, children, style, ...props }) {
|
|
50
|
+
const { colors, isDark } = useThemeTokens();
|
|
51
|
+
const { width: windowWidth } = useWindowDimensions();
|
|
52
|
+
const contentStyle = getDialogContentStyle(size, colors, isDark, windowWidth, style);
|
|
53
|
+
const contextValue = React.useMemo(() => ({ size }), [size]);
|
|
54
|
+
// On web, flatten styles to avoid "indexed property setter" error
|
|
55
|
+
const finalStyle = Platform.OS === 'web'
|
|
56
|
+
? StyleSheet.flatten([
|
|
57
|
+
contentStyle,
|
|
58
|
+
{ animation: 'fui-dialog-content-show 400ms cubic-bezier(0.16, 1, 0.3, 1)' },
|
|
59
|
+
style,
|
|
60
|
+
])
|
|
61
|
+
: [contentStyle, style];
|
|
62
|
+
return (<AlertDialogPrimitive.Portal hostName={portalHost}>
|
|
63
|
+
<AlertDialogOverlay>
|
|
64
|
+
<AlertDialogPrimitive.Content style={finalStyle} {...props}>
|
|
65
|
+
<AlertDialogContentContext.Provider value={contextValue}>
|
|
66
|
+
{children}
|
|
67
|
+
</AlertDialogContentContext.Provider>
|
|
68
|
+
</AlertDialogPrimitive.Content>
|
|
69
|
+
</AlertDialogOverlay>
|
|
70
|
+
</AlertDialogPrimitive.Portal>);
|
|
71
|
+
}
|
|
72
|
+
AlertDialogContent.displayName = 'AlertDialog.Content';
|
|
73
|
+
// Header
|
|
74
|
+
function AlertDialogHeader({ style, ...props }) {
|
|
75
|
+
return <View style={[{ flexDirection: 'column', gap: 8 }, style]} {...props}/>;
|
|
76
|
+
}
|
|
77
|
+
AlertDialogHeader.displayName = 'AlertDialog.Header';
|
|
78
|
+
// Footer
|
|
79
|
+
function AlertDialogFooter({ style, ...props }) {
|
|
80
|
+
return (<View style={[
|
|
81
|
+
{
|
|
82
|
+
flexDirection: Platform.OS === 'web' ? 'row' : 'column-reverse',
|
|
83
|
+
gap: 12,
|
|
84
|
+
justifyContent: 'flex-end',
|
|
85
|
+
},
|
|
86
|
+
style,
|
|
87
|
+
]} {...props}/>);
|
|
88
|
+
}
|
|
89
|
+
AlertDialogFooter.displayName = 'AlertDialog.Footer';
|
|
90
|
+
function AlertDialogTitle({ size: sizeProp, style, ...props }) {
|
|
91
|
+
const { size: contextSize } = React.useContext(AlertDialogContentContext);
|
|
92
|
+
const size = sizeProp ?? getDialogTitleSize(contextSize);
|
|
93
|
+
const sizeStyles = getDialogSizeStyles(contextSize);
|
|
94
|
+
return (<View style={{ marginBottom: sizeStyles.titleMarginBottom }}>
|
|
95
|
+
<AlertDialogPrimitive.Title asChild>
|
|
96
|
+
<Heading size={size} style={style} {...props}/>
|
|
97
|
+
</AlertDialogPrimitive.Title>
|
|
98
|
+
</View>);
|
|
99
|
+
}
|
|
100
|
+
AlertDialogTitle.displayName = 'AlertDialog.Title';
|
|
101
|
+
function AlertDialogDescription({ size: sizeProp, style, ...props }) {
|
|
102
|
+
const { size: contextSize } = React.useContext(AlertDialogContentContext);
|
|
103
|
+
const size = sizeProp ?? getDialogDescriptionSize(contextSize);
|
|
104
|
+
const sizeStyles = getDialogSizeStyles(contextSize);
|
|
105
|
+
return (<View style={{ marginBottom: sizeStyles.descriptionMarginBottom }}>
|
|
106
|
+
<AlertDialogPrimitive.Description asChild>
|
|
107
|
+
<Text size={size} style={style} {...props}/>
|
|
108
|
+
</AlertDialogPrimitive.Description>
|
|
109
|
+
</View>);
|
|
110
|
+
}
|
|
111
|
+
AlertDialogDescription.displayName = 'AlertDialog.Description';
|
|
112
|
+
function AlertDialogAction({ children, ...props }) {
|
|
113
|
+
return (<AlertDialogPrimitive.Action {...props} asChild>
|
|
114
|
+
{children}
|
|
115
|
+
</AlertDialogPrimitive.Action>);
|
|
116
|
+
}
|
|
117
|
+
AlertDialogAction.displayName = 'AlertDialog.Action';
|
|
118
|
+
function AlertDialogCancel({ children, ...props }) {
|
|
119
|
+
return (<AlertDialogPrimitive.Cancel {...props} asChild>
|
|
120
|
+
{children}
|
|
121
|
+
</AlertDialogPrimitive.Cancel>);
|
|
122
|
+
}
|
|
123
|
+
AlertDialogCancel.displayName = 'AlertDialog.Cancel';
|
|
124
|
+
// Inject CSS keyframes for web animations (same as Dialog)
|
|
125
|
+
if (Platform.OS === 'web' && typeof document !== 'undefined') {
|
|
126
|
+
const styleId = 'frosted-ui-dialog-keyframes';
|
|
127
|
+
if (!document.getElementById(styleId)) {
|
|
128
|
+
const styleEl = document.createElement('style');
|
|
129
|
+
styleEl.id = styleId;
|
|
130
|
+
styleEl.textContent = `
|
|
131
|
+
@keyframes fui-dialog-content-show {
|
|
132
|
+
from {
|
|
133
|
+
opacity: 0;
|
|
134
|
+
transform: translateY(5px) scale(0.97);
|
|
135
|
+
}
|
|
136
|
+
to {
|
|
137
|
+
opacity: 1;
|
|
138
|
+
transform: translateY(0px) scale(1);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
@keyframes fui-dialog-content-hide {
|
|
142
|
+
from {
|
|
143
|
+
opacity: 1;
|
|
144
|
+
transform: translateY(0px) scale(1);
|
|
145
|
+
}
|
|
146
|
+
to {
|
|
147
|
+
opacity: 0;
|
|
148
|
+
transform: translateY(5px) scale(0.99);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
document.head.appendChild(styleEl);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// ============================================================================
|
|
156
|
+
// Exports
|
|
157
|
+
// ============================================================================
|
|
158
|
+
const AlertDialog = Object.assign(AlertDialogRoot, {
|
|
159
|
+
Root: AlertDialogRoot,
|
|
160
|
+
Trigger: AlertDialogTrigger,
|
|
161
|
+
Content: AlertDialogContent,
|
|
162
|
+
Header: AlertDialogHeader,
|
|
163
|
+
Footer: AlertDialogFooter,
|
|
164
|
+
Title: AlertDialogTitle,
|
|
165
|
+
Description: AlertDialogDescription,
|
|
166
|
+
Action: AlertDialogAction,
|
|
167
|
+
Cancel: AlertDialogCancel,
|
|
168
|
+
});
|
|
169
|
+
export { AlertDialog };
|
|
170
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../../src/components/alert-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/components/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,QAAA,MAAM,WAAW,EAAE,OAAO,oBAAoB,CAAC,IAAgC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/components/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,GAAqC,oBAAoB,CAAC,IAAI,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Color } from '../lib/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare const avatarSizes: readonly ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
4
|
+
declare const avatarShapes: readonly ["circle", "square"];
|
|
5
|
+
type AvatarSize = (typeof avatarSizes)[number];
|
|
6
|
+
type AvatarShape = (typeof avatarShapes)[number];
|
|
7
|
+
declare function getAvatarSize(size: AvatarSize): number;
|
|
8
|
+
type AvatarProps = {
|
|
9
|
+
/** Image source URL */
|
|
10
|
+
src?: string;
|
|
11
|
+
/** Fallback content - string (will generate initials) or ReactNode */
|
|
12
|
+
fallback: React.ReactNode;
|
|
13
|
+
/** Size of the avatar */
|
|
14
|
+
size?: AvatarSize;
|
|
15
|
+
/** Shape of the avatar */
|
|
16
|
+
shape?: AvatarShape;
|
|
17
|
+
/** Accent color for fallback state */
|
|
18
|
+
color?: Color;
|
|
19
|
+
};
|
|
20
|
+
declare function Avatar({ src, fallback, size, shape, color }: AvatarProps): React.JSX.Element;
|
|
21
|
+
export { Avatar, avatarShapes, avatarSizes, getAvatarSize };
|
|
22
|
+
export type { AvatarProps, AvatarShape, AvatarSize };
|
|
23
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,WAAW,6DAA8D,CAAC;AAChF,QAAA,MAAM,YAAY,+BAAgC,CAAC;AAEnD,KAAK,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAKjD,iBAAS,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuB/C;AAiBD,KAAK,WAAW,GAAG;IACjB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,iBAAS,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAU,EAAE,KAAgB,EAAE,KAAK,EAAE,EAAE,WAAW,qBAqGlF;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
|