@eduardoalvarez/arrecife 0.10.0 → 0.12.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/CHANGELOG.md +37 -0
- package/README.md +44 -13
- package/dist/brand/index.cjs +11 -5
- package/dist/brand/index.d.cts +45 -6
- package/dist/brand/index.d.ts +45 -6
- package/dist/brand/index.js +3 -3
- package/dist/chart/index.cjs +28 -6
- package/dist/chart/index.d.cts +21 -5
- package/dist/chart/index.d.ts +21 -5
- package/dist/chart/index.js +29 -7
- package/dist/{chunk-FGFNK72B.js → chunk-5YWGOFDX.js} +17 -4
- package/dist/{chunk-5A5GH2PF.js → chunk-6QJQ6K7J.js} +1 -1
- package/dist/{chunk-TRPBID2W.js → chunk-BFYNBIVJ.js} +1 -1
- package/dist/{chunk-IIT3YLYN.js → chunk-BRDTB44R.js} +12 -6
- package/dist/{chunk-XXDATT3A.js → chunk-FF33ARRA.js} +1 -1
- package/dist/{chunk-FAAGZG7A.js → chunk-TMUGT3Y3.js} +1 -1
- package/dist/{chunk-6IGD5REB.js → chunk-W75O3Z77.js} +1 -1
- package/dist/{chunk-ZSCSKCTY.js → chunk-WU66TPJT.js} +1 -1
- package/dist/form/index.cjs +2 -2
- package/dist/form/index.js +4 -4
- package/dist/icons/index.cjs +2 -2
- package/dist/icons/index.d.cts +2 -2
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/index.js +3 -3
- package/dist/index.cjs +153 -31
- package/dist/index.d.cts +95 -18
- package/dist/index.d.ts +95 -18
- package/dist/index.js +141 -38
- package/dist/og/index.cjs +1 -2
- package/dist/og/index.js +1 -1
- package/dist/shiki/index.js +1 -1
- package/dist/tokens/index.cjs +17 -4
- package/dist/tokens/index.d.cts +20 -5
- package/dist/tokens/index.d.ts +20 -5
- package/dist/tokens/index.js +2 -2
- package/dist/tokens/theme.css +20 -3
- package/dist/variants/index.cjs +1 -1
- package/dist/variants/index.d.cts +2 -2
- package/dist/variants/index.d.ts +2 -2
- package/dist/variants/index.js +1 -1
- package/llms.txt +71 -13
- package/package.json +1 -1
package/llms.txt
CHANGED
|
@@ -72,6 +72,15 @@ project declares `@source`, include the package:
|
|
|
72
72
|
@source "../node_modules/@eduardoalvarez/arrecife/dist";
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
+
**Every token is in `:root`, and you may read it with `var()`.** The block is
|
|
76
|
+
`@theme static`, so a token is emitted whether or not a utility asks for it:
|
|
77
|
+
`style={{ fill: 'var(--color-series-1)' }}` or `var(--radius-card)` from your own
|
|
78
|
+
JavaScript resolves. Do not write a fallback hexadecimal next to it — that is a
|
|
79
|
+
second copy of a value this package exists to keep in one place. Before that fix
|
|
80
|
+
Tailwind dropped the four `--color-series-*` as unused, because they are read by
|
|
81
|
+
`var()` and requested by no class, and the charts drew black. See
|
|
82
|
+
`decisions/` § 61.
|
|
83
|
+
|
|
75
84
|
### Light mode and dark mode
|
|
76
85
|
|
|
77
86
|
**Dark mode is primary and it is the default.** A dark project declares nothing.
|
|
@@ -263,7 +272,7 @@ does nothing.
|
|
|
263
272
|
|
|
264
273
|
**One `Nav` per page.** It renders the site's `banner` landmark, and two banners
|
|
265
274
|
on one page is an accessibility failure — which is also why `PageHeader` goes
|
|
266
|
-
inside `<main>` and is not a landmark. See `decisions
|
|
275
|
+
inside `<main>` and is not a landmark. See `decisions/` § 30.
|
|
267
276
|
|
|
268
277
|
### Icons are yours, the way they are drawn is not
|
|
269
278
|
|
|
@@ -332,7 +341,7 @@ a Server Component throws. It ships no `"use client"` to stop you, so the failur
|
|
|
332
341
|
arrives at render rather than at build. The `/ssr` entry is the same icons
|
|
333
342
|
without the context read, and `Icon` works with either.
|
|
334
343
|
|
|
335
|
-
See `decisions
|
|
344
|
+
See `decisions/` § 29 and § 35.
|
|
336
345
|
|
|
337
346
|
### `Stat`'s delta says direction, not judgement
|
|
338
347
|
|
|
@@ -349,7 +358,7 @@ errores» point the same way and mean opposite things, so whether a number is go
|
|
|
349
358
|
news is `tone`'s job and yours: `neutral` for a datum, `alert` when the number IS
|
|
350
359
|
the problem, `achievement` when it is the reward. `alert` and `achievement` paint
|
|
351
360
|
the same sand on purpose — the API is the meaning, the colour is the
|
|
352
|
-
implementation. See `decisions
|
|
361
|
+
implementation. See `decisions/` § 28.
|
|
353
362
|
|
|
354
363
|
`delta.value` arrives already formatted, like `value`: the library imposes no
|
|
355
364
|
locale and computes no percentage. `spark` is a `ReactNode` and the library ships
|
|
@@ -359,7 +368,7 @@ no sparkline — pass your own, exactly like `icon`.
|
|
|
359
368
|
and biolume goes on the icon badge and the sparkline instead: three accents in
|
|
360
369
|
one card and the figure stops being the loudest thing in it. `alert` and
|
|
361
370
|
`achievement` DO paint the number sand, which is how «this number is not just a
|
|
362
|
-
number» is said. See `decisions
|
|
371
|
+
number» is said. See `decisions/` § 31.
|
|
363
372
|
|
|
364
373
|
**`icon` is a badge in the corner opposite the title**, in a circle tinted at
|
|
365
374
|
10 % of the tone. You pass the glyph; the circle, the tint and the size are the
|
|
@@ -433,6 +442,13 @@ it is `aria-hidden`. The column titles render as `<h3>`. Pass `linkAsChild` to
|
|
|
433
442
|
plug in the router's `Link`; without it the columns are plain `<a>` and every
|
|
434
443
|
navigation costs a page load.
|
|
435
444
|
|
|
445
|
+
**`builtWith` adds «Creado con Arrecife ♥» under the signature**, linking to the
|
|
446
|
+
library's Storybook. It works on both shapes and it is OFF by default:
|
|
447
|
+
the credit is the site's to give, so the library does not put it in a footer
|
|
448
|
+
that did not ask. Do not hand-write that line instead — the heart is Phosphor's
|
|
449
|
+
filled `Heart` and never the emoji, and the URL is checked against the package's
|
|
450
|
+
`homepage` on every build. See `decisions/` § 62.
|
|
451
|
+
|
|
436
452
|
### `Table` brings its own surface
|
|
437
453
|
|
|
438
454
|
```tsx
|
|
@@ -480,6 +496,13 @@ re-exported, because they are unchanged and wrapping them buys nothing.
|
|
|
480
496
|
down for a ranking. Recharts calls that same thing `layout="vertical"` — if you
|
|
481
497
|
are porting code, the value flips.
|
|
482
498
|
|
|
499
|
+
**A percentage passes `valueMax={100}`.** Without it the value axis ends at the
|
|
500
|
+
largest datum, and on a horizontal ranking — whose value axis is hidden — a
|
|
501
|
+
course watched to 40 % draws as a full bar when it is the highest on the list.
|
|
502
|
+
The bottom is always zero, and it is a floor rather than a clip: a datum above
|
|
503
|
+
`valueMax` widens the axis instead of running off the edge. It is on all three
|
|
504
|
+
types. See `decisions/` § 58.
|
|
505
|
+
|
|
483
506
|
`stacked` on `AreaChart` and `BarChart` adds the series up. Without it areas
|
|
484
507
|
overlap, which is honest and rarely what you want with more than one series: to
|
|
485
508
|
COMPARE rather than add up, the type is `LineChart`.
|
|
@@ -487,6 +510,13 @@ COMPARE rather than add up, the type is `LineChart`.
|
|
|
487
510
|
Anything that is not a series over a category axis has no type and is not missing
|
|
488
511
|
one. A doughnut is `ChartContainer` plus Recharts' `Pie` with `SERIES_COLORS`.
|
|
489
512
|
|
|
513
|
+
**The series palette comes from `seriesColor(i)` and `SERIES_COLORS`, and both
|
|
514
|
+
return `var(--color-series-N)`** rather than a hexadecimal, so the colors follow
|
|
515
|
+
the mode instead of freezing to the one that was live when the chart mounted. You
|
|
516
|
+
do not need `data-theme` on `<html>` for that to resolve, and you do not need a
|
|
517
|
+
fallback: the tokens are in `:root` on every page. Pass `color` per series only
|
|
518
|
+
to override the palette on purpose — a semantic red for a failure count, say.
|
|
519
|
+
|
|
490
520
|
### The social icons are yours, and they come from Phosphor
|
|
491
521
|
|
|
492
522
|
Until 0.10.0 the library shipped ten of them at `./social` — `GitHub`,
|
|
@@ -578,7 +608,7 @@ compiles and looks wrong, or that fails the project's accessibility audit.
|
|
|
578
608
|
3. **`Button variant="destructive"` is for the irreversible only.** Never for
|
|
579
609
|
«cancel» on a form, and not inside an `AlertDialog` — there the confirm button
|
|
580
610
|
stays `primary`, because the title, the focus on cancel and the no-click-outside
|
|
581
|
-
already carry the weight. See `decisions
|
|
611
|
+
already carry the weight. See `decisions/` § 21.
|
|
582
612
|
4. **`secondary` is never filled.** It is border and text.
|
|
583
613
|
5. **No entrance animations.** Modals, menus, tooltips and toasts appear where
|
|
584
614
|
they will stay. There are five declared exceptions, all behind `motion-safe`
|
|
@@ -590,6 +620,10 @@ compiles and looks wrong, or that fails the project's accessibility audit.
|
|
|
590
620
|
the only member of the second criterion § 23 opened for it.
|
|
591
621
|
6. **Semantics and scale are independent.** An `h2` that has to look small is
|
|
592
622
|
`<Text as="h2" variant="h3">`, never an `h3` that lies about the hierarchy.
|
|
623
|
+
`PageHeader` makes the same split: `as` is the level and `titleVariant` the
|
|
624
|
+
scale. An admin panel's title is `<PageHeader title="Ventas"
|
|
625
|
+
titleVariant="h3" />` — still the page's only `h1`, at 25px instead of 44. See
|
|
626
|
+
`decisions/` § 57.
|
|
593
627
|
7. **`textMuted` never goes over `surfaceRaised`**: it gives 4.07 in dark. Over a
|
|
594
628
|
raised surface — menus, active tabs — the token is `textSecondary`.
|
|
595
629
|
8. **A background tinted with a semantic color carries text from a text token**,
|
|
@@ -607,9 +641,14 @@ compiles and looks wrong, or that fails the project's accessibility audit.
|
|
|
607
641
|
hole inside a table page or a dashboard widget, and it carries no face — the
|
|
608
642
|
type does not accept one. `page`, the default, is the one that IS the screen,
|
|
609
643
|
and there `expression` stays mandatory. A dozen mascots on one admin screen is
|
|
610
|
-
not the humour contract. See `decisions
|
|
644
|
+
not the humour contract. See `decisions/` § 27.
|
|
611
645
|
12. **The fin is not a free parameter**: `foam` on a dark background, `color` on a
|
|
612
646
|
light one. The components already choose it from the background.
|
|
647
|
+
**On a site that switches theme, pass `background="auto"`** to `Isotype` or
|
|
648
|
+
`Logo`: both fins are rendered and the `light:` variant shows the one that
|
|
649
|
+
reads, so no call site has to know the theme. A surface that keeps one mode
|
|
650
|
+
whatever the page does — a dark panel on a light page — is a fixed
|
|
651
|
+
background, and it still says `dark`. See `decisions/` § 60.
|
|
613
652
|
|
|
614
653
|
## What the library does NOT do, on purpose
|
|
615
654
|
|
|
@@ -625,6 +664,12 @@ These are the confusions people run into most often when consuming it.
|
|
|
625
664
|
provider.
|
|
626
665
|
- **It ships no router.** The components with links accept `asChild` to wrap the
|
|
627
666
|
framework's `Link`.
|
|
667
|
+
- **It does not know your prices, ratings or images.** `CourseCard` takes
|
|
668
|
+
`media` — the cover, bleeding to the edges, with `alt=""` because the title
|
|
669
|
+
already names the card — and `footer`, the closing row where a project puts the
|
|
670
|
+
rating and the price. Both are nodes the project draws; the card keeps the
|
|
671
|
+
title, its hover and the sand progress bar. The title does not go over the
|
|
672
|
+
cover. See `decisions/` § 59.
|
|
628
673
|
- **It ships no `data-testid`.** A composed part your test suite has to reach is
|
|
629
674
|
reached with a slot: `ArticleCard`'s `tagAsChild`, `Breadcrumb`'s and
|
|
630
675
|
`TableOfContents`'s `linkAsChild`. They hand you the element and its
|
|
@@ -1389,11 +1434,15 @@ Source: `src/components/code-block/index.tsx`
|
|
|
1389
1434
|
|
|
1390
1435
|
Source: `src/components/course-card/index.tsx`
|
|
1391
1436
|
|
|
1392
|
-
|
|
1437
|
+
The course, as a card that links to it.
|
|
1438
|
+
|
|
1439
|
+
- Extends: `Omit<CardShellProps, 'children' \| 'title' \| 'media'>`
|
|
1393
1440
|
|
|
1394
1441
|
| prop | type | req. | default | what it does |
|
|
1395
1442
|
| --- | --- | --- | --- | --- |
|
|
1396
1443
|
| `asChild` | `boolean \| undefined` | | | Renders the child instead of an `<a>`. It is how Next's or Astro's `Link` plugs in without the library depending on any router. |
|
|
1444
|
+
| `footer` | `ReactNode` | | | The closing row, under `meta`: the rating, the price, whatever the project sells the course with. It sits at the bottom of the card, so the rows of a grid line up whatever the length of each summary. |
|
|
1445
|
+
| `media` | `ReactNode` | | | The cover, at the top and bleeding to the card's edges, with `alt=""`: the whole card is one link and `title` already names it. |
|
|
1397
1446
|
| `meta` | `readonly ReactNode[]` | | | Level, duration, number of lessons: whatever the project wants to list. |
|
|
1398
1447
|
| `progress` | `number` | | | Percentage completed. It only makes sense for someone already enrolled; when passed, the bar goes in sand, which is the color of course progress. |
|
|
1399
1448
|
| `status` | `ReactNode` | | | Status label: «próximamente», «gratis», «nuevo». |
|
|
@@ -1444,6 +1493,7 @@ Source: `src/components/footer/index.tsx`
|
|
|
1444
1493
|
| --- | --- | --- | --- | --- |
|
|
1445
1494
|
| `action` | `ReactNode` | | | An action under the row of icons — «Reportar un problema». Usually a tertiary button. |
|
|
1446
1495
|
| `brand` | `ReactNode` | | | The brand row: the fin and the wordmark, at the very top. |
|
|
1496
|
+
| `builtWith` | `boolean \| undefined` | | | Adds «Creado con Arrecife ♥», linking to the library's Storybook. |
|
|
1447
1497
|
| `columns` | `readonly FooterColumn[]` | | | The link columns. Mandatory: without them `full` is the default form with extra steps. |
|
|
1448
1498
|
| `description` | `ReactNode` | | | One line under the brand, saying what the site is. |
|
|
1449
1499
|
| `domain` | `string` | | | The domain the signature prints, defaulting to the identity's own. |
|
|
@@ -1557,6 +1607,7 @@ One header at two scales, not two components.
|
|
|
1557
1607
|
| `eyebrow` | `ReactNode` | | | Mono, small caps, in accent. It is the section the page belongs to. |
|
|
1558
1608
|
| `size` | `"display" \| "page"` | | `page` | |
|
|
1559
1609
|
| `title` | `ReactNode` | yes | | |
|
|
1610
|
+
| `titleVariant` | `"display" \| "h1" \| "h2" \| "h3"` | | | The headline's scale, when the screen needs a different one from what `size` gives — `display` for `display`, `h1` for `page`. |
|
|
1560
1611
|
|
|
1561
1612
|
### ScrollingProgressBar
|
|
1562
1613
|
|
|
@@ -1588,7 +1639,7 @@ A large metric: the number in the `stat` scale and its name underneath.
|
|
|
1588
1639
|
| `label` | `ReactNode` | yes | | What is being counted. It goes in mono small caps. |
|
|
1589
1640
|
| `progress` | `number` | | | With `progress`, the metric reads as progress and adds the bar. |
|
|
1590
1641
|
| `spark` | `ReactNode` | | | The number's shape over time, under it. A `ReactNode` and not a data prop: a sparkline needs a charting library, and this component lives in the barrel that four projects install. The one project that draws them passes its own, exactly like `icon`. |
|
|
1591
|
-
| `tone` | `"neutral" \| "alert" \| "achievement"` | | `neutral` | `alert` ONLY when the number is the problem, and `achievement` when it is the opposite — the diplomas issued, the modules finished. The two paint the same sand today and they are still two names: a system that names by meaning cannot make «this is bad» the only way to say «this stands out». See `docs/decisions
|
|
1642
|
+
| `tone` | `"neutral" \| "alert" \| "achievement"` | | `neutral` | `alert` ONLY when the number is the problem, and `achievement` when it is the opposite — the diplomas issued, the modules finished. The two paint the same sand today and they are still two names: a system that names by meaning cannot make «this is bad» the only way to say «this stands out». See `docs/decisions/` § 28. |
|
|
1592
1643
|
| `value` | `ReactNode` | yes | | The number, already formatted. The library imposes no locale. |
|
|
1593
1644
|
|
|
1594
1645
|
### TalkCard
|
|
@@ -1645,12 +1696,14 @@ Imported from `@eduardoalvarez/arrecife` or `@eduardoalvarez/arrecife/brand`. 4
|
|
|
1645
1696
|
|
|
1646
1697
|
Source: `src/brand/isotype.tsx`
|
|
1647
1698
|
|
|
1699
|
+
The fin, in the variant its background asks for.
|
|
1700
|
+
|
|
1648
1701
|
- Extends: `Omit<ComponentPropsWithoutRef<'img'>, 'src' \| 'alt'>`
|
|
1649
1702
|
|
|
1650
1703
|
| prop | type | req. | default | what it does |
|
|
1651
1704
|
| --- | --- | --- | --- | --- |
|
|
1652
1705
|
| `alt` | `string` | | | Alt text. Empty when the isotype accompanies text that already names it. |
|
|
1653
|
-
| `background` | `"dark" \| "light"` | | `dark` | Which background it sits on. Deciding is mandatory even though it has a default: the fin's body is nearly black, so the two-blue variant disappears over abyss.
|
|
1706
|
+
| `background` | `"dark" \| "light" \| "auto"` | | `dark` | Which background it sits on, or `auto` on a site that switches theme: both fins are rendered and CSS shows the one that reads. Deciding is mandatory even though it has a default: the fin's body is nearly black, so the two-blue variant disappears over abyss. |
|
|
1654
1707
|
| `basePath` | `string` | | `ASSETS_PATH` | |
|
|
1655
1708
|
|
|
1656
1709
|
### Logo
|
|
@@ -1663,7 +1716,7 @@ The wordmark comes from `naming.wordmark`, not from a hand-written string, and i
|
|
|
1663
1716
|
|
|
1664
1717
|
| prop | type | req. | default | what it does |
|
|
1665
1718
|
| --- | --- | --- | --- | --- |
|
|
1666
|
-
| `background` | `"dark" \| "light"` | | `dark` |
|
|
1719
|
+
| `background` | `"dark" \| "light" \| "auto"` | | `dark` | The background the logo sits on, handed to its fin. `auto` follows the theme — see `Isotype`. The wordmark needs no help: it is `textPrimary`, which already follows the mode. |
|
|
1667
1720
|
| `basePath` | `string` | | `ASSETS_PATH` | |
|
|
1668
1721
|
| `isotypeOnly` | `boolean \| undefined` | | `false` | Hides the wordmark and leaves only the fin, for very narrow bars. |
|
|
1669
1722
|
| `withTagline` | `boolean \| undefined` | | `false` | Adds the tagline under the wordmark, separated from the fin by a divider. |
|
|
@@ -1819,6 +1872,7 @@ A series over time, with the fill fading out underneath it.
|
|
|
1819
1872
|
| `series` | `readonly ChartSeries[]` | yes | | |
|
|
1820
1873
|
| `stacked` | `boolean \| undefined` | | `false` | Adds the series up instead of overlaying them. |
|
|
1821
1874
|
| `summary` | `ReactNode` | | | What the chart says, in words. It goes in a visually hidden `figcaption`. |
|
|
1875
|
+
| `valueMax` | `number` | | | The top of the value axis, when the scale has one that the data does not reach — 100 for a percentage. |
|
|
1822
1876
|
| `xKey` | `string` | yes | | The key on the category axis: the day, the month, the course. |
|
|
1823
1877
|
| `xTickFormatter` | `(value: unknown) => string` | | | Formats the TICK on the category axis. Returns a string, because an axis tick is an SVG `<text>` and not a place a node can go. |
|
|
1824
1878
|
| `yTickFormatter` | `(value: unknown) => string` | | | Formats the tick on the VALUE axis — the currency symbol, the thousands separator, the percent sign. |
|
|
@@ -1839,6 +1893,7 @@ Bars, upright or lying down.
|
|
|
1839
1893
|
| `series` | `readonly ChartSeries[]` | yes | | |
|
|
1840
1894
|
| `stacked` | `boolean \| undefined` | | `false` | Stacks the series instead of putting them side by side. |
|
|
1841
1895
|
| `summary` | `ReactNode` | | | What the chart says, in words. It goes in a visually hidden `figcaption`. |
|
|
1896
|
+
| `valueMax` | `number` | | | The top of the value axis, when the scale has one that the data does not reach — 100 for a percentage. |
|
|
1842
1897
|
| `xKey` | `string` | yes | | The key on the category axis: the day, the month, the course. |
|
|
1843
1898
|
| `xTickFormatter` | `(value: unknown) => string` | | | Formats the TICK on the category axis. Returns a string, because an axis tick is an SVG `<text>` and not a place a node can go. |
|
|
1844
1899
|
| `yTickFormatter` | `(value: unknown) => string` | | | Formats the tick on the VALUE axis — the currency symbol, the thousands separator, the percent sign. |
|
|
@@ -1857,6 +1912,7 @@ Lines, for comparing series against each other.
|
|
|
1857
1912
|
| `legend` | `boolean \| undefined` | | | Shows the legend. It defaults to «only when there is more than one series»: a legend naming the one line already named by the chart's own heading is a row of pixels that says nothing. |
|
|
1858
1913
|
| `series` | `readonly ChartSeries[]` | yes | | |
|
|
1859
1914
|
| `summary` | `ReactNode` | | | What the chart says, in words. It goes in a visually hidden `figcaption`. |
|
|
1915
|
+
| `valueMax` | `number` | | | The top of the value axis, when the scale has one that the data does not reach — 100 for a percentage. |
|
|
1860
1916
|
| `xKey` | `string` | yes | | The key on the category axis: the day, the month, the course. |
|
|
1861
1917
|
| `xTickFormatter` | `(value: unknown) => string` | | | Formats the TICK on the category axis. Returns a string, because an axis tick is an SVG `<text>` and not a place a node can go. |
|
|
1862
1918
|
| `yTickFormatter` | `(value: unknown) => string` | | | Formats the tick on the VALUE axis — the currency symbol, the thousands separator, the percent sign. |
|
|
@@ -1895,7 +1951,7 @@ it: if the code does not mount React, that subpath is the one to import.
|
|
|
1895
1951
|
| `light` | `{ background, surface, surfaceRaised, border, hairline, hairlineHover, textPrimary, textSecondary, textMuted, accent, accentHover, accentOn, warm, warmHover, warmOn, success, warning, error, danger, dangerHover, dangerOn }` | Light mode. Contrast measured against `background` #F6F2EA. `background` is WARM white: never #FFF as the page background. |
|
|
1896
1952
|
| `limits` | `{ readonly minScreenPx: 13; readonly minPrintPt: 12; readonly measure: "68ch"; }` | Hard legibility limits. |
|
|
1897
1953
|
| `motion` | `{ readonly duration: "150ms"; readonly easing: "ease-out"; readonly properties: "color, background-color, border-color, fill, stroke"; }` | 150ms ease-out — color and border only. The system animates neither position nor scale: states are communicated with border and color, not with movement. |
|
|
1898
|
-
| `naming` | `{
|
|
1954
|
+
| `naming` | `{ wordmark, mascot, domain, library, libraryUrl }` | The wordmark always reads «Eduardo Álvarez». The mascot is called Tiburoncín and its name never appears inside the logo. |
|
|
1899
1955
|
| `radius` | `{ readonly chip: 6; readonly control: 10; readonly card: 14; readonly panel: 16; readonly pill: 999; }` | |
|
|
1900
1956
|
| `series` | `{ readonly dark: readonly ["#35D6C0", "#F2A65A", "#3E7CB1", "#71919C"]; readonly light: readonly ["#0D7C6F", "#A65B27", "#3E7CB1", "#626A75"]; }` | The chart series palette. FOUR, for the same reason as the syntax palette: the system communicates with color and border, not with chromatic noise. |
|
|
1901
1957
|
| `shadow` | `{ readonly standard: "0 1px 2px rgba(0, 0, 0, 0.35)"; }` | A single level. There is no elevation scale. |
|
|
@@ -1937,7 +1993,7 @@ Types (2): `Theme`, `ThemeOptions`.
|
|
|
1937
1993
|
| `poseList` | `readonly ("desk" \| "laptop-coffee" \| "peek" \| "surf")[]` | |
|
|
1938
1994
|
| `poses` | `{ readonly desk: "pose-desk.png"; readonly 'laptop-coffee': "pose-laptop-coffee.png"; readonly peek: "pose-peek.png"; readonly surf: "pose-surf.png"; }` | Full-body poses. |
|
|
1939
1995
|
|
|
1940
|
-
Types (
|
|
1996
|
+
Types (9): `Background`, `Face`, `Fin`, `IsotypeBackground`, `IsotypeProps`, `LogoProps`, `MascotFaceProps`, `MascotProps`, `Pose`.
|
|
1941
1997
|
|
|
1942
1998
|
### `@eduardoalvarez/arrecife/icons`
|
|
1943
1999
|
|
|
@@ -2003,5 +2059,7 @@ Types (60): `AccordionProps`, `AccordionTriggerProps`, `AlertProps`, `ArticleCar
|
|
|
2003
2059
|
- `architecture/design-system.md` and `architecture/brand-manual.md`: the identity documents,
|
|
2004
2060
|
greppable.
|
|
2005
2061
|
- `decisions/`: the points where the code and the document did not say the
|
|
2006
|
-
same thing, each with its resolution.
|
|
2062
|
+
same thing, each with its resolution. One file per decision, named for its
|
|
2063
|
+
number, so «§ 45» is `decisions/045-*.md` — which is how every `§ N` in this
|
|
2064
|
+
file resolves.
|
|
2007
2065
|
- `AGENTS.md`: for working inside the library's repo.
|
package/package.json
CHANGED