@vinaverse/react-native 0.1.0-alpha.6 → 0.1.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +19 -11
  2. package/dist/ask.cjs +9 -5
  3. package/dist/ask.d.cts +14 -3
  4. package/dist/ask.d.ts +14 -3
  5. package/dist/ask.js +3 -3
  6. package/dist/chat.cjs +76 -73
  7. package/dist/chat.d.cts +16 -4
  8. package/dist/chat.d.ts +16 -4
  9. package/dist/chat.js +2 -3
  10. package/dist/{chunk-OWUKWVEZ.cjs → chunk-6QYDPGRS.cjs} +46 -2
  11. package/dist/chunk-6QYDPGRS.cjs.map +1 -0
  12. package/dist/{chunk-H2Y2YW2Q.cjs → chunk-AGZ7IH7E.cjs} +71 -72
  13. package/dist/chunk-AGZ7IH7E.cjs.map +1 -0
  14. package/dist/chunk-EFEXTVIT.js +88 -0
  15. package/dist/chunk-EFEXTVIT.js.map +1 -0
  16. package/dist/{chunk-SF6LJTVJ.js → chunk-HTUXHZ7X.js} +25 -30
  17. package/dist/chunk-HTUXHZ7X.js.map +1 -0
  18. package/dist/{chunk-OGPMGGYS.cjs → chunk-MG32E4JI.cjs} +20 -13
  19. package/dist/chunk-MG32E4JI.cjs.map +1 -0
  20. package/dist/{chunk-Y7P7DDHD.js → chunk-NJ6ARGZS.js} +12 -11
  21. package/dist/chunk-NJ6ARGZS.js.map +1 -0
  22. package/dist/{chunk-NJWRZ55G.js → chunk-POJP52GE.js} +16 -9
  23. package/dist/chunk-POJP52GE.js.map +1 -0
  24. package/dist/{chunk-643GOUTG.cjs → chunk-V6HHPE5K.cjs} +13 -12
  25. package/dist/chunk-V6HHPE5K.cjs.map +1 -0
  26. package/dist/index.cjs +86 -83
  27. package/dist/index.d.cts +2 -2
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +4 -5
  30. package/dist/launcher.cjs +14 -11
  31. package/dist/launcher.d.cts +4 -3
  32. package/dist/launcher.d.ts +4 -3
  33. package/dist/launcher.js +3 -4
  34. package/package.json +4 -4
  35. package/dist/chunk-643GOUTG.cjs.map +0 -1
  36. package/dist/chunk-H2Y2YW2Q.cjs.map +0 -1
  37. package/dist/chunk-NJWRZ55G.js.map +0 -1
  38. package/dist/chunk-OGPMGGYS.cjs.map +0 -1
  39. package/dist/chunk-OWUKWVEZ.cjs.map +0 -1
  40. package/dist/chunk-PRXHS57U.js +0 -40
  41. package/dist/chunk-PRXHS57U.js.map +0 -1
  42. package/dist/chunk-PYPO6F7L.cjs +0 -44
  43. package/dist/chunk-PYPO6F7L.cjs.map +0 -1
  44. package/dist/chunk-SF6LJTVJ.js.map +0 -1
  45. package/dist/chunk-WKRCCPSN.js +0 -48
  46. package/dist/chunk-WKRCCPSN.js.map +0 -1
  47. package/dist/chunk-Y7P7DDHD.js.map +0 -1
