@oxyhq/services 22.6.1 → 22.6.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 (72) hide show
  1. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +99 -77
  2. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  3. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +33 -40
  4. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  5. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +92 -88
  6. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  7. package/lib/commonjs/ui/screens/FileManagementScreen.js +169 -310
  8. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  9. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +17 -14
  10. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
  11. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +16 -20
  12. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  13. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +29 -12
  14. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
  15. package/lib/commonjs/ui/server.js +1 -1
  16. package/lib/commonjs/ui/server.js.map +1 -1
  17. package/lib/module/ui/components/fileManagement/FileViewer.js +100 -78
  18. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  19. package/lib/module/ui/components/fileManagement/UploadPreview.js +34 -41
  20. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  21. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +94 -90
  22. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  23. package/lib/module/ui/screens/FileManagementScreen.js +171 -313
  24. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  25. package/lib/module/ui/screens/fileManagement/FileListSection.js +17 -14
  26. package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
  27. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +17 -21
  28. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  29. package/lib/module/ui/screens/fileManagement/UploadBar.js +30 -13
  30. package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
  31. package/lib/module/ui/server.js +1 -1
  32. package/lib/module/ui/server.js.map +1 -1
  33. package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
  37. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/ui/server.d.ts +1 -1
  43. package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
  44. package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  45. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  46. package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  47. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
  48. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  49. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  50. package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  51. package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  52. package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  53. package/lib/typescript/module/ui/server.d.ts +1 -1
  54. package/lib/typescript/module/ui/server.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/src/ui/components/fileManagement/FileViewer.tsx +82 -68
  57. package/src/ui/components/fileManagement/UploadPreview.tsx +34 -29
  58. package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +14 -12
  59. package/src/ui/screens/FileManagementScreen.tsx +123 -300
  60. package/src/ui/screens/fileManagement/FileListSection.tsx +10 -10
  61. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +16 -19
  62. package/src/ui/screens/fileManagement/UploadBar.tsx +29 -14
  63. package/src/ui/server.ts +1 -1
  64. package/lib/commonjs/ui/components/fileManagement/styles.js +0 -832
  65. package/lib/commonjs/ui/components/fileManagement/styles.js.map +0 -1
  66. package/lib/module/ui/components/fileManagement/styles.js +0 -828
  67. package/lib/module/ui/components/fileManagement/styles.js.map +0 -1
  68. package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts +0 -825
  69. package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts.map +0 -1
  70. package/lib/typescript/module/ui/components/fileManagement/styles.d.ts +0 -825
  71. package/lib/typescript/module/ui/components/fileManagement/styles.d.ts.map +0 -1
  72. package/src/ui/components/fileManagement/styles.ts +0 -823
@@ -21,7 +21,6 @@ var _useResolvedFileUrls = require("../hooks/useResolvedFileUrls.js");
21
21
  var _FileViewer = require("../components/fileManagement/FileViewer.js");
22
22
  var _FileDetailsModal = require("../components/fileManagement/FileDetailsModal.js");
23
23
  var _UploadPreview = require("../components/fileManagement/UploadPreview.js");
24
- var _styles = require("../components/fileManagement/styles.js");
25
24
  var _shared = require("./fileManagement/shared.js");
26
25
  var _useFileUploadState = require("./fileManagement/hooks/useFileUploadState.js");
27
26
  var _PhotoPickerSection = _interopRequireDefault(require("./fileManagement/PhotoPickerSection.js"));
