@vibes.diy/use-vibes-base 0.0.0-dev-fresh-data

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 (164) hide show
  1. package/LICENSE.md +232 -0
  2. package/ManualRedirectStrategy.d.ts +24 -0
  3. package/ManualRedirectStrategy.js +289 -0
  4. package/ManualRedirectStrategy.js.map +1 -0
  5. package/README.md +549 -0
  6. package/components/AuthWall/AuthWall.d.ts +8 -0
  7. package/components/AuthWall/AuthWall.js +161 -0
  8. package/components/AuthWall/AuthWall.js.map +1 -0
  9. package/components/AuthWall/AuthWall.styles.d.ts +24 -0
  10. package/components/AuthWall/AuthWall.styles.js +82 -0
  11. package/components/AuthWall/AuthWall.styles.js.map +1 -0
  12. package/components/BrutalistCard/BrutalistCard.d.ts +8 -0
  13. package/components/BrutalistCard/BrutalistCard.js +11 -0
  14. package/components/BrutalistCard/BrutalistCard.js.map +1 -0
  15. package/components/BrutalistCard/BrutalistCard.styles.d.ts +4 -0
  16. package/components/BrutalistCard/BrutalistCard.styles.js +66 -0
  17. package/components/BrutalistCard/BrutalistCard.styles.js.map +1 -0
  18. package/components/BrutalistCard/index.d.ts +3 -0
  19. package/components/BrutalistCard/index.js +2 -0
  20. package/components/BrutalistCard/index.js.map +1 -0
  21. package/components/ControlsBar.d.ts +20 -0
  22. package/components/ControlsBar.js +108 -0
  23. package/components/ControlsBar.js.map +1 -0
  24. package/components/HiddenMenuWrapper/HiddenMenuWrapper.d.ts +7 -0
  25. package/components/HiddenMenuWrapper/HiddenMenuWrapper.js +103 -0
  26. package/components/HiddenMenuWrapper/HiddenMenuWrapper.js.map +1 -0
  27. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.d.ts +31 -0
  28. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js +86 -0
  29. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js.map +1 -0
  30. package/components/ImgGen.css +675 -0
  31. package/components/ImgGen.d.ts +23 -0
  32. package/components/ImgGen.js +260 -0
  33. package/components/ImgGen.js.map +1 -0
  34. package/components/ImgGenUtils/AsyncImg.d.ts +7 -0
  35. package/components/ImgGenUtils/AsyncImg.js +41 -0
  36. package/components/ImgGenUtils/AsyncImg.js.map +1 -0
  37. package/components/ImgGenUtils/ImgGenDisplay.d.ts +3 -0
  38. package/components/ImgGenUtils/ImgGenDisplay.js +240 -0
  39. package/components/ImgGenUtils/ImgGenDisplay.js.map +1 -0
  40. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.d.ts +3 -0
  41. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js +99 -0
  42. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js.map +1 -0
  43. package/components/ImgGenUtils/ImgGenDisplayUtils.d.ts +27 -0
  44. package/components/ImgGenUtils/ImgGenDisplayUtils.js +95 -0
  45. package/components/ImgGenUtils/ImgGenDisplayUtils.js.map +1 -0
  46. package/components/ImgGenUtils/ImgGenError.d.ts +3 -0
  47. package/components/ImgGenUtils/ImgGenError.js +9 -0
  48. package/components/ImgGenUtils/ImgGenError.js.map +1 -0
  49. package/components/ImgGenUtils/ImgGenFileDrop.d.ts +11 -0
  50. package/components/ImgGenUtils/ImgGenFileDrop.js +56 -0
  51. package/components/ImgGenUtils/ImgGenFileDrop.js.map +1 -0
  52. package/components/ImgGenUtils/ImgGenModal.d.ts +25 -0
  53. package/components/ImgGenUtils/ImgGenModal.js +67 -0
  54. package/components/ImgGenUtils/ImgGenModal.js.map +1 -0
  55. package/components/ImgGenUtils/ImgGenModeUtils.d.ts +9 -0
  56. package/components/ImgGenUtils/ImgGenModeUtils.js +59 -0
  57. package/components/ImgGenUtils/ImgGenModeUtils.js.map +1 -0
  58. package/components/ImgGenUtils/ImgGenPromptWaiting.d.ts +11 -0
  59. package/components/ImgGenUtils/ImgGenPromptWaiting.js +40 -0
  60. package/components/ImgGenUtils/ImgGenPromptWaiting.js.map +1 -0
  61. package/components/ImgGenUtils/ImgGenUploadWaiting.d.ts +16 -0
  62. package/components/ImgGenUtils/ImgGenUploadWaiting.js +155 -0
  63. package/components/ImgGenUtils/ImgGenUploadWaiting.js.map +1 -0
  64. package/components/ImgGenUtils/index.d.ts +6 -0
  65. package/components/ImgGenUtils/index.js +7 -0
  66. package/components/ImgGenUtils/index.js.map +1 -0
  67. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.d.ts +9 -0
  68. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.js +31 -0
  69. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.js.map +1 -0
  70. package/components/ImgGenUtils/overlays/ImageOverlay.d.ts +22 -0
  71. package/components/ImgGenUtils/overlays/ImageOverlay.js +11 -0
  72. package/components/ImgGenUtils/overlays/ImageOverlay.js.map +1 -0
  73. package/components/ImgGenUtils/types.d.ts +29 -0
  74. package/components/ImgGenUtils/types.js +2 -0
  75. package/components/ImgGenUtils/types.js.map +1 -0
  76. package/components/ImgGenUtils.d.ts +2 -0
  77. package/components/ImgGenUtils.js +3 -0
  78. package/components/ImgGenUtils.js.map +1 -0
  79. package/components/PromptBar.d.ts +11 -0
  80. package/components/PromptBar.js +24 -0
  81. package/components/PromptBar.js.map +1 -0
  82. package/components/VibeControl.d.ts +13 -0
  83. package/components/VibeControl.js +74 -0
  84. package/components/VibeControl.js.map +1 -0
  85. package/components/VibesButton/VibesButton.d.ts +10 -0
  86. package/components/VibesButton/VibesButton.js +20 -0
  87. package/components/VibesButton/VibesButton.js.map +1 -0
  88. package/components/VibesButton/VibesButton.styles.d.ts +6 -0
  89. package/components/VibesButton/VibesButton.styles.js +35 -0
  90. package/components/VibesButton/VibesButton.styles.js.map +1 -0
  91. package/components/VibesPanel/VibesPanel.d.ts +6 -0
  92. package/components/VibesPanel/VibesPanel.js +115 -0
  93. package/components/VibesPanel/VibesPanel.js.map +1 -0
  94. package/components/VibesPanel/index.d.ts +1 -0
  95. package/components/VibesPanel/index.js +2 -0
  96. package/components/VibesPanel/index.js.map +1 -0
  97. package/components/VibesSwitch/VibesSwitch.d.ts +6 -0
  98. package/components/VibesSwitch/VibesSwitch.js +54 -0
  99. package/components/VibesSwitch/VibesSwitch.js.map +1 -0
  100. package/components/VibesSwitch/VibesSwitch.styles.d.ts +4 -0
  101. package/components/VibesSwitch/VibesSwitch.styles.js +5 -0
  102. package/components/VibesSwitch/VibesSwitch.styles.js.map +1 -0
  103. package/constants.d.ts +4 -0
  104. package/constants.js +5 -0
  105. package/constants.js.map +1 -0
  106. package/events.d.ts +7 -0
  107. package/events.js +4 -0
  108. package/events.js.map +1 -0
  109. package/hooks/image-gen/image-generator.d.ts +11 -0
  110. package/hooks/image-gen/image-generator.js +146 -0
  111. package/hooks/image-gen/image-generator.js.map +1 -0
  112. package/hooks/image-gen/index.d.ts +7 -0
  113. package/hooks/image-gen/index.js +6 -0
  114. package/hooks/image-gen/index.js.map +1 -0
  115. package/hooks/image-gen/use-image-gen.d.ts +2 -0
  116. package/hooks/image-gen/use-image-gen.js +554 -0
  117. package/hooks/image-gen/use-image-gen.js.map +1 -0
  118. package/hooks/image-gen/utils.d.ts +19 -0
  119. package/hooks/image-gen/utils.js +150 -0
  120. package/hooks/image-gen/utils.js.map +1 -0
  121. package/hooks/use-image-gen.d.ts +1 -0
  122. package/hooks/use-image-gen.js +2 -0
  123. package/hooks/use-image-gen.js.map +1 -0
  124. package/hooks/vibes-gen/IframeVibesComponent.d.ts +10 -0
  125. package/hooks/vibes-gen/IframeVibesComponent.js +67 -0
  126. package/hooks/vibes-gen/IframeVibesComponent.js.map +1 -0
  127. package/hooks/vibes-gen/index.d.ts +2 -0
  128. package/hooks/vibes-gen/index.js +2 -0
  129. package/hooks/vibes-gen/index.js.map +1 -0
  130. package/hooks/vibes-gen/use-vibes.d.ts +3 -0
  131. package/hooks/vibes-gen/use-vibes.js +185 -0
  132. package/hooks/vibes-gen/use-vibes.js.map +1 -0
  133. package/index.d.ts +68 -0
  134. package/index.js +340 -0
  135. package/index.js.map +1 -0
  136. package/install-tracker.d.ts +30 -0
  137. package/install-tracker.js +246 -0
  138. package/install-tracker.js.map +1 -0
  139. package/package.json +47 -0
  140. package/stories/VibeControl.stories.d.ts +13 -0
  141. package/stories/VibeControl.stories.js +195 -0
  142. package/stories/VibeControl.stories.js.map +1 -0
  143. package/tsconfig.json +18 -0
  144. package/utils/appSlug.d.ts +17 -0
  145. package/utils/appSlug.js +175 -0
  146. package/utils/appSlug.js.map +1 -0
  147. package/utils/base64.d.ts +1 -0
  148. package/utils/base64.js +13 -0
  149. package/utils/base64.js.map +1 -0
  150. package/utils/debug.d.ts +2 -0
  151. package/utils/debug.js +8 -0
  152. package/utils/debug.js.map +1 -0
  153. package/utils/style-utils.d.ts +4 -0
  154. package/utils/style-utils.js +15 -0
  155. package/utils/style-utils.js.map +1 -0
  156. package/utils/styles.d.ts +325 -0
  157. package/utils/styles.js +328 -0
  158. package/utils/styles.js.map +1 -0
  159. package/utils/vibe-control-styles.d.ts +148 -0
  160. package/utils/vibe-control-styles.js +170 -0
  161. package/utils/vibe-control-styles.js.map +1 -0
  162. package/vibe-app-mount.d.ts +13 -0
  163. package/vibe-app-mount.js +124 -0
  164. package/vibe-app-mount.js.map +1 -0
