@dcs-tech/ui 0.2.0 → 0.3.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 (283) hide show
  1. package/README.md +31 -0
  2. package/dist/ChartImageMenu-gvNAYVkY.js +2938 -0
  3. package/dist/Charts-COljjy0x.js +1759 -0
  4. package/dist/SummaryChart-D4jcOv-K.js +31 -0
  5. package/dist/SummaryImage-BSbatHym.js +19 -0
  6. package/dist/SummarySeeAll-vnaL3pdy.js +97 -0
  7. package/dist/defaults-BbLB8QmD.js +709 -0
  8. package/dist/exportContext-CAX8VPrP.js +243 -0
  9. package/dist/exportEngine-C4n1MiOw.js +891 -0
  10. package/dist/fuseSearch-vLQR3O5a.js +37 -0
  11. package/dist/index.js +19289 -9411
  12. package/dist/style.css +1 -1
  13. package/dist/summaryChartData-CU_W5ocv.js +82 -0
  14. package/dist/types/published/dcs-ui/src/index.d.ts +0 -28
  15. package/dist/types/published/dcs-ui/src/publicLogic.d.ts +0 -33
  16. package/dist/types/published/dcs-ui/src/publicTypes.d.ts +0 -12
  17. package/dist/types/shared-logic/src/report/aggregate.d.ts +0 -21
  18. package/dist/types/shared-logic/src/report/canvas.d.ts +0 -55
  19. package/dist/types/shared-logic/src/report/conditions.d.ts +0 -14
  20. package/dist/types/shared-logic/src/report/constants.d.ts +0 -39
  21. package/dist/types/shared-logic/src/report/dataset.d.ts +0 -26
  22. package/dist/types/shared-logic/src/report/edit.d.ts +0 -62
  23. package/dist/types/shared-logic/src/report/fields.d.ts +0 -51
  24. package/dist/types/shared-logic/src/report/format.d.ts +0 -22
  25. package/dist/types/shared-logic/src/report/fromColumns.d.ts +0 -30
  26. package/dist/types/shared-logic/src/report/layout.d.ts +1 -55
  27. package/dist/types/shared-logic/src/report/metrics.d.ts +0 -45
  28. package/dist/types/shared-logic/src/report/migrate.d.ts +0 -60
  29. package/dist/types/shared-logic/src/report/paginate.d.ts +0 -32
  30. package/dist/types/shared-logic/src/report/renderers/html.d.ts +0 -21
  31. package/dist/types/shared-logic/src/report/renderers/pdfmake.d.ts +0 -27
  32. package/dist/types/shared-logic/src/report/resolve.d.ts +0 -29
  33. package/dist/types/shared-logic/src/report/scope.d.ts +0 -28
  34. package/dist/types/shared-logic/src/report/storage.d.ts +0 -76
  35. package/dist/types/shared-logic/src/report/validate.d.ts +0 -18
  36. package/dist/types/shared-logic/src/ui/cellRules.logic.d.ts +0 -35
  37. package/dist/types/shared-logic/src/ui/chipinput.logic.d.ts +0 -12
  38. package/dist/types/shared-logic/src/ui/collapsible.logic.d.ts +0 -7
  39. package/dist/types/shared-logic/src/ui/colorScheme.d.ts +0 -14
  40. package/dist/types/shared-logic/src/ui/columnOrder.logic.d.ts +0 -11
  41. package/dist/types/shared-logic/src/ui/datePicker.logic.d.ts +136 -0
  42. package/dist/types/shared-logic/src/ui/editableTable.logic.d.ts +0 -27
  43. package/dist/types/shared-logic/src/ui/fieldControl.logic.d.ts +2 -14
  44. package/dist/types/shared-logic/src/ui/form.logic.d.ts +0 -8
  45. package/dist/types/shared-logic/src/ui/index.d.ts +3 -29
  46. package/dist/types/shared-logic/src/ui/keyboard.logic.d.ts +0 -60
  47. package/dist/types/shared-logic/src/ui/navigation.logic.d.ts +0 -24
  48. package/dist/types/shared-logic/src/ui/popover.logic.d.ts +22 -20
  49. package/dist/types/shared-logic/src/ui/popupList.logic.d.ts +0 -35
  50. package/dist/types/shared-logic/src/ui/quickAddGrid.logic.d.ts +183 -0
  51. package/dist/types/shared-logic/src/ui/select.logic.d.ts +0 -14
  52. package/dist/types/shared-logic/src/ui/tableLayout.logic.d.ts +0 -34
  53. package/dist/types/shared-logic/src/ui/tableSummary.logic.d.ts +0 -19
  54. package/dist/types/shared-logic/src/ui/timeField.logic.d.ts +26 -0
  55. package/dist/types/shared-logic/src/ui/tooltip.logic.d.ts +0 -24
  56. package/dist/types/shared-logic/src/ui/useMergeRefs.d.ts +0 -8
  57. package/dist/types/shared-types/src/report/bands.d.ts +0 -20
  58. package/dist/types/shared-types/src/report/blocks.d.ts +0 -59
  59. package/dist/types/shared-types/src/report/conditions.d.ts +0 -13
  60. package/dist/types/shared-types/src/report/dataset.d.ts +0 -53
  61. package/dist/types/shared-types/src/report/document.d.ts +0 -80
  62. package/dist/types/shared-types/src/report/primitives.d.ts +0 -40
  63. package/dist/types/shared-types/src/report/registry.d.ts +0 -46
  64. package/dist/types/shared-types/src/report/storage.d.ts +0 -31
  65. package/dist/types/shared-types/src/report/template.d.ts +0 -60
  66. package/dist/types/shared-types/src/ui/button.types.d.ts +0 -11
  67. package/dist/types/shared-types/src/ui/checkbox.types.d.ts +0 -4
  68. package/dist/types/shared-types/src/ui/chipinput.types.d.ts +0 -10
  69. package/dist/types/shared-types/src/ui/collapsible.types.d.ts +0 -18
  70. package/dist/types/shared-types/src/ui/common.types.d.ts +0 -11
  71. package/dist/types/shared-types/src/ui/control.types.d.ts +0 -97
  72. package/dist/types/shared-types/src/ui/datePicker.types.d.ts +46 -0
  73. package/dist/types/shared-types/src/ui/editableTable.types.d.ts +0 -79
  74. package/dist/types/shared-types/src/ui/field.types.d.ts +4 -124
  75. package/dist/types/shared-types/src/ui/fieldWrapper.types.d.ts +0 -10
  76. package/dist/types/shared-types/src/ui/fields.types.d.ts +0 -45
  77. package/dist/types/shared-types/src/ui/form.types.d.ts +0 -30
  78. package/dist/types/shared-types/src/ui/index.d.ts +1 -16
  79. package/dist/types/shared-types/src/ui/input.types.d.ts +0 -4
  80. package/dist/types/shared-types/src/ui/keyboard.types.d.ts +2 -109
  81. package/dist/types/shared-types/src/ui/navigation.types.d.ts +0 -22
  82. package/dist/types/shared-types/src/ui/radio.types.d.ts +0 -6
  83. package/dist/types/shared-types/src/ui/select.types.d.ts +0 -41
  84. package/dist/types/shared-types/src/ui/suggest.types.d.ts +0 -10
  85. package/dist/types/shared-types/src/ui/switch.types.d.ts +0 -4
  86. package/dist/types/shared-types/src/ui/table.types.d.ts +0 -59
  87. package/dist/types/shared-types/src/ui/tooltip.types.d.ts +0 -25
  88. package/dist/types/shared-types/src/ui/typography.types.d.ts +0 -4
  89. package/dist/types/shared-web-ui/src/AppBar/AppBar.d.ts +0 -9
  90. package/dist/types/shared-web-ui/src/ArrowKeyFocus/useArrowKeyFocus.d.ts +0 -19
  91. package/dist/types/shared-web-ui/src/Avatar/Avatar.d.ts +0 -14
  92. package/dist/types/shared-web-ui/src/Badge/Badge.d.ts +0 -11
  93. package/dist/types/shared-web-ui/src/Breadcrumbs/Breadcrumbs.d.ts +0 -52
  94. package/dist/types/shared-web-ui/src/Card/Card.d.ts +0 -16
  95. package/dist/types/shared-web-ui/src/Charts/AnchoredMenu.d.ts +17 -0
  96. package/dist/types/shared-web-ui/src/Charts/BarList.d.ts +12 -0
  97. package/dist/types/shared-web-ui/src/Charts/CalendarHeatmap.d.ts +17 -0
  98. package/dist/types/shared-web-ui/src/Charts/Chart.d.ts +20 -0
  99. package/dist/types/shared-web-ui/src/Charts/ChartIcon.d.ts +5 -0
  100. package/dist/types/shared-web-ui/src/Charts/ChartImageMenu.d.ts +4 -0
  101. package/dist/types/shared-web-ui/src/Charts/ChartTable.d.ts +8 -0
  102. package/dist/types/shared-web-ui/src/Charts/ChartTooltip.d.ts +44 -0
  103. package/dist/types/shared-web-ui/src/Charts/ChartView.d.ts +15 -0
  104. package/dist/types/shared-web-ui/src/Charts/ColumnChart.d.ts +15 -0
  105. package/dist/types/shared-web-ui/src/Charts/Donut.d.ts +14 -0
  106. package/dist/types/shared-web-ui/src/Charts/Funnel.d.ts +10 -0
  107. package/dist/types/shared-web-ui/src/Charts/Gauge.d.ts +15 -0
  108. package/dist/types/shared-web-ui/src/Charts/Legend.d.ts +6 -0
  109. package/dist/types/shared-web-ui/src/Charts/LineChart.d.ts +13 -0
  110. package/dist/types/shared-web-ui/src/Charts/NumberTrend.d.ts +21 -0
  111. package/dist/types/shared-web-ui/src/Charts/Progress.d.ts +12 -0
  112. package/dist/types/shared-web-ui/src/Charts/StackedBar.d.ts +11 -0
  113. package/dist/types/shared-web-ui/src/Charts/Treemap.d.ts +12 -0
  114. package/dist/types/shared-web-ui/src/Charts/chartData.d.ts +69 -0
  115. package/dist/types/shared-web-ui/src/Charts/chartImage.d.ts +121 -0
  116. package/dist/types/shared-web-ui/src/Charts/geometry.d.ts +178 -0
  117. package/dist/types/shared-web-ui/src/Charts/index.d.ts +32 -0
  118. package/dist/types/shared-web-ui/src/Charts/labels.d.ts +46 -0
  119. package/dist/types/shared-web-ui/src/Charts/menuPlacement.d.ts +25 -0
  120. package/dist/types/shared-web-ui/src/Charts/palette.d.ts +81 -0
  121. package/dist/types/shared-web-ui/src/Charts/parts.d.ts +24 -0
  122. package/dist/types/shared-web-ui/src/Charts/pointer.d.ts +41 -0
  123. package/dist/types/shared-web-ui/src/Charts/types.d.ts +51 -0
  124. package/dist/types/shared-web-ui/src/Charts/ui.d.ts +3 -0
  125. package/dist/types/shared-web-ui/src/Charts/useBoxSize.d.ts +6 -0
  126. package/dist/types/shared-web-ui/src/Charts/useLegendFit.d.ts +1 -0
  127. package/dist/types/shared-web-ui/src/Collapsible/CollapsibleItem.d.ts +0 -2
  128. package/dist/types/shared-web-ui/src/ColorSchemeSelect/ColorSchemeSelect.d.ts +0 -15
  129. package/dist/types/shared-web-ui/src/CommandPalette/CommandPalette.d.ts +0 -27
  130. package/dist/types/shared-web-ui/src/DataTable/DataTable.d.ts +16 -0
  131. package/dist/types/shared-web-ui/src/DataTable/DisplayPopover.d.ts +22 -0
  132. package/dist/types/shared-web-ui/src/DataTable/HeaderMenu.d.ts +31 -0
  133. package/dist/types/shared-web-ui/src/DataTable/ManageModal.d.ts +31 -0
  134. package/dist/types/shared-web-ui/src/DataTable/SingleRowView.d.ts +9 -0
  135. package/dist/types/shared-web-ui/src/DataTable/SortModal.d.ts +16 -0
  136. package/dist/types/shared-web-ui/src/DataTable/StatusRow.d.ts +49 -0
  137. package/dist/types/shared-web-ui/src/DataTable/TableColumnModal.d.ts +18 -0
  138. package/dist/types/shared-web-ui/src/DataTable/TableControls.d.ts +48 -0
  139. package/dist/types/shared-web-ui/src/DataTable/TablePagination.d.ts +38 -0
  140. package/dist/types/shared-web-ui/src/DataTable/TableScrollStrip.d.ts +2 -0
  141. package/dist/types/shared-web-ui/src/DataTable/TableToolbar.d.ts +69 -0
  142. package/dist/types/shared-web-ui/src/DataTable/TableView.d.ts +61 -0
  143. package/dist/types/shared-web-ui/src/DataTable/bulk/BulkConfirmDialog.d.ts +13 -0
  144. package/dist/types/shared-web-ui/src/DataTable/bulk/TableToast.d.ts +13 -0
  145. package/dist/types/shared-web-ui/src/DataTable/bulk/bulkActions.d.ts +23 -0
  146. package/dist/types/shared-web-ui/src/DataTable/cards/CardFieldsEditor.d.ts +16 -0
  147. package/dist/types/shared-web-ui/src/DataTable/cards/CardView.d.ts +50 -0
  148. package/dist/types/shared-web-ui/src/DataTable/cards/cardFields.d.ts +32 -0
  149. package/dist/types/shared-web-ui/src/DataTable/cards/rowParts.d.ts +38 -0
  150. package/dist/types/shared-web-ui/src/DataTable/data/useServerData.d.ts +28 -0
  151. package/dist/types/shared-web-ui/src/DataTable/defaults.d.ts +18 -0
  152. package/dist/types/shared-web-ui/src/DataTable/detail/BuiltInDetail.d.ts +10 -0
  153. package/dist/types/shared-web-ui/src/DataTable/detail/DetailHost.d.ts +13 -0
  154. package/dist/types/shared-web-ui/src/DataTable/export/ExportPopover.d.ts +18 -0
  155. package/dist/types/shared-web-ui/src/DataTable/export/ExportPreviewModal.d.ts +11 -0
  156. package/dist/types/shared-web-ui/src/DataTable/export/ExportSettingsModal.d.ts +31 -0
  157. package/dist/types/shared-web-ui/src/DataTable/export/ExportTemplateCards.d.ts +19 -0
  158. package/dist/types/shared-web-ui/src/DataTable/export/exportContext.d.ts +10 -0
  159. package/dist/types/shared-web-ui/src/DataTable/export/exportEngine.d.ts +77 -0
  160. package/dist/types/shared-web-ui/src/DataTable/export/exportRows.d.ts +10 -0
  161. package/dist/types/shared-web-ui/src/DataTable/export/templateDisplay.d.ts +7 -0
  162. package/dist/types/shared-web-ui/src/DataTable/export/templateOptions.d.ts +6 -0
  163. package/dist/types/shared-web-ui/src/DataTable/export/useTableExport.d.ts +53 -0
  164. package/dist/types/shared-web-ui/src/DataTable/filters/ColumnFilterPopover.d.ts +14 -0
  165. package/dist/types/shared-web-ui/src/DataTable/filters/FilterConditionRow.d.ts +11 -0
  166. package/dist/types/shared-web-ui/src/DataTable/filters/FilterGroup.d.ts +12 -0
  167. package/dist/types/shared-web-ui/src/DataTable/filters/FilterModal.d.ts +14 -0
  168. package/dist/types/shared-web-ui/src/DataTable/filters/FilterRow.d.ts +20 -0
  169. package/dist/types/shared-web-ui/src/DataTable/filters/columnFilterModel.d.ts +29 -0
  170. package/dist/types/shared-web-ui/src/DataTable/filters/filterEngine.d.ts +16 -0
  171. package/dist/types/shared-web-ui/src/DataTable/filters/filterRowModel.d.ts +28 -0
  172. package/dist/types/shared-web-ui/src/DataTable/filters/quickFilterMatch.d.ts +3 -0
  173. package/dist/types/shared-web-ui/src/DataTable/grouping/GroupUi.d.ts +36 -0
  174. package/dist/types/shared-web-ui/src/DataTable/grouping/groupModel.d.ts +82 -0
  175. package/dist/types/shared-web-ui/src/DataTable/grouping/useGrouping.d.ts +39 -0
  176. package/dist/types/shared-web-ui/src/DataTable/host.d.ts +14 -0
  177. package/dist/types/shared-web-ui/src/DataTable/index.d.ts +18 -0
  178. package/dist/types/shared-web-ui/src/DataTable/keyboard/ShortcutsDialog.d.ts +14 -0
  179. package/dist/types/shared-web-ui/src/DataTable/keyboard/shortcuts.d.ts +22 -0
  180. package/dist/types/shared-web-ui/src/DataTable/keyboard/useGridKeyboard.d.ts +48 -0
  181. package/dist/types/shared-web-ui/src/DataTable/labels.d.ts +618 -0
  182. package/dist/types/shared-web-ui/src/DataTable/layout/LayoutSwitcher.d.ts +9 -0
  183. package/dist/types/shared-web-ui/src/DataTable/layout/layouts.d.ts +20 -0
  184. package/dist/types/shared-web-ui/src/DataTable/layout/scrollArea.d.ts +2 -0
  185. package/dist/types/shared-web-ui/src/DataTable/layout/useFillHeight.d.ts +11 -0
  186. package/dist/types/shared-web-ui/src/DataTable/menu/RowMenu.d.ts +56 -0
  187. package/dist/types/shared-web-ui/src/DataTable/menu/buildRowMenu.d.ts +35 -0
  188. package/dist/types/shared-web-ui/src/DataTable/menu/clipboard.d.ts +4 -0
  189. package/dist/types/shared-web-ui/src/DataTable/menu/valueFilter.d.ts +15 -0
  190. package/dist/types/shared-web-ui/src/DataTable/motion/useRowMotion.d.ts +32 -0
  191. package/dist/types/shared-web-ui/src/DataTable/persistence/adapters.d.ts +6 -0
  192. package/dist/types/shared-web-ui/src/DataTable/persistence/reconcile.d.ts +64 -0
  193. package/dist/types/shared-web-ui/src/DataTable/persistence/useColumnPersistence.d.ts +51 -0
  194. package/dist/types/shared-web-ui/src/DataTable/persistence/useManagePrefs.d.ts +23 -0
  195. package/dist/types/shared-web-ui/src/DataTable/persistence/useOrphanPrefs.d.ts +3 -0
  196. package/dist/types/shared-web-ui/src/DataTable/pinning.d.ts +10 -0
  197. package/dist/types/shared-web-ui/src/DataTable/rows/RowActions.d.ts +15 -0
  198. package/dist/types/shared-web-ui/src/DataTable/rows/rowPress.d.ts +35 -0
  199. package/dist/types/shared-web-ui/src/DataTable/sharing/Sharing.d.ts +21 -0
  200. package/dist/types/shared-web-ui/src/DataTable/split/SplitView.d.ts +29 -0
  201. package/dist/types/shared-web-ui/src/DataTable/summary/ManageSummaryCards.d.ts +18 -0
  202. package/dist/types/shared-web-ui/src/DataTable/summary/SummaryChart.d.ts +11 -0
  203. package/dist/types/shared-web-ui/src/DataTable/summary/SummaryControls.d.ts +33 -0
  204. package/dist/types/shared-web-ui/src/DataTable/summary/SummaryImage.d.ts +12 -0
  205. package/dist/types/shared-web-ui/src/DataTable/summary/SummarySeeAll.d.ts +17 -0
  206. package/dist/types/shared-web-ui/src/DataTable/summary/TableSummary.d.ts +34 -0
  207. package/dist/types/shared-web-ui/src/DataTable/summary/summaryCatalogue.d.ts +64 -0
  208. package/dist/types/shared-web-ui/src/DataTable/summary/summaryChartData.d.ts +9 -0
  209. package/dist/types/shared-web-ui/src/DataTable/summary/summaryModel.d.ts +152 -0
  210. package/dist/types/shared-web-ui/src/DataTable/summary/summaryWidth.d.ts +22 -0
  211. package/dist/types/shared-web-ui/src/DataTable/summary/useTableSummary.d.ts +18 -0
  212. package/dist/types/shared-web-ui/src/DataTable/types.d.ts +1145 -0
  213. package/dist/types/shared-web-ui/src/DataTable/ui-local/AutoHeight.d.ts +9 -0
  214. package/dist/types/shared-web-ui/src/DataTable/ui-local/DateRangePicker.d.ts +16 -0
  215. package/dist/types/shared-web-ui/src/DataTable/ui-local/DragAndDropList/DragAndDropList.d.ts +4 -0
  216. package/dist/types/shared-web-ui/src/DataTable/ui-local/DragAndDropList/index.d.ts +3 -0
  217. package/dist/types/shared-web-ui/src/DataTable/ui-local/DragAndDropList/types.d.ts +70 -0
  218. package/dist/types/shared-web-ui/src/DataTable/ui-local/ReactModal.d.ts +20 -0
  219. package/dist/types/shared-web-ui/src/DataTable/ui.d.ts +13 -0
  220. package/dist/types/shared-web-ui/src/DataTable/useDataChangeTracker.d.ts +11 -0
  221. package/dist/types/shared-web-ui/src/DataTable/useTable.d.ts +12 -0
  222. package/dist/types/shared-web-ui/src/DataTable/vendor/columnOrder.d.ts +1 -0
  223. package/dist/types/shared-web-ui/src/DataTable/vendor/diff.d.ts +5 -0
  224. package/dist/types/shared-web-ui/src/DataTable/vendor/fileActions.d.ts +19 -0
  225. package/dist/types/shared-web-ui/src/DataTable/vendor/index.d.ts +3 -0
  226. package/dist/types/shared-web-ui/src/DataTable/virtual/useVirtualLines.d.ts +27 -0
  227. package/dist/types/shared-web-ui/src/DatePicker/Calendar.d.ts +14 -0
  228. package/dist/types/shared-web-ui/src/DatePicker/DatePicker.d.ts +5 -0
  229. package/dist/types/shared-web-ui/src/DatePicker/TimeField.d.ts +16 -0
  230. package/dist/types/shared-web-ui/src/DatePicker/index.d.ts +4 -0
  231. package/dist/types/shared-web-ui/src/DatePicker/useOneMonthPane.d.ts +2 -0
  232. package/dist/types/shared-web-ui/src/Dialog/Dialog.d.ts +0 -45
  233. package/dist/types/shared-web-ui/src/Dialog/DialogHost.d.ts +0 -36
  234. package/dist/types/shared-web-ui/src/DropdownMenu/DropdownMenu.d.ts +24 -24
  235. package/dist/types/shared-web-ui/src/EditableTable/EditableTable.d.ts +0 -5
  236. package/dist/types/shared-web-ui/src/EditableTable/EditableTableCell.d.ts +0 -18
  237. package/dist/types/shared-web-ui/src/EditableTable/EditableTableRow.d.ts +0 -11
  238. package/dist/types/shared-web-ui/src/EditableTable/EditableTableSummary.d.ts +0 -11
  239. package/dist/types/shared-web-ui/src/EditableTable/useRowAnimation.d.ts +0 -32
  240. package/dist/types/shared-web-ui/src/FieldContext/FieldContext.d.ts +0 -15
  241. package/dist/types/shared-web-ui/src/FieldContext/FieldProvider.d.ts +0 -9
  242. package/dist/types/shared-web-ui/src/FieldContext/useField.d.ts +0 -27
  243. package/dist/types/shared-web-ui/src/FieldContext/useFieldSurface.d.ts +0 -23
  244. package/dist/types/shared-web-ui/src/FieldContext/useFormKeyboard.d.ts +0 -3
  245. package/dist/types/shared-web-ui/src/Fields/FieldButton.d.ts +0 -15
  246. package/dist/types/shared-web-ui/src/Floating/index.d.ts +3 -0
  247. package/dist/types/shared-web-ui/src/Floating/layers.d.ts +4 -0
  248. package/dist/types/shared-web-ui/src/Floating/scrollLock.d.ts +2 -0
  249. package/dist/types/shared-web-ui/src/Floating/useFloatingLayer.d.ts +20 -0
  250. package/dist/types/shared-web-ui/src/Popover/Popover.d.ts +6 -25
  251. package/dist/types/shared-web-ui/src/Popover/floatingPosition.d.ts +17 -0
  252. package/dist/types/shared-web-ui/src/ReportDesigner/BandList.d.ts +0 -8
  253. package/dist/types/shared-web-ui/src/ReportDesigner/BlockEditor.d.ts +0 -11
  254. package/dist/types/shared-web-ui/src/ReportDesigner/ConditionEditor.d.ts +0 -2
  255. package/dist/types/shared-web-ui/src/ReportDesigner/FieldPicker.d.ts +0 -13
  256. package/dist/types/shared-web-ui/src/ReportDesigner/Inspector.d.ts +0 -7
  257. package/dist/types/shared-web-ui/src/ReportDesigner/ReportDesigner.d.ts +0 -22
  258. package/dist/types/shared-web-ui/src/ReportDesigner/TableEditor.d.ts +0 -8
  259. package/dist/types/shared-web-ui/src/ReportDesigner/chipSources.d.ts +0 -1
  260. package/dist/types/shared-web-ui/src/ReportDesigner/labels.d.ts +0 -12
  261. package/dist/types/shared-web-ui/src/ReportDesigner/parts.d.ts +0 -30
  262. package/dist/types/shared-web-ui/src/ReportDesigner/types.d.ts +0 -39
  263. package/dist/types/shared-web-ui/src/ReportPreview/ReportPreview.d.ts +0 -24
  264. package/dist/types/shared-web-ui/src/Scroll/ScrollRule.d.ts +2 -0
  265. package/dist/types/shared-web-ui/src/Scroll/ScrollStrip.d.ts +9 -0
  266. package/dist/types/shared-web-ui/src/Scroll/index.d.ts +4 -0
  267. package/dist/types/shared-web-ui/src/Scroll/labels.d.ts +5 -0
  268. package/dist/types/shared-web-ui/src/Scroll/scrollActivity.d.ts +14 -0
  269. package/dist/types/shared-web-ui/src/Scroll/ui.d.ts +1 -0
  270. package/dist/types/shared-web-ui/src/Sidebar/Sidebar.d.ts +0 -31
  271. package/dist/types/shared-web-ui/src/Skeleton/Skeleton.d.ts +0 -15
  272. package/dist/types/shared-web-ui/src/Tabs/Tabs.d.ts +0 -43
  273. package/dist/types/shared-web-ui/src/Toast/ToastHost.d.ts +0 -14
  274. package/dist/types/shared-web-ui/src/Toast/ToastItem.d.ts +0 -9
  275. package/dist/types/shared-web-ui/src/Toast/toast.types.d.ts +0 -13
  276. package/dist/types/shared-web-ui/src/Tooltip/Tooltip.d.ts +0 -16
  277. package/dist/types/shared-web-ui/src/Tooltip/useTooltip.d.ts +0 -9
  278. package/dist/types/shared-web-ui/src/UIProvider/UIPortalContext.d.ts +0 -14
  279. package/dist/types/shared-web-ui/src/UIProvider/UIProvider.d.ts +0 -41
  280. package/dist/types/shared-web-ui/src/UIProvider/UIThemeContext.d.ts +0 -8
  281. package/dist/types/shared-web-ui/src/index.d.ts +5 -0
  282. package/dist/ui-DJFwpPdX.js +4997 -0
  283. package/package.json +9 -7
