@webority-technologies/mobile 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/lib/commonjs/components/{Header/Header.js → AppBar/AppBar.js} +6 -6
  2. package/lib/commonjs/components/{Header → AppBar}/index.js +4 -4
  3. package/lib/commonjs/components/{Icon/Icon.js → AppIcon/AppIcon.js} +5 -5
  4. package/lib/commonjs/components/{Icon → AppIcon}/index.js +4 -4
  5. package/lib/commonjs/components/{FAB/FAB.js → FloatingActionButton/FloatingActionButton.js} +11 -11
  6. package/lib/commonjs/components/{FAB → FloatingActionButton}/index.js +6 -6
  7. package/lib/commonjs/components/{Field/Field.js → FormField/FormField.js} +5 -5
  8. package/lib/commonjs/components/{LoadingSpinner → FormField}/index.js +4 -4
  9. package/lib/commonjs/components/ImageGallery/ImageGallery.js +2 -2
  10. package/lib/commonjs/components/SearchBar/SearchBar.js +3 -3
  11. package/lib/commonjs/components/{SkeletonLoader/SkeletonLoader.js → Skeleton/Skeleton.js} +1 -1
  12. package/lib/commonjs/components/{SkeletonLoader → Skeleton}/SkeletonContent.js +14 -8
  13. package/lib/commonjs/components/Skeleton/SkeletonList.js +82 -0
  14. package/lib/commonjs/components/{SkeletonLoader → Skeleton}/index.js +15 -8
  15. package/lib/commonjs/components/{LoadingSpinner/LoadingSpinner.js → Spinner/Spinner.js} +5 -5
  16. package/lib/commonjs/components/{Field → Spinner}/index.js +4 -4
  17. package/lib/commonjs/components/index.js +36 -30
  18. package/lib/module/components/{Header/Header.js → AppBar/AppBar.js} +6 -6
  19. package/lib/module/components/AppBar/index.js +4 -0
  20. package/lib/module/components/{Icon/Icon.js → AppIcon/AppIcon.js} +5 -5
  21. package/lib/module/components/AppIcon/index.js +4 -0
  22. package/lib/module/components/{FAB/FAB.js → FloatingActionButton/FloatingActionButton.js} +10 -10
  23. package/lib/module/components/FloatingActionButton/index.js +4 -0
  24. package/lib/module/components/{Field/Field.js → FormField/FormField.js} +5 -5
  25. package/lib/module/components/FormField/index.js +4 -0
  26. package/lib/module/components/ImageGallery/ImageGallery.js +2 -2
  27. package/lib/module/components/SearchBar/SearchBar.js +3 -3
  28. package/lib/module/components/{SkeletonLoader/SkeletonLoader.js → Skeleton/Skeleton.js} +1 -1
  29. package/lib/module/components/{SkeletonLoader → Skeleton}/SkeletonContent.js +9 -3
  30. package/lib/module/components/Skeleton/SkeletonList.js +77 -0
  31. package/lib/module/components/Skeleton/index.js +6 -0
  32. package/lib/module/components/{LoadingSpinner/LoadingSpinner.js → Spinner/Spinner.js} +5 -5
  33. package/lib/module/components/Spinner/index.js +4 -0
  34. package/lib/module/components/index.js +6 -6
  35. package/lib/typescript/commonjs/components/{Header/Header.d.ts → AppBar/AppBar.d.ts} +13 -13
  36. package/lib/typescript/commonjs/components/AppBar/index.d.ts +3 -0
  37. package/lib/typescript/{module/components/Icon/Icon.d.ts → commonjs/components/AppIcon/AppIcon.d.ts} +5 -5
  38. package/lib/typescript/commonjs/components/AppIcon/index.d.ts +3 -0
  39. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +53 -0
  40. package/lib/typescript/commonjs/components/FloatingActionButton/index.d.ts +3 -0
  41. package/lib/typescript/{module/components/Field/Field.d.ts → commonjs/components/FormField/FormField.d.ts} +7 -7
  42. package/lib/typescript/commonjs/components/FormField/index.d.ts +3 -0
  43. package/lib/typescript/commonjs/components/{SkeletonLoader/SkeletonLoader.d.ts → Skeleton/Skeleton.d.ts} +1 -1
  44. package/lib/typescript/{module/components/SkeletonLoader → commonjs/components/Skeleton}/SkeletonContent.d.ts +7 -1
  45. package/lib/typescript/commonjs/components/Skeleton/SkeletonList.d.ts +27 -0
  46. package/lib/typescript/commonjs/components/{SkeletonLoader → Skeleton}/index.d.ts +4 -2
  47. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +20 -0
  48. package/lib/typescript/commonjs/components/Spinner/index.d.ts +3 -0
  49. package/lib/typescript/commonjs/components/index.d.ts +12 -12
  50. package/lib/typescript/module/components/{Header/Header.d.ts → AppBar/AppBar.d.ts} +13 -13
  51. package/lib/typescript/module/components/AppBar/index.d.ts +3 -0
  52. package/lib/typescript/{commonjs/components/Icon/Icon.d.ts → module/components/AppIcon/AppIcon.d.ts} +5 -5
  53. package/lib/typescript/module/components/AppIcon/index.d.ts +3 -0
  54. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +53 -0
  55. package/lib/typescript/module/components/FloatingActionButton/index.d.ts +3 -0
  56. package/lib/typescript/{commonjs/components/Field/Field.d.ts → module/components/FormField/FormField.d.ts} +7 -7
  57. package/lib/typescript/module/components/FormField/index.d.ts +3 -0
  58. package/lib/typescript/module/components/{SkeletonLoader/SkeletonLoader.d.ts → Skeleton/Skeleton.d.ts} +1 -1
  59. package/lib/typescript/{commonjs/components/SkeletonLoader → module/components/Skeleton}/SkeletonContent.d.ts +7 -1
  60. package/lib/typescript/module/components/Skeleton/SkeletonList.d.ts +27 -0
  61. package/lib/typescript/module/components/{SkeletonLoader → Skeleton}/index.d.ts +4 -2
  62. package/lib/typescript/module/components/Spinner/Spinner.d.ts +20 -0
  63. package/lib/typescript/module/components/Spinner/index.d.ts +3 -0
  64. package/lib/typescript/module/components/index.d.ts +12 -12
  65. package/package.json +2 -2
  66. package/lib/module/components/FAB/index.js +0 -4
  67. package/lib/module/components/Field/index.js +0 -4
  68. package/lib/module/components/Header/index.js +0 -4
  69. package/lib/module/components/Icon/index.js +0 -4
  70. package/lib/module/components/LoadingSpinner/index.js +0 -4
  71. package/lib/module/components/SkeletonLoader/index.js +0 -5
  72. package/lib/typescript/commonjs/components/FAB/FAB.d.ts +0 -53
  73. package/lib/typescript/commonjs/components/FAB/index.d.ts +0 -3
  74. package/lib/typescript/commonjs/components/Field/index.d.ts +0 -3
  75. package/lib/typescript/commonjs/components/Header/index.d.ts +0 -3
  76. package/lib/typescript/commonjs/components/Icon/index.d.ts +0 -3
  77. package/lib/typescript/commonjs/components/LoadingSpinner/LoadingSpinner.d.ts +0 -20
  78. package/lib/typescript/commonjs/components/LoadingSpinner/index.d.ts +0 -3
  79. package/lib/typescript/module/components/FAB/FAB.d.ts +0 -53
  80. package/lib/typescript/module/components/FAB/index.d.ts +0 -3
  81. package/lib/typescript/module/components/Field/index.d.ts +0 -3
  82. package/lib/typescript/module/components/Header/index.d.ts +0 -3
  83. package/lib/typescript/module/components/Icon/index.d.ts +0 -3
  84. package/lib/typescript/module/components/LoadingSpinner/LoadingSpinner.d.ts +0 -20
  85. package/lib/typescript/module/components/LoadingSpinner/index.d.ts +0 -3
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, ViewStyle } from 'react-native';
4
+ import type { IconFamily } from '../AppIcon';
5
+ export type FloatingActionButtonSize = 'sm' | 'md' | 'lg';
6
+ export type FloatingActionButtonTone = 'primary' | 'success' | 'warning' | 'error' | 'neutral';
7
+ export type FloatingActionButtonPosition = 'bottomRight' | 'bottomLeft' | 'bottomCenter';
8
+ export interface FloatingActionButtonIconConfig {
9
+ name: string;
10
+ family?: IconFamily;
11
+ }
12
+ export interface FloatingActionButtonProps {
13
+ icon: React.ReactNode | FloatingActionButtonIconConfig;
14
+ onPress: () => void;
15
+ label?: string;
16
+ size?: FloatingActionButtonSize;
17
+ tone?: FloatingActionButtonTone;
18
+ position?: FloatingActionButtonPosition;
19
+ bottomOffset?: number;
20
+ disabled?: boolean;
21
+ hideOnScroll?: boolean;
22
+ isScrolling?: boolean;
23
+ accessibilityLabel: string;
24
+ accessibilityHint?: string;
25
+ style?: StyleProp<ViewStyle>;
26
+ testID?: string;
27
+ }
28
+ declare const FloatingActionButton: React.ForwardRefExoticComponent<FloatingActionButtonProps & React.RefAttributes<View>>;
29
+ export interface FloatingActionButtonGroupAction {
30
+ key: string;
31
+ icon: React.ReactNode;
32
+ label?: string;
33
+ onPress: () => void;
34
+ tone?: FloatingActionButtonTone;
35
+ accessibilityLabel: string;
36
+ }
37
+ export interface FloatingActionButtonGroupProps {
38
+ primaryIcon: React.ReactNode;
39
+ primaryActiveIcon?: React.ReactNode;
40
+ actions: FloatingActionButtonGroupAction[];
41
+ open?: boolean;
42
+ defaultOpen?: boolean;
43
+ onOpenChange?: (open: boolean) => void;
44
+ position?: FloatingActionButtonPosition;
45
+ bottomOffset?: number;
46
+ size?: FloatingActionButtonSize;
47
+ accessibilityLabel?: string;
48
+ testID?: string;
49
+ }
50
+ declare const FloatingActionButtonGroup: React.FC<FloatingActionButtonGroupProps>;
51
+ export { FloatingActionButton, FloatingActionButtonGroup };
52
+ export default FloatingActionButton;
53
+ //# sourceMappingURL=FloatingActionButton.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { FloatingActionButton, FloatingActionButtonGroup, default } from './FloatingActionButton';
2
+ export type { FloatingActionButtonProps, FloatingActionButtonSize, FloatingActionButtonTone, FloatingActionButtonPosition, FloatingActionButtonIconConfig, FloatingActionButtonGroupProps, FloatingActionButtonGroupAction } from './FloatingActionButton';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
- export type FieldLayout = 'stacked' | 'inline';
5
- export interface FieldProps {
4
+ export type FormFieldLayout = 'stacked' | 'inline';
5
+ export interface FormFieldProps {
6
6
  label?: string;
7
7
  helperText?: string;
8
8
  /**
@@ -14,7 +14,7 @@ export interface FieldProps {
14
14
  required?: boolean;
15
15
  children: React.ReactNode;
16
16
  /** 'stacked' (default): label above input. 'inline': label left, input right. */
17
- layout?: FieldLayout;
17
+ layout?: FormFieldLayout;
18
18
  labelStyle?: StyleProp<TextStyle>;
19
19
  helperStyle?: StyleProp<TextStyle>;
20
20
  errorStyle?: StyleProp<TextStyle>;
@@ -22,7 +22,7 @@ export interface FieldProps {
22
22
  accessibilityLabel?: string;
23
23
  testID?: string;
24
24
  }
25
- declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<View>>;
26
- export { Field };
27
- export default Field;
28
- //# sourceMappingURL=Field.d.ts.map
25
+ declare const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<View>>;
26
+ export { FormField };
27
+ export default FormField;
28
+ //# sourceMappingURL=FormField.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { FormField, default } from './FormField';
2
+ export type { FormFieldProps, FormFieldLayout } from './FormField';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -39,4 +39,4 @@ declare const SkeletonCard: React.FC<SkeletonCardProps>;
39
39
  declare const SkeletonListItem: React.FC<SkeletonListItemProps>;
40
40
  export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem };
41
41
  export default Skeleton;
42
- //# sourceMappingURL=SkeletonLoader.d.ts.map
42
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
- import type { SkeletonSpeed, SkeletonVariant } from './SkeletonLoader';
4
+ import type { SkeletonSpeed, SkeletonVariant } from './Skeleton';
5
5
  export type SkeletonContentMode = 'auto' | 'block';
6
6
  export interface SkeletonContentProps {
7
7
  /** When true, replace children with skeleton placeholders. */
@@ -20,6 +20,12 @@ export interface SkeletonContentProps {
20
20
  * cannot inspect.
21
21
  */
22
22
  mode?: SkeletonContentMode;
23
+ /**
24
+ * Repeat `children` this many times while loading. Useful for list layouts where the
25
+ * placeholder shape should appear N times (e.g. 3 site cards, 5 list rows). Ignored when
26
+ * `loading` is false. Default: `1`.
27
+ */
28
+ count?: number;
23
29
  style?: StyleProp<ViewStyle>;
24
30
  testID?: string;
25
31
  }
@@ -0,0 +1,27 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { FlatListProps, StyleProp, ViewStyle } from 'react-native';
3
+ import type { SkeletonSpeed, SkeletonVariant } from './Skeleton';
4
+ export interface SkeletonListProps<ItemT> extends Omit<FlatListProps<ItemT>, 'data' | 'renderItem'> {
5
+ /** Whether the list is in its initial loading state. */
6
+ loading: boolean;
7
+ /** The data to render once loading is complete. */
8
+ data: readonly ItemT[] | null | undefined;
9
+ /** Renders a single real item once data is available. */
10
+ renderItem: FlatListProps<ItemT>['renderItem'];
11
+ /**
12
+ * Renders one placeholder row. Index is provided so callers may vary
13
+ * placeholder shape per slot if desired. Defaults to `null`.
14
+ */
15
+ renderPlaceholder?: (index: number) => ReactNode;
16
+ /** How many placeholder rows to render while loading. Default: 3. */
17
+ placeholderCount?: number;
18
+ /** Animation style — same as Skeleton. */
19
+ variant?: SkeletonVariant;
20
+ /** Animation speed — same as Skeleton. */
21
+ speed?: SkeletonSpeed;
22
+ /** Style applied to the wrapper View around the placeholders. */
23
+ placeholderContainerStyle?: StyleProp<ViewStyle>;
24
+ testID?: string;
25
+ }
26
+ export declare const SkeletonList: <ItemT>(props: SkeletonListProps<ItemT>) => ReactElement;
27
+ //# sourceMappingURL=SkeletonList.d.ts.map
@@ -1,5 +1,7 @@
1
- export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem, default } from './SkeletonLoader';
2
- export type { SkeletonProps, SkeletonCircleProps, SkeletonTextProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonListItemProps, SkeletonVariant, SkeletonSpeed, SkeletonRadius, SkeletonWidth, SkeletonAvatarSize } from './SkeletonLoader';
1
+ export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem, default } from './Skeleton';
2
+ export type { SkeletonProps, SkeletonCircleProps, SkeletonTextProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonListItemProps, SkeletonVariant, SkeletonSpeed, SkeletonRadius, SkeletonWidth, SkeletonAvatarSize } from './Skeleton';
3
3
  export { SkeletonContent } from './SkeletonContent';
