@thewhileloop/whileui 1.1.1 → 1.2.1

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 (238) hide show
  1. package/README.md +505 -38
  2. package/dist/blocks/chat/chat.d.ts.map +1 -1
  3. package/dist/blocks/chat/chat.js +15 -5
  4. package/dist/blocks/chat/chat.js.map +1 -1
  5. package/dist/blocks/commerce/feature-gate.d.ts +13 -0
  6. package/dist/blocks/commerce/feature-gate.d.ts.map +1 -0
  7. package/dist/blocks/commerce/feature-gate.js +13 -0
  8. package/dist/blocks/commerce/feature-gate.js.map +1 -0
  9. package/dist/blocks/commerce/index.d.ts +5 -0
  10. package/dist/blocks/commerce/index.d.ts.map +1 -1
  11. package/dist/blocks/commerce/index.js +5 -0
  12. package/dist/blocks/commerce/index.js.map +1 -1
  13. package/dist/blocks/commerce/metric-card.d.ts +3 -1
  14. package/dist/blocks/commerce/metric-card.d.ts.map +1 -1
  15. package/dist/blocks/commerce/metric-card.js +8 -1
  16. package/dist/blocks/commerce/metric-card.js.map +1 -1
  17. package/dist/blocks/commerce/plan-toggle.d.ts +12 -0
  18. package/dist/blocks/commerce/plan-toggle.d.ts.map +1 -0
  19. package/dist/blocks/commerce/plan-toggle.js +19 -0
  20. package/dist/blocks/commerce/plan-toggle.js.map +1 -0
  21. package/dist/blocks/commerce/pricing-card.d.ts +3 -1
  22. package/dist/blocks/commerce/pricing-card.d.ts.map +1 -1
  23. package/dist/blocks/commerce/pricing-card.js +9 -1
  24. package/dist/blocks/commerce/pricing-card.js.map +1 -1
  25. package/dist/blocks/commerce/product-card.d.ts +3 -1
  26. package/dist/blocks/commerce/product-card.d.ts.map +1 -1
  27. package/dist/blocks/commerce/product-card.js +16 -2
  28. package/dist/blocks/commerce/product-card.js.map +1 -1
  29. package/dist/blocks/commerce/subscription-card.d.ts +17 -0
  30. package/dist/blocks/commerce/subscription-card.d.ts.map +1 -0
  31. package/dist/blocks/commerce/subscription-card.js +18 -0
  32. package/dist/blocks/commerce/subscription-card.js.map +1 -0
  33. package/dist/blocks/commerce/upgrade-banner.d.ts +12 -0
  34. package/dist/blocks/commerce/upgrade-banner.d.ts.map +1 -0
  35. package/dist/blocks/commerce/upgrade-banner.js +9 -0
  36. package/dist/blocks/commerce/upgrade-banner.js.map +1 -0
  37. package/dist/blocks/commerce/usage-bar.d.ts +11 -0
  38. package/dist/blocks/commerce/usage-bar.d.ts.map +1 -0
  39. package/dist/blocks/commerce/usage-bar.js +33 -0
  40. package/dist/blocks/commerce/usage-bar.js.map +1 -0
  41. package/dist/blocks/datepicker/date-range-picker-modal.d.ts +3 -2
  42. package/dist/blocks/datepicker/date-range-picker-modal.d.ts.map +1 -1
  43. package/dist/blocks/datepicker/date-range-picker-modal.js +16 -3
  44. package/dist/blocks/datepicker/date-range-picker-modal.js.map +1 -1
  45. package/dist/blocks/datepicker/datepicker-inline.d.ts.map +1 -1
  46. package/dist/blocks/datepicker/datepicker-inline.js +3 -1
  47. package/dist/blocks/datepicker/datepicker-inline.js.map +1 -1
  48. package/dist/blocks/datepicker/datepicker-modal.d.ts +3 -2
  49. package/dist/blocks/datepicker/datepicker-modal.d.ts.map +1 -1
  50. package/dist/blocks/datepicker/datepicker-modal.js +16 -3
  51. package/dist/blocks/datepicker/datepicker-modal.js.map +1 -1
  52. package/dist/blocks/datepicker/use-calendar-theme.d.ts.map +1 -1
  53. package/dist/blocks/datepicker/use-calendar-theme.js +2 -1
  54. package/dist/blocks/datepicker/use-calendar-theme.js.map +1 -1
  55. package/dist/blocks/layout/app-shell.d.ts +5 -1
  56. package/dist/blocks/layout/app-shell.d.ts.map +1 -1
  57. package/dist/blocks/layout/app-shell.js +2 -2
  58. package/dist/blocks/layout/app-shell.js.map +1 -1
  59. package/dist/blocks/layout/confirm-action-sheet.d.ts +3 -2
  60. package/dist/blocks/layout/confirm-action-sheet.d.ts.map +1 -1
  61. package/dist/blocks/layout/confirm-action-sheet.js +23 -4
  62. package/dist/blocks/layout/confirm-action-sheet.js.map +1 -1
  63. package/dist/blocks/layout/form-modal-screen.d.ts.map +1 -1
  64. package/dist/blocks/layout/form-modal-screen.js +23 -1
  65. package/dist/blocks/layout/form-modal-screen.js.map +1 -1
  66. package/dist/blocks/layout/index.d.ts +2 -1
  67. package/dist/blocks/layout/index.d.ts.map +1 -1
  68. package/dist/blocks/layout/index.js +1 -0
  69. package/dist/blocks/layout/index.js.map +1 -1
  70. package/dist/blocks/layout/page-skeleton.d.ts +7 -1
  71. package/dist/blocks/layout/page-skeleton.d.ts.map +1 -1
  72. package/dist/blocks/layout/page-skeleton.js +7 -14
  73. package/dist/blocks/layout/page-skeleton.js.map +1 -1
  74. package/dist/blocks/layout/screen-skeleton.d.ts +16 -0
  75. package/dist/blocks/layout/screen-skeleton.d.ts.map +1 -0
  76. package/dist/blocks/layout/screen-skeleton.js +8 -0
  77. package/dist/blocks/layout/screen-skeleton.js.map +1 -0
  78. package/dist/blocks/layout/sheet.d.ts +3 -2
  79. package/dist/blocks/layout/sheet.d.ts.map +1 -1
  80. package/dist/blocks/layout/sheet.js +39 -6
  81. package/dist/blocks/layout/sheet.js.map +1 -1
  82. package/dist/blocks/layout/smart-input.d.ts.map +1 -1
  83. package/dist/blocks/layout/smart-input.js +8 -1
  84. package/dist/blocks/layout/smart-input.js.map +1 -1
  85. package/dist/blocks/lists/list-item.d.ts +3 -1
  86. package/dist/blocks/lists/list-item.d.ts.map +1 -1
  87. package/dist/blocks/lists/list-item.js +9 -1
  88. package/dist/blocks/lists/list-item.js.map +1 -1
  89. package/dist/blocks/lists/notification-item.d.ts +3 -1
  90. package/dist/blocks/lists/notification-item.d.ts.map +1 -1
  91. package/dist/blocks/lists/notification-item.js +10 -2
  92. package/dist/blocks/lists/notification-item.js.map +1 -1
  93. package/dist/blocks/lists/swipeable-item.d.ts.map +1 -1
  94. package/dist/blocks/lists/swipeable-item.js +5 -3
  95. package/dist/blocks/lists/swipeable-item.js.map +1 -1
  96. package/dist/blocks/navigation/bottom-nav.d.ts.map +1 -1
  97. package/dist/blocks/navigation/bottom-nav.js +9 -2
  98. package/dist/blocks/navigation/bottom-nav.js.map +1 -1
  99. package/dist/blocks/navigation/drawer-menu.d.ts +3 -2
  100. package/dist/blocks/navigation/drawer-menu.d.ts.map +1 -1
  101. package/dist/blocks/navigation/drawer-menu.js +88 -25
  102. package/dist/blocks/navigation/drawer-menu.js.map +1 -1
  103. package/dist/blocks/navigation/header.d.ts +1 -1
  104. package/dist/blocks/navigation/header.d.ts.map +1 -1
  105. package/dist/blocks/navigation/header.js +12 -3
  106. package/dist/blocks/navigation/header.js.map +1 -1
  107. package/dist/blocks/navigation/navigation-sidebar.d.ts.map +1 -1
  108. package/dist/blocks/navigation/navigation-sidebar.js +9 -2
  109. package/dist/blocks/navigation/navigation-sidebar.js.map +1 -1
  110. package/dist/blocks/navigation/tab-bar.d.ts.map +1 -1
  111. package/dist/blocks/navigation/tab-bar.js +8 -2
  112. package/dist/blocks/navigation/tab-bar.js.map +1 -1
  113. package/dist/components/accordion/accordion.d.ts +1 -1
  114. package/dist/components/accordion/accordion.d.ts.map +1 -1
  115. package/dist/components/accordion/accordion.js +10 -4
  116. package/dist/components/accordion/accordion.js.map +1 -1
  117. package/dist/components/alert/alert.js +4 -4
  118. package/dist/components/alert/alert.js.map +1 -1
  119. package/dist/components/alert-dialog/alert-dialog.d.ts +8 -4
  120. package/dist/components/alert-dialog/alert-dialog.d.ts.map +1 -1
  121. package/dist/components/alert-dialog/alert-dialog.js +159 -14
  122. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  123. package/dist/components/alert-dialog/index.d.ts +1 -1
  124. package/dist/components/alert-dialog/index.d.ts.map +1 -1
  125. package/dist/components/alert-dialog/index.js.map +1 -1
  126. package/dist/components/badge/badge.js +6 -6
  127. package/dist/components/badge/badge.js.map +1 -1
  128. package/dist/components/button/button.d.ts.map +1 -1
  129. package/dist/components/button/button.js +11 -5
  130. package/dist/components/button/button.js.map +1 -1
  131. package/dist/components/card/card.d.ts +2 -1
  132. package/dist/components/card/card.d.ts.map +1 -1
  133. package/dist/components/card/card.js +12 -3
  134. package/dist/components/card/card.js.map +1 -1
  135. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  136. package/dist/components/checkbox/checkbox.js +7 -1
  137. package/dist/components/checkbox/checkbox.js.map +1 -1
  138. package/dist/components/context-menu/context-menu.d.ts +3 -2
  139. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  140. package/dist/components/context-menu/context-menu.js +12 -3
  141. package/dist/components/context-menu/context-menu.js.map +1 -1
  142. package/dist/components/data-row/data-row.d.ts.map +1 -1
  143. package/dist/components/data-row/data-row.js +8 -5
  144. package/dist/components/data-row/data-row.js.map +1 -1
  145. package/dist/components/dialog/dialog.d.ts +3 -2
  146. package/dist/components/dialog/dialog.d.ts.map +1 -1
  147. package/dist/components/dialog/dialog.js +14 -3
  148. package/dist/components/dialog/dialog.js.map +1 -1
  149. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -2
  150. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  151. package/dist/components/dropdown-menu/dropdown-menu.js +12 -3
  152. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  153. package/dist/components/form-field/form-field.d.ts.map +1 -1
  154. package/dist/components/form-field/form-field.js +6 -3
  155. package/dist/components/form-field/form-field.js.map +1 -1
  156. package/dist/components/hover-card/hover-card.d.ts +2 -1
  157. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  158. package/dist/components/hover-card/hover-card.js +17 -2
  159. package/dist/components/hover-card/hover-card.js.map +1 -1
  160. package/dist/components/input/input.d.ts.map +1 -1
  161. package/dist/components/input/input.js +3 -1
  162. package/dist/components/input/input.js.map +1 -1
  163. package/dist/components/labeled-field/labeled-field.d.ts.map +1 -1
  164. package/dist/components/labeled-field/labeled-field.js +3 -1
  165. package/dist/components/labeled-field/labeled-field.js.map +1 -1
  166. package/dist/components/menubar/menubar.d.ts +3 -2
  167. package/dist/components/menubar/menubar.d.ts.map +1 -1
  168. package/dist/components/menubar/menubar.js +12 -3
  169. package/dist/components/menubar/menubar.js.map +1 -1
  170. package/dist/components/numeric-input/numeric-input.d.ts.map +1 -1
  171. package/dist/components/numeric-input/numeric-input.js +15 -3
  172. package/dist/components/numeric-input/numeric-input.js.map +1 -1
  173. package/dist/components/otp-input/index.d.ts +2 -0
  174. package/dist/components/otp-input/index.d.ts.map +1 -0
  175. package/dist/components/otp-input/index.js +2 -0
  176. package/dist/components/otp-input/index.js.map +1 -0
  177. package/dist/components/otp-input/otp-input.d.ts +97 -0
  178. package/dist/components/otp-input/otp-input.d.ts.map +1 -0
  179. package/dist/components/otp-input/otp-input.js +88 -0
  180. package/dist/components/otp-input/otp-input.js.map +1 -0
  181. package/dist/components/popover/popover.d.ts +2 -1
  182. package/dist/components/popover/popover.d.ts.map +1 -1
  183. package/dist/components/popover/popover.js +16 -3
  184. package/dist/components/popover/popover.js.map +1 -1
  185. package/dist/components/segmented-control/segmented-control.d.ts +3 -3
  186. package/dist/components/segmented-control/segmented-control.d.ts.map +1 -1
  187. package/dist/components/segmented-control/segmented-control.js +19 -5
  188. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  189. package/dist/components/select/select.d.ts +2 -1
  190. package/dist/components/select/select.d.ts.map +1 -1
  191. package/dist/components/select/select.js +30 -11
  192. package/dist/components/select/select.js.map +1 -1
  193. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  194. package/dist/components/skeleton/skeleton.js +6 -2
  195. package/dist/components/skeleton/skeleton.js.map +1 -1
  196. package/dist/components/switch/switch.d.ts.map +1 -1
  197. package/dist/components/switch/switch.js +7 -1
  198. package/dist/components/switch/switch.js.map +1 -1
  199. package/dist/components/tabs/tabs.d.ts +3 -1
  200. package/dist/components/tabs/tabs.d.ts.map +1 -1
  201. package/dist/components/tabs/tabs.js +9 -3
  202. package/dist/components/tabs/tabs.js.map +1 -1
  203. package/dist/components/textarea/textarea.d.ts +2 -2
  204. package/dist/components/textarea/textarea.d.ts.map +1 -1
  205. package/dist/components/textarea/textarea.js +19 -6
  206. package/dist/components/textarea/textarea.js.map +1 -1
  207. package/dist/components/toast/toast.d.ts.map +1 -1
  208. package/dist/components/toast/toast.js +12 -2
  209. package/dist/components/toast/toast.js.map +1 -1
  210. package/dist/index.d.ts +6 -1
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +5 -0
  213. package/dist/index.js.map +1 -1
  214. package/dist/lib/frosted-surface.d.ts +33 -0
  215. package/dist/lib/frosted-surface.d.ts.map +1 -0
  216. package/dist/lib/frosted-surface.js +181 -0
  217. package/dist/lib/frosted-surface.js.map +1 -0
  218. package/dist/lib/interaction-tokens.d.ts +26 -0
  219. package/dist/lib/interaction-tokens.d.ts.map +1 -0
  220. package/dist/lib/interaction-tokens.js +70 -0
  221. package/dist/lib/interaction-tokens.js.map +1 -0
  222. package/dist/lib/react-native-classname.d.ts +23 -0
  223. package/dist/lib/react-native-classname.d.ts.map +1 -0
  224. package/dist/lib/react-native-classname.js +2 -0
  225. package/dist/lib/react-native-classname.js.map +1 -0
  226. package/dist/lib/theme-colors.d.ts +33 -4
  227. package/dist/lib/theme-colors.d.ts.map +1 -1
  228. package/dist/lib/theme-colors.js +249 -37
  229. package/dist/lib/theme-colors.js.map +1 -1
  230. package/dist/lib/visual-tokens.d.ts +39 -0
  231. package/dist/lib/visual-tokens.d.ts.map +1 -0
  232. package/dist/lib/visual-tokens.js +91 -0
  233. package/dist/lib/visual-tokens.js.map +1 -0
  234. package/dist/vite.d.ts +47 -0
  235. package/dist/vite.d.ts.map +1 -0
  236. package/dist/vite.js +110 -0
  237. package/dist/vite.js.map +1 -0
  238. package/package.json +10 -1
