nexus-shared 3.2.0 → 4.1.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 (271) hide show
  1. package/CHANGELOG.md +2359 -0
  2. package/README.md +1911 -1123
  3. package/dist/Client.Index.d.ts +27 -0
  4. package/dist/Client.Index.js +27 -0
  5. package/dist/Components/Chats/ChatComposer.d.ts +7 -1
  6. package/dist/Components/Chats/ChatComposer.js +9 -6
  7. package/dist/Components/Chats/ChatParts.d.ts +15 -2
  8. package/dist/Components/Chats/ChatParts.js +15 -4
  9. package/dist/Components/Chats/ChatPopup.d.ts +46 -0
  10. package/dist/Components/Chats/ChatPopup.js +34 -0
  11. package/dist/Components/Chats/ChatThread.d.ts +9 -1
  12. package/dist/Components/Chats/ChatThread.js +54 -6
  13. package/dist/Components/Dashboards/DashboardBoard.d.ts +62 -0
  14. package/dist/Components/Dashboards/DashboardBoard.js +594 -0
  15. package/dist/Components/Dashboards/DashboardWidgets.d.ts +155 -0
  16. package/dist/Components/Dashboards/DashboardWidgets.js +159 -0
  17. package/dist/Components/Dashboards/WidgetFrame.d.ts +51 -0
  18. package/dist/Components/Dashboards/WidgetFrame.js +45 -0
  19. package/dist/Components/Documents/Button.d.ts +6 -1
  20. package/dist/Components/Documents/Button.js +2 -2
  21. package/dist/Components/Documents/DocumentFrame.d.ts +50 -0
  22. package/dist/Components/Documents/DocumentFrame.js +83 -0
  23. package/dist/Components/Documents/Menu.d.ts +4 -0
  24. package/dist/Components/Documents/Menu.js +40 -24
  25. package/dist/Components/Documents/PrintDocument.d.ts +95 -0
  26. package/dist/Components/Documents/PrintDocument.js +62 -0
  27. package/dist/Components/Documents/TabButtons.d.ts +6 -0
  28. package/dist/Components/Documents/TabButtons.js +5 -4
  29. package/dist/Components/Documents/Tabs.d.ts +59 -0
  30. package/dist/Components/Documents/Tabs.js +70 -0
  31. package/dist/Components/Domains/DomainCard.d.ts +98 -0
  32. package/dist/Components/Domains/DomainCard.js +182 -0
  33. package/dist/Components/Forms/ApiForm.js +24 -3
  34. package/dist/Components/Forms/Crud.d.ts +2 -2
  35. package/dist/Components/Forms/Crud.js +628 -247
  36. package/dist/Components/Forms/CrudActions.d.ts +137 -0
  37. package/dist/Components/Forms/CrudActions.js +214 -0
  38. package/dist/Components/Forms/CrudHistory.d.ts +6 -1
  39. package/dist/Components/Forms/CrudHistory.js +14 -6
  40. package/dist/Components/Forms/CrudNarrowPicker.d.ts +31 -0
  41. package/dist/Components/Forms/CrudNarrowPicker.js +180 -0
  42. package/dist/Components/Forms/CrudParts.d.ts +37 -2
  43. package/dist/Components/Forms/CrudParts.js +123 -7
  44. package/dist/Components/Forms/CrudRowForms.d.ts +26 -0
  45. package/dist/Components/Forms/CrudRowForms.js +174 -0
  46. package/dist/Components/Forms/CrudScopes.d.ts +28 -0
  47. package/dist/Components/Forms/CrudScopes.js +76 -0
  48. package/dist/Components/Forms/CrudTree.d.ts +90 -0
  49. package/dist/Components/Forms/CrudTree.js +363 -0
  50. package/dist/Components/Forms/CrudWorkspace.d.ts +73 -0
  51. package/dist/Components/Forms/CrudWorkspace.js +177 -0
  52. package/dist/Components/Forms/ExcelImport.js +3 -3
  53. package/dist/Components/Forms/Form.d.ts +6 -5
  54. package/dist/Components/Forms/Form.js +134 -21
  55. package/dist/Components/Forms/FormLeaveGuard.d.ts +44 -0
  56. package/dist/Components/Forms/FormLeaveGuard.js +65 -0
  57. package/dist/Components/Forms/FormQuestion.d.ts +6 -0
  58. package/dist/Components/Forms/FormQuestion.js +28 -0
  59. package/dist/Components/Forms/RecordFlows.d.ts +50 -0
  60. package/dist/Components/Forms/RecordFlows.js +282 -0
  61. package/dist/Components/Forms/SubmitForm.d.ts +37 -2
  62. package/dist/Components/Forms/SubmitForm.js +182 -10
  63. package/dist/Components/Inputs/CheckBox.js +1 -1
  64. package/dist/Components/Inputs/ChoiceField.d.ts +21 -1
  65. package/dist/Components/Inputs/ChoiceField.js +28 -2
  66. package/dist/Components/Inputs/ComputedInput.d.ts +51 -0
  67. package/dist/Components/Inputs/ComputedInput.js +179 -0
  68. package/dist/Components/Inputs/Dropdown.d.ts +13 -0
  69. package/dist/Components/Inputs/Dropdown.js +8 -6
  70. package/dist/Components/Inputs/DropdownParts.d.ts +3 -1
  71. package/dist/Components/Inputs/DropdownParts.js +16 -4
  72. package/dist/Components/Inputs/Field.d.ts +7 -1
  73. package/dist/Components/Inputs/Field.js +2 -2
  74. package/dist/Components/Inputs/GroupForm.d.ts +6 -6
  75. package/dist/Components/Inputs/GroupForm.js +12 -12
  76. package/dist/Components/Inputs/InputRenderer.d.ts +13 -6
  77. package/dist/Components/Inputs/InputRenderer.js +37 -32
  78. package/dist/Components/Inputs/MarkdownEditor.d.ts +6 -0
  79. package/dist/Components/Inputs/MarkdownEditor.js +32 -6
  80. package/dist/Components/Inputs/PictureInput.d.ts +41 -0
  81. package/dist/Components/Inputs/PictureInput.js +75 -0
  82. package/dist/Components/Inputs/RadioGroup.d.ts +16 -3
  83. package/dist/Components/Inputs/RadioGroup.js +8 -3
  84. package/dist/Components/Inputs/RowsInput.d.ts +15 -2
  85. package/dist/Components/Inputs/RowsInput.js +96 -8
  86. package/dist/Components/Inputs/TabularForm.d.ts +5 -5
  87. package/dist/Components/Inputs/TabularForm.js +45 -32
  88. package/dist/Components/Inputs/TextArea.d.ts +6 -0
  89. package/dist/Components/Inputs/TextArea.js +11 -2
  90. package/dist/Components/Inputs/TextBoxTypes.d.ts +6 -0
  91. package/dist/Components/Inputs/TextBoxTypes.js +17 -0
  92. package/dist/Components/Inputs/TreeView.d.ts +76 -2
  93. package/dist/Components/Inputs/TreeView.js +227 -16
  94. package/dist/Components/Layouts/MessageBox.d.ts +15 -2
  95. package/dist/Components/Layouts/MessageBox.js +56 -7
  96. package/dist/Components/Layouts/Popup.d.ts +34 -7
  97. package/dist/Components/Layouts/Popup.js +143 -13
  98. package/dist/Components/Layouts/PopupDock.d.ts +3 -1
  99. package/dist/Components/Layouts/PopupDock.js +2 -1
  100. package/dist/Components/Layouts/PopupHost.js +5 -4
  101. package/dist/Components/Messages/MailClient.d.ts +50 -0
  102. package/dist/Components/Messages/MailClient.js +410 -0
  103. package/dist/Components/Messages/MailColumns.d.ts +21 -0
  104. package/dist/Components/Messages/MailColumns.js +92 -0
  105. package/dist/Components/Messages/MailCompose.d.ts +46 -0
  106. package/dist/Components/Messages/MailCompose.js +154 -0
  107. package/dist/Components/Messages/MailReader.d.ts +43 -0
  108. package/dist/Components/Messages/MailReader.js +207 -0
  109. package/dist/Components/Messages/MailThread.d.ts +71 -0
  110. package/dist/Components/Messages/MailThread.js +185 -0
  111. package/dist/Components/Messages/MessageBell.d.ts +41 -0
  112. package/dist/Components/Messages/MessageBell.js +76 -0
  113. package/dist/Components/Viewers/DataTable.js +153 -49
  114. package/dist/Components/Viewers/DataTableColumns.d.ts +2 -2
  115. package/dist/Components/Viewers/DataTableColumns.js +2 -1
  116. package/dist/Components/Viewers/DataTableFilters.d.ts +1 -1
  117. package/dist/Components/Viewers/DataTableFilters.js +17 -2
  118. package/dist/Components/Viewers/DataTableParts.d.ts +23 -5
  119. package/dist/Components/Viewers/DataTableParts.js +26 -14
  120. package/dist/Components/Viewers/OwnerFiles.d.ts +227 -0
  121. package/dist/Components/Viewers/OwnerFiles.js +700 -0
  122. package/dist/Components/Viewers/QrCodeImage.d.ts +22 -0
  123. package/dist/Components/Viewers/QrCodeImage.js +15 -0
  124. package/dist/Components/Viewers/RecordCards.d.ts +16 -0
  125. package/dist/Components/Viewers/RecordCards.js +509 -0
  126. package/dist/Helpers/ApiModules.js +4 -0
  127. package/dist/Helpers/AuditEntries.d.ts +50 -0
  128. package/dist/Helpers/AuditEntries.js +96 -0
  129. package/dist/Helpers/BusyHooks.d.ts +6 -0
  130. package/dist/Helpers/BusyHooks.js +39 -0
  131. package/dist/Helpers/ChatBackend.d.ts +8 -1
  132. package/dist/Helpers/ChatBackend.js +18 -0
  133. package/dist/Helpers/ChatHelpers.d.ts +2 -0
  134. package/dist/Helpers/ChatHelpers.js +4 -1
  135. package/dist/Helpers/CrudBackend.d.ts +20 -2
  136. package/dist/Helpers/CrudBackend.js +46 -2
  137. package/dist/Helpers/CrudColumns.d.ts +91 -6
  138. package/dist/Helpers/CrudColumns.js +148 -7
  139. package/dist/Helpers/CrudDetailsTabs.d.ts +58 -0
  140. package/dist/Helpers/CrudDetailsTabs.js +126 -0
  141. package/dist/Helpers/CrudHelpers.d.ts +116 -2
  142. package/dist/Helpers/CrudHelpers.js +256 -0
  143. package/dist/Helpers/CrudNarrowPick.d.ts +83 -0
  144. package/dist/Helpers/CrudNarrowPick.js +157 -0
  145. package/dist/Helpers/CrudPickerPlan.d.ts +58 -0
  146. package/dist/Helpers/CrudPickerPlan.js +46 -0
  147. package/dist/Helpers/CrudRowForms.d.ts +32 -0
  148. package/dist/Helpers/CrudRowForms.js +76 -0
  149. package/dist/Helpers/CrudScopes.d.ts +32 -0
  150. package/dist/Helpers/CrudScopes.js +79 -0
  151. package/dist/Helpers/DashboardHelpers.d.ts +115 -0
  152. package/dist/Helpers/DashboardHelpers.js +305 -0
  153. package/dist/Helpers/DomainCards.d.ts +140 -0
  154. package/dist/Helpers/DomainCards.js +370 -0
  155. package/dist/Helpers/DropdownHelpers.d.ts +3 -1
  156. package/dist/Helpers/DropdownHelpers.js +6 -2
  157. package/dist/Helpers/ExcelHelpers.d.ts +1 -1
  158. package/dist/Helpers/ExcelHelpers.js +12 -11
  159. package/dist/Helpers/FileAdapter.d.ts +158 -0
  160. package/dist/Helpers/FileAdapter.js +173 -0
  161. package/dist/Helpers/FilePrimaries.d.ts +48 -0
  162. package/dist/Helpers/FilePrimaries.js +138 -0
  163. package/dist/Helpers/FormConfirm.d.ts +32 -0
  164. package/dist/Helpers/FormConfirm.js +40 -0
  165. package/dist/Helpers/FormStore.d.ts +100 -5
  166. package/dist/Helpers/FormStore.js +368 -25
  167. package/dist/Helpers/InputConditions.d.ts +56 -0
  168. package/dist/Helpers/InputConditions.js +192 -0
  169. package/dist/Helpers/InputMemory.d.ts +106 -0
  170. package/dist/Helpers/InputMemory.js +395 -0
  171. package/dist/Helpers/InputNarrowing.d.ts +50 -0
  172. package/dist/Helpers/InputNarrowing.js +148 -0
  173. package/dist/Helpers/InputParamsHelpers.d.ts +44 -1
  174. package/dist/Helpers/InputParamsHelpers.js +157 -74
  175. package/dist/Helpers/MailClientHelpers.d.ts +96 -0
  176. package/dist/Helpers/MailClientHelpers.js +211 -0
  177. package/dist/Helpers/MessageBackend.d.ts +152 -0
  178. package/dist/Helpers/MessageBackend.js +329 -0
  179. package/dist/Helpers/MessageHelpers.d.ts +160 -0
  180. package/dist/Helpers/MessageHelpers.js +573 -0
  181. package/dist/Helpers/MessageUnread.d.ts +95 -0
  182. package/dist/Helpers/MessageUnread.js +245 -0
  183. package/dist/Helpers/NexusDriveAdapter.d.ts +71 -0
  184. package/dist/Helpers/NexusDriveAdapter.js +236 -0
  185. package/dist/Helpers/NumberHelpers.d.ts +156 -0
  186. package/dist/Helpers/NumberHelpers.js +242 -0
  187. package/dist/Helpers/PagedPicker.d.ts +42 -0
  188. package/dist/Helpers/PagedPicker.js +85 -0
  189. package/dist/Helpers/Permissions.js +2 -1
  190. package/dist/Helpers/QrCode.d.ts +26 -0
  191. package/dist/Helpers/QrCode.js +463 -0
  192. package/dist/Helpers/RecordCards.d.ts +205 -0
  193. package/dist/Helpers/RecordCards.js +378 -0
  194. package/dist/Helpers/RequestCache.d.ts +14 -2
  195. package/dist/Helpers/RequestCache.js +22 -3
  196. package/dist/Helpers/RowsStore.d.ts +61 -2
  197. package/dist/Helpers/RowsStore.js +203 -16
  198. package/dist/Helpers/ServerPreview.d.ts +69 -0
  199. package/dist/Helpers/ServerPreview.js +99 -0
  200. package/dist/Helpers/TableColumns.js +4 -3
  201. package/dist/Helpers/TableExport.d.ts +7 -1
  202. package/dist/Helpers/TableExport.js +9 -3
  203. package/dist/Helpers/TableFilters.d.ts +1 -1
  204. package/dist/Helpers/TableFilters.js +24 -23
  205. package/dist/Helpers/TableHelpers.d.ts +38 -4
  206. package/dist/Helpers/TableHelpers.js +78 -10
  207. package/dist/Helpers/TableJoins.d.ts +13 -0
  208. package/dist/Helpers/TableJoins.js +34 -0
  209. package/dist/Helpers/TableStore.d.ts +28 -4
  210. package/dist/Helpers/TableStore.js +73 -11
  211. package/dist/Helpers/ToolbarFit.d.ts +23 -0
  212. package/dist/Helpers/ToolbarFit.js +30 -0
  213. package/dist/Helpers/TreeStore.d.ts +156 -6
  214. package/dist/Helpers/TreeStore.js +547 -18
  215. package/dist/Interfaces/ApiInterfaces.d.ts +10 -1
  216. package/dist/Interfaces/ApiInterfaces.js +10 -1
  217. package/dist/Interfaces/ChatInterfaces.d.ts +22 -0
  218. package/dist/Interfaces/CrudInterfaces.d.ts +539 -6
  219. package/dist/Interfaces/DashboardInterfaces.d.ts +123 -0
  220. package/dist/Interfaces/DashboardInterfaces.js +1 -0
  221. package/dist/Interfaces/DomainInterfaces.d.ts +145 -0
  222. package/dist/Interfaces/DomainInterfaces.js +1 -0
  223. package/dist/Interfaces/FileInterfaces.d.ts +183 -0
  224. package/dist/Interfaces/FileInterfaces.js +6 -0
  225. package/dist/Interfaces/FormInterfaces.d.ts +460 -32
  226. package/dist/Interfaces/FormInterfaces.js +79 -1
  227. package/dist/Interfaces/InputInterfaces.d.ts +22 -3
  228. package/dist/Interfaces/MailInterfaces.d.ts +192 -0
  229. package/dist/Interfaces/MailInterfaces.js +1 -0
  230. package/dist/Interfaces/RecordInterfaces.d.ts +367 -0
  231. package/dist/Interfaces/RecordInterfaces.js +1 -0
  232. package/dist/Interfaces/TableInterfaces.d.ts +102 -3
  233. package/dist/Services/ExcelApi.js +5 -0
  234. package/dist/Services/FileApi.d.ts +13 -0
  235. package/dist/Services/FileApi.js +29 -0
  236. package/dist/Services/ImageEditorLoader.d.ts +14 -0
  237. package/dist/Services/ImageEditorLoader.js +51 -0
  238. package/dist/Services/JoinSources.d.ts +79 -6
  239. package/dist/Services/JoinSources.js +132 -21
  240. package/dist/Services/MessageApi.d.ts +18 -0
  241. package/dist/Services/MessageApi.js +64 -0
  242. package/dist/Services/ModuleImport.d.ts +7 -0
  243. package/dist/Services/ModuleImport.js +22 -0
  244. package/dist/Shared.Index.d.ts +28 -0
  245. package/dist/Shared.Index.js +28 -0
  246. package/package.json +13 -2
  247. package/src/Styles/Nexus.Avatar.css +6 -5
  248. package/src/Styles/Nexus.Button.css +39 -4
  249. package/src/Styles/Nexus.Chat.css +114 -22
  250. package/src/Styles/Nexus.Choice.css +16 -0
  251. package/src/Styles/Nexus.Crud.css +486 -21
  252. package/src/Styles/Nexus.Dashboard.css +763 -0
  253. package/src/Styles/Nexus.Domain.css +384 -0
  254. package/src/Styles/Nexus.Dropdown.css +8 -0
  255. package/src/Styles/Nexus.Editor.css +20 -0
  256. package/src/Styles/Nexus.Files.css +437 -0
  257. package/src/Styles/Nexus.Form.css +5 -2
  258. package/src/Styles/Nexus.Index.css +7 -0
  259. package/src/Styles/Nexus.Input.css +73 -0
  260. package/src/Styles/Nexus.Mail.css +1062 -0
  261. package/src/Styles/Nexus.Menu.css +10 -1
  262. package/src/Styles/Nexus.Popup.css +135 -1
  263. package/src/Styles/Nexus.Print.css +288 -0
  264. package/src/Styles/Nexus.QrCode.css +12 -0
  265. package/src/Styles/Nexus.Record.css +430 -0
  266. package/src/Styles/Nexus.Tab.Buttons.css +87 -22
  267. package/src/Styles/Nexus.Table.css +1458 -1387
  268. package/src/Styles/Nexus.Theme.Picker.css +1 -0
  269. package/src/Styles/Nexus.Themes.css +12 -6
  270. package/src/Styles/Nexus.Tokens.css +8 -3
  271. package/src/Styles/Nexus.Tree.css +41 -1