@@ -30,6 +29,31 @@ var _UploadBar = _interopRequireDefault(require("./fileManagement/UploadBar.js")
30
29
  var _jsxRuntime = require("react/jsx-runtime");
31
30
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
32
31
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
32
+ // Genuinely-inline-only styles: `viewModeButton` is spread into an Animated.View
33
+ // style array (interpolated backgroundColor), and the photo tiles are
34
+ // `expo-image` (no className remap). Everything else uses NativeWind classNames.
35
+ const screenStyles = _reactNative.StyleSheet.create({
36
+ viewModeButton: {
37
+ paddingHorizontal: 10,
38
+ paddingVertical: 6,
39
+ borderRadius: 999,
40
+ minWidth: 36,
41
+ alignItems: 'center',
42
+ justifyContent: 'center',
43
+ marginHorizontal: 1
44
+ },
45
+ photoImage: {
46
+ width: '100%',
47
+ height: '100%',
48
+ borderRadius: 8
49
+ },
50
+ justifiedPhotoImage: {
51
+ width: '100%',
52
+ height: '100%',
53
+ borderRadius: 6
54
+ }
55
+ });
56
+
33
57
  // Animated button component for smooth transitions
34
58
  const AnimatedButton = ({
35
59
  isSelected,
@@ -81,8 +105,7 @@ const FileManagementScreen = ({
81
105
  goBack,
82
106
  navigate,
83
107
  userId,
84
- containerWidth = 400,
85
- // Fallback for when not provided by the router
108
+ containerWidth,
86
109
  selectMode = false,
87
110
  multiSelect = false,
88
111
  onSelect,
@@ -113,8 +136,12 @@ const FileManagementScreen = ({
113
136
  const visibilityChangeDialog = (0, _bloom.useDialogControl)();
114
137
  const [pendingDeleteFile, setPendingDeleteFile] = (0, _react.useState)(null);
115
138
  const files = (0, _fileStore.useFiles)();
116
- // Ensure containerWidth is a number (TypeScript guard)
117
- const safeContainerWidth = typeof containerWidth === 'number' ? containerWidth : 400;
139
+ const {
140
+ width: windowWidth
141
+ } = (0, _reactNative.useWindowDimensions)();
142
+ // Prefer an explicit sheet width from the router; fall back to the window
143
+ // so photo grids never size against a hardcoded 400px default.
144
+ const safeContainerWidth = typeof containerWidth === 'number' && containerWidth > 0 ? containerWidth : windowWidth;
118
145
  const uploading = (0, _fileStore.useUploading)();
119
146
  const uploadProgress = (0, _fileStore.useUploadAggregateProgress)();
120
147
  const deleting = (0, _fileStore.useDeleting)();
@@ -743,60 +770,11 @@ const FileManagementScreen = ({
743
770
  setSelectedFile(file);
744
771
  fileDetailsControl.open();
745
772
  };
746
- const renderSimplePhotoItem = (0, _react.useCallback)((photo, index) => {
747
- const downloadUrl = thumbSourceFor(photo);
748
-
749
- // Calculate photo item width based on actual container size from bottom sheet
750
- let itemsPerRow = 3; // Default for mobile
751
- if (safeContainerWidth > 768) itemsPerRow = 4; // Desktop/tablet
752
- else if (safeContainerWidth > 480) itemsPerRow = 3; // Large mobile
753
-
754
- // Account for the photoScrollContainer padding (16px on each side = 32px total)
755
- const scrollContainerPadding = 32; // Total horizontal padding from photoScrollContainer
756
- const gaps = (itemsPerRow - 1) * 4; // Gap between items (4px)
757
- const availableWidth = safeContainerWidth - scrollContainerPadding;
758
- const itemWidth = (availableWidth - gaps) / itemsPerRow;
759
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
760
- style: [_styles.fileManagementStyles.simplePhotoItem, {
761
- width: itemWidth,
762
- height: itemWidth,
763
- marginRight: (index + 1) % itemsPerRow === 0 ? 0 : 4,
764
- ...(selectMode && selectedIds.has(photo.id) ? {
765
- borderWidth: 2,
766
- borderColor: colors.primary
767
- } : {})
768
- }],
769
- onPress: () => handleFileOpen(photo),
770
- activeOpacity: 0.8,
771
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
772
- style: _styles.fileManagementStyles.simplePhotoContainer,
773
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
774
- source: {
775
- uri: downloadUrl
776
- },
777
- style: _styles.fileManagementStyles.simplePhotoImage,
778
- contentFit: "cover",
779
- transition: 120,
780
- cachePolicy: "memory-disk",
781
- onError: () => {
782
- // Photo failed to load, will show placeholder
783
- },
784
- accessibilityLabel: photo.filename
785
- }), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
786
- style: _styles.fileManagementStyles.selectionBadge,
787
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
788
- name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
789
- size: 20,
790
- color: selectedIds.has(photo.id) ? colors.primary : colors.text
791
- })
792
- })]
793
- })
794
- }, photo.id);
795
- }, [thumbSourceFor, safeContainerWidth, selectMode, selectedIds, colors.primary, colors.text]);
796
773
  const renderJustifiedPhotoItem = (0, _react.useCallback)((photo, width, height, isLast) => {
797
774
  const downloadUrl = thumbSourceFor(photo);
798
775
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
799
- style: [_styles.fileManagementStyles.justifiedPhotoItem, {
776
+ className: "rounded-[6px] overflow-hidden relative",
777
+ style: {
800
778
  width,
801
779
  height,
802
780
  ...(selectMode && selectedIds.has(photo.id) ? {
@@ -806,16 +784,16 @@ const FileManagementScreen = ({
806
784
  ...(selectMode && multiSelect && selectedIds.size > 0 && !selectedIds.has(photo.id) ? {
807
785
  opacity: 0.4
808
786
  } : {})
809
- }],
787
+ },
810
788
  onPress: () => handleFileOpen(photo),
811
789
  activeOpacity: 0.8,
812
790
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
813
- style: _styles.fileManagementStyles.justifiedPhotoContainer,
791
+ className: "w-full h-full relative rounded-[6px] overflow-hidden",
814
792
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
815
793
  source: {
816
794
  uri: downloadUrl
817
795
  },
818
- style: _styles.fileManagementStyles.justifiedPhotoImage,
796
+ style: screenStyles.justifiedPhotoImage,
819
797
  contentFit: "cover",
820
798
  transition: 120,
821
799
  cachePolicy: "memory-disk",
@@ -824,7 +802,10 @@ const FileManagementScreen = ({
824
802
  },
825
803
  accessibilityLabel: photo.filename
826
804
  }), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
827
- style: _styles.fileManagementStyles.selectionBadge,
805
+ className: "absolute top-[4px] right-[4px] rounded-[12px] p-[2px]",
806
+ style: {
807
+ backgroundColor: 'rgba(0,0,0,0.4)'
808
+ },
828
809
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
829
810
  name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
830
811
  size: 20,
@@ -845,160 +826,6 @@ const FileManagementScreen = ({
845
826
  }
846
827
  // eslint-disable-next-line react-hooks/exhaustive-deps
847
828
  }, [targetUserId]);
848
- const renderFileItem = file => {
849
- const isImage = file.contentType.startsWith('image/');
850
- const isPDF = file.contentType.includes('pdf');
851
- const isVideo = file.contentType.startsWith('video/');
852
- const isAudio = file.contentType.startsWith('audio/');
853
- const hasPreview = isImage || isPDF || isVideo;
854
- const borderColor = colors.border;
855
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
856
- style: [_styles.fileManagementStyles.fileItem, {
857
- backgroundColor: colors.backgroundSecondary,
858
- borderColor
859
- }, selectMode && selectedIds.has(file.id) && {
860
- borderColor: colors.primary,
861
- borderWidth: 2
862
- }],
863
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
864
- style: _styles.fileManagementStyles.fileContent,
865
- onPress: () => handleFileOpen(file),
866
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
867
- style: _styles.fileManagementStyles.filePreviewContainer,
868
- children: hasPreview ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
869
- style: _styles.fileManagementStyles.filePreview,
870
- children: [isImage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
871
- source: {
872
- uri: thumbSourceFor(file)
873
- },
874
- style: _styles.fileManagementStyles.previewImage,
875
- contentFit: "cover",
876
- transition: 120,
877
- cachePolicy: "memory-disk",
878
- onError: () => {
879
- // Image preview failed to load
880
- },
881
- accessibilityLabel: file.filename
882
- }), isPDF && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
883
- style: _styles.fileManagementStyles.pdfPreview,
884
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
885
- name: "document",
886
- size: 32,
887
- color: colors.primary
888
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
889
- style: [_styles.fileManagementStyles.pdfLabel, {
890
- color: colors.primary
891
- }],
892
- children: "PDF"
893
- })]
894
- }), isVideo && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
895
- style: _styles.fileManagementStyles.videoPreviewWrapper,
896
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
897
- source: {
898
- uri: thumbSourceFor(file)
899
- },
900
- style: _styles.fileManagementStyles.videoPosterImage,
901
- contentFit: "cover",
902
- transition: 120,
903
- cachePolicy: "memory-disk",
904
- onError: _ => {
905
- // If thumbnail not available, we still show icon overlay
906
- },
907
- accessibilityLabel: `${file.filename} video thumbnail`
908
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
909
- style: _styles.fileManagementStyles.videoOverlay,
910
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
911
- name: "play",
912
- size: 24,
913
- color: "#FFFFFF"
914
- })
915
- })]
916
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
917
- style: [_styles.fileManagementStyles.fallbackIcon, {
918
- display: isImage ? 'none' : 'flex'
919
- }],
920
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
921
- name: (0, _fileManagement.getFileIcon)(file.contentType),
922
- size: 32,
923
- color: colors.primary
924
- })
925
- }), selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
926
- style: _styles.fileManagementStyles.selectionBadge,
927
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
928
- name: selectedIds.has(file.id) ? 'checkmark-circle' : 'ellipse-outline',
929
- size: 22,
930
- color: selectedIds.has(file.id) ? colors.primary : colors.text
931
- })
932
- })]
933
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
934
- style: _styles.fileManagementStyles.fileIconContainer,
935
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
936
- name: (0, _fileManagement.getFileIcon)(file.contentType),
937
- size: 32,
938
- color: colors.primary
939
- })
940
- })
941
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
942
- style: _styles.fileManagementStyles.fileInfo,
943
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
944
- style: [_styles.fileManagementStyles.fileName, {
945
- color: colors.text
946
- }],
947
- numberOfLines: 1,
948
- children: file.filename
949
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
950
- style: [_styles.fileManagementStyles.fileDetails, {
951
- color: colors.textSecondary
952
- }],
953
- children: [(0, _fileManagement.formatFileSize)(file.length), " \u2022 ", new Date(file.uploadDate).toLocaleDateString()]
954
- }), file.metadata?.description && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
955
- style: [_styles.fileManagementStyles.fileDescription, {
956
- color: colors.textTertiary
957
- }],
958
- numberOfLines: 2,
959
- children: file.metadata.description
960
- })]
961
- })]
962
- }), !selectMode && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
963
- style: _styles.fileManagementStyles.fileActions,
964
- children: [hasPreview && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
965
- style: [_styles.fileManagementStyles.actionButton, {
966
- backgroundColor: colors.backgroundSecondary
967
- }],
968
- onPress: () => handleFileOpen(file),
969
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
970
- name: "eye",
971
- size: 20,
972
- color: colors.primary
973
- })
974
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
975
- style: [_styles.fileManagementStyles.actionButton, {
976
- backgroundColor: colors.backgroundSecondary
977
- }],
978
- onPress: () => handleFileDownload(file.id, file.filename),
979
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
980
- name: "download",
981
- size: 20,
982
- color: colors.primary
983
- })
984
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
985
- style: [_styles.fileManagementStyles.actionButton, {
986
- backgroundColor: colors.negativeSubtle
987
- }],
988
- onPress: () => confirmFileDelete(file.id, file.filename),
989
- disabled: deleting === file.id,
990
- children: deleting === file.id ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
991
- size: "small",
992
- color: colors.error
993
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
994
- name: "trash",
995
- size: 20,
996
- color: colors.error
997
- })
998
- })]
999
- })]
1000
- }, file.id);
1001
- };
1002
829
 