4
4
  export type { SkeletonContentProps, SkeletonContentMode } from './SkeletonContent';
5
+ export { SkeletonList } from './SkeletonList';
6
+ export type { SkeletonListProps } from './SkeletonList';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, ViewStyle } from 'react-native';
4
+ export type SpinnerSize = 'small' | 'medium' | 'large';
5
+ export type SpinnerVariant = 'circular' | 'dots';
6
+ export interface SpinnerProps {
7
+ size?: SpinnerSize;
8
+ color?: string;
9
+ message?: string;
10
+ overlay?: boolean;
11
+ backdropColor?: string;
12
+ variant?: SpinnerVariant;
13
+ accessibilityLabel?: string;
14
+ style?: StyleProp<ViewStyle>;
15
+ testID?: string;
16
+ }
17
+ declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<View>>;
18
+ export { Spinner };
19
+ export default Spinner;
20
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { Spinner, default } from './Spinner';
2
+ export type { SpinnerProps, SpinnerSize, SpinnerVariant } from './Spinner';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -32,24 +32,24 @@ export { Drawer } from './Drawer';
32
32
  export type { DrawerProps, DrawerRef, DrawerSide } from './Drawer';
33
33
  export { EmptyState } from './EmptyState';
34
34
  export type { EmptyStateProps, EmptyStateAction, EmptyStateSize } from './EmptyState';
