your-ai-workflow-firebase-os 1.2.38 → 1.2.39
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/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -279,6 +279,14 @@ change the owner can use and a change they cannot.
|
|
|
279
279
|
Forms are the same: link a form the owner made with
|
|
280
280
|
\`<ContactPopup formId="..." />\` — never remake it. A new
|
|
281
281
|
\`*Form.config.ts\` only when they ask for a NEW form in the chat (rule 5).
|
|
282
|
+
8. Everything you draw must look like the app it lands in. Style with the
|
|
283
|
+
theme only — \`bg-background\`, \`text-foreground\`, \`text-accent\`,
|
|
284
|
+
\`border-[var(--panel-border)]\`, \`glass-panel\`, \`btn-primary\`, and the
|
|
285
|
+
built-in \`Input\` / \`CustomSelect\` for fields — never \`bg-white\`,
|
|
286
|
+
\`bg-gray-900\`, hex colours or a palette of your own: hard-coded fields
|
|
287
|
+
stay dark on the light theme. And NEVER a \`<style>\` tag or any global
|
|
288
|
+
CSS in a component — one global rule restyles and re-pads every page of
|
|
289
|
+
the app at once.
|
|
282
290
|
|
|
283
291
|
Before you answer, re-read the request and this list, and delete anything you
|
|
284
292
|
built that breaks a line of it.
|
|
@@ -300,10 +308,14 @@ stops the build with one sentence that says the fix.
|
|
|
300
308
|
\`Config\`; a content file with no default export; a \`*Form.config.ts\` whose
|
|
301
309
|
\`systemName\` is not the id from its file name; a page config with no
|
|
302
310
|
preset and no matching content file (the page would render empty — the
|
|
303
|
-
error names the exact \`*Content.tsx\` to create)
|
|
311
|
+
error names the exact \`*Content.tsx\` to create); a \`<style>\` tag in a
|
|
312
|
+
content file (global CSS — it restyles and re-pads every page of the app,
|
|
313
|
+
style with theme classes instead).
|
|
304
314
|
- A hand-written form — a \`<form>\` or an \`onSubmit\` in a content file with
|
|
305
315
|
no \`<ContactPopup />\` — prints a warning, because its entries never reach
|
|
306
|
-
the Inbox and never show on the Forms screen.
|
|
316
|
+
the Inbox and never show on the Forms screen. So does a hard-coded colour
|
|
317
|
+
like \`bg-gray-900\` — it ignores the owner's theme and stays dark on the
|
|
318
|
+
light theme.
|
|
307
319
|
|
|
308
320
|
When the build fails, read the sentence, do what it says, build again. Do not
|
|
309
321
|
work around it, do not delete the check, do not touch \`vite.config.ts\`.
|
|
@@ -388,6 +400,23 @@ export default function ProdTimerContent({ config, actions }: { config: any; act
|
|
|
388
400
|
The file is auto-discovered by its name and location. There is no registration
|
|
389
401
|
step, no import to add, and no web address to wire.
|
|
390
402
|
|
|
403
|
+
### The pages that already exist, and the one file each is filled by
|
|
404
|
+
|
|
405
|
+
Three pages already exist and are NEVER created, re-created or re-addressed.
|
|
406
|
+
Each is filled by exactly one file, the same way as any other page:
|
|
407
|
+
|
|
408
|
+
| page | web address | the one file to write |
|
|
409
|
+
| ------------- | ----------- | ------------------------------------------------------------------ |
|
|
410
|
+
| Home | \`/\` | \`src/your-ai-workflow-firebase-os/Home.tsx\` (edit it, do not add one) |
|
|
411
|
+
| Contact | \`/contact\` | \`microcomponents/ContactContent.tsx\` |
|
|
412
|
+
| Support | \`/support\` | \`microcomponents/SupportContent.tsx\` |
|
|
413
|
+
|
|
414
|
+
Contact and Support show their form as a pop-up until one of those files
|
|
415
|
+
exists; the moment it does, the page draws that file instead. So "put the
|
|
416
|
+
contact form INTO the page instead of a pop-up" is one file —
|
|
417
|
+
\`ContactContent.tsx\` rendering \`<ContactPopup isInline formId="contact" />\` —
|
|
418
|
+
and never a new page, a new config file or a new form.
|
|
419
|
+
|
|
391
420
|
## Rules for microcomponents
|
|
392
421
|
|
|
393
422
|
Rules 1-6 apply to microcomponent files only. Rules 7-9 (styling) apply
|
|
@@ -668,24 +697,38 @@ Third — a request copied from a page's own row on the Pages screen. The owner
|
|
|
668
697
|
added the page there first (who it is for, its name, its web address, a
|
|
669
698
|
starting layout, its form), then pasted the row's sentence and finished it:
|
|
670
699
|
|
|
671
|
-
> "
|
|
672
|
-
>
|
|
673
|
-
>
|
|
674
|
-
>
|
|
675
|
-
>
|
|
676
|
-
>
|
|
677
|
-
>
|
|
678
|
-
>
|
|
679
|
-
>
|
|
680
|
-
>
|
|
681
|
-
>
|
|
682
|
-
>
|
|
700
|
+
> "My app already has a page called Client onboarding at /onboarding. It is
|
|
701
|
+
> already made and it is already in the menu — do not create a page, a web
|
|
702
|
+
> address or a settings file for it, and do not edit any other file.
|
|
703
|
+
> Write one file:
|
|
704
|
+
> src/your-ai-workflow-firebase-os/microcomponents/ClientOnboardingContent.tsx,
|
|
705
|
+
> with a default export. That file is what the page shows.
|
|
706
|
+
> The page already starts from the board layout — the heading and the saving
|
|
707
|
+
> are already built and stay on the page. Your file draws only what goes
|
|
708
|
+
> inside the panel.
|
|
709
|
+
> Your component receives everything it needs as props: ({ config, actions })
|
|
710
|
+
> — actions.tasks and actions.categories hold the saved items;
|
|
711
|
+
> actions.saveTask(id, data), actions.deleteTask(id),
|
|
712
|
+
> actions.saveCategory(id, data) and actions.deleteCategory(id) change them;
|
|
713
|
+
> actions.openInlineEditor(categoryId, item) opens the built-in editor;
|
|
714
|
+
> actions.user is the signed-in person, and every item you save must include
|
|
715
|
+
> uid: actions.user.uid. Read and change data ONLY through these props — do
|
|
716
|
+
> not import firebase and do not write your own loading, saving or uploading
|
|
717
|
+
> code.
|
|
718
|
+
> Here is what I would like on it: columns, in this order: To do, In
|
|
719
|
+
> progress, Done. Each card has a client name (short text), a contact email,
|
|
720
|
+
> a start date and a short note (long text). Anyone on the team can add a
|
|
721
|
+
> card, drag it between columns, edit it and delete it. The button at the top
|
|
722
|
+
> says New client. No file uploads on this page. Build only this — no other
|
|
723
|
+
> pages, forms or sample cards."
|
|
683
724
|
|
|
684
725
|
Every line is a decision already made. The audience, the web address
|
|
685
726
|
(\`route\`), the name (\`tabName\` / \`pageName\`), the heading (\`tabTitle\` /
|
|
686
|
-
\`pageTitle\`) and "
|
|
687
|
-
Pages screen — read them from the \`config\` your content file receives,
|
|
688
|
-
never write them again.
|
|
727
|
+
\`pageTitle\`) and "already starts from the ... layout" (\`template\`) were set
|
|
728
|
+
on the Pages screen — read them from the \`config\` your content file receives,
|
|
729
|
+
and never write them again. When the sentence lists props, they are real: the
|
|
730
|
+
layout renders your component with exactly those, so a content file that
|
|
731
|
+
ignores them and opens its own Firestore connection is wrong even if it runs. THE FILE NAME RULE: the content file is the page's
|
|
689
732
|
name in PascalCase plus \`Content.tsx\` (a page called "Client onboarding" ->
|
|
690
733
|
\`ClientOnboardingContent.tsx\`); use exactly the name in the request, or the
|
|
691
734
|
page never finds your file. "No file uploads" means draw no upload control;
|