@adminide-stack/yantra-mobile 12.0.125-alpha.1 → 12.0.126

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 (118) hide show
  1. package/lib/features/canvas/AudioEditorExperience.js +207 -109
  2. package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
  3. package/lib/features/canvas/CanvasAgentChatPane.js +87 -72
  4. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
  5. package/lib/features/canvas/CanvasBoardsGrid.js +494 -387
  6. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
  7. package/lib/features/canvas/CanvasChatResultCard.js +78 -59
  8. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
  9. package/lib/features/canvas/CanvasEditToolsPanel.js +126 -84
  10. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
  11. package/lib/features/canvas/CanvasExperience.js +108 -126
  12. package/lib/features/canvas/CanvasExperience.js.map +1 -1
  13. package/lib/features/canvas/CanvasGeneratePanel.js +178 -166
  14. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
  15. package/lib/features/canvas/CanvasLibrarySheet.js +119 -123
  16. package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -1
  17. package/lib/features/canvas/CanvasLooksPanel.js +113 -89
  18. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
  19. package/lib/features/canvas/CanvasModelPicker.js +79 -79
  20. package/lib/features/canvas/CanvasModelPicker.js.map +1 -1
  21. package/lib/features/canvas/CanvasTasksPanel.js +193 -128
  22. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
  23. package/lib/features/canvas/CanvasTemplatesPanel.js +106 -94
  24. package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -1
  25. package/lib/features/canvas/CanvasToolDock.js +195 -127
  26. package/lib/features/canvas/CanvasToolDock.js.map +1 -1
  27. package/lib/features/canvas/FrameExtractorExperience.js +163 -100
  28. package/lib/features/canvas/FrameExtractorExperience.js.map +1 -1
  29. package/lib/features/canvas/GeneratorReferenceSlots.js +132 -69
  30. package/lib/features/canvas/GeneratorReferenceSlots.js.map +1 -1
  31. package/lib/features/canvas/ImageEditorExperience.js +278 -209
  32. package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
  33. package/lib/features/canvas/InfluencerStudioExperience.js +167 -125
  34. package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -1
  35. package/lib/features/canvas/MoodboardExperience.js +102 -85
  36. package/lib/features/canvas/MoodboardExperience.js.map +1 -1
  37. package/lib/features/canvas/NativeCanvasViewer.js +203 -192
  38. package/lib/features/canvas/NativeCanvasViewer.js.map +1 -1
  39. package/lib/features/canvas/PromoContextFields.js +125 -92
  40. package/lib/features/canvas/PromoContextFields.js.map +1 -1
  41. package/lib/features/canvas/SetStudioExperience.js +225 -143
  42. package/lib/features/canvas/SetStudioExperience.js.map +1 -1
  43. package/lib/features/canvas/VideoClipsExperience.js +126 -92
  44. package/lib/features/canvas/VideoClipsExperience.js.map +1 -1
  45. package/lib/features/canvas/VideoEditExperience.js +154 -142
  46. package/lib/features/canvas/VideoEditExperience.js.map +1 -1
  47. package/lib/features/canvas/VideoEditorExperience.js +551 -492
  48. package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
  49. package/lib/features/canvas/VideoGeneratorExperience.js +284 -131
  50. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
  51. package/lib/features/canvas/canvasTasks.js +7 -3
  52. package/lib/features/canvas/canvasTasks.js.map +1 -1
  53. package/lib/features/canvas/canvasTheme.js +265 -0
  54. package/lib/features/canvas/canvasTheme.js.map +1 -0
  55. package/lib/features/canvas/canvasUi.js +381 -0
  56. package/lib/features/canvas/canvasUi.js.map +1 -0
  57. package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -52
  58. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
  59. package/lib/features/canvas/serverTasks.js +1 -1
  60. package/lib/features/canvas/serverTasks.js.map +1 -1
  61. package/lib/features/canvas/set/SetViewportWebView.js +1 -1
  62. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
  63. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js +8 -7
  64. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js.map +1 -1
  65. package/lib/features/canvas/videoEditor/ExportTaskCard.js +44 -41
  66. package/lib/features/canvas/videoEditor/ExportTaskCard.js.map +1 -1
  67. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +50 -45
  68. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
  69. package/lib/features/canvas/videoEditor/exportTask.js +3 -2
  70. package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
  71. package/lib/features/canvas/videoEditor/formWidgets.js +116 -64
  72. package/lib/features/canvas/videoEditor/formWidgets.js.map +1 -1
  73. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js +77 -63
  74. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js.map +1 -1
  75. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js +95 -79
  76. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js.map +1 -1
  77. package/lib/features/design/DesignEditorExperience.js +241 -160
  78. package/lib/features/design/DesignEditorExperience.js.map +1 -1
  79. package/lib/features/design/DesignExperience.js +300 -143
  80. package/lib/features/design/DesignExperience.js.map +1 -1
  81. package/lib/features/health/HealthSyncRunner.js +9 -1
  82. package/lib/features/health/HealthSyncRunner.js.map +1 -1
  83. package/lib/features/health/backgroundSync.js +41 -0
  84. package/lib/features/health/backgroundSync.js.map +1 -0
  85. package/lib/features/health/healthConnectBackground.js +32 -0
  86. package/lib/features/health/healthConnectBackground.js.map +1 -0
  87. package/lib/features/health/healthConnectReader.js +16 -2
  88. package/lib/features/health/healthConnectReader.js.map +1 -1
  89. package/lib/features/health/healthSync.js +31 -3
  90. package/lib/features/health/healthSync.js.map +1 -1
  91. package/lib/features/health/healthSyncStore.js +89 -5
  92. package/lib/features/health/healthSyncStore.js.map +1 -1
  93. package/lib/features/health/healthkitBackground.js +17 -0
  94. package/lib/features/health/healthkitBackground.js.map +1 -0
  95. package/lib/features/health/reader.js.map +1 -1
  96. package/lib/features/health/sessionVault.js +38 -0
  97. package/lib/features/health/sessionVault.js.map +1 -0
  98. package/lib/features/health/syncState.js.map +1 -1
  99. package/lib/features/webbuilder/WebBuilderExperience.js +1 -1
  100. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  101. package/lib/features/webbuilder/buildFragments.js +3 -2
  102. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  103. package/lib/features/webbuilder/components/PublishSheet.js +1 -1
  104. package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
  105. package/lib/features/webbuilder/webbuilderPrompts.js +2 -5
  106. package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
  107. package/lib/index.js +1 -1
  108. package/lib/index.js.map +1 -1
  109. package/lib/screens/Health/index.js +12 -2
  110. package/lib/screens/Health/index.js.map +1 -1
  111. package/lib/screens/WebBuilderNative/sandboxProxyApi.js +120 -0
  112. package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -0
  113. package/lib/screens/WebBuilderNative/useRestoredSandboxes.js.map +1 -1
  114. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +26 -4
  115. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  116. package/lib/screens/WebBuilderNative/webbuilderTransport.js +110 -7
  117. package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
  118. package/package.json +6 -4
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState}from'react';import {StyleSheet,useWindowDimensions,View,Pressable,Text,FlatList,Image,TextInput}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {useSafeAreaInsets}from'react-native-safe-area-context';import {newMoodboard,styleBrief}from'./moodboardCore.js';import {unwrapProxyUrl}from'./videoEditor/remoteMediaClient.js';var __defProp = Object.defineProperty;
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useMemo,useState}from'react';import {useWindowDimensions,View,Text,FlatList,Image,TextInput,StyleSheet}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {useSafeAreaInsets}from'react-native-safe-area-context';import {newMoodboard,styleBrief}from'./moodboardCore.js';import {unwrapProxyUrl}from'./videoEditor/remoteMediaClient.js';import {useCanvasTheme,themedStyles}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,HIT,TYPE}from'./canvasUi.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -23,6 +23,8 @@ function MoodboardExperience({
23
23
  onClose,
