@redsift/ds-mcp-server 12.5.13-muiv6 → 12.5.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.
- package/data/demos/patterns/_shared/StateDebugPanel.tsx +2 -2
- package/data/demos/patterns/_shared/columns.tsx +12 -3
- package/data/demos/patterns/_shared/defaults.ts +1 -1
- package/data/demos/patterns/_shared/filter-helpers.ts +1 -1
- package/data/demos/patterns/_shared/helpers.tsx +1 -1
- package/data/demos/patterns/_shared/server-logic.ts +1 -1
- package/data/demos/patterns/_shared/story-helpers.ts +106 -22
- package/data/demos/patterns/crossfiltered-datagrid-client-side/CrossfilteredDatagridClientSide.interaction.stories.tsx +1 -18
- package/data/demos/patterns/crossfiltered-datagrid-server-side/CrossfilteredDatagridServerSide.interaction.stories.tsx +1 -1
- package/data/demos/patterns/crossfiltered-datagrid-server-side/example.tsx +10 -10
- package/data/demos/patterns/drilldowned-datagrid-client-side/example.tsx +1 -1
- package/data/demos/patterns/drilldowned-datagrid-server-side/example.tsx +1 -1
- package/data/demos/patterns/single-datagrid-client-side/SingleDatagridClientSide.interaction.stories.tsx +1 -1
- package/data/demos/patterns/single-datagrid-client-side/example.tsx +4 -4
- package/data/demos/patterns/single-datagrid-server-side/SingleDatagridServerSide.interaction.stories.tsx +1 -1
- package/data/demos/patterns/single-datagrid-server-side/example.tsx +4 -4
- package/data/demos/patterns/stateful-single-datagrid-client-side/StatefulSingleDatagridClientSide.interaction.stories.tsx +129 -1
- package/data/demos/patterns/stateful-single-datagrid-client-side/example.tsx +6 -5
- package/data/demos/patterns/stateful-single-datagrid-server-side/StatefulSingleDatagridServerSide.interaction.stories.tsx +134 -1
- package/data/demos/patterns/stateful-single-datagrid-server-side/example.tsx +6 -5
- package/data/demos/patterns/tabbed-datagrid-server-side/example.tsx +1 -1
- package/data/docs/components/dashboard/Dashboard.json +2 -2
- package/data/docs/components/products/DmarcSummaryBoxes.json +1 -1
- package/data/docs/components/table/DataGrid.json +6 -6
- package/data/docs/components/table/GridToolbarFilterSemanticField.json +1 -1
- package/data/docs/components/table/StatefulDataGrid.json +6 -6
- package/data/docs/components/table/Toolbar.json +8 -2
- package/data/docs/components/table-pro/ControlledPagination.json +9 -0
- package/data/docs/components/table-pro/DataGrid.json +114 -0
- package/data/docs/components/table-pro/GridToolbarFilterSemanticField.json +69 -0
- package/data/docs/components/table-pro/ServerSideControlledPagination.json +9 -0
- package/data/docs/components/table-pro/StatefulDataGrid.json +135 -0
- package/data/docs/components/table-pro/TextCell.json +118 -0
- package/data/docs/components/table-pro/Toolbar.json +151 -0
- package/data/docs/components/table-pro/ToolbarWrapper.json +9 -0
- package/data/docs/components-index.json +69 -0
- package/data/docs/components.json +626 -21
- package/data/docs/llms-full.txt +209 -45
- package/data/docs/llms.txt +17 -5
- package/data/docs/patterns-catalog.md +24 -25
- package/data/docs/patterns.json +4 -4
- package/data/metadata.json +2 -2
- package/data/patterns/crossfiltered-datagrid-server-side.mdx +1 -1
- package/data/patterns/drilldowned-datagrid-client-side.mdx +1 -1
- package/data/patterns/drilldowned-datagrid-server-side.mdx +1 -1
- package/data/patterns/single-datagrid-client-side.mdx +7 -7
- package/data/patterns/single-datagrid-server-side.mdx +4 -4
- package/data/patterns/stateful-single-datagrid-client-side.mdx +36 -21
- package/data/patterns/stateful-single-datagrid-server-side.mdx +46 -18
- package/data/patterns/tabbed-datagrid-server-side.mdx +1 -1
- package/package.json +2 -2
package/data/docs/llms-full.txt
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
This file contains comprehensive documentation for all components in the Red Sift Design System.
|
|
4
4
|
It is optimized for LLM consumption and includes props, types, defaults, and usage examples.
|
|
5
5
|
|
|
6
|
-
Generated: 2026-09-08T08:
|
|
7
|
-
Total Components:
|
|
6
|
+
Generated: 2026-09-08T08:02:04.666Z
|
|
7
|
+
Total Components: 164
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -4951,8 +4951,8 @@ For `boolean` columns, use `type: 'boolean'` directly (no createColumn wrapper n
|
|
|
4951
4951
|
| selectionBannerPlacement | "top" \| "bottom" \| "belowToolbar" | No | 'top' | Where to render the row-selection banner (the "All N rows on this page are selected…" line). Independent of `paginationPlacement` — the latter only controls the pager controls. - `'top'` — above the toolbar (default, current behaviour). - `'bottom'` — in the footer, alongside the bottom pager. - `'belowToolbar'` — between the toolbar and the grid body. Rendered via the toolbar slot, so the toolbar slot is forced to render even when `hideToolbar` is set (the toolbar itself stays hidden, only the banner shows). Combine with `paginationPlacement="belowToolbar"` for a banner-left / pager-right row. Only applies when `pagination` is enabled. |
|
|
4952
4952
|
| paginationProps | Omit<TablePaginationProps, "paginationMode" \| "component" \| "count" \| "onPageChange" \| "onRowsPerPageChange" \| "page" \| "rowsPerPage" \| "rowsPerPageOptions"> | No | - | Props to forward to the pagination component. |
|
|
4953
4953
|
| theme | "light" \| "dark" | No | - | Theme. |
|
|
4954
|
-
|
|
|
4955
|
-
|
|
|
4954
|
+
| getTreeDataPath | (row: any) => readonly string[] | No | - | Determines the path of a row in the tree data. For instance, a row with the path ["A", "B"] is the child of the row with the path ["A"]. Note that all paths must contain at least one element. @template R @param row The row from which we want the path. @returns The path to the row. |
|
|
4955
|
+
| setTreeDataPath | (path: string[], row: any) => any | No | - | Updates the tree path in a row model. Used when reordering rows across different parents in tree data. @template R @param path The new path for the row. @param row The row model to update. @returns The updated row model with the new path. |
|
|
4956
4956
|
|
|
4957
4957
|
---
|
|
4958
4958
|
|
|
@@ -4968,7 +4968,7 @@ The GridToolbarFilterSemanticField component.
|
|
|
4968
4968
|
| Prop | Type | Required | Default | Description |
|
|
4969
4969
|
|------|------|----------|---------|-------------|
|
|
4970
4970
|
| nlpFilterConfig | FilterConfig | Yes | - | |
|
|
4971
|
-
| onFilterModelChange | (filterModel: GridFilterModel) => void |
|
|
4971
|
+
| onFilterModelChange | (filterModel: GridFilterModel) => void | No | - | |
|
|
4972
4972
|
| dateFormat | string | No | - | |
|
|
4973
4973
|
| defaultModel | string | No | - | |
|
|
4974
4974
|
| defaultFilter | CompletionResponse | No | - | |
|
|
@@ -5010,8 +5010,8 @@ Use when users need persistent table preferences. Requires unique `localStorageK
|
|
|
5010
5010
|
| selectionBannerPlacement | "top" \| "bottom" \| "belowToolbar" | No | 'top' | Where to render the row-selection banner (the "All N rows on this page are selected…" line). Independent of `paginationPlacement` — the latter only controls the pager controls. - `'top'` — above the toolbar (default, current behaviour). - `'bottom'` — in the footer, alongside the bottom pager. - `'belowToolbar'` — between the toolbar and the grid body. Rendered via the toolbar slot, so the toolbar slot is forced to render even when `hideToolbar` is set (the toolbar itself stays hidden, only the banner shows). Combine with `paginationPlacement="belowToolbar"` for a banner-left / pager-right row. Only applies when `pagination` is enabled. |
|
|
5011
5011
|
| paginationProps | Omit<TablePaginationProps, "paginationMode" \| "component" \| "count" \| "onPageChange" \| "onRowsPerPageChange" \| "page" \| "rowsPerPage" \| "rowsPerPageOptions"> | No | - | Props to forward to the pagination component. |
|
|
5012
5012
|
| theme | "light" \| "dark" | No | - | Theme. |
|
|
5013
|
-
|
|
|
5014
|
-
|
|
|
5013
|
+
| getTreeDataPath | (row: any) => readonly string[] | No | - | Determines the path of a row in the tree data. For instance, a row with the path ["A", "B"] is the child of the row with the path ["A"]. Note that all paths must contain at least one element. @template R @param row The row from which we want the path. @returns The path to the row. |
|
|
5014
|
+
| setTreeDataPath | (path: string[], row: any) => any | No | - | Updates the tree path in a row model. Used when reordering rows across different parents in tree data. @template R @param path The new path for the row. @param row The row model to update. @returns The updated row model with the new path. |
|
|
5015
5015
|
|
|
5016
5016
|
---
|
|
5017
5017
|
|
|
@@ -5046,9 +5046,9 @@ The Cell component.
|
|
|
5046
5046
|
|
|
5047
5047
|
| Prop | Type | Required | Default | Description |
|
|
5048
5048
|
|------|------|----------|---------|-------------|
|
|
5049
|
-
| columnsButtonProps |
|
|
5049
|
+
| columnsButtonProps | GridToolbarColumnsButtonProps \| GridToolbarColumnsButtonProps & RefAttributes<HTMLButtonElement> | No | - | Props to forward to the column button. |
|
|
5050
5050
|
| columnsButtonRef | RefObject<HTMLButtonElement> | No | - | Column button ref. |
|
|
5051
|
-
| densityButtonProps |
|
|
5051
|
+
| densityButtonProps | GridToolbarDensitySelectorProps \| GridToolbarDensitySelectorProps & RefAttributes<HTMLButtonElement> | No | - | Props to forward to the density button. |
|
|
5052
5052
|
| densityButtonRef | RefObject<HTMLButtonElement> | No | - | Density button ref. |
|
|
5053
5053
|
| exportButtonProps | GridToolbarExportProps | No | - | Props to forward to the export button. |
|
|
5054
5054
|
| exportButtonRef | RefObject<HTMLButtonElement> | No | - | Export button ref. |
|
|
@@ -5078,6 +5078,168 @@ above and below it is symmetric.
|
|
|
5078
5078
|
|
|
5079
5079
|
---
|
|
5080
5080
|
|
|
5081
|
+
## Package: @redsift/table-pro
|
|
5082
|
+
|
|
5083
|
+
### ControlledPagination
|
|
5084
|
+
|
|
5085
|
+
**Package:** @redsift/table-pro
|
|
5086
|
+
**File:** packages/table-pro/src/components/Pagination/ControlledPagination.tsx
|
|
5087
|
+
|
|
5088
|
+
---
|
|
5089
|
+
|
|
5090
|
+
### DataGrid
|
|
5091
|
+
|
|
5092
|
+
DataGrid displays tabular data with sorting, filtering, pagination, and row selection.
|
|
5093
|
+
Built on MUI X DataGrid Pro with Red Sift styling and theming.
|
|
5094
|
+
|
|
5095
|
+
Requires MUI X Pro license key (set via `MUI_LICENSE_KEY` env variable).
|
|
5096
|
+
|
|
5097
|
+
Use `createColumn()` to get pre-configured column definitions with typed filter operators.
|
|
5098
|
+
Supported types: `string`, `number`, `date`, `dateTime`, `singleSelect`, `multiSelect`, `tags`.
|
|
5099
|
+
For `boolean` columns, use `type: 'boolean'` directly (no createColumn wrapper needed).
|
|
5100
|
+
|
|
5101
|
+
**Package:** @redsift/table-pro
|
|
5102
|
+
**File:** packages/table-pro/src/components/DataGrid/DataGrid.tsx
|
|
5103
|
+
|
|
5104
|
+
#### Props
|
|
5105
|
+
|
|
5106
|
+
| Prop | Type | Required | Default | Description |
|
|
5107
|
+
|------|------|----------|---------|-------------|
|
|
5108
|
+
| license | string | No | - | License key for MUI Datagrid Pro. |
|
|
5109
|
+
| height | string | No | '500px' | Height. A default one is set to prevent rendering all rows. |
|
|
5110
|
+
| toolbar | ReactNode | No | - | Toolbar. A default one is provided but every button from this default Toolbar can be customized and the entire Toolbar can be replaced. |
|
|
5111
|
+
| hideToolbar | false \| true | No | - | Whether the Toolbar is displayed or not. |
|
|
5112
|
+
| paginationPlacement | "top" \| "bottom" \| "both" \| "none" \| "belowToolbar" | No | 'both' | Indicates where to render the pagination controls (the "Rows per page" + page navigation bar). Independent of `selectionBannerPlacement`. - `'top'` / `'bottom'` / `'both'` — above / below / both sides of the grid body. - `'none'` — no pager controls. - `'belowToolbar'` — in a row directly below the toolbar (right-aligned). Pair with `selectionBannerPlacement="belowToolbar"` to get the banner on the left and the pager on the right in the same row. Only applies when `pagination` is enabled. |
|
|
5113
|
+
| selectionBannerPlacement | "top" \| "bottom" \| "belowToolbar" | No | 'top' | Where to render the row-selection banner (the "All N rows on this page are selected…" line). Independent of `paginationPlacement` — the latter only controls the pager controls. - `'top'` — above the toolbar (default, current behaviour). - `'bottom'` — in the footer, alongside the bottom pager. - `'belowToolbar'` — between the toolbar and the grid body. Rendered via the toolbar slot, so the toolbar slot is forced to render even when `hideToolbar` is set (the toolbar itself stays hidden, only the banner shows). Combine with `paginationPlacement="belowToolbar"` for a banner-left / pager-right row. Only applies when `pagination` is enabled. |
|
|
5114
|
+
| paginationProps | Omit<TablePaginationProps, "paginationMode" \| "component" \| "count" \| "onPageChange" \| "onRowsPerPageChange" \| "page" \| "rowsPerPage" \| "rowsPerPageOptions"> | No | - | Props to forward to the pagination component. |
|
|
5115
|
+
| theme | "light" \| "dark" | No | - | Theme. |
|
|
5116
|
+
| getTreeDataPath | (row: any) => readonly string[] | No | - | Determines the path of a row in the tree data. For instance, a row with the path ["A", "B"] is the child of the row with the path ["A"]. Note that all paths must contain at least one element. @template R @param row The row from which we want the path. @returns The path to the row. |
|
|
5117
|
+
| setTreeDataPath | (path: string[], row: any) => any | No | - | Updates the tree path in a row model. Used when reordering rows across different parents in tree data. @template R @param path The new path for the row. @param row The row model to update. @returns The updated row model with the new path. |
|
|
5118
|
+
|
|
5119
|
+
---
|
|
5120
|
+
|
|
5121
|
+
### GridToolbarFilterSemanticField
|
|
5122
|
+
|
|
5123
|
+
The GridToolbarFilterSemanticField component.
|
|
5124
|
+
|
|
5125
|
+
**Package:** @redsift/table-pro
|
|
5126
|
+
**File:** packages/table-pro/src/components/GridToolbarFilterSemanticField/GridToolbarFilterSemanticField.tsx
|
|
5127
|
+
|
|
5128
|
+
#### Props
|
|
5129
|
+
|
|
5130
|
+
| Prop | Type | Required | Default | Description |
|
|
5131
|
+
|------|------|----------|---------|-------------|
|
|
5132
|
+
| nlpFilterConfig | FilterConfig | Yes | - | |
|
|
5133
|
+
| onFilterModelChange | (filterModel: GridFilterModel) => void | No | - | |
|
|
5134
|
+
| dateFormat | string | No | - | |
|
|
5135
|
+
| defaultModel | string | No | - | |
|
|
5136
|
+
| defaultFilter | CompletionResponse | No | - | |
|
|
5137
|
+
| disablePower | false \| true | No | - | |
|
|
5138
|
+
| localeText | LocaleText | No | - | |
|
|
5139
|
+
|
|
5140
|
+
---
|
|
5141
|
+
|
|
5142
|
+
### ServerSideControlledPagination
|
|
5143
|
+
|
|
5144
|
+
**Package:** @redsift/table-pro
|
|
5145
|
+
**File:** packages/table-pro/src/components/Pagination/ServerSideControlledPagination.tsx
|
|
5146
|
+
|
|
5147
|
+
---
|
|
5148
|
+
|
|
5149
|
+
### StatefulDataGrid
|
|
5150
|
+
|
|
5151
|
+
StatefulDataGrid extends DataGrid with automatic state persistence to localStorage.
|
|
5152
|
+
Preserves filters, sorting, pagination, column visibility, and column widths
|
|
5153
|
+
across page refreshes.
|
|
5154
|
+
|
|
5155
|
+
Use when users need persistent table preferences. Requires unique `localStorageKey`.
|
|
5156
|
+
|
|
5157
|
+
**Package:** @redsift/table-pro
|
|
5158
|
+
**File:** packages/table-pro/src/components/StatefulDataGrid/StatefulDataGrid.tsx
|
|
5159
|
+
|
|
5160
|
+
#### Props
|
|
5161
|
+
|
|
5162
|
+
| Prop | Type | Required | Default | Description |
|
|
5163
|
+
|------|------|----------|---------|-------------|
|
|
5164
|
+
| useRouter | () => { pathname: string; search: string; historyReplace: (newSearch: string, options?: { authoritative?: boolean \| undefined; } \| undefined) => void; } | Yes | - | Hook returning pathname, search params and a method to update query params. |
|
|
5165
|
+
| localStorageVersion | number | No | - | Local Storage version, to upgrade when we want to force a clean out. |
|
|
5166
|
+
| previousLocalStorageVersions | number[] | No | - | Previous Local Storage versions to clean out when a new one is released. |
|
|
5167
|
+
| license | string | No | - | License key for MUI Datagrid Pro. |
|
|
5168
|
+
| height | string | No | '500px' | Height. A default one is set to prevent rendering all rows. |
|
|
5169
|
+
| toolbar | ReactNode | No | - | Toolbar. A default one is provided but every button from this default Toolbar can be customized and the entire Toolbar can be replaced. |
|
|
5170
|
+
| hideToolbar | false \| true | No | - | Whether the Toolbar is displayed or not. |
|
|
5171
|
+
| paginationPlacement | "top" \| "bottom" \| "both" \| "none" \| "belowToolbar" | No | 'both' | Indicates where to render the pagination controls (the "Rows per page" + page navigation bar). Independent of `selectionBannerPlacement`. - `'top'` / `'bottom'` / `'both'` — above / below / both sides of the grid body. - `'none'` — no pager controls. - `'belowToolbar'` — in a row directly below the toolbar (right-aligned). Pair with `selectionBannerPlacement="belowToolbar"` to get the banner on the left and the pager on the right in the same row. Only applies when `pagination` is enabled. |
|
|
5172
|
+
| selectionBannerPlacement | "top" \| "bottom" \| "belowToolbar" | No | 'top' | Where to render the row-selection banner (the "All N rows on this page are selected…" line). Independent of `paginationPlacement` — the latter only controls the pager controls. - `'top'` — above the toolbar (default, current behaviour). - `'bottom'` — in the footer, alongside the bottom pager. - `'belowToolbar'` — between the toolbar and the grid body. Rendered via the toolbar slot, so the toolbar slot is forced to render even when `hideToolbar` is set (the toolbar itself stays hidden, only the banner shows). Combine with `paginationPlacement="belowToolbar"` for a banner-left / pager-right row. Only applies when `pagination` is enabled. |
|
|
5173
|
+
| paginationProps | Omit<TablePaginationProps, "paginationMode" \| "component" \| "count" \| "onPageChange" \| "onRowsPerPageChange" \| "page" \| "rowsPerPage" \| "rowsPerPageOptions"> | No | - | Props to forward to the pagination component. |
|
|
5174
|
+
| theme | "light" \| "dark" | No | - | Theme. |
|
|
5175
|
+
| getTreeDataPath | (row: any) => readonly string[] | No | - | Determines the path of a row in the tree data. For instance, a row with the path ["A", "B"] is the child of the row with the path ["A"]. Note that all paths must contain at least one element. @template R @param row The row from which we want the path. @returns The path to the row. |
|
|
5176
|
+
| setTreeDataPath | (path: string[], row: any) => any | No | - | Updates the tree path in a row model. Used when reordering rows across different parents in tree data. @template R @param path The new path for the row. @param row The row model to update. @returns The updated row model with the new path. |
|
|
5177
|
+
|
|
5178
|
+
---
|
|
5179
|
+
|
|
5180
|
+
### TextCell
|
|
5181
|
+
|
|
5182
|
+
The Cell component.
|
|
5183
|
+
|
|
5184
|
+
**Package:** @redsift/table-pro
|
|
5185
|
+
**File:** packages/table-pro/src/components/TextCell/TextCell.tsx
|
|
5186
|
+
|
|
5187
|
+
#### Props
|
|
5188
|
+
|
|
5189
|
+
| Prop | Type | Required | Default | Description |
|
|
5190
|
+
|------|------|----------|---------|-------------|
|
|
5191
|
+
| badge | ReactNode | No | - | Including Badge Component. |
|
|
5192
|
+
| leftIcon | string \| string[] \| ReactElement<any, string \| JSXElementConstructor<any>> | No | - | Can be a string or an array of strings containing `d` property of the `path` SVG element.<br /> Can also be a ReactElement. |
|
|
5193
|
+
| leftIconColor | "primary" \| "secondary" \| "error" \| "success" \| "warning" \| "info" \| "question" \| "no-data" \| "asm" \| "brand-trust" \| "certificates" \| "ondmarc" \| "pulse" \| "radar" \| "rojo-ds" \| "vendor-secure" \| "website" \| string & {} | No | - | Left Icon Color variant. |
|
|
5194
|
+
| rightIcon | string \| string[] \| ReactElement<any, string \| JSXElementConstructor<any>> | No | - | Can be a string or an array of strings containing `d` property of the `path` SVG element.<br /> Can also be a ReactElement. |
|
|
5195
|
+
| rightIconColor | "primary" \| "secondary" \| "error" \| "success" \| "warning" \| "info" \| "question" \| "no-data" \| "asm" \| "brand-trust" \| "certificates" \| "ondmarc" \| "pulse" \| "radar" \| "rojo-ds" \| "vendor-secure" \| "website" \| string & {} | No | - | Right Icon Color variant. |
|
|
5196
|
+
| shieldVariant | "success" \| "warning" \| "question" \| "successLocked" \| "successUnlocked" \| "fail" \| "failLocked" \| "failUnlocked" \| "warningLocked" \| "warningUnlocked" \| "ignored" \| "noData" \| "email" | No | - | Shield variant. |
|
|
5197
|
+
|
|
5198
|
+
---
|
|
5199
|
+
|
|
5200
|
+
### Toolbar
|
|
5201
|
+
|
|
5202
|
+
------
|
|
5203
|
+
|
|
5204
|
+
**Package:** @redsift/table-pro
|
|
5205
|
+
**File:** packages/table-pro/src/components/Toolbar/Toolbar.tsx
|
|
5206
|
+
|
|
5207
|
+
#### Props
|
|
5208
|
+
|
|
5209
|
+
| Prop | Type | Required | Default | Description |
|
|
5210
|
+
|------|------|----------|---------|-------------|
|
|
5211
|
+
| columnsButtonProps | GridToolbarColumnsButtonProps \| GridToolbarColumnsButtonProps & RefAttributes<HTMLButtonElement> | No | - | Props to forward to the column button. |
|
|
5212
|
+
| columnsButtonRef | RefObject<HTMLButtonElement> | No | - | Column button ref. |
|
|
5213
|
+
| densityButtonProps | GridToolbarDensitySelectorProps \| GridToolbarDensitySelectorProps & RefAttributes<HTMLButtonElement> | No | - | Props to forward to the density button. |
|
|
5214
|
+
| densityButtonRef | RefObject<HTMLButtonElement> | No | - | Density button ref. |
|
|
5215
|
+
| exportButtonProps | GridToolbarExportProps | No | - | Props to forward to the export button. |
|
|
5216
|
+
| exportButtonRef | RefObject<HTMLButtonElement> | No | - | Export button ref. |
|
|
5217
|
+
| filterButtonProps | GridToolbarFilterButtonProps | No | - | Props to forward to the filter button. |
|
|
5218
|
+
| filterButtonRef | RefObject<HTMLButtonElement> | No | - | Filter button ref. |
|
|
5219
|
+
| hasColumnsButton | false \| true | No | - | Whether the columns button is displayed or not. |
|
|
5220
|
+
| hasDensityButton | false \| true | No | - | Whether the density button is displayed or not. |
|
|
5221
|
+
| hasExportButton | false \| true | No | - | Whether the export button is displayed or not. |
|
|
5222
|
+
| hasFilterButton | false \| true | No | - | Whether the filter button is displayed or not. |
|
|
5223
|
+
| onFilterModelChange | (filterModel: GridFilterModel) => void | No | - | Configuration object for NLP filter. undefined if disabled. |
|
|
5224
|
+
| semanticFilterProps | GridToolbarFilterSemanticProps | No | - | |
|
|
5225
|
+
| showQuickFilter | false \| true | No | - | Whether you want to show the quick filter or not. |
|
|
5226
|
+
|
|
5227
|
+
---
|
|
5228
|
+
|
|
5229
|
+
### ToolbarWrapper
|
|
5230
|
+
|
|
5231
|
+
Renders a toolbar followed by a row that can contain the selection banner (left)
|
|
5232
|
+
and/or the pager controls (right), so they sit between the toolbar and the grid body
|
|
5233
|
+
(`selectionBannerPlacement="belowToolbar"` and/or `paginationPlacement="belowToolbar"`).
|
|
5234
|
+
The banner/pager visibility is driven by `displaySelection` / `displayPagination`.
|
|
5235
|
+
The row gets a top margin matching the banner's built-in bottom margin so the spacing
|
|
5236
|
+
above and below it is symmetric.
|
|
5237
|
+
|
|
5238
|
+
**Package:** @redsift/table-pro
|
|
5239
|
+
**File:** packages/table-pro/src/components/ToolbarWrapper/ToolbarWrapper.tsx
|
|
5240
|
+
|
|
5241
|
+
---
|
|
5242
|
+
|
|
5081
5243
|
## Package: @redsift/dashboard
|
|
5082
5244
|
|
|
5083
5245
|
### ChartEmptyState
|
|
@@ -5112,7 +5274,7 @@ When one chart is filtered, all connected charts update automatically.
|
|
|
5112
5274
|
| Prop | Type | Required | Default | Description |
|
|
5113
5275
|
|------|------|----------|---------|-------------|
|
|
5114
5276
|
| data | JSONArray | Yes | - | Dataset that will be share across every components within the dashboard. |
|
|
5115
|
-
| dataGridApiRef | MutableRefObject<GridApiPro> | No | - | Datagrid API Ref. |
|
|
5277
|
+
| dataGridApiRef | MutableRefObject<GridApiPro \| null> | No | - | Datagrid API Ref. MUI v8: can be null initially. |
|
|
5116
5278
|
|
|
5117
5279
|
---
|
|
5118
5280
|
|
|
@@ -6106,7 +6268,7 @@ Each pattern describes a common UI scenario, the components involved, how they a
|
|
|
6106
6268
|
## Datagrid Page
|
|
6107
6269
|
**Description:** Full-page MUI DataGrid with built-in Toolbar (columns, filters, density, export, quick search). Uses GridColDef[] with createColumn() for typed filter operators (string, number, date, singleSelect, multiSelect, tags), renderCell with TextCell and Pill, pagination, and checkboxSelection. All filtering, sorting, and pagination happen client-side — all rows are loaded into the DataGrid at once. Optionally includes bulk selection actions (rowSelectionModel + onRowSelectionModelChange). For server-side data handling, see the Server Datagrid Page pattern. Matches the table pattern used across OnDMARC, Certificates, and Brand Trust.
|
|
6108
6270
|
**Components:** DataGrid, TextCell, StatefulDataGrid, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink
|
|
6109
|
-
**Packages:** @redsift/table, @redsift/design-system, @mui/x-data-grid-
|
|
6271
|
+
**Packages:** @redsift/table, @redsift/design-system, @mui/x-data-grid-premium
|
|
6110
6272
|
**Layout:** DataGrid with autoHeight, pagination, pageSize, built-in Toolbar via componentsProps.toolbar.showQuickFilter. Optional bulk actions bar when selectionModel.length > 0.
|
|
6111
6273
|
**Tags:** table, datagrid, list, pagination, filter, toolbar, bulk-actions, GridColDef, filterModel, checkboxSelection, client-side
|
|
6112
6274
|
|
|
@@ -6189,22 +6351,22 @@ type Row = {
|
|
|
6189
6351
|
|
|
6190
6352
|
```tsx
|
|
6191
6353
|
import React, { useState } from 'react';
|
|
6192
|
-
import { DataGrid } from '@redsift/table';
|
|
6354
|
+
import { DataGrid, EMPTY_ROW_SELECTION_MODEL, getSelectionCount } from '@redsift/table';
|
|
6193
6355
|
import { Flexbox } from '@redsift/design-system';
|
|
6194
|
-
import { GridFilterModel, GridRowSelectionModel } from '@mui/x-data-grid-
|
|
6356
|
+
import { GridFilterModel, GridRowSelectionModel } from '@mui/x-data-grid-premium';
|
|
6195
6357
|
import { rows } from '../_shared/data';
|
|
6196
6358
|
import { columns } from '../_shared/columns';
|
|
6197
6359
|
import { CustomToolbar, BulkActionBar } from '../_shared/helpers';
|
|
6198
6360
|
import { DEFAULT_FILTER_MODEL, DEFAULT_SORT_MODEL } from '../_shared/defaults';
|
|
6199
6361
|
|
|
6200
6362
|
export default ({ initialFilterModel }: { initialFilterModel?: GridFilterModel }) => {
|
|
6201
|
-
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(
|
|
6363
|
+
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(EMPTY_ROW_SELECTION_MODEL);
|
|
6202
6364
|
|
|
6203
6365
|
return (
|
|
6204
6366
|
<div style={{ width: '100%' }}>
|
|
6205
6367
|
<Flexbox flexDirection="column" gap="0px">
|
|
6206
6368
|
<BulkActionBar
|
|
6207
|
-
count={selectionModel
|
|
6369
|
+
count={getSelectionCount(selectionModel)}
|
|
6208
6370
|
onLog={() => console.log('Selected:', selectionModel)}
|
|
6209
6371
|
onDelete={() => console.log('Delete:', selectionModel)}
|
|
6210
6372
|
/>
|
|
@@ -6243,7 +6405,7 @@ export default ({ initialFilterModel }: { initialFilterModel?: GridFilterModel }
|
|
|
6243
6405
|
## Server Datagrid Page
|
|
6244
6406
|
**Description:** Full-page MUI DataGrid where filtering, sorting, and pagination are all handled server-side. Uses paginationMode='server', sortingMode='server', filterMode='server' with controlled rowCount and loading props. The same column types and toolbar as the client-side Datagrid Page pattern, but only the current page of data is fetched per request. Filter changes are debounced to avoid excessive requests. Ideal for datasets too large to load entirely in the browser.
|
|
6245
6407
|
**Components:** DataGrid, TextCell, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink
|
|
6246
|
-
**Packages:** @redsift/table, @redsift/design-system, @mui/x-data-grid-
|
|
6408
|
+
**Packages:** @redsift/table, @redsift/design-system, @mui/x-data-grid-premium
|
|
6247
6409
|
**Layout:** DataGrid with autoHeight, paginationMode='server', sortingMode='server', filterMode='server', rowCount, loading, built-in Toolbar. Optional bulk actions bar when selectionModel.length > 0.
|
|
6248
6410
|
**Tags:** table, datagrid, server-side, pagination, paginationMode, filterMode, sortingMode, loading, rowCount, filter, toolbar, bulk-actions, GridColDef, filterModel, sortModel, debounce
|
|
6249
6411
|
|
|
@@ -6354,9 +6516,9 @@ type FetchResult = {
|
|
|
6354
6516
|
|
|
6355
6517
|
```tsx
|
|
6356
6518
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
6357
|
-
import { DataGrid } from '@redsift/table';
|
|
6519
|
+
import { DataGrid, EMPTY_ROW_SELECTION_MODEL, getSelectionCount } from '@redsift/table';
|
|
6358
6520
|
import { Flexbox } from '@redsift/design-system';
|
|
6359
|
-
import { GridFilterModel, GridRowSelectionModel, GridSortModel } from '@mui/x-data-grid-
|
|
6521
|
+
import { GridFilterModel, GridRowSelectionModel, GridSortModel } from '@mui/x-data-grid-premium';
|
|
6360
6522
|
import { Row } from '../_shared/data';
|
|
6361
6523
|
import { columns } from '../_shared/columns';
|
|
6362
6524
|
import { fetchBakeryData } from '../_shared/api-client';
|
|
@@ -6371,7 +6533,7 @@ export default ({ initialFilterModel }: { initialFilterModel?: GridFilterModel }
|
|
|
6371
6533
|
const [pageSize, setPageSize] = useState(10);
|
|
6372
6534
|
const [sortModel, setSortModel] = useState<GridSortModel>(DEFAULT_SORT_MODEL);
|
|
6373
6535
|
const [filterModel, setFilterModel] = useState<GridFilterModel>(initialFilterModel ?? DEFAULT_FILTER_MODEL);
|
|
6374
|
-
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(
|
|
6536
|
+
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(EMPTY_ROW_SELECTION_MODEL);
|
|
6375
6537
|
|
|
6376
6538
|
const quickFilterText = (filterModel as { quickFilterValues?: string[] }).quickFilterValues?.join(' ') || '';
|
|
6377
6539
|
const debounceRef = useRef<ReturnType<typeof setTimeout>>();
|
|
@@ -6409,7 +6571,7 @@ export default ({ initialFilterModel }: { initialFilterModel?: GridFilterModel }
|
|
|
6409
6571
|
<div style={{ width: '100%' }}>
|
|
6410
6572
|
<Flexbox flexDirection="column" gap="0px">
|
|
6411
6573
|
<BulkActionBar
|
|
6412
|
-
count={selectionModel
|
|
6574
|
+
count={getSelectionCount(selectionModel)}
|
|
6413
6575
|
onLog={() => console.log('Selected:', selectionModel)}
|
|
6414
6576
|
onDelete={() => console.log('Delete:', selectionModel)}
|
|
6415
6577
|
/>
|
|
@@ -6477,9 +6639,10 @@ export default ({ initialFilterModel }: { initialFilterModel?: GridFilterModel }
|
|
|
6477
6639
|
|
|
6478
6640
|
```tsx
|
|
6479
6641
|
import React, { useState } from 'react';
|
|
6480
|
-
import { StatefulDataGrid } from '@redsift/table';
|
|
6642
|
+
import { StatefulDataGrid, EMPTY_ROW_SELECTION_MODEL, getSelectionCount } from '@redsift/table';
|
|
6481
6643
|
import { Flexbox } from '@redsift/design-system';
|
|
6482
|
-
import { GridFilterModel, GridRowSelectionModel,
|
|
6644
|
+
import { GridFilterModel, GridRowSelectionModel, useGridApiRef } from '@mui/x-data-grid-premium';
|
|
6645
|
+
import type { GridApiPremium } from '@mui/x-data-grid-premium';
|
|
6483
6646
|
import { rows } from '../_shared/data';
|
|
6484
6647
|
import { columns } from '../_shared/columns';
|
|
6485
6648
|
import { CustomToolbar, BulkActionBar } from '../_shared/helpers';
|
|
@@ -6490,20 +6653,20 @@ import { StateDebugPanel } from '../_shared/StateDebugPanel';
|
|
|
6490
6653
|
interface Props {
|
|
6491
6654
|
initialFilterModel?: GridFilterModel;
|
|
6492
6655
|
useRouter?: () => { pathname: string; search: string; historyReplace: (newSearch: string) => void };
|
|
6493
|
-
apiRef?: React.MutableRefObject<
|
|
6656
|
+
apiRef?: React.MutableRefObject<GridApiPremium | null>;
|
|
6494
6657
|
}
|
|
6495
6658
|
|
|
6496
6659
|
export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: propsApiRef }: Props) => {
|
|
6497
6660
|
const internalApiRef = useGridApiRef();
|
|
6498
6661
|
const apiRef = propsApiRef ?? internalApiRef;
|
|
6499
|
-
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(
|
|
6662
|
+
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(EMPTY_ROW_SELECTION_MODEL);
|
|
6500
6663
|
|
|
6501
6664
|
return (
|
|
6502
6665
|
<div style={{ width: '100%' }}>
|
|
6503
6666
|
<StateDebugPanel apiRef={apiRef} useRouter={useRouter} localStorageVersion={1} />
|
|
6504
6667
|
<Flexbox flexDirection="column" gap="0px">
|
|
6505
6668
|
<BulkActionBar
|
|
6506
|
-
count={selectionModel
|
|
6669
|
+
count={getSelectionCount(selectionModel)}
|
|
6507
6670
|
onLog={() => console.log('Selected:', selectionModel)}
|
|
6508
6671
|
onDelete={() => console.log('Delete:', selectionModel)}
|
|
6509
6672
|
/>
|
|
@@ -6559,9 +6722,10 @@ export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: prop
|
|
|
6559
6722
|
|
|
6560
6723
|
```tsx
|
|
6561
6724
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
6562
|
-
import { StatefulDataGrid } from '@redsift/table';
|
|
6725
|
+
import { StatefulDataGrid, EMPTY_ROW_SELECTION_MODEL, getSelectionCount } from '@redsift/table';
|
|
6563
6726
|
import { Flexbox } from '@redsift/design-system';
|
|
6564
|
-
import { GridFilterModel, GridRowSelectionModel, GridSortModel,
|
|
6727
|
+
import { GridFilterModel, GridRowSelectionModel, GridSortModel, useGridApiRef } from '@mui/x-data-grid-premium';
|
|
6728
|
+
import type { GridApiPremium } from '@mui/x-data-grid-premium';
|
|
6565
6729
|
import { Row } from '../_shared/data';
|
|
6566
6730
|
import { columns } from '../_shared/columns';
|
|
6567
6731
|
import { fetchBakeryData } from '../_shared/api-client';
|
|
@@ -6573,7 +6737,7 @@ import { StateDebugPanel } from '../_shared/StateDebugPanel';
|
|
|
6573
6737
|
interface Props {
|
|
6574
6738
|
initialFilterModel?: GridFilterModel;
|
|
6575
6739
|
useRouter?: () => { pathname: string; search: string; historyReplace: (newSearch: string) => void };
|
|
6576
|
-
apiRef?: React.MutableRefObject<
|
|
6740
|
+
apiRef?: React.MutableRefObject<GridApiPremium | null>;
|
|
6577
6741
|
}
|
|
6578
6742
|
|
|
6579
6743
|
export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: propsApiRef }: Props) => {
|
|
@@ -6582,7 +6746,7 @@ export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: prop
|
|
|
6582
6746
|
const [rows, setRows] = useState<Row[]>([]);
|
|
6583
6747
|
const [totalRows, setTotalRows] = useState(0);
|
|
6584
6748
|
const [loading, setLoading] = useState(true);
|
|
6585
|
-
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(
|
|
6749
|
+
const [selectionModel, setSelectionModel] = useState<GridRowSelectionModel>(EMPTY_ROW_SELECTION_MODEL);
|
|
6586
6750
|
|
|
6587
6751
|
// Refs track the latest model values so fetchData() always reads current state.
|
|
6588
6752
|
// StatefulDataGrid manages filter/sort/pagination internally — we use callbacks
|
|
@@ -6617,7 +6781,7 @@ export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: prop
|
|
|
6617
6781
|
<StateDebugPanel apiRef={apiRef} useRouter={useRouter} localStorageVersion={1} />
|
|
6618
6782
|
<Flexbox flexDirection="column" gap="0px">
|
|
6619
6783
|
<BulkActionBar
|
|
6620
|
-
count={selectionModel
|
|
6784
|
+
count={getSelectionCount(selectionModel)}
|
|
6621
6785
|
onLog={() => console.log('Selected:', selectionModel)}
|
|
6622
6786
|
onDelete={() => console.log('Delete:', selectionModel)}
|
|
6623
6787
|
/>
|
|
@@ -6679,7 +6843,7 @@ export default ({ initialFilterModel, useRouter = useRouterAdapter, apiRef: prop
|
|
|
6679
6843
|
## Drilldown Datagrid Page
|
|
6680
6844
|
**Description:** Extends the Datagrid Page with summary DataCards placed above the grid. Each DataCard contains DataRows showing aggregate counts for a field (status, category, active). Clicking a DataRow adds an isAnyOf filter to the DataGrid — a one-click shortcut. This is a one-way interaction: DataCard counts always reflect the full (unfiltered) dataset. When the user sets an is or isNot filter via the filter panel, the DataCard selection clears and clicking a DataRow overwrites with isAnyOf.
|
|
6681
6845
|
**Components:** DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink
|
|
6682
|
-
**Packages:** @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-
|
|
6846
|
+
**Packages:** @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-premium
|
|
6683
6847
|
**Layout:** Flexbox column: DataCard row (Flexbox gap=12px flexWrap=wrap with 1-N DataCards), then DataGrid with autoHeight, pagination, controlled filterModel + onFilterModelChange. Optional bulk actions bar when selectionModel.length > 0.
|
|
6684
6848
|
**Tags:** table, datagrid, datacard, drilldown, drilldown-item, filter, isAnyOf, summary-cards, kpi, one-way, filterModel, client-side
|
|
6685
6849
|
|
|
@@ -6773,7 +6937,7 @@ import { DataGrid } from '@redsift/table';
|
|
|
6773
6937
|
import { Flexbox } from '@redsift/design-system';
|
|
6774
6938
|
import { DataCard, DataRow } from '@redsift/dashboard';
|
|
6775
6939
|
import { mdiShapeOutline, mdiToggleSwitch, mdiFoodOff } from '@redsift/icons';
|
|
6776
|
-
import { GridFilterModel } from '@mui/x-data-grid-
|
|
6940
|
+
import { GridFilterModel } from '@mui/x-data-grid-premium';
|
|
6777
6941
|
import { rows } from '../_shared/data';
|
|
6778
6942
|
import { columns, CATEGORY_OPTIONS, ALLERGEN_OPTIONS } from '../_shared/columns';
|
|
6779
6943
|
import { CustomToolbar } from '../_shared/helpers';
|
|
@@ -6977,7 +7141,7 @@ export default () => {
|
|
|
6977
7141
|
## Cross-filtered Datagrid Page
|
|
6978
7142
|
**Description:** Extends the Drilldown Datagrid Page with two-way synchronization between DataCards and the DataGrid filter panel. DataRow clicks add isAnyOf filters. Filter panel changes update DataCard selection state. DataCard counts recalculate against the cross-filtered dataset — each card computes counts by applying all filters except its own field, preventing a card from zeroing out its non-selected values. When the user sets is/isNot via the filter panel, the DataCard clears. Clicking a DataRow overwrites with isAnyOf.
|
|
6979
7143
|
**Components:** DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink
|
|
6980
|
-
**Packages:** @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-
|
|
7144
|
+
**Packages:** @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-premium
|
|
6981
7145
|
**Layout:** Flexbox column: DataCard row (cross-filtered counts), then DataGrid with autoHeight, pagination, controlled filterModel + onFilterModelChange. Rows are pre-filtered client-side via applyFilters. Optional bulk actions bar.
|
|
6982
7146
|
**Tags:** table, datagrid, datacard, drilldown, drilldown-item, cross-filter, crossfilter, two-way, bidirectional, filter, isAnyOf, summary-cards, kpi, dashboard, filterModel, client-side
|
|
6983
7147
|
|
|
@@ -7259,7 +7423,7 @@ import { DataGrid } from '@redsift/table';
|
|
|
7259
7423
|
import { Flexbox } from '@redsift/design-system';
|
|
7260
7424
|
import { DataCard, DataRow } from '@redsift/dashboard';
|
|
7261
7425
|
import { mdiShapeOutline, mdiToggleSwitch, mdiFoodOff } from '@redsift/icons';
|
|
7262
|
-
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-
|
|
7426
|
+
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-premium';
|
|
7263
7427
|
import { Row } from '../_shared/data';
|
|
7264
7428
|
import { columns, CATEGORY_OPTIONS, ALLERGEN_OPTIONS } from '../_shared/columns';
|
|
7265
7429
|
import { fetchBakeryData, FetchResult } from '../_shared/api-client';
|
|
@@ -7534,9 +7698,9 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
7534
7698
|
import { DataGrid } from '@redsift/table';
|
|
7535
7699
|
import { Flexbox } from '@redsift/design-system';
|
|
7536
7700
|
import { DataCard, DataRow } from '@redsift/dashboard';
|
|
7537
|
-
import { BarChart, PieChart } from '@redsift/charts';
|
|
7701
|
+
import { BarChart, PieChart, ArcDatum, BarDatum } from '@redsift/charts';
|
|
7538
7702
|
import { mdiShapeOutline, mdiToggleSwitch, mdiFoodOff } from '@redsift/icons';
|
|
7539
|
-
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-
|
|
7703
|
+
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-premium';
|
|
7540
7704
|
import { Row } from '../_shared/data';
|
|
7541
7705
|
import { columns, CATEGORY_OPTIONS, ALLERGEN_OPTIONS } from '../_shared/columns';
|
|
7542
7706
|
import { fetchBakeryData, FetchResult } from '../_shared/api-client';
|
|
@@ -7743,8 +7907,8 @@ export default () => {
|
|
|
7743
7907
|
}}
|
|
7744
7908
|
data={itemsChartData}
|
|
7745
7909
|
sliceRole="option"
|
|
7746
|
-
onSliceClick={(datum:
|
|
7747
|
-
const key = datum.data.key
|
|
7910
|
+
onSliceClick={(datum: ArcDatum) => {
|
|
7911
|
+
const key = datum.data.key;
|
|
7748
7912
|
setFilterModel((prev) => {
|
|
7749
7913
|
const selected = getSelectedFromFilterModel(prev, 'Items');
|
|
7750
7914
|
const next = selected.includes(key) ? selected.filter((v) => v !== key) : [...selected, key];
|
|
@@ -7752,8 +7916,8 @@ export default () => {
|
|
|
7752
7916
|
});
|
|
7753
7917
|
setPage(0);
|
|
7754
7918
|
}}
|
|
7755
|
-
isSliceSelected={(datum:
|
|
7756
|
-
itemsSelection.length === 0 || itemsSelection.includes(datum.data.key
|
|
7919
|
+
isSliceSelected={(datum: ArcDatum) =>
|
|
7920
|
+
itemsSelection.length === 0 || itemsSelection.includes(datum.data.key)
|
|
7757
7921
|
}
|
|
7758
7922
|
/>
|
|
7759
7923
|
|
|
@@ -7778,8 +7942,8 @@ export default () => {
|
|
|
7778
7942
|
barProps={{ gap: 20 }}
|
|
7779
7943
|
data={tagsChartData}
|
|
7780
7944
|
barRole="option"
|
|
7781
|
-
onBarClick={(datum:
|
|
7782
|
-
const key = datum.data.key
|
|
7945
|
+
onBarClick={(datum: BarDatum) => {
|
|
7946
|
+
const key = String(datum.data.key);
|
|
7783
7947
|
setFilterModel((prev) => {
|
|
7784
7948
|
const selected = getSelectedFromFilterModel(prev, 'Tags');
|
|
7785
7949
|
const next = selected.includes(key) ? selected.filter((v) => v !== key) : [...selected, key];
|
|
@@ -7787,8 +7951,8 @@ export default () => {
|
|
|
7787
7951
|
});
|
|
7788
7952
|
setPage(0);
|
|
7789
7953
|
}}
|
|
7790
|
-
isBarSelected={(datum:
|
|
7791
|
-
tagsSelection.length === 0 || tagsSelection.includes(datum.data.key
|
|
7954
|
+
isBarSelected={(datum: BarDatum) =>
|
|
7955
|
+
tagsSelection.length === 0 || tagsSelection.includes(String(datum.data.key))
|
|
7792
7956
|
}
|
|
7793
7957
|
/>
|
|
7794
7958
|
</Flexbox>
|
|
@@ -7966,7 +8130,7 @@ export default () => {
|
|
|
7966
8130
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
7967
8131
|
import { DataGrid } from '@redsift/table';
|
|
7968
8132
|
import { Flexbox, Pill, Number, Text, Tabs, Tab } from '@redsift/design-system';
|
|
7969
|
-
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-
|
|
8133
|
+
import { GridFilterModel, GridSortModel } from '@mui/x-data-grid-premium';
|
|
7970
8134
|
import { Row } from '../_shared/data';
|
|
7971
8135
|
import { columns, CATEGORY_OPTIONS } from '../_shared/columns';
|
|
7972
8136
|
import { fetchBakeryData } from '../_shared/api-client';
|
package/data/docs/llms.txt
CHANGED
|
@@ -16,7 +16,8 @@ The Red Sift Design System provides reusable UI components including forms, navi
|
|
|
16
16
|
- **@redsift/popovers** (22 components): Popover, tooltip, dialog, and toast components
|
|
17
17
|
- **@redsift/pickers** (21 components): Selection components (combobox, menu button, select)
|
|
18
18
|
- **@redsift/charts** (14 components): D3.js-based chart components (bar, line, pie, scatter)
|
|
19
|
-
- **@redsift/table** (8 components): DataGrid components built on MUI X Data Grid
|
|
19
|
+
- **@redsift/table** (8 components): DataGrid components built on MUI X Data Grid (Premium tier, includes pivoting, row grouping, and aggregation)
|
|
20
|
+
- **@redsift/table-pro** (8 components): DataGrid components built on MUI X Data Grid (Pro tier — same API as @redsift/table without pivoting, row grouping, or aggregation)
|
|
20
21
|
- **@redsift/dashboard** (10 components): Dashboard components with crossfilter integration
|
|
21
22
|
- **@redsift/products** (20 components): Product-specific component implementations
|
|
22
23
|
|
|
@@ -182,6 +183,17 @@ The Red Sift Design System provides reusable UI components including forms, navi
|
|
|
182
183
|
- **Toolbar** (15 props): ------
|
|
183
184
|
- **ToolbarWrapper** (0 props): Renders a toolbar followed by a row that can contain the selection banner (left)
|
|
184
185
|
|
|
186
|
+
### table-pro
|
|
187
|
+
|
|
188
|
+
- **ControlledPagination** (0 props)
|
|
189
|
+
- **DataGrid** (10 props): DataGrid displays tabular data with sorting, filtering, pagination, and row selection.
|
|
190
|
+
- **GridToolbarFilterSemanticField** (7 props): The GridToolbarFilterSemanticField component.
|
|
191
|
+
- **ServerSideControlledPagination** (0 props)
|
|
192
|
+
- **StatefulDataGrid** (13 props): StatefulDataGrid extends DataGrid with automatic state persistence to localStorage.
|
|
193
|
+
- **TextCell** (6 props): The Cell component.
|
|
194
|
+
- **Toolbar** (15 props): ------
|
|
195
|
+
- **ToolbarWrapper** (0 props): Renders a toolbar followed by a row that can contain the selection banner (left)
|
|
196
|
+
|
|
185
197
|
### dashboard
|
|
186
198
|
|
|
187
199
|
- **ChartEmptyState** (4 props)
|
|
@@ -231,12 +243,12 @@ Proven component groupings for common UI scenarios, extracted from production ap
|
|
|
231
243
|
|
|
232
244
|
| Pattern | Components | Packages |
|
|
233
245
|
|---------|-----------|----------|
|
|
234
|
-
| Datagrid Page | DataGrid, TextCell, StatefulDataGrid, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink | @redsift/table, @redsift/design-system, @mui/x-data-grid-
|
|
235
|
-
| Server Datagrid Page | DataGrid, TextCell, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink | @redsift/table, @redsift/design-system, @mui/x-data-grid-
|
|
246
|
+
| Datagrid Page | DataGrid, TextCell, StatefulDataGrid, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink | @redsift/table, @redsift/design-system, @mui/x-data-grid-premium |
|
|
247
|
+
| Server Datagrid Page | DataGrid, TextCell, Pill, Button, Flexbox, Text, Badge, Icon, IconButton, IconButtonLink | @redsift/table, @redsift/design-system, @mui/x-data-grid-premium |
|
|
236
248
|
| Stateful Datagrid Page (Client) | StatefulDataGrid, DataGrid, Pill, Button, Flexbox, Text, Icon | @redsift/table, @redsift/design-system, @mui/x-data-grid-pro |
|
|
237
249
|
| Stateful Datagrid Page (Server) | StatefulDataGrid, DataGrid, Pill, Button, Flexbox, Text, Icon | @redsift/table, @redsift/design-system, @mui/x-data-grid-pro |
|
|
238
|
-
| Drilldown Datagrid Page | DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink | @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-
|
|
239
|
-
| Cross-filtered Datagrid Page | DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink | @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-
|
|
250
|
+
| Drilldown Datagrid Page | DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink | @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-premium |
|
|
251
|
+
| Cross-filtered Datagrid Page | DataGrid, TextCell, DataCard, DataCard.Header, DataCard.Body, DataCard.Listbox, DataRow, Pill, Button, Flexbox, Text, Icon, IconButtonLink | @redsift/table, @redsift/design-system, @redsift/dashboard, @mui/x-data-grid-premium |
|
|
240
252
|
| Server Drilldown Datagrid Page | DataGrid, TextCell, DataCard, DataRow, Flexbox, Pill, Icon | @redsift/table, @redsift/dashboard, @redsift/design-system, @mui/x-data-grid-pro |
|
|
241
253
|
| Server Cross-filtered Datagrid Page | DataGrid, TextCell, DataCard, DataRow, Flexbox, Pill, Icon | @redsift/table, @redsift/dashboard, @redsift/design-system, @mui/x-data-grid-pro |
|
|
242
254
|
| Tabbed Datagrid Page | DataGrid, TextCell, Tabs, Tab, Flexbox, Pill, Number | @redsift/table, @redsift/design-system |
|