flexdesk 0.17.8 → 0.17.10
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.
- package/CHANGELOG.md +46 -0
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/THIRD_PARTY_LICENSES.md +0 -0
- package/canvas.js +0 -0
- package/charts.js +0 -0
- package/core.js +0 -0
- package/css/base.css +78 -56
- package/css/flexdesk.css +111 -89
- package/css/overrides.css +12 -12
- package/css/reset.css +0 -0
- package/css/tokens.css +11 -2
- package/dist/canvas.js +0 -0
- package/dist/canvas.js.map +0 -0
- package/dist/charts.js +7 -6
- package/dist/charts.js.map +2 -2
- package/dist/{chunk-EIYNF4BD.js → chunk-2YTM3GJE.js} +2 -2
- package/dist/chunk-2YTM3GJE.js.map +7 -0
- package/dist/chunk-3PHCPZHT.js +0 -0
- package/dist/chunk-3PHCPZHT.js.map +0 -0
- package/dist/{chunk-UURZ37SD.js → chunk-7U4IB65H.js} +27 -9
- package/dist/chunk-7U4IB65H.js.map +7 -0
- package/dist/{chunk-D3COLZZ2.js → chunk-BE2PU3LL.js} +2 -2
- package/dist/{chunk-D3COLZZ2.js.map → chunk-BE2PU3LL.js.map} +0 -0
- package/dist/chunk-CVMCZZX2.js +0 -0
- package/dist/chunk-CVMCZZX2.js.map +0 -0
- package/dist/{chunk-UWO43BZU.js → chunk-F35XSQWA.js} +16 -20
- package/dist/chunk-F35XSQWA.js.map +7 -0
- package/dist/chunk-FOOS3T5L.js +0 -0
- package/dist/chunk-FOOS3T5L.js.map +0 -0
- package/dist/chunk-GOQLR5WR.js +0 -0
- package/dist/chunk-GOQLR5WR.js.map +0 -0
- package/dist/chunk-HNU6MM2B.js +0 -0
- package/dist/chunk-HNU6MM2B.js.map +0 -0
- package/dist/chunk-JKZLNKG6.js +0 -0
- package/dist/chunk-JKZLNKG6.js.map +0 -0
- package/dist/chunk-JYWURG5T.js +0 -0
- package/dist/chunk-JYWURG5T.js.map +0 -0
- package/dist/{chunk-RKNFBX5K.js → chunk-MIW7D6WC.js} +16 -4
- package/dist/{chunk-RKNFBX5K.js.map → chunk-MIW7D6WC.js.map} +2 -2
- package/dist/chunk-N7HC3ADV.js +0 -0
- package/dist/chunk-N7HC3ADV.js.map +0 -0
- package/dist/{chunk-LWV23YVE.js → chunk-NIJEJAZ7.js} +42 -18
- package/dist/chunk-NIJEJAZ7.js.map +7 -0
- package/dist/{chunk-HYJYYEPK.js → chunk-REJ5HLIM.js} +2 -2
- package/dist/{chunk-HYJYYEPK.js.map → chunk-REJ5HLIM.js.map} +0 -0
- package/dist/{chunk-WVFGV5FT.js → chunk-WUFLGETN.js} +39 -2
- package/dist/{chunk-WVFGV5FT.js.map → chunk-WUFLGETN.js.map} +3 -3
- package/dist/core.js +0 -0
- package/dist/core.js.map +0 -0
- package/dist/editor.js +2 -2
- package/dist/editor.js.map +0 -0
- package/dist/flexdesk.css +111 -89
- package/dist/flow.js +3 -3
- package/dist/flow.js.map +0 -0
- package/dist/host.js +0 -0
- package/dist/host.js.map +0 -0
- package/dist/reset.css +0 -0
- package/dist/tile_registry-6WZPTUZV.js +0 -0
- package/dist/tile_registry-6WZPTUZV.js.map +0 -0
- package/dist/tiles.js +63 -20
- package/dist/tiles.js.map +2 -2
- package/dist/tokens.css +11 -2
- package/dist/widgets.js +6 -6
- package/dist/widgets.js.map +0 -0
- package/dist/wm.js +5 -5
- package/dist/wm.js.map +0 -0
- package/docs/README.md +0 -0
- package/docs/best-practices.md +0 -0
- package/docs/components/charts.md +29 -0
- package/docs/components/command-palette.md +0 -0
- package/docs/components/conversation.md +0 -0
- package/docs/components/data-table-grid.md +0 -0
- package/docs/components/data-table.md +0 -0
- package/docs/components/editor.md +0 -0
- package/docs/components/flow-canvas-editor.md +0 -0
- package/docs/components/flow-editors.md +0 -0
- package/docs/components/flow-lane-editor.md +0 -0
- package/docs/components/flow-outline-editor.md +0 -0
- package/docs/components/forms-and-dialogs.md +0 -0
- package/docs/components/input-fields.md +0 -0
- package/docs/components/keymap.md +0 -0
- package/docs/components/markdown-and-outline.md +0 -0
- package/docs/components/menus.md +41 -0
- package/docs/components/notifications.md +0 -0
- package/docs/components/panels-and-desktops.md +0 -0
- package/docs/components/record-list-and-fact-table.md +0 -0
- package/docs/components/settings-view.md +0 -0
- package/docs/components/shell.md +0 -0
- package/docs/components/slide-out-panel.md +0 -0
- package/docs/components/tiles.md +25 -0
- package/docs/components/wizard.md +0 -0
- package/docs/concepts/building-and-packaging.md +0 -0
- package/docs/concepts/domain-neutrality.md +0 -0
- package/docs/concepts/host-port.md +0 -0
- package/docs/concepts/packages-and-entry-points.md +0 -0
- package/docs/concepts/peer-dependencies.md +0 -0
- package/docs/concepts/state-guard.md +0 -0
- package/docs/concepts/styling.md +68 -0
- package/docs/quickstart.md +0 -0
- package/editor.js +0 -0
- package/flow.js +0 -0
- package/host.js +0 -0
- package/package.json +1 -1
- package/src/canvas/canvas_adapter.js +0 -0
- package/src/canvas/edge_router.js +0 -0
- package/src/canvas/graph/connector_router.js +0 -0
- package/src/canvas/graph/history_service.js +0 -0
- package/src/canvas/graph/node_platform.js +0 -0
- package/src/canvas/index.js +0 -0
- package/src/canvas/layered_layout.js +0 -0
- package/src/charts/chart_types.js +3 -2
- package/src/charts/data_series_plot_window.js +0 -0
- package/src/charts/downsample.js +0 -0
- package/src/charts/plot_config.js +0 -0
- package/src/charts/plot_config_editor.js +8 -2
- package/src/charts/plotly_wrapper.js +0 -0
- package/src/core/event_bus.js +0 -0
- package/src/core/logging.js +0 -0
- package/src/core/settings.js +0 -0
- package/src/core/state_guard.js +0 -0
- package/src/core/state_guard_config.js +0 -0
- package/src/core/state_machine.js +0 -0
- package/src/editor/editor_pane.js +0 -0
- package/src/editor/monaco_editor_factory.js +0 -0
- package/src/editor/monaco_loader.js +0 -0
- package/src/editor/notebook_search.js +0 -0
- package/src/editor/notebook_tab_bar.js +26 -7
- package/src/editor/notebook_undo_manager.js +0 -0
- package/src/editor/split_pane_container.js +0 -0
- package/src/flow/canvas_editor/connections.js +0 -0
- package/src/flow/canvas_editor/editor.js +0 -0
- package/src/flow/canvas_editor/index.js +0 -0
- package/src/flow/canvas_editor/layout.js +0 -0
- package/src/flow/canvas_editor/strings.js +0 -0
- package/src/flow/kit/always_before.js +0 -0
- package/src/flow/kit/catalogue.js +0 -0
- package/src/flow/kit/chip_input.js +0 -0
- package/src/flow/kit/dom.js +0 -0
- package/src/flow/kit/findings.js +0 -0
- package/src/flow/kit/history.js +0 -0
- package/src/flow/kit/index.js +0 -0
- package/src/flow/kit/keys.js +0 -0
- package/src/flow/kit/logic_graph.js +0 -0
- package/src/flow/kit/references.js +0 -0
- package/src/flow/kit/settings_panel.js +0 -0
- package/src/flow/kit/settings_schema.js +0 -0
- package/src/flow/kit/step_picker.js +0 -0
- package/src/flow/kit/strings.js +0 -0
- package/src/flow/kit/value_picker.js +0 -0
- package/src/flow/kit/widgets.js +0 -0
- package/src/flow/lanes/editor.js +0 -0
- package/src/flow/lanes/index.js +0 -0
- package/src/flow/lanes/layout.js +0 -0
- package/src/flow/lanes/pipeline.js +0 -0
- package/src/flow/lanes/preview.js +0 -0
- package/src/flow/lanes/strings.js +0 -0
- package/src/flow/outline/editor.js +0 -0
- package/src/flow/outline/index.js +0 -0
- package/src/flow/outline/mapping.js +0 -0
- package/src/flow/outline/menu.js +0 -0
- package/src/flow/outline/operations.js +0 -0
- package/src/flow/outline/recognise.js +0 -0
- package/src/flow/outline/strings.js +0 -0
- package/src/help/help_modal.js +0 -0
- package/src/help/help_registry.js +0 -0
- package/src/host/external_links.js +0 -0
- package/src/host/file_picker.js +0 -0
- package/src/host/host.js +0 -0
- package/src/host/photino_host.js +0 -0
- package/src/host/photino_host.md +0 -0
- package/src/host/pywebview_host.js +0 -0
- package/src/tiles/chart_tiles.js +0 -0
- package/src/tiles/config_schema.js +0 -0
- package/src/tiles/figure_tile.js +0 -0
- package/src/tiles/layout_persistence.js +0 -0
- package/src/tiles/list_tiles.js +0 -0
- package/src/tiles/scope_picker.js +0 -0
- package/src/tiles/tile_base.js +67 -16
- package/src/tiles/tile_config_form.js +0 -0
- package/src/tiles/tile_grid.js +0 -0
- package/src/tiles/tile_registry.js +0 -0
- package/src/tiling/bottom_panel_tabs.js +0 -0
- package/src/tiling/command_palette.js +0 -0
- package/src/tiling/content_registry.js +0 -0
- package/src/tiling/desktops.js +0 -0
- package/src/tiling/entity_sources.js +0 -0
- package/src/tiling/keymap.js +0 -0
- package/src/tiling/kind_taxonomy.js +0 -0
- package/src/tiling/landing_table.js +0 -0
- package/src/tiling/loading_overlay.js +0 -0
- package/src/tiling/nav_panel.js +0 -0
- package/src/tiling/page_factory.js +0 -0
- package/src/tiling/panel_availability.js +0 -0
- package/src/tiling/panel_keys.js +0 -0
- package/src/tiling/shell.js +0 -0
- package/src/tiling/tab_strip.js +0 -0
- package/src/tiling/tile_breadcrumb.js +0 -0
- package/src/tiling/tile_renderer.js +0 -0
- package/src/tiling/tile_tab_menu.js +0 -0
- package/src/tiling/tile_tree.js +0 -0
- package/src/tiling/wm.js +0 -0
- package/src/tiling/zoom.js +0 -0
- package/src/ui/base/component_base.js +0 -0
- package/src/ui/base/controller_base.js +0 -0
- package/src/ui/base/page_base.js +0 -0
- package/src/ui/components/about_dialog.js +0 -0
- package/src/ui/components/action_dropdown.js +19 -6
- package/src/ui/components/alert_log.js +0 -0
- package/src/ui/components/alerts_pane.js +0 -0
- package/src/ui/components/attribute_list_editor.js +0 -0
- package/src/ui/components/autocomplete_field.js +0 -0
- package/src/ui/components/cell_editor_host.js +0 -0
- package/src/ui/components/cell_editors.js +0 -0
- package/src/ui/components/cell_grid.js +0 -0
- package/src/ui/components/cell_paste.js +0 -0
- package/src/ui/components/cell_selection.js +0 -0
- package/src/ui/components/choice_controls.js +0 -0
- package/src/ui/components/color_field.js +0 -0
- package/src/ui/components/color_list_field.js +0 -0
- package/src/ui/components/column_fit.js +0 -0
- package/src/ui/components/column_groups.js +0 -0
- package/src/ui/components/column_order.js +0 -0
- package/src/ui/components/computing_status_window.js +0 -0
- package/src/ui/components/confirm_dialog.js +0 -0
- package/src/ui/components/context_menu.js +20 -20
- package/src/ui/components/conversation_view.js +0 -0
- package/src/ui/components/crosstab.js +0 -0
- package/src/ui/components/data_table.js +45 -19
- package/src/ui/components/detail_header.js +0 -0
- package/src/ui/components/document_outline.js +0 -0
- package/src/ui/components/drag_reorder.js +0 -0
- package/src/ui/components/fact_table.js +0 -0
- package/src/ui/components/fill_handle.js +0 -0
- package/src/ui/components/gallery_picker.js +0 -0
- package/src/ui/components/header_actions.js +0 -0
- package/src/ui/components/inline_renamer.js +0 -0
- package/src/ui/components/job_progress.js +0 -0
- package/src/ui/components/managed_window.js +0 -0
- package/src/ui/components/menu_bar.js +0 -0
- package/src/ui/components/modal.js +0 -0
- package/src/ui/components/notification_history.js +0 -0
- package/src/ui/components/progress.js +0 -0
- package/src/ui/components/record_list.js +0 -0
- package/src/ui/components/row_activation.js +0 -0
- package/src/ui/components/section_stack.js +0 -0
- package/src/ui/components/series.js +0 -0
- package/src/ui/components/settings_view.js +0 -0
- package/src/ui/components/slide_out_panel.js +0 -0
- package/src/ui/components/slider_field.js +0 -0
- package/src/ui/components/sortable_list.js +0 -0
- package/src/ui/components/staged_edits.js +0 -0
- package/src/ui/components/staged_history.js +0 -0
- package/src/ui/components/table_filter_chips.js +0 -0
- package/src/ui/components/table_state_store.js +0 -0
- package/src/ui/components/table_structure.js +0 -0
- package/src/ui/components/table_values.js +0 -0
- package/src/ui/components/tabs.js +0 -0
- package/src/ui/components/tag_input.js +0 -0
- package/src/ui/components/toast.js +0 -0
- package/src/ui/components/toggle_field.js +0 -0
- package/src/ui/components/tree_view.js +0 -0
- package/src/ui/components/tsv.js +0 -0
- package/src/ui/components/window_taskbar.js +0 -0
- package/src/ui/components/wizard.js +0 -0
- package/src/ui/controllers/window_chrome_controller.js +0 -0
- package/src/ui/notification_center.js +0 -0
- package/src/ui/utils/auto_scrollbars.js +0 -0
- package/src/ui/utils/markdown.js +0 -0
- package/src/ui/utils/menu_viewport.js +81 -0
- package/src/ui/utils/native_context_menu.js +0 -0
- package/src/ui/utils/overlay_scrollbar.js +0 -0
- package/src/ui/utils/raf_resize_observer.js +0 -0
- package/src/ui/utils/scroll_lock.js +0 -0
- package/src/ui/utils/strip_scroll.js +0 -0
- package/src/ui/utils/tooltip_service.js +0 -0
- package/tiles.js +0 -0
- package/widgets.js +0 -0
- package/wm.js +0 -0
- package/dist/chunk-EIYNF4BD.js.map +0 -7
- package/dist/chunk-LWV23YVE.js.map +0 -7
- package/dist/chunk-UURZ37SD.js.map +0 -7
- package/dist/chunk-UWO43BZU.js.map +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.17.10 (2026-10-25)
|
|
4
|
+
|
|
5
|
+
A patch release: everything below is additive. Every fix is documented in a
|
|
6
|
+
section of the docs headed "(0.17.10)"; each entry links to it.
|
|
7
|
+
|
|
8
|
+
### Added and changed
|
|
9
|
+
|
|
10
|
+
- [Retheming the accent](docs/concepts/styling.md#retheming-the-accent-01710): the accent colours in flexdesk.css that were the literal `#007acc` (`rgb(0, 122, 204)`), its tints, and the light accent `#569cd6` / `#6eb3e9` are now derived from `--accent-bright`, so setting `--accent`, `--accent-hover` and `--accent-bright` on `:root` rethemes all of them. In tokens.css, `--state-selected` and `--shadow-glow` are now mixes of `--accent-bright` (the same colours as before), and three tokens are new: `--twm-dt-new-bg` (the colour a DataTable row or cell that has just arrived flashes from, which the stylesheet read before with an `rgba(0, 122, 204, 0.22)` fallback but nothing defined), `--accent-light` (about `#4da2db`, replacing `#569cd6`) and `--accent-lighter` (about `#73b6e3`, replacing `#6eb3e9`). The `rgba(0, 122, 204, a)` tints are now `color-mix(in srgb, var(--accent-bright) a%, transparent)`, with the same colour by default: the DataTable's selected rows and cells, the filter chip when on, the autocomplete's namespace pill and active item, `.add-widget-btn`, `.tile.resizing`, `.tile-ghost`, the focused leaf's inset shadow, the document outline's active link, the canvas marquee and the flow graph's port dots. The SliderField thumb, the SortableList drop line, add button and input focus, the DataTable filter inputs' focus border and the notebook autocomplete's border read `--accent-light`, and the active thumb `--accent-lighter`; since `#569cd6` cannot be mixed exactly from `#007acc`, these move to the nearest mix with white, a difference of about 1.5 to 1.7 ΔE (OKLab × 100). `var(--accent-bright, …)`, `var(--state-selected, …)`, `var(--ea-accent, …)` and `var(--accent, …)` no longer carry fallbacks, so no computed colour changes but flexdesk.css now needs tokens.css (or your own definitions of these tokens). Accent blues in other shades that no mix of an accent token gives exactly stay literals (BUG-0044).
|
|
11
|
+
|
|
12
|
+
### Removed or renamed exports
|
|
13
|
+
|
|
14
|
+
None. Compared with 0.17.9, across every entry point (`core`, `widgets`, `wm`,
|
|
15
|
+
`host`, `canvas`, `flow`, `charts`, `tiles`, `editor`) and the package
|
|
16
|
+
`exports` map, no export was added, removed or renamed. Not an export but
|
|
17
|
+
worth knowing: tokens.css defines three new custom properties,
|
|
18
|
+
`--accent-light`, `--accent-lighter` and `--twm-dt-new-bg`, and derives
|
|
19
|
+
`--state-selected` and `--shadow-glow` from `--accent-bright`; flexdesk.css
|
|
20
|
+
reads the accent tokens without fallbacks, so it needs tokens.css; and the
|
|
21
|
+
SliderField thumb is about `#4da2db` (was `#569cd6`) and its active state
|
|
22
|
+
about `#73b6e3` (was `#6eb3e9`) (see above).
|
|
23
|
+
|
|
24
|
+
## 0.17.9 (2026-10-25)
|
|
25
|
+
|
|
26
|
+
A patch release: everything below is additive. Every fix is documented in a
|
|
27
|
+
section of the docs headed "(0.17.9)"; each entry links to it.
|
|
28
|
+
|
|
29
|
+
### Added and changed
|
|
30
|
+
|
|
31
|
+
- [Context menus stay inside the window](docs/components/menus.md#context-menus-stay-inside-the-window-0179): `showContextMenu(x, y, items, onAction)`, the DataTable's right-click menu and `NotebookTabBar`'s tab menu are placed the same way, however many items they hold. A menu is capped at the window's height less 8px above and below and scrolls inside when it is longer (flexdesk.css gives `.twm-context-menu` and `.nb-context-menu` `overflow-y: auto` and `box-sizing: border-box`); it opens with its top-left corner at the pointer and moves left or up only as far as it must to fit, never past the window's top or left edge. Before, a menu had no cap: the DataTable's opened above the window's top edge and `showContextMenu`'s ran off the bottom, so the items past the edge could not be reached. All three now take focus on the first enabled item, move it with Up/Down (wrapping), Home and End, scrolling the focused item into view, choose with Enter or Space, close with Escape and give focus back when they close (before, only `showContextMenu` did); scrolling the menu itself does not close it. Nothing changes in how you call them (BUG-0040).
|
|
32
|
+
- [The plot config editor writes no stray "null"](docs/components/charts.md#the-plot-config-editor-writes-no-stray-null-0179): `renderPlotConfigEditor` appended the sections a subplot does not have as `null`, which `Element.append()` writes as the text `null`, so every 2D subplot showed a `null` line where a 3D chart's **Z axis** goes, and an editor without `seriesTransforms` showed another where **Derived series** goes. A section the subplot does not have is now left out; nothing else about the editor changed (BUG-0041).
|
|
33
|
+
- [Interpolation `'auto'` is a listed choice](docs/components/charts.md#interpolation-auto-is-a-listed-choice-0179): a subplot's `interpolation` is `'linear'`, `'step'`, `'cubic'` or `'auto'`, and `'auto'` draws straight segments exactly as `'linear'` does (`buildTrace` gives both the Plotly line shape `linear`, as it always has). `renderPlotConfigEditor`'s **Interpolation** select now offers **Auto**, **Linear**, **Step** and **Cubic spline**, so a subplot saved with `'auto'` opens with Auto chosen instead of `auto (not found)` and keeps `'auto'` until another value is picked. A new subplot is still `'linear'`, and every value draws as before (BUG-0042).
|
|
34
|
+
- [Action dropdowns: positioning against the end edge](docs/components/menus.md#action-dropdowns-positioning-against-the-end-edge-0179): `ActionDropdown.position(trigger, menu, { align })` takes an optional third argument. `align: 'start'` (the default, and what it did before) lines the menu up with the trigger's left edge first, `'end'` with its right edge; either flips to the other edge when the menu would leave the window (BUG-0043).
|
|
35
|
+
- [A tile's ⋯ menu is drawn over the page](docs/components/tiles.md#the--menu-is-drawn-over-the-page-0179): a tile's **More actions** menu (`.tile-menu-dropdown`) is no longer drawn inside the tile. While it is open it is moved to `document.body` (or to the open modal's host, as `showContextMenu` does), placed with `ActionDropdown.position(button, menu, { align: 'end' })` as `position: fixed` on `--z-over-windows`, so neighbouring tiles and the managed window a grid sits in no longer clip it, and it stays 8px inside the window, opening under the button when it fits there, else above it when it fits there, else on the side with more room, scrolling inside. Choosing an entry, a press outside it or the ⋯ button again closes it and puts it back in the tile's header; `dispose()` closes an open menu first. Until 0.17.8 the menu was `position: absolute` inside the tile, so in a tile narrower than about 220px its left part and its labels were cut off (BUG-0043).
|
|
36
|
+
|
|
37
|
+
### Removed or renamed exports
|
|
38
|
+
|
|
39
|
+
None. Compared with 0.17.8, across every entry point (`core`, `widgets`, `wm`,
|
|
40
|
+
`host`, `canvas`, `flow`, `charts`, `tiles`, `editor`) and the package
|
|
41
|
+
`exports` map, no export was added, removed or renamed. Not an export but
|
|
42
|
+
worth knowing: `ActionDropdown.position` takes an optional third argument,
|
|
43
|
+
`{ align }`; `renderPlotConfigEditor` lists `'auto'` among the interpolations;
|
|
44
|
+
an open tile ⋯ menu lives outside `tile.element` until it closes; and
|
|
45
|
+
flexdesk.css caps `.twm-context-menu` and `.nb-context-menu` at the window's
|
|
46
|
+
height with `overflow-y: auto`, and draws `.tile-menu-dropdown` on
|
|
47
|
+
`--z-over-windows` (see above).
|
|
48
|
+
|
|
3
49
|
## 0.17.8 (2026-10-24)
|
|
4
50
|
|
|
5
51
|
A patch release: everything below is additive. Every fix is documented in a
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
package/THIRD_PARTY_LICENSES.md
CHANGED
|
File without changes
|
package/canvas.js
CHANGED
|
File without changes
|
package/charts.js
CHANGED
|
File without changes
|
package/core.js
CHANGED
|
File without changes
|
package/css/base.css
CHANGED
|
@@ -731,7 +731,7 @@ body.twm-dt-col-resizing {
|
|
|
731
731
|
/* `activeRow` — the row that is OPEN. A left edge, not a background: hover
|
|
732
732
|
* and selection keep theirs. */
|
|
733
733
|
.twm-preview-table tbody tr.twm-dt-row--active > td:first-child {
|
|
734
|
-
box-shadow: inset 2px 0 0 0 var(--accent-bright
|
|
734
|
+
box-shadow: inset 2px 0 0 0 var(--accent-bright);
|
|
735
735
|
}
|
|
736
736
|
/* `rowIcon` — drawn from `data-twm-icon` so the icon's NAME is not cell
|
|
737
737
|
* text (not in a copy, not in the clipped-cell tooltip). The span carries the
|
|
@@ -878,7 +878,7 @@ body.twm-dt-col-resizing {
|
|
|
878
878
|
}
|
|
879
879
|
.twm-preview-table td .twm-dt-detail-toggle:focus-visible {
|
|
880
880
|
opacity: 1;
|
|
881
|
-
outline: 1px solid var(--accent-bright
|
|
881
|
+
outline: 1px solid var(--accent-bright);
|
|
882
882
|
}
|
|
883
883
|
/* The detail's row: one cell across every column. It is often the body's
|
|
884
884
|
* FIRST cell of its row, so the time column's rules reach it (see the note
|
|
@@ -911,7 +911,7 @@ body.twm-dt-col-resizing {
|
|
|
911
911
|
}
|
|
912
912
|
/* `follow` / `refresh()` — a row the last answer did not have, for a moment. */
|
|
913
913
|
@keyframes twm-dt-row-new {
|
|
914
|
-
from { background: var(--twm-dt-new-bg
|
|
914
|
+
from { background: var(--twm-dt-new-bg); }
|
|
915
915
|
to { background: transparent; }
|
|
916
916
|
}
|
|
917
917
|
.twm-preview-table tbody tr.twm-dt-row--new > td {
|
|
@@ -955,11 +955,11 @@ body.twm-dt-col-resizing {
|
|
|
955
955
|
background: rgba(255, 255, 255, 0.06);
|
|
956
956
|
}
|
|
957
957
|
.twm-dt-filter-chip:focus-visible {
|
|
958
|
-
outline: 1px solid var(--accent-bright
|
|
958
|
+
outline: 1px solid var(--accent-bright);
|
|
959
959
|
}
|
|
960
960
|
.twm-dt-filter-chip.twm-dt-filter-chip--on {
|
|
961
|
-
border-color: var(--accent-bright
|
|
962
|
-
background:
|
|
961
|
+
border-color: var(--accent-bright);
|
|
962
|
+
background: color-mix(in srgb, var(--accent-bright) 18%, transparent);
|
|
963
963
|
color: #ddd;
|
|
964
964
|
}
|
|
965
965
|
.twm-dt-filter-chip.twm-dt-filter-chip--empty {
|
|
@@ -1029,14 +1029,14 @@ body.twm-dt-col-resizing {
|
|
|
1029
1029
|
width: 16px;
|
|
1030
1030
|
height: 16px;
|
|
1031
1031
|
border-radius: 50%;
|
|
1032
|
-
background:
|
|
1032
|
+
background: var(--accent-light);
|
|
1033
1033
|
margin-top: -5px;
|
|
1034
1034
|
cursor: grab;
|
|
1035
1035
|
border: 2px solid var(--surface-0);
|
|
1036
1036
|
}
|
|
1037
1037
|
.twm-slider-field__input::-webkit-slider-thumb:active {
|
|
1038
1038
|
cursor: grabbing;
|
|
1039
|
-
background:
|
|
1039
|
+
background: var(--accent-lighter);
|
|
1040
1040
|
}
|
|
1041
1041
|
.twm-slider-field__input::-moz-range-track {
|
|
1042
1042
|
height: 6px;
|
|
@@ -1048,7 +1048,7 @@ body.twm-dt-col-resizing {
|
|
|
1048
1048
|
width: 16px;
|
|
1049
1049
|
height: 16px;
|
|
1050
1050
|
border-radius: 50%;
|
|
1051
|
-
background:
|
|
1051
|
+
background: var(--accent-light);
|
|
1052
1052
|
cursor: grab;
|
|
1053
1053
|
border: 2px solid var(--surface-0);
|
|
1054
1054
|
}
|
|
@@ -1171,7 +1171,7 @@ body.twm-dt-col-resizing {
|
|
|
1171
1171
|
.twm-sortable-list__drop {
|
|
1172
1172
|
height: 2px;
|
|
1173
1173
|
margin: 1px 0;
|
|
1174
|
-
background:
|
|
1174
|
+
background: var(--accent-light);
|
|
1175
1175
|
pointer-events: none;
|
|
1176
1176
|
}
|
|
1177
1177
|
.twm-sortable-list__content {
|
|
@@ -1218,12 +1218,12 @@ body.twm-dt-col-resizing {
|
|
|
1218
1218
|
margin-top: var(--space-md);
|
|
1219
1219
|
}
|
|
1220
1220
|
.twm-sortable-list__add:hover {
|
|
1221
|
-
border-color:
|
|
1222
|
-
color:
|
|
1223
|
-
background:
|
|
1221
|
+
border-color: var(--accent-light);
|
|
1222
|
+
color: var(--accent-light);
|
|
1223
|
+
background: color-mix(in srgb, var(--accent-light) 12%, transparent);
|
|
1224
1224
|
}
|
|
1225
1225
|
.twm-sortable-list__add:active {
|
|
1226
|
-
background:
|
|
1226
|
+
background: color-mix(in srgb, var(--accent-light) 20%, transparent);
|
|
1227
1227
|
}
|
|
1228
1228
|
.twm-sortable-list__empty {
|
|
1229
1229
|
padding: var(--space-xl);
|
|
@@ -1248,7 +1248,7 @@ body.twm-dt-col-resizing {
|
|
|
1248
1248
|
}
|
|
1249
1249
|
.twm-sortable-list__input:focus {
|
|
1250
1250
|
outline: none;
|
|
1251
|
-
border-color:
|
|
1251
|
+
border-color: var(--accent-light);
|
|
1252
1252
|
}
|
|
1253
1253
|
/* Global Top Bar (fixed at top) */
|
|
1254
1254
|
.twm-global-top-bar {
|
|
@@ -1698,19 +1698,19 @@ body.twm-dt-col-resizing {
|
|
|
1698
1698
|
padding: var(--space-xxs) 8px;
|
|
1699
1699
|
font-size: var(--font-size-xs);
|
|
1700
1700
|
color: #c7f1ff;
|
|
1701
|
-
background:
|
|
1702
|
-
border: 1px solid
|
|
1701
|
+
background: color-mix(in srgb, var(--accent-bright) 18%, transparent);
|
|
1702
|
+
border: 1px solid color-mix(in srgb, var(--accent-bright) 35%, transparent);
|
|
1703
1703
|
border-radius: var(--radius-pill);
|
|
1704
1704
|
white-space: nowrap;
|
|
1705
1705
|
text-transform: none;
|
|
1706
1706
|
cursor: default;
|
|
1707
|
-
box-shadow: inset 0 0 0 1px
|
|
1707
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-bright) 15%, transparent);
|
|
1708
1708
|
}
|
|
1709
1709
|
.twm-autocomplete-field__namespace--toggle {
|
|
1710
1710
|
cursor: pointer;
|
|
1711
|
-
background: linear-gradient(90deg,
|
|
1711
|
+
background: linear-gradient(90deg, color-mix(in srgb, var(--accent-bright) 24%, transparent) 0%, color-mix(in srgb, var(--accent-bright) 12%, transparent) 100%);
|
|
1712
1712
|
transition: background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
|
|
1713
|
-
border: 1px solid
|
|
1713
|
+
border: 1px solid color-mix(in srgb, var(--accent-bright) 50%, transparent);
|
|
1714
1714
|
color: #e7f5ff;
|
|
1715
1715
|
outline: none;
|
|
1716
1716
|
}
|
|
@@ -2063,7 +2063,7 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
2063
2063
|
box-sizing: border-box;
|
|
2064
2064
|
}
|
|
2065
2065
|
.twm-data-table__filter-input:focus {
|
|
2066
|
-
border-color:
|
|
2066
|
+
border-color: var(--accent-light);
|
|
2067
2067
|
background: #252525;
|
|
2068
2068
|
}
|
|
2069
2069
|
.twm-data-table__filter-input::placeholder {
|
|
@@ -2124,7 +2124,7 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
2124
2124
|
}
|
|
2125
2125
|
.twm-data-table__filter-dropdown-select:focus,
|
|
2126
2126
|
.twm-data-table__filter-dropdown-input:focus {
|
|
2127
|
-
border-color:
|
|
2127
|
+
border-color: var(--accent-light);
|
|
2128
2128
|
}
|
|
2129
2129
|
.twm-data-table__filter-dropdown-select {
|
|
2130
2130
|
appearance: auto;
|
|
@@ -3223,14 +3223,14 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
3223
3223
|
/* Add Widget is the toolbar's one primary verb, so it is the one that carries
|
|
3224
3224
|
the accent. */
|
|
3225
3225
|
.add-widget-btn {
|
|
3226
|
-
background:
|
|
3227
|
-
border-color:
|
|
3226
|
+
background: color-mix(in srgb, var(--accent-bright) 15%, transparent);
|
|
3227
|
+
border-color: color-mix(in srgb, var(--accent-bright) 30%, transparent);
|
|
3228
3228
|
color: var(--text-bright);
|
|
3229
3229
|
}
|
|
3230
3230
|
|
|
3231
3231
|
.add-widget-btn:hover {
|
|
3232
|
-
background:
|
|
3233
|
-
border-color:
|
|
3232
|
+
background: color-mix(in srgb, var(--accent-bright) 25%, transparent);
|
|
3233
|
+
border-color: color-mix(in srgb, var(--accent-bright) 50%, transparent);
|
|
3234
3234
|
}
|
|
3235
3235
|
|
|
3236
3236
|
/* The other two are secondary — Export is an aside and Reset Layout throws the
|
|
@@ -3279,13 +3279,15 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
3279
3279
|
.tile.resizing {
|
|
3280
3280
|
z-index: var(--z-dropdown);
|
|
3281
3281
|
border-color: var(--accent-bright);
|
|
3282
|
-
box-shadow: 0 0 0 2px
|
|
3282
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent-bright) 30%, transparent);
|
|
3283
3283
|
}
|
|
3284
3284
|
|
|
3285
3285
|
/* Selected — set by `_onConfigClick()` while the config dialog is open, and
|
|
3286
|
-
cleared from every sibling by the same handler. #78b9ff is a literal
|
|
3287
|
-
|
|
3288
|
-
|
|
3286
|
+
cleared from every sibling by the same handler. #78b9ff is a literal:
|
|
3287
|
+
`--accent-bright` is #007acc, which is a border colour on this background
|
|
3288
|
+
and not a text one, and the derived light accents (`--accent-light`,
|
|
3289
|
+
`--accent-lighter`) are less blue than this, so using them would change
|
|
3290
|
+
the colour. */
|
|
3289
3291
|
.tile.tile--selected {
|
|
3290
3292
|
border-color: #78b9ff;
|
|
3291
3293
|
box-shadow: 0 0 0 2px rgba(120, 185, 255, 0.3), var(--shadow-md);
|
|
@@ -3434,11 +3436,14 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
3434
3436
|
position: relative;
|
|
3435
3437
|
}
|
|
3436
3438
|
|
|
3439
|
+
/* While open the menu is moved to document.body and placed `position: fixed`
|
|
3440
|
+
by `ActionDropdown.position` (inline styles), so a narrow tile cannot clip
|
|
3441
|
+
it; --z-over-windows keeps it over a managed window holding the grid. */
|
|
3437
3442
|
.tile-menu-dropdown {
|
|
3438
3443
|
position: absolute;
|
|
3439
3444
|
top: 100%;
|
|
3440
3445
|
right: 0;
|
|
3441
|
-
z-index: var(--z-
|
|
3446
|
+
z-index: var(--z-over-windows);
|
|
3442
3447
|
min-width: 180px;
|
|
3443
3448
|
padding: var(--space-xs) 0;
|
|
3444
3449
|
background: var(--surface-2);
|
|
@@ -3553,8 +3558,8 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
3553
3558
|
/* The drop preview, positioned by `_updateGhost()` in grid coordinates. */
|
|
3554
3559
|
.tile-ghost {
|
|
3555
3560
|
position: absolute;
|
|
3556
|
-
background:
|
|
3557
|
-
border: 2px dashed
|
|
3561
|
+
background: color-mix(in srgb, var(--accent-bright) 15%, transparent);
|
|
3562
|
+
border: 2px dashed color-mix(in srgb, var(--accent-bright) 50%, transparent);
|
|
3558
3563
|
border-radius: var(--radius-sm);
|
|
3559
3564
|
pointer-events: none;
|
|
3560
3565
|
z-index: 50;
|
|
@@ -4674,12 +4679,12 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
4674
4679
|
/* ─── Autocomplete field — notebook variant ──────────────── */
|
|
4675
4680
|
|
|
4676
4681
|
.twm-autocomplete-field--notebook .twm-autocomplete-field__input-wrapper {
|
|
4677
|
-
border: 1px solid
|
|
4682
|
+
border: 1px solid var(--accent-light);
|
|
4678
4683
|
font-size: var(--font-size-sm);
|
|
4679
4684
|
}
|
|
4680
4685
|
.twm-autocomplete-field--notebook .twm-autocomplete-field__input-wrapper:focus-within {
|
|
4681
4686
|
border-color: #79b8f8;
|
|
4682
|
-
box-shadow: 0 0 3px
|
|
4687
|
+
box-shadow: 0 0 3px color-mix(in srgb, var(--accent-light) 30%, transparent);
|
|
4683
4688
|
}
|
|
4684
4689
|
.twm-autocomplete-field--notebook .twm-autocomplete-field__input {
|
|
4685
4690
|
font-family: 'Courier New', Courier, monospace;
|
|
@@ -4864,7 +4869,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
4864
4869
|
second keeps the readonly tables, which hover never claimed, working. */
|
|
4865
4870
|
.twm-preview-table:not(.twm-preview-table--readonly) tbody tr.selected td,
|
|
4866
4871
|
.twm-preview-table tbody tr.selected td {
|
|
4867
|
-
background: var(--state-selected
|
|
4872
|
+
background: var(--state-selected);
|
|
4868
4873
|
}
|
|
4869
4874
|
|
|
4870
4875
|
padding: 0;
|
|
@@ -4912,8 +4917,8 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
4912
4917
|
is the keyboard's, and it is deliberately the stronger of the two so that
|
|
4913
4918
|
moving the pointer across the list does not hide where the cursor is. */
|
|
4914
4919
|
.twm-autocomplete-field__item.active {
|
|
4915
|
-
background-color: var(--state-selected
|
|
4916
|
-
box-shadow: inset 2px 0 0 var(--accent-bright
|
|
4920
|
+
background-color: var(--state-selected);
|
|
4921
|
+
box-shadow: inset 2px 0 0 var(--accent-bright);
|
|
4917
4922
|
}
|
|
4918
4923
|
|
|
4919
4924
|
/* A `<button role="menuitem">`, not a div — that is what makes the menu
|
|
@@ -5446,7 +5451,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5446
5451
|
inset: 0 0 auto 0;
|
|
5447
5452
|
height: 2px;
|
|
5448
5453
|
pointer-events: none;
|
|
5449
|
-
background: var(--accent-bright
|
|
5454
|
+
background: var(--accent-bright);
|
|
5450
5455
|
}
|
|
5451
5456
|
|
|
5452
5457
|
/* A PREVIEW tab — opened by a single click and replaced by the next one.
|
|
@@ -5503,7 +5508,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5503
5508
|
flex: 0 0 auto;
|
|
5504
5509
|
font-size: 9px;
|
|
5505
5510
|
line-height: 1;
|
|
5506
|
-
color: var(--accent-bright
|
|
5511
|
+
color: var(--accent-bright);
|
|
5507
5512
|
}
|
|
5508
5513
|
|
|
5509
5514
|
.notebook-tabs .twm-tab-close {
|
|
@@ -5545,7 +5550,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5545
5550
|
flex: 0 0 auto;
|
|
5546
5551
|
align-self: stretch;
|
|
5547
5552
|
width: 2px;
|
|
5548
|
-
background: var(--accent-bright
|
|
5553
|
+
background: var(--accent-bright);
|
|
5549
5554
|
pointer-events: none;
|
|
5550
5555
|
}
|
|
5551
5556
|
|
|
@@ -5573,8 +5578,8 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5573
5578
|
* stylesheet, so nothing here is in its scope at all. */
|
|
5574
5579
|
.notebook-tabs--drop-target,
|
|
5575
5580
|
.notebook-editor-container--drop-target {
|
|
5576
|
-
background: color-mix(in srgb, var(--accent-bright
|
|
5577
|
-
box-shadow: inset 0 0 0 1px var(--accent-bright
|
|
5581
|
+
background: color-mix(in srgb, var(--accent-bright) 18%, transparent);
|
|
5582
|
+
box-shadow: inset 0 0 0 1px var(--accent-bright);
|
|
5578
5583
|
}
|
|
5579
5584
|
|
|
5580
5585
|
/* ── The tab bar's own context menu ──────────────────────────────────
|
|
@@ -5604,6 +5609,23 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5604
5609
|
|
|
5605
5610
|
.nb-context-menu.visible { opacity: 1; }
|
|
5606
5611
|
|
|
5612
|
+
/* ── Context menus stay inside the window (0.17.9, BUG-0040) ─────────
|
|
5613
|
+
* `showContextMenu`, the DataTable's right-click menu and NotebookTabBar's tab
|
|
5614
|
+
* menu are placed by src/ui/utils/menu_viewport.js, which sets an inline
|
|
5615
|
+
* max-height of the window's height less a margin top and bottom. Here: the
|
|
5616
|
+
* same cap for a menu placed before that runs, border-box so the cap includes
|
|
5617
|
+
* padding and border, and scrolling inside when the items are longer — they
|
|
5618
|
+
* had no max-height and no overflow, so a 100-item menu ran off the window and
|
|
5619
|
+
* its far items could not be reached. */
|
|
5620
|
+
.twm-context-menu,
|
|
5621
|
+
.nb-context-menu {
|
|
5622
|
+
box-sizing: border-box;
|
|
5623
|
+
max-height: calc(100vh - 2 * var(--space-md));
|
|
5624
|
+
overflow-x: hidden;
|
|
5625
|
+
overflow-y: auto;
|
|
5626
|
+
overscroll-behavior: contain;
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5607
5629
|
.nb-context-menu__item {
|
|
5608
5630
|
display: flex;
|
|
5609
5631
|
align-items: center;
|
|
@@ -5705,7 +5727,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5705
5727
|
}
|
|
5706
5728
|
.split-pane-divider:hover,
|
|
5707
5729
|
.split-pane-divider--active {
|
|
5708
|
-
background: var(--accent-bright
|
|
5730
|
+
background: var(--accent-bright);
|
|
5709
5731
|
}
|
|
5710
5732
|
/* A pane is its tab bar over its body. The tab bar's own rule says
|
|
5711
5733
|
* `height: 100%` (it fills a tile's strip); here it is a fixed 26px row, the
|
|
@@ -5728,7 +5750,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5728
5750
|
* `setPanes()`, which is why `SplitPaneContainer` ADDS `.split-pane` to a
|
|
5729
5751
|
* pane instead of replacing its classes with it. */
|
|
5730
5752
|
.split-pane-container--split .editor-pane--focused > .tabs.notebook-tabs {
|
|
5731
|
-
box-shadow: inset 0 -1px 0 var(--accent-bright
|
|
5753
|
+
box-shadow: inset 0 -1px 0 var(--accent-bright);
|
|
5732
5754
|
}
|
|
5733
5755
|
/* The body is the positioning anchor; the editor container fills it
|
|
5734
5756
|
* absolutely, so its height is the body's whatever its content is and the
|
|
@@ -5791,7 +5813,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5791
5813
|
font: inherit;
|
|
5792
5814
|
outline: none;
|
|
5793
5815
|
}
|
|
5794
|
-
.nb-search-bar__input:focus { border-color: var(--accent-bright
|
|
5816
|
+
.nb-search-bar__input:focus { border-color: var(--accent-bright); }
|
|
5795
5817
|
.nb-search-bar__match-info {
|
|
5796
5818
|
min-width: 64px;
|
|
5797
5819
|
color: var(--text-muted);
|
|
@@ -5824,7 +5846,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
5824
5846
|
.nb-search-bar__btn--active,
|
|
5825
5847
|
.nb-search-bar__btn--active:hover {
|
|
5826
5848
|
background: var(--state-selected);
|
|
5827
|
-
border-color: var(--accent-bright
|
|
5849
|
+
border-color: var(--accent-bright);
|
|
5828
5850
|
color: var(--text-bright);
|
|
5829
5851
|
}
|
|
5830
5852
|
/* Two classes, for the Material Symbols tie — see `.twm-leaf__icon`. */
|
|
@@ -6138,12 +6160,12 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
6138
6160
|
.twm-record--state-error { box-shadow: inset 2px 0 0 0 var(--color-danger, #c74e4e); }
|
|
6139
6161
|
/* `activeKey` — the record that is OPEN: the accent on the left edge, as
|
|
6140
6162
|
* DataTable's `twm-dt-row--active`. It wins over a state's edge. */
|
|
6141
|
-
.twm-record.twm-record--active { box-shadow: inset 2px 0 0 0 var(--accent-bright
|
|
6163
|
+
.twm-record.twm-record--active { box-shadow: inset 2px 0 0 0 var(--accent-bright); }
|
|
6142
6164
|
.twm-record-list--clickable .twm-record { cursor: pointer; }
|
|
6143
6165
|
.twm-record-list--clickable .twm-record:hover { background: var(--state-hover, rgba(255, 255, 255, 0.05)); }
|
|
6144
6166
|
.twm-record:focus { outline: none; }
|
|
6145
6167
|
.twm-record:focus-visible {
|
|
6146
|
-
outline: 1px solid var(--accent-bright
|
|
6168
|
+
outline: 1px solid var(--accent-bright);
|
|
6147
6169
|
outline-offset: -1px;
|
|
6148
6170
|
}
|
|
6149
6171
|
.twm-record-list__empty {
|
|
@@ -6841,7 +6863,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
6841
6863
|
cursor: pointer;
|
|
6842
6864
|
}
|
|
6843
6865
|
.twm-doc-outline__link:hover { background: var(--state-hover, rgba(255, 255, 255, 0.05)); color: var(--text-primary, #e0e0e0); }
|
|
6844
|
-
.twm-doc-outline__link:focus-visible { outline: 1px solid var(--accent-bright
|
|
6866
|
+
.twm-doc-outline__link:focus-visible { outline: 1px solid var(--accent-bright); outline-offset: -1px; }
|
|
6845
6867
|
.twm-doc-outline__item--level-1 > .twm-doc-outline__link { color: var(--text-primary, #e0e0e0); }
|
|
6846
6868
|
.twm-doc-outline__number {
|
|
6847
6869
|
flex: 0 0 auto;
|
|
@@ -6856,8 +6878,8 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
6856
6878
|
white-space: nowrap;
|
|
6857
6879
|
}
|
|
6858
6880
|
.twm-doc-outline__item.twm-doc-outline__item--active > .twm-doc-outline__link {
|
|
6859
|
-
border-left-color: var(--accent-bright
|
|
6860
|
-
background:
|
|
6881
|
+
border-left-color: var(--accent-bright);
|
|
6882
|
+
background: color-mix(in srgb, var(--accent-bright) 15%, transparent);
|
|
6861
6883
|
color: var(--text-primary, #e0e0e0);
|
|
6862
6884
|
}
|
|
6863
6885
|
/* Listed, but nothing in the document answers to it. */
|
|
@@ -6885,7 +6907,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
6885
6907
|
border-radius: var(--radius-sm, 4px);
|
|
6886
6908
|
cursor: text;
|
|
6887
6909
|
}
|
|
6888
|
-
.twm-tag-input:focus-within { border-color: var(--accent-bright
|
|
6910
|
+
.twm-tag-input:focus-within { border-color: var(--accent-bright); }
|
|
6889
6911
|
.twm-tag-input--readonly {
|
|
6890
6912
|
background: transparent;
|
|
6891
6913
|
border-color: transparent;
|
|
@@ -8000,7 +8022,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
8000
8022
|
position: absolute;
|
|
8001
8023
|
pointer-events: none;
|
|
8002
8024
|
border: 1px solid var(--accent-bright);
|
|
8003
|
-
background:
|
|
8025
|
+
background: color-mix(in srgb, var(--accent-bright) 12%, transparent);
|
|
8004
8026
|
}
|
|
8005
8027
|
.twm-canvas__marquee[hidden] { display: none; }
|
|
8006
8028
|
|
|
@@ -8493,7 +8515,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
8493
8515
|
.twm-flow-graph__port--data .twm-flow-graph__port-dot { border-color: #8a8f98; border-radius: 2px; }
|
|
8494
8516
|
.twm-flow-graph--connecting .twm-flow-graph__port--in:not(:disabled) .twm-flow-graph__port-dot {
|
|
8495
8517
|
background: var(--twm-flow-focus);
|
|
8496
|
-
box-shadow: 0 0 0 3px
|
|
8518
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-bright) 35%, transparent);
|
|
8497
8519
|
}
|
|
8498
8520
|
.twm-flow-graph__port--taken .twm-flow-graph__port-dot { border-color: var(--twm-flow-ok); background: var(--twm-flow-ok); }
|
|
8499
8521
|
.twm-flow-graph__port--taken .twm-flow-graph__port-count { color: var(--twm-flow-ok); }
|
|
@@ -8505,7 +8527,7 @@ button.twm-about-dialog__btn--close:focus {
|
|
|
8505
8527
|
}
|
|
8506
8528
|
.twm-flow-graph__port--can-drop .twm-flow-graph__port-dot {
|
|
8507
8529
|
background: var(--twm-flow-focus);
|
|
8508
|
-
box-shadow: 0 0 0 3px
|
|
8530
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-bright) 35%, transparent);
|
|
8509
8531
|
}
|
|
8510
8532
|
|
|
8511
8533
|
/* ── a line ─────────────────────────────────────────────────────────── */
|