@@ -1,47 +1,21 @@
1
1
  import type { CellRule, ConditionContext, EditableTableColumnDefinition } from '../../../published/dcs-ui/src/publicTypes';
2
- /**
3
- * Cell validation, decided purely.
4
- *
5
- * The table asks three questions and this answers all three without touching the DOM:
6
- * is THIS cell valid, is this ROW valid, and may a new row be created? Keeping it here is
7
- * what lets the same rules run in a test, in the API, or in a future mobile port — and it
8
- * is the reason a rule is `Condition`-shaped rather than a bespoke callback: a consumer
9
- * who already writes `disabled: { key: 'x', equals: 1 }` writes a rule the same way.
10
- */
11
2
  export interface ResolvedRule {
12
3
  valid: boolean;
13
- /** The first failing rule's message. */
14
4
  message?: string;
15
5
  severity: 'block' | 'warn';
16
6
  }
17
- /**
18
- * A cell's rules, in order; the first failure wins.
19
- *
20
- * `when` decides whether a rule APPLIES before `valid` decides whether it PASSES — that
21
- * split is what makes "min qty, but only when the item is stocked" expressible without a
22
- * second rule list.
23
- */
24
7
  export declare function resolveCellRules<T>(rules: Array<CellRule<T>> | undefined, rowData: T, defaultData: T, context?: ConditionContext): ResolvedRule;
