@lastbrain/ai-ui-react 1.0.32 → 1.0.34
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.
- package/dist/components/AiChipLabel.d.ts +3 -1
- package/dist/components/AiChipLabel.d.ts.map +1 -1
- package/dist/components/AiChipLabel.js +3 -1
- package/dist/components/AiContextButton.js +9 -9
- package/package.json +2 -2
- package/src/components/AiChipLabel.tsx +6 -0
- package/src/components/AiContextButton.tsx +10 -10
|
@@ -14,8 +14,10 @@ export interface AiChipInputProps {
|
|
|
14
14
|
maxChips?: number;
|
|
15
15
|
allowDuplicates?: boolean;
|
|
16
16
|
className?: string;
|
|
17
|
+
storeOutputs?: boolean;
|
|
18
|
+
artifactTitle?: string;
|
|
17
19
|
baseUrl?: string;
|
|
18
20
|
apiKeyId?: string;
|
|
19
21
|
}
|
|
20
|
-
export declare function AiChipInput({ value, onChange, placeholder, context, maxChips, allowDuplicates, className, baseUrl: propBaseUrl, apiKeyId: propApiKeyId, }: AiChipInputProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare function AiChipInput({ value, onChange, placeholder, context, maxChips, allowDuplicates, className, storeOutputs, artifactTitle, baseUrl: propBaseUrl, apiKeyId: propApiKeyId, }: AiChipInputProps): import("react/jsx-runtime").JSX.Element;
|
|
21
23
|
//# sourceMappingURL=AiChipLabel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiChipLabel.d.ts","sourceRoot":"","sources":["../../src/components/AiChipLabel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAmB,EACnB,SAAS,EACT,KAAK,EAAE,WAAW,GACnB,EAAE,gBAAgB,2CAgClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AiChipLabel.d.ts","sourceRoot":"","sources":["../../src/components/AiChipLabel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAmB,EACnB,SAAS,EACT,KAAK,EAAE,WAAW,GACnB,EAAE,gBAAgB,2CAgClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAU,EACV,QAAQ,EACR,WAAoE,EACpE,OAAO,EACP,QAAQ,EACR,eAAuB,EACvB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,YAAY,GACvB,EAAE,gBAAgB,2CA8LlB"}
|
|
@@ -33,7 +33,7 @@ export function AiChipLabel({ children, variant = "default", className, style: c
|
|
|
33
33
|
...customStyle,
|
|
34
34
|
}, className: className, children: children }));
|
|
35
35
|
}
|
|
36
|
-
export function AiChipInput({ value = [], onChange, placeholder = "Tapez et appuyez sur Entrée pour ajouter des tags...", context, maxChips, allowDuplicates = false, className, baseUrl: propBaseUrl, apiKeyId: propApiKeyId, }) {
|
|
36
|
+
export function AiChipInput({ value = [], onChange, placeholder = "Tapez et appuyez sur Entrée pour ajouter des tags...", context, maxChips, allowDuplicates = false, className, storeOutputs, artifactTitle, baseUrl: propBaseUrl, apiKeyId: propApiKeyId, }) {
|
|
37
37
|
const [inputValue, setInputValue] = useState("");
|
|
38
38
|
const [showPromptPanel, setShowPromptPanel] = useState(false);
|
|
39
39
|
const inputRef = useRef(null);
|
|
@@ -88,6 +88,8 @@ Exemple de réponse attendue: javascript, react, frontend, api, development`;
|
|
|
88
88
|
const response = await generateText({
|
|
89
89
|
model,
|
|
90
90
|
prompt: instruction,
|
|
91
|
+
storeOutputs,
|
|
92
|
+
artifactTitle: artifactTitle || "Tags générés par IA",
|
|
91
93
|
});
|
|
92
94
|
const chips = parseChipsFromResponse(response.text);
|
|
93
95
|
// Fermer le modal immédiatement
|
|
@@ -16,19 +16,19 @@ export function AiContextButton({ baseUrl: propBaseUrl, apiKeyId: propApiKeyId,
|
|
|
16
16
|
const [analysisResult, setAnalysisResult] = useState(null);
|
|
17
17
|
const { showUsageToast, toastData, toastKey, clearToast } = useUsageToast();
|
|
18
18
|
const { showErrorToast, errorData, errorKey, clearError } = useErrorToast();
|
|
19
|
-
//
|
|
19
|
+
// Récupérer le contexte AiProvider avec fallback sur les props
|
|
20
|
+
const aiContext = useAiContext();
|
|
21
|
+
const baseUrl = propBaseUrl ?? aiContext.baseUrl;
|
|
22
|
+
const apiKeyId = propApiKeyId ?? aiContext.apiKeyId;
|
|
23
|
+
// Utiliser les valeurs résolues pour les hooks
|
|
20
24
|
const { models, loading: modelsLoading } = useAiModels({
|
|
21
|
-
baseUrl
|
|
22
|
-
apiKeyId
|
|
25
|
+
baseUrl,
|
|
26
|
+
apiKeyId,
|
|
23
27
|
});
|
|
24
28
|
const { generateText: callText, loading } = useAiCallText({
|
|
25
|
-
baseUrl
|
|
26
|
-
apiKeyId
|
|
29
|
+
baseUrl,
|
|
30
|
+
apiKeyId,
|
|
27
31
|
});
|
|
28
|
-
// Récupérer le contexte AiProvider avec fallback sur les props pour l'affichage
|
|
29
|
-
const aiContext = useAiContext();
|
|
30
|
-
const baseUrl = propBaseUrl ?? aiContext.baseUrl;
|
|
31
|
-
const apiKeyId = propApiKeyId ?? aiContext.apiKeyId;
|
|
32
32
|
const handleOpenPanel = () => {
|
|
33
33
|
console.log("Opening panel, models:", models, "loading:", modelsLoading);
|
|
34
34
|
setIsOpen(true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lastbrain/ai-ui-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"description": "Headless React components for LastBrain AI UI Kit",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"lucide-react": "^0.257.0",
|
|
51
|
-
"@lastbrain/ai-ui-core": "1.0.
|
|
51
|
+
"@lastbrain/ai-ui-core": "1.0.23"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/react": "^19.2.0",
|
|
@@ -63,6 +63,8 @@ export interface AiChipInputProps {
|
|
|
63
63
|
maxChips?: number;
|
|
64
64
|
allowDuplicates?: boolean;
|
|
65
65
|
className?: string;
|
|
66
|
+
storeOutputs?: boolean; // Pour stocker les résultats (API externe)
|
|
67
|
+
artifactTitle?: string; // Titre de l'artefact stocké
|
|
66
68
|
// Props optionnelles pour override du contexte (si nécessaire)
|
|
67
69
|
baseUrl?: string;
|
|
68
70
|
apiKeyId?: string;
|
|
@@ -76,6 +78,8 @@ export function AiChipInput({
|
|
|
76
78
|
maxChips,
|
|
77
79
|
allowDuplicates = false,
|
|
78
80
|
className,
|
|
81
|
+
storeOutputs,
|
|
82
|
+
artifactTitle,
|
|
79
83
|
baseUrl: propBaseUrl,
|
|
80
84
|
apiKeyId: propApiKeyId,
|
|
81
85
|
}: AiChipInputProps) {
|
|
@@ -140,6 +144,8 @@ Exemple de réponse attendue: javascript, react, frontend, api, development`;
|
|
|
140
144
|
const response = await generateText({
|
|
141
145
|
model,
|
|
142
146
|
prompt: instruction,
|
|
147
|
+
storeOutputs,
|
|
148
|
+
artifactTitle: artifactTitle || "Tags générés par IA",
|
|
143
149
|
});
|
|
144
150
|
|
|
145
151
|
const chips = parseChipsFromResponse(response.text);
|
|
@@ -63,21 +63,21 @@ export function AiContextButton({
|
|
|
63
63
|
const { showUsageToast, toastData, toastKey, clearToast } = useUsageToast();
|
|
64
64
|
const { showErrorToast, errorData, errorKey, clearError } = useErrorToast();
|
|
65
65
|
|
|
66
|
-
//
|
|
66
|
+
// Récupérer le contexte AiProvider avec fallback sur les props
|
|
67
|
+
const aiContext = useAiContext();
|
|
68
|
+
const baseUrl = propBaseUrl ?? aiContext.baseUrl;
|
|
69
|
+
const apiKeyId = propApiKeyId ?? aiContext.apiKeyId;
|
|
70
|
+
|
|
71
|
+
// Utiliser les valeurs résolues pour les hooks
|
|
67
72
|
const { models, loading: modelsLoading } = useAiModels({
|
|
68
|
-
baseUrl
|
|
69
|
-
apiKeyId
|
|
73
|
+
baseUrl,
|
|
74
|
+
apiKeyId,
|
|
70
75
|
});
|
|
71
76
|
const { generateText: callText, loading } = useAiCallText({
|
|
72
|
-
baseUrl
|
|
73
|
-
apiKeyId
|
|
77
|
+
baseUrl,
|
|
78
|
+
apiKeyId,
|
|
74
79
|
});
|
|
75
80
|
|
|
76
|
-
// Récupérer le contexte AiProvider avec fallback sur les props pour l'affichage
|
|
77
|
-
const aiContext = useAiContext();
|
|
78
|
-
const baseUrl = propBaseUrl ?? aiContext.baseUrl;
|
|
79
|
-
const apiKeyId = propApiKeyId ?? aiContext.apiKeyId;
|
|
80
|
-
|
|
81
81
|
const handleOpenPanel = () => {
|
|
82
82
|
console.log("Opening panel, models:", models, "loading:", modelsLoading);
|
|
83
83
|
setIsOpen(true);
|