react-native-ensys-camera-x 1.0.7

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 (506) hide show
  1. package/CustomCamera.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +833 -0
  4. package/android/build.gradle +135 -0
  5. package/android/consumer-rules.pro +47 -0
  6. package/android/src/main/AndroidManifest.xml +72 -0
  7. package/android/src/main/java/android/print/PdfPrint.java +51 -0
  8. package/android/src/main/java/com/customcamera/AnimatedImageViewManager.kt +199 -0
  9. package/android/src/main/java/com/customcamera/AudioPlayerView.kt +322 -0
  10. package/android/src/main/java/com/customcamera/AudioRecorder.kt +506 -0
  11. package/android/src/main/java/com/customcamera/BarcodeScannerActivity.kt +361 -0
  12. package/android/src/main/java/com/customcamera/BlurBackgroundView.kt +199 -0
  13. package/android/src/main/java/com/customcamera/CacheCleanupManager.kt +386 -0
  14. package/android/src/main/java/com/customcamera/CameraAspectRatioMode.kt +77 -0
  15. package/android/src/main/java/com/customcamera/CameraAsset.kt +211 -0
  16. package/android/src/main/java/com/customcamera/CameraTheme.kt +479 -0
  17. package/android/src/main/java/com/customcamera/CompressionCacheStore.kt +504 -0
  18. package/android/src/main/java/com/customcamera/CompressionFileNameUtils.kt +7 -0
  19. package/android/src/main/java/com/customcamera/CompressionProfile.kt +195 -0
  20. package/android/src/main/java/com/customcamera/CustomCameraActivity.kt +7291 -0
  21. package/android/src/main/java/com/customcamera/CustomCameraFileProvider.kt +9 -0
  22. package/android/src/main/java/com/customcamera/CustomCameraModule.kt +2479 -0
  23. package/android/src/main/java/com/customcamera/CustomCameraPackage.kt +53 -0
  24. package/android/src/main/java/com/customcamera/DisplayUtils.kt +9 -0
  25. package/android/src/main/java/com/customcamera/DocumentPreviewView.kt +846 -0
  26. package/android/src/main/java/com/customcamera/DrawingView.kt +214 -0
  27. package/android/src/main/java/com/customcamera/EmojiPickerData.kt +228 -0
  28. package/android/src/main/java/com/customcamera/FilterStripAdapter.kt +158 -0
  29. package/android/src/main/java/com/customcamera/GifSupport.kt +215 -0
  30. package/android/src/main/java/com/customcamera/GlobalAudioPlayer.kt +320 -0
  31. package/android/src/main/java/com/customcamera/ImageExporter.kt +1394 -0
  32. package/android/src/main/java/com/customcamera/ImageFormatSupport.kt +163 -0
  33. package/android/src/main/java/com/customcamera/Localization.kt +206 -0
  34. package/android/src/main/java/com/customcamera/MediaAdapters.kt +758 -0
  35. package/android/src/main/java/com/customcamera/MediaCacheManager.kt +782 -0
  36. package/android/src/main/java/com/customcamera/MediaExportFormats.kt +201 -0
  37. package/android/src/main/java/com/customcamera/MediaFileIo.kt +310 -0
  38. package/android/src/main/java/com/customcamera/MediaMetadataStore.kt +494 -0
  39. package/android/src/main/java/com/customcamera/MediaPreviewEditor.kt +14865 -0
  40. package/android/src/main/java/com/customcamera/MediaPublisher.kt +423 -0
  41. package/android/src/main/java/com/customcamera/MediaStorageWorkflow.kt +722 -0
  42. package/android/src/main/java/com/customcamera/MediaStoreRepository.kt +378 -0
  43. package/android/src/main/java/com/customcamera/MediaThumbnailView.kt +286 -0
  44. package/android/src/main/java/com/customcamera/MediaUtils.kt +37 -0
  45. package/android/src/main/java/com/customcamera/NativeVideoViewManager.kt +845 -0
  46. package/android/src/main/java/com/customcamera/OfficeDocumentConverter.kt +2791 -0
  47. package/android/src/main/java/com/customcamera/PendingCaptureCrops.kt +88 -0
  48. package/android/src/main/java/com/customcamera/PowerPointPreview.kt +4077 -0
  49. package/android/src/main/java/com/customcamera/RecentPickerStore.kt +74 -0
  50. package/android/src/main/java/com/customcamera/SecureFileEraser.kt +411 -0
  51. package/android/src/main/java/com/customcamera/SecureKeyModule.kt +88 -0
  52. package/android/src/main/java/com/customcamera/SecureMediaDeleter.kt +493 -0
  53. package/android/src/main/java/com/customcamera/StickerPickerData.kt +107 -0
  54. package/android/src/main/java/com/customcamera/SvgDrawable.kt +175 -0
  55. package/android/src/main/java/com/customcamera/SvgIconViewManager.kt +77 -0
  56. package/android/src/main/java/com/customcamera/TextEntryController.kt +553 -0
  57. package/android/src/main/java/com/customcamera/ThumbnailLoader.kt +455 -0
  58. package/android/src/main/java/com/customcamera/UploadService.kt +909 -0
  59. package/android/src/main/java/com/customcamera/VideoEditUtils.kt +210 -0
  60. package/android/src/main/java/com/customcamera/VideoRotationTranscoder.kt +1992 -0
  61. package/android/src/main/java/com/customcamera/gif/AnimatedGifEncoder.kt +473 -0
  62. package/android/src/main/java/com/customcamera/gif/GifDecoder.kt +690 -0
  63. package/android/src/main/java/com/customcamera/gif/GifFramesDrawable.kt +160 -0
  64. package/android/src/main/java/com/customcamera/gif/GifHttp.kt +112 -0
  65. package/android/src/main/java/com/customcamera/gif/GifImageLoader.kt +186 -0
  66. package/android/src/main/java/com/customcamera/gif/GifModels.kt +74 -0
  67. package/android/src/main/java/com/customcamera/gif/GifProvider.kt +49 -0
  68. package/android/src/main/java/com/customcamera/gif/GifProviders.kt +27 -0
  69. package/android/src/main/java/com/customcamera/gif/GifRepository.kt +124 -0
  70. package/android/src/main/java/com/customcamera/gif/GifSafety.kt +33 -0
  71. package/android/src/main/java/com/customcamera/gif/GiphyGifProvider.kt +146 -0
  72. package/android/src/main/java/com/customcamera/gif/LZWEncoder.kt +258 -0
  73. package/android/src/main/java/com/customcamera/gif/NeuQuant.kt +435 -0
  74. package/android/src/main/java/com/customcamera/gif/TenorGifProvider.kt +147 -0
  75. package/android/src/main/res/drawable/bg_brush_selected.xml +5 -0
  76. package/android/src/main/res/drawable/bg_color_swatch.xml +5 -0
  77. package/android/src/main/res/drawable/bg_editor_toolbar.xml +6 -0
  78. package/android/src/main/res/drawable/bg_icon_circle.xml +5 -0
  79. package/android/src/main/res/drawable/bg_icon_circle_light.xml +5 -0
  80. package/android/src/main/res/drawable/bg_mode_tab_active.xml +6 -0
  81. package/android/src/main/res/drawable/bg_pill.xml +6 -0
  82. package/android/src/main/res/drawable/bg_recording_dot.xml +6 -0
  83. package/android/src/main/res/drawable/bg_selection_badge.xml +8 -0
  84. package/android/src/main/res/drawable/bg_send_button.xml +5 -0
  85. package/android/src/main/res/drawable/bg_shutter_inner.xml +5 -0
  86. package/android/src/main/res/drawable/bg_shutter_recording.xml +6 -0
  87. package/android/src/main/res/drawable/bg_shutter_ring.xml +8 -0
  88. package/android/src/main/res/drawable/bg_shutter_video_idle.xml +5 -0
  89. package/android/src/main/res/drawable/bg_thumbnail.xml +9 -0
  90. package/android/src/main/res/drawable/ic_aspect_ratio.xml +17 -0
  91. package/android/src/main/res/drawable/ic_audio.xml +10 -0
  92. package/android/src/main/res/drawable/ic_back.xml +10 -0
  93. package/android/src/main/res/drawable/ic_brush_medium.xml +12 -0
  94. package/android/src/main/res/drawable/ic_brush_thick.xml +12 -0
  95. package/android/src/main/res/drawable/ic_brush_thin.xml +12 -0
  96. package/android/src/main/res/drawable/ic_check.xml +17 -0
  97. package/android/src/main/res/drawable/ic_chevron_down.xml +10 -0
  98. package/android/src/main/res/drawable/ic_chevron_up.xml +13 -0
  99. package/android/src/main/res/drawable/ic_clear_drawing.xml +10 -0
  100. package/android/src/main/res/drawable/ic_close.xml +10 -0
  101. package/android/src/main/res/drawable/ic_cover.xml +9 -0
  102. package/android/src/main/res/drawable/ic_crop.xml +10 -0
  103. package/android/src/main/res/drawable/ic_delete.xml +9 -0
  104. package/android/src/main/res/drawable/ic_document.xml +10 -0
  105. package/android/src/main/res/drawable/ic_done.xml +10 -0
  106. package/android/src/main/res/drawable/ic_download.xml +10 -0
  107. package/android/src/main/res/drawable/ic_emoji.xml +10 -0
  108. package/android/src/main/res/drawable/ic_filter.xml +10 -0
  109. package/android/src/main/res/drawable/ic_flash_auto.xml +7 -0
  110. package/android/src/main/res/drawable/ic_flash_off.xml +23 -0
  111. package/android/src/main/res/drawable/ic_flash_on.xml +16 -0
  112. package/android/src/main/res/drawable/ic_flip.xml +15 -0
  113. package/android/src/main/res/drawable/ic_gallery.xml +10 -0
  114. package/android/src/main/res/drawable/ic_gif.xml +24 -0
  115. package/android/src/main/res/drawable/ic_lock.xml +19 -0
  116. package/android/src/main/res/drawable/ic_lock_open.xml +22 -0
  117. package/android/src/main/res/drawable/ic_marker.xml +10 -0
  118. package/android/src/main/res/drawable/ic_more_vert.xml +18 -0
  119. package/android/src/main/res/drawable/ic_overlay_close.xml +19 -0
  120. package/android/src/main/res/drawable/ic_overlay_resize.xml +18 -0
  121. package/android/src/main/res/drawable/ic_pause.xml +10 -0
  122. package/android/src/main/res/drawable/ic_photo_mode.xml +10 -0
  123. package/android/src/main/res/drawable/ic_play.xml +10 -0
  124. package/android/src/main/res/drawable/ic_redo.xml +10 -0
  125. package/android/src/main/res/drawable/ic_rotate.xml +9 -0
  126. package/android/src/main/res/drawable/ic_send.xml +10 -0
  127. package/android/src/main/res/drawable/ic_share.xml +10 -0
  128. package/android/src/main/res/drawable/ic_stat_upload.xml +10 -0
  129. package/android/src/main/res/drawable/ic_sticker.xml +24 -0
  130. package/android/src/main/res/drawable/ic_text.xml +10 -0
  131. package/android/src/main/res/drawable/ic_text_align_center.xml +11 -0
  132. package/android/src/main/res/drawable/ic_text_align_left.xml +11 -0
  133. package/android/src/main/res/drawable/ic_text_align_right.xml +11 -0
  134. package/android/src/main/res/drawable/ic_text_bg.xml +11 -0
  135. package/android/src/main/res/drawable/ic_trim.xml +23 -0
  136. package/android/src/main/res/drawable/ic_undo.xml +10 -0
  137. package/android/src/main/res/drawable/ic_video_mode.xml +10 -0
  138. package/android/src/main/res/drawable/ic_video_note.xml +13 -0
  139. package/android/src/main/res/drawable/ic_volume_off.xml +9 -0
  140. package/android/src/main/res/drawable/ic_volume_on.xml +9 -0
  141. package/android/src/main/res/drawable/sticker_heart.xml +9 -0
  142. package/android/src/main/res/drawable/sticker_smile.xml +9 -0
  143. package/android/src/main/res/drawable/sticker_star.xml +9 -0
  144. package/android/src/main/res/drawable/sticker_thumbsup.xml +9 -0
  145. package/android/src/main/res/values/colors.xml +34 -0
  146. package/android/src/main/res/values/ids.xml +15 -0
  147. package/android/src/main/res/values/strings.xml +15 -0
  148. package/android/src/main/res/values/styles.xml +20 -0
  149. package/android/src/main/res/xml/file_paths.xml +34 -0
  150. package/ios/CustomCamera.h +5 -0
  151. package/ios/CustomCamera.mm +214 -0
  152. package/lib/module/AudioPlayerContext.js +233 -0
  153. package/lib/module/AudioPlayerContext.js.map +1 -0
  154. package/lib/module/CameraPreview.js +304 -0
  155. package/lib/module/CameraPreview.js.map +1 -0
  156. package/lib/module/NativeAnimatedImageView.js +41 -0
  157. package/lib/module/NativeAnimatedImageView.js.map +1 -0
  158. package/lib/module/NativeAudioPlayerView.js +33 -0
  159. package/lib/module/NativeAudioPlayerView.js.map +1 -0
  160. package/lib/module/NativeBlurView.js +35 -0
  161. package/lib/module/NativeBlurView.js.map +1 -0
  162. package/lib/module/NativeCustomCamera.js +128 -0
  163. package/lib/module/NativeCustomCamera.js.map +1 -0
  164. package/lib/module/NativeCustomCamera.web.js +143 -0
  165. package/lib/module/NativeCustomCamera.web.js.map +1 -0
  166. package/lib/module/NativeCustomVideoView.js +5 -0
  167. package/lib/module/NativeCustomVideoView.js.map +1 -0
  168. package/lib/module/NativeDocumentPreviewView.js +156 -0
  169. package/lib/module/NativeDocumentPreviewView.js.map +1 -0
  170. package/lib/module/NativeMediaThumbnailView.js +110 -0
  171. package/lib/module/NativeMediaThumbnailView.js.map +1 -0
  172. package/lib/module/NativeSvgIcon.js +32 -0
  173. package/lib/module/NativeSvgIcon.js.map +1 -0
  174. package/lib/module/ResponsivePreviewContainer.js +171 -0
  175. package/lib/module/ResponsivePreviewContainer.js.map +1 -0
  176. package/lib/module/accessibility.js +61 -0
  177. package/lib/module/accessibility.js.map +1 -0
  178. package/lib/module/config.js +352 -0
  179. package/lib/module/config.js.map +1 -0
  180. package/lib/module/cpuOptimization.js +296 -0
  181. package/lib/module/cpuOptimization.js.map +1 -0
  182. package/lib/module/db/DatabaseManager.js +191 -0
  183. package/lib/module/db/DatabaseManager.js.map +1 -0
  184. package/lib/module/db/MediaMapper.js +284 -0
  185. package/lib/module/db/MediaMapper.js.map +1 -0
  186. package/lib/module/db/MediaRepository.js +242 -0
  187. package/lib/module/db/MediaRepository.js.map +1 -0
  188. package/lib/module/db/index.js +41 -0
  189. package/lib/module/db/index.js.map +1 -0
  190. package/lib/module/db/migrations.js +180 -0
  191. package/lib/module/db/migrations.js.map +1 -0
  192. package/lib/module/db/react-native-sqlcipher.d.js +2 -0
  193. package/lib/module/db/react-native-sqlcipher.d.js.map +1 -0
  194. package/lib/module/db/secureKey.js +87 -0
  195. package/lib/module/db/secureKey.js.map +1 -0
  196. package/lib/module/db/types.js +57 -0
  197. package/lib/module/db/types.js.map +1 -0
  198. package/lib/module/db/useMediaDatabase.js +123 -0
  199. package/lib/module/db/useMediaDatabase.js.map +1 -0
  200. package/lib/module/defaultIcons.js +2259 -0
  201. package/lib/module/defaultIcons.js.map +1 -0
  202. package/lib/module/deviceCapabilities.js +408 -0
  203. package/lib/module/deviceCapabilities.js.map +1 -0
  204. package/lib/module/errors.js +267 -0
  205. package/lib/module/errors.js.map +1 -0
  206. package/lib/module/iconConfig.js +796 -0
  207. package/lib/module/iconConfig.js.map +1 -0
  208. package/lib/module/icons.js +514 -0
  209. package/lib/module/icons.js.map +1 -0
  210. package/lib/module/index.js +251 -0
  211. package/lib/module/index.js.map +1 -0
  212. package/lib/module/jest-globals.d.js +2 -0
  213. package/lib/module/jest-globals.d.js.map +1 -0
  214. package/lib/module/library/MediaLibrary.js +107 -0
  215. package/lib/module/library/MediaLibrary.js.map +1 -0
  216. package/lib/module/library/MediaLibraryScreen.js +2597 -0
  217. package/lib/module/library/MediaLibraryScreen.js.map +1 -0
  218. package/lib/module/library/components/AudioPreview.js +74 -0
  219. package/lib/module/library/components/AudioPreview.js.map +1 -0
  220. package/lib/module/library/components/DocumentPreview.js +331 -0
  221. package/lib/module/library/components/DocumentPreview.js.map +1 -0
  222. package/lib/module/library/components/ExpandableFab.js +343 -0
  223. package/lib/module/library/components/ExpandableFab.js.map +1 -0
  224. package/lib/module/library/components/FileTiles.js +251 -0
  225. package/lib/module/library/components/FileTiles.js.map +1 -0
  226. package/lib/module/library/components/ImagePreview.js +70 -0
  227. package/lib/module/library/components/ImagePreview.js.map +1 -0
  228. package/lib/module/library/components/MediaMetadataHeader.js +175 -0
  229. package/lib/module/library/components/MediaMetadataHeader.js.map +1 -0
  230. package/lib/module/library/components/RecordAudioScreen.js +816 -0
  231. package/lib/module/library/components/RecordAudioScreen.js.map +1 -0
  232. package/lib/module/library/components/VideoPreview.js +453 -0
  233. package/lib/module/library/components/VideoPreview.js.map +1 -0
  234. package/lib/module/library/components/ViewerCounter.js +55 -0
  235. package/lib/module/library/components/ViewerCounter.js.map +1 -0
  236. package/lib/module/library/compressionEstimate.js +507 -0
  237. package/lib/module/library/compressionEstimate.js.map +1 -0
  238. package/lib/module/library/fileMetadata.js +196 -0
  239. package/lib/module/library/fileMetadata.js.map +1 -0
  240. package/lib/module/library/index.js +42 -0
  241. package/lib/module/library/index.js.map +1 -0
  242. package/lib/module/library/libraryIconRegistry.js +69 -0
  243. package/lib/module/library/libraryIconRegistry.js.map +1 -0
  244. package/lib/module/library/libraryIcons.js +858 -0
  245. package/lib/module/library/libraryIcons.js.map +1 -0
  246. package/lib/module/library/localizedFormat.js +181 -0
  247. package/lib/module/library/localizedFormat.js.map +1 -0
  248. package/lib/module/library/palette.js +225 -0
  249. package/lib/module/library/palette.js.map +1 -0
  250. package/lib/module/library/responsive.js +53 -0
  251. package/lib/module/library/responsive.js.map +1 -0
  252. package/lib/module/locales.js +416 -0
  253. package/lib/module/locales.js.map +1 -0
  254. package/lib/module/localization.js +1064 -0
  255. package/lib/module/localization.js.map +1 -0
  256. package/lib/module/logger.js +20 -0
  257. package/lib/module/logger.js.map +1 -0
  258. package/lib/module/lowMemoryCache.js +206 -0
  259. package/lib/module/lowMemoryCache.js.map +1 -0
  260. package/lib/module/mediaHistory.js +33 -0
  261. package/lib/module/mediaHistory.js.map +1 -0
  262. package/lib/module/mediaStorageService.js +402 -0
  263. package/lib/module/mediaStorageService.js.map +1 -0
  264. package/lib/module/memory.js +79 -0
  265. package/lib/module/memory.js.map +1 -0
  266. package/lib/module/nativeActions.js +307 -0
  267. package/lib/module/nativeActions.js.map +1 -0
  268. package/lib/module/nativeComponentSupport.js +61 -0
  269. package/lib/module/nativeComponentSupport.js.map +1 -0
  270. package/lib/module/networkPerformance.js +24 -0
  271. package/lib/module/networkPerformance.js.map +1 -0
  272. package/lib/module/package.json +1 -0
  273. package/lib/module/performance.js +104 -0
  274. package/lib/module/performance.js.map +1 -0
  275. package/lib/module/performanceMonitor.js +155 -0
  276. package/lib/module/performanceMonitor.js.map +1 -0
  277. package/lib/module/permissions.js +370 -0
  278. package/lib/module/permissions.js.map +1 -0
  279. package/lib/module/rendering.js +40 -0
  280. package/lib/module/rendering.js.map +1 -0
  281. package/lib/module/security.js +18 -0
  282. package/lib/module/security.js.map +1 -0
  283. package/lib/module/state.js +266 -0
  284. package/lib/module/state.js.map +1 -0
  285. package/lib/module/storage.js +400 -0
  286. package/lib/module/storage.js.map +1 -0
  287. package/lib/module/theme.js +390 -0
  288. package/lib/module/theme.js.map +1 -0
  289. package/lib/module/types.js +4 -0
  290. package/lib/module/types.js.map +1 -0
  291. package/lib/module/utils.js +115 -0
  292. package/lib/module/utils.js.map +1 -0
  293. package/lib/module/validation.js +288 -0
  294. package/lib/module/validation.js.map +1 -0
  295. package/lib/typescript/package.json +1 -0
  296. package/lib/typescript/src/AudioPlayerContext.d.ts +27 -0
  297. package/lib/typescript/src/AudioPlayerContext.d.ts.map +1 -0
  298. package/lib/typescript/src/CameraPreview.d.ts +13 -0
  299. package/lib/typescript/src/CameraPreview.d.ts.map +1 -0
  300. package/lib/typescript/src/NativeAnimatedImageView.d.ts +33 -0
  301. package/lib/typescript/src/NativeAnimatedImageView.d.ts.map +1 -0
  302. package/lib/typescript/src/NativeAudioPlayerView.d.ts +12 -0
  303. package/lib/typescript/src/NativeAudioPlayerView.d.ts.map +1 -0
  304. package/lib/typescript/src/NativeBlurView.d.ts +12 -0
  305. package/lib/typescript/src/NativeBlurView.d.ts.map +1 -0
  306. package/lib/typescript/src/NativeCustomCamera.d.ts +167 -0
  307. package/lib/typescript/src/NativeCustomCamera.d.ts.map +1 -0
  308. package/lib/typescript/src/NativeCustomCamera.web.d.ts +47 -0
  309. package/lib/typescript/src/NativeCustomCamera.web.d.ts.map +1 -0
  310. package/lib/typescript/src/NativeCustomVideoView.d.ts +30 -0
  311. package/lib/typescript/src/NativeCustomVideoView.d.ts.map +1 -0
  312. package/lib/typescript/src/NativeDocumentPreviewView.d.ts +48 -0
  313. package/lib/typescript/src/NativeDocumentPreviewView.d.ts.map +1 -0
  314. package/lib/typescript/src/NativeMediaThumbnailView.d.ts +54 -0
  315. package/lib/typescript/src/NativeMediaThumbnailView.d.ts.map +1 -0
  316. package/lib/typescript/src/NativeSvgIcon.d.ts +25 -0
  317. package/lib/typescript/src/NativeSvgIcon.d.ts.map +1 -0
  318. package/lib/typescript/src/ResponsivePreviewContainer.d.ts +92 -0
  319. package/lib/typescript/src/ResponsivePreviewContainer.d.ts.map +1 -0
  320. package/lib/typescript/src/accessibility.d.ts +20 -0
  321. package/lib/typescript/src/accessibility.d.ts.map +1 -0
  322. package/lib/typescript/src/config.d.ts +145 -0
  323. package/lib/typescript/src/config.d.ts.map +1 -0
  324. package/lib/typescript/src/cpuOptimization.d.ts +63 -0
  325. package/lib/typescript/src/cpuOptimization.d.ts.map +1 -0
  326. package/lib/typescript/src/db/DatabaseManager.d.ts +48 -0
  327. package/lib/typescript/src/db/DatabaseManager.d.ts.map +1 -0
  328. package/lib/typescript/src/db/MediaMapper.d.ts +77 -0
  329. package/lib/typescript/src/db/MediaMapper.d.ts.map +1 -0
  330. package/lib/typescript/src/db/MediaRepository.d.ts +66 -0
  331. package/lib/typescript/src/db/MediaRepository.d.ts.map +1 -0
  332. package/lib/typescript/src/db/index.d.ts +23 -0
  333. package/lib/typescript/src/db/index.d.ts.map +1 -0
  334. package/lib/typescript/src/db/migrations.d.ts +31 -0
  335. package/lib/typescript/src/db/migrations.d.ts.map +1 -0
  336. package/lib/typescript/src/db/secureKey.d.ts +10 -0
  337. package/lib/typescript/src/db/secureKey.d.ts.map +1 -0
  338. package/lib/typescript/src/db/types.d.ts +115 -0
  339. package/lib/typescript/src/db/types.d.ts.map +1 -0
  340. package/lib/typescript/src/db/useMediaDatabase.d.ts +41 -0
  341. package/lib/typescript/src/db/useMediaDatabase.d.ts.map +1 -0
  342. package/lib/typescript/src/defaultIcons.d.ts +139 -0
  343. package/lib/typescript/src/defaultIcons.d.ts.map +1 -0
  344. package/lib/typescript/src/deviceCapabilities.d.ts +92 -0
  345. package/lib/typescript/src/deviceCapabilities.d.ts.map +1 -0
  346. package/lib/typescript/src/errors.d.ts +95 -0
  347. package/lib/typescript/src/errors.d.ts.map +1 -0
  348. package/lib/typescript/src/iconConfig.d.ts +176 -0
  349. package/lib/typescript/src/iconConfig.d.ts.map +1 -0
  350. package/lib/typescript/src/icons.d.ts +217 -0
  351. package/lib/typescript/src/icons.d.ts.map +1 -0
  352. package/lib/typescript/src/index.d.ts +104 -0
  353. package/lib/typescript/src/index.d.ts.map +1 -0
  354. package/lib/typescript/src/library/MediaLibrary.d.ts +57 -0
  355. package/lib/typescript/src/library/MediaLibrary.d.ts.map +1 -0
  356. package/lib/typescript/src/library/MediaLibraryScreen.d.ts +51 -0
  357. package/lib/typescript/src/library/MediaLibraryScreen.d.ts.map +1 -0
  358. package/lib/typescript/src/library/components/AudioPreview.d.ts +6 -0
  359. package/lib/typescript/src/library/components/AudioPreview.d.ts.map +1 -0
  360. package/lib/typescript/src/library/components/DocumentPreview.d.ts +10 -0
  361. package/lib/typescript/src/library/components/DocumentPreview.d.ts.map +1 -0
  362. package/lib/typescript/src/library/components/ExpandableFab.d.ts +39 -0
  363. package/lib/typescript/src/library/components/ExpandableFab.d.ts.map +1 -0
  364. package/lib/typescript/src/library/components/FileTiles.d.ts +8 -0
  365. package/lib/typescript/src/library/components/FileTiles.d.ts.map +1 -0
  366. package/lib/typescript/src/library/components/ImagePreview.d.ts +5 -0
  367. package/lib/typescript/src/library/components/ImagePreview.d.ts.map +1 -0
  368. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts +16 -0
  369. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts.map +1 -0
  370. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts +8 -0
  371. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts.map +1 -0
  372. package/lib/typescript/src/library/components/VideoPreview.d.ts +20 -0
  373. package/lib/typescript/src/library/components/VideoPreview.d.ts.map +1 -0
  374. package/lib/typescript/src/library/components/ViewerCounter.d.ts +13 -0
  375. package/lib/typescript/src/library/components/ViewerCounter.d.ts.map +1 -0
  376. package/lib/typescript/src/library/compressionEstimate.d.ts +313 -0
  377. package/lib/typescript/src/library/compressionEstimate.d.ts.map +1 -0
  378. package/lib/typescript/src/library/fileMetadata.d.ts +33 -0
  379. package/lib/typescript/src/library/fileMetadata.d.ts.map +1 -0
  380. package/lib/typescript/src/library/index.d.ts +40 -0
  381. package/lib/typescript/src/library/index.d.ts.map +1 -0
  382. package/lib/typescript/src/library/libraryIconRegistry.d.ts +35 -0
  383. package/lib/typescript/src/library/libraryIconRegistry.d.ts.map +1 -0
  384. package/lib/typescript/src/library/libraryIcons.d.ts +85 -0
  385. package/lib/typescript/src/library/libraryIcons.d.ts.map +1 -0
  386. package/lib/typescript/src/library/localizedFormat.d.ts +49 -0
  387. package/lib/typescript/src/library/localizedFormat.d.ts.map +1 -0
  388. package/lib/typescript/src/library/palette.d.ts +104 -0
  389. package/lib/typescript/src/library/palette.d.ts.map +1 -0
  390. package/lib/typescript/src/library/responsive.d.ts +15 -0
  391. package/lib/typescript/src/library/responsive.d.ts.map +1 -0
  392. package/lib/typescript/src/locales.d.ts +103 -0
  393. package/lib/typescript/src/locales.d.ts.map +1 -0
  394. package/lib/typescript/src/localization.d.ts +1051 -0
  395. package/lib/typescript/src/localization.d.ts.map +1 -0
  396. package/lib/typescript/src/logger.d.ts +4 -0
  397. package/lib/typescript/src/logger.d.ts.map +1 -0
  398. package/lib/typescript/src/lowMemoryCache.d.ts +64 -0
  399. package/lib/typescript/src/lowMemoryCache.d.ts.map +1 -0
  400. package/lib/typescript/src/mediaHistory.d.ts +3 -0
  401. package/lib/typescript/src/mediaHistory.d.ts.map +1 -0
  402. package/lib/typescript/src/mediaStorageService.d.ts +155 -0
  403. package/lib/typescript/src/mediaStorageService.d.ts.map +1 -0
  404. package/lib/typescript/src/memory.d.ts +21 -0
  405. package/lib/typescript/src/memory.d.ts.map +1 -0
  406. package/lib/typescript/src/nativeActions.d.ts +174 -0
  407. package/lib/typescript/src/nativeActions.d.ts.map +1 -0
  408. package/lib/typescript/src/nativeComponentSupport.d.ts +30 -0
  409. package/lib/typescript/src/nativeComponentSupport.d.ts.map +1 -0
  410. package/lib/typescript/src/networkPerformance.d.ts +12 -0
  411. package/lib/typescript/src/networkPerformance.d.ts.map +1 -0
  412. package/lib/typescript/src/performance.d.ts +32 -0
  413. package/lib/typescript/src/performance.d.ts.map +1 -0
  414. package/lib/typescript/src/performanceMonitor.d.ts +45 -0
  415. package/lib/typescript/src/performanceMonitor.d.ts.map +1 -0
  416. package/lib/typescript/src/permissions.d.ts +132 -0
  417. package/lib/typescript/src/permissions.d.ts.map +1 -0
  418. package/lib/typescript/src/rendering.d.ts +9 -0
  419. package/lib/typescript/src/rendering.d.ts.map +1 -0
  420. package/lib/typescript/src/security.d.ts +6 -0
  421. package/lib/typescript/src/security.d.ts.map +1 -0
  422. package/lib/typescript/src/state.d.ts +102 -0
  423. package/lib/typescript/src/state.d.ts.map +1 -0
  424. package/lib/typescript/src/storage.d.ts +117 -0
  425. package/lib/typescript/src/storage.d.ts.map +1 -0
  426. package/lib/typescript/src/theme.d.ts +15 -0
  427. package/lib/typescript/src/theme.d.ts.map +1 -0
  428. package/lib/typescript/src/types.d.ts +802 -0
  429. package/lib/typescript/src/types.d.ts.map +1 -0
  430. package/lib/typescript/src/utils.d.ts +50 -0
  431. package/lib/typescript/src/utils.d.ts.map +1 -0
  432. package/lib/typescript/src/validation.d.ts +52 -0
  433. package/lib/typescript/src/validation.d.ts.map +1 -0
  434. package/package.json +204 -0
  435. package/react-native.config.js +17 -0
  436. package/src/AudioPlayerContext.tsx +220 -0
  437. package/src/CameraPreview.tsx +352 -0
  438. package/src/NativeAnimatedImageView.tsx +71 -0
  439. package/src/NativeAudioPlayerView.tsx +39 -0
  440. package/src/NativeBlurView.tsx +40 -0
  441. package/src/NativeCustomCamera.ts +305 -0
  442. package/src/NativeCustomCamera.web.ts +192 -0
  443. package/src/NativeCustomVideoView.ts +30 -0
  444. package/src/NativeDocumentPreviewView.tsx +196 -0
  445. package/src/NativeMediaThumbnailView.tsx +167 -0
  446. package/src/NativeSvgIcon.tsx +46 -0
  447. package/src/ResponsivePreviewContainer.tsx +227 -0
  448. package/src/accessibility.ts +80 -0
  449. package/src/config.ts +406 -0
  450. package/src/cpuOptimization.ts +365 -0
  451. package/src/db/DatabaseManager.ts +212 -0
  452. package/src/db/MediaMapper.ts +377 -0
  453. package/src/db/MediaRepository.ts +313 -0
  454. package/src/db/index.ts +73 -0
  455. package/src/db/migrations.ts +222 -0
  456. package/src/db/react-native-sqlcipher.d.ts +76 -0
  457. package/src/db/secureKey.ts +100 -0
  458. package/src/db/types.ts +123 -0
  459. package/src/db/useMediaDatabase.ts +191 -0
  460. package/src/defaultIcons.tsx +2390 -0
  461. package/src/deviceCapabilities.ts +438 -0
  462. package/src/errors.ts +350 -0
  463. package/src/iconConfig.tsx +962 -0
  464. package/src/icons.tsx +788 -0
  465. package/src/index.tsx +763 -0
  466. package/src/jest-globals.d.ts +9 -0
  467. package/src/library/MediaLibrary.tsx +141 -0
  468. package/src/library/MediaLibraryScreen.tsx +3003 -0
  469. package/src/library/components/AudioPreview.tsx +73 -0
  470. package/src/library/components/DocumentPreview.tsx +361 -0
  471. package/src/library/components/ExpandableFab.tsx +342 -0
  472. package/src/library/components/FileTiles.tsx +252 -0
  473. package/src/library/components/ImagePreview.tsx +72 -0
  474. package/src/library/components/MediaMetadataHeader.tsx +208 -0
  475. package/src/library/components/RecordAudioScreen.tsx +845 -0
  476. package/src/library/components/VideoPreview.tsx +478 -0
  477. package/src/library/components/ViewerCounter.tsx +71 -0
  478. package/src/library/compressionEstimate.ts +662 -0
  479. package/src/library/fileMetadata.ts +212 -0
  480. package/src/library/index.ts +66 -0
  481. package/src/library/libraryIconRegistry.tsx +86 -0
  482. package/src/library/libraryIcons.tsx +928 -0
  483. package/src/library/localizedFormat.ts +207 -0
  484. package/src/library/palette.ts +281 -0
  485. package/src/library/responsive.ts +49 -0
  486. package/src/locales.ts +381 -0
  487. package/src/localization.ts +1947 -0
  488. package/src/logger.ts +20 -0
  489. package/src/lowMemoryCache.ts +218 -0
  490. package/src/mediaHistory.ts +42 -0
  491. package/src/mediaStorageService.ts +546 -0
  492. package/src/memory.ts +102 -0
  493. package/src/nativeActions.ts +422 -0
  494. package/src/nativeComponentSupport.ts +60 -0
  495. package/src/networkPerformance.ts +30 -0
  496. package/src/performance.ts +137 -0
  497. package/src/performanceMonitor.ts +219 -0
  498. package/src/permissions.ts +403 -0
  499. package/src/rendering.ts +47 -0
  500. package/src/security.ts +19 -0
  501. package/src/state.ts +333 -0
  502. package/src/storage.ts +453 -0
  503. package/src/theme.tsx +467 -0
  504. package/src/types.ts +946 -0
  505. package/src/utils.ts +177 -0
  506. package/src/validation.ts +372 -0