25
- /** One column's rules, resolved for one row. */
26
8
  export declare function resolveColumnRules<T>(column: EditableTableColumnDefinition<T> | undefined, rowData: T, defaultData: T, rowIndex: number, cellindex: number, tableDataKey?: string): ResolvedRule;
27
9
  export interface RowRuleFailure {
28
10
  cellindex: number;
29
11
  message: string;
30
12
  severity: 'block' | 'warn';
31
13
  }
32
- /** Every failing cell in a row, so a caller can report or jump to the first one. */
33
14
  export declare function resolveRowRules<T>(columns: Array<EditableTableColumnDefinition<T>>, rowData: T, defaultData: T, rowIndex: number, tableDataKey?: string): {
34
15
  valid: boolean;
35
16
  blocked: boolean;
36
17
  failures: RowRuleFailure[];
37
18
  };
38
- /**
39
- * Is this row still empty?
40
- *
41
- * Compared against `defaultData`, not against "falsy": a Qty that defaults to 0 and a
42
- * checkbox that defaults to false are BLANK, while a 0 typed into a field whose default is
43
- * `''` is not. The row's own key is ignored — it is generated, never typed.
44
- */
45
19
  export declare function isRowBlank<T extends Record<string, any>>(row: T | undefined, defaultData: T, rowKey?: string): boolean;