@@ -1,9 +1,11 @@
1
1
  // Works everywhere: server components, client components, and plain TypeScript.
2
2
  // Components
3
3
  export * from "./Components/Documents/Button.js";
4
+ export * from "./Components/Documents/PrintDocument.js";
4
5
  export * from "./Components/Inputs/Field.js";
5
6
  export * from "./Components/Layouts/ThemeScript.js";
6
7
  export * from "./Components/Viewers/MarkdownView.js";
8
+ export * from "./Components/Viewers/QrCodeImage.js";
7
9
  export * from "./Components/Viewers/RichTextView.js";
8
10
  // Helpers
9
11
  export * from "./Helpers/ApiClient.js";
@@ -18,23 +20,43 @@ export * from "./Helpers/ChatStore.js";
18
20
  export * from "./Helpers/ChatSummaries.js";
19
21
  export * from "./Helpers/ClassHelpers.js";
20
22
  export * from "./Helpers/CodeHelpers.js";
23
+ export { setAuditActorNames } from "./Helpers/AuditEntries.js";
21
24
  export * from "./Helpers/CrudBackend.js";
22
25
  export * from "./Helpers/CrudColumns.js";
26
+ export * from "./Helpers/CrudDetailsTabs.js";
23
27
  export * from "./Helpers/CrudHelpers.js";
