@geovi/the-datagrid 0.0.12 → 0.0.13

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 (69) hide show
  1. package/README.md +195 -40
  2. package/dist/base.css +1 -1
  3. package/dist/components.js +23 -23
  4. package/dist/grid/ReactDataGrid.d.ts.map +1 -1
  5. package/dist/grid/hooks/useGridColumnApi.d.ts +0 -5
  6. package/dist/grid/hooks/useGridColumnApi.d.ts.map +1 -1
  7. package/dist/grid/hooks/useGridToolbarBridge.d.ts +28 -0
  8. package/dist/grid/hooks/useGridToolbarBridge.d.ts.map +1 -0
  9. package/dist/grid/internalProps.d.ts +12 -5
  10. package/dist/grid/internalProps.d.ts.map +1 -1
  11. package/dist/index.cjs +9 -9
  12. package/dist/index.css +1 -1
  13. package/dist/index.js +6061 -5994
  14. package/dist/optional-target.d.ts +1 -1
  15. package/dist/optional-target.d.ts.map +1 -1
  16. package/dist/providers/index.d.ts +2 -2
  17. package/dist/providers/index.d.ts.map +1 -1
  18. package/dist/search/RDGSearchTarget.d.ts.map +1 -1
  19. package/dist/search.js +70 -70
  20. package/dist/style/theme/amber-dark/index.css +1 -1
  21. package/dist/style/theme/amber-light/index.css +1 -1
  22. package/dist/style/theme/blue-dark/index.css +1 -1
  23. package/dist/style/theme/blue-light/index.css +1 -1
  24. package/dist/style/theme/default-dark/index.css +1 -1
  25. package/dist/style/theme/default-light/index.css +1 -1
  26. package/dist/style/theme/green-dark/index.css +1 -1
  27. package/dist/style/theme/green-light/index.css +1 -1
  28. package/dist/style/theme/pink-dark/index.css +1 -1
  29. package/dist/style/theme/pink-light/index.css +1 -1
  30. package/dist/toolbar/RDGToolbar.d.ts +88 -0
  31. package/dist/toolbar/RDGToolbar.d.ts.map +1 -0
  32. package/dist/toolbar/RDGToolbarProvider.d.ts +6 -0
  33. package/dist/toolbar/RDGToolbarProvider.d.ts.map +1 -0
  34. package/dist/toolbar/RDGToolbarTarget.d.ts +7 -0
  35. package/dist/toolbar/RDGToolbarTarget.d.ts.map +1 -0
  36. package/dist/toolbar/controller.d.ts +29 -0
  37. package/dist/toolbar/controller.d.ts.map +1 -0
  38. package/dist/toolbar/export.d.ts +70 -0
  39. package/dist/toolbar/export.d.ts.map +1 -0
  40. package/dist/toolbar/icons.d.ts +22 -0
  41. package/dist/toolbar/icons.d.ts.map +1 -0
  42. package/dist/toolbar/index.d.ts +8 -0
  43. package/dist/toolbar/index.d.ts.map +1 -0
  44. package/dist/toolbar/runtime.d.ts.map +1 -0
  45. package/dist/toolbar/store.d.ts +20 -0
  46. package/dist/toolbar/store.d.ts.map +1 -0
  47. package/dist/toolbar/xlsx.d.ts +35 -0
  48. package/dist/toolbar/xlsx.d.ts.map +1 -0
  49. package/dist/toolbar.css +1 -0
  50. package/dist/toolbar.js +797 -0
  51. package/dist/types.d.ts +18 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +29 -11
  54. package/dist/column-visibility/RDGColumnVisibilityProvider.d.ts +0 -6
  55. package/dist/column-visibility/RDGColumnVisibilityProvider.d.ts.map +0 -1
  56. package/dist/column-visibility/RDGColumnVisibilityTarget.d.ts +0 -7
  57. package/dist/column-visibility/RDGColumnVisibilityTarget.d.ts.map +0 -1
  58. package/dist/column-visibility/RDGColumnVisibilityToolbar.d.ts +0 -9
  59. package/dist/column-visibility/RDGColumnVisibilityToolbar.d.ts.map +0 -1
  60. package/dist/column-visibility/controller.d.ts +0 -13
  61. package/dist/column-visibility/controller.d.ts.map +0 -1
  62. package/dist/column-visibility/index.d.ts +0 -7
  63. package/dist/column-visibility/index.d.ts.map +0 -1
  64. package/dist/column-visibility/runtime.d.ts.map +0 -1
  65. package/dist/column-visibility/store.d.ts +0 -20
  66. package/dist/column-visibility/store.d.ts.map +0 -1
  67. package/dist/column-visibility.css +0 -1
  68. package/dist/column-visibility.js +0 -426
  69. /package/dist/{column-visibility → toolbar}/runtime.d.ts +0 -0