1003
830
  // SettingsListItem-based file items (for 'all' view)
1004
831
  const groupedFileItems = (0, _react.useMemo)(() => {
@@ -1120,11 +947,12 @@ const FileManagementScreen = ({
1120
947
  },
1121
948
  // Hide action buttons when selecting (in selectMode or bulk operations mode)
1122
949
  rightElement: !selectMode && selectedIds.size === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1123
- style: _styles.fileManagementStyles.groupedActions,
950
+ className: "flex-row items-center gap-[6px] ml-[12px]",
1124
951
  children: [(isImage || isVideo || file.contentType.includes('pdf')) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1125
- style: [_styles.fileManagementStyles.groupedActionBtn, {
952
+ className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
953
+ style: {
1126
954
  backgroundColor: colors.backgroundSecondary
1127
- }],
955
+ },
1128
956
  onPress: () => handleFileOpen(file),
1129
957
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1130
958
  name: "eye",
@@ -1132,9 +960,10 @@ const FileManagementScreen = ({
1132
960
  color: colors.primary
1133
961
  })
1134
962
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1135
- style: [_styles.fileManagementStyles.groupedActionBtn, {
963
+ className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
964
+ style: {
1136
965
  backgroundColor: colors.backgroundSecondary
1137
- }],
966
+ },
1138
967
  onPress: () => handleFileDownload(file.id, file.filename),
1139
968
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1140
969
  name: "download",
@@ -1142,9 +971,10 @@ const FileManagementScreen = ({
1142
971
  color: colors.primary
1143
972
  })
1144
973
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1145
- style: [_styles.fileManagementStyles.groupedActionBtn, {
974
+ className: "w-[34px] h-[34px] rounded-[8px] items-center justify-center",
975
+ style: {
1146
976
  backgroundColor: colors.negativeSubtle
1147
- }],
977
+ },
1148
978
  onPress: () => confirmFileDelete(file.id, file.filename),
1149
979
  disabled: deleting === file.id,
1150
980
  children: deleting === file.id ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
@@ -1256,19 +1086,20 @@ const FileManagementScreen = ({
1256
1086
  const availableWidth = safeContainerWidth - scrollContainerPadding;
1257
1087
  const itemWidth = (availableWidth - gaps) / itemsPerRow;
1258
1088
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1259
- style: [_styles.fileManagementStyles.photoItem, {
1089
+ className: "rounded-[8px] overflow-hidden",
1090
+ style: {
1260
1091
  width: itemWidth,
1261
1092
  height: itemWidth
1262
- }],
1093
+ },
1263
1094
  onPress: () => handleFileOpen(photo),
1264
1095
  activeOpacity: 0.8,
1265
1096
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1266
- style: _styles.fileManagementStyles.photoContainer,
1097
+ className: "w-full h-full relative rounded-[8px] overflow-hidden",
1267
1098
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
1268
1099
  source: {
1269
1100
  uri: downloadUrl
1270
1101
  },
1271
- style: _styles.fileManagementStyles.photoImage,
1102
+ style: screenStyles.photoImage,
1272
1103
  contentFit: "cover",
1273
1104
  transition: 120,
1274
1105
  cachePolicy: "memory-disk",
@@ -1284,25 +1115,28 @@ const FileManagementScreen = ({
1284
1115
  const photos = filteredFiles.filter(file => file.contentType.startsWith('image/'));
1285
1116
  if (photos.length === 0) {
1286
1117
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1287
- style: _styles.fileManagementStyles.emptyState,
1118
+ className: "items-center py-[40px] px-[24px]",
1288
1119
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1289
1120
  name: "images-outline",
1290
1121
  size: 64,
1291
1122
  color: colors.textTertiary
1292
1123
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1293
- style: [_styles.fileManagementStyles.emptyStateTitle, {
1124
+ className: "text-[24px] font-bold mt-[16px] mb-[8px]",
1125
+ style: {
1294
1126
  color: colors.text
1295
- }],
1127
+ },
1296
1128
  children: t('fileManagement.emptyPhotos.title')
1297
1129
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
1298
- style: [_styles.fileManagementStyles.emptyStateDescription, {
1130
+ className: "text-[16px] text-center leading-[24px] mb-[32px]",
1131
+ style: {
1299
1132
  color: colors.textSecondary
1300
- }],
1133
+ },
1301
1134
  children: [" ", user?.id === targetUserId ? t('fileManagement.emptyPhotos.ownDescription') : t('fileManagement.emptyPhotos.otherDescription'), " "]
1302
1135
  }), user?.id === targetUserId && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1303
- style: [_styles.fileManagementStyles.emptyStateButton, {
1136
+ className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
1137
+ style: {
1304
1138
  backgroundColor: colors.primary
1305
- }],
1139
+ },
1306
1140
  onPress: handleFileUpload,
1307
1141
  disabled: uploading || isPickingDocument,
1308
1142
  children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
@@ -1317,7 +1151,7 @@ const FileManagementScreen = ({
1317
1151
  size: 20,
1318
1152
  color: "#FFFFFF"
1319
1153
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1320
- style: _styles.fileManagementStyles.emptyStateButtonText,
1154
+ className: "text-white text-[16px] font-semibold",
1321
1155
  children: t('fileManagement.uploadPhotos')
1322
1156
  })]
1323
1157
  })
@@ -1326,8 +1160,8 @@ const FileManagementScreen = ({
1326
1160
  }
1327
1161
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
1328
1162
  ref: photoScrollViewRef,
1329
- style: _styles.fileManagementStyles.scrollView,
1330
- contentContainerStyle: _styles.fileManagementStyles.photoScrollContainer,
1163
+ className: "flex-1",
1164
+ contentContainerClassName: "p-[10px]",
1331
1165
  refreshControl: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.RefreshControl, {
1332
1166
  refreshing: refreshing,
1333
1167
  onRefresh: () => loadFiles('refresh'),
@@ -1349,14 +1183,15 @@ const FileManagementScreen = ({
1349
1183
  },
1350
1184
  scrollEventThrottle: 250,
1351
1185
  children: [loadingDimensions && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1352
- style: _styles.fileManagementStyles.dimensionsLoadingIndicator,
1186
+ className: "flex-row items-center justify-center py-[16px] gap-[8px]",
1353
1187
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
1354
1188
  size: "small",
1355
1189
  color: colors.primary
1356
1190
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1357
- style: [_styles.fileManagementStyles.dimensionsLoadingText, {
1191
+ className: "text-[14px] italic",
1192
+ style: {
1358
1193
  color: colors.textSecondary
1359
- }],
1194
+ },
1360
1195
  children: t('fileManagement.loadingPhotoLayout')
1361
1196
  })]
1362
1197
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_JustifiedPhotoGrid.default, {
@@ -1375,25 +1210,28 @@ const FileManagementScreen = ({
1375
1210
  // Inline justified grid removed (moved to components/photogrid/JustifiedPhotoGrid.tsx)
1376
1211
 
1377
1212
  const renderEmptyState = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1378
- style: _styles.fileManagementStyles.emptyState,
1213
+ className: "items-center py-[40px] px-[24px]",
1379
1214
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1380
1215
  name: "folder-open-outline",
1381
1216
  size: 64,
1382
1217
  color: colors.textTertiary
1383
1218
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1384
- style: [_styles.fileManagementStyles.emptyStateTitle, {
1219
+ className: "text-[24px] font-bold mt-[16px] mb-[8px]",
1220
+ style: {
1385
1221
  color: colors.text
1386
- }],
1222
+ },
1387
1223
  children: t('fileManagement.emptyFiles.title')
1388
1224
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1389
- style: [_styles.fileManagementStyles.emptyStateDescription, {
1225
+ className: "text-[16px] text-center leading-[24px] mb-[32px]",
1226
+ style: {
1390
1227
  color: colors.textSecondary
1391
- }],
1228
+ },
1392
1229
  children: user?.id === targetUserId ? t('fileManagement.emptyFiles.ownDescription') : t('fileManagement.emptyFiles.otherDescription')
1393
1230
  }), user?.id === targetUserId && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1394
- style: [_styles.fileManagementStyles.emptyStateButton, {
1231
+ className: "flex-row items-center px-[24px] py-[12px] rounded-[24px] gap-[8px]",
1232
+ style: {
1395
1233
  backgroundColor: colors.primary
1396
- }],
1234
+ },
1397
1235
  onPress: handleFileUpload,
1398
1236
  disabled: uploading || isPickingDocument,
1399
1237
  children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
@@ -1408,7 +1246,7 @@ const FileManagementScreen = ({
1408
1246
  size: 20,
1409
1247
  color: "#FFFFFF"
1410
1248
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1411
- style: _styles.fileManagementStyles.emptyStateButtonText,
1249
+ className: "text-white text-[16px] font-semibold",
1412
1250
  children: t('fileManagement.uploadFiles')
1413
1251
  })]
1414
1252
  })
@@ -1532,22 +1370,22 @@ const FileManagementScreen = ({
1532
1370
  })]
1533
1371
  });
