@atelic-action/artifact 4.2.0 → 4.2.1

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/README.md CHANGED
@@ -26,7 +26,7 @@ Every export of the package, all from the one entry, `@atelic-action/artifact`.
26
26
  | `ratingCell` | A star rating table cell for a writeup table, sorted by its figure | `/writeup` |
27
27
  | `WriteupBlock`, `WriteupTopic`, `WriteupPart`, `WriteupSheet`, `WriteupSummary`, `WriteupSummaryRow`, `WriteupMarkets`, `WriteupRented`, `WriteupMark`, `WriteupCell`, `WriteupTone`, and the rest of the `Writeup*` types | The shapes a writeup's content is written in | none |
28
28
  | `WriteupGrade`, `WriteupPerson`, `WriteupShot` | The grade letter, the sign off person, and the owner's screen, shared by every document, all three re exported from ui | none |
29
- | `Read`, `ReadProps` | The baseline's grades explained by cause: the gist table, each row a link to its card, with an optional `note` callout over it for what the read leaves out; each section on the writeup's card (`ReadSection` extends `WriteupTopic`: the trade name linked to its definition, the one liner, the grade, the why line as the summary, the writeup's blocks, and the sources at the foot) plus the read's own today and after (a two column table) and what we recommend (a checklist). The plan, numbered and in order, sits between the gist and the cards, so the whole program reads before any one card's detail. A beat with no data is left out | `/the-read` |
29
+ | `Read`, `ReadProps` | The baseline's grades explained by cause: the scorecard, a `ReportCard` with each row a link to its card, with an optional `note` callout over it for what the read leaves out; each section on the writeup's card (`ReadSection` extends `WriteupTopic`: the trade name linked to its definition, the one liner, the grade, the why line as the summary, the writeup's blocks, and the sources at the foot) plus the read's own today and after (a two column table) and what we recommend (a checklist). The plan, numbered and in order, sits between the gist and the cards, so the whole program reads before any one card's detail. A beat with no data is left out | `/the-read` |
30
30
  | `readLabels`, `ReadLabels` | The fixed words the read sets (Prepared for, the scorecard's screen reader words, Today, After, Recommendations, the plan's heading), each overridable through `labels` | `/the-read` |
31
31
  | `ReadTier`, `ReadSection`, `ReadChange`, `ReadStep`, `ReadPlan`, `ReadClose`, `ReadLink`, `ReadParagraph` | The shapes a read's content is written in. `ReadSection` is a `WriteupTopic` plus `gist`, `changes`, and `recommend`; its `why` and a finding's `body` take a paragraph (a string, or runs of text and links) as well as a node, so a routine can still write a read as JSON | none |
32
32
  | `Report`, `ReportProps` | The monthly page: the four questions, the seven grades now and before, the sign off, on one letter sheet | `/report` |
@@ -140,6 +140,8 @@ Static files. `vercel.json` points Vercel at `dist/client` with no framework pre
140
140
 
141
141
  A document is fixed or grown here, in `src/documents/`, with its test in `tst/documents/`, and released as a version of this package; a folder takes it with `bun update @atelic-action/artifact`. A piece a document is built from (the grade chip, the sign off, a page component, the chrome, the wall, a command) is fixed in `@atelic-action/ui` and released there first, then taken here by bumping the ui range. An improvement to the seed itself (a route, a stub file, the example content) is made here and copied into the folders by hand.
142
142
 
143
+ A folder taking 3.0.0 moves three things in its own files, since 3.0.0 draws the read's scorecard and the writeup's overview as ui's `ReportCard` and removed the old markup with no alias. A table cell its content wrote as `<span className="rd-ranked">` becomes ui's `Rank` (`figure`, `tone`, `meaning`, `href`). A rule in its own sheets aimed at `.rd-gist-table`, `.rd-gist-card`, `.rd-gist-grade`, `.rd-gist-read`, `.rd-gist-section`, `.rd-gist-tier`, `.op-legend`, or any `.op-ov-` class matches nothing now, so it is rewritten against the card's `.rc-` classes or dropped. And a read's `labels` loses its `section` key, which the table's first column wore and the card has no use for.
144
+
143
145
  A folder taking 4.0.0 takes ui 3.0.0 with it (`bun update @atelic-action/artifact @atelic-action/ui --latest --cwd <short>`) and repoints its own routes, since ui 3.0.0 keeps acronyms capitalized with no alias for the old spelling: `canonicalUrl` from `@atelic-action/ui/artifact` becomes `canonicalURL` in `src/routes/index.tsx`, and the root route's `baseCss` import becomes `baseCSS`.
144
146
 
145
147
  ## Releasing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelic-action/artifact",
3
- "version": "4.2.0",
3
+ "version": "4.2.1",
4
4
  "description": "The composed documents the Atelic practice hands or sends a business (the writeup, the read, the monthly page, the note, the first call sheet, and the sealed document), built from the pieces in @atelic-action/ui",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -34,12 +34,12 @@ import { Topic, type WriteupTopic } from "./Writeup";
34
34
  *
35
35
  * It wears the writeup's column, head, grade chip and key, tier heading,
36
36
  * section card, and close (the `.op` classes), and adds only what is its own
37
- * (the `.rd` classes). The gist table is drawn from the tiers, so a tier
37
+ * (the `.rd` classes). The scorecard is drawn from the tiers, so a tier
38
38
  * added later (Conversion, once the analytics access lands) is one more entry
39
- * in `tiers` and appears in the table and the body alike; until then `note`
40
- * says so under the table. Every prop but a finding's body and the sign off
41
- * person's `role` is plain data, and both are equally happy with a string, so
42
- * a routine can write a read as JSON.
39
+ * in `tiers` and appears in the scorecard and the body alike; until then
40
+ * `note` says so over the scorecard. Every prop but a finding's body and the
41
+ * sign off person's `role` is plain data, and both are equally happy with a
42
+ * string, so a routine can write a read as JSON.
43
43
  */
44
44
 
45
45
  /** A link inside running text: the words the reader clicks and where they go. */
@@ -57,10 +57,10 @@ export interface ReadChange {
57
57
  /**
58
58
  * One section of a tier: the writeup's section card (its `title`, `href`,
59
59
  * `oneLiner`, `grade`, `why`, `blocks`, and `sources`), plus the read's own:
60
- * the gist table's line, today and after, and what we recommend.
60
+ * the scorecard's line, today and after, and what we recommend.
61
61
  */
62
62
  export interface ReadSection extends Omit<WriteupTopic, "kind" | "why"> {
63
- /** The one line in the gist table. */
63
+ /** The one line on the scorecard. */
64
64
  gist: ReadParagraph;
65
65
  /** The summary of what we saw, in one or two sentences: the why line. A paragraph, so a read written as JSON can carry links in it. */
66
66
  why?: ReactNode | ReadParagraph;
@@ -126,9 +126,9 @@ export interface ReadClose {
126
126
  export interface ReadLabels {
127
127
  /** The dateline's words before the business, e.g. "Prepared for". */
128
128
  preparedFor: string;
129
- /** What a screen reader calls the gist card when it has no title. */
129
+ /** What a screen reader calls the scorecard when it has no title. */
130
130
  gist: string;
131
- /** What a screen reader hears before a letter, on the gist card and each section's card. */
131
+ /** What a screen reader hears before a letter, on the scorecard and each section's card. */
132
132
  grade: string;
133
133
  /** What a screen reader hears for a section with no grade. */
134
134
  notGraded: string;
@@ -169,15 +169,15 @@ export interface ReadProps {
169
169
  lede: ReadParagraph;
170
170
  /** The heading over the scorecard, e.g. "The Scorecard". */
171
171
  gistTitle?: string;
172
- /** The line under the scorecard's heading, e.g. what it is. */
172
+ /** The line under the scorecard's heading, e.g. what it is. Set only with a `gistTitle`, since it reads as the heading's subtitle. */
173
173
  gistLead?: string;
174
- /** The anchor a header stop points at for the scorecard, e.g. "scorecard". */
174
+ /** The anchor a header stop points at for the scorecard, e.g. "scorecard": on the heading with a `gistTitle`, on the card itself without one. */
175
175
  gistId?: string;
176
176
  /** A callout over the scorecard, under its heading, e.g. what the read leaves out and when it follows. */
177
177
  note?: ReadParagraph;
178
178
  /** The key: what each letter means, in a few words each. */
179
179
  gradeKey?: Array<{ grade: WriteupGrade; label: string }>;
180
- /** The tiers in order. Each section appears in the gist table and in the body. */
180
+ /** The tiers in order. Each section appears on the scorecard and in the body. */
181
181
  tiers: ReadTier[];
182
182
  plan: ReadPlan;
183
183
  close: ReadClose;
@@ -294,6 +294,7 @@ function Gist({
294
294
  </div>
295
295
  )}
296
296
  <ReportCard
297
+ id={title ? undefined : id}
297
298
  className="rd-gist"
298
299
  label={title ?? labels.gist}
299
300
  legend={gradeKey}
@@ -2036,7 +2036,7 @@
2036
2036
  column, the head, the grade chip and its key, the tier heading, the
2037
2037
  section card, the screen, the close, and every print rule of the
2038
2038
  writeup's are its own already. This block adds only what the read has
2039
- and the writeup does not: the gist table and the note under it, the
2039
+ and the writeup does not: the scorecard and the note over it, the
2040
2040
  two beats a section adds to the writeup's card (today and after, and
2041
2041
  what we recommend), and the numbered plan. It sets no @page; the writeup's, earlier in this sheet and the
2042
2042
  later of the two there, sets letter paper for every artifact page.
@@ -2065,6 +2065,7 @@
2065
2065
  /* ---- the gist: the ReportCard (@atelic-action/ui), and this is its place on the page ---- */
2066
2066
  .atelic-ui .rd-gist {
2067
2067
  margin-top: 26px;
2068
+ scroll-margin-top: calc(var(--nav-height) + 16px);
2068
2069
  }
2069
2070
  .atelic-ui .op-part + .rd-gist {
2070
2071
  margin-top: 0;
@@ -2090,7 +2091,7 @@
2090
2091
  .atelic-ui .rd-beat p:last-child {
2091
2092
  margin-bottom: 0;
2092
2093
  }
2093
- /* The note under the gist table: what the read leaves out, on a tinted panel with the accent's rule. */
2094
+ /* The note over the scorecard: what the read leaves out, on a tinted panel with the accent's rule. */
2094
2095
  .atelic-ui .rd-note {
2095
2096
  margin-top: 18px;
2096
2097
  padding: 12px 14px;