@@ -0,0 +1,88 @@
1
+ import { size, motion, radius, space, font, colors, contrastProblems } from '@vinaverse/tokens';
2
+ import { useMemo, useContext, useEffect, useState, createContext } from 'react';
3
+ import { useColorScheme, AppState, AccessibilityInfo } from 'react-native';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/theme.tsx
7
+ function createTheme(scheme, overrides = {}) {
8
+ return {
9
+ scheme,
10
+ colors: { ...colors(scheme), ...overrides[scheme] },
11
+ font: {
12
+ ...font,
13
+ ...overrides.fontFamily ? { family: overrides.fontFamily } : {}
14
+ },
15
+ space: { ...space, ...overrides.space },
16
+ radius: { ...radius, ...overrides.radius },
17
+ motion,
18
+ size
19
+ };
20
+ }
21
+ function themeProblems(overrides = {}) {
22
+ return ["light", "dark"].flatMap(
23
+ (scheme) => contrastProblems(createTheme(scheme, overrides).colors).map(
24
+ (p) => `${scheme}: ${p.foreground} on ${p.background} is ${p.ratio.toFixed(2)}:1, below ${p.minimum}:1`
25
+ )
26
+ );
27
+ }
28
+ var ThemeContext = /* @__PURE__ */ createContext(
29
+ /* @__PURE__ */ createTheme("light")
30
+ );
31
+ function ThemeProvider(props) {
32
+ const system = useColorScheme();
33
+ const setting = props.colorScheme ?? "system";
34
+ const scheme = setting === "system" ? system === "dark" ? "dark" : "light" : setting;
35
+ const overrides = props.theme;
36
+ const value = useMemo(
37
+ () => createTheme(scheme, overrides),
38
+ [scheme, overrides]
39
+ );
40
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children: props.children });
41
+ }
42
+ function useTheme() {
43
+ return useContext(ThemeContext);
44
+ }
45
+ function useAgentSweep(runtime) {
46
+ useEffect(() => {
47
+ const subscription = AppState.addEventListener("change", (state) => {
48
+ if (state === "active") runtime.sweep();
49
+ });
50
+ return () => subscription.remove();
51
+ }, [runtime]);
52
+ }
53
+ function useNativeLifecycle(store) {
54
+ useEffect(() => {
55
+ const apply = (state) => store.setForeground(state === "active");
56
+ apply(AppState.currentState);
57
+ const subscription = AppState.addEventListener("change", apply);
58
+ return () => subscription.remove();
59
+ }, [store]);
60
+ }
61
+ function useReducedMotion() {
62
+ const [reduced, setReduced] = useState(false);
63
+ useEffect(() => {
64
+ let live = true;
65
+ AccessibilityInfo.isReduceMotionEnabled().then(
66
+ (value) => {
67
+ if (live) setReduced(value);
68
+ },
69
+ () => void 0
70
+ );
71
+ const subscription = AccessibilityInfo.addEventListener(
72
+ "reduceMotionChanged",
73
+ setReduced
74
+ );
75
+ return () => {
76
+ live = false;
77
+ subscription.remove();
78
+ };
79
+ }, []);
80
+ return reduced;
81
+ }
82
+ function announce(text) {
83
+ if (text) AccessibilityInfo.announceForAccessibility(text);
84
+ }
85
+
86
+ export { ThemeProvider, announce, createTheme, themeProblems, useAgentSweep, useNativeLifecycle, useReducedMotion, useTheme };
87
+ //# sourceMappingURL=chunk-EFEXTVIT.js.map
88
+ //# sourceMappingURL=chunk-EFEXTVIT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme.tsx","../src/platform.ts"],"names":[],"mappings":"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","file":"chunk-EFEXTVIT.js","sourcesContent":["// The theme: the shared design tokens, a tenant's brand on top, light and dark. A tenant changes colors, fonts, radii\n// and spacing; the disclosure bar keeps a legible pair whatever the tenant's colors (see DisclosureBar).\nimport {\n type ColorScheme,\n type Colors,\n colors,\n contrastProblems,\n font,\n motion,\n radius,\n size,\n space,\n} from '@vinaverse/tokens';\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport { useColorScheme } from 'react-native';\n\nexport interface Theme {\n readonly scheme: ColorScheme;\n readonly colors: Colors;\n readonly font: typeof font & { readonly family?: string };\n readonly space: typeof space;\n readonly radius: typeof radius;\n readonly motion: typeof motion;\n readonly size: typeof size;\n}\n\n/** A tenant's brand: colors per scheme, a font family, radii. Anything left out keeps the Vinaverse default. */\nexport interface ThemeOverrides {\n readonly light?: Partial<Colors>;\n readonly dark?: Partial<Colors>;\n readonly fontFamily?: string;\n readonly radius?: Partial<typeof radius>;\n readonly space?: Partial<typeof space>;\n}\n\nexport type ColorSchemeSetting = 'system' | 'light' | 'dark';\n\n/** The theme for a scheme, with the tenant's overrides on top. */\nexport function createTheme(\n scheme: ColorScheme,\n overrides: ThemeOverrides = {},\n): Theme {\n return {\n scheme,\n colors: { ...colors(scheme), ...overrides[scheme] },\n font: {\n ...font,\n ...(overrides.fontFamily ? { family: overrides.fontFamily } : {}),\n },\n space: { ...space, ...overrides.space },\n radius: { ...radius, ...overrides.radius },\n motion,\n size,\n };\n}\n\n/** The pairs a tenant's colors made hard to read, in either scheme, as messages for a development warning. */\nexport function themeProblems(overrides: ThemeOverrides = {}): string[] {\n return (['light', 'dark'] as const).flatMap((scheme) =>\n contrastProblems(createTheme(scheme, overrides).colors).map(\n (p) =>\n `${scheme}: ${p.foreground} on ${p.background} is ${p.ratio.toFixed(2)}:1, below ${p.minimum}:1`,\n ),\n );\n}\n\nconst ThemeContext = /* @__PURE__ */ createContext<Theme>(\n /* @__PURE__ */ createTheme('light'),\n);\n\nexport function ThemeProvider(props: {\n readonly theme?: ThemeOverrides | undefined;\n readonly colorScheme?: ColorSchemeSetting | undefined;\n readonly children?: ReactNode;\n}): ReactNode {\n const system = useColorScheme();\n const setting = props.colorScheme ?? 'system';\n const scheme: ColorScheme =\n setting === 'system' ? (system === 'dark' ? 'dark' : 'light') : setting;\n const overrides = props.theme;\n const value = useMemo(\n () => createTheme(scheme, overrides),\n [scheme, overrides],\n );\n return (\n <ThemeContext.Provider value={value}>\n {props.children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): Theme {\n return useContext(ThemeContext);\n}\n","// The React Native platform adapter: what the conversation store learns from the app (foreground, background) and\n// what the kit asks of the platform (reduced motion, screen reader announcements).\nimport { useEffect, useState } from 'react';\nimport { AccessibilityInfo, AppState, type AppStateStatus } from 'react-native';\n\n/** The part of the conversation store the adapter drives. */\nexport interface LifecycleTarget {\n setForeground(foreground: boolean): void;\n}\n\n/**\n * When the app comes back to the foreground, the agent runtime ends the conversations no view shows that are past\n * their session's end (timers do not run in the background). Every agent part calls it; once is enough.\n */\nexport function useAgentSweep(runtime: { sweep(): void }): void {\n useEffect(() => {\n const subscription = AppState.addEventListener('change', (state) => {\n if (state === 'active') runtime.sweep();\n });\n return () => subscription.remove();\n }, [runtime]);\n}\n\n/** Tells the store when the app comes to the foreground or goes to the background (it pings only in the foreground). */\nexport function useNativeLifecycle(store: LifecycleTarget): void {\n useEffect(() => {\n const apply = (state: AppStateStatus) =>\n store.setForeground(state === 'active');\n apply(AppState.currentState);\n const subscription = AppState.addEventListener('change', apply);\n return () => subscription.remove();\n }, [store]);\n}\n\n/** Whether the person asked for reduced motion: animations and animated scrolling stay off. */\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(false);\n useEffect(() => {\n let live = true;\n AccessibilityInfo.isReduceMotionEnabled().then(\n (value) => {\n if (live) setReduced(value);\n },\n () => undefined,\n );\n const subscription = AccessibilityInfo.addEventListener(\n 'reduceMotionChanged',\n setReduced,\n );\n return () => {\n live = false;\n subscription.remove();\n };\n }, []);\n return reduced;\n}\n\n/** Reads a line to a screen reader, without moving focus. */\nexport function announce(text: string): void {\n if (text) AccessibilityInfo.announceForAccessibility(text);\n}\n"]}
@@ -1,7 +1,6 @@
1
- import { useReducedMotion, announce, useNativeLifecycle } from './chunk-PRXHS57U.js';
2
- import { useTheme, themeProblems, ThemeProvider } from './chunk-WKRCCPSN.js';
1
+ import { useTheme, useReducedMotion, announce, useNativeLifecycle, themeProblems, ThemeProvider, useAgentSweep } from './chunk-EFEXTVIT.js';
3
2
  import { useAgentRuntime, useAgentConversation, useAgentName } from '@vinaverse/react/agent';
