@lmb-it/kitsconcerto-native 0.1.244 → 0.1.245

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.
@@ -14,9 +14,9 @@ var index_native = require('../../../primitives/Text/index.cjs');
14
14
  let toastIdCounter = 0;
15
15
  const LIFE = 3e3;
16
16
  const SIZE_CONFIG = {
17
- sm: { paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, minW: 200 },
18
- md: { paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, minW: 280 },
19
- lg: { paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, minW: 320 }
17
+ sm: { paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, actionSize: 12, minW: 200 },
18
+ md: { paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, actionSize: 13, minW: 280 },
19
+ lg: { paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, actionSize: 15, minW: 320 }
20
20
  };
21
21
  const KitsToast = ({ ref }) => {
22
22
  const [toasts, setToasts] = React.useState([]);
@@ -48,9 +48,20 @@ const KitsToast = ({ ref }) => {
48
48
  }
49
49
  setToasts((prev) => prev.filter((t) => t.id !== id));
50
50
  }, []);
51
- const toast = React.useCallback((severity, summary, body = "", position = "bottom-center", isUpdate = false, size = "md", onPress) => {
51
+ const toast = React.useCallback((severity, summary, body = "", position = "bottom-center", isUpdate = false, size = "md", onPress, options) => {
52
52
  const id = ++toastIdCounter;
53
- const item = { id, severity, summary, body, position, size, sticky: severity === "loading", onPress };
53
+ const item = {
54
+ id,
55
+ severity,
56
+ summary,
57
+ body,
58
+ position,
59
+ size,
60
+ sticky: severity === "loading",
61
+ onPress,
62
+ action: options?.action,
63
+ offset: options?.offset
64
+ };
54
65
  setToasts((prev) => {
55
66
  if (!isUpdate) return [...prev, item];
56
67
  const lastAtPos = [...prev].reverse().find((t) => t.position === position);
@@ -112,7 +123,10 @@ const KitsToast = ({ ref }) => {
112
123
  styles.toastWrapper,
113
124
  {
114
125
  alignItems: align,
115
- ...top ? { top: insets.top + 8 } : { bottom: insets.bottom + 8 }
126
+ // `offset` is consumer chrome KitsConcerto cannot see
127
+ // (a bottom tab bar, a sticky header). It stacks ON TOP
128
+ // of the safe-area inset; absent, the gap is unchanged.
129
+ ...top ? { top: insets.top + 8 + (item.offset ?? 0) } : { bottom: insets.bottom + 8 + (item.offset ?? 0) }
116
130
  },
117
131
  // Bottom toasts lift with the keyboard; top toasts never move.
118
132
  top ? null : keyboardOffsetStyle
@@ -149,6 +163,20 @@ const KitsToast = ({ ref }) => {
149
163
  /* @__PURE__ */ jsxRuntime.jsx(index_native.default, { style: { fontWeight: "600", fontSize: s.summarySize, color: textColor }, children: item.summary }),
150
164
  !!item.body && /* @__PURE__ */ jsxRuntime.jsx(index_native.default, { style: { fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7 }, children: item.body })
151
165
  ] }),
166
+ !!item.action && /* @__PURE__ */ jsxRuntime.jsx(
167
+ reactNative.Pressable,
168
+ {
169
+ accessibilityRole: "button",
170
+ accessibilityLabel: item.action.label,
171
+ hitSlop: 8,
172
+ onPress: () => {
173
+ item.action?.onPress();
174
+ removeToast(item.id);
175
+ },
176
+ style: [styles.action, { borderColor: accentColor }],
177
+ children: /* @__PURE__ */ jsxRuntime.jsx(index_native.default, { style: { fontSize: s.actionSize, fontWeight: "600", color: accentColor }, children: item.action.label })
178
+ }
179
+ ),
152
180
  /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: () => removeToast(item.id), hitSlop: 8, children: /* @__PURE__ */ jsxRuntime.jsx(index_native.default, { style: { fontSize: s.closeSize, fontWeight: "bold", color: textColor, opacity: 0.4 }, children: "\u2715" }) })
153
181
  ] })
154
182
  ]