1534
1372
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1535
- style: [_styles.fileManagementStyles.container, {
1373
+ className: "flex-1",
1374
+ style: {
1536
1375
  backgroundColor
1537
- }],
1376
+ },
1538
1377
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1539
- style: [_styles.fileManagementStyles.header, {
1378
+ className: "flex-row items-center justify-between px-[16px] py-[12px] relative",
1379
+ style: {
1540
1380
  borderBottomColor: colors.border,
1541
1381
  borderBottomWidth: _reactNative.StyleSheet.hairlineWidth
1542
- }],
1382
+ },
1543
1383
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
1544
1384
  width: 44,
1545
1385
  height: 44,
1546
1386
  borderRadius: 12
1547
1387
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1548
- style: [_styles.fileManagementStyles.headerTitleContainer, {
1549
- flex: 1
1550
- }],
1388
+ className: "flex-1 items-center justify-center mx-[16px]",
1551
1389
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
1552
1390
  width: 140,
1553
1391
  height: 20,
@@ -1564,7 +1402,7 @@ const FileManagementScreen = ({
1564
1402
  borderRadius: 12
1565
1403
  })]
1566
1404
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1567
- style: _styles.fileManagementStyles.controlsBar,
1405
+ className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
1568
1406
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
1569
1407
  width: 100,
