your-ai-workflow-firebase-os 1.2.49 → 1.2.51

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.49",
3
+ "version": "1.2.51",
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",
@@ -295,13 +295,24 @@ change the owner can use and a change they cannot.
295
295
  first. Never write a form of your own with inputs and a submit handler —
296
296
  its entries would never reach the Inbox.
297
297
  6. Build what was asked and nothing more. Do not add extra pages, extra views,
298
- extra forms, sample data or metrics the owner did not mention. Inside a page
298
+ extra forms, sample data or metrics the owner did not mention. Write the
299
+ page for the people who will VISIT it: never reprint words off the owner's
300
+ own admin screens on it — no "Copy this into your assistant's chat", no
301
+ "Ask your assistant", no prompt box, no instruction addressed to the owner
302
+ or to you. Those headings belong to the tools the owner asks for the page
303
+ WITH; on the page itself they are nonsense to a visitor, and the build
304
+ warns about them. Inside a page
299
305
  you design freely — "an impressive hero" is yours to make good — the limit
300
306
  is on adding THINGS, not on doing the asked thing well. Lay the page out as
301
307
  ONE clean column of sections using the full width: never nest a panel
302
308
  inside another panel, never absolutely position sections over each other,
303
309
  and never give a section a fixed height that clips it — more stages, more
304
310
  columns or more cards just make the page taller, and the page scrolls.
