@salilvnair/dui 1.0.12 → 1.0.14

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  # @salilvnair/dui
4
4
 
5
- **Daakia UI** — a React 19 + TypeScript component library of **238 components**,
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
- ![DUI — 238 components, a live playground, live retheming, light and dark](https://raw.githubusercontent.com/salilvnair/dui/main/media/dui-showcase.gif)
21
+ ![DUI — 281 components, a live playground, live retheming, light and dark](https://raw.githubusercontent.com/salilvnair/dui/main/media/dui-showcase.gif)
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 238 components opens on an editable JSX snippet with a live
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
  ![Editing the JSX for ButtonView and the preview updating live](https://raw.githubusercontent.com/salilvnair/dui/main/media/sections/playground.gif)
@@ -196,7 +196,7 @@ tooltips, action sheets, a spotlight tour.
196
196
 
197
197
  ![EditorView with Monaco, and the plain-text fallback beside it](https://raw.githubusercontent.com/salilvnair/dui/main/media/sections/editor.gif)
198
198
 
199
- **All 238 of them, searchable** — the showcase's sidebar is the fastest way to
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
  ![Searching the sidebar for "table", then for "picker"](https://raw.githubusercontent.com/salilvnair/dui/main/media/sections/catalog.gif)
@@ -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
- **238 components** across 18 groups.
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> (16)</summary>
217
+ <summary><b>Inputs</b> (23)</summary>
218
218
 
219
- ![Inputs — TextInputView, SelectInputView, SelectTextInputView, TagInputView, CheckboxView, ToggleSwitchView, ThemeCardSelectorView, EditorView, DebugEditorView, SearchInputView, DurationInputView, HighlightedInputView, KeyValueTableView, MergedInputView, PickerView, SegmentedControlView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/inputs.png)
219
+ ![Inputs — KeyValueTableRowView, DiffEditorView, MarkdownEditorView, MultilineInputView, InlineEditTextView, SearchFieldView, FilterInputView, TextInputView, SelectInputView, SelectTextInputView, TagInputView, CheckboxView, ToggleSwitchView, ThemeCardSelectorView, EditorView, DebugEditorView, SearchInputView, DurationInputView, HighlightedInputView, KeyValueTableView, MergedInputView, PickerView, SegmentedControlView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/inputs.png)
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> (5)</summary>
250
+ <summary><b>Date & Time</b> (7)</summary>
244
251
 
245
- ![Date & Time — CalendarView, DateInputView, DateRangePickerView, TimeWheelView, CountdownRingView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/date-time.png)
252
+ ![Date & Time — TimeZoneSelectView, DateTimeInputView, CalendarView, DateInputView, DateRangePickerView, TimeWheelView, CountdownRingView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/date-time.png)
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> (14)</summary>
267
+ <summary><b>Form & Selection</b> (16)</summary>
259
268
 
260
- ![Form & Selection — RadioGroupView, RadioCardView, RatingView, OtpInputView, PhoneInputView, ColorPickerView, IconPickerView, EmojiPickerView, FileDropzoneView, AvatarUploadView, MaskedInputView, TransferListView, StepperInputView, SwitchGroupView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/form-selection.png)
269
+ ![Form & Selection — SwatchPickerView, TogglePillView, RadioGroupView, RadioCardView, RatingView, OtpInputView, PhoneInputView, ColorPickerView, IconPickerView, EmojiPickerView, FileDropzoneView, AvatarUploadView, MaskedInputView, TransferListView, StepperInputView, SwitchGroupView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/form-selection.png)
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> (10)</summary>
293
+ <summary><b>Feedback & Status</b> (14)</summary>
283
294
 
284
- ![Feedback & Status — SnackbarView, BannerView, ProgressRingView, ProgressBarView, SkeletonView, NotificationBadgeView, AvatarView, AvatarGroupView, PresenceDotView, ConfettiBurstView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/feedback-status.png)
295
+ ![Feedback & Status — TableSkeletonView, LoadingStateView, InfoView, CalloutView, SnackbarView, BannerView, ProgressRingView, ProgressBarView, SkeletonView, NotificationBadgeView, AvatarView, AvatarGroupView, PresenceDotView, ConfettiBurstView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/feedback-status.png)
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> (4)</summary>
317
+ <summary><b>Buttons</b> (8)</summary>
303
318
 
304
- ![Buttons — ButtonView, IconButtonView, DropDownButtonView, AIButtonView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/buttons.png)
319
+ ![Buttons — ThemeToggleView, SegmentedView, SplitButtonView, ActionButtonView, ButtonView, IconButtonView, DropDownButtonView, AIButtonView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/buttons.png)
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> (9)</summary>
335
+ <summary><b>Navigation</b> (11)</summary>
317
336
 
318
- ![Navigation — TabView, TabBarView, ContextMenuView, SideNavView, SettingsNavView, BreadcrumbView, PaginationView, DockView, FabView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/navigation.png)
337
+ ![Navigation — UnderlineTabsView, PilledTabView, TabView, TabBarView, ContextMenuView, SideNavView, SettingsNavView, BreadcrumbView, PaginationView, DockView, FabView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/navigation.png)
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> (19)</summary>
356
+ <summary><b>Display</b> (26)</summary>
336
357
 
337
- ![Display — ChipView, StatusIndicatorView, LoaderView, EmptyStateView, ColoredTextView, StatsCardView, DottedCardView, DataTableView, CodeBlockView, PromptCardView, PromptLibraryView, StageCheck/Spin/Pulse, HudView, JsonTreeView, ExpandableLogEntryView, CopyButtonView, MarkdownView, FormDataTableView, YamlKeyChip](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/display.png)
358
+ ![Display — LineDiffView, SetupOptionView, PriorityMarkView, GroupHeaderView, TerminalBlockView, CommandChipView, ChipView, BadgeChipView, StatusIndicatorView, LoaderView, EmptyStateView, ColoredTextView, StatsCardView, DottedCardView, DataTableView, CodeBlockView, PromptCardView, PromptLibraryView, StageCheck/Spin/Pulse, HudView, JsonTreeView, ExpandableLogEntryView, CopyButtonView, MarkdownView, FormDataTableView, YamlKeyChip](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/display.png)
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> (9)</summary>
392
+ <summary><b>Overlays</b> (11)</summary>
365
393
 
366
- ![Overlays — ModalView, InfoPopupView, ToastView, PopoverView, TooltipView, DrawerView, ActionSheetView, BottomSheetView, SpotlightTourView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/overlays.png)
394
+ ![Overlays — SheetView, CommandPaletteView, ModalView, InfoPopupView, ToastView, PopoverView, TooltipView, DrawerView, ActionSheetView, BottomSheetView, SpotlightTourView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/overlays.png)
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> (22)</summary>
413
+ <summary><b>Layout</b> (24)</summary>
384
414
 
385
- ![Layout — ResizablePanelView, SplitPanelView, BottomPanelView, FeatureCategoryView, CollapsibleSectionView, SpacerView, FolderView, DebugView, HeroView, LevelView, MediaObjectView, TileGridView, PanelListView, NavbarView, AffixView, AnchorView, StickyHeaderView, AspectRatioView, MasonryGridView, ScrollAreaView, BackToTopView, WatermarkView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/layout.png)
415
+ ![Layout — InspectorPanelView, FanStackView, ResizablePanelView, SplitPanelView, BottomPanelView, FeatureCategoryView, CollapsibleSectionView, SpacerView, FolderView, DebugView, HeroView, LevelView, MediaObjectView, TileGridView, PanelListView, NavbarView, AffixView, AnchorView, StickyHeaderView, AspectRatioView, MasonryGridView, ScrollAreaView, BackToTopView, WatermarkView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/layout.png)
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> (14)</summary>
447
+ <summary><b>Data & Enterprise</b> (16)</summary>
416
448
 
417
- ![Data & Enterprise — DescriptionsView, StatisticView, ResultView, CascaderView, ComboBoxView, ListView, VirtualizedListView, StickyTableHeaderView, TablePaginationView, FilterBarView, SortableHeaderView, EditableCellView, DataGridToolbarView, ColumnVisibilityMenuView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/data-enterprise.png)
449
+ ![Data & Enterprise — IssueCardView, FindingCardView, DescriptionsView, StatisticView, ResultView, CascaderView, ComboBoxView, ListView, VirtualizedListView, StickyTableHeaderView, TablePaginationView, FilterBarView, SortableHeaderView, EditableCellView, DataGridToolbarView, ColumnVisibilityMenuView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/data-enterprise.png)
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> (13)</summary>
473
+ <summary><b>Advanced Selection</b> (15)</summary>
440
474
 
441
- ![Advanced Selection — KbdView, WizardStepperView, AccordionGroupView, SegmentedProgressBarView, ChecklistView, PriorityPickerView, TagCloudView, RangeSliderView, VoteWidgetView, LikeButtonView, BookmarkButtonView, FollowButtonView, ShortcutRecorderView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/advanced-selection.png)
475
+ ![Advanced Selection — SortableView, RearrangeView, KbdView, WizardStepperView, AccordionGroupView, SegmentedProgressBarView, ChecklistView, PriorityPickerView, TagCloudView, RangeSliderView, VoteWidgetView, LikeButtonView, BookmarkButtonView, FollowButtonView, ShortcutRecorderView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/advanced-selection.png)
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> (12)</summary>
556
+ <summary><b>Media & Files</b> (14)</summary>
521
557
 
522
- ![Media & Files — ImageGalleryView, ImageCropperView, VideoPlayerView, AudioWaveformView, AudioPlayerView, PdfViewerView, FileIconView, FileListView, DragHandleView, SignaturePadView, BarcodeView, ImageZoomView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/media-files.png)
558
+ ![Media & Files — PathBreadcrumbView, FileBrowserView, ImageGalleryView, ImageCropperView, VideoPlayerView, AudioWaveformView, AudioPlayerView, PdfViewerView, FileIconView, FileListView, DragHandleView, SignaturePadView, BarcodeView, ImageZoomView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/media-files.png)
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> (15)</summary>
580
+ <summary><b>Data Display & Wow</b> (20)</summary>
543
581
 
544
- ![Data Display & Wow — TimelineView, ActivityFeedView, KanbanBoardView, SparklineView, HeatmapCalendarView, ComparisonSliderView, CarouselView, QRCodeView, StatTrendCardView, PricingCardView, TestimonialCardView, RatingBreakdownView, TreeSelectView, RichTextToolbarView, MentionInputView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/data-display-wow.png)
582
+ ![Data Display & Wow — SwimlaneChartView, LaneChartView, FlameGraphView, SunburstView, DonutView, TimelineView, ActivityFeedView, KanbanBoardView, SparklineView, HeatmapCalendarView, ComparisonSliderView, CarouselView, QRCodeView, StatTrendCardView, PricingCardView, TestimonialCardView, RatingBreakdownView, TreeSelectView, RichTextToolbarView, MentionInputView](https://raw.githubusercontent.com/salilvnair/dui/main/media/sheets/data-display-wow.png)
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 238 components into `media/components/` and writes `media/components.dark.json` |
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
- 238 ids goes stale silently, and the failure mode is a new component that
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