@retray-dev/ui-kit 6.2.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPONENTS.md +997 -20
- package/EXAMPLES.md +250 -2
- package/README.md +21 -14
- package/dist/Accordion.d.mts +28 -0
- package/dist/Accordion.d.ts +28 -0
- package/dist/Accordion.js +392 -0
- package/dist/Accordion.mjs +7 -0
- package/dist/AlertBanner.d.mts +16 -0
- package/dist/AlertBanner.d.ts +16 -0
- package/dist/AlertBanner.js +250 -0
- package/dist/AlertBanner.mjs +6 -0
- package/dist/AppHeader.d.mts +40 -0
- package/dist/AppHeader.d.ts +40 -0
- package/dist/AppHeader.js +515 -0
- package/dist/AppHeader.mjs +10 -0
- package/dist/Avatar.d.mts +20 -0
- package/dist/Avatar.d.ts +20 -0
- package/dist/Avatar.js +244 -0
- package/dist/Avatar.mjs +4 -0
- package/dist/Badge.d.mts +26 -0
- package/dist/Badge.d.ts +26 -0
- package/dist/Badge.js +257 -0
- package/dist/Badge.mjs +5 -0
- package/dist/Button.d.mts +30 -0
- package/dist/Button.d.ts +30 -0
- package/dist/Button.js +432 -0
- package/dist/Button.mjs +9 -0
- package/dist/ButtonGroup.d.mts +26 -0
- package/dist/ButtonGroup.d.ts +26 -0
- package/dist/ButtonGroup.js +52 -0
- package/dist/ButtonGroup.mjs +3 -0
- package/dist/Card.d.mts +39 -0
- package/dist/Card.d.ts +39 -0
- package/dist/Card.js +349 -0
- package/dist/Card.mjs +8 -0
- package/dist/CategoryStrip.d.mts +26 -0
- package/dist/CategoryStrip.d.ts +26 -0
- package/dist/CategoryStrip.js +453 -0
- package/dist/CategoryStrip.mjs +9 -0
- package/dist/Checkbox.d.mts +14 -0
- package/dist/Checkbox.d.ts +14 -0
- package/dist/Checkbox.js +336 -0
- package/dist/Checkbox.mjs +7 -0
- package/dist/Chip.d.mts +31 -0
- package/dist/Chip.d.ts +31 -0
- package/dist/Chip.js +403 -0
- package/dist/Chip.mjs +8 -0
- package/dist/ConfirmDialog.d.mts +15 -0
- package/dist/ConfirmDialog.d.ts +15 -0
- package/dist/ConfirmDialog.js +560 -0
- package/dist/ConfirmDialog.mjs +10 -0
- package/dist/CurrencyDisplay.d.mts +24 -0
- package/dist/CurrencyDisplay.d.ts +24 -0
- package/dist/CurrencyDisplay.js +189 -0
- package/dist/CurrencyDisplay.mjs +4 -0
- package/dist/CurrencyInput.d.mts +26 -0
- package/dist/CurrencyInput.d.ts +26 -0
- package/dist/CurrencyInput.js +408 -0
- package/dist/CurrencyInput.mjs +8 -0
- package/dist/DetailRow.d.mts +32 -0
- package/dist/DetailRow.d.ts +32 -0
- package/dist/DetailRow.js +275 -0
- package/dist/DetailRow.mjs +5 -0
- package/dist/EmptyState.d.mts +27 -0
- package/dist/EmptyState.d.ts +27 -0
- package/dist/EmptyState.js +523 -0
- package/dist/EmptyState.mjs +10 -0
- package/dist/ErrorBoundary.d.mts +42 -0
- package/dist/ErrorBoundary.d.ts +42 -0
- package/dist/ErrorBoundary.js +351 -0
- package/dist/ErrorBoundary.mjs +7 -0
- package/dist/Form.d.mts +52 -0
- package/dist/Form.d.ts +52 -0
- package/dist/Form.js +204 -0
- package/dist/Form.mjs +4 -0
- package/dist/HolographicCard.d.mts +55 -0
- package/dist/HolographicCard.d.ts +55 -0
- package/dist/HolographicCard.js +316 -0
- package/dist/HolographicCard.mjs +191 -0
- package/dist/IconButton.d.mts +27 -0
- package/dist/IconButton.d.ts +27 -0
- package/dist/IconButton.js +400 -0
- package/dist/IconButton.mjs +8 -0
- package/dist/ImageViewer.d.mts +23 -0
- package/dist/ImageViewer.d.ts +23 -0
- package/dist/ImageViewer.js +582 -0
- package/dist/ImageViewer.mjs +8 -0
- package/dist/Input.d.mts +23 -0
- package/dist/Input.d.ts +23 -0
- package/dist/Input.js +351 -0
- package/dist/Input.mjs +7 -0
- package/dist/LabelValue.d.mts +16 -0
- package/dist/LabelValue.d.ts +16 -0
- package/dist/LabelValue.js +225 -0
- package/dist/LabelValue.mjs +5 -0
- package/dist/ListGroup.d.mts +34 -0
- package/dist/ListGroup.d.ts +34 -0
- package/dist/ListGroup.js +217 -0
- package/dist/ListGroup.mjs +5 -0
- package/dist/ListItem.d.mts +64 -0
- package/dist/ListItem.d.ts +64 -0
- package/dist/ListItem.js +444 -0
- package/dist/ListItem.mjs +9 -0
- package/dist/MediaCard.d.mts +39 -0
- package/dist/MediaCard.d.ts +39 -0
- package/dist/MediaCard.js +475 -0
- package/dist/MediaCard.mjs +9 -0
- package/dist/MenuGroup.d.mts +34 -0
- package/dist/MenuGroup.d.ts +34 -0
- package/dist/MenuGroup.js +217 -0
- package/dist/MenuGroup.mjs +5 -0
- package/dist/MenuItem.d.mts +48 -0
- package/dist/MenuItem.d.ts +48 -0
- package/dist/MenuItem.js +415 -0
- package/dist/MenuItem.mjs +9 -0
- package/dist/MonthPicker.d.mts +28 -0
- package/dist/MonthPicker.d.ts +28 -0
- package/dist/MonthPicker.js +297 -0
- package/dist/MonthPicker.mjs +5 -0
- package/dist/PagerDots.d.mts +35 -0
- package/dist/PagerDots.d.ts +35 -0
- package/dist/PagerDots.js +392 -0
- package/dist/PagerDots.mjs +7 -0
- package/dist/Pressable.d.mts +34 -0
- package/dist/Pressable.d.ts +34 -0
- package/dist/Pressable.js +143 -0
- package/dist/Pressable.mjs +5 -0
- package/dist/PricingCard.d.mts +50 -0
- package/dist/PricingCard.d.ts +50 -0
- package/dist/PricingCard.js +636 -0
- package/dist/PricingCard.mjs +11 -0
- package/dist/Progress.d.mts +14 -0
- package/dist/Progress.d.ts +14 -0
- package/dist/Progress.js +191 -0
- package/dist/Progress.mjs +5 -0
- package/dist/RadioGroup.d.mts +19 -0
- package/dist/RadioGroup.d.ts +19 -0
- package/dist/RadioGroup.js +392 -0
- package/dist/RadioGroup.mjs +7 -0
- package/dist/RetrayProvider.d.mts +2 -0
- package/dist/RetrayProvider.d.ts +2 -0
- package/dist/RetrayProvider.js +214 -0
- package/dist/RetrayProvider.mjs +5 -0
- package/dist/Select.d.mts +22 -0
- package/dist/Select.d.ts +22 -0
- package/dist/Select.js +488 -0
- package/dist/Select.mjs +7 -0
- package/dist/SelectableGrid.d.mts +44 -0
- package/dist/SelectableGrid.d.ts +44 -0
- package/dist/SelectableGrid.js +448 -0
- package/dist/SelectableGrid.mjs +9 -0
- package/dist/Separator.d.mts +10 -0
- package/dist/Separator.d.ts +10 -0
- package/dist/Separator.js +156 -0
- package/dist/Separator.mjs +3 -0
- package/dist/Sheet.d.mts +93 -0
- package/dist/Sheet.d.ts +93 -0
- package/dist/Sheet.js +450 -0
- package/dist/Sheet.mjs +6 -0
- package/dist/Skeleton.d.mts +67 -0
- package/dist/Skeleton.d.ts +67 -0
- package/dist/Skeleton.js +266 -0
- package/dist/Skeleton.mjs +6 -0
- package/dist/Slider.d.mts +20 -0
- package/dist/Slider.d.ts +20 -0
- package/dist/Slider.js +279 -0
- package/dist/Slider.mjs +5 -0
- package/dist/Spinner.d.mts +12 -0
- package/dist/Spinner.d.ts +12 -0
- package/dist/Spinner.js +193 -0
- package/dist/Spinner.mjs +4 -0
- package/dist/Switch.d.mts +13 -0
- package/dist/Switch.d.ts +13 -0
- package/dist/Switch.js +311 -0
- package/dist/Switch.mjs +6 -0
- package/dist/TabBar.d.mts +42 -0
- package/dist/TabBar.d.ts +42 -0
- package/dist/TabBar.js +361 -0
- package/dist/TabBar.mjs +6 -0
- package/dist/Tabs.d.mts +27 -0
- package/dist/Tabs.d.ts +27 -0
- package/dist/Tabs.js +419 -0
- package/dist/Tabs.mjs +7 -0
- package/dist/Text.d.mts +12 -0
- package/dist/Text.d.ts +12 -0
- package/dist/Text.js +327 -0
- package/dist/Text.mjs +5 -0
- package/dist/Textarea.d.mts +16 -0
- package/dist/Textarea.d.ts +16 -0
- package/dist/Textarea.js +333 -0
- package/dist/Textarea.mjs +7 -0
- package/dist/Toast.d.mts +47 -0
- package/dist/Toast.d.ts +47 -0
- package/dist/Toast.js +185 -0
- package/dist/Toast.mjs +4 -0
- package/dist/Toggle.d.mts +36 -0
- package/dist/Toggle.d.ts +36 -0
- package/dist/Toggle.js +412 -0
- package/dist/Toggle.mjs +8 -0
- package/dist/VirtualList.d.mts +19 -0
- package/dist/VirtualList.d.ts +19 -0
- package/dist/VirtualList.js +38 -0
- package/dist/VirtualList.mjs +2 -0
- package/dist/chunk-26BCI223.mjs +14 -0
- package/dist/chunk-2CE3TQVY.mjs +11 -0
- package/dist/chunk-2TFTAWVJ.mjs +131 -0
- package/dist/chunk-2UYENBLV.mjs +49 -0
- package/dist/chunk-3BBOZ3OQ.mjs +41 -0
- package/dist/chunk-3DKJ2GIC.mjs +30 -0
- package/dist/chunk-3U4SSNWP.mjs +120 -0
- package/dist/chunk-4I7D47FH.mjs +139 -0
- package/dist/chunk-4K625MVM.mjs +142 -0
- package/dist/chunk-6OAZJ577.mjs +98 -0
- package/dist/chunk-6Q64UFIA.mjs +71 -0
- package/dist/chunk-756RAKE4.mjs +145 -0
- package/dist/chunk-7QHVVCB3.mjs +115 -0
- package/dist/chunk-A3A6KNQN.mjs +245 -0
- package/dist/chunk-A4MDAP7G.mjs +42 -0
- package/dist/chunk-AJ7ZDNBT.mjs +120 -0
- package/dist/chunk-AV4EMIRH.mjs +94 -0
- package/dist/chunk-AZJF2BLK.mjs +115 -0
- package/dist/chunk-BNP626TY.mjs +159 -0
- package/dist/chunk-BRKYVJVV.mjs +60 -0
- package/dist/chunk-DVK4G2GT.mjs +59 -0
- package/dist/chunk-EH745HE5.mjs +127 -0
- package/dist/chunk-EJ7ZPXOH.mjs +163 -0
- package/dist/chunk-GD6KXMG5.mjs +106 -0
- package/dist/chunk-GQYFLP3D.mjs +187 -0
- package/dist/chunk-ID72TK46.mjs +111 -0
- package/dist/chunk-IRRY3CRZ.mjs +82 -0
- package/dist/chunk-JB67UOB5.mjs +92 -0
- package/dist/chunk-JMOZEC77.mjs +90 -0
- package/dist/chunk-JT7HKXRB.mjs +114 -0
- package/dist/chunk-KIHCWCWL.mjs +124 -0
- package/dist/chunk-LXJIIOYQ.mjs +104 -0
- package/dist/chunk-M6ZXVBTK.mjs +64 -0
- package/dist/chunk-MAC465BB.mjs +61 -0
- package/dist/chunk-MBMXYJJV.mjs +36 -0
- package/dist/chunk-MLF3EZFW.mjs +119 -0
- package/dist/chunk-MX6HRKMI.mjs +29 -0
- package/dist/chunk-NA7PARID.mjs +147 -0
- package/dist/chunk-NC5ZTR2Y.mjs +32 -0
- package/dist/chunk-O3HA6TYM.mjs +139 -0
- package/dist/chunk-OB4JUQ3O.mjs +51 -0
- package/dist/chunk-PFZTM6D5.mjs +238 -0
- package/dist/chunk-QKH5ZOD5.mjs +97 -0
- package/dist/chunk-QY3X2UYR.mjs +191 -0
- package/dist/chunk-SOA2Z4RB.mjs +82 -0
- package/dist/chunk-SOYNZDVY.mjs +151 -0
- package/dist/chunk-T7XZ7H7Y.mjs +57 -0
- package/dist/chunk-TERDKCLE.mjs +74 -0
- package/dist/chunk-UREA2GYY.mjs +113 -0
- package/dist/chunk-VGTDN7SW.mjs +164 -0
- package/dist/chunk-VQ57HWPL.mjs +144 -0
- package/dist/chunk-WBOOUHSS.mjs +62 -0
- package/dist/chunk-WJLKJMKR.mjs +78 -0
- package/dist/chunk-X4G6APW6.mjs +134 -0
- package/dist/chunk-Y6FXYEAI.mjs +8 -0
- package/dist/chunk-YFZ3ELX5.mjs +16 -0
- package/dist/chunk-YNROWHQJ.mjs +46 -0
- package/dist/chunk-Z4BVUWW6.mjs +196 -0
- package/dist/chunk-ZJKGQMYH.mjs +131 -0
- package/dist/index-wt-orHUi.d.mts +85 -0
- package/dist/index-wt-orHUi.d.ts +85 -0
- package/dist/index.d.mts +149 -920
- package/dist/index.d.ts +149 -920
- package/dist/index.js +2560 -970
- package/dist/index.mjs +60 -3895
- package/package.json +55 -16
- package/src/assets/fonts/Sohne-Bold.otf +0 -0
- package/src/assets/fonts/Sohne-BoldItalic.otf +0 -0
- package/src/assets/fonts/Sohne-ExtraBold.otf +0 -0
- package/src/assets/fonts/Sohne-ExtraBoldItalic.otf +0 -0
- package/src/assets/fonts/Sohne-ExtraLight.otf +0 -0
- package/src/assets/fonts/Sohne-ExtraLightItalic.otf +0 -0
- package/src/assets/fonts/Sohne-Italic.otf +0 -0
- package/src/assets/fonts/Sohne-Light.otf +0 -0
- package/src/assets/fonts/Sohne-LightItalic.otf +0 -0
- package/src/assets/fonts/Sohne-Medium.otf +0 -0
- package/src/assets/fonts/Sohne-MediumItalic.otf +0 -0
- package/src/assets/fonts/Sohne-Regular.otf +0 -0
- package/src/assets/fonts/Sohne-SemiBold.otf +0 -0
- package/src/assets/fonts/Sohne-SemiBoldItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-Bold.otf +0 -0
- package/src/assets/fonts/SohneMono-BoldItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-ExtraBold.otf +0 -0
- package/src/assets/fonts/SohneMono-ExtraBoldItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-ExtraLight.otf +0 -0
- package/src/assets/fonts/SohneMono-ExtraLightItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-Italic.otf +0 -0
- package/src/assets/fonts/SohneMono-Light.otf +0 -0
- package/src/assets/fonts/SohneMono-LightItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-Medium.otf +0 -0
- package/src/assets/fonts/SohneMono-MediumItalic.otf +0 -0
- package/src/assets/fonts/SohneMono-Regular.otf +0 -0
- package/src/assets/fonts/SohneMono-SemiBold.otf +0 -0
- package/src/assets/fonts/SohneMono-SemiBoldItalic.otf +0 -0
- package/src/components/Accordion/Accordion.tsx +15 -4
- package/src/components/AlertBanner/AlertBanner.tsx +38 -12
- package/src/components/AppHeader/AppHeader.tsx +172 -0
- package/src/components/AppHeader/index.ts +1 -0
- package/src/components/Avatar/Avatar.tsx +14 -4
- package/src/components/Badge/Badge.tsx +12 -3
- package/src/components/Button/Button.tsx +30 -38
- package/src/components/ButtonGroup/ButtonGroup.tsx +13 -10
- package/src/components/Card/Card.tsx +29 -57
- package/src/components/CategoryStrip/CategoryStrip.tsx +41 -42
- package/src/components/Checkbox/Checkbox.tsx +36 -45
- package/src/components/Chip/Chip.tsx +41 -48
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +2 -2
- package/src/components/CurrencyDisplay/CurrencyDisplay.tsx +4 -2
- package/src/components/CurrencyInput/CurrencyInput.tsx +12 -10
- package/src/components/DetailRow/DetailRow.tsx +9 -7
- package/src/components/EmptyState/EmptyState.tsx +4 -3
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +153 -0
- package/src/components/ErrorBoundary/index.ts +1 -0
- package/src/components/Form/Form.tsx +149 -0
- package/src/components/Form/index.ts +1 -0
- package/src/components/HolographicCard/HolographicCard.tsx +315 -0
- package/src/components/HolographicCard/index.ts +1 -0
- package/src/components/IconButton/IconButton.tsx +23 -29
- package/src/components/ImageViewer/ImageViewer.tsx +290 -0
- package/src/components/ImageViewer/index.ts +1 -0
- package/src/components/Input/Input.tsx +27 -31
- package/src/components/LabelValue/LabelValue.tsx +6 -4
- package/src/components/ListGroup/ListGroup.tsx +145 -0
- package/src/components/ListGroup/index.ts +1 -0
- package/src/components/ListItem/ListItem.tsx +78 -76
- package/src/components/MediaCard/MediaCard.tsx +15 -7
- package/src/components/MenuGroup/MenuGroup.tsx +145 -0
- package/src/components/MenuGroup/index.ts +1 -0
- package/src/components/MenuItem/MenuItem.tsx +16 -33
- package/src/components/MonthPicker/MonthPicker.tsx +41 -15
- package/src/components/MonthPicker/index.ts +1 -1
- package/src/components/PagerDots/PagerDots.tsx +200 -0
- package/src/components/PagerDots/index.ts +1 -0
- package/src/components/Pressable/Pressable.tsx +19 -35
- package/src/components/PricingCard/PricingCard.tsx +220 -0
- package/src/components/PricingCard/index.ts +1 -0
- package/src/components/RadioGroup/RadioGroup.tsx +23 -39
- package/src/components/RetrayProvider/RetrayProvider.tsx +59 -0
- package/src/components/RetrayProvider/index.ts +1 -0
- package/src/components/Select/Select.tsx +6 -6
- package/src/components/SelectableGrid/SelectableGrid.tsx +205 -0
- package/src/components/SelectableGrid/index.ts +1 -0
- package/src/components/Separator/Separator.tsx +1 -3
- package/src/components/Sheet/Sheet.tsx +146 -18
- package/src/components/Skeleton/Skeleton.tsx +143 -2
- package/src/components/Slider/Slider.tsx +2 -2
- package/src/components/Spinner/Spinner.tsx +18 -3
- package/src/components/Switch/Switch.tsx +44 -49
- package/src/components/TabBar/TabBar.tsx +169 -0
- package/src/components/TabBar/index.ts +1 -0
- package/src/components/Tabs/Tabs.tsx +45 -44
- package/src/components/Text/Text.tsx +5 -1
- package/src/components/Textarea/Textarea.tsx +18 -14
- package/src/components/Toast/Toast.tsx +6 -6
- package/src/components/Toggle/Toggle.tsx +80 -72
- package/src/components/VirtualList/VirtualList.tsx +60 -0
- package/src/components/VirtualList/index.ts +1 -0
- package/src/fonts.ts +41 -20
- package/src/index.ts +28 -3
- package/src/theme/colors.ts +53 -39
- package/src/theme/types.ts +3 -0
- package/src/tokens.ts +49 -39
- package/src/utils/animations.ts +29 -1
- package/src/utils/fontGuard.ts +34 -0
- package/src/utils/haptics.ts +211 -9
- package/src/utils/icons.ts +47 -20
- package/src/utils/pressable.ts +66 -0
- package/src/utils/usePressScale.ts +2 -0
- package/src/assets/fonts/Poppins-Black.ttf +0 -0
- package/src/assets/fonts/Poppins-BlackItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-Bold.ttf +0 -0
- package/src/assets/fonts/Poppins-BoldItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-ExtraBold.ttf +0 -0
- package/src/assets/fonts/Poppins-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-ExtraLight.ttf +0 -0
- package/src/assets/fonts/Poppins-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-Italic.ttf +0 -0
- package/src/assets/fonts/Poppins-Light.ttf +0 -0
- package/src/assets/fonts/Poppins-LightItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-Medium.ttf +0 -0
- package/src/assets/fonts/Poppins-MediumItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-Regular.ttf +0 -0
- package/src/assets/fonts/Poppins-SemiBold.ttf +0 -0
- package/src/assets/fonts/Poppins-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/Poppins-Thin.ttf +0 -0
- package/src/assets/fonts/Poppins-ThinItalic.ttf +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
type SkeletonPreset = 'base' | 'circle' | 'text';
|
|
5
|
+
interface SkeletonProps {
|
|
6
|
+
width?: number | string;
|
|
7
|
+
height?: number;
|
|
8
|
+
borderRadius?: number;
|
|
9
|
+
/** Preset shape. `'circle'` forces width=height square with full radius. `'text'` renders a short line. */
|
|
10
|
+
preset?: SkeletonPreset;
|
|
11
|
+
/** Only used with `preset='circle'` — overrides the diameter. Defaults to 40. */
|
|
12
|
+
diameter?: number;
|
|
13
|
+
style?: ViewStyle;
|
|
14
|
+
}
|
|
15
|
+
declare function Skeleton({ width, height, borderRadius, preset, diameter, style, }: SkeletonProps): React.JSX.Element;
|
|
16
|
+
declare namespace Skeleton {
|
|
17
|
+
var MediaCard: typeof MediaCardSkeleton;
|
|
18
|
+
var ListItem: typeof ListItemSkeleton;
|
|
19
|
+
var List: typeof ListSkeleton;
|
|
20
|
+
}
|
|
21
|
+
declare const aspectRatioMap: {
|
|
22
|
+
readonly '1:1': 1;
|
|
23
|
+
readonly '4:3': number;
|
|
24
|
+
readonly '16:9': number;
|
|
25
|
+
readonly '4:5': number;
|
|
26
|
+
readonly '3:2': number;
|
|
27
|
+
};
|
|
28
|
+
type MediaCardSkeletonAspectRatio = keyof typeof aspectRatioMap;
|
|
29
|
+
interface MediaCardSkeletonProps {
|
|
30
|
+
/** Image aspect ratio — match your `MediaCard`. Defaults to `'4:3'`. */
|
|
31
|
+
aspectRatio?: MediaCardSkeletonAspectRatio;
|
|
32
|
+
/** Show the subtitle/caption line below the title. Defaults to true. */
|
|
33
|
+
showSubtitle?: boolean;
|
|
34
|
+
style?: ViewStyle;
|
|
35
|
+
}
|
|
36
|
+
/** Loading placeholder matching `<MediaCard>` — image block + title/subtitle lines. */
|
|
37
|
+
declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React.JSX.Element;
|
|
38
|
+
interface ListItemSkeletonProps {
|
|
39
|
+
/** Render a circular leading avatar placeholder. Defaults to true. */
|
|
40
|
+
showAvatar?: boolean;
|
|
41
|
+
/** Render a secondary subtitle line. Defaults to true. */
|
|
42
|
+
showSubtitle?: boolean;
|
|
43
|
+
style?: ViewStyle;
|
|
44
|
+
}
|
|
45
|
+
/** Loading placeholder matching `<ListItem>` — leading circle + title/subtitle lines. */
|
|
46
|
+
declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React.JSX.Element;
|
|
47
|
+
interface ListSkeletonProps {
|
|
48
|
+
/** Number of placeholder rows/cells. Defaults to 6. */
|
|
49
|
+
count?: number;
|
|
50
|
+
/** 1 = stacked list of `ListItemSkeleton`; >1 = grid of `MediaCardSkeleton`. Defaults to 1. */
|
|
51
|
+
columns?: number;
|
|
52
|
+
/** Gap between items (dp). Defaults to 12. */
|
|
53
|
+
gap?: number;
|
|
54
|
+
/** Grid only — aspect ratio of each `MediaCardSkeleton`. Defaults to `'4:3'`. */
|
|
55
|
+
aspectRatio?: MediaCardSkeletonAspectRatio;
|
|
56
|
+
/** List only — show the leading avatar circle. Defaults to true. */
|
|
57
|
+
showAvatar?: boolean;
|
|
58
|
+
style?: ViewStyle;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Repeated loading placeholder for a `VirtualList` / list / grid. `columns={1}`
|
|
62
|
+
* renders stacked `ListItemSkeleton`s; `columns>1` renders a wrapping grid of
|
|
63
|
+
* `MediaCardSkeleton`s. Render this as the list's content while `data` is empty.
|
|
64
|
+
*/
|
|
65
|
+
declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React.JSX.Element;
|
|
66
|
+
|
|
67
|
+
export { Skeleton, type SkeletonProps };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
type SkeletonPreset = 'base' | 'circle' | 'text';
|
|
5
|
+
interface SkeletonProps {
|
|
6
|
+
width?: number | string;
|
|
7
|
+
height?: number;
|
|
8
|
+
borderRadius?: number;
|
|
9
|
+
/** Preset shape. `'circle'` forces width=height square with full radius. `'text'` renders a short line. */
|
|
10
|
+
preset?: SkeletonPreset;
|
|
11
|
+
/** Only used with `preset='circle'` — overrides the diameter. Defaults to 40. */
|
|
12
|
+
diameter?: number;
|
|
13
|
+
style?: ViewStyle;
|
|
14
|
+
}
|
|
15
|
+
declare function Skeleton({ width, height, borderRadius, preset, diameter, style, }: SkeletonProps): React.JSX.Element;
|
|
16
|
+
declare namespace Skeleton {
|
|
17
|
+
var MediaCard: typeof MediaCardSkeleton;
|
|
18
|
+
var ListItem: typeof ListItemSkeleton;
|
|
19
|
+
var List: typeof ListSkeleton;
|
|
20
|
+
}
|
|
21
|
+
declare const aspectRatioMap: {
|
|
22
|
+
readonly '1:1': 1;
|
|
23
|
+
readonly '4:3': number;
|
|
24
|
+
readonly '16:9': number;
|
|
25
|
+
readonly '4:5': number;
|
|
26
|
+
readonly '3:2': number;
|
|
27
|
+
};
|
|
28
|
+
type MediaCardSkeletonAspectRatio = keyof typeof aspectRatioMap;
|
|
29
|
+
interface MediaCardSkeletonProps {
|
|
30
|
+
/** Image aspect ratio — match your `MediaCard`. Defaults to `'4:3'`. */
|
|
31
|
+
aspectRatio?: MediaCardSkeletonAspectRatio;
|
|
32
|
+
/** Show the subtitle/caption line below the title. Defaults to true. */
|
|
33
|
+
showSubtitle?: boolean;
|
|
34
|
+
style?: ViewStyle;
|
|
35
|
+
}
|
|
36
|
+
/** Loading placeholder matching `<MediaCard>` — image block + title/subtitle lines. */
|
|
37
|
+
declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React.JSX.Element;
|
|
38
|
+
interface ListItemSkeletonProps {
|
|
39
|
+
/** Render a circular leading avatar placeholder. Defaults to true. */
|
|
40
|
+
showAvatar?: boolean;
|
|
41
|
+
/** Render a secondary subtitle line. Defaults to true. */
|
|
42
|
+
showSubtitle?: boolean;
|
|
43
|
+
style?: ViewStyle;
|
|
44
|
+
}
|
|
45
|
+
/** Loading placeholder matching `<ListItem>` — leading circle + title/subtitle lines. */
|
|
46
|
+
declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React.JSX.Element;
|
|
47
|
+
interface ListSkeletonProps {
|
|
48
|
+
/** Number of placeholder rows/cells. Defaults to 6. */
|
|
49
|
+
count?: number;
|
|
50
|
+
/** 1 = stacked list of `ListItemSkeleton`; >1 = grid of `MediaCardSkeleton`. Defaults to 1. */
|
|
51
|
+
columns?: number;
|
|
52
|
+
/** Gap between items (dp). Defaults to 12. */
|
|
53
|
+
gap?: number;
|
|
54
|
+
/** Grid only — aspect ratio of each `MediaCardSkeleton`. Defaults to `'4:3'`. */
|
|
55
|
+
aspectRatio?: MediaCardSkeletonAspectRatio;
|
|
56
|
+
/** List only — show the leading avatar circle. Defaults to true. */
|
|
57
|
+
showAvatar?: boolean;
|
|
58
|
+
style?: ViewStyle;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Repeated loading placeholder for a `VirtualList` / list / grid. `columns={1}`
|
|
62
|
+
* renders stacked `ListItemSkeleton`s; `columns>1` renders a wrapping grid of
|
|
63
|
+
* `MediaCardSkeleton`s. Render this as the list's content while `data` is empty.
|
|
64
|
+
*/
|
|
65
|
+
declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React.JSX.Element;
|
|
66
|
+
|
|
67
|
+
export { Skeleton, type SkeletonProps };
|
package/dist/Skeleton.js
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React2 = require('react');
|
|
4
|
+
var reactNative = require('react-native');
|
|
5
|
+
var Animated = require('react-native-reanimated');
|
|
6
|
+
var expoLinearGradient = require('expo-linear-gradient');
|
|
7
|
+
var reactNativeSizeMatters = require('react-native-size-matters');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var React2__default = /*#__PURE__*/_interopDefault(React2);
|
|
12
|
+
var Animated__default = /*#__PURE__*/_interopDefault(Animated);
|
|
13
|
+
|
|
14
|
+
// src/components/Skeleton/Skeleton.tsx
|
|
15
|
+
|
|
16
|
+
// src/theme/colorUtils.ts
|
|
17
|
+
function hexToRgb(hex) {
|
|
18
|
+
const clean = hex.replace("#", "");
|
|
19
|
+
const full = clean.length === 3 ? clean.split("").map((c) => c + c).join("") : clean;
|
|
20
|
+
if (full.length !== 6) return null;
|
|
21
|
+
return {
|
|
22
|
+
r: parseInt(full.slice(0, 2), 16),
|
|
23
|
+
g: parseInt(full.slice(2, 4), 16),
|
|
24
|
+
b: parseInt(full.slice(4, 6), 16)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function componentToHex(c) {
|
|
28
|
+
return Math.round(Math.max(0, Math.min(255, c))).toString(16).padStart(2, "0");
|
|
29
|
+
}
|
|
30
|
+
function rgbToHex(r, g, b) {
|
|
31
|
+
return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;
|
|
32
|
+
}
|
|
33
|
+
function withAlphaOnWhite(hex, alpha) {
|
|
34
|
+
const rgb = hexToRgb(hex);
|
|
35
|
+
if (!rgb) return hex;
|
|
36
|
+
const r = rgb.r * alpha + 255 * (1 - alpha);
|
|
37
|
+
const g = rgb.g * alpha + 255 * (1 - alpha);
|
|
38
|
+
const b = rgb.b * alpha + 255 * (1 - alpha);
|
|
39
|
+
return rgbToHex(r, g, b);
|
|
40
|
+
}
|
|
41
|
+
function withAlphaOnDark(hex, alpha, bgHex = "#0f0f0f") {
|
|
42
|
+
const rgb = hexToRgb(hex);
|
|
43
|
+
const bg = hexToRgb(bgHex);
|
|
44
|
+
if (!rgb || !bg) return hex;
|
|
45
|
+
const r = rgb.r * alpha + bg.r * (1 - alpha);
|
|
46
|
+
const g = rgb.g * alpha + bg.g * (1 - alpha);
|
|
47
|
+
const b = rgb.b * alpha + bg.b * (1 - alpha);
|
|
48
|
+
return rgbToHex(r, g, b);
|
|
49
|
+
}
|
|
50
|
+
function mixWithBackground(fgHex, bgHex, opacity) {
|
|
51
|
+
const fg = hexToRgb(fgHex);
|
|
52
|
+
const bg = hexToRgb(bgHex);
|
|
53
|
+
if (!fg || !bg) return fgHex;
|
|
54
|
+
const r = fg.r * opacity + bg.r * (1 - opacity);
|
|
55
|
+
const g = fg.g * opacity + bg.g * (1 - opacity);
|
|
56
|
+
const b = fg.b * opacity + bg.b * (1 - opacity);
|
|
57
|
+
return rgbToHex(r, g, b);
|
|
58
|
+
}
|
|
59
|
+
function lighten(hex, amount) {
|
|
60
|
+
return withAlphaOnWhite(hex, 1 - amount);
|
|
61
|
+
}
|
|
62
|
+
function darken(hex, amount) {
|
|
63
|
+
const rgb = hexToRgb(hex);
|
|
64
|
+
if (!rgb) return hex;
|
|
65
|
+
return rgbToHex(rgb.r * (1 - amount), rgb.g * (1 - amount), rgb.b * (1 - amount));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/theme/colors.ts
|
|
69
|
+
var defaultLight = {
|
|
70
|
+
background: "#ffffff",
|
|
71
|
+
foreground: "#1a1a1a",
|
|
72
|
+
card: "#ffffff",
|
|
73
|
+
primary: "#1a1a1a",
|
|
74
|
+
primaryForeground: "#ffffff",
|
|
75
|
+
// AUDIT FIX: brand accent — was undefined; falls back to primary when omitted
|
|
76
|
+
accent: "#d4561d",
|
|
77
|
+
accentForeground: "#ffffff",
|
|
78
|
+
border: "#dddddd",
|
|
79
|
+
// AUDIT FIX: was #e53935 (4.22:1 on white — fails AA); #c72828 = 5.59:1 ✓
|
|
80
|
+
destructive: "#c72828",
|
|
81
|
+
destructiveForeground: "#ffffff",
|
|
82
|
+
success: "#1a7a45",
|
|
83
|
+
successForeground: "#ffffff",
|
|
84
|
+
// AUDIT FIX: was #e67e00 (2.86:1 — severe fail); #9a5200 = 5.86:1 ✓ AAA-near
|
|
85
|
+
warning: "#9a5200",
|
|
86
|
+
warningForeground: "#ffffff"
|
|
87
|
+
};
|
|
88
|
+
function deriveColors(t, scheme) {
|
|
89
|
+
const dark = scheme === "dark";
|
|
90
|
+
const bg = t.background;
|
|
91
|
+
const foregroundSubtle = mixWithBackground(t.foreground, bg, 0.7);
|
|
92
|
+
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
93
|
+
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
94
|
+
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
95
|
+
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
96
|
+
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
97
|
+
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
98
|
+
const successBorder = dark ? withAlphaOnDark(t.success, 0.45, bg) : withAlphaOnWhite(t.success, 0.3);
|
|
99
|
+
const warningTint = dark ? withAlphaOnDark(t.warning, 0.15, bg) : withAlphaOnWhite(t.warning, 0.08);
|
|
100
|
+
const warningBorder = dark ? withAlphaOnDark(t.warning, 0.45, bg) : withAlphaOnWhite(t.warning, 0.3);
|
|
101
|
+
return {
|
|
102
|
+
...t,
|
|
103
|
+
foregroundSubtle,
|
|
104
|
+
foregroundMuted,
|
|
105
|
+
surface,
|
|
106
|
+
surfaceStrong,
|
|
107
|
+
destructiveTint,
|
|
108
|
+
destructiveBorder,
|
|
109
|
+
successTint,
|
|
110
|
+
successBorder,
|
|
111
|
+
warningTint,
|
|
112
|
+
warningBorder,
|
|
113
|
+
overlay: t.overlay ?? "rgba(0,0,0,0.45)",
|
|
114
|
+
accentResolved: t.accent ?? t.primary,
|
|
115
|
+
accentForegroundResolved: t.accentForeground ?? t.primaryForeground,
|
|
116
|
+
ring: t.accent ?? t.primary,
|
|
117
|
+
input: t.border,
|
|
118
|
+
separator: dark ? lighten(t.border, 0.22) : darken(t.border, 0.16)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// src/theme/ThemeProvider.tsx
|
|
123
|
+
var ThemeContext = React2.createContext({
|
|
124
|
+
colors: deriveColors(defaultLight, "light"),
|
|
125
|
+
colorScheme: "light"
|
|
126
|
+
});
|
|
127
|
+
function useTheme() {
|
|
128
|
+
const context = React2.useContext(ThemeContext);
|
|
129
|
+
if (!context) {
|
|
130
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
131
|
+
}
|
|
132
|
+
return context;
|
|
133
|
+
}
|
|
134
|
+
var isWeb = reactNative.Platform.OS === "web";
|
|
135
|
+
var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
|
|
136
|
+
var vs = isWeb ? (n) => n : reactNativeSizeMatters.verticalScale;
|
|
137
|
+
var TIMINGS = {
|
|
138
|
+
/** Skeleton shimmer cycle (full pass). */
|
|
139
|
+
shimmer: { duration: 1400 }
|
|
140
|
+
};
|
|
141
|
+
({
|
|
142
|
+
/** Material-style ease-out — natural deceleration for state changes. */
|
|
143
|
+
standard: Animated.Easing.bezier(0.2, 0, 0, 1),
|
|
144
|
+
/** Strong ease-out for expanding surfaces (Accordion open). */
|
|
145
|
+
expand: Animated.Easing.bezier(0.23, 1, 0.32, 1),
|
|
146
|
+
/** Quick ease-in for collapsing. */
|
|
147
|
+
collapse: Animated.Easing.in(Animated.Easing.ease)
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// src/tokens.ts
|
|
151
|
+
var RADIUS = {
|
|
152
|
+
xs: 4,
|
|
153
|
+
md: 14};
|
|
154
|
+
|
|
155
|
+
// src/components/Skeleton/Skeleton.tsx
|
|
156
|
+
function Skeleton({
|
|
157
|
+
width = "100%",
|
|
158
|
+
height = 16,
|
|
159
|
+
borderRadius = 6,
|
|
160
|
+
preset = "base",
|
|
161
|
+
diameter = 40,
|
|
162
|
+
style
|
|
163
|
+
}) {
|
|
164
|
+
const { colors, colorScheme } = useTheme();
|
|
165
|
+
const shimmer = Animated.useSharedValue(0);
|
|
166
|
+
const [containerWidth, setContainerWidth] = React2.useState(300);
|
|
167
|
+
const shimmerHighlight = colorScheme === "dark" ? "rgba(255,255,255,0.08)" : "rgba(255,255,255,0.7)";
|
|
168
|
+
React2.useEffect(() => {
|
|
169
|
+
shimmer.value = Animated.withRepeat(
|
|
170
|
+
Animated.withTiming(1, { duration: TIMINGS.shimmer.duration, easing: Animated.Easing.linear }),
|
|
171
|
+
-1,
|
|
172
|
+
false
|
|
173
|
+
);
|
|
174
|
+
}, [shimmer]);
|
|
175
|
+
const shimmerStyle = Animated.useAnimatedStyle(() => ({
|
|
176
|
+
transform: [{ translateX: -containerWidth + shimmer.value * (containerWidth * 2) }]
|
|
177
|
+
}));
|
|
178
|
+
const resolvedWidth = preset === "circle" ? s(diameter) : preset === "text" ? "60%" : width;
|
|
179
|
+
const resolvedHeight = preset === "circle" ? s(diameter) : preset === "text" ? 14 : height;
|
|
180
|
+
const resolvedRadius = preset === "circle" ? 9999 : preset === "text" ? 4 : borderRadius;
|
|
181
|
+
return /* @__PURE__ */ React2__default.default.createElement(
|
|
182
|
+
reactNative.View,
|
|
183
|
+
{
|
|
184
|
+
style: [
|
|
185
|
+
styles.base,
|
|
186
|
+
{ width: resolvedWidth, height: resolvedHeight, borderRadius: resolvedRadius, backgroundColor: colors.surface },
|
|
187
|
+
style
|
|
188
|
+
],
|
|
189
|
+
onLayout: (e) => setContainerWidth(e.nativeEvent.layout.width),
|
|
190
|
+
accessibilityRole: "progressbar",
|
|
191
|
+
accessibilityLabel: "Loading",
|
|
192
|
+
accessibilityState: { busy: true }
|
|
193
|
+
},
|
|
194
|
+
/* @__PURE__ */ React2__default.default.createElement(Animated__default.default.View, { style: [reactNative.StyleSheet.absoluteFill, shimmerStyle] }, /* @__PURE__ */ React2__default.default.createElement(
|
|
195
|
+
expoLinearGradient.LinearGradient,
|
|
196
|
+
{
|
|
197
|
+
colors: ["transparent", shimmerHighlight, "transparent"],
|
|
198
|
+
start: { x: 0, y: 0 },
|
|
199
|
+
end: { x: 1, y: 0 },
|
|
200
|
+
style: reactNative.StyleSheet.absoluteFill
|
|
201
|
+
}
|
|
202
|
+
))
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
var aspectRatioMap = {
|
|
206
|
+
"1:1": 1,
|
|
207
|
+
"4:3": 3 / 4,
|
|
208
|
+
"16:9": 9 / 16,
|
|
209
|
+
"4:5": 5 / 4,
|
|
210
|
+
"3:2": 2 / 3
|
|
211
|
+
};
|
|
212
|
+
function MediaCardSkeleton({ aspectRatio = "4:3", showSubtitle = true, style }) {
|
|
213
|
+
const ratio = aspectRatioMap[aspectRatio];
|
|
214
|
+
return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style }, /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: { paddingTop: `${ratio * 100}%` } }, /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: reactNative.StyleSheet.absoluteFill }, /* @__PURE__ */ React2__default.default.createElement(Skeleton, { width: "100%", height: void 0, style: skeletonStyles.fill, borderRadius: RADIUS.md }))), /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: skeletonStyles.meta }, /* @__PURE__ */ React2__default.default.createElement(Skeleton, { width: "70%", height: vs(14), borderRadius: RADIUS.xs }), showSubtitle ? /* @__PURE__ */ React2__default.default.createElement(Skeleton, { width: "45%", height: vs(12), borderRadius: RADIUS.xs }) : null));
|
|
215
|
+
}
|
|
216
|
+
function ListItemSkeleton({ showAvatar = true, showSubtitle = true, style }) {
|
|
217
|
+
return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [skeletonStyles.row, style] }, showAvatar ? /* @__PURE__ */ React2__default.default.createElement(Skeleton, { preset: "circle", diameter: 40 }) : null, /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: skeletonStyles.rowText }, /* @__PURE__ */ React2__default.default.createElement(Skeleton, { width: "60%", height: vs(14), borderRadius: RADIUS.xs }), showSubtitle ? /* @__PURE__ */ React2__default.default.createElement(Skeleton, { width: "40%", height: vs(12), borderRadius: RADIUS.xs }) : null));
|
|
218
|
+
}
|
|
219
|
+
function ListSkeleton({
|
|
220
|
+
count = 6,
|
|
221
|
+
columns = 1,
|
|
222
|
+
gap = 12,
|
|
223
|
+
aspectRatio = "4:3",
|
|
224
|
+
showAvatar = true,
|
|
225
|
+
style
|
|
226
|
+
}) {
|
|
227
|
+
if (columns <= 1) {
|
|
228
|
+
return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [{ gap: vs(gap) }, style] }, Array.from({ length: count }).map((_, i) => /* @__PURE__ */ React2__default.default.createElement(ListItemSkeleton, { key: i, showAvatar })));
|
|
229
|
+
}
|
|
230
|
+
const widthPct = `${100 / columns}%`;
|
|
231
|
+
return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [skeletonStyles.grid, { marginHorizontal: -s(gap) / 2 }, style] }, Array.from({ length: count }).map((_, i) => /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { key: i, style: { width: widthPct, paddingHorizontal: s(gap) / 2, marginBottom: vs(gap) } }, /* @__PURE__ */ React2__default.default.createElement(MediaCardSkeleton, { aspectRatio }))));
|
|
232
|
+
}
|
|
233
|
+
Skeleton.MediaCard = MediaCardSkeleton;
|
|
234
|
+
Skeleton.ListItem = ListItemSkeleton;
|
|
235
|
+
Skeleton.List = ListSkeleton;
|
|
236
|
+
var styles = reactNative.StyleSheet.create({
|
|
237
|
+
base: {
|
|
238
|
+
overflow: "hidden"
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
var skeletonStyles = reactNative.StyleSheet.create({
|
|
242
|
+
grid: {
|
|
243
|
+
flexDirection: "row",
|
|
244
|
+
flexWrap: "wrap"
|
|
245
|
+
},
|
|
246
|
+
fill: {
|
|
247
|
+
width: "100%",
|
|
248
|
+
height: "100%"
|
|
249
|
+
},
|
|
250
|
+
meta: {
|
|
251
|
+
paddingTop: vs(8),
|
|
252
|
+
gap: vs(6)
|
|
253
|
+
},
|
|
254
|
+
row: {
|
|
255
|
+
flexDirection: "row",
|
|
256
|
+
alignItems: "center",
|
|
257
|
+
gap: s(12),
|
|
258
|
+
paddingVertical: vs(8)
|
|
259
|
+
},
|
|
260
|
+
rowText: {
|
|
261
|
+
flex: 1,
|
|
262
|
+
gap: vs(6)
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
exports.Skeleton = Skeleton;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
interface SliderProps {
|
|
5
|
+
value?: number;
|
|
6
|
+
minimumValue?: number;
|
|
7
|
+
maximumValue?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
onValueChange?: (value: number) => void;
|
|
10
|
+
onSlidingComplete?: (value: number) => void;
|
|
11
|
+
label?: string;
|
|
12
|
+
showValue?: boolean;
|
|
13
|
+
formatValue?: (value: number) => string;
|
|
14
|
+
accessibilityLabel?: string;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
style?: ViewStyle;
|
|
17
|
+
}
|
|
18
|
+
declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, disabled, style, }: SliderProps): React.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { Slider, type SliderProps };
|
package/dist/Slider.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
interface SliderProps {
|
|
5
|
+
value?: number;
|
|
6
|
+
minimumValue?: number;
|
|
7
|
+
maximumValue?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
onValueChange?: (value: number) => void;
|
|
10
|
+
onSlidingComplete?: (value: number) => void;
|
|
11
|
+
label?: string;
|
|
12
|
+
showValue?: boolean;
|
|
13
|
+
formatValue?: (value: number) => string;
|
|
14
|
+
accessibilityLabel?: string;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
style?: ViewStyle;
|
|
17
|
+
}
|
|
18
|
+
declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, disabled, style, }: SliderProps): React.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { Slider, type SliderProps };
|