@salilvnair/dui 1.0.12 → 1.0.13
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 +76 -33
- package/dist/index.js +3726 -3713
- package/dist/index.js.map +1 -1
- package/dist/lib/components/input/select-position.d.ts +54 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# @salilvnair/dui
|
|
4
4
|
|
|
5
|
-
**Daakia UI** — a React 19 + TypeScript component library of **
|
|
5
|
+
**Daakia UI** — a React 19 + TypeScript component library of **281 components**,
|
|
6
6
|
every colour a CSS variable, and a Monaco-backed editor you only pay for if you
|
|
7
7
|
use it.
|
|
8
8
|
|
|
@@ -18,7 +18,7 @@ use it.
|
|
|
18
18
|
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
|
-

|
|
22
22
|
|
|
23
23
|
<sub>Ninety seconds of it. The full walkthrough is
|
|
24
24
|
[here as an mp4](https://raw.githubusercontent.com/salilvnair/dui/main/media/dui-showcase.mp4),
|
|
@@ -109,7 +109,7 @@ or accent colour for the whole tree.
|
|
|
109
109
|
|
|
110
110
|
### A playground on every component
|
|
111
111
|
|
|
112
|
-
Every one of the
|
|
112
|
+
Every one of the 281 components opens on an editable JSX snippet with a live
|
|
113
113
|
preview under it. Change a prop, see it, copy the line out.
|
|
114
114
|
|
|
115
115
|

|
|
@@ -196,7 +196,7 @@ tooltips, action sheets, a spotlight tour.
|
|
|
196
196
|
|
|
197
197
|

|
|
198
198
|
|
|
199
|
-
**All
|
|
199
|
+
**All 281 of them, searchable** — the showcase's sidebar is the fastest way to
|
|
200
200
|
find the component you half-remember.
|
|
201
201
|
|
|
202
202
|

|
|
@@ -209,17 +209,24 @@ find the component you half-remember.
|
|
|
209
209
|
|
|
210
210
|
<!-- Generated by `npm run catalog` from media/components.dark.json — do not edit by hand. -->
|
|
211
211
|
|
|
212
|
-
**
|
|
212
|
+
**281 components** across 18 groups.
|
|
213
213
|
Every name links to that component running in the live demo; every group opens to a
|
|
214
214
|
contact sheet and a table of what is in it.
|
|
215
215
|
|
|
216
216
|
<details>
|
|
217
|
-
<summary><b>Inputs</b> (
|
|
217
|
+
<summary><b>Inputs</b> (23)</summary>
|
|
218
218
|
|
|
219
|
-

|
|
219
|
+

|
|
220
220
|
|
|
221
221
|
| Component | What it is |
|
|
222
222
|
| --- | --- |
|
|
223
|
+
| [`KeyValueTableRowView`](https://salilvnair.com/framework/dui/#/keyvaluerow) | The row KeyValueTableView is built from, exported on its own — and HiddenKeyValueItemView, the same pair when it cann… |
|
|
224
|
+
| [`DiffEditorView`](https://salilvnair.com/framework/dui/#/diffeditor) | The diff twin of EditorView — a line diff out of the box, upgrading itself to Monaco the moment a consumer opts in. |
|
|
225
|
+
| [`MarkdownEditorView`](https://salilvnair.com/framework/dui/#/markdowneditor) | A rich editor over one Markdown document — rich text and raw source over the same value, and dialogs the host cannot… |
|
|
226
|
+
| [`MultilineInputView`](https://salilvnair.com/framework/dui/#/multilineinput) | The textarea wearing the same clothes as the rest of the input family — same heights, border and focus ring. |
|
|
227
|
+
| [`InlineEditTextView`](https://salilvnair.com/framework/dui/#/inlineedittext) | A field that does not look like one — reads as text until double-clicked, and its onSave may be async. |
|
|
228
|
+
| [`SearchFieldView`](https://salilvnair.com/framework/dui/#/searchfield) | The filter box's sibling that runs something — Enter acts, and it offers what you searched before. |
|
|
229
|
+
| [`FilterInputView`](https://salilvnair.com/framework/dui/#/filterinput) | The box above a list that narrows it — acts on every keystroke, and keeps saying it is a filter rather than a search. |
|
|
223
230
|
| [`TextInputView`](https://salilvnair.com/framework/dui/#/textinput) | Standard text input — sizes match ButtonView and SelectInputView exactly. |
|
|
224
231
|
| [`SelectInputView`](https://salilvnair.com/framework/dui/#/selectinput) | Portal dropdown with keyboard nav — replaces all StyledDropdown usages. |
|
|
225
232
|
| [`SelectTextInputView`](https://salilvnair.com/framework/dui/#/selecttextinput) | Combined method selector + URL input in one bordered pill — URL bar pattern. |
|
|
@@ -240,12 +247,14 @@ contact sheet and a table of what is in it.
|
|
|
240
247
|
</details>
|
|
241
248
|
|
|
242
249
|
<details>
|
|
243
|
-
<summary><b>Date & Time</b> (
|
|
250
|
+
<summary><b>Date & Time</b> (7)</summary>
|
|
244
251
|
|
|
245
|
-

|
|
252
|
+

|
|
246
253
|
|
|
247
254
|
| Component | What it is |
|
|
248
255
|
| --- | --- |
|
|
256
|
+
| [`TimeZoneSelectView`](https://salilvnair.com/framework/dui/#/timezoneselect) | Every zone the platform knows, searchable — from the platform rather than a bundled table, so it does not go stale. |
|
|
257
|
+
| [`DateTimeInputView`](https://salilvnair.com/framework/dui/#/datetimeinput) | A date and a time in one field, returning one ISO string — with null as a real state rather than an empty one. |
|
|
249
258
|
| [`CalendarView`](https://salilvnair.com/framework/dui/#/calendar) | Month grid calendar — single / range / multi select, min/max bounds, animated month transitions. |
|
|
250
259
|
| [`DateInputView`](https://salilvnair.com/framework/dui/#/dateinput) | Text field trigger + CalendarView popover — the standard date field pattern. |
|
|
251
260
|
| [`DateRangePickerView`](https://salilvnair.com/framework/dui/#/daterangepicker) | Range calendar + quick presets (Today / Last 7 days / Last 30 days / This month). |
|
|
@@ -255,12 +264,14 @@ contact sheet and a table of what is in it.
|
|
|
255
264
|
</details>
|
|
256
265
|
|
|
257
266
|
<details>
|
|
258
|
-
<summary><b>Form & Selection</b> (
|
|
267
|
+
<summary><b>Form & Selection</b> (16)</summary>
|
|
259
268
|
|
|
260
|
-

|
|
269
|
+

|
|
261
270
|
|
|
262
271
|
| Component | What it is |
|
|
263
272
|
| --- | --- |
|
|
273
|
+
| [`SwatchPickerView`](https://salilvnair.com/framework/dui/#/swatchpicker) | Choosing between things identified by colour. |
|
|
274
|
+
| [`TogglePillView`](https://salilvnair.com/framework/dui/#/togglepill) | A chip that is a control — the pill above a list that switches one facet on and off, with an optional count inside it. |
|
|
264
275
|
| [`RadioGroupView`](https://salilvnair.com/framework/dui/#/radiogroup) | Radio list with optional descriptions — vertical or horizontal layout. |
|
|
265
276
|
| [`RadioCardView`](https://salilvnair.com/framework/dui/#/radiocard) | Big selectable cards — plan pickers, mode selectors — grid layout via `columns`. |
|
|
266
277
|
| [`RatingView`](https://salilvnair.com/framework/dui/#/rating) | Star or heart rating input — half-step precision, hover preview, read-only mode. |
|
|
@@ -279,12 +290,16 @@ contact sheet and a table of what is in it.
|
|
|
279
290
|
</details>
|
|
280
291
|
|
|
281
292
|
<details>
|
|
282
|
-
<summary><b>Feedback & Status</b> (
|
|
293
|
+
<summary><b>Feedback & Status</b> (14)</summary>
|
|
283
294
|
|
|
284
|
-

|
|
295
|
+

|
|
285
296
|
|
|
286
297
|
| Component | What it is |
|
|
287
298
|
| --- | --- |
|
|
299
|
+
| [`TableSkeletonView`](https://salilvnair.com/framework/dui/#/tableskeleton) | The placeholder a table shows while its rows load — declared with the same column widths, so nothing jumps when the d… |
|
|
300
|
+
| [`LoadingStateView`](https://salilvnair.com/framework/dui/#/loadingstate) | The screen shown while something is fetched — the subject drawn large, and a component that says so itself once the w… |
|
|
301
|
+
| [`InfoView`](https://salilvnair.com/framework/dui/#/infoview) | An explanatory block for settings and empty states — what this is, and where on disk it lives, with paths as pills ra… |
|
|
302
|
+
| [`CalloutView`](https://salilvnair.com/framework/dui/#/callout) | The titled block that interrupts a page to say something the reader needs — info, tip, warning, danger. |
|
|
288
303
|
| [`SnackbarView`](https://salilvnair.com/framework/dui/#/snackbar) | Single-line bottom bar + action, auto-dismiss timer pauses on hover — distinct from the stacked-corner ToastView. |
|
|
289
304
|
| [`BannerView`](https://salilvnair.com/framework/dui/#/banner) | Persistent dismissible top strip — info / success / warning / danger variants. |
|
|
290
305
|
| [`ProgressRingView`](https://salilvnair.com/framework/dui/#/progressring) | Circular determinate/indeterminate progress — distinct from GaugeView (metric gauge). |
|
|
@@ -299,12 +314,16 @@ contact sheet and a table of what is in it.
|
|
|
299
314
|
</details>
|
|
300
315
|
|
|
301
316
|
<details>
|
|
302
|
-
<summary><b>Buttons</b> (
|
|
317
|
+
<summary><b>Buttons</b> (8)</summary>
|
|
303
318
|
|
|
304
|
-

|
|
319
|
+

|
|
305
320
|
|
|
306
321
|
| Component | What it is |
|
|
307
322
|
| --- | --- |
|
|
323
|
+
| [`ThemeToggleView`](https://salilvnair.com/framework/dui/#/themetoggle) | One button, two states — the sun and the moon tinted independently, for a header with no room for three segments. |
|
|
324
|
+
| [`SegmentedView`](https://salilvnair.com/framework/dui/#/segmented) | The flat cousin of SegmentedControlView — no track, no sliding indicator, for switching a view rather than operating… |
|
|
325
|
+
| [`SplitButtonView`](https://salilvnair.com/framework/dui/#/splitbutton) | A default action and its close relatives in one control — Save, with Save As and Export behind the chevron. |
|
|
326
|
+
| [`ActionButtonView`](https://salilvnair.com/framework/dui/#/actionbutton) | The toolbar button — quieter than ButtonView, louder than IconButtonView, and sized on the same scale as both. |
|
|
308
327
|
| [`ButtonView`](https://salilvnair.com/framework/dui/#/button) | Standard button — primary / secondary / ghost / danger — all sizes. |
|
|
309
328
|
| [`IconButtonView`](https://salilvnair.com/framework/dui/#/iconbutton) | Square icon-only buttons — ghost / filled — toggle support — all sizes. |
|
|
310
329
|
| [`DropDownButtonView`](https://salilvnair.com/framework/dui/#/dropdownbutton) | Split button — primary action + chevron dropdown — Save as, Export as, etc. |
|
|
@@ -313,12 +332,14 @@ contact sheet and a table of what is in it.
|
|
|
313
332
|
</details>
|
|
314
333
|
|
|
315
334
|
<details>
|
|
316
|
-
<summary><b>Navigation</b> (
|
|
335
|
+
<summary><b>Navigation</b> (11)</summary>
|
|
317
336
|
|
|
318
|
-

|
|
337
|
+

|
|
319
338
|
|
|
320
339
|
| Component | What it is |
|
|
321
340
|
| --- | --- |
|
|
341
|
+
| [`UnderlineTabsView`](https://salilvnair.com/framework/dui/#/underlinetabs) | The page-level tab row — active marked by a rule rather than a box, with counts beside the labels. |
|
|
342
|
+
| [`PilledTabView`](https://salilvnair.com/framework/dui/#/pilledtab) | A compact tab row for inside a panel — a filled pill marks the active one, rounded or fully pilled. |
|
|
322
343
|
| [`TabView`](https://salilvnair.com/framework/dui/#/tabs) | pill · underline variants — sliding indicator, badges, dots — all with accentColor. |
|
|
323
344
|
| [`TabBarView`](https://salilvnair.com/framework/dui/#/tabbar) | Editor-style protocol tab bar — store-free, drag-free, scroll arrows, dirty dot. |
|
|
324
345
|
| [`ContextMenuView`](https://salilvnair.com/framework/dui/#/contextmenu) | Recursive context menu with submenus — portal rendered — collection tree style. |
|
|
@@ -332,13 +353,20 @@ contact sheet and a table of what is in it.
|
|
|
332
353
|
</details>
|
|
333
354
|
|
|
334
355
|
<details>
|
|
335
|
-
<summary><b>Display</b> (
|
|
356
|
+
<summary><b>Display</b> (26)</summary>
|
|
336
357
|
|
|
337
|
-

|
|
358
|
+

|
|
338
359
|
|
|
339
360
|
| Component | What it is |
|
|
340
361
|
| --- | --- |
|
|
362
|
+
| [`LineDiffView`](https://salilvnair.com/framework/dui/#/linediff) | Two texts side by side with the changed lines marked — and no Monaco anywhere near it. |
|
|
363
|
+
| [`SetupOptionView`](https://salilvnair.com/framework/dui/#/setupoption) | One card per route to getting installed — winget, Homebrew, apt — turning a wall of platform instructions into a list… |
|
|
364
|
+
| [`PriorityMarkView`](https://salilvnair.com/framework/dui/#/prioritymark) | The priority marker on an issue row — the ring is the signal, the word is a courtesy that a dense table can drop. |
|
|
365
|
+
| [`GroupHeaderView`](https://salilvnair.com/framework/dui/#/groupheader) | The row above a group in a grouped list or a board column — set as a label, not a heading, so eight of them do not re… |
|
|
366
|
+
| [`TerminalBlockView`](https://salilvnair.com/framework/dui/#/terminalblock) | Commands and their output on a terminal ground — a terminal, whether it holds what you type or what came back. |
|
|
367
|
+
| [`CommandChipView`](https://salilvnair.com/framework/dui/#/commandchip) | A command rendered inline that copies itself when clicked — for the places a reader is about to retype something they… |
|
|
341
368
|
| [`ChipView`](https://salilvnair.com/framework/dui/#/chips) | Colored badge chips for methods, protocols, status codes, filter tags. |
|
|
369
|
+
| [`BadgeChipView`](https://salilvnair.com/framework/dui/#/badgechip) | The pill that labels a thing — fifty skins, chosen by `variant` or set for the whole product by DuiProvider. |
|
|
342
370
|
| [`StatusIndicatorView`](https://salilvnair.com/framework/dui/#/statusindicator) | Connection status dot — idle · connecting · connected · disconnected · error. |
|
|
343
371
|
| [`LoaderView`](https://salilvnair.com/framework/dui/#/loader) | Loading states — spinner · dots · skeleton · pulse · progress-bar. |
|
|
344
372
|
| [`EmptyStateView`](https://salilvnair.com/framework/dui/#/emptystate) | Empty state placeholder with icon, title, message, and optional CTA button. |
|
|
@@ -361,12 +389,14 @@ contact sheet and a table of what is in it.
|
|
|
361
389
|
</details>
|
|
362
390
|
|
|
363
391
|
<details>
|
|
364
|
-
<summary><b>Overlays</b> (
|
|
392
|
+
<summary><b>Overlays</b> (11)</summary>
|
|
365
393
|
|
|
366
|
-

|
|
394
|
+

|
|
367
395
|
|
|
368
396
|
| Component | What it is |
|
|
369
397
|
| --- | --- |
|
|
398
|
+
| [`SheetView`](https://salilvnair.com/framework/dui/#/sheet) | A panel that slides in from any edge — for content that is a sidebar on a wide screen and a bottom sheet on a narrow… |
|
|
399
|
+
| [`CommandPaletteView`](https://salilvnair.com/framework/dui/#/commandpalette) | The Ctrl+K box. |
|
|
370
400
|
| [`ModalView`](https://salilvnair.com/framework/dui/#/modal) | Configurable modal — sm/md/lg/xl — never closes on backdrop click. |
|
|
371
401
|
| [`InfoPopupView`](https://salilvnair.com/framework/dui/#/infopopup) | Help popup anchored near a ? |
|
|
372
402
|
| [`ToastView`](https://salilvnair.com/framework/dui/#/toast) | Toast notification stack — success · error · warning · info — auto-dismiss. |
|
|
@@ -380,12 +410,14 @@ contact sheet and a table of what is in it.
|
|
|
380
410
|
</details>
|
|
381
411
|
|
|
382
412
|
<details>
|
|
383
|
-
<summary><b>Layout</b> (
|
|
413
|
+
<summary><b>Layout</b> (24)</summary>
|
|
384
414
|
|
|
385
|
-

|
|
415
|
+

|
|
386
416
|
|
|
387
417
|
| Component | What it is |
|
|
388
418
|
| --- | --- |
|
|
419
|
+
| [`InspectorPanelView`](https://salilvnair.com/framework/dui/#/inspectorpanel) | The detail panel beside a list — an overlay on a narrow screen and a permanent third column on a wide one, from one p… |
|
|
420
|
+
| [`FanStackView`](https://salilvnair.com/framework/dui/#/fanstack) | A small set of actions that spring out of a floating anchor — straight up, or swept into an arc. |
|
|
389
421
|
| [`ResizablePanelView`](https://salilvnair.com/framework/dui/#/resizablepanel) | Single-pane panel with bottom-edge drag handle to resize height — no store dependency. |
|
|
390
422
|
| [`SplitPanelView`](https://salilvnair.com/framework/dui/#/splitpanel) | Split-pane container — horizontal or vertical — drag pill, double-click to reset. |
|
|
391
423
|
| [`BottomPanelView`](https://salilvnair.com/framework/dui/#/bottompanel) | DevTools-style resizable bottom panel with tab bar and collapse toggle. |
|
|
@@ -412,12 +444,14 @@ contact sheet and a table of what is in it.
|
|
|
412
444
|
</details>
|
|
413
445
|
|
|
414
446
|
<details>
|
|
415
|
-
<summary><b>Data & Enterprise</b> (
|
|
447
|
+
<summary><b>Data & Enterprise</b> (16)</summary>
|
|
416
448
|
|
|
417
|
-

|
|
449
|
+

|
|
418
450
|
|
|
419
451
|
| Component | What it is |
|
|
420
452
|
| --- | --- |
|
|
453
|
+
| [`IssueCardView`](https://salilvnair.com/framework/dui/#/issuecard) | The card a tracker board is built from — everything but the title is a slot, with a matching skeleton so the board ne… |
|
|
454
|
+
| [`FindingCardView`](https://salilvnair.com/framework/dui/#/findingcard) | One finding from an analysis — with remediation kept apart from the detail, because what was found and what to do are… |
|
|
421
455
|
| [`DescriptionsView`](https://salilvnair.com/framework/dui/#/descriptions) | Read-only label/value grid for entity detail views. |
|
|
422
456
|
| [`StatisticView`](https://salilvnair.com/framework/dui/#/statistic) | Inline animated big-number stat with prefix/suffix. |
|
|
423
457
|
| [`ResultView`](https://salilvnair.com/framework/dui/#/result) | Full-page outcome state — success / error / 404 / 403 / warning / info. |
|
|
@@ -436,12 +470,14 @@ contact sheet and a table of what is in it.
|
|
|
436
470
|
</details>
|
|
437
471
|
|
|
438
472
|
<details>
|
|
439
|
-
<summary><b>Advanced Selection</b> (
|
|
473
|
+
<summary><b>Advanced Selection</b> (15)</summary>
|
|
440
474
|
|
|
441
|
-

|
|
475
|
+

|
|
442
476
|
|
|
443
477
|
| Component | What it is |
|
|
444
478
|
| --- | --- |
|
|
479
|
+
| [`SortableView`](https://salilvnair.com/framework/dui/#/sortable) | Reordering for rows you draw yourself — it supplies the handle, the drop indicator and the indices, nothing else. |
|
|
480
|
+
| [`RearrangeView`](https://salilvnair.com/framework/dui/#/rearrange) | The column-picker shape — which fields to show and in what order, both questions in one list. |
|
|
445
481
|
| [`KbdView`](https://salilvnair.com/framework/dui/#/kbd) | Hotkey hint chip, composes multiple keys with a "+" separator. |
|
|
446
482
|
| [`WizardStepperView`](https://salilvnair.com/framework/dui/#/wizardstepper) | Multi-step form wizard progress header. |
|
|
447
483
|
| [`AccordionGroupView`](https://salilvnair.com/framework/dui/#/accordiongroup) | Managed single/multi-open accordion group, built on CollapsibleSectionView. |
|
|
@@ -517,12 +553,14 @@ contact sheet and a table of what is in it.
|
|
|
517
553
|
</details>
|
|
518
554
|
|
|
519
555
|
<details>
|
|
520
|
-
<summary><b>Media & Files</b> (
|
|
556
|
+
<summary><b>Media & Files</b> (14)</summary>
|
|
521
557
|
|
|
522
|
-

|
|
558
|
+

|
|
523
559
|
|
|
524
560
|
| Component | What it is |
|
|
525
561
|
| --- | --- |
|
|
562
|
+
| [`PathBreadcrumbView`](https://salilvnair.com/framework/dui/#/pathbreadcrumb) | The path bar above a file listing — every segment a link back, and a double-click turns the whole thing into a text box. |
|
|
563
|
+
| [`FileBrowserView`](https://salilvnair.com/framework/dui/#/filebrowser) | A directory listing — files, folders and symlinks, with selection and arrival as two separate states in two separate… |
|
|
526
564
|
| [`ImageGalleryView`](https://salilvnair.com/framework/dui/#/imagegallery) | Grid gallery with a click-to-open lightbox — prev/next navigation, Escape to close. |
|
|
527
565
|
| [`ImageCropperView`](https://salilvnair.com/framework/dui/#/imagecropper) | Drag-crop + zoom image editor — fixed crop frame, pannable/zoomable image. |
|
|
528
566
|
| [`VideoPlayerView`](https://salilvnair.com/framework/dui/#/videoplayer) | Custom video controls wrapper — play/pause, seek, volume. |
|
|
@@ -539,12 +577,17 @@ contact sheet and a table of what is in it.
|
|
|
539
577
|
</details>
|
|
540
578
|
|
|
541
579
|
<details>
|
|
542
|
-
<summary><b>Data Display & Wow</b> (
|
|
580
|
+
<summary><b>Data Display & Wow</b> (20)</summary>
|
|
543
581
|
|
|
544
|
-

|
|
582
|
+

|
|
545
583
|
|
|
546
584
|
| Component | What it is |
|
|
547
585
|
| --- | --- |
|
|
586
|
+
| [`SwimlaneChartView`](https://salilvnair.com/framework/dui/#/swimlanechart) | What each of several things was doing over a period — threads by state, pods by phase — each stretch coloured by the… |
|
|
587
|
+
| [`LaneChartView`](https://salilvnair.com/framework/dui/#/lanechart) | Several metrics over the same period, each in its own lane with its own scale — so a small signal is not flattened by… |
|
|
588
|
+
| [`FlameGraphView`](https://salilvnair.com/framework/dui/#/flamegraph) | The profiler flame graph — a frame is as wide as it is expensive, and clicking one makes it the new root. |
|
|
589
|
+
| [`SunburstView`](https://salilvnair.com/framework/dui/#/sunburst) | Where a total went, one level at a time — a ring per level, drawn outward. |
|
|
590
|
+
| [`DonutView`](https://salilvnair.com/framework/dui/#/donut) | A share-of-total ring, with maxSlices to roll the unreadable tail into one named remainder. |
|
|
548
591
|
| [`TimelineView`](https://salilvnair.com/framework/dui/#/timeline) | Event trail with icon nodes — vertical (default) or horizontal. |
|
|
549
592
|
| [`ActivityFeedView`](https://salilvnair.com/framework/dui/#/activityfeed) | Chronological activity feed, entries grouped by day. |
|
|
550
593
|
| [`KanbanBoardView`](https://salilvnair.com/framework/dui/#/kanbanboard) | Draggable columns + cards board, native HTML5 drag-and-drop. |
|
|
@@ -804,7 +847,7 @@ the scripts that make it live in `scripts/`.
|
|
|
804
847
|
|
|
805
848
|
| Command | What it does |
|
|
806
849
|
| --- | --- |
|
|
807
|
-
| `npm run shots` | Photographs all
|
|
850
|
+
| `npm run shots` | Photographs all 281 components into `media/components/` and writes `media/components.dark.json` |
|
|
808
851
|
| `npm run shots:light` | The same on the light ground (gitignored — an intermediate for the light sheets) |
|
|
809
852
|
| `npm run sheets` | One contact sheet per group into `media/sheets/` — what the catalog above embeds |
|
|
810
853
|
| `npm run catalog` | Rewrites the catalog block in this README from the manifest |
|
|
@@ -823,7 +866,7 @@ Two rules the scripts enforce, both learned the hard way:
|
|
|
823
866
|
|
|
824
867
|
- **The component list comes from the app, not from the script.** The showcase
|
|
825
868
|
publishes its sidebar as `window.__DUI_SHOWCASE__`; a hand-maintained copy of
|
|
826
|
-
|
|
869
|
+
281 ids goes stale silently, and the failure mode is a new component that
|
|
827
870
|
simply never gets photographed.
|
|
828
871
|
- **No unverified footage survives.** Every video segment asserts something is
|
|
829
872
|
on screen before its clip is kept. A step that quietly did nothing still
|