24
24
  onUseBrief
25
25
  }) {
26
+ const theme = useCanvasTheme();
27
+ const styles = useMemo(() => makeStyles(theme), [theme]);
26
28
  const insets = useSafeAreaInsets();
27
29
  const {
28
30
  width
@@ -51,9 +53,13 @@ function MoodboardExperience({
51
53
  paddingBottom: insets.bottom + 12
52
54
  }], children: [
53
55
  /* @__PURE__ */ jsxs(View, { style: styles.head, children: [
54
- /* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityLabel: "Close moodboard", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: "#e2e8f0" }) }),
56
+ /* @__PURE__ */ jsx(Pressable, { onPress: onClose, hitSlop: 10, accessibilityLabel: "Close moodboard", style: ({
57
+ pressed
58
+ }) => [styles.close, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: theme.edInk }) }),
55
59
  /* @__PURE__ */ jsx(Text, { style: styles.title, children: "Moodboard" }),
56
- /* @__PURE__ */ jsx(Pressable, { onPress: () => onUseBrief(brief, doc.references.map((r) => r.src)), disabled: !brief.trim(), style: [styles.useBtn, !brief.trim() && styles.useOff], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.useLabel, children: "Use brief" }) })
60
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => onUseBrief(brief, doc.references.map((r) => r.src)), disabled: !brief.trim(), style: ({
61
+ pressed
62
+ }) => [styles.useBtn, !brief.trim() && styles.useOff, pressedStyle(pressed && !!brief.trim())], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.useLabel, children: "Use brief" }) })
57
63
  ] }),