@@ -0,0 +1,2259 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Default icon implementations built entirely from React Native primitives.
5
+ *
6
+ * NO external dependencies required:
7
+ * - No react-native-vector-icons
8
+ * - No @expo/vector-icons
9
+ * - No react-native-svg
10
+ * - No custom assets or image files
11
+ *
12
+ * All icons are drawn using View and simple geometric shapes.
13
+ * This ensures the plugin works anywhere React Native works, with zero
14
+ * additional setup or configuration.
15
+ */
16
+
17
+ import React from 'react';
18
+ import { View, Text, Animated } from 'react-native';
19
+ import { DEFAULT_ICON_COLOR, DEFAULT_ICON_SIZE, DEFAULT_ICON_STROKE_WIDTH } from "./icons.js";
20
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
21
+ // Centralized icon defaults — see src/icons.tsx. Components never hardcode
22
+ // sizes/colors/stroke widths; they all flow from the single icon configuration.
23
+ const DEFAULT_SIZE = DEFAULT_ICON_SIZE;
24
+ const DEFAULT_COLOR = DEFAULT_ICON_COLOR;
25
+ const DEFAULT_STROKE = DEFAULT_ICON_STROKE_WIDTH;
26
+
27
+ // ============================================================================
28
+ // Utility: Create icon wrappers
29
+ // ============================================================================
30
+
31
+ /**
32
+ * Base wrapper for all icons.
33
+ * Ensures consistent sizing and layout.
34
+ */
35
+ const IconWrapper = ({
36
+ size = DEFAULT_SIZE,
37
+ style,
38
+ children
39
+ }) => /*#__PURE__*/_jsx(View, {
40
+ style: [{
41
+ width: size,
42
+ height: size,
43
+ alignItems: 'center',
44
+ justifyContent: 'center',
45
+ position: 'relative'
46
+ }, style],
47
+ children: children
48
+ });
49
+
50
+ // ============================================================================
51
+ // Common/Control Icons
52
+ // ============================================================================
53
+
54
+ /** X icon / close button */
55
+ export const CloseIcon = ({
56
+ size = DEFAULT_SIZE,
57
+ color = DEFAULT_COLOR,
58
+ strokeWidth = DEFAULT_STROKE,
59
+ style
60
+ }) => {
61
+ const lineLength = size * 0.55;
62
+ return /*#__PURE__*/_jsxs(IconWrapper, {
63
+ size: size,
64
+ style: style,
65
+ children: [/*#__PURE__*/_jsx(View, {
66
+ style: {
67
+ position: 'absolute',
68
+ width: lineLength,
69
+ height: strokeWidth,
70
+ backgroundColor: color,
71
+ transform: [{
72
+ rotate: '45deg'
73
+ }]
74
+ }
75
+ }), /*#__PURE__*/_jsx(View, {
76
+ style: {
77
+ position: 'absolute',
78
+ width: lineLength,
79
+ height: strokeWidth,
80
+ backgroundColor: color,
81
+ transform: [{
82
+ rotate: '-45deg'
83
+ }]
84
+ }
85
+ })]
86
+ });
87
+ };
88
+
89
+ /** Left arrow / back button */
90
+ export const BackIcon = ({
91
+ size = DEFAULT_SIZE,
92
+ color = DEFAULT_COLOR,
93
+ strokeWidth = DEFAULT_STROKE,
94
+ style
95
+ }) => {
96
+ const arrowSize = size * 0.6;
97
+ return /*#__PURE__*/_jsxs(IconWrapper, {
98
+ size: size,
99
+ style: style,
100
+ children: [/*#__PURE__*/_jsx(View, {
101
+ style: {
102
+ position: 'absolute',
103
+ width: arrowSize,
104
+ height: strokeWidth,
105
+ backgroundColor: color
106
+ }
107
+ }), /*#__PURE__*/_jsx(View, {
108
+ style: {
109
+ position: 'absolute',
110
+ left: size * 0.2,
111
+ top: size * 0.35,
112
+ width: size * 0.3,
113
+ height: strokeWidth,
114
+ backgroundColor: color,
115
+ transform: [{
116
+ rotate: '45deg'
117
+ }]
118
+ }
119
+ }), /*#__PURE__*/_jsx(View, {
120
+ style: {
121
+ position: 'absolute',
122
+ left: size * 0.2,
123
+ bottom: size * 0.35,
124
+ width: size * 0.3,
125
+ height: strokeWidth,
126
+ backgroundColor: color,
127
+ transform: [{
128
+ rotate: '-45deg'
129
+ }]
130
+ }
131
+ })]
132
+ });
133
+ };
134
+
135
+ /** Checkmark / done button */
136
+ export const DoneIcon = ({
137
+ size = DEFAULT_SIZE,
138
+ color = DEFAULT_COLOR,
139
+ strokeWidth = DEFAULT_STROKE,
140
+ style
141
+ }) => {
142
+ return /*#__PURE__*/_jsxs(IconWrapper, {
143
+ size: size,
144
+ style: style,
145
+ children: [/*#__PURE__*/_jsx(View, {
146
+ style: {
147
+ position: 'absolute',
148
+ left: size * 0.35,
149
+ width: strokeWidth,
150
+ height: size * 0.4,
151
+ backgroundColor: color,
152
+ transform: [{
153
+ rotate: '-45deg'
154
+ }]
155
+ }
156
+ }), /*#__PURE__*/_jsx(View, {
157
+ style: {
158
+ position: 'absolute',
159
+ left: size * 0.4,
160
+ width: size * 0.5,
161
+ height: strokeWidth,
162
+ backgroundColor: color,
163
+ transform: [{
164
+ rotate: '45deg'
165
+ }]
166
+ }
167
+ })]
168
+ });
169
+ };
170
+
171
+ /** Cancel / stop button */
172
+ export const CancelIcon = ({
173
+ size = DEFAULT_SIZE,
174
+ color = DEFAULT_COLOR,
175
+ strokeWidth = DEFAULT_STROKE,
176
+ style
177
+ }) => {
178
+ const circleSize = size * 0.8;
179
+ return /*#__PURE__*/_jsx(IconWrapper, {
180
+ size: size,
181
+ style: style,
182
+ children: /*#__PURE__*/_jsxs(View, {
183
+ style: {
184
+ width: circleSize,
185
+ height: circleSize,
186
+ borderRadius: circleSize / 2,
187
+ borderWidth: strokeWidth,
188
+ borderColor: color,
189
+ alignItems: 'center',
190
+ justifyContent: 'center'
191
+ },
192
+ children: [/*#__PURE__*/_jsx(View, {
193
+ style: {
194
+ position: 'absolute',
195
+ width: circleSize * 0.5,
196
+ height: strokeWidth,
197
+ backgroundColor: color,
198
+ transform: [{
199
+ rotate: '45deg'
200
+ }]
201
+ }
202
+ }), /*#__PURE__*/_jsx(View, {
203
+ style: {
204
+ position: 'absolute',
205
+ width: circleSize * 0.5,
206
+ height: strokeWidth,
207
+ backgroundColor: color,
208
+ transform: [{
209
+ rotate: '-45deg'
210
+ }]
211
+ }
212
+ })]
213
+ })
214
+ });
215
+ };
216
+
217
+ // ============================================================================
218
+ // Camera Controls
219
+ // ============================================================================
220
+
221
+ /** Camera icon */
222
+ export const CameraIcon = ({
223
+ size = DEFAULT_SIZE,
224
+ color = DEFAULT_COLOR,
225
+ strokeWidth = DEFAULT_STROKE,
226
+ style
227
+ }) => {
228
+ const bodyW = size * 0.8;
229
+ const bodyH = size * 0.6;
230
+ const lensSize = size * 0.3;
231
+ return /*#__PURE__*/_jsx(IconWrapper, {
232
+ size: size,
233
+ style: style,
234
+ children: /*#__PURE__*/_jsx(View, {
235
+ style: {
236
+ width: bodyW,
237
+ height: bodyH,
238
+ borderWidth: strokeWidth,
239
+ borderColor: color,
240
+ borderRadius: size * 0.12,
241
+ alignItems: 'center',
242
+ justifyContent: 'center'
243
+ },
244
+ children: /*#__PURE__*/_jsx(View, {
245
+ style: {
246
+ width: lensSize,
247
+ height: lensSize,
248
+ borderRadius: lensSize / 2,
249
+ borderWidth: strokeWidth,
250
+ borderColor: color
251
+ }
252
+ })
253
+ })
254
+ });
255
+ };
256
+
257
+ /** Video/camcorder icon */
258
+ export const VideoIcon = ({
259
+ size = DEFAULT_SIZE,
260
+ color = DEFAULT_COLOR,
261
+ strokeWidth = DEFAULT_STROKE,
262
+ style
263
+ }) => {
264
+ const mainW = size * 0.7;
265
+ const mainH = size * 0.55;
266
+ return /*#__PURE__*/_jsxs(IconWrapper, {
267
+ size: size,
268
+ style: style,
269
+ children: [/*#__PURE__*/_jsx(View, {
270
+ style: {
271
+ width: mainW,
272
+ height: mainH,
273
+ borderWidth: strokeWidth,
274
+ borderColor: color,
275
+ borderRadius: size * 0.08,
276
+ marginRight: size * 0.15
277
+ }
278
+ }), /*#__PURE__*/_jsx(View, {
279
+ style: {
280
+ position: 'absolute',
281
+ right: 0,
282
+ width: 0,
283
+ height: 0,
284
+ borderLeftWidth: size * 0.12,
285
+ borderTopWidth: size * 0.08,
286
+ borderBottomWidth: size * 0.08,
287
+ borderLeftColor: color,
288
+ borderTopColor: 'transparent',
289
+ borderBottomColor: 'transparent'
290
+ }
291
+ })]
292
+ });
293
+ };
294
+
295
+ /** Photo/picture icon */
296
+ export const PhotoIcon = ({
297
+ size = DEFAULT_SIZE,
298
+ color = DEFAULT_COLOR,
299
+ strokeWidth = DEFAULT_STROKE,
300
+ style
301
+ }) => {
302
+ return /*#__PURE__*/_jsxs(IconWrapper, {
303
+ size: size,
304
+ style: style,
305
+ children: [/*#__PURE__*/_jsx(View, {
306
+ style: {
307
+ width: size * 0.85,
308
+ height: size * 0.75,
309
+ borderWidth: strokeWidth,
310
+ borderColor: color,
311
+ borderRadius: size * 0.08
312
+ }
313
+ }), /*#__PURE__*/_jsx(View, {
314
+ style: {
315
+ position: 'absolute',
316
+ top: size * 0.2,
317
+ right: size * 0.15,
318
+ width: size * 0.25,
319
+ height: size * 0.25,
320
+ borderRadius: size * 0.25 / 2,
321
+ borderWidth: strokeWidth,
322
+ borderColor: color
323
+ }
324
+ })]
325
+ });
326
+ };
327
+
328
+ /** Flip/mirror camera icon */
329
+ export const FlipIcon = ({
330
+ size = DEFAULT_SIZE,
331
+ color = DEFAULT_COLOR,
332
+ strokeWidth = DEFAULT_STROKE,
333
+ style
334
+ }) => {
335
+ return /*#__PURE__*/_jsxs(IconWrapper, {
336
+ size: size,
337
+ style: style,
338
+ children: [/*#__PURE__*/_jsx(View, {
339
+ style: {
340
+ position: 'absolute',
341
+ left: size * 0.1,
342
+ width: size * 0.25,
343
+ height: strokeWidth,
344
+ backgroundColor: color
345
+ }
346
+ }), /*#__PURE__*/_jsx(View, {
347
+ style: {
348
+ position: 'absolute',
349
+ left: size * 0.15,
350
+ top: size * 0.35,
351
+ width: size * 0.15,
352
+ height: strokeWidth,
353
+ backgroundColor: color,
354
+ transform: [{
355
+ rotate: '45deg'
356
+ }]
357
+ }
358
+ }), /*#__PURE__*/_jsx(View, {
359
+ style: {
360
+ position: 'absolute',
361
+ left: size * 0.15,
362
+ bottom: size * 0.35,
363
+ width: size * 0.15,
364
+ height: strokeWidth,
365
+ backgroundColor: color,
366
+ transform: [{
367
+ rotate: '-45deg'
368
+ }]
369
+ }
370
+ }), /*#__PURE__*/_jsx(View, {
371
+ style: {
372
+ position: 'absolute',
373
+ right: size * 0.1,
374
+ width: size * 0.25,
375
+ height: strokeWidth,
376
+ backgroundColor: color
377
+ }
378
+ }), /*#__PURE__*/_jsx(View, {
379
+ style: {
380
+ position: 'absolute',
381
+ right: size * 0.15,
382
+ top: size * 0.35,
383
+ width: size * 0.15,
384
+ height: strokeWidth,
385
+ backgroundColor: color,
386
+ transform: [{
387
+ rotate: '-45deg'
388
+ }]
389
+ }
390
+ }), /*#__PURE__*/_jsx(View, {
391
+ style: {
392
+ position: 'absolute',
393
+ right: size * 0.15,
394
+ bottom: size * 0.35,
395
+ width: size * 0.15,
396
+ height: strokeWidth,
397
+ backgroundColor: color,
398
+ transform: [{
399
+ rotate: '45deg'
400
+ }]
401
+ }
402
+ })]
403
+ });
404
+ };
405
+
406
+ /** Flash on icon */
407
+ export const FlashOnIcon = ({
408
+ size = DEFAULT_SIZE,
409
+ color = DEFAULT_COLOR,
410
+ style
411
+ }) => {
412
+ return /*#__PURE__*/_jsxs(IconWrapper, {
413
+ size: size,
414
+ style: style,
415
+ children: [/*#__PURE__*/_jsx(View, {
416
+ style: {
417
+ position: 'absolute',
418
+ left: size * 0.4,
419
+ width: size * 0.2,
420
+ height: size * 0.35,
421
+ backgroundColor: color
422
+ }
423
+ }), /*#__PURE__*/_jsx(View, {
424
+ style: {
425
+ position: 'absolute',
426
+ top: size * 0.45,
427
+ width: size * 0.35,
428
+ height: size * 0.15,
429
+ backgroundColor: color
430
+ }
431
+ })]
432
+ });
433
+ };
434
+
435
+ /** Flash off icon */
436
+ export const FlashOffIcon = ({
437
+ size = DEFAULT_SIZE,
438
+ color = DEFAULT_COLOR,
439
+ strokeWidth = DEFAULT_STROKE,
440
+ style
441
+ }) => {
442
+ return /*#__PURE__*/_jsxs(IconWrapper, {
443
+ size: size,
444
+ style: style,
445
+ children: [/*#__PURE__*/_jsx(View, {
446
+ style: {
447
+ position: 'absolute',
448
+ left: size * 0.4,
449
+ width: size * 0.2,
450
+ height: size * 0.35,
451
+ backgroundColor: color,
452
+ opacity: 0.4
453
+ }
454
+ }), /*#__PURE__*/_jsx(View, {
455
+ style: {
456
+ position: 'absolute',
457
+ width: size * 0.9,
458
+ height: strokeWidth * 1.5,
459
+ backgroundColor: color,
460
+ transform: [{
461
+ rotate: '-45deg'
462
+ }]
463
+ }
464
+ })]
465
+ });
466
+ };
467
+
468
+ /** Flash auto icon */
469
+ export const FlashAutoIcon = ({
470
+ size = DEFAULT_SIZE,
471
+ color = DEFAULT_COLOR,
472
+ strokeWidth = DEFAULT_STROKE,
473
+ style
474
+ }) => {
475
+ return /*#__PURE__*/_jsxs(IconWrapper, {
476
+ size: size,
477
+ style: style,
478
+ children: [/*#__PURE__*/_jsx(View, {
479
+ style: {
480
+ position: 'absolute',
481
+ left: size * 0.4,
482
+ width: size * 0.2,
483
+ height: size * 0.35,
484
+ backgroundColor: color
485
+ }
486
+ }), /*#__PURE__*/_jsx(View, {
487
+ style: {
488
+ position: 'absolute',
489
+ top: size * 0.45,
490
+ width: size * 0.35,
491
+ height: size * 0.15,
492
+ backgroundColor: color
493
+ }
494
+ }), /*#__PURE__*/_jsx(View, {
495
+ style: {
496
+ position: 'absolute',
497
+ bottom: size * 0.1,
498
+ right: size * 0.1,
499
+ width: size * 0.12,
500
+ height: size * 0.12,
501
+ borderRadius: size * 0.12 / 2,
502
+ borderWidth: strokeWidth,
503
+ borderColor: color
504
+ }
505
+ })]
506
+ });
507
+ };
508
+
509
+ /** Gallery icon */
510
+ export const GalleryIcon = ({
511
+ size = DEFAULT_SIZE,
512
+ color = DEFAULT_COLOR,
513
+ strokeWidth = DEFAULT_STROKE,
514
+ style
515
+ }) => {
516
+ const frameSize = size * 0.75;
517
+ return /*#__PURE__*/_jsxs(IconWrapper, {
518
+ size: size,
519
+ style: style,
520
+ children: [/*#__PURE__*/_jsx(View, {
521
+ style: {
522
+ position: 'absolute',
523
+ top: 0,
524
+ left: 0,
525
+ width: frameSize,
526
+ height: frameSize,
527
+ borderWidth: strokeWidth,
528
+ borderColor: color,
529
+ borderRadius: size * 0.06
530
+ }
531
+ }), /*#__PURE__*/_jsx(View, {
532
+ style: {
533
+ position: 'absolute',
534
+ bottom: 0,
535
+ right: 0,
536
+ width: frameSize,
537
+ height: frameSize,
538
+ borderWidth: strokeWidth,
539
+ borderColor: color,
540
+ borderRadius: size * 0.06
541
+ }
542
+ })]
543
+ });
544
+ };
545
+
546
+ // ============================================================================
547
+ // Editor Tools
548
+ // ============================================================================
549
+
550
+ /** Crop icon */
551
+ export const CropIcon = ({
552
+ size = DEFAULT_SIZE,
553
+ color = DEFAULT_COLOR,
554
+ strokeWidth = DEFAULT_STROKE,
555
+ style
556
+ }) => {
557
+ const boxSize = size * 0.6;
558
+ return /*#__PURE__*/_jsx(IconWrapper, {
559
+ size: size,
560
+ style: style,
561
+ children: /*#__PURE__*/_jsx(View, {
562
+ style: {
563
+ width: boxSize,
564
+ height: boxSize,
565
+ borderWidth: strokeWidth,
566
+ borderColor: color,
567
+ borderStyle: 'dashed'
568
+ }
569
+ })
570
+ });
571
+ };
572
+
573
+ /** Rotate icon */
574
+ export const RotateIcon = ({
575
+ size = DEFAULT_SIZE,
576
+ color = DEFAULT_COLOR,
577
+ strokeWidth = DEFAULT_STROKE,
578
+ style
579
+ }) => {
580
+ return /*#__PURE__*/_jsxs(IconWrapper, {
581
+ size: size,
582
+ style: style,
583
+ children: [/*#__PURE__*/_jsx(View, {
584
+ style: {
585
+ width: size * 0.7,
586
+ height: size * 0.7,
587
+ borderRadius: size * 0.7 / 2,
588
+ borderWidth: strokeWidth,
589
+ borderColor: color,
590
+ borderTopColor: 'transparent'
591
+ }
592
+ }), /*#__PURE__*/_jsx(View, {
593
+ style: {
594
+ position: 'absolute',
595
+ top: size * 0.1,
596
+ right: size * 0.1,
597
+ width: size * 0.15,
598
+ height: strokeWidth,
599
+ backgroundColor: color,
600
+ transform: [{
601
+ rotate: '45deg'
602
+ }]
603
+ }
604
+ })]
605
+ });
606
+ };
607
+
608
+ /** Filter icon */
609
+ export const FilterIcon = ({
610
+ size = DEFAULT_SIZE,
611
+ color = DEFAULT_COLOR,
612
+ strokeWidth = DEFAULT_STROKE,
613
+ style
614
+ }) => {
615
+ return /*#__PURE__*/_jsxs(IconWrapper, {
616
+ size: size,
617
+ style: style,
618
+ children: [/*#__PURE__*/_jsx(View, {
619
+ style: {
620
+ position: 'absolute',
621
+ top: 0,
622
+ width: size * 0.8,
623
+ height: strokeWidth,
624
+ backgroundColor: color
625
+ }
626
+ }), /*#__PURE__*/_jsx(View, {
627
+ style: {
628
+ position: 'absolute',
629
+ top: strokeWidth * 2,
630
+ width: size * 0.6,
631
+ height: size * 0.3,
632
+ borderLeftWidth: size * 0.1,
633
+ borderRightWidth: size * 0.1,
634
+ borderLeftColor: 'transparent',
635
+ borderRightColor: 'transparent',
636
+ borderTopWidth: size * 0.3,
637
+ borderTopColor: color
638
+ }
639
+ }), /*#__PURE__*/_jsx(View, {
640
+ style: {
641
+ position: 'absolute',
642
+ bottom: 0,
643
+ width: size * 0.15,
644
+ height: size * 0.3,
645
+ backgroundColor: color
646
+ }
647
+ })]
648
+ });
649
+ };
650
+
651
+ /** Sticker icon */
652
+ export const StickerIcon = ({
653
+ size = DEFAULT_SIZE,
654
+ color = DEFAULT_COLOR,
655
+ strokeWidth = DEFAULT_STROKE,
656
+ style
657
+ }) => {
658
+ const stickerSize = size * 0.65;
659
+ return /*#__PURE__*/_jsx(IconWrapper, {
660
+ size: size,
661
+ style: style,
662
+ children: /*#__PURE__*/_jsx(View, {
663
+ style: {
664
+ width: stickerSize,
665
+ height: stickerSize,
666
+ borderWidth: strokeWidth,
667
+ borderColor: color,
668
+ borderRadius: stickerSize * 0.25,
669
+ transform: [{
670
+ rotate: '15deg'
671
+ }]
672
+ }
673
+ })
674
+ });
675
+ };
676
+
677
+ /** Emoji icon */
678
+ export const EmojiIcon = ({
679
+ size = DEFAULT_SIZE,
680
+ color = DEFAULT_COLOR,
681
+ strokeWidth = DEFAULT_STROKE,
682
+ style
683
+ }) => {
684
+ const faceSize = size * 0.75;
685
+ return /*#__PURE__*/_jsx(IconWrapper, {
686
+ size: size,
687
+ style: style,
688
+ children: /*#__PURE__*/_jsxs(View, {
689
+ style: {
690
+ width: faceSize,
691
+ height: faceSize,
692
+ borderRadius: faceSize / 2,
693
+ borderWidth: strokeWidth,
694
+ borderColor: color,
695
+ alignItems: 'center',
696
+ justifyContent: 'center'
697
+ },
698
+ children: [/*#__PURE__*/_jsx(View, {
699
+ style: {
700
+ position: 'absolute',
701
+ top: faceSize * 0.35,
702
+ left: faceSize * 0.25,
703
+ width: size * 0.08,
704
+ height: size * 0.08,
705
+ borderRadius: size * 0.08 / 2,
706
+ backgroundColor: color
707
+ }
708
+ }), /*#__PURE__*/_jsx(View, {
709
+ style: {
710
+ position: 'absolute',
711
+ top: faceSize * 0.35,
712
+ right: faceSize * 0.25,
713
+ width: size * 0.08,
714
+ height: size * 0.08,
715
+ borderRadius: size * 0.08 / 2,
716
+ backgroundColor: color
717
+ }
718
+ }), /*#__PURE__*/_jsx(View, {
719
+ style: {
720
+ position: 'absolute',
721
+ bottom: faceSize * 0.2,
722
+ width: faceSize * 0.3,
723
+ height: faceSize * 0.15,
724
+ borderBottomWidth: strokeWidth,
725
+ borderBottomColor: color,
726
+ borderRadius: faceSize * 0.15
727
+ }
728
+ })]
729
+ })
730
+ });
731
+ };
732
+
733
+ /** Text icon */
734
+ export const TextIcon = ({
735
+ size = DEFAULT_SIZE,
736
+ color = DEFAULT_COLOR,
737
+ strokeWidth = DEFAULT_STROKE,
738
+ style
739
+ }) => {
740
+ return /*#__PURE__*/_jsxs(IconWrapper, {
741
+ size: size,
742
+ style: style,
743
+ children: [/*#__PURE__*/_jsx(View, {
744
+ style: {
745
+ position: 'absolute',
746
+ top: 0,
747
+ width: size * 0.6,
748
+ height: strokeWidth,
749
+ backgroundColor: color
750
+ }
751
+ }), /*#__PURE__*/_jsx(View, {
752
+ style: {
753
+ position: 'absolute',
754
+ left: size * 0.45,
755
+ width: strokeWidth,
756
+ height: size * 0.7,
757
+ backgroundColor: color
758
+ }
759
+ })]
760
+ });
761
+ };
762
+
763
+ /** Draw/pencil icon */
764
+ export const DrawIcon = ({
765
+ size = DEFAULT_SIZE,
766
+ color = DEFAULT_COLOR,
767
+ strokeWidth = DEFAULT_STROKE,
768
+ style
769
+ }) => {
770
+ return /*#__PURE__*/_jsxs(IconWrapper, {
771
+ size: size,
772
+ style: style,
773
+ children: [/*#__PURE__*/_jsx(View, {
774
+ style: {
775
+ width: size * 0.7,
776
+ height: strokeWidth * 1.5,
777
+ backgroundColor: color,
778
+ transform: [{
779
+ rotate: '-45deg'
780
+ }]
781
+ }
782
+ }), /*#__PURE__*/_jsx(View, {
783
+ style: {
784
+ position: 'absolute',
785
+ bottom: 0,
786
+ right: 0,
787
+ width: size * 0.2,
788
+ height: size * 0.2,
789
+ borderWidth: strokeWidth,
790
+ borderColor: color,
791
+ transform: [{
792
+ rotate: '-45deg'
793
+ }]
794
+ }
795
+ })]
796
+ });
797
+ };
798
+
799
+ /** Undo icon */
800
+ export const UndoIcon = ({
801
+ size = DEFAULT_SIZE,
802
+ color = DEFAULT_COLOR,
803
+ strokeWidth = DEFAULT_STROKE,
804
+ style
805
+ }) => {
806
+ return /*#__PURE__*/_jsxs(IconWrapper, {
807
+ size: size,
808
+ style: style,
809
+ children: [/*#__PURE__*/_jsx(View, {
810
+ style: {
811
+ width: size * 0.5,
812
+ height: size * 0.5,
813
+ borderWidth: strokeWidth,
814
+ borderColor: color,
815
+ borderRadius: size * 0.25,
816
+ borderRightColor: 'transparent',
817
+ borderBottomColor: 'transparent'
818
+ }
819
+ }), /*#__PURE__*/_jsx(View, {
820
+ style: {
821
+ position: 'absolute',
822
+ left: size * 0.15,
823
+ top: size * 0.15,
824
+ width: size * 0.15,
825
+ height: strokeWidth,
826
+ backgroundColor: color,
827
+ transform: [{
828
+ rotate: '-45deg'
829
+ }]
830
+ }
831
+ })]
832
+ });
833
+ };
834
+
835
+ /** Redo icon */
836
+ export const RedoIcon = ({
837
+ size = DEFAULT_SIZE,
838
+ color = DEFAULT_COLOR,
839
+ strokeWidth = DEFAULT_STROKE,
840
+ style
841
+ }) => {
842
+ return /*#__PURE__*/_jsxs(IconWrapper, {
843
+ size: size,
844
+ style: style,
845
+ children: [/*#__PURE__*/_jsx(View, {
846
+ style: {
847
+ width: size * 0.5,
848
+ height: size * 0.5,
849
+ borderWidth: strokeWidth,
850
+ borderColor: color,
851
+ borderRadius: size * 0.25,
852
+ borderLeftColor: 'transparent',
853
+ borderBottomColor: 'transparent',
854
+ transform: [{
855
+ scaleX: -1
856
+ }]
857
+ }
858
+ }), /*#__PURE__*/_jsx(View, {
859
+ style: {
860
+ position: 'absolute',
861
+ right: size * 0.15,
862
+ top: size * 0.15,
863
+ width: size * 0.15,
864
+ height: strokeWidth,
865
+ backgroundColor: color,
866
+ transform: [{
867
+ rotate: '45deg'
868
+ }]
869
+ }
870
+ })]
871
+ });
872
+ };
873
+
874
+ /** Delete/trash icon */
875
+ export const DeleteIcon = ({
876
+ size = DEFAULT_SIZE,
877
+ color = DEFAULT_COLOR,
878
+ strokeWidth = DEFAULT_STROKE,
879
+ style
880
+ }) => {
881
+ const bodyWidth = size * 0.5;
882
+ const bodyHeight = size * 0.55;
883
+ const lidWidth = size * 0.6;
884
+ const handleWidth = size * 0.25;
885
+ return /*#__PURE__*/_jsxs(IconWrapper, {
886
+ size: size,
887
+ style: style,
888
+ children: [/*#__PURE__*/_jsx(View, {
889
+ style: {
890
+ position: 'absolute',
891
+ top: size * 0.1,
892
+ width: handleWidth,
893
+ height: size * 0.15,
894
+ borderWidth: strokeWidth,
895
+ borderColor: color,
896
+ borderBottomWidth: 0,
897
+ borderTopLeftRadius: size * 0.05,
898
+ borderTopRightRadius: size * 0.05
899
+ }
900
+ }), /*#__PURE__*/_jsx(View, {
901
+ style: {
902
+ position: 'absolute',
903
+ top: size * 0.25,
904
+ width: lidWidth,
905
+ height: strokeWidth,
906
+ backgroundColor: color
907
+ }
908
+ }), /*#__PURE__*/_jsx(View, {
909
+ style: {
910
+ position: 'absolute',
911
+ top: size * 0.25 + strokeWidth,
912
+ width: bodyWidth,
913
+ height: bodyHeight,
914
+ borderWidth: strokeWidth,
915
+ borderColor: color,
916
+ borderTopWidth: 0,
917
+ borderBottomLeftRadius: size * 0.1,
918
+ borderBottomRightRadius: size * 0.1
919
+ }
920
+ }), /*#__PURE__*/_jsx(View, {
921
+ style: {
922
+ position: 'absolute',
923
+ top: size * 0.4,
924
+ width: strokeWidth,
925
+ height: size * 0.3,
926
+ backgroundColor: color,
927
+ left: size * 0.35
928
+ }
929
+ }), /*#__PURE__*/_jsx(View, {
930
+ style: {
931
+ position: 'absolute',
932
+ top: size * 0.4,
933
+ width: strokeWidth,
934
+ height: size * 0.3,
935
+ backgroundColor: color,
936
+ right: size * 0.35
937
+ }
938
+ })]
939
+ });
940
+ };
941
+
942
+ // ============================================================================
943
+ // Playback & Media
944
+ // ============================================================================
945
+
946
+ /** Play button */
947
+ export const PlayIcon = ({
948
+ size = DEFAULT_SIZE,
949
+ color = DEFAULT_COLOR,
950
+ style
951
+ }) => {
952
+ return /*#__PURE__*/_jsx(IconWrapper, {
953
+ size: size,
954
+ style: style,
955
+ children: /*#__PURE__*/_jsx(View, {
956
+ style: {
957
+ width: 0,
958
+ height: 0,
959
+ borderLeftWidth: size * 0.35,
960
+ borderTopWidth: size * 0.2,
961
+ borderBottomWidth: size * 0.2,
962
+ borderLeftColor: color,
963
+ borderTopColor: 'transparent',
964
+ borderBottomColor: 'transparent'
965
+ }
966
+ })
967
+ });
968
+ };
969
+
970
+ /** Pause button */
971
+ export const PauseIcon = ({
972
+ size = DEFAULT_SIZE,
973
+ color = DEFAULT_COLOR,
974
+ style
975
+ }) => {
976
+ const barWidth = size * 0.15;
977
+ const barHeight = size * 0.6;
978
+ return /*#__PURE__*/_jsxs(IconWrapper, {
979
+ size: size,
980
+ style: style,
981
+ children: [/*#__PURE__*/_jsx(View, {
982
+ style: {
983
+ position: 'absolute',
984
+ left: size * 0.2,
985
+ width: barWidth,
986
+ height: barHeight,
987
+ backgroundColor: color
988
+ }
989
+ }), /*#__PURE__*/_jsx(View, {
990
+ style: {
991
+ position: 'absolute',
992
+ right: size * 0.2,
993
+ width: barWidth,
994
+ height: barHeight,
995
+ backgroundColor: color
996
+ }
997
+ })]
998
+ });
999
+ };
1000
+
1001
+ /** Download icon */
1002
+ export const DownloadIcon = ({
1003
+ size = DEFAULT_SIZE,
1004
+ color = DEFAULT_COLOR,
1005
+ strokeWidth = DEFAULT_STROKE,
1006
+ style
1007
+ }) => {
1008
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1009
+ size: size,
1010
+ style: style,
1011
+ children: [/*#__PURE__*/_jsx(View, {
1012
+ style: {
1013
+ position: 'absolute',
1014
+ top: size * 0.2,
1015
+ width: size * 0.4,
1016
+ height: strokeWidth,
1017
+ backgroundColor: color
1018
+ }
1019
+ }), /*#__PURE__*/_jsx(View, {
1020
+ style: {
1021
+ position: 'absolute',
1022
+ top: size * 0.4,
1023
+ width: strokeWidth,
1024
+ height: size * 0.35,
1025
+ backgroundColor: color
1026
+ }
1027
+ }), /*#__PURE__*/_jsx(View, {
1028
+ style: {
1029
+ position: 'absolute',
1030
+ top: size * 0.6,
1031
+ left: size * 0.2,
1032
+ width: size * 0.2,
1033
+ height: strokeWidth,
1034
+ backgroundColor: color,
1035
+ transform: [{
1036
+ rotate: '45deg'
1037
+ }]
1038
+ }
1039
+ }), /*#__PURE__*/_jsx(View, {
1040
+ style: {
1041
+ position: 'absolute',
1042
+ top: size * 0.6,
1043
+ right: size * 0.2,
1044
+ width: size * 0.2,
1045
+ height: strokeWidth,
1046
+ backgroundColor: color,
1047
+ transform: [{
1048
+ rotate: '-45deg'
1049
+ }]
1050
+ }
1051
+ }), /*#__PURE__*/_jsx(View, {
1052
+ style: {
1053
+ position: 'absolute',
1054
+ bottom: 0,
1055
+ width: size * 0.8,
1056
+ height: strokeWidth,
1057
+ backgroundColor: color
1058
+ }
1059
+ })]
1060
+ });
1061
+ };
1062
+
1063
+ /** Share icon */
1064
+ export const ShareIcon = ({
1065
+ size = DEFAULT_SIZE,
1066
+ color = DEFAULT_COLOR,
1067
+ strokeWidth = DEFAULT_STROKE,
1068
+ style
1069
+ }) => {
1070
+ const dotSize = size * 0.22;
1071
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1072
+ size: size,
1073
+ style: style,
1074
+ children: [/*#__PURE__*/_jsx(View, {
1075
+ style: {
1076
+ position: 'absolute',
1077
+ left: size * 0.15,
1078
+ width: dotSize,
1079
+ height: dotSize,
1080
+ borderRadius: dotSize / 2,
1081
+ borderWidth: strokeWidth,
1082
+ borderColor: color,
1083
+ backgroundColor: 'transparent'
1084
+ }
1085
+ }), /*#__PURE__*/_jsx(View, {
1086
+ style: {
1087
+ position: 'absolute',
1088
+ top: size * 0.15,
1089
+ right: size * 0.15,
1090
+ width: dotSize,
1091
+ height: dotSize,
1092
+ borderRadius: dotSize / 2,
1093
+ borderWidth: strokeWidth,
1094
+ borderColor: color,
1095
+ backgroundColor: 'transparent'
1096
+ }
1097
+ }), /*#__PURE__*/_jsx(View, {
1098
+ style: {
1099
+ position: 'absolute',
1100
+ bottom: size * 0.15,
1101
+ right: size * 0.15,
1102
+ width: dotSize,
1103
+ height: dotSize,
1104
+ borderRadius: dotSize / 2,
1105
+ borderWidth: strokeWidth,
1106
+ borderColor: color,
1107
+ backgroundColor: 'transparent'
1108
+ }
1109
+ }), /*#__PURE__*/_jsx(View, {
1110
+ style: {
1111
+ position: 'absolute',
1112
+ top: size * 0.32,
1113
+ left: size * 0.34,
1114
+ width: size * 0.35,
1115
+ height: strokeWidth,
1116
+ backgroundColor: color,
1117
+ transform: [{
1118
+ rotate: '-35deg'
1119
+ }]
1120
+ }
1121
+ }), /*#__PURE__*/_jsx(View, {
1122
+ style: {
1123
+ position: 'absolute',
1124
+ bottom: size * 0.32,
1125
+ left: size * 0.34,
1126
+ width: size * 0.35,
1127
+ height: strokeWidth,
1128
+ backgroundColor: color,
1129
+ transform: [{
1130
+ rotate: '35deg'
1131
+ }]
1132
+ }
1133
+ })]
1134
+ });
1135
+ };
1136
+
1137
+ /** Send/paper plane icon */
1138
+ export const SendIcon = ({
1139
+ size = DEFAULT_SIZE,
1140
+ color = DEFAULT_COLOR,
1141
+ strokeWidth = DEFAULT_STROKE,
1142
+ style
1143
+ }) => {
1144
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1145
+ size: size,
1146
+ style: style,
1147
+ children: [/*#__PURE__*/_jsx(View, {
1148
+ style: {
1149
+ position: 'absolute',
1150
+ width: 0,
1151
+ height: 0,
1152
+ borderLeftWidth: size * 0.25,
1153
+ borderTopWidth: size * 0.3,
1154
+ borderLeftColor: color,
1155
+ borderTopColor: color
1156
+ }
1157
+ }), /*#__PURE__*/_jsx(View, {
1158
+ style: {
1159
+ position: 'absolute',
1160
+ bottom: size * 0.3,
1161
+ right: size * 0.1,
1162
+ width: size * 0.3,
1163
+ height: strokeWidth,
1164
+ backgroundColor: color,
1165
+ transform: [{
1166
+ rotate: '45deg'
1167
+ }]
1168
+ }
1169
+ })]
1170
+ });
1171
+ };
1172
+
1173
+ /** More/menu icon (three dots) */
1174
+ export const MoreIcon = ({
1175
+ size = DEFAULT_SIZE,
1176
+ color = DEFAULT_COLOR,
1177
+ style
1178
+ }) => {
1179
+ const dotSize = size * 0.12;
1180
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1181
+ size: size,
1182
+ style: style,
1183
+ children: [/*#__PURE__*/_jsx(View, {
1184
+ style: {
1185
+ position: 'absolute',
1186
+ left: size * 0.1,
1187
+ width: dotSize,
1188
+ height: dotSize,
1189
+ borderRadius: dotSize / 2,
1190
+ backgroundColor: color
1191
+ }
1192
+ }), /*#__PURE__*/_jsx(View, {
1193
+ style: {
1194
+ width: dotSize,
1195
+ height: dotSize,
1196
+ borderRadius: dotSize / 2,
1197
+ backgroundColor: color
1198
+ }
1199
+ }), /*#__PURE__*/_jsx(View, {
1200
+ style: {
1201
+ position: 'absolute',
1202
+ right: size * 0.1,
1203
+ width: dotSize,
1204
+ height: dotSize,
1205
+ borderRadius: dotSize / 2,
1206
+ backgroundColor: color
1207
+ }
1208
+ })]
1209
+ });
1210
+ };
1211
+
1212
+ // ============================================================================
1213
+ // Document & Audio
1214
+ // ============================================================================
1215
+
1216
+ /** Document icon */
1217
+ export const DocumentIcon = ({
1218
+ size = DEFAULT_SIZE,
1219
+ color = DEFAULT_COLOR,
1220
+ strokeWidth = DEFAULT_STROKE,
1221
+ style
1222
+ }) => {
1223
+ const w = size * 0.6;
1224
+ const h = size * 0.8;
1225
+ return /*#__PURE__*/_jsx(IconWrapper, {
1226
+ size: size,
1227
+ style: style,
1228
+ children: /*#__PURE__*/_jsxs(View, {
1229
+ style: {
1230
+ width: w,
1231
+ height: h,
1232
+ borderWidth: strokeWidth,
1233
+ borderColor: color,
1234
+ borderRadius: size * 0.08,
1235
+ alignItems: 'center',
1236
+ justifyContent: 'flex-start',
1237
+ paddingTop: size * 0.1
1238
+ },
1239
+ children: [/*#__PURE__*/_jsx(View, {
1240
+ style: {
1241
+ width: w * 0.7,
1242
+ height: strokeWidth,
1243
+ backgroundColor: color,
1244
+ marginVertical: size * 0.08
1245
+ }
1246
+ }), /*#__PURE__*/_jsx(View, {
1247
+ style: {
1248
+ width: w * 0.7,
1249
+ height: strokeWidth,
1250
+ backgroundColor: color,
1251
+ marginVertical: size * 0.08
1252
+ }
1253
+ }), /*#__PURE__*/_jsx(View, {
1254
+ style: {
1255
+ width: w * 0.7,
1256
+ height: strokeWidth,
1257
+ backgroundColor: color,
1258
+ marginVertical: size * 0.08
1259
+ }
1260
+ })]
1261
+ })
1262
+ });
1263
+ };
1264
+
1265
+ /** Audio icon */
1266
+ export const AudioIcon = ({
1267
+ size = DEFAULT_SIZE,
1268
+ color = DEFAULT_COLOR,
1269
+ strokeWidth = DEFAULT_STROKE,
1270
+ style
1271
+ }) => {
1272
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1273
+ size: size,
1274
+ style: style,
1275
+ children: [/*#__PURE__*/_jsx(View, {
1276
+ style: {
1277
+ width: size * 0.2,
1278
+ height: size * 0.6,
1279
+ borderLeftWidth: strokeWidth * 1.5,
1280
+ borderTopWidth: size * 0.25,
1281
+ borderBottomWidth: size * 0.25,
1282
+ borderLeftColor: color,
1283
+ borderTopColor: 'transparent',
1284
+ borderBottomColor: 'transparent'
1285
+ }
1286
+ }), /*#__PURE__*/_jsx(View, {
1287
+ style: {
1288
+ position: 'absolute',
1289
+ right: -size * 0.05,
1290
+ width: size * 0.4,
1291
+ height: size * 0.4,
1292
+ borderWidth: strokeWidth,
1293
+ borderColor: color,
1294
+ borderRadius: size * 0.2
1295
+ }
1296
+ }), /*#__PURE__*/_jsx(View, {
1297
+ style: {
1298
+ position: 'absolute',
1299
+ right: -size * 0.15,
1300
+ width: size * 0.65,
1301
+ height: size * 0.65,
1302
+ borderWidth: strokeWidth,
1303
+ borderColor: color,
1304
+ borderRadius: size * 0.325
1305
+ }
1306
+ })]
1307
+ });
1308
+ };
1309
+
1310
+ // ============================================================================
1311
+ // States & Indicators
1312
+ // ============================================================================
1313
+
1314
+ /** Lock icon */
1315
+ export const LockIcon = ({
1316
+ size = DEFAULT_SIZE,
1317
+ color = DEFAULT_COLOR,
1318
+ strokeWidth = DEFAULT_STROKE,
1319
+ style
1320
+ }) => {
1321
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1322
+ size: size,
1323
+ style: style,
1324
+ children: [/*#__PURE__*/_jsx(View, {
1325
+ style: {
1326
+ position: 'absolute',
1327
+ top: size * 0.1,
1328
+ width: size * 0.5,
1329
+ height: size * 0.35,
1330
+ borderWidth: strokeWidth,
1331
+ borderColor: color,
1332
+ borderBottomColor: 'transparent',
1333
+ borderRadius: size * 0.25
1334
+ }
1335
+ }), /*#__PURE__*/_jsx(View, {
1336
+ style: {
1337
+ position: 'absolute',
1338
+ top: size * 0.4,
1339
+ width: size * 0.7,
1340
+ height: size * 0.5,
1341
+ borderWidth: strokeWidth,
1342
+ borderColor: color,
1343
+ borderRadius: size * 0.08
1344
+ }
1345
+ }), /*#__PURE__*/_jsx(View, {
1346
+ style: {
1347
+ position: 'absolute',
1348
+ top: size * 0.55,
1349
+ width: size * 0.15,
1350
+ height: size * 0.15,
1351
+ borderRadius: size * 0.15 / 2,
1352
+ borderWidth: strokeWidth,
1353
+ borderColor: color
1354
+ }
1355
+ })]
1356
+ });
1357
+ };
1358
+
1359
+ /** Unlock icon */
1360
+ export const LockOpenIcon = ({
1361
+ size = DEFAULT_SIZE,
1362
+ color = DEFAULT_COLOR,
1363
+ strokeWidth = DEFAULT_STROKE,
1364
+ style
1365
+ }) => {
1366
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1367
+ size: size,
1368
+ style: style,
1369
+ children: [/*#__PURE__*/_jsx(View, {
1370
+ style: {
1371
+ position: 'absolute',
1372
+ top: size * 0.1,
1373
+ left: size * 0.25,
1374
+ width: size * 0.25,
1375
+ height: size * 0.35,
1376
+ borderWidth: strokeWidth,
1377
+ borderColor: color,
1378
+ borderBottomColor: 'transparent',
1379
+ borderTopRightRadius: size * 0.15
1380
+ }
1381
+ }), /*#__PURE__*/_jsx(View, {
1382
+ style: {
1383
+ position: 'absolute',
1384
+ top: size * 0.4,
1385
+ width: size * 0.7,
1386
+ height: size * 0.5,
1387
+ borderWidth: strokeWidth,
1388
+ borderColor: color,
1389
+ borderRadius: size * 0.08
1390
+ }
1391
+ }), /*#__PURE__*/_jsx(View, {
1392
+ style: {
1393
+ position: 'absolute',
1394
+ top: size * 0.55,
1395
+ width: size * 0.15,
1396
+ height: size * 0.15,
1397
+ borderRadius: size * 0.15 / 2,
1398
+ borderWidth: strokeWidth,
1399
+ borderColor: color
1400
+ }
1401
+ })]
1402
+ });
1403
+ };
1404
+
1405
+ /** Chevron up / collapse icon */
1406
+ export const ChevronUpIcon = ({
1407
+ size = DEFAULT_SIZE,
1408
+ color = DEFAULT_COLOR,
1409
+ strokeWidth = DEFAULT_STROKE,
1410
+ style
1411
+ }) => {
1412
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1413
+ size: size,
1414
+ style: style,
1415
+ children: [/*#__PURE__*/_jsx(View, {
1416
+ style: {
1417
+ position: 'absolute',
1418
+ left: size * 0.25,
1419
+ width: size * 0.5,
1420
+ height: strokeWidth,
1421
+ backgroundColor: color,
1422
+ transform: [{
1423
+ rotate: '45deg'
1424
+ }]
1425
+ }
1426
+ }), /*#__PURE__*/_jsx(View, {
1427
+ style: {
1428
+ position: 'absolute',
1429
+ right: size * 0.25,
1430
+ width: size * 0.5,
1431
+ height: strokeWidth,
1432
+ backgroundColor: color,
1433
+ transform: [{
1434
+ rotate: '-45deg'
1435
+ }]
1436
+ }
1437
+ })]
1438
+ });
1439
+ };
1440
+
1441
+ /** Checkmark/check icon */
1442
+ export const CheckIcon = ({
1443
+ size = DEFAULT_SIZE,
1444
+ color = DEFAULT_COLOR,
1445
+ strokeWidth = DEFAULT_STROKE,
1446
+ style
1447
+ }) => {
1448
+ return /*#__PURE__*/_jsx(DoneIcon, {
1449
+ size: size,
1450
+ color: color,
1451
+ strokeWidth: strokeWidth,
1452
+ style: style
1453
+ });
1454
+ };
1455
+
1456
+ /** Volume on icon */
1457
+ export const VolumeOnIcon = ({
1458
+ size = DEFAULT_SIZE,
1459
+ color = DEFAULT_COLOR,
1460
+ strokeWidth = DEFAULT_STROKE,
1461
+ style
1462
+ }) => {
1463
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1464
+ size: size,
1465
+ style: style,
1466
+ children: [/*#__PURE__*/_jsx(View, {
1467
+ style: {
1468
+ width: size * 0.2,
1469
+ height: size * 0.6,
1470
+ borderLeftWidth: strokeWidth * 1.5,
1471
+ borderTopWidth: size * 0.3,
1472
+ borderBottomWidth: size * 0.3,
1473
+ borderLeftColor: color,
1474
+ borderTopColor: 'transparent',
1475
+ borderBottomColor: 'transparent'
1476
+ }
1477
+ }), /*#__PURE__*/_jsx(View, {
1478
+ style: {
1479
+ position: 'absolute',
1480
+ right: -size * 0.08,
1481
+ width: size * 0.35,
1482
+ height: size * 0.35,
1483
+ borderWidth: strokeWidth,
1484
+ borderColor: color,
1485
+ borderRadius: size * 0.175
1486
+ }
1487
+ }), /*#__PURE__*/_jsx(View, {
1488
+ style: {
1489
+ position: 'absolute',
1490
+ right: -size * 0.18,
1491
+ width: size * 0.55,
1492
+ height: size * 0.55,
1493
+ borderWidth: strokeWidth,
1494
+ borderColor: color,
1495
+ borderRadius: size * 0.275
1496
+ }
1497
+ })]
1498
+ });
1499
+ };
1500
+
1501
+ /** Volume off / mute icon */
1502
+ export const VolumeOffIcon = ({
1503
+ size = DEFAULT_SIZE,
1504
+ color = DEFAULT_COLOR,
1505
+ strokeWidth = DEFAULT_STROKE,
1506
+ style
1507
+ }) => {
1508
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1509
+ size: size,
1510
+ style: style,
1511
+ children: [/*#__PURE__*/_jsx(View, {
1512
+ style: {
1513
+ width: size * 0.2,
1514
+ height: size * 0.6,
1515
+ borderLeftWidth: strokeWidth * 1.5,
1516
+ borderTopWidth: size * 0.3,
1517
+ borderBottomWidth: size * 0.3,
1518
+ borderLeftColor: color,
1519
+ borderTopColor: 'transparent',
1520
+ borderBottomColor: 'transparent'
1521
+ }
1522
+ }), /*#__PURE__*/_jsx(View, {
1523
+ style: {
1524
+ position: 'absolute',
1525
+ width: size * 0.7,
1526
+ height: strokeWidth * 1.5,
1527
+ backgroundColor: color,
1528
+ transform: [{
1529
+ rotate: '-45deg'
1530
+ }]
1531
+ }
1532
+ })]
1533
+ });
1534
+ };
1535
+
1536
+ // ============================================================================
1537
+ // Media Operations
1538
+ // ============================================================================
1539
+
1540
+ /** Trim icon */
1541
+ export const TrimIcon = ({
1542
+ size = DEFAULT_SIZE,
1543
+ color = DEFAULT_COLOR,
1544
+ strokeWidth = DEFAULT_STROKE,
1545
+ style
1546
+ }) => {
1547
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1548
+ size: size,
1549
+ style: style,
1550
+ children: [/*#__PURE__*/_jsx(View, {
1551
+ style: {
1552
+ position: 'absolute',
1553
+ left: size * 0.1,
1554
+ top: size * 0.15,
1555
+ width: strokeWidth,
1556
+ height: size * 0.7,
1557
+ backgroundColor: color
1558
+ }
1559
+ }), /*#__PURE__*/_jsx(View, {
1560
+ style: {
1561
+ position: 'absolute',
1562
+ left: size * 0.1,
1563
+ top: size * 0.15,
1564
+ width: size * 0.15,
1565
+ height: strokeWidth,
1566
+ backgroundColor: color
1567
+ }
1568
+ }), /*#__PURE__*/_jsx(View, {
1569
+ style: {
1570
+ position: 'absolute',
1571
+ left: size * 0.1,
1572
+ bottom: size * 0.15,
1573
+ width: size * 0.15,
1574
+ height: strokeWidth,
1575
+ backgroundColor: color
1576
+ }
1577
+ }), /*#__PURE__*/_jsx(View, {
1578
+ style: {
1579
+ position: 'absolute',
1580
+ right: size * 0.1,
1581
+ top: size * 0.15,
1582
+ width: strokeWidth,
1583
+ height: size * 0.7,
1584
+ backgroundColor: color
1585
+ }
1586
+ }), /*#__PURE__*/_jsx(View, {
1587
+ style: {
1588
+ position: 'absolute',
1589
+ right: size * 0.1,
1590
+ top: size * 0.15,
1591
+ width: size * 0.15,
1592
+ height: strokeWidth,
1593
+ backgroundColor: color
1594
+ }
1595
+ }), /*#__PURE__*/_jsx(View, {
1596
+ style: {
1597
+ position: 'absolute',
1598
+ right: size * 0.1,
1599
+ bottom: size * 0.15,
1600
+ width: size * 0.15,
1601
+ height: strokeWidth,
1602
+ backgroundColor: color
1603
+ }
1604
+ })]
1605
+ });
1606
+ };
1607
+
1608
+ /** Cover/frame icon */
1609
+ export const CoverIcon = ({
1610
+ size = DEFAULT_SIZE,
1611
+ color = DEFAULT_COLOR,
1612
+ strokeWidth = DEFAULT_STROKE,
1613
+ style
1614
+ }) => {
1615
+ return /*#__PURE__*/_jsx(IconWrapper, {
1616
+ size: size,
1617
+ style: style,
1618
+ children: /*#__PURE__*/_jsxs(View, {
1619
+ style: {
1620
+ width: size * 0.8,
1621
+ height: size * 0.6,
1622
+ borderWidth: strokeWidth,
1623
+ borderColor: color,
1624
+ borderRadius: size * 0.06,
1625
+ alignItems: 'center',
1626
+ justifyContent: 'center'
1627
+ },
1628
+ children: [/*#__PURE__*/_jsx(View, {
1629
+ style: {
1630
+ position: 'absolute',
1631
+ width: size * 0.5,
1632
+ height: strokeWidth,
1633
+ backgroundColor: color
1634
+ }
1635
+ }), /*#__PURE__*/_jsx(View, {
1636
+ style: {
1637
+ position: 'absolute',
1638
+ width: strokeWidth,
1639
+ height: size * 0.4,
1640
+ backgroundColor: color
1641
+ }
1642
+ })]
1643
+ })
1644
+ });
1645
+ };
1646
+
1647
+ /** Compress icon */
1648
+ export const CompressIcon = ({
1649
+ size = DEFAULT_SIZE,
1650
+ color = DEFAULT_COLOR,
1651
+ strokeWidth = DEFAULT_STROKE,
1652
+ style
1653
+ }) => {
1654
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1655
+ size: size,
1656
+ style: style,
1657
+ children: [/*#__PURE__*/_jsx(View, {
1658
+ style: {
1659
+ position: 'absolute',
1660
+ top: size * 0.1,
1661
+ left: size * 0.1,
1662
+ width: size * 0.2,
1663
+ height: strokeWidth,
1664
+ backgroundColor: color,
1665
+ transform: [{
1666
+ rotate: '45deg'
1667
+ }]
1668
+ }
1669
+ }), /*#__PURE__*/_jsx(View, {
1670
+ style: {
1671
+ position: 'absolute',
1672
+ bottom: size * 0.1,
1673
+ right: size * 0.1,
1674
+ width: size * 0.2,
1675
+ height: strokeWidth,
1676
+ backgroundColor: color,
1677
+ transform: [{
1678
+ rotate: '45deg'
1679
+ }]
1680
+ }
1681
+ })]
1682
+ });
1683
+ };
1684
+
1685
+ /** Export icon */
1686
+ export const ExportIcon = ({
1687
+ size = DEFAULT_SIZE,
1688
+ color = DEFAULT_COLOR,
1689
+ strokeWidth = DEFAULT_STROKE,
1690
+ style
1691
+ }) => {
1692
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1693
+ size: size,
1694
+ style: style,
1695
+ children: [/*#__PURE__*/_jsx(View, {
1696
+ style: {
1697
+ position: 'absolute',
1698
+ top: size * 0.15,
1699
+ width: size * 0.4,
1700
+ height: strokeWidth,
1701
+ backgroundColor: color
1702
+ }
1703
+ }), /*#__PURE__*/_jsx(View, {
1704
+ style: {
1705
+ position: 'absolute',
1706
+ top: size * 0.25,
1707
+ left: size * 0.3,
1708
+ width: strokeWidth,
1709
+ height: size * 0.25,
1710
+ backgroundColor: color
1711
+ }
1712
+ }), /*#__PURE__*/_jsx(View, {
1713
+ style: {
1714
+ position: 'absolute',
1715
+ top: size * 0.4,
1716
+ left: size * 0.2,
1717
+ width: size * 0.2,
1718
+ height: strokeWidth,
1719
+ backgroundColor: color,
1720
+ transform: [{
1721
+ rotate: '-45deg'
1722
+ }]
1723
+ }
1724
+ }), /*#__PURE__*/_jsx(View, {
1725
+ style: {
1726
+ position: 'absolute',
1727
+ bottom: 0,
1728
+ width: size * 0.8,
1729
+ height: size * 0.3,
1730
+ borderTopWidth: strokeWidth,
1731
+ borderColor: color
1732
+ }
1733
+ })]
1734
+ });
1735
+ };
1736
+
1737
+ /** Upload icon */
1738
+ export const UploadIcon = ({
1739
+ size = DEFAULT_SIZE,
1740
+ color = DEFAULT_COLOR,
1741
+ strokeWidth = DEFAULT_STROKE,
1742
+ style
1743
+ }) => {
1744
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1745
+ size: size,
1746
+ style: style,
1747
+ children: [/*#__PURE__*/_jsx(View, {
1748
+ style: {
1749
+ position: 'absolute',
1750
+ top: size * 0.2,
1751
+ width: size * 0.4,
1752
+ height: strokeWidth,
1753
+ backgroundColor: color
1754
+ }
1755
+ }), /*#__PURE__*/_jsx(View, {
1756
+ style: {
1757
+ position: 'absolute',
1758
+ top: size * 0.3,
1759
+ left: size * 0.3,
1760
+ width: strokeWidth,
1761
+ height: size * 0.25,
1762
+ backgroundColor: color
1763
+ }
1764
+ }), /*#__PURE__*/_jsx(View, {
1765
+ style: {
1766
+ position: 'absolute',
1767
+ top: size * 0.2,
1768
+ left: size * 0.2,
1769
+ width: size * 0.2,
1770
+ height: strokeWidth,
1771
+ backgroundColor: color,
1772
+ transform: [{
1773
+ rotate: '45deg'
1774
+ }]
1775
+ }
1776
+ }), /*#__PURE__*/_jsx(View, {
1777
+ style: {
1778
+ position: 'absolute',
1779
+ bottom: 0,
1780
+ width: size * 0.8,
1781
+ height: strokeWidth,
1782
+ backgroundColor: color
1783
+ }
1784
+ })]
1785
+ });
1786
+ };
1787
+
1788
+ // ============================================================================
1789
+ // Basic Shapes
1790
+ // ============================================================================
1791
+
1792
+ /** Plus/add icon */
1793
+ export const PlusIcon = ({
1794
+ size = DEFAULT_SIZE,
1795
+ color = DEFAULT_COLOR,
1796
+ strokeWidth = DEFAULT_STROKE,
1797
+ style
1798
+ }) => {
1799
+ const barLength = size * 0.5;
1800
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1801
+ size: size,
1802
+ style: style,
1803
+ children: [/*#__PURE__*/_jsx(View, {
1804
+ style: {
1805
+ position: 'absolute',
1806
+ width: barLength,
1807
+ height: strokeWidth,
1808
+ backgroundColor: color
1809
+ }
1810
+ }), /*#__PURE__*/_jsx(View, {
1811
+ style: {
1812
+ position: 'absolute',
1813
+ width: strokeWidth,
1814
+ height: barLength,
1815
+ backgroundColor: color
1816
+ }
1817
+ })]
1818
+ });
1819
+ };
1820
+
1821
+ /** Minus/subtract icon */
1822
+ export const MinusIcon = ({
1823
+ size = DEFAULT_SIZE,
1824
+ color = DEFAULT_COLOR,
1825
+ strokeWidth = DEFAULT_STROKE,
1826
+ style
1827
+ }) => {
1828
+ return /*#__PURE__*/_jsx(IconWrapper, {
1829
+ size: size,
1830
+ style: style,
1831
+ children: /*#__PURE__*/_jsx(View, {
1832
+ style: {
1833
+ width: size * 0.6,
1834
+ height: strokeWidth,
1835
+ backgroundColor: color
1836
+ }
1837
+ })
1838
+ });
1839
+ };
1840
+
1841
+ /** Stop button (square) */
1842
+ export const StopIcon = ({
1843
+ size = DEFAULT_SIZE,
1844
+ color = DEFAULT_COLOR,
1845
+ style
1846
+ }) => {
1847
+ const squareSize = size * 0.5;
1848
+ return /*#__PURE__*/_jsx(IconWrapper, {
1849
+ size: size,
1850
+ style: style,
1851
+ children: /*#__PURE__*/_jsx(View, {
1852
+ style: {
1853
+ width: squareSize,
1854
+ height: squareSize,
1855
+ backgroundColor: color,
1856
+ borderRadius: size * 0.05
1857
+ }
1858
+ })
1859
+ });
1860
+ };
1861
+
1862
+ /** Mute icon (speaker with X) */
1863
+ export const MuteIcon = ({
1864
+ size = DEFAULT_SIZE,
1865
+ color = DEFAULT_COLOR,
1866
+ strokeWidth = DEFAULT_STROKE,
1867
+ style
1868
+ }) => {
1869
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1870
+ size: size,
1871
+ style: style,
1872
+ children: [/*#__PURE__*/_jsx(View, {
1873
+ style: {
1874
+ width: size * 0.2,
1875
+ height: size * 0.6,
1876
+ borderLeftWidth: strokeWidth * 1.5,
1877
+ borderTopWidth: size * 0.3,
1878
+ borderBottomWidth: size * 0.3,
1879
+ borderLeftColor: color,
1880
+ borderTopColor: 'transparent',
1881
+ borderBottomColor: 'transparent'
1882
+ }
1883
+ }), /*#__PURE__*/_jsx(View, {
1884
+ style: {
1885
+ position: 'absolute',
1886
+ right: size * 0.05,
1887
+ width: size * 0.3,
1888
+ height: strokeWidth,
1889
+ backgroundColor: color,
1890
+ transform: [{
1891
+ rotate: '45deg'
1892
+ }]
1893
+ }
1894
+ }), /*#__PURE__*/_jsx(View, {
1895
+ style: {
1896
+ position: 'absolute',
1897
+ right: size * 0.05,
1898
+ width: size * 0.3,
1899
+ height: strokeWidth,
1900
+ backgroundColor: color,
1901
+ transform: [{
1902
+ rotate: '-45deg'
1903
+ }]
1904
+ }
1905
+ })]
1906
+ });
1907
+ };
1908
+
1909
+ // ============================================================================
1910
+ // Recording / audio / mode icons
1911
+ // ============================================================================
1912
+
1913
+ /** Photo-mode indicator — reuses the camera glyph. */
1914
+ export const PhotoModeIcon = props => /*#__PURE__*/_jsx(CameraIcon, {
1915
+ ...props
1916
+ });
1917
+
1918
+ /** Video-mode indicator — reuses the video glyph. */
1919
+ export const VideoModeIcon = props => /*#__PURE__*/_jsx(VideoIcon, {
1920
+ ...props
1921
+ });
1922
+
1923
+ /** Browse-audio default — reuses the audio glyph. */
1924
+ export const BrowseAudioIcon = props => /*#__PURE__*/_jsx(AudioIcon, {
1925
+ ...props
1926
+ });
1927
+
1928
+ /** Image+video (combined media) default — reuses the photo glyph. */
1929
+ export const ImageVideoIcon = props => /*#__PURE__*/_jsx(PhotoIcon, {
1930
+ ...props
1931
+ });
1932
+
1933
+ /** Chevron right / disclosure icon */
1934
+ export const ChevronRightIcon = ({
1935
+ size = DEFAULT_SIZE,
1936
+ color = DEFAULT_COLOR,
1937
+ strokeWidth = DEFAULT_STROKE,
1938
+ style
1939
+ }) => {
1940
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1941
+ size: size,
1942
+ style: style,
1943
+ children: [/*#__PURE__*/_jsx(View, {
1944
+ style: {
1945
+ position: 'absolute',
1946
+ top: size * 0.25,
1947
+ width: size * 0.5,
1948
+ height: strokeWidth,
1949
+ backgroundColor: color,
1950
+ transform: [{
1951
+ rotate: '45deg'
1952
+ }]
1953
+ }
1954
+ }), /*#__PURE__*/_jsx(View, {
1955
+ style: {
1956
+ position: 'absolute',
1957
+ bottom: size * 0.25,
1958
+ width: size * 0.5,
1959
+ height: strokeWidth,
1960
+ backgroundColor: color,
1961
+ transform: [{
1962
+ rotate: '-45deg'
1963
+ }]
1964
+ }
1965
+ })]
1966
+ });
1967
+ };
1968
+
1969
+ /** Record button — filled circle (color-driven). */
1970
+ export const RecordIcon = ({
1971
+ size = DEFAULT_SIZE,
1972
+ color = DEFAULT_COLOR,
1973
+ style
1974
+ }) => {
1975
+ const dot = size * 0.6;
1976
+ return /*#__PURE__*/_jsx(IconWrapper, {
1977
+ size: size,
1978
+ style: style,
1979
+ children: /*#__PURE__*/_jsx(View, {
1980
+ style: {
1981
+ width: dot,
1982
+ height: dot,
1983
+ borderRadius: dot / 2,
1984
+ backgroundColor: color
1985
+ }
1986
+ })
1987
+ });
1988
+ };
1989
+
1990
+ /** Warning — triangle outline with an exclamation mark. */
1991
+ export const WarningIcon = ({
1992
+ size = DEFAULT_SIZE,
1993
+ color = DEFAULT_COLOR,
1994
+ strokeWidth = DEFAULT_STROKE,
1995
+ style
1996
+ }) => {
1997
+ return /*#__PURE__*/_jsxs(IconWrapper, {
1998
+ size: size,
1999
+ style: style,
2000
+ children: [/*#__PURE__*/_jsx(View, {
2001
+ style: {
2002
+ position: 'absolute',
2003
+ top: size * 0.1,
2004
+ width: 0,
2005
+ height: 0,
2006
+ borderLeftWidth: size * 0.44,
2007
+ borderRightWidth: size * 0.44,
2008
+ borderBottomWidth: size * 0.72,
2009
+ borderLeftColor: 'transparent',
2010
+ borderRightColor: 'transparent',
2011
+ borderBottomColor: color
2012
+ }
2013
+ }), /*#__PURE__*/_jsx(View, {
2014
+ style: {
2015
+ position: 'absolute',
2016
+ top: size * 0.42,
2017
+ width: strokeWidth,
2018
+ height: size * 0.22,
2019
+ backgroundColor: '#FFFFFF'
2020
+ }
2021
+ }), /*#__PURE__*/_jsx(View, {
2022
+ style: {
2023
+ position: 'absolute',
2024
+ top: size * 0.68,
2025
+ width: strokeWidth,
2026
+ height: strokeWidth,
2027
+ borderRadius: strokeWidth,
2028
+ backgroundColor: '#FFFFFF'
2029
+ }
2030
+ })]
2031
+ });
2032
+ };
2033
+
2034
+ /** Microphone — rounded capsule head, stand arc, and base. */
2035
+ export const MicIcon = ({
2036
+ size = DEFAULT_SIZE,
2037
+ color = DEFAULT_COLOR,
2038
+ strokeWidth = DEFAULT_STROKE,
2039
+ style
2040
+ }) => {
2041
+ const capsuleW = size * 0.28;
2042
+ const capsuleH = size * 0.42;
2043
+ return /*#__PURE__*/_jsxs(IconWrapper, {
2044
+ size: size,
2045
+ style: style,
2046
+ children: [/*#__PURE__*/_jsx(View, {
2047
+ style: {
2048
+ position: 'absolute',
2049
+ top: size * 0.12,
2050
+ width: capsuleW,
2051
+ height: capsuleH,
2052
+ borderRadius: capsuleW / 2,
2053
+ backgroundColor: color
2054
+ }
2055
+ }), /*#__PURE__*/_jsx(View, {
2056
+ style: {
2057
+ position: 'absolute',
2058
+ top: size * 0.38,
2059
+ width: size * 0.5,
2060
+ height: size * 0.28,
2061
+ borderColor: color,
2062
+ borderWidth: strokeWidth,
2063
+ borderTopWidth: 0,
2064
+ borderBottomLeftRadius: size * 0.25,
2065
+ borderBottomRightRadius: size * 0.25
2066
+ }
2067
+ }), /*#__PURE__*/_jsx(View, {
2068
+ style: {
2069
+ position: 'absolute',
2070
+ top: size * 0.66,
2071
+ width: strokeWidth,
2072
+ height: size * 0.14,
2073
+ backgroundColor: color
2074
+ }
2075
+ }), /*#__PURE__*/_jsx(View, {
2076
+ style: {
2077
+ position: 'absolute',
2078
+ top: size * 0.8,
2079
+ width: size * 0.4,
2080
+ height: strokeWidth,
2081
+ backgroundColor: color
2082
+ }
2083
+ })]
2084
+ });
2085
+ };
2086
+
2087
+ // ============================================================================
2088
+ // Interactive & Inline Icons
2089
+ // ============================================================================
2090
+
2091
+ /**
2092
+ * Plus icon that morphs into a Cross (✕) as [progress] animates 0 → 1.
2093
+ * When progress is omitted or 0, renders a static Plus (+).
2094
+ */
2095
+ export const PlusCloseIcon = ({
2096
+ size = DEFAULT_SIZE,
2097
+ color = DEFAULT_COLOR,
2098
+ strokeWidth = 2.4,
2099
+ progress,
2100
+ style
2101
+ }) => {
2102
+ const barLength = Math.round(size * 0.58);
2103
+ let spin = '0deg';
2104
+ if (progress && typeof progress.interpolate === 'function') {
2105
+ spin = progress.interpolate({
2106
+ inputRange: [0, 1],
2107
+ outputRange: ['0deg', '225deg']
2108
+ });
2109
+ } else if (typeof progress === 'number') {
2110
+ spin = `${progress * 225}deg`;
2111
+ }
2112
+ const horizontal = {
2113
+ position: 'absolute',
2114
+ width: barLength,
2115
+ height: strokeWidth,
2116
+ borderRadius: strokeWidth,
2117
+ backgroundColor: color
2118
+ };
2119
+ const vertical = {
2120
+ position: 'absolute',
2121
+ width: strokeWidth,
2122
+ height: barLength,
2123
+ borderRadius: strokeWidth,
2124
+ backgroundColor: color
2125
+ };
2126
+ return /*#__PURE__*/_jsxs(Animated.View, {
2127
+ style: [{
2128
+ width: size,
2129
+ height: size,
2130
+ alignItems: 'center',
2131
+ justifyContent: 'center',
2132
+ position: 'relative',
2133
+ transform: [{
2134
+ rotate: spin
2135
+ }]
2136
+ }, style],
2137
+ children: [/*#__PURE__*/_jsx(View, {
2138
+ style: horizontal
2139
+ }), /*#__PURE__*/_jsx(View, {
2140
+ style: vertical
2141
+ })]
2142
+ });
2143
+ };
2144
+
2145
+ /**
2146
+ * Circular seek skip ring icon (◀ -10s / ▶ +10s).
2147
+ * Renders an open-topped circular arrow ring with directional arrowhead
2148
+ * and a centered seconds label.
2149
+ */
2150
+ export const CircularSeekIcon = ({
2151
+ direction = 'forward',
2152
+ label = '10',
2153
+ size = DEFAULT_SIZE,
2154
+ color = DEFAULT_COLOR,
2155
+ strokeWidth = DEFAULT_STROKE,
2156
+ style
2157
+ }) => {
2158
+ const head = Math.max(3, strokeWidth * 2);
2159
+ return /*#__PURE__*/_jsxs(View, {
2160
+ style: [{
2161
+ width: size,
2162
+ height: size,
2163
+ alignItems: 'center',
2164
+ justifyContent: 'center',
2165
+ position: 'relative'
2166
+ }, style],
2167
+ children: [/*#__PURE__*/_jsx(View, {
2168
+ style: {
2169
+ position: 'absolute',
2170
+ width: size,
2171
+ height: size,
2172
+ borderRadius: size / 2,
2173
+ borderWidth: strokeWidth,
2174
+ borderColor: color,
2175
+ borderTopColor: 'transparent'
2176
+ }
2177
+ }), /*#__PURE__*/_jsx(View, {
2178
+ style: {
2179
+ position: 'absolute',
2180
+ top: -strokeWidth * 0.4,
2181
+ left: direction === 'back' ? size * 0.24 : undefined,
2182
+ right: direction === 'forward' ? size * 0.24 : undefined,
2183
+ width: 0,
2184
+ height: 0,
2185
+ borderTopWidth: head,
2186
+ borderBottomWidth: head,
2187
+ borderTopColor: 'transparent',
2188
+ borderBottomColor: 'transparent',
2189
+ borderLeftWidth: direction === 'forward' ? head : 0,
2190
+ borderRightWidth: direction === 'back' ? head : 0,
2191
+ borderLeftColor: direction === 'forward' ? color : 'transparent',
2192
+ borderRightColor: direction === 'back' ? color : 'transparent'
2193
+ }
2194
+ }), /*#__PURE__*/_jsx(Text, {
2195
+ style: {
2196
+ color: color,
2197
+ fontSize: size * 0.4,
2198
+ fontWeight: '600',
2199
+ includeFontPadding: false,
2200
+ textAlign: 'center'
2201
+ },
2202
+ children: label
2203
+ })]
2204
+ });
2205
+ };
2206
+
2207
+ /**
2208
+ * View Details / Info (ⓘ) icon.
2209
+ * Renders an outlined circular badge with a centered 'i' glyph (dot + stem).
2210
+ */
2211
+ export const ViewDetailsIcon = ({
2212
+ size = DEFAULT_SIZE,
2213
+ color = DEFAULT_COLOR,
2214
+ strokeWidth = DEFAULT_STROKE,
2215
+ style
2216
+ }) => {
2217
+ const circleSize = size * 0.85;
2218
+ const dotSize = Math.max(2, strokeWidth * 1.2);
2219
+ const stemWidth = Math.max(1.5, strokeWidth);
2220
+ const stemHeight = size * 0.28;
2221
+ return /*#__PURE__*/_jsx(IconWrapper, {
2222
+ size: size,
2223
+ style: style,
2224
+ children: /*#__PURE__*/_jsxs(View, {
2225
+ style: {
2226
+ width: circleSize,
2227
+ height: circleSize,
2228
+ borderRadius: circleSize / 2,
2229
+ borderWidth: strokeWidth,
2230
+ borderColor: color,
2231
+ alignItems: 'center',
2232
+ justifyContent: 'center'
2233
+ },
2234
+ children: [/*#__PURE__*/_jsx(View, {
2235
+ style: {
2236
+ position: 'absolute',
2237
+ top: circleSize * 0.22,
2238
+ width: dotSize,
2239
+ height: dotSize,
2240
+ borderRadius: dotSize / 2,
2241
+ backgroundColor: color
2242
+ }
2243
+ }), /*#__PURE__*/_jsx(View, {
2244
+ style: {
2245
+ position: 'absolute',
2246
+ bottom: circleSize * 0.22,
2247
+ width: stemWidth,
2248
+ height: stemHeight,
2249
+ borderRadius: stemWidth / 2,
2250
+ backgroundColor: color
2251
+ }
2252
+ })]
2253
+ })
2254
+ });
2255
+ };
2256
+
2257
+ /** Alias for ViewDetailsIcon */
2258
+ export const InfoIcon = ViewDetailsIcon;
2259
+ //# sourceMappingURL=defaultIcons.js.map