@burtson-labs/bandit-engine 2.0.121 → 2.0.123
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/chat-CGZD7ZQF.mjs +16 -0
- package/dist/chat-provider.js +33 -1
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +5 -5
- package/dist/{chunk-THDQFHQZ.mjs → chunk-4RRQQPFZ.mjs} +4 -4
- package/dist/{chunk-26KZF54U.mjs → chunk-4T6HJTYD.mjs} +1842 -1347
- package/dist/chunk-4T6HJTYD.mjs.map +1 -0
- package/dist/{chunk-37JLV5PU.mjs → chunk-6ONL4SRK.mjs} +35 -3
- package/dist/chunk-6ONL4SRK.mjs.map +1 -0
- package/dist/{chunk-LWHSOEPR.mjs → chunk-EORIRPPX.mjs} +2 -2
- package/dist/{chunk-LWHSOEPR.mjs.map → chunk-EORIRPPX.mjs.map} +1 -1
- package/dist/{chunk-HAUDGBUS.mjs → chunk-F7JXIW6T.mjs} +2 -2
- package/dist/{chunk-VCUVOGOO.mjs → chunk-JJTUEC2E.mjs} +98 -248
- package/dist/chunk-JJTUEC2E.mjs.map +1 -0
- package/dist/{chunk-BN3D45E2.mjs → chunk-K2JGFKEB.mjs} +2 -2
- package/dist/{chunk-HLNEVIFS.mjs → chunk-RLMGTTK7.mjs} +9 -9
- package/dist/{chunk-VTKRZNLI.mjs → chunk-SAQUEXYS.mjs} +5 -5
- package/dist/{chunk-W2EPDR5G.mjs → chunk-WSNV6EX5.mjs} +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4621 -4232
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -10
- package/dist/management/management.js +2155 -1766
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +8 -8
- package/dist/modals/chat-modal/chat-modal.js +121 -241
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +4 -4
- package/dist/{modelStore-KCJPXFKO.mjs → modelStore-U57LUIIB.mjs} +2 -2
- package/dist/{public-nrOOzXCZ.d.ts → public-20My32EB.d.mts} +6 -1
- package/dist/{public-nrOOzXCZ.d.mts → public-20My32EB.d.ts} +6 -1
- package/dist/public-types.d.mts +1 -1
- package/dist/public-types.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chat-NF4FKMA4.mjs +0 -16
- package/dist/chunk-26KZF54U.mjs.map +0 -1
- package/dist/chunk-37JLV5PU.mjs.map +0 -1
- package/dist/chunk-VCUVOGOO.mjs.map +0 -1
- /package/dist/{chat-NF4FKMA4.mjs.map → chat-CGZD7ZQF.mjs.map} +0 -0
- /package/dist/{chunk-THDQFHQZ.mjs.map → chunk-4RRQQPFZ.mjs.map} +0 -0
- /package/dist/{chunk-HAUDGBUS.mjs.map → chunk-F7JXIW6T.mjs.map} +0 -0
- /package/dist/{chunk-BN3D45E2.mjs.map → chunk-K2JGFKEB.mjs.map} +0 -0
- /package/dist/{chunk-HLNEVIFS.mjs.map → chunk-RLMGTTK7.mjs.map} +0 -0
- /package/dist/{chunk-VTKRZNLI.mjs.map → chunk-SAQUEXYS.mjs.map} +0 -0
- /package/dist/{chunk-W2EPDR5G.mjs.map → chunk-WSNV6EX5.mjs.map} +0 -0
- /package/dist/{modelStore-KCJPXFKO.mjs.map → modelStore-U57LUIIB.mjs.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
management_default
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-RLMGTTK7.mjs";
|
|
4
|
+
import "../chunk-WSNV6EX5.mjs";
|
|
5
|
+
import "../chunk-F7JXIW6T.mjs";
|
|
6
|
+
import "../chunk-K2JGFKEB.mjs";
|
|
7
|
+
import "../chunk-4RRQQPFZ.mjs";
|
|
8
|
+
import "../chunk-JJTUEC2E.mjs";
|
|
9
|
+
import "../chunk-6ONL4SRK.mjs";
|
|
10
|
+
import "../chunk-EORIRPPX.mjs";
|
|
11
11
|
import "../chunk-43MLINPL.mjs";
|
|
12
12
|
import "../chunk-KCI46M23.mjs";
|
|
13
13
|
import "../chunk-BJTO5JO5.mjs";
|
|
@@ -4700,6 +4700,9 @@ var createMuiLucideIcon = (Icon) => {
|
|
|
4700
4700
|
return MuiLucideIcon;
|
|
4701
4701
|
};
|
|
4702
4702
|
var AddIcon = createMuiLucideIcon(import_lucide_react.Plus);
|
|
4703
|
+
var GhostIcon = createMuiLucideIcon(import_lucide_react.Ghost);
|
|
4704
|
+
var PanelLeftIcon = createMuiLucideIcon(import_lucide_react.PanelLeft);
|
|
4705
|
+
var ComposeIcon = createMuiLucideIcon(import_lucide_react.SquarePen);
|
|
4703
4706
|
var CloudDoneIcon = createMuiLucideIcon(import_lucide_react.CloudCheck);
|
|
4704
4707
|
var CloudOffIcon = createMuiLucideIcon(import_lucide_react.CloudOff);
|
|
4705
4708
|
var ErrorOutlineIcon = createMuiLucideIcon(import_lucide_react.CircleAlert);
|
|
@@ -7569,6 +7572,7 @@ async function loadConversations() {
|
|
|
7569
7572
|
return (raw || []).map(normalizeConversation);
|
|
7570
7573
|
}
|
|
7571
7574
|
async function saveConversation(conversation) {
|
|
7575
|
+
if (conversation.incognito) return;
|
|
7572
7576
|
await indexedDBService_default.put(DB_NAME4, DB_VERSION3, STORE_NAME4, conversation, storeConfigs4);
|
|
7573
7577
|
}
|
|
7574
7578
|
async function deleteConversationFromDB(id) {
|
|
@@ -7638,6 +7642,34 @@ var useConversationStore = (0, import_zustand9.create)((set, get) => ({
|
|
|
7638
7642
|
};
|
|
7639
7643
|
});
|
|
7640
7644
|
},
|
|
7645
|
+
toggleIncognito: () => {
|
|
7646
|
+
const { conversations, currentId } = get();
|
|
7647
|
+
const current = conversations.find((c) => c.id === currentId);
|
|
7648
|
+
if (current?.incognito) {
|
|
7649
|
+
useAIQueryStore.getState().reset();
|
|
7650
|
+
set((state) => ({
|
|
7651
|
+
conversations: state.conversations.filter((c) => !c.incognito),
|
|
7652
|
+
currentId: null
|
|
7653
|
+
}));
|
|
7654
|
+
return;
|
|
7655
|
+
}
|
|
7656
|
+
const { selectedModel } = useModelStore.getState();
|
|
7657
|
+
const now = /* @__PURE__ */ new Date();
|
|
7658
|
+
const newConv = normalizeConversation({
|
|
7659
|
+
id: (0, import_uuid2.v4)(),
|
|
7660
|
+
name: "Incognito chat",
|
|
7661
|
+
history: [],
|
|
7662
|
+
model: selectedModel,
|
|
7663
|
+
createdAt: now,
|
|
7664
|
+
updatedAt: now,
|
|
7665
|
+
version: 0,
|
|
7666
|
+
incognito: true
|
|
7667
|
+
});
|
|
7668
|
+
set((state) => ({
|
|
7669
|
+
conversations: [...state.conversations, newConv],
|
|
7670
|
+
currentId: newConv.id
|
|
7671
|
+
}));
|
|
7672
|
+
},
|
|
7641
7673
|
deleteConversation: (id) => {
|
|
7642
7674
|
const runHydrate = async () => {
|
|
7643
7675
|
try {
|
|
@@ -8492,7 +8524,7 @@ function buildProjectMeta(project) {
|
|
|
8492
8524
|
}
|
|
8493
8525
|
function snapshotConversationMetaMap(conversations) {
|
|
8494
8526
|
return new Map(
|
|
8495
|
-
conversations.map((conversation) => [
|
|
8527
|
+
conversations.filter((conversation) => !conversation.incognito).map((conversation) => [
|
|
8496
8528
|
conversation.id,
|
|
8497
8529
|
buildConversationMeta(conversation)
|
|
8498
8530
|
])
|
|
@@ -8523,6 +8555,7 @@ function ensureTrackersInitialized() {
|
|
|
8523
8555
|
}
|
|
8524
8556
|
const nextMeta = snapshotConversationMetaMap(conversations);
|
|
8525
8557
|
for (const conversation of conversations) {
|
|
8558
|
+
if (conversation.incognito) continue;
|
|
8526
8559
|
const previous = conversationsMeta.get(conversation.id);
|
|
8527
8560
|
const updatedAtMs = conversation.updatedAt ? conversation.updatedAt.getTime() : 0;
|
|
8528
8561
|
if (!previous) {
|
|
@@ -8613,6 +8646,8 @@ if (typeof window !== "undefined") {
|
|
|
8613
8646
|
});
|
|
8614
8647
|
}
|
|
8615
8648
|
function queueConversationUpsert(id) {
|
|
8649
|
+
const conversation = useConversationStore.getState().conversations.find((c) => c.id === id);
|
|
8650
|
+
if (conversation?.incognito) return;
|
|
8616
8651
|
useConversationSyncStore.setState((state) => {
|
|
8617
8652
|
const upserts = new Set(state.pendingConversationUpserts);
|
|
8618
8653
|
const deletes = new Set(state.pendingConversationDeletes);
|
|
@@ -14871,6 +14906,7 @@ var MemoryModal = ({ open, onClose }) => {
|
|
|
14871
14906
|
},
|
|
14872
14907
|
disableSwipeToOpen: true,
|
|
14873
14908
|
ModalProps: { keepMounted: true },
|
|
14909
|
+
sx: { zIndex: 2e3 },
|
|
14874
14910
|
PaperProps: {
|
|
14875
14911
|
sx: {
|
|
14876
14912
|
height: "min(720px, 82vh)",
|
|
@@ -16887,7 +16923,7 @@ var FeedbackModal = ({
|
|
|
16887
16923
|
sx: {
|
|
16888
16924
|
display: "grid",
|
|
16889
16925
|
gridTemplateRows: "auto auto auto auto",
|
|
16890
|
-
rowGap: "
|
|
16926
|
+
rowGap: "16px",
|
|
16891
16927
|
columnGap: "0px",
|
|
16892
16928
|
width: "100%"
|
|
16893
16929
|
},
|
|
@@ -16903,35 +16939,6 @@ var FeedbackModal = ({
|
|
|
16903
16939
|
mb: 0
|
|
16904
16940
|
},
|
|
16905
16941
|
children: [
|
|
16906
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
16907
|
-
import_material13.Box,
|
|
16908
|
-
{
|
|
16909
|
-
sx: {
|
|
16910
|
-
gridColumn: "1 / -1",
|
|
16911
|
-
display: "flex",
|
|
16912
|
-
alignItems: "center",
|
|
16913
|
-
gap: "8px",
|
|
16914
|
-
mb: 0,
|
|
16915
|
-
mt: 2,
|
|
16916
|
-
alignSelf: "end"
|
|
16917
|
-
},
|
|
16918
|
-
children: [
|
|
16919
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.MessageSquare, { size: 20, color: theme.palette.text.primary }),
|
|
16920
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
16921
|
-
import_material13.Typography,
|
|
16922
|
-
{
|
|
16923
|
-
variant: "h6",
|
|
16924
|
-
sx: {
|
|
16925
|
-
fontWeight: 600,
|
|
16926
|
-
color: theme.palette.text.primary,
|
|
16927
|
-
mb: 0
|
|
16928
|
-
},
|
|
16929
|
-
children: "Feedback Details"
|
|
16930
|
-
}
|
|
16931
|
-
)
|
|
16932
|
-
]
|
|
16933
|
-
}
|
|
16934
|
-
),
|
|
16935
16942
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
16936
16943
|
import_material13.TextField,
|
|
16937
16944
|
{
|
|
@@ -17073,7 +17080,7 @@ var FeedbackModal = ({
|
|
|
17073
17080
|
{
|
|
17074
17081
|
fullWidth: true,
|
|
17075
17082
|
multiline: true,
|
|
17076
|
-
rows:
|
|
17083
|
+
rows: 3,
|
|
17077
17084
|
label: "Description",
|
|
17078
17085
|
value: formData.description,
|
|
17079
17086
|
onChange: handleInputChange("description"),
|
|
@@ -17124,118 +17131,37 @@ var FeedbackModal = ({
|
|
|
17124
17131
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
17125
17132
|
import_material13.Box,
|
|
17126
17133
|
{
|
|
17127
|
-
className: "impact-
|
|
17128
|
-
sx: {
|
|
17129
|
-
flex: 1,
|
|
17130
|
-
minWidth: 300,
|
|
17131
|
-
display: "flex",
|
|
17132
|
-
flexDirection: "column",
|
|
17133
|
-
height: "100%",
|
|
17134
|
-
p: 0
|
|
17135
|
-
},
|
|
17134
|
+
className: "impact-section",
|
|
17135
|
+
sx: { flex: 1, minWidth: 260, display: "flex", flexDirection: "column" },
|
|
17136
17136
|
children: [
|
|
17137
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.
|
|
17138
|
-
|
|
17139
|
-
|
|
17137
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Typography, { variant: "body2", sx: { fontWeight: 600, mb: 0.5 }, children: [
|
|
17138
|
+
"How annoying is this?",
|
|
17139
|
+
" ",
|
|
17140
|
+
["\u{1F60A}", "\u{1F610}", "\u{1F644}", "\u{1F620}", "\u{1F92C}"][(formData.annoyanceLevel ?? 3) - 1],
|
|
17141
|
+
" ",
|
|
17142
|
+
"(",
|
|
17143
|
+
formData.annoyanceLevel ?? 3,
|
|
17144
|
+
"/5)"
|
|
17140
17145
|
] }),
|
|
17141
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17142
|
-
import_material13.
|
|
17146
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Box, { sx: { px: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17147
|
+
import_material13.Slider,
|
|
17143
17148
|
{
|
|
17144
|
-
|
|
17149
|
+
size: "small",
|
|
17150
|
+
value: formData.annoyanceLevel,
|
|
17151
|
+
onChange: (_, value) => setFormData((prev) => ({ ...prev, annoyanceLevel: value })),
|
|
17152
|
+
min: 1,
|
|
17153
|
+
max: 5,
|
|
17154
|
+
step: 1,
|
|
17155
|
+
marks: true,
|
|
17145
17156
|
sx: {
|
|
17146
|
-
|
|
17147
|
-
|
|
17148
|
-
|
|
17149
|
-
|
|
17150
|
-
|
|
17151
|
-
|
|
17152
|
-
display: "flex",
|
|
17153
|
-
flexDirection: "column",
|
|
17154
|
-
flex: 1,
|
|
17155
|
-
justifyContent: "center",
|
|
17156
|
-
height: "100%",
|
|
17157
|
-
"&:hover": {
|
|
17158
|
-
transform: "translateY(-2px)",
|
|
17159
|
-
boxShadow: theme.palette.mode === "dark" ? "0 8px 24px rgba(0,0,0,0.4)" : "0 8px 24px rgba(0,0,0,0.12)"
|
|
17157
|
+
"& .MuiSlider-track": {
|
|
17158
|
+
background: `linear-gradient(90deg, ${theme.palette.success.main}, ${theme.palette.warning.main}, ${theme.palette.error.main})`,
|
|
17159
|
+
border: "none"
|
|
17160
|
+
},
|
|
17161
|
+
"& .MuiSlider-thumb": {
|
|
17162
|
+
background: `linear-gradient(135deg, ${theme.palette.warning.main}, ${theme.palette.warning.dark})`
|
|
17160
17163
|
}
|
|
17161
|
-
}
|
|
17162
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Stack, { spacing: 3, children: [
|
|
17163
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Typography, { variant: "subtitle1", sx: { fontWeight: 600, display: "flex", alignItems: "center", gap: 2 }, children: [
|
|
17164
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17165
|
-
import_material13.Box,
|
|
17166
|
-
{
|
|
17167
|
-
sx: {
|
|
17168
|
-
width: 28,
|
|
17169
|
-
height: 28,
|
|
17170
|
-
borderRadius: "50%",
|
|
17171
|
-
bgcolor: theme.palette.warning.main + "20",
|
|
17172
|
-
display: "flex",
|
|
17173
|
-
alignItems: "center",
|
|
17174
|
-
justifyContent: "center",
|
|
17175
|
-
fontSize: "14px"
|
|
17176
|
-
},
|
|
17177
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.Brain, { size: 22, color: theme.palette.warning.main })
|
|
17178
|
-
}
|
|
17179
|
-
),
|
|
17180
|
-
"How annoying is this issue? (",
|
|
17181
|
-
formData.annoyanceLevel,
|
|
17182
|
-
"/5)"
|
|
17183
|
-
] }),
|
|
17184
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Box, { sx: { px: 2, py: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17185
|
-
import_material13.Slider,
|
|
17186
|
-
{
|
|
17187
|
-
value: formData.annoyanceLevel,
|
|
17188
|
-
onChange: (_, value) => setFormData((prev) => ({ ...prev, annoyanceLevel: value })),
|
|
17189
|
-
min: 1,
|
|
17190
|
-
max: 5,
|
|
17191
|
-
step: 1,
|
|
17192
|
-
marks: [
|
|
17193
|
-
{ value: 1, label: "\u{1F60A} Not at all" },
|
|
17194
|
-
{ value: 2, label: "\u{1F610} Slightly" },
|
|
17195
|
-
{ value: 3, label: "\u{1F644} Moderately" },
|
|
17196
|
-
{ value: 4, label: "\u{1F620} Very" },
|
|
17197
|
-
{ value: 5, label: "\u{1F92C} Extremely" }
|
|
17198
|
-
],
|
|
17199
|
-
sx: {
|
|
17200
|
-
height: 8,
|
|
17201
|
-
"& .MuiSlider-mark": {
|
|
17202
|
-
backgroundColor: theme.palette.divider,
|
|
17203
|
-
width: 3,
|
|
17204
|
-
height: 3
|
|
17205
|
-
},
|
|
17206
|
-
"& .MuiSlider-markLabel": {
|
|
17207
|
-
fontSize: "0.8rem",
|
|
17208
|
-
color: theme.palette.text.secondary,
|
|
17209
|
-
transform: "translateX(-50%)",
|
|
17210
|
-
whiteSpace: "nowrap",
|
|
17211
|
-
top: 32,
|
|
17212
|
-
fontWeight: 500
|
|
17213
|
-
},
|
|
17214
|
-
"& .MuiSlider-thumb": {
|
|
17215
|
-
width: 24,
|
|
17216
|
-
height: 24,
|
|
17217
|
-
background: `linear-gradient(135deg, ${theme.palette.warning.main}, ${theme.palette.warning.dark})`,
|
|
17218
|
-
boxShadow: `0 4px 12px ${theme.palette.warning.main}40`,
|
|
17219
|
-
"&:hover, &.Mui-focusVisible": {
|
|
17220
|
-
boxShadow: `0 0 0 12px ${theme.palette.warning.main}20, 0 4px 12px ${theme.palette.warning.main}40`
|
|
17221
|
-
}
|
|
17222
|
-
},
|
|
17223
|
-
"& .MuiSlider-track": {
|
|
17224
|
-
background: `linear-gradient(90deg, ${theme.palette.success.main}, ${theme.palette.warning.main}, ${theme.palette.error.main})`,
|
|
17225
|
-
height: 6,
|
|
17226
|
-
border: "none"
|
|
17227
|
-
},
|
|
17228
|
-
"& .MuiSlider-rail": {
|
|
17229
|
-
height: 6,
|
|
17230
|
-
backgroundColor: theme.palette.divider,
|
|
17231
|
-
opacity: 0.3
|
|
17232
|
-
},
|
|
17233
|
-
mb: 5
|
|
17234
|
-
// Space for labels
|
|
17235
|
-
}
|
|
17236
|
-
}
|
|
17237
|
-
) })
|
|
17238
|
-
] })
|
|
17164
|
+
}
|
|
17239
17165
|
}
|
|
17240
17166
|
) })
|
|
17241
17167
|
]
|
|
@@ -17254,109 +17180,63 @@ var FeedbackModal = ({
|
|
|
17254
17180
|
p: 0
|
|
17255
17181
|
},
|
|
17256
17182
|
children: [
|
|
17257
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.
|
|
17258
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17259
|
-
|
|
17260
|
-
|
|
17261
|
-
|
|
17262
|
-
|
|
17263
|
-
|
|
17264
|
-
|
|
17265
|
-
|
|
17266
|
-
|
|
17267
|
-
|
|
17268
|
-
|
|
17269
|
-
|
|
17270
|
-
|
|
17271
|
-
|
|
17272
|
-
|
|
17273
|
-
|
|
17274
|
-
|
|
17275
|
-
|
|
17276
|
-
|
|
17277
|
-
|
|
17278
|
-
|
|
17279
|
-
|
|
17280
|
-
|
|
17281
|
-
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
|
|
17285
|
-
}
|
|
17286
|
-
|
|
17287
|
-
|
|
17288
|
-
|
|
17289
|
-
|
|
17290
|
-
|
|
17291
|
-
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
|
|
17295
|
-
|
|
17296
|
-
|
|
17297
|
-
|
|
17298
|
-
|
|
17299
|
-
|
|
17300
|
-
|
|
17301
|
-
|
|
17302
|
-
|
|
17303
|
-
|
|
17304
|
-
|
|
17305
|
-
|
|
17306
|
-
|
|
17307
|
-
|
|
17308
|
-
{
|
|
17309
|
-
sx: {
|
|
17310
|
-
width: 56,
|
|
17311
|
-
height: 56,
|
|
17312
|
-
bgcolor: theme.palette.primary.main + "15",
|
|
17313
|
-
color: theme.palette.primary.main,
|
|
17314
|
-
boxShadow: `0 4px 16px ${theme.palette.primary.main}20`,
|
|
17315
|
-
transition: "all 0.3s ease"
|
|
17316
|
-
},
|
|
17317
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.Paperclip, { size: 28 })
|
|
17318
|
-
}
|
|
17319
|
-
),
|
|
17320
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Box, { sx: { textAlign: "center" }, children: [
|
|
17321
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "h6", sx: { fontWeight: 600, mb: 1, fontSize: "1.1rem" }, children: "Attach One Image" }),
|
|
17322
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "body2", color: "text.secondary", sx: { mb: 1, fontSize: "0.95rem" }, children: "Click here to upload a single image" }),
|
|
17323
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "caption", color: "text.secondary", sx: {
|
|
17324
|
-
opacity: 0.8,
|
|
17325
|
-
fontSize: "0.85rem",
|
|
17326
|
-
background: theme.palette.mode === "dark" ? "rgba(255,255,255,0.05)" : "rgba(0,0,0,0.05)",
|
|
17327
|
-
px: 2,
|
|
17328
|
-
py: 0.5,
|
|
17329
|
-
borderRadius: 1
|
|
17330
|
-
}, children: "Support: Images only (JPG, PNG, GIF) - Max 10MB" })
|
|
17331
|
-
] })
|
|
17332
|
-
]
|
|
17333
|
-
}
|
|
17334
|
-
),
|
|
17335
|
-
(formData.images && formData.images.length > 0 || formData.attachments && formData.attachments.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17336
|
-
import_material13.Alert,
|
|
17337
|
-
{
|
|
17338
|
-
severity: "info",
|
|
17339
|
-
sx: {
|
|
17340
|
-
mt: "auto",
|
|
17341
|
-
textAlign: "left",
|
|
17342
|
-
fontSize: "0.75rem",
|
|
17343
|
-
py: 0.5,
|
|
17344
|
-
background: theme.palette.mode === "dark" ? "linear-gradient(135deg, rgba(33,150,243,0.1) 0%, rgba(25,118,210,0.1) 100%)" : "linear-gradient(135deg, rgba(33,150,243,0.05) 0%, rgba(25,118,210,0.05) 100%)",
|
|
17345
|
-
border: `1px solid ${theme.palette.info.main}30`,
|
|
17346
|
-
"& .MuiAlert-icon": {
|
|
17347
|
-
color: theme.palette.info.main,
|
|
17348
|
-
fontSize: "0.875rem"
|
|
17349
|
-
},
|
|
17350
|
-
"& .MuiAlert-message": {
|
|
17351
|
-
fontSize: "0.75rem"
|
|
17352
|
-
}
|
|
17353
|
-
},
|
|
17354
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "caption", sx: { fontWeight: 600, display: "block" }, children: formData.images && formData.images.length > 0 ? "\u{1F4CE} Image will be copied to clipboard - paste in email!" : "\u{1F4CE} Files ready for email attachment" })
|
|
17183
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { display: "flex", flexDirection: "column" }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Box, { onClick: () => fileInputRef.current?.click(), children: [
|
|
17184
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17185
|
+
"input",
|
|
17186
|
+
{
|
|
17187
|
+
ref: fileInputRef,
|
|
17188
|
+
type: "file",
|
|
17189
|
+
accept: "image/*",
|
|
17190
|
+
style: { display: "none" },
|
|
17191
|
+
onChange: handleFileUpload
|
|
17192
|
+
}
|
|
17193
|
+
),
|
|
17194
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
17195
|
+
import_material13.Box,
|
|
17196
|
+
{
|
|
17197
|
+
sx: {
|
|
17198
|
+
display: "flex",
|
|
17199
|
+
alignItems: "center",
|
|
17200
|
+
gap: 1,
|
|
17201
|
+
px: 1.5,
|
|
17202
|
+
py: 1,
|
|
17203
|
+
border: "1px dashed",
|
|
17204
|
+
borderColor: (theme2) => theme2.palette.divider,
|
|
17205
|
+
borderRadius: 2,
|
|
17206
|
+
cursor: "pointer",
|
|
17207
|
+
color: theme.palette.text.secondary,
|
|
17208
|
+
"&:hover": { borderColor: theme.palette.primary.main, color: theme.palette.primary.main }
|
|
17209
|
+
},
|
|
17210
|
+
children: [
|
|
17211
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.Paperclip, { size: 18 }),
|
|
17212
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "body2", sx: { fontWeight: 500 }, children: "Attach an image" }),
|
|
17213
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "caption", color: "text.secondary", sx: { ml: "auto" }, children: "JPG/PNG/GIF \xB7 10MB" })
|
|
17214
|
+
]
|
|
17215
|
+
}
|
|
17216
|
+
),
|
|
17217
|
+
(formData.images && formData.images.length > 0 || formData.attachments && formData.attachments.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17218
|
+
import_material13.Alert,
|
|
17219
|
+
{
|
|
17220
|
+
severity: "info",
|
|
17221
|
+
sx: {
|
|
17222
|
+
mt: "auto",
|
|
17223
|
+
textAlign: "left",
|
|
17224
|
+
fontSize: "0.75rem",
|
|
17225
|
+
py: 0.5,
|
|
17226
|
+
background: theme.palette.mode === "dark" ? "linear-gradient(135deg, rgba(33,150,243,0.1) 0%, rgba(25,118,210,0.1) 100%)" : "linear-gradient(135deg, rgba(33,150,243,0.05) 0%, rgba(25,118,210,0.05) 100%)",
|
|
17227
|
+
border: `1px solid ${theme.palette.info.main}30`,
|
|
17228
|
+
"& .MuiAlert-icon": {
|
|
17229
|
+
color: theme.palette.info.main,
|
|
17230
|
+
fontSize: "0.875rem"
|
|
17231
|
+
},
|
|
17232
|
+
"& .MuiAlert-message": {
|
|
17233
|
+
fontSize: "0.75rem"
|
|
17355
17234
|
}
|
|
17356
|
-
|
|
17357
|
-
|
|
17358
|
-
|
|
17359
|
-
|
|
17235
|
+
},
|
|
17236
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "caption", sx: { fontWeight: 600, display: "block" }, children: formData.images && formData.images.length > 0 ? "\u{1F4CE} Image will be copied to clipboard - paste in email!" : "\u{1F4CE} Files ready for email attachment" })
|
|
17237
|
+
}
|
|
17238
|
+
)
|
|
17239
|
+
] }) }),
|
|
17360
17240
|
formData.images && formData.images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Box, { sx: { mt: 2 }, children: [
|
|
17361
17241
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Box, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 1.5 }, children: [
|
|
17362
17242
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.Camera, { size: 16 }),
|