58
64
  /* @__PURE__ */ jsx(Text, { style: styles.section, children: "Board stills" }),
59
65
  boardImages.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.hint, children: "Place images on the board to pin them as references." }) : /* @__PURE__ */ jsx(FlatList, { horizontal: true, data: boardImages, keyExtractor: (item) => item.id, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.row, renderItem: ({
@@ -62,11 +68,13 @@ function MoodboardExperience({
62
68
  id: `mb-${item.id}`,
63
69
  src: item.src,
64
70
  label: item.label
65
- }), style: styles.addCard, children: [
71
+ }), style: ({
72
+ pressed
73
+ }) => [styles.addCard, pressedStyle(pressed)], children: [
66
74
  /* @__PURE__ */ jsx(Image, { source: {
67
75
  uri: item.src
68
76
  }, style: styles.addThumb }),
69
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: "#F7F7FA", style: styles.addIcon })
77
+ /* @__PURE__ */ jsx(View, { style: styles.addIcon, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 14, color: theme.primaryForeground }) })
70
78
  ] }) }),
71
79
  /* @__PURE__ */ jsx(Text, { style: styles.section, children: "References" }),
72
80
  doc.references.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.hint, children: "Tap a board still above to pin it." }) : /* @__PURE__ */ jsx(FlatList, { data: doc.references, keyExtractor: (item) => item.id, numColumns: 3, contentContainerStyle: styles.grid, renderItem: ({
@@ -78,72 +86,77 @@ function MoodboardExperience({
78
86
  /* @__PURE__ */ jsx(Image, { source: {
79
87
  uri: item.src
80
88
  }, style: styles.refThumb }),
81
- /* @__PURE__ */ jsx(Pressable, { onPress: () => remove(item.id), style: styles.trash, hitSlop: 6, accessibilityLabel: "Remove reference", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 14, color: "#0f172a" }) })
89
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => remove(item.id), style: styles.trash, hitSlop: 6, accessibilityLabel: "Remove reference", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 14, color: theme.edOnInk }) })
82
90
  ] }) }),
83
91
  /* @__PURE__ */ jsx(Text, { style: styles.section, children: "Notes" }),
84
92
  /* @__PURE__ */ jsx(TextInput, { value: doc.notes, onChangeText: (notes) => setDoc(__spreadProps(__spreadValues({}, doc), {
85
93
  notes
86
- })), placeholder: "Soft daylight, muted teal, quiet luxury\u2026", placeholderTextColor: "#7A7A88", style: styles.notes, multiline: true }),
94
+ })), placeholder: "Soft daylight, muted teal, quiet luxury\u2026", placeholderTextColor: theme.edInk3, style: styles.notes, multiline: true }),
87
95
  /* @__PURE__ */ jsx(Text, { style: styles.section, children: "Style brief" }),
88
96
  /* @__PURE__ */ jsx(Text, { style: styles.brief, children: brief || "Add notes or references to build a brief." })