28
+ export * from "./Helpers/DashboardHelpers.js";
24
29
  export * from "./Helpers/DateHelpers.js";
25
30
  export * from "./Helpers/DateTimeHelpers.js";
31
+ export * from "./Helpers/DomainCards.js";
26
32
  export * from "./Helpers/DropdownHelpers.js";
27
33
  export * from "./Helpers/ExcelBackend.js";
28
34
  export * from "./Helpers/ExcelHelpers.js";
35
+ export * from "./Helpers/FileAdapter.js";
36
+ export * from "./Helpers/FilePrimaries.js";
37
+ export * from "./Helpers/NexusDriveAdapter.js";
38
+ export * from "./Helpers/FormConfirm.js";
29
39
  export * from "./Helpers/FormDrafts.js";
30
40
  export * from "./Helpers/FormStore.js";
31
41
  export * from "./Helpers/InputParamsHelpers.js";
42
+ export * from "./Helpers/InputConditions.js";
43
+ export * from "./Helpers/InputNarrowing.js";
44
+ export * from "./Helpers/CrudNarrowPick.js";
45
+ export * from "./Helpers/CrudScopes.js";
46
+ export * from "./Helpers/CrudRowForms.js";
32
47
  export * from "./Helpers/MarkdownEditing.js";
33
48
  export * from "./Helpers/MarkdownHelpers.js";
