@vibes.diy/use-vibes-base 0.14.1 → 0.14.2
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.
|
@@ -1,19 +1,72 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect, useId } from 'react';
|
|
2
2
|
import { VibesButton } from '../VibesButton/VibesButton.js';
|
|
3
3
|
import { generateFreshDataUrl, generateRemixUrl } from '../../utils/appSlug.js';
|
|
4
4
|
export function VibesPanel({ style, className } = {}) {
|
|
5
|
-
const
|
|
5
|
+
const emailId = useId();
|
|
6
|
+
const [mode, setMode] = useState('default');
|
|
7
|
+
const [email, setEmail] = useState('');
|
|
8
|
+
const [inviteStatus, setInviteStatus] = useState('idle');
|
|
9
|
+
const [inviteMessage, setInviteMessage] = useState('');
|
|
6
10
|
const handleMutateClick = () => {
|
|
7
|
-
if (
|
|
8
|
-
|
|
11
|
+
if (mode === 'default') {
|
|
12
|
+
setMode('mutate');
|
|
9
13
|
}
|
|
10
14
|
};
|
|
15
|
+
const handleInviteClick = () => {
|
|
16
|
+
if (mode === 'default') {
|
|
17
|
+
setMode('invite');
|
|
18
|
+
setEmail('');
|
|
19
|
+
setInviteStatus('idle');
|
|
20
|
+
setInviteMessage('');
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const handleBackClick = () => {
|
|
24
|
+
setMode('default');
|
|
25
|
+
};
|
|
11
26
|
const handleFreshDataClick = () => {
|
|
12
27
|
window.open(generateFreshDataUrl(), '_top');
|
|
13
28
|
};
|
|
14
29
|
const handleChangeCodeClick = () => {
|
|
15
30
|
window.open(generateRemixUrl(), '_top');
|
|
16
31
|
};
|
|
32
|
+
const handleLogoutClick = () => {
|
|
33
|
+
document.dispatchEvent(new CustomEvent('vibes-sync-disable'));
|
|
34
|
+
setTimeout(() => {
|
|
35
|
+
window.location.reload();
|
|
36
|
+
}, 100);
|
|
37
|
+
};
|
|
38
|
+
const handleInviteSubmit = (e) => {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
if (!email.trim())
|
|
41
|
+
return;
|
|
42
|
+
setInviteStatus('sending');
|
|
43
|
+
setInviteMessage('');
|
|
44
|
+
document.dispatchEvent(new CustomEvent('vibes-share-request', {
|
|
45
|
+
detail: {
|
|
46
|
+
email: email.trim(),
|
|
47
|
+
role: 'member',
|
|
48
|
+
right: 'read',
|
|
49
|
+
},
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const handleShareSuccess = (event) => {
|
|
54
|
+
const customEvent = event;
|
|
55
|
+
setInviteStatus('success');
|
|
56
|
+
setInviteMessage(customEvent.detail?.message || `Invitation sent to ${customEvent.detail?.email}!`);
|
|
57
|
+
};
|
|
58
|
+
const handleShareError = (event) => {
|
|
59
|
+
const customEvent = event;
|
|
60
|
+
setInviteStatus('error');
|
|
61
|
+
setInviteMessage(customEvent.detail?.error?.message || 'Failed to send invitation. Please try again.');
|
|
62
|
+
};
|
|
63
|
+
document.addEventListener('vibes-share-success', handleShareSuccess);
|
|
64
|
+
document.addEventListener('vibes-share-error', handleShareError);
|
|
65
|
+
return () => {
|
|
66
|
+
document.removeEventListener('vibes-share-success', handleShareSuccess);
|
|
67
|
+
document.removeEventListener('vibes-share-error', handleShareError);
|
|
68
|
+
};
|
|
69
|
+
}, []);
|
|
17
70
|
const containerStyle = {
|
|
18
71
|
padding: '12px',
|
|
19
72
|
display: 'flex',
|
|
@@ -30,6 +83,36 @@ export function VibesPanel({ style, className } = {}) {
|
|
|
30
83
|
alignItems: 'center',
|
|
31
84
|
gap: '12px',
|
|
32
85
|
width: '250px',
|
|
33
|
-
} },
|
|
86
|
+
} }, mode === 'mutate' ? (React.createElement(React.Fragment, null, React.createElement(VibesButton, { variant: "primary", onClick: handleFreshDataClick }, "Fresh Data"), React.createElement(VibesButton, { variant: "secondary", onClick: handleChangeCodeClick }, "Change the Code"), React.createElement(VibesButton, { variant: "tertiary", onClick: handleBackClick }, "\u2190 Back"))) : mode === 'invite' ? (React.createElement(React.Fragment, null, inviteStatus === 'idle' ? (React.createElement("form", { onSubmit: handleInviteSubmit, style: { width: '100%', display: 'flex', flexDirection: 'column', gap: '12px' } }, React.createElement("label", { htmlFor: emailId, style: { alignSelf: 'flex-start', fontWeight: 600 } }, "Invite by email"), React.createElement("input", { id: emailId, type: "email", placeholder: "friend@example.com", value: email, onChange: (e) => setEmail(e.target.value), style: {
|
|
87
|
+
width: '100%',
|
|
88
|
+
padding: '1rem',
|
|
89
|
+
background: '#fff',
|
|
90
|
+
color: '#1a1a1a',
|
|
91
|
+
border: '3px solid #1a1a1a',
|
|
92
|
+
borderRadius: '12px',
|
|
93
|
+
fontSize: '1rem',
|
|
94
|
+
fontWeight: 500,
|
|
95
|
+
letterSpacing: '0.02em',
|
|
96
|
+
boxShadow: '4px 5px 0px 0px #666',
|
|
97
|
+
transition: 'all 0.15s ease',
|
|
98
|
+
outline: 'none',
|
|
99
|
+
boxSizing: 'border-box',
|
|
100
|
+
}, autoComplete: "email", required: true }), React.createElement(VibesButton, { variant: "primary", type: "submit", disabled: !email.trim() }, "Send Invite"))) : (React.createElement("div", { id: "invite-status", role: "status", "aria-live": "polite", style: {
|
|
101
|
+
padding: '0.75rem 1rem',
|
|
102
|
+
background: '#fff',
|
|
103
|
+
color: '#1a1a1a',
|
|
104
|
+
border: '3px solid #1a1a1a',
|
|
105
|
+
borderRadius: '12px',
|
|
106
|
+
fontSize: '0.875rem',
|
|
107
|
+
fontWeight: 500,
|
|
108
|
+
textAlign: 'center',
|
|
109
|
+
letterSpacing: '0.02em',
|
|
110
|
+
boxShadow: inviteStatus === 'sending'
|
|
111
|
+
? '4px 5px 0px 0px #666'
|
|
112
|
+
: inviteStatus === 'error'
|
|
113
|
+
? '4px 5px 0px 0px #DA291C'
|
|
114
|
+
: '4px 5px 0px 0px #51cf66',
|
|
115
|
+
transition: 'all 0.15s ease',
|
|
116
|
+
} }, inviteStatus === 'sending' ? 'Inviting...' : inviteMessage)), React.createElement(VibesButton, { variant: "tertiary", onClick: handleBackClick }, "\u2190 Back"))) : (React.createElement(React.Fragment, null, React.createElement(VibesButton, { variant: "primary", onClick: handleLogoutClick }, "Logout"), React.createElement(VibesButton, { variant: "secondary", onClick: handleMutateClick }, "\uD83E\uDDDF Mutate"), React.createElement(VibesButton, { variant: "tertiary", onClick: handleInviteClick }, "Invite"))))));
|
|
34
117
|
}
|
|
35
118
|
//# sourceMappingURL=VibesPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibesPanel.js","sourceRoot":"","sources":["../../../jsr/components/VibesPanel/VibesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VibesPanel.js","sourceRoot":"","sources":["../../../jsr/components/VibesPanel/VibesPanel.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/use-vibes-base",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core components and utilities for use-vibes (internal workspace package)",
|
|
6
6
|
"exports": {
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"@fireproof/core-runtime": "^0.23.14",
|
|
16
16
|
"@fireproof/core-types-base": "^0.23.14",
|
|
17
17
|
"@fireproof/core-types-protocols-cloud": "^0.23.14",
|
|
18
|
-
"@vibes.diy/prompts": "^0.14.
|
|
19
|
-
"@vibes.diy/use-vibes-types": "^0.14.
|
|
20
|
-
"call-ai": "^0.14.
|
|
18
|
+
"@vibes.diy/prompts": "^0.14.2",
|
|
19
|
+
"@vibes.diy/use-vibes-types": "^0.14.2",
|
|
20
|
+
"call-ai": "^0.14.2",
|
|
21
21
|
"react-dom": ">=19.1.0",
|
|
22
22
|
"use-fireproof": "^0.23.14",
|
|
23
23
|
"uuid": "^11.1.0"
|