@@ -185,6 +213,12 @@ const styles = reactNative.StyleSheet.create({
185
213
  shadowRadius: 6
186
214
  },
187
215
  accentBar: {},
216
+ action: {
217
+ borderWidth: 1,
218
+ borderRadius: 6,
219
+ paddingHorizontal: 10,
220
+ paddingVertical: 4
221
+ },
188
222
  pressArea: {
189
223
  flex: 1,
190
224
  flexDirection: "row"
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/components/overlay/Toast/index.native.tsx"],"sourcesContent":["import React, {\n type Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport {Platform, Pressable, StyleSheet, ActivityIndicator, View} from \"react-native\";\nimport Animated, {\n FadeInUp,\n FadeInDown,\n FadeOutUp,\n FadeOutDown,\n Layout,\n useAnimatedKeyboard,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport {useSafeAreaInsets} from \"react-native-safe-area-context\";\nimport {Text} from \"../../../_compat\";\nimport type {\n IKitsToastRef,\n IToastFunction,\n IToastParams,\n ToastPosition,\n ToastSeverity,\n ToastSize,\n} from \"@lmb-it/kitsconcerto-types\";\nimport {useKitsTheme} from \"../../../contexts/Theme\";\nimport {overlayAnimations as anim} from \"../../../animations\";\n\ninterface ToastItem {\n id: number;\n severity: ToastSeverity;\n summary: string;\n body?: string;\n position: ToastPosition;\n size: ToastSize;\n sticky?: boolean;\n onPress?: () => void;\n}\n\nlet toastIdCounter = 0;\nconst LIFE = 3000;\n\nconst SIZE_CONFIG: Record<ToastSize, { paddingV: number; paddingH: number; summarySize: number; bodySize: number; accentWidth: number; closeSize: number; minW: number }> = {\n sm: {paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, minW: 200},\n md: {paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, minW: 280},\n lg: {paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, minW: 320},\n};\n\nconst KitsToast = ({ref}: { ref?: Ref<IKitsToastRef> }) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n const {resolveToken} = useKitsTheme();\n const insets = useSafeAreaInsets();\n\n // Keyboard avoidance for BOTTOM-positioned toasts, driven on the UI thread so\n // the lift tracks the keyboard's own curve instead of snapping on a JS event.\n const keyboard = useAnimatedKeyboard();\n const keyboardOffsetStyle = useAnimatedStyle(() => {\n // Android ships `windowSoftInputMode=\"adjustResize\"`: the window (and with\n // it this absoluteFill host) is already resized to sit above the keyboard,\n // so the toast clears it for free. Adding the keyboard height here would\n // double-compensate and launch the toast into the middle of the screen.\n if (Platform.OS === \"android\") return {transform: [{translateY: 0}]};\n const h = keyboard.height.value;\n return {transform: [{translateY: h > 0 ? -(h + anim.toast.keyboardGap) : 0}]};\n });\n\n const severityColors: Record<string, string> = {\n success: resolveToken('green.500'),\n info: resolveToken('blue.500'),\n warn: resolveToken('yellow.500'),\n error: resolveToken('red.500'),\n loading: resolveToken('blue.500'),\n brand: resolveToken('primary'),\n };\n\n const surfaceColor = resolveToken('surface-card');\n const textColor = resolveToken('text');\n const borderColor = resolveToken('border');\n\n const removeToast = useCallback((id: number) => {\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n setToasts(prev => prev.filter(t => t.id !== id));\n }, []);\n\n const toast: IToastFunction = useCallback((\n severity: ToastSeverity,\n summary: string,\n body: string = \"\",\n position: ToastPosition = \"bottom-center\",\n isUpdate: boolean = false,\n size: ToastSize = \"md\",\n onPress?: () => void,\n ) => {\n const id = ++toastIdCounter;\n const item: ToastItem = {id, severity, summary, body, position, size, sticky: severity === \"loading\", onPress};\n\n // isUpdate mirrors web's toastRef.replace: swap the most recent toast\n // at this position instead of stacking a new one.\n setToasts(prev => {\n if (!isUpdate) return [...prev, item];\n const lastAtPos = [...prev].reverse().find(t => t.position === position);\n if (!lastAtPos) return [...prev, item];\n const timer = timersRef.current.get(lastAtPos.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(lastAtPos.id);\n }\n return prev.map(t => (t.id === lastAtPos.id ? item : t));\n });\n\n if (!item.sticky) {\n const timer = setTimeout(() => removeToast(id), LIFE);\n timersRef.current.set(id, timer);\n }\n }, [removeToast]) as IToastFunction;\n\n const dismiss = useCallback((position?: ToastPosition) => {\n setToasts(prev => {\n const toRemove = position ? prev.filter(t => t.position === position) : prev;\n toRemove.forEach(t => {\n const timer = timersRef.current.get(t.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(t.id);\n }\n });\n return position ? prev.filter(t => t.position !== position) : [];\n });\n }, []);\n\n const dismissAll = useCallback(() => {\n timersRef.current.forEach(t => clearTimeout(t));\n timersRef.current.clear();\n setToasts([]);\n }, []);\n\n useImperativeHandle(ref, () => ({toast, dismiss, dismissAll}));\n\n useEffect(() => {\n return () => {\n timersRef.current.forEach(t => clearTimeout(t));\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n const getAlignment = (position: ToastPosition): 'flex-start' | 'center' | 'flex-end' => {\n if (position.endsWith('-left')) return 'flex-start';\n if (position.endsWith('-right')) return 'flex-end';\n return 'center';\n };\n\n const isTop = (position: ToastPosition) => position.startsWith('top');\n\n return (\n <View style={StyleSheet.absoluteFill} pointerEvents=\"box-none\">\n {toasts.map(item => {\n const top = isTop(item.position);\n const align = getAlignment(item.position);\n // One builder owns the whole entrance: FadeInUp/FadeInDown animate\n // opacity AND translateY together, direction matched to placement\n // (top toasts drop in from above, bottom toasts rise from below).\n const entering = (top ? FadeInUp : FadeInDown)\n .springify()\n .damping(anim.toast.enter.damping)\n .stiffness(anim.toast.enter.stiffness)\n .mass(anim.toast.enter.mass ?? 1);\n const exiting = (top ? FadeOutUp : FadeOutDown).duration(anim.toast.exitDuration);\n const s = SIZE_CONFIG[item.size] ?? SIZE_CONFIG.md;\n const accentColor = severityColors[item.severity] ?? severityColors.info;\n\n return (\n <Animated.View\n key={item.id}\n style={[\n styles.toastWrapper,\n {\n alignItems: align,\n ...(top\n ? {top: insets.top + 8}\n : {bottom: insets.bottom + 8}),\n },\n // Bottom toasts lift with the keyboard; top toasts never move.\n top ? null : keyboardOffsetStyle,\n ]}\n pointerEvents=\"box-none\"\n >\n <Animated.View\n entering={entering}\n exiting={exiting}\n layout={Layout.duration(anim.toast.layoutDuration)}\n style={[\n styles.toast,\n {\n backgroundColor: surfaceColor,\n borderColor,\n minWidth: s.minW,\n },\n ]}\n >\n <Pressable\n style={styles.pressArea}\n disabled={!item.onPress}\n onPress={() => {\n item.onPress?.();\n removeToast(item.id);\n }}\n >\n <View style={[styles.accentBar, {backgroundColor: accentColor, width: s.accentWidth}]}/>\n <View style={[styles.content, {paddingVertical: s.paddingV, paddingHorizontal: s.paddingH, gap: s.paddingH * 0.7}]}>\n {item.severity === \"loading\" && (\n <ActivityIndicator size=\"small\" color={accentColor}/>\n )}\n <View style={styles.textContainer}>\n <Text style={{fontWeight: \"600\", fontSize: s.summarySize, color: textColor}}>\n {item.summary}\n </Text>\n {!!item.body && (\n <Text style={{fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7}}>\n {item.body}\n </Text>\n )}\n </View>\n <Pressable onPress={() => removeToast(item.id)} hitSlop={8}>\n <Text style={{fontSize: s.closeSize, fontWeight: \"bold\", color: textColor, opacity: 0.4}}>\n ✕\n </Text>\n </Pressable>\n </View>\n </Pressable>\n </Animated.View>\n </Animated.View>\n );\n })}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n toastWrapper: {\n position: \"absolute\",\n left: 16,\n right: 16,\n zIndex: 9999,\n },\n toast: {\n flexDirection: \"row\",\n // Fill the wrapper (already inset 16pt each side) but never exceed 560pt;\n // the wrapper's alignItems keeps -left/-center/-right placement intact.\n width: \"100%\",\n maxWidth: 560,\n borderRadius: 10,\n borderWidth: 1,\n marginBottom: 8,\n overflow: \"hidden\",\n elevation: 6,\n shadowColor: \"#000\",\n shadowOffset: {width: 0, height: 3},\n shadowOpacity: 0.15,\n shadowRadius: 6,\n },\n accentBar: {},\n pressArea: {\n flex: 1,\n flexDirection: \"row\",\n },\n content: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n textContainer: {\n flex: 1,\n },\n});\n\nexport default KitsToast;\n"],"names":["useState","useRef","useKitsTheme","useSafeAreaInsets","useAnimatedKeyboard","useAnimatedStyle","Platform","anim","useCallback","useImperativeHandle","useEffect","jsx","View","StyleSheet","FadeInUp","FadeInDown","FadeOutUp","FadeOutDown","Layout","jsxs","Pressable","ActivityIndicator","Text"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/components/overlay/Toast/index.native.tsx"],"sourcesContent":["import React, {\n type Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport {Platform, Pressable, StyleSheet, ActivityIndicator, View} from \"react-native\";\nimport Animated, {\n FadeInUp,\n FadeInDown,\n FadeOutUp,\n FadeOutDown,\n Layout,\n useAnimatedKeyboard,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport {useSafeAreaInsets} from \"react-native-safe-area-context\";\nimport {Text} from \"../../../_compat\";\nimport type {\n IKitsToastRef,\n IToastAction,\n IToastFunction,\n IToastOptions,\n IToastParams,\n ToastPosition,\n ToastSeverity,\n ToastSize,\n} from \"@lmb-it/kitsconcerto-types\";\nimport {useKitsTheme} from \"../../../contexts/Theme\";\nimport {overlayAnimations as anim} from \"../../../animations\";\n\ninterface ToastItem {\n id: number;\n severity: ToastSeverity;\n summary: string;\n body?: string;\n position: ToastPosition;\n size: ToastSize;\n sticky?: boolean;\n onPress?: () => void;\n action?: IToastAction;\n offset?: number;\n}\n\nlet toastIdCounter = 0;\nconst LIFE = 3000;\n\nconst SIZE_CONFIG: Record<ToastSize, { paddingV: number; paddingH: number; summarySize: number; bodySize: number; accentWidth: number; closeSize: number; actionSize: number; minW: number }> = {\n sm: {paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, actionSize: 12, minW: 200},\n md: {paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, actionSize: 13, minW: 280},\n lg: {paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, actionSize: 15, minW: 320},\n};\n\nconst KitsToast = ({ref}: { ref?: Ref<IKitsToastRef> }) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n const {resolveToken} = useKitsTheme();\n const insets = useSafeAreaInsets();\n\n // Keyboard avoidance for BOTTOM-positioned toasts, driven on the UI thread so\n // the lift tracks the keyboard's own curve instead of snapping on a JS event.\n const keyboard = useAnimatedKeyboard();\n const keyboardOffsetStyle = useAnimatedStyle(() => {\n // Android ships `windowSoftInputMode=\"adjustResize\"`: the window (and with\n // it this absoluteFill host) is already resized to sit above the keyboard,\n // so the toast clears it for free. Adding the keyboard height here would\n // double-compensate and launch the toast into the middle of the screen.\n if (Platform.OS === \"android\") return {transform: [{translateY: 0}]};\n const h = keyboard.height.value;\n return {transform: [{translateY: h > 0 ? -(h + anim.toast.keyboardGap) : 0}]};\n });\n\n const severityColors: Record<string, string> = {\n success: resolveToken('green.500'),\n info: resolveToken('blue.500'),\n warn: resolveToken('yellow.500'),\n error: resolveToken('red.500'),\n loading: resolveToken('blue.500'),\n brand: resolveToken('primary'),\n };\n\n const surfaceColor = resolveToken('surface-card');\n const textColor = resolveToken('text');\n const borderColor = resolveToken('border');\n\n const removeToast = useCallback((id: number) => {\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n setToasts(prev => prev.filter(t => t.id !== id));\n }, []);\n\n const toast: IToastFunction = useCallback((\n severity: ToastSeverity,\n summary: string,\n body: string = \"\",\n position: ToastPosition = \"bottom-center\",\n isUpdate: boolean = false,\n size: ToastSize = \"md\",\n onPress?: () => void,\n options?: IToastOptions,\n ) => {\n const id = ++toastIdCounter;\n const item: ToastItem = {\n id, severity, summary, body, position, size,\n sticky: severity === \"loading\",\n onPress,\n action: options?.action,\n offset: options?.offset,\n };\n\n // isUpdate mirrors web's toastRef.replace: swap the most recent toast\n // at this position instead of stacking a new one.\n setToasts(prev => {\n if (!isUpdate) return [...prev, item];\n const lastAtPos = [...prev].reverse().find(t => t.position === position);\n if (!lastAtPos) return [...prev, item];\n const timer = timersRef.current.get(lastAtPos.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(lastAtPos.id);\n }\n return prev.map(t => (t.id === lastAtPos.id ? item : t));\n });\n\n if (!item.sticky) {\n const timer = setTimeout(() => removeToast(id), LIFE);\n timersRef.current.set(id, timer);\n }\n }, [removeToast]) as IToastFunction;\n\n const dismiss = useCallback((position?: ToastPosition) => {\n setToasts(prev => {\n const toRemove = position ? prev.filter(t => t.position === position) : prev;\n toRemove.forEach(t => {\n const timer = timersRef.current.get(t.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(t.id);\n }\n });\n return position ? prev.filter(t => t.position !== position) : [];\n });\n }, []);\n\n const dismissAll = useCallback(() => {\n timersRef.current.forEach(t => clearTimeout(t));\n timersRef.current.clear();\n setToasts([]);\n }, []);\n\n useImperativeHandle(ref, () => ({toast, dismiss, dismissAll}));\n\n useEffect(() => {\n return () => {\n timersRef.current.forEach(t => clearTimeout(t));\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n const getAlignment = (position: ToastPosition): 'flex-start' | 'center' | 'flex-end' => {\n if (position.endsWith('-left')) return 'flex-start';\n if (position.endsWith('-right')) return 'flex-end';\n return 'center';\n };\n\n const isTop = (position: ToastPosition) => position.startsWith('top');\n\n return (\n <View style={StyleSheet.absoluteFill} pointerEvents=\"box-none\">\n {toasts.map(item => {\n const top = isTop(item.position);\n const align = getAlignment(item.position);\n // One builder owns the whole entrance: FadeInUp/FadeInDown animate\n // opacity AND translateY together, direction matched to placement\n // (top toasts drop in from above, bottom toasts rise from below).\n const entering = (top ? FadeInUp : FadeInDown)\n .springify()\n .damping(anim.toast.enter.damping)\n .stiffness(anim.toast.enter.stiffness)\n .mass(anim.toast.enter.mass ?? 1);\n const exiting = (top ? FadeOutUp : FadeOutDown).duration(anim.toast.exitDuration);\n const s = SIZE_CONFIG[item.size] ?? SIZE_CONFIG.md;\n const accentColor = severityColors[item.severity] ?? severityColors.info;\n\n return (\n <Animated.View\n key={item.id}\n style={[\n styles.toastWrapper,\n {\n alignItems: align,\n // `offset` is consumer chrome KitsConcerto cannot see\n // (a bottom tab bar, a sticky header). It stacks ON TOP\n // of the safe-area inset; absent, the gap is unchanged.\n ...(top\n ? {top: insets.top + 8 + (item.offset ?? 0)}\n : {bottom: insets.bottom + 8 + (item.offset ?? 0)}),\n },\n // Bottom toasts lift with the keyboard; top toasts never move.\n top ? null : keyboardOffsetStyle,\n ]}\n pointerEvents=\"box-none\"\n >\n <Animated.View\n entering={entering}\n exiting={exiting}\n layout={Layout.duration(anim.toast.layoutDuration)}\n style={[\n styles.toast,\n {\n backgroundColor: surfaceColor,\n borderColor,\n minWidth: s.minW,\n },\n ]}\n >\n <Pressable\n style={styles.pressArea}\n disabled={!item.onPress}\n onPress={() => {\n item.onPress?.();\n removeToast(item.id);\n }}\n >\n <View style={[styles.accentBar, {backgroundColor: accentColor, width: s.accentWidth}]}/>\n <View style={[styles.content, {paddingVertical: s.paddingV, paddingHorizontal: s.paddingH, gap: s.paddingH * 0.7}]}>\n {item.severity === \"loading\" && (\n <ActivityIndicator size=\"small\" color={accentColor}/>\n )}\n <View style={styles.textContainer}>\n <Text style={{fontWeight: \"600\", fontSize: s.summarySize, color: textColor}}>\n {item.summary}\n </Text>\n {!!item.body && (\n <Text style={{fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7}}>\n {item.body}\n </Text>\n )}\n </View>\n {!!item.action && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={item.action.label}\n hitSlop={8}\n // Nested Pressable: RN hands the touch to the\n // deepest responder, so the surrounding body\n // press never double-fires (same mechanism the\n // close control has always relied on).\n onPress={() => {\n item.action?.onPress();\n removeToast(item.id);\n }}\n style={[styles.action, {borderColor: accentColor}]}\n >\n <Text style={{fontSize: s.actionSize, fontWeight: \"600\", color: accentColor}}>\n {item.action.label}\n </Text>\n </Pressable>\n )}\n <Pressable onPress={() => removeToast(item.id)} hitSlop={8}>\n <Text style={{fontSize: s.closeSize, fontWeight: \"bold\", color: textColor, opacity: 0.4}}>\n ✕\n </Text>\n </Pressable>\n </View>\n </Pressable>\n </Animated.View>\n </Animated.View>\n );\n })}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n toastWrapper: {\n position: \"absolute\",\n left: 16,\n right: 16,\n zIndex: 9999,\n },\n toast: {\n flexDirection: \"row\",\n // Fill the wrapper (already inset 16pt each side) but never exceed 560pt;\n // the wrapper's alignItems keeps -left/-center/-right placement intact.\n width: \"100%\",\n maxWidth: 560,\n borderRadius: 10,\n borderWidth: 1,\n marginBottom: 8,\n overflow: \"hidden\",\n elevation: 6,\n shadowColor: \"#000\",\n shadowOffset: {width: 0, height: 3},\n shadowOpacity: 0.15,\n shadowRadius: 6,\n },\n accentBar: {},\n action: {\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 10,\n paddingVertical: 4,\n },\n pressArea: {\n flex: 1,\n flexDirection: \"row\",\n },\n content: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n textContainer: {\n flex: 1,\n },\n});\n\nexport default KitsToast;\n"],"names":["useState","useRef","useKitsTheme","useSafeAreaInsets","useAnimatedKeyboard","useAnimatedStyle","Platform","anim","useCallback","useImperativeHandle","useEffect","jsx","View","StyleSheet","FadeInUp","FadeInDown","FadeOutUp","FadeOutDown","Layout","jsxs","Pressable","ActivityIndicator","Text"],"mappings":"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"}
@@ -10,9 +10,9 @@ import Text from '../../../primitives/Text/index.js';
10
10
  let toastIdCounter = 0;
11
11
  const LIFE = 3e3;
12
12
  const SIZE_CONFIG = {
13
- sm: { paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, minW: 200 },
14
- md: { paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, minW: 280 },
15
- lg: { paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, minW: 320 }
13
+ sm: { paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, actionSize: 12, minW: 200 },
14
+ md: { paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, actionSize: 13, minW: 280 },
15
+ lg: { paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, actionSize: 15, minW: 320 }
16
16
  };
17
17
  const KitsToast = ({ ref }) => {
18
18
  const [toasts, setToasts] = useState([]);
@@ -44,9 +44,20 @@ const KitsToast = ({ ref }) => {
44
44
  }
45
45
  setToasts((prev) => prev.filter((t) => t.id !== id));
46
46
  }, []);
47
- const toast = useCallback((severity, summary, body = "", position = "bottom-center", isUpdate = false, size = "md", onPress) => {
47
+ const toast = useCallback((severity, summary, body = "", position = "bottom-center", isUpdate = false, size = "md", onPress, options) => {
48
48
  const id = ++toastIdCounter;
49
- const item = { id, severity, summary, body, position, size, sticky: severity === "loading", onPress };
49
+ const item = {
50
+ id,
51
+ severity,
52
+ summary,
53
+ body,
54
+ position,
55
+ size,
56
+ sticky: severity === "loading",
57
+ onPress,
58
+ action: options?.action,
59
+ offset: options?.offset
60
+ };
50
61
  setToasts((prev) => {
51
62
  if (!isUpdate) return [...prev, item];
52
63
  const lastAtPos = [...prev].reverse().find((t) => t.position === position);
@@ -108,7 +119,10 @@ const KitsToast = ({ ref }) => {
108
119
  styles.toastWrapper,
109
120
  {
110
121
  alignItems: align,
111
- ...top ? { top: insets.top + 8 } : { bottom: insets.bottom + 8 }
122
+ // `offset` is consumer chrome KitsConcerto cannot see
123
+ // (a bottom tab bar, a sticky header). It stacks ON TOP
124
+ // of the safe-area inset; absent, the gap is unchanged.
125
+ ...top ? { top: insets.top + 8 + (item.offset ?? 0) } : { bottom: insets.bottom + 8 + (item.offset ?? 0) }
112
126
  },
113
127
  // Bottom toasts lift with the keyboard; top toasts never move.
114
128
  top ? null : keyboardOffsetStyle
@@ -145,6 +159,20 @@ const KitsToast = ({ ref }) => {
145
159
  /* @__PURE__ */ jsx(Text, { style: { fontWeight: "600", fontSize: s.summarySize, color: textColor }, children: item.summary }),
146
160
  !!item.body && /* @__PURE__ */ jsx(Text, { style: { fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7 }, children: item.body })
147
161
  ] }),
162
+ !!item.action && /* @__PURE__ */ jsx(
163
+ Pressable,
164
+ {
165
+ accessibilityRole: "button",
166
+ accessibilityLabel: item.action.label,
167
+ hitSlop: 8,
168
+ onPress: () => {
169
+ item.action?.onPress();
170
+ removeToast(item.id);
171
+ },
172
+ style: [styles.action, { borderColor: accentColor }],
173
+ children: /* @__PURE__ */ jsx(Text, { style: { fontSize: s.actionSize, fontWeight: "600", color: accentColor }, children: item.action.label })
174
+ }
175
+ ),
148
176
  /* @__PURE__ */ jsx(Pressable, { onPress: () => removeToast(item.id), hitSlop: 8, children: /* @__PURE__ */ jsx(Text, { style: { fontSize: s.closeSize, fontWeight: "bold", color: textColor, opacity: 0.4 }, children: "\u2715" }) })
149
177
  ] })
150
178
  ]
@@ -181,6 +209,12 @@ const styles = StyleSheet.create({
181
209
  shadowRadius: 6
182
210
  },
183
211
  accentBar: {},
212
+ action: {
213
+ borderWidth: 1,
214
+ borderRadius: 6,
215
+ paddingHorizontal: 10,
216
+ paddingVertical: 4
217
+ },
184
218
  pressArea: {
185
219
  flex: 1,
186
220
  flexDirection: "row"
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/overlay/Toast/index.native.tsx"],"sourcesContent":["import React, {\n type Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport {Platform, Pressable, StyleSheet, ActivityIndicator, View} from \"react-native\";\nimport Animated, {\n FadeInUp,\n FadeInDown,\n FadeOutUp,\n FadeOutDown,\n Layout,\n useAnimatedKeyboard,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport {useSafeAreaInsets} from \"react-native-safe-area-context\";\nimport {Text} from \"../../../_compat\";\nimport type {\n IKitsToastRef,\n IToastFunction,\n IToastParams,\n ToastPosition,\n ToastSeverity,\n ToastSize,\n} from \"@lmb-it/kitsconcerto-types\";\nimport {useKitsTheme} from \"../../../contexts/Theme\";\nimport {overlayAnimations as anim} from \"../../../animations\";\n\ninterface ToastItem {\n id: number;\n severity: ToastSeverity;\n summary: string;\n body?: string;\n position: ToastPosition;\n size: ToastSize;\n sticky?: boolean;\n onPress?: () => void;\n}\n\nlet toastIdCounter = 0;\nconst LIFE = 3000;\n\nconst SIZE_CONFIG: Record<ToastSize, { paddingV: number; paddingH: number; summarySize: number; bodySize: number; accentWidth: number; closeSize: number; minW: number }> = {\n sm: {paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, minW: 200},\n md: {paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, minW: 280},\n lg: {paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, minW: 320},\n};\n\nconst KitsToast = ({ref}: { ref?: Ref<IKitsToastRef> }) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n const {resolveToken} = useKitsTheme();\n const insets = useSafeAreaInsets();\n\n // Keyboard avoidance for BOTTOM-positioned toasts, driven on the UI thread so\n // the lift tracks the keyboard's own curve instead of snapping on a JS event.\n const keyboard = useAnimatedKeyboard();\n const keyboardOffsetStyle = useAnimatedStyle(() => {\n // Android ships `windowSoftInputMode=\"adjustResize\"`: the window (and with\n // it this absoluteFill host) is already resized to sit above the keyboard,\n // so the toast clears it for free. Adding the keyboard height here would\n // double-compensate and launch the toast into the middle of the screen.\n if (Platform.OS === \"android\") return {transform: [{translateY: 0}]};\n const h = keyboard.height.value;\n return {transform: [{translateY: h > 0 ? -(h + anim.toast.keyboardGap) : 0}]};\n });\n\n const severityColors: Record<string, string> = {\n success: resolveToken('green.500'),\n info: resolveToken('blue.500'),\n warn: resolveToken('yellow.500'),\n error: resolveToken('red.500'),\n loading: resolveToken('blue.500'),\n brand: resolveToken('primary'),\n };\n\n const surfaceColor = resolveToken('surface-card');\n const textColor = resolveToken('text');\n const borderColor = resolveToken('border');\n\n const removeToast = useCallback((id: number) => {\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n setToasts(prev => prev.filter(t => t.id !== id));\n }, []);\n\n const toast: IToastFunction = useCallback((\n severity: ToastSeverity,\n summary: string,\n body: string = \"\",\n position: ToastPosition = \"bottom-center\",\n isUpdate: boolean = false,\n size: ToastSize = \"md\",\n onPress?: () => void,\n ) => {\n const id = ++toastIdCounter;\n const item: ToastItem = {id, severity, summary, body, position, size, sticky: severity === \"loading\", onPress};\n\n // isUpdate mirrors web's toastRef.replace: swap the most recent toast\n // at this position instead of stacking a new one.\n setToasts(prev => {\n if (!isUpdate) return [...prev, item];\n const lastAtPos = [...prev].reverse().find(t => t.position === position);\n if (!lastAtPos) return [...prev, item];\n const timer = timersRef.current.get(lastAtPos.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(lastAtPos.id);\n }\n return prev.map(t => (t.id === lastAtPos.id ? item : t));\n });\n\n if (!item.sticky) {\n const timer = setTimeout(() => removeToast(id), LIFE);\n timersRef.current.set(id, timer);\n }\n }, [removeToast]) as IToastFunction;\n\n const dismiss = useCallback((position?: ToastPosition) => {\n setToasts(prev => {\n const toRemove = position ? prev.filter(t => t.position === position) : prev;\n toRemove.forEach(t => {\n const timer = timersRef.current.get(t.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(t.id);\n }\n });\n return position ? prev.filter(t => t.position !== position) : [];\n });\n }, []);\n\n const dismissAll = useCallback(() => {\n timersRef.current.forEach(t => clearTimeout(t));\n timersRef.current.clear();\n setToasts([]);\n }, []);\n\n useImperativeHandle(ref, () => ({toast, dismiss, dismissAll}));\n\n useEffect(() => {\n return () => {\n timersRef.current.forEach(t => clearTimeout(t));\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n const getAlignment = (position: ToastPosition): 'flex-start' | 'center' | 'flex-end' => {\n if (position.endsWith('-left')) return 'flex-start';\n if (position.endsWith('-right')) return 'flex-end';\n return 'center';\n };\n\n const isTop = (position: ToastPosition) => position.startsWith('top');\n\n return (\n <View style={StyleSheet.absoluteFill} pointerEvents=\"box-none\">\n {toasts.map(item => {\n const top = isTop(item.position);\n const align = getAlignment(item.position);\n // One builder owns the whole entrance: FadeInUp/FadeInDown animate\n // opacity AND translateY together, direction matched to placement\n // (top toasts drop in from above, bottom toasts rise from below).\n const entering = (top ? FadeInUp : FadeInDown)\n .springify()\n .damping(anim.toast.enter.damping)\n .stiffness(anim.toast.enter.stiffness)\n .mass(anim.toast.enter.mass ?? 1);\n const exiting = (top ? FadeOutUp : FadeOutDown).duration(anim.toast.exitDuration);\n const s = SIZE_CONFIG[item.size] ?? SIZE_CONFIG.md;\n const accentColor = severityColors[item.severity] ?? severityColors.info;\n\n return (\n <Animated.View\n key={item.id}\n style={[\n styles.toastWrapper,\n {\n alignItems: align,\n ...(top\n ? {top: insets.top + 8}\n : {bottom: insets.bottom + 8}),\n },\n // Bottom toasts lift with the keyboard; top toasts never move.\n top ? null : keyboardOffsetStyle,\n ]}\n pointerEvents=\"box-none\"\n >\n <Animated.View\n entering={entering}\n exiting={exiting}\n layout={Layout.duration(anim.toast.layoutDuration)}\n style={[\n styles.toast,\n {\n backgroundColor: surfaceColor,\n borderColor,\n minWidth: s.minW,\n },\n ]}\n >\n <Pressable\n style={styles.pressArea}\n disabled={!item.onPress}\n onPress={() => {\n item.onPress?.();\n removeToast(item.id);\n }}\n >\n <View style={[styles.accentBar, {backgroundColor: accentColor, width: s.accentWidth}]}/>\n <View style={[styles.content, {paddingVertical: s.paddingV, paddingHorizontal: s.paddingH, gap: s.paddingH * 0.7}]}>\n {item.severity === \"loading\" && (\n <ActivityIndicator size=\"small\" color={accentColor}/>\n )}\n <View style={styles.textContainer}>\n <Text style={{fontWeight: \"600\", fontSize: s.summarySize, color: textColor}}>\n {item.summary}\n </Text>\n {!!item.body && (\n <Text style={{fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7}}>\n {item.body}\n </Text>\n )}\n </View>\n <Pressable onPress={() => removeToast(item.id)} hitSlop={8}>\n <Text style={{fontSize: s.closeSize, fontWeight: \"bold\", color: textColor, opacity: 0.4}}>\n ✕\n </Text>\n </Pressable>\n </View>\n </Pressable>\n </Animated.View>\n </Animated.View>\n );\n })}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n toastWrapper: {\n position: \"absolute\",\n left: 16,\n right: 16,\n zIndex: 9999,\n },\n toast: {\n flexDirection: \"row\",\n // Fill the wrapper (already inset 16pt each side) but never exceed 560pt;\n // the wrapper's alignItems keeps -left/-center/-right placement intact.\n width: \"100%\",\n maxWidth: 560,\n borderRadius: 10,\n borderWidth: 1,\n marginBottom: 8,\n overflow: \"hidden\",\n elevation: 6,\n shadowColor: \"#000\",\n shadowOffset: {width: 0, height: 3},\n shadowOpacity: 0.15,\n shadowRadius: 6,\n },\n accentBar: {},\n pressArea: {\n flex: 1,\n flexDirection: \"row\",\n },\n content: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n textContainer: {\n flex: 1,\n },\n});\n\nexport default KitsToast;\n"],"names":["anim"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/overlay/Toast/index.native.tsx"],"sourcesContent":["import React, {\n type Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport {Platform, Pressable, StyleSheet, ActivityIndicator, View} from \"react-native\";\nimport Animated, {\n FadeInUp,\n FadeInDown,\n FadeOutUp,\n FadeOutDown,\n Layout,\n useAnimatedKeyboard,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport {useSafeAreaInsets} from \"react-native-safe-area-context\";\nimport {Text} from \"../../../_compat\";\nimport type {\n IKitsToastRef,\n IToastAction,\n IToastFunction,\n IToastOptions,\n IToastParams,\n ToastPosition,\n ToastSeverity,\n ToastSize,\n} from \"@lmb-it/kitsconcerto-types\";\nimport {useKitsTheme} from \"../../../contexts/Theme\";\nimport {overlayAnimations as anim} from \"../../../animations\";\n\ninterface ToastItem {\n id: number;\n severity: ToastSeverity;\n summary: string;\n body?: string;\n position: ToastPosition;\n size: ToastSize;\n sticky?: boolean;\n onPress?: () => void;\n action?: IToastAction;\n offset?: number;\n}\n\nlet toastIdCounter = 0;\nconst LIFE = 3000;\n\nconst SIZE_CONFIG: Record<ToastSize, { paddingV: number; paddingH: number; summarySize: number; bodySize: number; accentWidth: number; closeSize: number; actionSize: number; minW: number }> = {\n sm: {paddingV: 8, paddingH: 10, summarySize: 12, bodySize: 10, accentWidth: 3, closeSize: 14, actionSize: 12, minW: 200},\n md: {paddingV: 12, paddingH: 14, summarySize: 14, bodySize: 12, accentWidth: 4, closeSize: 16, actionSize: 13, minW: 280},\n lg: {paddingV: 16, paddingH: 18, summarySize: 16, bodySize: 14, accentWidth: 5, closeSize: 18, actionSize: 15, minW: 320},\n};\n\nconst KitsToast = ({ref}: { ref?: Ref<IKitsToastRef> }) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n const {resolveToken} = useKitsTheme();\n const insets = useSafeAreaInsets();\n\n // Keyboard avoidance for BOTTOM-positioned toasts, driven on the UI thread so\n // the lift tracks the keyboard's own curve instead of snapping on a JS event.\n const keyboard = useAnimatedKeyboard();\n const keyboardOffsetStyle = useAnimatedStyle(() => {\n // Android ships `windowSoftInputMode=\"adjustResize\"`: the window (and with\n // it this absoluteFill host) is already resized to sit above the keyboard,\n // so the toast clears it for free. Adding the keyboard height here would\n // double-compensate and launch the toast into the middle of the screen.\n if (Platform.OS === \"android\") return {transform: [{translateY: 0}]};\n const h = keyboard.height.value;\n return {transform: [{translateY: h > 0 ? -(h + anim.toast.keyboardGap) : 0}]};\n });\n\n const severityColors: Record<string, string> = {\n success: resolveToken('green.500'),\n info: resolveToken('blue.500'),\n warn: resolveToken('yellow.500'),\n error: resolveToken('red.500'),\n loading: resolveToken('blue.500'),\n brand: resolveToken('primary'),\n };\n\n const surfaceColor = resolveToken('surface-card');\n const textColor = resolveToken('text');\n const borderColor = resolveToken('border');\n\n const removeToast = useCallback((id: number) => {\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n setToasts(prev => prev.filter(t => t.id !== id));\n }, []);\n\n const toast: IToastFunction = useCallback((\n severity: ToastSeverity,\n summary: string,\n body: string = \"\",\n position: ToastPosition = \"bottom-center\",\n isUpdate: boolean = false,\n size: ToastSize = \"md\",\n onPress?: () => void,\n options?: IToastOptions,\n ) => {\n const id = ++toastIdCounter;\n const item: ToastItem = {\n id, severity, summary, body, position, size,\n sticky: severity === \"loading\",\n onPress,\n action: options?.action,\n offset: options?.offset,\n };\n\n // isUpdate mirrors web's toastRef.replace: swap the most recent toast\n // at this position instead of stacking a new one.\n setToasts(prev => {\n if (!isUpdate) return [...prev, item];\n const lastAtPos = [...prev].reverse().find(t => t.position === position);\n if (!lastAtPos) return [...prev, item];\n const timer = timersRef.current.get(lastAtPos.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(lastAtPos.id);\n }\n return prev.map(t => (t.id === lastAtPos.id ? item : t));\n });\n\n if (!item.sticky) {\n const timer = setTimeout(() => removeToast(id), LIFE);\n timersRef.current.set(id, timer);\n }\n }, [removeToast]) as IToastFunction;\n\n const dismiss = useCallback((position?: ToastPosition) => {\n setToasts(prev => {\n const toRemove = position ? prev.filter(t => t.position === position) : prev;\n toRemove.forEach(t => {\n const timer = timersRef.current.get(t.id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(t.id);\n }\n });\n return position ? prev.filter(t => t.position !== position) : [];\n });\n }, []);\n\n const dismissAll = useCallback(() => {\n timersRef.current.forEach(t => clearTimeout(t));\n timersRef.current.clear();\n setToasts([]);\n }, []);\n\n useImperativeHandle(ref, () => ({toast, dismiss, dismissAll}));\n\n useEffect(() => {\n return () => {\n timersRef.current.forEach(t => clearTimeout(t));\n };\n }, []);\n\n if (toasts.length === 0) return null;\n\n const getAlignment = (position: ToastPosition): 'flex-start' | 'center' | 'flex-end' => {\n if (position.endsWith('-left')) return 'flex-start';\n if (position.endsWith('-right')) return 'flex-end';\n return 'center';\n };\n\n const isTop = (position: ToastPosition) => position.startsWith('top');\n\n return (\n <View style={StyleSheet.absoluteFill} pointerEvents=\"box-none\">\n {toasts.map(item => {\n const top = isTop(item.position);\n const align = getAlignment(item.position);\n // One builder owns the whole entrance: FadeInUp/FadeInDown animate\n // opacity AND translateY together, direction matched to placement\n // (top toasts drop in from above, bottom toasts rise from below).\n const entering = (top ? FadeInUp : FadeInDown)\n .springify()\n .damping(anim.toast.enter.damping)\n .stiffness(anim.toast.enter.stiffness)\n .mass(anim.toast.enter.mass ?? 1);\n const exiting = (top ? FadeOutUp : FadeOutDown).duration(anim.toast.exitDuration);\n const s = SIZE_CONFIG[item.size] ?? SIZE_CONFIG.md;\n const accentColor = severityColors[item.severity] ?? severityColors.info;\n\n return (\n <Animated.View\n key={item.id}\n style={[\n styles.toastWrapper,\n {\n alignItems: align,\n // `offset` is consumer chrome KitsConcerto cannot see\n // (a bottom tab bar, a sticky header). It stacks ON TOP\n // of the safe-area inset; absent, the gap is unchanged.\n ...(top\n ? {top: insets.top + 8 + (item.offset ?? 0)}\n : {bottom: insets.bottom + 8 + (item.offset ?? 0)}),\n },\n // Bottom toasts lift with the keyboard; top toasts never move.\n top ? null : keyboardOffsetStyle,\n ]}\n pointerEvents=\"box-none\"\n >\n <Animated.View\n entering={entering}\n exiting={exiting}\n layout={Layout.duration(anim.toast.layoutDuration)}\n style={[\n styles.toast,\n {\n backgroundColor: surfaceColor,\n borderColor,\n minWidth: s.minW,\n },\n ]}\n >\n <Pressable\n style={styles.pressArea}\n disabled={!item.onPress}\n onPress={() => {\n item.onPress?.();\n removeToast(item.id);\n }}\n >\n <View style={[styles.accentBar, {backgroundColor: accentColor, width: s.accentWidth}]}/>\n <View style={[styles.content, {paddingVertical: s.paddingV, paddingHorizontal: s.paddingH, gap: s.paddingH * 0.7}]}>\n {item.severity === \"loading\" && (\n <ActivityIndicator size=\"small\" color={accentColor}/>\n )}\n <View style={styles.textContainer}>\n <Text style={{fontWeight: \"600\", fontSize: s.summarySize, color: textColor}}>\n {item.summary}\n </Text>\n {!!item.body && (\n <Text style={{fontSize: s.bodySize, marginTop: 2, color: textColor, opacity: 0.7}}>\n {item.body}\n </Text>\n )}\n </View>\n {!!item.action && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={item.action.label}\n hitSlop={8}\n // Nested Pressable: RN hands the touch to the\n // deepest responder, so the surrounding body\n // press never double-fires (same mechanism the\n // close control has always relied on).\n onPress={() => {\n item.action?.onPress();\n removeToast(item.id);\n }}\n style={[styles.action, {borderColor: accentColor}]}\n >\n <Text style={{fontSize: s.actionSize, fontWeight: \"600\", color: accentColor}}>\n {item.action.label}\n </Text>\n </Pressable>\n )}\n <Pressable onPress={() => removeToast(item.id)} hitSlop={8}>\n <Text style={{fontSize: s.closeSize, fontWeight: \"bold\", color: textColor, opacity: 0.4}}>\n ✕\n </Text>\n </Pressable>\n </View>\n </Pressable>\n </Animated.View>\n </Animated.View>\n );\n })}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n toastWrapper: {\n position: \"absolute\",\n left: 16,\n right: 16,\n zIndex: 9999,\n },\n toast: {\n flexDirection: \"row\",\n // Fill the wrapper (already inset 16pt each side) but never exceed 560pt;\n // the wrapper's alignItems keeps -left/-center/-right placement intact.\n width: \"100%\",\n maxWidth: 560,\n borderRadius: 10,\n borderWidth: 1,\n marginBottom: 8,\n overflow: \"hidden\",\n elevation: 6,\n shadowColor: \"#000\",\n shadowOffset: {width: 0, height: 3},\n shadowOpacity: 0.15,\n shadowRadius: 6,\n },\n accentBar: {},\n action: {\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 10,\n paddingVertical: 4,\n },\n pressArea: {\n flex: 1,\n flexDirection: \"row\",\n },\n content: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n textContainer: {\n flex: 1,\n },\n});\n\nexport default KitsToast;\n"],"names":["anim"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -7058,6 +7058,31 @@ export interface IKitsDialogControlled {
7058
7058
  export type ToastPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right" | "top-center" | "bottom-center";
7059
7059
  export type ToastSeverity = "success" | "info" | "warn" | "error" | "loading" | "brand";
7060
7060
  export type ToastSize = "sm" | "md" | "lg";
7061
+ /**
7062
+ * A single actionable affordance rendered beside the toast's close control.
7063
+ * `onPress` runs first, then the toast dismisses itself — same contract as
7064
+ * the whole-toast `onPress`, so an action toast never lingers after it has
7065
+ * been acted on.
7066
+ */
7067
+ export interface IToastAction {
7068
+ label: string;
7069
+ onPress: () => void;
7070
+ }
7071
+ /**
7072
+ * Trailing options bag. Every future toast capability lands in here rather
7073
+ * than as another positional slot — the tuple stops growing at 8.
7074
+ */
7075
+ export interface IToastOptions {
7076
+ /** Renders a labelled button beside the close control. */
7077
+ action?: IToastAction;
7078
+ /**
7079
+ * Extra distance in px/pt between the toast and the edge it is anchored
7080
+ * to, ON TOP of the safe-area inset already applied. KitsConcerto knows
7081
+ * nothing about the consumer's chrome, so a consumer with a bottom tab
7082
+ * bar (or a sticky header) passes its height here to clear it.
7083
+ */
7084
+ offset?: number;
7085
+ }
7061
7086
  export type IToastParams = [
7062
7087
  severity: ToastSeverity,
7063
7088
  summary: string,
@@ -7065,7 +7090,8 @@ export type IToastParams = [
7065
7090
  position?: ToastPosition,
7066
7091
  isUpdate?: boolean,
7067
7092
  size?: ToastSize,
7068
- onPress?: () => void
7093
+ onPress?: () => void,
7094
+ options?: IToastOptions
7069
7095
  ];
7070
7096
  export type IToastFunction = (...args: IToastParams) => void;
7071
7097
  export interface IKitsToastRef {
@@ -13975,4 +14001,4 @@ declare const localeFiles: {
13975
14001
  };
13976
14002
 
13977
14003
  export { ALPHA_COLOR_VARS, ALPHA_STEPS, ALPHA_TOKEN_NAMES, CustomAccordion as Accordion, Alert, AlertDescription, AlertIcon, AlertTitle, KitsAnimatePresence as AnimatePresence, AnyFile, Avatar, AvatarStack, Badge, Banner, BottomTabBar, Box, BreadCrumb, Button, Card, Carousel, Center, ChatBubble, Chip, CircularProgress, Collapse, CommandPalette, Container, CustomPopover, DEFAULT_NATIVE_SHADOWS, DataView, DataViewContext, DateSeparator, DetailList as DetailsList, Divider, EDateFormat, EKeyFilter, Editable, EmptyState, FIELD_LABEL_MARGIN, FIELD_MARGIN, Flex, Form, FormSelect, GUTTER, Gallery, Form as GoForm, Datatable as GoTable, KitsGrid as Grid, KitsGridItem as GridItem, HELPER_TEXT_MARGIN, HStack, Heading, Icon, IconMap, Image, KitsInputSwitch as InputSwitch, KeyboardNavContext, KitsAutoComplete, KitsCascadeSelect, KitsCheckbox as KitsCheckboxes, KitsConfirm, KitsConfirmPopup, KitsContainer, KitsInputCalendar as KitsDatepicker, KitsDialogControlled as KitsDialog, KitsDropdown, FilePicker as KitsFilePicker, KitsInputColorPicker, KitsInputLocation, KitsInputMask, KitsInputNumber, KitsInputPassword, KitsInputText, KitsInputTextarea, KitsListBox, KitsMultiSelect, KitsPhoneComponent, KitsRadio as KitsRadios, RadiusPicker as KitsRadiusPicker, KitsSliders, KitsThemeProvider, KitsToast, KitsTreeSelect, Label, Link, List, ListItem, Loader, LocaleContext, LocaleContextProvider, MainContext, MainContextProvider, MessageComposer, MessageReceipt, KitsMultiSelect as MultiSelect, PersonCard, ProgressBar, RadiusPicker, SHADOW_PRESET_KEYS, SPACER, KitsScrollView as ScrollView, SegmentedControl, FormSelect as Select, SelectButton, Skeleton$1 as Skeleton, SkeletonRows, Skeleton as SkeletonText, StatCard, StatGroup, StatePill, Stepper, Svg, TableContext, Tabs, Text, ThemeContextProvider, Timeline, Tooltip, Translate, KitsTreeSelect as TreeSelect, TreeView, TriStateCheckbox, TypingIndicator, VStack, borderProperties, breakpoints, capitalizeFirstLetter, checkExtAgainstAccepted, checkNameDuplication, dateTimeFormat, deepMerge, defaultSeverityTheme, defaultTheme, downloadCanvas, dynamicList, expandShadowNative, extendTheme, fileTypeIcon, fileValidation, filesExt, filesMemes, filesTypes, flattenSlotStyles, fontSizeMapping, formFileValidation, getActiveNativeShadows, getCombinedChildIds, getCustomDateTime, getDateElements, getDefaultValues, getMeme, getParams, getPropertyByPath, getType, getTypes, getURLParams, imagesExt, imagesMemes, imagesTypes, isAlphaToken, isNumber, isSemanticToken, isShadowPreset, isThemeToken, isToday, isValidURL, listingProperties, localeFiles, allProperties as mapCssProperties, mergeRefs, nonPxProperties, propertiesWithoutCssEquivalent, pxProperties, resolveStyleRecord, resolveTokenValue, schemaBuilder, setActiveNativeShadows, shadowNative, shadowWeb, sizeMapping, sizingProperties, timeAgo, timeSince, toMemes, useAllSeverityColors, useComponentDefaults, useDataView, useDialog, useDisclosure, useFieldLogic, useFocusStyles, useFormFieldKeyboardNav, useFormManager, useKeyboardNav, useKeyboardNavProvider, useKitsColorScheme, useKitsConcerto, useKitsTheme, useLanguage, useNativeColorMap, usePopup, useResolvedElementStyles, useResolvedStyle, useRtlLineHeight, useScrollState, useSelectionController, useSeverityColors, useTable, useTheme, useThemedFont, useToast };
13978
- export type { AlignmentsValues, AllSlotKeys, AnimationsValues, AvatarShape, AvatarSize, AvatarStatus, BannerAction, BannerStatus, BaseFieldProps, Booleanish, Breakpoint, CallbackProps, ChatBubbleTone, ChatBubbleVariant, ChipSeverity, ChipSize, ColorMode, ColorScale, ColorValue, Colors, ColorsType, ComponentSize, CustomSubmitButtonProps, DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSelectionSingleChangeEvent, DataTableSortMeta, DeepPartial, DetailItemInputType, DynamicValue, ElementProps, EnteringAnimation, ExitingAnimation, ExpandedKeys, FetchError, FetchSuccess, FetchTableDataRes, FetchTablePaginationData, FieldWrapperProps, File$1 as File, FileUploaderTemplate, FileUploaderTemplateParams, FlexAlignmentsValues, FlexValues, FormBooleanEvent, FormBooleanTarget, FormEvent, FormTarget, GroupFieldConfigs, HighSizingValue, IAccordionElementSlots, IAccordionProps, IAddressComponentValue, IAddressExperianFormat, IAddressFormat, IAddressFormatResults, IAddressSearchResults, IAlertComponent, IAlertProps, IAlignment, IAnimation, IAutoCompleteCore, IAutoCompleteElement, IAvatarElementSlots, IAvatarProps, IAvatarStackElementSlots, IAvatarStackProps, IBadgeProps, IBannerProps, IBarChartProps, IBaseValidation, IBasicSectionProps, IBg, IBodyTemplate, IBorder, IBottomTabBarElementSlots, IBottomTabBarProps, IBoxComponent, IBuilderAddressField, IBuilderCheckboxField, IBuilderContainerField, IBuilderDateField, IBuilderField, IBuilderFieldBase, IBuilderFieldExport, IBuilderFileField, IBuilderGroupField, IBuilderMultiselectField, IBuilderNumberField, IBuilderPhoneField, IBuilderRadiosField, IBuilderRadiusPickerField, IBuilderSectionField, IBuilderSelectField, IBuilderSwitchField, IBuilderTagsField, IBuilderTextField, IBuilderTextareaField, IButton, IButtonElementSlots, IButtonParams, IButtonProps, IButtonState, IButtonsFilter, ICanvasProps, ICardComponent, ICardElementSlots, ICarouselElementSlots, ICarouselProps, ICascadeSelect, ICascadeSelectCore, IChatBubbleElementSlots, IChatBubbleProps, ICheckbox, ICheckboxFilter, ICheckboxSlots, IChildren, IChildrenParams, IChipProps, ICircularProgressProps, ICollapseProps, IColorPicker, IColumn, IColumnBase, ICombined, ICommandPaletteGroup, ICommandPaletteItem, ICommandPaletteProps, IComponentThemeConfig, IConditionGroupProps, IConditionRowProps, IConditionRule, IConditionsSectionProps, IConfirmDialogProps, IConfirmPopupProps, IContainer, IContainerCardProps, IContainerProps, IContextValues, ICountrySearchResults, ICssStyling, IDVButtonsFilter, IDVCheckboxFilter, IDVDateFilter, IDVDropdownFilter, IDVFilters, IDVMessages, IDVMultiselectFilter, IDVNumberFilter, IDVPaginationRequest, IDVPaginationResponse, IDVPaginationState, IDVPhoneFilter, IDVRangeFilter, IDVTextFilter, IDVTriStateFilter, IDataTableContextValues, IDataTableProps, IDataViewContextValues, IDataViewProps, IDataViewRefValues, IDatatableRefValues, IDate, IDateFilter, IDateProps, IDateSeparatorElementSlots, IDateSeparatorProps, IDateValidation, IDatepickerSlots, IDetailItem, IDetailListProps, IDialogButton, IDialogProps, IDialogRef, IDialogState, IDisplay, IDividerComponent, IDoughnutChartProps, IDropdownCore, IDropdownFilter, IDropdownSelect, IEditableProps, IEditors, IEffects, IElementBase, IElementSlotConfig, IElementStyle, IEmail, IEmailSearchResults, IEmptyStateElementSlots, IEmptyStateProps, IFieldCardProps, IFieldCondition, IFieldPreviewProps, IFile, IFileUploader, IFileUploaderElement, IFileUploaderTypes, IFileValidation, IFilesExtTypeKeys, IFilters, IFlexAlignment, IFlexComponent, IFormAddon, IFormBuilderInternalState, IFormBuilderMeta, IFormBuilderPayload, IFormBuilderProps, IFormComponent, IFormElement, IFormElementBaseSlots, IFormElementSlots, IFormGrid, IFormListsElements, IFormSelect, IFormSelectElements, IFormSingleElement, IGalleryElementSlots, IGalleryItem, IGalleryProps, IGrid, IGridComponent, IGridItem, IGridItemComponent, IGroup, IGroupCardProps, IGroupElementSlots, IGroupSettings, IHeaderElementSlots, IHeadingComponent, IIconProps, IImageComponent, IImagesExtTypeKeys, IInteractivity, IKeyedColumn, IKitsAnimation, IKitsCheckboxProps, IKitsComponentDefaults, IKitsContainer, IKitsDialogControlled, IKitsInputCalendar, IKitsInputColorPicker, IKitsInputLocation, IKitsInputMask, IKitsInputNumber, IKitsInputPassword, IKitsInputRating, IKitsInputSwitch, IKitsInputText, IKitsInputTextarea, IKitsPhoneInput, IKitsRadioProps, IKitsTheme, IKitsThemeColors, IKitsThemeConfig, IKitsThemeContextValues, IKitsThemeFontSizes, IKitsThemeFontWeights, IKitsThemeFonts, IKitsThemeLineHeights, IKitsThemeRadii, IKitsThemeShadows, IKitsThemeSpacing, IKitsToastRef, ILabelElement, ILabelProps, ILanguage, ILayout, ILineChartProps, ILinkComponent, ILinkOverrides, IList, IListBoxCore, IListBoxElement, IListBoxSelect, IListItem, IListing, ILoaderProps, ILoadingIndicatorContext, ILocaleContextProps, ILocaleContextValues, ILocation, ILocationDetailsResponse, ILocationResponse, IMainContextProps, IMainContextValues, IMemes, IMenuItem, IMessageComposerElementSlots, IMessageComposerProps, IMessageReceiptElementSlots, IMessageReceiptProps, IMessages, IMinusButton, IModalComponent, IModalFormProps, IMultiSelect, IMultiSelectCore, IMultiSelectSlots, IMultiselect, IMultiselectFilter, INativeShadow, INonCrossPlatformTypes, INumberFilter, INumberInput, INumberProps, INumberValidation, IObjectGroup, IOneOfTypes, IOptionItem, IOptionsEditorProps, IOptionsSource, IPageISection, IPaginationRequest, IPaginationResponse, IPaletteItemProps, IPaletteProps, IPanelCustomSlot, IPassword, IPasswordProps, IPersonCardProps, IPhone, IPhoneFilter, IPhoneObjectValue, IPhoneValidationResults, IPhoneValue, IPieChartProps, IPlusButton, IPolarAreaChartProps, IPopoverProps, IProgressBarElementSlots, IProgressBarProps, IPropertiesPanelProps, IRTLDetection, IRadarChartProps, IRadioCheckboxListItem, IRadioGroup, IRadioSlots, IRadiusPickerEvents, IRadiusPickerField, IRadiusPickerI18n, IRadiusPickerProps, IRangeFilter, IRef, IRepeatableSettings, IResponsiveElement, ISVGComponent, IScrollViewComponent, ISegmentedControlOption, ISegmentedControlProps, ISelect, ISelectBase, ISelectCore, ISelectElement, ISelectSlots, ISelectType, ISelectedFile, ISelectedFileType, ISelectionValidation, ISeverityColorSlots, ISeverityThemeMap, IShadowDefinition, IShadowValue, ISidebarElementSlots, ISizing, ISkeleton, ISkeletonRowsProps, ISkeletonText, ISliderProps, ISpacing, IStackProps, IStatCardElementSlots, IStatCardProps, IStatGroupElementSlots, IStatGroupProps, IStatePillProps, IStatisticsProps, IStats, IStepperElementSlots, IStepperProps, IStyleClasses, ISwitch, ISwitchSlots, ITabBarItem, ITabItem, ITableElementSlots, ITableFlatConfig, ITabsElementSlots, ITabsProps, ITags, IText, ITextComponent, ITextFieldProps, ITextFilter, ITextInput, ITextInputProps, ITextInputSlots, ITextValidation, ITextarea, IThemeContextProps, IThemeContextValues, ITimelineElementSlots, ITimelineItem, ITimelineProps, IToastFunction, IToastParams, IToolbarProps, ITransforms, ITransition, ITranslatableInputProps, ITranslatableText, ITranslateComponent, ITreeItem, ITreeSelect, ITreeSelectCore, ITreeSelectElement, ITreeSelectNode, ITreeViewProps, ITriStateFilter, ITypingIndicatorElementSlots, ITypingIndicatorProps, IUnkeyedColumn, IUseFormReturn, IUserAvatar, IValidationSectionProps, IWidgetBarIncomingProp, IWidgetChartContextProps, IWidgetChartProp, IWidgetData, IWidgetDoughnutIncomingProp, IWidgetLineIncomingProp, IWidgetPieIncomingProp, IWidgetPolarAreaIncomingProp, IWidgetRadarIncomingProp, IconName, IconType, InputTextFieldProps, KitsBreakpoint, KitsConditionalObject, KitsDevice, KitsOrientation, KitsPlatform, KitsResponsiveObject, KitsResponsiveValue, KitsThemeOverride, LabelVariant, LatLng, LoadMode, LoadingIndicatorRenderer, LogicFunction, MapInteraction, MeasurementValues, MessageReceiptState, Nullable, Numbering0_12, Numbering0_32, Numberish, OnCenterChange, OnLocationError, OnLocationFound, OnRadiusChange, OnRadiusValueChange, OnSubmitHandler, OnUnitChange, Orientation, PaginationState, PaginatorPageChangeEvent$1 as PaginatorPageChangeEvent, Permissions, PlatformKey, RadiusPickerDisplay, RadiusPickerLayout, RadiusPickerSize, RadiusUnit, RadiusValue, RenderLocationButtonProps, RenderMapProps, RenderSearchBoxProps, SelectFieldProps, SemanticColorTokens, ServerMethod, ServerResponse, ServerSideProps, SetManyOpts, Severity, Shades, ShadowPreset, Shapes, SidesValues, SizingNumbering, SizingValue, StatePillState, StepperVariant, TAcceptedFileType, TBuilderFieldType, TCheckboxRadioMode, TCheckboxRadioSize, TConditionAction, TConditionMatch, TConditionOperator, TDateBoundary, TDynamicFlag, TIsoFormat, TItemsPerRow, TKeyFilter, TLocationProvider, TextLabels, TextProps, ThemedFontKind, TimelineItemStatus, Timeout, TimingNumbering, ToastPosition, ToastSeverity, ToastSize, TooltipDataAttributes, TooltipProps, TreeChangeProps, TreeCheckboxSelectionKeyType, TreeCheckboxSelectionKeys, TreeNode, TreeNodeClickEvent, TreeNodeTemplateOptions, TreeProps, TreeRef, TreeSelectionEvent, Types, UseComponentDefaultsResult, UseDisclosureReturnType, UseFieldLogicElementProps, UseFieldLogicProps, UseFieldLogicReturn, UseFormManagerEvents, UseFormManagerReturn, UseToastApi, ValidationProps, children, clearFunction, downloadableFileResponse, settings1, settings2 };
14004
+ export type { AlignmentsValues, AllSlotKeys, AnimationsValues, AvatarShape, AvatarSize, AvatarStatus, BannerAction, BannerStatus, BaseFieldProps, Booleanish, Breakpoint, CallbackProps, ChatBubbleTone, ChatBubbleVariant, ChipSeverity, ChipSize, ColorMode, ColorScale, ColorValue, Colors, ColorsType, ComponentSize, CustomSubmitButtonProps, DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSelectionSingleChangeEvent, DataTableSortMeta, DeepPartial, DetailItemInputType, DynamicValue, ElementProps, EnteringAnimation, ExitingAnimation, ExpandedKeys, FetchError, FetchSuccess, FetchTableDataRes, FetchTablePaginationData, FieldWrapperProps, File$1 as File, FileUploaderTemplate, FileUploaderTemplateParams, FlexAlignmentsValues, FlexValues, FormBooleanEvent, FormBooleanTarget, FormEvent, FormTarget, GroupFieldConfigs, HighSizingValue, IAccordionElementSlots, IAccordionProps, IAddressComponentValue, IAddressExperianFormat, IAddressFormat, IAddressFormatResults, IAddressSearchResults, IAlertComponent, IAlertProps, IAlignment, IAnimation, IAutoCompleteCore, IAutoCompleteElement, IAvatarElementSlots, IAvatarProps, IAvatarStackElementSlots, IAvatarStackProps, IBadgeProps, IBannerProps, IBarChartProps, IBaseValidation, IBasicSectionProps, IBg, IBodyTemplate, IBorder, IBottomTabBarElementSlots, IBottomTabBarProps, IBoxComponent, IBuilderAddressField, IBuilderCheckboxField, IBuilderContainerField, IBuilderDateField, IBuilderField, IBuilderFieldBase, IBuilderFieldExport, IBuilderFileField, IBuilderGroupField, IBuilderMultiselectField, IBuilderNumberField, IBuilderPhoneField, IBuilderRadiosField, IBuilderRadiusPickerField, IBuilderSectionField, IBuilderSelectField, IBuilderSwitchField, IBuilderTagsField, IBuilderTextField, IBuilderTextareaField, IButton, IButtonElementSlots, IButtonParams, IButtonProps, IButtonState, IButtonsFilter, ICanvasProps, ICardComponent, ICardElementSlots, ICarouselElementSlots, ICarouselProps, ICascadeSelect, ICascadeSelectCore, IChatBubbleElementSlots, IChatBubbleProps, ICheckbox, ICheckboxFilter, ICheckboxSlots, IChildren, IChildrenParams, IChipProps, ICircularProgressProps, ICollapseProps, IColorPicker, IColumn, IColumnBase, ICombined, ICommandPaletteGroup, ICommandPaletteItem, ICommandPaletteProps, IComponentThemeConfig, IConditionGroupProps, IConditionRowProps, IConditionRule, IConditionsSectionProps, IConfirmDialogProps, IConfirmPopupProps, IContainer, IContainerCardProps, IContainerProps, IContextValues, ICountrySearchResults, ICssStyling, IDVButtonsFilter, IDVCheckboxFilter, IDVDateFilter, IDVDropdownFilter, IDVFilters, IDVMessages, IDVMultiselectFilter, IDVNumberFilter, IDVPaginationRequest, IDVPaginationResponse, IDVPaginationState, IDVPhoneFilter, IDVRangeFilter, IDVTextFilter, IDVTriStateFilter, IDataTableContextValues, IDataTableProps, IDataViewContextValues, IDataViewProps, IDataViewRefValues, IDatatableRefValues, IDate, IDateFilter, IDateProps, IDateSeparatorElementSlots, IDateSeparatorProps, IDateValidation, IDatepickerSlots, IDetailItem, IDetailListProps, IDialogButton, IDialogProps, IDialogRef, IDialogState, IDisplay, IDividerComponent, IDoughnutChartProps, IDropdownCore, IDropdownFilter, IDropdownSelect, IEditableProps, IEditors, IEffects, IElementBase, IElementSlotConfig, IElementStyle, IEmail, IEmailSearchResults, IEmptyStateElementSlots, IEmptyStateProps, IFieldCardProps, IFieldCondition, IFieldPreviewProps, IFile, IFileUploader, IFileUploaderElement, IFileUploaderTypes, IFileValidation, IFilesExtTypeKeys, IFilters, IFlexAlignment, IFlexComponent, IFormAddon, IFormBuilderInternalState, IFormBuilderMeta, IFormBuilderPayload, IFormBuilderProps, IFormComponent, IFormElement, IFormElementBaseSlots, IFormElementSlots, IFormGrid, IFormListsElements, IFormSelect, IFormSelectElements, IFormSingleElement, IGalleryElementSlots, IGalleryItem, IGalleryProps, IGrid, IGridComponent, IGridItem, IGridItemComponent, IGroup, IGroupCardProps, IGroupElementSlots, IGroupSettings, IHeaderElementSlots, IHeadingComponent, IIconProps, IImageComponent, IImagesExtTypeKeys, IInteractivity, IKeyedColumn, IKitsAnimation, IKitsCheckboxProps, IKitsComponentDefaults, IKitsContainer, IKitsDialogControlled, IKitsInputCalendar, IKitsInputColorPicker, IKitsInputLocation, IKitsInputMask, IKitsInputNumber, IKitsInputPassword, IKitsInputRating, IKitsInputSwitch, IKitsInputText, IKitsInputTextarea, IKitsPhoneInput, IKitsRadioProps, IKitsTheme, IKitsThemeColors, IKitsThemeConfig, IKitsThemeContextValues, IKitsThemeFontSizes, IKitsThemeFontWeights, IKitsThemeFonts, IKitsThemeLineHeights, IKitsThemeRadii, IKitsThemeShadows, IKitsThemeSpacing, IKitsToastRef, ILabelElement, ILabelProps, ILanguage, ILayout, ILineChartProps, ILinkComponent, ILinkOverrides, IList, IListBoxCore, IListBoxElement, IListBoxSelect, IListItem, IListing, ILoaderProps, ILoadingIndicatorContext, ILocaleContextProps, ILocaleContextValues, ILocation, ILocationDetailsResponse, ILocationResponse, IMainContextProps, IMainContextValues, IMemes, IMenuItem, IMessageComposerElementSlots, IMessageComposerProps, IMessageReceiptElementSlots, IMessageReceiptProps, IMessages, IMinusButton, IModalComponent, IModalFormProps, IMultiSelect, IMultiSelectCore, IMultiSelectSlots, IMultiselect, IMultiselectFilter, INativeShadow, INonCrossPlatformTypes, INumberFilter, INumberInput, INumberProps, INumberValidation, IObjectGroup, IOneOfTypes, IOptionItem, IOptionsEditorProps, IOptionsSource, IPageISection, IPaginationRequest, IPaginationResponse, IPaletteItemProps, IPaletteProps, IPanelCustomSlot, IPassword, IPasswordProps, IPersonCardProps, IPhone, IPhoneFilter, IPhoneObjectValue, IPhoneValidationResults, IPhoneValue, IPieChartProps, IPlusButton, IPolarAreaChartProps, IPopoverProps, IProgressBarElementSlots, IProgressBarProps, IPropertiesPanelProps, IRTLDetection, IRadarChartProps, IRadioCheckboxListItem, IRadioGroup, IRadioSlots, IRadiusPickerEvents, IRadiusPickerField, IRadiusPickerI18n, IRadiusPickerProps, IRangeFilter, IRef, IRepeatableSettings, IResponsiveElement, ISVGComponent, IScrollViewComponent, ISegmentedControlOption, ISegmentedControlProps, ISelect, ISelectBase, ISelectCore, ISelectElement, ISelectSlots, ISelectType, ISelectedFile, ISelectedFileType, ISelectionValidation, ISeverityColorSlots, ISeverityThemeMap, IShadowDefinition, IShadowValue, ISidebarElementSlots, ISizing, ISkeleton, ISkeletonRowsProps, ISkeletonText, ISliderProps, ISpacing, IStackProps, IStatCardElementSlots, IStatCardProps, IStatGroupElementSlots, IStatGroupProps, IStatePillProps, IStatisticsProps, IStats, IStepperElementSlots, IStepperProps, IStyleClasses, ISwitch, ISwitchSlots, ITabBarItem, ITabItem, ITableElementSlots, ITableFlatConfig, ITabsElementSlots, ITabsProps, ITags, IText, ITextComponent, ITextFieldProps, ITextFilter, ITextInput, ITextInputProps, ITextInputSlots, ITextValidation, ITextarea, IThemeContextProps, IThemeContextValues, ITimelineElementSlots, ITimelineItem, ITimelineProps, IToastAction, IToastFunction, IToastOptions, IToastParams, IToolbarProps, ITransforms, ITransition, ITranslatableInputProps, ITranslatableText, ITranslateComponent, ITreeItem, ITreeSelect, ITreeSelectCore, ITreeSelectElement, ITreeSelectNode, ITreeViewProps, ITriStateFilter, ITypingIndicatorElementSlots, ITypingIndicatorProps, IUnkeyedColumn, IUseFormReturn, IUserAvatar, IValidationSectionProps, IWidgetBarIncomingProp, IWidgetChartContextProps, IWidgetChartProp, IWidgetData, IWidgetDoughnutIncomingProp, IWidgetLineIncomingProp, IWidgetPieIncomingProp, IWidgetPolarAreaIncomingProp, IWidgetRadarIncomingProp, IconName, IconType, InputTextFieldProps, KitsBreakpoint, KitsConditionalObject, KitsDevice, KitsOrientation, KitsPlatform, KitsResponsiveObject, KitsResponsiveValue, KitsThemeOverride, LabelVariant, LatLng, LoadMode, LoadingIndicatorRenderer, LogicFunction, MapInteraction, MeasurementValues, MessageReceiptState, Nullable, Numbering0_12, Numbering0_32, Numberish, OnCenterChange, OnLocationError, OnLocationFound, OnRadiusChange, OnRadiusValueChange, OnSubmitHandler, OnUnitChange, Orientation, PaginationState, PaginatorPageChangeEvent$1 as PaginatorPageChangeEvent, Permissions, PlatformKey, RadiusPickerDisplay, RadiusPickerLayout, RadiusPickerSize, RadiusUnit, RadiusValue, RenderLocationButtonProps, RenderMapProps, RenderSearchBoxProps, SelectFieldProps, SemanticColorTokens, ServerMethod, ServerResponse, ServerSideProps, SetManyOpts, Severity, Shades, ShadowPreset, Shapes, SidesValues, SizingNumbering, SizingValue, StatePillState, StepperVariant, TAcceptedFileType, TBuilderFieldType, TCheckboxRadioMode, TCheckboxRadioSize, TConditionAction, TConditionMatch, TConditionOperator, TDateBoundary, TDynamicFlag, TIsoFormat, TItemsPerRow, TKeyFilter, TLocationProvider, TextLabels, TextProps, ThemedFontKind, TimelineItemStatus, Timeout, TimingNumbering, ToastPosition, ToastSeverity, ToastSize, TooltipDataAttributes, TooltipProps, TreeChangeProps, TreeCheckboxSelectionKeyType, TreeCheckboxSelectionKeys, TreeNode, TreeNodeClickEvent, TreeNodeTemplateOptions, TreeProps, TreeRef, TreeSelectionEvent, Types, UseComponentDefaultsResult, UseDisclosureReturnType, UseFieldLogicElementProps, UseFieldLogicProps, UseFieldLogicReturn, UseFormManagerEvents, UseFormManagerReturn, UseToastApi, ValidationProps, children, clearFunction, downloadableFileResponse, settings1, settings2 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmb-it/kitsconcerto-native",
3
- "version": "0.1.244",
3
+ "version": "0.1.245",
4
4
  "description": "KitsConcerto — Native (React Native) UI components",
5
5
  "main": "index.js",
6
6
  "module": "index.js",