@idealyst/mcp-server 1.2.123 → 1.2.125
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/dist/{chunk-RVMPULO4.js → chunk-PLKNERFG.js} +704 -24
- package/dist/chunk-PLKNERFG.js.map +1 -0
- package/dist/index.cjs +706 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/index.cjs +703 -23
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.js +1 -1
- package/examples/components/Table.examples.tsx +236 -0
- package/package.json +5 -5
- package/dist/chunk-RVMPULO4.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -6040,7 +6040,9 @@ import { Button, Icon, List, Badge } from '@idealyst/components';
|
|
|
6040
6040
|
<Icon
|
|
6041
6041
|
name="home" // Icon name (required) \u2014 type: IconName
|
|
6042
6042
|
size="xs|sm|md|lg|xl|number" // Icon size
|
|
6043
|
-
color="primary|secondary|..." //
|
|
6043
|
+
color="primary|secondary|..." // Palette color (Color type)
|
|
6044
|
+
// OR textColor="primary|secondary|tertiary|inverse" \u2014 Text color type
|
|
6045
|
+
// NEVER use both color and textColor \u2014 they are mutually exclusive (discriminated union)
|
|
6044
6046
|
/>
|
|
6045
6047
|
\`\`\`
|
|
6046
6048
|
|
|
@@ -8716,14 +8718,16 @@ import { Outlet, useNavigator } from '@idealyst/navigation';
|
|
|
8716
8718
|
import type { StackLayoutProps } from '@idealyst/navigation';
|
|
8717
8719
|
import { View, Text, Pressable, Icon, Divider } from '@idealyst/components';
|
|
8718
8720
|
import type { IconName } from '@idealyst/components';
|
|
8721
|
+
import { useTheme } from '@idealyst/theme';
|
|
8719
8722
|
|
|
8720
8723
|
export function AppLayout({ routes, currentPath, options }: StackLayoutProps) {
|
|
8721
8724
|
const { navigate } = useNavigator();
|
|
8725
|
+
const theme = useTheme();
|
|
8722
8726
|
|
|
8723
8727
|
return (
|
|
8724
8728
|
<View style={{ flex: 1, flexDirection: 'row' }}>
|
|
8725
8729
|
{/* Sidebar */}
|
|
8726
|
-
<View style={{ width: 260, borderRightWidth: 1, borderRightColor:
|
|
8730
|
+
<View style={{ width: 260, borderRightWidth: 1, borderRightColor: theme.colors.border.primary, backgroundColor: theme.colors.surface.secondary }}>
|
|
8727
8731
|
{/* Logo / App name */}
|
|
8728
8732
|
<View style={{ height: 56, justifyContent: 'center', paddingHorizontal: 16 }}>
|
|
8729
8733
|
<Text typography="h6" weight="bold">{options?.headerTitle || 'My App'}</Text>
|
|
@@ -8748,18 +8752,20 @@ export function AppLayout({ routes, currentPath, options }: StackLayoutProps) {
|
|
|
8748
8752
|
paddingVertical: 10,
|
|
8749
8753
|
paddingHorizontal: 12,
|
|
8750
8754
|
borderRadius: 8,
|
|
8751
|
-
backgroundColor: isActive ?
|
|
8755
|
+
backgroundColor: isActive ? theme.intents.primary.light : 'transparent',
|
|
8752
8756
|
}}
|
|
8753
8757
|
>
|
|
8758
|
+
{/* Icon uses EITHER color OR textColor \u2014 never both */}
|
|
8754
8759
|
<Icon
|
|
8755
8760
|
name={(route.options?.icon as IconName) || 'circle-outline'}
|
|
8756
8761
|
size="sm"
|
|
8757
|
-
color={isActive ? '
|
|
8762
|
+
color={isActive ? 'primary' : undefined}
|
|
8758
8763
|
/>
|
|
8759
8764
|
<Text
|
|
8760
8765
|
typography="body2"
|
|
8761
|
-
weight={isActive ? 'semibold' : '
|
|
8762
|
-
|
|
8766
|
+
weight={isActive ? 'semibold' : 'normal'}
|
|
8767
|
+
color={isActive ? undefined : 'secondary'}
|
|
8768
|
+
style={isActive ? { color: theme.intents.primary.primary } : undefined}
|
|
8763
8769
|
>
|
|
8764
8770
|
{route.options?.title || route.path}
|
|
8765
8771
|
</Text>
|
|
@@ -8917,7 +8923,7 @@ export function TabLayout({ routes, currentPath }: TabLayoutProps) {
|
|
|
8917
8923
|
{opts?.tabBarLabel && (
|
|
8918
8924
|
<Text
|
|
8919
8925
|
typography="body2"
|
|
8920
|
-
weight={isActive ? 'semibold' : '
|
|
8926
|
+
weight={isActive ? 'semibold' : 'normal'}
|
|
8921
8927
|
style={{ color: isActive ? '#007AFF' : '#8E8E93' }}
|
|
8922
8928
|
>
|
|
8923
8929
|
{opts.tabBarLabel}
|
|
@@ -9132,7 +9138,7 @@ export function DashboardLayout({ routes, currentPath, options }: StackLayoutPro
|
|
|
9132
9138
|
{!collapsed && (
|
|
9133
9139
|
<Text
|
|
9134
9140
|
typography="body2"
|
|
9135
|
-
weight={isActive ? 'semibold' : '
|
|
9141
|
+
weight={isActive ? 'semibold' : 'normal'}
|
|
9136
9142
|
style={{ color: isActive ? '#007AFF' : '#333' }}
|
|
9137
9143
|
>
|
|
9138
9144
|
{route.options?.title || route.path}
|
|
@@ -11460,6 +11466,26 @@ var componentMetadata = {
|
|
|
11460
11466
|
"Configure safe areas appropriately"
|
|
11461
11467
|
]
|
|
11462
11468
|
},
|
|
11469
|
+
ScrollView: {
|
|
11470
|
+
category: "layout",
|
|
11471
|
+
description: "Scrollable container for long or overflowing content. Replaces the deprecated `<View scrollable>` pattern. Supports vertical, horizontal, and bidirectional scrolling with scroll event callbacks and imperative scroll controls via ref.",
|
|
11472
|
+
features: [
|
|
11473
|
+
"direction prop: 'vertical' (default) | 'horizontal' | 'both'",
|
|
11474
|
+
"Scroll callbacks: onScroll, onScrollBegin, onScrollEnd, onEndReached (for infinite scroll)",
|
|
11475
|
+
"Imperative ref: scrollTo, scrollToEnd, scrollToStart, getScrollPosition",
|
|
11476
|
+
"Same spacing shorthand props as View: padding, paddingVertical, paddingHorizontal, gap, margin, etc.",
|
|
11477
|
+
"Background, radius, and border variants (same as View)",
|
|
11478
|
+
"showsIndicator, pagingEnabled, bounces, scrollEnabled, keyboardDismissMode props",
|
|
11479
|
+
"contentContainerStyle for styling the inner content wrapper"
|
|
11480
|
+
],
|
|
11481
|
+
bestPractices: [
|
|
11482
|
+
"Use ScrollView for scrollable content instead of <View scrollable> (deprecated)",
|
|
11483
|
+
"Use onEndReached + onEndReachedThreshold for infinite scroll / load-more patterns",
|
|
11484
|
+
'Use direction="horizontal" for horizontal carousels or galleries',
|
|
11485
|
+
"Use ref with scrollTo/scrollToEnd for programmatic scroll control",
|
|
11486
|
+
"Wrap in a flex:1 container or give explicit height \u2014 ScrollView needs bounded parent height"
|
|
11487
|
+
]
|
|
11488
|
+
},
|
|
11463
11489
|
Select: {
|
|
11464
11490
|
category: "form",
|
|
11465
11491
|
description: "Dropdown selection component for choosing from a list of options",
|
|
@@ -11559,14 +11585,18 @@ var componentMetadata = {
|
|
|
11559
11585
|
description: "Structured data display in rows and columns",
|
|
11560
11586
|
features: [
|
|
11561
11587
|
"Sortable columns",
|
|
11562
|
-
"Custom cell rendering",
|
|
11563
|
-
"
|
|
11564
|
-
"
|
|
11588
|
+
"Custom cell rendering via column `render` function",
|
|
11589
|
+
"Custom column titles (ReactNode) \u2014 render icons, badges, or any element as header",
|
|
11590
|
+
"Footer row support \u2014 static content or computed from data via `footer` callback",
|
|
11591
|
+
"Striped, bordered, and standard type variants",
|
|
11592
|
+
"Column alignment (left, center, right)"
|
|
11565
11593
|
],
|
|
11566
11594
|
bestPractices: [
|
|
11567
11595
|
"Use for structured, comparable data",
|
|
11568
11596
|
"Align numbers to the right",
|
|
11569
|
-
"
|
|
11597
|
+
"Column `title` accepts ReactNode \u2014 use for custom headers with icons or styled text",
|
|
11598
|
+
"Column `footer` accepts ReactNode or `(data: T[]) => ReactNode` \u2014 use the callback form for computed values like sums/averages",
|
|
11599
|
+
"Footer only renders when at least one column has a `footer` defined"
|
|
11570
11600
|
]
|
|
11571
11601
|
},
|
|
11572
11602
|
Tabs: {
|
|
@@ -11699,7 +11729,10 @@ var componentAliases = {
|
|
|
11699
11729
|
photo: "Image",
|
|
11700
11730
|
picture: "Image",
|
|
11701
11731
|
img: "Image",
|
|
11702
|
-
thumbnail: "Image"
|
|
11732
|
+
thumbnail: "Image",
|
|
11733
|
+
scroll: "ScrollView",
|
|
11734
|
+
scrollview: "ScrollView",
|
|
11735
|
+
scrollable: "ScrollView"
|
|
11703
11736
|
};
|
|
11704
11737
|
function findComponentName(componentName) {
|
|
11705
11738
|
if (componentMetadata[componentName]) {
|
|
@@ -20888,7 +20921,7 @@ These are mistakes agents make repeatedly. Each one causes TypeScript compilatio
|
|
|
20888
20921
|
1. **Text** does NOT have \`variant\`, \`intent\`, \`size\`, \`fontSize\`, \`numberOfLines\`, \`ellipsizeMode\`, \`selectable\`, \`textColor\`, or \`onPress\`. Use \`typography\` (\`h1\`\u2013\`h6\`, \`subtitle1\`, \`subtitle2\`, \`body1\`, \`body2\`, \`caption\`), \`weight\` (\`light\`, \`normal\`, \`medium\`, \`semibold\`, \`bold\`), and \`color\` (\`primary\`, \`secondary\`, \`tertiary\`, \`inverse\`). **\`textColor\` is an Icon-only prop** \u2014 Text uses \`color\`. For pressable text, wrap in \`Pressable\` or use \`Button type="text"\`.
|
|
20889
20922
|
2. **TextInput** does NOT have \`label\`, \`error\`, \`editable\`, \`autoComplete\`, \`keyboardType\`, or \`onChange\`. Compose labels/errors with \`Text\` + \`View\`. Use \`onChangeText\`, \`inputMode\` (\`'text' | 'email' | 'password' | 'number'\` \u2014 NOT \`'decimal'\`, \`'numeric'\`, \`'tel'\`, \`'url'\`), and \`textContentType\`. **TextArea has a DIFFERENT API** \u2014 it DOES support \`label\`, \`error\`, \`rows\`, \`onChange\`, but does NOT have \`onBlur\` or \`onChangeText\`. Always look up TextArea types separately.
|
|
20890
20923
|
3. **Button/IconButton** \`type\` is \`'contained' | 'outlined' | 'text'\` \u2014 NOT \`'ghost'\`, \`'solid'\`, \`'default'\`. Button has \`leftIcon\` and \`rightIcon\` \u2014 NOT \`icon\`.
|
|
20891
|
-
4. **View** does NOT have \`direction\`, \`align\`, or \`onPress\` props. For touch handling, wrap content in \`Pressable\` from \`@idealyst/components\` (NOT from \`react-native\`): \`<Pressable onPress={handlePress}><View>...</View></Pressable>\`. For horizontal layout use \`style={{ flexDirection: 'row' }}\`. View spacing shorthand props (all accept Size: \`xs\`|\`sm\`|\`md\`|\`lg\`|\`xl\`): \`padding\`, \`paddingVertical\`, \`paddingHorizontal\`, \`margin\`, \`marginVertical\`, \`marginHorizontal\`, \`gap\`/\`spacing\`. Do NOT use \`paddingTop\`, \`paddingBottom\`, \`paddingLeft\`, \`paddingRight\`, \`marginTop\`, \`marginBottom\`, \`marginLeft\`, \`marginRight\` as shorthand props \u2014 they do NOT exist and will cause TS2353. For single-side spacing, use \`style={{ paddingTop: 16 }}\`. Other View props: \`background\`, \`radius\`, \`border
|
|
20924
|
+
4. **View** does NOT have \`direction\`, \`align\`, \`flex\`, or \`onPress\` props. \`flex={1}\` is NOT a shorthand \u2014 use \`style={{ flex: 1 }}\`. For touch handling, wrap content in \`Pressable\` from \`@idealyst/components\` (NOT from \`react-native\`): \`<Pressable onPress={handlePress}><View>...</View></Pressable>\`. For horizontal layout use \`style={{ flexDirection: 'row' }}\`. View spacing shorthand props (all accept Size: \`xs\`|\`sm\`|\`md\`|\`lg\`|\`xl\`): \`padding\`, \`paddingVertical\`, \`paddingHorizontal\`, \`margin\`, \`marginVertical\`, \`marginHorizontal\`, \`gap\`/\`spacing\`. Do NOT use \`paddingTop\`, \`paddingBottom\`, \`paddingLeft\`, \`paddingRight\`, \`marginTop\`, \`marginBottom\`, \`marginLeft\`, \`marginRight\` as shorthand props \u2014 they do NOT exist and will cause TS2353. For single-side spacing, use \`style={{ paddingTop: 16 }}\`. Other View props: \`background\`, \`radius\`, \`border\`. \`border\` is \`'none' | 'thin' | 'thick'\` \u2014 NOT \`'outline'\`, \`'solid'\`. **For scrollable content, use \`<ScrollView>\` instead of \`<View scrollable>\`** (\`scrollable\` prop is deprecated).
|
|
20892
20925
|
5. **Badge** \`type\` is \`'filled' | 'outlined' | 'dot'\` \u2014 NOT \`'soft'\`, \`'subtle'\`, \`'solid'\`. **Intent type narrowing (CRITICAL):** TS widens string literals in objects/arrays to \`string\`, which fails \`intent\` props. Rules: (a) Simple ternaries in JSX work fine: \`<Badge intent={cond ? 'success' : 'danger'}>\`. (b) **Do NOT use \`as const\` on ternary expressions** \u2014 \`(cond ? 'a' : 'b') as const\` causes TS1355. (c) **Arrays/objects with intent values MUST use \`as const\`**: \`const items = [{ intent: 'success' as const, label: 'OK' }]\` or \`const items = [{ intent: 'success', label: 'OK' }] as const\`. Without \`as const\`, \`item.intent\` becomes \`string\` which fails. (d) For computed values, use typed variable: \`const intent: Intent = ...;\` (import Intent from @idealyst/theme). This applies to ALL components with intent/type props.
|
|
20893
20926
|
6. **Avatar** uses \`src\` for image URL, \`fallback\` for initials \u2014 NOT \`name\`, \`initials\`, \`label\`. Shape: \`'circle' | 'square'\`.
|
|
20894
20927
|
7. **Link** requires a \`to\` prop (path string) \u2014 it's a navigation link, NOT pressable text.
|
|
@@ -20897,6 +20930,7 @@ These are mistakes agents make repeatedly. Each one causes TypeScript compilatio
|
|
|
20897
20930
|
10. The component is **TextInput**, NOT \`Input\`.
|
|
20898
20931
|
11. **Card** is a simple container \u2014 there are NO compound components like \`Card.Content\`, \`Card.Header\`, \`Card.Body\`, \`Card.Footer\`, \`Card.Title\`. Just put children directly inside \`<Card>...</Card>\`. **Card does NOT have \`border\`, \`scrollable\`, or \`backgroundColor\` props** (those are View-only). Card styling props: \`type\` (\`'default'|'outlined'|'elevated'|'filled'\`), \`radius\`, \`intent\`, \`background\`, plus spacing (\`padding\`, \`margin\`, \`gap\`). For borders use \`type="outlined"\`.
|
|
20899
20932
|
12. **Switch** uses \`checked\` and \`onChange\` \u2014 NOT \`value\` and \`onValueChange\` (React Native convention). Also has \`label\`, \`labelPosition\`, \`disabled\`.
|
|
20933
|
+
13. **Icon color props are mutually exclusive** \u2014 \`IconProps\` is a discriminated union: use EITHER \`color\` (palette: \`'primary'\`, \`'blue.500'\`) OR \`textColor\` (\`'primary'\`, \`'secondary'\`) \u2014 NEVER both. Passing both (even conditionally like \`color={cond ? x : undefined} textColor={cond ? undefined : y}\`) causes TS2322 because TypeScript cannot resolve the union. Instead: \`<Icon name="home" color={isActive ? 'primary' : undefined} />\` or use separate JSX branches.
|
|
20900
20934
|
|
|
20901
20935
|
### Navigation
|
|
20902
20936
|
11. **NavigatorProvider** takes a \`route\` prop (SINGULAR) \u2014 NOT \`routes\`: \`<NavigatorProvider route={routeConfig} />\`. There is NO \`Router\` export.
|
|
@@ -20906,7 +20940,7 @@ These are mistakes agents make repeatedly. Each one causes TypeScript compilatio
|
|
|
20906
20940
|
15. \`useParams()\` does NOT accept generic type arguments. It returns \`Record<string, string | undefined>\`. Do NOT write \`useParams<{ id: string }>()\` \u2014 that causes TS2558. Always guard for undefined: \`const id = params.id; if (!id) return null;\`.
|
|
20907
20941
|
|
|
20908
20942
|
### Imports & Styling
|
|
20909
|
-
16. **Never** import from \`react-native\` \u2014 no \`TouchableOpacity\`, \`FlatList\`, \`ScrollView\`, \`Animated\`, \`Dimensions\`, \`Linking\`, \`Platform\`. Idealyst provides cross-platform alternatives for all of these (e.g., \`openExternalLinks\` on Markdown, \`Pressable\` from \`@idealyst/components\`).
|
|
20943
|
+
16. **Never** import from \`react-native\` \u2014 no \`TouchableOpacity\`, \`FlatList\`, \`ScrollView\`, \`Animated\`, \`Dimensions\`, \`Linking\`, \`Platform\`. Idealyst provides cross-platform alternatives for all of these (e.g., \`openExternalLinks\` on Markdown, \`Pressable\` from \`@idealyst/components\`). **For scrollable content, use \`<ScrollView>\` from \`@idealyst/components\`** (NOT \`<View scrollable>\` which is deprecated). \`ScrollView\` supports \`direction\` (\`'vertical' | 'horizontal' | 'both'\`), scroll callbacks (\`onScroll\`, \`onScrollBegin\`, \`onScrollEnd\`, \`onEndReached\`), and imperative controls via ref (\`scrollTo\`, \`scrollToEnd\`, \`scrollToStart\`). It also accepts the same spacing shorthand props as View (\`padding\`, \`gap\`, \`margin\`, etc.).
|
|
20910
20944
|
17. **Never** import from \`react-native-unistyles\` \u2014 use \`@idealyst/theme\` (\`configureThemes\`, \`ThemeSettings\`, \`useTheme\`).
|
|
20911
20945
|
18. **useTheme()** returns the Theme object **directly** (NOT wrapped): \`const theme = useTheme();\`. Do NOT destructure: \`const { theme } = useTheme()\` \u2014 causes TS2339.
|
|
20912
20946
|
19. **Spacing & Layout**: Use component shorthand props for spacing \u2014 NOT \`theme.spacing\` (which does NOT exist). The correct patterns:
|
|
@@ -28429,7 +28463,7 @@ var import_url = require("url");
|
|
|
28429
28463
|
// src/generated/types.json
|
|
28430
28464
|
var types_default = {
|
|
28431
28465
|
version: "1.0.93",
|
|
28432
|
-
extractedAt: "2026-
|
|
28466
|
+
extractedAt: "2026-03-11T20:52:45.143Z",
|
|
28433
28467
|
components: {
|
|
28434
28468
|
Accordion: {
|
|
28435
28469
|
name: "Accordion",
|
|
@@ -32700,6 +32734,12 @@ var types_default = {
|
|
|
32700
32734
|
required: false,
|
|
32701
32735
|
description: "Whether to avoid the keyboard on native platforms (iOS/Android).\nWhen enabled, content will shift up when the keyboard appears."
|
|
32702
32736
|
},
|
|
32737
|
+
{
|
|
32738
|
+
name: "keyboardAvoidingOffset",
|
|
32739
|
+
type: "number | undefined",
|
|
32740
|
+
required: false,
|
|
32741
|
+
description: "Additional offset to subtract from the keyboard height when avoiding the keyboard.\nThe Screen automatically accounts for the tab bar height when inside a tab navigator,\nbut this prop can be used for other fixed UI elements that occupy space at the bottom."
|
|
32742
|
+
},
|
|
32703
32743
|
{
|
|
32704
32744
|
name: "onLayout",
|
|
32705
32745
|
type: '((event: import("/home/nicho/Development/idealyst-framework/packages/components/src/hooks/useWebLayout/types").LayoutChangeEvent) => void) | undefined',
|
|
@@ -32707,7 +32747,7 @@ var types_default = {
|
|
|
32707
32747
|
description: "Called when the layout of the screen changes.\nProvides the new width, height, x, and y coordinates."
|
|
32708
32748
|
}
|
|
32709
32749
|
],
|
|
32710
|
-
typeDefinition: "export interface ScreenProps extends ContainerStyleProps {\n /**\n * The content to display inside the screen\n */\n children?: ReactNode;\n\n /**\n * Background variant - controls the background color\n */\n background?: Surface | 'transparent';\n\n /**\n * Safe area padding for all edges (lower precedence).\n * Individual edge props (safeAreaTop, etc.) override this when set.\n */\n safeArea?: boolean;\n\n /**\n * Safe area padding for the top edge.\n * Overrides safeArea for top when explicitly set.\n */\n safeAreaTop?: boolean;\n\n /**\n * Safe area padding for the bottom edge.\n * Overrides safeArea for bottom when explicitly set.\n */\n safeAreaBottom?: boolean;\n\n /**\n * Safe area padding for the left edge.\n * Overrides safeArea for left when explicitly set.\n */\n safeAreaLeft?: boolean;\n\n /**\n * Safe area padding for the right edge.\n * Overrides safeArea for right when explicitly set.\n */\n safeAreaRight?: boolean;\n\n /**\n * Content inset padding for scrollable content (mobile only)\n * Adds padding to the scroll view's content container\n * Useful for adding safe area insets or additional spacing\n */\n contentInset?: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n };\n\n /**\n * Additional styles (platform-specific)\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Test ID for testing\n */\n testID?: string;\n\n /**\n * Scrollable content\n */\n scrollable?: boolean;\n\n /**\n * Whether to avoid the keyboard on native platforms (iOS/Android).\n * When enabled, content will shift up when the keyboard appears.\n * @default true\n * @platform native\n */\n avoidKeyboard?: boolean;\n\n /**\n * Called when the layout of the screen changes.\n * Provides the new width, height, x, and y coordinates.\n */\n onLayout?: (event: LayoutChangeEvent) => void;\n}",
|
|
32750
|
+
typeDefinition: "export interface ScreenProps extends ContainerStyleProps {\n /**\n * The content to display inside the screen\n */\n children?: ReactNode;\n\n /**\n * Background variant - controls the background color\n */\n background?: Surface | 'transparent';\n\n /**\n * Safe area padding for all edges (lower precedence).\n * Individual edge props (safeAreaTop, etc.) override this when set.\n */\n safeArea?: boolean;\n\n /**\n * Safe area padding for the top edge.\n * Overrides safeArea for top when explicitly set.\n */\n safeAreaTop?: boolean;\n\n /**\n * Safe area padding for the bottom edge.\n * Overrides safeArea for bottom when explicitly set.\n */\n safeAreaBottom?: boolean;\n\n /**\n * Safe area padding for the left edge.\n * Overrides safeArea for left when explicitly set.\n */\n safeAreaLeft?: boolean;\n\n /**\n * Safe area padding for the right edge.\n * Overrides safeArea for right when explicitly set.\n */\n safeAreaRight?: boolean;\n\n /**\n * Content inset padding for scrollable content (mobile only)\n * Adds padding to the scroll view's content container\n * Useful for adding safe area insets or additional spacing\n */\n contentInset?: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n };\n\n /**\n * Additional styles (platform-specific)\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Test ID for testing\n */\n testID?: string;\n\n /**\n * Scrollable content\n */\n scrollable?: boolean;\n\n /**\n * Whether to avoid the keyboard on native platforms (iOS/Android).\n * When enabled, content will shift up when the keyboard appears.\n * @default true\n * @platform native\n */\n avoidKeyboard?: boolean;\n\n /**\n * Additional offset to subtract from the keyboard height when avoiding the keyboard.\n * The Screen automatically accounts for the tab bar height when inside a tab navigator,\n * but this prop can be used for other fixed UI elements that occupy space at the bottom.\n * @default 0\n * @platform native\n */\n keyboardAvoidingOffset?: number;\n\n /**\n * Called when the layout of the screen changes.\n * Provides the new width, height, x, and y coordinates.\n */\n onLayout?: (event: LayoutChangeEvent) => void;\n}",
|
|
32711
32751
|
relatedTypes: {},
|
|
32712
32752
|
registry: {
|
|
32713
32753
|
name: "Screen",
|
|
@@ -32796,6 +32836,13 @@ var types_default = {
|
|
|
32796
32836
|
description: "Whether to avoid the keyboard on native platforms (iOS/Android).\nWhen enabled, content will shift up when the keyboard appears.",
|
|
32797
32837
|
required: false
|
|
32798
32838
|
},
|
|
32839
|
+
keyboardAvoidingOffset: {
|
|
32840
|
+
name: "keyboardAvoidingOffset",
|
|
32841
|
+
type: "number | undefined",
|
|
32842
|
+
default: 0,
|
|
32843
|
+
description: "Additional offset to subtract from the keyboard height when avoiding the keyboard.\nThe Screen automatically accounts for the tab bar height when inside a tab navigator,\nbut this prop can be used for other fixed UI elements that occupy space at the bottom.",
|
|
32844
|
+
required: false
|
|
32845
|
+
},
|
|
32799
32846
|
id: {
|
|
32800
32847
|
name: "id",
|
|
32801
32848
|
type: "string | undefined",
|
|
@@ -32858,6 +32905,384 @@ var types_default = {
|
|
|
32858
32905
|
}
|
|
32859
32906
|
}
|
|
32860
32907
|
},
|
|
32908
|
+
ScrollView: {
|
|
32909
|
+
name: "ScrollView",
|
|
32910
|
+
propsInterface: "ScrollViewProps",
|
|
32911
|
+
props: [
|
|
32912
|
+
{
|
|
32913
|
+
name: "children",
|
|
32914
|
+
type: "React.ReactNode",
|
|
32915
|
+
required: false
|
|
32916
|
+
},
|
|
32917
|
+
{
|
|
32918
|
+
name: "direction",
|
|
32919
|
+
type: 'import("/home/nicho/Development/idealyst-framework/packages/components/src/ScrollView/types").ScrollViewDirection | undefined',
|
|
32920
|
+
required: false,
|
|
32921
|
+
description: "Scroll direction. Defaults to 'vertical'."
|
|
32922
|
+
},
|
|
32923
|
+
{
|
|
32924
|
+
name: "background",
|
|
32925
|
+
type: "string | undefined",
|
|
32926
|
+
required: false,
|
|
32927
|
+
description: "Background variant"
|
|
32928
|
+
},
|
|
32929
|
+
{
|
|
32930
|
+
name: "radius",
|
|
32931
|
+
type: "string | undefined",
|
|
32932
|
+
required: false,
|
|
32933
|
+
description: "Border radius variant"
|
|
32934
|
+
},
|
|
32935
|
+
{
|
|
32936
|
+
name: "border",
|
|
32937
|
+
type: 'import("/home/nicho/Development/idealyst-framework/packages/components/src/ScrollView/types").ScrollViewBorderVariant | undefined',
|
|
32938
|
+
required: false,
|
|
32939
|
+
description: "Border variant"
|
|
32940
|
+
},
|
|
32941
|
+
{
|
|
32942
|
+
name: "backgroundColor",
|
|
32943
|
+
type: "string | undefined",
|
|
32944
|
+
required: false,
|
|
32945
|
+
description: "Custom background color (overrides background variant)"
|
|
32946
|
+
},
|
|
32947
|
+
{
|
|
32948
|
+
name: "borderRadius",
|
|
32949
|
+
type: "number | undefined",
|
|
32950
|
+
required: false,
|
|
32951
|
+
description: "Custom border radius (overrides radius variant)"
|
|
32952
|
+
},
|
|
32953
|
+
{
|
|
32954
|
+
name: "borderWidth",
|
|
32955
|
+
type: "number | undefined",
|
|
32956
|
+
required: false,
|
|
32957
|
+
description: "Custom border width (overrides border variant)"
|
|
32958
|
+
},
|
|
32959
|
+
{
|
|
32960
|
+
name: "borderColor",
|
|
32961
|
+
type: "string | undefined",
|
|
32962
|
+
required: false,
|
|
32963
|
+
description: "Custom border color"
|
|
32964
|
+
},
|
|
32965
|
+
{
|
|
32966
|
+
name: "style",
|
|
32967
|
+
type: 'import("/home/nicho/Development/idealyst-framework/packages/theme/node_modules/react-native/Libraries/StyleSheet/StyleSheet").StyleProp<import("/home/nicho/Development/idealyst-framework/packages/theme/node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes").ViewStyle>',
|
|
32968
|
+
required: false,
|
|
32969
|
+
description: "Additional styles"
|
|
32970
|
+
},
|
|
32971
|
+
{
|
|
32972
|
+
name: "contentContainerStyle",
|
|
32973
|
+
type: 'import("/home/nicho/Development/idealyst-framework/packages/theme/node_modules/react-native/Libraries/StyleSheet/StyleSheet").StyleProp<import("/home/nicho/Development/idealyst-framework/packages/theme/node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes").ViewStyle>',
|
|
32974
|
+
required: false,
|
|
32975
|
+
description: "Styles applied to the content container"
|
|
32976
|
+
},
|
|
32977
|
+
{
|
|
32978
|
+
name: "showsIndicator",
|
|
32979
|
+
type: "boolean | undefined",
|
|
32980
|
+
required: false,
|
|
32981
|
+
description: "Whether to show scroll indicators. Defaults to true."
|
|
32982
|
+
},
|
|
32983
|
+
{
|
|
32984
|
+
name: "pagingEnabled",
|
|
32985
|
+
type: "boolean | undefined",
|
|
32986
|
+
required: false,
|
|
32987
|
+
description: "Whether to enable paging behavior"
|
|
32988
|
+
},
|
|
32989
|
+
{
|
|
32990
|
+
name: "bounces",
|
|
32991
|
+
type: "boolean | undefined",
|
|
32992
|
+
required: false,
|
|
32993
|
+
description: "Whether the scroll view bounces at the edges (iOS). Defaults to true."
|
|
32994
|
+
},
|
|
32995
|
+
{
|
|
32996
|
+
name: "onScroll",
|
|
32997
|
+
type: '((event: import("/home/nicho/Development/idealyst-framework/packages/components/src/ScrollView/types").ScrollEvent) => void) | undefined',
|
|
32998
|
+
required: false,
|
|
32999
|
+
description: "Called continuously as the user scrolls.\nUse `scrollEventThrottle` to control frequency."
|
|
33000
|
+
},
|
|
33001
|
+
{
|
|
33002
|
+
name: "onScrollBegin",
|
|
33003
|
+
type: '((event: import("/home/nicho/Development/idealyst-framework/packages/components/src/ScrollView/types").ScrollEvent) => void) | undefined',
|
|
33004
|
+
required: false,
|
|
33005
|
+
description: "Called when scrolling begins (user starts dragging)."
|
|
33006
|
+
},
|
|
33007
|
+
{
|
|
33008
|
+
name: "onScrollEnd",
|
|
33009
|
+
type: '((event: import("/home/nicho/Development/idealyst-framework/packages/components/src/ScrollView/types").ScrollEvent) => void) | undefined',
|
|
33010
|
+
required: false,
|
|
33011
|
+
description: "Called when scrolling ends (momentum settles or user lifts finger)."
|
|
33012
|
+
},
|
|
33013
|
+
{
|
|
33014
|
+
name: "onEndReached",
|
|
33015
|
+
type: "(() => void) | undefined",
|
|
33016
|
+
required: false,
|
|
33017
|
+
description: "Called when the scroll position reaches the end of the content.\nUseful for infinite scroll / load-more patterns."
|
|
33018
|
+
},
|
|
33019
|
+
{
|
|
33020
|
+
name: "onEndReachedThreshold",
|
|
33021
|
+
type: "number | undefined",
|
|
33022
|
+
required: false,
|
|
33023
|
+
description: "Distance from the end (in pixels) at which onEndReached fires.\nDefaults to 0."
|
|
33024
|
+
},
|
|
33025
|
+
{
|
|
33026
|
+
name: "scrollEventThrottle",
|
|
33027
|
+
type: "number | undefined",
|
|
33028
|
+
required: false,
|
|
33029
|
+
description: "Throttle interval (ms) for onScroll events on native. Defaults to 16 (~60fps)."
|
|
33030
|
+
},
|
|
33031
|
+
{
|
|
33032
|
+
name: "scrollEnabled",
|
|
33033
|
+
type: "boolean | undefined",
|
|
33034
|
+
required: false,
|
|
33035
|
+
description: "Whether scrolling is enabled. Defaults to true."
|
|
33036
|
+
},
|
|
33037
|
+
{
|
|
33038
|
+
name: "keyboardDismissMode",
|
|
33039
|
+
type: '"none" | "on-drag" | "interactive" | undefined',
|
|
33040
|
+
required: false,
|
|
33041
|
+
description: "Whether the keyboard should dismiss on drag."
|
|
33042
|
+
},
|
|
33043
|
+
{
|
|
33044
|
+
name: "testID",
|
|
33045
|
+
type: "string | undefined",
|
|
33046
|
+
required: false,
|
|
33047
|
+
description: "Test ID for testing"
|
|
33048
|
+
},
|
|
33049
|
+
{
|
|
33050
|
+
name: "onLayout",
|
|
33051
|
+
type: '((event: import("/home/nicho/Development/idealyst-framework/packages/components/src/hooks/useWebLayout/types").LayoutChangeEvent) => void) | undefined',
|
|
33052
|
+
required: false,
|
|
33053
|
+
description: "Callback when layout changes"
|
|
33054
|
+
}
|
|
33055
|
+
],
|
|
33056
|
+
typeDefinition: "export interface ScrollViewProps extends ContainerStyleProps {\n children?: ReactNode;\n\n /** Scroll direction. Defaults to 'vertical'. */\n direction?: ScrollViewDirection;\n\n /** Background variant */\n background?: ScrollViewBackgroundVariant;\n\n /** Border radius variant */\n radius?: ScrollViewRadiusVariant;\n\n /** Border variant */\n border?: ScrollViewBorderVariant;\n\n /** Custom background color (overrides background variant) */\n backgroundColor?: string;\n\n /** Custom border radius (overrides radius variant) */\n borderRadius?: number;\n\n /** Custom border width (overrides border variant) */\n borderWidth?: number;\n\n /** Custom border color */\n borderColor?: string;\n\n /** Additional styles */\n style?: StyleProp<ViewStyle>;\n\n /** Styles applied to the content container */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /** Whether to show scroll indicators. Defaults to true. */\n showsIndicator?: boolean;\n\n /** Whether to enable paging behavior */\n pagingEnabled?: boolean;\n\n /** Whether the scroll view bounces at the edges (iOS). Defaults to true. */\n bounces?: boolean;\n\n /**\n * Called continuously as the user scrolls.\n * Use `scrollEventThrottle` to control frequency.\n */\n onScroll?: (event: ScrollEvent) => void;\n\n /**\n * Called when scrolling begins (user starts dragging).\n */\n onScrollBegin?: (event: ScrollEvent) => void;\n\n /**\n * Called when scrolling ends (momentum settles or user lifts finger).\n */\n onScrollEnd?: (event: ScrollEvent) => void;\n\n /**\n * Called when the scroll position reaches the end of the content.\n * Useful for infinite scroll / load-more patterns.\n */\n onEndReached?: () => void;\n\n /**\n * Distance from the end (in pixels) at which onEndReached fires.\n * Defaults to 0.\n */\n onEndReachedThreshold?: number;\n\n /**\n * Throttle interval (ms) for onScroll events on native. Defaults to 16 (~60fps).\n */\n scrollEventThrottle?: number;\n\n /** Whether scrolling is enabled. Defaults to true. */\n scrollEnabled?: boolean;\n\n /** Whether the keyboard should dismiss on drag. */\n keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';\n\n /** Test ID for testing */\n testID?: string;\n\n /** Callback when layout changes */\n onLayout?: (event: LayoutChangeEvent) => void;\n}",
|
|
33057
|
+
relatedTypes: {
|
|
33058
|
+
ScrollViewBackgroundVariant: "export type ScrollViewBackgroundVariant = Surface | 'transparent';",
|
|
33059
|
+
ScrollViewRadiusVariant: "export type ScrollViewRadiusVariant = Size | 'none';",
|
|
33060
|
+
ScrollViewBorderVariant: "export type ScrollViewBorderVariant = 'none' | 'thin' | 'thick';",
|
|
33061
|
+
ScrollViewDirection: "export type ScrollViewDirection = 'vertical' | 'horizontal' | 'both';",
|
|
33062
|
+
ScrollPosition: "export interface ScrollPosition {\n x: number;\n y: number;\n}",
|
|
33063
|
+
ScrollContentSize: "export interface ScrollContentSize {\n width: number;\n height: number;\n}",
|
|
33064
|
+
ScrollLayoutSize: "export interface ScrollLayoutSize {\n width: number;\n height: number;\n}",
|
|
33065
|
+
ScrollEvent: "export interface ScrollEvent {\n /** Current scroll offset */\n position: ScrollPosition;\n /** Size of the scrollable content */\n contentSize: ScrollContentSize;\n /** Size of the visible scroll container */\n layoutSize: ScrollLayoutSize;\n /** Whether the content is scrolled to the end (vertical or horizontal depending on direction) */\n isAtEnd: boolean;\n /** Whether the content is scrolled to the start */\n isAtStart: boolean;\n}",
|
|
33066
|
+
ScrollToOptions: "export interface ScrollToOptions {\n x?: number;\n y?: number;\n animated?: boolean;\n}",
|
|
33067
|
+
ScrollViewRef: "export interface ScrollViewRef {\n /** Scroll to a specific position */\n scrollTo: (options: ScrollToOptions) => void;\n /** Scroll to the end of the content */\n scrollToEnd: (options?: { animated?: boolean }) => void;\n /** Scroll to the top/start of the content */\n scrollToStart: (options?: { animated?: boolean }) => void;\n /** Get current scroll position */\n getScrollPosition: () => ScrollPosition;\n /** Get the underlying native element */\n getInnerElement: () => any;\n}"
|
|
33068
|
+
},
|
|
33069
|
+
registry: {
|
|
33070
|
+
name: "ScrollView",
|
|
33071
|
+
description: "Scrollable container with scroll event abstractions and imperative scroll controls.",
|
|
33072
|
+
props: {
|
|
33073
|
+
direction: {
|
|
33074
|
+
name: "direction",
|
|
33075
|
+
type: "ScrollViewDirection | undefined",
|
|
33076
|
+
values: [
|
|
33077
|
+
"vertical",
|
|
33078
|
+
"horizontal",
|
|
33079
|
+
"both"
|
|
33080
|
+
],
|
|
33081
|
+
description: "Scroll direction. Defaults to 'vertical'.",
|
|
33082
|
+
required: false
|
|
33083
|
+
},
|
|
33084
|
+
background: {
|
|
33085
|
+
name: "background",
|
|
33086
|
+
type: "any",
|
|
33087
|
+
description: "Background variant",
|
|
33088
|
+
required: false
|
|
33089
|
+
},
|
|
33090
|
+
radius: {
|
|
33091
|
+
name: "radius",
|
|
33092
|
+
type: "any",
|
|
33093
|
+
description: "Border radius variant",
|
|
33094
|
+
required: false
|
|
33095
|
+
},
|
|
33096
|
+
border: {
|
|
33097
|
+
name: "border",
|
|
33098
|
+
type: "ScrollViewBorderVariant | undefined",
|
|
33099
|
+
values: [
|
|
33100
|
+
"none",
|
|
33101
|
+
"thin",
|
|
33102
|
+
"thick"
|
|
33103
|
+
],
|
|
33104
|
+
description: "Border variant",
|
|
33105
|
+
required: false
|
|
33106
|
+
},
|
|
33107
|
+
backgroundColor: {
|
|
33108
|
+
name: "backgroundColor",
|
|
33109
|
+
type: "string | undefined",
|
|
33110
|
+
description: "Custom background color (overrides background variant)",
|
|
33111
|
+
required: false
|
|
33112
|
+
},
|
|
33113
|
+
borderRadius: {
|
|
33114
|
+
name: "borderRadius",
|
|
33115
|
+
type: "number | undefined",
|
|
33116
|
+
description: "Custom border radius (overrides radius variant)",
|
|
33117
|
+
required: false
|
|
33118
|
+
},
|
|
33119
|
+
borderWidth: {
|
|
33120
|
+
name: "borderWidth",
|
|
33121
|
+
type: "number | undefined",
|
|
33122
|
+
description: "Custom border width (overrides border variant)",
|
|
33123
|
+
required: false
|
|
33124
|
+
},
|
|
33125
|
+
borderColor: {
|
|
33126
|
+
name: "borderColor",
|
|
33127
|
+
type: "string | undefined",
|
|
33128
|
+
description: "Custom border color",
|
|
33129
|
+
required: false
|
|
33130
|
+
},
|
|
33131
|
+
contentContainerStyle: {
|
|
33132
|
+
name: "contentContainerStyle",
|
|
33133
|
+
type: "any",
|
|
33134
|
+
description: "Styles applied to the content container",
|
|
33135
|
+
required: false
|
|
33136
|
+
},
|
|
33137
|
+
showsIndicator: {
|
|
33138
|
+
name: "showsIndicator",
|
|
33139
|
+
type: "boolean | undefined",
|
|
33140
|
+
values: [
|
|
33141
|
+
"false",
|
|
33142
|
+
"true"
|
|
33143
|
+
],
|
|
33144
|
+
description: "Whether to show scroll indicators. Defaults to true.",
|
|
33145
|
+
required: false
|
|
33146
|
+
},
|
|
33147
|
+
pagingEnabled: {
|
|
33148
|
+
name: "pagingEnabled",
|
|
33149
|
+
type: "boolean | undefined",
|
|
33150
|
+
values: [
|
|
33151
|
+
"false",
|
|
33152
|
+
"true"
|
|
33153
|
+
],
|
|
33154
|
+
description: "Whether to enable paging behavior",
|
|
33155
|
+
required: false
|
|
33156
|
+
},
|
|
33157
|
+
bounces: {
|
|
33158
|
+
name: "bounces",
|
|
33159
|
+
type: "boolean | undefined",
|
|
33160
|
+
values: [
|
|
33161
|
+
"false",
|
|
33162
|
+
"true"
|
|
33163
|
+
],
|
|
33164
|
+
description: "Whether the scroll view bounces at the edges (iOS). Defaults to true.",
|
|
33165
|
+
required: false
|
|
33166
|
+
},
|
|
33167
|
+
onScroll: {
|
|
33168
|
+
name: "onScroll",
|
|
33169
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
33170
|
+
description: "Called continuously as the user scrolls.\nUse `scrollEventThrottle` to control frequency.",
|
|
33171
|
+
required: false
|
|
33172
|
+
},
|
|
33173
|
+
onScrollBegin: {
|
|
33174
|
+
name: "onScrollBegin",
|
|
33175
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
33176
|
+
description: "Called when scrolling begins (user starts dragging).",
|
|
33177
|
+
required: false
|
|
33178
|
+
},
|
|
33179
|
+
onScrollEnd: {
|
|
33180
|
+
name: "onScrollEnd",
|
|
33181
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
33182
|
+
description: "Called when scrolling ends (momentum settles or user lifts finger).",
|
|
33183
|
+
required: false
|
|
33184
|
+
},
|
|
33185
|
+
onEndReached: {
|
|
33186
|
+
name: "onEndReached",
|
|
33187
|
+
type: "(() => void) | undefined",
|
|
33188
|
+
description: "Called when the scroll position reaches the end of the content.\nUseful for infinite scroll / load-more patterns.",
|
|
33189
|
+
required: false
|
|
33190
|
+
},
|
|
33191
|
+
onEndReachedThreshold: {
|
|
33192
|
+
name: "onEndReachedThreshold",
|
|
33193
|
+
type: "number | undefined",
|
|
33194
|
+
description: "Distance from the end (in pixels) at which onEndReached fires.\nDefaults to 0.",
|
|
33195
|
+
required: false
|
|
33196
|
+
},
|
|
33197
|
+
scrollEventThrottle: {
|
|
33198
|
+
name: "scrollEventThrottle",
|
|
33199
|
+
type: "number | undefined",
|
|
33200
|
+
description: "Throttle interval (ms) for onScroll events on native. Defaults to 16 (~60fps).",
|
|
33201
|
+
required: false
|
|
33202
|
+
},
|
|
33203
|
+
scrollEnabled: {
|
|
33204
|
+
name: "scrollEnabled",
|
|
33205
|
+
type: "boolean | undefined",
|
|
33206
|
+
values: [
|
|
33207
|
+
"false",
|
|
33208
|
+
"true"
|
|
33209
|
+
],
|
|
33210
|
+
description: "Whether scrolling is enabled. Defaults to true.",
|
|
33211
|
+
required: false
|
|
33212
|
+
},
|
|
33213
|
+
keyboardDismissMode: {
|
|
33214
|
+
name: "keyboardDismissMode",
|
|
33215
|
+
type: '"none" | "on-drag" | "interactive" | undefined',
|
|
33216
|
+
values: [
|
|
33217
|
+
"none",
|
|
33218
|
+
"on-drag",
|
|
33219
|
+
"interactive"
|
|
33220
|
+
],
|
|
33221
|
+
description: "Whether the keyboard should dismiss on drag.",
|
|
33222
|
+
required: false
|
|
33223
|
+
},
|
|
33224
|
+
id: {
|
|
33225
|
+
name: "id",
|
|
33226
|
+
type: "string | undefined",
|
|
33227
|
+
description: "Unique identifier for the element (maps to id on web, nativeID on native)",
|
|
33228
|
+
required: false
|
|
33229
|
+
},
|
|
33230
|
+
gap: {
|
|
33231
|
+
name: "gap",
|
|
33232
|
+
type: "any",
|
|
33233
|
+
description: "Gap between children (uses theme.sizes.view[size].spacing)",
|
|
33234
|
+
required: false
|
|
33235
|
+
},
|
|
33236
|
+
spacing: {
|
|
33237
|
+
name: "spacing",
|
|
33238
|
+
type: "any",
|
|
33239
|
+
description: "Alias for gap - spacing between children",
|
|
33240
|
+
required: false
|
|
33241
|
+
},
|
|
33242
|
+
padding: {
|
|
33243
|
+
name: "padding",
|
|
33244
|
+
type: "any",
|
|
33245
|
+
description: "Padding on all sides (uses theme.sizes.view[size].padding)",
|
|
33246
|
+
required: false
|
|
33247
|
+
},
|
|
33248
|
+
paddingVertical: {
|
|
33249
|
+
name: "paddingVertical",
|
|
33250
|
+
type: "any",
|
|
33251
|
+
description: "Vertical padding (top + bottom)",
|
|
33252
|
+
required: false
|
|
33253
|
+
},
|
|
33254
|
+
paddingHorizontal: {
|
|
33255
|
+
name: "paddingHorizontal",
|
|
33256
|
+
type: "any",
|
|
33257
|
+
description: "Horizontal padding (left + right)",
|
|
33258
|
+
required: false
|
|
33259
|
+
},
|
|
33260
|
+
margin: {
|
|
33261
|
+
name: "margin",
|
|
33262
|
+
type: "any",
|
|
33263
|
+
description: "Margin on all sides (uses theme.sizes.view[size].spacing)",
|
|
33264
|
+
required: false
|
|
33265
|
+
},
|
|
33266
|
+
marginVertical: {
|
|
33267
|
+
name: "marginVertical",
|
|
33268
|
+
type: "any",
|
|
33269
|
+
description: "Vertical margin (top + bottom)",
|
|
33270
|
+
required: false
|
|
33271
|
+
},
|
|
33272
|
+
marginHorizontal: {
|
|
33273
|
+
name: "marginHorizontal",
|
|
33274
|
+
type: "any",
|
|
33275
|
+
description: "Horizontal margin (left + right)",
|
|
33276
|
+
required: false
|
|
33277
|
+
}
|
|
33278
|
+
},
|
|
33279
|
+
category: "display",
|
|
33280
|
+
filePath: "../components/src/ScrollView",
|
|
33281
|
+
sampleProps: {
|
|
33282
|
+
children: "'Scrollable content'"
|
|
33283
|
+
}
|
|
33284
|
+
}
|
|
33285
|
+
},
|
|
32861
33286
|
Select: {
|
|
32862
33287
|
name: "Select",
|
|
32863
33288
|
propsInterface: "SelectProps",
|
|
@@ -34366,6 +34791,12 @@ var types_default = {
|
|
|
34366
34791
|
type: "boolean | undefined",
|
|
34367
34792
|
required: false
|
|
34368
34793
|
},
|
|
34794
|
+
{
|
|
34795
|
+
name: "fill",
|
|
34796
|
+
type: "boolean | undefined",
|
|
34797
|
+
required: false,
|
|
34798
|
+
description: "When true, the textarea expands to fill available vertical space using flex.\nOverrides `rows` and `autoGrow` height logic. All container layers get `flex: 1`."
|
|
34799
|
+
},
|
|
34369
34800
|
{
|
|
34370
34801
|
name: "maxLength",
|
|
34371
34802
|
type: "number | undefined",
|
|
@@ -34428,7 +34859,7 @@ var types_default = {
|
|
|
34428
34859
|
required: false
|
|
34429
34860
|
}
|
|
34430
34861
|
],
|
|
34431
|
-
typeDefinition: "export interface TextAreaProps extends FormInputStyleProps, FormAccessibilityProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n /**\n * Called when a key is pressed while the textarea is focused.\n * Includes modifier key states (ctrl, shift, alt, meta).\n * Web only - no-op on native.\n */\n onKeyDown?: (event: KeyboardEventData) => void;\n placeholder?: string;\n disabled?: boolean;\n rows?: number;\n minHeight?: number;\n maxHeight?: number;\n autoGrow?: boolean;\n maxLength?: number;\n label?: string;\n error?: string;\n helperText?: string;\n resize?: TextAreaResizeVariant;\n showCharacterCount?: boolean;\n intent?: TextAreaIntentVariant;\n size?: TextAreaSizeVariant;\n /**\n * Visual style type of the textarea\n * @default 'outlined'\n */\n type?: TextAreaType;\n style?: StyleProp<ViewStyle>;\n textareaStyle?: StyleProp<TextStyle>;\n testID?: string;\n}",
|
|
34862
|
+
typeDefinition: "export interface TextAreaProps extends FormInputStyleProps, FormAccessibilityProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n /**\n * Called when a key is pressed while the textarea is focused.\n * Includes modifier key states (ctrl, shift, alt, meta).\n * Web only - no-op on native.\n */\n onKeyDown?: (event: KeyboardEventData) => void;\n placeholder?: string;\n disabled?: boolean;\n rows?: number;\n minHeight?: number;\n maxHeight?: number;\n autoGrow?: boolean;\n /**\n * When true, the textarea expands to fill available vertical space using flex.\n * Overrides `rows` and `autoGrow` height logic. All container layers get `flex: 1`.\n */\n fill?: boolean;\n maxLength?: number;\n label?: string;\n error?: string;\n helperText?: string;\n resize?: TextAreaResizeVariant;\n showCharacterCount?: boolean;\n intent?: TextAreaIntentVariant;\n size?: TextAreaSizeVariant;\n /**\n * Visual style type of the textarea\n * @default 'outlined'\n */\n type?: TextAreaType;\n style?: StyleProp<ViewStyle>;\n textareaStyle?: StyleProp<TextStyle>;\n testID?: string;\n}",
|
|
34432
34863
|
relatedTypes: {
|
|
34433
34864
|
TextAreaIntentVariant: "export type TextAreaIntentVariant = Intent;",
|
|
34434
34865
|
TextAreaSizeVariant: "export type TextAreaSizeVariant = Size;",
|
|
@@ -34498,6 +34929,16 @@ var types_default = {
|
|
|
34498
34929
|
],
|
|
34499
34930
|
required: false
|
|
34500
34931
|
},
|
|
34932
|
+
fill: {
|
|
34933
|
+
name: "fill",
|
|
34934
|
+
type: "boolean | undefined",
|
|
34935
|
+
values: [
|
|
34936
|
+
"false",
|
|
34937
|
+
"true"
|
|
34938
|
+
],
|
|
34939
|
+
description: "When true, the textarea expands to fill available vertical space using flex.\nOverrides `rows` and `autoGrow` height logic. All container layers get `flex: 1`.",
|
|
34940
|
+
required: false
|
|
34941
|
+
},
|
|
34501
34942
|
maxLength: {
|
|
34502
34943
|
name: "maxLength",
|
|
34503
34944
|
type: "number | undefined",
|
|
@@ -35572,7 +36013,7 @@ var types_default = {
|
|
|
35572
36013
|
name: "scrollable",
|
|
35573
36014
|
type: "boolean | undefined",
|
|
35574
36015
|
required: false,
|
|
35575
|
-
description: "
|
|
36016
|
+
description: ""
|
|
35576
36017
|
},
|
|
35577
36018
|
{
|
|
35578
36019
|
name: "testID",
|
|
@@ -35587,7 +36028,7 @@ var types_default = {
|
|
|
35587
36028
|
description: "Callback when the view's layout changes.\nCalled with layout information (x, y, width, height) when the component\nmounts or when its dimensions change."
|
|
35588
36029
|
}
|
|
35589
36030
|
],
|
|
35590
|
-
typeDefinition: "export interface ViewProps extends ContainerStyleProps {\n /**\n * The content to display inside the view\n */\n children?: ReactNode;\n\n /**\n * Background variant\n */\n background?: ViewBackgroundVariant;\n\n /**\n * Border radius variant\n */\n radius?: ViewRadiusVariant;\n\n /**\n * Border variant\n */\n border?: ViewBorderVariant;\n\n /**\n * Custom background color (overrides background variant)\n */\n backgroundColor?: string;\n\n /**\n * Custom border radius (overrides radius variant)\n */\n borderRadius?: number;\n\n /**\n * Custom border width (overrides border variant)\n */\n borderWidth?: number;\n\n /**\n * Custom border color\n */\n borderColor?: string;\n\n /**\n * Additional styles. Supports responsive values for any property.\n * @example\n * ```tsx\n * // Responsive flexDirection\n * <View style={{ flexDirection: { xs: 'column', md: 'row' } }} />\n *\n * // Mix responsive and static values\n * <View style={{ padding: { xs: 8, lg: 16 }, backgroundColor: '#fff' }} />\n * ```\n */\n style?: ViewStyleProp;\n\n /**\n * Enable scrollable content.\n * - Native: Wraps children in a ScrollView\n * - Web: Renders a wrapper + content structure where the wrapper fills available\n * space (or uses explicit dimensions) and content is absolutely positioned with\n * overflow:auto. Sizing/margin styles go to wrapper, visual styles to content.\n */\n scrollable?: boolean;\n\n /**\n * Test ID for testing\n */\n testID?: string;\n\n /**\n * Callback when the view's layout changes.\n * Called with layout information (x, y, width, height) when the component\n * mounts or when its dimensions change.\n */\n onLayout?: (event: LayoutChangeEvent) => void;\n}",
|
|
36031
|
+
typeDefinition: "export interface ViewProps extends ContainerStyleProps {\n /**\n * The content to display inside the view\n */\n children?: ReactNode;\n\n /**\n * Background variant\n */\n background?: ViewBackgroundVariant;\n\n /**\n * Border radius variant\n */\n radius?: ViewRadiusVariant;\n\n /**\n * Border variant\n */\n border?: ViewBorderVariant;\n\n /**\n * Custom background color (overrides background variant)\n */\n backgroundColor?: string;\n\n /**\n * Custom border radius (overrides radius variant)\n */\n borderRadius?: number;\n\n /**\n * Custom border width (overrides border variant)\n */\n borderWidth?: number;\n\n /**\n * Custom border color\n */\n borderColor?: string;\n\n /**\n * Additional styles. Supports responsive values for any property.\n * @example\n * ```tsx\n * // Responsive flexDirection\n * <View style={{ flexDirection: { xs: 'column', md: 'row' } }} />\n *\n * // Mix responsive and static values\n * <View style={{ padding: { xs: 8, lg: 16 }, backgroundColor: '#fff' }} />\n * ```\n */\n style?: ViewStyleProp;\n\n /**\n * @deprecated Use the ScrollView component instead, which provides scroll event\n * abstractions (onScroll, onScrollBegin, onScrollEnd, onEndReached) and imperative\n * scroll controls (scrollTo, scrollToEnd, scrollToStart) via ref.\n *\n * Enable scrollable content.\n * - Native: Wraps children in a ScrollView\n * - Web: Renders a wrapper + content structure where the wrapper fills available\n * space (or uses explicit dimensions) and content is absolutely positioned with\n * overflow:auto. Sizing/margin styles go to wrapper, visual styles to content.\n */\n scrollable?: boolean;\n\n /**\n * Test ID for testing\n */\n testID?: string;\n\n /**\n * Callback when the view's layout changes.\n * Called with layout information (x, y, width, height) when the component\n * mounts or when its dimensions change.\n */\n onLayout?: (event: LayoutChangeEvent) => void;\n}",
|
|
35591
36032
|
relatedTypes: {
|
|
35592
36033
|
ViewStyleProp: "export type ViewStyleProp = StyleProp<ViewStyle> | ResponsiveStyle | React.CSSProperties;",
|
|
35593
36034
|
ViewBackgroundVariant: "export type ViewBackgroundVariant = Surface | 'transparent';",
|
|
@@ -35652,7 +36093,6 @@ var types_default = {
|
|
|
35652
36093
|
"false",
|
|
35653
36094
|
"true"
|
|
35654
36095
|
],
|
|
35655
|
-
description: "Enable scrollable content.\n- Native: Wraps children in a ScrollView\n- Web: Renders a wrapper + content structure where the wrapper fills available\n space (or uses explicit dimensions) and content is absolutely positioned with\n overflow:auto. Sizing/margin styles go to wrapper, visual styles to content.",
|
|
35656
36096
|
required: false
|
|
35657
36097
|
},
|
|
35658
36098
|
id: {
|
|
@@ -68063,6 +68503,13 @@ var types_default = {
|
|
|
68063
68503
|
description: "Whether to avoid the keyboard on native platforms (iOS/Android).\nWhen enabled, content will shift up when the keyboard appears.",
|
|
68064
68504
|
required: false
|
|
68065
68505
|
},
|
|
68506
|
+
keyboardAvoidingOffset: {
|
|
68507
|
+
name: "keyboardAvoidingOffset",
|
|
68508
|
+
type: "number | undefined",
|
|
68509
|
+
default: 0,
|
|
68510
|
+
description: "Additional offset to subtract from the keyboard height when avoiding the keyboard.\nThe Screen automatically accounts for the tab bar height when inside a tab navigator,\nbut this prop can be used for other fixed UI elements that occupy space at the bottom.",
|
|
68511
|
+
required: false
|
|
68512
|
+
},
|
|
68066
68513
|
id: {
|
|
68067
68514
|
name: "id",
|
|
68068
68515
|
type: "string | undefined",
|
|
@@ -68124,6 +68571,222 @@ var types_default = {
|
|
|
68124
68571
|
children: "'Screen content'"
|
|
68125
68572
|
}
|
|
68126
68573
|
},
|
|
68574
|
+
ScrollView: {
|
|
68575
|
+
name: "ScrollView",
|
|
68576
|
+
description: "Scrollable container with scroll event abstractions and imperative scroll controls.",
|
|
68577
|
+
props: {
|
|
68578
|
+
direction: {
|
|
68579
|
+
name: "direction",
|
|
68580
|
+
type: "ScrollViewDirection | undefined",
|
|
68581
|
+
values: [
|
|
68582
|
+
"vertical",
|
|
68583
|
+
"horizontal",
|
|
68584
|
+
"both"
|
|
68585
|
+
],
|
|
68586
|
+
description: "Scroll direction. Defaults to 'vertical'.",
|
|
68587
|
+
required: false
|
|
68588
|
+
},
|
|
68589
|
+
background: {
|
|
68590
|
+
name: "background",
|
|
68591
|
+
type: "any",
|
|
68592
|
+
description: "Background variant",
|
|
68593
|
+
required: false
|
|
68594
|
+
},
|
|
68595
|
+
radius: {
|
|
68596
|
+
name: "radius",
|
|
68597
|
+
type: "any",
|
|
68598
|
+
description: "Border radius variant",
|
|
68599
|
+
required: false
|
|
68600
|
+
},
|
|
68601
|
+
border: {
|
|
68602
|
+
name: "border",
|
|
68603
|
+
type: "ScrollViewBorderVariant | undefined",
|
|
68604
|
+
values: [
|
|
68605
|
+
"none",
|
|
68606
|
+
"thin",
|
|
68607
|
+
"thick"
|
|
68608
|
+
],
|
|
68609
|
+
description: "Border variant",
|
|
68610
|
+
required: false
|
|
68611
|
+
},
|
|
68612
|
+
backgroundColor: {
|
|
68613
|
+
name: "backgroundColor",
|
|
68614
|
+
type: "string | undefined",
|
|
68615
|
+
description: "Custom background color (overrides background variant)",
|
|
68616
|
+
required: false
|
|
68617
|
+
},
|
|
68618
|
+
borderRadius: {
|
|
68619
|
+
name: "borderRadius",
|
|
68620
|
+
type: "number | undefined",
|
|
68621
|
+
description: "Custom border radius (overrides radius variant)",
|
|
68622
|
+
required: false
|
|
68623
|
+
},
|
|
68624
|
+
borderWidth: {
|
|
68625
|
+
name: "borderWidth",
|
|
68626
|
+
type: "number | undefined",
|
|
68627
|
+
description: "Custom border width (overrides border variant)",
|
|
68628
|
+
required: false
|
|
68629
|
+
},
|
|
68630
|
+
borderColor: {
|
|
68631
|
+
name: "borderColor",
|
|
68632
|
+
type: "string | undefined",
|
|
68633
|
+
description: "Custom border color",
|
|
68634
|
+
required: false
|
|
68635
|
+
},
|
|
68636
|
+
contentContainerStyle: {
|
|
68637
|
+
name: "contentContainerStyle",
|
|
68638
|
+
type: "any",
|
|
68639
|
+
description: "Styles applied to the content container",
|
|
68640
|
+
required: false
|
|
68641
|
+
},
|
|
68642
|
+
showsIndicator: {
|
|
68643
|
+
name: "showsIndicator",
|
|
68644
|
+
type: "boolean | undefined",
|
|
68645
|
+
values: [
|
|
68646
|
+
"false",
|
|
68647
|
+
"true"
|
|
68648
|
+
],
|
|
68649
|
+
description: "Whether to show scroll indicators. Defaults to true.",
|
|
68650
|
+
required: false
|
|
68651
|
+
},
|
|
68652
|
+
pagingEnabled: {
|
|
68653
|
+
name: "pagingEnabled",
|
|
68654
|
+
type: "boolean | undefined",
|
|
68655
|
+
values: [
|
|
68656
|
+
"false",
|
|
68657
|
+
"true"
|
|
68658
|
+
],
|
|
68659
|
+
description: "Whether to enable paging behavior",
|
|
68660
|
+
required: false
|
|
68661
|
+
},
|
|
68662
|
+
bounces: {
|
|
68663
|
+
name: "bounces",
|
|
68664
|
+
type: "boolean | undefined",
|
|
68665
|
+
values: [
|
|
68666
|
+
"false",
|
|
68667
|
+
"true"
|
|
68668
|
+
],
|
|
68669
|
+
description: "Whether the scroll view bounces at the edges (iOS). Defaults to true.",
|
|
68670
|
+
required: false
|
|
68671
|
+
},
|
|
68672
|
+
onScroll: {
|
|
68673
|
+
name: "onScroll",
|
|
68674
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
68675
|
+
description: "Called continuously as the user scrolls.\nUse `scrollEventThrottle` to control frequency.",
|
|
68676
|
+
required: false
|
|
68677
|
+
},
|
|
68678
|
+
onScrollBegin: {
|
|
68679
|
+
name: "onScrollBegin",
|
|
68680
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
68681
|
+
description: "Called when scrolling begins (user starts dragging).",
|
|
68682
|
+
required: false
|
|
68683
|
+
},
|
|
68684
|
+
onScrollEnd: {
|
|
68685
|
+
name: "onScrollEnd",
|
|
68686
|
+
type: "((event: ScrollEvent) => void) | undefined",
|
|
68687
|
+
description: "Called when scrolling ends (momentum settles or user lifts finger).",
|
|
68688
|
+
required: false
|
|
68689
|
+
},
|
|
68690
|
+
onEndReached: {
|
|
68691
|
+
name: "onEndReached",
|
|
68692
|
+
type: "(() => void) | undefined",
|
|
68693
|
+
description: "Called when the scroll position reaches the end of the content.\nUseful for infinite scroll / load-more patterns.",
|
|
68694
|
+
required: false
|
|
68695
|
+
},
|
|
68696
|
+
onEndReachedThreshold: {
|
|
68697
|
+
name: "onEndReachedThreshold",
|
|
68698
|
+
type: "number | undefined",
|
|
68699
|
+
description: "Distance from the end (in pixels) at which onEndReached fires.\nDefaults to 0.",
|
|
68700
|
+
required: false
|
|
68701
|
+
},
|
|
68702
|
+
scrollEventThrottle: {
|
|
68703
|
+
name: "scrollEventThrottle",
|
|
68704
|
+
type: "number | undefined",
|
|
68705
|
+
description: "Throttle interval (ms) for onScroll events on native. Defaults to 16 (~60fps).",
|
|
68706
|
+
required: false
|
|
68707
|
+
},
|
|
68708
|
+
scrollEnabled: {
|
|
68709
|
+
name: "scrollEnabled",
|
|
68710
|
+
type: "boolean | undefined",
|
|
68711
|
+
values: [
|
|
68712
|
+
"false",
|
|
68713
|
+
"true"
|
|
68714
|
+
],
|
|
68715
|
+
description: "Whether scrolling is enabled. Defaults to true.",
|
|
68716
|
+
required: false
|
|
68717
|
+
},
|
|
68718
|
+
keyboardDismissMode: {
|
|
68719
|
+
name: "keyboardDismissMode",
|
|
68720
|
+
type: '"none" | "on-drag" | "interactive" | undefined',
|
|
68721
|
+
values: [
|
|
68722
|
+
"none",
|
|
68723
|
+
"on-drag",
|
|
68724
|
+
"interactive"
|
|
68725
|
+
],
|
|
68726
|
+
description: "Whether the keyboard should dismiss on drag.",
|
|
68727
|
+
required: false
|
|
68728
|
+
},
|
|
68729
|
+
id: {
|
|
68730
|
+
name: "id",
|
|
68731
|
+
type: "string | undefined",
|
|
68732
|
+
description: "Unique identifier for the element (maps to id on web, nativeID on native)",
|
|
68733
|
+
required: false
|
|
68734
|
+
},
|
|
68735
|
+
gap: {
|
|
68736
|
+
name: "gap",
|
|
68737
|
+
type: "any",
|
|
68738
|
+
description: "Gap between children (uses theme.sizes.view[size].spacing)",
|
|
68739
|
+
required: false
|
|
68740
|
+
},
|
|
68741
|
+
spacing: {
|
|
68742
|
+
name: "spacing",
|
|
68743
|
+
type: "any",
|
|
68744
|
+
description: "Alias for gap - spacing between children",
|
|
68745
|
+
required: false
|
|
68746
|
+
},
|
|
68747
|
+
padding: {
|
|
68748
|
+
name: "padding",
|
|
68749
|
+
type: "any",
|
|
68750
|
+
description: "Padding on all sides (uses theme.sizes.view[size].padding)",
|
|
68751
|
+
required: false
|
|
68752
|
+
},
|
|
68753
|
+
paddingVertical: {
|
|
68754
|
+
name: "paddingVertical",
|
|
68755
|
+
type: "any",
|
|
68756
|
+
description: "Vertical padding (top + bottom)",
|
|
68757
|
+
required: false
|
|
68758
|
+
},
|
|
68759
|
+
paddingHorizontal: {
|
|
68760
|
+
name: "paddingHorizontal",
|
|
68761
|
+
type: "any",
|
|
68762
|
+
description: "Horizontal padding (left + right)",
|
|
68763
|
+
required: false
|
|
68764
|
+
},
|
|
68765
|
+
margin: {
|
|
68766
|
+
name: "margin",
|
|
68767
|
+
type: "any",
|
|
68768
|
+
description: "Margin on all sides (uses theme.sizes.view[size].spacing)",
|
|
68769
|
+
required: false
|
|
68770
|
+
},
|
|
68771
|
+
marginVertical: {
|
|
68772
|
+
name: "marginVertical",
|
|
68773
|
+
type: "any",
|
|
68774
|
+
description: "Vertical margin (top + bottom)",
|
|
68775
|
+
required: false
|
|
68776
|
+
},
|
|
68777
|
+
marginHorizontal: {
|
|
68778
|
+
name: "marginHorizontal",
|
|
68779
|
+
type: "any",
|
|
68780
|
+
description: "Horizontal margin (left + right)",
|
|
68781
|
+
required: false
|
|
68782
|
+
}
|
|
68783
|
+
},
|
|
68784
|
+
category: "display",
|
|
68785
|
+
filePath: "../components/src/ScrollView",
|
|
68786
|
+
sampleProps: {
|
|
68787
|
+
children: "'Scrollable content'"
|
|
68788
|
+
}
|
|
68789
|
+
},
|
|
68127
68790
|
Select: {
|
|
68128
68791
|
name: "Select",
|
|
68129
68792
|
description: "Dropdown selection component for choosing from a list of options.\nSupports searchable filtering on web and native presentation modes on iOS.",
|
|
@@ -69074,6 +69737,16 @@ var types_default = {
|
|
|
69074
69737
|
],
|
|
69075
69738
|
required: false
|
|
69076
69739
|
},
|
|
69740
|
+
fill: {
|
|
69741
|
+
name: "fill",
|
|
69742
|
+
type: "boolean | undefined",
|
|
69743
|
+
values: [
|
|
69744
|
+
"false",
|
|
69745
|
+
"true"
|
|
69746
|
+
],
|
|
69747
|
+
description: "When true, the textarea expands to fill available vertical space using flex.\nOverrides `rows` and `autoGrow` height logic. All container layers get `flex: 1`.",
|
|
69748
|
+
required: false
|
|
69749
|
+
},
|
|
69077
69750
|
maxLength: {
|
|
69078
69751
|
name: "maxLength",
|
|
69079
69752
|
type: "number | undefined",
|
|
@@ -69671,7 +70344,6 @@ var types_default = {
|
|
|
69671
70344
|
"false",
|
|
69672
70345
|
"true"
|
|
69673
70346
|
],
|
|
69674
|
-
description: "Enable scrollable content.\n- Native: Wraps children in a ScrollView\n- Web: Renders a wrapper + content structure where the wrapper fills available\n space (or uses explicit dimensions) and content is absolutely positioned with\n overflow:auto. Sizing/margin styles go to wrapper, visual styles to content.",
|
|
69675
70347
|
required: false
|
|
69676
70348
|
},
|
|
69677
70349
|
id: {
|
|
@@ -70370,7 +71042,12 @@ function postProcessComponentTypes(componentName, result) {
|
|
|
70370
71042
|
}
|
|
70371
71043
|
if (componentName.toLowerCase() === "view") {
|
|
70372
71044
|
if (typeof result === "object" && result !== null) {
|
|
70373
|
-
result.usageNote = "View spacing shorthand props: padding, paddingVertical, paddingHorizontal, margin, marginVertical, marginHorizontal, gap/spacing. These accept Size values (xs, sm, md, lg, xl). Do NOT use paddingTop, paddingBottom, paddingLeft, paddingRight, marginTop, marginBottom, marginLeft, marginRight as shorthand props \u2014 they do NOT exist and will cause TS2353. For single-side spacing use style={{ paddingTop: 16 }}. View does NOT have a `pointerEvents` JSX prop. Use style={{ pointerEvents: 'none' }} instead.";
|
|
71045
|
+
result.usageNote = "View spacing shorthand props: padding, paddingVertical, paddingHorizontal, margin, marginVertical, marginHorizontal, gap/spacing. These accept Size values (xs, sm, md, lg, xl). Do NOT use paddingTop, paddingBottom, paddingLeft, paddingRight, marginTop, marginBottom, marginLeft, marginRight as shorthand props \u2014 they do NOT exist and will cause TS2353. For single-side spacing use style={{ paddingTop: 16 }}. View does NOT have a `pointerEvents` JSX prop. Use style={{ pointerEvents: 'none' }} instead. **For scrollable content, use `<ScrollView>` from @idealyst/components** (NOT `<View scrollable>` which is deprecated). ScrollView supports direction ('vertical'|'horizontal'|'both'), scroll callbacks (onScroll, onEndReached), and imperative controls via ref (scrollTo, scrollToEnd, scrollToStart).";
|
|
71046
|
+
}
|
|
71047
|
+
}
|
|
71048
|
+
if (componentName.toLowerCase() === "scrollview") {
|
|
71049
|
+
if (typeof result === "object" && result !== null) {
|
|
71050
|
+
result.usageNote = "ScrollView is the replacement for the deprecated `<View scrollable>` pattern. Import from @idealyst/components: `import { ScrollView } from '@idealyst/components'`. Key props: direction ('vertical'|'horizontal'|'both'), onScroll, onScrollBegin, onScrollEnd, onEndReached (infinite scroll), showsIndicator, pagingEnabled, bounces, scrollEnabled, keyboardDismissMode. Accepts same spacing shorthand props as View: padding, paddingVertical, paddingHorizontal, gap, margin, etc. Imperative ref (ScrollViewRef): scrollTo({x,y,animated}), scrollToEnd(), scrollToStart(), getScrollPosition(). Use `contentContainerStyle` for inner content styling (e.g., gap between items). ScrollView needs bounded parent height \u2014 wrap in a flex:1 container or give explicit height. Example: `<ScrollView padding=\"md\" gap=\"sm\" onEndReached={loadMore}>{items.map(...)}</ScrollView>`";
|
|
70374
71051
|
}
|
|
70375
71052
|
}
|
|
70376
71053
|
if (componentName.toLowerCase() === "textarea") {
|
|
@@ -70378,6 +71055,11 @@ function postProcessComponentTypes(componentName, result) {
|
|
|
70378
71055
|
result.usageNote = "TextArea has a DIFFERENT API from TextInput. TextArea uses onChange (not onChangeText) and does NOT have onBlur. TextArea DOES support label, error, and rows props (TextInput does NOT support label/error). TextArea supports `fill` prop: when true, all container layers get flex: 1 so the textarea expands to fill available vertical space (useful inside Dialog with avoidKeyboard). Always call get_component_types('TextArea') separately \u2014 do NOT assume it shares TextInput's props.";
|
|
70379
71056
|
}
|
|
70380
71057
|
}
|
|
71058
|
+
if (componentName.toLowerCase() === "table") {
|
|
71059
|
+
if (typeof result === "object" && result !== null) {
|
|
71060
|
+
result.usageNote = "Table column `title` accepts ReactNode \u2014 you can render icons, styled text, or any element as the column header. Table column `footer` accepts `ReactNode | ((data: T[]) => ReactNode)`. Use static ReactNode for labels (e.g., 'Total'), or a callback function for computed values (e.g., `(data) => '$' + data.reduce((sum, r) => sum + r.price, 0).toFixed(2)`). The footer row only renders when at least one column has a `footer` defined \u2014 columns without `footer` render empty cells. Table does NOT have compound components \u2014 no Table.Header, Table.Body, Table.Footer. Use the `columns` prop with `title` and `footer` fields.";
|
|
71061
|
+
}
|
|
71062
|
+
}
|
|
70381
71063
|
if (componentName.toLowerCase() === "image") {
|
|
70382
71064
|
if (typeof result === "object" && result !== null) {
|
|
70383
71065
|
result.usageNote = "Image uses `objectFit` (CSS convention) \u2014 NOT `resizeMode` (React Native convention). Valid objectFit values: 'contain', 'cover', 'fill', 'none', 'scale-down'. Image uses `source` prop (accepts URL string or ImageSourcePropType) \u2014 NOT `src`. Example: <Image source=\"https://example.com/photo.jpg\" objectFit=\"cover\" width={200} height={200} />";
|
|
@@ -70385,7 +71067,7 @@ function postProcessComponentTypes(componentName, result) {
|
|
|
70385
71067
|
}
|
|
70386
71068
|
if (componentName.toLowerCase() === "icon") {
|
|
70387
71069
|
if (typeof result === "object" && result !== null) {
|
|
70388
|
-
result.usageNote = "Icon color props: Use `intent` for semantic coloring (primary, danger, success, etc.) \u2014 renders the icon in the intent's primary color. Use `textColor` for text-semantic coloring (primary, secondary, tertiary, inverse) \u2014 renders the icon using theme.colors.text[textColor]. Use `color` for
|
|
71070
|
+
result.usageNote = "Icon color props: Use `intent` for semantic coloring (primary, danger, success, etc.) \u2014 renders the icon in the intent's primary color. Use `textColor` for text-semantic coloring (primary, secondary, tertiary, inverse) \u2014 renders the icon using theme.colors.text[textColor]. Use `color` for palette colors (e.g., 'primary', 'blue.500'). **CRITICAL: `color` and `textColor` are MUTUALLY EXCLUSIVE (discriminated union).** NEVER pass both \u2014 even conditionally with undefined values. Use one or the other. WRONG: `<Icon name='x' color={cond ? 'primary' : undefined} textColor={cond ? undefined : 'secondary'} />` \u2014 causes TS2322. RIGHT: `<Icon name='x' color={isActive ? 'primary' : 'neutral.400'} />` or use separate JSX branches.";
|
|
70389
71071
|
}
|
|
70390
71072
|
}
|
|
70391
71073
|
if (componentName.toLowerCase() === "badge") {
|