@campxdev/react-native-blueprint 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +358 -0
- package/lib/module/app/_layout.js +23 -0
- package/lib/module/app/_layout.js.map +1 -0
- package/lib/module/assets/icons/weather_icons/drizzle.png +0 -0
- package/lib/module/assets/icons/weather_icons/foggy.png +0 -0
- package/lib/module/assets/icons/weather_icons/freezing_rain.png +0 -0
- package/lib/module/assets/icons/weather_icons/partly_cloudy.png +0 -0
- package/lib/module/assets/icons/weather_icons/rainy.png +0 -0
- package/lib/module/assets/icons/weather_icons/showers.png +0 -0
- package/lib/module/assets/icons/weather_icons/sunny_weather.png +0 -0
- package/lib/module/assets/icons/weather_icons/thunderstorm.png +0 -0
- package/lib/module/assets/icons/weather_icons/thunderstorm_hail.png +0 -0
- package/lib/module/components/theme-config.js +265 -0
- package/lib/module/components/theme-config.js.map +1 -0
- package/lib/module/components/ui/Accordion.js +228 -0
- package/lib/module/components/ui/Accordion.js.map +1 -0
- package/lib/module/components/ui/Alert-Dialog.js +266 -0
- package/lib/module/components/ui/Alert-Dialog.js.map +1 -0
- package/lib/module/components/ui/Alert.js +107 -0
- package/lib/module/components/ui/Alert.js.map +1 -0
- package/lib/module/components/ui/AppBar.js +403 -0
- package/lib/module/components/ui/AppBar.js.map +1 -0
- package/lib/module/components/ui/Aspect-Ratio.js +27 -0
- package/lib/module/components/ui/Aspect-Ratio.js.map +1 -0
- package/lib/module/components/ui/Avatar.js +97 -0
- package/lib/module/components/ui/Avatar.js.map +1 -0
- package/lib/module/components/ui/Badge.js +127 -0
- package/lib/module/components/ui/Badge.js.map +1 -0
- package/lib/module/components/ui/Bottom-Sheet.js +144 -0
- package/lib/module/components/ui/Bottom-Sheet.js.map +1 -0
- package/lib/module/components/ui/Button.js +88 -0
- package/lib/module/components/ui/Button.js.map +1 -0
- package/lib/module/components/ui/Card.js +176 -0
- package/lib/module/components/ui/Card.js.map +1 -0
- package/lib/module/components/ui/Checkbox.js +65 -0
- package/lib/module/components/ui/Checkbox.js.map +1 -0
- package/lib/module/components/ui/Collapsible.js +42 -0
- package/lib/module/components/ui/Collapsible.js.map +1 -0
- package/lib/module/components/ui/Context-Menu.js +287 -0
- package/lib/module/components/ui/Context-Menu.js.map +1 -0
- package/lib/module/components/ui/Custom-Card.js +202 -0
- package/lib/module/components/ui/Custom-Card.js.map +1 -0
- package/lib/module/components/ui/Dialog.js +202 -0
- package/lib/module/components/ui/Dialog.js.map +1 -0
- package/lib/module/components/ui/Dropdown-Menu.js +421 -0
- package/lib/module/components/ui/Dropdown-Menu.js.map +1 -0
- package/lib/module/components/ui/Floating-Action.js +50 -0
- package/lib/module/components/ui/Floating-Action.js.map +1 -0
- package/lib/module/components/ui/Greeting-Card.js +392 -0
- package/lib/module/components/ui/Greeting-Card.js.map +1 -0
- package/lib/module/components/ui/Hover-Card.js +96 -0
- package/lib/module/components/ui/Hover-Card.js.map +1 -0
- package/lib/module/components/ui/Icon.js +73 -0
- package/lib/module/components/ui/Icon.js.map +1 -0
- package/lib/module/components/ui/Input.js +74 -0
- package/lib/module/components/ui/Input.js.map +1 -0
- package/lib/module/components/ui/Label.js +44 -0
- package/lib/module/components/ui/Label.js.map +1 -0
- package/lib/module/components/ui/Menubar.js +375 -0
- package/lib/module/components/ui/Menubar.js.map +1 -0
- package/lib/module/components/ui/Native-Only-Animated-View.js +41 -0
- package/lib/module/components/ui/Native-Only-Animated-View.js.map +1 -0
- package/lib/module/components/ui/NavBar.js +352 -0
- package/lib/module/components/ui/NavBar.js.map +1 -0
- package/lib/module/components/ui/Popover.js +101 -0
- package/lib/module/components/ui/Popover.js.map +1 -0
- package/lib/module/components/ui/Progress.js +124 -0
- package/lib/module/components/ui/Progress.js.map +1 -0
- package/lib/module/components/ui/Radio-Group.js +75 -0
- package/lib/module/components/ui/Radio-Group.js.map +1 -0
- package/lib/module/components/ui/Select.js +269 -0
- package/lib/module/components/ui/Select.js.map +1 -0
- package/lib/module/components/ui/Separator.js +58 -0
- package/lib/module/components/ui/Separator.js.map +1 -0
- package/lib/module/components/ui/SizedBox.js +101 -0
- package/lib/module/components/ui/SizedBox.js.map +1 -0
- package/lib/module/components/ui/Skeleton.js +57 -0
- package/lib/module/components/ui/Skeleton.js.map +1 -0
- package/lib/module/components/ui/Slider.js +169 -0
- package/lib/module/components/ui/Slider.js.map +1 -0
- package/lib/module/components/ui/Switch.js +55 -0
- package/lib/module/components/ui/Switch.js.map +1 -0
- package/lib/module/components/ui/Table.js +150 -0
- package/lib/module/components/ui/Table.js.map +1 -0
- package/lib/module/components/ui/Tabs.js +106 -0
- package/lib/module/components/ui/Tabs.js.map +1 -0
- package/lib/module/components/ui/Text.js +69 -0
- package/lib/module/components/ui/Text.js.map +1 -0
- package/lib/module/components/ui/Textarea.js +88 -0
- package/lib/module/components/ui/Textarea.js.map +1 -0
- package/lib/module/components/ui/Theme-Toggle.js +156 -0
- package/lib/module/components/ui/Theme-Toggle.js.map +1 -0
- package/lib/module/components/ui/Toast.js +101 -0
- package/lib/module/components/ui/Toast.js.map +1 -0
- package/lib/module/components/ui/Toggle-Group.js +129 -0
- package/lib/module/components/ui/Toggle-Group.js.map +1 -0
- package/lib/module/components/ui/Toggle.js +106 -0
- package/lib/module/components/ui/Toggle.js.map +1 -0
- package/lib/module/components/ui/Tooltip.js +106 -0
- package/lib/module/components/ui/Tooltip.js.map +1 -0
- package/lib/module/components/ui/index.js +45 -0
- package/lib/module/components/ui/index.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/ThemeProvider.js +173 -0
- package/lib/module/lib/ThemeProvider.js.map +1 -0
- package/lib/module/lib/cornerRadius.js +164 -0
- package/lib/module/lib/cornerRadius.js.map +1 -0
- package/lib/module/lib/fonts.js +25 -0
- package/lib/module/lib/fonts.js.map +1 -0
- package/lib/module/lib/theme.js +212 -0
- package/lib/module/lib/theme.js.map +1 -0
- package/lib/module/lib/utils.js +137 -0
- package/lib/module/lib/utils.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/package.json +208 -0
- package/src/app/_layout.tsx +25 -0
- package/src/assets/icons/weather_icons/drizzle.png +0 -0
- package/src/assets/icons/weather_icons/foggy.png +0 -0
- package/src/assets/icons/weather_icons/freezing_rain.png +0 -0
- package/src/assets/icons/weather_icons/partly_cloudy.png +0 -0
- package/src/assets/icons/weather_icons/rainy.png +0 -0
- package/src/assets/icons/weather_icons/showers.png +0 -0
- package/src/assets/icons/weather_icons/sunny_weather.png +0 -0
- package/src/assets/icons/weather_icons/thunderstorm.png +0 -0
- package/src/assets/icons/weather_icons/thunderstorm_hail.png +0 -0
- package/src/components/theme-config.ts +331 -0
- package/src/components/ui/Accordion.tsx +253 -0
- package/src/components/ui/Alert-Dialog.tsx +295 -0
- package/src/components/ui/Alert.tsx +137 -0
- package/src/components/ui/AppBar.tsx +551 -0
- package/src/components/ui/Aspect-Ratio.tsx +25 -0
- package/src/components/ui/Avatar.tsx +103 -0
- package/src/components/ui/Badge.tsx +121 -0
- package/src/components/ui/Bottom-Sheet.tsx +224 -0
- package/src/components/ui/Button.tsx +100 -0
- package/src/components/ui/Card.tsx +185 -0
- package/src/components/ui/Checkbox.tsx +81 -0
- package/src/components/ui/Collapsible.tsx +40 -0
- package/src/components/ui/Context-Menu.tsx +407 -0
- package/src/components/ui/Custom-Card.tsx +226 -0
- package/src/components/ui/Dialog.tsx +240 -0
- package/src/components/ui/Dropdown-Menu.tsx +544 -0
- package/src/components/ui/Floating-Action.tsx +54 -0
- package/src/components/ui/Greeting-Card.tsx +471 -0
- package/src/components/ui/Hover-Card.tsx +101 -0
- package/src/components/ui/Icon.tsx +75 -0
- package/src/components/ui/Input.tsx +90 -0
- package/src/components/ui/Label.tsx +48 -0
- package/src/components/ui/Menubar.tsx +509 -0
- package/src/components/ui/Native-Only-Animated-View.tsx +37 -0
- package/src/components/ui/NavBar.tsx +397 -0
- package/src/components/ui/Popover.tsx +110 -0
- package/src/components/ui/Progress.tsx +138 -0
- package/src/components/ui/Radio-Group.tsx +79 -0
- package/src/components/ui/Select.tsx +344 -0
- package/src/components/ui/Separator.tsx +68 -0
- package/src/components/ui/SizedBox.tsx +116 -0
- package/src/components/ui/Skeleton.tsx +55 -0
- package/src/components/ui/Slider.tsx +222 -0
- package/src/components/ui/Switch.tsx +67 -0
- package/src/components/ui/Table.tsx +170 -0
- package/src/components/ui/Tabs.tsx +119 -0
- package/src/components/ui/Text.tsx +73 -0
- package/src/components/ui/Textarea.tsx +93 -0
- package/src/components/ui/Theme-Toggle.tsx +204 -0
- package/src/components/ui/Toast.tsx +127 -0
- package/src/components/ui/Toggle-Group.tsx +160 -0
- package/src/components/ui/Toggle.tsx +122 -0
- package/src/components/ui/Tooltip.tsx +117 -0
- package/src/components/ui/index.ts +42 -0
- package/src/index.tsx +24 -0
- package/src/lib/ThemeProvider.tsx +204 -0
- package/src/lib/cornerRadius.ts +160 -0
- package/src/lib/fonts.ts +28 -0
- package/src/lib/theme.ts +151 -0
- package/src/lib/utils.ts +146 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Platform","View","Gesture","GestureDetector","Animated","runOnJS","useAnimatedStyle","useSharedValue","withSpring","cn","jsx","_jsx","jsxs","_jsxs","Slider","forwardRef","value","onValueChange","min","max","step","disabled","className","style","props","ref","sliderWidth","translationX","startPosition","sliderDimensions","setSliderDimensions","useState","width","x","getThumbPosition","useCallback","val","range","percentage","getValueFromPosition","position","Math","newValue","round","useEffect","newPosition","useImperativeHandle","reset","handleValueChange","pan","Pan","enabled","onBegin","onUpdate","event","onEnd","tap","Tap","composed","Race","thumbAnimatedStyle","transform","translateX","rangeAnimatedStyle","children","gesture","onLayout","nativeEvent","layout","select","web","displayName"],"sourceRoot":"../../../../src","sources":["components/ui/Slider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import * as SwitchPrimitives from '@rn-primitives/switch';
|
|
5
|
+
import { Platform } from 'react-native';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A toggle switch component for binary on/off states
|
|
9
|
+
*
|
|
10
|
+
* Provides a visual toggle control with smooth animations and platform-specific styling.
|
|
11
|
+
* Automatically handles checked/unchecked states and disabled interactions.
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const [enabled, setEnabled] = useState(false);
|
|
17
|
+
*
|
|
18
|
+
* <Switch
|
|
19
|
+
* checked={enabled}
|
|
20
|
+
* onCheckedChange={setEnabled}
|
|
21
|
+
* />
|
|
22
|
+
*
|
|
23
|
+
* // Disabled switch
|
|
24
|
+
* <Switch checked={true} disabled />
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param {boolean} checked - Current state of the switch
|
|
28
|
+
* @param {(checked: boolean) => void} onCheckedChange - Callback when switch is toggled
|
|
29
|
+
* @param {boolean} [disabled] - Whether the switch is disabled
|
|
30
|
+
* @param {string} [className] - Additional Tailwind classes
|
|
31
|
+
*
|
|
32
|
+
* @accessibility
|
|
33
|
+
* - Proper focus states on web for keyboard navigation
|
|
34
|
+
* - Disabled state prevents interaction
|
|
35
|
+
* - Visual feedback for checked/unchecked states
|
|
36
|
+
*/
|
|
37
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
38
|
+
function Switch({
|
|
39
|
+
className,
|
|
40
|
+
...props
|
|
41
|
+
}) {
|
|
42
|
+
return /*#__PURE__*/_jsx(SwitchPrimitives.Root, {
|
|
43
|
+
className: cn('flex h-[1.15rem] w-8 shrink-0 flex-row items-center rounded-full border border-transparent shadow-sm shadow-black/5', Platform.select({
|
|
44
|
+
web: 'focus-visible:border-ring focus-visible:ring-ring/50 peer inline-flex outline-none transition-all focus-visible:ring-[3px] disabled:cursor-not-allowed'
|
|
45
|
+
}), props.checked ? 'bg-primary' : 'bg-input dark:bg-input/80', props.disabled && 'opacity-50', className),
|
|
46
|
+
...props,
|
|
47
|
+
children: /*#__PURE__*/_jsx(SwitchPrimitives.Thumb, {
|
|
48
|
+
className: cn('bg-background size-4 rounded-full transition-transform', Platform.select({
|
|
49
|
+
web: 'pointer-events-none block ring-0'
|
|
50
|
+
}), props.checked ? 'dark:bg-primary-foreground translate-x-3.5' : 'dark:bg-foreground translate-x-0')
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export { Switch };
|
|
55
|
+
//# sourceMappingURL=Switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cn","SwitchPrimitives","Platform","jsx","_jsx","Switch","className","props","Root","select","web","checked","disabled","children","Thumb"],"sourceRoot":"../../../../src","sources":["components/ui/Switch.tsx"],"mappings":";;AAAA,SAASA,EAAE,QAAQ,oBAAiB;AACpC,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AACzD,SAASC,QAAQ,QAAQ,cAAc;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7BA,SAAAC,GAAA,IAAAC,IAAA;AA8BA,SAASC,MAAMA,CAAC;EACdC,SAAS;EACT,GAAGC;AACuE,CAAC,EAAE;EAC7E,oBACEH,IAAA,CAACH,gBAAgB,CAACO,IAAI;IACpBF,SAAS,EAAEN,EAAE,CACX,qHAAqH,EACrHE,QAAQ,CAACO,MAAM,CAAC;MACdC,GAAG,EAAE;IACP,CAAC,CAAC,EACFH,KAAK,CAACI,OAAO,GAAG,YAAY,GAAG,2BAA2B,EAC1DJ,KAAK,CAACK,QAAQ,IAAI,YAAY,EAC9BN,SACF,CAAE;IAAA,GACEC,KAAK;IAAAM,QAAA,eAETT,IAAA,CAACH,gBAAgB,CAACa,KAAK;MACrBR,SAAS,EAAEN,EAAE,CACX,wDAAwD,EACxDE,QAAQ,CAACO,MAAM,CAAC;QACdC,GAAG,EAAE;MACP,CAAC,CAAC,EACFH,KAAK,CAACI,OAAO,GACT,4CAA4C,GAC5C,kCACN;IAAE,CACH;EAAC,CACmB,CAAC;AAE5B;AAEA,SAASN,MAAM","ignoreList":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { Text } from "./Text.js";
|
|
5
|
+
import { View } from 'react-native';
|
|
6
|
+
import { cssInterop } from 'nativewind';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
cssInterop(View, {
|
|
10
|
+
className: 'style'
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Root table container component
|
|
15
|
+
*
|
|
16
|
+
* @component
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <Table>
|
|
20
|
+
* <TableHeader>
|
|
21
|
+
* <TableRow>
|
|
22
|
+
* <TableHead><Text>Name</Text></TableHead>
|
|
23
|
+
* <TableHead><Text>Email</Text></TableHead>
|
|
24
|
+
* </TableRow>
|
|
25
|
+
* </TableHeader>
|
|
26
|
+
* <TableBody>
|
|
27
|
+
* <TableRow>
|
|
28
|
+
* <TableCell><Text>John Doe</Text></TableCell>
|
|
29
|
+
* <TableCell><Text>john@example.com</Text></TableCell>
|
|
30
|
+
* </TableRow>
|
|
31
|
+
* </TableBody>
|
|
32
|
+
* </Table>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function Table({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
39
|
+
return /*#__PURE__*/_jsx(View, {
|
|
40
|
+
className: cn('w-full', className),
|
|
41
|
+
...props
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Table header container
|
|
47
|
+
*
|
|
48
|
+
* @component
|
|
49
|
+
*/
|
|
50
|
+
function TableHeader({
|
|
51
|
+
className,
|
|
52
|
+
...props
|
|
53
|
+
}) {
|
|
54
|
+
return /*#__PURE__*/_jsx(View, {
|
|
55
|
+
className: cn('border-border flex-row border-b', className),
|
|
56
|
+
...props
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Table body container for data rows
|
|
62
|
+
*
|
|
63
|
+
* @component
|
|
64
|
+
*/
|
|
65
|
+
function TableBody({
|
|
66
|
+
className,
|
|
67
|
+
...props
|
|
68
|
+
}) {
|
|
69
|
+
return /*#__PURE__*/_jsx(View, {
|
|
70
|
+
className: cn('flex-col', className),
|
|
71
|
+
...props
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Table footer container
|
|
77
|
+
*
|
|
78
|
+
* @component
|
|
79
|
+
*/
|
|
80
|
+
function TableFooter({
|
|
81
|
+
className,
|
|
82
|
+
...props
|
|
83
|
+
}) {
|
|
84
|
+
return /*#__PURE__*/_jsx(View, {
|
|
85
|
+
className: cn('border-border bg-muted/50 flex-row border-t font-medium', className),
|
|
86
|
+
...props
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Table row component
|
|
92
|
+
*
|
|
93
|
+
* @component
|
|
94
|
+
*/
|
|
95
|
+
function TableRow({
|
|
96
|
+
className,
|
|
97
|
+
...props
|
|
98
|
+
}) {
|
|
99
|
+
return /*#__PURE__*/_jsx(View, {
|
|
100
|
+
className: cn('border-border flex-row border-b', className),
|
|
101
|
+
...props
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Table header cell component
|
|
107
|
+
*
|
|
108
|
+
* @component
|
|
109
|
+
*/
|
|
110
|
+
function TableHead({
|
|
111
|
+
className,
|
|
112
|
+
...props
|
|
113
|
+
}) {
|
|
114
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
115
|
+
className: cn('text-muted-foreground flex-1 p-2 text-left align-middle text-xs font-medium', className),
|
|
116
|
+
...props
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Table data cell component
|
|
122
|
+
*
|
|
123
|
+
* @component
|
|
124
|
+
*/
|
|
125
|
+
function TableCell({
|
|
126
|
+
className,
|
|
127
|
+
...props
|
|
128
|
+
}) {
|
|
129
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
130
|
+
className: cn('flex-1 p-2 align-middle text-sm', className),
|
|
131
|
+
...props
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Table caption for describing the table
|
|
137
|
+
*
|
|
138
|
+
* @component
|
|
139
|
+
*/
|
|
140
|
+
function TableCaption({
|
|
141
|
+
className,
|
|
142
|
+
...props
|
|
143
|
+
}) {
|
|
144
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
145
|
+
className: cn('text-muted-foreground mt-2 text-center text-sm', className),
|
|
146
|
+
...props
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
150
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cn","Text","View","cssInterop","React","jsx","_jsx","className","Table","props","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"sourceRoot":"../../../../src","sources":["components/ui/Table.tsx"],"mappings":";;AAAA,SAASA,EAAE,QAAQ,oBAAiB;AACpC,SAASC,IAAI,QAAQ,WAAQ;AAC7B,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,UAAU,QAAQ,YAAY;AACvC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/BH,UAAU,CAACD,IAAI,EAAE;EAAEK,SAAS,EAAE;AAAQ,CAAC,CAAC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,KAAKA,CAAC;EACbD,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBAAOH,IAAA,CAACJ,IAAI;IAACK,SAAS,EAAEP,EAAE,CAAC,QAAQ,EAAEO,SAAS,CAAE;IAAA,GAAKE;EAAK,CAAG,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAWA,CAAC;EACnBH,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACJ,IAAI;IACHK,SAAS,EAAEP,EAAE,CAAC,iCAAiC,EAAEO,SAAS,CAAE;IAAA,GACxDE;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,SAASA,CAAC;EACjBJ,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBAAOH,IAAA,CAACJ,IAAI;IAACK,SAAS,EAAEP,EAAE,CAAC,UAAU,EAAEO,SAAS,CAAE;IAAA,GAAKE;EAAK,CAAG,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASG,WAAWA,CAAC;EACnBL,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACJ,IAAI;IACHK,SAAS,EAAEP,EAAE,CACX,yDAAyD,EACzDO,SACF,CAAE;IAAA,GACEE;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,QAAQA,CAAC;EAChBN,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACJ,IAAI;IACHK,SAAS,EAAEP,EAAE,CAAC,iCAAiC,EAAEO,SAAS,CAAE;IAAA,GACxDE;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,SAASA,CAAC;EACjBP,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACL,IAAI;IACHM,SAAS,EAAEP,EAAE,CACX,6EAA6E,EAC7EO,SACF,CAAE;IAAA,GACEE;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASM,SAASA,CAAC;EACjBR,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACL,IAAI;IACHM,SAAS,EAAEP,EAAE,CAAC,iCAAiC,EAAEO,SAAS,CAAE;IAAA,GACxDE;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASO,YAAYA,CAAC;EACpBT,SAAS;EACT,GAAGE;AAC0D,CAAC,EAAE;EAChE,oBACEH,IAAA,CAACL,IAAI;IACHM,SAAS,EAAEP,EAAE,CACX,gDAAgD,EAChDO,SACF,CAAE;IAAA,GACEE;EAAK,CACV,CAAC;AAEN;AAEA,SACED,KAAK,EACLG,SAAS,EACTK,YAAY,EACZD,SAAS,EACTH,WAAW,EACXE,SAAS,EACTJ,WAAW,EACXG,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { TextClassContext } from "./Text.js";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import * as TabsPrimitive from '@rn-primitives/tabs';
|
|
6
|
+
import { Platform } from 'react-native';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Root tabs component for organizing content into panels
|
|
10
|
+
*
|
|
11
|
+
* @component
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <Tabs value={activeTab} onValueChange={setActiveTab}>
|
|
15
|
+
* <TabsList>
|
|
16
|
+
* <TabsTrigger value="account">
|
|
17
|
+
* <Text>Account</Text>
|
|
18
|
+
* </TabsTrigger>
|
|
19
|
+
* <TabsTrigger value="password">
|
|
20
|
+
* <Text>Password</Text>
|
|
21
|
+
* </TabsTrigger>
|
|
22
|
+
* </TabsList>
|
|
23
|
+
* <TabsContent value="account">
|
|
24
|
+
* <Text>Account settings content</Text>
|
|
25
|
+
* </TabsContent>
|
|
26
|
+
* <TabsContent value="password">
|
|
27
|
+
* <Text>Password settings content</Text>
|
|
28
|
+
* </TabsContent>
|
|
29
|
+
* </Tabs>
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @accessibility
|
|
33
|
+
* - Keyboard navigation support (arrow keys)
|
|
34
|
+
* - Proper ARIA attributes for tab structure
|
|
35
|
+
* - Screen reader friendly
|
|
36
|
+
*/
|
|
37
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
38
|
+
function Tabs({
|
|
39
|
+
className,
|
|
40
|
+
...props
|
|
41
|
+
}) {
|
|
42
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.Root, {
|
|
43
|
+
className: cn('flex flex-col gap-2', className),
|
|
44
|
+
...props
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Container for tab triggers
|
|
50
|
+
*
|
|
51
|
+
* @component
|
|
52
|
+
*/
|
|
53
|
+
function TabsList({
|
|
54
|
+
className,
|
|
55
|
+
...props
|
|
56
|
+
}) {
|
|
57
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.List, {
|
|
58
|
+
className: cn('bg-muted flex h-9 flex-row items-center justify-center rounded-lg p-[3px]', Platform.select({
|
|
59
|
+
web: 'inline-flex w-fit',
|
|
60
|
+
native: 'mr-auto'
|
|
61
|
+
}), className),
|
|
62
|
+
...props
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Individual tab trigger button
|
|
68
|
+
*
|
|
69
|
+
* @component
|
|
70
|
+
*/
|
|
71
|
+
function TabsTrigger({
|
|
72
|
+
className,
|
|
73
|
+
...props
|
|
74
|
+
}) {
|
|
75
|
+
const {
|
|
76
|
+
value
|
|
77
|
+
} = TabsPrimitive.useRootContext();
|
|
78
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
79
|
+
value: cn('text-foreground dark:text-muted-foreground text-sm font-medium', value === props.value && 'dark:text-foreground'),
|
|
80
|
+
children: /*#__PURE__*/_jsx(TabsPrimitive.Trigger, {
|
|
81
|
+
className: cn('flex h-[calc(100%-1px)] flex-row items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 shadow-none shadow-black/5', Platform.select({
|
|
82
|
+
web: 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex cursor-default whitespace-nowrap transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0'
|
|
83
|
+
}), props.disabled && 'opacity-50', props.value === value && 'bg-background dark:border-foreground/10 dark:bg-input/30', className),
|
|
84
|
+
...props
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Tab content panel
|
|
91
|
+
*
|
|
92
|
+
* @component
|
|
93
|
+
*/
|
|
94
|
+
function TabsContent({
|
|
95
|
+
className,
|
|
96
|
+
...props
|
|
97
|
+
}) {
|
|
98
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.Content, {
|
|
99
|
+
className: cn(Platform.select({
|
|
100
|
+
web: 'flex-1 outline-none'
|
|
101
|
+
}), className),
|
|
102
|
+
...props
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
export { Tabs, TabsContent, TabsList, TabsTrigger };
|
|
106
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TextClassContext","cn","TabsPrimitive","Platform","jsx","_jsx","Tabs","className","props","Root","TabsList","List","select","web","native","TabsTrigger","value","useRootContext","Provider","children","Trigger","disabled","TabsContent","Content"],"sourceRoot":"../../../../src","sources":["components/ui/Tabs.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,WAAQ;AACzC,SAASC,EAAE,QAAQ,oBAAiB;AACpC,OAAO,KAAKC,aAAa,MAAM,qBAAqB;AACpD,SAASC,QAAQ,QAAQ,cAAc;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA,SAAAC,GAAA,IAAAC,IAAA;AA6BA,SAASC,IAAIA,CAAC;EACZC,SAAS;EACT,GAAGC;AACiE,CAAC,EAAE;EACvE,oBACEH,IAAA,CAACH,aAAa,CAACO,IAAI;IACjBF,SAAS,EAAEN,EAAE,CAAC,qBAAqB,EAAEM,SAAS,CAAE;IAAA,GAC5CC;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,QAAQA,CAAC;EAChBH,SAAS;EACT,GAAGC;AACiE,CAAC,EAAE;EACvE,oBACEH,IAAA,CAACH,aAAa,CAACS,IAAI;IACjBJ,SAAS,EAAEN,EAAE,CACX,2EAA2E,EAC3EE,QAAQ,CAACS,MAAM,CAAC;MAAEC,GAAG,EAAE,mBAAmB;MAAEC,MAAM,EAAE;IAAU,CAAC,CAAC,EAChEP,SACF,CAAE;IAAA,GACEC;EAAK,CACV,CAAC;AAEN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASO,WAAWA,CAAC;EACnBR,SAAS;EACT,GAAGC;AACuE,CAAC,EAAE;EAC7E,MAAM;IAAEQ;EAAM,CAAC,GAAGd,aAAa,CAACe,cAAc,CAAC,CAAC;EAChD,oBACEZ,IAAA,CAACL,gBAAgB,CAACkB,QAAQ;IACxBF,KAAK,EAAEf,EAAE,CACP,gEAAgE,EAChEe,KAAK,KAAKR,KAAK,CAACQ,KAAK,IAAI,sBAC3B,CAAE;IAAAG,QAAA,eAEFd,IAAA,CAACH,aAAa,CAACkB,OAAO;MACpBb,SAAS,EAAEN,EAAE,CACX,gJAAgJ,EAChJE,QAAQ,CAACS,MAAM,CAAC;QACdC,GAAG,EAAE;MACP,CAAC,CAAC,EACFL,KAAK,CAACa,QAAQ,IAAI,YAAY,EAC9Bb,KAAK,CAACQ,KAAK,KAAKA,KAAK,IACnB,0DAA0D,EAC5DT,SACF,CAAE;MAAA,GACEC;IAAK,CACV;EAAC,CACuB,CAAC;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASc,WAAWA,CAAC;EACnBf,SAAS;EACT,GAAGC;AACuE,CAAC,EAAE;EAC7E,oBACEH,IAAA,CAACH,aAAa,CAACqB,OAAO;IACpBhB,SAAS,EAAEN,EAAE,CAACE,QAAQ,CAACS,MAAM,CAAC;MAAEC,GAAG,EAAE;IAAsB,CAAC,CAAC,EAAEN,SAAS,CAAE;IAAA,GACtEC;EAAK,CACV,CAAC;AAEN;AAEA,SAASF,IAAI,EAAEgB,WAAW,EAAEZ,QAAQ,EAAEK,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as Slot from '@rn-primitives/slot';
|
|
4
|
+
import { cssInterop } from 'nativewind';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { Text as RNText } from 'react-native';
|
|
7
|
+
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
cssInterop(RNText, {
|
|
10
|
+
className: 'style'
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Context for sharing text class styles with child Text components
|
|
15
|
+
* Used by components like Button, Card, Badge to automatically style nested Text
|
|
16
|
+
*/
|
|
17
|
+
const TextClassContext = /*#__PURE__*/React.createContext(undefined);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Enhanced Text component with NativeWind styling support
|
|
21
|
+
*
|
|
22
|
+
* Extends React Native's Text with:
|
|
23
|
+
* - Automatic style inheritance from TextClassContext
|
|
24
|
+
* - NativeWind className support
|
|
25
|
+
* - Slot pattern support for composition
|
|
26
|
+
* - Web-specific selection styling
|
|
27
|
+
*
|
|
28
|
+
* @component
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* // Basic text
|
|
32
|
+
* <Text>Hello World</Text>
|
|
33
|
+
*
|
|
34
|
+
* // With custom styling
|
|
35
|
+
* <Text className="text-lg font-bold">Title</Text>
|
|
36
|
+
*
|
|
37
|
+
* // Inside a styled context (e.g., Button)
|
|
38
|
+
* <Button variant="default">
|
|
39
|
+
* <Text>Button Text</Text> // Automatically inherits button text styling
|
|
40
|
+
* </Button>
|
|
41
|
+
*
|
|
42
|
+
* // Using asChild for composition
|
|
43
|
+
* <Text asChild>
|
|
44
|
+
* <Link href="/home">Home</Link>
|
|
45
|
+
* </Text>
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
49
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
50
|
+
*/
|
|
51
|
+
const Text = /*#__PURE__*/React.forwardRef(({
|
|
52
|
+
className,
|
|
53
|
+
asChild = false,
|
|
54
|
+
style,
|
|
55
|
+
...props
|
|
56
|
+
}, ref) => {
|
|
57
|
+
const textClass = React.useContext(TextClassContext);
|
|
58
|
+
const Component = asChild ? Slot.Text : RNText;
|
|
59
|
+
const finalClassName = textClass ? cn('text-base web:select-text', textClass, className) : cn('text-base text-foreground web:select-text', className);
|
|
60
|
+
return /*#__PURE__*/_jsx(Component, {
|
|
61
|
+
className: finalClassName,
|
|
62
|
+
style: style,
|
|
63
|
+
ref: ref,
|
|
64
|
+
...props
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
Text.displayName = 'Text';
|
|
68
|
+
export { Text, TextClassContext };
|
|
69
|
+
//# sourceMappingURL=Text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Slot","cssInterop","React","Text","RNText","cn","jsx","_jsx","className","TextClassContext","createContext","undefined","forwardRef","asChild","style","props","ref","textClass","useContext","Component","finalClassName","displayName"],"sourceRoot":"../../../../src","sources":["components/ui/Text.tsx"],"mappings":";;AAAA,OAAO,KAAKA,IAAI,MAAM,qBAAqB;AAE3C,SAASC,UAAU,QAAQ,YAAY;AACvC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,IAAI,IAAIC,MAAM,QAAQ,cAAc;AAC7C,SAASC,EAAE,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErCN,UAAU,CAACG,MAAM,EAAE;EAAEI,SAAS,EAAE;AAAQ,CAAC,CAAC;;AAE1C;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,gBAAGP,KAAK,CAACQ,aAAa,CAAqBC,SAAS,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMR,IAAI,gBAAGD,KAAK,CAACU,UAAU,CAM3B,CAAC;EAAEJ,SAAS;EAAEK,OAAO,GAAG,KAAK;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1D,MAAMC,SAAS,GAAGf,KAAK,CAACgB,UAAU,CAACT,gBAAgB,CAAC;EACpD,MAAMU,SAAS,GAAGN,OAAO,GAAGb,IAAI,CAACG,IAAI,GAAGC,MAAM;EAE9C,MAAMgB,cAAc,GAAGH,SAAS,GAC5BZ,EAAE,CAAC,2BAA2B,EAAEY,SAAS,EAAET,SAAS,CAAC,GACrDH,EAAE,CAAC,2CAA2C,EAAEG,SAAS,CAAC;EAE9D,oBACED,IAAA,CAACY,SAAS;IACRX,SAAS,EAAEY,cAAe;IAC1BN,KAAK,EAAEA,KAAM;IACbE,GAAG,EAAEA,GAAW;IAAA,GACZD;EAAK,CACV,CAAC;AAEN,CAAC,CAAC;AACFZ,IAAI,CAACkB,WAAW,GAAG,MAAM;AAEzB,SAASlB,IAAI,EAAEM,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { Platform, TextInput } from 'react-native';
|
|
5
|
+
import { cssInterop } from 'nativewind';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
cssInterop(TextInput, {
|
|
8
|
+
className: 'style'
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Props for Textarea component
|
|
13
|
+
*
|
|
14
|
+
* @extends TextInputProps - All React Native TextInput properties
|
|
15
|
+
* @property {string} [className] - Additional Tailwind classes for styling
|
|
16
|
+
* @property {string} [placeholderClassName] - Tailwind classes for placeholder text styling
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <Textarea
|
|
21
|
+
* placeholder="Enter your message"
|
|
22
|
+
* value={message}
|
|
23
|
+
* onChangeText={setMessage}
|
|
24
|
+
* numberOfLines={4}
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Multi-line text input component
|
|
31
|
+
*
|
|
32
|
+
* A textarea component for longer text input with configurable height and styling.
|
|
33
|
+
* Automatically configured for multi-line input with appropriate platform-specific defaults.
|
|
34
|
+
*
|
|
35
|
+
* @component
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* // Basic textarea
|
|
39
|
+
* <Textarea
|
|
40
|
+
* placeholder="Enter description"
|
|
41
|
+
* value={description}
|
|
42
|
+
* onChangeText={setDescription}
|
|
43
|
+
* />
|
|
44
|
+
*
|
|
45
|
+
* // Controlled textarea with validation
|
|
46
|
+
* <Textarea
|
|
47
|
+
* value={bio}
|
|
48
|
+
* onChangeText={setBio}
|
|
49
|
+
* placeholder="Tell us about yourself"
|
|
50
|
+
* numberOfLines={6}
|
|
51
|
+
* maxLength={500}
|
|
52
|
+
* />
|
|
53
|
+
*
|
|
54
|
+
* // Disabled textarea
|
|
55
|
+
* <Textarea value={content} editable={false} />
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @accessibility
|
|
59
|
+
* - Supports standard TextInput accessibility props
|
|
60
|
+
* - Placeholder text with appropriate color contrast
|
|
61
|
+
* - Focus states on web for keyboard navigation
|
|
62
|
+
* - Disabled state with reduced opacity
|
|
63
|
+
*/
|
|
64
|
+
function Textarea({
|
|
65
|
+
className,
|
|
66
|
+
multiline = true,
|
|
67
|
+
numberOfLines = Platform.select({
|
|
68
|
+
web: 2,
|
|
69
|
+
native: 8
|
|
70
|
+
}),
|
|
71
|
+
placeholderClassName,
|
|
72
|
+
editable = true,
|
|
73
|
+
...props
|
|
74
|
+
}) {
|
|
75
|
+
return /*#__PURE__*/_jsx(TextInput, {
|
|
76
|
+
className: cn('text-foreground border-input dark:bg-input/30 flex min-h-16 w-full flex-row rounded-md border bg-transparent px-3 py-2 text-base shadow-sm shadow-black/5 md:text-sm', Platform.select({
|
|
77
|
+
web: 'placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive field-sizing-content resize-y outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed'
|
|
78
|
+
}), !editable && 'opacity-50', className),
|
|
79
|
+
placeholderClassName: cn('text-muted-foreground', placeholderClassName),
|
|
80
|
+
multiline: multiline,
|
|
81
|
+
numberOfLines: numberOfLines,
|
|
82
|
+
textAlignVertical: "top",
|
|
83
|
+
editable: editable,
|
|
84
|
+
...props
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
export { Textarea };
|
|
88
|
+
//# sourceMappingURL=Textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cn","Platform","TextInput","cssInterop","jsx","_jsx","className","Textarea","multiline","numberOfLines","select","web","native","placeholderClassName","editable","props","textAlignVertical"],"sourceRoot":"../../../../src","sources":["components/ui/Textarea.tsx"],"mappings":";;AAAA,SAASA,EAAE,QAAQ,oBAAiB;AACpC,SAASC,QAAQ,EAAEC,SAAS,QAA6B,cAAc;AACvE,SAASC,UAAU,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExCF,UAAU,CAACD,SAAS,EAAE;EAAEI,SAAS,EAAE;AAAQ,CAAC,CAAC;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAAC;EAChBD,SAAS;EACTE,SAAS,GAAG,IAAI;EAChBC,aAAa,GAAGR,QAAQ,CAACS,MAAM,CAAC;IAAEC,GAAG,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC;EACtDC,oBAAoB;EACpBC,QAAQ,GAAG,IAAI;EACf,GAAGC;AAC2C,CAAC,EAAE;EACjD,oBACEV,IAAA,CAACH,SAAS;IACRI,SAAS,EAAEN,EAAE,CACX,sKAAsK,EACtKC,QAAQ,CAACS,MAAM,CAAC;MACdC,GAAG,EAAE;IACP,CAAC,CAAC,EACF,CAACG,QAAQ,IAAI,YAAY,EACzBR,SACF,CAAE;IACFO,oBAAoB,EAAEb,EAAE,CAAC,uBAAuB,EAAEa,oBAAoB,CAAE;IACxEL,SAAS,EAAEA,SAAU;IACrBC,aAAa,EAAEA,aAAc;IAC7BO,iBAAiB,EAAC,KAAK;IACvBF,QAAQ,EAAEA,QAAS;IAAA,GACfC;EAAK,CACV,CAAC;AAEN;AAEA,SAASR,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { View, Pressable } from 'react-native';
|
|
5
|
+
import { cssInterop } from 'nativewind';
|
|
6
|
+
import { Moon, Sun, Monitor } from 'lucide-react-native';
|
|
7
|
+
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { useTheme } from "../../lib/ThemeProvider.js";
|
|
9
|
+
import { Icon } from "./Icon.js";
|
|
10
|
+
import { Text } from "./Text.js";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
cssInterop(View, {
|
|
13
|
+
className: 'style'
|
|
14
|
+
});
|
|
15
|
+
cssInterop(Pressable, {
|
|
16
|
+
className: 'style'
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Theme toggle button variants
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Props for ThemeToggle component
|
|
25
|
+
*
|
|
26
|
+
* @property {'icon' | 'button' | 'segmented'} [variant='icon'] - Visual style variant
|
|
27
|
+
* @property {boolean} [showLabel=false] - Show text label next to icon (for button variant)
|
|
28
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* // Icon only (default)
|
|
33
|
+
* <ThemeToggle />
|
|
34
|
+
*
|
|
35
|
+
* // Button with label
|
|
36
|
+
* <ThemeToggle variant="button" showLabel />
|
|
37
|
+
*
|
|
38
|
+
* // Segmented control
|
|
39
|
+
* <ThemeToggle variant="segmented" />
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Theme toggle component for switching between light, dark, and system themes
|
|
45
|
+
*
|
|
46
|
+
* Provides three variants:
|
|
47
|
+
* - **icon**: Simple icon button that cycles through themes (light → dark → system)
|
|
48
|
+
* - **button**: Button with icon and optional label
|
|
49
|
+
* - **segmented**: Segmented control showing all three options
|
|
50
|
+
*
|
|
51
|
+
* @component
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* // Icon toggle (minimal)
|
|
55
|
+
* <ThemeToggle />
|
|
56
|
+
*
|
|
57
|
+
* // Button with label
|
|
58
|
+
* <ThemeToggle variant="button" showLabel />
|
|
59
|
+
*
|
|
60
|
+
* // Segmented control (shows all options)
|
|
61
|
+
* <ThemeToggle variant="segmented" />
|
|
62
|
+
*
|
|
63
|
+
* // Custom styling
|
|
64
|
+
* <ThemeToggle className="my-4" />
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @accessibility
|
|
68
|
+
* - Proper button role for screen readers
|
|
69
|
+
* - Announces current theme state
|
|
70
|
+
* - Keyboard navigable on web
|
|
71
|
+
*/
|
|
72
|
+
const ThemeToggle = /*#__PURE__*/React.forwardRef(({
|
|
73
|
+
variant = 'icon',
|
|
74
|
+
showLabel = false,
|
|
75
|
+
className,
|
|
76
|
+
...props
|
|
77
|
+
}, ref) => {
|
|
78
|
+
const {
|
|
79
|
+
mode,
|
|
80
|
+
isDark,
|
|
81
|
+
setMode
|
|
82
|
+
} = useTheme();
|
|
83
|
+
|
|
84
|
+
// Cycle through themes: light → dark → system → light
|
|
85
|
+
const cycleTheme = () => {
|
|
86
|
+
const nextMode = mode === 'light' ? 'dark' : mode === 'dark' ? 'system' : 'light';
|
|
87
|
+
setMode(nextMode);
|
|
88
|
+
};
|
|
89
|
+
if (variant === 'segmented') {
|
|
90
|
+
return /*#__PURE__*/_jsx(View, {
|
|
91
|
+
ref: ref,
|
|
92
|
+
className: cn('flex-row bg-muted dark:bg-muted rounded-lg p-1', className),
|
|
93
|
+
...props,
|
|
94
|
+
children: ['light', 'dark', 'system'].map(themeMode => {
|
|
95
|
+
const isActive = mode === themeMode;
|
|
96
|
+
const IconComponent = themeMode === 'light' ? Sun : themeMode === 'dark' ? Moon : Monitor;
|
|
97
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
98
|
+
onPress: () => setMode(themeMode),
|
|
99
|
+
className: cn('flex-1 flex-row items-center justify-center rounded-md px-3 py-2 transition-colors', isActive ? 'bg-background dark:bg-background shadow-sm' : 'active:bg-background/50 dark:active:bg-background/50'),
|
|
100
|
+
role: "button",
|
|
101
|
+
accessibilityLabel: `Switch to ${themeMode} theme`,
|
|
102
|
+
accessibilityState: {
|
|
103
|
+
selected: isActive
|
|
104
|
+
},
|
|
105
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
106
|
+
as: IconComponent,
|
|
107
|
+
size: 16,
|
|
108
|
+
className: cn(isActive ? 'text-foreground dark:text-foreground' : 'text-muted-foreground dark:text-muted-foreground')
|
|
109
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
110
|
+
className: cn('ml-2 text-sm font-medium capitalize', isActive ? 'text-foreground dark:text-foreground' : 'text-muted-foreground dark:text-muted-foreground'),
|
|
111
|
+
children: themeMode
|
|
112
|
+
})]
|
|
113
|
+
}, themeMode);
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
if (variant === 'button') {
|
|
118
|
+
const IconComponent = isDark ? Moon : Sun;
|
|
119
|
+
const label = mode === 'system' ? 'System' : isDark ? 'Dark' : 'Light';
|
|
120
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
121
|
+
ref: ref,
|
|
122
|
+
onPress: cycleTheme,
|
|
123
|
+
className: cn('flex-row items-center justify-center rounded-md px-4 py-2', 'bg-secondary dark:bg-secondary active:opacity-80', className),
|
|
124
|
+
role: "button",
|
|
125
|
+
accessibilityLabel: `Current theme: ${label}. Tap to change.`,
|
|
126
|
+
...props,
|
|
127
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
128
|
+
as: IconComponent,
|
|
129
|
+
size: 16,
|
|
130
|
+
className: "text-secondary-foreground dark:text-secondary-foreground"
|
|
131
|
+
}), showLabel && /*#__PURE__*/_jsx(Text, {
|
|
132
|
+
className: "ml-2 text-sm font-medium text-secondary-foreground dark:text-secondary-foreground",
|
|
133
|
+
children: label
|
|
134
|
+
})]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Default: icon variant
|
|
139
|
+
const IconComponent = mode === 'system' ? Monitor : isDark ? Moon : Sun;
|
|
140
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
141
|
+
ref: ref,
|
|
142
|
+
onPress: cycleTheme,
|
|
143
|
+
className: cn('h-10 w-10 items-center justify-center rounded-md', 'active:bg-accent dark:active:bg-accent', 'web:hover:bg-accent/50 dark:web:hover:bg-accent/50', 'web:transition-colors', className),
|
|
144
|
+
role: "button",
|
|
145
|
+
accessibilityLabel: `Current theme: ${mode}. Tap to cycle themes.`,
|
|
146
|
+
...props,
|
|
147
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
148
|
+
as: IconComponent,
|
|
149
|
+
size: 20,
|
|
150
|
+
className: "text-foreground dark:text-foreground"
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
ThemeToggle.displayName = 'ThemeToggle';
|
|
155
|
+
export { ThemeToggle };
|
|
156
|
+
//# sourceMappingURL=Theme-Toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Pressable","cssInterop","Moon","Sun","Monitor","cn","useTheme","Icon","Text","jsx","_jsx","jsxs","_jsxs","className","ThemeToggle","forwardRef","variant","showLabel","props","ref","mode","isDark","setMode","cycleTheme","nextMode","children","map","themeMode","isActive","IconComponent","onPress","role","accessibilityLabel","accessibilityState","selected","as","size","label","displayName"],"sourceRoot":"../../../../src","sources":["components/ui/Theme-Toggle.tsx"],"mappings":"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","ignoreList":[]}
|