46
20
  export interface CreateRowPolicy {
47
21
  fixedRows?: boolean;
@@ -50,18 +24,9 @@ export interface CreateRowPolicy {
50
24
  }
51
25
  export interface CreateRowDecision {
52
26
  allowed: boolean;
53
- /** Why not — for a message, and for tests that assert the REASON, not just the refusal. */
54
27
  reason?: 'fixedRows' | 'blankRow' | 'invalidRow' | 'consumer';
55
- /** The row a blocked caller should go to instead: the blank one, or the invalid one. */
56
28
  focusRowIndex?: number;
57
29
  }
58
- /**
59
- * May a row be created right now?
60
- *
61
- * The default answers "not while a blank row is waiting" — holding Enter at the end of a
62
- * table used to append one empty row per press. Each half is a prop, because a table that
63
- * is a scratchpad may genuinely want the blanks.
64
- */
65
30
  export declare function canCreateRow<T extends Record<string, any>>(rows: T[], defaultData: T, policy: CreateRowPolicy, rowRules?: (rowIndex: number) => {
66
31
  blocked: boolean;
67
32
  }, rowKey?: string): CreateRowDecision;
@@ -1,18 +1,6 @@
1
- /**
2
- * ChipInput Logic — Pure functions for format string manipulation and suggestion filtering.
3
- * No React, no DOM.
4
- */
5
1
  import type { ChipTokenSyntax, ChipSources, ChipSuggestionItem, GroupedSuggestions, ParsedSegment, ResolveOptions, ExtractedPlaceholder, FormatValidationResult } from '../../../published/dcs-ui/src/publicTypes';
6
- /** The text of one token in the given syntax. */
7
2
  export declare function formatChipToken(source: string, key: string, syntax?: ChipTokenSyntax): string;
8
- /** The character that starts a token, and so opens the suggestions while typing. */
9
3
  export declare function chipTokenOpener(syntax?: ChipTokenSyntax): string;
10
- /**
11
- * Whether the text typed since the last opener is still an unfinished token.
12
- *
13
- * Percent also stops at whitespace: `%` doubles as ordinary punctuation ("5% off"), and a
14
- * suggestion list that opened on every percent sign would follow the author around.
15
- */
16
4
  export declare function isOpenChipToken(afterOpener: string, syntax?: ChipTokenSyntax): boolean;
17
5
  export declare function parseFormat(format: string, syntax?: ChipTokenSyntax): ParsedSegment[];
18
6
  export declare function resolveFormat(format: string, data: Record<string, Record<string, any>>, options?: ResolveOptions): string;
@@ -24,12 +24,5 @@ interface CollapsibleHeaderOpts {
24
24
  isDisabled: boolean;
25
25
  }
26
26
  export declare function buildCollapsibleHeaderClassKeys(opts: CollapsibleHeaderOpts): string[];
27
- /**
28
- * Given the triggers in one accordion and the one holding focus, returns the
29
- * index to move to. ArrowDown/Up wrap; Home/End jump to the ends. Returns null
30
- * for any other key, so the caller leaves the event alone.
31
- *
32
- * Pure index maths — the DOM query and the .focus() call stay in the component.
33
- */
34
27
  export declare function resolveCollapsibleFocusIndex(key: string, currentIndex: number, total: number): number | null;
35
28
  export {};
@@ -1,29 +1,15 @@
1
1
  export type ColorSchemeMode = 'light' | 'dark';
2
2
  export type ColorSchemeRole = 'title' | 'bg' | 'onBg';
3
3
  export interface ColorScheme {
4
- /** the stored value */
5
4
  id: string;
6
- /** shown in the picker */
7
5
  name: string;
8
- /** hue, 0-359 */
9
6
  h: number;
10
- /** saturation % in light mode */
11
7
  s: number;
12
- /** saturation % in dark mode — tuned per hue, not a constant (see BUSINESS_COLOR_SCHEMES) */
13
8
  sd: number;
14
9
  }
15
10
  export type ColorSchemeTokens = Record<ColorSchemeRole, string>;
16
- /** Lightness per role per mode. The only numbers in the system. */
17
11
  export declare const COLOR_SCHEME_LIGHTNESS: Record<ColorSchemeMode, Record<ColorSchemeRole, number>>;
18
- /** One role, as an `hsl()` string. */
19
12
  export declare const schemeColor: (scheme: ColorScheme, role: ColorSchemeRole, mode?: ColorSchemeMode) => string;
20
- /** All three roles for one mode. Use for PDFs and anywhere CSS variables aren't available. */
21
13
  export declare const schemeTokens: (scheme: ColorScheme, mode?: ColorSchemeMode) => ColorSchemeTokens;
22
- /**
23
- * The custom properties to put on a wrapper element. Only hue and the two saturations —
24
- * the stylesheet owns the lightness per mode, so the theme switch stays in CSS where it
25
- * belongs rather than being recomputed in JS on every theme change.
26
- */
27
14
  export declare const schemeVars: (scheme: ColorScheme | null | undefined) => Record<string, string>;
28
- /** Look one up by stored id. Returns null for '' / unknown, which means "no scheme set". */
29
15
  export declare const findColorScheme: (schemes: ColorScheme[], id: string | null | undefined) => ColorScheme | null;
@@ -1,12 +1 @@
1
- /**
2
- * Merges a user's saved column order with the current config order.
3
- *
4
- * A column added to a report after the user saved their order is not in `saved`. It must
5
- * land where the config puts it — right after its nearest preceding config neighbour that
6
- * the user still has — not at the far right. Appending was the old behaviour, and it left
7
- * every new column stranded at the end until the user reordered or reset.
8
- *
9
- * Saved keys are kept in the user's order, including keys the config no longer has (the
10
- * table ignores them; dropping them here would silently rewrite the user's saved state).
11
- */
12
1
  export declare function mergeColumnOrder(saved: readonly string[], config: readonly string[]): string[];
@@ -0,0 +1,136 @@
1
+ import type { DateDisplayFormat, DateTextOrder } from '../../../published/dcs-ui/src/publicTypes';
2
+ export type IsoDay = string;
3
+ export type DateValue = string;
4
+ export interface DateParts {
5
+ y: number;
6
+ m: number;
7
+ d: number;
8
+ }
9
+ export declare const MIN_DATE_YEAR = 1900;
10
+ export declare const daysInMonth: (y: number, m: number) => number;
11
+ export declare function isRealDay({ y, m, d }: DateParts): boolean;
12
+ export declare const toIsoDay: ({ y, m, d }: DateParts) => IsoDay;
13
+ export declare function parseIsoDay(value: unknown): DateParts | null;
14
+ export declare const isIsoDay: (value: unknown) => boolean;
15
+ export declare const todayIso: (now?: Date) => IsoDay;
16
+ export declare const compareDays: (a: IsoDay, b: IsoDay) => number;
17
+ export declare const isSameDay: (a: unknown, b: unknown) => boolean;
18
+ export declare function shiftDays(day: IsoDay, n: number): IsoDay;
19
+ export declare function shiftMonths(day: IsoDay, n: number): IsoDay;
20
+ export declare const shiftYears: (day: IsoDay, n: number) => IsoDay;
21
+ export declare function startOfMonth(day: IsoDay): IsoDay;
22
+ export declare function endOfMonth(day: IsoDay): IsoDay;
23
+ export declare function weekdayOf(day: IsoDay): number;
24
+ export declare const isDayInRange: (day: IsoDay, min?: string, max?: string) => boolean;
25
+ export declare function clampDay(day: IsoDay, min?: string, max?: string): IsoDay;
26
+ export declare function normalizeTime(value: unknown): string;
27
+ export declare function splitDateValue(value: unknown): {
28
+ day: IsoDay;
29
+ time: string;
30
+ };
31
+ export declare function joinDateValue(day: IsoDay, time?: string): DateValue;
32
+ export declare function parseDateText(text: unknown, opts?: {
33
+ within?: IsoDay;
34
+ today?: IsoDay;
35
+ order?: DateTextOrder;
36
+ }): IsoDay | null;
37
+ export declare const RANGE_ADVANCE_KEY = "+";
38
+ export interface TypedDateRange {
39
+ from: IsoDay;
40
+ to: IsoDay;
41
+ }
42
+ export declare function parseDateRangeText(text: unknown, opts?: {
43
+ within?: IsoDay;
44
+ today?: IsoDay;
45
+ order?: DateTextOrder;
46
+ }): TypedDateRange | null;
47
+ export declare function formatDayText(day: unknown, format?: DateDisplayFormat): string;
48
+ export declare const datePlaceholder: (format?: DateDisplayFormat, withTime?: boolean) => string;
49
+ export declare function formatDateValueText(value: unknown, format?: DateDisplayFormat, withTime?: boolean): string;
50
+ export declare function parseDateValueText(text: unknown, opts?: {
51
+ within?: IsoDay;
52
+ today?: IsoDay;
53
+ order?: DateTextOrder;
54
+ withTime?: boolean;
55
+ }): {
56
+ day: IsoDay;
57
+ time: string;
58
+ } | null;
59
+ export interface CalendarDay {
60
+ day: IsoDay;
61
+ date: number;
62
+ inMonth: boolean;
63
+ isToday: boolean;
64
+ isSelected: boolean;
65
+ isHighlighted: boolean;
66
+ inRange: boolean;
67
+ isRangeStart: boolean;
68
+ isRangeEnd: boolean;
69
+ disabled: boolean;
70
+ }
71
+ export interface CalendarView {
72
+ month: IsoDay;
73
+ year: number;
74
+ monthIndex: number;
75
+ weeks: CalendarDay[][];
76
+ weekdays: number[];
77
+ canPagePrev: boolean;
78
+ canPageNext: boolean;
79
+ }
80
+ export interface CalendarOptions {
81
+ month: IsoDay;
82
+ today?: IsoDay;
83
+ selected?: string | null;
84
+ highlighted?: string | null;
85
+ rangeFrom?: string | null;
86
+ rangeTo?: string | null;
87
+ min?: string;
88
+ max?: string;
89
+ weekStart?: number;
90
+ fixedWeeks?: boolean;
91
+ }
92
+ export declare function buildCalendar(opts: CalendarOptions): CalendarView;
93
+ export type DateHighlightAction = 'highlightLeft' | 'highlightRight' | 'highlightPrev' | 'highlightNext' | 'highlightFirst' | 'highlightLast' | 'highlightPrevPage' | 'highlightNextPage';
94
+ export declare const DATE_HIGHLIGHT_ACTIONS: readonly DateHighlightAction[];
95
+ export declare function moveHighlight(from: IsoDay, action: DateHighlightAction, opts?: {
96
+ min?: string;
97
+ max?: string;
98
+ }): IsoDay;
99
+ export declare function openingHighlight(value?: string | null, opts?: {
100
+ today?: IsoDay;
101
+ min?: string;
102
+ max?: string;
103
+ }): IsoDay;
104
+ export interface DatePreset {
105
+ key: string;
106
+ label: string;
107
+ single?: boolean;
108
+ from: IsoDay;
109
+ to: IsoDay;
110
+ }
111
+ export interface DatePresetOptions {
112
+ today?: IsoDay;
113
+ fyStartMonth?: number;
114
+ weekStart?: number;
115
+ only?: string[];
116
+ }
117
+ export declare function financialYearOf(day: IsoDay, fyStartMonth?: number): {
118
+ from: IsoDay;
119
+ to: IsoDay;
120
+ };
121
+ export declare function startOfWeek(day: IsoDay, weekStart?: number): IsoDay;
122
+ export declare function quarterOf(day: IsoDay, fyStartMonth?: number): {
123
+ from: IsoDay;
124
+ to: IsoDay;
125
+ };
126
+ export declare function buildDatePresets(opts?: DatePresetOptions): DatePreset[];
127
+ export declare function matchDatePresets(presets: DatePreset[], query: unknown): DatePreset[];
128
+ export interface DayRange {
129
+ from: IsoDay;
130
+ to: IsoDay;
131
+ }
132
+ export declare function viewForRange(from: IsoDay, to: IsoDay, opts?: {
133
+ months?: number;
134
+ currentMonthSide?: 'left' | 'right';
135
+ }): IsoDay;
136
+ export declare function extendDateRange(range: Partial<DayRange> | null | undefined, day: IsoDay): DayRange;
@@ -1,43 +1,16 @@
1
- /**
2
- * EditableTable Logic — Pure functions for editable table state management.
3
- * No React, no DOM.
4
- */
5
1
  import type { EditableTableColumnDefinition } from '../../../published/dcs-ui/src/publicTypes';
6
- /**
7
- * Get table rows from state, handling nested paths via tableDataKey.
8
- */
9
2
  export declare function getEditableTableRows<T>(state: any, tableDataKey?: string): T[];
10
- /**
11
- * Wrap updated rows back into the parent state shape.
12
- */
13
3
  export declare function updateEditableTableRows<T>(state: any, updatedRows: T[], tableDataKey?: string): any;
14
- /**
15
- * Create a new row from defaultData template.
16
- * Uses tableDataKey to extract the row template from nested defaults.
17
- */
18
4
  export declare function createNewRow<T>(defaultData: T, rowKey: string, generateId: () => string, tableDataKey?: string): T;
19
- /**
20
- * Create a copied row from a source row, optionally limiting to specific keys.
21
- */
22
5
  export declare function createCopiedRow<T>(sourceRow: T, newRowTemplate: T, copyKeys: string[], rowKey: string, generateId: () => string): T;
23
- /**
24
- * Check if a cell is disabled based on column definition and row data.
25
- */
26
6
  export declare function isCellDisabled<T>(rowIndex: number, cellindex: number, tableRows: T[], columns: EditableTableColumnDefinition<T>[], defaultData: T, tableDataKey?: string, getRowField?: (context: {
27
7
  rowIndex: number;
28
8
  tableDataKey?: string;
29
9
  }) => EditableTableColumnDefinition<T>[]): boolean;
30
- /**
31
- * Pure grid navigation: find next focusable cell in a direction.
32
- * Returns target coordinates and whether a new row can be created.
33
- */
34
10
  export declare function findNextFocusableCell<T>(currentRowIndex: number, currentCellIndex: number, direction: 'forward' | 'backward', totalRows: number, totalColumns: number, fixedRows: boolean, checkDisabled: (rowIndex: number, cellindex: number) => boolean): {
35
11
  rowIndex: number;
36
12
  cellindex: number;
37
13
  found: boolean;
38
14
  canCreateNew?: boolean;
39
15
  };
40
- /**
41
- * Generate a random ID string.
42
- */
43
16
  export declare function generateEditableTableId(length?: number): string;
@@ -1,24 +1,12 @@
1
+ import type { ControlSize } from '../../../published/dcs-ui/src/publicTypes';
1
2
  export interface FieldControlClassOptions {
2
- /** FieldSize: 'xxs' | 'xs' | 'small' | 'medium' | 'large' | 'xl' */
3
3
  size?: string;
4
- /** FieldVariant: 'outlined' | 'filled' | 'standard' | 'underlined' */
5
4
  variant?: string;
6
5
  error?: boolean;
7
6
  disabled?: boolean;
8
7
  readOnly?: boolean;
9
- /** Reserve trailing space for in-field affixes (select arrow, clear button, …). */
10
8
  hasAffix?: boolean;
11
- /**
12
- * A joined popup is open beneath this control, so its bottom corners must square to meet
13
- * the list. Ignored for variants with no box — those get a floating panel instead.
14
- */
15
9
  popupOpen?: boolean;
16
10
  }
17
- /**
18
- * Class keys for the shared control surface used by Input, Select and Suggest.
19
- *
20
- * All three map these keys against the SAME CSS module
21
- * (shared-web-ui/src/styles/fieldControl.module.css), so a given size/variant
22
- * resolves to one identical set of rules regardless of which control renders it.
23
- */
24
11
  export declare const buildFieldControlClassKeys: ({ size, variant, error, disabled, readOnly, hasAffix, popupOpen, }: FieldControlClassOptions) => string[];
12
+ export declare function smallerSize(size: ControlSize): ControlSize;
@@ -1,7 +1,3 @@
1
- /**
2
- * Form Logic — Pure functions for form state management
3
- * No React, no DOM.
4
- */
5
1
  export interface FormClassKeyOptions {
6
2
  variant: string;
7
3
  size: string;
@@ -10,8 +6,4 @@ export interface FormClassKeyOptions {
10
6
  loading?: boolean;
11
7
  }
12
8
  export declare function buildFormClassKeys(opts: FormClassKeyOptions): string[];
13
- /**
14
- * Evaluate a boolean-or-function condition against data.
15
- * Used for section/action visible, disabled, loading props.
16
- */
17
9
  export declare function evaluateFormCondition<T>(condition: boolean | ((data: T) => boolean) | undefined, data: T, defaultValue: boolean): boolean;
@@ -1,32 +1,3 @@
1
- /**
2
- * The UI half of `shared-logic`, on its own.
3
- *
4
- * WHY THIS FILE EXISTS — it is a privacy boundary, not a convenience.
5
- *
6
- * The package barrel (`shared-logic/src/index.ts`) re-exports this folder AND every domain
7
- * folder beside it. Anything that imports the barrel therefore pulls the whole package into
8
- * its TypeScript program — and `tsc` emits declarations for a whole program, not for the
9
- * subset a barrel happens to re-export.
10
- *
11
- * That is how `@dcs-tech/ui@0.1.0` shipped this business's domain type surface to the public
12
- * npm registry (audited 2026-09-28): the JS bundle was clean, because a bundler tree-shakes,
13
- * but the emitted `dist/types/` carried the domain declarations — signatures, field names and
14
- * doc comments. The `export *` gate in `dcs-ui/src/index.ts` guards the JS surface only; it
15
- * never governed the declaration emit.
16
- *
17
- * (This comment names no domain folder on purpose: it ships, as the leak it describes proves.)
18
- *
19
- * So the published build maps `@pdfinvoice/shared-logic` to this file instead, and the domain
20
- * never enters the program. Keep it that way:
21
- *
22
- * - ONLY `./ui/*` modules belong here. Never add a domain module, however small, and never
23
- * re-export the parent barrel.
24
- * - A UI module that starts importing domain code re-opens the hole silently — the guard in
25
- * `dcs-ui` (`npm run verify:no-leak`) is what catches it.
26
- *
27
- * It is also the import the API should use. `apps/api` must never touch the package barrel:
28
- * that pulls React in through `useMergeRefs` and kills every Cloud Run function at startup.
29
- */
30
1
  export * from './button.logic';
31
2
  export * from './cellRules.logic';
32
3
  export * from './checkbox.logic';
@@ -34,6 +5,8 @@ export * from './chipinput.logic';
34
5
  export * from './collapsible.logic';
35
6
  export * from './colorScheme';
36
7
  export * from './columnOrder.logic';
8
+ export * from './datePicker.logic';
9
+ export * from './timeField.logic';
37
10
  export * from './editableTable.logic';
38
11
  export * from './fieldControl.logic';
39
12
  export * from './fieldWrapper.logic';
@@ -44,6 +17,7 @@ export * from './keyboard.logic';
44
17
  export * from './navigation.logic';
45
18
  export * from './popover.logic';
46
19
  export * from './popupList.logic';
20
+ export * from './quickAddGrid.logic';
47
21
  export * from './radio.logic';
48
22
  export * from './select.logic';
49
23
  export * from './suggest.logic';
@@ -1,72 +1,12 @@
1
1
  import type { FieldKeyboardConfig, KeyEventLike, KeyResolution, KeyResolutionContext, NavAction } from '../../../published/dcs-ui/src/publicTypes';
2
- /**
3
- * The one place that decides who owns a key.
4
- *
5
- * Pure, and deliberately free of React and the DOM: it takes a `KeyEventLike`
6
- * (which a `React.KeyboardEvent` satisfies structurally) and returns a verdict.
7
- * That is what lets the whole truth table run under plain `node`, and what keeps
8
- * it mechanically portable to the mobile core package if mobile ever grows a grid.
9
- *
10
- * ── The two laws ────────────────────────────────────────────────────────────
11
- *
12
- * **L1** — in `navigate` mode the container owns every arrow, Enter, Tab,
13
- * Home/End and PageUp/Down.
14
- *
15
- * **L2** — an open popup owns ↑ ↓ Enter Escape for as long as it is open,
16
- * whichever widget opened it and whatever mode the cell is in.
17
- *
18
- * Everything below is a consequence of those two. L2 is checked before L1
19
- * because it is the narrower claim: a Select with its list down is not "a cell
20
- * being navigated", it is a list being navigated, and the grid must not see
21
- * those keys at all.
22
- */
23
- /**
24
- * Canonical form: modifiers alphabetically, then the key, all lower-case —
25
- * `alt+ctrl+shift+enter`. Sorting is what makes `'ctrl+shift+enter'` and
26
- * `'shift+ctrl+enter'` the same binding, so a consumer cannot write an override
27
- * that silently never matches because they ordered the modifiers differently.
28
- */
29
2
  export declare function parseBinding(binding: string): string;
30
- /** The canonical binding string an event represents. */
31
3
  export declare function eventBinding(event: KeyEventLike): string;
32
4
  export declare function matchBinding(event: KeyEventLike, binding: string): boolean;
33
- /**
34
- * The container bindings a grid starts with.
35
- *
36
- * The `ctrl+arrow*` and `alt+arrow*` entries are **aliases kept on purpose**.
37
- * They are what the current editable table binds, because Input owned no keys
38
- * and plain arrows never reached the grid. Keeping them means existing screens
39
- * and existing muscle memory survive the switch to plain arrows instead of
40
- * breaking on the day the new grid lands.
41
- */
42
5
  export declare const DEFAULT_GRID_BINDINGS: Record<string, NavAction>;
43
- /** A form is a one-column grid: no rows to add, and Ctrl+Enter submits. */
44
6
  export declare const DEFAULT_FORM_BINDINGS: Record<string, NavAction>;
45
7
  export declare const DEFAULT_KEYBOARD_CONFIG: Required<Pick<FieldKeyboardConfig, 'mode' | 'enter' | 'arrows' | 'arrowsInEdit' | 'typeBehaviour' | 'editKey' | 'openOn' | 'advanceOnSelect' | 'stepKeys'>>;
46
- /** What a cell wants when nothing overrides it: grid mode, Enter moves on, type to open. */
47
8
  export declare const GRID_CELL_KEYBOARD_DEFAULTS: FieldKeyboardConfig;
48
- /**
49
- * A key that produces a character. `metaKey`/`ctrlKey` exclude shortcuts;
50
- * `altKey` is *not* excluded because AltGr (which reports `ctrlKey && altKey`)
51
- * is how a great many non-US layouts type ordinary characters.
52
- */
53
9
  export declare function isPrintableKey(event: KeyEventLike): boolean;
54
10
  export declare function resolveFieldKey(event: KeyEventLike, ctx: KeyResolutionContext): KeyResolution;
55
- /**
56
- * The next index in a linear list, skipping the ones a predicate rejects.
57
- *
58
- * A form is a one-column grid, so this is the one-dimensional sibling of
59
- * `findNextFocusableCell`. Kept pure and separate from any DOM query: what
60
- * counts as "focusable" is the caller's business, and this way the traversal is
61
- * testable without a browser.
62
- *
63
- * @returns the next usable index, or `-1` when the list runs out.
64
- */
65
11
  export declare function nextFocusableIndex(count: number, current: number, direction: 'forward' | 'backward', isDisabled?: (index: number) => boolean, wrap?: boolean): number;
66
- /**
67
- * Resolves the config a field actually runs on: own prop → container → default.
68
- *
69
- * The same order `useFieldSurface` uses for `size`, and for the same reason — a
70
- * field must be able to tell "nobody said" from "someone said grid mode".
71
- */
72
12
  export declare function resolveKeyboardConfig(own: FieldKeyboardConfig | undefined, inherited: FieldKeyboardConfig | undefined): FieldKeyboardConfig;
@@ -1,30 +1,6 @@
1
1
  import type { NavItem } from '../../../published/dcs-ui/src/publicTypes';
2
- /**
3
- * Path from the root to the item with `id`, inclusive. `[]` when not found.
4
- *
5
- * This one function serves both surfaces, which is the point of a single `NavItem` shape:
6
- * a **Sidebar highlights** the trail (every ancestor of the active row reads as active), and
7
- * **Breadcrumbs render** it. Computing "where am I" twice, in two components, is how the two
8
- * end up disagreeing about it.
9
- */
10
2
  export declare function findNavTrail(items: NavItem[], id: string | null | undefined): NavItem[];
11
- /** Depth-first list of every item, groups included. */
12
3
  export declare function flattenNav(items: NavItem[]): NavItem[];
13
- /**
14
- * Drop items a predicate rejects, pruning branches bottom-up.
15
- *
16
- * A parent whose children are ALL removed is removed too — unless it is reachable in its own
17
- * right (it has an `href` or is a `group`). Otherwise a permission filter leaves behind
18
- * headings that expand to nothing.
19
- */
20
4
  export declare function filterNav(items: NavItem[], keep: (item: NavItem) => boolean): NavItem[];
21
- /** The ids on the trail to `activeId`, for "is this row on the active path" checks. */
22
5
  export declare function navTrailIds(items: NavItem[], activeId: string | null | undefined): Set<string>;
23
- /**
24
- * The item whose `href` best matches a pathname — longest match wins, so
25
- * `/reports/monthly/sales` prefers that over `/reports`.
26
- *
27
- * For apps that track location rather than an id. Returns null when nothing matches; callers
28
- * that know their active id should pass it directly instead.
29
- */
30
6
  export declare function findNavItemByPath(items: NavItem[], pathname: string): NavItem | null;
@@ -1,6 +1,5 @@
1
1
  export type PopoverSide = 'top' | 'bottom' | 'left' | 'right';
2
2
  export type PopoverAlign = 'start' | 'center' | 'end';
3
- /** `side` plus optional alignment, e.g. `bottom-start`. Bare `bottom` means `bottom-center`. */
4
3
  export type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
5
4
  export interface PopoverRect {
6
5
  top: number;
@@ -9,9 +8,7 @@ export interface PopoverRect {
9
8
  height: number;
10
9
  }
11
10
  export interface ComputePopoverPositionInput {
12
- /** Trigger box in VIEWPORT coordinates — i.e. straight from getBoundingClientRect(). */
13
11
  anchor: PopoverRect;
14
- /** Measured content box. Pass zeroes on the first pass; re-run once it is measured. */
15
12
  content: {
16
13
  width: number;
17
14
  height: number;
@@ -20,38 +17,43 @@ export interface ComputePopoverPositionInput {
20
17
  width: number;
21
18
  height: number;
22
19
  };
23
- /** Page scroll, added to the result so the caller can position in DOCUMENT coordinates. */
24
- scroll: {
20
+ scroll?: {
21
+ x: number;
22
+ y: number;
23
+ };
24
+ origin?: {
25
25
  x: number;
26
26
  y: number;
27
27
  };
28
28
  placement?: PopoverPlacement;
29
- /** Gap between anchor and content, px. Default 4. */
30
29
  offset?: number;
31
- /** Force the content to the anchor's width (what a Select dropdown wants). */
32
30
  matchAnchorWidth?: boolean;
33
- /** Flip to the opposite side when the preferred one doesn't fit. Default true. */
34
31
  flip?: boolean;
35
- /** Slide along the cross axis to stay on screen. Default true. */
36
32
  shift?: boolean;
37
- /** Minimum gap from the viewport edge, px. Default 8. */
38
33
  padding?: number;
39
34
  }
40
35
  export interface PopoverPosition {
41
- /** DOCUMENT coordinates — scroll already added. */
42
36
  top: number;
43
37
  left: number;
44
- /** Only set when `matchAnchorWidth`. */
45
38
  width?: number;
46
- /** Where it actually ended up, which may differ from the request after a flip. */
47
39
  placement: PopoverPlacement;
48
- /** True when `flip` changed the side. Useful for pointing an arrow the right way. */
49
40
  flipped: boolean;
50
41
  }
51
- /**
52
- * Where to put a floating box relative to its anchor.
53
- *
54
- * Returns DOCUMENT coordinates (viewport rect + scroll), because a portalled layer is
55
- * positioned absolutely against the page, not the viewport.
56
- */
57
42
  export declare function computePopoverPosition(input: ComputePopoverPositionInput): PopoverPosition;
43
+ export interface FloatingFrameMeasure {
44
+ rect: {
45
+ top: number;
46
+ left: number;
47
+ };
48
+ clientTop: number;
49
+ clientLeft: number;
50
+ scrollTop: number;
51
+ scrollLeft: number;
52
+ }
53
+ export declare function floatingOrigin(frame: FloatingFrameMeasure | null, pageScroll: {
54
+ x: number;
55
+ y: number;
56
+ }): {
57
+ x: number;
58
+ y: number;
59
+ };
@@ -1,54 +1,19 @@
1
1
  import type { FieldSize, FieldVariant, SelectOption, GroupConfig } from '../../../published/dcs-ui/src/publicTypes';
2
- /**
3
- * Class keys for the shared option-list surface (styles/popupList.module.css),
4
- * used by both Select's dropdown and Suggest's suggestion list.
5
- */
6
2
  export interface PopupListClassOptions {
7
3
  size: FieldSize;
8
4
  variant: FieldVariant;
9
5
  }
10
- /**
11
- * The popup takes its shape from the field it hangs off:
12
- *
13
- * - `outlined` / `filled` have a box, so the list **joins** it — no top border,
14
- * square top corners, flush against the field's lower edge.
15
- * - `standard` / `underlined` have only a rule under the text, so a box glued to
16
- * that edge reads as a mistake. Those get a **floating** panel instead: closed
17
- * border, all corners rounded, sitting just below the underline.
18
- */
19
- /**
20
- * Does this variant's field have a box the popup can continue?
21
- *
22
- * Exported because BOTH sides of the joint need the same answer: the list squares its top
23
- * (here) and the control squares its bottom (buildFieldControlClassKeys). Deciding it twice is
24
- * how you get a rounded control meeting a square list.
25
- */
26
6
  export declare const isJoinedPopupVariant: (variant: string | undefined) => boolean;
27
7
  export declare function buildPopupListClassKeys(opts: PopupListClassOptions): string[];
28
8
  export interface PopupRowClassOptions {
29
- /** The keyboard/hover cursor is on this row. Neutral fill. */
30
9
  isCursor?: boolean;
31
- /** This row is the current value. Accent tint + tick. */
32
10
  isSelected?: boolean;
33
11
  isDisabled?: boolean;
34
- /** Multi-select rows carry a checkbox, so the tick is suppressed. */
35
12
  isMulti?: boolean;
36
13
  }
37
14
  export declare function buildPopupRowClassKeys(opts: PopupRowClassOptions): string[];
38
- /** One rendered group: its heading and the options under it. */
39
15
  export interface OptionGroup {
40
16
  name: string;
41
17
  options: SelectOption[];
42
18
  }
43
- /**
44
- * Splits options into ordered groups for a grouped list.
45
- *
46
- * Order: `groupOrder` if given (array = explicit order, function = comparator),
47
- * otherwise first-appearance order, which keeps a hand-written options array
48
- * rendering in the order it was written. Options with no group are emitted first
49
- * under an empty name so the caller can render them without a heading.
50
- *
51
- * Returns a single unnamed group when grouping is off, so callers have one shape
52
- * to render either way.
53
- */
54
19
  export declare function groupSelectOptions(options: SelectOption[], config?: GroupConfig): OptionGroup[];