@solostylist/ui-kit-native 1.0.1 → 1.0.3

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 (150) hide show
  1. package/dist/hooks/use-count-down.d.ts +0 -2
  2. package/dist/hooks/use-count-down.d.ts.map +1 -1
  3. package/dist/hooks/use-count-down.js +0 -1
  4. package/dist/index.d.ts +5 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/s-avatar/s-avatar.d.ts +4 -8
  8. package/dist/s-avatar/s-avatar.d.ts.map +1 -1
  9. package/dist/s-avatar/s-avatar.js +49 -42
  10. package/dist/s-button/s-button.d.ts +0 -2
  11. package/dist/s-button/s-button.d.ts.map +1 -1
  12. package/dist/s-button/s-button.js +27 -24
  13. package/dist/s-button-link/s-button-link.d.ts +0 -2
  14. package/dist/s-button-link/s-button-link.d.ts.map +1 -1
  15. package/dist/s-button-link/s-button-link.js +21 -26
  16. package/dist/s-chat-input/index.d.ts +1 -1
  17. package/dist/s-chat-input/index.d.ts.map +1 -1
  18. package/dist/s-chat-input/s-chat-input.d.ts +19 -8
  19. package/dist/s-chat-input/s-chat-input.d.ts.map +1 -1
  20. package/dist/s-chat-input/s-chat-input.js +115 -46
  21. package/dist/s-chat-message/s-chat-message.d.ts +5 -7
  22. package/dist/s-chat-message/s-chat-message.d.ts.map +1 -1
  23. package/dist/s-chat-message/s-chat-message.js +100 -175
  24. package/dist/s-checkbox/s-checkbox.d.ts +0 -2
  25. package/dist/s-checkbox/s-checkbox.d.ts.map +1 -1
  26. package/dist/s-checkbox/s-checkbox.js +11 -18
  27. package/dist/s-chip/s-chip.d.ts +0 -2
  28. package/dist/s-chip/s-chip.d.ts.map +1 -1
  29. package/dist/s-chip/s-chip.js +35 -54
  30. package/dist/s-code-block/s-code-block.d.ts +0 -2
  31. package/dist/s-code-block/s-code-block.d.ts.map +1 -1
  32. package/dist/s-code-block/s-code-block.js +28 -40
  33. package/dist/s-comment-message/s-comment-message.d.ts +3 -5
  34. package/dist/s-comment-message/s-comment-message.d.ts.map +1 -1
  35. package/dist/s-comment-message/s-comment-message.js +54 -167
  36. package/dist/s-copyable-text/s-copyable-text.d.ts +0 -2
  37. package/dist/s-copyable-text/s-copyable-text.d.ts.map +1 -1
  38. package/dist/s-copyable-text/s-copyable-text.js +20 -45
  39. package/dist/s-countdown/index.d.ts +0 -1
  40. package/dist/s-countdown/index.d.ts.map +1 -1
  41. package/dist/s-countdown/index.js +0 -1
  42. package/dist/s-countdown/s-count-box.d.ts +5 -3
  43. package/dist/s-countdown/s-count-box.d.ts.map +1 -1
  44. package/dist/s-countdown/s-count-box.js +69 -60
  45. package/dist/s-countdown/s-countdown.d.ts +6 -3
  46. package/dist/s-countdown/s-countdown.d.ts.map +1 -1
  47. package/dist/s-countdown/s-countdown.js +11 -10
  48. package/dist/s-data-table/s-data-table.d.ts +0 -3
  49. package/dist/s-data-table/s-data-table.d.ts.map +1 -1
  50. package/dist/s-data-table/s-data-table.js +27 -50
  51. package/dist/s-date-picker/s-date-picker.d.ts +0 -2
  52. package/dist/s-date-picker/s-date-picker.d.ts.map +1 -1
  53. package/dist/s-date-picker/s-date-picker.js +51 -110
  54. package/dist/s-date-time-picker/s-date-time-picker.d.ts +0 -2
  55. package/dist/s-date-time-picker/s-date-time-picker.d.ts.map +1 -1
  56. package/dist/s-date-time-picker/s-date-time-picker.js +111 -203
  57. package/dist/s-divider/index.d.ts +2 -0
  58. package/dist/s-divider/index.d.ts.map +1 -0
  59. package/dist/s-divider/index.js +1 -0
  60. package/dist/s-divider/s-divider.d.ts +24 -0
  61. package/dist/s-divider/s-divider.d.ts.map +1 -0
  62. package/dist/s-divider/s-divider.js +30 -0
  63. package/dist/s-file-dropzone/s-file-dropzone.d.ts +0 -35
  64. package/dist/s-file-dropzone/s-file-dropzone.d.ts.map +1 -1
  65. package/dist/s-file-dropzone/s-file-dropzone.js +46 -120
  66. package/dist/s-file-icon/s-file-icon.d.ts +0 -2
  67. package/dist/s-file-icon/s-file-icon.d.ts.map +1 -1
  68. package/dist/s-file-icon/s-file-icon.js +11 -12
  69. package/dist/s-form/s-form.d.ts +0 -1
  70. package/dist/s-form/s-form.d.ts.map +1 -1
  71. package/dist/s-form/s-form.js +0 -1
  72. package/dist/s-icon-button/s-icon-button.d.ts +9 -9
  73. package/dist/s-icon-button/s-icon-button.d.ts.map +1 -1
  74. package/dist/s-icon-button/s-icon-button.js +38 -4
  75. package/dist/s-image-comparison/s-image-comparison.d.ts +3 -5
  76. package/dist/s-image-comparison/s-image-comparison.d.ts.map +1 -1
  77. package/dist/s-image-comparison/s-image-comparison.js +75 -102
  78. package/dist/s-label/s-label.d.ts +0 -1
  79. package/dist/s-label/s-label.d.ts.map +1 -1
  80. package/dist/s-label/s-label.js +8 -24
  81. package/dist/s-language-switcher/s-language-switcher.d.ts +2 -5
  82. package/dist/s-language-switcher/s-language-switcher.d.ts.map +1 -1
  83. package/dist/s-language-switcher/s-language-switcher.js +14 -25
  84. package/dist/s-lazy-image/s-lazy-image.d.ts +4 -6
  85. package/dist/s-lazy-image/s-lazy-image.d.ts.map +1 -1
  86. package/dist/s-lazy-image/s-lazy-image.js +37 -34
  87. package/dist/s-moving-border/s-moving-border.d.ts +0 -2
  88. package/dist/s-moving-border/s-moving-border.d.ts.map +1 -1
  89. package/dist/s-moving-border/s-moving-border.js +19 -24
  90. package/dist/s-multi-select/s-multi-select.d.ts +0 -2
  91. package/dist/s-multi-select/s-multi-select.d.ts.map +1 -1
  92. package/dist/s-multi-select/s-multi-select.js +54 -105
  93. package/dist/s-pagination/s-pagination.d.ts +12 -6
  94. package/dist/s-pagination/s-pagination.d.ts.map +1 -1
  95. package/dist/s-pagination/s-pagination.js +69 -43
  96. package/dist/s-rating/s-rating.d.ts +0 -2
  97. package/dist/s-rating/s-rating.d.ts.map +1 -1
  98. package/dist/s-rating/s-rating.js +31 -29
  99. package/dist/s-review/s-review.d.ts +6 -8
  100. package/dist/s-review/s-review.d.ts.map +1 -1
  101. package/dist/s-review/s-review.js +66 -153
  102. package/dist/s-scroll-to-top/s-scroll-to-top.d.ts +0 -2
  103. package/dist/s-scroll-to-top/s-scroll-to-top.d.ts.map +1 -1
  104. package/dist/s-scroll-to-top/s-scroll-to-top.js +17 -32
  105. package/dist/s-select/s-select.d.ts +5 -5
  106. package/dist/s-select/s-select.d.ts.map +1 -1
  107. package/dist/s-select/s-select.js +54 -94
  108. package/dist/s-select-list/s-select-list.d.ts +0 -2
  109. package/dist/s-select-list/s-select-list.d.ts.map +1 -1
  110. package/dist/s-select-list/s-select-list.js +24 -38
  111. package/dist/s-skeleton/index.d.ts +3 -0
  112. package/dist/s-skeleton/index.d.ts.map +1 -0
  113. package/dist/s-skeleton/index.js +1 -0
  114. package/dist/s-skeleton/s-skeleton.d.ts +27 -0
  115. package/dist/s-skeleton/s-skeleton.d.ts.map +1 -0
  116. package/dist/s-skeleton/s-skeleton.js +126 -0
  117. package/dist/s-switch/index.d.ts +3 -0
  118. package/dist/s-switch/index.d.ts.map +1 -0
  119. package/dist/s-switch/index.js +1 -0
  120. package/dist/s-switch/s-switch.d.ts +30 -0
  121. package/dist/s-switch/s-switch.d.ts.map +1 -0
  122. package/dist/s-switch/s-switch.js +44 -0
  123. package/dist/s-text-field/s-text-field.d.ts +0 -2
  124. package/dist/s-text-field/s-text-field.d.ts.map +1 -1
  125. package/dist/s-text-field/s-text-field.js +10 -23
  126. package/dist/s-text-shimmer/s-text-shimmer.d.ts +0 -14
  127. package/dist/s-text-shimmer/s-text-shimmer.d.ts.map +1 -1
  128. package/dist/s-text-shimmer/s-text-shimmer.js +28 -46
  129. package/dist/s-text-truncation/s-text-truncation.d.ts +4 -7
  130. package/dist/s-text-truncation/s-text-truncation.d.ts.map +1 -1
  131. package/dist/s-text-truncation/s-text-truncation.js +74 -34
  132. package/dist/s-tip/s-tip.d.ts +0 -1
  133. package/dist/s-tip/s-tip.d.ts.map +1 -1
  134. package/dist/s-tip/s-tip.js +9 -16
  135. package/dist/s-tooltip/index.d.ts +2 -0
  136. package/dist/s-tooltip/index.d.ts.map +1 -0
  137. package/dist/s-tooltip/index.js +1 -0
  138. package/dist/s-tooltip/s-tooltip.d.ts +23 -0
  139. package/dist/s-tooltip/s-tooltip.d.ts.map +1 -0
  140. package/dist/s-tooltip/s-tooltip.js +17 -0
  141. package/dist/s-zoom-image/s-zoom-image.d.ts +3 -5
  142. package/dist/s-zoom-image/s-zoom-image.d.ts.map +1 -1
  143. package/dist/s-zoom-image/s-zoom-image.js +16 -21
  144. package/dist/theme/theme-primitives.d.ts +10 -0
  145. package/dist/theme/theme-primitives.d.ts.map +1 -1
  146. package/dist/theme/theme-primitives.js +11 -0
  147. package/dist/utils/bytes-to-size.d.ts +0 -1
  148. package/dist/utils/bytes-to-size.d.ts.map +1 -1
  149. package/dist/utils/bytes-to-size.js +0 -1
  150. package/package.json +3 -2
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  /**
4
4
  * Custom file type that represents a file with basic information
5
- * Synced with web SFileDropzone from @solostylist/ui-kit
6
5
  */