89
97
  ] });
90
98
  }
91
- const styles = StyleSheet.create({
99
+ const makeStyles = themedStyles((theme) => StyleSheet.create({
92
100
  root: {
93
101
  flex: 1,
94
- backgroundColor: "#0B0B0E"
102
+ backgroundColor: theme.edBg
95
103
  },
96
104
  head: {
97
105
  flexDirection: "row",
98
106
  alignItems: "center",
99
107
  justifyContent: "space-between",
100
- paddingHorizontal: 16,
101
- marginBottom: 12
102
- },
103
- title: {
104
- fontSize: 17,
105
- fontWeight: "700",
106
- color: "#F7F7FA"
108
+ paddingHorizontal: SPACE.sm,
109
+ minHeight: HIT + SPACE.xs,
110
+ marginBottom: SPACE.sm
111
+ },
112
+ close: {
113
+ width: HIT,
114
+ height: HIT,
115
+ borderRadius: HIT / 2,
116
+ alignItems: "center",
117
+ justifyContent: "center"
107
118
  },
119
+ title: __spreadProps(__spreadValues({}, TYPE.title), {
120
+ color: theme.edInk
121
+ }),
108
122
  useBtn: {
109
- paddingHorizontal: 12,
110
- paddingVertical: 7,
111
- borderRadius: 9,
112
- backgroundColor: "#8B7CFF"
123
+ minHeight: 36,
124
+ paddingHorizontal: SPACE.lg,
125
+ marginRight: SPACE.sm,
126
+ borderRadius: RADIUS.pill,
127
+ alignItems: "center",
128
+ justifyContent: "center",
129
+ backgroundColor: theme.primary
113
130
  },
114
131
  useOff: {
115
- opacity: 0.35
116
- },
117
- useLabel: {
118
- fontSize: 13,
119
- fontWeight: "700",
120
- color: "#0A0A0C"
121
- },
122
- section: {
123
- color: "#9A9AA5",
124
- fontSize: 11,
125
- paddingHorizontal: 16,
126
- marginTop: 8,
127
- marginBottom: 6
128
- },
129
- hint: {
130
- color: "#7A7A88",
131
- fontSize: 13,
132
- paddingHorizontal: 16,
133
- paddingBottom: 8
134
- },
132
+ opacity: 0.4
133
+ },
134
+ useLabel: __spreadProps(__spreadValues({}, TYPE.label), {
135
+ color: theme.primaryForeground
136
+ }),
137
+ section: __spreadProps(__spreadValues({}, TYPE.label), {
138
+ color: theme.edInk,
139
+ paddingHorizontal: SPACE.lg,
140
+ marginTop: SPACE.lg,
141
+ marginBottom: SPACE.sm
142
+ }),
143
+ hint: __spreadProps(__spreadValues({}, TYPE.caption), {
144
+ color: theme.edInk3,
145
+ paddingHorizontal: SPACE.lg,
146
+ paddingBottom: SPACE.sm
147
+ }),
135
148
  row: {
136
- paddingHorizontal: 12,
137
- gap: 8,
138
- paddingBottom: 4
149
+ paddingHorizontal: SPACE.md,
150
+ gap: SPACE.sm,
151
+ paddingBottom: SPACE.xs
139
152
  },
140
153
  addCard: {
141
- width: 72,
142
- height: 72,
143
- borderRadius: 10,
154
+ width: 76,
155
+ height: 76,
156
+ borderRadius: RADIUS.md,
144
157
  overflow: "hidden",
145
- marginHorizontal: 4,
146
- backgroundColor: "#1F1F24"
158
+ marginHorizontal: SPACE.xs,
159
+ backgroundColor: theme.edRaised
147
160
  },
148
161
  addThumb: {
149
162
  width: "100%",
@@ -151,21 +164,24 @@ const styles = StyleSheet.create({
151
164
  },
152
165
  addIcon: {
153
166
  position: "absolute",
154
- right: 4,
155
- bottom: 4,
156
- backgroundColor: "rgba(15,23,42,0.65)",
157
- borderRadius: 8,
158
- overflow: "hidden"
167
+ right: 6,
168
+ bottom: 6,
169
+ width: 22,
170
+ height: 22,
171
+ borderRadius: 11,
172
+ alignItems: "center",
173
+ justifyContent: "center",
174
+ backgroundColor: theme.primary
159
175
  },
160
176
  grid: {
161
- paddingHorizontal: 12,
162
- paddingBottom: 8
177
+ paddingHorizontal: SPACE.md,
178
+ paddingBottom: SPACE.sm
163
179
  },
164
180
  refTile: {
165
- margin: 4,
166
- borderRadius: 10,
181
+ margin: SPACE.xs,
182
+ borderRadius: RADIUS.md,
167
183
  overflow: "hidden",
168
- backgroundColor: "#1F1F24"
184
+ backgroundColor: theme.edRaised
169
185
  },
170
186
  refThumb: {
171
187
  width: "100%",
@@ -173,33 +189,34 @@ const styles = StyleSheet.create({
173
189
  },
174
190
  trash: {
175
191
  position: "absolute",
176
- top: 4,
177
- right: 4,
178
- width: 22,
179
- height: 22,
180
- borderRadius: 11,
192
+ top: 6,
193
+ right: 6,
194
+ width: 24,
195
+ height: 24,
196
+ borderRadius: 12,
181
197
  alignItems: "center",
182
198
  justifyContent: "center",
183
- backgroundColor: "#F7F7FA"
184
- },
185
- notes: {
186
- marginHorizontal: 16,
187
- minHeight: 88,
188
- borderRadius: 12,
189
- paddingHorizontal: 12,
190
- paddingVertical: 10,
191
- backgroundColor: "#1F1F24",
192
- color: "#F7F7FA",
193
- fontSize: 14,
199
+ backgroundColor: theme.edInk
200
+ },
201
+ notes: __spreadProps(__spreadValues({}, TYPE.body), {
202
+ marginHorizontal: SPACE.lg,
203
+ minHeight: 96,
204
+ borderRadius: RADIUS.lg,
205
+ paddingHorizontal: SPACE.md + 2,
206
+ paddingVertical: SPACE.md,
207
+ backgroundColor: theme.edRaised,
208
+ borderWidth: StyleSheet.hairlineWidth,
209
+ borderColor: theme.edLine,
210
+ color: theme.edInk,
194
211
  textAlignVertical: "top"
195
- },
196
- brief: {
197
- marginHorizontal: 16,
198
- padding: 12,
199
- borderRadius: 12,
200
- backgroundColor: "#14141A",
201
- color: "#D4D4DD",
202
- fontSize: 13,
203
- lineHeight: 18
204
- }
205
- });export{MoodboardExperience};//# sourceMappingURL=MoodboardExperience.js.map
212
+ }),
213
+ brief: __spreadProps(__spreadValues({}, TYPE.body), {
214
+ fontSize: 14,
215
+ lineHeight: 20,
216
+ marginHorizontal: SPACE.lg,
217
+ padding: SPACE.md + 2,
218
+ borderRadius: RADIUS.lg,
219
+ backgroundColor: theme.edPanel,
220
+ color: theme.edInk2
221
+ })
222
+ }));export{MoodboardExperience};//# sourceMappingURL=MoodboardExperience.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MoodboardExperience.js","sources":["../../../src/features/canvas/MoodboardExperience.tsx"],"sourcesContent":["/**\n * Native twin of canvas-surface Moodboard — references + notes → style brief\n * that seeds Generate. Palette sampling needs a DOM canvas; phone skips it.\n */\nimport React, { useMemo, useState } from 'react';\nimport { FlatList, Image, Pressable, StyleSheet, Text, TextInput, View, useWindowDimensions } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { newMoodboard, styleBrief, type MoodboardDoc, type MoodboardReference } from './moodboardCore';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\n\nexport function MoodboardExperience({\n boardItems,\n initial,\n onClose,\n onUseBrief,\n}: {\n boardItems: CanvasItem[];\n initial?: MoodboardDoc | null;\n onClose: () => void;\n onUseBrief: (brief: string, refs: string[]) => void;\n}) {\n const insets = useSafeAreaInsets();\n const { width } = useWindowDimensions();\n const tile = Math.max(96, Math.floor((width - 48) / 3));\n const boardImages = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName,\n })),\n [boardItems],\n );\n const [doc, setDoc] = useState<MoodboardDoc>(initial ?? newMoodboard());\n const brief = styleBrief(doc.notes, doc.references.length);\n\n const add = (reference: MoodboardReference) => {\n if (doc.references.some((existing) => existing.src === reference.src)) return;\n setDoc({ ...doc, references: [...doc.references, reference] });\n };\n\n const remove = (id: string) => {\n setDoc({ ...doc, references: doc.references.filter((reference) => reference.id !== id) });\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 12 }]}>\n <View style={styles.head}>\n <Pressable onPress={onClose} hitSlop={10} accessibilityLabel=\"Close moodboard\">\n <MaterialCommunityIcons name=\"close\" size={22} color=\"#e2e8f0\" />\n </Pressable>\n <Text style={styles.title}>Moodboard</Text>\n <Pressable\n onPress={() =>\n onUseBrief(\n brief,\n doc.references.map((r) => r.src),\n )\n }\n disabled={!brief.trim()}\n style={[styles.useBtn, !brief.trim() && styles.useOff]}\n accessibilityRole=\"button\"\n >\n <Text style={styles.useLabel}>Use brief</Text>\n </Pressable>\n </View>\n\n <Text style={styles.section}>Board stills</Text>\n {boardImages.length === 0 ? (\n <Text style={styles.hint}>Place images on the board to pin them as references.</Text>\n ) : (\n <FlatList\n horizontal\n data={boardImages}\n keyExtractor={(item) => item.id}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.row}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => add({ id: `mb-${item.id}`, src: item.src, label: item.label })}\n style={styles.addCard}\n >\n <Image source={{ uri: item.src }} style={styles.addThumb} />\n <MaterialCommunityIcons name=\"plus\" size={16} color=\"#F7F7FA\" style={styles.addIcon} />\n </Pressable>\n )}\n />\n )}\n\n <Text style={styles.section}>References</Text>\n {doc.references.length === 0 ? (\n <Text style={styles.hint}>Tap a board still above to pin it.</Text>\n ) : (\n <FlatList\n data={doc.references}\n keyExtractor={(item) => item.id}\n numColumns={3}\n contentContainerStyle={styles.grid}\n renderItem={({ item }) => (\n <View style={[styles.refTile, { width: tile, height: tile }]}>\n <Image source={{ uri: item.src }} style={styles.refThumb} />\n <Pressable\n onPress={() => remove(item.id)}\n style={styles.trash}\n hitSlop={6}\n accessibilityLabel=\"Remove reference\"\n >\n <MaterialCommunityIcons name=\"close\" size={14} color=\"#0f172a\" />\n </Pressable>\n </View>\n )}\n />\n )}\n\n <Text style={styles.section}>Notes</Text>\n <TextInput\n value={doc.notes}\n onChangeText={(notes) => setDoc({ ...doc, notes })}\n placeholder=\"Soft daylight, muted teal, quiet luxury…\"\n placeholderTextColor=\"#7A7A88\"\n style={styles.notes}\n multiline\n />\n\n <Text style={styles.section}>Style brief</Text>\n <Text style={styles.brief}>{brief || 'Add notes or references to build a brief.'}</Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1, backgroundColor: '#0B0B0E' },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n marginBottom: 12,\n },\n title: { fontSize: 17, fontWeight: '700', color: '#F7F7FA' },\n useBtn: {\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 9,\n backgroundColor: '#8B7CFF',\n },\n useOff: { opacity: 0.35 },\n useLabel: { fontSize: 13, fontWeight: '700', color: '#0A0A0C' },\n section: { color: '#9A9AA5', fontSize: 11, paddingHorizontal: 16, marginTop: 8, marginBottom: 6 },\n hint: { color: '#7A7A88', fontSize: 13, paddingHorizontal: 16, paddingBottom: 8 },\n row: { paddingHorizontal: 12, gap: 8, paddingBottom: 4 },\n addCard: {\n width: 72,\n height: 72,\n borderRadius: 10,\n overflow: 'hidden',\n marginHorizontal: 4,\n backgroundColor: '#1F1F24',\n },\n addThumb: { width: '100%', height: '100%' },\n addIcon: {\n position: 'absolute',\n right: 4,\n bottom: 4,\n backgroundColor: 'rgba(15,23,42,0.65)',\n borderRadius: 8,\n overflow: 'hidden',\n },\n grid: { paddingHorizontal: 12, paddingBottom: 8 },\n refTile: { margin: 4, borderRadius: 10, overflow: 'hidden', backgroundColor: '#1F1F24' },\n refThumb: { width: '100%', height: '100%' },\n trash: {\n position: 'absolute',\n top: 4,\n right: 4,\n width: 22,\n height: 22,\n borderRadius: 11,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#F7F7FA',\n },\n notes: {\n marginHorizontal: 16,\n minHeight: 88,\n borderRadius: 12,\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: '#1F1F24',\n color: '#F7F7FA',\n fontSize: 14,\n textAlignVertical: 'top',\n },\n brief: {\n marginHorizontal: 16,\n padding: 12,\n borderRadius: 12,\n backgroundColor: '#14141A',\n color: '#D4D4DD',\n fontSize: 13,\n lineHeight: 18,\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoodboardExperience.js","sources":["../../../src/features/canvas/MoodboardExperience.tsx"],"sourcesContent":["/**\n * Native twin of canvas-surface Moodboard — references + notes → style brief\n * that seeds Generate. Palette sampling needs a DOM canvas; phone skips it.\n */\nimport React, { useMemo, useState } from 'react';\nimport { FlatList, Image, StyleSheet, Text, TextInput, View, useWindowDimensions } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { newMoodboard, styleBrief, type MoodboardDoc, type MoodboardReference } from './moodboardCore';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport { Pressable, HIT, RADIUS, SPACE, TYPE, pressedStyle } from './canvasUi';\n\nexport function MoodboardExperience({\n boardItems,\n initial,\n onClose,\n onUseBrief,\n}: {\n boardItems: CanvasItem[];\n initial?: MoodboardDoc | null;\n onClose: () => void;\n onUseBrief: (brief: string, refs: string[]) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = useMemo(() => makeStyles(theme), [theme]);\n const insets = useSafeAreaInsets();\n const { width } = useWindowDimensions();\n const tile = Math.max(96, Math.floor((width - 48) / 3));\n const boardImages = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName,\n })),\n [boardItems],\n );\n const [doc, setDoc] = useState<MoodboardDoc>(initial ?? newMoodboard());\n const brief = styleBrief(doc.notes, doc.references.length);\n\n const add = (reference: MoodboardReference) => {\n if (doc.references.some((existing) => existing.src === reference.src)) return;\n setDoc({ ...doc, references: [...doc.references, reference] });\n };\n\n const remove = (id: string) => {\n setDoc({ ...doc, references: doc.references.filter((reference) => reference.id !== id) });\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 12 }]}>\n <View style={styles.head}>\n <Pressable\n onPress={onClose}\n hitSlop={10}\n accessibilityLabel=\"Close moodboard\"\n style={({ pressed }) => [styles.close, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"close\" size={22} color={theme.edInk} />\n </Pressable>\n <Text style={styles.title}>Moodboard</Text>\n <Pressable\n onPress={() =>\n onUseBrief(\n brief,\n doc.references.map((r) => r.src),\n )\n }\n disabled={!brief.trim()}\n style={({ pressed }) => [\n styles.useBtn,\n !brief.trim() && styles.useOff,\n pressedStyle(pressed && !!brief.trim()),\n ]}\n accessibilityRole=\"button\"\n >\n <Text style={styles.useLabel}>Use brief</Text>\n </Pressable>\n </View>\n\n <Text style={styles.section}>Board stills</Text>\n {boardImages.length === 0 ? (\n <Text style={styles.hint}>Place images on the board to pin them as references.</Text>\n ) : (\n <FlatList\n horizontal\n data={boardImages}\n keyExtractor={(item) => item.id}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.row}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => add({ id: `mb-${item.id}`, src: item.src, label: item.label })}\n style={({ pressed }) => [styles.addCard, pressedStyle(pressed)]}\n >\n <Image source={{ uri: item.src }} style={styles.addThumb} />\n <View style={styles.addIcon}>\n <MaterialCommunityIcons name=\"plus\" size={14} color={theme.primaryForeground} />\n </View>\n </Pressable>\n )}\n />\n )}\n\n <Text style={styles.section}>References</Text>\n {doc.references.length === 0 ? (\n <Text style={styles.hint}>Tap a board still above to pin it.</Text>\n ) : (\n <FlatList\n data={doc.references}\n keyExtractor={(item) => item.id}\n numColumns={3}\n contentContainerStyle={styles.grid}\n renderItem={({ item }) => (\n <View style={[styles.refTile, { width: tile, height: tile }]}>\n <Image source={{ uri: item.src }} style={styles.refThumb} />\n <Pressable\n onPress={() => remove(item.id)}\n style={styles.trash}\n hitSlop={6}\n accessibilityLabel=\"Remove reference\"\n >\n <MaterialCommunityIcons name=\"close\" size={14} color={theme.edOnInk} />\n </Pressable>\n </View>\n )}\n />\n )}\n\n <Text style={styles.section}>Notes</Text>\n <TextInput\n value={doc.notes}\n onChangeText={(notes) => setDoc({ ...doc, notes })}\n placeholder=\"Soft daylight, muted teal, quiet luxury…\"\n placeholderTextColor={theme.edInk3}\n style={styles.notes}\n multiline\n />\n\n <Text style={styles.section}>Style brief</Text>\n <Text style={styles.brief}>{brief || 'Add notes or references to build a brief.'}</Text>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n root: { flex: 1, backgroundColor: theme.edBg },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.sm,\n minHeight: HIT + SPACE.xs,\n marginBottom: SPACE.sm,\n },\n close: { width: HIT, height: HIT, borderRadius: HIT / 2, alignItems: 'center', justifyContent: 'center' },\n title: { ...TYPE.title, color: theme.edInk },\n useBtn: {\n minHeight: 36,\n paddingHorizontal: SPACE.lg,\n marginRight: SPACE.sm,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n useOff: { opacity: 0.4 },\n useLabel: { ...TYPE.label, color: theme.primaryForeground },\n section: {\n ...TYPE.label,\n color: theme.edInk,\n paddingHorizontal: SPACE.lg,\n marginTop: SPACE.lg,\n marginBottom: SPACE.sm,\n },\n hint: { ...TYPE.caption, color: theme.edInk3, paddingHorizontal: SPACE.lg, paddingBottom: SPACE.sm },\n row: { paddingHorizontal: SPACE.md, gap: SPACE.sm, paddingBottom: SPACE.xs },\n addCard: {\n width: 76,\n height: 76,\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n marginHorizontal: SPACE.xs,\n backgroundColor: theme.edRaised,\n },\n addThumb: { width: '100%', height: '100%' },\n addIcon: {\n position: 'absolute',\n right: 6,\n bottom: 6,\n width: 22,\n height: 22,\n borderRadius: 11,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n grid: { paddingHorizontal: SPACE.md, paddingBottom: SPACE.sm },\n refTile: { margin: SPACE.xs, borderRadius: RADIUS.md, overflow: 'hidden', backgroundColor: theme.edRaised },\n refThumb: { width: '100%', height: '100%' },\n trash: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 24,\n height: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.edInk,\n },\n notes: {\n ...TYPE.body,\n marginHorizontal: SPACE.lg,\n minHeight: 96,\n borderRadius: RADIUS.lg,\n paddingHorizontal: SPACE.md + 2,\n paddingVertical: SPACE.md,\n backgroundColor: theme.edRaised,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.edLine,\n color: theme.edInk,\n textAlignVertical: 'top',\n },\n brief: {\n ...TYPE.body,\n fontSize: 14,\n lineHeight: 20,\n marginHorizontal: SPACE.lg,\n padding: SPACE.md + 2,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.edPanel,\n color: theme.edInk2,\n },\n }),\n);\n"],"names":[],"mappings":"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"}