@@ -0,0 +1,181 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Platform, StyleSheet, View } from 'react-native';
3
+ import { useUniwind } from 'uniwind';
4
+ import { useThemeColors } from './theme-colors';
5
+ import { useVisualTokens } from './visual-tokens';
6
+ let cachedBlurViewComponent;
7
+ let registeredBlurViewComponent = null;
8
+ /**
9
+ * Registers the app's BlurView implementation (e.g. from expo-blur).
10
+ * Keep this opt-in so consumers who do not install blur libraries still compile.
11
+ */
12
+ export function registerFrostedBlurView(blurView) {
13
+ registeredBlurViewComponent = blurView ?? null;
14
+ cachedBlurViewComponent = undefined;
15
+ }
16
+ function getBlurViewComponent() {
17
+ if (registeredBlurViewComponent) {
18
+ return registeredBlurViewComponent;
19
+ }
20
+ if (cachedBlurViewComponent !== undefined) {
21
+ return cachedBlurViewComponent;
22
+ }
23
+ const runtimeRequire = typeof require === 'function'
24
+ ? require
25
+ : (globalThis.require ?? null);
26
+ if (!runtimeRequire) {
27
+ cachedBlurViewComponent = null;
28
+ return cachedBlurViewComponent;
29
+ }
30
+ try {
31
+ const packageName = ['expo', 'blur'].join('-');
32
+ const maybeBlurModule = runtimeRequire(packageName);
33
+ cachedBlurViewComponent =
34
+ typeof maybeBlurModule?.BlurView === 'function' ? maybeBlurModule.BlurView : null;
35
+ }
36
+ catch {
37
+ cachedBlurViewComponent = null;
38
+ }
39
+ return cachedBlurViewComponent;
40
+ }
41
+ function resolveTintColor(colors, tintToken) {
42
+ if (tintToken === 'card')
43
+ return colors.card;
44
+ if (tintToken === 'popover')
45
+ return colors.popover;
46
+ if (tintToken === 'surfaceTranslucent')
47
+ return colors.surfaceTranslucent;
48
+ return colors.surfaceElevated;
49
+ }
50
+ function resolveBlurIntensity(visualTokens, blurIntensity, preset) {
51
+ if (typeof blurIntensity === 'number' && Number.isFinite(blurIntensity)) {
52
+ return Math.max(0, Math.round(blurIntensity));
53
+ }
54
+ if (preset === 'subtle')
55
+ return visualTokens.blurIntensitySubtle;
56
+ if (preset === 'strong')
57
+ return visualTokens.blurIntensityStrong;
58
+ return visualTokens.blurIntensityMedium;
59
+ }
60
+ function getInsetAbsoluteFillStyle() {
61
+ const inset = Math.max(0, StyleSheet.hairlineWidth);
62
+ if (inset <= 0) {
63
+ return StyleSheet.absoluteFillObject;
64
+ }
65
+ return {
66
+ position: 'absolute',
67
+ top: inset,
68
+ right: inset,
69
+ bottom: inset,
70
+ left: inset,
71
+ };
72
+ }
73
+ function FrostedOverlay({ intensity, tintColor, highlightColor, saturationPct, highlightHeight, androidExperimentalBlurEnabled, }) {
74
+ const { theme } = useUniwind();
75
+ const BlurView = getBlurViewComponent();
76
+ const blurTint = theme === 'dark' ? 'dark' : 'light';
77
+ const blurProps = Platform.OS === 'android' && androidExperimentalBlurEnabled
78
+ ? { experimentalBlurMethod: 'dimezisBlurView' }
79
+ : undefined;
80
+ const showHighlight = highlightHeight > 0;
81
+ const blurFill = getInsetAbsoluteFillStyle();
82
+ const tintFill = StyleSheet.absoluteFillObject;
83
+ const highlightInset = Math.max(0, StyleSheet.hairlineWidth);
84
+ if (!BlurView && Platform.OS === 'web') {
85
+ const webStyle = {
86
+ backdropFilter: `blur(${intensity}px) saturate(${saturationPct}%)`,
87
+ WebkitBackdropFilter: `blur(${intensity}px) saturate(${saturationPct}%)`,
88
+ };
89
+ return (_jsxs(_Fragment, { children: [_jsx(View, { pointerEvents: "none", style: [tintFill, webStyle, { backgroundColor: tintColor }] }), showHighlight ? (_jsx(View, { pointerEvents: "none", style: {
90
+ position: 'absolute',
91
+ top: highlightInset,
92
+ left: highlightInset,
93
+ right: highlightInset,
94
+ height: highlightHeight,
95
+ backgroundColor: highlightColor,
96
+ borderTopLeftRadius: 999,
97
+ borderTopRightRadius: 999,
98
+ } })) : null] }));
99
+ }
100
+ if (!BlurView) {
101
+ return (_jsxs(_Fragment, { children: [_jsx(View, { pointerEvents: "none", style: [tintFill, { backgroundColor: tintColor }] }), showHighlight ? (_jsx(View, { pointerEvents: "none", style: {
102
+ position: 'absolute',
103
+ top: highlightInset,
104
+ left: highlightInset,
105
+ right: highlightInset,
106
+ height: highlightHeight,
107
+ backgroundColor: highlightColor,
108
+ borderTopLeftRadius: 999,
109
+ borderTopRightRadius: 999,
110
+ } })) : null] }));
111
+ }
112
+ return (_jsxs(_Fragment, { children: [_jsx(BlurView, { pointerEvents: "none", intensity: intensity, tint: blurTint, ...blurProps, style: blurFill }), _jsx(View, { pointerEvents: "none", style: [tintFill, { backgroundColor: tintColor }] }), showHighlight ? (_jsx(View, { pointerEvents: "none", style: {
113
+ position: 'absolute',
114
+ top: highlightInset,
115
+ left: highlightInset,
116
+ right: highlightInset,
117
+ height: highlightHeight,
118
+ backgroundColor: highlightColor,
119
+ borderTopLeftRadius: 999,
120
+ borderTopRightRadius: 999,
121
+ } })) : null] }));
122
+ }
123
+ function FrostedBackdropOverlay({ intensity, tintColor, saturationPct, androidExperimentalBlurEnabled, }) {
124
+ const { theme } = useUniwind();
125
+ const BlurView = getBlurViewComponent();
126
+ const blurTint = theme === 'dark' ? 'dark' : 'light';
127
+ const blurProps = Platform.OS === 'android' && androidExperimentalBlurEnabled
128
+ ? { experimentalBlurMethod: 'dimezisBlurView' }
129
+ : undefined;
130
+ const blurFill = getInsetAbsoluteFillStyle();
131
+ const tintFill = StyleSheet.absoluteFillObject;
132
+ if (!BlurView && Platform.OS === 'web') {
133
+ const webStyle = {
134
+ backdropFilter: `blur(${intensity}px) saturate(${saturationPct}%)`,
135
+ WebkitBackdropFilter: `blur(${intensity}px) saturate(${saturationPct}%)`,
136
+ };
137
+ return (_jsx(View, { pointerEvents: "none", style: [tintFill, webStyle, { backgroundColor: tintColor }] }));
138
+ }
139
+ if (!BlurView) {
140
+ return _jsx(View, { pointerEvents: "none", style: [tintFill, { backgroundColor: tintColor }] });
141
+ }
142
+ return (_jsxs(_Fragment, { children: [_jsx(BlurView, { pointerEvents: "none", intensity: intensity, tint: blurTint, ...blurProps, style: blurFill }), _jsx(View, { pointerEvents: "none", style: [tintFill, { backgroundColor: tintColor }] })] }));
143
+ }
144
+ export function useFrostedSurface({ frosted = false, blurIntensity, blurTintToken, defaultTintToken, defaultBlurPreset = 'medium', }) {
145
+ const colors = useThemeColors();
146
+ const visualTokens = useVisualTokens();
147
+ if (!frosted) {
148
+ return {
149
+ frosted: false,
150
+ overlay: null,
151
+ surfaceStyle: undefined,
152
+ };
153
+ }
154
+ const tintToken = blurTintToken ?? defaultTintToken;
155
+ const tintColor = resolveTintColor(colors, tintToken);
156
+ const intensity = resolveBlurIntensity(visualTokens, blurIntensity, defaultBlurPreset);
157
+ const highlightColor = colors.surfaceHighlight;
158
+ const highlightHeight = visualTokens.frostedHighlightHeight;
159
+ const saturationPct = visualTokens.blurSaturationPct;
160
+ const androidExperimentalBlurEnabled = visualTokens.androidExperimentalBlurEnabled;
161
+ return {
162
+ frosted: true,
163
+ overlay: (_jsx(FrostedOverlay, { intensity: intensity, tintColor: tintColor, highlightColor: highlightColor, highlightHeight: highlightHeight, saturationPct: saturationPct, androidExperimentalBlurEnabled: androidExperimentalBlurEnabled })),
164
+ surfaceStyle: {
165
+ backgroundColor: 'transparent',
166
+ borderColor: colors.surfaceBorder,
167
+ },
168
+ };
169
+ }
170
+ export function useFrostedBackdrop({ frosted = false, blurIntensity, tintColor, }) {
171
+ const colors = useThemeColors();
172
+ const visualTokens = useVisualTokens();
173
+ if (!frosted)
174
+ return null;
175
+ const intensity = typeof blurIntensity === 'number' && Number.isFinite(blurIntensity)
176
+ ? Math.max(0, Math.round(blurIntensity))
177
+ : visualTokens.frostedBackdropBlurIntensity;
178
+ const resolvedTintColor = tintColor ?? colors.overlay;
179
+ return (_jsx(FrostedBackdropOverlay, { intensity: intensity, tintColor: resolvedTintColor, saturationPct: visualTokens.blurSaturationPct, androidExperimentalBlurEnabled: visualTokens.androidExperimentalBlurEnabled }));
180
+ }
181
+ //# sourceMappingURL=frosted-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frosted-surface.js","sourceRoot":"","sources":["../../src/lib/frosted-surface.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type PressableProps } from 'react-native';
2
+ export interface InteractionTokens {
3
+ pressOpacity: number;
4
+ pressOpacityStrong: number;
5
+ disabledOpacity: number;
6
+ disabledOpacitySoft: number;
7
+ disabledOpacitySubtle: number;
8
+ inactiveOpacity: number;
9
+ motionFast: number;
10
+ motionNormal: number;
11
+ motionSlow: number;
12
+ drawerOpenDuration: number;
13
+ drawerCloseDuration: number;
14
+ }
15
+ export type PressedVariant = 'default' | 'strong' | 'none';
16
+ export type DisabledVariant = 'default' | 'soft' | 'subtle' | 'none';
17
+ export interface InteractivePressableOptions {
18
+ disabled?: boolean;
19
+ pressedVariant?: PressedVariant;
20
+ disabledVariant?: DisabledVariant;
21
+ }
22
+ export declare function useInteractionTokens(): InteractionTokens;
23
+ type PressableStyle = PressableProps['style'];
24
+ export declare function withInteractivePressableStyle(styleProp: PressableStyle | undefined, tokens: InteractionTokens, options?: InteractivePressableOptions): PressableStyle;
25
+ export {};
26
+ //# sourceMappingURL=interaction-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-tokens.d.ts","sourceRoot":"","sources":["../../src/lib/interaction-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,cAAc,CAAC;AAatB,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAwCxD;AAED,KAAK,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AAqB9C,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,cAAc,GAAG,SAAS,EACrC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,2BAAgC,GACxC,cAAc,CAiBhB"}
@@ -0,0 +1,70 @@
1
+ import { useCSSVariable } from 'uniwind';
2
+ function parseNumber(value, fallback) {
3
+ if (value === undefined || value === null)
4
+ return fallback;
5
+ const parsed = Number.parseFloat(String(value));
6
+ return Number.isFinite(parsed) ? parsed : fallback;
7
+ }
8
+ function clampOpacity(value) {
9
+ return Math.max(0, Math.min(1, value));
10
+ }
11
+ export function useInteractionTokens() {
12
+ const [pressOpacity, pressOpacityStrong, disabledOpacity, disabledOpacitySoft, disabledOpacitySubtle, inactiveOpacity, motionFast, motionNormal, motionSlow, drawerOpenDuration, drawerCloseDuration,] = useCSSVariable([
13
+ '--ui-press-opacity',
14
+ '--ui-press-opacity-strong',
15
+ '--ui-disabled-opacity',
16
+ '--ui-disabled-opacity-soft',
17
+ '--ui-disabled-opacity-subtle',
18
+ '--ui-inactive-opacity',
19
+ '--ui-motion-fast',
20
+ '--ui-motion-normal',
21
+ '--ui-motion-slow',
22
+ '--ui-drawer-open-duration',
23
+ '--ui-drawer-close-duration',
24
+ ]);
25
+ return {
26
+ pressOpacity: clampOpacity(parseNumber(pressOpacity, 0.72)),
27
+ pressOpacityStrong: clampOpacity(parseNumber(pressOpacityStrong, 0.9)),
28
+ disabledOpacity: clampOpacity(parseNumber(disabledOpacity, 0.5)),
29
+ disabledOpacitySoft: clampOpacity(parseNumber(disabledOpacitySoft, 0.6)),
30
+ disabledOpacitySubtle: clampOpacity(parseNumber(disabledOpacitySubtle, 0.4)),
31
+ inactiveOpacity: clampOpacity(parseNumber(inactiveOpacity, 0.5)),
32
+ motionFast: Math.max(0, Math.round(parseNumber(motionFast, 160))),
33
+ motionNormal: Math.max(0, Math.round(parseNumber(motionNormal, 220))),
34
+ motionSlow: Math.max(0, Math.round(parseNumber(motionSlow, 300))),
35
+ drawerOpenDuration: Math.max(0, Math.round(parseNumber(drawerOpenDuration, 300))),
36
+ drawerCloseDuration: Math.max(0, Math.round(parseNumber(drawerCloseDuration, 220))),
37
+ };
38
+ }
39
+ function resolveDisabledOpacity(tokens, variant) {
40
+ if (variant === 'none')
41
+ return undefined;
42
+ if (variant === 'soft')
43
+ return tokens.disabledOpacitySoft;
44
+ if (variant === 'subtle')
45
+ return tokens.disabledOpacitySubtle;
46
+ return tokens.disabledOpacity;
47
+ }
48
+ function resolvePressedOpacity(tokens, variant) {
49
+ if (variant === 'none')
50
+ return undefined;
51
+ if (variant === 'strong')
52
+ return tokens.pressOpacityStrong;
53
+ return tokens.pressOpacity;
54
+ }
55
+ export function withInteractivePressableStyle(styleProp, tokens, options = {}) {
56
+ const { disabled = false, pressedVariant = 'default', disabledVariant = 'default' } = options;
57
+ return (state) => {
58
+ const baseStyle = typeof styleProp === 'function'
59
+ ? styleProp(state)
60
+ : styleProp;
61
+ const disabledOpacity = resolveDisabledOpacity(tokens, disabledVariant);
62
+ const pressedOpacity = resolvePressedOpacity(tokens, pressedVariant);
63
+ const feedbackOpacity = disabled ? disabledOpacity : state.pressed ? pressedOpacity : undefined;
64
+ return [
65
+ baseStyle,
66
+ feedbackOpacity !== undefined ? { opacity: feedbackOpacity } : null,
67
+ ];
68
+ };
69
+ }
70
+ //# sourceMappingURL=interaction-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-tokens.js","sourceRoot":"","sources":["../../src/lib/interaction-tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import 'react-native';
2
+ declare module 'react-native' {
3
+ interface ViewProps {
4
+ className?: string;
5
+ }
6
+ interface TextProps {
7
+ className?: string;
8
+ }
9
+ interface ImageProps {
10
+ className?: string;
11
+ }
12
+ interface PressableProps {
13
+ className?: string;
14
+ }
15
+ interface FlatListProps<ItemT> {
16
+ className?: string;
17
+ }
18
+ interface ScrollViewProps {
19
+ className?: string;
20
+ }
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=react-native-classname.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native-classname.d.ts","sourceRoot":"","sources":["../../src/lib/react-native-classname.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,SAAS;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IACD,UAAU,SAAS;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IACD,UAAU,UAAU;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IACD,UAAU,cAAc;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IACD,UAAU,aAAa,CAAC,KAAK;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IACD,UAAU,eAAe;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CACF;AAED,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'react-native';
2
+ //# sourceMappingURL=react-native-classname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native-classname.js","sourceRoot":"","sources":["../../src/lib/react-native-classname.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC"}
@@ -6,14 +6,40 @@ export interface ThemeColors {
6
6
  primary: string;
7
7
  primaryForeground: string;
8
8
  foreground: string;
9
+ background: string;
10
+ card: string;
11
+ cardForeground: string;
12
+ popover: string;
13
+ popoverForeground: string;
14
+ secondary: string;
15
+ secondaryForeground: string;
9
16
  muted: string;
10
17
  mutedForeground: string;
11
- /** For placeholder text (aliases mutedForeground; override via placeholderTextColor when needed) */
12
- placeholder: string;
13
- background: string;
14
18
  border: string;
19
+ input: string;
20
+ ring: string;
15
21
  accent: string;
22
+ accentForeground: string;
16
23
  destructive: string;
24
+ destructiveForeground: string;
25
+ success: string;
26
+ successForeground: string;
27
+ warning: string;
28
+ warningForeground: string;
29
+ info: string;
30
+ infoForeground: string;
31
+ overlay: string;
32
+ overlayStrong: string;
33
+ surfaceElevated: string;
34
+ surfaceTranslucent: string;
35
+ surfaceTranslucentBorder: string;
36
+ surfaceBorder: string;
37
+ surfaceHighlight: string;
38
+ stateHover: string;
39
+ statePressed: string;
40
+ stateDisabled: string;
41
+ /** For placeholder text (aliases mutedForeground; override via placeholderTextColor when needed) */
42
+ placeholder: string;
17
43
  }
18
44
  export declare function useThemeColors(): ThemeColors;
19
45
  /** Icon colors derived from theme. For @expo/vector-icons which need hex values. */
@@ -23,9 +49,12 @@ export declare function useIconColors(): {
23
49
  primary: string;
24
50
  primaryForeground: string;
25
51
  accent: string;
52
+ warning: string;
53
+ success: string;
54
+ info: string;
26
55
  destructive: string;
27
56
  };
28
- /** Alias for useThemeColors. Returns theme colors resolved to hex for RefreshControl, LinearGradient, charts. */
57
+ /** Alias for useThemeColors. Returns RN-safe color strings (hex/rgb/rgba) for RefreshControl, LinearGradient, charts. */
29
58
  export declare const useThemeTokens: typeof useThemeColors;
30
59
  /** @deprecated Use useThemeTokens or useThemeColors. */
31
60
  export declare const useResolvedThemeColors: typeof useThemeColors;
@@ -1 +1 @@
1
- {"version":3,"file":"theme-colors.d.ts","sourceRoot":"","sources":["../../src/lib/theme-colors.ts"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,oGAAoG;IACpG,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,cAAc,IAAI,WAAW,CAqC5C;AAED,oFAAoF;AACpF,wBAAgB,aAAa;;;;;;;EAU5B;AAED,iHAAiH;AACjH,eAAO,MAAM,cAAc,uBAAiB,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,uBAAiB,CAAC"}
1
+ {"version":3,"file":"theme-colors.d.ts","sourceRoot":"","sources":["../../src/lib/theme-colors.ts"],"names":[],"mappings":"AAgDA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oGAAoG;IACpG,WAAW,EAAE,MAAM,CAAC;CACrB;AAyND,wBAAgB,cAAc,IAAI,WAAW,CAkB5C;AAED,oFAAoF;AACpF,wBAAgB,aAAa;;;;;;;;;;EAa5B;AAED,yHAAyH;AACzH,eAAO,MAAM,cAAc,uBAAiB,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,uBAAiB,CAAC"}