35
- export { Field } from './Field';
36
- export type { FieldProps, FieldLayout } from './Field';
37
- export { FAB, FABGroup } from './FAB';
38
- export type { FABProps, FABSize, FABTone, FABPosition, FABIconConfig, FABGroupProps, FABGroupAction } from './FAB';
35
+ export { FormField } from './FormField';
36
+ export type { FormFieldProps, FormFieldLayout } from './FormField';
37
+ export { FloatingActionButton, FloatingActionButtonGroup } from './FloatingActionButton';
38
+ export type { FloatingActionButtonProps, FloatingActionButtonSize, FloatingActionButtonTone, FloatingActionButtonPosition, FloatingActionButtonIconConfig, FloatingActionButtonGroupProps, FloatingActionButtonGroupAction } from './FloatingActionButton';
39
39
  export { ForceUpdateDialog } from './ForceUpdateDialog';
40
40
  export type { ForceUpdateDialogProps } from './ForceUpdateDialog';
41
- export { Header } from './Header';
42
- export type { HeaderProps, HeaderAction, HeaderVariant } from './Header';
43
- export { Icon } from './Icon';
44
- export type { IconProps, IconFamily, IconSize, IconTone } from './Icon';
41
+ export { AppBar } from './AppBar';
42
+ export type { AppBarProps, AppBarAction, AppBarVariant } from './AppBar';
43
+ export { AppIcon } from './AppIcon';
44
+ export type { AppIconProps, IconFamily, IconSize, IconTone } from './AppIcon';
45
45
  export { ImageGallery } from './ImageGallery';