1570
1408
  height: 36,
@@ -1575,20 +1413,22 @@ const FileManagementScreen = ({
1575
1413
  borderRadius: 22
1576
1414
  })]
1577
1415
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1578
- style: [_styles.fileManagementStyles.searchContainer, {
1416
+ className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
1417
+ style: {
1579
1418
  backgroundColor: colors.card
1580
- }],
1419
+ },
1581
1420
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
1582
1421
  width: "100%",
1583
1422
  height: 44,
1584
1423
  borderRadius: 12
1585
1424
  })
1586
1425
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1587
- style: [_styles.fileManagementStyles.statsContainer, {
1426
+ className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
1427
+ style: {
1588
1428
  backgroundColor: colors.card
1589
- }],
1429
+ },
1590
1430
  children: [1, 2, 3].map(i => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1591
- style: _styles.fileManagementStyles.statItem,
1431
+ className: "flex-1 items-center py-[4px]",
1592
1432
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonBox, {
1593
1433
  width: 50,
1594
1434
  height: 20,
@@ -1603,8 +1443,8 @@ const FileManagementScreen = ({
1603
1443
  })]
1604
1444
  }, i))
1605
1445
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1606
- style: _styles.fileManagementStyles.scrollView,
1607
- contentContainerStyle: _styles.fileManagementStyles.scrollContainer,
1446
+ className: "flex-1",
1447
+ contentContainerClassName: "px-[12px] pt-0 pb-[12px]",
1608
1448
  showsVerticalScrollIndicator: false,
