@zeyos/zx 4.3.4 → 5.0.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.
Files changed (231) hide show
  1. package/CHANGELOG.md +438 -0
  2. package/README.md +49 -10
  3. package/dist/types/components/activity-item/activity-item.d.ts +351 -0
  4. package/dist/types/components/activity-list/activity-list.d.ts +217 -0
  5. package/dist/types/components/app-sidebar/app-sidebar.d.ts +33 -3
  6. package/dist/types/components/avatar/avatar.d.ts +46 -7
  7. package/dist/types/components/badge/badge.d.ts +21 -1
  8. package/dist/types/components/button/button.d.ts +23 -0
  9. package/dist/types/components/calendar/calendar.d.ts +19 -0
  10. package/dist/types/components/card/card.d.ts +7 -0
  11. package/dist/types/components/card-view/card-view.d.ts +11 -3
  12. package/dist/types/components/card-view/record-card.d.ts +7 -1
  13. package/dist/types/components/chart/chart.d.ts +10 -0
  14. package/dist/types/components/checklist/checklist.d.ts +9 -0
  15. package/dist/types/components/code-editor/code-editor.d.ts +149 -0
  16. package/dist/types/components/code-editor/field-adapter.d.ts +5 -0
  17. package/dist/types/components/context-menu/context-menu.d.ts +18 -2
  18. package/dist/types/components/date-picker/date-picker.d.ts +8 -0
  19. package/dist/types/components/date-picker/time-picker.d.ts +7 -0
  20. package/dist/types/components/datebox/date-range-box.d.ts +5 -1
  21. package/dist/types/components/datebox/datebox.d.ts +7 -2
  22. package/dist/types/components/dialog/dialog.d.ts +75 -6
  23. package/dist/types/components/dropdown/dropdown.d.ts +2 -2
  24. package/dist/types/components/entity-ref/entity-ref.d.ts +331 -0
  25. package/dist/types/components/field/field.d.ts +24 -2
  26. package/dist/types/components/fieldset/fieldset.d.ts +19 -1
  27. package/dist/types/components/file-item/file-item.d.ts +262 -0
  28. package/dist/types/components/file-list/file-list.d.ts +171 -0
  29. package/dist/types/components/filter/filter.d.ts +91 -36
  30. package/dist/types/components/filter-panel/filter-panel.d.ts +449 -0
  31. package/dist/types/components/form/form.d.ts +12 -1
  32. package/dist/types/components/kanban-view/kanban-card.d.ts +146 -0
  33. package/dist/types/components/kanban-view/kanban-view.d.ts +170 -4
  34. package/dist/types/components/launcher/launcher.d.ts +278 -26
  35. package/dist/types/components/list-toolbar/list-toolbar.d.ts +599 -0
  36. package/dist/types/components/menu-button/menu-button.d.ts +37 -42
  37. package/dist/types/components/message/message.d.ts +126 -17
  38. package/dist/types/components/modal/modal.d.ts +61 -2
  39. package/dist/types/components/navigation-bar/navigation-bar.d.ts +105 -21
  40. package/dist/types/components/panel/panel.d.ts +7 -0
  41. package/dist/types/components/search/search.d.ts +7 -0
  42. package/dist/types/components/select/color.d.ts +12 -0
  43. package/dist/types/components/select/glyphs.d.ts +124 -0
  44. package/dist/types/components/select/select.d.ts +15 -3
  45. package/dist/types/components/sort-control/sort-control.d.ts +105 -0
  46. package/dist/types/components/stat-tile/stat-tile.d.ts +288 -0
  47. package/dist/types/components/tabbox/tabbox.d.ts +16 -0
  48. package/dist/types/components/table/table.d.ts +190 -1
  49. package/dist/types/components/table-view/table-view.d.ts +11 -5
  50. package/dist/types/components/tag-picker/tag-picker.d.ts +21 -4
  51. package/dist/types/components/timebox/timebox.d.ts +7 -0
  52. package/dist/types/components/tree/tree.d.ts +13 -0
  53. package/dist/types/components/value-list/value-list.d.ts +8 -0
  54. package/dist/types/components/view/record-view.d.ts +96 -5
  55. package/dist/types/core/breakpoint.d.ts +1 -1
  56. package/dist/types/core/icons.d.ts +37 -22
  57. package/dist/types/core/motion.d.ts +59 -0
  58. package/dist/types/core/overlay-host.d.ts +15 -1
  59. package/dist/types/index.d.ts +16 -3
  60. package/dist/types/internal/app-rail.d.ts +10 -0
  61. package/dist/types/internal/menu-items.d.ts +134 -0
  62. package/dist/types/zeyos/connect.d.ts +6 -0
  63. package/dist/types/zeyos/form.d.ts +50 -9
  64. package/dist/types/zeyos/index.d.ts +1 -1
  65. package/dist/types/zeyos/query.d.ts +79 -0
  66. package/dist/types/zeyos/schema.d.ts +24 -1
  67. package/dist/types/zeyos/table.d.ts +100 -14
  68. package/dist/types/zeyos/view.d.ts +10 -0
  69. package/dist/zx-zeyos.esm.js +2206 -489
  70. package/dist/zx-zeyos.esm.min.js +56 -1
  71. package/dist/zx.css +3322 -724
  72. package/dist/zx.esm.js +12244 -5809
  73. package/dist/zx.esm.min.js +58 -3
  74. package/dist/zx.global.js +12246 -5811
  75. package/dist/zx.global.min.js +58 -3
  76. package/dist/zx.min.css +1 -1
  77. package/docs/api.json +1683 -146
  78. package/docs/llms.md +777 -110
  79. package/docs/llms.txt +14 -8
  80. package/package.json +1 -1
  81. package/src/components/account-menu/account-menu.css +35 -10
  82. package/src/components/activity-item/activity-item.css +137 -0
  83. package/src/components/activity-item/activity-item.js +602 -0
  84. package/src/components/activity-list/activity-list.css +99 -0
  85. package/src/components/activity-list/activity-list.js +409 -0
  86. package/src/components/app-icon/app-icon.css +1 -1
  87. package/src/components/app-rail/app-rail.css +191 -22
  88. package/src/components/app-sidebar/app-sidebar.css +349 -24
  89. package/src/components/app-sidebar/app-sidebar.js +86 -11
  90. package/src/components/aurora/aurora.css +5 -3
  91. package/src/components/avatar/avatar.css +32 -7
  92. package/src/components/avatar/avatar.js +72 -8
  93. package/src/components/badge/badge.css +54 -2
  94. package/src/components/badge/badge.js +29 -2
  95. package/src/components/button/button.css +74 -8
  96. package/src/components/button/button.js +44 -1
  97. package/src/components/calendar/calendar.css +46 -46
  98. package/src/components/calendar/calendar.js +33 -3
  99. package/src/components/card/card.css +2 -2
  100. package/src/components/card/card.js +12 -1
  101. package/src/components/card-view/card-view.css +10 -7
  102. package/src/components/card-view/card-view.js +25 -9
  103. package/src/components/card-view/record-card.js +7 -3
  104. package/src/components/chart/chart.css +4 -1
  105. package/src/components/chart/chart.js +12 -0
  106. package/src/components/check-button/check-button.css +10 -2
  107. package/src/components/checklist/checklist.css +9 -2
  108. package/src/components/checklist/checklist.js +11 -5
  109. package/src/components/checklist/field-adapter.js +3 -1
  110. package/src/components/code-editor/code-editor.css +68 -0
  111. package/src/components/code-editor/code-editor.js +306 -0
  112. package/src/components/code-editor/field-adapter.js +34 -0
  113. package/src/components/context-menu/context-menu.css +87 -5
  114. package/src/components/context-menu/context-menu.js +22 -30
  115. package/src/components/copy/copy-button.css +6 -0
  116. package/src/components/copy/copy-input.css +8 -3
  117. package/src/components/data-filter/data-filter.css +5 -4
  118. package/src/components/date-picker/date-picker.css +6 -6
  119. package/src/components/date-picker/date-picker.js +22 -8
  120. package/src/components/date-picker/date-range-picker.css +3 -3
  121. package/src/components/date-picker/month-picker.js +3 -3
  122. package/src/components/date-picker/time-picker.css +1 -1
  123. package/src/components/date-picker/time-picker.js +20 -8
  124. package/src/components/datebox/date-range-box.css +79 -2
  125. package/src/components/datebox/date-range-box.js +13 -2
  126. package/src/components/datebox/datebox.css +79 -2
  127. package/src/components/datebox/datebox.js +13 -2
  128. package/src/components/dialog/dialog.css +26 -0
  129. package/src/components/dialog/dialog.js +174 -70
  130. package/src/components/dropdown/dropdown.css +1 -1
  131. package/src/components/dropdown/dropdown.js +7 -5
  132. package/src/components/empty-state/empty-state.css +2 -2
  133. package/src/components/entity-ref/entity-ref.css +182 -0
  134. package/src/components/entity-ref/entity-ref.js +496 -0
  135. package/src/components/field/field.css +28 -9
  136. package/src/components/field/field.js +68 -26
  137. package/src/components/field-upload/field-upload.css +1 -1
  138. package/src/components/fieldset/fieldset.css +5 -3
  139. package/src/components/fieldset/fieldset.js +28 -5
  140. package/src/components/file-item/file-item.css +88 -0
  141. package/src/components/file-item/file-item.js +505 -0
  142. package/src/components/file-list/file-list.css +51 -0
  143. package/src/components/file-list/file-list.js +320 -0
  144. package/src/components/filter/filter.css +27 -1
  145. package/src/components/filter/filter.js +205 -47
  146. package/src/components/filter-panel/filter-panel.css +104 -0
  147. package/src/components/filter-panel/filter-panel.js +964 -0
  148. package/src/components/finder/finder.css +15 -13
  149. package/src/components/form/form.css +5 -4
  150. package/src/components/form/form.js +11 -2
  151. package/src/components/grid/grid.css +1 -1
  152. package/src/components/groupbox/groupbox.css +1 -1
  153. package/src/components/kanban-view/kanban-card.js +247 -0
  154. package/src/components/kanban-view/kanban-view.css +226 -8
  155. package/src/components/kanban-view/kanban-view.js +255 -12
  156. package/src/components/launcher/launcher.css +107 -25
  157. package/src/components/launcher/launcher.js +557 -63
  158. package/src/components/list-toolbar/list-toolbar.css +194 -0
  159. package/src/components/list-toolbar/list-toolbar.js +851 -0
  160. package/src/components/master-panel/master-panel.css +2 -0
  161. package/src/components/menu-button/menu-button.css +87 -5
  162. package/src/components/menu-button/menu-button.js +86 -46
  163. package/src/components/message/message.css +38 -5
  164. package/src/components/message/message.js +230 -17
  165. package/src/components/modal/modal.css +15 -0
  166. package/src/components/modal/modal.js +159 -3
  167. package/src/components/navigation-bar/navigation-bar.css +95 -11
  168. package/src/components/navigation-bar/navigation-bar.js +171 -4
  169. package/src/components/number-field/field-adapter.js +1 -0
  170. package/src/components/number-field/number-field.css +70 -0
  171. package/src/components/number-field/number-field.js +2 -0
  172. package/src/components/pagination/pagination.css +8 -6
  173. package/src/components/panel/panel.css +1 -1
  174. package/src/components/panel/panel.js +13 -2
  175. package/src/components/rating/rating.css +7 -0
  176. package/src/components/search/search.js +17 -5
  177. package/src/components/select/color.js +22 -0
  178. package/src/components/select/field-adapter.js +6 -1
  179. package/src/components/select/glyphs.js +165 -0
  180. package/src/components/select/select.css +138 -45
  181. package/src/components/select/select.js +86 -47
  182. package/src/components/sheet/sheet.css +11 -8
  183. package/src/components/slider/slider.css +16 -2
  184. package/src/components/slider/slider.js +1 -1
  185. package/src/components/sort-control/sort-control.css +20 -0
  186. package/src/components/sort-control/sort-control.js +140 -0
  187. package/src/components/stat-tile/stat-tile.css +208 -0
  188. package/src/components/stat-tile/stat-tile.js +601 -0
  189. package/src/components/tabbox/tabbox.css +32 -27
  190. package/src/components/tabbox/tabbox.js +17 -2
  191. package/src/components/table/table.css +155 -31
  192. package/src/components/table/table.js +386 -33
  193. package/src/components/table-view/table-view.css +8 -2
  194. package/src/components/table-view/table-view.js +21 -6
  195. package/src/components/tag-picker/tag-picker.css +86 -6
  196. package/src/components/tag-picker/tag-picker.js +25 -8
  197. package/src/components/timebox/timebox.css +22 -2
  198. package/src/components/timebox/timebox.js +18 -5
  199. package/src/components/toggle/toggle.css +12 -1
  200. package/src/components/toolbar/toolbar.js +2 -2
  201. package/src/components/tooltip/tooltip.css +4 -0
  202. package/src/components/tooltip/tooltip.js +10 -3
  203. package/src/components/tree/tree.css +25 -16
  204. package/src/components/tree/tree.js +31 -0
  205. package/src/components/value-list/value-list.css +3 -3
  206. package/src/components/value-list/value-list.js +22 -6
  207. package/src/components/view/record-view.css +5 -0
  208. package/src/components/view/record-view.js +100 -7
  209. package/src/core/breakpoint.js +1 -1
  210. package/src/core/icons.js +259 -57
  211. package/src/core/motion.js +147 -0
  212. package/src/core/overlay-host.js +21 -2
  213. package/src/index.js +30 -3
  214. package/src/internal/app-rail.js +18 -1
  215. package/src/internal/menu-items.js +142 -0
  216. package/src/zeyos/connect.js +6 -2
  217. package/src/zeyos/form.js +67 -27
  218. package/src/zeyos/index.js +1 -1
  219. package/src/zeyos/query.js +153 -0
  220. package/src/zeyos/schema.js +144 -27
  221. package/src/zeyos/table.js +68 -5
  222. package/src/zeyos/view.js +6 -0
  223. package/styles/base.css +56 -0
  224. package/styles/icons.css +11 -1
  225. package/styles/print.css +192 -0
  226. package/styles/tokens/dark.css +113 -37
  227. package/styles/tokens/global.css +121 -27
  228. package/styles/tokens/semantic.css +100 -31
  229. package/styles/tokens/themes.css +7 -6
  230. package/styles/zx.css +11 -1
  231. package/styles/tokens/density.css +0 -9