46
46
  export type { ImageGalleryProps, GalleryImage } from './ImageGallery';
47
47
  export { Input } from './Input';
48
48
  export type { InputProps, InputSize, InputVariant } from './Input';
49
49
  export { ListItem } from './ListItem';
50
50
  export type { ListItemProps, ListItemSize } from './ListItem';
51
- export { LoadingSpinner } from './LoadingSpinner';
52
- export type { LoadingSpinnerProps, LoadingSpinnerSize, LoadingSpinnerVariant } from './LoadingSpinner';
51
+ export { Spinner } from './Spinner';
52
+ export type { SpinnerProps, SpinnerSize, SpinnerVariant } from './Spinner';
53
53
  export { Modal } from './Modal';
54
54
  export type { ModalProps, ModalPresentation } from './Modal';
55
55
  export { NumberInput } from './NumberInput';
@@ -70,8 +70,8 @@ export { Select } from './Select';
70
70
  export type { SelectProps, SelectOption, SelectSize } from './Select';
71
71
  export { Stepper } from './Stepper';
72
72
  export type { StepperProps, StepperVariant, StepperStep, StepperTone } from './Stepper';
73
- export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonCircle, SkeletonContent, SkeletonListItem, SkeletonText } from './SkeletonLoader';
74
- export type { SkeletonProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonCircleProps, SkeletonContentMode, SkeletonContentProps, SkeletonListItemProps, SkeletonTextProps, SkeletonVariant, SkeletonSpeed } from './SkeletonLoader';
73
+ export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonCircle, SkeletonContent, SkeletonList, SkeletonListItem, SkeletonText } from './Skeleton';
74
+ export type { SkeletonProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonCircleProps, SkeletonContentMode, SkeletonContentProps, SkeletonListItemProps, SkeletonListProps, SkeletonTextProps, SkeletonVariant, SkeletonSpeed } from './Skeleton';
75
75
  export { Slider } from './Slider';