1609
1449
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1610
1450
  style: {
@@ -1695,7 +1535,7 @@ const FileManagementScreen = ({
1695
1535
  // If upload preview is showing, render it inline instead of the file list
1696
1536
  if (showUploadPreview) {
1697
1537
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1698
- style: _styles.fileManagementStyles.container,
1538
+ className: "flex-1",
1699
1539
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
1700
1540
  title: t('fileManagement.reviewFiles'),
1701
1541
  subtitle: t('fileManagement.readyToUpload', {
@@ -1716,7 +1556,7 @@ const FileManagementScreen = ({
1716
1556
  });
1717
1557
  }
1718
1558
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1719
- style: _styles.fileManagementStyles.container,
1559
+ className: "flex-1",
1720
1560
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
1721
1561
  title: selectMode ? multiSelect ? maxSelection ? t('fileManagement.selectedWithMax', {
1722
1562
  count: selectedIds.size,
@@ -1766,22 +1606,26 @@ const FileManagementScreen = ({
1766
1606
  elevation: "none",
1767
1607
  titleAlignment: "left"
1768
1608
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1769
- style: _styles.fileManagementStyles.controlsBar,
1609
+ className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
1770
1610
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1771
1611
  horizontal: true,
1772
1612
  showsHorizontalScrollIndicator: false,
1773
- style: _styles.fileManagementStyles.viewModeScroll,
1613
+ className: "flex-1",
1614
+ style: {
1615
+ maxWidth: '80%'
1616
+ },
1774
1617
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1775
- style: [_styles.fileManagementStyles.viewModeToggle, {
1618
+ className: "flex-row rounded-full p-[2px] overflow-hidden",
1619
+ style: {
1776
1620
  backgroundColor: colors.card
1777
- }],
1621
+ },
1778
1622
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
1779
1623
  isSelected: viewMode === 'all',
1780
1624
  onPress: () => setViewMode('all'),
1781
1625
  icon: viewMode === 'all' ? 'folder' : 'folder-outline',
1782
1626
  primaryColor: colors.primary,
1783
1627
  textColor: colors.text,
1784
- style: _styles.fileManagementStyles.viewModeButton,
1628
+ style: screenStyles.viewModeButton,
1785
1629
  accessibilityLabel: t('fileManagement.a11y.viewAll') || 'Show all files'
1786
1630
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
1787
1631
  isSelected: viewMode === 'photos',
@@ -1789,7 +1633,7 @@ const FileManagementScreen = ({
1789
1633
  icon: viewMode === 'photos' ? 'image-multiple' : 'image-multiple-outline',
1790
1634
  primaryColor: colors.primary,
1791
1635
  textColor: colors.text,
1792
- style: _styles.fileManagementStyles.viewModeButton,
1636
+ style: screenStyles.viewModeButton,
1793
1637
  accessibilityLabel: t('fileManagement.a11y.viewPhotos') || 'Show photos only'
1794
1638
  }), !isImageOnlyPicker && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1795
1639
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
@@ -1798,7 +1642,7 @@ const FileManagementScreen = ({
1798
1642
  icon: viewMode === 'videos' ? 'video' : 'video-outline',
1799
1643
  primaryColor: colors.primary,
1800
1644
  textColor: colors.text,
1801
- style: _styles.fileManagementStyles.viewModeButton,
1645
+ style: screenStyles.viewModeButton,
1802
1646
  accessibilityLabel: t('fileManagement.a11y.viewVideos') || 'Show videos only'
1803
1647
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
1804
1648
  isSelected: viewMode === 'documents',
@@ -1806,7 +1650,7 @@ const FileManagementScreen = ({
1806
1650
  icon: viewMode === 'documents' ? 'file-document' : 'file-document-outline',
1807
1651
  primaryColor: colors.primary,
1808
1652
  textColor: colors.text,
1809
- style: _styles.fileManagementStyles.viewModeButton,
1653
+ style: screenStyles.viewModeButton,
1810
1654
  accessibilityLabel: t('fileManagement.a11y.viewDocuments') || 'Show documents only'
1811
1655
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedButton, {
1812
1656
  isSelected: viewMode === 'audio',
@@ -1814,15 +1658,16 @@ const FileManagementScreen = ({
1814
1658
  icon: viewMode === 'audio' ? 'music-note' : 'music-note-outline',
1815
1659
  primaryColor: colors.primary,
1816
1660
  textColor: colors.text,
1817
- style: _styles.fileManagementStyles.viewModeButton,
1661
+ style: screenStyles.viewModeButton,
1818
1662
  accessibilityLabel: t('fileManagement.a11y.viewAudio') || 'Show audio only'
1819
1663
  })]
1820
1664
  })]
1821
1665
  })
1822
1666
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
1823
- style: [_styles.fileManagementStyles.sortButton, {
1667
+ className: "flex-row items-center justify-center px-[10px] py-[6px] rounded-full min-w-[36px] gap-[4px]",
1668
+ style: {
1824
1669
  backgroundColor: colors.card
1825
- }],
1670
+ },
1826
1671
  accessibilityRole: "button",
1827
1672
  accessibilityLabel: t('fileManagement.a11y.sortBy', {
1828
1673
  field: sortBy,
@@ -1849,9 +1694,10 @@ const FileManagementScreen = ({
1849
1694
  color: colors.textSecondary
1850
1695
  })]
1851
1696
  }), user?.id === targetUserId && (!selectMode || selectMode && allowUploadInSelectMode) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1852
- style: [_styles.fileManagementStyles.uploadButton, isImageOnlyPicker && _styles.fileManagementStyles.uploadButtonExtended, {
1697
+ className: `h-[44px] rounded-[22px] items-center justify-center ${isImageOnlyPicker ? 'w-auto min-w-[44px] px-[14px]' : 'w-[44px]'}`,
1698
+ style: {
1853
1699
  backgroundColor: colors.primary
1854
- }],
1700
+ },
1855
1701
  onPress: handleFileUpload,
1856
1702
  disabled: uploading || isPickingDocument,
1857
1703
  accessibilityRole: "button",
@@ -1860,25 +1706,25 @@ const FileManagementScreen = ({
1860
1706
  busy: uploading || isPickingDocument
1861
1707
  },
1862
1708
  children: uploading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1863
- style: _styles.fileManagementStyles.uploadProgress,
1709
+ className: "items-center justify-center",
1864
1710
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
1865
1711
  size: "small",
1866
1712
  color: "#FFFFFF"
1867
1713
  }), uploadProgress && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
1868
- style: _styles.fileManagementStyles.uploadProgressText,
1714
+ className: "text-white text-[10px] font-semibold mt-[2px]",
1869
1715
  children: [uploadProgress.current, "/", uploadProgress.total]
1870
1716
  })]
1871
1717
  }) : isPickingDocument ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
1872
1718
  size: "small",
1873
1719
  color: "#FFFFFF"
1874
1720
  }) : isImageOnlyPicker ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1875
