zero-to-app 3.2.1 → 3.2.2
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/brand/brand-config.d.ts +65 -0
- package/dist/brand/brand-config.d.ts.map +1 -0
- package/dist/brand/brand-config.js +68 -0
- package/dist/brand/brand-config.js.map +1 -0
- package/dist/brand/brand-context.d.ts +55 -0
- package/dist/brand/brand-context.d.ts.map +1 -0
- package/dist/brand/brand-context.js +76 -0
- package/dist/brand/brand-context.js.map +1 -0
- package/dist/brand/brand-types.d.ts +92 -0
- package/dist/brand/brand-types.d.ts.map +1 -0
- package/dist/brand/brand-types.js +2 -0
- package/dist/brand/brand-types.js.map +1 -0
- package/dist/brand/default-brand.d.ts +11 -0
- package/dist/brand/default-brand.d.ts.map +1 -0
- package/dist/brand/default-brand.js +32 -0
- package/dist/brand/default-brand.js.map +1 -0
- package/dist/brand/index.d.ts +6 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand/index.js +8 -0
- package/dist/brand/index.js.map +1 -0
- package/dist/brand/palette-generator.d.ts +64 -0
- package/dist/brand/palette-generator.d.ts.map +1 -0
- package/dist/brand/palette-generator.js +292 -0
- package/dist/brand/palette-generator.js.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/navigation/app-tabs/app-tabs.d.ts +63 -0
- package/dist/components/navigation/app-tabs/app-tabs.d.ts.map +1 -0
- package/dist/components/navigation/app-tabs/app-tabs.js +13 -0
- package/dist/components/navigation/app-tabs/app-tabs.js.map +1 -0
- package/dist/components/navigation/app-tabs/app-tabs.web.d.ts +47 -0
- package/dist/components/navigation/app-tabs/app-tabs.web.d.ts.map +1 -0
- package/dist/components/navigation/app-tabs/app-tabs.web.js +104 -0
- package/dist/components/navigation/app-tabs/app-tabs.web.js.map +1 -0
- package/dist/components/navigation/app-tabs/index.d.ts +3 -0
- package/dist/components/navigation/app-tabs/index.d.ts.map +1 -0
- package/dist/components/navigation/app-tabs/index.js +3 -0
- package/dist/components/navigation/app-tabs/index.js.map +1 -0
- package/dist/components/navigation/drawer/drawer.d.ts +24 -0
- package/dist/components/navigation/drawer/drawer.d.ts.map +1 -0
- package/dist/components/navigation/drawer/drawer.js +82 -0
- package/dist/components/navigation/drawer/drawer.js.map +1 -0
- package/dist/components/navigation/index.d.ts +10 -0
- package/dist/components/navigation/index.d.ts.map +1 -0
- package/dist/components/navigation/index.js +11 -0
- package/dist/components/navigation/index.js.map +1 -0
- package/dist/components/navigation/native-header.d.ts +25 -0
- package/dist/components/navigation/native-header.d.ts.map +1 -0
- package/dist/components/navigation/native-header.js +32 -0
- package/dist/components/navigation/native-header.js.map +1 -0
- package/dist/components/navigation/shared/sidebar-styles.d.ts +34 -0
- package/dist/components/navigation/shared/sidebar-styles.d.ts.map +1 -0
- package/dist/components/navigation/shared/sidebar-styles.js +34 -0
- package/dist/components/navigation/shared/sidebar-styles.js.map +1 -0
- package/dist/components/navigation/sidebar/index.d.ts +10 -0
- package/dist/components/navigation/sidebar/index.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/index.js +7 -0
- package/dist/components/navigation/sidebar/index.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-footer.d.ts +18 -0
- package/dist/components/navigation/sidebar/sidebar-footer.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-footer.js +27 -0
- package/dist/components/navigation/sidebar/sidebar-footer.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-header.d.ts +26 -0
- package/dist/components/navigation/sidebar/sidebar-header.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-header.js +38 -0
- package/dist/components/navigation/sidebar/sidebar-header.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-item.d.ts +36 -0
- package/dist/components/navigation/sidebar/sidebar-item.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-item.js +63 -0
- package/dist/components/navigation/sidebar/sidebar-item.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-section.d.ts +34 -0
- package/dist/components/navigation/sidebar/sidebar-section.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar-section.js +56 -0
- package/dist/components/navigation/sidebar/sidebar-section.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
- package/dist/components/navigation/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.js +4 -0
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.native.d.ts +23 -0
- package/dist/components/navigation/sidebar/sidebar.native.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.native.js +80 -0
- package/dist/components/navigation/sidebar/sidebar.native.js.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.web.d.ts +26 -0
- package/dist/components/navigation/sidebar/sidebar.web.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.web.js +90 -0
- package/dist/components/navigation/sidebar/sidebar.web.js.map +1 -0
- package/dist/components/navigation/themed-stack.d.ts +25 -0
- package/dist/components/navigation/themed-stack.d.ts.map +1 -0
- package/dist/components/navigation/themed-stack.js +37 -0
- package/dist/components/navigation/themed-stack.js.map +1 -0
- package/dist/components/shared/index.d.ts +3 -0
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/components/shared/index.js +2 -0
- package/dist/components/shared/index.js.map +1 -0
- package/dist/components/shared/types.d.ts +82 -0
- package/dist/components/shared/types.d.ts.map +1 -0
- package/dist/components/shared/types.js +2 -0
- package/dist/components/shared/types.js.map +1 -0
- package/dist/components/shared/utils.d.ts +19 -0
- package/dist/components/shared/utils.d.ts.map +1 -0
- package/dist/components/shared/utils.js +23 -0
- package/dist/components/shared/utils.js.map +1 -0
- package/dist/components/ui/button.d.ts +132 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +252 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/chip.d.ts +88 -0
- package/dist/components/ui/chip.d.ts.map +1 -0
- package/dist/components/ui/chip.js +129 -0
- package/dist/components/ui/chip.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +88 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +66 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/container.d.ts +31 -0
- package/dist/components/ui/container.d.ts.map +1 -0
- package/dist/components/ui/container.js +46 -0
- package/dist/components/ui/container.js.map +1 -0
- package/dist/components/ui/fab.d.ts +51 -0
- package/dist/components/ui/fab.d.ts.map +1 -0
- package/dist/components/ui/fab.js +142 -0
- package/dist/components/ui/fab.js.map +1 -0
- package/dist/components/ui/index.d.ts +23 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +22 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/components/ui/screen.d.ts +40 -0
- package/dist/components/ui/screen.d.ts.map +1 -0
- package/dist/components/ui/screen.js +57 -0
- package/dist/components/ui/screen.js.map +1 -0
- package/dist/components/ui/slider.d.ts +47 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +41 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/themed-image.d.ts +7 -0
- package/dist/components/ui/themed-image.d.ts.map +1 -0
- package/dist/components/ui/themed-image.js +9 -0
- package/dist/components/ui/themed-image.js.map +1 -0
- package/dist/components/ui/themed-view.d.ts +20 -0
- package/dist/components/ui/themed-view.d.ts.map +1 -0
- package/dist/components/ui/themed-view.js +75 -0
- package/dist/components/ui/themed-view.js.map +1 -0
- package/dist/components/ui/typography.d.ts +110 -0
- package/dist/components/ui/typography.d.ts.map +1 -0
- package/dist/components/ui/typography.js +69 -0
- package/dist/components/ui/typography.js.map +1 -0
- package/dist/context/layout-context.d.ts +66 -0
- package/dist/context/layout-context.d.ts.map +1 -0
- package/dist/context/layout-context.js +83 -0
- package/dist/context/layout-context.js.map +1 -0
- package/dist/context/scroll-context.d.ts +8 -0
- package/dist/context/scroll-context.d.ts.map +1 -0
- package/dist/context/scroll-context.js +16 -0
- package/dist/context/scroll-context.js.map +1 -0
- package/dist/context/sidebar-context.d.ts +74 -0
- package/dist/context/sidebar-context.d.ts.map +1 -0
- package/dist/context/sidebar-context.js +95 -0
- package/dist/context/sidebar-context.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-breakpoint.d.ts +8 -0
- package/dist/hooks/use-breakpoint.d.ts.map +1 -0
- package/dist/hooks/use-breakpoint.js +10 -0
- package/dist/hooks/use-breakpoint.js.map +1 -0
- package/dist/hooks/use-dimensions.d.ts +31 -0
- package/dist/hooks/use-dimensions.d.ts.map +1 -0
- package/dist/hooks/use-dimensions.js +44 -0
- package/dist/hooks/use-dimensions.js.map +1 -0
- package/dist/hooks/use-route-navigation.d.ts +19 -0
- package/dist/hooks/use-route-navigation.d.ts.map +1 -0
- package/dist/hooks/use-route-navigation.js +25 -0
- package/dist/hooks/use-route-navigation.js.map +1 -0
- package/dist/icons/icon-utils.d.ts +24 -0
- package/dist/icons/icon-utils.d.ts.map +1 -0
- package/dist/icons/icon-utils.js +57 -0
- package/dist/icons/icon-utils.js.map +1 -0
- package/dist/icons/index.d.ts +13 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +12 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/theme/high-contrast-theme.d.ts +19 -0
- package/dist/theme/high-contrast-theme.d.ts.map +1 -0
- package/dist/theme/high-contrast-theme.js +257 -0
- package/dist/theme/high-contrast-theme.js.map +1 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-config.d.ts +150 -0
- package/dist/theme/theme-config.d.ts.map +1 -0
- package/dist/theme/theme-config.js +318 -0
- package/dist/theme/theme-config.js.map +1 -0
- package/dist/theme/theme.d.ts +106 -0
- package/dist/theme/theme.d.ts.map +1 -0
- package/dist/theme/theme.js +135 -0
- package/dist/theme/theme.js.map +1 -0
- package/dist/utils/contrast-checker.d.ts +51 -0
- package/dist/utils/contrast-checker.d.ts.map +1 -0
- package/dist/utils/contrast-checker.js +97 -0
- package/dist/utils/contrast-checker.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { BaseComponentProps } from '../shared/types';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the Slider component.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* // Basic slider
|
|
8
|
+
* <Slider value={0.5} onValueChange={setValue} />
|
|
9
|
+
*
|
|
10
|
+
* // With step and range
|
|
11
|
+
* <Slider value={volume} minimumValue={0} maximumValue={100} step={10} onValueChange={setVolume} />
|
|
12
|
+
*
|
|
13
|
+
* // Controlled with complete callback
|
|
14
|
+
* <Slider value={value} onValueChange={setValue} onSlidingComplete={onCommit} />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export interface SliderProps extends BaseComponentProps {
|
|
18
|
+
/** Current value of the slider */
|
|
19
|
+
value?: number;
|
|
20
|
+
/** Minimum value. @default 0 */
|
|
21
|
+
minimumValue?: number;
|
|
22
|
+
/** Maximum value. @default 1 */
|
|
23
|
+
maximumValue?: number;
|
|
24
|
+
/** Step increment between values. @default 0 (continuous) */
|
|
25
|
+
step?: number;
|
|
26
|
+
/** Called continuously as the slider moves */
|
|
27
|
+
onValueChange?: (value: number) => void;
|
|
28
|
+
/** Called when the user finishes sliding */
|
|
29
|
+
onSlidingComplete?: (value: number) => void;
|
|
30
|
+
/** Whether the slider is disabled */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/** Accessibility label read by screen readers */
|
|
33
|
+
accessibilityLabel?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Material Design 3 Slider component
|
|
37
|
+
* https://m3.material.io/components/sliders
|
|
38
|
+
*
|
|
39
|
+
* Wraps @react-native-community/slider with M3 theme colors.
|
|
40
|
+
* Active track: primary. Inactive track: surfaceContainerHighest. Thumb: primary.
|
|
41
|
+
*/
|
|
42
|
+
declare const Slider: {
|
|
43
|
+
({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, disabled, style, testID, accessibilityLabel, }: SliderProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
displayName: string;
|
|
45
|
+
};
|
|
46
|
+
export { Slider };
|
|
47
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../components/ui/slider.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID;;;;;;GAMG;AACH,QAAA,MAAM,MAAM;kIAWT,WAAW;;CA6Bb,CAAC;AAgBF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { View, StyleSheet } from 'react-native';
|
|
3
|
+
import { useTheme } from '../../theme';
|
|
4
|
+
let RNSlider = null;
|
|
5
|
+
try {
|
|
6
|
+
RNSlider = require('@react-native-community/slider').default;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
// optional peer dependency not installed
|
|
10
|
+
}
|
|
11
|
+
// 3. COMPONENT
|
|
12
|
+
/**
|
|
13
|
+
* Material Design 3 Slider component
|
|
14
|
+
* https://m3.material.io/components/sliders
|
|
15
|
+
*
|
|
16
|
+
* Wraps @react-native-community/slider with M3 theme colors.
|
|
17
|
+
* Active track: primary. Inactive track: surfaceContainerHighest. Thumb: primary.
|
|
18
|
+
*/
|
|
19
|
+
const Slider = ({ value = 0, minimumValue = 0, maximumValue = 1, step = 0, onValueChange, onSlidingComplete, disabled = false, style, testID, accessibilityLabel, }) => {
|
|
20
|
+
if (!RNSlider) {
|
|
21
|
+
throw new Error('[zero-to-app] <Slider> requires @react-native-community/slider. ' +
|
|
22
|
+
'Install it with: npx expo install @react-native-community/slider');
|
|
23
|
+
}
|
|
24
|
+
const theme = useTheme();
|
|
25
|
+
const t = theme.tokens.slider;
|
|
26
|
+
return (_jsx(View, { style: [styles.container, style], testID: testID, children: _jsx(RNSlider, { value: value, minimumValue: minimumValue, maximumValue: maximumValue, step: step, disabled: disabled, onValueChange: onValueChange, onSlidingComplete: onSlidingComplete, minimumTrackTintColor: disabled ? theme.onSurfaceVariant : t.activeTrack, maximumTrackTintColor: t.inactiveTrack, thumbTintColor: disabled ? theme.onSurfaceVariant : t.thumb, style: styles.slider, accessibilityLabel: accessibilityLabel }) }));
|
|
27
|
+
};
|
|
28
|
+
Slider.displayName = 'Slider';
|
|
29
|
+
// 4. STYLES
|
|
30
|
+
const styles = StyleSheet.create({
|
|
31
|
+
container: {
|
|
32
|
+
width: '100%',
|
|
33
|
+
},
|
|
34
|
+
slider: {
|
|
35
|
+
width: '100%',
|
|
36
|
+
height: 40,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
// 5. EXPORTS
|
|
40
|
+
export { Slider };
|
|
41
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../components/ui/slider.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,IAAI,QAAQ,GAAoC,IAAI,CAAC;AACrD,IAAI,CAAC;IACH,QAAQ,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC;AAC/D,CAAC;AAAC,MAAM,CAAC;IACP,yCAAyC;AAC3C,CAAC;AAuCD,eAAe;AAEf;;;;;;GAMG;AACH,MAAM,MAAM,GAAG,CAAC,EACd,KAAK,GAAG,CAAC,EACT,YAAY,GAAG,CAAC,EAChB,YAAY,GAAG,CAAC,EAChB,IAAI,GAAG,CAAC,EACR,aAAa,EACb,iBAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,MAAM,EACN,kBAAkB,GACN,EAAE,EAAE;IAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,kEAAkE;YAChE,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,YACpD,KAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EACxE,qBAAqB,EAAE,CAAC,CAAC,aAAa,EACtC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAC3D,KAAK,EAAE,MAAM,CAAC,MAAM,EACpB,kBAAkB,EAAE,kBAAkB,GACtC,GACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,YAAY;AACZ,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,EAAE;KACX;CACF,CAAC,CAAC;AAEH,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ImageProps, ImageSource } from 'expo-image';
|
|
2
|
+
export interface ThemedImageProps extends Omit<ImageProps, 'source'> {
|
|
3
|
+
lightSource: ImageSource;
|
|
4
|
+
darkSource: ImageSource;
|
|
5
|
+
}
|
|
6
|
+
export declare function ThemedImage({ lightSource, darkSource, ...props }: ThemedImageProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=themed-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themed-image.d.ts","sourceRoot":"","sources":["../../../components/ui/themed-image.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;IAClE,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAKlF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Image } from 'expo-image';
|
|
3
|
+
import { useThemeMode } from '../../theme';
|
|
4
|
+
export function ThemedImage({ lightSource, darkSource, ...props }) {
|
|
5
|
+
const { mode } = useThemeMode();
|
|
6
|
+
const source = mode === 'dark' ? darkSource : lightSource;
|
|
7
|
+
return _jsx(Image, { source: source, ...props });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=themed-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themed-image.js","sourceRoot":"","sources":["../../../components/ui/themed-image.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAA2B,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,UAAU,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,EAAoB;IACjF,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAE1D,OAAO,KAAC,KAAK,IAAC,MAAM,EAAE,MAAM,KAAM,KAAK,GAAI,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ViewProps } from 'react-native';
|
|
2
|
+
export type ThemedViewVariant = 'surface' | 'surfaceContainer' | 'card' | 'appbar' | 'primary' | 'background';
|
|
3
|
+
export interface ThemedViewProps extends ViewProps {
|
|
4
|
+
/** Variant selects a semantic background from the theme */
|
|
5
|
+
variant?: ThemedViewVariant;
|
|
6
|
+
/** Override with a specific color */
|
|
7
|
+
color?: string;
|
|
8
|
+
/** Apply border radius from theme. @default true */
|
|
9
|
+
rounded?: boolean;
|
|
10
|
+
/** Number of columns on medium+ screens (1 column on small). Enables responsive grid layout. */
|
|
11
|
+
columns?: number;
|
|
12
|
+
/** Gap between items when columns is set */
|
|
13
|
+
gap?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const ThemedView: {
|
|
16
|
+
({ variant, color, rounded, columns, gap, style, children, onLayout, ...rest }: ThemedViewProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
displayName: string;
|
|
18
|
+
};
|
|
19
|
+
export default ThemedView;
|
|
20
|
+
//# sourceMappingURL=themed-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themed-view.d.ts","sourceRoot":"","sources":["../../../components/ui/themed-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,SAAS,EAA0C,MAAM,cAAc,CAAC;AAIlH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9G,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,UAAU;oFAAsG,eAAe;;CAkF3I,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { View, Platform, StyleSheet } from 'react-native';
|
|
4
|
+
import { useTheme } from '../../theme';
|
|
5
|
+
import { useDimensions, breakpoints } from '../../hooks';
|
|
6
|
+
export const ThemedView = ({ variant = 'surface', color, rounded = true, columns, gap, style, children, onLayout, ...rest }) => {
|
|
7
|
+
const theme = useTheme();
|
|
8
|
+
const { width } = useDimensions();
|
|
9
|
+
const isMid = width >= breakpoints.medium;
|
|
10
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
11
|
+
const variantMap = {
|
|
12
|
+
surface: theme.surface,
|
|
13
|
+
surfaceContainer: theme.surfaceContainer ?? theme.surface,
|
|
14
|
+
card: theme.tokens.card.background,
|
|
15
|
+
appbar: theme.tokens.appbar.background,
|
|
16
|
+
primary: theme.primary,
|
|
17
|
+
background: theme.surface,
|
|
18
|
+
};
|
|
19
|
+
const backgroundColor = color ?? variantMap[variant] ?? theme.surface;
|
|
20
|
+
const viewStyle = [
|
|
21
|
+
{ backgroundColor },
|
|
22
|
+
...(rounded ? [{ borderRadius: theme.shape.surfaceBorderRadius }] : []),
|
|
23
|
+
];
|
|
24
|
+
// Handle responsive grid layout
|
|
25
|
+
if (columns && columns > 1) {
|
|
26
|
+
// Resolve gap from prop, falling back to gap in style
|
|
27
|
+
const flatStyle = style ? StyleSheet.flatten(style) : undefined;
|
|
28
|
+
const effectiveGap = gap ?? flatStyle?.gap ?? 0;
|
|
29
|
+
const gapOffset = effectiveGap * (columns - 1) / columns;
|
|
30
|
+
const containerStyle = {
|
|
31
|
+
flexDirection: 'row',
|
|
32
|
+
flexWrap: 'wrap',
|
|
33
|
+
gap: effectiveGap,
|
|
34
|
+
};
|
|
35
|
+
const handleLayout = (e) => {
|
|
36
|
+
setContainerWidth(e.nativeEvent.layout.width);
|
|
37
|
+
onLayout?.(e);
|
|
38
|
+
};
|
|
39
|
+
const responsiveChildren = React.Children.map(children, (child) => {
|
|
40
|
+
if (!React.isValidElement(child))
|
|
41
|
+
return child;
|
|
42
|
+
let itemStyle;
|
|
43
|
+
if (!isMid) {
|
|
44
|
+
// Small screens: single column
|
|
45
|
+
itemStyle = { width: '100%' };
|
|
46
|
+
}
|
|
47
|
+
else if (Platform.OS === 'web') {
|
|
48
|
+
// Web: use calc() for precise sizing
|
|
49
|
+
itemStyle = {
|
|
50
|
+
flexBasis: `calc(${100 / columns}% - ${gapOffset}px)`,
|
|
51
|
+
flexGrow: 0,
|
|
52
|
+
flexShrink: 0,
|
|
53
|
+
maxWidth: `calc(${100 / columns}% - ${gapOffset}px)`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
else if (containerWidth > 0) {
|
|
57
|
+
// Native: use measured width for pixel-perfect sizing
|
|
58
|
+
const itemWidth = (containerWidth - effectiveGap * (columns - 1)) / columns;
|
|
59
|
+
itemStyle = { width: itemWidth, flexGrow: 0, flexShrink: 0 };
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Native fallback before layout measurement
|
|
63
|
+
itemStyle = { flexBasis: `${Math.floor(100 / columns)}%`, flexShrink: 1 };
|
|
64
|
+
}
|
|
65
|
+
return React.cloneElement(child, {
|
|
66
|
+
style: [child.props.style, itemStyle],
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
return (_jsx(View, { style: [viewStyle, containerStyle, style], onLayout: handleLayout, ...rest, children: responsiveChildren }));
|
|
70
|
+
}
|
|
71
|
+
return (_jsx(View, { style: [viewStyle, style], onLayout: onLayout, ...rest, children: children }));
|
|
72
|
+
};
|
|
73
|
+
ThemedView.displayName = 'ThemedView';
|
|
74
|
+
export default ThemedView;
|
|
75
|
+
//# sourceMappingURL=themed-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themed-view.js","sourceRoot":"","sources":["../../../components/ui/themed-view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text, type TextStyle, type StyleProp, type TextProps as RNTextProps } from 'react-native';
|
|
3
|
+
/**
|
|
4
|
+
* Material Design 3 typography variants.
|
|
5
|
+
*
|
|
6
|
+
* **Display** (57-36px): Hero text, large promotional content
|
|
7
|
+
* **Headline** (32-24px): Page titles, section headers
|
|
8
|
+
* **Title** (22-14px): Card titles, list headers
|
|
9
|
+
* **Body** (16-12px): Main content text
|
|
10
|
+
* **Label** (14-11px): Buttons, captions, metadata
|
|
11
|
+
*/
|
|
12
|
+
export type TypographyVariant = 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall' | 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'labelLarge' | 'labelMedium' | 'labelSmall';
|
|
13
|
+
/**
|
|
14
|
+
* Font weight options.
|
|
15
|
+
* Can use semantic names or numeric values (100-900).
|
|
16
|
+
*/
|
|
17
|
+
export type TypographyWeight = 'light' | 'regular' | 'medium' | 'bold' | number;
|
|
18
|
+
/** Text alignment options */
|
|
19
|
+
export type TypographyAlign = 'left' | 'center' | 'right' | 'justify';
|
|
20
|
+
/**
|
|
21
|
+
* Props for the Typography component.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* // Basic usage with default body text
|
|
26
|
+
* <Typography>Hello, world!</Typography>
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* // Page title
|
|
32
|
+
* <Typography variant="headlineLarge" weight="bold">
|
|
33
|
+
* Welcome Back
|
|
34
|
+
* </Typography>
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* // Card title with custom color
|
|
40
|
+
* <Typography variant="titleMedium" color="#6750A4">
|
|
41
|
+
* Featured Article
|
|
42
|
+
* </Typography>
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* // Muted secondary text
|
|
48
|
+
* <Typography variant="bodySmall" muted>
|
|
49
|
+
* Last updated 2 hours ago
|
|
50
|
+
* </Typography>
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```tsx
|
|
55
|
+
* // Button label (uppercase)
|
|
56
|
+
* <Typography variant="labelLarge" weight="medium" uppercase>
|
|
57
|
+
* Submit
|
|
58
|
+
* </Typography>
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* // Centered hero text
|
|
64
|
+
* <Typography variant="displayMedium" align="center">
|
|
65
|
+
* Build Something Amazing
|
|
66
|
+
* </Typography>
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export interface TypographyProps extends Omit<RNTextProps, 'style'> {
|
|
70
|
+
/** Text content to render */
|
|
71
|
+
children: React.ReactNode;
|
|
72
|
+
/**
|
|
73
|
+
* Typography scale variant following M3 type system.
|
|
74
|
+
* @default 'bodyMedium'
|
|
75
|
+
*/
|
|
76
|
+
variant?: TypographyVariant;
|
|
77
|
+
/**
|
|
78
|
+
* Font weight. Use semantic names or numeric values.
|
|
79
|
+
* @default 'regular'
|
|
80
|
+
*/
|
|
81
|
+
weight?: TypographyWeight;
|
|
82
|
+
/**
|
|
83
|
+
* Text alignment.
|
|
84
|
+
* @default 'left'
|
|
85
|
+
*/
|
|
86
|
+
align?: TypographyAlign;
|
|
87
|
+
/**
|
|
88
|
+
* Custom text color. Defaults to theme's `onSurface` color.
|
|
89
|
+
*/
|
|
90
|
+
color?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Transform text to uppercase.
|
|
93
|
+
* @default false
|
|
94
|
+
*/
|
|
95
|
+
uppercase?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Apply muted styling using theme's `onSurfaceVariant` color.
|
|
98
|
+
* Useful for secondary or supporting text.
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
muted?: boolean;
|
|
102
|
+
/** Additional text styles to merge */
|
|
103
|
+
style?: StyleProp<TextStyle>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Typography component following Material Design 3 type system
|
|
107
|
+
* https://m3.material.io/styles/typography/type-scale-tokens
|
|
108
|
+
*/
|
|
109
|
+
export declare const Typography: React.ForwardRefExoticComponent<TypographyProps & React.RefAttributes<Text>>;
|
|
110
|
+
//# sourceMappingURL=typography.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../components/ui/typography.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAc,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAG/G;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,eAAe,GACf,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,aAAa,GACb,YAAY,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACjE,6BAA6B;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,8EAqFtB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useMemo } from 'react';
|
|
3
|
+
import { StyleSheet, Text } from 'react-native';
|
|
4
|
+
import { useTheme } from '../../theme';
|
|
5
|
+
/**
|
|
6
|
+
* Typography component following Material Design 3 type system
|
|
7
|
+
* https://m3.material.io/styles/typography/type-scale-tokens
|
|
8
|
+
*/
|
|
9
|
+
export const Typography = forwardRef(({ children, variant = 'bodyMedium', weight = 'regular', align = 'left', color, uppercase = false, muted = false, style, numberOfLines, accessibilityRole, ...rest }, ref) => {
|
|
10
|
+
const theme = useTheme();
|
|
11
|
+
const textStyle = useMemo(() => {
|
|
12
|
+
const tokens = theme.tokens.typography;
|
|
13
|
+
// Resolve font size from variant
|
|
14
|
+
const fontSize = tokens[variant] ?? tokens.bodyMedium;
|
|
15
|
+
// Resolve font weight
|
|
16
|
+
let fontWeight;
|
|
17
|
+
if (typeof weight === 'number') {
|
|
18
|
+
fontWeight = weight;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
switch (weight) {
|
|
22
|
+
case 'light':
|
|
23
|
+
fontWeight = tokens.weightLight;
|
|
24
|
+
break;
|
|
25
|
+
case 'medium':
|
|
26
|
+
fontWeight = tokens.weightMedium;
|
|
27
|
+
break;
|
|
28
|
+
case 'bold':
|
|
29
|
+
fontWeight = tokens.weightBold;
|
|
30
|
+
break;
|
|
31
|
+
case 'regular':
|
|
32
|
+
default:
|
|
33
|
+
fontWeight = tokens.weightRegular;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Resolve color
|
|
38
|
+
const textColor = muted
|
|
39
|
+
? theme.onSurfaceVariant
|
|
40
|
+
: color ?? theme.onSurface;
|
|
41
|
+
// Compute line height based on variant
|
|
42
|
+
let lineHeight;
|
|
43
|
+
if (variant.startsWith('display') || variant.startsWith('headline')) {
|
|
44
|
+
lineHeight = fontSize * tokens.lineHeightTight;
|
|
45
|
+
}
|
|
46
|
+
else if (variant.startsWith('title')) {
|
|
47
|
+
lineHeight = fontSize * tokens.lineHeightNormal;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
lineHeight = fontSize * tokens.lineHeightNormal;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
fontSize,
|
|
54
|
+
fontWeight,
|
|
55
|
+
lineHeight,
|
|
56
|
+
textAlign: align,
|
|
57
|
+
color: textColor,
|
|
58
|
+
...(style ? StyleSheet.flatten(style) : undefined),
|
|
59
|
+
};
|
|
60
|
+
}, [variant, weight, align, color, muted, theme, style]);
|
|
61
|
+
const content = uppercase && typeof children === 'string'
|
|
62
|
+
? children.toUpperCase()
|
|
63
|
+
: children;
|
|
64
|
+
const resolvedRole = accessibilityRole ??
|
|
65
|
+
((variant.startsWith('display') || variant.startsWith('headline')) ? 'header' : undefined);
|
|
66
|
+
return (_jsx(Text, { ref: ref, style: textStyle, numberOfLines: numberOfLines, accessibilityRole: resolvedRole, ...rest, children: content }));
|
|
67
|
+
});
|
|
68
|
+
Typography.displayName = 'Typography';
|
|
69
|
+
//# sourceMappingURL=typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.js","sourceRoot":"","sources":["../../../components/ui/typography.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Layout context state for app-level dimensions
|
|
4
|
+
*/
|
|
5
|
+
export interface LayoutContextType {
|
|
6
|
+
/** Height of the app bar in pixels */
|
|
7
|
+
appBarHeight: number;
|
|
8
|
+
/** Set the app bar height */
|
|
9
|
+
setAppBarHeight: (height: number) => void;
|
|
10
|
+
}
|
|
11
|
+
export interface LayoutProviderProps {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
/** Initial app bar height. @default 64 */
|
|
14
|
+
defaultAppBarHeight?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Layout state provider component.
|
|
18
|
+
* Provides app-level layout information like AppBar height.
|
|
19
|
+
*
|
|
20
|
+
* Note: This is automatically included in ZeroToApp provider,
|
|
21
|
+
* so you typically don't need to wrap your app with this directly.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <LayoutProvider>
|
|
26
|
+
* <App />
|
|
27
|
+
* </LayoutProvider>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const LayoutProvider: React.FC<LayoutProviderProps>;
|
|
31
|
+
/**
|
|
32
|
+
* Hook to access layout information (AppBar height, etc).
|
|
33
|
+
* Must be used within a LayoutProvider (automatically included in ZeroToApp).
|
|
34
|
+
*
|
|
35
|
+
* @returns Layout context with appBarHeight and setter
|
|
36
|
+
* @throws Error if used outside of LayoutProvider
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```tsx
|
|
40
|
+
* function MyComponent() {
|
|
41
|
+
* const { appBarHeight } = useLayout();
|
|
42
|
+
*
|
|
43
|
+
* return (
|
|
44
|
+
* <View style={{ marginTop: appBarHeight }}>
|
|
45
|
+
* <Text>Content below app bar</Text>
|
|
46
|
+
* </View>
|
|
47
|
+
* );
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```tsx
|
|
53
|
+
* // Setting the app bar height (typically done by AppTabs)
|
|
54
|
+
* function MyAppBar() {
|
|
55
|
+
* const { setAppBarHeight } = useLayout();
|
|
56
|
+
*
|
|
57
|
+
* useEffect(() => {
|
|
58
|
+
* setAppBarHeight(72); // Custom height
|
|
59
|
+
* }, []);
|
|
60
|
+
*
|
|
61
|
+
* return <AppBar />;
|
|
62
|
+
* }
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare const useLayout: () => LayoutContextType;
|
|
66
|
+
//# sourceMappingURL=layout-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-context.d.ts","sourceRoot":"","sources":["../../context/layout-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAQD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoBxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,SAAS,QAAO,iBAoB5B,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useState, useContext, useCallback } from 'react';
|
|
3
|
+
// Sentinel value to detect missing provider
|
|
4
|
+
const MISSING_PROVIDER = Symbol('MISSING_PROVIDER');
|
|
5
|
+
// Create context with sentinel
|
|
6
|
+
const LayoutContext = createContext(MISSING_PROVIDER);
|
|
7
|
+
/**
|
|
8
|
+
* Layout state provider component.
|
|
9
|
+
* Provides app-level layout information like AppBar height.
|
|
10
|
+
*
|
|
11
|
+
* Note: This is automatically included in ZeroToApp provider,
|
|
12
|
+
* so you typically don't need to wrap your app with this directly.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <LayoutProvider>
|
|
17
|
+
* <App />
|
|
18
|
+
* </LayoutProvider>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export const LayoutProvider = ({ children, defaultAppBarHeight = 64, }) => {
|
|
22
|
+
const [appBarHeight, setAppBarHeightState] = useState(defaultAppBarHeight);
|
|
23
|
+
const setAppBarHeight = useCallback((height) => {
|
|
24
|
+
setAppBarHeightState(height);
|
|
25
|
+
}, []);
|
|
26
|
+
const value = {
|
|
27
|
+
appBarHeight,
|
|
28
|
+
setAppBarHeight,
|
|
29
|
+
};
|
|
30
|
+
return (_jsx(LayoutContext.Provider, { value: value, children: children }));
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Hook to access layout information (AppBar height, etc).
|
|
34
|
+
* Must be used within a LayoutProvider (automatically included in ZeroToApp).
|
|
35
|
+
*
|
|
36
|
+
* @returns Layout context with appBarHeight and setter
|
|
37
|
+
* @throws Error if used outside of LayoutProvider
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* function MyComponent() {
|
|
42
|
+
* const { appBarHeight } = useLayout();
|
|
43
|
+
*
|
|
44
|
+
* return (
|
|
45
|
+
* <View style={{ marginTop: appBarHeight }}>
|
|
46
|
+
* <Text>Content below app bar</Text>
|
|
47
|
+
* </View>
|
|
48
|
+
* );
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* // Setting the app bar height (typically done by AppTabs)
|
|
55
|
+
* function MyAppBar() {
|
|
56
|
+
* const { setAppBarHeight } = useLayout();
|
|
57
|
+
*
|
|
58
|
+
* useEffect(() => {
|
|
59
|
+
* setAppBarHeight(72); // Custom height
|
|
60
|
+
* }, []);
|
|
61
|
+
*
|
|
62
|
+
* return <AppBar />;
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export const useLayout = () => {
|
|
67
|
+
const context = useContext(LayoutContext);
|
|
68
|
+
if (context === MISSING_PROVIDER) {
|
|
69
|
+
throw new Error('useLayout must be used within a LayoutProvider.\n\n' +
|
|
70
|
+
'LayoutProvider is automatically included in ZeroToApp:\n\n' +
|
|
71
|
+
' import { ZeroToApp, createBrand } from "zero-to-app";\n\n' +
|
|
72
|
+
' const brand = createBrand({ ... });\n\n' +
|
|
73
|
+
' function App() {\n' +
|
|
74
|
+
' return (\n' +
|
|
75
|
+
' <ZeroToApp brand={brand}>\n' +
|
|
76
|
+
' <YourComponent />\n' +
|
|
77
|
+
' </ZeroToApp>\n' +
|
|
78
|
+
' );\n' +
|
|
79
|
+
' }');
|
|
80
|
+
}
|
|
81
|
+
return context;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=layout-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-context.js","sourceRoot":"","sources":["../../context/layout-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAYhF,4CAA4C;AAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEpD,+BAA+B;AAC/B,MAAM,aAAa,GAAG,aAAa,CAA8C,gBAAgB,CAAC,CAAC;AAQnG;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,mBAAmB,GAAG,EAAE,GACzB,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE3E,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QACrD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAsB;QAC/B,YAAY;QACZ,eAAe;KAChB,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACjC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAsB,EAAE;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1C,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qDAAqD;YACnD,4DAA4D;YAC5D,6DAA6D;YAC7D,2CAA2C;YAC3C,sBAAsB;YACtB,gBAAgB;YAChB,mCAAmC;YACnC,6BAA6B;YAC7B,sBAAsB;YACtB,UAAU;YACV,KAAK,CACR,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type SharedValue } from 'react-native-reanimated';
|
|
3
|
+
export declare const ScrollContext: React.Context<SharedValue<number> | null>;
|
|
4
|
+
export declare function ScrollProvider({ children }: {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function useScrollContext(): SharedValue<number>;
|
|
8
|
+
//# sourceMappingURL=scroll-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-context.d.ts","sourceRoot":"","sources":["../../context/scroll-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAE3E,eAAO,MAAM,aAAa,2CAAkD,CAAC;AAE7E,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAQzE;AAED,wBAAgB,gBAAgB,wBAM/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, createContext } from 'react';
|
|
3
|
+
import { useSharedValue } from 'react-native-reanimated';
|
|
4
|
+
export const ScrollContext = createContext(null);
|
|
5
|
+
export function ScrollProvider({ children }) {
|
|
6
|
+
const scrollY = useSharedValue(0);
|
|
7
|
+
return (_jsx(ScrollContext.Provider, { value: scrollY, children: children }));
|
|
8
|
+
}
|
|
9
|
+
export function useScrollContext() {
|
|
10
|
+
const context = useContext(ScrollContext);
|
|
11
|
+
if (context === null) {
|
|
12
|
+
throw new Error('useScrollContext must be used within a ScrollProvider');
|
|
13
|
+
}
|
|
14
|
+
return context;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=scroll-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-context.js","sourceRoot":"","sources":["../../context/scroll-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAoB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAE7E,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAiC;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACnC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|