dowel-ui 0.14.1 → 0.15.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/README.md CHANGED
@@ -11,7 +11,7 @@ A dowel is the hidden peg that joins two boards so the seam does not show. That
11
11
  **[Documentation](https://lacodda.github.io/dowel/)** — what everything is and why it is that way.
12
12
  **[The stand](https://lacodda.github.io/dowel/stand/)** — every component, live, in either theme and in the accent of any product of the line.
13
13
 
14
- **Status:** v0.11.1 - the theme, the scales, an accent per product, twenty-six components - overlays, menus, the command palette and the three ways of saying something happened - and the gates each one passes: axe, the keyboard, a dependency budget and a picture in both themes. The first product of the line lives on it. See the [roadmap](#roadmap).
14
+ **Status:** v0.15.0 - the theme, the scales, an accent per product, twenty-six components - overlays, menus, the command palette and the three ways of saying something happened - and the gates each one passes: axe, the keyboard, a dependency budget and a picture in both themes. Components install from a versioned registry, the docs are served in the form an agent reads, and `dowel check` tells a project what stands between it and the vocabulary. Two products of the line live on it. See the [roadmap](#roadmap).
15
15
 
16
16
  ## The theme
17
17
 
@@ -93,7 +93,7 @@ npx shadcn@latest add https://lacodda.github.io/dowel/r/app.json
93
93
  A set carries no files of its own: it resolves into the same per-component
94
94
  installs you could have typed, so nothing of it survives in your project and
95
95
  there is no membership to leave. Each minor of the registry is also served
96
- frozen at `r/v0.12/…`, for an install that has to be repeatable - inside a
96
+ frozen at `r/v0.14/…`, for an install that has to be repeatable - inside a
97
97
  snapshot the cross-references point into the same snapshot, so a component and
98
98
  the sibling it reuses are the pair that shipped together. See
99
99
  [installing from the registry](https://lacodda.github.io/dowel/guides/registry/).
@@ -181,6 +181,77 @@ against dowel's own stand reported twenty-four violations that were all correct
181
181
  code, which is exactly how that rule was learned - see
182
182
  [the migration guide](https://lacodda.github.io/dowel/guides/migration/).
183
183
 
184
+ ## A day in the life
185
+
186
+ The shortest complete path: a new project, the theme, a component, a screen.
187
+
188
+ **Install the theme and say which product this is.** A product of the line
189
+ imports its accent; anything else sets `--accent-base` directly.
190
+
191
+ ```console
192
+ $ pnpm add dowel-ui
193
+ ```
194
+
195
+ ```css
196
+ /* src/styles.css */
197
+ @import 'tailwindcss';
198
+ @import 'dowel-ui/theme.css';
199
+ @import 'dowel-ui/accents/kasl-server.css';
200
+ ```
201
+
202
+ **Tell shadcn where components go.** One file, and the `ui` alias is the one
203
+ every dowel component targets:
204
+
205
+ ```json
206
+ {
207
+ "$schema": "https://ui.shadcn.com/schema.json",
208
+ "style": "default",
209
+ "rsc": false,
210
+ "tsx": true,
211
+ "tailwind": { "config": "", "css": "src/styles.css", "baseColor": "neutral", "cssVariables": true },
212
+ "aliases": { "components": "@/components", "ui": "@/components/ui", "lib": "@/lib", "utils": "@/lib/utils" }
213
+ }
214
+ ```
215
+
216
+ **Copy in what the screen needs.**
217
+
218
+ ```console
219
+ $ npx shadcn@latest add https://lacodda.github.io/dowel/r/app.json
220
+ ```
221
+
222
+ **Write the screen in the vocabulary.** No colour is written down, so this is
223
+ correct in both themes and in whatever accent the product turns out to have:
224
+
225
+ ```tsx
226
+ import { Panel } from '@/components/ui/panel'
227
+ import { Button } from '@/components/ui/button'
228
+
229
+ export function SignIn() {
230
+ return (
231
+ <Panel className="w-80 p-5">
232
+ <h1 className="text-lg font-semibold text-text">Sign in</h1>
233
+ <p className="text-xs text-dim">Your team's server</p>
234
+ <Button variant="primary" className="mt-4 w-full">Sign in</Button>
235
+ </Panel>
236
+ )
237
+ }
238
+ ```
239
+
240
+ **Check the wiring before debugging the screen.**
241
+
242
+ ```console
243
+ $ npx dowel doctor
244
+ The installation is coherent.
245
+ ```
246
+
247
+ That is the whole loop, and it is the one the line's second product actually
248
+ went through. kasl-server had written its own theme first, in the same words -
249
+ `bg`, `raise`, `line`, `dim`, `accent` - so moving over deleted about a hundred
250
+ and thirty lines and changed nothing on screen except one thing it silently
251
+ fixed: the hand-written theme pinned dark ink on the accent for both themes,
252
+ which was right on gold and wrong on the darkened gold the light theme uses,
253
+ where it measured 3.49:1. Derived, it is white there, at 6.01:1.
254
+
184
255
  ## Roadmap
185
256
 
186
257
  Development goes in versions; each one is a single coherent theme, and ends in a release.
@@ -222,7 +222,7 @@
222
222
  "description": "A message that stays on the screen, in the flow of the page, about the thing next to it: this field could not be saved, this profile has no axes yet, this export is out of date.",
223
223
  "dependencies": [
224
224
  "class-variance-authority",
225
- "dowel-ui@^0.14.1"
225
+ "dowel-ui@^0.15.0"
226
226
  ],
227
227
  "registryDependencies": [],
228
228
  "files": [
@@ -241,7 +241,7 @@
241
241
  "description": "A small piece of state attached to something else: a count, a status, a label. It is not a button and never was - if it can be clicked it is a Chip.",
242
242
  "dependencies": [
243
243
  "class-variance-authority",
244
- "dowel-ui@^0.14.1"
244
+ "dowel-ui@^0.15.0"
245
245
  ],
246
246
  "registryDependencies": [],
247
247
  "files": [
@@ -260,7 +260,7 @@
260
260
  "description": "A strip across the top of the application, about the application: you are offline, this build is a preview, your licence expires on Friday, a new version is ready to install.",
261
261
  "dependencies": [
262
262
  "class-variance-authority",
263
- "dowel-ui@^0.14.1"
263
+ "dowel-ui@^0.15.0"
264
264
  ],
265
265
  "registryDependencies": [],
266
266
  "files": [
@@ -280,7 +280,7 @@
280
280
  "dependencies": [
281
281
  "@base-ui/react",
282
282
  "class-variance-authority",
283
- "dowel-ui@^0.14.1"
283
+ "dowel-ui@^0.15.0"
284
284
  ],
285
285
  "registryDependencies": [],
286
286
  "files": [
@@ -299,7 +299,7 @@
299
299
  "description": "A badge you can act on: a filter that can be removed, a tag with a count, a selected value in a field. The difference from a Badge is entirely about whether something happens when you click it - and if something does, that part is a real `<button>` with a real label, not a decorative cross.",
300
300
  "dependencies": [
301
301
  "class-variance-authority",
302
- "dowel-ui@^0.14.1"
302
+ "dowel-ui@^0.15.0"
303
303
  ],
304
304
  "registryDependencies": [],
305
305
  "files": [
@@ -319,7 +319,7 @@
319
319
  "dependencies": [
320
320
  "@base-ui/react",
321
321
  "class-variance-authority",
322
- "dowel-ui@^0.14.1"
322
+ "dowel-ui@^0.15.0"
323
323
  ],
324
324
  "registryDependencies": [
325
325
  "https://lacodda.github.io/dowel/r/input.json",
@@ -342,7 +342,7 @@
342
342
  "dependencies": [
343
343
  "@base-ui/react",
344
344
  "class-variance-authority",
345
- "dowel-ui@^0.14.1"
345
+ "dowel-ui@^0.15.0"
346
346
  ],
347
347
  "registryDependencies": [
348
348
  "https://lacodda.github.io/dowel/r/combobox.json",
@@ -365,7 +365,7 @@
365
365
  "dependencies": [
366
366
  "@base-ui/react",
367
367
  "class-variance-authority",
368
- "dowel-ui@^0.14.1"
368
+ "dowel-ui@^0.15.0"
369
369
  ],
370
370
  "registryDependencies": [],
371
371
  "files": [
@@ -384,7 +384,7 @@
384
384
  "description": "The same list of actions as Menu, opened the other way round: by right click, or by a long press on a touch screen, over an *area* rather than from a button. So the trigger is not a control - it is the region the menu belongs to, a row, a canvas, a file tile - and it renders a `<div>`.",
385
385
  "dependencies": [
386
386
  "@base-ui/react",
387
- "dowel-ui@^0.14.1"
387
+ "dowel-ui@^0.15.0"
388
388
  ],
389
389
  "registryDependencies": [
390
390
  "https://lacodda.github.io/dowel/r/menu.json"
@@ -404,7 +404,7 @@
404
404
  "title": "Copyable",
405
405
  "description": "Any text that someone will eventually want to copy - an id, a path, a hash, a token - copied with one click. The rule comes from nitid: if a value is worth showing, it is worth being able to take away, and selecting a monospaced id by hand is a small daily tax.",
406
406
  "dependencies": [
407
- "dowel-ui@^0.14.1"
407
+ "dowel-ui@^0.15.0"
408
408
  ],
409
409
  "registryDependencies": [],
410
410
  "files": [
@@ -424,7 +424,7 @@
424
424
  "dependencies": [
425
425
  "@base-ui/react",
426
426
  "class-variance-authority",
427
- "dowel-ui@^0.14.1"
427
+ "dowel-ui@^0.15.0"
428
428
  ],
429
429
  "registryDependencies": [],
430
430
  "files": [
@@ -444,7 +444,7 @@
444
444
  "dependencies": [
445
445
  "@base-ui/react",
446
446
  "class-variance-authority",
447
- "dowel-ui@^0.14.1"
447
+ "dowel-ui@^0.15.0"
448
448
  ],
449
449
  "registryDependencies": [],
450
450
  "files": [
@@ -462,7 +462,7 @@
462
462
  "title": "Input",
463
463
  "description": "A single-line field. It is a plain `<input>` with the line's clothes on, so everything a browser gives an input for free - autofill, spellcheck, the right keyboard on a phone, `type=\"email\"` validation - still works.",
464
464
  "dependencies": [
465
- "dowel-ui@^0.14.1"
465
+ "dowel-ui@^0.15.0"
466
466
  ],
467
467
  "registryDependencies": [],
468
468
  "files": [
@@ -480,7 +480,7 @@
480
480
  "title": "Kbd",
481
481
  "description": "A key, as printed in a menu or a hint: `Ctrl` `K`. It is a `<kbd>` element because that is what the element is for - a screen reader announces it as keyboard input rather than reading a stray capital letter.",
482
482
  "dependencies": [
483
- "dowel-ui@^0.14.1"
483
+ "dowel-ui@^0.15.0"
484
484
  ],
485
485
  "registryDependencies": [],
486
486
  "files": [
@@ -500,7 +500,7 @@
500
500
  "dependencies": [
501
501
  "@base-ui/react",
502
502
  "class-variance-authority",
503
- "dowel-ui@^0.14.1"
503
+ "dowel-ui@^0.15.0"
504
504
  ],
505
505
  "registryDependencies": [],
506
506
  "files": [
@@ -519,7 +519,7 @@
519
519
  "description": "The raised surface everything else sits on. It is the one place a screen gets its structure from, so it stays deliberately plain: a ground, a hairline, a corner.",
520
520
  "dependencies": [
521
521
  "class-variance-authority",
522
- "dowel-ui@^0.14.1"
522
+ "dowel-ui@^0.15.0"
523
523
  ],
524
524
  "registryDependencies": [],
525
525
  "files": [
@@ -539,7 +539,7 @@
539
539
  "dependencies": [
540
540
  "@base-ui/react",
541
541
  "class-variance-authority",
542
- "dowel-ui@^0.14.1"
542
+ "dowel-ui@^0.15.0"
543
543
  ],
544
544
  "registryDependencies": [],
545
545
  "files": [
@@ -559,7 +559,7 @@
559
559
  "dependencies": [
560
560
  "@base-ui/react",
561
561
  "class-variance-authority",
562
- "dowel-ui@^0.14.1"
562
+ "dowel-ui@^0.15.0"
563
563
  ],
564
564
  "registryDependencies": [],
565
565
  "files": [
@@ -577,7 +577,7 @@
577
577
  "title": "Search-field",
578
578
  "description": "An Input that knows it is a search box, which is three small things the products kept not doing:\n * - a magnifier, so the field is recognisable before it is read; - a way to clear it that is not \"select all and delete\" - and one that a keyboard can reach, which a decorative `<span>` cannot; - the shortcut that focuses it, shown in the field rather than learned.",
579
579
  "dependencies": [
580
- "dowel-ui@^0.14.1"
580
+ "dowel-ui@^0.15.0"
581
581
  ],
582
582
  "registryDependencies": [
583
583
  "https://lacodda.github.io/dowel/r/input.json",
@@ -601,7 +601,7 @@
601
601
  "dependencies": [
602
602
  "@base-ui/react",
603
603
  "class-variance-authority",
604
- "dowel-ui@^0.14.1"
604
+ "dowel-ui@^0.15.0"
605
605
  ],
606
606
  "registryDependencies": [
607
607
  "https://lacodda.github.io/dowel/r/input.json"
@@ -638,7 +638,7 @@
638
638
  "description": "Something is happening and the answer has not arrived. It carries no text of its own - what is loading is the product's word, not the system's - but it does have to say *something* to a screen reader, or a page that is busy is silently identical to a page that is empty.",
639
639
  "dependencies": [
640
640
  "class-variance-authority",
641
- "dowel-ui@^0.14.1"
641
+ "dowel-ui@^0.15.0"
642
642
  ],
643
643
  "registryDependencies": [],
644
644
  "files": [
@@ -656,7 +656,7 @@
656
656
  "title": "Textarea",
657
657
  "description": "A multi-line field that can grow with what is typed into it, which is the only interesting part: a fixed box makes someone scroll inside a scroll, and a box that grows without limit pushes the button they are trying to reach off the screen. `autoResize` grows it; `maxRows` says when to stop and let it scroll after all.",
658
658
  "dependencies": [
659
- "dowel-ui@^0.14.1"
659
+ "dowel-ui@^0.15.0"
660
660
  ],
661
661
  "registryDependencies": [
662
662
  "https://lacodda.github.io/dowel/r/input.json"
@@ -678,7 +678,7 @@
678
678
  "dependencies": [
679
679
  "@base-ui/react",
680
680
  "class-variance-authority",
681
- "dowel-ui@^0.14.1"
681
+ "dowel-ui@^0.15.0"
682
682
  ],
683
683
  "registryDependencies": [],
684
684
  "files": [
@@ -698,7 +698,7 @@
698
698
  "dependencies": [
699
699
  "@base-ui/react",
700
700
  "class-variance-authority",
701
- "dowel-ui@^0.14.1"
701
+ "dowel-ui@^0.15.0"
702
702
  ],
703
703
  "registryDependencies": [],
704
704
  "files": [
@@ -716,7 +716,7 @@
716
716
  "title": "Truncate",
717
717
  "description": "Text that does not fit, cut with an ellipsis - and, importantly, still readable in full: the element carries its own text as a `title`, so hovering shows what was cut. Every product wrote the one-line version of this and none of them remembered the title.",
718
718
  "dependencies": [
719
- "dowel-ui@^0.14.1"
719
+ "dowel-ui@^0.15.0"
720
720
  ],
721
721
  "registryDependencies": [],
722
722
  "files": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dowel-ui",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "The lacodda line design system: theme tokens and React primitives, distributed as a shadcn-compatible registry.",
5
5
  "license": "MIT",
6
6
  "type": "module",