your-ai-workflow-firebase-os 1.2.51 → 1.2.52
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/README.md +1 -1
- package/dist/{ContactPopup-BurbGShS.js → ContactPopup-BaGZO8GM.js} +7 -16
- package/dist/ContactPopup-D9KXCC9s.cjs +9 -0
- package/dist/{PhoneInputField-DZFhNM2v.js → PhoneInputField-D1ihCXpb.js} +1 -1
- package/dist/renderer.cjs.js +1 -1
- package/dist/renderer.es.js +1 -1
- package/dist/vite.cjs.js +1 -1
- package/dist/vite.es.js +4 -0
- package/dist/your-ai-workflow-firebase-os.cjs.js +13 -40
- package/dist/your-ai-workflow-firebase-os.css +1 -1
- package/dist/your-ai-workflow-firebase-os.es.js +591 -700
- package/package.json +1 -1
- package/scripts/postinstall.js +16 -8
- package/src/configs/theme.config.ts +0 -5
- package/src/index.css +3 -1
- package/dist/ContactPopup-BzlpoeoW.cjs +0 -9
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ That's it. **One component. Zero configuration files.**
|
|
|
29
29
|
| 👥 **User Management** | Admin panel, three access levels (Free · Internal · Admin), inactive user blocking |
|
|
30
30
|
| 🗂️ **Pages** | Ask your AI assistant for a page — for anyone, signed-in users, your team or admins only — and it appears in `/pages`, where you rename it, reorder it, hide it or change its web address |
|
|
31
31
|
| 📋 **Templates** | Board (Kanban), Calendar, Table, Drive, Inline Form, Popup Form, Confirmation |
|
|
32
|
-
| 🎨 **Theme Engine** | Full dark/light mode, custom accent colours,
|
|
32
|
+
| 🎨 **Theme Engine** | Full dark/light mode, custom accent colours, corner radii, logo |
|
|
33
33
|
| 📁 **File Storage** | An admin-only Assets screen for public images, plus a drive preset any page can be built on |
|
|
34
34
|
| 📬 **Forms** | Created with their pages on `/pages` — say what a form should ask and the AI builds it with the page; see and hand-edit every form afterwards on `/forms`. Questions can ask for a file — a CV, a photo, a receipt — and the upload works signed out |
|
|
35
35
|
| 📥 **Inbox** | Every form entry in one list at `/inbox`, filtered "From anyone" or "From signed-in users"; an attached file opens from the entry by its own name |
|
|
@@ -144,7 +144,6 @@ var le = Object.defineProperty, ue = Object.getOwnPropertyDescriptor, P = Object
|
|
|
144
144
|
selectionText: "#ffffff"
|
|
145
145
|
}
|
|
146
146
|
},
|
|
147
|
-
fontFamily: "Inter",
|
|
148
147
|
cornerRounding: "default",
|
|
149
148
|
cornerRadii: {
|
|
150
149
|
buttonRadius: .75,
|
|
@@ -271,7 +270,7 @@ function Re({ children: e, scopeSelector: t }) {
|
|
|
271
270
|
let e = T(x(Ce, "sys_configs", "theme"), (e) => {
|
|
272
271
|
if (e.exists()) {
|
|
273
272
|
let t = e.data();
|
|
274
|
-
delete t.fontStyles, delete t.fontCustomization;
|
|
273
|
+
delete t.fontStyles, delete t.fontCustomization, delete t.fontFamily;
|
|
275
274
|
let r = Fe(n, t);
|
|
276
275
|
c(r), localStorage.setItem("theme_config_cache", JSON.stringify(r));
|
|
277
276
|
let a = localStorage.getItem("last-seen-default-theme");
|
|
@@ -290,19 +289,11 @@ function Re({ children: e, scopeSelector: t }) {
|
|
|
290
289
|
let i = (e, t) => !e || e.length === 0 ? t || "transparent" : e.length === 1 ? e[0] : `linear-gradient(135deg, ${e.map((t, n) => `${t} ${Math.round(n / (e.length - 1) * 100)}%`).join(", ")})`, o = a === "dark" ? "linear-gradient(135deg, #6d28d9 0%, #a78bfa 100%)" : "linear-gradient(135deg, #5b21b6 0%, #a78bfa 100%)";
|
|
291
290
|
e.style.setProperty("--button-bg", i(n.buttonGradient, o)), e.style.setProperty("--button-fg", n.buttonText || "#ffffff"), e.style.setProperty("--button-hover-bg", i(n.buttonHoverGradient || n.buttonGradient, o)), e.style.setProperty("--text-gradient", i(n.textGradient, `linear-gradient(135deg, ${n.foreground} 0%, ${n.accent} 100%)`)), e.style.setProperty("--glow-color", n.glowColor || `color-mix(in srgb, ${n.accent} 30%, transparent)`), e.style.setProperty("--notification-icon-color", n.notificationIconColor || n.accent);
|
|
292
291
|
let c = n.secondaryButton?.bg || (a === "dark" ? "rgba(255, 255, 255, 0.05)" : "rgba(0, 0, 0, 0.03)"), l = n.secondaryButton?.border || (a === "dark" ? "rgba(255, 255, 255, 0.1)" : "rgba(0, 0, 0, 0.06)"), u = n.secondaryButton?.text || n.foreground;
|
|
293
|
-
e.style.setProperty("--btn-sec-bg", c), e.style.setProperty("--btn-sec-border", l), e.style.setProperty("--btn-sec-text", u), e.style.setProperty("--selection-bg", n.selectionBg || "color-mix(in srgb, var(--accent-color) 40%, transparent)"), e.style.setProperty("--selection-text", n.selectionText || "#ffffff"), e.setAttribute("data-theme", a), localStorage.setItem("theme-mode", r), s.cornerRounding === "custom" && s.cornerRadii ? (e.style.setProperty("--btn-radius", `${parseFloat(String(s.cornerRadii.buttonRadius)) || 0}rem`), e.style.setProperty("--card-radius", `${parseFloat(String(s.cornerRadii.cardRadius)) || 0}rem`), e.style.setProperty("--input-radius", `${parseFloat(String(s.cornerRadii.inputRadius)) || 0}rem`), e.style.setProperty("--modal-radius", `${parseFloat(String(s.cornerRadii.modalRadius)) || 0}rem`)) : (e.style.setProperty("--btn-radius", "0.75rem"), e.style.setProperty("--card-radius", "1.5rem"), e.style.setProperty("--input-radius", "0.75rem"), e.style.setProperty("--modal-radius", "1.5rem")), (
|
|
294
|
-
let
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
"Space Grotesk": "\"Space Grotesk\", sans-serif",
|
|
299
|
-
"Plus Jakarta Sans": "\"Plus Jakarta Sans\", sans-serif",
|
|
300
|
-
"System UI": "system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"
|
|
301
|
-
};
|
|
302
|
-
e.style.setProperty("--font-family", n[t] || n.Inter);
|
|
303
|
-
let r = document.getElementById("dynamic-google-font");
|
|
304
|
-
t === "System UI" ? r && r.remove() : (r || (r = document.createElement("link"), r.id = "dynamic-google-font", r.rel = "stylesheet", document.head.appendChild(r)), r.href = `https://fonts.googleapis.com/css2?family=${t.replace(/ /g, "+")}:wght@400;500;600;700;800;900&display=swap`), e.style.fontSize = "16px", e.style.setProperty("--weight-h1", "800"), e.style.setProperty("--weight-h2", "700"), e.style.setProperty("--weight-h3", "700"), e.style.setProperty("--leading-normal", "1.5");
|
|
305
|
-
})(s.fontFamily || "Inter");
|
|
292
|
+
if (e.style.setProperty("--btn-sec-bg", c), e.style.setProperty("--btn-sec-border", l), e.style.setProperty("--btn-sec-text", u), e.style.setProperty("--selection-bg", n.selectionBg || "color-mix(in srgb, var(--accent-color) 40%, transparent)"), e.style.setProperty("--selection-text", n.selectionText || "#ffffff"), e.setAttribute("data-theme", a), localStorage.setItem("theme-mode", r), s.cornerRounding === "custom" && s.cornerRadii ? (e.style.setProperty("--btn-radius", `${parseFloat(String(s.cornerRadii.buttonRadius)) || 0}rem`), e.style.setProperty("--card-radius", `${parseFloat(String(s.cornerRadii.cardRadius)) || 0}rem`), e.style.setProperty("--input-radius", `${parseFloat(String(s.cornerRadii.inputRadius)) || 0}rem`), e.style.setProperty("--modal-radius", `${parseFloat(String(s.cornerRadii.modalRadius)) || 0}rem`)) : (e.style.setProperty("--btn-radius", "0.75rem"), e.style.setProperty("--card-radius", "1.5rem"), e.style.setProperty("--input-radius", "0.75rem"), e.style.setProperty("--modal-radius", "1.5rem")), !document.getElementById("inter-font")) {
|
|
293
|
+
let e = document.createElement("link");
|
|
294
|
+
e.id = "inter-font", e.rel = "stylesheet", e.href = "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap", document.head.appendChild(e);
|
|
295
|
+
}
|
|
296
|
+
e.style.fontSize = "16px", e.style.setProperty("--weight-h1", "800"), e.style.setProperty("--weight-h2", "700"), e.style.setProperty("--weight-h3", "700"), e.style.setProperty("--leading-normal", "1.5");
|
|
306
297
|
let d = document.querySelector("link[rel*='icon']");
|
|
307
298
|
d || (d = document.createElement("link"), d.rel = "icon", document.head.appendChild(d)), s.faviconUrl && (d.href = s.faviconUrl), s.appName && (document.title = s.appName);
|
|
308
299
|
}, [
|
|
@@ -45811,7 +45802,7 @@ function ZW(e) {
|
|
|
45811
45802
|
return "Attached file";
|
|
45812
45803
|
}
|
|
45813
45804
|
}
|
|
45814
|
-
var QW = (e) => e?.code === "storage/unauthorized" ? "You do not have permission to upload here." : e?.message || "That upload did not work. Try again.", $W = t.lazy(() => import("./PhoneInputField-
|
|
45805
|
+
var QW = (e) => e?.code === "storage/unauthorized" ? "You do not have permission to upload here." : e?.message || "That upload did not work. Try again.", $W = t.lazy(() => import("./PhoneInputField-D1ihCXpb.js").then((e) => e.n)), eG = /^[^\s@,;]+@[^\s@,;.]+(\.[^\s@,;.]+)*\.[a-z]{2,}$/i;
|
|
45815
45806
|
function tG({ field: e, value: t, error: n, onChange: r }) {
|
|
45816
45807
|
let [i, a] = v(!1), [o, s] = v(""), c = _(null), l = async (e) => {
|
|
45817
45808
|
if (!(!e || i)) {
|