@sincpro/web-ui 0.0.0-stage → 0.2.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 (376) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -2
  3. package/dist/components/activity/Activity.d.ts +69 -0
  4. package/dist/components/activity/Activity.js +279 -0
  5. package/dist/components/activity/Messages.d.ts +66 -0
  6. package/dist/components/activity/Messages.js +46 -0
  7. package/dist/components/activity/Timeline.d.ts +21 -0
  8. package/dist/components/activity/Timeline.js +30 -0
  9. package/dist/components/activity/index.d.ts +3 -0
  10. package/dist/components/activity/index.js +4 -0
  11. package/dist/components/assist/AssistMark.d.ts +64 -0
  12. package/dist/components/assist/AssistMark.js +108 -0
  13. package/dist/components/assist/AssistPending.d.ts +24 -0
  14. package/dist/components/assist/AssistPending.js +26 -0
  15. package/dist/components/assist/AssistSuggestion.d.ts +42 -0
  16. package/dist/components/assist/AssistSuggestion.js +55 -0
  17. package/dist/components/assist/ChangeReview.d.ts +56 -0
  18. package/dist/components/assist/ChangeReview.js +121 -0
  19. package/dist/components/assist/assist.d.ts +77 -0
  20. package/dist/components/assist/assist.js +87 -0
  21. package/dist/components/assist/index.d.ts +5 -0
  22. package/dist/components/assist/index.js +7 -0
  23. package/dist/components/form/Form.d.ts +52 -0
  24. package/dist/components/form/Form.js +49 -0
  25. package/dist/components/form/Sheet.d.ts +47 -0
  26. package/dist/components/form/Sheet.js +90 -0
  27. package/dist/components/form/index.d.ts +2 -0
  28. package/dist/components/form/index.js +4 -0
  29. package/dist/components/frame/Chart.d.ts +13 -0
  30. package/dist/components/frame/Chart.js +24 -0
  31. package/dist/components/frame/FrameView.d.ts +33 -0
  32. package/dist/components/frame/FrameView.js +125 -0
  33. package/dist/components/frame/index.d.ts +3 -0
  34. package/dist/components/frame/index.js +3 -0
  35. package/dist/components/frame/model.d.ts +43 -0
  36. package/dist/components/frame/model.js +101 -0
  37. package/dist/components/index.d.ts +10 -0
  38. package/dist/components/index.js +11 -0
  39. package/dist/components/lines/LineItems.d.ts +111 -0
  40. package/dist/components/lines/LineItems.js +317 -0
  41. package/dist/components/lines/index.d.ts +1 -0
  42. package/dist/components/lines/index.js +2 -0
  43. package/dist/components/lines/lines.d.ts +23 -0
  44. package/dist/components/lines/lines.js +26 -0
  45. package/dist/components/listing/ColumnsMenu.d.ts +20 -0
  46. package/dist/components/listing/ColumnsMenu.js +46 -0
  47. package/dist/components/listing/GroupingLevels.d.ts +35 -0
  48. package/dist/components/listing/GroupingLevels.js +45 -0
  49. package/dist/components/listing/Listing.d.ts +27 -0
  50. package/dist/components/listing/Listing.js +86 -0
  51. package/dist/components/listing/ListingBar.d.ts +112 -0
  52. package/dist/components/listing/ListingBar.js +144 -0
  53. package/dist/components/listing/Pagination.d.ts +36 -0
  54. package/dist/components/listing/Pagination.js +69 -0
  55. package/dist/components/listing/RecordCard.d.ts +33 -0
  56. package/dist/components/listing/RecordCard.js +22 -0
  57. package/dist/components/listing/RecordLink.d.ts +7 -0
  58. package/dist/components/listing/RecordLink.js +22 -0
  59. package/dist/components/listing/Row.d.ts +110 -0
  60. package/dist/components/listing/Row.js +123 -0
  61. package/dist/components/listing/SortMenu.d.ts +62 -0
  62. package/dist/components/listing/SortMenu.js +105 -0
  63. package/dist/components/listing/ViewSwitcher.d.ts +24 -0
  64. package/dist/components/listing/ViewSwitcher.js +16 -0
  65. package/dist/components/listing/columns.d.ts +47 -0
  66. package/dist/components/listing/columns.js +72 -0
  67. package/dist/components/listing/grouping.d.ts +35 -0
  68. package/dist/components/listing/grouping.js +47 -0
  69. package/dist/components/listing/index.d.ts +17 -0
  70. package/dist/components/listing/index.js +20 -0
  71. package/dist/components/listing/modelColumns.d.ts +50 -0
  72. package/dist/components/listing/modelColumns.js +103 -0
  73. package/dist/components/listing/pages.d.ts +78 -0
  74. package/dist/components/listing/pages.js +135 -0
  75. package/dist/components/listing/selection.d.ts +21 -0
  76. package/dist/components/listing/selection.js +43 -0
  77. package/dist/components/listing/set.d.ts +48 -0
  78. package/dist/components/listing/set.js +24 -0
  79. package/dist/components/listing/tree.d.ts +28 -0
  80. package/dist/components/listing/tree.js +23 -0
  81. package/dist/components/navigation/CommandPalette.d.ts +40 -0
  82. package/dist/components/navigation/CommandPalette.js +114 -0
  83. package/dist/components/navigation/NavigationTree.d.ts +31 -0
  84. package/dist/components/navigation/NavigationTree.js +79 -0
  85. package/dist/components/navigation/commands.d.ts +30 -0
  86. package/dist/components/navigation/commands.js +30 -0
  87. package/dist/components/navigation/index.d.ts +3 -0
  88. package/dist/components/navigation/index.js +4 -0
  89. package/dist/components/record/Breadcrumb.d.ts +42 -0
  90. package/dist/components/record/Breadcrumb.js +98 -0
  91. package/dist/components/record/DirtyActions.d.ts +26 -0
  92. package/dist/components/record/DirtyActions.js +22 -0
  93. package/dist/components/record/Pager.d.ts +18 -0
  94. package/dist/components/record/Pager.js +33 -0
  95. package/dist/components/record/RecordHeader.d.ts +75 -0
  96. package/dist/components/record/RecordHeader.js +104 -0
  97. package/dist/components/record/RecordNotices.d.ts +37 -0
  98. package/dist/components/record/RecordNotices.js +75 -0
  99. package/dist/components/record/RecordSkeleton.d.ts +3 -0
  100. package/dist/components/record/RecordSkeleton.js +21 -0
  101. package/dist/components/record/SmartButtons.d.ts +35 -0
  102. package/dist/components/record/SmartButtons.js +38 -0
  103. package/dist/components/record/StatusBar.d.ts +51 -0
  104. package/dist/components/record/StatusBar.js +168 -0
  105. package/dist/components/record/ThumbBar.d.ts +36 -0
  106. package/dist/components/record/ThumbBar.js +86 -0
  107. package/dist/components/record/index.d.ts +6 -0
  108. package/dist/components/record/index.js +8 -0
  109. package/dist/components/search/CriteriaBuilder.d.ts +58 -0
  110. package/dist/components/search/CriteriaBuilder.js +278 -0
  111. package/dist/components/search/CriteriaChips.d.ts +22 -0
  112. package/dist/components/search/CriteriaChips.js +64 -0
  113. package/dist/components/search/FilterBuilder.d.ts +142 -0
  114. package/dist/components/search/FilterBuilder.js +421 -0
  115. package/dist/components/search/JoinWord.d.ts +8 -0
  116. package/dist/components/search/JoinWord.js +47 -0
  117. package/dist/components/search/JsonEditor.d.ts +19 -0
  118. package/dist/components/search/JsonEditor.js +78 -0
  119. package/dist/components/search/SearchBar.d.ts +78 -0
  120. package/dist/components/search/SearchBar.js +387 -0
  121. package/dist/components/search/criteria.d.ts +116 -0
  122. package/dist/components/search/criteria.js +159 -0
  123. package/dist/components/search/datePeriods.d.ts +122 -0
  124. package/dist/components/search/datePeriods.js +134 -0
  125. package/dist/components/search/dateRanges.d.ts +54 -0
  126. package/dist/components/search/dateRanges.js +89 -0
  127. package/dist/components/search/index.d.ts +9 -0
  128. package/dist/components/search/index.js +20 -0
  129. package/dist/components/search/model.d.ts +54 -0
  130. package/dist/components/search/model.js +37 -0
  131. package/dist/components/search/query.d.ts +166 -0
  132. package/dist/components/search/query.js +436 -0
  133. package/dist/components/shell/AppFrame.d.ts +14 -0
  134. package/dist/components/shell/AppFrame.js +80 -0
  135. package/dist/components/shell/TopBar.d.ts +73 -0
  136. package/dist/components/shell/TopBar.js +54 -0
  137. package/dist/components/shell/headerSlot.d.ts +17 -0
  138. package/dist/components/shell/headerSlot.js +21 -0
  139. package/dist/components/shell/index.d.ts +2 -0
  140. package/dist/components/shell/index.js +3 -0
  141. package/dist/foundations/aria.d.ts +14 -0
  142. package/dist/foundations/aria.js +18 -0
  143. package/dist/foundations/calendar.d.ts +28 -0
  144. package/dist/foundations/calendar.js +183 -0
  145. package/dist/foundations/copy.d.ts +703 -0
  146. package/dist/foundations/copy.es.d.ts +2 -0
  147. package/dist/foundations/copy.es.js +430 -0
  148. package/dist/foundations/copy.js +520 -0
  149. package/dist/foundations/density.d.ts +16 -0
  150. package/dist/foundations/density.js +21 -0
  151. package/dist/foundations/grouping.d.ts +281 -0
  152. package/dist/foundations/grouping.js +0 -0
  153. package/dist/foundations/index.d.ts +14 -0
  154. package/dist/foundations/index.js +30 -0
  155. package/dist/foundations/layout.d.ts +9 -0
  156. package/dist/foundations/layout.js +9 -0
  157. package/dist/foundations/pivot.d.ts +222 -0
  158. package/dist/foundations/pivot.js +198 -0
  159. package/dist/foundations/pivotSheet.d.ts +61 -0
  160. package/dist/foundations/pivotSheet.js +0 -0
  161. package/dist/foundations/slots.d.ts +67 -0
  162. package/dist/foundations/slots.js +63 -0
  163. package/dist/foundations/sticky.d.ts +53 -0
  164. package/dist/foundations/sticky.js +150 -0
  165. package/dist/foundations/surface.d.ts +9 -0
  166. package/dist/foundations/surface.js +26 -0
  167. package/dist/foundations/theme.d.ts +42 -0
  168. package/dist/foundations/theme.js +88 -0
  169. package/dist/foundations/types.d.ts +23 -0
  170. package/dist/foundations/types.js +50 -0
  171. package/dist/foundations/variants.d.ts +19 -0
  172. package/dist/foundations/variants.js +48 -0
  173. package/dist/foundations/xlsx.d.ts +86 -0
  174. package/dist/foundations/xlsx.js +0 -0
  175. package/dist/index.d.ts +19 -0
  176. package/dist/index.js +19 -0
  177. package/dist/primitives/block/Block.d.ts +66 -0
  178. package/dist/primitives/block/Block.js +34 -0
  179. package/dist/primitives/block/Line.d.ts +18 -0
  180. package/dist/primitives/block/Line.js +45 -0
  181. package/dist/primitives/block/SectionGrid.d.ts +30 -0
  182. package/dist/primitives/block/SectionGrid.js +29 -0
  183. package/dist/primitives/block/Steps.d.ts +76 -0
  184. package/dist/primitives/block/Steps.js +43 -0
  185. package/dist/primitives/block/index.d.ts +4 -0
  186. package/dist/primitives/block/index.js +7 -0
  187. package/dist/primitives/button/Button.d.ts +137 -0
  188. package/dist/primitives/button/Button.js +234 -0
  189. package/dist/primitives/button/index.d.ts +1 -0
  190. package/dist/primitives/button/index.js +2 -0
  191. package/dist/primitives/cell/CellStack.d.ts +47 -0
  192. package/dist/primitives/cell/CellStack.js +33 -0
  193. package/dist/primitives/cell/index.d.ts +1 -0
  194. package/dist/primitives/cell/index.js +3 -0
  195. package/dist/primitives/choice/ComboBox.d.ts +19 -0
  196. package/dist/primitives/choice/ComboBox.js +52 -0
  197. package/dist/primitives/choice/RadioGroup.d.ts +18 -0
  198. package/dist/primitives/choice/RadioGroup.js +50 -0
  199. package/dist/primitives/choice/SearchField.d.ts +33 -0
  200. package/dist/primitives/choice/SearchField.js +46 -0
  201. package/dist/primitives/choice/SegmentedControl.d.ts +16 -0
  202. package/dist/primitives/choice/SegmentedControl.js +69 -0
  203. package/dist/primitives/choice/Slider.d.ts +16 -0
  204. package/dist/primitives/choice/Slider.js +46 -0
  205. package/dist/primitives/choice/Switch.d.ts +14 -0
  206. package/dist/primitives/choice/Switch.js +65 -0
  207. package/dist/primitives/choice/ThemeSwitcher.d.ts +10 -0
  208. package/dist/primitives/choice/ThemeSwitcher.js +25 -0
  209. package/dist/primitives/choice/index.d.ts +8 -0
  210. package/dist/primitives/choice/index.js +11 -0
  211. package/dist/primitives/choice/options.d.ts +28 -0
  212. package/dist/primitives/choice/options.js +6 -0
  213. package/dist/primitives/date/Calendar.d.ts +31 -0
  214. package/dist/primitives/date/Calendar.js +134 -0
  215. package/dist/primitives/date/DatePicker.d.ts +42 -0
  216. package/dist/primitives/date/DatePicker.js +103 -0
  217. package/dist/primitives/date/DateTime.d.ts +35 -0
  218. package/dist/primitives/date/DateTime.js +100 -0
  219. package/dist/primitives/date/index.d.ts +3 -0
  220. package/dist/primitives/date/index.js +6 -0
  221. package/dist/primitives/dialog/Dialog.d.ts +118 -0
  222. package/dist/primitives/dialog/Dialog.js +121 -0
  223. package/dist/primitives/dialog/Drill.d.ts +90 -0
  224. package/dist/primitives/dialog/Drill.js +172 -0
  225. package/dist/primitives/dialog/index.d.ts +2 -0
  226. package/dist/primitives/dialog/index.js +4 -0
  227. package/dist/primitives/disclosure/Disclosure.d.ts +36 -0
  228. package/dist/primitives/disclosure/Disclosure.js +52 -0
  229. package/dist/primitives/disclosure/index.d.ts +1 -0
  230. package/dist/primitives/disclosure/index.js +2 -0
  231. package/dist/primitives/field/Checks.d.ts +57 -0
  232. package/dist/primitives/field/Checks.js +72 -0
  233. package/dist/primitives/field/DropZone.d.ts +42 -0
  234. package/dist/primitives/field/DropZone.js +52 -0
  235. package/dist/primitives/field/Field.d.ts +178 -0
  236. package/dist/primitives/field/Field.js +251 -0
  237. package/dist/primitives/field/Suggest.d.ts +48 -0
  238. package/dist/primitives/field/Suggest.js +43 -0
  239. package/dist/primitives/field/aria.d.ts +61 -0
  240. package/dist/primitives/field/aria.js +70 -0
  241. package/dist/primitives/field/context.d.ts +30 -0
  242. package/dist/primitives/field/context.js +13 -0
  243. package/dist/primitives/field/copy.d.ts +16 -0
  244. package/dist/primitives/field/copy.js +69 -0
  245. package/dist/primitives/field/index.d.ts +9 -0
  246. package/dist/primitives/field/index.js +15 -0
  247. package/dist/primitives/field/layout.d.ts +24 -0
  248. package/dist/primitives/field/layout.js +10 -0
  249. package/dist/primitives/field/mode.d.ts +9 -0
  250. package/dist/primitives/field/mode.js +13 -0
  251. package/dist/primitives/field/note.d.ts +55 -0
  252. package/dist/primitives/field/note.js +117 -0
  253. package/dist/primitives/hint/Hint.d.ts +31 -0
  254. package/dist/primitives/hint/Hint.js +42 -0
  255. package/dist/primitives/hint/index.d.ts +1 -0
  256. package/dist/primitives/hint/index.js +1 -0
  257. package/dist/primitives/index.d.ts +20 -0
  258. package/dist/primitives/index.js +21 -0
  259. package/dist/primitives/menu/Menu.d.ts +128 -0
  260. package/dist/primitives/menu/Menu.js +89 -0
  261. package/dist/primitives/menu/index.d.ts +1 -0
  262. package/dist/primitives/menu/index.js +2 -0
  263. package/dist/primitives/notice/Callout.d.ts +49 -0
  264. package/dist/primitives/notice/Callout.js +28 -0
  265. package/dist/primitives/notice/Flag.d.ts +13 -0
  266. package/dist/primitives/notice/Flag.js +31 -0
  267. package/dist/primitives/notice/Notice.d.ts +45 -0
  268. package/dist/primitives/notice/Notice.js +61 -0
  269. package/dist/primitives/notice/Toast.d.ts +55 -0
  270. package/dist/primitives/notice/Toast.js +142 -0
  271. package/dist/primitives/notice/index.d.ts +4 -0
  272. package/dist/primitives/notice/index.js +6 -0
  273. package/dist/primitives/overlay/Popover.d.ts +6 -0
  274. package/dist/primitives/overlay/Popover.js +27 -0
  275. package/dist/primitives/overlay/PopoverTrigger.d.ts +55 -0
  276. package/dist/primitives/overlay/PopoverTrigger.js +38 -0
  277. package/dist/primitives/overlay/Preview.d.ts +19 -0
  278. package/dist/primitives/overlay/Preview.js +60 -0
  279. package/dist/primitives/overlay/Tooltip.d.ts +38 -0
  280. package/dist/primitives/overlay/Tooltip.js +74 -0
  281. package/dist/primitives/overlay/index.d.ts +4 -0
  282. package/dist/primitives/overlay/index.js +7 -0
  283. package/dist/primitives/picker/Picker.d.ts +89 -0
  284. package/dist/primitives/picker/Picker.js +204 -0
  285. package/dist/primitives/picker/index.d.ts +1 -0
  286. package/dist/primitives/picker/index.js +2 -0
  287. package/dist/primitives/surface/Peek.d.ts +60 -0
  288. package/dist/primitives/surface/Peek.js +71 -0
  289. package/dist/primitives/surface/index.d.ts +1 -0
  290. package/dist/primitives/surface/index.js +2 -0
  291. package/dist/primitives/table/CellCopy.d.ts +20 -0
  292. package/dist/primitives/table/CellCopy.js +23 -0
  293. package/dist/primitives/table/CellEditor.d.ts +14 -0
  294. package/dist/primitives/table/CellEditor.js +83 -0
  295. package/dist/primitives/table/DataTable.d.ts +189 -0
  296. package/dist/primitives/table/DataTable.js +330 -0
  297. package/dist/primitives/table/EditableTable.d.ts +191 -0
  298. package/dist/primitives/table/EditableTable.js +617 -0
  299. package/dist/primitives/table/PivotTable.d.ts +14 -0
  300. package/dist/primitives/table/PivotTable.js +0 -0
  301. package/dist/primitives/table/ReportTable.d.ts +38 -0
  302. package/dist/primitives/table/ReportTable.js +106 -0
  303. package/dist/primitives/table/RowActions.d.ts +16 -0
  304. package/dist/primitives/table/RowActions.js +28 -0
  305. package/dist/primitives/table/SheetTable.d.ts +73 -0
  306. package/dist/primitives/table/SheetTable.js +230 -0
  307. package/dist/primitives/table/Table.d.ts +106 -0
  308. package/dist/primitives/table/Table.js +116 -0
  309. package/dist/primitives/table/index.d.ts +7 -0
  310. package/dist/primitives/table/index.js +9 -0
  311. package/dist/primitives/tabs/Tabs.d.ts +91 -0
  312. package/dist/primitives/tabs/Tabs.js +56 -0
  313. package/dist/primitives/tabs/index.d.ts +1 -0
  314. package/dist/primitives/tabs/index.js +1 -0
  315. package/dist/primitives/tag/Tag.d.ts +36 -0
  316. package/dist/primitives/tag/Tag.js +68 -0
  317. package/dist/primitives/tag/Tags.d.ts +57 -0
  318. package/dist/primitives/tag/Tags.js +104 -0
  319. package/dist/primitives/tag/TagsField.d.ts +35 -0
  320. package/dist/primitives/tag/TagsField.js +186 -0
  321. package/dist/primitives/tag/choices.d.ts +38 -0
  322. package/dist/primitives/tag/choices.js +26 -0
  323. package/dist/primitives/tag/index.d.ts +4 -0
  324. package/dist/primitives/tag/index.js +8 -0
  325. package/dist/primitives/toolbar/Toolbar.d.ts +13 -0
  326. package/dist/primitives/toolbar/Toolbar.js +36 -0
  327. package/dist/primitives/toolbar/index.d.ts +1 -0
  328. package/dist/primitives/toolbar/index.js +2 -0
  329. package/dist/primitives/tree/Tree.d.ts +56 -0
  330. package/dist/primitives/tree/Tree.js +74 -0
  331. package/dist/primitives/tree/index.d.ts +1 -0
  332. package/dist/primitives/tree/index.js +3 -0
  333. package/dist/primitives/value/Copyable.d.ts +48 -0
  334. package/dist/primitives/value/Copyable.js +71 -0
  335. package/dist/primitives/value/Fecha.d.ts +12 -0
  336. package/dist/primitives/value/Fecha.js +89 -0
  337. package/dist/primitives/value/Meter.d.ts +29 -0
  338. package/dist/primitives/value/Meter.js +46 -0
  339. package/dist/primitives/value/Metric.d.ts +42 -0
  340. package/dist/primitives/value/Metric.js +38 -0
  341. package/dist/primitives/value/Person.d.ts +90 -0
  342. package/dist/primitives/value/Person.js +208 -0
  343. package/dist/primitives/value/ProgressBar.d.ts +31 -0
  344. package/dist/primitives/value/ProgressBar.js +53 -0
  345. package/dist/primitives/value/Relation.d.ts +74 -0
  346. package/dist/primitives/value/Relation.js +74 -0
  347. package/dist/primitives/value/Totals.d.ts +121 -0
  348. package/dist/primitives/value/Totals.js +54 -0
  349. package/dist/primitives/value/Value.d.ts +40 -0
  350. package/dist/primitives/value/Value.js +80 -0
  351. package/dist/primitives/value/index.d.ts +9 -0
  352. package/dist/primitives/value/index.js +10 -0
  353. package/dist/tokens.css +1062 -0
  354. package/dist/views/index.d.ts +2 -0
  355. package/dist/views/index.js +3 -0
  356. package/dist/views/list/List.d.ts +119 -0
  357. package/dist/views/list/List.js +101 -0
  358. package/dist/views/list/ListView.d.ts +6 -0
  359. package/dist/views/list/ListView.js +295 -0
  360. package/dist/views/list/columns.d.ts +18 -0
  361. package/dist/views/list/columns.js +27 -0
  362. package/dist/views/list/derive.d.ts +87 -0
  363. package/dist/views/list/derive.js +207 -0
  364. package/dist/views/list/index.d.ts +2 -0
  365. package/dist/views/list/index.js +4 -0
  366. package/dist/views/list/presentations.d.ts +39 -0
  367. package/dist/views/list/presentations.js +105 -0
  368. package/dist/views/list/types.d.ts +284 -0
  369. package/dist/views/list/types.js +1 -0
  370. package/dist/views/list/useNarrowList.d.ts +17 -0
  371. package/dist/views/list/useNarrowList.js +32 -0
  372. package/dist/views/record/Record.d.ts +145 -0
  373. package/dist/views/record/Record.js +211 -0
  374. package/dist/views/record/index.d.ts +1 -0
  375. package/dist/views/record/index.js +2 -0
  376. package/package.json +113 -4
