taet-ui 0.0.0-stage → 0.6.0-rc.3

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 (496) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/CONTRIBUTING.md +15 -0
  3. package/LICENSE +21 -0
  4. package/README.md +132 -2
  5. package/SECURITY.md +37 -0
  6. package/THIRD_PARTY_NOTICES.md +45 -0
  7. package/docs/AI_CONTEXT.md +23 -0
  8. package/docs/AI_MAP.md +19 -0
  9. package/docs/AI_REFERENCE.md +7 -0
  10. package/docs/BUILD.md +42 -0
  11. package/docs/CHARTS.md +129 -0
  12. package/docs/COLLECTION_JSON.md +111 -0
  13. package/docs/COMPONENT_TYPES.md +20 -0
  14. package/docs/CONTROL_TYPES.md +142 -0
  15. package/docs/DATA_MODEL_TYPES.md +273 -0
  16. package/docs/EXTENSIONS.md +13 -0
  17. package/docs/FORM_JSON.md +88 -0
  18. package/docs/GRID_COLUMN_LAYOUT.md +111 -0
  19. package/docs/GRID_COMMON_CONTRACT.md +95 -0
  20. package/docs/GRID_EDITOR_MATRIX.md +139 -0
  21. package/docs/GRID_EDITOR_TYPES.md +334 -0
  22. package/docs/GRID_JSON.md +123 -0
  23. package/docs/GRID_MENUS.md +79 -0
  24. package/docs/GRID_STATE_TYPES.md +181 -0
  25. package/docs/GRID_TRANSFER.md +120 -0
  26. package/docs/GRID_TYPES.md +406 -0
  27. package/docs/INPUT_TYPES.md +731 -0
  28. package/docs/INTEGRATION_RECIPES.md +144 -0
  29. package/docs/LLM_GUIDE.md +31 -0
  30. package/docs/MIGRATION.md +10 -0
  31. package/docs/MUTATIONS.md +59 -0
  32. package/docs/NATIVE_ACCEPTANCE.md +49 -0
  33. package/docs/README.md +103 -0
  34. package/docs/RELEASE.md +35 -0
  35. package/docs/SOURCE_MIGRATION.md +19 -0
  36. package/docs/STABLE_API.md +235 -0
  37. package/docs/TAET_MIGRATION.md +60 -0
  38. package/docs/TIERS.md +172 -0
  39. package/docs/TREE_GRID_MOVE.md +106 -0
  40. package/docs/TYPES.md +185 -0
  41. package/docs/VERIFICATION.md +359 -0
  42. package/docs/VERSIONING.md +24 -0
  43. package/docs/index.html +15 -0
  44. package/docs/src/ComponentPage.js +164 -0
  45. package/docs/src/DocsShell.js +256 -0
  46. package/docs/src/ExampleHost.js +66 -0
  47. package/docs/src/docs.css +300 -0
  48. package/docs/src/docsCatalog.js +114 -0
  49. package/docs/src/main.js +8 -0
  50. package/docs/src/pages/AdditionalInputs.pages.js +190 -0
  51. package/docs/src/pages/ApplicationExtras.pages.js +95 -0
  52. package/docs/src/pages/Applications.pages.js +251 -0
  53. package/docs/src/pages/Button.page.js +117 -0
  54. package/docs/src/pages/ButtonVariants.pages.js +192 -0
  55. package/docs/src/pages/ChannelColorPicker.pages.js +28 -0
  56. package/docs/src/pages/Charts.pages.js +99 -0
  57. package/docs/src/pages/CollectionJSON.pages.js +79 -0
  58. package/docs/src/pages/Composition.page.js +106 -0
  59. package/docs/src/pages/EdgeActionLayer.page.js +59 -0
  60. package/docs/src/pages/EventsMutations.page.js +124 -0
  61. package/docs/src/pages/FileUpload.page.js +58 -0
  62. package/docs/src/pages/FinancialCharts.page.js +26 -0
  63. package/docs/src/pages/Form.page.js +129 -0
  64. package/docs/src/pages/FormJSON.page.js +40 -0
  65. package/docs/src/pages/Grid.page.js +221 -0
  66. package/docs/src/pages/GridJSON.page.js +37 -0
  67. package/docs/src/pages/IconButton.page.js +47 -0
  68. package/docs/src/pages/IconsShortcuts.pages.js +61 -0
  69. package/docs/src/pages/InputControls.pages.js +238 -0
  70. package/docs/src/pages/Layout.pages.js +205 -0
  71. package/docs/src/pages/LazyLoading.page.js +101 -0
  72. package/docs/src/pages/LifecycleOwnership.page.js +105 -0
  73. package/docs/src/pages/List.pages.js +231 -0
  74. package/docs/src/pages/ObjectModel.page.js +79 -0
  75. package/docs/src/pages/PropertyGrid.page.js +94 -0
  76. package/docs/src/pages/RemainingInputs.pages.js +51 -0
  77. package/docs/src/pages/ScrollingLabel.page.js +21 -0
  78. package/docs/src/pages/SelectInput.page.js +132 -0
  79. package/docs/src/pages/TextDisplay.pages.js +158 -0
  80. package/docs/src/pages/TextInput.page.js +96 -0
  81. package/docs/src/pages/ThemeDesigner.page.js +18 -0
  82. package/docs/src/pages/ThemesDensity.page.js +113 -0
  83. package/docs/src/pages/ToggleButton.page.js +61 -0
  84. package/docs/src/pages/ToggleIconButton.page.js +34 -0
  85. package/docs/src/pages/TreeExplorer.page.js +49 -0
  86. package/docs/src/pages/getting-started.pages.js +75 -0
  87. package/docs/src/pages/inputExamples.js +39 -0
  88. package/docs/src/pages/pageHelpers.js +16 -0
  89. package/examples/ai-recipes/01-basic-form.js +23 -0
  90. package/examples/ai-recipes/02-validation-form.js +32 -0
  91. package/examples/ai-recipes/03-select-input.js +21 -0
  92. package/examples/ai-recipes/04-toolbar-commands.js +30 -0
  93. package/examples/ai-recipes/05-grid-readonly.js +21 -0
  94. package/examples/ai-recipes/06-property-grid.js +35 -0
  95. package/examples/ai-recipes/07-dock-layout.js +30 -0
  96. package/examples/ai-recipes/08-master-detail.js +29 -0
  97. package/examples/ai-recipes/09-grid-workbench.js +399 -0
  98. package/examples/ai-recipes/10-color-picker.js +10 -0
  99. package/examples/ai-recipes/11-grid-editor-matrix.js +115 -0
  100. package/examples/ai-recipes/12-integration-contracts.d.ts +26 -0
  101. package/examples/ai-recipes/12-integration-contracts.js +244 -0
  102. package/examples/ai-recipes/README.md +36 -0
  103. package/examples/ai-recipes/integration-contracts.app.js +3 -0
  104. package/examples/ai-recipes/integration-contracts.css +6 -0
  105. package/examples/ai-recipes/integration-contracts.html +6 -0
  106. package/examples/basic-form/app.js +19 -0
  107. package/examples/basic-form/index.html +8 -0
  108. package/examples/grid-editors/README.md +42 -0
  109. package/examples/grid-editors/index.html +5 -0
  110. package/examples/grid-editors/matrix.css +23 -0
  111. package/examples/grid-editors/matrix.js +2 -0
  112. package/examples/grid-transfer/README.md +44 -0
  113. package/examples/grid-transfer/app.js +65 -0
  114. package/examples/grid-transfer/index.html +1 -0
  115. package/examples/grid-transfer/transfer.css +7 -0
  116. package/examples/grid-transfer/transfer.js +2 -0
  117. package/examples/grid-workbench/README.md +43 -0
  118. package/examples/grid-workbench/index.html +15 -0
  119. package/examples/grid-workbench/workbench.css +17 -0
  120. package/examples/grid-workbench/workbench.js +4 -0
  121. package/examples/tauri-minimal/Cargo.lock +4392 -0
  122. package/examples/tauri-minimal/Cargo.toml +14 -0
  123. package/examples/tauri-minimal/LICENSE +21 -0
  124. package/examples/tauri-minimal/README.md +43 -0
  125. package/examples/tauri-minimal/build.rs +5 -0
  126. package/examples/tauri-minimal/icons/icon.ico +0 -0
  127. package/examples/tauri-minimal/prepare.mjs +19 -0
  128. package/examples/tauri-minimal/src/main.rs +20 -0
  129. package/examples/tauri-minimal/tauri.conf.json +45 -0
  130. package/examples/tauri-minimal/web/app.css +2 -0
  131. package/examples/tauri-minimal/web/app.js +12 -0
  132. package/examples/tauri-minimal/web/index.html +1 -0
  133. package/examples/tree-move/README.md +15 -0
  134. package/examples/tree-move/app.js +46 -0
  135. package/examples/tree-move/index.html +1 -0
  136. package/examples/tree-move/move.css +5 -0
  137. package/examples/tree-move/move.js +2 -0
  138. package/examples/webview-standalone/README.md +8 -0
  139. package/examples/webview-standalone/example-esm.html +5 -0
  140. package/examples/webview-standalone/example.js +20 -0
  141. package/examples/webview-standalone/index.html +5 -0
  142. package/package.json +128 -4
  143. package/provenance/grid-candidate.json +244 -0
  144. package/provenance/source-snapshot.json +4610 -0
  145. package/spec/00-core-contracts.md +150 -0
  146. package/spec/01-control-lifecycle.md +284 -0
  147. package/spec/02-event-bus.md +357 -0
  148. package/spec/03-value-api.md +507 -0
  149. package/spec/04-data-store.md +592 -0
  150. package/spec/05-selection-model.md +402 -0
  151. package/spec/06-commands.md +527 -0
  152. package/spec/07-property-model.md +405 -0
  153. package/spec/08-import-export-model.md +399 -0
  154. package/spec/09-validation-errors.md +273 -0
  155. package/spec/10-focus-active-context.md +114 -0
  156. package/spec/11-disposables.md +100 -0
  157. package/spec/12-history-undo-redo.md +136 -0
  158. package/spec/13-dirty-state.md +62 -0
  159. package/spec/14-density-theme.md +201 -0
  160. package/spec/15-shortcut-manager.md +61 -0
  161. package/spec/16-host-bridge.md +58 -0
  162. package/spec/17-update-scheduler.md +68 -0
  163. package/spec/18-object-composition.md +157 -0
  164. package/spec/19-container-hierarchy.md +149 -0
  165. package/spec/20-size-resize.md +99 -0
  166. package/spec/21-text-input-api-audit.md +391 -0
  167. package/spec/22-interactive-control.md +178 -0
  168. package/spec/23-button-api-audit.md +369 -0
  169. package/spec/24-layout-api-audit.md +254 -0
  170. package/spec/25-panel-api-audit.md +165 -0
  171. package/spec/26-form-api-audit.md +217 -0
  172. package/spec/27-editor-control-contract.md +247 -0
  173. package/spec/28-date-time-input-api-audit.md +120 -0
  174. package/spec/29-property-grid-api-audit.md +154 -0
  175. package/spec/30-grid-filter-status-api.md +267 -0
  176. package/spec/31-grid-cell-editor-api.md +267 -0
  177. package/spec/32-grid-rendering.md +88 -0
  178. package/spec/32-shared-visual-primitives.md +71 -0
  179. package/spec/33-mdi-connectors.md +131 -0
  180. package/spec/34-icon-system.md +78 -0
  181. package/spec/34-readable-content.md +22 -0
  182. package/spec/35-multi-select-dropdown.md +50 -0
  183. package/spec/36-tabbar-overflow.md +55 -0
  184. package/spec/38-color-picker.md +63 -0
  185. package/spec/39-tree-node-drag-drop.md +76 -0
  186. package/spec/accordion.md +36 -0
  187. package/spec/channel-color-pickers.md +39 -0
  188. package/spec/edge-action-layer.md +138 -0
  189. package/spec/file-upload.md +142 -0
  190. package/spec/grid-remote-loading.md +24 -0
  191. package/spec/hiding-side-panel.md +30 -0
  192. package/spec/scrolling-label.md +50 -0
  193. package/spec/theme-applicator.md +63 -0
  194. package/spec/theme-designer.md +127 -0
  195. package/spec/trackbar-presentation.md +43 -0
  196. package/spec/tree-explorer.md +123 -0
  197. package/src/advanced/index.d.ts +17 -0
  198. package/src/advanced/index.js +15 -0
  199. package/src/components/index.d.ts +6 -0
  200. package/src/components/index.js +4 -0
  201. package/src/core/BaseControl.d.ts +135 -0
  202. package/src/core/BaseControl.js +821 -0
  203. package/src/core/CharacterRangeSelectionModel.d.ts +27 -0
  204. package/src/core/CharacterRangeSelectionModel.js +236 -0
  205. package/src/core/CommandRegistry.d.ts +34 -0
  206. package/src/core/CommandRegistry.js +354 -0
  207. package/src/core/DataStore.d.ts +79 -0
  208. package/src/core/DataStore.js +517 -0
  209. package/src/core/DataView.d.ts +79 -0
  210. package/src/core/DataView.js +481 -0
  211. package/src/core/DisposableBag.d.ts +17 -0
  212. package/src/core/DisposableBag.js +69 -0
  213. package/src/core/DocumentState.js +95 -0
  214. package/src/core/EventBus.d.ts +17 -0
  215. package/src/core/EventBus.js +129 -0
  216. package/src/core/GridColumnModel.d.ts +52 -0
  217. package/src/core/GridColumnModel.js +157 -0
  218. package/src/core/GridDataProvider.d.ts +35 -0
  219. package/src/core/GridDataProvider.js +52 -0
  220. package/src/core/GridFilterModel.d.ts +64 -0
  221. package/src/core/GridFilterModel.js +538 -0
  222. package/src/core/GridGroupModel.d.ts +64 -0
  223. package/src/core/GridGroupModel.js +95 -0
  224. package/src/core/GridSearchModel.d.ts +42 -0
  225. package/src/core/GridSearchModel.js +103 -0
  226. package/src/core/IconRegistry.d.ts +11 -0
  227. package/src/core/IconRegistry.js +136 -0
  228. package/src/core/LifecycleError.d.ts +8 -0
  229. package/src/core/LifecycleError.js +9 -0
  230. package/src/core/OverlayManager.d.ts +20 -0
  231. package/src/core/OverlayManager.js +152 -0
  232. package/src/core/RangeSelectionModel.d.ts +42 -0
  233. package/src/core/RangeSelectionModel.js +130 -0
  234. package/src/core/SelectionModel.d.ts +31 -0
  235. package/src/core/SelectionModel.js +122 -0
  236. package/src/core/ShortcutManager.d.ts +19 -0
  237. package/src/core/ShortcutManager.js +361 -0
  238. package/src/core/StaticContextProvider.js +74 -0
  239. package/src/core/TreeDataView.d.ts +79 -0
  240. package/src/core/TreeDataView.js +490 -0
  241. package/src/core/contracts.d.ts +30 -0
  242. package/src/core/index.d.ts +44 -0
  243. package/src/core/index.js +18 -0
  244. package/src/core/mutationOptions.d.ts +3 -0
  245. package/src/core/mutationOptions.js +44 -0
  246. package/src/core/pointerTracking.js +41 -0
  247. package/src/core/projectionBuild.js +45 -0
  248. package/src/core/projectionDependencies.js +22 -0
  249. package/src/core/selectionMutationGuard.js +3 -0
  250. package/src/core/validators.d.ts +4 -0
  251. package/src/core/validators.js +60 -0
  252. package/src/core/viewFilterBinding.js +54 -0
  253. package/src/core/viewSortBinding.js +15 -0
  254. package/src/foundation/index.d.ts +12 -0
  255. package/src/foundation/index.js +9 -0
  256. package/src/ui/Accordion.js +177 -0
  257. package/src/ui/Button.js +222 -0
  258. package/src/ui/CMYKColorPicker.d.ts +8 -0
  259. package/src/ui/CMYKColorPicker.js +9 -0
  260. package/src/ui/Chart.d.ts +39 -0
  261. package/src/ui/Chart.js +227 -0
  262. package/src/ui/CheckBox.d.ts +18 -0
  263. package/src/ui/CheckBox.js +135 -0
  264. package/src/ui/CheckButton.js +417 -0
  265. package/src/ui/CheckLetter.d.ts +21 -0
  266. package/src/ui/CheckLetter.js +76 -0
  267. package/src/ui/CircularSlider.d.ts +9 -0
  268. package/src/ui/CircularSlider.js +66 -0
  269. package/src/ui/CodeBlock.js +154 -0
  270. package/src/ui/CollectionPortProvider.js +63 -0
  271. package/src/ui/ColorPicker.d.ts +37 -0
  272. package/src/ui/ColorPicker.js +551 -0
  273. package/src/ui/ConnectorLayer.js +371 -0
  274. package/src/ui/ConnectorModel.js +75 -0
  275. package/src/ui/DateTimeInput.d.ts +74 -0
  276. package/src/ui/DateTimeInput.js +1583 -0
  277. package/src/ui/Dialog.js +250 -0
  278. package/src/ui/DockGroup.js +345 -0
  279. package/src/ui/DockLayout.js +1993 -0
  280. package/src/ui/DockPanel.js +289 -0
  281. package/src/ui/DropDownList.d.ts +5 -0
  282. package/src/ui/DropDownList.js +8 -0
  283. package/src/ui/EdgeActionLayer.d.ts +40 -0
  284. package/src/ui/EdgeActionLayer.js +279 -0
  285. package/src/ui/EditorControl.d.ts +114 -0
  286. package/src/ui/EditorControl.js +516 -0
  287. package/src/ui/FieldGroup.js +66 -0
  288. package/src/ui/FilePicker.d.ts +53 -0
  289. package/src/ui/FilePicker.js +354 -0
  290. package/src/ui/FileUpload.d.ts +42 -0
  291. package/src/ui/FileUpload.js +207 -0
  292. package/src/ui/Form.js +1042 -0
  293. package/src/ui/FormDefinition.d.ts +18 -0
  294. package/src/ui/FormDefinition.js +82 -0
  295. package/src/ui/Gauge.d.ts +8 -0
  296. package/src/ui/Gauge.js +48 -0
  297. package/src/ui/Grid.d.ts +109 -0
  298. package/src/ui/Grid.js +4699 -0
  299. package/src/ui/GridColumnReorderController.js +113 -0
  300. package/src/ui/GridColumnResizer.js +132 -0
  301. package/src/ui/GridCore.d.ts +44 -0
  302. package/src/ui/GridCore.js +625 -0
  303. package/src/ui/GridDefinition.d.ts +35 -0
  304. package/src/ui/GridDefinition.js +67 -0
  305. package/src/ui/GridEditors.d.ts +65 -0
  306. package/src/ui/GridEditors.js +318 -0
  307. package/src/ui/GridExporters.d.ts +32 -0
  308. package/src/ui/GridExporters.js +50 -0
  309. package/src/ui/GridKeyboardController.js +63 -0
  310. package/src/ui/GridPortProvider.js +73 -0
  311. package/src/ui/GridPrimitives.js +60 -0
  312. package/src/ui/GridRowReorderController.js +108 -0
  313. package/src/ui/GridRowTransferController.js +152 -0
  314. package/src/ui/GridSelectionController.js +85 -0
  315. package/src/ui/GridTreeMove.js +290 -0
  316. package/src/ui/GridVirtualRenderer.js +67 -0
  317. package/src/ui/GridWindowRenderer.js +357 -0
  318. package/src/ui/HeaderAction.js +62 -0
  319. package/src/ui/HidingSidePanel.d.ts +23 -0
  320. package/src/ui/HidingSidePanel.js +223 -0
  321. package/src/ui/Icon.js +52 -0
  322. package/src/ui/IconButton.js +29 -0
  323. package/src/ui/LabelText.js +81 -0
  324. package/src/ui/Layout.js +848 -0
  325. package/src/ui/List.d.ts +45 -0
  326. package/src/ui/List.js +557 -0
  327. package/src/ui/ListPortProvider.js +29 -0
  328. package/src/ui/LogPanel.js +43 -0
  329. package/src/ui/MapperWindow.js +101 -0
  330. package/src/ui/MdiWindow.js +226 -0
  331. package/src/ui/MdiWorkspace.js +99 -0
  332. package/src/ui/Menu.js +915 -0
  333. package/src/ui/MessageBox.js +34 -0
  334. package/src/ui/MultiSelectDropDown.d.ts +56 -0
  335. package/src/ui/MultiSelectDropDown.js +226 -0
  336. package/src/ui/NumberInput.d.ts +56 -0
  337. package/src/ui/NumberInput.js +238 -0
  338. package/src/ui/OptionList.d.ts +25 -0
  339. package/src/ui/OptionList.js +211 -0
  340. package/src/ui/Panel.js +372 -0
  341. package/src/ui/Popup.js +170 -0
  342. package/src/ui/ProgressBar.d.ts +29 -0
  343. package/src/ui/ProgressBar.js +223 -0
  344. package/src/ui/PropertyDescription.js +104 -0
  345. package/src/ui/PropertyGrid.js +813 -0
  346. package/src/ui/PropertyGridDefinition.d.ts +15 -0
  347. package/src/ui/PropertyGridDefinition.js +56 -0
  348. package/src/ui/PropertyInspector.js +111 -0
  349. package/src/ui/RGBColorPicker.d.ts +3 -0
  350. package/src/ui/RGBColorPicker.js +5 -0
  351. package/src/ui/RadioGroup.d.ts +50 -0
  352. package/src/ui/RadioGroup.js +526 -0
  353. package/src/ui/RadioLetter.d.ts +10 -0
  354. package/src/ui/RadioLetter.js +21 -0
  355. package/src/ui/ReadonlyText.js +18 -0
  356. package/src/ui/ScrollingLabel.d.ts +16 -0
  357. package/src/ui/ScrollingLabel.js +77 -0
  358. package/src/ui/SelectInput.d.ts +102 -0
  359. package/src/ui/SelectInput.js +974 -0
  360. package/src/ui/StaticPortProvider.js +144 -0
  361. package/src/ui/StatusText.js +18 -0
  362. package/src/ui/StepProgressBar.d.ts +69 -0
  363. package/src/ui/StepProgressBar.js +711 -0
  364. package/src/ui/Switch.d.ts +33 -0
  365. package/src/ui/Switch.js +250 -0
  366. package/src/ui/TabBar.js +929 -0
  367. package/src/ui/TextArea.d.ts +60 -0
  368. package/src/ui/TextArea.js +326 -0
  369. package/src/ui/TextField.js +364 -0
  370. package/src/ui/TextInput.d.ts +41 -0
  371. package/src/ui/TextInput.js +3 -0
  372. package/src/ui/TextLayout.js +379 -0
  373. package/src/ui/ThemeApplicator.d.ts +20 -0
  374. package/src/ui/ThemeApplicator.js +83 -0
  375. package/src/ui/ThemeDesigner.d.ts +41 -0
  376. package/src/ui/ThemeDesigner.js +53 -0
  377. package/src/ui/ToggleIconButton.js +33 -0
  378. package/src/ui/ToolButton.js +113 -0
  379. package/src/ui/Toolbar.js +153 -0
  380. package/src/ui/Tooltip.js +139 -0
  381. package/src/ui/TrackBar.d.ts +54 -0
  382. package/src/ui/TrackBar.js +460 -0
  383. package/src/ui/TreeDefinition.d.ts +13 -0
  384. package/src/ui/TreeDefinition.js +12 -0
  385. package/src/ui/TreeExplorer.d.ts +53 -0
  386. package/src/ui/TreeExplorer.js +321 -0
  387. package/src/ui/TreeGrid.d.ts +57 -0
  388. package/src/ui/TreeGrid.js +2977 -0
  389. package/src/ui/TreeGridDefinition.d.ts +11 -0
  390. package/src/ui/TreeGridDefinition.js +25 -0
  391. package/src/ui/TreeList.js +643 -0
  392. package/src/ui/TreeListPortProvider.js +8 -0
  393. package/src/ui/TreeNodeDragController.js +501 -0
  394. package/src/ui/advanced-contracts.d.ts +110 -0
  395. package/src/ui/all.d.ts +2 -0
  396. package/src/ui/all.js +2 -0
  397. package/src/ui/application-contracts.d.ts +165 -0
  398. package/src/ui/channelColorPicker.js +77 -0
  399. package/src/ui/chartGeometry.js +112 -0
  400. package/src/ui/collection-contracts.d.ts +103 -0
  401. package/src/ui/container-contracts.d.ts +118 -0
  402. package/src/ui/definitionEditors.js +58 -0
  403. package/src/ui/definitionValidation.js +58 -0
  404. package/src/ui/dense.css +2 -0
  405. package/src/ui/display-contracts.d.ts +135 -0
  406. package/src/ui/experimental.d.ts +219 -0
  407. package/src/ui/experimental.js +85 -0
  408. package/src/ui/fileUploadQueue.js +191 -0
  409. package/src/ui/fonts/NotoSans-OFL.txt +93 -0
  410. package/src/ui/fonts/NotoSans-variable.woff2 +0 -0
  411. package/src/ui/fonts/README.md +24 -0
  412. package/src/ui/grid-api.d.ts +20 -0
  413. package/src/ui/grid-api.js +22 -0
  414. package/src/ui/grid-columns.d.ts +45 -0
  415. package/src/ui/grid-controllers.d.ts +62 -0
  416. package/src/ui/grid-editor-contracts.d.ts +131 -0
  417. package/src/ui/grid-editor-options.d.ts +153 -0
  418. package/src/ui/grid-events.d.ts +102 -0
  419. package/src/ui/grid-options.d.ts +129 -0
  420. package/src/ui/gridEditorFactory.js +7 -0
  421. package/src/ui/gridEditorLifecycle.js +198 -0
  422. package/src/ui/gridIntrinsicWidth.js +33 -0
  423. package/src/ui/gridSelectionState.js +86 -0
  424. package/src/ui/gridStringCompare.js +7 -0
  425. package/src/ui/gridWindowGeometry.js +60 -0
  426. package/src/ui/icons/core-icons.js +81 -0
  427. package/src/ui/index.d.ts +125 -0
  428. package/src/ui/index.js +32 -0
  429. package/src/ui/input-choice-contracts.d.ts +14 -0
  430. package/src/ui/inputs.d.ts +51 -0
  431. package/src/ui/inputs.js +24 -0
  432. package/src/ui/itemGeometry.js +41 -0
  433. package/src/ui/localize.js +5 -0
  434. package/src/ui/overlayGeometry.js +12 -0
  435. package/src/ui/resourceModel.js +94 -0
  436. package/src/ui/styles/accordion.css +62 -0
  437. package/src/ui/styles/base.css +62 -0
  438. package/src/ui/styles/buttons.css +244 -0
  439. package/src/ui/styles/charts.css +41 -0
  440. package/src/ui/styles/choice-letter.css +69 -0
  441. package/src/ui/styles/circular-slider.css +10 -0
  442. package/src/ui/styles/code-block.css +64 -0
  443. package/src/ui/styles/color-picker.css +266 -0
  444. package/src/ui/styles/display.css +35 -0
  445. package/src/ui/styles/dock.css +400 -0
  446. package/src/ui/styles/edge-action-layer.css +21 -0
  447. package/src/ui/styles/editors.css +1955 -0
  448. package/src/ui/styles/file-upload.css +26 -0
  449. package/src/ui/styles/fonts.css +8 -0
  450. package/src/ui/styles/form.css +107 -0
  451. package/src/ui/styles/grid.css +1149 -0
  452. package/src/ui/styles/header-actions.css +75 -0
  453. package/src/ui/styles/hiding-side-panel.css +40 -0
  454. package/src/ui/styles/icons.css +8 -0
  455. package/src/ui/styles/layout.css +162 -0
  456. package/src/ui/styles/lists.css +257 -0
  457. package/src/ui/styles/mdi.css +199 -0
  458. package/src/ui/styles/menu.css +123 -0
  459. package/src/ui/styles/overlay.css +113 -0
  460. package/src/ui/styles/property-grid.css +309 -0
  461. package/src/ui/styles/scrollbars.css +63 -0
  462. package/src/ui/styles/scrolling-label.css +4 -0
  463. package/src/ui/styles/tabs.css +337 -0
  464. package/src/ui/styles/text-layout.css +137 -0
  465. package/src/ui/styles/tokens.css +255 -0
  466. package/src/ui/styles/toolbar.css +23 -0
  467. package/src/ui/styles/trackbar-presentation.css +32 -0
  468. package/src/ui/styles/tree-explorer.css +16 -0
  469. package/src/ui/styles/tree-grid.css +29 -0
  470. package/src/ui/svg.js +6 -0
  471. package/src/ui/taet-ui.css +38 -0
  472. package/src/ui/theme-designer/base-color.js +28 -0
  473. package/src/ui/theme-designer/color-math.js +41 -0
  474. package/src/ui/theme-designer/editor-model.js +20 -0
  475. package/src/ui/theme-designer/editor.js +135 -0
  476. package/src/ui/theme-designer/foreground-resolver.js +68 -0
  477. package/src/ui/theme-designer/harmony.js +15 -0
  478. package/src/ui/theme-designer/host-api.js +14 -0
  479. package/src/ui/theme-designer/notice.js +49 -0
  480. package/src/ui/theme-designer/preset-toolbar.js +58 -0
  481. package/src/ui/theme-designer/preview.js +70 -0
  482. package/src/ui/theme-designer/reference-tokens.js +147 -0
  483. package/src/ui/theme-designer/role-distribution.js +19 -0
  484. package/src/ui/theme-designer/scope-model.js +70 -0
  485. package/src/ui/theme-designer/serialization.js +41 -0
  486. package/src/ui/theme-designer/stack-model.js +14 -0
  487. package/src/ui/theme-designer/stack.js +38 -0
  488. package/src/ui/theme-designer/template.js +5 -0
  489. package/src/ui/theme-designer/theme-generator.js +138 -0
  490. package/src/ui/theme-designer/theme-presets.js +10 -0
  491. package/src/ui/theme-designer/theme-scopes.js +81 -0
  492. package/src/ui/theme-designer/wheel-geometry.js +20 -0
  493. package/src/ui/theme-designer/wheel-spectrum.js +28 -0
  494. package/src/ui/theme-designer/wheel.js +46 -0
  495. package/src/ui/treeDefinitionSupport.js +52 -0
  496. package/src/ui/treeExpansion.js +44 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,87 @@
