barua-ui 0.9.2 → 0.10.0
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/css/components/marketing.css +183 -0
- package/css/components/media.css +4 -1
- package/package.json +1 -1
|
@@ -39,6 +39,20 @@
|
|
|
39
39
|
border-block-end: 1px solid var(--b-hairline);
|
|
40
40
|
}
|
|
41
41
|
.b-marketing-nav__brand { font-weight: var(--b-weight-semibold); font-size: var(--b-text-subheadline); }
|
|
42
|
+
/* The confident bar. A 2.75rem strip of caption type is right above an
|
|
43
|
+
application, where the chrome should get out of the way; on a front page
|
|
44
|
+
it reads as a browser toolbar somebody forgot to style. --lg gives it the
|
|
45
|
+
height, the type size and the room that say this is the top of a company,
|
|
46
|
+
and the action on the right is a filled pill rather than a link. */
|
|
47
|
+
.b-marketing-nav--lg {
|
|
48
|
+
height: 4rem;
|
|
49
|
+
gap: var(--b-space-6);
|
|
50
|
+
padding-inline: clamp(var(--b-space-4), 3vw, var(--b-space-10));
|
|
51
|
+
font-size: var(--b-text-subheadline);
|
|
52
|
+
}
|
|
53
|
+
.b-marketing-nav--lg .b-marketing-nav__brand { font-size: var(--b-text-title3); }
|
|
54
|
+
.b-marketing-nav--lg .b-marketing-nav__links { gap: clamp(var(--b-space-4), 2.4vw, var(--b-space-8)); }
|
|
55
|
+
.b-marketing-nav--lg a { font-weight: var(--b-weight-medium); }
|
|
42
56
|
.b-marketing-nav__links { display: flex; gap: var(--b-space-5); margin-inline: auto; }
|
|
43
57
|
.b-marketing-nav a { color: var(--b-text-secondary); text-decoration: none; }
|
|
44
58
|
.b-marketing-nav a:hover { color: var(--b-text); }
|
|
@@ -377,18 +391,187 @@
|
|
|
377
391
|
.b-feature-row { grid-template-columns: 1fr 1fr; }
|
|
378
392
|
.b-feature-row--flip > :first-child { order: 2; }
|
|
379
393
|
}
|
|
394
|
+
/* Centred is right when the row is a picture beside prose, and wrong when it
|
|
395
|
+
is a headline beside a list of ten things: the headline drifts to the
|
|
396
|
+
middle of a tall column and stops looking like the title of what is next
|
|
397
|
+
to it. --top puts both columns on the same line. */
|
|
398
|
+
.b-feature-row--top { align-items: start; }
|
|
380
399
|
.b-feature-row__title {
|
|
381
400
|
font-size: clamp(1.5rem, 3vw, 2.25rem);
|
|
382
401
|
font-weight: var(--b-weight-semibold);
|
|
383
402
|
line-height: var(--b-leading-tight);
|
|
384
403
|
letter-spacing: var(--b-tracking-tight);
|
|
385
404
|
}
|
|
405
|
+
/* A feature row's headline at section scale. The base size is a subhead for
|
|
406
|
+
a row of three; when the row IS the chapter, it carries the chapter's
|
|
407
|
+
weight. */
|
|
408
|
+
.b-feature-row__title--lg {
|
|
409
|
+
font-size: clamp(2.25rem, 4.6vw, 3.5rem);
|
|
410
|
+
font-weight: var(--b-weight-bold);
|
|
411
|
+
line-height: 1.06;
|
|
412
|
+
}
|
|
386
413
|
.b-feature-row__body {
|
|
387
414
|
margin-block-start: var(--b-space-3);
|
|
388
415
|
color: var(--b-text-secondary);
|
|
389
416
|
line-height: var(--b-leading-body);
|
|
390
417
|
}
|
|
391
418
|
|
|
419
|
+
/* ---- The marketing page's louder half ------------------------------------
|
|
420
|
+
Everything above this line is the quiet version of a product page. What
|
|
421
|
+
follows is the confident one: type that is large enough to be read across
|
|
422
|
+
a room, a ground that changes between chapters so the page has floors, and
|
|
423
|
+
an accent used at full strength instead of apologetically. A landing page
|
|
424
|
+
is not an application, and the restraint that makes a toolbar good makes a
|
|
425
|
+
front page forgettable. */
|
|
426
|
+
|
|
427
|
+
/* Highlight marker.
|
|
428
|
+
The one word in a headline that carries the sentence, on a block of
|
|
429
|
+
accent. It sits behind the letters rather than around them: a box-shadow
|
|
430
|
+
spread gives the marker its bleed without the inline padding that would
|
|
431
|
+
break the line's rhythm, and box-decoration-break keeps it whole when the
|
|
432
|
+
phrase wraps to a second line. */
|
|
433
|
+
.b-mark {
|
|
434
|
+
color: var(--b-text);
|
|
435
|
+
/* --b-color-accent-soft is a component's fill and reads as almost nothing
|
|
436
|
+
at headline size; a marker has to be visible from across the room. */
|
|
437
|
+
--b-mark-ground: color-mix(in srgb, var(--b-color-accent) 24%, var(--b-bg));
|
|
438
|
+
background: var(--b-mark-ground);
|
|
439
|
+
box-shadow: 0.24em 0 0 var(--b-mark-ground), -0.24em 0 0 var(--b-mark-ground);
|
|
440
|
+
-webkit-box-decoration-break: clone;
|
|
441
|
+
box-decoration-break: clone;
|
|
442
|
+
border-radius: 0.08em;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/* A chapter on a tinted ground.
|
|
446
|
+
Alternating white and a wash of the accent is what gives a long page
|
|
447
|
+
floors you can feel without a single rule or border. The wash is mixed
|
|
448
|
+
from the accent so it follows a brand colour, and it is deliberately
|
|
449
|
+
weaker than --b-color-accent-soft, which is a component's fill, not a
|
|
450
|
+
room's paint. */
|
|
451
|
+
.b-chapter--tint { background: color-mix(in srgb, var(--b-color-accent) 7%, var(--b-bg)); }
|
|
452
|
+
|
|
453
|
+
/* Showcase: the product on a panel, not on the page.
|
|
454
|
+
A screenshot dropped on white reads as a document. Inside a large rounded
|
|
455
|
+
panel of colour it reads as a product, because the panel gives it an edge
|
|
456
|
+
and a shadow to sit against, and the page gets one block of brand at the
|
|
457
|
+
point a visitor is deciding whether to keep reading. */
|
|
458
|
+
.b-showcase {
|
|
459
|
+
position: relative;
|
|
460
|
+
display: grid;
|
|
461
|
+
gap: var(--b-space-6);
|
|
462
|
+
padding: clamp(var(--b-space-6), 4vw, var(--b-space-10));
|
|
463
|
+
background: linear-gradient(135deg,
|
|
464
|
+
var(--b-color-accent),
|
|
465
|
+
color-mix(in srgb, var(--b-color-accent) 78%, var(--b-color-indigo, #4f46e5)));
|
|
466
|
+
border-radius: clamp(var(--b-radius-lg), 2.5vw, 2rem);
|
|
467
|
+
overflow: hidden;
|
|
468
|
+
}
|
|
469
|
+
/* The faint diamonds that stop a large flat panel from looking like a
|
|
470
|
+
rectangle of paint. Two rotated gradients, nothing to load. */
|
|
471
|
+
.b-showcase::before {
|
|
472
|
+
content: "";
|
|
473
|
+
position: absolute;
|
|
474
|
+
inset: -20%;
|
|
475
|
+
background:
|
|
476
|
+
linear-gradient(135deg, transparent 38%, rgba(255, 255, 255, 0.07) 38% 62%, transparent 62%),
|
|
477
|
+
linear-gradient(45deg, transparent 40%, rgba(255, 255, 255, 0.05) 40% 60%, transparent 60%);
|
|
478
|
+
background-size: 46% 46%, 62% 62%;
|
|
479
|
+
pointer-events: none;
|
|
480
|
+
}
|
|
481
|
+
.b-showcase > * { position: relative; }
|
|
482
|
+
.b-showcase__shot {
|
|
483
|
+
border-radius: var(--b-radius-lg);
|
|
484
|
+
box-shadow: var(--b-shadow-lg);
|
|
485
|
+
overflow: hidden;
|
|
486
|
+
}
|
|
487
|
+
.b-showcase__shot img { display: block; width: 100%; }
|
|
488
|
+
@media (min-width: 900px) {
|
|
489
|
+
/* Wide, the panel becomes a stage: the product takes the room and the card
|
|
490
|
+
overlaps its right edge, which is the whole reason the panel is bigger
|
|
491
|
+
than the picture it holds. */
|
|
492
|
+
.b-showcase { grid-template-columns: minmax(0, 1.55fr) minmax(16rem, 0.85fr); align-items: center; }
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/* The card that floats on the showcase: three numbers and what they mean. */
|
|
496
|
+
.b-stat-card {
|
|
497
|
+
padding: clamp(var(--b-space-5), 2.5vw, var(--b-space-8));
|
|
498
|
+
background: var(--b-surface);
|
|
499
|
+
border-radius: var(--b-radius-lg);
|
|
500
|
+
box-shadow: var(--b-shadow-lg);
|
|
501
|
+
}
|
|
502
|
+
.b-stat-card__title {
|
|
503
|
+
font-size: clamp(1.6rem, 2.6vw, 2.25rem);
|
|
504
|
+
font-weight: var(--b-weight-bold);
|
|
505
|
+
line-height: 1.1;
|
|
506
|
+
letter-spacing: var(--b-tracking-tight);
|
|
507
|
+
}
|
|
508
|
+
.b-stat-card__rows { display: flex; flex-direction: column; margin-block-start: var(--b-space-5); }
|
|
509
|
+
.b-stat-card__row {
|
|
510
|
+
display: flex;
|
|
511
|
+
align-items: flex-start;
|
|
512
|
+
gap: var(--b-space-4);
|
|
513
|
+
padding-block: var(--b-space-4);
|
|
514
|
+
}
|
|
515
|
+
.b-stat-card__row + .b-stat-card__row { border-block-start: 1px solid var(--b-separator); }
|
|
516
|
+
.b-stat-card__figure {
|
|
517
|
+
display: block;
|
|
518
|
+
font-size: var(--b-text-title2);
|
|
519
|
+
font-weight: var(--b-weight-bold);
|
|
520
|
+
letter-spacing: var(--b-tracking-tight);
|
|
521
|
+
line-height: 1.1;
|
|
522
|
+
}
|
|
523
|
+
.b-stat-card__label { display: block; font-size: var(--b-text-footnote); color: var(--b-text-secondary); }
|
|
524
|
+
|
|
525
|
+
/* Logos on cards.
|
|
526
|
+
A bare row of wordmarks reads as text. On individual white plates they
|
|
527
|
+
read as the companies they stand for, which is the whole point of showing
|
|
528
|
+
them. Same wall, one modifier. */
|
|
529
|
+
.b-logo-wall--cards { gap: var(--b-space-4); }
|
|
530
|
+
.b-logo-wall--cards .b-logo-wall__logo {
|
|
531
|
+
height: auto;
|
|
532
|
+
padding: var(--b-space-4) var(--b-space-6);
|
|
533
|
+
font-size: var(--b-text-callout);
|
|
534
|
+
color: var(--b-text);
|
|
535
|
+
background: var(--b-surface);
|
|
536
|
+
border-radius: var(--b-radius-md);
|
|
537
|
+
box-shadow: var(--b-shadow-sm);
|
|
538
|
+
opacity: 1;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/* An accordion with no box around it.
|
|
542
|
+
The card version belongs in an application, where a group needs an edge to
|
|
543
|
+
separate it from the rest of the screen. On a marketing page the questions
|
|
544
|
+
are the only thing in their column, so the chrome is noise: hairlines
|
|
545
|
+
between rows, a circled mark on the right, and the open row lifted onto a
|
|
546
|
+
quiet fill so you can see where you are. */
|
|
547
|
+
.b-accordion--plain { background: none; border: 0; border-radius: 0; overflow: visible; }
|
|
548
|
+
.b-accordion--plain > .b-disclosure { border-block-end: 1px solid var(--b-separator); }
|
|
549
|
+
.b-accordion--plain > .b-disclosure + .b-disclosure { border-top: 0; }
|
|
550
|
+
.b-accordion--plain > .b-disclosure > summary {
|
|
551
|
+
padding-inline: 0;
|
|
552
|
+
padding-block: var(--b-space-5);
|
|
553
|
+
font-size: var(--b-text-callout);
|
|
554
|
+
font-weight: var(--b-weight-semibold);
|
|
555
|
+
align-items: flex-start;
|
|
556
|
+
}
|
|
557
|
+
.b-accordion--plain > .b-disclosure > summary:hover { background: none; color: var(--b-color-accent-text); }
|
|
558
|
+
.b-accordion--plain > .b-disclosure > summary::after {
|
|
559
|
+
content: "+";
|
|
560
|
+
display: grid;
|
|
561
|
+
place-items: center;
|
|
562
|
+
flex: none;
|
|
563
|
+
width: 1.75rem;
|
|
564
|
+
height: 1.75rem;
|
|
565
|
+
font-size: var(--b-text-callout);
|
|
566
|
+
font-weight: var(--b-weight-medium);
|
|
567
|
+
color: var(--b-color-accent-text);
|
|
568
|
+
border: 1px solid color-mix(in srgb, var(--b-color-accent) 40%, transparent);
|
|
569
|
+
border-radius: var(--b-radius-full);
|
|
570
|
+
rotate: none;
|
|
571
|
+
}
|
|
572
|
+
.b-accordion--plain > .b-disclosure[open] > summary::after { content: "\2212"; }
|
|
573
|
+
.b-accordion--plain > .b-disclosure > :not(summary) { padding-inline: 0; padding-block-end: var(--b-space-5); }
|
|
574
|
+
|
|
392
575
|
/* ---- Bento: tiles of unequal weight, one grid ---------------------------- */
|
|
393
576
|
.b-bento {
|
|
394
577
|
display: grid;
|
package/css/components/media.css
CHANGED
|
@@ -397,7 +397,10 @@
|
|
|
397
397
|
content: "";
|
|
398
398
|
position: absolute;
|
|
399
399
|
inset: 0;
|
|
400
|
-
|
|
400
|
+
/* The knob is set per instance; without a fallback an unset --b-img-placeholder
|
|
401
|
+
makes the whole shorthand invalid and the layer disappears rather than
|
|
402
|
+
degrading to a plain tint. */
|
|
403
|
+
background: var(--b-img-placeholder, linear-gradient(var(--b-fill-tertiary), var(--b-fill-tertiary))) center / cover no-repeat;
|
|
401
404
|
/* Scaled up because a blur samples past the edges and would otherwise
|
|
402
405
|
leave a soft border all the way round. */
|
|
403
406
|
filter: blur(14px);
|