49
+ export * from "./Helpers/MailClientHelpers.js";
50
+ export * from "./Helpers/MessageBackend.js";
34
51
  export * from "./Helpers/MessageBuilder.js";
52
+ export * from "./Helpers/MessageHelpers.js";
53
+ export * from "./Helpers/MessageUnread.js";
35
54
  export * from "./Helpers/NepaliCalendar.js";
36
55
  export * from "./Helpers/NumberHelpers.js";
56
+ export * from "./Helpers/PagedPicker.js";
37
57
  export * from "./Helpers/Permissions.js";
58
+ export * from "./Helpers/QrCode.js";
59
+ export * from "./Helpers/RecordCards.js";
38
60
  export * from "./Helpers/RequestCache.js";
39
61
  export * from "./Helpers/RichTextHelpers.js";
40
62
  export * from "./Helpers/RowsStore.js";
@@ -44,18 +66,24 @@ export * from "./Helpers/TableJoins.js";
44
66
  export * from "./Helpers/TableStore.js";
45
67
  export * from "./Helpers/ThemeHelpers.js";
46
68
  export * from "./Helpers/TimeHelpers.js";
69
+ export * from "./Helpers/ToolbarFit.js";
47
70
  export * from "./Helpers/TreeStore.js";
48
71
  export * from "./Helpers/ValidationHelpers.js";