1
+ # Tæt UI changes
2
+
3
+ ## 0.6.0-rc.3 — local migration, 2026-11-03
4
+
5
+ - Rename display branding to Tæt UI, package/imports/assets to taet-ui.
6
+ - Preserve the released rc.2 framework scope and zero runtime dependencies.
7
+ - Integrate the accepted PropertyGrid gutter-border and selection-marker CSS patch.
8
+ - Retain legacy CSS selectors, tokens, drag/theme formats and the dense.css alias.
9
+ - Start new history, preserving the original Dense UI folders/tags and provenance.
10
+ - Use owned Node HTTP fixtures for browser gates; retain all assertions.
11
+ - Add classic TaetUI IIFE delivery alongside ESM, with minified variants and portable ZIP examples/checksums.
12
+ - Prepare public npm metadata and the next preview channel; publication outcomes are verified separately. See docs/TAET_MIGRATION.md.
13
+
14
+ The following Dense UI changelog is historical and keeps released identities.
15
+
16
+ # Changelog
17
+
18
+ ## 0.6.0-rc.2 - preview (2026-11-02)
19
+
20
+ - TreeGrid compares pairs of valid Date values by timestamp. Equal timestamps remain stable within siblings; null placement, locale, and the legacy invalid/mixed-value fallback are unchanged. See `docs/GRID_TYPES.md`.
21
+ - Grid and TreeGrid settings buttons use a deterministic decorative SVG in the existing 10px service gutter. Row markers, drag gestures, menu scope, and keyboard focus remain unchanged.
22
+ - Added checked integration recipes for DTO dialog results, guarded asynchronous work and retry, master/detail context, ownership, application UI snapshots, and resize persistence. No new public runtime API or default policy is introduced.
23
+ - Fixed Switch cell-editor activation on WebKit so the native label default cannot override deliberate application focus. One toggle and callback-safe teardown are preserved. Forwarded private DOM clicks are synthetic (`isTrusted: false`); the original visual-label event is prevented. See `docs/GRID_EDITOR_MATRIX.md`.
24
+ - Browser fixtures await actual Date DOM paint, Mapper port geometry and editor focus before assertions or keyboard injection. Strict behavior assertions and global timeouts are unchanged.
25
+ - Windows CI uses two workers after a recorded `ERR_NO_BUFFER_SPACE` module-load failure. This is a conservative mitigation, not a proven explanation of the historical retained-renderer failure.
26
+ - The feedback base passed full Windows/Linux Node22/24 CI, three-engine compatibility and bundle gates. Its Windows Tauri/WebView2 stand passed 46/46 programmatic checks in each of two launches; the maintainer subsequently reported the manual interactive check passed. Exact inputs and limits are in `docs/VERIFICATION.md` and `docs/NATIVE_ACCEPTANCE.md`. The rc.1 tag and historical failed runs remain unchanged.
27
+
28
+ ## 0.6.0-rc.1 - preview
29
+
30
+ ### Working checkpoint - 2026-11-01
31
+
32
+ User hands-on acceptance confirmed Grid editing/editor fonts, the 10px gutter
33
+ and per-selected-row markers, multi-select, pinning/column reorder, cross-Grid
34
+ move/copy and local TreeGrid node-with-subtree moves. This local checkpoint
35
+ preserves the tested desktop baseline, not a publication or universal readiness
36
+ claim. Tree copy/cross-tree/remote/custom providers remain outside this scope;
37
+ a separate Windows Tauri/WebView2 stand later passed bounded programmatic checks
38
+ and user-observed row/subtree moves. Full physical input/IME and remote CI remain
39
+ unverified. Exact scope: docs/VERIFICATION.md and docs/NATIVE_ACCEPTANCE.md.
40
+
41
+
42
+ Grid column QA: measured multi-pin header/editor geometry, live backward-move
43
+ focus, stale/reentrant drag protection and delta Tree expanded-state restore.
44
+ The optional workbench column mode and editor matrix demonstrate row multi-select
45
+ with per-row markers; Check/Radio now have passive read visuals.
46
+
47
+ Managed overlays now use the common bundled-font tokens. The editor matrix shows
48
+ Switch state using the existing static indicator and explicit transactional edit
49
+ activation, with passive read visuals and no per-row Controls.
50
+
51
+ Grid editor matrix: nine existing factories on Grid/TreeGrid, typed nullable
52
+ Select values, common closed-Select/popup keyboard policy, compact Select/Radio
53
+ geometry, popup resize/focus and callback-safe teardown; live recipe11/example.
54
+ Disabling a table now silently cancels its draft and releases the owned popup.
55
+
56
+ Grid/TreeGrid indicator gutter now defaults to 10px instead of 20px; explicit
57
+ CSS widths and gutter/menu opt-outs remain supported.
58
+
59
+ - Foundation/components/advanced aliases over existing constructors; maturity unchanged.
60
+ - Specialized raster/Painter/StockChart/FlatFile/Spectrum/Pivot delivery deferred.
61
+ Reader must retain its complete pinned 0.5 bundle.
62
+ - Form removes logical slots/values/subscriptions; composition owns children before mount.
63
+ - Stop late callback phases after teardown; ignore focus events during destruction.
64
+ - Reject terminal admission, duplicate/prototype keys and ownership cycles atomically.
65
+ - ShortcutManager respects defaultPrevented/IME, explicit editor opt-in, semantic keys
66
+ and exact Meta priority over portable Ctrl/Cmd fallback.
67
+ - Grid/TreeGrid share silent selection invalidation, safe selection reentry, keyboard
68
+ editing, beforeEditStart/commit metadata and schema reconciliation. Legacy APIs remain.
69
+ - Read-only tables no longer import the built-in editor catalog just to check a factory.
70
+ - Desktop tree/table/property workbench demonstrates shared data and edit context.
71
+ - Imported source hashes remain immutable; approved table changes have a separate candidate manifest.
72
+ - Runnable mutation example, exact docs routes, coherent assets and honest provenance.
73
+
74
+ Compatibility: duplicate pending Form slots now fail early; shortcuts in text
75
+ editors require opt-in. Specialized exports are intentionally absent, not emulated.
76
+
77
+ Table compatibility: legacy getSortState return types and Tree string/function
78
+ filters remain. getSortModel returns Rule[] on both. clearAllFilters({search})
79
+ explicitly chooses scope; omission retains each legacy default. Tab/Shift+Tab
80
+ now exit at editable boundaries rather than wrapping; invalid drafts retain focus.
81
+
82
+ - Shared presentation gutter (now 10px by default) carries the selected-row accent and table menu.
83
+ Columns/Best fit all/global clears moved out of local column menus; reset is
84
+ explicitly column layout only. Shared indicatorGutter/gridMenu constructor
85
+ opt-outs preserve compact embedded layouts; data/ARIA/range/export indices stay.
86
+ - At a document edge with no external tabbable, Tab commits and releases table
87
+ focus to the document body consistently in Chromium/Firefox/WebKit.
@@ -0,0 +1,15 @@
1
+ # Contributing
2
+
3
+ Start with README, AGENTS.md, docs/AI_CONTEXT.md and the relevant docs/AI_MAP.md row.
4
+ Read exact declarations and a checked recipe before changing a public contract.
5
+ Runtime stays dependency-free. Preserve ownership/lifecycle, tier and maturity rules.
6
+
7
+ Table changes require explicit approval and review before regenerating the separate
8
+ candidate hashes. The immutable imported snapshot must retain its original bytes.
9
+ Run shared/table regressions when changing shared mechanics.
10
+
11
+ Use npm ci and npm test; then test:all, relevant compatibility/bundle gates and pack
12
+ inspection. Browser binaries are separate development prerequisites. Regenerate
13
+ API inventories after export changes. Keep exact results/limits in docs/VERIFICATION.md.
14
+ Do not commit generated dist/node_modules/reports/caches, binaries or private data.
15
+ Publication is a separate maintainer action. See docs/VERSIONING.md and SECURITY.md.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Edward Aponasko
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,133 @@
1
- # Temporary Holding Version
1
+ # Tæt UI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Compact desktop UI controls for embedded WebViews. Build screens with live
4
+ JavaScript objects, explicit ownership, events, commands and data models.
5
+ No JSX, virtual DOM, runtime npm dependencies or CDN.
6
+
7
+ **0.6.0-rc.3 is a pre-1.0 preview.** Grid/TreeGrid and Advanced remain experimental.
8
+ Source packages and standalone WebView ZIPs are separate delivery choices.
9
+ The npm preview channel uses `next`: `npm install taet-ui@next`; publication
10
+ status is recorded in the matching GitHub prerelease notes.
11
+
12
+ Display name: **Tæt UI**. Package and technical names: **taet-ui**.
13
+ Repository: [edward-ap/taet-ui](https://github.com/edward-ap/taet-ui).
14
+ See the [migration inventory](docs/TAET_MIGRATION.md) and [verification](docs/VERIFICATION.md).
15
+
16
+ ## Standalone WebView distribution
17
+
18
+ `npm run distribution` builds/minifies the library and produces versioned ZIPs in
19
+ ignored `distribution/`. Release builds use `npm run distribution -- --release`
20
+ from a clean commit. GitHub prerelease assets include one ZIP for each profile:
21
+ full, components and foundation. Each contains matching CSS/fonts/licenses,
22
+ readable/minified ESM and classic IIFE JavaScript, examples, provenance and SHA-256.
23
+ Use one profile and one JS format in each document. Classic scripts expose `TaetUI`;
24
+ ESM files export named bindings. Both target ES2022 without API polyfills.
25
+
26
+ Each ZIP has a working `index.html` (classic IIFE) and `example-esm.html`. Serve
27
+ through a WebView origin or HTTP; local-file access depends on host policy.
28
+ Node/Python/npm are build/preview tools, not packaged-application dependencies.
29
+ Generated ZIPs and `dist/` stay out of Git. The npm package delivers typed ESM
30
+ source and CSS/font assets for resolver/bundler consumers.
31
+
32
+ ```js
33
+ // Browser application with a resolver/bundler and its CSS loader:
34
+ import {Panel, Form, TextInput, Button} from 'taet-ui';
35
+ import 'taet-ui/taet-ui.css';
36
+ ```
37
+
38
+
39
+ ## Try it
40
+
41
+ Build prerequisites: Node 22+, npm and Python 3.10+ on PATH. They are development
42
+ tools; a packaged application does not need a Node/Python server. Your host
43
+ must provide a compatible system WebView runtime.
44
+
45
+ ```sh
46
+ npm ci
47
+ npm run build
48
+ npm run dev
49
+ ```
50
+
51
+ Open http://127.0.0.1:5173/examples/basic-form/index.html.
52
+ With that server running, also open the [workbench](http://127.0.0.1:5173/examples/grid-workbench/),
53
+ [editor matrix](http://127.0.0.1:5173/examples/grid-editors/), [Grid transfer](http://127.0.0.1:5173/examples/grid-transfer/)
54
+ and [tree movement](http://127.0.0.1:5173/examples/tree-move/).
55
+
56
+ Documentation: http://127.0.0.1:5173/docs/index.html, or run `npm run docs`
57
+ for http://127.0.0.1:5174/docs/index.html.
58
+ If a port is occupied, use `npm run dev -- --port 5641` and the corresponding URL.
59
+ In Windows PowerShell, use `npm.cmd run dev -- --port 5641` if the npm.ps1 shim
60
+ consumes forwarded options. Check `node --version`, `npm --version` and
61
+ `python --version` before starting.
62
+
63
+ ## Use it in a WebView
64
+
65
+ Copy one built profile's JS, matching CSS, `fonts/`, `LICENSE` and
66
+ `THIRD_PARTY_NOTICES.md` into your app. Full is `dist/`; subsets are
67
+ `dist/components/` and `dist/foundation/`. Use one library instance per document.
68
+ Serve modules from a WebView origin/custom protocol or HTTP. Do not assume that
69
+ opening ES modules directly through `file://` works in every host.
70
+
71
+ ```html
72
+ <link rel="stylesheet" href="./taet-ui.min.css">
73
+ <body class="dui-page dui-theme-light-blue">
74
+ <main id="app"></main>
75
+ <script type="module" src="./app.js"></script>
76
+ </body>
77
+ ```
78
+
79
+ ```js
80
+ import {Panel, Form, TextInput, Button} from './taet-ui.min.js';
81
+ const name = new TextInput({name: 'name', label: 'Customer', value: 'Ada'});
82
+ const form = new Form().row(name);
83
+ form.row(new Button({text: 'Save', onClick() { console.log(form.value.get()); }}));
84
+ const screen = new Panel('#app').add(form);
85
+ export function destroy() { screen.destroy(); } // Host calls this when closing.
86
+ ```
87
+
88
+ A source-only [minimal Tauri host](examples/tauri-minimal/README.md) demonstrates
89
+ a compact Form and bounded Rust echo. Its historical Dense UI Windows smoke passed
90
+ 7/7 programmatic checks. A renamed Tæt UI native rebuild, physical input and other OSes remain unverified.
91
+
92
+ For TypeScript or resolver-based apps, `npm pack --pack-destination ..` creates
93
+ the local `taet-ui-0.6.0-rc.3.tgz`. Install that file in your app with
94
+ `npm install ../taet-ui-0.6.0-rc.3.tgz`. Bare package names need a resolver or
95
+ browser import map; installing a tarball does not create native browser URLs.
96
+
97
+ | Import | Scope |
98
+ | --- | --- |
99
+ | `taet-ui/foundation` | Lifecycle, events, commands, models, validators, icons and themes |
100
+ | `taet-ui/components` | Layouts, forms, inputs, lists, tables, properties and indicators |
101
+ | `taet-ui/advanced` | MDI, docking, generic charts, mapping and theme editor |
102
+ | `taet-ui` | Stable root; legacy subpaths remain for retained APIs |
103
+ | `taet-ui/taet-ui.css` | Styles and local font |
104
+
105
+ [Architecture tiers](docs/TIERS.md) and [API maturity](docs/STABLE_API.md) are
106
+ separate. A tier name does not promote an experimental API. For changing a live
107
+ screen, read [mutation/ownership examples](docs/MUTATIONS.md).
108
+
109
+ ## Preview limits
110
+
111
+ Current migration checks are recorded in [verification](docs/VERIFICATION.md).
112
+ Earlier Dense UI results identify their original inputs and are historical evidence.
113
+
114
+ Recorded checks include Windows browser automation and a separate Windows
115
+ Tauri/WebView2 acceptance stand. Programmatic/synthetic input is distinguished
116
+ from physical input in [verification](docs/VERIFICATION.md).
117
+ macOS and Linux native hosts are **not verified**. macOS will be checked in a new
118
+ consumer project after GitHub publication; it is not a blocker for this preview.
119
+ Real IME, screen-reader, native file-dialog and mixed-DPI acceptance remain unverified.
120
+
121
+ Grid row transfer is local and opt-in. Tree subtree movement is inside one local
122
+ tree; cross-tree copy/move and remote/custom providers are outside that contract.
123
+ Raster/Painter/StockChart/FlatFile/Spectrum/Pivot are [deferred extensions](docs/EXTENSIONS.md).
124
+
125
+ For contributors: [setup/checks](CONTRIBUTING.md), [AI entry point](docs/AI_CONTEXT.md),
126
+ [preview version recommendations](docs/VERSIONING.md), [changelog](CHANGELOG.md), [security](SECURITY.md).
127
+ Browser tests additionally require matching Playwright binaries; `npm ci` alone
128
+ does not install them. After npm ci, use `npx playwright install chromium firefox webkit`.
129
+ For selective Windows project flags, use the direct-node commands in
130
+ [release checks](docs/RELEASE.md). CI definitions are provided; no remote CI pass is claimed.
131
+
132
+ Tæt UI is [MIT](LICENSE). Local Noto Sans is OFL; retain its license and
133
+ [third-party notices](THIRD_PARTY_NOTICES.md) when distributing assets.
package/SECURITY.md ADDED
@@ -0,0 +1,37 @@
1
+ # Security
2
+
3
+ This pre-1.0 project does not currently offer a supported-version security policy. The development HTTP server is for trusted local development, not production hosting.
4
+
5
+ After GitHub publication, use the repository's private vulnerability reporting channel when enabled. Do not post credentials, personal data or exploit details in public issues. The publication checklist requires enabling that channel before advertising it as available.
6
+
7
+ Reports should identify the affected revision, component, reproducible trigger and impact. Use synthetic or anonymized datasets.
8
+
9
+ ## Data and application-code boundaries
10
+
11
+ Built-in TextLayout, CodeBlock, list captions and default Grid cells display text
12
+ as text, not HTML. Imported JSON definitions are data; field identifiers including
13
+ `__proto__` remain own data properties. Regression cases cover these boundaries.
14
+ Custom renderers returning DOM Nodes, factories, validators, icon registrations
15
+ and service callbacks are trusted application code: Tæt UI does not sandbox them.
16
+ Do not construct such callbacks from imported strings or untrusted code.
17
+
18
+ Select/TreeGrid image URLs are assigned to image elements. They can cause network
19
+ requests; applications must decide which origins and image sources are acceptable.
20
+ Text escaping does not provide network isolation. Deploy an appropriate host origin,
21
+ navigation and content policy; the local development server is not that policy.
22
+
23
+ ## Files and exported data
24
+
25
+ Specialized file parsers and preview pipelines are deferred extensions and are not included in this candidate.
26
+
27
+ CSV/TSV exporters preserve raw values by default. For spreadsheet-oriented output,
28
+ use `gridExporters.csv({ escapeFormulas: true })` (also available for TSV and the
29
+ generic delimited exporter). It prefixes formula-like string values and headers
30
+ with an apostrophe, including leading whitespace/control-character cases, while
31
+ preserving numeric values. This changes exported text and is deliberately opt-in.
32
+ It is not a guarantee for every spreadsheet application or subsequent re-export;
33
+ review the receiving application's import policy. Workbook descriptors retain raw
34
+ values and require the downstream writer to choose cell types safely.
35
+
36
+ The current hardening review is a scoped internal audit, not a security certification
37
+ or an exhaustive review of every renderer, host integration and input format.
@@ -0,0 +1,45 @@
1
+ # Third-party notices
2
+
3
+ Dense UI source is licensed under [MIT](LICENSE). Core has no npm runtime dependencies. No external icon font or icon package is bundled; icons are implemented in the source registry.
4
+
5
+ Development tests use [Playwright](https://github.com/microsoft/playwright), licensed under Apache-2.0. Installed packages and downloaded browser distributions retain their own notices and are not included in the Dense UI package.
6
+
7
+ Declaration and package-consumer tests use [TypeScript](https://github.com/microsoft/TypeScript), licensed under Apache-2.0. It is a development dependency and is not shipped in the Dense UI package or required at runtime.
8
+
9
+ New third-party source, artwork or fonts must include attribution and license. This inventory describes the checked-in tree and manifests, not undisclosed historical provenance.
10
+
11
+ ## Default UI font
12
+
13
+ `src/ui/fonts/NotoSans-variable.woff2` is a container-only conversion of the Google
14
+ Fonts Noto Sans upright variable font, bundled locally under SIL OFL 1.1. All
15
+ glyphs, metrics, hinting and variation tables are preserved; no subsetting is used.
16
+ Copyright and full license: `src/ui/fonts/NotoSans-OFL.txt` in source/package
17
+ delivery, or `fonts/NotoSans-OFL.txt` beside a portable bundle.
18
+ Source/conversion provenance is in the repository file `src/ui/fonts/README.md`.
19
+ Runtime WOFF2 SHA-256: `7ed77c38412a34312e975abcd5eb2b2848a596f1921393f925a53a27938eb116`.
20
+ The font license is separate from Dense UI's MIT license.
21
+
22
+ ## Optional font comparison Lab
23
+
24
+ `examples/labs/fonts/NotoSans-variable.ttf` and `Roboto-variable.ttf` are original
25
+ Google Fonts distributions under SIL OFL 1.1. Their respective copyright and license
26
+ files are `NotoSans-OFL.txt` and `Roboto-OFL.txt` in the same directory; exact sources
27
+ and file hashes are recorded in `sources.json`. The Lab copies are not packaged; the Noto Sans runtime copy is described above.
28
+ Roboto is only used in the comparison. Segoe UI is accessed
29
+ from the host OS only and is not redistributed.
30
+
31
+ ## Theme Designer color math
32
+
33
+ The Theme Designer OKLab conversion uses the public-domain matrix implementation
34
+ by Björn Ottosson (2021 revision), with local JavaScript sRGB transfer functions
35
+ and chroma gamut search. Source and permission: https://bottosson.github.io/posts/oklab/ .
36
+ No color library or new runtime dependency is included.
37
+
38
+ ## Build tool
39
+
40
+ Portable bundles use esbuild (MIT) as a development/build dependency. Its code is
41
+ not a required runtime library in the Dense UI delivery. Source: https://github.com/evanw/esbuild .
42
+
43
+ An optional Tauri source example has separate Rust host dependencies. Those are
44
+ not Dense UI JavaScript runtime dependencies; source users retain their upstream
45
+ licenses. A distributed native binary needs its own resolved dependency notice review.
@@ -0,0 +1,23 @@
1
+ # Tæt UI: start here
2
+
3
+ 0.6.0-rc.3 is a dependency-free desktop/WebView preview.
4
+
5
+ 1. Read [LLM_GUIDE](LLM_GUIDE.md), then one [AI_MAP](AI_MAP.md) row.
6
+ 2. Read its exact public .d.ts and one recipe before guessing a method.
7
+ 3. [TIERS](TIERS.md) is architecture; [STABLE_API](STABLE_API.md) is maturity.
8
+ 4. To change existing UI read [MUTATIONS](MUTATIONS.md).
9
+
10
+ Use live controls. Form owns composed rows/columns before mount; general Panel
11
+ must be mounted before add/attach. One child has one owner. Form.remove and owned
12
+ child.destroy forget fields/values/slots. Duplicate keys fail before ownership/mount.
13
+ Fields use .value; collections mutate through DataStore. Silent still synchronizes
14
+ UI/models without semantic events. Options are not reactive property assignments.
15
+ Destroy the owner; release borrowed application services separately. Register
16
+ external cleanup as () => service.destroy(), not the Control object itself.
17
+
18
+ Portable apps use one JS profile with matching CSS/fonts/licenses. Never mix
19
+ source, bundles or separately built profiles in one document. Grid changes require explicit approval and candidate hash updates;
20
+ run regressions after table/shared changes. [Common table contract](GRID_COMMON_CONTRACT.md). Specialized extensions are absent:
21
+ [EXTENSIONS](EXTENSIONS.md). HostBridge/general JSON engine are not supplied.
22
+ Concrete existing JSON factories remain with components. Reports/proposals are not
23
+ shipped implementations. Current work: [ROADMAP](../ROADMAP.md), [checks](VERIFICATION.md).
package/docs/AI_MAP.md ADDED
@@ -0,0 +1,19 @@
1
+ # Task, contract and source map
2
+
3
+ Read one row, exact types and one recipe before changing behavior.
4
+
5
+ | Task | Contract / types | Source / regression |
6
+ | --- | --- | --- |
7
+ | Lifecycle / focus | [control contract](CONTROL_TYPES.md), [BaseControl](../src/core/BaseControl.d.ts) | [BaseControl source](../src/core/BaseControl.js), [regressions](../test/foundation-regressions.test.js) |
8
+ | Form / ownership / live edits | [containers](../src/ui/container-contracts.d.ts), [mutations](MUTATIONS.md) | [Panel](../src/ui/Panel.js), [Form](../src/ui/Form.js), [browser](../browser-tests/foundation-regressions.spec.js), [recipe](../examples/ai-recipes/01-basic-form.js) |
9
+ | Events / values / validation | [inputs](INPUT_TYPES.md), [EditorControl types](../src/ui/EditorControl.d.ts) | [EventBus](../src/core/EventBus.js), [EditorControl](../src/ui/EditorControl.js), [recipe](../examples/ai-recipes/02-validation-form.js) |
10
+ | Data / projections / selection | [model contracts](DATA_MODEL_TYPES.md), [core types](../src/core/index.d.ts) | [DataStore](../src/core/DataStore.js), [DataView](../src/core/DataView.js), [TreeDataView](../src/core/TreeDataView.js) |
11
+ | Commands / shortcuts | [command types](../src/core/CommandRegistry.d.ts), [keyboard](../spec/15-shortcut-manager.md) | [ShortcutManager](../src/core/ShortcutManager.js), [recipe](../examples/ai-recipes/04-toolbar-commands.js) |
12
+ | Theme service / editor | [applicator](../src/ui/ThemeApplicator.d.ts), [designer](../src/ui/ThemeDesigner.d.ts) | [applicator source](../src/ui/ThemeApplicator.js), [browser](../browser-tests/theme-applicator.spec.js) |
13
+ | Existing JSON factories | [Form](FORM_JSON.md), [Grid](GRID_JSON.md), [collections](COLLECTION_JSON.md) | FormDefinition/GridDefinition/TreeDefinition and their existing regressions |
14
+ | Grid / TreeGrid | [guide](GRID_TYPES.md), [menu/gutter](GRID_MENUS.md), [layout/selection](GRID_COLUMN_LAYOUT.md), [row transfer](GRID_TRANSFER.md), [subtree move](TREE_GRID_MOVE.md), [editors](GRID_EDITOR_MATRIX.md), [exact entry](../src/ui/grid-api.d.ts) | [Grid](../src/ui/Grid.js), [TreeGrid](../src/ui/TreeGrid.js), [candidate-hash guard](../scripts/check-package-boundaries.js), [recipe](../examples/ai-recipes/05-grid-readonly.js) |
15
+ | Lists / properties / inputs | [collections](../src/ui/collection-contracts.d.ts), [inputs](../src/ui/inputs.d.ts) | [PropertyGrid](../src/ui/PropertyGrid.js), [List](../src/ui/List.js), [recipe](../examples/ai-recipes/06-property-grid.js) |
16
+ | Existing Advanced | [entry](../src/advanced/index.d.ts), [Chart](CHARTS.md) | MDI/docking/mapping, Chart/Gauge, ThemeDesigner; no new advanced features here |
17
+
18
+ Current [tiers](TIERS.md), [maturity](STABLE_API.md), [build](BUILD.md),
19
+ [release gates](RELEASE.md), [verification](VERIFICATION.md), [extensions](EXTENSIONS.md).
@@ -0,0 +1,7 @@
1
+ # Focused lookup
2
+
3
+ Use [AI_MAP](AI_MAP.md) for exact declarations, not duplicated signatures.
4
+ [Mutations](MUTATIONS.md), [inputs](INPUT_TYPES.md), [models](DATA_MODEL_TYPES.md),
5
+ [Grid](GRID_TYPES.md), [editors](GRID_EDITOR_TYPES.md), [tiers](TIERS.md),
6
+ [maturity](STABLE_API.md), [delivery](BUILD.md), [native limits](NATIVE_ACCEPTANCE.md)
7
+ and [extensions](EXTENSIONS.md) are current. History is retained in the archive.
package/docs/BUILD.md ADDED
@@ -0,0 +1,42 @@
1
+ # Portable delivery
2
+
3
+ From a source checkout run npm ci and npm run build. Exact-pinned esbuild is
4
+ build-only. Runtime does not require Node/Python or a server.
5
+
6
+ Dist contains readable/minified ESM/CSS/maps, fonts/NotoSans-variable.woff2 + OFL,
7
+ LICENSE/notices/README, size-report and full/components/foundation metafiles.
8
+ The full profile is dist/; alternatives are dist/components/ and dist/foundation/.
9
+ Full contains retained stable/experimental APIs plus Advanced. Components contains
10
+ foundation+ordinary controls; Foundation has no component constructors.
11
+
12
+ Use one profile per document with matching CSS/fonts/notices. Profiles are separate
13
+ library instances. Complete shared CSS/fonts are retained deliberately; no unsafe
14
+ style purging. Specialized workers/reader profile are not shipped.
15
+
16
+ ES2022 is a syntax target, not API polyfills. Use HTTP/WebView origin, not file://
17
+ as a portability assumption. Maps embed sources and can be omitted from production.
18
+ Bundles do not flatten declarations; typed users use package entries.
19
+
20
+ size-report includes hashes, compression estimates, modules and source provenance.
21
+ Git state may be not-versioned/uncommitted/dirty/clean; no clean commit is invented.
22
+ Content SHA-256, immutable imported snapshot hash and approved Grid candidate
23
+ manifest hash identify pre-commit builds.
24
+ Run check-bundle.js and test:bundle. Native limits: [NATIVE_ACCEPTANCE](NATIVE_ACCEPTANCE.md).
25
+
26
+ ## Standalone release archives
27
+
28
+ Each profile now has readable/minified ESM (`taet-ui[.min].js`) and classic IIFE
29
+ (`taet-ui.global[.min].js`, global `TaetUI`) plus matching CSS and source maps.
30
+ These are alternative instances: use one profile/format in a document.
31
+ `npm run distribution` builds and packages full/components/foundation ZIPs in
32
+ ignored distribution/. `npm run distribution -- --release` requires a clean
33
+ commit and matching current build provenance. Archives include a working classic
34
+ and ESM example, fonts/OFL, MIT/notices, PROVENANCE.json and SHA256SUMS.txt.
35
+ Source maps embed public framework code. Keep them for debugging or omit them
36
+ from a deployed host; JS/CSS/fonts/licenses must remain together.
37
+
38
+ The automated browser harness uses scripts/test-server.js (Node built-in HTTP).
39
+ It serves exact Buffer bytes/Content-Length and only binds loopback. The runner
40
+ checks its own child PID in readiness responses and reports fixture stderr.
41
+ The existing Python dev/docs server remains available. No app runtime server is
42
+ required by either portable format. Source npm exports remain typed ESM.
package/docs/CHARTS.md ADDED
@@ -0,0 +1,129 @@
1
+ # Charts (experimental)
2
+
3
+ `Chart` and `Gauge` are exported by `taet-ui/experimental`, `taet-ui/all` and the
4
+ full portable bundle. They are original Tæt UI implementations, with no runtime
5
+ dependencies. DHTMLX's locally supplied public declarations were inspected for
6
+ feature vocabulary; no proprietary renderer or source was incorporated.
7
+
8
+ ```js
9
+ import { Chart, Gauge } from './taet-ui.min.js';
10
+ const chart = new Chart('#plot', {
11
+ label: 'Monthly orders', type: 'spline', markers: true, height: 320,
12
+ categoryField: 'month',
13
+ series: [{ id: 'orders', valueField: 'count', label: 'Orders' }]
14
+ });
15
+ chart.data.parse([{ id: 1, month: 'January', count: 42 },
16
+ { id: 2, month: 'February', count: 58 }]);
17
+ chart.events.on('itemClick', ({ item, seriesId, value }) => {
18
+ // Host-owned action, e.g. navigate to the selected month.
19
+ });
20
+ const gauge = new Gauge('#capacity', { label: 'Capacity', min: 0, max: 200,
21
+ value: 136, textMode: 'value', width: 280 });
22
+ gauge.value.set(150);
23
+ // On teardown: chart.destroy(); gauge.destroy();
24
+ ```
25
+
26
+ Link the matching bundle CSS once. The docs workbench itself uses source modules.
27
+
28
+ ## Models and presentation
29
+
30
+ | Requested presentation | API |
31
+ | --- | --- |
32
+ | Basic / BasicMarkers | `type: 'line'`, `markers: false / true` |
33
+ | Spline / SplineMarkers | `type: 'spline'`, `markers: false / true` |
34
+ | Column | `type: 'column'` (grouped vertical columns) |
35
+ | StackedColumn | `type: 'stackedColumn'` |
36
+ | StackedColumn 100% | `type: 'stackedColumn100'` |
37
+ | Bar | `type: 'bar'` (grouped horizontal bars) |
38
+ | Gauge | Separate `Gauge`, sharing ProgressBar's value/range contract |
39
+
40
+ Each record is a category, in store order; series read numeric fields from it.
41
+ Only finite **numbers** are measurements: missing/non-numeric values create gaps,
42
+ not zeros. Spline uses monotone cubic Hermite interpolation and splits at gaps.
43
+ An isolated point needs markers to be visible without hover/focus. The X axis is
44
+ categorical even when its label looks like a timestamp; intervals are equally spaced.
45
+
46
+ Columns and bars always include zero; Line/Spline/Area can use `includeZero:false`.
47
+ Positive/negative stack accumulators are separate.
48
+ 100% stacks normalize positive and negative totals independently to +100/-100;
49
+ zero totals stay zero. Hidden series do not contribute. Tooltips/events retain
50
+ raw values. If a raw stack sum overflows the finite numeric range, the chart
51
+ shows an error message instead of emitting invalid SVG geometry.
52
+
53
+ `data` is an owned DataStore unless a store is supplied. Normal parse/update/clear/
54
+ batch operations invalidate the display, including `silent` writes. A borrowed
55
+ store survives chart destruction. `getSeries()` returns detached descriptors;
56
+ use `setSeries`, `setType`, `setMarkers` and `setSeriesVisible` to change configuration.
57
+ IDs and valueField strings are required for each series; IDs must be unique.
58
+
59
+ `seriesVisibilityChange` reports `seriesId`, `visible`, `origin`, `userAction`;
60
+ `silent` suppresses this event but still repaints. `itemClick` reports `item`, typed
61
+ `id`, `seriesId`, raw `value` and `category`, with user mutation metadata.
62
+
63
+ ## Rendering, theme and interaction
64
+
65
+ - SVG paths, bars and markers; native SVG title tooltips. Labels are plain text.
66
+ - Automatic container resize handling. Default height is 320px; minimum plotted
67
+ viewBox is 240x140. Very small containers scale that viewBox down.
68
+ - One pending animation-frame callback coalesces invalidations. No idle frame loop,
69
+ animation, polling, document-level pointer handler or network request.
70
+ - SVG is O(records × visible series); this is not a virtualized or decimated renderer.
71
+ V1 targets small/medium datasets. Thousands of SVG points require host measurement.
72
+ - Theme tokens control background, text, gridlines and the first accent series.
73
+ Series 2–6 have distinct fallback colors; override `--dui-chart-series-1` … `-6`
74
+ on the chart or use a series `color`. Colors repeat after six series. No claim of
75
+ automatic palette contrast or colorblind-safe differentiation.
76
+ - Legend entries are keyboard buttons. One Tab stop enters plotted values; arrows
77
+ and Home/End navigate, Enter/Space activates. Each point has an accessible label.
78
+ Disabled charts ignore point activation and disable the legend.
79
+ - Gauge is a read-only meter (not progress completion and not CircularSlider).
80
+ Range clamping, clean/reset, silent updates and formatting follow ProgressBar.
81
+ Theme controls its track/needle/arc; `--dui-gauge-color` overrides the arc.
82
+
83
+ ## Deliberate v1 limits and verification entry points
84
+
85
+ No mixed-type charts, pie/radar, numeric/time X scales, fixed axis bounds,
86
+ zoom/pan, decimation, remote paging, HTML formatter injection or image export.
87
+ Native tooltip timing and real screen-reader speech are not browser-test guarantees.
88
+
89
+ See `test/chart.test.js` (math/model), `browser-tests/charts.spec.js` (rendering,
90
+ interaction/lifetime), `test/types/chart-consumer.ts` (installed declarations),
91
+ `npm run test:charts` (Chromium/Firefox/WebKit). Live examples: Components → Charts
92
+ and `/examples/labs/charts.html`. Public declarations: Chart.d.ts and Gauge.d.ts.
93
+
94
+ ## Financial and area charts
95
+
96
+ `type:'candlestick'` draws Japanese candles, including doji (open equals close).
97
+ `wickCaps:true` adds horizontal caps at high/low; `setWickCaps` toggles them.
98
+ `type:'ohlc'` draws the low/high stem, open tick left and close tick right.
99
+
100
+ ```js
101
+ const prices = new Chart('#prices', {
102
+ type: 'candlestick', wickCaps: true,
103
+ series: [{ id: 'price', label: 'Price',
104
+ ohlc: { open: 'o', high: 'h', low: 'l', close: 'c' } }]
105
+ });
106
+ prices.data.parse([{ id: 1, label: 'Monday', o: 102, h: 108, l: 100, c: 106 }]);
107
+ ```
108
+
109
+ `series.ohlc` maps all four fields, and supplies its close field as valueField
110
+ when omitted. Without an explicit OHLC mapping, financial types use standard
111
+ `open/high/low` fields and the series valueField as close. All four must be finite
112
+ numbers, with low <= open/close <= high. Invalid records are skipped in place;
113
+ no silent correction or filling. Event `value` is close; `itemClick.ohlc` supplies
114
+ all four numeric values. Tooltip/accessibility text also contains all four.
115
+
116
+ Financial axes default to low/high extents plus 5% padding, not zero; use
117
+ `includeZero:true` to include zero explicitly. Flat ranges receive a nonzero span.
118
+ Direction is close versus open: rising/falling/doji. CSS tokens `--dui-chart-up`,
119
+ `--dui-chart-down`, `--dui-chart-neutral` customize those colors independently of
120
+ series colors. Negative prices are supported.
121
+
122
+ `type:'area'` fills each contiguous line segment separately. Default baseline is
123
+ zero; with `includeZero:false` it is the closest plotted bound to zero. This is
124
+ a truncated price axis, not a claim that the shaded area represents total value.
125
+ Missing values leave unfilled gaps. Series overlap translucently rather than stack.
126
+ `markers:true` also works for Area. No animation, calendars, automatic time sorting,
127
+ market aggregation or indicators are introduced. See Components → Charts → Financial Charts.
128
+
129
+ For interactive time-based price/volume charts, use separate StockChart (deferred extension; see [extension boundaries](EXTENSIONS.md)). Categorical Chart retains its existing contract.