@@ -0,0 +1,88 @@
1
+ import { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
2
+ import * as React from "react";
3
+ /**
4
+ * Every string the toolbar renders itself. Values are `ReactNode`, so a
5
+ * translation helper that returns an element works as well as one that returns
6
+ * a string; `filteringControlledHint` is the exception and is noted below.
7
+ *
8
+ * The four button labels are required, because a toolbar that renders a button
9
+ * needs a word for it. The rest refine text that already reads correctly on its
10
+ * own, so translating the buttons does not oblige you to name a format map you
11
+ * have no opinion about.
12
+ */
13
+ export type RDGToolbarLabels = {
14
+ export: React.ReactNode;
15
+ showFilters: React.ReactNode;
16
+ hideFilters: React.ReactNode;
17
+ clearFilters: React.ReactNode;
18
+ /**
19
+ * Export menu entry per format, defaulting to the format's own name. Naming
20
+ * one format leaves the rest untouched: `{ xlsx: t("excel") }`.
21
+ */
22
+ exportFormats?: Partial<Record<RDGToolbarExportFormat, React.ReactNode>>;
23
+ /**
24
+ * Whole text of the export button when `exportFormats` offers exactly one
25
+ * format. The default joins `export` and the format name in that fixed order
26
+ * ("Export CSV"), which no translation file can reorder - set this where the
27
+ * verb trails the noun, as in "CSV exportieren".
28
+ */
29
+ exportSingle?: Partial<Record<RDGToolbarExportFormat, React.ReactNode>>;
30
+ /**
31
+ * Tooltip on a filter toggle the grid owns through its own `enableFiltering`
32
+ * prop. Stays a `string`: it renders as a `title` attribute.
33
+ */
34
+ filteringControlledHint?: string;
35
+ };
36
+ /** Describes one export, for `exportFileName` callbacks. */
37
+ export type RDGToolbarExportInfo = {
38
+ format: RDGToolbarExportFormat;
39
+ scope: RDGToolbarExportScope;
40
+ rowCount: number;
41
+ columnCount: number;
42
+ };
43
+ /** Describes a finished export, for `onExportSuccess`. */
44
+ export type RDGToolbarExportResult = RDGToolbarExportInfo & {
45
+ /** File name the browser was given, including the extension. */
46
+ fileName: string;
47
+ /** Size of the written file in bytes. */
48
+ byteLength: number;
49
+ };
50
+ export type RDGToolbarProps = {
51
+ children?: React.ReactNode;
52
+ ariaLabel?: string;
53
+ title?: React.ReactNode;
54
+ description?: React.ReactNode;
55
+ /** Column visibility toggles. */
56
+ showColumnToggles?: boolean;
57
+ /** Downloads the grid's rows in one of `exportFormats`. */
58
+ showExport?: boolean;
59
+ /** Shows or hides the grid's filter row. */
60
+ showFilterToggle?: boolean;
61
+ /** Clears every column filter value. */
62
+ showClearFilters?: boolean;
63
+ /** `"view"` exports the filtered, searched and sorted rows; `"all"` the whole data source. */
64
+ exportScope?: RDGToolbarExportScope;
65
+ /**
66
+ * Formats offered by the export control, in menu order. `"xlsx"` needs the
67
+ * optional `xlsx` peer dependency installed.
68
+ */
69
+ exportFormats?: readonly RDGToolbarExportFormat[];
70
+ /**
71
+ * Downloaded file name without extension. A function is called per export, so
72
+ * a name that embeds the date or the chosen format stays accurate.
73
+ */
74
+ exportFileName?: string | ((info: RDGToolbarExportInfo) => string);
75
+ /** Excel number format for date cells in spreadsheet exports. */
76
+ exportDateFormat?: string;
77
+ /** Worksheet name for spreadsheet exports. Defaults to the file name. */
78
+ exportSheetName?: string;
79
+ /** Called after an export has been handed to the browser. */
80
+ onExportSuccess?: (result: RDGToolbarExportResult) => void;
81
+ /** Called when an export fails, e.g. when the xlsx peer is missing. */
82
+ onExportError?: (error: unknown) => void;
83
+ labels?: Partial<RDGToolbarLabels>;
84
+ /** Appended to the toolbar root's class list, for scoped consumer styling. */
85
+ className?: string;
86
+ };
87
+ export declare function RDGToolbar(props: RDGToolbarProps): React.ReactElement;
88
+ //# sourceMappingURL=RDGToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDGToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,UAAU,CAAC;AAIlB;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAClD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,MAAM,CAAC,CAAC;IACnE,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3D,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAkDF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAqPrE"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ export type RDGToolbarProviderProps = {
3
+ children: React.ReactNode;
4
+ };
5
+ export declare function RDGToolbarProvider(props: RDGToolbarProviderProps): React.ReactElement;
6
+ //# sourceMappingURL=RDGToolbarProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDGToolbarProvider.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,KAAK,CAAC,YAAY,CAyBpB"}
@@ -0,0 +1,7 @@
1
+ import { TypeDataGridProps } from '../types.js';
2
+ import * as React from "react";
3
+ export type RDGToolbarTargetProps = {
4
+ children: React.ReactElement<TypeDataGridProps>;
5
+ };
6
+ export declare function RDGToolbarTarget(props: RDGToolbarTargetProps): React.ReactElement;
7
+ //# sourceMappingURL=RDGToolbarTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDGToolbarTarget.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarTarget.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,KAAK,CAAC,YAAY,CAoCpB"}
@@ -0,0 +1,29 @@
1
+ import { TypeColumn } from '../types.js';
2
+ export type RDGToolbarPublishedSnapshot = {
3
+ columns: readonly TypeColumn[];
4
+ columnOrder: readonly string[];
5
+ columnVisibilityMap: Readonly<Record<string, boolean>>;
6
+ theme: string;
7
+ setColumnVisible: (columnId: string, visible: boolean) => void;
8
+ /** Whether the grid currently renders its filter row. */
9
+ filteringEnabled: boolean;
10
+ /**
11
+ * False while the grid owns `enableFiltering` as a controlled prop. The
12
+ * imperative setter is a no-op in that case, so the toolbar disables its
13
+ * filter toggle instead of pretending to own the state.
14
+ */
15
+ canToggleFiltering: boolean;
16
+ setFilteringEnabled: (enabled: boolean) => void;
17
+ /** Whether at least one column filter holds a non-empty value. */
18
+ filtered: boolean;
19
+ clearAllFilters: () => void;
20
+ /** Rows the grid currently renders: filtered, searched and sorted. */
21
+ getViewRows: () => readonly unknown[];
22
+ /** Every row of the local data source, before filtering and searching. */
23
+ getAllRows: () => readonly unknown[];
24
+ };
25
+ /** Private bridge injected by RDGToolbarTarget. */
26
+ export type RDGToolbarController = {
27
+ publish: (snapshot: RDGToolbarPublishedSnapshot) => void;
28
+ };
29
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/toolbar/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,sEAAsE;IACtE,WAAW,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;IACtC,0EAA0E;IAC1E,UAAU,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;CACtC,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAC1D,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { TypeColumn } from '../types.js';
2
+ /**
3
+ * Formats the built-in toolbar export can write. Adding a format means adding
4
+ * an entry to `RDG_TOOLBAR_EXPORT_FORMATS`; the toolbar menu is generated from
5
+ * that registry.
6
+ *
7
+ * `"xlsx"` needs the optional `xlsx` peer dependency and is therefore not
8
+ * offered by default.
9
+ */
10
+ export type RDGToolbarExportFormat = "csv" | "json" | "xlsx";
11
+ /** Rows the export reads: the current grid view, or the whole data source. */
12
+ export type RDGToolbarExportScope = "view" | "all";
13
+ export type RDGToolbarExportTable = {
14
+ /** Header labels, in export order. */
15
+ headers: string[];
16
+ /** Data field names, in export order. */
17
+ fields: string[];
18
+ /**
19
+ * Row-major cell values, already passed through `column.exportValue`.
20
+ *
21
+ * Values keep their JavaScript type. Text formats stringify them; the
22
+ * spreadsheet format maps them onto typed cells.
23
+ */
24
+ rows: unknown[][];
25
+ };
26
+ /** Options a format may honour, threaded through from the toolbar props. */
27
+ export type RDGToolbarExportOptions = {
28
+ /** Excel number format for date cells. */
29
+ dateFormat?: string;
30
+ /** Worksheet name for spreadsheet formats. */
31
+ sheetName?: string;
32
+ };
33
+ export type RDGToolbarExportFormatDefinition = {
34
+ label: string;
35
+ extension: string;
36
+ mimeType: string;
37
+ /**
38
+ * Builds the file body. Asynchronous so a format can load its writer on
39
+ * demand instead of adding weight to this entry.
40
+ */
41
+ createContent: (table: RDGToolbarExportTable, options: RDGToolbarExportOptions) => BlobPart | Promise<BlobPart>;
42
+ };
43
+ /**
44
+ * Export order follows the grid's column order. A column is exported when it
45
+ * is `exportable` (the default) and either visible or explicitly marked
46
+ * `exportWhenHidden`. `exportable: false` always wins.
47
+ */
48
+ export declare function resolveExportColumns(snapshot: {
49
+ columns: readonly TypeColumn[];
50
+ columnOrder: readonly string[];
51
+ columnVisibilityMap: Readonly<Record<string, boolean>>;
52
+ }): TypeColumn[];
53
+ /**
54
+ * `column.render` is deliberately ignored: it returns React nodes, which is
55
+ * exactly why `exportValue` exists. A throwing `exportValue` falls back to the
56
+ * raw value instead of failing the whole export.
57
+ */
58
+ export declare function resolveExportValue(column: TypeColumn, row: unknown): unknown;
59
+ export declare function buildExportTable(columns: readonly TypeColumn[], rows: readonly unknown[]): RDGToolbarExportTable;
60
+ /**
61
+ * RFC 4180 line endings plus a BOM, so spreadsheet apps open the file as UTF-8
62
+ * instead of guessing a local codepage.
63
+ */
64
+ export declare function serializeExportCsv(table: RDGToolbarExportTable): string;
65
+ export declare function serializeExportJson(table: RDGToolbarExportTable): string;
66
+ export declare const RDG_TOOLBAR_EXPORT_FORMATS: Record<RDGToolbarExportFormat, RDGToolbarExportFormatDefinition>;
67
+ export declare const DEFAULT_TOOLBAR_EXPORT_FORMATS: readonly RDGToolbarExportFormat[];
68
+ /** Returns the written size in bytes, or 0 when there is no document. */
69
+ export declare function downloadExportFile(filename: string, content: BlobPart, mimeType: string): number;
70
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/toolbar/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;CACnB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,uBAAuB,GAAG;IACpC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,EAAE,CACb,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,uBAAuB,KAC7B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnC,CAAC;AAsBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAC7C,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD,GAAG,UAAU,EAAE,CAyBf;AAOD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAS5E;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,qBAAqB,CAQvB;AAiBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAMvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAUxE;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,sBAAsB,EACtB,gCAAgC,CAoBjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,SAAS,sBAAsB,EAC3D,CAAC;AAElB,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR"}
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Inline glyphs for the built-in toolbar actions.
4
+ *
5
+ * The icon library the examples use is a dev dependency, and the optional
6
+ * toolbar entry may only depend on the core runtime, so these are drawn here in
7
+ * the same 24-unit, 2-stroke idiom the rest of the UI uses. They are decorative:
8
+ * every button keeps a text label, so each icon is aria-hidden.
9
+ */
10
+ type ToolbarIconProps = {
11
+ className?: string;
12
+ };
13
+ /** Arrow into a tray: download. */
14
+ export declare function ExportIcon(props: ToolbarIconProps): React.ReactElement;
15
+ /** Funnel: the filter row is hidden and can be shown. */
16
+ export declare function FilterIcon(props: ToolbarIconProps): React.ReactElement;
17
+ /** Funnel with a cross: the filter row is visible and can be hidden. */
18
+ export declare function FilterOffIcon(props: ToolbarIconProps): React.ReactElement;
19
+ /** Counter-clockwise arrow: reset the filter values. */
20
+ export declare function ResetIcon(props: ToolbarIconProps): React.ReactElement;
21
+ export {};
22
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/toolbar/icons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;GAOG;AACH,KAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAwBF,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAQtE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAMtE;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAQzE;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAOrE"}
@@ -0,0 +1,8 @@
1
+ export { RDGToolbar } from './RDGToolbar.js';
2
+ export { RDGToolbarProvider } from './RDGToolbarProvider.js';
3
+ export { RDGToolbarTarget } from './RDGToolbarTarget.js';
4
+ export type { RDGToolbarExportInfo, RDGToolbarExportResult, RDGToolbarLabels, RDGToolbarProps, } from './RDGToolbar.js';
5
+ export type { RDGToolbarProviderProps } from './RDGToolbarProvider.js';
6
+ export type { RDGToolbarTargetProps } from './RDGToolbarTarget.js';
7
+ export type { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/toolbar/index.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/toolbar/runtime.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CASvD"}
@@ -0,0 +1,20 @@
1
+ import { RDGToolbarController, RDGToolbarPublishedSnapshot } from './controller.js';
2
+ import * as React from "react";
3
+ export declare const EMPTY_TOOLBAR_SNAPSHOT: RDGToolbarPublishedSnapshot;
4
+ type TargetRegistration = {
5
+ attach: () => () => void;
6
+ controller: RDGToolbarController;
7
+ };
8
+ export type RDGToolbarStore = {
9
+ createTargetRegistration: () => TargetRegistration;
10
+ dispose: () => void;
11
+ getServerSnapshot: () => RDGToolbarPublishedSnapshot;
12
+ getSnapshot: () => RDGToolbarPublishedSnapshot;
13
+ subscribe: (listener: () => void) => () => void;
14
+ };
15
+ export declare function createRDGToolbarStore(): RDGToolbarStore;
16
+ export declare const RDGToolbarContext: React.Context<RDGToolbarStore | null>;
17
+ export declare function useRDGToolbarStore(): RDGToolbarStore;
18
+ export declare function useRDGToolbarSnapshot(): RDGToolbarPublishedSnapshot;
19
+ export {};
20
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/toolbar/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAYtB,eAAO,MAAM,sBAAsB,EAAE,2BAapC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IACrD,WAAW,EAAE,MAAM,2BAA2B,CAAC;IAC/C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CACjD,CAAC;AAgDF,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD;AAED,eAAO,MAAM,iBAAiB,uCAE7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED,wBAAgB,qBAAqB,IAAI,2BAA2B,CAOnE"}
@@ -0,0 +1,35 @@
1
+ import { RDGToolbarExportTable } from './export.js';
2
+ export declare const XLSX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
3
+ /** Excel number format applied to date cells. */
4
+ export declare const DEFAULT_XLSX_DATE_FORMAT = "yyyy-mm-dd hh:mm";
5
+ export declare class MissingXlsxDependencyError extends Error {
6
+ constructor(cause: unknown);
7
+ }
8
+ /**
9
+ * The writer reports an invalid number format as `bad second format: .` or with
10
+ * no message at all, so the failure is restated here in terms of the prop that
11
+ * causes it. Notably SheetJS refuses dot separators that Excel itself accepts.
12
+ */
13
+ export declare class XlsxWriteError extends Error {
14
+ constructor(dateFormat: string, cause: unknown);
15
+ }
16
+ /**
17
+ * Excel rejects sheet names that are empty, longer than 31 characters or
18
+ * contain `[ ] : * ? / \`, and `book_append_sheet` throws on them.
19
+ */
20
+ export declare function toSheetName(name: string): string;
21
+ export type CreateXlsxContentOptions = {
22
+ /** Excel number format for date cells. */
23
+ dateFormat?: string;
24
+ sheetName?: string;
25
+ };
26
+ /**
27
+ * Builds a single-sheet workbook from the export table.
28
+ *
29
+ * Values keep their JavaScript type, so booleans become boolean cells, `Date`
30
+ * values become date cells carrying `dateFormat`, and numbers stay numeric and
31
+ * summable in a spreadsheet. Rows are written positionally from the table, so
32
+ * two columns sharing a header stay two distinct columns.
33
+ */
34
+ export declare function createXlsxContent(table: RDGToolbarExportTable, options?: CreateXlsxContentOptions): Promise<ArrayBuffer>;
35
+ //# sourceMappingURL=xlsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../src/toolbar/xlsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAoCtD,eAAO,MAAM,cAAc,sEAC0C,CAAC;AAEtE,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,OAAO;CAS3B;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAW/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAUD,MAAM,MAAM,wBAAwB,GAAG;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,WAAW,CAAC,CAyBtB"}
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.tdg-toolbar-root, .tdg-toolbar-root *, .tdg-toolbar-root:before, .tdg-toolbar-root :before, .tdg-toolbar-root:after, .tdg-toolbar-root :after, .tdg-toolbar-root::backdrop, .tdg-toolbar-root ::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer utilities{.tdg-toolbar-root.visible, .tdg-toolbar-root .visible{visibility:visible}.tdg-toolbar-root.fixed, .tdg-toolbar-root .fixed{position:fixed}.tdg-toolbar-root.container, .tdg-toolbar-root .container{width:100%}@media(min-width:40rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:40rem}}@media(min-width:48rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:48rem}}@media(min-width:64rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:64rem}}@media(min-width:80rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:80rem}}@media(min-width:96rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:96rem}}.tdg-toolbar-root.grid, .tdg-toolbar-root .grid{display:grid}.tdg-toolbar-root.hidden, .tdg-toolbar-root .hidden{display:none}.tdg-toolbar-root.table, .tdg-toolbar-root .table{display:table}.tdg-toolbar-root.filter, .tdg-toolbar-root .filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.tdg-toolbar-root, .tdg-toolbar-root:before, .tdg-toolbar-root:after, .tdg-toolbar-root *, .tdg-toolbar-root :before, .tdg-toolbar-root :after{box-sizing:border-box}.tdg-toolbar-root{--tdg-toolbar-host-background:var(--background);--tdg-toolbar-host-foreground:var(--foreground);--tdg-toolbar-host-card:var(--card);--tdg-toolbar-host-accent:var(--accent);--tdg-toolbar-host-accent-foreground:var(--accent-foreground);--tdg-toolbar-host-muted-foreground:var(--muted-foreground);--tdg-toolbar-host-border:var(--border);--tdg-toolbar-host-ring:var(--ring);--tdg-toolbar-host-input:var(--input);--tdg-toolbar-host-popover:var(--popover);--tdg-toolbar-host-popover-foreground:var(--popover-foreground);--tdg-toolbar-background-fallback:oklch(100% 0 0);--tdg-toolbar-foreground-fallback:oklch(14.5% 0 0);--tdg-toolbar-card-fallback:oklch(100% 0 0);--tdg-toolbar-accent-fallback:oklch(97% 0 0);--tdg-toolbar-accent-foreground-fallback:oklch(20.5% 0 0);--tdg-toolbar-muted-foreground-fallback:oklch(55.6% 0 0);--tdg-toolbar-border-fallback:oklch(92.2% 0 0);--tdg-toolbar-ring-fallback:oklch(70.8% 0 0);--tdg-toolbar-input-fallback:oklch(92.2% 0 0);--tdg-toolbar-popover-fallback:oklch(100% 0 0);--tdg-toolbar-popover-foreground-fallback:oklch(14.5% 0 0);--tdg-toolbar-background:var(--tdg-color-background,var(--tdg-toolbar-host-background,var(--tdg-toolbar-background-fallback)));--tdg-toolbar-foreground:var(--tdg-color-foreground,var(--tdg-toolbar-host-foreground,var(--tdg-toolbar-foreground-fallback)));--tdg-toolbar-card:var(--tdg-color-card,var(--tdg-toolbar-host-card,var(--tdg-toolbar-card-fallback)));--tdg-toolbar-accent:var(--tdg-color-accent,var(--tdg-toolbar-host-accent,var(--tdg-toolbar-accent-fallback)));--tdg-toolbar-accent-foreground:var(--tdg-color-accent-foreground,var(--tdg-toolbar-host-accent-foreground,var(--tdg-toolbar-accent-foreground-fallback)));--tdg-toolbar-muted-foreground:var(--tdg-color-muted-foreground,var(--tdg-toolbar-host-muted-foreground,var(--tdg-toolbar-muted-foreground-fallback)));--tdg-toolbar-border:var(--tdg-color-border,var(--tdg-toolbar-host-border,var(--tdg-toolbar-border-fallback)));--tdg-toolbar-ring:var(--tdg-color-ring,var(--tdg-toolbar-host-ring,var(--tdg-toolbar-ring-fallback)));--tdg-toolbar-input:var(--tdg-color-input,var(--tdg-toolbar-host-input,var(--tdg-toolbar-input-fallback)));--tdg-toolbar-popover:var(--tdg-color-popover,var(--tdg-toolbar-host-popover,var(--tdg-toolbar-popover-fallback)));--tdg-toolbar-popover-foreground:var(--tdg-color-popover-foreground,var(--tdg-toolbar-host-popover-foreground,var(--tdg-toolbar-popover-foreground-fallback)));--tdg-toolbar-surface-backdrop:transparent;--tdg-toolbar-surface:var(--tdg-toolbar-card)}@supports (color:color-mix(in lab,red,red)){.tdg-toolbar-root{--tdg-toolbar-surface:color-mix(in oklab,var(--tdg-toolbar-card)60%,var(--tdg-toolbar-surface-backdrop))}}.tdg-toolbar-root{--tdg-toolbar-color:var(--tdg-toolbar-foreground);--tdg-toolbar-padding:.75rem;--tdg-toolbar-gap:.75rem;--tdg-toolbar-radius:var(--tdg-radius-xl,var(--radius-xl,calc(var(--radius,.5rem) + 4px)));--tdg-toolbar-border-width:1px;--tdg-toolbar-border-color:var(--tdg-toolbar-border);--tdg-toolbar-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tdg-toolbar-title-font-size:.875rem;--tdg-toolbar-title-font-weight:500;--tdg-toolbar-title-color:inherit;--tdg-toolbar-description-font-size:.75rem;--tdg-toolbar-description-color:var(--tdg-toolbar-muted-foreground);--tdg-toolbar-body-gap:1.5rem;--tdg-toolbar-toggle-gap:.5rem;--tdg-toolbar-actions-gap:.5rem;--tdg-toolbar-control-height:2rem;--tdg-toolbar-control-padding:0 .75rem;--tdg-toolbar-control-radius:var(--tdg-radius-md,var(--radius-md,calc(var(--radius,.5rem) - 2px)));--tdg-toolbar-control-font-weight:500;--tdg-toolbar-control-gap:.5rem;--tdg-toolbar-control-cursor:default;--tdg-toolbar-control-border-width:1px;--tdg-toolbar-control-transition:.15s;--tdg-toolbar-control-disabled-opacity:.5;--tdg-toolbar-icon-size:1rem;--tdg-toolbar-action-fill:transparent;--tdg-toolbar-action-color:inherit;--tdg-toolbar-action-border-color:var(--tdg-toolbar-input);--tdg-toolbar-action-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-action-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-off-fill:transparent;--tdg-toolbar-toggle-off-color:var(--tdg-toolbar-muted-foreground);--tdg-toolbar-toggle-off-border-color:transparent;--tdg-toolbar-toggle-off-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-toggle-off-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-on-fill:var(--tdg-toolbar-card);--tdg-toolbar-toggle-on-color:var(--tdg-toolbar-foreground);--tdg-toolbar-toggle-on-border-color:var(--tdg-toolbar-input);--tdg-toolbar-toggle-on-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-toggle-on-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-font-size:.875rem;--tdg-toolbar-action-font-size:.75rem;--tdg-toolbar-focus-ring-width:1px;--tdg-toolbar-focus-ring-color:var(--tdg-toolbar-ring);--tdg-toolbar-menu-fill:var(--tdg-toolbar-popover);--tdg-toolbar-menu-color:var(--tdg-toolbar-popover-foreground);--tdg-toolbar-menu-border-width:1px;--tdg-toolbar-menu-border-color:var(--tdg-toolbar-border);--tdg-toolbar-menu-radius:var(--tdg-toolbar-control-radius);--tdg-toolbar-menu-padding:.25rem;--tdg-toolbar-menu-min-width:8rem;--tdg-toolbar-menu-offset:.25rem;--tdg-toolbar-menu-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tdg-toolbar-menu-item-font-size:.875rem;--tdg-toolbar-menu-item-padding:.375rem .5rem;--tdg-toolbar-menu-item-radius:var(--tdg-radius-sm,var(--radius-sm,calc(var(--radius,.5rem) - 4px)));--tdg-toolbar-menu-item-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-menu-item-hover-color:var(--tdg-toolbar-accent-foreground);color-scheme:light}.dark .tdg-toolbar-root[data-theme=default][data-theme-base=default], .tdg-toolbar-root[data-theme-base=dark]{--tdg-toolbar-background-fallback:oklch(14.5% 0 0);--tdg-toolbar-foreground-fallback:oklch(98.5% 0 0);--tdg-toolbar-card-fallback:oklch(20.5% 0 0);--tdg-toolbar-accent-fallback:oklch(26.9% 0 0);--tdg-toolbar-accent-foreground-fallback:oklch(98.5% 0 0);--tdg-toolbar-muted-foreground-fallback:oklch(70.8% 0 0);--tdg-toolbar-border-fallback:oklch(100% 0 0/.1);--tdg-toolbar-ring-fallback:oklch(55.6% 0 0);--tdg-toolbar-input-fallback:oklch(100% 0 0/.15);--tdg-toolbar-popover-fallback:oklch(20.5% 0 0);--tdg-toolbar-popover-foreground-fallback:oklch(98.5% 0 0);color-scheme:dark}.tdg-toolbar-root[data-theme-base=dark], .tdg-toolbar-root[data-theme-base=light]{--tdg-toolbar-host-background:initial;--tdg-toolbar-host-foreground:initial;--tdg-toolbar-host-card:initial;--tdg-toolbar-host-accent:initial;--tdg-toolbar-host-accent-foreground:initial;--tdg-toolbar-host-muted-foreground:initial;--tdg-toolbar-host-border:initial;--tdg-toolbar-host-ring:initial;--tdg-toolbar-host-input:initial;--tdg-toolbar-host-popover:initial;--tdg-toolbar-host-popover-foreground:initial;--tdg-toolbar-surface-backdrop:var(--tdg-toolbar-background)}:where(.tdg-toolbar-root){gap:var(--tdg-toolbar-gap);padding:var(--tdg-toolbar-padding);border:var(--tdg-toolbar-border-width)solid var(--tdg-toolbar-border-color);border-radius:var(--tdg-toolbar-radius);background:var(--tdg-toolbar-surface);box-shadow:var(--tdg-toolbar-shadow);color:var(--tdg-toolbar-color);flex-direction:column;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-heading]{flex-direction:column;gap:.25rem;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-title]{font-size:var(--tdg-toolbar-title-font-size);font-weight:var(--tdg-toolbar-title-font-weight);color:var(--tdg-toolbar-title-color);line-height:1.25rem}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-description]{font-size:var(--tdg-toolbar-description-font-size);color:var(--tdg-toolbar-description-color);line-height:1rem}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-body]{gap:var(--tdg-toolbar-body-gap);flex-direction:column-reverse;display:flex}@media(min-width:80rem){:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-body]{flex-direction:row;justify-content:space-between;align-items:flex-start}}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle-list]{gap:var(--tdg-toolbar-toggle-gap);flex-wrap:wrap;max-width:100%;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-actions]{align-items:center;gap:var(--tdg-toolbar-actions-gap);flex-wrap:wrap;flex-shrink:0;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-filter-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-clear-filters]{height:var(--tdg-toolbar-control-height);justify-content:center;align-items:center;gap:var(--tdg-toolbar-control-gap);padding:var(--tdg-toolbar-control-padding);border:var(--tdg-toolbar-control-border-width)solid var(--tdg-toolbar-action-border-color);border-radius:var(--tdg-toolbar-control-radius);background:var(--tdg-toolbar-action-fill);color:var(--tdg-toolbar-action-color);font:inherit;font-weight:var(--tdg-toolbar-control-font-weight);white-space:nowrap;vertical-align:middle;appearance:none;cursor:var(--tdg-toolbar-control-cursor);-webkit-user-select:none;user-select:none;transition:color var(--tdg-toolbar-control-transition),background-color var(--tdg-toolbar-control-transition),border-color var(--tdg-toolbar-control-transition);outline:none;flex-shrink:0;line-height:1;display:inline-flex}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle]{font-size:var(--tdg-toolbar-toggle-font-size)}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-filter-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-clear-filters]{font-size:var(--tdg-toolbar-action-font-size)}:where(.tdg-toolbar-root) [data-state=off]:where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-filter-toggle]){border-color:var(--tdg-toolbar-toggle-off-border-color);background:var(--tdg-toolbar-toggle-off-fill);color:var(--tdg-toolbar-toggle-off-color)}:where(.tdg-toolbar-root) [data-state=on]:where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle]){border-color:var(--tdg-toolbar-toggle-on-border-color);background:var(--tdg-toolbar-toggle-on-fill);color:var(--tdg-toolbar-toggle-on-color)}:where(.tdg-toolbar-root) :where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle],[data-slot=rdg-toolbar-clear-filters]):where(:enabled):hover{background:var(--tdg-toolbar-action-hover-fill);color:var(--tdg-toolbar-action-hover-color)}:where(.tdg-toolbar-root) :where([data-state=off]):where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-filter-toggle]):where(:enabled):hover{background:var(--tdg-toolbar-toggle-off-hover-fill);color:var(--tdg-toolbar-toggle-off-hover-color)}:where(.tdg-toolbar-root) :where([data-state=on]):where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle]):where(:enabled):hover{background:var(--tdg-toolbar-toggle-on-hover-fill);color:var(--tdg-toolbar-toggle-on-hover-color)}:where(.tdg-toolbar-root) :where([data-slot^=rdg-toolbar],[data-slot=rdg-column-toggle]):focus-visible{box-shadow:0 0 0 var(--tdg-toolbar-focus-ring-width) var(--tdg-toolbar-focus-ring-color)}:where(.tdg-toolbar-root) :where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle],[data-slot=rdg-toolbar-clear-filters]):disabled{pointer-events:none;opacity:var(--tdg-toolbar-control-disabled-opacity)}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-wrapper]{display:inline-flex;position:relative}:where(.tdg-toolbar-root) svg{width:var(--tdg-toolbar-icon-size);height:var(--tdg-toolbar-icon-size);pointer-events:none;flex-shrink:0}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-menu]{z-index:50;min-width:var(--tdg-toolbar-menu-min-width);margin-top:var(--tdg-toolbar-menu-offset);padding:var(--tdg-toolbar-menu-padding);border:var(--tdg-toolbar-menu-border-width)solid var(--tdg-toolbar-menu-border-color);border-radius:var(--tdg-toolbar-menu-radius);background:var(--tdg-toolbar-menu-fill);box-shadow:var(--tdg-toolbar-menu-shadow);color:var(--tdg-toolbar-menu-color);inset-inline-end:0;flex-direction:column;display:flex;position:absolute;top:100%;overflow:hidden}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-format]{align-items:center;gap:var(--tdg-toolbar-control-gap);padding:var(--tdg-toolbar-menu-item-padding);border-radius:var(--tdg-toolbar-menu-item-radius);color:inherit;font:inherit;font-size:var(--tdg-toolbar-menu-item-font-size);white-space:nowrap;text-align:start;cursor:var(--tdg-toolbar-control-cursor);-webkit-user-select:none;user-select:none;background:0 0;border:0;outline:none;display:flex}:where(.tdg-toolbar-root) :where([data-slot=rdg-toolbar-export-format]):is(:hover,:focus-visible){background:var(--tdg-toolbar-menu-item-hover-fill);color:var(--tdg-toolbar-menu-item-hover-color)}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}