49
72
  // Interfaces
50
73
  export * from "./Interfaces/ApiInterfaces.js";
51
74
  export * from "./Interfaces/ChatInterfaces.js";
52
75
  export * from "./Interfaces/CrudInterfaces.js";
76
+ export * from "./Interfaces/DashboardInterfaces.js";
53
77
  export * from "./Interfaces/DateInterfaces.js";
78
+ export * from "./Interfaces/DomainInterfaces.js";
54
79
  export * from "./Interfaces/ExcelInterfaces.js";
80
+ export * from "./Interfaces/FileInterfaces.js";
55
81
  export * from "./Interfaces/FormInterfaces.js";
56
82
  export * from "./Interfaces/InputInterfaces.js";
83
+ export * from "./Interfaces/MailInterfaces.js";
57
84
  export * from "./Interfaces/MessageInterfaces.js";
58
85
  export * from "./Interfaces/PreferenceInterfaces.js";
86
+ export * from "./Interfaces/RecordInterfaces.js";
59
87
  export * from "./Interfaces/TableInterfaces.js";
60
88
  export * from "./Interfaces/ThemeInterfaces.js";
61
89
  export * from "./Interfaces/TypeInterfaces.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexus-shared",
3
- "version": "3.2.0",
3
+ "version": "4.1.0",
4
4
  "description": "The Nexus component library for React and Next.js: params-driven inputs and forms, a data table with a CRUD on top, popups and toasts, an API layer with permissions, Markdown and rich text editors, and 7 themes in light and dark.",
5
5
  "keywords": [
6
6
  "react",
@@ -44,27 +44,38 @@
44
44
  "CHANGELOG.md"
45
45
  ],