@@ -0,0 +1,150 @@
1
+ export const MODULE_STATE = {
2
+ pendingImageGenCalls: new Map(),
3
+ pendingPrompts: new Set(),
4
+ processingRequests: new Set(),
5
+ requestTimestamps: new Map(),
6
+ requestCounter: 0,
7
+ createdDocuments: new Map(), // Track document IDs created for each generation request
8
+ pendingDocumentCreations: new Map(),
9
+ };
10
+ export function cleanupRequestKey(key) {
11
+ MODULE_STATE.pendingImageGenCalls.delete(key);
12
+ MODULE_STATE.processingRequests.delete(key);
13
+ MODULE_STATE.pendingPrompts.delete(key);
14
+ MODULE_STATE.pendingDocumentCreations.delete(key);
15
+ MODULE_STATE.requestTimestamps.delete(key);
16
+ }
17
+ export function hashInput(prompt, options) {
18
+ const inputString = JSON.stringify({
19
+ prompt,
20
+ options,
21
+ });
22
+ let hash = 2166136261;
23
+ for (let i = 0; i < inputString.length; i++) {
24
+ hash ^= inputString.charCodeAt(i);
25
+ hash = Math.imul(hash, 16777619);
26
+ }
27
+ const hashHex = (hash >>> 0).toString(16).padStart(8, '0');
28
+ const requestId = hashHex.slice(0, 12);
29
+ return `${requestId}-${Date.now().toString(36)}`;
30
+ }
31
+ export function base64ToFile(base64Data, filename) {
32
+ const byteString = atob(base64Data);
33
+ const ab = new ArrayBuffer(byteString.length);
34
+ const ia = new Uint8Array(ab);
35
+ for (let i = 0; i < byteString.length; i++) {
36
+ ia[i] = byteString.charCodeAt(i);
37
+ }
38
+ const blob = new Blob([ab], { type: 'image/png' });
39
+ return new File([blob], filename, { type: 'image/png' });
40
+ }
41
+ export function generateVersionId(versionNumber) {
42
+ return `v${versionNumber}`;
43
+ }
44
+ export function getVersionsFromDocument(document) {
45
+ if (document?.versions && document.versions.length > 0) {
46
+ return {
47
+ versions: document.versions,
48
+ currentVersion: document.currentVersion ?? document.versions.length,
49
+ };
50
+ }
51
+ if (document?._files?.image) {
52
+ return {
53
+ versions: [{ id: 'v1', created: document.created || Date.now() }],
54
+ currentVersion: 1,
55
+ };
56
+ }
57
+ return { versions: [], currentVersion: 0 };
58
+ }
59
+ export function generatePromptKey(promptNumber) {
60
+ return `p${promptNumber}`;
61
+ }
62
+ export function getPromptsFromDocument(document) {
63
+ if (document?.prompts && document?.currentPromptKey) {
64
+ return {
65
+ prompts: document.prompts,
66
+ currentPromptKey: document.currentPromptKey,
67
+ };
68
+ }
69
+ if (document?.prompt) {
70
+ return {
71
+ prompts: {
72
+ p1: { text: document.prompt, created: document.created || Date.now() },
73
+ },
74
+ currentPromptKey: 'p1',
75
+ };
76
+ }
77
+ return { prompts: {}, currentPromptKey: '' };
78
+ }
79
+ export function addNewVersion(document, newImageFile, newPrompt) {
80
+ const { versions } = getVersionsFromDocument(document);
81
+ const versionCount = versions.length + 1;
82
+ const newVersionId = generateVersionId(versionCount);
83
+ const { prompts, currentPromptKey } = getPromptsFromDocument(document);
84
+ const updatedPrompts = { ...prompts };
85
+ let updatedCurrentPromptKey = currentPromptKey;
86
+ if (newPrompt && (!currentPromptKey || newPrompt !== prompts[currentPromptKey]?.text)) {
87
+ const promptCount = Object.keys(updatedPrompts).length + 1;
88
+ updatedCurrentPromptKey = generatePromptKey(promptCount);
89
+ updatedPrompts[updatedCurrentPromptKey] = {
90
+ text: newPrompt,
91
+ created: Date.now(),
92
+ };
93
+ }
94
+ else if (!updatedCurrentPromptKey && document.prompt) {
95
+ updatedCurrentPromptKey = 'p1';
96
+ updatedPrompts['p1'] = {
97
+ text: document.prompt,
98
+ created: document.created || Date.now(),
99
+ };
100
+ }
101
+ const updatedFiles = { ...(document._files || {}) };
102
+ updatedFiles[newVersionId] = newImageFile;
103
+ if (versionCount === 1 && document._files?.image) {
104
+ updatedFiles['v1'] = document._files.image;
105
+ delete updatedFiles.image;
106
+ }
107
+ return {
108
+ ...document,
109
+ currentVersion: versionCount - 1, // Make it 0-based
110
+ versions: [
111
+ ...versions,
112
+ {
113
+ id: newVersionId,
114
+ created: Date.now(),
115
+ promptKey: updatedCurrentPromptKey,
116
+ },
117
+ ],
118
+ prompts: updatedPrompts,
119
+ currentPromptKey: updatedCurrentPromptKey,
120
+ _files: updatedFiles,
121
+ };
122
+ }
123
+ export function getRelevantOptions(options) {
124
+ if (!options)
125
+ return {};
126
+ const relevantOptions = {};
127
+ if (options.size)
128
+ relevantOptions.size = options.size;
129
+ if (options.quality)
130
+ relevantOptions.quality = options.quality;
131
+ if (options.model)
132
+ relevantOptions.model = options.model;
133
+ if (options.style)
134
+ relevantOptions.style = options.style;
135
+ return relevantOptions;
136
+ }
137
+ export function generateSafeFilename(promptText) {
138
+ const maxPromptChars = 40;
139
+ const cleanedPrompt = promptText
140
+ .toLowerCase()
141
+ .replace(/[^a-z0-9\s-]/g, '')
142
+ .replace(/\s+/g, '-')
143
+ .substring(0, maxPromptChars)
144
+ .replace(/-+$/g, '');
145
+ const now = new Date();
146
+ const datePart = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
147
+ const timePart = `${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
148
+ return `${cleanedPrompt}-${datePart}-${timePart}.png`;
149
+ }
150
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../jsr/hooks/image-gen/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './image-gen/index.js';
@@ -0,0 +1,2 @@
1
+ export * from './image-gen/index.js';
2
+ //# sourceMappingURL=use-image-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-image-gen.js","sourceRoot":"","sources":["../../jsr/hooks/use-image-gen.ts"],"names":[],"mappings":"AAMA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface IframeVibesComponentProps {
3
+ code: string;
4
+ sessionId?: string;
5
+ baseUrl?: string;
6
+ onReady?: () => void;
7
+ onError?: (error: Error) => void;
8
+ }
9
+ declare const IframeVibesComponent: React.FC<IframeVibesComponentProps>;
10
+ export default IframeVibesComponent;
@@ -0,0 +1,67 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { transformImports, normalizeComponentExports } from '@vibes.diy/prompts';
3
+ const IframeVibesComponent = ({ code, sessionId, baseUrl, onReady, onError, }) => {
4
+ const iframeRef = useRef(null);
5
+ const [isReady, setIsReady] = useState(false);
6
+ const effectiveSessionId = sessionId || `vibes-${Date.now()}`;
7
+ useEffect(() => {
8
+ const iframe = iframeRef.current;
9
+ if (!iframe || !code)
10
+ return;
11
+ const handleMessage = (event) => {
12
+ const expectedOrigin = baseUrl
13
+ ? baseUrl.includes('://')
14
+ ? new URL(baseUrl).hostname
15
+ : baseUrl
16
+ : 'vibesbox.dev';
17
+ if (expectedOrigin !== 'about:blank' && !event.origin.includes(expectedOrigin)) {
18
+ return;
19
+ }
20
+ const { data } = event;
21
+ if (data?.type === 'preview-ready') {
22
+ setIsReady(true);
23
+ onReady?.();
24
+ }
25
+ else if (data?.type === 'error') {
26
+ const error = new Error(data.error || 'Component error');
27
+ onError?.(error);
28
+ }
29
+ };
30
+ window.addEventListener('message', handleMessage);
31
+ iframe.src = baseUrl || `https://${effectiveSessionId}.vibesbox.dev/`;
32
+ const handleIframeLoad = () => {
33
+ if (!iframe.contentWindow)
34
+ return;
35
+ const normalizedCode = normalizeComponentExports(code);
36
+ const transformedCode = transformImports(normalizedCode);
37
+ let authToken;
38
+ try {
39
+ authToken =
40
+ localStorage.getItem('vibes-diy-auth-token') ||
41
+ localStorage.getItem('auth_token') ||
42
+ undefined;
43
+ }
44
+ catch {
45
+ // Ignore localStorage errors (privacy mode, SSR, etc.)
46
+ }
47
+ const messageData = {
48
+ type: 'execute-code',
49
+ code: transformedCode,
50
+ apiKey: 'sk-vibes-proxy-managed',
51
+ sessionId: effectiveSessionId,
52
+ authToken,
53
+ };
54
+ iframe.contentWindow.postMessage(messageData, '*');
55
+ };
56
+ iframe.addEventListener('load', handleIframeLoad);
57
+ return () => {
58
+ window.removeEventListener('message', handleMessage);
59
+ iframe.removeEventListener('load', handleIframeLoad);
60
+ };
61
+ }, [code, effectiveSessionId, onReady, onError]);
62
+ return (React.createElement("div", { "data-testid": "placeholder" },
63
+ React.createElement("iframe", { ref: iframeRef, title: "Vibes Component Preview" }),
64
+ !isReady && React.createElement("div", null, "Loading component...")));
65
+ };
66
+ export default IframeVibesComponent;
67
+ //# sourceMappingURL=IframeVibesComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IframeVibesComponent.js","sourceRoot":"","sources":["../../../jsr/hooks/vibes-gen/IframeVibesComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAUjF,MAAM,oBAAoB,GAAwC,CAAC,EACjE,IAAI,EACJ,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,EAAE,CAAC;IACJ,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAG9C,MAAM,kBAAkB,GAAG,SAAS,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;YAAE,OAAO;QAG7B,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC;YAE7C,MAAM,cAAc,GAAG,OAAO;gBAC5B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ;oBAC3B,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,cAAc,CAAC;YAGnB,IAAI,cAAc,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;YAEvB,IAAI,IAAI,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO,EAAE,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QAAA,CACF,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAGlD,MAAM,CAAC,GAAG,GAAG,OAAO,IAAI,WAAW,kBAAkB,gBAAgB,CAAC;QAGtE,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,OAAO;YAGlC,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAIzD,IAAI,SAA6B,CAAC;YAClC,IAAI,CAAC;gBACH,SAAS;oBACP,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC;wBAC5C,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;wBAClC,SAAS,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,uDAAuD;YACzD,CAAC;YAGD,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,wBAAwB;gBAChC,SAAS,EAAE,kBAAkB;gBAC7B,SAAS;aACV,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAAA,CACpD,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAAA,CACtD,CAAC;IAAA,CACH,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjD,OAAO,CACL,4CAAiB,aAAa;QAC5B,gCAAQ,GAAG,EAAE,SAAS,EAAE,KAAK,EAAC,yBAAyB,GAAG;QACzD,CAAC,OAAO,IAAI,wDAA+B,CACxC,CACP,CAAC;AAAA,CACH,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useVibes } from './use-vibes.js';
2
+ export type { UseVibesOptions, UseVibesResult, VibeDocument } from '@vibes.diy/use-vibes-types';
@@ -0,0 +1,2 @@
1
+ export { useVibes } from './use-vibes.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/hooks/vibes-gen/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { UseVibesOptions, UseVibesResult } from '@vibes.diy/use-vibes-types';
2
+ import { callAI as defaultCallAI } from 'call-ai';
3
+ export declare function useVibes(prompt: string, options?: UseVibesOptions, callAI?: typeof defaultCallAI): UseVibesResult;
@@ -0,0 +1,185 @@
1
+ import { makeBaseSystemPrompt, parseContent } from '@vibes.diy/prompts';
2
+ import { callAI as defaultCallAI } from 'call-ai';
3
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
4
+ import IframeVibesComponent from './IframeVibesComponent.js';
5
+ export function useVibes(prompt, options = {}, callAI = defaultCallAI) {
6
+ const [state, setState] = useState({
7
+ App: null,
8
+ code: null,
9
+ loading: false, // Start as false, will be set to true when generation starts
10
+ error: null,
11
+ progress: 0,
12
+ document: null,
13
+ });
14
+ const generationIdRef = useRef(null);
15
+ const mountedRef = useRef(true);
16
+ const progressTimerRef = useRef(null);
17
+ const [regenerationTrigger, setRegenerationTrigger] = useState(0);
18
+ const simulateProgress = useCallback((currentProgress = 0) => {
19
+ const increment = Math.random() * 20 + 10;
20
+ const newProgress = Math.min(currentProgress + increment, 90);
21
+ if (mountedRef.current) {
22
+ setState((prev) => ({ ...prev, progress: newProgress }));
23
+ if (newProgress < 90) {
24
+ progressTimerRef.current = setTimeout(() => simulateProgress(newProgress), 100 + Math.random() * 200);
25
+ }
26
+ }
27
+ }, []);
28
+ const regenerate = useCallback(() => {
29
+ generationIdRef.current = `regen-${Date.now()}`;
30
+ setRegenerationTrigger((prev) => prev + 1);
31
+ }, []);
32
+ useEffect(() => {
33
+ if (!mountedRef.current)
34
+ return;
35
+ if (!prompt || typeof prompt !== 'string' || prompt.trim().length === 0) {
36
+ setState((prev) => ({
37
+ ...prev,
38
+ loading: false,
39
+ error: new Error('Prompt required'),
40
+ App: null,
41
+ code: null,
42
+ progress: 0,
43
+ }));
44
+ return;
45
+ }
46
+ if (options.skip) {
47
+ setState((prev) => ({
48
+ ...prev,
49
+ loading: false,
50
+ error: null,
51
+ App: null,
52
+ code: null,
53
+ progress: 0,
54
+ }));
55
+ return;
56
+ }
57
+ const generationId = Date.now().toString();
58
+ generationIdRef.current = generationId;
59
+ const generateComponent = async () => {
60
+ try {
61
+ if (progressTimerRef.current) {
62
+ clearTimeout(progressTimerRef.current);
63
+ progressTimerRef.current = null;
64
+ }
65
+ setState((prev) => ({
66
+ ...prev,
67
+ loading: true,
68
+ error: null,
69
+ progress: 0,
70
+ App: null,
71
+ code: null,
72
+ }));
73
+ simulateProgress(0);
74
+ let result;
75
+ try {
76
+ result = await makeBaseSystemPrompt(options.model || 'anthropic/claude-sonnet-4.5', {
77
+ userPrompt: prompt,
78
+ history: [],
79
+ fallBackUrl: 'https://esm.sh/@vibes.diy/prompts/llms',
80
+ dependencies: options.dependencies,
81
+ dependenciesUserOverride: !!options.dependencies,
82
+ });
83
+ }
84
+ catch (error) {
85
+ result = {
86
+ systemPrompt: `You are a React component generator. Generate a complete React component based on the user's prompt.
87
+ Use Fireproof for data persistence. Begin the component with the import statements.
88
+ Return only the JSX code with a default export. Use modern React patterns with hooks if needed.`,
89
+ dependencies: options.dependencies || ['useFireproof'],
90
+ instructionalText: true,
91
+ demoData: false,
92
+ model: options.model || 'anthropic/claude-sonnet-4.5',
93
+ };
94
+ }
95
+ const systemPrompt = result.systemPrompt;
96
+ const metadata = {
97
+ dependencies: result.dependencies,
98
+ aiSelectedDependencies: result.dependencies,
99
+ instructionalText: result.instructionalText,
100
+ demoData: result.demoData,
101
+ model: result.model,
102
+ timestamp: Date.now(),
103
+ };
104
+ const messages = [
105
+ { role: 'system', content: systemPrompt },
106
+ { role: 'user', content: prompt },
107
+ ];
108
+ const aiResponse = await callAI(messages, {
109
+ model: metadata.model,
110
+ max_tokens: 2000,
111
+ });
112
+ if (generationIdRef.current !== generationId || !mountedRef.current) {
113
+ return;
114
+ }
115
+ const rawResponse = typeof aiResponse === 'string' ? aiResponse : '';
116
+ const { segments } = parseContent(rawResponse);
117
+ const codeSegment = segments.find((segment) => segment.type === 'code');
118
+ const extractedCode = codeSegment ? codeSegment.content : '';
119
+ const codeToUse = extractedCode || rawResponse;
120
+ const sessionId = `vibes-${Date.now()}`;
121
+ const App = () => React.createElement(IframeVibesComponent, {
122
+ code: codeToUse,
123
+ sessionId: sessionId,
124
+ onReady: () => {
125
+ },
126
+ onError: (_error) => {
127
+ },
128
+ });
129
+ setState((prev) => ({
130
+ ...prev,
131
+ App,
132
+ code: codeToUse,
133
+ loading: false,
134
+ progress: 100,
135
+ document: {
136
+ _id: `vibe-${Date.now()}`,
137
+ prompt,
138
+ code: codeToUse,
139
+ title: 'Generated Component',
140
+ ...metadata,
141
+ created_at: Date.now(),
142
+ version: 1,
143
+ },
144
+ }));
145
+ }
146
+ catch (error) {
147
+ if (generationIdRef.current !== generationId || !mountedRef.current) {
148
+ return;
149
+ }
150
+ setState((prev) => ({
151
+ ...prev,
152
+ loading: false,
153
+ error: error instanceof Error ? error : new Error('Generation failed'),
154
+ progress: 0,
155
+ }));
156
+ }
157
+ };
158
+ generateComponent();
159
+ return () => {
160
+ if (progressTimerRef.current) {
161
+ clearTimeout(progressTimerRef.current);
162
+ progressTimerRef.current = null;
163
+ }
164
+ };
165
+ }, [prompt, JSON.stringify(options), callAI, simulateProgress, regenerationTrigger]);
166
+ useEffect(() => {
167
+ mountedRef.current = true;
168
+ return () => {
169
+ mountedRef.current = false;
170
+ if (progressTimerRef.current) {
171
+ clearTimeout(progressTimerRef.current);
172
+ }
173
+ };
174
+ }, []);
175
+ return {
176
+ App: state.App,
177
+ code: state.code,
178
+ loading: state.loading,
179
+ error: state.error,
180
+ progress: state.progress,
181
+ regenerate,
182
+ document: state.document,
183
+ };
184
+ }
185
+ //# sourceMappingURL=use-vibes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-vibes.js","sourceRoot":"","sources":["../../../jsr/hooks/vibes-gen/use-vibes.ts"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,68 @@
1
+ import type { ToCloudAttachable } from '@fireproof/core-types-protocols-cloud';
2
+ import { fireproof, ImgFile, type Database, type UseFpToCloudParam } from 'use-fireproof';
3
+ import { ManualRedirectStrategy, isJWTExpired } from './ManualRedirectStrategy.js';
4
+ export { fireproof, ImgFile, ManualRedirectStrategy, isJWTExpired };
5
+ export type * as Fireproof from 'use-fireproof';
6
+ export declare function toCloud(opts?: UseFpToCloudParam): ToCloudAttachable;
7
+ export declare function useFireproof(nameOrDatabase?: string | Database): {
8
+ database: Database;
9
+ useDocument: import("use-fireproof").UseDocument;
10
+ useLiveQuery: import("use-fireproof").UseLiveQuery;
11
+ useAllDocs: import("use-fireproof").UseAllDocs;
12
+ useChanges: import("use-fireproof").UseChanges;
13
+ attach: import("use-fireproof").AttachState;
14
+ enableSync: () => void;
15
+ disableSync: () => void;
16
+ syncEnabled: boolean | null;
17
+ share: (options: {
18
+ email: string;
19
+ role?: "admin" | "member" | undefined;
20
+ right?: "read" | "write" | undefined;
21
+ }) => Promise<{
22
+ success: boolean;
23
+ email: string;
24
+ role: string;
25
+ right: string;
26
+ message: string;
27
+ }>;
28
+ };
29
+ import { callAI } from 'call-ai';
30
+ export { callAI, callAI as callAi };
31
+ export type * as CallAI from 'call-ai';
32
+ export { default as ImgGen } from './components/ImgGen.js';
33
+ export type { ImgGenProps } from './components/ImgGen.js';
34
+ export { ControlsBar } from './components/ControlsBar.js';
35
+ export { PromptBar } from './components/PromptBar.js';
36
+ export { VibesButton } from './components/VibesButton/VibesButton.js';
37
+ export { VibesSwitch } from './components/VibesSwitch/VibesSwitch.js';
38
+ export { hashInput, useImageGen } from './hooks/image-gen/index.js';
39
+ export { defaultClasses } from './utils/style-utils.js';
40
+ export type { ImgGenClasses } from '@vibes.diy/use-vibes-types';
41
+ export { base64ToFile } from './utils/base64.js';
42
+ export { ImgGenDisplay } from './components/ImgGenUtils/ImgGenDisplay.js';
43
+ export { ImgGenDisplayPlaceholder } from './components/ImgGenUtils/ImgGenDisplayPlaceholder.js';
44
+ export { ImgGenModal, type ImgGenModalProps } from './components/ImgGenUtils/ImgGenModal.js';
45
+ export { ImageOverlay } from './components/ImgGenUtils/overlays/ImageOverlay.js';
46
+ export { addNewVersion, MODULE_STATE } from './hooks/image-gen/utils.js';
47
+ export type { ImageDocument, PartialImageDocument, UseImageGenOptions, UseImageGenResult, } from '@vibes.diy/use-vibes-types';
48
+ export type { UseVibesOptions, UseVibesResult, VibeDocument } from '@vibes.diy/use-vibes-types';
49
+ export { useVibes } from './hooks/vibes-gen/index.js';
50
+ export { VibeControl } from './components/VibeControl.js';
51
+ export type { VibeControlProps } from './components/VibeControl.js';
52
+ export { HiddenMenuWrapper } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
53
+ export type { HiddenMenuWrapperProps } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
54
+ export { hiddenMenuTheme } from './components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js';
55
+ export { createVibeControlStyles, defaultVibeControlClasses, vibeControlTheme, } from './utils/vibe-control-styles.js';
56
+ export type { VibeControlClasses } from './utils/vibe-control-styles.js';
57
+ export { VibesPanel } from './components/VibesPanel/VibesPanel.js';
58
+ export type { VibesPanelProps } from './components/VibesPanel/VibesPanel.js';
59
+ export { AuthWall } from './components/AuthWall/AuthWall.js';
60
+ export type { AuthWallProps } from './components/AuthWall/AuthWall.js';
61
+ export { BrutalistCard } from './components/BrutalistCard/index.js';
62
+ export type { BrutalistCardProps, BrutalistCardVariant, BrutalistCardSize, } from './components/BrutalistCard/index.js';
63
+ export { mountVibesApp, mountVibesAppToBody } from './vibe-app-mount.js';
64
+ export type { MountVibesAppOptions, MountVibesAppResult } from './vibe-app-mount.js';
65
+ export { getAppSlug, getFullAppIdentifier, isDevelopmentEnvironment, isProductionEnvironment, generateRandomInstanceId, generateFreshDataUrl, generateRemixUrl, parseSubdomain, constructSubdomain, isValidSubdomain, generateInstallId, } from './utils/appSlug.js';
66
+ export type { ParsedSubdomain } from './utils/appSlug.js';
67
+ export { initVibesInstalls } from './install-tracker.js';
68
+ export type { Install, VibesInstallTrackerOptions, VibesInstallTrackerResult, } from './install-tracker.js';