76
76
  export type { SliderProps, SliderTone, SliderSize } from './Slider';
77
77
  export { Swipeable } from './Swipeable';
@@ -1,24 +1,24 @@
1
1
  import React from 'react';
2
2
  import { Animated, View } from 'react-native';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
- export type HeaderVariant = 'default' | 'large' | 'compact';
5
- export type HeaderTitleAlignment = 'left' | 'center';
6
- export interface HeaderAction {
4
+ export type AppBarVariant = 'default' | 'large' | 'compact';
5
+ export type AppBarTitleAlignment = 'left' | 'center';
6
+ export interface AppBarAction {
7
7
  icon: React.ReactNode;
8
8
  onPress: () => void;
9
9
  accessibilityLabel?: string;
10
10
  testID?: string;
11
11
  }
12
- export interface HeaderRightAction extends HeaderAction {
12
+ export interface AppBarRightAction extends AppBarAction {
13
13
  badge?: number | string;
14
14
  }
15
- export interface HeaderProps {
15
+ export interface AppBarProps {
16
16
  title?: string;
17
17
  subtitle?: string;
18
- titleAlignment?: HeaderTitleAlignment;
19
- leftAction?: HeaderAction;
20
- rightActions?: HeaderRightAction[];
21
- variant?: HeaderVariant;
18
+ titleAlignment?: AppBarTitleAlignment;
19
+ leftAction?: AppBarAction;
20
+ rightActions?: AppBarRightAction[];
21
+ variant?: AppBarVariant;
22
22
  transparent?: boolean;
23
23
  /**
24
24
  * Optional ScrollView vertical offset (Animated.Value) used to drive the
@@ -30,7 +30,7 @@ export interface HeaderProps {
30
30
  style?: StyleProp<ViewStyle>;
31
31
  testID?: string;
32
32
  }
33
- declare const Header: React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<View>>;
34
- export { Header };
35
- export default Header;
36
- //# sourceMappingURL=Header.d.ts.map
33
+ declare const AppBar: React.ForwardRefExoticComponent<AppBarProps & React.RefAttributes<View>>;
34
+ export { AppBar };
35
+ export default AppBar;
36
+ //# sourceMappingURL=AppBar.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { AppBar, default } from './AppBar';
2
+ export type { AppBarProps, AppBarVariant, AppBarTitleAlignment, AppBarAction, AppBarRightAction } from './AppBar';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -4,7 +4,7 @@ import type { StyleProp, ViewStyle } from 'react-native';
4
4
  export type IconFamily = 'feather' | 'material-community' | 'material' | 'ionicons';
5
5
  export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
6
6
  export type IconTone = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'muted';
7
- export interface IconProps {
7
+ export interface AppIconProps {
8
8
  name: string;
9
9
  family?: IconFamily;
10
10
  size?: IconSize;
@@ -14,7 +14,7 @@ export interface IconProps {
14
14
  accessibilityLabel?: string;
15
15
  testID?: string;
16
16
  }
17
- declare const Icon: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<View>>;
18
- export { Icon };
19
- export default Icon;
20
- //# sourceMappingURL=Icon.d.ts.map
17
+ declare const AppIcon: React.ForwardRefExoticComponent<AppIconProps & React.RefAttributes<View>>;
18
+ export { AppIcon };
19
+ export default AppIcon;
20
+ //# sourceMappingURL=AppIcon.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { AppIcon, default } from './AppIcon';
2
+ export type { AppIconProps, IconFamily, IconSize, IconTone } from './AppIcon';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, ViewStyle } from 'react-native';
4
+ import type { IconFamily } from '../AppIcon';
5
+ export type FloatingActionButtonSize = 'sm' | 'md' | 'lg';
6
+ export type FloatingActionButtonTone = 'primary' | 'success' | 'warning' | 'error' | 'neutral';
7
+ export type FloatingActionButtonPosition = 'bottomRight' | 'bottomLeft' | 'bottomCenter';
8
+ export interface FloatingActionButtonIconConfig {
9
+ name: string;
10
+ family?: IconFamily;
11
+ }
12
+ export interface FloatingActionButtonProps {
13
+ icon: React.ReactNode | FloatingActionButtonIconConfig;
14
+ onPress: () => void;
15
+ label?: string;
16
+ size?: FloatingActionButtonSize;
17
+ tone?: FloatingActionButtonTone;
18
+ position?: FloatingActionButtonPosition;
19
+ bottomOffset?: number;
20
+ disabled?: boolean;
21
+ hideOnScroll?: boolean;
22
+ isScrolling?: boolean;
23
+ accessibilityLabel: string;
24
+ accessibilityHint?: string;
25
+ style?: StyleProp<ViewStyle>;
26
+ testID?: string;
27
+ }
28
+ declare const FloatingActionButton: React.ForwardRefExoticComponent<FloatingActionButtonProps & React.RefAttributes<View>>;
29
+ export interface FloatingActionButtonGroupAction {
30
+ key: string;
31
+ icon: React.ReactNode;
32
+ label?: string;
33
+ onPress: () => void;
34
+ tone?: FloatingActionButtonTone;
35
+ accessibilityLabel: string;
36
+ }
37
+ export interface FloatingActionButtonGroupProps {
38
+ primaryIcon: React.ReactNode;
39
+ primaryActiveIcon?: React.ReactNode;
40
+ actions: FloatingActionButtonGroupAction[];
41
+ open?: boolean;
42
+ defaultOpen?: boolean;
43
+ onOpenChange?: (open: boolean) => void;
44
+ position?: FloatingActionButtonPosition;
45
+ bottomOffset?: number;
46
+ size?: FloatingActionButtonSize;
47
+ accessibilityLabel?: string;
48
+ testID?: string;
49
+ }
50
+ declare const FloatingActionButtonGroup: React.FC<FloatingActionButtonGroupProps>;
51
+ export { FloatingActionButton, FloatingActionButtonGroup };
52
+ export default FloatingActionButton;
53
+ //# sourceMappingURL=FloatingActionButton.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { FloatingActionButton, FloatingActionButtonGroup, default } from './FloatingActionButton';
2
+ export type { FloatingActionButtonProps, FloatingActionButtonSize, FloatingActionButtonTone, FloatingActionButtonPosition, FloatingActionButtonIconConfig, FloatingActionButtonGroupProps, FloatingActionButtonGroupAction } from './FloatingActionButton';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
- export type FieldLayout = 'stacked' | 'inline';
5
- export interface FieldProps {
4
+ export type FormFieldLayout = 'stacked' | 'inline';
5
+ export interface FormFieldProps {
6
6
  label?: string;
7
7
  helperText?: string;
8
8
  /**
@@ -14,7 +14,7 @@ export interface FieldProps {
14
14
  required?: boolean;
15
15
  children: React.ReactNode;
16
16
  /** 'stacked' (default): label above input. 'inline': label left, input right. */
17
- layout?: FieldLayout;
17
+ layout?: FormFieldLayout;
18
18
  labelStyle?: StyleProp<TextStyle>;
19
19
  helperStyle?: StyleProp<TextStyle>;
20
20
  errorStyle?: StyleProp<TextStyle>;
@@ -22,7 +22,7 @@ export interface FieldProps {
22
22
  accessibilityLabel?: string;
23
23
  testID?: string;
24
24
  }
25
- declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<View>>;
26
- export { Field };
27
- export default Field;
28
- //# sourceMappingURL=Field.d.ts.map
25
+ declare const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<View>>;
26
+ export { FormField };
27
+ export default FormField;
28
+ //# sourceMappingURL=FormField.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { FormField, default } from './FormField';
2
+ export type { FormFieldProps, FormFieldLayout } from './FormField';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -39,4 +39,4 @@ declare const SkeletonCard: React.FC<SkeletonCardProps>;
39
39
  declare const SkeletonListItem: React.FC<SkeletonListItemProps>;
40
40
  export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem };
41
41
  export default Skeleton;
42
- //# sourceMappingURL=SkeletonLoader.d.ts.map
42
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
- import type { SkeletonSpeed, SkeletonVariant } from './SkeletonLoader';
4
+ import type { SkeletonSpeed, SkeletonVariant } from './Skeleton';
5
5
  export type SkeletonContentMode = 'auto' | 'block';
6
6
  export interface SkeletonContentProps {
7
7
  /** When true, replace children with skeleton placeholders. */
@@ -20,6 +20,12 @@ export interface SkeletonContentProps {
20
20
  * cannot inspect.
21
21
  */
22
22
  mode?: SkeletonContentMode;
23
+ /**
24
+ * Repeat `children` this many times while loading. Useful for list layouts where the
25
+ * placeholder shape should appear N times (e.g. 3 site cards, 5 list rows). Ignored when
26
+ * `loading` is false. Default: `1`.
27
+ */
28
+ count?: number;
23
29
  style?: StyleProp<ViewStyle>;
24
30
  testID?: string;
25
31
  }
@@ -0,0 +1,27 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { FlatListProps, StyleProp, ViewStyle } from 'react-native';
3
+ import type { SkeletonSpeed, SkeletonVariant } from './Skeleton';
4
+ export interface SkeletonListProps<ItemT> extends Omit<FlatListProps<ItemT>, 'data' | 'renderItem'> {
5
+ /** Whether the list is in its initial loading state. */
6
+ loading: boolean;
7
+ /** The data to render once loading is complete. */
8
+ data: readonly ItemT[] | null | undefined;
9
+ /** Renders a single real item once data is available. */
10
+ renderItem: FlatListProps<ItemT>['renderItem'];
11
+ /**
12
+ * Renders one placeholder row. Index is provided so callers may vary
13
+ * placeholder shape per slot if desired. Defaults to `null`.
14
+ */
15
+ renderPlaceholder?: (index: number) => ReactNode;
16
+ /** How many placeholder rows to render while loading. Default: 3. */
17
+ placeholderCount?: number;
18
+ /** Animation style — same as Skeleton. */
19
+ variant?: SkeletonVariant;
20
+ /** Animation speed — same as Skeleton. */
21
+ speed?: SkeletonSpeed;
22
+ /** Style applied to the wrapper View around the placeholders. */
23
+ placeholderContainerStyle?: StyleProp<ViewStyle>;
24
+ testID?: string;
25
+ }
26
+ export declare const SkeletonList: <ItemT>(props: SkeletonListProps<ItemT>) => ReactElement;
27
+ //# sourceMappingURL=SkeletonList.d.ts.map
@@ -1,5 +1,7 @@
1
- export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem, default } from './SkeletonLoader';
2
- export type { SkeletonProps, SkeletonCircleProps, SkeletonTextProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonListItemProps, SkeletonVariant, SkeletonSpeed, SkeletonRadius, SkeletonWidth, SkeletonAvatarSize } from './SkeletonLoader';
1
+ export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem, default } from './Skeleton';
2
+ export type { SkeletonProps, SkeletonCircleProps, SkeletonTextProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonListItemProps, SkeletonVariant, SkeletonSpeed, SkeletonRadius, SkeletonWidth, SkeletonAvatarSize } from './Skeleton';
3
3
  export { SkeletonContent } from './SkeletonContent';
4
4
  export type { SkeletonContentProps, SkeletonContentMode } from './SkeletonContent';
5
+ export { SkeletonList } from './SkeletonList';
6
+ export type { SkeletonListProps } from './SkeletonList';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, ViewStyle } from 'react-native';
4
+ export type SpinnerSize = 'small' | 'medium' | 'large';
5
+ export type SpinnerVariant = 'circular' | 'dots';
6
+ export interface SpinnerProps {
7
+ size?: SpinnerSize;
8
+ color?: string;
9
+ message?: string;
10
+ overlay?: boolean;
11
+ backdropColor?: string;
12
+ variant?: SpinnerVariant;
13
+ accessibilityLabel?: string;
14
+ style?: StyleProp<ViewStyle>;
15
+ testID?: string;
16
+ }
17
+ declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<View>>;
18
+ export { Spinner };
19
+ export default Spinner;
20
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { Spinner, default } from './Spinner';
2
+ export type { SpinnerProps, SpinnerSize, SpinnerVariant } from './Spinner';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -32,24 +32,24 @@ export { Drawer } from './Drawer';
32
32
  export type { DrawerProps, DrawerRef, DrawerSide } from './Drawer';
33
33
  export { EmptyState } from './EmptyState';
34
34
  export type { EmptyStateProps, EmptyStateAction, EmptyStateSize } from './EmptyState';
35
- export { Field } from './Field';
36
- export type { FieldProps, FieldLayout } from './Field';
37
- export { FAB, FABGroup } from './FAB';
38
- export type { FABProps, FABSize, FABTone, FABPosition, FABIconConfig, FABGroupProps, FABGroupAction } from './FAB';
35
+ export { FormField } from './FormField';
36
+ export type { FormFieldProps, FormFieldLayout } from './FormField';
37
+ export { FloatingActionButton, FloatingActionButtonGroup } from './FloatingActionButton';
38
+ export type { FloatingActionButtonProps, FloatingActionButtonSize, FloatingActionButtonTone, FloatingActionButtonPosition, FloatingActionButtonIconConfig, FloatingActionButtonGroupProps, FloatingActionButtonGroupAction } from './FloatingActionButton';
39
39
  export { ForceUpdateDialog } from './ForceUpdateDialog';
40
40
  export type { ForceUpdateDialogProps } from './ForceUpdateDialog';
41
- export { Header } from './Header';
42
- export type { HeaderProps, HeaderAction, HeaderVariant } from './Header';
43
- export { Icon } from './Icon';
44
- export type { IconProps, IconFamily, IconSize, IconTone } from './Icon';
41
+ export { AppBar } from './AppBar';
42
+ export type { AppBarProps, AppBarAction, AppBarVariant } from './AppBar';
43
+ export { AppIcon } from './AppIcon';
44
+ export type { AppIconProps, IconFamily, IconSize, IconTone } from './AppIcon';
45
45
  export { ImageGallery } from './ImageGallery';
46
46
  export type { ImageGalleryProps, GalleryImage } from './ImageGallery';
47
47
  export { Input } from './Input';
48
48
  export type { InputProps, InputSize, InputVariant } from './Input';
49
49
  export { ListItem } from './ListItem';
50
50
  export type { ListItemProps, ListItemSize } from './ListItem';
51
- export { LoadingSpinner } from './LoadingSpinner';
52
- export type { LoadingSpinnerProps, LoadingSpinnerSize, LoadingSpinnerVariant } from './LoadingSpinner';
51
+ export { Spinner } from './Spinner';
52
+ export type { SpinnerProps, SpinnerSize, SpinnerVariant } from './Spinner';
53
53
  export { Modal } from './Modal';
54
54
  export type { ModalProps, ModalPresentation } from './Modal';
55
55
  export { NumberInput } from './NumberInput';
@@ -70,8 +70,8 @@ export { Select } from './Select';
70
70
  export type { SelectProps, SelectOption, SelectSize } from './Select';
71
71
  export { Stepper } from './Stepper';
72
72
  export type { StepperProps, StepperVariant, StepperStep, StepperTone } from './Stepper';
73
- export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonCircle, SkeletonContent, SkeletonListItem, SkeletonText } from './SkeletonLoader';
74
- export type { SkeletonProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonCircleProps, SkeletonContentMode, SkeletonContentProps, SkeletonListItemProps, SkeletonTextProps, SkeletonVariant, SkeletonSpeed } from './SkeletonLoader';
73
+ export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonCircle, SkeletonContent, SkeletonList, SkeletonListItem, SkeletonText } from './Skeleton';
74
+ export type { SkeletonProps, SkeletonAvatarProps, SkeletonCardProps, SkeletonCircleProps, SkeletonContentMode, SkeletonContentProps, SkeletonListItemProps, SkeletonListProps, SkeletonTextProps, SkeletonVariant, SkeletonSpeed } from './Skeleton';
75
75
  export { Slider } from './Slider';