46
46
  "scripts": {
47
- "build": "tsc -p tsconfig.build.json",
47
+ "build": "tsc -p tsconfig.build.json && tsc -p tsconfig.build.module-import.json",
48
48
  "typecheck": "tsc -p tsconfig.json",
49
49
  "test": "node scripts/test-all.mjs",
50
50
  "check:themes": "node scripts/check-themes.mjs",
51
51
  "test:api": "node scripts/test-api.mts",
52
52
  "test:proxy": "node scripts/test-api-proxy.mts",
53
53
  "test:chat": "node scripts/test-chat.mts",
54
+ "test:crud-tabs": "node scripts/test-crud-details-tabs.mts",
55
+ "test:crud-profile": "node scripts/test-crud-profile-fields.mts",
54
56
  "test:codes": "node scripts/test-code-helpers.mts",
57
+ "test:dashboard": "node scripts/test-dashboard.mts",
55
58
  "test:dates": "node scripts/test-date-helpers.mts",
56
59
  "test:datetimes": "node scripts/test-datetime-helpers.mts",
57
60
  "test:drag": "node scripts/test-drag-helpers.mts",
58
61
  "test:excel": "node scripts/test-excel.mts",
62
+ "test:files": "node scripts/test-files.mts",
59
63
  "test:dropdown": "node scripts/test-dropdown-helpers.mts",
60
64
  "test:forms": "node scripts/test-form-store.mts",
65
+ "test:form-confirm": "node scripts/test-form-confirm.mts",
66
+ "test:domain-card": "node scripts/test-domain-card.mts",
67
+ "test:mail": "node scripts/test-mail.mts",
68
+ "test:mail-client": "node scripts/test-mail-client.mts",
69
+ "test:message-bell": "node scripts/test-message-bell.mts",
61
70
  "test:markdown": "node scripts/test-markdown.mts",
62
71
  "test:numbers": "node scripts/test-number-helpers.mts",
63
72
  "test:popups": "node scripts/test-popup-rules.mts",
73
+ "test:qr": "node scripts/test-qr-code.mts",
64
74
  "test:richtext": "node scripts/test-richtext.mts",
65
75
  "test:rows": "node scripts/test-rows-store.mts",
66
76
  "test:table": "node scripts/test-table.mts",
67
77
  "test:times": "node scripts/test-time-helpers.mts",
78
+ "test:toolbar-fit": "node scripts/test-toolbar-fit.mts",
68
79
  "test:tree": "node scripts/test-tree-store.mts",
69
80
  "test:types": "tsc -p scripts/type-checks/tsconfig.json"
70
81
  },
@@ -1,5 +1,6 @@
1
1
  /*
2
- * A person's avatar, wherever one is drawn: the chat, a dropdown's avatar column, the admin bar.
2
+ * A person's avatar, wherever one is drawn: the chat, a dropdown's avatar column, the admin bar. Its tones also back an
3
+ * owner's initials in a picture with none (`.nx-picture--initials`, Nexus.Files.css), so a name has one tone everywhere.
3
4
  */
