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

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.46",
3
+ "version": "1.2.49",
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",
@@ -863,12 +863,20 @@ Field \`type\` must be one of: \`text\`, \`email\`, \`tel\` (phone / WhatsApp,
863
863
  renders a country-code picker), \`textarea\`, \`number\`, \`date\` (renders a
864
864
  calendar picker; the answer is stored as \`YYYY-MM-DD\`), \`select\` (needs
865
865
  \`options\`: a list of plain strings), \`checkbox\`, \`currency\` (optional
866
- \`currencySymbol\`, default \`$\`), \`age\`. Any other value renders nothing.
866
+ \`currencySymbol\`, default \`$\`), \`age\`, \`file\` (the person attaches a file —
867
+ it uploads as they pick it, and the Inbox entry links to it; optional
868
+ \`accept\`, e.g. \`'image/*'\` or \`'.pdf,.doc,.docx'\`). Any other value renders
869
+ nothing.
867
870
 
868
871
  A day is always a \`date\` field — booking day, preferred date, start date,
869
872
  deadline, date of birth, appointment. NEVER a \`text\` field asking people to
870
873
  type a date, and never three questions for day, month and year.
871
874
 
875
+ An attachment is always a \`file\` field — CV, photo, receipt, screenshot,
876
+ "send us your logo". It works on public and private forms alike; NEVER ask
877
+ people to paste a link to their file instead, and never write your own upload
878
+ code for a form.
879
+
872
880
  Money is always a \`currency\` field (budget, price, cost, fee), never
873
881
  \`number\`. When the owner names a currency — "in euros", "GBP", "₹" — set
874
882
  \`currencySymbol\` to it (\`'€'\`, \`'£'\`, \`'₹'\`); otherwise leave the default \`$\`.
package/src/index.css CHANGED
@@ -197,6 +197,17 @@ h3,
197
197
  }
198
198
  }
199
199
 
200
+ /* Before PageTitle existed, a page title was
201
+ `text-3xl md:text-4xl lg:text-5xl`, and of the weight rules above it was
202
+ .text-3xl/.text-4xl — same !important, written later — that won at every
203
+ width. So the title has always rendered at the h2 weight; a bare h1 now
204
+ reaches the heavier --weight-h1 instead, which is the whole of the "the
205
+ titles look different" change. Unlayered and more specific than the `h1`
206
+ rule, so it wins without depending on layer order. */
207
+ .page-title {
208
+ font-weight: var(--weight-h2, 700) !important;
209
+ }
210
+
200
211
  @layer utilities {
201
212
  .glass-panel {
202
213
  background: var(--panel-bg);
@@ -235,6 +246,30 @@ h3,
235
246
  0 2px 6px rgba(24, 16, 64, 0.07);
236
247
  }
237
248
 
249
+ /* A form card. It holds questions people must read and boxes they must
250
+ fill, so it cannot be the 5% .glass-panel wash — over a photo or a busy
251
+ page the labels dissolved into whatever sat behind them. Not as solid as
252
+ .glass-popover either: a form sits IN the page, not over it, so a little
253
+ of the ground still comes through. Defined below FBOS:THEME-END so it
254
+ ships compiled and existing installs pick it up without a theme.css
255
+ change. */
256
+ .glass-form {
257
+ background: color-mix(in srgb, var(--bg-color) 82%, transparent);
258
+ backdrop-filter: blur(24px) saturate(160%);
259
+ -webkit-backdrop-filter: blur(24px) saturate(160%);
260
+ border: 1px solid var(--panel-border);
261
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
262
+ }
263
+
264
+ [data-theme='light'] .glass-form {
265
+ background: color-mix(in srgb, var(--bg-color) 88%, transparent);
266
+ }
267
+
268
+ .glass-form:hover {
269
+ border-color: var(--accent-color);
270
+ box-shadow: 0 8px 30px var(--glow-color, var(--primary-glow));
271
+ }
272
+
238
273
  /* An open drop-down. Deliberately NOT .glow-focus: the 25px halo read as a
239
274
  spotlight on what is just a list being open, and it was sliced off by any
240
275
  panel animating its height nearby. An inset ring cannot be clipped. */
@@ -435,6 +470,36 @@ h3,
435
470
  background-image: var(--text-gradient);
436
471
  }
437
472
 
473
+ /* The page-title h1 (components/PageTitle.tsx). Fluid on a phone — the
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
478
+ carry weight rules that would fight these sizes — the weight comes from
479
+ the unlayered .page-title rule further up, which pins the h2 weight the
480
+ title has always rendered at. */
481
+ .page-title {
482
+ font-size: clamp(1.5rem, 1.05rem + 1.9vw, 2.25rem);
483
+ line-height: 1.2;
484
+ white-space: nowrap;
485
+ }
486
+
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. */
490
+ @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; }
496
+ }
497
+
498
+ .page-title[data-fold] {
499
+ white-space: normal;
500
+ text-wrap: balance;
501
+ }
502
+
438
503
  .accent-gradient {
439
504
  background: linear-gradient(135deg, #6d28d9 0%, #a78bfa 100%);
440
505
  }
@@ -32,7 +32,7 @@ export function Home() {
32
32
  </motion.div>
33
33
 
34
34
  <motion.h1
35
- className="text-5xl sm:text-6xl md:text-7xl lg:text-[5.5rem] font-extrabold tracking-tight mb-6 md:mb-8 text-gradient animate-float leading-[1.1] md:leading-[1.15] px-2"
35
+ className="text-4xl sm:text-5xl md:text-6xl lg:text-[4.5rem] font-extrabold tracking-tight mb-6 md:mb-8 text-gradient animate-float leading-[1.1] md:leading-[1.15] px-2"
36
36
  >
37
37
  Your AI Firebase
38
38
  </motion.h1>