@@ -7,6 +7,9 @@ export type RecordCardLink = import('../card-view/record-card.js').RecordCardLin
7
7
  export type RecordCardAction = import('../card-view/record-card.js').RecordCardAction;
8
8
  export type MenuItem = import('../menu-button/menu-button.js').MenuItem;
9
9
  export type KanbanRule = import('./kanban-policy.js').KanbanRule;
10
+ export type KanbanIndicator = import('./kanban-card.js').KanbanIndicator;
11
+ export type KanbanIndicatorSource = string | KanbanIndicator | ((record: KanbanRecord, index: number) => KanbanIndicator | Node | unknown) | null;
12
+ export type KanbanAssignee = import('./kanban-card.js').KanbanAssignee;
10
13
  export type KanbanRejectReason = import('./kanban-policy.js').KanbanRejectReason;
11
14
  export type KanbanMoveEvaluation = import('./kanban-policy.js').KanbanMoveEvaluation;
12
15
  export type KanbanAccessor = string | ((record: KanbanRecord, index: number) => unknown) | null;
@@ -253,6 +256,10 @@ export type KanbanViewOptions = {
253
256
  * Shared selection mode.
254
257
  */
255
258
  selectable?: false | 'single' | 'multi';
259
+ /**
260
+ * Select through a checkbox or the non-interactive card surface.
261
+ */
262
+ selectionTrigger?: 'checkbox' | 'card';
256
263
  /**
257
264
  * Initial record ids.
258
265
  */
@@ -266,9 +273,10 @@ export type KanbanViewOptions = {
266
273
  */
267
274
  hiddenFields?: string[];
268
275
  /**
269
- * Show shared field controls.
276
+ * Show shared field controls. Redeclared narrower than `RecordViewOptions` it fails declaration
277
+ * emit, because the two option types are intersected.
270
278
  */
271
- fieldControls?: boolean;
279
+ fieldControls?: boolean | import('../view/record-view.js').ViewFieldControlsConfig;
272
280
  /**
273
281
  * Empty-board content.
274
282
  */
@@ -322,6 +330,54 @@ export type KanbanViewOptions = {
322
330
  * pointer drag. Touch drags from the card body require a long press so the board still scrolls.
323
331
  */
324
332
  dragFrom?: 'card' | 'handle';
333
+ /**
334
+ * Move-handle presentation. `keyboard`
335
+ * keeps it announced and tabbable but out of sight until it takes focus, because the card itself
336
+ * is already the pointer drag source; `always` shows it alongside the card's other controls.
337
+ * `dragFrom:'handle'` overrides this — a drag source a pointer user cannot see is not a control.
338
+ */
339
+ moveHandle?: 'keyboard' | 'always';
340
+ /**
341
+ * Icon
342
+ * naming what the record is, drawn before the identifier.
343
+ */
344
+ entityIcon?: string | ((record: KanbanRecord, index: number) => string | null) | null;
345
+ /**
346
+ * Stable record key shown on the card head.
347
+ */
348
+ identifier?: KanbanCardField;
349
+ /**
350
+ * Status indicator source.
351
+ */
352
+ status?: KanbanIndicatorSource;
353
+ /**
354
+ * Maps a status value to a semantic tone.
355
+ */
356
+ statusTones?: Record<string, string>;
357
+ /**
358
+ * Priority indicator source.
359
+ */
360
+ priority?: KanbanIndicatorSource;
361
+ /**
362
+ * Maps a priority value to a semantic tone.
363
+ */
364
+ priorityTones?: Record<string, string>;
365
+ /**
366
+ * Completion source; a number or `{value,max,label}`.
367
+ */
368
+ progress?: KanbanCardField;
369
+ /**
370
+ * Amount that counts as finished.
371
+ */
372
+ progressMax?: number;
373
+ /**
374
+ * Responsible people; a name, a list, or descriptors.
375
+ */
376
+ assignees?: KanbanCardField;
377
+ /**
378
+ * Faces drawn before the overflow chip.
379
+ */
380
+ maxAvatars?: number;
325
381
  /**
326
382
  * Move the whole selection when a selected card is picked up.
327
383
  */
@@ -380,7 +436,10 @@ export type KanbanViewOptions = {
380
436
  */
381
437
  contextMenu?: boolean | MenuItem[] | ((context: KanbanCardContext) => MenuItem[]);
382
438
  /**
383
- * Replaces card content.
439
+ * Replaces the
440
+ * shared record-card content — eyebrow, titles, and metadata. The preview, selection control,
441
+ * action group, move handle, rule badges, and any configured card head and footer still render,
442
+ * because each of those answers to its own option; clear those options to remove them.
384
443
  */
385
444
  renderCard?: ((context: KanbanCardContext) => Node | null | undefined) | null;
386
445
  /**
@@ -472,6 +531,41 @@ export type KanbanKeyboardMove = {
472
531
  from: KanbanMovePoint;
473
532
  to: KanbanMovePoint;
474
533
  };
534
+ export type KanbanCardReader = ((record: KanbanRecord, index: number) => unknown) | null;
535
+ export type KanbanCardSources = {
536
+ /**
537
+ * Record-key reader.
538
+ */
539
+ identifier: KanbanCardReader;
540
+ /**
541
+ * Status reader.
542
+ */
543
+ status: KanbanCardReader;
544
+ /**
545
+ * Priority reader.
546
+ */
547
+ priority: KanbanCardReader;
548
+ /**
549
+ * Completion reader.
550
+ */
551
+ progress: KanbanCardReader;
552
+ /**
553
+ * Responsible-people reader.
554
+ */
555
+ assignees: KanbanCardReader;
556
+ /**
557
+ * Entity-icon reader.
558
+ */
559
+ entityIcon: KanbanCardReader;
560
+ /**
561
+ * Field ids the anatomy consumes.
562
+ */
563
+ fieldIds: Set<string>;
564
+ /**
565
+ * Whether any source is configured.
566
+ */
567
+ any: boolean;
568
+ };
475
569
  /**
476
570
  * Every user-visible and announced string, so a host can translate the board without patching it.
477
571
  * Values run through `printf`, so named placeholders may be reordered or dropped by a translation.
@@ -497,7 +591,14 @@ declare const DEFAULT_LABELS: Readonly<{
497
591
  countLimit: "%count% records, work-in-progress limit %limit%";
498
592
  countLimitInLane: "%count% records in this lane, %total% of work-in-progress limit %limit% in the column";
499
593
  empty: "No records";
500
- columnEmpty: "";
594
+ columnEmpty: "Drop a card here";
595
+ identifier: "Record";
596
+ priorityLabel: "Priority";
597
+ statusLabel: "Status";
598
+ progress: "Progress";
599
+ progressValue: "%percent%%";
600
+ assignees: "Assigned to %names%";
601
+ assigneeOverflow: "+%count%";
501
602
  selected: "Selected";
502
603
  notSelected: "Not selected";
503
604
  noMatches: "No cards match the current search.";
@@ -526,6 +627,11 @@ declare const DEFAULT_LABELS: Readonly<{
526
627
  dragPreview: "%count% cards";
527
628
  }>;
528
629
  /**
630
+ * A field consumed by the card head or footer — the `identifier`, `status`, `priority`,
631
+ * `progress`, or `assignees` source — is dropped from the shared metadata list so the same value
632
+ * is never shown twice. `field.duplicate === true` opts it back in, extending the rule the shared
633
+ * record card already applies to title and subtitle fields.
634
+ *
529
635
  * Configurable record board with semantic columns, optional swim lanes, and equivalent pointer,
530
636
  * touch, keyboard, context-menu, and programmatic movement. Local moves clone records; callback
531
637
  * grouping remains fully usable for display and external moves but cannot be written safely by
@@ -611,6 +717,15 @@ export declare class KanbanView extends RecordView {
611
717
  _sectionMeta: WeakMap<object, any>;
612
718
  _cardsById: Map<any, any>;
613
719
  _visibleIds: Set<any>;
720
+ _cardSources: KanbanCardSources;
721
+ _fieldIndex: Map<string, any> | Map<string, import("../view/record-view.js").ViewField>;
722
+ _cardFields: {
723
+ all: any[];
724
+ metadata: any[];
725
+ } | {
726
+ all: import("../view/record-view.js").ViewField[];
727
+ metadata: import("../view/record-view.js").ViewField[];
728
+ };
614
729
  _kanbanMenu: ContextMenu;
615
730
  _searchInput: HTMLInputElement;
616
731
  _undoButton: HTMLButtonElement;
@@ -820,6 +935,49 @@ export declare class KanbanView extends RecordView {
820
935
  }[], hasLanes: boolean): HTMLElement;
821
936
  /** @param {KanbanRecord} record @param {number} index @param {string} column @param {string|null} lane @param {boolean} hasLanes @returns {HTMLLIElement} */
822
937
  _renderCard(record: KanbanRecord, index: number, column: string, lane: string | null, hasLanes: boolean): HTMLLIElement;
938
+ /**
939
+ * Builds the two field arrays every card needs, once per refresh.
940
+ * @returns {{all:import('../view/record-view.js').ViewField[],metadata:import('../view/record-view.js').ViewField[]}}
941
+ */
942
+ _resolvedCardFields(): {
943
+ all: import('../view/record-view.js').ViewField[];
944
+ metadata: import('../view/record-view.js').ViewField[];
945
+ };
946
+ /**
947
+ * Returns the fields the shared metadata list may show. A field the card head or footer already
948
+ * projects is dropped, because repeating it as a labelled row is the same value twice; a field
949
+ * marked `duplicate` opts back in, matching how title and subtitle already behave.
950
+ * @returns {import('../view/record-view.js').ViewField[]} Metadata fields.
951
+ */
952
+ _cardMetadataFields(): import('../view/record-view.js').ViewField[];
953
+ /**
954
+ * Resolves the card-anatomy readers once per refresh. A field id would otherwise be looked up
955
+ * through `getFields()` — which clones every descriptor — once per source per card, so a board
956
+ * with six anatomy sources rebuilt the whole field array six times for every card it drew.
957
+ * @returns {void}
958
+ */
959
+ _resolveCardSources(): void;
960
+ /**
961
+ * Adds the two Kanban-owned regions that bracket the shared record-card anatomy: a head naming
962
+ * what the record is and how urgent it is, and a footer carrying completion and the people
963
+ * responsible. Each part is omitted when its option is unset, so a board that configures none of
964
+ * them renders exactly the card it rendered before.
965
+ * @param {HTMLElement} card Card element.
966
+ * @param {KanbanRecord} record Record.
967
+ * @param {number} index Display index.
968
+ * @returns {void}
969
+ */
970
+ _applyCardAnatomy(card: HTMLElement, record: KanbanRecord, index: number): void;
971
+ /**
972
+ * Resolves one indicator from an already-resolved reader. A reader may return a ready-made
973
+ * `Node`, which is adopted rather than described, so an application keeps full control.
974
+ * @param {((record:KanbanRecord,index:number)=>unknown)|null} source Resolved reader.
975
+ * @param {unknown} tones Value-to-tone map.
976
+ * @param {KanbanRecord} record Record.
977
+ * @param {number} index Display index.
978
+ * @returns {KanbanIndicator|Node|null} Indicator, node, or null.
979
+ */
980
+ _cardIndicator(source: ((record: KanbanRecord, index: number) => unknown) | null, tones: unknown, record: KanbanRecord, index: number): KanbanIndicator | Node | null;
823
981
  /**
824
982
  * Hands card content to `renderCard` while keeping the managed shell: the list item, its
825
983
  * selection control, the action group, and the move handle are never given away, because they
@@ -876,6 +1034,14 @@ export declare class KanbanView extends RecordView {
876
1034
  _resolvedSwimlanes(): KanbanSwimlane[];
877
1035
  /** @param {KanbanAccessor} accessor @param {KanbanRecord} record @param {number} index @returns {unknown} */
878
1036
  _readAxis(accessor: KanbanAccessor, record: KanbanRecord, index: number): unknown;
1037
+ /**
1038
+ * Resolves one field descriptor by id through a per-refresh index. `getFields()` rebuilds a Map
1039
+ * and clones every descriptor on each call, and a string column or lane accessor is read once
1040
+ * per record per column per lane — which made this the most expensive line in a board render.
1041
+ * @param {string} id Field id.
1042
+ * @returns {import('../view/record-view.js').ViewField|undefined} Descriptor, if any.
1043
+ */
1044
+ _axisField(id: string): import('../view/record-view.js').ViewField | undefined;
879
1045
  /** @param {string} column @param {string|null} lane @returns {{record:KanbanRecord,index:number}[]} */
880
1046
  _recordsIn(column: string, lane: string | null): {
881
1047
  record: KanbanRecord;