4
5
  @layer nexus.components {
5
6
  .nx-avatar {
@@ -29,19 +30,19 @@
29
30
  --nx-avatar-size: 44px;
30
31
  }
31
32
 
32
- .nx-avatar[data-tone="primary"] {
33
+ :is(.nx-avatar, .nx-picture)[data-tone="primary"] {
33
34
  background: var(--nx-primary-soft);
34
35
  }
35
36
 
36
- .nx-avatar[data-tone="info"] {
37
+ :is(.nx-avatar, .nx-picture)[data-tone="info"] {
37
38
  background: var(--nx-info-soft);
38
39
  }
39
40
 
40
- .nx-avatar[data-tone="success"] {
41
+ :is(.nx-avatar, .nx-picture)[data-tone="success"] {
41
42
  background: var(--nx-success-soft);
42
43
  }
43
44
 
44
- .nx-avatar[data-tone="warning"] {
45
+ :is(.nx-avatar, .nx-picture)[data-tone="warning"] {
45
46
  background: var(--nx-warning-soft);
46
47
  }
47
48
 
@@ -39,11 +39,11 @@
39
39
  vertical-align: 0;
40
40
  }
41
41
 
42
- .nx-btn:hover:not(:disabled) {
42
+ .nx-btn:hover:not(:disabled, [aria-disabled="true"]) {
43
43
  background: var(--nx-btn-bg-hover);
44
44
  }
45
45
 
46
- .nx-btn:active:not(:disabled) {
46
+ .nx-btn:active:not(:disabled, [aria-disabled="true"]) {
47
47
  transform: translateY(1px);
48
48
  }
49
49
 
@@ -52,12 +52,18 @@
52
52
  box-shadow: var(--nx-focus-ring);
53
53
  }
54
54
 
55
- .nx-btn:disabled {
55
+ /* Unavailable. One marked `aria-disabled` looks the same and stays in the Tab order, so a press can say why; its ring
56
+ is drawn strong enough to read through the dimming. */
57
+ .nx-btn:is(:disabled, [aria-disabled="true"]) {
56
58
  cursor: not-allowed;
57
59
  opacity: 0.55;
58
60
  box-shadow: none;
59
61
  }
60
62
 
63
+ .nx-btn[aria-disabled="true"]:focus-visible {
64
+ box-shadow: 0 0 0 3px var(--nx-primary);
65
+ }
66
+
61
67
  .nx-btn[aria-busy="true"] {
62
68
  cursor: progress;
63
69
  opacity: 0.8;
@@ -120,7 +126,7 @@
120
126
  .nx-btn--hover-success,
121
127
  .nx-btn--hover-warning,
122
128
  .nx-btn--hover-info
123
- ):is(:hover, :focus-visible):not(:disabled) {
129
+ ):is(:hover, :focus-visible):not(:disabled, [aria-disabled="true"]) {
124
130
  --nx-btn-bg: var(--nx-btn-tone-soft);
125
131
  --nx-btn-bg-hover: var(--nx-btn-tone-soft);
126
132
  --nx-btn-border: var(--nx-btn-tone);
@@ -168,6 +174,35 @@
168
174
  background: var(--nx-danger-solid);
169
175
  }
170
176
 
177
+ /*
178
+ * A count over the corner (`badge`; the chat icon's unread count too): laid over the box, never beside it, so the
179
+ * button keeps its size and a bar or a column of them does not move as the counts arrive.
180
+ */
181
+ .nx-btn:has(> .nx-btn__badge) {
182
+ position: relative;
183
+ }
184
+
185
+ .nx-btn__badge,
186
+ .nx-chat-btn__badge {
187
+ position: absolute;
188
+ top: -5px;
189
+ right: -5px;
190
+ display: grid;
191
+ place-items: center;
192
+ min-width: 16px;
193
+ height: 16px;
194
+ padding: 0 4px;
195
+ border: 1px solid var(--nx-surface);
196
+ border-radius: var(--nx-radius-full);
197
+ background: var(--nx-danger-solid);
198
+ color: var(--nx-danger-text);
199
+ font-size: 10px;
200
+ font-weight: 700;
201
+ font-variant-numeric: tabular-nums;
202
+ line-height: 1;
203
+ pointer-events: none;
204
+ }
205
+
171
206
  .nx-btn__dot[data-tone="primary"] {
172
207
  background: var(--nx-primary-solid);
173
208
  }
@@ -87,26 +87,7 @@
87
87
  color: var(--nx-primary-text);
88
88
  }
89
89
 
90
- /* The number of unread messages, over the corner of the box so the box keeps its size. */
91
- .nx-chat-btn__badge {
92
- position: absolute;
93
- top: -5px;
94
- right: -5px;
95
- display: grid;
96
- place-items: center;
97
- min-width: 16px;
98
- height: 16px;
99
- padding: 0 4px;
100
- border: 1px solid var(--nx-surface);
101
- border-radius: var(--nx-radius-full);
102
- background: var(--nx-danger-solid);
103
- color: var(--nx-danger-text);
104
- font-size: 10px;
105
- font-weight: 700;
106
- font-variant-numeric: tabular-nums;
107
- line-height: 1;
108
- pointer-events: none;
109
- }
90
+ /* The number of unread messages over the corner: the badge `Button` draws too (Nexus.Button.css). */
110
91
 
111
92
  /* The panel */
112
93
 
@@ -210,8 +191,15 @@
210
191
  border-top: 1px solid var(--nx-border);
211
192
  }
212
193
 
213
- /* The people, in a column beside the thread: a dividing line, not a panel inside a panel. */
194
+ /*
195
+ * The people, in a column beside the thread: a dividing line, not a panel inside a panel.
196
+ *
197
+ * Every scroller of the chat is positioned (`position: relative`; this one `absolute` in a narrow panel, below), so what
198
+ * lies out of the flow inside it - a visually hidden word - scrolls with it instead of being placed against the page
199
+ * and making it taller (card C-mail-client-fix). check-contract.mjs holds the chat's and the mail client's scrollers to it.
200
+ */
214
201
  .nx-chat-panel__aside {
202
+ position: relative;
215
203
  display: flex;
216
204
  flex: 0 0 220px;
217
205
  flex-direction: column;
@@ -286,6 +274,7 @@
286
274
  }
287
275
 
288
276
  .nx-chat-thread__list {
277
+ position: relative;
289
278
  display: flex;
290
279
  flex: 1 1 auto;
291
280
  flex-direction: column;
@@ -301,6 +290,19 @@
301
290
  box-shadow: inset var(--nx-focus-ring);
302
291
  }
303
292
 
293
+ /* A lead (a mail thread's head) opens the scroll edge to edge, and scrolls with the lines under it. */
294
+ .nx-chat-thread__lead {
295
+ flex-shrink: 0;
296
+ margin: calc(-1 * var(--nx-space-3)) calc(-1 * var(--nx-space-3)) 0;
297
+ }
298
+
299
+ /* Under a lead the lines are a log of their own, spaced as the list spaces them. */
300
+ .nx-chat-thread__log {
301
+ display: flex;
302
+ flex-direction: column;
303
+ gap: var(--nx-space-2);
304
+ }
305
+
304
306
  .nx-chat-thread__day {
305
307
  display: flex;
306
308
  flex-direction: column;
@@ -785,6 +787,69 @@
785
787
  text-align: center;
786
788
  }
787
789
 
790
+ /*
791
+ * A notification: an event line across the thread, not a bubble on a side. The bell and the words line up with the
792
+ * avatars and bubbles beside them; nothing is boxed, so it reads as quieter than what people wrote.
793
+ */
794
+ .nx-chat-event {
795
+ display: grid;
796
+ grid-template-columns: var(--nx-avatar-size, 28px) minmax(0, 1fr);
797
+ gap: var(--nx-space-2);
798
+ align-items: start;
799
+ align-self: stretch;
800
+ color: var(--nx-text-muted);
801
+ font-size: var(--nx-text-sm);
802
+ }
803
+
804
+ .nx-chat-event__icon {
805
+ justify-self: center;
806
+ width: 15px;
807
+ height: 15px;
808
+ margin-top: 2px;
809
+ color: var(--nx-primary);
810
+ vertical-align: 0;
811
+ }
812
+
813
+ .nx-chat-event__text {
814
+ display: flex;
815
+ flex-direction: column;
816
+ gap: 1px;
817
+ min-width: 0;
818
+ }
819
+
820
+ .nx-chat-event__meta {
821
+ display: flex;
822
+ flex-wrap: wrap;
823
+ gap: 0 var(--nx-space-2);
824
+ align-items: baseline;
825
+ }
826
+
827
+ .nx-chat-event__author {
828
+ color: var(--nx-text);
829
+ font-weight: 600;
830
+ }
831
+
832
+ .nx-chat-event__meta time {
833
+ font-size: var(--nx-text-xs);
834
+ font-variant-numeric: tabular-nums;
835
+ }
836
+
837
+ .nx-chat-event__body {
838
+ overflow-wrap: anywhere;
839
+ }
840
+
841
+ .nx-chat-event__body > :first-child {
842
+ margin-top: 0;
843
+ }
844
+
845
+ .nx-chat-event__body > :last-child {
846
+ margin-bottom: 0;
847
+ }
848
+
849
+ .nx-chat-event__body > * + * {
850
+ margin-top: var(--nx-space-1);
851
+ }
852
+
788
853
  /* The people */
789
854
 
790
855
  .nx-chat-people {
@@ -900,6 +965,10 @@
900
965
  font-size: var(--nx-text-sm);
901
966
  }
902
967
 
968
+ .nx-chat-failure--flat {
969
+ border-color: transparent;
970
+ }
971
+
903
972
  .nx-chat-failure button {
904
973
  display: inline-flex;
905
974
  gap: 3px;
@@ -943,6 +1012,25 @@
943
1012
  text-align: center;
944
1013
  }
945
1014
 
1015
+ /* What the writer should know before sending (`notice`): a quiet line over the writing area, not a box. */
1016
+ .nx-chat-composer__notice {
1017
+ display: flex;
1018
+ gap: 6px;
1019
+ align-items: flex-start;
1020
+ margin: 0;
1021
+ color: var(--nx-text-muted);
1022
+ font-size: var(--nx-text-sm);
1023
+ }
1024
+
1025
+ .nx-chat-composer__notice .nx-icon {
1026
+ flex-shrink: 0;
1027
+ width: 15px;
1028
+ height: 15px;
1029
+ margin-top: 2px;
1030
+ color: var(--nx-info);
1031
+ vertical-align: 0;
1032
+ }
1033
+
946
1034
  /* The editor is the whole writing area, so the row under it carries only the hint and the buttons. */
947
1035
  .nx-chat-composer__row {
948
1036
  display: flex;
@@ -1119,6 +1207,7 @@
1119
1207
  */
1120
1208
 
1121
1209
  .nx-chat-list {
1210
+ position: relative;
1122
1211
  display: flex;
1123
1212
  flex: 1 1 auto;
1124
1213
  flex-direction: column;
@@ -1222,8 +1311,9 @@
1222
1311
  text-overflow: ellipsis;
1223
1312
  }
1224
1313
 
1314
+ /* Inline, so it keeps its own width in a table cell (an inbox's Unread column) as in the list's row. */
1225
1315
  .nx-chat-list__badge {
1226
- display: grid;
1316
+ display: inline-grid;
1227
1317
  flex-shrink: 0;
1228
1318
  place-items: center;
1229
1319
  min-width: 18px;
@@ -1248,6 +1338,7 @@
1248
1338
  /* New chat */
1249
1339
 
1250
1340
  .nx-chat-new {
1341
+ position: relative;
1251
1342
  display: flex;
1252
1343
  flex: 1 1 auto;
1253
1344
  flex-direction: column;
@@ -1370,6 +1461,7 @@
1370
1461
  * list under it would fall outside. The highlighted row is the one Enter puts in.
1371
1462
  */
1372
1463
  .nx-chat-mentions {
1464
+ position: relative;
1373
1465
  display: flex;
1374
1466
  flex-direction: column;
1375
1467
  gap: 1px;
@@ -335,6 +335,22 @@
335
335
  border-color: var(--nx-danger);
336
336
  }
337
337
 
338
+ /*
339
+ * Tabs (`RadioGroup design="tabs"`): the options on a `TabButtons` track that wraps (`nx-tabs--wrap`), each chosen
340
+ * option raised; the chosen option's description on a line under the track, the others' in their tooltips. An
341
+ * invalid group edges the track in the danger colour.
342
+ */
343
+ .nx-choices--tabs[data-invalid] .nx-tabs {
344
+ --nx-tabs-track-border: var(--nx-danger);
345
+ }
346
+
347
+ .nx-choices__note {
348
+ margin: var(--nx-space-2) 0 0;
349
+ color: var(--nx-text-muted);
350
+ font-size: var(--nx-field-label-font);
351
+ line-height: 1.4;
352
+ }
353
+
338
354
  [data-nx-motion="reduce"] .nx-choice__control,
339
355
  [data-nx-motion="reduce"] .nx-choice__control::before,
340
356
  [data-nx-motion="reduce"] .nx-choices--cards .nx-choice {