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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "your-ai-workflow-firebase-os",
3
- "version": "1.2.38",
3
+ "version": "1.2.39",
4
4
  "description": "Your AI Firebase — a complete Firebase-powered admin app in one React component.",
5
5
  "type": "module",
6
6
  "main": "dist/your-ai-workflow-firebase-os.cjs.js",
@@ -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
- > "Fill the page at /onboarding — it already exists, so do not create a page,
672
- > a form, a config file or a web address, and do not edit src/App.tsx or
673
- > src/main.tsx. Write only one file:
674
- > src/your-ai-workflow-firebase-os/microcomponents/ClientOnboardingContent.tsx
675
- > with a default export. It starts from the board preset — use its data hooks
676
- > and draw the UI yourself. It has no form; do not add one. Here is what it
677
- > should show: columns, in this order: To do, In progress, Done. Each card has
678
- > a client name (short text), a contact email, a start date and a short note
679
- > (long text). Anyone on the team can add a card, drag it between columns,
680
- > edit it and delete it. The button at the top says New client. No file
681
- > uploads on this page. Build only this — no other pages, forms or sample
682
- > cards."
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 "Start from the ... preset" (\`template\`) were set on the
687
- Pages screen — read them from the \`config\` your content file receives, and
688
- never write them again. THE FILE NAME RULE: the content file is the page's
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;