your-ai-workflow-firebase-os 1.14.39 → 1.14.43
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/{AddressField-xsA-q7vk.cjs → AddressField-BWG8WcY2.cjs} +1 -1
- package/dist/{AddressField-CiuMFpw0.js → AddressField-rfKGEKCq.js} +1 -1
- package/dist/ContactPopup-WUC5N-pQ.cjs +12 -0
- package/dist/{ContactPopup-DW_AZng8.js → ContactPopup-by1ZEe78.js} +2813 -2774
- package/dist/{PhoneInputField-B0gTYm_q.cjs → PhoneInputField-BRBKyyDe.cjs} +1 -1
- package/dist/{PhoneInputField-Bx1009V7.cjs → PhoneInputField-C0kwTJ-F.cjs} +1 -1
- package/dist/{PhoneInputField-CWvk-0He.js → PhoneInputField-DSWFHcQ_.js} +1 -1
- package/dist/PhoneInputField-DkEky31w.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/lib/AuthContext.d.ts +1 -0
- package/dist/{lucide-react-NE2zYbRL.cjs → lucide-react-BYtvGcT5.cjs} +1 -1
- package/dist/{lucide-react-BSlGdamc.js → lucide-react-D321IzZB.js} +5786 -5786
- package/dist/renderer.cjs.js +1 -1
- package/dist/renderer.es.js +1 -1
- package/dist/vite.cjs.js +8 -8
- package/dist/vite.es.js +128 -78
- package/dist/your-ai-workflow-firebase-os.cjs.js +37 -37
- package/dist/your-ai-workflow-firebase-os.css +1 -1
- package/dist/your-ai-workflow-firebase-os.es.js +7611 -7493
- package/package.json +1 -1
- package/scripts/postinstall.js +5 -0
- package/src/index.css +10 -0
- package/dist/ContactPopup-DBdsDflP.cjs +0 -12
- package/dist/PhoneInputField-CaFwyE0V.js +0 -2
package/README.md
CHANGED
|
@@ -116,7 +116,7 @@ for its own key, which this app never reads.
|
|
|
116
116
|
|
|
117
117
|
### What the build enforces
|
|
118
118
|
|
|
119
|
-
The package ships a Vite plugin, `yourAiFirebase()`, that puts the project's structure out of the assistant's reach. `src/App.tsx` and `src/main.tsx` are owned files: the plugin serves its own canonical source for both and rewrites them on disk whenever they differ, so an edit there has no effect. Pages, forms and content files are discovered from `src/your-ai-workflow-firebase-os/configs/` and `microcomponents/` through a virtual module, so a deleted registry import can no longer make a page vanish. And every discovered file is validated before the build: a config file with the wrong name, a `route` that is not one string starting with `/`, an address used twice, a `*Tab.config.ts` without a valid `pageType`, a missing `*Config` export, a `systemName` that does not match the file, or a content file with no default export fails the build with one sentence that names the fix. A hand-written `<form>` in a content file only warns — its entries would never reach the Inbox.
|
|
119
|
+
The package ships a Vite plugin, `yourAiFirebase()`, that puts the project's structure out of the assistant's reach. `src/App.tsx` and `src/main.tsx` are owned files: the plugin serves its own canonical source for both and rewrites them on disk whenever they differ, so an edit there has no effect. Pages, forms and content files are discovered from `src/your-ai-workflow-firebase-os/configs/` and `microcomponents/` through a virtual module, so a deleted registry import can no longer make a page vanish. And every discovered file is validated before the build: a config file with the wrong name, a `route` that is not one string starting with `/`, an address used twice, a `*Tab.config.ts` without a valid `pageType`, a missing `*Config` export, a `systemName` that does not match the file, or a content file with no default export fails the build with one sentence that names the fix. A bare `<img>` in a content file fails it too: pictures go through `<Picture>`, which holds its space before the picture lands, fetches the light copy written beside every upload, and crosses over when its `src` changes rather than blanking — the thing that made a product page's colour swatches flash. A hand-written `<form>` in a content file only warns — its entries would never reach the Inbox.
|
|
120
120
|
|
|
121
121
|
Manual-first recipe: the owner adds the page — and its form, if it needs one — on `/pages` and then asks the assistant for the content, which is a single `microcomponents/<PascalCaseName>Content.tsx` file — no config file, no second address.
|
|
122
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk-CiTBaPhY.cjs`);const e=require(`./lucide-react-
|
|
1
|
+
require(`./chunk-CiTBaPhY.cjs`);const e=require(`./lucide-react-BYtvGcT5.cjs`),t=require(`./address-COc6hg_p.cjs`),n=require(`./dist-CNztuGOG.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=null;function o(){return a||(a=n.t.map(e=>{let t=n.n(e);return{iso2:t.iso2,name:t.name}}).sort((e,t)=>e.name.localeCompare(t.name)),a)}var s=e=>o().find(t=>t.iso2===String(e||``).toLowerCase())?.name||``,c={"united states of america":`us`,usa:`us`,"u.s.":`us`,"u.s.a.":`us`,uk:`gb`,"great britain":`gb`,england:`gb`,scotland:`gb`,wales:`gb`,"northern ireland":`gb`,"russian federation":`ru`,deutschland:`de`,españa:`es`,italia:`it`,brasil:`br`,"south korea":`kr`,"republic of korea":`kr`,"north korea":`kp`,czechia:`cz`,"czech republic":`cz`,"viet nam":`vn`,türkiye:`tr`,"the netherlands":`nl`,holland:`nl`,uae:`ae`,"united arab emirates":`ae`,"hong kong sar":`hk`,macau:`mo`,"ivory coast":`ci`,"côte d'ivoire":`ci`,eswatini:`sz`,"myanmar (burma)":`mm`,burma:`mm`};function l(e){let t=String(e||``).trim().toLowerCase();if(!t)return``;if(/^[a-z]{2}$/.test(t)&&o().some(e=>e.iso2===t))return t;if(c[t])return c[t];let n=o().find(e=>e.name.toLowerCase()===t);return n?n.iso2:o().find(e=>t.startsWith(e.name.toLowerCase())||e.name.toLowerCase().startsWith(t))?.iso2||``}function u(e){let t=l(e);return t?s(t):String(e||``).trim()}var d=`https://photon.komoot.io/api/`;function f(e){let t=(e.street||``).trim(),n=(e.housenumber||``).trim();return t?n?`${n} ${t}`:t:(e.name||``).trim()}var p=e=>(e.city||e.town||e.village||e.district||e.county||``).trim();function m(e,t){let n=e.properties;if(!n)return null;let r=f(n),i=p(n);if(!r&&!i)return null;let a=(n.state||``).trim(),o=(n.postcode||``).trim(),s=(n.country||``).trim(),c=[a,o].filter(Boolean).join(` `);return{id:`${n.osm_type||`x`}${n.osm_id??t}-${t}`,label:[r,i,c,s].filter(Boolean).join(`, `),street:r,city:i,region:a,postcode:o,country:s,countryCode:(n.countrycode||``).trim().toLowerCase()}}function h(e){let t=new Set;return e.filter(e=>{let n=e.label.toLowerCase();return t.has(n)?!1:(t.add(n),!0)})}async function g(e,t={}){let n=String(e||``).trim();if(n.length<3)return[];let r=`${d}?q=${encodeURIComponent(n)}&limit=${t.limit??6}`;try{let e=await fetch(r,{signal:t.signal});if(!e.ok)return[];let n=await e.json();return h((Array.isArray(n?.features)?n.features:[]).map(m).filter(e=>e!==null))}catch{return[]}}var _=`text-[13px] font-medium text-foreground/50 select-none mb-1.5 ml-1`,v={borderRadius:`var(--input-radius, 0.75rem)`},y=`flex items-center h-12 w-full px-4 text-[15px] text-foreground transition-all duration-300 glass-panel`,b=`block h-12 w-full px-4 py-2 text-[15px] text-foreground transition-all duration-300 placeholder:text-foreground/40 focus:outline-none focus:border-accent glow-focus disabled:cursor-not-allowed disabled:opacity-50 glass-panel`,x=`flex-1 min-w-0 bg-transparent border-none outline-none shadow-none p-0 text-[15px] text-foreground placeholder:text-foreground/40 no-glow`;function S(e){let[t,n]=(0,r.useState)(!1),[i,a]=(0,r.useState)(!1),[o,s]=(0,r.useState)([]),[c,l]=(0,r.useState)(-1),u=(0,r.useRef)(!1),d=(0,r.useRef)(!1),f=(0,r.useRef)(null);return(0,r.useEffect)(()=>{if(u.current){u.current=!1;return}if(!d.current){s([]),a(!1),n(!1);return}let t=e.trim();if(t.length<3){s([]),a(!1),n(!1);return}let r=new AbortController;a(!0);let i=setTimeout(async()=>{let e=await g(t,{signal:r.signal});r.signal.aborted||(s(e),l(-1),a(!1),n(e.length>0))},250);return()=>{r.abort(),clearTimeout(i)}},[e]),(0,r.useEffect)(()=>{if(!t)return;let e=e=>{f.current?.contains(e.target)||n(!1)};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[t]),{open:t,setOpen:n,busy:i,rows:o,active:c,setActive:l,boxRef:f,typed:d,take:e=>{u.current=!0,e(),n(!1),s([]),l(-1)},onKeyDown:(e,r)=>{if(e.key===`Escape`&&t){e.stopPropagation(),n(!1);return}!t||!o.length||(e.key===`ArrowDown`?(e.preventDefault(),l(e=>(e+1)%o.length)):e.key===`ArrowUp`?(e.preventDefault(),l(e=>(e<=0?o.length:e)-1)):e.key===`Enter`&&c>=0&&(e.preventDefault(),r(o[c])))}}}function C({label:t,value:n,disabled:a,onPick:s}){let[c,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),p=(0,r.useRef)(null),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!c){f(``);return}m.current?.focus();let e=e=>{p.current?.contains(e.target)||u(!1)};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[c]);let h=d.trim().toLowerCase(),g=h?o().filter(e=>e.name.toLowerCase().includes(h)):o(),_=l(n);return(0,i.jsxs)(`div`,{className:`relative w-full`,ref:p,children:[(0,i.jsxs)(`button`,{type:`button`,disabled:a,onClick:()=>u(e=>!e),"aria-haspopup":`listbox`,"aria-expanded":c,"aria-label":t,className:`${y} justify-between gap-2 text-left cursor-pointer hover:border-accent/40 disabled:cursor-not-allowed disabled:opacity-50`,style:v,children:[(0,i.jsx)(`span`,{className:`truncate ${n?`text-foreground`:`text-foreground/40`}`,children:n||`Country`}),(0,i.jsx)(e.rn,{className:`w-3.5 h-3.5 shrink-0 text-foreground/50 transition-transform duration-300 ${c?`rotate-180`:``}`})]}),c&&(0,i.jsxs)(`div`,{role:`listbox`,"aria-label":t,className:`absolute z-[999999] top-[calc(100%+8px)] left-0 w-full glass-popover overflow-hidden`,style:v,children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2 px-3 h-11 border-b border-[var(--panel-border)]/50`,children:[(0,i.jsx)(e.F,{className:`w-3.5 h-3.5 shrink-0 text-foreground/35`}),(0,i.jsx)(`input`,{ref:m,value:d,onChange:e=>f(e.target.value),onKeyDown:e=>{if(e.key===`Escape`){e.stopPropagation(),u(!1);return}e.key===`Enter`&&(e.preventDefault(),g[0]&&(s(g[0].name),u(!1)))},placeholder:`Search countries`,"aria-label":`Search countries`,autoComplete:`off`,className:`${x} text-[14px]`})]}),(0,i.jsxs)(`div`,{className:`max-h-56 overflow-y-auto no-scrollbar p-1`,children:[n&&!h&&(0,i.jsxs)(`div`,{role:`option`,"aria-selected":!1,onClick:()=>{s(``),u(!1)},className:`flex items-center gap-2.5 px-3 py-2.5 text-[13px] font-medium text-foreground/60 hover:bg-foreground/5 cursor-pointer`,style:{borderRadius:`calc(var(--input-radius, 0.75rem) - 0.25rem)`},children:[(0,i.jsx)(e.a,{className:`w-3.5 h-3.5 shrink-0 text-foreground/35`}),(0,i.jsx)(`span`,{className:`truncate`,children:`No country`})]}),g.map(e=>(0,i.jsx)(`div`,{role:`option`,"aria-selected":e.iso2===_,onClick:()=>{s(e.name),u(!1)},className:`flex items-center px-3 py-2.5 transition-colors font-medium text-[13px] cursor-pointer ${e.iso2===_?`bg-accent/10 text-accent font-bold`:`text-foreground/80 hover:bg-foreground/5 hover:text-foreground`}`,style:{borderRadius:`calc(var(--input-radius, 0.75rem) - 0.25rem)`},children:(0,i.jsx)(`span`,{className:`truncate`,children:e.name})},e.iso2)),g.length===0&&(0,i.jsx)(`div`,{className:`px-3 py-2.5 text-[13px] text-foreground/40`,children:`No match`})]})]})]})}function w({id:n,label:r,value:a,onChange:o,required:s=!1,disabled:c=!1,placeholder:d,error:f}){let p=S(a.street),m=t.i(l(a.country)),h=e=>o({...a,...e}),g=e=>p.take(()=>o({street:e.street,city:e.city,region:e.region,postcode:e.postcode,country:u(e.countryCode||e.country)||a.country})),w=(e,t,n,o,s)=>(0,i.jsx)(`div`,{className:o,children:(0,i.jsx)(`input`,{type:`text`,disabled:c,value:a[e],onChange:t=>h({[e]:t.target.value}),placeholder:n,"aria-label":`${r} — ${t}`,autoComplete:s,className:b,style:v})},e),T=m.postal?`col-span-1`:`col-span-2`,E=m.region?`col-span-1`:`col-span-2`,D=!!(a.country||a.city||a.region||a.postcode);return(0,i.jsxs)(`div`,{className:`flex flex-col w-full`,ref:p.boxRef,children:[(0,i.jsxs)(`label`,{className:_,htmlFor:n,children:[r,` `,s&&(0,i.jsx)(`span`,{className:`text-red-500`,children:`*`})]}),(0,i.jsxs)(`div`,{className:`relative w-full`,children:[(0,i.jsxs)(`div`,{className:`${y} gap-2.5 focus-within:border-accent glow-focus ${f?`border-red-500/50`:``}`,style:v,children:[(0,i.jsx)(e.ot,{className:`w-4 h-4 shrink-0 text-foreground/40`}),(0,i.jsx)(`input`,{id:n,type:`text`,required:s,disabled:c,value:a.street,onChange:e=>{p.typed.current=!0,h({street:e.target.value})},onFocus:()=>{p.rows.length&&p.setOpen(!0)},onKeyDown:e=>p.onKeyDown(e,g),role:`combobox`,"aria-expanded":p.open,"aria-autocomplete":`list`,"aria-controls":`${n}-list`,placeholder:d||`Start typing your address`,autoComplete:`address-line1`,className:x}),p.busy&&(0,i.jsx)(e.pt,{className:`w-3.5 h-3.5 shrink-0 text-foreground/30 animate-spin`})]}),p.open&&(0,i.jsx)(`div`,{id:`${n}-list`,role:`listbox`,"aria-label":r,className:`absolute z-[999999] top-[calc(100%+8px)] left-0 w-full glass-popover overflow-hidden p-1`,style:v,children:p.rows.map((t,n)=>(0,i.jsxs)(`div`,{role:`option`,"aria-selected":n===p.active,onMouseEnter:()=>p.setActive(n),onClick:()=>g(t),className:`flex items-center gap-2.5 px-3 py-2.5 transition-colors text-[13px] font-medium cursor-pointer ${n===p.active?`bg-accent/10 text-accent`:`text-foreground/80 hover:bg-foreground/5`}`,style:{borderRadius:`calc(var(--input-radius, 0.75rem) - 0.25rem)`},children:[(0,i.jsx)(e.ot,{className:`w-3.5 h-3.5 shrink-0 text-foreground/35`}),(0,i.jsx)(`span`,{className:`truncate`,children:t.label})]},t.id))})]}),(0,i.jsx)(`div`,{className:`mt-2.5`,children:(0,i.jsx)(C,{label:`${r} — country`,value:a.country,disabled:c,onPick:e=>h({country:e})})}),D&&(0,i.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 mt-2.5`,children:[w(`city`,`city`,t.t[m.locality],`col-span-2`,`address-level2`),m.region&&w(`region`,`region`,t.t[m.region],T,`address-level1`),m.postal&&w(`postcode`,`postcode`,t.t[m.postal],E,`postal-code`)]}),f&&(0,i.jsx)(`p`,{className:`text-xs text-red-500 font-medium mt-1.5 ml-1`,children:f})]})}exports.AddressField=w,exports.default=w;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as e, a as t,
|
|
1
|
+
import { F as e, a as t, ot as n, pt as r, rn as i } from "./lucide-react-D321IzZB.js";
|
|
2
2
|
import { i as a, t as o } from "./address-D6MYmA1-.js";
|
|
3
3
|
import { n as s, t as c } from "./dist-C4ycpl2h.js";
|
|
4
4
|
import { useEffect as l, useRef as u, useState as d } from "react";
|