@toolbox-web/grid 0.4.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/all.js +1063 -1024
- package/all.js.map +1 -1
- package/index.js +1078 -912
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts +28 -0
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/dom-builder.d.ts +2 -0
- package/lib/core/internal/dom-builder.d.ts.map +1 -1
- package/lib/core/internal/event-delegation.d.ts +21 -0
- package/lib/core/internal/event-delegation.d.ts.map +1 -1
- package/lib/core/internal/header.d.ts.map +1 -1
- package/lib/core/internal/resize.d.ts.map +1 -1
- package/lib/core/internal/rows.d.ts +1 -1
- package/lib/core/internal/rows.d.ts.map +1 -1
- package/lib/core/internal/shell.d.ts +19 -13
- package/lib/core/internal/shell.d.ts.map +1 -1
- package/lib/core/plugin/base-plugin.d.ts +13 -2
- package/lib/core/plugin/base-plugin.d.ts.map +1 -1
- package/lib/core/plugin/expander-column.d.ts.map +1 -1
- package/lib/core/plugin/plugin-manager.d.ts +6 -2
- package/lib/core/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/core/types.d.ts +41 -3
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js +22 -11
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +59 -48
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/index.js +71 -60
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts +1 -0
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +93 -80
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/export/index.js +29 -18
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +9 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +199 -165
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts +1 -0
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-columns/index.js +79 -49
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-rows/index.js +98 -87
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/index.js +70 -57
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/multi-sort/index.js +48 -37
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/index.js +71 -66
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-columns/pinned-columns.d.ts +2 -2
- package/lib/plugins/pinned-columns/pinned-columns.d.ts.map +1 -1
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-rows/index.js +63 -52
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/PivotPlugin.d.ts.map +1 -1
- package/lib/plugins/pivot/index.js +310 -299
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/reorder/ReorderPlugin.d.ts.map +1 -1
- package/lib/plugins/reorder/index.d.ts +1 -1
- package/lib/plugins/reorder/index.d.ts.map +1 -1
- package/lib/plugins/reorder/index.js +79 -68
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
- package/lib/plugins/selection/index.js +115 -105
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js +15 -4
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/TreePlugin.d.ts.map +1 -1
- package/lib/plugins/tree/index.js +41 -30
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/undo-redo/index.js +29 -18
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts.map +1 -1
- package/lib/plugins/visibility/index.js +59 -47
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +6 -6
- package/public.d.ts +42 -0
- package/public.d.ts.map +1 -1
- package/themes/dg-theme-bootstrap.css +55 -53
- package/themes/dg-theme-contrast.css +42 -40
- package/themes/dg-theme-large.css +38 -37
- package/themes/dg-theme-material.css +54 -52
- package/themes/dg-theme-standard.css +19 -17
- package/themes/dg-theme-vibrant.css +16 -14
- package/umd/grid.all.umd.js +23 -22
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +15 -14
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/column-virtualization.umd.js +1 -1
- package/umd/plugins/column-virtualization.umd.js.map +1 -1
- package/umd/plugins/context-menu.umd.js +1 -1
- package/umd/plugins/context-menu.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/grouping-rows.umd.js +1 -1
- package/umd/plugins/grouping-rows.umd.js.map +1 -1
- package/umd/plugins/master-detail.umd.js +1 -1
- package/umd/plugins/master-detail.umd.js.map +1 -1
- package/umd/plugins/multi-sort.umd.js +1 -1
- package/umd/plugins/multi-sort.umd.js.map +1 -1
- package/umd/plugins/pinned-columns.umd.js +1 -1
- package/umd/plugins/pinned-columns.umd.js.map +1 -1
- package/umd/plugins/pinned-rows.umd.js +1 -1
- package/umd/plugins/pinned-rows.umd.js.map +1 -1
- package/umd/plugins/pivot.umd.js +1 -1
- package/umd/plugins/pivot.umd.js.map +1 -1
- package/umd/plugins/reorder.umd.js +1 -1
- package/umd/plugins/reorder.umd.js.map +1 -1
- package/umd/plugins/selection.umd.js +1 -1
- package/umd/plugins/selection.umd.js.map +1 -1
- package/umd/plugins/tree.umd.js +1 -1
- package/umd/plugins/tree.umd.js.map +1 -1
- package/umd/plugins/visibility.umd.js +1 -1
- package/umd/plugins/visibility.umd.js.map +1 -1
|
@@ -3,69 +3,71 @@
|
|
|
3
3
|
* Matches the look of Bootstrap's .table component
|
|
4
4
|
* https://getbootstrap.com/docs/5.3/content/tables/
|
|
5
5
|
*/
|
|
6
|
-
tbw-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
@layer tbw-theme {
|
|
7
|
+
tbw-grid {
|
|
8
|
+
/* Bootstrap surface colors */
|
|
9
|
+
--tbw-color-bg: light-dark(#ffffff, #212529);
|
|
10
|
+
--tbw-color-panel-bg: light-dark(#ffffff, #212529);
|
|
11
|
+
--tbw-color-fg: light-dark(#212529, #dee2e6);
|
|
12
|
+
--tbw-color-fg-muted: light-dark(#6c757d, #adb5bd);
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/* Bootstrap border colors */
|
|
15
|
+
--tbw-color-border: light-dark(#dee2e6, #495057);
|
|
16
|
+
--tbw-color-border-strong: light-dark(#adb5bd, #6c757d);
|
|
17
|
+
--tbw-color-border-cell: light-dark(#dee2e6, #495057);
|
|
18
|
+
--tbw-color-border-header: light-dark(#dee2e6, #495057);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/* Row divider */
|
|
21
|
+
--tbw-row-divider: 1px solid light-dark(#dee2e6, #495057);
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
/* Bootstrap primary (blue) */
|
|
24
|
+
--tbw-color-accent: light-dark(#0d6efd, #6ea8fe);
|
|
25
|
+
--tbw-color-accent-fg: #ffffff;
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
/* Selection & interaction - Bootstrap's table-active */
|
|
28
|
+
--tbw-color-selection: light-dark(rgba(0, 0, 0, 0.075), rgba(255, 255, 255, 0.075));
|
|
29
|
+
--tbw-color-row-alt: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.05)); /* Striped rows */
|
|
30
|
+
--tbw-color-row-hover: light-dark(rgba(0, 0, 0, 0.075), rgba(255, 255, 255, 0.075));
|
|
31
|
+
--tbw-color-active-row-bg: light-dark(rgba(13, 110, 253, 0.1), rgba(110, 168, 254, 0.15));
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
/* Header - slightly darker background */
|
|
34
|
+
--tbw-color-header-bg: light-dark(#f8f9fa, #343a40);
|
|
35
|
+
--tbw-color-header-fg: light-dark(#212529, #dee2e6);
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
/* No border radius - Bootstrap tables are rectangular */
|
|
38
|
+
--tbw-border-radius: 0;
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/* Focus styling */
|
|
41
|
+
--tbw-focus-outline: 3px solid light-dark(rgba(13, 110, 253, 0.25), rgba(110, 168, 254, 0.5));
|
|
42
|
+
--tbw-focus-outline-offset: -3px;
|
|
43
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
/* Bootstrap typography */
|
|
46
|
+
--tbw-font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
47
|
+
--tbw-font-size: 1rem;
|
|
48
|
+
--tbw-font-size-header: 1rem;
|
|
49
|
+
--tbw-font-weight-header: bold;
|
|
50
|
+
--tbw-header-text-transform: none;
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
/* Bootstrap table padding */
|
|
53
|
+
--tbw-cell-padding: 8px 8px;
|
|
54
|
+
--tbw-cell-padding-header: 8px 8px;
|
|
55
|
+
--tbw-row-height: 40px;
|
|
56
|
+
--tbw-header-height: 44px;
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
/* Sort indicator */
|
|
59
|
+
--tbw-sort-indicator-color: light-dark(#6c757d, #adb5bd);
|
|
60
|
+
--tbw-sort-indicator-active-color: light-dark(#212529, #dee2e6);
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
/* Header border - thicker bottom border like Bootstrap */
|
|
63
|
+
--tbw-border-header: 2px solid light-dark(#212529, #dee2e6);
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
/* Input styling */
|
|
66
|
+
--tbw-border-input: 1px solid light-dark(#ced4da, #495057);
|
|
67
|
+
--tbw-editing-bg: light-dark(#ffffff, #212529);
|
|
68
|
+
--tbw-editing-border: 1px solid var(--tbw-color-accent);
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
70
|
+
/* Success color for checkmarks etc */
|
|
71
|
+
--tbw-color-success: light-dark(#198754, #75b798);
|
|
72
|
+
}
|
|
73
|
+
} /* End @layer tbw-theme */
|
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
/* High contrast accessibility-focused theme */
|
|
2
|
-
tbw-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
@layer tbw-theme {
|
|
3
|
+
tbw-grid {
|
|
4
|
+
--tbw-color-bg: light-dark(#ffffff, #000000);
|
|
5
|
+
--tbw-color-fg: light-dark(#000000, #ffffff);
|
|
6
|
+
--tbw-color-fg-muted: light-dark(#222222, #dddddd);
|
|
7
|
+
--tbw-color-border: light-dark(#000000, #ffffff);
|
|
8
|
+
--tbw-color-border-strong: light-dark(#000000, #ffffff);
|
|
9
|
+
--tbw-color-accent: light-dark(#c00000, #ff4d4d);
|
|
10
|
+
--tbw-color-accent-fg: #ffffff;
|
|
11
|
+
--tbw-color-selection: light-dark(#ffe9a8, #333333);
|
|
12
|
+
--tbw-color-row-alt: light-dark(#f2f2f2, #111111);
|
|
13
|
+
--tbw-color-row-hover: light-dark(#e6f2ff, #1c1c1c);
|
|
14
|
+
--tbw-color-header-bg: light-dark(#e8e8e8, #141414);
|
|
15
|
+
--tbw-color-border-cell: light-dark(#333, #eee);
|
|
16
|
+
--tbw-color-border-header: light-dark(#444, #ccc);
|
|
17
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
18
|
+
--tbw-focus-outline: 2px solid var(--tbw-color-accent);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
20
|
+
/* Typography & spacing */
|
|
21
|
+
--tbw-font-size: 14px;
|
|
22
|
+
--tbw-font-size-header: 17px;
|
|
23
|
+
--tbw-font-weight-header: bold;
|
|
24
|
+
--tbw-cell-padding-header: 15px 8px;
|
|
25
|
+
--tbw-cell-padding: 2px 8px;
|
|
26
|
+
--tbw-cell-padding-input: 2px 6px;
|
|
27
|
+
--tbw-row-height: 40px; /* taller rows */
|
|
28
|
+
--tbw-header-height: 44px;
|
|
29
|
+
--tbw-border-radius: 0;
|
|
30
|
+
--tbw-resize-handle-width: 6px;
|
|
31
|
+
--tbw-resize-handle-border-radius: 2px;
|
|
32
|
+
--tbw-checkbox-size: 20px;
|
|
33
|
+
--tbw-focus-outline-offset: 0;
|
|
34
|
+
--tbw-row-divider: 2px solid light-dark(#000000, #ffffff);
|
|
35
|
+
--tbw-border-header: 2px solid light-dark(#000000, #ffffff);
|
|
36
|
+
--tbw-editing-border: 2px solid var(--tbw-color-accent);
|
|
37
|
+
--tbw-active-row-outline: 2px solid var(--tbw-color-accent);
|
|
38
|
+
--tbw-row-hover-outline: 2px solid var(--tbw-color-accent);
|
|
39
|
+
--tbw-sort-indicator-color: var(--tbw-color-fg-muted);
|
|
40
|
+
--tbw-sort-indicator-active-color: var(--tbw-color-accent);
|
|
41
|
+
--tbw-transition-duration: 0ms; /* reduce motion */
|
|
42
|
+
--tbw-font-size-editor: 1rem;
|
|
43
|
+
}
|
|
44
|
+
} /* End @layer tbw-theme */
|
|
@@ -9,45 +9,46 @@
|
|
|
9
9
|
- Stronger focus outline for visibility
|
|
10
10
|
- Slightly higher contrast for muted fg & borders (within WCAG AA)
|
|
11
11
|
*/
|
|
12
|
+
@layer tbw-theme {
|
|
13
|
+
tbw-grid {
|
|
14
|
+
/* Reuse core color tokens from standard theme with a few tweaks */
|
|
15
|
+
--tbw-color-bg: light-dark(#ffffff, #1f2125);
|
|
16
|
+
--tbw-color-fg: light-dark(#1b1e23, #e7e9ed); /* a bit darker/lighter */
|
|
17
|
+
--tbw-color-fg-muted: light-dark(#4c5660, #a3adb7); /* slightly higher contrast */
|
|
18
|
+
--tbw-color-border: light-dark(#c4c9cf, #444950);
|
|
19
|
+
--tbw-color-border-strong: light-dark(#7c828a, #5f646c);
|
|
20
|
+
--tbw-color-accent: light-dark(#1d4ed8, #3b82f6); /* slightly deeper blue in light */
|
|
21
|
+
--tbw-color-accent-fg: #ffffff;
|
|
22
|
+
--tbw-color-selection: light-dark(#fff3c2, #303640);
|
|
23
|
+
--tbw-color-row-alt: light-dark(#f5f7f9, #272c34);
|
|
24
|
+
--tbw-color-row-hover: light-dark(#e6f2ff, #313741);
|
|
25
|
+
--tbw-color-header-bg: light-dark(#eef1f5, #262a30);
|
|
26
|
+
--tbw-color-border-cell: light-dark(#e4e7eb, #363a41);
|
|
27
|
+
--tbw-color-border-header: light-dark(#bbbbc2, #454a52);
|
|
12
28
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
--tbw-color-selection: light-dark(#fff3c2, #303640);
|
|
23
|
-
--tbw-color-row-alt: light-dark(#f5f7f9, #272c34);
|
|
24
|
-
--tbw-color-row-hover: light-dark(#e6f2ff, #313741);
|
|
25
|
-
--tbw-color-header-bg: light-dark(#eef1f5, #262a30);
|
|
26
|
-
--tbw-color-border-cell: light-dark(#e4e7eb, #363a41);
|
|
27
|
-
--tbw-color-border-header: light-dark(#bbbbc2, #454a52);
|
|
29
|
+
/* Typography & spacing overrides */
|
|
30
|
+
--tbw-font-size: 18px; /* larger base */
|
|
31
|
+
--tbw-font-size-header: 19px;
|
|
32
|
+
--tbw-cell-padding: 6px 14px; /* vertical horiz */
|
|
33
|
+
--tbw-cell-padding-header: 6px 14px;
|
|
34
|
+
--tbw-cell-padding-input: 4px 10px;
|
|
35
|
+
--tbw-row-height: 38px;
|
|
36
|
+
--tbw-header-height: 42px;
|
|
37
|
+
--tbw-checkbox-size: 20px;
|
|
28
38
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--tbw-cell-padding: 6px 14px; /* vertical horiz */
|
|
33
|
-
--tbw-cell-padding-header: 6px 14px;
|
|
34
|
-
--tbw-cell-padding-input: 4px 10px;
|
|
35
|
-
--tbw-row-height: 38px;
|
|
36
|
-
--tbw-header-height: 42px;
|
|
37
|
-
--tbw-checkbox-size: 20px;
|
|
39
|
+
/* Focus enhancements */
|
|
40
|
+
--tbw-focus-outline: 3px solid var(--tbw-color-accent);
|
|
41
|
+
--tbw-focus-outline-offset: -3px;
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
/* Editing */
|
|
44
|
+
--tbw-font-size-editor: 18px;
|
|
45
|
+
--tbw-padding-editing-input: 4px 10px;
|
|
42
46
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
/* Resize handle larger */
|
|
48
|
+
--tbw-resize-handle-width: 6px;
|
|
49
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
/* Slightly longer transitions for comfort */
|
|
52
|
-
--tbw-transition-duration: 140ms;
|
|
53
|
-
}
|
|
51
|
+
/* Slightly longer transitions for comfort */
|
|
52
|
+
--tbw-transition-duration: 140ms;
|
|
53
|
+
}
|
|
54
|
+
} /* End @layer tbw-theme */
|
|
@@ -3,67 +3,69 @@
|
|
|
3
3
|
* Matches the clean, minimal look of Angular Material's mat-table
|
|
4
4
|
* https://material.angular.io/components/table/overview
|
|
5
5
|
*/
|
|
6
|
-
tbw-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
@layer tbw-theme {
|
|
7
|
+
tbw-grid {
|
|
8
|
+
/* Clean white/dark surface - no tinting */
|
|
9
|
+
--tbw-color-bg: light-dark(#ffffff, #272727);
|
|
10
|
+
--tbw-color-panel-bg: light-dark(#ffffff, #272727);
|
|
11
|
+
--tbw-color-fg: light-dark(rgba(0, 0, 0, 0.87), #ffffff);
|
|
12
|
+
--tbw-color-fg-muted: light-dark(rgba(0, 0, 0, 0.54), rgba(255, 255, 255, 0.7));
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/* Minimal borders - only horizontal row dividers */
|
|
15
|
+
--tbw-color-border: light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.12));
|
|
16
|
+
--tbw-color-border-strong: light-dark(rgba(0, 0, 0, 0.42), rgba(255, 255, 255, 0.5));
|
|
17
|
+
--tbw-color-border-cell: transparent; /* No vertical cell borders */
|
|
18
|
+
--tbw-color-border-header: light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.12));
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/* Row divider - thin horizontal line only */
|
|
21
|
+
--tbw-row-divider: 1px solid light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.12));
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
/* Angular Material accent colors */
|
|
24
|
+
--tbw-color-accent: light-dark(#3f51b5, #7986cb); /* Indigo primary */
|
|
25
|
+
--tbw-color-accent-fg: #ffffff;
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
/* Selection & interaction */
|
|
28
|
+
--tbw-color-selection: light-dark(rgba(63, 81, 181, 0.08), rgba(121, 134, 203, 0.16));
|
|
29
|
+
--tbw-color-row-alt: transparent; /* No zebra striping in Material */
|
|
30
|
+
--tbw-color-row-hover: light-dark(rgba(0, 0, 0, 0.04), rgba(255, 255, 255, 0.04));
|
|
31
|
+
--tbw-color-active-row-bg: light-dark(rgba(63, 81, 181, 0.08), rgba(121, 134, 203, 0.16));
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
/* Header - same as body, no distinct background */
|
|
34
|
+
--tbw-color-header-bg: light-dark(#ffffff, #272727);
|
|
35
|
+
--tbw-color-header-fg: light-dark(rgba(0, 0, 0, 0.54), rgba(255, 255, 255, 0.7));
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
/* No outer border or radius - clean rectangular look */
|
|
38
|
+
--tbw-border-radius: 0;
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/* Focus styling */
|
|
41
|
+
--tbw-focus-outline: 2px solid var(--tbw-color-accent);
|
|
42
|
+
--tbw-focus-outline-offset: -2px;
|
|
43
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
/* Roboto typography - Material standard */
|
|
46
|
+
--tbw-font-family: 'Roboto', 'Helvetica Neue', sans-serif;
|
|
47
|
+
--tbw-font-size: 14px;
|
|
48
|
+
--tbw-font-size-header: 12px;
|
|
49
|
+
--tbw-font-weight-header: 500;
|
|
50
|
+
--tbw-header-text-transform: none;
|
|
51
|
+
--tbw-header-letter-spacing: normal;
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
/* Generous padding like Material tables */
|
|
54
|
+
--tbw-cell-padding: 4px 16px;
|
|
55
|
+
--tbw-cell-padding-header: 4px 16px;
|
|
56
|
+
--tbw-row-height: 48px;
|
|
57
|
+
--tbw-header-height: 56px;
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
/* Sort indicator styling */
|
|
60
|
+
--tbw-sort-indicator-color: light-dark(rgba(0, 0, 0, 0.54), rgba(255, 255, 255, 0.7));
|
|
61
|
+
--tbw-sort-indicator-active-color: light-dark(rgba(0, 0, 0, 0.87), #ffffff);
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
/* Header border - only bottom */
|
|
64
|
+
--tbw-border-header: 1px solid light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.12));
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
66
|
+
/* Input styling for editing */
|
|
67
|
+
--tbw-border-input: 1px solid light-dark(rgba(0, 0, 0, 0.42), rgba(255, 255, 255, 0.5));
|
|
68
|
+
--tbw-editing-bg: transparent;
|
|
69
|
+
--tbw-editing-border: 2px solid var(--tbw-color-accent);
|
|
70
|
+
}
|
|
71
|
+
} /* End @layer tbw-theme */
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/* Standard balanced theme with light-dark() adaptive palette */
|
|
2
|
-
tbw-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
@layer tbw-theme {
|
|
3
|
+
tbw-grid {
|
|
4
|
+
--tbw-color-bg: light-dark(#ffffff, #1f2125);
|
|
5
|
+
--tbw-color-fg: light-dark(#1f2329, #e5e7eb);
|
|
6
|
+
--tbw-color-fg-muted: light-dark(#586069, #9ca3af);
|
|
7
|
+
--tbw-color-border: light-dark(#d0d4d9, #3a3d44);
|
|
8
|
+
--tbw-color-border-strong: light-dark(#888d94, #5a5f66);
|
|
9
|
+
--tbw-color-accent: light-dark(#2563eb, #3b82f6);
|
|
10
|
+
--tbw-color-accent-fg: #ffffff;
|
|
11
|
+
--tbw-color-selection: light-dark(#fff7d6, #374151);
|
|
12
|
+
--tbw-color-row-alt: light-dark(#f8f9fa, #252830);
|
|
13
|
+
--tbw-color-row-hover: light-dark(#eef6ff, #2d313b);
|
|
14
|
+
--tbw-color-header-bg: light-dark(#f5f6f8, #262a30);
|
|
15
|
+
--tbw-color-border-cell: light-dark(#eee, #333);
|
|
16
|
+
--tbw-color-border-header: light-dark(#ccc, #444);
|
|
17
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
18
|
+
--tbw-align-header-group: center;
|
|
19
|
+
}
|
|
20
|
+
} /* End @layer tbw-theme */
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/* Vibrant colorful theme (keeps good contrast) */
|
|
2
|
-
tbw-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
@layer tbw-theme {
|
|
3
|
+
tbw-grid {
|
|
4
|
+
--tbw-color-bg: light-dark(#fcfcff, #1a1c24);
|
|
5
|
+
--tbw-color-fg: light-dark(#1e2430, #f1f5f9);
|
|
6
|
+
--tbw-color-fg-muted: light-dark(#5d6473, #9ba4b4);
|
|
7
|
+
--tbw-color-border: light-dark(#d6daf2, #3a4153);
|
|
8
|
+
--tbw-color-border-strong: light-dark(#8a93b5, #596380);
|
|
9
|
+
--tbw-color-accent: light-dark(#6366f1, #818cf8);
|
|
10
|
+
--tbw-color-accent-fg: #ffffff;
|
|
11
|
+
--tbw-color-selection: light-dark(#edeaff, #374062);
|
|
12
|
+
--tbw-color-row-alt: light-dark(#f4f3ff, #232a3a);
|
|
13
|
+
--tbw-color-row-hover: light-dark(#eef2ff, #2b3447);
|
|
14
|
+
--tbw-color-header-bg: light-dark(#eff1ff, #242b3b);
|
|
15
|
+
--tbw-resize-handle-color-hover: var(--tbw-color-accent);
|
|
16
|
+
}
|
|
17
|
+
} /* End @layer tbw-theme */
|