7
6
  export type CustomFile = {
8
7
  /** File name with extension */
@@ -16,7 +15,6 @@ export type CustomFile = {
16
15
  };
17
16
  /**
18
17
  * Props interface for SFileDropzone component
19
- * Synced with web SFileDropzone from @solostylist/ui-kit
20
18
  */
21
19
  export interface SFileDropzoneProps {
22
20
  /** Additional hint text displayed below the main upload message */
@@ -56,39 +54,6 @@ export interface SFileDropzoneProps {
56
54
  * A file dropzone component for React Native with file management and form integration.
57
55
  * Since React Native doesn't support drag-and-drop, this component provides a pressable
58
56
  * area that can be used with expo-document-picker or similar libraries.
59
- * Synced with web SFileDropzone from @solostylist/ui-kit for cross-platform consistency.
60
- *
61
- * @example
62
- * ```tsx
63
- * import * as DocumentPicker from 'expo-document-picker';
64
- * import { SFileDropzone } from '@solostylist/ui-kit-native';
65
- *
66
- * const [files, setFiles] = useState<CustomFile[]>([]);
67
- *
68
- * const handlePickFiles = async () => {
69
- * const result = await DocumentPicker.getDocumentAsync({
70
- * type: '*\/*',
71
- * multiple: true,
72
- * });
73
- *
74
- * if (result.type === 'success') {
75
- * setFiles([...files, {
76
- * name: result.name,
77
- * size: result.size,
78
- * uri: result.uri,
79
- * type: result.mimeType,
80
- * }]);
81
- * }
82
- * };
83
- *
84
- * <SFileDropzone
85
- * label="Upload Files"
86
- * files={files}
87
- * onPress={handlePickFiles}
88
- * onRemove={(file) => setFiles(files.filter(f => f.name !== file.name))}
89
- * onRemoveAll={() => setFiles([])}
90
- * />
91
- * ```
92
57
  */
93
58
  export declare const SFileDropzone: {
94
59
  ({ hint, label, error, onRemoveAll, onRemove, onPress, onFilesChange, required, isShowBtnRemoveAll, disabled, files, style, enableBuiltInPicker, multiple, accept, }: SFileDropzoneProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-file-dropzone.d.ts","sourceRoot":"","sources":["../../src/s-file-dropzone/s-file-dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAA2C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAQvG;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,uCAAuC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,aAAa;0KAgBvB,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CA0NxC,CAAC;AAIF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"s-file-dropzone.d.ts","sourceRoot":"","sources":["../../src/s-file-dropzone/s-file-dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAU3F;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,uCAAuC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa;0KAgBvB,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CA6KxC,CAAC;AAIF,eAAe,aAAa,CAAC"}
@@ -2,50 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { MaterialCommunityIcons } from '@expo/vector-icons';
3
3
  import * as DocumentPicker from 'expo-document-picker';
4
4
  import { useMemo } from 'react';
5
- import { Pressable, ScrollView, StyleSheet, View } from 'react-native';
6
- import { Button, Text } from 'react-native-paper';
5
+ import { Pressable, ScrollView, View } from 'react-native';
7
6
  import { gray, lightGray } from '@solostylist/core';
7
+ import { SButton } from '../s-button';
8
8
  import { SFileIcon } from '../s-file-icon';
9
9
  import { SForm } from '../s-form';
10
+ import { SIconButton } from '../s-icon-button';
11
+ import { SText } from '../s-text';
10
12
  import { useSTheme } from '../theme';
11
13
  import { bytesToSize } from '../utils';
12
14
  /**
13
15
  * A file dropzone component for React Native with file management and form integration.
14
16
  * Since React Native doesn't support drag-and-drop, this component provides a pressable
15
17
  * area that can be used with expo-document-picker or similar libraries.
16
- * Synced with web SFileDropzone from @solostylist/ui-kit for cross-platform consistency.
17
- *
18
- * @example
19
- * ```tsx
20
- * import * as DocumentPicker from 'expo-document-picker';
21
- * import { SFileDropzone } from '@solostylist/ui-kit-native';
22
- *
23
- * const [files, setFiles] = useState<CustomFile[]>([]);
24
- *
25
- * const handlePickFiles = async () => {
26
- * const result = await DocumentPicker.getDocumentAsync({
27
- * type: '*\/*',
28
- * multiple: true,
29
- * });
30
- *
31
- * if (result.type === 'success') {
32
- * setFiles([...files, {
33
- * name: result.name,
34
- * size: result.size,
35
- * uri: result.uri,
36
- * type: result.mimeType,
37
- * }]);
38
- * }
39
- * };
40
- *
41
- * <SFileDropzone
42
- * label="Upload Files"
43
- * files={files}
44
- * onPress={handlePickFiles}
45
- * onRemove={(file) => setFiles(files.filter(f => f.name !== file.name))}
46
- * onRemoveAll={() => setFiles([])}
47
- * />
48
- * ```
49
18
  */
50
19
  export const SFileDropzone = ({ hint, label = '', error, onRemoveAll, onRemove, onPress, onFilesChange, required = false, isShowBtnRemoveAll = false, disabled = false, files = [], style, enableBuiltInPicker = true, multiple = true, accept, }) => {
51
20
  const { theme } = useSTheme();
@@ -62,86 +31,6 @@ export const SFileDropzone = ({ hint, label = '', error, onRemoveAll, onRemove,
62
31
  disabledText: grayPalette[500],
63
32
  };
64
33
  }, [theme.dark, theme.colors.text.primary]);
65
- const styles = useMemo(() => StyleSheet.create({
66
- container: {
67
- width: '100%',
68
- },
69
- dropzoneContainer: {
70
- alignItems: 'center',
71
- borderWidth: 1,
72
- borderStyle: 'dashed',
73
- borderColor: colors.borderColor,
74
- borderRadius: theme.borderRadius.md,
75
- paddingVertical: theme.spacing.xl,
76
- paddingHorizontal: theme.spacing.md,
77
- backgroundColor: disabled ? colors.disabledBackground : 'transparent',
78
- },
79
- dropzoneContent: {
80
- flexDirection: 'row',
81
- alignItems: 'center',
82
- gap: theme.spacing.sm,
83
- },
84
- iconContainer: {
85
- width: 48,
86
- height: 48,
87
- borderRadius: 24,
88
- borderWidth: 1,
89
- borderStyle: 'dashed',
90
- borderColor: colors.borderColor,
91
- alignItems: 'center',
92
- justifyContent: 'center',
93
- backgroundColor: 'transparent',
94
- },
95
- textContainer: {
96
- flex: 1,
97
- gap: theme.spacing.xs,
98
- },
99
- uploadText: {
100
- fontFamily: theme.typography.fontFamily,
101
- fontSize: 14,
102
- color: disabled ? colors.disabledText : colors.textSecondary,
103
- },
104
- underlinedText: {
105
- textDecorationLine: 'underline',
106
- },
107
- fileListContainer: {
108
- marginTop: theme.spacing.sm,
109
- gap: theme.spacing.sm,
110
- },
111
- fileItem: {
112
- flexDirection: 'row',
113
- alignItems: 'center',
114
- gap: theme.spacing.md,
115
- borderWidth: 1,
116
- borderColor: colors.borderColor,
117
- borderRadius: theme.borderRadius.md,
118
- padding: theme.spacing.sm,
119
- },
120
- fileInfoContainer: {
121
- flex: 1,
122
- },
123
- fileName: {
124
- fontFamily: theme.typography.fontFamily,
125
- fontSize: 14,
126
- fontWeight: '600',
127
- color: colors.textPrimary,
128
- marginBottom: 2,
129
- },
130
- fileSize: {
131
- fontFamily: theme.typography.fontFamily,
132
- fontSize: 12,
133
- color: colors.textSecondary,
134
- },
135
- removeButton: {
136
- padding: theme.spacing.xs,
137
- },
138
- actionsContainer: {
139
- flexDirection: 'row',
140
- alignItems: 'center',
141
- justifyContent: 'flex-end',
142
- marginTop: theme.spacing.sm,
143
- },
144
- }), [theme, colors, disabled]);
145
34
  const handlePress = async () => {
146
35
  if (disabled)
147
36
  return;
@@ -176,14 +65,51 @@ export const SFileDropzone = ({ hint, label = '', error, onRemoveAll, onRemove,
176
65
  }
177
66
  }
178
67
  };
179
- return (_jsxs(View, { style: [styles.container, style], children: [_jsx(SForm, { error: error, label: label, required: required, hint: hint, children: _jsx(Pressable, { onPress: handlePress, disabled: disabled, style: ({ pressed }) => [
180
- styles.dropzoneContainer,
68
+ return (_jsxs(View, { style: [{ width: '100%' }, style], children: [_jsx(SForm, { error: error, label: label, required: required, hint: hint, children: _jsx(Pressable, { onPress: handlePress, disabled: disabled, style: ({ pressed }) => [
69
+ {
70
+ alignItems: 'center',
71
+ borderWidth: 1,
72
+ borderStyle: 'dashed',
73
+ borderColor: colors.borderColor,
74
+ borderRadius: theme.borderRadius.md,
75
+ paddingVertical: theme.spacing.xl,
76
+ paddingHorizontal: theme.spacing.md,
77
+ backgroundColor: disabled ? colors.disabledBackground : 'transparent',
78
+ },
181
79
  pressed && !disabled && { backgroundColor: colors.hoverBackground },
182
- ], android_ripple: !disabled ? { color: colors.hoverBackground } : undefined, children: _jsxs(View, { style: styles.dropzoneContent, children: [_jsx(View, { style: styles.iconContainer, children: _jsx(MaterialCommunityIcons, { name: "cloud-upload-outline", size: 24, color: disabled ? colors.disabledText : colors.iconColor }) }), _jsx(View, { style: styles.textContainer, children: _jsxs(Text, { style: styles.uploadText, children: [_jsx(Text, { style: styles.underlinedText, children: "Tap to upload" }), " your files here"] }) })] }) }) }), files.length > 0 && (_jsxs(View, { style: styles.fileListContainer, children: [_jsx(ScrollView, { children: files.map((file, index) => {
80
+ ], android_ripple: !disabled ? { color: colors.hoverBackground } : undefined, children: _jsxs(View, { style: {
81
+ flexDirection: 'row',
82
+ alignItems: 'center',
83
+ gap: theme.spacing.sm,
84
+ }, children: [_jsx(View, { style: {
85
+ width: 36,
86
+ height: 36,
87
+ borderRadius: 24,
88
+ borderWidth: 1,
89
+ borderStyle: 'dashed',
90
+ borderColor: colors.borderColor,
91
+ alignItems: 'center',
92
+ justifyContent: 'center',
93
+ backgroundColor: 'transparent',
94
+ }, children: _jsx(MaterialCommunityIcons, { name: "cloud-upload-outline", size: 16, color: disabled ? colors.disabledText : colors.iconColor }) }), _jsx(View, { style: { flex: 1, gap: theme.spacing.xs }, children: _jsxs(SText, { color: "text.secondary", children: [_jsx(SText, { style: { textDecorationLine: 'underline' }, children: "Tap to upload" }), " your files here"] }) })] }) }) }), files.length > 0 && (_jsxs(View, { style: { marginTop: theme.spacing.sm, gap: theme.spacing.sm }, children: [_jsx(ScrollView, { children: files.map((file, index) => {
183
95
  // Extract file extension for icon display
184
96
  const extension = file.name.split('.').pop();
185
- return (_jsxs(View, { style: styles.fileItem, children: [_jsx(SFileIcon, { extension: extension, size: 36 }), _jsxs(View, { style: styles.fileInfoContainer, children: [_jsx(Text, { style: styles.fileName, numberOfLines: 1, children: file.name }), _jsx(Text, { style: styles.fileSize, children: bytesToSize(file.size) })] }), _jsx(Pressable, { style: styles.removeButton, onPress: () => onRemove?.(file), android_ripple: { color: colors.hoverBackground, borderless: true }, children: _jsx(MaterialCommunityIcons, { name: "close", size: 20, color: colors.iconColor }) })] }, `${file.name}-${index}`));
186
- }) }), isShowBtnRemoveAll && (_jsx(View, { style: styles.actionsContainer, children: _jsx(Button, { mode: "text", onPress: onRemoveAll, children: "Remove all" }) }))] }))] }));
97
+ return (_jsxs(View, { style: {
98
+ flexDirection: 'row',
99
+ alignItems: 'center',
100
+ gap: theme.spacing.md,
101
+ borderWidth: 1,
102
+ borderColor: colors.borderColor,
103
+ borderRadius: theme.borderRadius.md,
104
+ padding: theme.spacing.sm,
105
+ marginTop: theme.spacing.sm,
106
+ }, children: [_jsx(SFileIcon, { extension: extension, size: 44 }), _jsxs(View, { style: { flex: 1 }, children: [_jsx(SText, { variant: "body1", numberOfLines: 1, children: file.name }), _jsx(SText, { variant: "caption", children: bytesToSize(file.size) })] }), _jsx(SIconButton, { icon: "close", iconColor: colors.iconColor, onPress: () => onRemove?.(file) })] }, `${file.name}-${index}`));
107
+ }) }), isShowBtnRemoveAll && (_jsx(View, { style: {
108
+ flexDirection: 'row',
109
+ alignItems: 'center',
110
+ justifyContent: 'flex-end',
111
+ marginTop: theme.spacing.sm,
112
+ }, children: _jsx(SButton, { variant: "text", onPress: onRemoveAll, children: "Remove all" }) }))] }))] }));
187
113
  };
188
114
  SFileDropzone.displayName = 'SFileDropzone';
189
115
  export default SFileDropzone;
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  /**
4
4
  * Props for the SFileIcon component
5
- * Synced with web SFileIcon from @solostylist/ui-kit
6
5
  */
7
6
  export interface SFileIconProps {
8
7
  /** File extension (without dot) to determine which icon to display */
@@ -15,7 +14,6 @@ export interface SFileIconProps {
15
14
  /**
16
15
  * A file type icon component that displays appropriate icons based on file extensions.
17
16
  * Built with @expo/vector-icons MaterialCommunityIcons for React Native.
18
- * Synced with web SFileIcon from @solostylist/ui-kit for cross-platform consistency.
19
17
  */
20
18
  export declare const SFileIcon: {
21
19
  ({ extension, size, style }: SFileIconProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-file-icon.d.ts","sourceRoot":"","sources":["../../src/s-file-icon/s-file-icon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAUD;;;;GAIG;AACH,eAAO,MAAM,SAAS;iCAAqC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAsF5F,CAAC;AAIF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"s-file-icon.d.ts","sourceRoot":"","sources":["../../src/s-file-icon/s-file-icon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAUD;;;GAGG;AACH,eAAO,MAAM,SAAS;iCAAqC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAmF5F,CAAC;AAIF,eAAe,SAAS,CAAC"}
@@ -1,11 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MaterialCommunityIcons } from '@expo/vector-icons';
3
3
  import { useMemo } from 'react';
4
- import { StyleSheet, View } from 'react-native';
4
+ import { View } from 'react-native';
5
5
  /**
6
6
  * A file type icon component that displays appropriate icons based on file extensions.
7
7
  * Built with @expo/vector-icons MaterialCommunityIcons for React Native.
8
- * Synced with web SFileIcon from @solostylist/ui-kit for cross-platform consistency.
9
8
  */
10
9
  export const SFileIcon = ({ extension, size = 36, style }) => {
11
10
  const iconConfig = useMemo(() => {
@@ -72,16 +71,16 @@ export const SFileIcon = ({ extension, size = 36, style }) => {
72
71
  return { name: 'file', color: '#6366F1' };
73
72
  }
74
73
  }, [extension]);
75
- const styles = useMemo(() => StyleSheet.create({
76
- container: {
77
- alignItems: 'center',
78
- display: 'flex',
79
- justifyContent: 'center',
80
- width: size,
81
- height: size,
82
- },
83
- }), [size]);
84
- return (_jsx(View, { style: [styles.container, style], children: _jsx(MaterialCommunityIcons, { name: iconConfig.name, size: size, color: iconConfig.color }) }));
74
+ return (_jsx(View, { style: [
75
+ {
76
+ alignItems: 'center',
77
+ display: 'flex',
78
+ justifyContent: 'center',
79
+ width: size,
80
+ height: size,
81
+ },
82
+ style,
83
+ ], children: _jsx(MaterialCommunityIcons, { name: iconConfig.name, size: size, color: iconConfig.color }) }));
85
84
  };
86
85
  SFileIcon.displayName = 'SFileIcon';
87
86
  export default SFileIcon;
@@ -16,7 +16,6 @@ export interface SFormProps {
16
16
  }
17
17
  /**
18
18
  * A form wrapper component that provides consistent labeling, error handling, and help text.
19
- * Synced with web SForm component from @solostylist/ui-kit.
20
19
  */
21
20
  export declare const SForm: {
22
21
  ({ label, hint, error, required, children }: SFormProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-form.d.ts","sourceRoot":"","sources":["../../src/s-form/s-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK;iDAAwD,UAAU;;CAkDnF,CAAC;AAIF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"s-form.d.ts","sourceRoot":"","sources":["../../src/s-form/s-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;iDAAwD,UAAU;;CAkDnF,CAAC;AAIF,eAAe,KAAK,CAAC"}
@@ -5,7 +5,6 @@ import { SText } from '../s-text';
5
5
  import { useSTheme } from '../theme';
6
6
  /**
7
7
  * A form wrapper component that provides consistent labeling, error handling, and help text.
8
- * Synced with web SForm component from @solostylist/ui-kit.
9
8
  */
10
9
  export const SForm = ({ label, hint, error, required = false, children }) => {
11
10
  const { theme } = useSTheme();
@@ -1,27 +1,28 @@
1
1
  import React from 'react';
2
2
  import { type IconButtonProps } from 'react-native-paper';
3
+ import type { SButtonColor } from '../s-button/s-button';
3
4
  /**
4
5
  * Tooltip options for SIconButton
5
- * Similar to web version but adapted for React Native
6
6
  */
7
7
  export interface SIconButtonTooltipOptions {
8
8
  /** Tooltip text content */
9
9
  title: string;
10
- /** Whether to show enter delay (in ms) */
10
+ /** Delay before showing the tooltip (in ms) */
11
11
  enterDelay?: number;
12
- /** Whether to show leave delay (in ms) */
12
+ /** Delay before hiding the tooltip (in ms) */
13
13
  leaveDelay?: number;
14
14
  }
15
15
  /**
16
16
  * Props interface for SIconButton component
17
- * Synced with web SIconButton from @solostylist/ui-kit
18
17
  */
19
18
  export interface SIconButtonProps extends Omit<IconButtonProps, 'theme' | 'size'> {
20
- /** Icon name from Material Community Icons */
21
- icon: string;
19
+ /** Icon name from Material Community Icons or an IconComponent */
20
+ icon: IconButtonProps['icon'];
22
21
  /** Size of the icon button - matches web MUI sizes */
23
22
  size?: 'small' | 'medium' | 'large';
24
- /** Icon color */
23
+ /** Theme color of the button */
24
+ color?: SButtonColor;
25
+ /** Icon color (overrides color prop) */
25
26
  iconColor?: string;
26
27
  /** Container color (background) */
27
28
  containerColor?: string;
@@ -36,10 +37,9 @@ export interface SIconButtonProps extends Omit<IconButtonProps, 'theme' | 'size'
36
37
  }
37
38
  /**
38
39
  * An enhanced icon button component with optional tooltip integration.
39
- * Synced with web SIconButton from @solostylist/ui-kit.
40
40
  */
41
41
  export declare const SIconButton: {
42
- ({ icon, size, iconColor, containerColor, disabled, accessibilityLabel, onPress, style, tooltipOptions, ...props }: SIconButtonProps): React.JSX.Element;
42
+ ({ icon, size, color, iconColor, containerColor, disabled, accessibilityLabel, onPress, style, tooltipOptions, ...props }: SIconButtonProps): React.JSX.Element;
43
43
  displayName: string;
44
44
  };
45
45
  export default SIconButton;
@@ -1 +1 @@
1
- {"version":3,"file":"s-icon-button.d.ts","sourceRoot":"","sources":["../../src/s-icon-button/s-icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG/E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/E,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uFAAuF;IACvF,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW;wHAWrB,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAuEtC,CAAC;AAIF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"s-icon-button.d.ts","sourceRoot":"","sources":["../../src/s-icon-button/s-icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgBtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyBD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/E,kEAAkE;IAClE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,gCAAgC;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uFAAuF;IACvF,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;+HAYrB,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAgFtC,CAAC;AAIF,eAAe,WAAW,CAAC"}
@@ -1,12 +1,36 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
2
3
  import { StyleSheet } from 'react-native';
3
- import { IconButton, Tooltip } from 'react-native-paper';
4
+ import { IconButton } from 'react-native-paper';
5
+ import { blue, brand, green, lightBlue, lightBrand, lightGreen, lightOrange, lightPurple, lightRed, orange, purple, red, } from '@solostylist/core';
6
+ import { STooltip } from '../s-tooltip';
4
7
  import { useSTheme } from '../theme';
8
+ /**
9
+ * Get color palettes for light and dark modes
10
+ * Copied from SButton to ensure consistency
11
+ */
12
+ const getColorPalettes = (color) => {
13
+ switch (color) {
14
+ case 'primary':
15
+ return { light: lightBrand, dark: brand };
16
+ case 'secondary':
17
+ return { light: lightPurple, dark: purple };
18
+ case 'success':
19
+ return { light: lightGreen, dark: green };
20
+ case 'error':
21
+ return { light: lightRed, dark: red };
22
+ case 'info':
23
+ return { light: lightBlue, dark: blue };
24
+ case 'warning':
25
+ return { light: lightOrange, dark: orange };
26
+ default:
27
+ return { light: lightBrand, dark: brand };
28
+ }
29
+ };
5
30
  /**
6
31
  * An enhanced icon button component with optional tooltip integration.
7
- * Synced with web SIconButton from @solostylist/ui-kit.
8
32
  */
9
- export const SIconButton = ({ icon, size = 'medium', iconColor, containerColor, disabled = false, accessibilityLabel, onPress, style, tooltipOptions, ...props }) => {
33
+ export const SIconButton = ({ icon, size = 'medium', color, iconColor, containerColor, disabled = false, accessibilityLabel, onPress, style, tooltipOptions, ...props }) => {
10
34
  const { theme } = useSTheme();
11
35
  // Map size to icon size - matches web MUI sizes
12
36
  // small: 12px, medium: 16px, large: 20px
@@ -33,12 +57,22 @@ export const SIconButton = ({ icon, size = 'medium', iconColor, containerColor,
33
57
  return 'transparent';
34
58
  return 'transparent';
35
59
  };
60
+ // Calculate generic color from palette if provided
61
+ const paletteColor = useMemo(() => {
62
+ if (!color)
63
+ return undefined;
64
+ const { light: lightPalette, dark: darkPalette } = getColorPalettes(color);
65
+ const palette = theme.dark ? darkPalette : lightPalette;
66
+ return palette[500];
67
+ }, [color, theme.dark]);
36
68
  // Get icon color
37
69
  const getIconColor = () => {
38
70
  if (iconColor)
39
71
  return iconColor;
40
72
  if (disabled)
41
73
  return theme.colors.text.disabled;
74
+ if (paletteColor)
75
+ return paletteColor;
42
76
  return defaultIconColor;
43
77
  };
44
78
  const styles = StyleSheet.create({
@@ -49,7 +83,7 @@ export const SIconButton = ({ icon, size = 'medium', iconColor, containerColor,
49
83
  const iconButton = (_jsx(IconButton, { icon: icon, size: iconSize, iconColor: getIconColor(), containerColor: getContainerColor(), disabled: disabled, onPress: onPress, accessibilityLabel: accessibilityLabel, style: [styles.button, style], ...props }));
50
84
  // Wrap with tooltip if tooltipOptions is provided
51
85
  if (tooltipOptions) {
52
- return (_jsx(Tooltip, { title: tooltipOptions.title, enterTouchDelay: tooltipOptions.enterDelay ?? 0, leaveTouchDelay: tooltipOptions.leaveDelay ?? 0, children: iconButton }));
86
+ return (_jsx(STooltip, { title: tooltipOptions.title, enterDelay: tooltipOptions.enterDelay ?? 0, leaveDelay: tooltipOptions.leaveDelay ?? 0, children: iconButton }));
53
87
  }
54
88
  return iconButton;
55
89
  };
@@ -1,14 +1,13 @@
1
1
  import React from 'react';
2
- import { type StyleProp, type ViewStyle } from 'react-native';
2
+ import { type ImageSourcePropType, type StyleProp, type ViewStyle } from 'react-native';
3
3
  /**
4
4
  * Props interface for SImageComparison component
5
- * Synced with web SImageComparison from @solostylist/ui-kit
6
5
  */
7
6
  export interface SImageComparisonProps {
8
7
  /** Left image URL or array of URLs for multiple comparison sources */
9
- leftImage: string | string[];
8
+ leftImage: ImageSourcePropType | Array<ImageSourcePropType>;
10
9
  /** Right image URL */
11
- rightImage: string;
10
+ rightImage: ImageSourcePropType;
12
11
  /** Alt text for left image(s) */
13
12
  altLeft?: string | string[];
14
13
  /** Alt text for right image */
@@ -27,7 +26,6 @@ export interface SImageComparisonProps {
27
26
  /**
28
27
  * An image comparison component with a draggable slider to compare before/after images.
29
28
  * Built with React Native Gesture Handler for smooth drag interactions.
30
- * Synced with web SImageComparison from @solostylist/ui-kit for cross-platform consistency.
31
29
  */
32
30
  export declare const SImageComparison: {
33
31
  ({ leftImage, rightImage, initialPosition, height, width, style, borderRadius, }: SImageComparisonProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-image-comparison.d.ts","sourceRoot":"","sources":["../../src/s-image-comparison/s-image-comparison.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;sFAQ1B,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CA2N3C,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"s-image-comparison.d.ts","sourceRoot":"","sources":["../../src/s-image-comparison/s-image-comparison.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAKL,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAKtB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,SAAS,EAAE,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC5D,sBAAsB;IACtB,UAAU,EAAE,mBAAmB,CAAC;IAChC,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB;sFAQ1B,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAoM3C,CAAC;AAIF,eAAe,gBAAgB,CAAC"}