@aivenio/aquarium 2.2.0 → 2.3.1

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 (37) hide show
  1. package/dist/atoms.cjs +21 -6
  2. package/dist/atoms.mjs +21 -6
  3. package/dist/src/atoms/DataList/DataList.d.ts +6 -2
  4. package/dist/src/atoms/DataList/DataList.js +15 -4
  5. package/dist/src/molecules/DataList/DataList.d.ts +2 -2
  6. package/dist/src/molecules/DataList/DataList.js +3 -3
  7. package/dist/src/molecules/DataList/DataListComponents.d.ts +3 -3
  8. package/dist/src/molecules/DataList/DataListComponents.js +15 -2
  9. package/dist/src/molecules/DataList/DataListGroup.js +10 -6
  10. package/dist/src/molecules/DataList/DataListSkeleton.js +2 -2
  11. package/dist/src/molecules/DataTable/DataTable.js +3 -3
  12. package/dist/src/molecules/ItemList/ItemList.d.ts +39 -0
  13. package/dist/src/molecules/ItemList/ItemList.js +72 -0
  14. package/dist/src/molecules/ItemList/ItemList.spec.d.ts +24 -0
  15. package/dist/src/molecules/ItemList/ItemList.spec.js +100 -0
  16. package/dist/src/molecules/ItemList/types.d.ts +114 -0
  17. package/dist/src/molecules/ItemList/types.js +2 -0
  18. package/dist/src/molecules/PageHeader/PageHeader.d.ts +3 -3
  19. package/dist/src/molecules/PageHeader/PageHeader.js +5 -1
  20. package/dist/src/molecules/index.d.ts +3 -0
  21. package/dist/src/molecules/index.js +4 -1
  22. package/dist/src/utils/table/sortByColumn.d.ts +3 -0
  23. package/dist/src/utils/table/sortByColumn.js +23 -0
  24. package/dist/src/utils/table/types.d.ts +23 -3
  25. package/dist/src/utils/table/types.js +3 -1
  26. package/dist/src/utils/table/useSortState.d.ts +15 -0
  27. package/dist/src/utils/table/useSortState.js +3 -0
  28. package/dist/src/utils/table/useTableSort.d.ts +3 -3
  29. package/dist/src/utils/table/useTableSort.js +2 -2
  30. package/dist/src/utils/table/utils.d.ts +2 -2
  31. package/dist/src/utils/table/utils.js +3 -3
  32. package/dist/styles.css +18 -0
  33. package/dist/system.cjs +182 -23
  34. package/dist/system.mjs +178 -23
  35. package/dist/tsconfig.module.tsbuildinfo +1 -1
  36. package/dist/types/tailwindGenerated.d.ts +1 -1
  37. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { isOnSortChangedDirection, } from '../../../src/utils/table/types';
