alouette 19.0.0-beta.3 → 19.0.0-beta.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.
Files changed (39) hide show
  1. package/README.md +173 -56
  2. package/dist/definitions/index.d.ts +4 -0
  3. package/dist/definitions/index.d.ts.map +1 -1
  4. package/dist/definitions/ui/primitives/FlatList.d.ts +5 -0
  5. package/dist/definitions/ui/primitives/FlatList.d.ts.map +1 -0
  6. package/dist/definitions/ui/primitives/FlatList.stories.d.ts +18 -0
  7. package/dist/definitions/ui/primitives/FlatList.stories.d.ts.map +1 -0
  8. package/dist/definitions/ui/primitives/SectionList.d.ts +7 -0
  9. package/dist/definitions/ui/primitives/SectionList.d.ts.map +1 -0
  10. package/dist/definitions/ui/primitives/SectionList.stories.d.ts +20 -0
  11. package/dist/definitions/ui/primitives/SectionList.stories.d.ts.map +1 -0
  12. package/dist/index-browser.es.js +14 -3
  13. package/dist/index-browser.es.js.map +1 -1
  14. package/dist/index-node22.cjs +13 -0
  15. package/dist/index-node22.cjs.map +1 -1
  16. package/dist/index-node22.mjs +14 -3
  17. package/dist/index-node22.mjs.map +1 -1
  18. package/dist/index-react-native.cjs.js +13 -0
  19. package/dist/index-react-native.cjs.js.map +1 -1
  20. package/dist/index-react-native.es.js +14 -3
  21. package/dist/index-react-native.es.js.map +1 -1
  22. package/package.json +3 -2
  23. package/skills/alouette-actions/SKILL.md +1 -1
  24. package/skills/alouette-animation/SKILL.md +1 -1
  25. package/skills/alouette-external-links/SKILL.md +1 -1
  26. package/skills/alouette-feedback/SKILL.md +1 -1
  27. package/skills/alouette-forms/SKILL.md +1 -1
  28. package/skills/alouette-icons/SKILL.md +2 -1
  29. package/skills/alouette-layout/SKILL.md +2 -1
  30. package/skills/alouette-responsive/SKILL.md +1 -1
  31. package/skills/alouette-setup/SKILL.md +74 -13
  32. package/skills/alouette-theming/SKILL.md +2 -1
  33. package/skills/alouette-typography/SKILL.md +2 -1
  34. package/src/global.css +6 -0
  35. package/src/index.ts +4 -0
  36. package/src/ui/primitives/FlatList.stories.tsx +112 -0
  37. package/src/ui/primitives/FlatList.tsx +14 -0
  38. package/src/ui/primitives/SectionList.stories.tsx +119 -0
  39. package/src/ui/primitives/SectionList.tsx +20 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  </h1>
4
4
 
5
5
  <p align="center">
6
- A modern, customizable design system built on top of Tamagui with configurable defaults
6
+ A modern, customizable design system built on top of NativeWind v5 with configurable defaults
7
7
  </p>
8
8
 
9
9
  <p align="center">
@@ -13,78 +13,196 @@
13
13
  <a href="https://npmjs.org/package/alouette"><img src="https://img.shields.io/npm/types/alouette.svg?style=flat-square" alt="types"></a>
14
14
  </p>
15
15
 