4
- export { AgentRuntimeProvider, greetedKey, useAgentConversation, useAgentFeatures, useAgentLauncher, useAgentName, useAgentProfile, useAgentRuntime, useAgentStatus } from '@vinaverse/react/agent';
3
+ export { AgentRuntimeProvider, forgetGreeting, greetedKey, useAgentConversation, useAgentFeatures, useAgentLauncher, useAgentName, useAgentProfile, useAgentRuntime, useAgentStatus } from '@vinaverse/react/agent';
5
4
  import { FlashList } from '@shopify/flash-list';
6
5
  import { useCopy, formatMoney, formatTimeRange, useConversationSelector, formatDate, useStreamingText, bannedWordsIn, CopyProvider } from '@vinaverse/react';
7
6
  import { Pressable, ActivityIndicator, Text, View, Image, Linking, TextInput, useWindowDimensions, Platform, KeyboardAvoidingView } from 'react-native';
@@ -2296,6 +2295,7 @@ function AgentChat(props) {
2296
2295
  ...chat
2297
2296
  } = props;
2298
2297
  const runtime = useAgentRuntime();
2298
+ useAgentSweep(runtime);
2299
2299
  const { conversation, state, startNew } = useAgentConversation(agentKey, {
2300
2300
  place: place ?? null,
2301
2301
  entryPoint: entryPoint ?? null
@@ -2344,30 +2344,23 @@ function AgentChat(props) {
2344
2344
  conversation: store,
2345
2345
  components: slots
2346
2346
  };
2347
- if (state.failure === "ended")
2348
- return /* @__PURE__ */ jsx(VinaverseChatProvider, { ...shared, children: /* @__PURE__ */ jsx(Centered, { children: Ended ? /* @__PURE__ */ jsx(
2349
- Ended,
2350
- {
2351
- onStartNew: startNew,
2352
- code: state.code,
2353
- Default: DefaultEnded
2354
- }
2355
- ) : /* @__PURE__ */ jsx(DefaultEnded, { onStartNew: startNew, code: state.code }) }) });
2356
- if (state.failure === "unreachable")
2357
- return /* @__PURE__ */ jsx(VinaverseChatProvider, { ...shared, children: /* @__PURE__ */ jsx(Centered, { children: Unreachable ? /* @__PURE__ */ jsx(
2358
- Unreachable,
2359
- {
2360
- onRetry: conversation.retry,
2361
- reason: state.reason,
2362
- Default: DefaultUnreachable
2363
- }
2364
- ) : /* @__PURE__ */ jsx(
2365
- DefaultUnreachable,
2366
- {
2367
- onRetry: conversation.retry,
2368
- reason: state.reason
2369
- }
2370
- ) }) });
2347
+ if (state.failure === "ended") {
2348
+ const own = {
2349
+ onStartNew: startNew,
2350
+ reason: state.reason,
2351
+ code: state.code,
2352
+ onContact
2353
+ };
2354
+ return /* @__PURE__ */ jsx(VinaverseChatProvider, { ...shared, children: /* @__PURE__ */ jsx(Centered, { children: Ended ? /* @__PURE__ */ jsx(Ended, { ...own, Default: DefaultEnded }) : /* @__PURE__ */ jsx(DefaultEnded, { ...own }) }) });
2355
+ }
2356
+ if (state.failure === "unreachable") {
2357
+ const own = {
2358
+ onRetry: conversation.retry,
2359
+ reason: state.reason,
2360
+ onContact
2361
+ };
2362
+ return /* @__PURE__ */ jsx(VinaverseChatProvider, { ...shared, children: /* @__PURE__ */ jsx(Centered, { children: Unreachable ? /* @__PURE__ */ jsx(Unreachable, { ...own, Default: DefaultUnreachable }) : /* @__PURE__ */ jsx(DefaultUnreachable, { ...own }) }) });
2363
+ }
2371
2364
  if (state.failure === "unavailable") {
2372
2365
  const own = {
2373
2366
  reason: state.reason,
@@ -2388,6 +2381,7 @@ function AgentChat(props) {
2388
2381
  store,
2389
2382
  state,
2390
2383
  rate: conversation.rate,
2384
+ canRate: conversation.canRate,
2391
2385
  Footer,
2392
2386
  onOpenPrivacy
2393
2387
  }
@@ -2396,7 +2390,8 @@ function AgentChat(props) {
2396
2390
  );
2397
2391
  }
2398
2392
  function FooterFor(props) {
2399
- const turnId = useConversationSelector(props.store, newestWholeReply);
2393
+ const newest = useConversationSelector(props.store, newestWholeReply);
2394
+ const turnId = newest && props.canRate(newest) ? newest : null;
2400
2395
  const own = {
2401
2396
  turnId,
2402
2397
  rating: turnId ? props.state.ratings.get(turnId) : void 0,
@@ -2563,5 +2558,5 @@ function AgentFooter(props) {
2563
2558
  }
2564
2559
 
2565
2560
  export { ActivityLine, AgentChat, AgentFooter, Avatar, Button, CardActions, CardCarousel, CardFrame, CardView, ChatHeader, ChatSkeleton, Composer, DefaultBubble, DefaultComposer, DefaultEnded, DefaultHeader, DefaultTurnFailed, DefaultUnavailable, DefaultUnavailableScreen, DefaultUnreachable, DisclosureBar, FailureActionButton, InfoCard, LinksCard, ListingCard, MessageBubble, MessageList, NextStepCard, ProposalCard, QuestionCard, Row, StatusBanner, StreamingBubble, SystemRow, TimeSlotsCard, VinaverseChat, VinaverseChatProvider, Welcome, allowedImage, answerText, carousels, defaultCard, fieldText, itemType, monogram, newestWholeReply, ratingText, useChat };
2566
- //# sourceMappingURL=chunk-SF6LJTVJ.js.map
2567
- //# sourceMappingURL=chunk-SF6LJTVJ.js.map
2561
+ //# sourceMappingURL=chunk-HTUXHZ7X.js.map
2562
+ //# sourceMappingURL=chunk-HTUXHZ7X.js.map