3
- export const useTableSort = ({ column, direction, onSortChanged, } = {}) => {
3
+ export const useTableSort = ({ column, direction, onSortChanged } = {}) => {
4
4
  const defaultSort = column ? { column, direction } : undefined;
5
5
  const [sort, setSort] = React.useState(defaultSort);
6
6
  const setSortAndEmitOnSortChangedEvent = (sort) => {
@@ -29,4 +29,4 @@ export const useTableSort = ({ column, direction, onSortChanged, } = {}) => {
29
29
  };
30
30
  return [sort, handleSortClick];
31
31
  };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGFibGVTb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RhYmxlL3VzZVRhYmxlU29ydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFJTCx3QkFBd0IsR0FHekIsTUFBTSx1QkFBdUIsQ0FBQztBQWlCL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQTJFLEVBQ3JHLE1BQU0sRUFDTixTQUFTLEVBQ1QsYUFBYSxNQUNnQixFQUFFLEVBQThDLEVBQUU7SUFDL0UsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQy9ELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBc0IsV0FBVyxDQUFDLENBQUM7SUFDekUsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtRQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksSUFBSSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQVMsRUFBRSxFQUFFO1FBQ3BDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6RCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ25DLGdDQUFnQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixnQ0FBZ0MsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGFibGVTb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RhYmxlL3VzZVRhYmxlU29ydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFJTCx3QkFBd0IsR0FJekIsTUFBTSx1QkFBdUIsQ0FBQztBQWtCL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBRzFCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEtBQWdDLEVBQUUsRUFBOEMsRUFBRTtJQUNwSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0QsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFzQixXQUFXLENBQUMsQ0FBQztJQUN6RSxNQUFNLGdDQUFnQyxHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFO1FBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNkLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxJQUFJLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDckUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBUyxFQUFFLEVBQUU7UUFDcEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsZ0NBQWdDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdDQUFnQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGdDQUFnQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyJ9
@@ -1,2 +1,2 @@
1
- import { type DataListColumn, type DataTableColumn, type DataTableRow, type Sort } from '../../../src/utils/table/types';
2
- export declare const sortRowsBy: <C extends DataListColumn<R> | DataTableColumn<R>, R extends DataTableRow>(rows: R[], sort: Sort<C> | undefined) => R[];
1
+ import { type DataListColumn, type DataTableColumn, type DataTableRow, type ItemListColumn, type Sort } from '../../../src/utils/table/types';
2
+ export declare const sortRowsBy: <C extends DataListColumn<R> | DataTableColumn<R> | ItemListColumn<R>, R extends DataTableRow>(rows: R[], sort: Sort<C> | undefined) => R[];
@@ -1,7 +1,7 @@
1
1
  import orderBy from 'lodash/orderBy';
2
- import { columnIsFieldColumn, toSortDirection, } from '../../../src/utils/table/types';
2
+ import { columnHasSort, columnIsFieldColumn, toSortDirection, } from '../../../src/utils/table/types';
3
3
  export const sortRowsBy = (rows, sort) => {
4
- if (!sort) {
4
+ if (!sort || !columnHasSort(sort.column)) {
5
5
  return rows;
6
6
  }
7
7
  const sortFunction = sort.column.sort;
@@ -13,4 +13,4 @@ export const sortRowsBy = (rows, sort) => {
13
13
  }
14
14
  return rows;
15
15
  };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdGFibGUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUNMLG1CQUFtQixFQUtuQixlQUFlLEdBQ2hCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQVMsRUFDVCxJQUF5QixFQUN6QixFQUFFO0lBQ0YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFdEMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO1NBQU0sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdGFibGUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUNMLGFBQWEsRUFDYixtQkFBbUIsRUFNbkIsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUl4QixJQUFTLEVBQ1QsSUFBeUIsRUFDekIsRUFBRTtJQUNGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFdEMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO1NBQU0sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIn0=
package/dist/styles.css CHANGED
@@ -1053,6 +1053,10 @@ input[type='number'].no-arrows {
1053
1053
  margin-left: 8px;
1054
1054
  margin-right: 8px;
1055
1055
  }
1056
+ .mx-4{
1057
+ margin-left: 12px;
1058
+ margin-right: 12px;
1059
+ }
1056
1060
  .mx-7{
1057
1061
  margin-left: 32px;
1058
1062
  margin-right: 32px;
@@ -1194,6 +1198,9 @@ input[type='number'].no-arrows {
1194
1198
  .h-1{
1195
1199
  height: 2px;
1196
1200
  }
1201
+ .h-1\/2{
1202
+ height: 50%;
1203
+ }
1197
1204
  .h-1px{
1198
1205
  height: 1px;
1199
1206
  }
@@ -1311,6 +1318,9 @@ input[type='number'].no-arrows {
1311
1318
  .w-\[1080px\]{
1312
1319
  width: 1080px;
1313
1320
  }
1321
+ .w-\[18px\]{
1322
+ width: 18px;
1323
+ }
1314
1324
  .w-\[280px\]{
1315
1325
  width: 280px;
1316
1326
  }
@@ -1710,10 +1720,18 @@ input[type='number'].no-arrows {
1710
1720
  border-bottom-width: 2px;
1711
1721
  border-bottom-width: var(--aquarium-border-width-2);
1712
1722
  }
1723
+ .border-l{
1724
+ border-left-width: 1px;
1725
+ border-left-width: var(--aquarium-border-width-default);
1726
+ }
1713
1727
  .border-r-1{
1714
1728
  border-right-width: 1px;
1715
1729
  border-right-width: var(--aquarium-border-width-1);
1716
1730
  }
1731
+ .border-t{
1732
+ border-top-width: 1px;
1733
+ border-top-width: var(--aquarium-border-width-default);
1734
+ }
1717
1735
  .border-t-2{
1718
1736
  border-top-width: 2px;
1719
1737
  border-top-width: var(--aquarium-border-width-2);
package/dist/system.cjs CHANGED
@@ -4265,6 +4265,7 @@ __export(system_exports, {
4265
4265
  InlineIcon: () => InlineIcon,
4266
4266
  Input: () => Input2,
4267
4267
  InputBase: () => InputBase,
4268
+ ItemList: () => ItemList,
4268
4269
  Label: () => Label2,
4269
4270
  LabelControl: () => LabelControl,
4270
4271
  LineClamp: () => LineClamp2,
@@ -4342,6 +4343,7 @@ __export(system_exports, {
4342
4343
  calcTopPosition: () => calcTopPosition,
4343
4344
  calcTopRightPosition: () => calcTopRightPosition,
4344
4345
  cellProps: () => cellProps,
4346
+ columnHasSort: () => columnHasSort,
4345
4347
  columnIsFieldColumn: () => columnIsFieldColumn,
4346
4348
  createComponent: () => createComponent,
4347
4349
  createMountPointElement: () => createMountPointElement,
@@ -4352,10 +4354,12 @@ __export(system_exports, {
4352
4354
  isOnSortChangedDirection: () => isOnSortChangedDirection,
4353
4355
  isOutOfBounds: () => isOutOfBounds,
4354
4356
  placementOrder: () => placementOrder,
4357
+ sortByColumn: () => sortByColumn,
4355
4358
  toSortDirection: () => toSortDirection,
4356
4359
  usePagination: () => usePagination,
4357
4360
  usePopoverContext: () => usePopoverContext,
4358
4361
  useScrollTarget: () => useScrollTarget,
4362
+ useSortState: () => useSortState,
4359
4363
  useStaticInfiniteList: () => useStaticInfiniteList,
4360
4364
  useTableSelect: () => useTableSelect,
4361
4365
  useTableSort: () => useTableSort,
@@ -4422,6 +4426,7 @@ __export(molecules_exports, {
4422
4426
  InlineIcon: () => InlineIcon,
4423
4427
  Input: () => Input2,
4424
4428
  InputBase: () => InputBase,
4429
+ ItemList: () => ItemList,
4425
4430
  LineClamp: () => LineClamp2,
4426
4431
  Link: () => Link2,
4427
4432
  List: () => List,
@@ -4486,13 +4491,16 @@ __export(molecules_exports, {
4486
4491
  asPopoverButton: () => asPopoverButton,
4487
4492
  asTabItem: () => asTabItem,
4488
4493
  cellProps: () => cellProps,
4494
+ columnHasSort: () => columnHasSort,
4489
4495
  columnIsFieldColumn: () => columnIsFieldColumn,
4490
4496
  createTabsComponent: () => createTabsComponent,
4491
4497
  isOnSortChangedDirection: () => isOnSortChangedDirection,
4498
+ sortByColumn: () => sortByColumn,
4492
4499
  toSortDirection: () => toSortDirection,
4493
4500
  usePagination: () => usePagination,
4494
4501
  usePopoverContext: () => usePopoverContext,
4495
4502
  useScrollTarget: () => useScrollTarget,
4503
+ useSortState: () => useSortState,
4496
4504
  useStaticInfiniteList: () => useStaticInfiniteList,
4497
4505
  useTableSelect: () => useTableSelect,
4498
4506
  useTableSort: () => useTableSort,
@@ -11427,6 +11435,19 @@ var DataList = (_a) => {
11427
11435
  var _b = _a, { className } = _b, rest = __objRest(_b, ["className"]);
11428
11436
  return /* @__PURE__ */ import_react70.default.createElement("div", __spreadValues({}, rest));
11429
11437
  };
11438
+ var TreeLine = (_a) => {
11439
+ var _b = _a, { className, style, isLast } = _b, rest = __objRest(_b, ["className", "style", "isLast"]);
11440
+ return /* @__PURE__ */ import_react70.default.createElement("div", __spreadProps(__spreadValues({}, rest), {
11441
+ className: classNames(tw("flex justify-start h-full mx-4"), className)
11442
+ }), /* @__PURE__ */ import_react70.default.createElement("div", {
11443
+ className: tw("border-l border-default border-dashed flex-1", {
11444
+ "h-full": !isLast,
11445
+ "h-1/2": Boolean(isLast)
11446
+ })
11447
+ }), /* @__PURE__ */ import_react70.default.createElement("div", {
11448
+ className: tw("border-t border-default border-dashed self-center w-[18px]")
11449
+ }));
11450
+ };
11430
11451
  var HeadCell = (_a) => {
11431
11452
  var _b = _a, {
11432
11453
  className,
@@ -11476,22 +11497,22 @@ var Row = (_a) => {
11476
11497
  className,
11477
11498
  disabled,
11478
11499
  header,
11479
- subgroup,
11500
+ isGroup,
11480
11501
  active,
11481
- isLast
11502
+ noDivider
11482
11503
  } = _b, rest = __objRest(_b, [
11483
11504
  "className",
11484
11505
  "disabled",
11485
11506
  "header",
11486
- "subgroup",
11507
+ "isGroup",
11487
11508
  "active",
11488
- "isLast"
11509
+ "noDivider"
11489
11510
  ]);
11490
11511
  return /* @__PURE__ */ import_react70.default.createElement("div", __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, rest), {
11491
- role: subgroup ? "rowgroup" : "row"
11512
+ role: isGroup ? "rowgroup" : "row"
11492
11513
  }), { inert: disabled ? "" : void 0 }), {
11493
11514
  className: classNames(tw("contents"), className, {
11494
- "[&>*]:border-b-transparent": isLast,
11515
+ "[&>*]:border-b-transparent": noDivider,
11495
11516
  "children:opacity-70": disabled,
11496
11517
  "[&>*]:bg-primary-active": active,
11497
11518
  "[&>*]:hover:bg-muted": !disabled && !header
@@ -11547,6 +11568,8 @@ DataList.SubGroupSpacing = SubGroupSpacing;
11547
11568
  DataList.SubGroupSpacing.displayName = "DataList.SubGroupSpacing";
11548
11569
  DataList.Row = Row;
11549
11570
  DataList.Row.displayName = "DataList.Row";
11571
+ DataList.TreeLine = TreeLine;
11572
+ DataList.TreeLine.displayName = "DataList.TreeLine";
11550
11573
  var ToolbarContainer = (_a) => {
11551
11574
  var _b = _a, { className, sticky = true } = _b, rest = __objRest(_b, ["className", "sticky"]);
11552
11575
  return /* @__PURE__ */ import_react70.default.createElement("div", __spreadProps(__spreadValues({}, rest), {
@@ -11693,6 +11716,7 @@ var cellProps = (column) => {
11693
11716
  var _a;
11694
11717
  let align;
11695
11718
  switch (column.type) {
11719
+ case "menu":
11696
11720
  case "action":
11697
11721
  case "number": {
11698
11722
  align = "right";
@@ -11712,6 +11736,7 @@ var cellProps = (column) => {
11712
11736
  stickyColumn: column.sticky
11713
11737
  };
11714
11738
  };
11739
+ var columnHasSort = (column) => columnIsFieldColumn(column) && column.sortable || Boolean(column.sort);
11715
11740
  var columnIsFieldColumn = (column) => Boolean(column && column.field);
11716
11741
  function isOnSortChangedDirection(value) {
11717
11742
  return value === void 0 || ["ascending", "descending"].includes(value);
@@ -11719,11 +11744,7 @@ function isOnSortChangedDirection(value) {
11719
11744
 
11720
11745
  // src/utils/table/useTableSort.tsx
11721
11746
  var import_react72 = __toESM(require("react"));
11722
- var useTableSort = ({
11723
- column,
11724
- direction,
11725
- onSortChanged
11726
- } = {}) => {
11747
+ var useTableSort = ({ column, direction, onSortChanged } = {}) => {
11727
11748
  const defaultSort = column ? { column, direction } : void 0;
11728
11749
  const [sort, setSort] = import_react72.default.useState(defaultSort);
11729
11750
  const setSortAndEmitOnSortChangedEvent = (sort2) => {
@@ -11753,7 +11774,7 @@ var useTableSort = ({
11753
11774
  // src/utils/table/utils.ts
11754
11775
  var import_orderBy2 = __toESM(require("lodash/orderBy"));
11755
11776
  var sortRowsBy = (rows, sort) => {
11756
- if (!sort) {
11777
+ if (!sort || !columnHasSort(sort.column)) {
11757
11778
  return rows;
11758
11779
  }
11759
11780
  const sortFunction = sort.column.sort;
@@ -12218,7 +12239,7 @@ var DataListRow = ({
12218
12239
  key: row.id,
12219
12240
  disabled: isRowDisabled,
12220
12241
  active,
12221
- isLast
12242
+ noDivider: isLast
12222
12243
  }, resolvedAdditionalRowProps), {
12223
12244
  style,
12224
12245
  onClick: isRowClickable ? onClick : void 0
@@ -12285,6 +12306,21 @@ var DataListCell = ({
12285
12306
  }
12286
12307
  break;
12287
12308
  }
12309
+ case "menu": {
12310
+ const menuContent = column.menu(row, index);
12311
+ if (!menuContent) {
12312
+ cellContent = null;
12313
+ } else {
12314
+ cellContent = /* @__PURE__ */ import_react75.default.createElement(DropdownMenu2, {
12315
+ placement: defaultContextualMenuPlacement,
12316
+ onAction: (action) => column.onAction(action, row, index)
12317
+ }, /* @__PURE__ */ import_react75.default.createElement(DropdownMenu2.Trigger, null, /* @__PURE__ */ import_react75.default.createElement(Button.Icon, {
12318
+ "aria-label": "action",
12319
+ icon: import_more2.default
12320
+ })), menuContent);
12321
+ }
12322
+ break;
12323
+ }
12288
12324
  default:
12289
12325
  if (column.formatter) {
12290
12326
  cellContent = column.formatter(row[column.field], row, index, rows);
@@ -12365,14 +12401,18 @@ var DataListGroup = (_a) => {
12365
12401
  const hasCustomRowForGroup = (0, import_isFunction2.default)(getGroupRow);
12366
12402
  if (!areRowsGrouped(groups)) {
12367
12403
  if (groups.length === 0 && groupKey && groupKey !== "undefined") {
12404
+ const emptyGroupContent = renderEmptyGroup(groupKey);
12405
+ if (!emptyGroupContent) {
12406
+ return null;
12407
+ }
12368
12408
  return /* @__PURE__ */ import_react77.default.createElement(DataList.Row, {
12369
- isLast: isLastGroup
12409
+ noDivider: isLastGroup
12370
12410
  }, selectable && /* @__PURE__ */ import_react77.default.createElement(DataList.Cell, null), /* @__PURE__ */ import_react77.default.createElement(DataList.Cell, {
12371
12411
  style: { paddingLeft: `${2 + GAP + level * INDENTATION}px`, gridColumn: `${selectable ? 2 : 1} / -1` }
12372
12412
  }, /* @__PURE__ */ import_react77.default.createElement(Typography, {
12373
12413
  variant: "small",
12374
12414
  color: "muted"
12375
- }, renderEmptyGroup(groupKey))));
12415
+ }, emptyGroupContent)));
12376
12416
  }
12377
12417
  return /* @__PURE__ */ import_react77.default.createElement(List, {
12378
12418
  items: groups,
@@ -12458,7 +12498,7 @@ var DataListGroup = (_a) => {
12458
12498
  openPanelId
12459
12499
  }, hasCustomRowForGroup && /* @__PURE__ */ import_react77.default.createElement(DataList.Row, {
12460
12500
  active: isActiveRow,
12461
- isLast: isLastRow
12501
+ noDivider: isLastRow
12462
12502
  }, selectable && /* @__PURE__ */ import_react77.default.createElement(DataList.Cell, null, selectable === "multiple" && /* @__PURE__ */ import_react77.default.createElement(Checkbox, {
12463
12503
  "aria-label": getGroupCheckboxLabel(key, group, index, isChecked, rows),
12464
12504
  checked: isChecked,
@@ -12488,7 +12528,7 @@ var DataListGroup = (_a) => {
12488
12528
  menuAriaLabel
12489
12529
  })), !hasCustomRowForGroup && /* @__PURE__ */ import_react77.default.createElement(DataList.Row, {
12490
12530
  active: isActiveRow,
12491
- isLast: isLastRow
12531
+ noDivider: isLastRow
12492
12532
  }, selectable === "multiple" && /* @__PURE__ */ import_react77.default.createElement(DataList.Cell, null, /* @__PURE__ */ import_react77.default.createElement(Checkbox, {
12493
12533
  "aria-label": getGroupCheckboxLabel(key, group, index, isChecked, rows),
12494
12534
  checked: isChecked,
@@ -12504,7 +12544,7 @@ var DataListGroup = (_a) => {
12504
12544
  }), renderGroupName(key, group))), /* @__PURE__ */ import_react77.default.createElement(Accordion.UnanimatedPanel, {
12505
12545
  panelId: key
12506
12546
  }, /* @__PURE__ */ import_react77.default.createElement(DataList.Row, {
12507
- subgroup: true
12547
+ isGroup: true
12508
12548
  }, /* @__PURE__ */ import_react77.default.createElement(DataListGroup, __spreadProps(__spreadValues({
12509
12549
  key,
12510
12550
  groupKey: key,
@@ -12533,7 +12573,7 @@ var DataListSkeleton = ({ columns = ["1", "2", "2", 52], rows = 5 }) => {
12533
12573
  items: [...Array(rows).keys()],
12534
12574
  renderItem: (item, index) => /* @__PURE__ */ import_react78.default.createElement(DataList.Row, {
12535
12575
  key: item,
12536
- isLast: index === rows - 1
12576
+ noDivider: index === rows - 1
12537
12577
  }, /* @__PURE__ */ import_react78.default.createElement(List, {
12538
12578
  items: columnsAmount,
12539
12579
  renderItem: (key) => /* @__PURE__ */ import_react78.default.createElement(DataList.Cell, {
@@ -12739,7 +12779,7 @@ var DataList2 = (_a) => {
12739
12779
  color: "default",
12740
12780
  "aria-hidden": true
12741
12781
  }), content) : content;
12742
- const cell2 = columnIsFieldColumn(column) && column.sortable || column.sort ? /* @__PURE__ */ import_react80.default.createElement(DataList.SortCell, __spreadValues({
12782
+ const cell2 = columnHasSort(column) ? /* @__PURE__ */ import_react80.default.createElement(DataList.SortCell, __spreadValues({
12743
12783
  direction: sort && sort.column.headerName === column.headerName ? sort.direction : "none",
12744
12784
  onClick: () => updateSort(column),
12745
12785
  sticky
@@ -13003,7 +13043,7 @@ var DataTable = (_a) => {
13003
13043
  color: "default",
13004
13044
  "aria-hidden": true
13005
13045
  }), content) : content;
13006
- const cell2 = columnIsFieldColumn(column) && column.sortable || column.sort ? /* @__PURE__ */ import_react83.default.createElement(Table2.SortCell, __spreadValues({
13046
+ const cell2 = columnHasSort(column) ? /* @__PURE__ */ import_react83.default.createElement(Table2.SortCell, __spreadValues({
13007
13047
  direction: sort && sort.column.headerName === column.headerName ? sort.direction : "none",
13008
13048
  onClick: () => updateSort(column),
13009
13049
  style: { width: column.width },
@@ -15613,6 +15653,12 @@ var CommonPageHeader = ({
15613
15653
  isSubHeader = false
15614
15654
  }) => {
15615
15655
  var _a, _b;
15656
+ const actions = [primaryAction, ...(0, import_castArray6.default)(secondaryActions)].filter(Boolean);
15657
+ if (actions.length > 2) {
15658
+ throw new Error(
15659
+ "Limit the combined `primaryAction` and `secondaryActions` to 2 actions. Use the `menu` prop for additional actions."
15660
+ );
15661
+ }
15616
15662
  return /* @__PURE__ */ import_react119.default.createElement(PageHeader, {
15617
15663
  className: "Aquarium-PageHeader"
15618
15664
  }, /* @__PURE__ */ import_react119.default.createElement(PageHeader.Container, null, breadcrumbs && /* @__PURE__ */ import_react119.default.createElement(Box, {
@@ -16672,10 +16718,33 @@ Timeline2.Skeleton.displayName = "Timeline.Skeleton";
16672
16718
  var import_react138 = __toESM(require("react"));
16673
16719
  var TimePicker = (props) => /* @__PURE__ */ import_react138.default.createElement(TimeField, __spreadValues({}, props));
16674
16720
 
16675
- // src/utils/table/useTableSelect.ts
16721
+ // src/utils/table/sortByColumn.ts
16722
+ var sortByColumn = (items, column, sortState) => {
16723
+ const sortedColumn = column.find((column2) => column2.headerName === (sortState == null ? void 0 : sortState.headerName));
16724
+ if (sortState && sortedColumn && columnHasSort(sortedColumn)) {
16725
+ const sortFunction = sortedColumn.sort;
16726
+ if (sortFunction) {
16727
+ const ascending = [...items].sort((a, b) => sortFunction(a, b, sortState.direction));
16728
+ if (sortState.direction === "descending") {
16729
+ return ascending.reverse();
16730
+ } else {
16731
+ return ascending;
16732
+ }
16733
+ }
16734
+ return items;
16735
+ } else {
16736
+ return items;
16737
+ }
16738
+ };
16739
+
16740
+ // src/utils/table/useSortState.ts
16676
16741
  var import_react139 = __toESM(require("react"));
16742
+ var useSortState = (initialSortState) => import_react139.default.useState(initialSortState);
16743
+
16744
+ // src/utils/table/useTableSelect.ts
16745
+ var import_react140 = __toESM(require("react"));
16677
16746
  var useTableSelect = (data, { key }) => {
16678
- const [selected, setSelected] = import_react139.default.useState([]);
16747
+ const [selected, setSelected] = import_react140.default.useState([]);
16679
16748
  const allSelected = selected.length === data.length;
16680
16749
  const isSelected = (dot) => selected.includes(dot[key]);
16681
16750
  const selectAll = () => setSelected(data.map((dot) => dot[key]));
@@ -16699,6 +16768,92 @@ var useTableSelect = (data, { key }) => {
16699
16768
  };
16700
16769
  };
16701
16770
 
16771
+ // src/molecules/ItemList/ItemList.tsx
16772
+ var import_react141 = __toESM(require("react"));
16773
+ var ItemList = (_a) => {
16774
+ var _b = _a, {
16775
+ columns,
16776
+ items,
16777
+ onSortChanged,
16778
+ sticky
16779
+ } = _b, infiniteProps = __objRest(_b, [
16780
+ "columns",
16781
+ "items",
16782
+ "onSortChanged",
16783
+ "sticky"
16784
+ ]);
16785
+ const templateColumns = columns.map((column) => {
16786
+ var _a2;
16787
+ return (_a2 = column.width) != null ? _a2 : "auto";
16788
+ });
16789
+ const [sortState, setSortState] = useSortState();
16790
+ const sortedItems = onSortChanged ? items : sortByColumn(items, columns, sortState);
16791
+ return /* @__PURE__ */ import_react141.default.createElement(Template, {
16792
+ className: "Aquarium-ItemList",
16793
+ columns: templateColumns,
16794
+ role: "table"
16795
+ }, /* @__PURE__ */ import_react141.default.createElement(DataList.Row, {
16796
+ header: true
16797
+ }, columns.map((column) => {
16798
+ if (columnHasSort(column)) {
16799
+ return /* @__PURE__ */ import_react141.default.createElement(DataList.SortCell, __spreadValues({
16800
+ sticky,
16801
+ direction: (sortState == null ? void 0 : sortState.headerName) === column.headerName ? sortState.direction : "none",
16802
+ onClick: () => {
16803
+ const newState = sortState && sortState.headerName === column.headerName ? sortState.direction === "ascending" ? { headerName: column.headerName, direction: "descending" } : void 0 : { headerName: column.headerName, direction: "ascending" };
16804
+ setSortState(newState);
16805
+ onSortChanged == null ? void 0 : onSortChanged(newState);
16806
+ }
16807
+ }, cellProps(column)), column.headerName);
16808
+ }
16809
+ return /* @__PURE__ */ import_react141.default.createElement(DataList.HeadCell, __spreadProps(__spreadValues({}, cellProps(column)), {
16810
+ sticky
16811
+ }), column.headerName);
16812
+ })), /* @__PURE__ */ import_react141.default.createElement(Rows, __spreadValues({
16813
+ columns,
16814
+ items: sortedItems,
16815
+ level: 0
16816
+ }, infiniteProps)));
16817
+ };
16818
+ var Rows = (_a) => {
16819
+ var _b = _a, { columns, items, level, isLastGroup } = _b, infiniteProps = __objRest(_b, ["columns", "items", "level", "isLastGroup"]);
16820
+ return /* @__PURE__ */ import_react141.default.createElement(List, __spreadProps(__spreadValues({}, level === 0 ? infiniteProps : {}), {
16821
+ items,
16822
+ renderItem: (item, itemIndex) => {
16823
+ const hasSubItems = item.items && item.items.length > 0;
16824
+ const isLastItem = itemIndex === items.length - 1;
16825
+ const noDivider = level === 0 && isLastItem || level > 0 && (isLastGroup || !isLastItem) || hasSubItems;
16826
+ return /* @__PURE__ */ import_react141.default.createElement(import_react141.default.Fragment, {
16827
+ key: item.id
16828
+ }, /* @__PURE__ */ import_react141.default.createElement(DataList.Row, {
16829
+ noDivider
16830
+ }, /* @__PURE__ */ import_react141.default.createElement(List, {
16831
+ items: columns,
16832
+ renderItem: (column, columnIndex) => /* @__PURE__ */ import_react141.default.createElement(DataList.Cell, __spreadProps(__spreadValues({}, cellProps(column)), {
16833
+ style: level > 1 && columnIndex === 0 ? { paddingLeft: (level - 1) * 60 } : void 0
16834
+ }), level > 0 && columnIndex === 0 && /* @__PURE__ */ import_react141.default.createElement(DataList.TreeLine, {
16835
+ isLast: itemIndex === items.length - 1
16836
+ }), /* @__PURE__ */ import_react141.default.createElement(DataListCell, {
16837
+ column,
16838
+ row: item,
16839
+ index: columnIndex,
16840
+ rows: items
16841
+ }))
16842
+ })), item.items && /* @__PURE__ */ import_react141.default.createElement(WithGroup, {
16843
+ level
16844
+ }, /* @__PURE__ */ import_react141.default.createElement(Rows, {
16845
+ columns,
16846
+ items: item.items,
16847
+ level: level + 1,
16848
+ isLastGroup: level === 0 && itemIndex === items.length - 1 || isLastGroup
16849
+ })));
16850
+ }
16851
+ }));
16852
+ };
16853
+ var WithGroup = ({ level, children }) => level === 0 ? /* @__PURE__ */ import_react141.default.createElement(DataList.Row, {
16854
+ isGroup: true
16855
+ }, children) : children;
16856
+
16702
16857
  // src/molecules/index.ts
16703
16858
  var SelectItem = Select.Item;
16704
16859
 
@@ -16875,6 +17030,7 @@ var system_default = __spreadValues({}, molecules_exports);
16875
17030
  InlineIcon,
16876
17031
  Input,
16877
17032
  InputBase,
17033
+ ItemList,
16878
17034
  Label,
16879
17035
  LabelControl,
16880
17036
  LineClamp,
@@ -16952,6 +17108,7 @@ var system_default = __spreadValues({}, molecules_exports);
16952
17108
  calcTopPosition,
16953
17109
  calcTopRightPosition,
16954
17110
  cellProps,
17111
+ columnHasSort,
16955
17112
  columnIsFieldColumn,
16956
17113
  createComponent,
16957
17114
  createMountPointElement,
@@ -16961,10 +17118,12 @@ var system_default = __spreadValues({}, molecules_exports);
16961
17118
  isOnSortChangedDirection,
16962
17119
  isOutOfBounds,
16963
17120
  placementOrder,
17121
+ sortByColumn,
16964
17122
  toSortDirection,
16965
17123
  usePagination,
16966
17124
  usePopoverContext,
16967
17125
  useScrollTarget,
17126
+ useSortState,
16968
17127
  useStaticInfiniteList,
16969
17128
  useTableSelect,
16970
17129
  useTableSort,