- style: _styles.fileManagementStyles.uploadButtonContent,
1721
+ className: "flex-row items-center gap-[6px]",
1876
1722
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1877
1723
  name: "cloud-upload",
1878
1724
  size: 18,
1879
1725
  color: "#FFFFFF"
1880
1726
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1881
- style: _styles.fileManagementStyles.uploadButtonLabel,
1727
+ className: "text-white text-[14px] font-semibold",
1882
1728
  numberOfLines: 1,
1883
1729
  children: t('fileManagement.upload') || 'Upload'
1884
1730
  })]
@@ -1889,24 +1735,26 @@ const FileManagementScreen = ({
1889
1735
  })
1890
1736
  })]
1891
1737
  }), files.length > 0 && (viewMode === 'all' || files.some(f => f.contentType.startsWith('image/'))) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1892
- style: [_styles.fileManagementStyles.searchContainer, {
1738
+ className: "flex-row items-center px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-full gap-[10px]",
1739
+ style: {
1893
1740
  backgroundColor: colors.card
1894
- }],
1741
+ },
1895
1742
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1896
1743
  name: "search",
1897
1744
  size: 22,
1898
1745
  color: colors.icon
1899
1746
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
1900
- style: [_styles.fileManagementStyles.searchInput, {
1747
+ className: "flex-1 text-[16px] leading-[20px]",
1748
+ style: {
1901
1749
  color: colors.text
1902
- }],
1750
+ },
1903
1751
  placeholder: viewMode === 'photos' ? t('fileManagement.searchPhotos') : t('fileManagement.searchFiles'),