@@ -0,0 +1,284 @@
1
+ import type { ListIdentity } from "../../components/listing/ListingBar.js";
2
+ import type { ListPresent } from "../../components/listing/set.js";
3
+ import type { SortField } from "../../components/listing/SortMenu.js";
4
+ import type { Grouping, GroupLevel } from "../../foundations/grouping.js";
5
+ import type { Pivot, PivotKey, PivotSpec } from "../../foundations/pivot.js";
6
+ import type { Surface, Tone } from "../../foundations/types.js";
7
+ import type { DataColumn, DataTableCreate } from "../../primitives/table/DataTable.js";
8
+ import type { ReportColumn, ReportRow } from "../../primitives/table/ReportTable.js";
9
+ import type { RowAction } from "../../primitives/table/RowActions.js";
10
+ import type { SheetColumn } from "../../primitives/table/SheetTable.js";
11
+ import type { SortState } from "../../primitives/table/Table.js";
12
+ import type { LucideIcon } from "lucide-react";
13
+ import type { ReactNode } from "react";
14
+ /**
15
+ * Las seis maneras de mirar un conjunto. La unión vive en `list/set.ts`, que
16
+ * es donde ya vivía su copia.
17
+ *
18
+ * Las seis son el MISMO conjunto mirado distinto, y por eso comparten barra.
19
+ * Lo que cambia entre ellas es qué sabe el código de las columnas — y, en el
20
+ * pivote, que las filas de la pantalla ya no son las filas del conjunto.
21
+ */
22
+ export type { ListPresent };
23
+ /** What an item looks like when the presentation is rows. */
24
+ export type RowOf = {
25
+ icon?: LucideIcon;
26
+ name: string;
27
+ tags?: ReactNode;
28
+ meta?: string;
29
+ /** What this resource produced, hanging underneath. */
30
+ children?: ReactNode;
31
+ actions?: ReactNode;
32
+ };
33
+ /** A crumb of the list: where I came from. */
34
+ export type ListCrumb = {
35
+ label: string;
36
+ onClick?: () => void;
37
+ };
38
+ export type ListEmpty = {
39
+ sentence: string;
40
+ action?: ReactNode;
41
+ /** Empty because of a filter is ANOTHER situation: content is not missing,
42
+ * there is an extra narrowing. Telling «importá tus facturas» to someone who has 180
43
+ * and mistyped a name is answering a different question. */
44
+ whenFiltered?: {
45
+ sentence: string;
46
+ action?: ReactNode;
47
+ };
48
+ };
49
+ /**
50
+ * El agrupado de una lista: el CONTRATO de `system/grouping.ts` más lo único que
51
+ * una tabla necesita de más.
52
+ *
53
+ * Las seis presentaciones parten el conjunto con el MISMO árbol y las mismas
54
+ * claves — la tabla incluida. Lo único que una tabla agrega es una pregunta de
55
+ * VISIBILIDAD: agrupar por un campo cuya columna está escondida dejaría montones
56
+ * cuyo criterio no se ve en ninguna parte, así que esa columna se repone, y para
57
+ * reponerla hay que saber cuál es. Eso es `columnOf`, y nada más: la clave del
58
+ * montón no sale de una columna.
59
+ *
60
+ * Va acá y no en el contrato para que una vista que no tenga columnas no tenga
61
+ * que fingir que las tiene.
62
+ */
63
+ export type ListGroup<T extends object> = Grouping<T> & {
64
+ /** Qué COLUMNA contesta por cada nivel, para reponerla cuando está escondida.
65
+ * Sin esto, la que se llame como el campo o la que lo declare en `field`. */
66
+ columnOf?: (level: GroupLevel) => string | undefined;
67
+ };
68
+ /**
69
+ * La PLANILLA de una lista: las columnas y cómo se lee cada celda.
70
+ *
71
+ * Se declara cuando las columnas salen del ARCHIVO y el código no sabe cuáles
72
+ * son. Para un conjunto de registros no hace falta: sale de las `columns` que
73
+ * la lista ya declaró.
74
+ */
75
+ export type ListSheet<T> = {
76
+ columns: readonly SheetColumn[];
77
+ /** El valor de una celda. `null` es un faltante y `""` una celda vacía: son
78
+ * cosas distintas y el motor las distingue, así que la interfaz también. */
79
+ cell: (item: T, column: SheetColumn, columnIndex: number) => string | number | null;
80
+ /** Qué celdas se pintan y con qué: un valor imputado, uno fuera de rango. */
81
+ tone?: (item: T, column: SheetColumn, columnIndex: number) => Tone | undefined;
82
+ note?: (item: T, column: SheetColumn, columnIndex: number) => string | undefined;
83
+ height?: number | "auto";
84
+ /** Qué dice la columna fija de la izquierda. Sin esto, el número de fila. */
85
+ rowLabel?: (item: T, index: number) => string;
86
+ /** Presente = la planilla se edita como planilla. Recibe el texto crudo;
87
+ * convertirlo al tipo de la columna es del dominio, no de acá. */
88
+ onCommit?: (item: T, column: SheetColumn, columnIndex: number, next: string) => void;
89
+ editable?: (item: T, column: SheetColumn, columnIndex: number) => boolean;
90
+ /** Present = the sheet adds rows: «add a row» under it, and `Enter` on the last row.
91
+ * The consumer appends the item; the sheet lands on it. Not while grouped. */
92
+ onAddRow?: () => void;
93
+ };
94
+ /**
95
+ * El INFORME de una lista: los períodos y la jerarquía que termina en totales.
96
+ *
97
+ * Las filas van aparte de `items` y es deliberado: un balance no es la lista
98
+ * plana agrupada —«Total Activos» es una suma de sumas— y el arquetipo no puede
99
+ * inventar esa jerarquía. La arma quien conoce el dominio, como ya arma
100
+ * `columns`.
101
+ */
102
+ export type ListReport = {
103
+ columns: readonly ReportColumn[];
104
+ /**
105
+ * Las líneas del informe, cuando el DOMINIO las arma.
106
+ *
107
+ * Un balance no es la lista plana agrupada —«Total Activos» es una suma de
108
+ * sumas— y el arquetipo no puede inventar esa jerarquía.
109
+ *
110
+ * **Sin esto, el informe se arma con los montones**: cada nivel es una línea
111
+ * con sus agregados, y el más profundo son las filas. Es el mismo conjunto que
112
+ * ven las otras cuatro presentaciones, contado — que es lo que alguien espera
113
+ * al pasar de «tabla» a «informe» con dos niveles puestos.
114
+ */
115
+ rows?: readonly ReportRow[];
116
+ /** Qué grupos arrancan abiertos. Por omisión ninguno: un balance con todo
117
+ * desplegado son cuatrocientas líneas y lo que se mira primero son los
118
+ * totales. */
119
+ defaultOpen?: readonly string[];
120
+ height?: number;
121
+ };
122
+ /**
123
+ * El PIVOTE de una lista: los dos ejes y las medidas que se pliegan en el cruce.
124
+ *
125
+ * Es la presentación en la que **las filas de la pantalla dejan de ser los
126
+ * registros**: una fila es un montón y una columna también, así que no hay nada
127
+ * que elegir ni que abrir, y lo que se lee está en el cruce.
128
+ *
129
+ * De ahí que venga plegado de dos lugares posibles, igual que los montones de
130
+ * una lista agrupada:
131
+ *
132
+ * folded lo plegó quien guarda los datos. Es el caso normal en cuanto el
133
+ * conjunto no entra en el navegador: contar 187 vencidas no lo
134
+ * pueden contestar las doce filas que se bajaron.
135
+ * spec lo pliega esta máquina, con las filas en la mano.
136
+ *
137
+ * Los dos dibujan igual porque dibujan el mismo tipo.
138
+ */
139
+ export type ListPivot<T> = {
140
+ /** El pivote ya plegado. Gana sobre `spec` cuando están los dos: si alguien
141
+ * con el conjunto entero ya contestó, no hay nada que recalcular. */
142
+ folded?: Pivot;
143
+ /**
144
+ * Cómo armarlo acá adentro. Las medidas traen su pliegue, y los márgenes salen
145
+ * de la BASE y no de sumar celdas — ver `system/pivot.ts`.
146
+ *
147
+ * Quien además necesite la grilla EN LA MANO —para bajarla como planilla con
148
+ * `downloadPivot`, por ejemplo— la pliega él con `pivotFrom` y la pasa por
149
+ * `folded`: así la que se dibuja y la que se baja son el mismo objeto, y no
150
+ * dos que podrían no coincidir.
151
+ */
152
+ spec?: PivotSpec<T>;
153
+ /** Qué pasa al tocar un cruce: abrir las filas que cayeron ahí. */
154
+ onCell?: (row: PivotKey, column: PivotKey) => void;
155
+ height?: number | string;
156
+ };
157
+ export type ListViewProps<T extends object> = {
158
+ items: readonly T[];
159
+ keyOf: (item: T) => string;
160
+ identity?: ListIdentity;
161
+ /** Where I came from. It goes above the bar, and only when the bar is chrome. */
162
+ crumbs?: readonly ListCrumb[];
163
+ /** The metrics that also NARROW: «2 por confirmar», «41 por entregar». They go
164
+ * below the bar and above the rows — they belong to the set, not to the frame. */
165
+ metrics?: ReactNode;
166
+ /** The list is a FIELD of a record (a one2many / many2many) and not a screen: the bar
167
+ * is one line — search, count, sort, columns, switcher, actions —, it does not stick
168
+ * and it does not move into the frame's header. Identity and crumbs are not drawn: the
169
+ * record around it already says them. See `ListingBar`'s header. */
170
+ embedded?: boolean;
171
+ /** Which surface the BAR sits on. `canvas` (the default) is a light control bar;
172
+ * `chrome` turns it into a dark band — an explicit choice, since the application bar
173
+ * is the screen's one dark band (same as the rail of a record). */
174
+ surface?: Surface;
175
+ /** The search field, already assembled. It is assembled by whoever holds the
176
+ * domain declarations — the system does not know what a provenance is. */
177
+ search?: ReactNode;
178
+ pagination?: ReactNode;
179
+ /** Escape hatch: a custom switcher. Prefer `presents` so the archetype draws it. */
180
+ views?: ReactNode;
181
+ actions?: ReactNode;
182
+ row: (item: T) => RowOf;
183
+ /**
184
+ * Los rótulos de las zonas de una fila, arriba de todas. Sin esto no hay
185
+ * encabezado: `rows` no es una tabla y no toda lista tiene algo que rotular
186
+ * —una lista de cinco archivos con el nombre y nada más no lo necesita.
187
+ *
188
+ * No son columnas. Una fila tiene un nombre, UNA cadena de `meta` ya
189
+ * formateada y una columna de fichas: eso es lo que se rotula, y por eso los
190
+ * rótulos los escribe la vista y no salen de `columns`.
191
+ */
192
+ rowHeader?: {
193
+ name: string;
194
+ meta?: string;
195
+ tags?: string;
196
+ };
197
+ /** The table presentation. With this, `present="table"` draws a `DataTable`. */
198
+ columns?: readonly DataColumn<T>[];
199
+ /** Which table columns are on screen. Required columns stay even if omitted.
200
+ * Owned by the view when omitted — catalog filters must not reset them. */
201
+ visibleColumnIds?: readonly string[];
202
+ onVisibleColumnIdsChange?: (ids: readonly string[]) => void;
203
+ /** The sorting of the table. It lives outside because it belongs to the SET
204
+ * and not to the presentation: switching from table to rows has no reason to
205
+ * lose it. */
206
+ sort?: SortState | null;
207
+ onSortChange?: (next: SortState | null) => void;
208
+ /**
209
+ * Por qué campos se puede ordenar, para las presentaciones que NO tienen
210
+ * encabezados donde hacer clic.
211
+ *
212
+ * Sin esto, ordenar existe sólo en la tabla — y entonces pasar a filas o a
213
+ * tablero no pierde el orden puesto, pierde la posibilidad de ordenar. La
214
+ * tabla sigue teniendo además sus encabezados: son dos puertas a lo mismo, y
215
+ * la de los encabezados es más rápida donde existe.
216
+ */
217
+ sortable?: readonly SortField<T>[];
218
+ /** The footer with the aggregates of the columns that declared one. */
219
+ totals?: boolean;
220
+ /** What gets done to ONE row without entering it, in the table presentation.
221
+ * They are drawn hidden and appear on the row being pointed at. */
222
+ rowActions?: (item: T) => readonly RowAction[];
223
+ /** Write a new record as a row of the table presentation — Odoo's editable list. The
224
+ * columns that declare `input` get a control in that row. See `DataTable`'s header.
225
+ * While a record is being written the table shows even if the set is empty. */
226
+ create?: DataTableCreate<T>;
227
+ /** The board presentation. */
228
+ card?: (item: T) => ReactNode;
229
+ /**
230
+ * La PLANILLA. Con esto, `present="sheet"` dibuja un `SheetTable`.
231
+ *
232
+ * Es la presentación de los datos crudos, y por eso no recibe `DataColumn`:
233
+ * las columnas salen del archivo y el código no sabe cuáles son ni cuántas.
234
+ * El valor se pide por índice —igual que `SheetTable`, que está virtualizado—
235
+ * así que un millón de filas no se copia a ninguna otra estructura.
236
+ */
237
+ sheet?: ListSheet<T>;
238
+ /**
239
+ * El INFORME: una jerarquía que termina en totales. Con esto,
240
+ * `present="report"` dibuja un `ReportTable`.
241
+ *
242
+ * Las filas van aparte de `items` y es deliberado: un balance NO es la lista
243
+ * plana agrupada —«Total Activos» no es un montón de cuentas, es una suma de
244
+ * sumas— y el arquetipo no puede inventar esa jerarquía a partir del
245
+ * conjunto. La arma quien conoce el dominio, como ya arma `columns`.
246
+ */
247
+ report?: ListReport;
248
+ /**
249
+ * El PIVOTE: dos ejes a la vez. Con esto, `present="pivot"` dibuja un
250
+ * `PivotTable`.
251
+ *
252
+ * Va aparte de `group` y no derivado de él aunque los dos partan el conjunto,
253
+ * porque un pivote parte por DOS ejes y una lista agrupada por uno: los
254
+ * niveles de `group` no dicen cuál de ellos sería el eje horizontal, y
255
+ * elegirlo acá sería adivinar la pregunta.
256
+ */
257
+ pivot?: ListPivot<T>;
258
+ present?: ListPresent;
259
+ /** Which presentations this list offers. Two or more draw the switcher. */
260
+ presents?: readonly ListPresent[];
261
+ onPresentChange?: (next: ListPresent) => void;
262
+ group?: ListGroup<T>;
263
+ selection?: {
264
+ has: (id: string) => boolean;
265
+ toggle: (id: string) => void;
266
+ count: number;
267
+ clear: () => void;
268
+ actions?: ReactNode;
269
+ };
270
+ onOpen?: (item: T) => void;
271
+ onPeek?: (item: T) => void;
272
+ isPeeked?: (item: T) => boolean;
273
+ /** The three states, in a single place. Every view used to re-assemble them
274
+ * with three nested ternaries, and that is why «empty because of a filter»
275
+ * and «really empty» got mixed up in half the screens. */
276
+ state?: {
277
+ loading?: boolean;
278
+ error?: string | null;
279
+ };
280
+ filtered?: boolean;
281
+ empty?: ListEmpty;
282
+ /** The escape hatch. */
283
+ children?: ReactNode;
284
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { ListPresent } from "../../components/listing/set.js";
2
+ import { type RefObject } from "react";
3
+ /**
4
+ * A narrow LIST — a phone, a drawer, a panel among four — does not offer the presentations
5
+ * that need width: a seven-column table at 360 px is a horizontal scroll nobody reads.
6
+ * There the list shows rows (a stacked card per record: the name, its state, its facts)
7
+ * and the board, and the switcher offers only those. It is the width of the list's own
8
+ * container that decides, not the window's: a narrow panel on a wide screen is narrow.
9
+ *
10
+ * Attach `frame` to the list's root element; `offered` is what the switcher may show and
11
+ * `present` what to draw (a wide one that was asked for falls back to rows).
12
+ */
13
+ export declare function useNarrowList(presents: readonly ListPresent[] | undefined, requested: ListPresent): {
14
+ frame: RefObject<HTMLDivElement | null>;
15
+ offered: readonly ListPresent[];
16
+ present: ListPresent;
17
+ };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { HANDHELD_WIDTH } from "../../foundations/layout.js";
3
+ import { WIDE_PRESENTS } from "./columns.js";
4
+ import { useEffect, useRef, useState } from "react";
5
+ /**
6
+ * A narrow LIST — a phone, a drawer, a panel among four — does not offer the presentations
7
+ * that need width: a seven-column table at 360 px is a horizontal scroll nobody reads.
8
+ * There the list shows rows (a stacked card per record: the name, its state, its facts)
9
+ * and the board, and the switcher offers only those. It is the width of the list's own
10
+ * container that decides, not the window's: a narrow panel on a wide screen is narrow.
11
+ *
12
+ * Attach `frame` to the list's root element; `offered` is what the switcher may show and
13
+ * `present` what to draw (a wide one that was asked for falls back to rows).
14
+ */
15
+ export function useNarrowList(presents, requested) {
16
+ const frame = useRef(null);
17
+ const [narrow, setNarrow] = useState(false);
18
+ useEffect(() => {
19
+ const el = frame.current;
20
+ if (el === null || typeof ResizeObserver === "undefined")
21
+ return;
22
+ const watch = new ResizeObserver(([entry]) => {
23
+ if (entry !== undefined)
24
+ setNarrow(entry.contentRect.width < HANDHELD_WIDTH);
25
+ });
26
+ watch.observe(el);
27
+ return () => watch.disconnect();
28
+ }, []);
29
+ const offered = (presents ?? []).filter((p) => !narrow || !WIDE_PRESENTS.includes(p));
30
+ const present = narrow && WIDE_PRESENTS.includes(requested) ? "rows" : requested;
31
+ return { frame, offered, present };
32
+ }
@@ -0,0 +1,145 @@
1
+ import { type ActivityProps } from "../../components/activity/Activity.js";
2
+ import { type SheetField, type SheetLayout } from "../../components/form/Sheet.js";
3
+ import type { Crumb } from "../../components/record/Breadcrumb.js";
4
+ import type { DirtyState } from "../../components/record/DirtyActions.js";
5
+ import { type RecordNoticeSpec } from "../../components/record/RecordNotices.js";
6
+ import { RecordSkeleton } from "../../components/record/RecordSkeleton.js";
7
+ import { type Stage } from "../../components/record/StatusBar.js";
8
+ import type { Surface, Tone } from "../../foundations/types.js";
9
+ import { type TabNotice } from "../../primitives/tabs/Tabs.js";
10
+ import type { LucideIcon } from "lucide-react";
11
+ import { type ReactNode } from "react";
12
+ export type RecordIdentity = {
13
+ icon?: LucideIcon;
14
+ title: ReactNode;
15
+ /** Who or what it is about, under the title — the customer of an invoice, the
16
+ * supplier of an order. Second in the hierarchy: bigger than a fact, smaller than
17
+ * the title. */
18
+ subtitle?: ReactNode;
19
+ tag?: {
20
+ label: string;
21
+ tone?: Tone;
22
+ };
23
+ /** THE figure of the record — the total of an invoice, the balance of an account —
24
+ * drawn as large as the title, on the right. A record usually has one number people
25
+ * open it for; set among the facts at body size it is just another fact. */
26
+ figure?: {
27
+ label: string;
28
+ value: ReactNode;
29
+ };
30
+ };
31
+ /** What hangs off the record. It leads somewhere else; it is not a datum. */
32
+ export type SmartLink = {
33
+ icon: LucideIcon;
34
+ count?: number;
35
+ label: string;
36
+ onClick?: () => void;
37
+ };
38
+ /** My place in the set I came from. Not pagination: it says I can move to the
39
+ * next one without going back to the list. */
40
+ export type RecordPager = {
41
+ index: number;
42
+ total: number;
43
+ onPrev?: () => void;
44
+ onNext?: () => void;
45
+ };
46
+ export type { SheetField };
47
+ /** A notice of the record: the props of `Record.Notice` (a `Callout` without its × label,
48
+ * which the record writes from the copy table). */
49
+ export type RecordNotice = RecordNoticeSpec;
50
+ type RailProps = {
51
+ children?: ReactNode;
52
+ /** The rail's surface. `canvas` (the default) is a light control bar; `chrome` is the dark
53
+ * band, an explicit choice. The application bar is the screen's one dark band — a dark
54
+ * rail under it reads as two headers and the record loses its top. */
55
+ surface?: Surface;
56
+ };
57
+ type CrumbsProps = {
58
+ crumbs: readonly Crumb[];
59
+ };
60
+ type SmartProps = {
61
+ links: readonly SmartLink[];
62
+ };
63
+ type ActionsProps = {
64
+ children?: ReactNode;
65
+ };
66
+ type StatusProps = {
67
+ stages?: readonly Stage[];
68
+ /** Cuál de las etapas es la de ahora. Sin esto, la primera. */
69
+ current?: string;
70
+ failed?: boolean;
71
+ /** La escotilla del estado, para lo que no es ninguna de las dos. */
72
+ children?: ReactNode;
73
+ };
74
+ type PaperProps = {
75
+ /** Cómo ponen la etiqueta los campos de adentro. `horizontal` es etiqueta |
76
+ * valor, que es la forma de Odoo. */
77
+ layout?: SheetLayout;
78
+ columns?: 1 | 2 | 3 | 4;
79
+ children?: ReactNode;
80
+ };
81
+ type FactsProps = {
82
+ fields: readonly SheetField[];
83
+ };
84
+ type PagesProps = {
85
+ current?: string;
86
+ onChange?: (id: string) => void;
87
+ children?: ReactNode;
88
+ };
89
+ type PageProps = {
90
+ id: string;
91
+ label: string;
92
+ /** La marca de la cara. Con tres o más pestañas, el ícono es lo que se
93
+ * reconoce sin leer. */
94
+ icon?: LucideIcon;
95
+ /** Cuántas cosas hay detrás. `0` se dibuja apagado: «no hay ninguna» es una
96
+ * respuesta, y esconderla obliga a abrir la pestaña para averiguarla. */
97
+ count?: number;
98
+ /** Que algo de esta cara PIDE que lo mires — falló, cambió, llegó. Aparte del
99
+ * contador, porque son dos preguntas: ver `TabNotice`. */
100
+ notice?: TabNotice;
101
+ children?: ReactNode;
102
+ };
103
+ /** The record's ACTIVITY panel, as DATA: its conversation, its history, its composer.
104
+ * The record draws the `Activity` itself and gives it what only the record has — its
105
+ * notices (the ones that are not blocking), and the indicator in the rail that opens the
106
+ * panel on them.
107
+ *
108
+ * Context: it was `<Record.Chatter><Chatter open onToggle …/></Record.Chatter>`, a node
109
+ * the record could only place. Written as data — like `Record.Status` — the record owns
110
+ * the panel's open state (`defaultOpen`, or `open` + `onOpenChange` to control it), so
111
+ * «⚠ 2 avisos» in the rail can open it and move the focus to its notices. */
112
+ export type RecordActivityProps = Omit<ActivityProps, "open" | "onToggle" | "alerts" | "alertsId"> & {
113
+ /** Starts OPEN unless this says otherwise: on a big screen you see what the record has. */
114
+ defaultOpen?: boolean;
115
+ /** Controls the panel: then `onOpenChange` must follow it. Remembering it between
116
+ * records is the app's — the system only reports. */
117
+ open?: boolean;
118
+ onOpenChange?: (open: boolean) => void;
119
+ };
120
+ export type RecordProps = {
121
+ identity: RecordIdentity;
122
+ /** Lo que falló al operar sobre el registro. Va con los avisos que bloquean, primero:
123
+ * entre el riel y el papel, siempre a la vista (ver `Record.Notice`). */
124
+ error?: string | null;
125
+ /** Hay cambios sin guardar. Su presencia REEMPLAZA los botones de acción por
126
+ * guardar y descartar — ver la nota en `RecordHeader`. */
127
+ dirty?: DirtyState;
128
+ children?: ReactNode;
129
+ };
130
+ export declare function Record({ identity, error, dirty, children }: RecordProps): import("react").JSX.Element;
131
+ export declare namespace Record {
132
+ var Skeleton: typeof RecordSkeleton;
133
+ var Rail: ((props: RailProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"rail">;
134
+ var Crumbs: ((props: CrumbsProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"crumbs">;
135
+ var Pager: ((props: RecordPager) => ReactNode) & import("../../foundations/slots.js").Slotted<"pager">;
136
+ var Smart: ((props: SmartProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"smart">;
137
+ var Actions: ((props: ActionsProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"actions">;
138
+ var Status: ((props: StatusProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"status">;
139
+ var Paper: ((props: PaperProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"paper">;
140
+ var Activity: ((props: RecordActivityProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"activity">;
141
+ var Facts: ((props: FactsProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"facts">;
142
+ var Pages: ((props: PagesProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"pages">;
143
+ var Page: ((props: PageProps) => ReactNode) & import("../../foundations/slots.js").Slotted<"page">;
144
+ var Notice: ((props: RecordNoticeSpec) => ReactNode) & import("../../foundations/slots.js").Slotted<"notice">;
145
+ }