76
76
  export type { SliderProps, SliderTone, SliderSize } from './Slider';
77
77
  export { Swipeable } from './Swipeable';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority-technologies/mobile",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Beautiful, animated, accessible React Native components plus API/auth/logging/network/storage utilities for Webority projects.",
5
5
  "keywords": [
6
6
  "react-native",
@@ -73,7 +73,7 @@
73
73
  "react-native-gesture-handler": "^2.21.0",
74
74
  "react-native-keychain": ">=9.0.0",
75
75
  "react-native-permissions": ">=4.0.0",
76
- "react-native-reanimated": "^3.16.0 || ^4.0.0",
76
+ "react-native-reanimated": "^4.0.0",
77
77
  "react-native-safe-area-context": ">=5.4.0",
78
78
  "react-native-vector-icons": "^10.2.0"
79
79
  },
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { FAB, FABGroup, default } from "./FAB.js";
4
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { Field, default } from "./Field.js";
4
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { Header, default } from "./Header.js";
4
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { Icon, default } from "./Icon.js";
4
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { LoadingSpinner, default } from "./LoadingSpinner.js";
4
- //# sourceMappingURL=index.js.map
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- export { Skeleton, SkeletonCircle, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonListItem, default } from "./SkeletonLoader.js";
4
- export { SkeletonContent } from "./SkeletonContent.js";
5
- //# sourceMappingURL=index.js.map