311
+ Above all, never cap the PAGE itself: no \`h-screen\`, \`max-h-screen\` or
312
+ \`h-[100vh]\` wrapper and no \`overflow-hidden\`/\`overflow-y-auto\` around
313
+ the whole page — on a phone that box swallows everything below one screen
314
+ and the visitor cannot scroll to the end. The build warns, and the app
315
+ force-grows such a box at runtime.
305
316
  7. A page the owner added on their Pages screen ALREADY EXISTS. The sentence
306
317
  they paste says so, names its web address and names its one content file —
307
318
  write exactly that file plus its two registry.ts lines (and, only when the
@@ -332,6 +343,19 @@ change the owner can use and a change they cannot.
332
343
  CSS in a component — one global rule restyles and re-pads every page of
333
344
  the app at once. The app also disables any \`<style>\` tag inside a
334
345
  content slot at runtime, so global CSS cannot work — do not try it.
346
+ Pictures: every \`<img>\` gets \`loading="lazy"\` (except one at the very top
347
+ of the page), \`decoding="async"\` and a \`width\` and \`height\` — a public
348
+ page that pulls in several full-size pictures at once takes seconds to
349
+ appear on a phone. Use the links the owner gave you as they are; the app
350
+ already shrinks what they upload. Never add a picture from anywhere else.
351
+ And NEVER change the size of the page title: the big heading at the top of
352
+ every page is the library's, it sizes itself to fit the words and the
353
+ screen, and it is not yours to touch — not with a \`font-size\` on \`h1\`,
354
+ \`h2\`, \`h3\` or \`.page-title\` in \`theme.css\` (the build fails on that
355
+ rule, and the app ignores it anyway), and not with an \`<h1>\` in a content
356
+ file (they are hidden inside the slot). Headings you write inside your own
357
+ content are yours to size freely — \`SectionHeading\`, or an \`<h2>\` /
358
+ \`<h3>\` of your own.
335
359
 
336
360
  Before you answer, re-read the request and this list, and delete anything you
337
361
  built that breaks a line of it.
@@ -357,7 +381,10 @@ stops the build with one sentence that says the fix.
357
381
  content file (global CSS — it restyles and re-pads every page of the app,
358
382
  style with theme classes instead); a \`*Content.tsx\` or \`*.config.ts\`
359
383
  saved anywhere except directly in its own folder — a subfolder, another
360
- directory — is invisible to the app, so the build stops and names the move.
384
+ directory — is invisible to the app, so the build stops and names the move;
385
+ and a rule in \`theme.css\` that sizes \`h1\`, \`h2\`, \`h3\` or
386
+ \`.page-title\` — it would resize every page title in the app, so the build
387
+ stops and says to delete it.
361
388
  - A hand-written form — a \`<form>\` or an \`onSubmit\` in a content file with
362
389
  no \`<ContactPopup />\` — prints a warning, because its entries never reach
363
390
  the Inbox. So does a hard-coded colour
@@ -465,14 +492,19 @@ address to wire — the page finds its content by that key.
465
492
 
466
493
  ### The pages that already exist, and the one file each is filled by
467
494
 
468
- Three pages already exist and are NEVER created, re-created or re-addressed.
495
+ Four pages already exist and are NEVER created, re-created or re-addressed.
469
496
  Each is filled by exactly one file, the same way as any other page:
470
497
 
471
- | page | web address | the one file to write |
472
- | ------------- | ----------- | ------------------------------------------------------------------ |
473
- | Home | \`/\` | \`src/your-ai-workflow-firebase-os/Home.tsx\` (edit it, do not add one) |
474
- | Contact | \`/contact\` | \`microcomponents/ContactContent.tsx\` |
475
- | Support | \`/support\` | \`microcomponents/SupportContent.tsx\` |
498
+ | page | web address | the one file to write |
499
+ | ------------- | ------------ | ------------------------------------------------------------------ |
500
+ | Home | \`/\` | \`src/your-ai-workflow-firebase-os/Home.tsx\` (edit it, do not add one) |
501
+ | Contact | \`/contact\` | \`microcomponents/ContactContent.tsx\` |
502
+ | Support | \`/support\` | \`microcomponents/SupportContent.tsx\` |
503
+ | Dashboard | \`/dashboard\` | \`microcomponents/DashboardContent.tsx\` |
504
+
505
+ The dashboard is the screen a signed-in person lands on. It ships empty, and
506
+ \`DashboardContent.tsx\` draws inside its panel, below the welcome heading and
507
+ the dashboard menu the page already renders.
476
508
 
477
509
  Contact and Support show their form as a pop-up until one of those files
478
510
  exists; the moment it does, the page draws that file instead. So "put the
@@ -516,7 +548,11 @@ everywhere, including the home page.
516
548
  See "Presets" below.
517
549
  9. In \`theme.css\`, change CSS variables only. Never redefine \`.glass-panel\`,
518
550
  \`.text-gradient\` or \`.btn-primary\` — they ship compiled in the library and
519
- redefining them breaks the app's chrome everywhere.
551
+ redefining them breaks the app's chrome everywhere. Never add a
552
+ \`font-size\` to \`h1\`, \`h2\`, \`h3\` or \`.page-title\` there either: that
553
+ resizes every page title in the app, the build now fails on it, and the
554
+ app pins the title's size regardless. The heading WEIGHT rules already in
555
+ that file are the theme's own — leave them as they are.
520
556
 
521
557
  ## Changing the home page
522
558
 
@@ -545,6 +581,11 @@ the Assets screen, copy its link there, and paste the link back to you — then
545
581
  put it in. This is for pictures on pages only — the logo and the favicon are
546
582
  never yours to change (see the theme section).
547
583
 
584
+ A sentence pasted from the Pages screen can carry several pictures, and each
585
+ one says where it goes — \"where it goes: across the top, behind the heading\".
586
+ Put every picture it names on the page, each one where the sentence says. Only
587
+ a picture with nothing said about it is yours to place.
588
+
548
589
  You can reuse the built-in forms anywhere on the page you design:
549
590
 
550
591
  \`\`\`tsx
package/src/index.css CHANGED
@@ -472,27 +472,33 @@ h3,
472
472
 
473
473
  /* The page-title h1 (components/PageTitle.tsx). Fluid on a phone — the
474
474
  component shrinks a long title to fit the line and only sets data-fold
475
- when even the floor size cannot hold it — but from md up the sizes are
476
- the pre-PageTitle breakpoint steps (36px/48px), so desktop looks exactly
477
- as it always did. No .text-2xl/.text-3xl here on purpose: those classes
475
+ when even the floor size cannot hold it — and 36px is the ceiling at
476
+ every width above that. The old lg step took the title to 48px on a wide
477
+ screen, which read as shouting; a page title stops growing once the line
478
+ is comfortable. No .text-2xl/.text-3xl here on purpose: those classes
478
479
  carry weight rules that would fight these sizes — the weight comes from
479
480
  the unlayered .page-title rule further up, which pins the h2 weight the
480
- title has always rendered at. */
481
+ title has always rendered at.
482
+
483
+ `!important`, and inside a layer, is the whole point: a page title is
484
+ the app's chrome, not the assistant's to resize, and it kept being
485
+ resized anyway. The consumer's theme.css is unlayered, so an `h1 {
486
+ font-size: 3rem }` written there — with or without !important — beat
487
+ these rules and every page title in the app grew. An important
488
+ declaration inside a layer outranks any unlayered one, so nothing
489
+ written in theme.css can reach the title now. The one thing that still
490
+ can is PageTitle's own shrink-to-fit, which sets the size inline WITH
491
+ priority for exactly this reason. */
481
492
  .page-title {
482
- font-size: clamp(1.5rem, 1.05rem + 1.9vw, 2.25rem);
483
- line-height: 1.2;
493
+ font-size: clamp(1.5rem, 1.05rem + 1.9vw, 2.25rem) !important;
494
+ line-height: 1.2 !important;
484
495
  white-space: nowrap;
485
496
  }
486
497
 
487
- /* The line heights are the old text-4xl / text-5xl ones, not a single
488
- ratio: at 48px a 1.2 line box stands ~10px taller than the title always
489
- did and pushes the route row down with it. */
498
+ /* The line height is the old text-4xl one, not a single ratio: 1.2 at 36px
499
+ stands taller than the title always did and pushes the route row down. */
490
500
  @media (min-width: 768px) {
491
- .page-title { font-size: 2.25rem; line-height: 2.5rem; }
492
- }
493
-
494
- @media (min-width: 1024px) {
495
- .page-title { font-size: 3rem; line-height: 1; }
501
+ .page-title { font-size: 2.25rem !important; line-height: 2.5rem !important; }
496
502
  }
497
503
 
498
504
  .page-title[data-fold] {