1904
1752
  placeholderTextColor: colors.textSecondary,
1905
1753
  value: searchQuery,
1906
1754
  onChangeText: setSearchQuery
1907
1755
  }), searchQuery.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1908
1756
  onPress: () => setSearchQuery(''),
1909
- style: _styles.fileManagementStyles.searchClearButton,
1757
+ className: "p-[4px] rounded-[12px] items-center justify-center",
1910
1758
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1911
1759
  name: "close-circle",
1912
1760
  size: 22,
@@ -1914,46 +1762,59 @@ const FileManagementScreen = ({
1914
1762
  })
1915
1763
  })]
1916
1764
  }), files.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1917
- style: [_styles.fileManagementStyles.statsContainer, {
1765
+ className: "flex-row px-[14px] py-[10px] mx-[12px] mb-[12px] rounded-[18px]",
1766
+ style: {
1918
1767
  backgroundColor: colors.card
1919
- }],
1768
+ },
1920
1769
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1921
- style: _styles.fileManagementStyles.statItem,
1770
+ className: "flex-1 items-center py-[4px]",
1922
1771
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1923
- style: [_styles.fileManagementStyles.statValue, {
1924
- color: colors.text
1925
- }],
1772
+ className: "text-[20px] font-extrabold leading-[24px]",
1773
+ style: {
1774
+ color: colors.text,
1775
+ letterSpacing: -0.5
1776
+ },
1926
1777
  children: filteredFiles.length
1927
1778
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1928
- style: [_styles.fileManagementStyles.statLabel, {
1929
- color: colors.textSecondary
1930
- }],
1779
+ className: "text-[12px] font-medium mt-[2px]",
1780
+ style: {
1781
+ color: colors.textSecondary,
1782
+ letterSpacing: 0.2
1783
+ },
1931
1784
  children: searchQuery.length > 0 ? t('fileManagement.found') : filteredFiles.length === 1 ? viewMode === 'photos' ? t('fileManagement.photo') : t('fileManagement.file') : viewMode === 'photos' ? t('fileManagement.photos_stat') : t('fileManagement.files')
1932
1785
  })]
1933
1786
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1934
- style: _styles.fileManagementStyles.statItem,
1787
+ className: "flex-1 items-center py-[4px]",
1935
1788
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1936
- style: [_styles.fileManagementStyles.statValue, {
1937
- color: colors.text
1938
- }],
1789
+ className: "text-[20px] font-extrabold leading-[24px]",
1790
+ style: {
1791
+ color: colors.text,
1792
+ letterSpacing: -0.5
1793
+ },
1939
1794
  children: (0, _fileManagement.formatFileSize)(filteredFiles.reduce((total, file) => total + file.length, 0))
1940
1795
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1941
- style: [_styles.fileManagementStyles.statLabel, {
1942
- color: colors.textSecondary
1943
- }],
1796
+ className: "text-[12px] font-medium mt-[2px]",
1797
+ style: {
1798
+ color: colors.textSecondary,
1799
+ letterSpacing: 0.2
1800
+ },
1944
1801
  children: searchQuery.length > 0 ? t('fileManagement.size') : t('fileManagement.totalSize')
1945
1802
  })]
1946
1803
  }), searchQuery.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1947
- style: _styles.fileManagementStyles.statItem,
1804
+ className: "flex-1 items-center py-[4px]",
1948
1805
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1949
- style: [_styles.fileManagementStyles.statValue, {
1950
- color: colors.text
1951
- }],
1806
+ className: "text-[20px] font-extrabold leading-[24px]",
1807
+ style: {
1808
+ color: colors.text,
1809
+ letterSpacing: -0.5
1810
+ },
1952
1811
  children: files.length
1953
1812
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1954
- style: [_styles.fileManagementStyles.statLabel, {
1955
- color: colors.textSecondary
1956
- }],
1813
+ className: "text-[12px] font-medium mt-[2px]",
1814
+ style: {
1815
+ color: colors.textSecondary,
1816
+ letterSpacing: 0.2
1817
+ },
1957
1818
  children: t('fileManagement.total')
1958
1819
  })]
1959
1820
  })]
@@ -2031,7 +1892,5 @@ const FileManagementScreen = ({
2031
1892
  })]
2032
1893
  });
2033
1894
  };
2034
-
2035
- // Styles have been moved to components/fileManagement/styles.ts
2036
1895
  var _default = exports.default = FileManagementScreen;
2037
1896
  //# sourceMappingURL=FileManagementScreen.js.map