16
+ Alouette provides a comprehensive set of universal components that render on both
17
+ web and React Native, styled entirely through Tailwind `className` via
18
+ [NativeWind v5](https://www.nativewind.dev/). Themes, accents, and design tokens
19
+ ship as CSS custom properties that cascade through the tree, so components stay
20
+ declarative and consistent across platforms.
21
+
16
22
  ## 🚀 Getting Started
17
23
 
18
24
  ### Prerequisites
19
25
 
20
- - Node.js >= 20.9.0 (includes Corepack for package management)
26
+ - Node.js >= 22.18.0 (includes Corepack for package management)
27
+ - A React Native / Expo app using Metro, or a web app using NativeWind v5
21
28
 
22
29
  ### Installation
23
30
 
24
- 1. Enable Corepack (if not already enabled):
25
-
26
31
  ```bash
27
- corepack enable
32
+ npm install alouette
33
+ # or with yarn
34
+ yarn add alouette
28
35
  ```
29
36
 
30
- 2. Install the package:
37
+ `alouette-icons` is installed automatically as a dependency.
38
+
39
+ Install the peer dependencies if your app does not already provide them:
31
40
 
32
41
  ```bash
33
- npm install alouette
34
- # or with yarn
35
- yarn add alouette
42
+ npm install nativewind@5.0.0-preview.4 tailwindcss@^4 \
43
+ react-native-reanimated react-native-svg
36
44
  ```
37
45
 
38
- Note: `alouette-icons` is automatically included as a dependency.
46
+ `expo-web-browser`, `react-dom`, and `react-native-reanimated` are optional peers
47
+ — add them only if your target needs them (`react-dom` for web, `react-native-reanimated`
48
+ for native animations, `expo-web-browser` for `ExternalLink`).
39
49
 
40
50
  ### Configuration
41
51
 
42
- Create or update your `tamagui.config.ts`:
52
+ Alouette relies on NativeWind v5's Metro + PostCSS pipeline. NativeWind discovers
53
+ themes and utilities from the imported `global.css` and scans your sources via
54
+ `@source` directives — there is no JS config to maintain.
55
+
56
+ 1. **Metro** — wrap your config with the Alouette helper:
57
+
58
+ ```js
59
+ // metro.config.cjs
60
+ const { withAlouetteConfig } = require("alouette/metro");
61
+ const { getDefaultConfig } = require("expo/metro-config.js");
62
+
63
+ module.exports = withAlouetteConfig(getDefaultConfig(__dirname));
64
+ ```
65
+
66
+ 2. **CSS entry** — create a `global.css` that re-exports Alouette's tokens and
67
+ points `@source` at the directories NativeWind should scan for class names:
68
+
69
+ ```css
70
+ /* global.css */
71
+ @import "alouette/global.css";
72
+
73
+ @source './src'; /* your own className / tv() literals */
74
+ @source '../node_modules/alouette/src'; /* alouette's source — required */
75
+ ```
76
+
77
+ Tailwind only emits classes it finds while scanning `@source` paths, so both
78
+ your app's source **and** alouette's source must be covered or the matching
79
+ utilities are silently purged. In a monorepo where alouette is hoisted to the
80
+ repo root `node_modules`, adjust the depth (e.g.
81
+ `@source '../../../node_modules/alouette/src'`); a path that resolves to nothing
82
+ fails silently with no error.
83
+
84
+ Import it once at your app's entry point:
43
85
 
44
86
  ```ts
45
- import {
46
- createAlouetteTamagui,
47
- defaultColorScales,
48
- createAlouetteTokens,
49
- createAlouetteThemes,
50
- } from "alouette/createAlouetteTamagui";
87
+ import "./global.css";
88
+ ```
89
+
90
+ 3. **PostCSS** — NativeWind compiles Tailwind through PostCSS on both web and
91
+ native. `@tailwindcss/postcss` ships as a dependency of `alouette`, so you
92
+ only add the config file (use `.mjs` so it loads as ESM regardless of your
93
+ package's `"type"`):
94
+
95
+ ```js
96
+ // postcss.config.mjs
97
+ export default {
98
+ plugins: {
99
+ "@tailwindcss/postcss": {},
100
+ },
101
+ };
102
+ ```
103
+
104
+ 4. **Babel** — use the Expo preset and the Reanimated/worklets plugin:
105
+
106
+ ```js
107
+ // babel.config.js
108
+ export default function (api) {
109
+ api.cache(true);
110
+ return {
111
+ presets: [["babel-preset-expo", { reanimated: false }]],
112
+ plugins: ["react-native-worklets/plugin"],
113
+ };
114
+ }
115
+ ```
116
+
117
+ 5. **Provider** — wrap your app in `AlouetteProvider`. It applies the OS
118
+ light/dark scheme as the root theme so base tokens resolve app-wide:
119
+
120
+ ```tsx
121
+ import { AlouetteProvider } from "alouette";
122
+
123
+ export function App() {
124
+ return <AlouetteProvider>{/* your app */}</AlouetteProvider>;
125
+ }
126
+ ```
51
127
 
52
- const tokens = createAlouetteTokens(defaultColorScales);
53
- const config = createAlouetteTamagui(tokens, createAlouetteThemes(tokens));
128
+ 6. **Fonts** Alouette's typography uses Sora (body/heading) and Chivo Mono
129
+ (mono). On native, load the weight-specific font files (the standalone
130
+ `font-weight` utility has no effect because each weight is a distinct file):
54
131
 
55
- export default config;
132
+ ```tsx
133
+ import {
134
+ Sora_400Regular as SoraRegular,
135
+ Sora_700Bold as SoraBold,
136
+ Sora_800ExtraBold as SoraExtraBold,
137
+ useFonts,
138
+ } from "@expo-google-fonts/sora";
139
+ import {
140
+ ChivoMono_400Regular as ChivoMonoRegular,
141
+ ChivoMono_700Bold as ChivoMonoBold,
142
+ ChivoMono_800ExtraBold as ChivoMonoExtraBold,
143
+ } from "@expo-google-fonts/chivo-mono";
144
+
145
+ const [fontsLoaded] = useFonts({
146
+ SoraRegular,
147
+ SoraBold,
148
+ SoraExtraBold,
149
+ ChivoMonoRegular,
150
+ ChivoMonoBold,
151
+ ChivoMonoExtraBold,
152
+ });
56
153
  ```
57
154
 
58
155
  ## 🎨 Core Features
59
156
 
60
157
  ### Components
61
158
 
62
- Alouette provides a comprehensive set of components following the atomic design pattern:
159
+ Alouette ships a universal component set styled through `className`:
63
160
 
64
- #### Actions
161
+ - **Actions** — `Button`, `ExternalLinkButton`, `InternalLinkButton`, `IconButton`
162
+ - **Containers** — `Box`, `InteractiveBox`, `SafeAreaBox`, `Surface`, `ScopedTheme`, `AccentScope`, `PresenceOne`, `PresenceList`
163
+ - **Inputs** — `InputText`, `TextArea`, `Switch`
164
+ - **Feedback** — `Message`, `InfoMessage`, `ConfirmationMessage`, `WarningMessage`
165
+ - **Data** — `PressableBox`, `PressableListItem`
166
+ - **Layout** — `GradientBackground`, `GradientScrollView`
167
+ - **Primitives** — `View`, `Text`, `Paragraph`, `Icon`, `ScrollView`, `Stack`, `HStack`, `VStack`, `Separator`
168
+ - **Responsive** — `SwitchBreakpointsUsingDisplayNone`, `SwitchBreakpointsUsingNull`, `useCurrentBreakpointName`
65
169
 
66
- - `Button`: brand interaction component with multiple variants
67
- - `IconButton`: Circular button optimized for icon display
170
+ For detailed examples and API documentation, visit our [Storybook](https://www.chromatic.com/library?appId=679f9e8df3edc5f07975b64a).
68
171
 
69
- #### Containers
172
+ ### Text styling
70
173
 
71
- - `Box`: Basic layout container with theme support
72
- - `PressableBox`: Interactive container with press states
174
+ `<Text>` has no variant props style it entirely via `className`. Family and
175
+ weight are combined into a single utility (`font-body`, `font-body-bold`,
176
+ `font-heading-extrabold`, `font-mono`, …); size uses standard Tailwind
177
+ `text-*`; color uses tokens like `text-sharp`, `text-muted`, `text-accent`.
73
178
 
74
- #### Forms
179
+ ```tsx
180
+ import { Text } from "alouette";
75
181
 
76
- - `InputText`: Text input with theming and state management
182
+ <Text className="text-base">Body</Text>;
183
+ <Text className="font-heading-extrabold text-4xl">Title</Text>;
184
+ <Text className="font-mono text-xs text-muted">Code</Text>;
185
+ ```
77
186
 
78
- #### Layout
187
+ ### Theming and accents
79
188
 
80
- - `Separator`: Visual divider with customizable orientation
81
- - `List`: Structured data display components
189
+ Themes are sets of CSS variables (`light`, `dark`, `light_brand`, `dark_info`, …)
190
+ applied by `ScopedTheme`. Child components use **base tokens** (`bg-surface`,
191
+ `text-accent`, `border-muted`, …) and inherit the correct values from the nearest
192
+ theme scope. Components that introduce an accent wrap their children in
193
+ `AccentScope`:
82
194
 
83
- For detailed examples and API documentation, visit our [Storybook](https://www.chromatic.com/library?appId=679f9e8df3edc5f07975b64a).
195
+ ```tsx
196
+ import { AccentScope, Surface } from "alouette";
197
+
198
+ <AccentScope accent="info">
199
+ <Surface>{/* children use base tokens */}</Surface>
200
+ </AccentScope>;
201
+ ```
84
202
 
85
203
  ### Icons
86
204
 
87
- Icons are provided through the integrated `alouette-icons` package:
205
+ Icons come from the integrated `alouette-icons` package:
88
206
 
89
207
  ```tsx
90
208
  import { ArrowLeftRegularIcon } from "alouette-icons/phosphor-icons/ArrowLeftRegularIcon";
@@ -94,24 +212,6 @@ function MyComponent() {
94
212
  }
95
213
  ```
96
214
 
97
- ## 🏗️ Architecture
98
-
99
- ### Core Principles
100
-
101
- 1. **Universal Design**: Components work seamlessly across web and native platforms
102
- 2. **Performance First**: Optimized bundle size and runtime performance through Tamagui
103
- 3. **Accessibility**: WCAG 2.1 compliant components with proper ARIA attributes
104
- 4. **Customization**: Flexible theming system with sensible defaults
105
- 5. **Type Safety**: Built with TypeScript for enhanced developer experience
106
-
107
- ### Technical Architecture
108
-
109
- - **Component Structure**: Atomic design pattern with atoms, molecules, and organisms
110
- - **Styling System**: Tamagui's compile-time styling with runtime fallbacks
111
- - **Theme System**: Token-based design system with support for light/dark modes
112
- - **Responsive Design**: Mobile-first approach with flexible breakpoint system
113
- - **Icon System**: Based on Phosphor Icons with optimized bundle size
114
-
115
215
  ## 🎯 Examples
116
216
 
117
217
  ### Basic Button
@@ -122,7 +222,7 @@ import { Button } from "alouette";
122
222
  function MyComponent() {
123
223
  return (
124
224
  <Button
125
- theme="brand"
225
+ accent="brand"
126
226
  text="Click me"
127
227
  onPress={() => console.log("Clicked!")}
128
228
  />
@@ -138,14 +238,31 @@ import { ArrowLeftRegularIcon } from "alouette-icons/phosphor-icons/ArrowLeftReg
138
238
 
139
239
  function MyComponent() {
140
240
  return (
141
- <Button theme="brand" icon={<ArrowLeftRegularIcon />} text="Go Back" />
241
+ <Button accent="brand" icon={<ArrowLeftRegularIcon />} text="Go Back" />
142
242
  );
143
243
  }
144
244
  ```
145
245
 
146
- ## 📚 Documentation
246
+ ## 🤖 Using an AI agent?
247
+
248
+ Alouette ships [skills](https://www.npmjs.com/package/@tanstack/intent) that teach
249
+ AI coding agents how to use the design system correctly:
147
250
 
148
- For more examples and detailed documentation:
251
+ ```bash
252
+ npx @tanstack/intent@latest install
253
+ ```
254
+
255
+ ## 🏗️ Architecture
256
+
257
+ - **Universal Design** — components render across web and native from one API
258
+ - **NativeWind v5 styling** — Tailwind `className`; animations are CSS
259
+ `@keyframes` + `--animate-*` tokens, run on native via Reanimated
260
+ - **Token-based theming** — CSS custom properties cascade through `ScopedTheme`;
261
+ light/dark + accent scopes
262
+ - **Accessibility** — proper ARIA / accessibility attributes
263
+ - **Type Safety** — built with TypeScript
264
+
265
+ ## 📚 Documentation
149
266
 
150
267
  - [Component Documentation](https://www.chromatic.com/library?appId=679f9e8df3edc5f07975b64a)
151
268
  - [GitHub Repository](https://github.com/christophehurpeau/alouette)
@@ -14,6 +14,10 @@ export type { TextProps, ParagraphProps } from "./ui/primitives/Text";
14
14
  export { Text, Paragraph } from "./ui/primitives/Text";
15
15
  export type { ScrollViewProps } from "./ui/primitives/ScrollView";
16
16
  export { ScrollView } from "./ui/primitives/ScrollView";
17
+ export type { FlatListProps } from "./ui/primitives/FlatList";
18
+ export { FlatList } from "./ui/primitives/FlatList";
19
+ export type { SectionListProps } from "./ui/primitives/SectionList";
20
+ export { SectionList } from "./ui/primitives/SectionList";
17
21
  export type { HStackProps, VStackProps, StackProps } from "./ui/stacks/stacks";
18
22
  export { Stack, HStack, VStack } from "./ui/stacks/stacks";
19
23
  export type { SeparatorProps } from "./ui/stacks/Separator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ReactNode } from "react";
2
+ import { type FlatListProps as RNFlatListProps } from "react-native";
3
+ export type FlatListProps<ItemT> = RNFlatListProps<ItemT>;
4
+ export declare const FlatList: <ItemT>(props: FlatListProps<ItemT>) => ReactNode;
5
+ //# sourceMappingURL=FlatList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlatList.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/FlatList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAEL,KAAK,aAAa,IAAI,eAAe,EACtC,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAE1D,eAAO,MAAM,QAAQ,EAIf,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import type { ReactNode } from "react";
3
+ declare const _default: {
4
+ title: string;
5
+ component: <ItemT>(props: import("./FlatList").FlatListProps<ItemT>) => ReactNode;
6
+ parameters: {
7
+ componentSubtitle: string;
8
+ docs: {
9
+ description: {
10
+ component: string;
11
+ };
12
+ };
13
+ };
14
+ };
15
+ export default _default;
16
+ export declare const PreviewStory: StoryObj;
17
+ export declare const VariantsStory: StoryObj;
18
+ //# sourceMappingURL=FlatList.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlatList.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/FlatList.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;;;;;;;;;;;;;AAOvC,wBAwBkC;AA6DlC,eAAO,MAAM,YAAY,EAAE,QAG1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAa3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from "react";
2
+ import { type SectionListProps as RNSectionListProps } from "react-native";
3
+ type DefaultSectionT = Record<string, unknown>;
4
+ export type SectionListProps<ItemT, SectionT = DefaultSectionT> = RNSectionListProps<ItemT, SectionT>;
5
+ export declare const SectionList: <ItemT, SectionT = DefaultSectionT>(props: SectionListProps<ItemT, SectionT>) => ReactNode;
6
+ export {};
7
+ //# sourceMappingURL=SectionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionList.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/SectionList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAEL,KAAK,gBAAgB,IAAI,kBAAkB,EAC5C,MAAM,cAAc,CAAC;AAEtB,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,MAAM,MAAM,gBAAgB,CAC1B,KAAK,EACL,QAAQ,GAAG,eAAe,IACxB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAExC,eAAO,MAAM,WAAW,EAGlB,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,EACtC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,KACrC,SAAS,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import type { ReactNode } from "react";
3
+ declare const _default: {
4
+ title: string;
5
+ component: <ItemT, SectionT = {
6
+ [x: string]: unknown;
7
+ }>(props: import("./SectionList").SectionListProps<ItemT, SectionT>) => ReactNode;
8
+ parameters: {
9
+ componentSubtitle: string;
10
+ docs: {
11
+ description: {
12
+ component: string;
13
+ };
14
+ };
15
+ };
16
+ };
17
+ export default _default;
18
+ export declare const PreviewStory: StoryObj;
19
+ export declare const VariantsStory: StoryObj;
20
+ //# sourceMappingURL=SectionList.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionList.stories.d.ts","sourceRoot":"","sources":["../../../../src/ui/primitives/SectionList.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;;;;;;;;;;;;;;;AAOvC,wBAyBqC;AA8DrC,eAAO,MAAM,YAAY,EAAE,QAG1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAkB3B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
- import { VariableContextProvider } from 'nativewind';
2
+ import { VariableContextProvider, styled as styled$1 } from 'nativewind';
3
3
  import { createContext, useContext, forwardRef, Fragment, Children, cloneElement, useRef, useState, useEffect, isValidElement, useCallback } from 'react';
4
- import { useColorScheme, View as View$1, Text as Text$1, ScrollView as ScrollView$1, Pressable, Platform, TextInput, useWindowDimensions } from 'react-native-web';
4
+ import { useColorScheme, View as View$1, Text as Text$1, ScrollView as ScrollView$1, FlatList as FlatList$1, SectionList as SectionList$1, Pressable, Platform, TextInput, useWindowDimensions } from 'react-native-web';
5
5
  import { extendTailwindMerge, twMerge as twMerge$1 } from 'tailwind-merge';
6
6
  import { tv } from 'tailwind-variants';
7
7
  import { CheckRegularIcon } from 'alouette-icons/phosphor-icons/CheckRegularIcon';
@@ -687,6 +687,17 @@ const ScrollView = forwardRef(
687
687
  }
688
688
  );
689
689
 
690
+ const FlatList = styled$1(FlatList$1, {
691
+ className: "style",
692
+ contentContainerClassName: "contentContainerStyle",
693
+ columnWrapperClassName: "columnWrapperStyle"
694
+ });
695
+
696
+ const SectionList = styled$1(SectionList$1, {
697
+ className: "style",
698
+ contentContainerClassName: "contentContainerStyle"
699
+ });
700
+
690
701
  const Stack = forwardRef(
691
702
  ({ className, ...props }, ref) => {
692
703
  return /* @__PURE__ */ jsx(
@@ -1933,5 +1944,5 @@ function ExternalLink({
1933
1944
  );
1934
1945
  }
1935
1946
 
1936
- export { AccentScope, AlouetteDecorator, AlouetteProvider, Box, BreakpointNameEnum, Breakpoints, Button, ConfirmationMessage, ExternalLink, ExternalLinkButton, GradientBackground, GradientScrollView, HStack, Icon, IconButton, InfoMessage, InputText, InteractiveBox, InternalLinkButton, Message, Paragraph, PresenceList, PresenceOne, PressableBox, PressableListItem, SafeAreaBox, SafeAreaProvider, ScopedTheme, ScrollView, Separator, Stack, Story, StoryContainer, StoryDecorator, StoryGrid, StoryTitle, Surface, Switch, SwitchBreakpointsUsingDisplayNone, SwitchBreakpointsUsingNull, Text, TextArea, VStack, View, WarningMessage, animationDurationsMs, styled, themeVariables, useCurrentBreakpointName, useCurrentBreakpointNameFiltered, useCurrentMode, useCurrentTheme, useSafeAreaInsets, useThemeToken };
1947
+ export { AccentScope, AlouetteDecorator, AlouetteProvider, Box, BreakpointNameEnum, Breakpoints, Button, ConfirmationMessage, ExternalLink, ExternalLinkButton, FlatList, GradientBackground, GradientScrollView, HStack, Icon, IconButton, InfoMessage, InputText, InteractiveBox, InternalLinkButton, Message, Paragraph, PresenceList, PresenceOne, PressableBox, PressableListItem, SafeAreaBox, SafeAreaProvider, ScopedTheme, ScrollView, SectionList, Separator, Stack, Story, StoryContainer, StoryDecorator, StoryGrid, StoryTitle, Surface, Switch, SwitchBreakpointsUsingDisplayNone, SwitchBreakpointsUsingNull, Text, TextArea, VStack, View, WarningMessage, animationDurationsMs, styled, themeVariables, useCurrentBreakpointName, useCurrentBreakpointNameFiltered, useCurrentMode, useCurrentTheme, useSafeAreaInsets, useThemeToken };
1937
1948
  //# sourceMappingURL=index-browser.es.js.map