@proounce/shared-common 0.1.0 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/grids/ag-grid/CustomAgGrid.tsx","../../src/buttons/SharedIconButton.tsx","../../src/grids/ag-grid/CustomGridHeaderCellWithInfo.tsx","../../src/grids/ag-grid/CustomGridTableWrapper.tsx"],"names":["AllCommunityModule","useMemo","useCallback","jsx","AgGridReact","memo","IconButton","jsxs","Stack","Tooltip","InfoOutlinedIcon","FunctionsIcon","Box"],"mappings":"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","file":"ag-grid.cjs","sourcesContent":["import type {\n ColDef,\n GetRowIdParams,\n Module,\n RowSelectionOptions,\n SelectionChangedEvent,\n} from \"ag-grid-community\";\nimport { AllCommunityModule } from \"ag-grid-community\";\nimport {\n AgGridReact,\n type AgGridReactProps,\n} from \"ag-grid-react\";\nimport { memo, useCallback, useMemo, type CSSProperties } from \"react\";\n\nconst DEFAULT_AG_GRID_MODULES: Module[] = [AllCommunityModule];\n\nexport interface CustomGridTableProps<Row extends object>\n extends Omit<\n AgGridReactProps<Row>,\n | \"columnDefs\"\n | \"rowData\"\n | \"pinnedBottomRowData\"\n | \"defaultColDef\"\n | \"onSelectionChanged\"\n | \"pagination\"\n | \"paginationPageSize\"\n | \"paginationPageSizeSelector\"\n | \"rowSelection\"\n | \"modules\"\n | \"getRowId\"\n > {\n columns?: readonly ColDef<Row>[];\n data?: readonly Row[];\n totals?: readonly Row[];\n loading?: boolean;\n enableSelection?: boolean;\n onSelect?: (rows: Row[]) => void;\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n defaultColDef?: ColDef<Row>;\n pagination?: boolean;\n paginationPageSize?: number;\n paginationPageSizeSelector?: readonly number[];\n getRowId?: (params: GetRowIdParams<Row>) => string;\n modules?: Module[];\n ariaLabel?: string;\n}\n\n/**\n * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so\n * regular shared-component consumers do not load AG Grid.\n */\nexport function CustomGridTableComponent<Row extends object>({\n columns = [],\n data = [],\n totals = [],\n loading = false,\n enableSelection = false,\n onSelect,\n height = 500,\n minHeight = 240,\n defaultColDef,\n pagination,\n paginationPageSize = 25,\n paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],\n getRowId,\n modules = DEFAULT_AG_GRID_MODULES,\n ariaLabel = \"Data grid\",\n ...gridProps\n}: CustomGridTableProps<Row>) {\n const resolvedDefaultColDef = useMemo<ColDef<Row>>(\n () => ({\n flex: 1,\n minWidth: 160,\n resizable: true,\n sortable: true,\n wrapText: true,\n autoHeight: true,\n ...defaultColDef,\n }),\n [defaultColDef],\n );\n const rowSelection = useMemo<RowSelectionOptions<Row> | undefined>(\n () =>\n enableSelection\n ? {\n mode: \"multiRow\",\n checkboxes: true,\n headerCheckbox: true,\n enableClickSelection: false,\n selectAll: \"filtered\",\n }\n : undefined,\n [enableSelection],\n );\n const enablePagination = pagination ?? data.length > 50;\n const handleSelection = useCallback(\n (event: SelectionChangedEvent<Row>) => onSelect?.(event.api.getSelectedRows()),\n [onSelect],\n );\n\n return (\n <div\n aria-label={ariaLabel}\n role=\"region\"\n style={{ width: \"100%\", height, minHeight }}\n >\n <AgGridReact<Row>\n modules={modules}\n rowData={[...data]}\n columnDefs={[...columns]}\n pinnedBottomRowData={[...totals]}\n defaultColDef={resolvedDefaultColDef}\n loading={loading}\n pagination={enablePagination}\n paginationPageSize={paginationPageSize}\n paginationPageSizeSelector={[...paginationPageSizeSelector]}\n {...(rowSelection ? { rowSelection } : {})}\n onSelectionChanged={handleSelection}\n animateRows={false}\n suppressDragLeaveHidesColumns\n {...(getRowId ? { getRowId } : {})}\n {...gridProps}\n />\n </div>\n );\n}\n\nexport const CustomGridTable = memo(\n CustomGridTableComponent,\n) as typeof CustomGridTableComponent;\n\nexport const AgGridTable = CustomGridTable;\nexport default CustomGridTable;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\": string;\n}\n\n/** An icon-only button that requires an accessible label. */\nexport function SharedIconButton({ sx, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n sx={{ width: 40, height: 40, borderRadius: 1, ...sx }}\n {...props}\n />\n );\n}\n\nexport default SharedIconButton;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Stack from \"@mui/material/Stack\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport type { IHeaderParams } from \"ag-grid-community\";\nimport type { KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { SharedIconButton } from \"../../buttons/SharedIconButton\";\n\nexport interface CustomGridHeaderCellWithInfoProps<Row = unknown>\n extends IHeaderParams<Row> {\n title?: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n}\n\n/** Accessible sortable AG Grid header with optional information and formula help. */\nexport function CustomGridHeaderCellWithInfo<Row = unknown>({\n displayName,\n title,\n info,\n infoLabel = \"Column information\",\n formula,\n formulaLabel = \"Column formula\",\n column,\n enableSorting,\n progressSort,\n}: CustomGridHeaderCellWithInfoProps<Row>) {\n const sort = column.getSort();\n const headerTitle = title ?? displayName;\n const sortLabel = sort\n ? `${String(headerTitle)}, sorted ${sort === \"asc\" ? \"ascending\" : \"descending\"}`\n : `${String(headerTitle)}, not sorted`;\n const requestSort = (event: MouseEvent | KeyboardEvent) => {\n if (enableSorting) progressSort(event.shiftKey);\n };\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} width=\"100%\">\n <button\n type=\"button\"\n disabled={!enableSorting}\n aria-label={sortLabel}\n onClick={requestSort}\n style={{\n appearance: \"none\",\n border: 0,\n background: \"transparent\",\n color: \"inherit\",\n font: \"inherit\",\n fontWeight: 600,\n cursor: enableSorting ? \"pointer\" : \"default\",\n padding: 4,\n }}\n >\n {headerTitle}\n {sort === \"asc\" ? \" ▲\" : sort === \"desc\" ? \" ▼\" : \"\"}\n </button>\n {info ? (\n <Tooltip title={info} arrow>\n <SharedIconButton aria-label={infoLabel} size=\"small\">\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n </Tooltip>\n ) : null}\n {formula ? (\n <Tooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </Tooltip>\n ) : null}\n </Stack>\n );\n}\n\nexport default CustomGridHeaderCellWithInfo;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\n\nexport function CustomGridTableWrapper({ children, sx, ...props }: BoxProps) {\n return (\n <Box width=\"100%\" p={1.5} mb={0.5} sx={sx} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default CustomGridTableWrapper;\n"]}
1
+ {"version":3,"sources":["../../src/grids/ag-grid/CustomAgGrid.tsx","../../src/buttons/SharedButton.tsx","../../src/buttons/SharedIconButton.tsx","../../src/feedback/LightTooltip.tsx","../../src/grids/ag-grid/CustomGridHeaderCellWithInfo.tsx","../../src/grids/ag-grid/CustomGridTableWrapper.tsx"],"names":["AllCommunityModule","useMemo","useCallback","jsx","AgGridReact","memo","Children","isValidElement","Button","IconButton","styled","Tooltip","tooltipClasses","jsxs","Stack","InfoOutlinedIcon","FunctionsIcon","Box"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,IAAM,uBAAA,GAAoC,CAACA,kCAAkB,CAAA;AAsCtD,SAAS,wBAAA,CAA6C;AAAA,EAC3D,UAAU,EAAC;AAAA,EACX,OAAO,EAAC;AAAA,EACR,SAAS,EAAC;AAAA,EACV,OAAA,GAAU,KAAA;AAAA,EACV,eAAA,GAAkB,KAAA;AAAA,EAClB,QAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,SAAA,GAAY,GAAA;AAAA,EACZ,aAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA,GAAqB,EAAA;AAAA,EACrB,6BAA6B,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,EACpD,QAAA;AAAA,EACA,OAAA,GAAU,uBAAA;AAAA,EACV,SAAA,GAAY,WAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,MAAM,qBAAA,GAAwBC,aAAA;AAAA,IAC5B,OAAO;AAAA,MACL,IAAA,EAAM,CAAA;AAAA,MACN,QAAA,EAAU,GAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU,IAAA;AAAA,MACV,UAAA,EAAY,IAAA;AAAA,MACZ,GAAG;AAAA,KACL,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AACA,EAAA,MAAM,YAAA,GAAeA,aAAA;AAAA,IACnB,MACE,eAAA,GACI;AAAA,MACE,IAAA,EAAM,UAAA;AAAA,MACN,UAAA,EAAY,IAAA;AAAA,MACZ,cAAA,EAAgB,IAAA;AAAA,MAChB,oBAAA,EAAsB,KAAA;AAAA,MACtB,SAAA,EAAW;AAAA,KACb,GACA,MAAA;AAAA,IACN,CAAC,eAAe;AAAA,GAClB;AACA,EAAA,MAAM,gBAAA,GAAmB,UAAA,IAAc,IAAA,CAAK,MAAA,GAAS,EAAA;AACrD,EAAA,MAAM,eAAA,GAAkBC,iBAAA;AAAA,IACtB,CAAC,KAAA,KAAsC,QAAA,GAAW,KAAA,CAAM,GAAA,CAAI,iBAAiB,CAAA;AAAA,IAC7E,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,uBACIC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAK,QAAA;AAAA,MACL,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,SAAA,EAAU;AAAA,MAE1C,QAAA,kBAAAA,cAAA;AAAA,QAACC,uBAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,OAAA,EAAS,CAAC,GAAG,IAAI,CAAA;AAAA,UACjB,UAAA,EAAY,CAAC,GAAG,OAAO,CAAA;AAAA,UACvB,mBAAA,EAAqB,CAAC,GAAG,MAAM,CAAA;AAAA,UAC/B,aAAA,EAAe,qBAAA;AAAA,UACf,OAAA;AAAA,UACA,UAAA,EAAY,gBAAA;AAAA,UACZ,kBAAA;AAAA,UACA,0BAAA,EAA4B,CAAC,GAAG,0BAA0B,CAAA;AAAA,UACzD,GAAI,YAAA,GAAe,EAAE,YAAA,KAAiB,EAAC;AAAA,UACxC,kBAAA,EAAoB,eAAA;AAAA,UACpB,WAAA,EAAa,KAAA;AAAA,UACb,6BAAA,EAA6B,IAAA;AAAA,UAC5B,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,UAC/B,GAAG;AAAA;AAAA;AACN;AAAA,GACF;AAEN;AAEO,IAAM,eAAA,GAAkBC,UAAA;AAAA,EAC7B;AACF;AAEO,IAAM,WAAA,GAAc;AC/H3B,IAAM,YAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,eAAe,QAAA,EAA6B;AACnD,EAAA,IAAI,IAAA,GAAO,EAAA;AACX,EAAAC,cAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,MAAA,IAAA,IAAQ,OAAO,KAAK,CAAA;AAAA,IACtB,CAAA,MAAA,IAAWC,oBAAA,CAAyC,KAAK,CAAA,EAAG;AAC1D,MAAA,IAAA,IAAQ,cAAA,CAAe,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA;AAAA,IAC7C;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,IAAA,CAAK,MAAK,IAAK,QAAA;AACxB;AAGO,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,KAAK,CAAA,IAAK,YAAA,CAAa,OAAA;AACtD,EAAA,MAAM,QAAA,GAAW,OAAA,KAAY,UAAA,IAAc,CAAC,QAAA,GACxC;AAAA,IACE,aAAA,EAAe,YAAA;AAAA,IACf,eAAA,EAAiB,GAAG,SAAS,CAAA,EAAA,CAAA;AAAA,IAC7B,SAAA,EAAW,EAAE,eAAA,EAAiB,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,EAAK;AAAA,IAC/C,GAAG;AAAA,GACL,GACA,EAAE,aAAA,EAAe,YAAA,EAAc,GAAG,EAAA,EAAG;AAEzC,EAAA,uBACEJ,cAAAA;AAAA,IAACK,uBAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,eAAe,QAAQ,CAAA;AAAA,MAC1D,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAG,QAAA;AAAA,QACH,QAAA,EAAU,MAAA;AAAA,QACV,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC1DA,SAAS,eAAe,QAAA,EAA6B;AACnD,EAAA,IAAI,CAACD,oBAAAA,CAAe,QAAQ,CAAA,EAAG,OAAO,aAAA;AACtC,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA,IAAQ,aAAA;AAC9C,EAAA,OAAO,IAAA,CACJ,QAAQ,gDAAA,EAAkD,EAAE,EAC5D,OAAA,CAAQ,iBAAA,EAAmB,OAAO,CAAA,CAClC,WAAA,EAAY;AACjB;AAGO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,GAAG,OAAM,EAA0B;AAC9E,EAAA,uBACEJ,cAAAA;AAAA,IAACM,2BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,eAAe,QAAQ,CAAA;AAAA,MACzD,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;ACtBO,IAAM,YAAA,GAAeC,cAAO,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,KAAoB;AACtF,EAAA,MAAM,WAAWH,oBAAAA,CAAuC,QAAQ,KAAK,OAAA,CAAQ,QAAA,CAAS,MAAM,QAAQ,CAAA;AAEpG,EAAA,IAAI,QAAA,EAAU,uBAAOJ,cAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAErC,EAAA,uBACEA,cAAAA,CAACQ,wBAAA,EAAA,EAAS,GAAG,KAAA,EAAO,OAAA,EAAS,SAAA,GAAY,EAAE,MAAA,EAAQ,SAAA,EAAU,GAAI,MAAA,EAC9D,QAAA,EACH,CAAA;AAEJ,CAAC,CAAA,CAAE,CAAC,EAAE,KAAA,EAAM,MAAO;AAAA,EACjB,CAAC,CAAA,GAAA,EAAMC,sBAAA,CAAe,OAAO,EAAE,GAAG;AAAA,IAChC,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,IACtC,KAAA,EAAO,qBAAA;AAAA,IACP,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC1B,QAAA,EAAU;AAAA;AAEd,CAAA,CAAE,CAAA;ACHK,SAAS,4BAAA,CAA4C;AAAA,EAC1D,WAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,oBAAA;AAAA,EACZ,OAAA;AAAA,EACA,YAAA,GAAe,gBAAA;AAAA,EACf,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA2C;AACzC,EAAA,MAAM,IAAA,GAAO,OAAO,OAAA,EAAQ;AAC5B,EAAA,MAAM,cAAc,KAAA,IAAS,WAAA;AAC7B,EAAA,MAAM,SAAA,GAAY,IAAA,GACd,CAAA,EAAG,MAAA,CAAO,WAAW,CAAC,CAAA,SAAA,EAAY,IAAA,KAAS,KAAA,GAAQ,cAAc,YAAY,CAAA,CAAA,GAC7E,CAAA,EAAG,MAAA,CAAO,WAAW,CAAC,CAAA,YAAA,CAAA;AAC1B,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsC;AACzD,IAAA,IAAI,aAAA,EAAe,YAAA,CAAa,KAAA,CAAM,QAAQ,CAAA;AAAA,EAChD,CAAA;AAEA,EAAA,uBACEC,eAAA,CAACC,0BAAM,SAAA,EAAU,KAAA,EAAM,YAAW,QAAA,EAAS,OAAA,EAAS,GAAA,EAAK,KAAA,EAAM,MAAA,EAC7D,QAAA,EAAA;AAAA,oBAAAD,eAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,MAAA;AAAA,QACR,UAAU,CAAC,aAAA;AAAA,QACX,YAAA,EAAY,SAAA;AAAA,QACZ,OAAA,EAAS,WAAA;AAAA,QACT,EAAA,EAAI;AAAA,UACF,QAAA,EAAU,EAAA;AAAA,UACV,EAAA,EAAI,GAAA;AAAA,UACJ,KAAA,EAAO,SAAA;AAAA,UACP,UAAA,EAAY,GAAA;AAAA,UACZ,cAAA,EAAgB,YAAA;AAAA,UAChB,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,WAAA;AAAA,UACA,IAAA,KAAS,KAAA,GAAQ,SAAA,GAAO,IAAA,KAAS,SAAS,SAAA,GAAO;AAAA;AAAA;AAAA,KACpD;AAAA,IACC,IAAA,mBACCV,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAO,IAAA,EAAM,KAAA,EAAK,IAAA,EAC9B,QAAA,kBAAAA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,cAAY,SAAA,EAAW,IAAA,EAAK,SAC5C,QAAA,kBAAAA,cAAAA,CAACY,qCAAiB,QAAA,EAAS,OAAA,EAAQ,CAAA,EACrC,CAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCZ,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAO,OAAA,EAAS,KAAA,EAAK,IAAA,EACjC,QAAA,kBAAAA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,cAAY,YAAA,EAAc,IAAA,EAAK,SAC/C,QAAA,kBAAAA,cAAAA,CAACa,kCAAc,QAAA,EAAS,OAAA,EAAQ,CAAA,EAClC,CAAA,EACF,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACxEO,SAAS,uBAAuB,EAAE,QAAA,EAAU,EAAA,EAAI,GAAG,OAAM,EAAa;AAC3E,EAAA,uBACEb,cAAAA,CAACc,oBAAA,EAAA,EAAI,KAAA,EAAM,MAAA,EAAO,CAAA,EAAG,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAS,GAAG,KAAA,EAC5C,QAAA,EACH,CAAA;AAEJ","file":"ag-grid.cjs","sourcesContent":["import type {\n ColDef,\n GetRowIdParams,\n Module,\n RowSelectionOptions,\n SelectionChangedEvent,\n} from \"ag-grid-community\";\nimport { AllCommunityModule } from \"ag-grid-community\";\nimport {\n AgGridReact,\n type AgGridReactProps,\n} from \"ag-grid-react\";\nimport { memo, useCallback, useMemo, type CSSProperties } from \"react\";\n\nconst DEFAULT_AG_GRID_MODULES: Module[] = [AllCommunityModule];\n\nexport interface CustomGridTableProps<Row extends object>\n extends Omit<\n AgGridReactProps<Row>,\n | \"columnDefs\"\n | \"rowData\"\n | \"pinnedBottomRowData\"\n | \"defaultColDef\"\n | \"onSelectionChanged\"\n | \"pagination\"\n | \"paginationPageSize\"\n | \"paginationPageSizeSelector\"\n | \"rowSelection\"\n | \"modules\"\n | \"getRowId\"\n > {\n columns?: readonly ColDef<Row>[];\n data?: readonly Row[];\n totals?: readonly Row[];\n loading?: boolean;\n enableSelection?: boolean;\n onSelect?: (rows: Row[]) => void;\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n defaultColDef?: ColDef<Row>;\n pagination?: boolean;\n paginationPageSize?: number;\n paginationPageSizeSelector?: readonly number[];\n getRowId?: (params: GetRowIdParams<Row>) => string;\n modules?: Module[];\n ariaLabel?: string;\n}\n\n/**\n * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so\n * regular shared-component consumers do not load AG Grid.\n */\nexport function CustomGridTableComponent<Row extends object>({\n columns = [],\n data = [],\n totals = [],\n loading = false,\n enableSelection = false,\n onSelect,\n height = 500,\n minHeight = 240,\n defaultColDef,\n pagination,\n paginationPageSize = 25,\n paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],\n getRowId,\n modules = DEFAULT_AG_GRID_MODULES,\n ariaLabel = \"Data grid\",\n ...gridProps\n}: CustomGridTableProps<Row>) {\n const resolvedDefaultColDef = useMemo<ColDef<Row>>(\n () => ({\n flex: 1,\n minWidth: 160,\n resizable: true,\n sortable: true,\n wrapText: true,\n autoHeight: true,\n ...defaultColDef,\n }),\n [defaultColDef],\n );\n const rowSelection = useMemo<RowSelectionOptions<Row> | undefined>(\n () =>\n enableSelection\n ? {\n mode: \"multiRow\",\n checkboxes: true,\n headerCheckbox: true,\n enableClickSelection: false,\n selectAll: \"filtered\",\n }\n : undefined,\n [enableSelection],\n );\n const enablePagination = pagination ?? data.length > 50;\n const handleSelection = useCallback(\n (event: SelectionChangedEvent<Row>) => onSelect?.(event.api.getSelectedRows()),\n [onSelect],\n );\n\n return (\n <div\n aria-label={ariaLabel}\n role=\"region\"\n style={{ width: \"100%\", height, minHeight }}\n >\n <AgGridReact<Row>\n modules={modules}\n rowData={[...data]}\n columnDefs={[...columns]}\n pinnedBottomRowData={[...totals]}\n defaultColDef={resolvedDefaultColDef}\n loading={loading}\n pagination={enablePagination}\n paginationPageSize={paginationPageSize}\n paginationPageSizeSelector={[...paginationPageSizeSelector]}\n {...(rowSelection ? { rowSelection } : {})}\n onSelectionChanged={handleSelection}\n animateRows={false}\n suppressDragLeaveHidesColumns\n {...(getRowId ? { getRowId } : {})}\n {...gridProps}\n />\n </div>\n );\n}\n\nexport const CustomGridTable = memo(\n CustomGridTableComponent,\n) as typeof CustomGridTableComponent;\n\nexport const AgGridTable = CustomGridTable;\nexport default CustomGridTable;\n","import Button, { type ButtonProps } from \"@mui/material/Button\";\nimport { Children, isValidElement, type ReactNode } from \"react\";\n\nexport type SharedButtonProps = ButtonProps;\n\nconst colorOpacity: Record<string, string> = {\n primary: \"#1976d2\",\n secondary: \"#9c27b0\",\n error: \"#d32f2f\",\n warning: \"#ed6c02\",\n info: \"#0288d1\",\n success: \"#2e7d32\",\n inherit: \"#1976d2\",\n default: \"#1976d2\",\n};\n\nfunction accessibleText(children: ReactNode): string {\n let text = \"\";\n Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n text += String(child);\n } else if (isValidElement<{ children?: ReactNode }>(child)) {\n text += accessibleText(child.props.children);\n }\n });\n return text.trim() || \"Button\";\n}\n\n/** A consistently sized MUI button with accessible defaults. */\nexport function SharedButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={{\n ...customSx,\n minWidth: \"40px\",\n height: \"40px\",\n padding: \"6px\",\n borderRadius: \"4px\",\n }}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\n/** Visual-compatible version of the legacy `StyledButton` export. */\nexport function LegacyStyledButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={customSx}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\nexport default SharedButton;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\nimport { isValidElement, type ReactNode } from \"react\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\"?: string;\n}\n\nfunction inferIconLabel(children: ReactNode): string {\n if (!isValidElement(children)) return \"Icon Button\";\n const type = children.type as { displayName?: string; name?: string };\n const name = type.displayName ?? type.name ?? \"Icon Button\";\n return name\n .replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, \"\")\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .toLowerCase();\n}\n\n/** Legacy-size icon button with an accessible-name fallback. */\nexport function SharedIconButton({ children, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n aria-label={props[\"aria-label\"] ?? inferIconLabel(children)}\n {...props}\n >\n {children}\n </IconButton>\n );\n}\n\nexport default SharedIconButton;\n","import Tooltip, { tooltipClasses, type TooltipProps } from \"@mui/material/Tooltip\";\nimport { styled } from \"@mui/material/styles\";\nimport { isValidElement } from \"react\";\n\n/** Visual-compatible version of the legacy shared-base light tooltip. */\nexport const LightTooltip = styled(({ className, children, ...props }: TooltipProps) => {\n const disabled = isValidElement<{ disabled?: boolean }>(children) && Boolean(children.props.disabled);\n\n if (disabled) return <span>{children}</span>;\n\n return (\n <Tooltip {...props} classes={className ? { popper: className } : undefined}>\n {children}\n </Tooltip>\n );\n})(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 14,\n },\n}));\n\nexport const SharedTooltip = LightTooltip;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Stack from \"@mui/material/Stack\";\nimport type { IHeaderParams } from \"ag-grid-community\";\nimport type { KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { SharedButton } from \"../../buttons/SharedButton\";\nimport { SharedIconButton } from \"../../buttons/SharedIconButton\";\nimport { LightTooltip } from \"../../feedback/LightTooltip\";\n\nexport interface CustomGridHeaderCellWithInfoProps<Row = unknown>\n extends IHeaderParams<Row> {\n title?: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n}\n\n/** Accessible sortable AG Grid header with optional information and formula help. */\nexport function CustomGridHeaderCellWithInfo<Row = unknown>({\n displayName,\n title,\n info,\n infoLabel = \"Column information\",\n formula,\n formulaLabel = \"Column formula\",\n column,\n enableSorting,\n progressSort,\n}: CustomGridHeaderCellWithInfoProps<Row>) {\n const sort = column.getSort();\n const headerTitle = title ?? displayName;\n const sortLabel = sort\n ? `${String(headerTitle)}, sorted ${sort === \"asc\" ? \"ascending\" : \"descending\"}`\n : `${String(headerTitle)}, not sorted`;\n const requestSort = (event: MouseEvent | KeyboardEvent) => {\n if (enableSorting) progressSort(event.shiftKey);\n };\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} width=\"100%\">\n <SharedButton\n variant=\"text\"\n disabled={!enableSorting}\n aria-label={sortLabel}\n onClick={requestSort}\n sx={{\n minWidth: 40,\n px: 0.5,\n color: \"inherit\",\n fontWeight: 600,\n justifyContent: \"flex-start\",\n whiteSpace: \"nowrap\",\n }}\n >\n {headerTitle}\n {sort === \"asc\" ? \" ▲\" : sort === \"desc\" ? \" ▼\" : \"\"}\n </SharedButton>\n {info ? (\n <LightTooltip title={info} arrow>\n <SharedIconButton aria-label={infoLabel} size=\"small\">\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n {formula ? (\n <LightTooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n </Stack>\n );\n}\n\nexport default CustomGridHeaderCellWithInfo;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\n\nexport function CustomGridTableWrapper({ children, sx, ...props }: BoxProps) {\n return (\n <Box width=\"100%\" p={1.5} mb={0.5} sx={sx} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default CustomGridTableWrapper;\n"]}
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React from 'react';
2
2
  import { CSSProperties, ReactNode } from 'react';
3
3
  import { ColDef, GetRowIdParams, Module, IHeaderParams } from 'ag-grid-community';
4
4
  export { ColDef, ColGroupDef, GridApi, GridOptions, ICellRendererParams, IHeaderParams, RowSelectionOptions } from 'ag-grid-community';
@@ -26,7 +26,7 @@ interface CustomGridTableProps<Row extends object> extends Omit<AgGridReactProps
26
26
  * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so
27
27
  * regular shared-component consumers do not load AG Grid.
28
28
  */
29
- declare function CustomGridTableComponent<Row extends object>({ columns, data, totals, loading, enableSelection, onSelect, height, minHeight, defaultColDef, pagination, paginationPageSize, paginationPageSizeSelector, getRowId, modules, ariaLabel, ...gridProps }: CustomGridTableProps<Row>): react.JSX.Element;
29
+ declare function CustomGridTableComponent<Row extends object>({ columns, data, totals, loading, enableSelection, onSelect, height, minHeight, defaultColDef, pagination, paginationPageSize, paginationPageSizeSelector, getRowId, modules, ariaLabel, ...gridProps }: CustomGridTableProps<Row>): React.JSX.Element;
30
30
  declare const CustomGridTable: typeof CustomGridTableComponent;
31
31
  declare const AgGridTable: typeof CustomGridTableComponent;
32
32
 
@@ -38,8 +38,8 @@ interface CustomGridHeaderCellWithInfoProps<Row = unknown> extends IHeaderParams
38
38
  formulaLabel?: string;
39
39
  }
40
40
  /** Accessible sortable AG Grid header with optional information and formula help. */
41
- declare function CustomGridHeaderCellWithInfo<Row = unknown>({ displayName, title, info, infoLabel, formula, formulaLabel, column, enableSorting, progressSort, }: CustomGridHeaderCellWithInfoProps<Row>): react.JSX.Element;
41
+ declare function CustomGridHeaderCellWithInfo<Row = unknown>({ displayName, title, info, infoLabel, formula, formulaLabel, column, enableSorting, progressSort, }: CustomGridHeaderCellWithInfoProps<Row>): React.JSX.Element;
42
42
 
43
- declare function CustomGridTableWrapper({ children, sx, ...props }: BoxProps): react.JSX.Element;
43
+ declare function CustomGridTableWrapper({ children, sx, ...props }: BoxProps): React.JSX.Element;
44
44
 
45
45
  export { AgGridTable, CustomGridHeaderCellWithInfo, type CustomGridHeaderCellWithInfoProps, CustomGridTable, CustomGridTableComponent, type CustomGridTableProps, CustomGridTableWrapper };
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React from 'react';
2
2
  import { CSSProperties, ReactNode } from 'react';
3
3
  import { ColDef, GetRowIdParams, Module, IHeaderParams } from 'ag-grid-community';
4
4
  export { ColDef, ColGroupDef, GridApi, GridOptions, ICellRendererParams, IHeaderParams, RowSelectionOptions } from 'ag-grid-community';
@@ -26,7 +26,7 @@ interface CustomGridTableProps<Row extends object> extends Omit<AgGridReactProps
26
26
  * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so
27
27
  * regular shared-component consumers do not load AG Grid.
28
28
  */
29
- declare function CustomGridTableComponent<Row extends object>({ columns, data, totals, loading, enableSelection, onSelect, height, minHeight, defaultColDef, pagination, paginationPageSize, paginationPageSizeSelector, getRowId, modules, ariaLabel, ...gridProps }: CustomGridTableProps<Row>): react.JSX.Element;
29
+ declare function CustomGridTableComponent<Row extends object>({ columns, data, totals, loading, enableSelection, onSelect, height, minHeight, defaultColDef, pagination, paginationPageSize, paginationPageSizeSelector, getRowId, modules, ariaLabel, ...gridProps }: CustomGridTableProps<Row>): React.JSX.Element;
30
30
  declare const CustomGridTable: typeof CustomGridTableComponent;
31
31
  declare const AgGridTable: typeof CustomGridTableComponent;
32
32
 
@@ -38,8 +38,8 @@ interface CustomGridHeaderCellWithInfoProps<Row = unknown> extends IHeaderParams
38
38
  formulaLabel?: string;
39
39
  }
40
40
  /** Accessible sortable AG Grid header with optional information and formula help. */
41
- declare function CustomGridHeaderCellWithInfo<Row = unknown>({ displayName, title, info, infoLabel, formula, formulaLabel, column, enableSorting, progressSort, }: CustomGridHeaderCellWithInfoProps<Row>): react.JSX.Element;
41
+ declare function CustomGridHeaderCellWithInfo<Row = unknown>({ displayName, title, info, infoLabel, formula, formulaLabel, column, enableSorting, progressSort, }: CustomGridHeaderCellWithInfoProps<Row>): React.JSX.Element;
42
42
 
43
- declare function CustomGridTableWrapper({ children, sx, ...props }: BoxProps): react.JSX.Element;
43
+ declare function CustomGridTableWrapper({ children, sx, ...props }: BoxProps): React.JSX.Element;
44
44
 
45
45
  export { AgGridTable, CustomGridHeaderCellWithInfo, type CustomGridHeaderCellWithInfoProps, CustomGridTable, CustomGridTableComponent, type CustomGridTableProps, CustomGridTableWrapper };
@@ -1,12 +1,14 @@
1
1
  import { AllCommunityModule } from 'ag-grid-community';
2
2
  import { AgGridReact } from 'ag-grid-react';
3
- import { memo, useMemo, useCallback } from 'react';
3
+ import { memo, isValidElement, useMemo, useCallback, Children } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
  import FunctionsIcon from '@mui/icons-material/Functions';
6
6
  import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
7
7
  import Stack from '@mui/material/Stack';
8
- import Tooltip from '@mui/material/Tooltip';
8
+ import Button from '@mui/material/Button';
9
9
  import IconButton from '@mui/material/IconButton';
10
+ import Tooltip, { tooltipClasses } from '@mui/material/Tooltip';
11
+ import { styled } from '@mui/material/styles';
10
12
  import Box from '@mui/material/Box';
11
13
 
12
14
  // src/grids/ag-grid/CustomAgGrid.tsx
@@ -89,15 +91,89 @@ var CustomGridTable = memo(
89
91
  CustomGridTableComponent
90
92
  );
91
93
  var AgGridTable = CustomGridTable;
92
- function SharedIconButton({ sx, ...props }) {
94
+ var colorOpacity = {
95
+ primary: "#1976d2",
96
+ secondary: "#9c27b0",
97
+ error: "#d32f2f",
98
+ warning: "#ed6c02",
99
+ info: "#0288d1",
100
+ success: "#2e7d32",
101
+ inherit: "#1976d2",
102
+ default: "#1976d2"
103
+ };
104
+ function accessibleText(children) {
105
+ let text = "";
106
+ Children.forEach(children, (child) => {
107
+ if (typeof child === "string" || typeof child === "number") {
108
+ text += String(child);
109
+ } else if (isValidElement(child)) {
110
+ text += accessibleText(child.props.children);
111
+ }
112
+ });
113
+ return text.trim() || "Button";
114
+ }
115
+ function SharedButton({
116
+ children,
117
+ color = "primary",
118
+ variant,
119
+ disabled = false,
120
+ sx,
121
+ ...props
122
+ }) {
123
+ const baseColor = colorOpacity[color] ?? colorOpacity.primary;
124
+ const customSx = variant === "outlined" && !disabled ? {
125
+ textTransform: "capitalize",
126
+ backgroundColor: `${baseColor}20`,
127
+ "&:hover": { backgroundColor: `${baseColor}35` },
128
+ ...sx
129
+ } : { textTransform: "capitalize", ...sx };
130
+ return /* @__PURE__ */ jsx(
131
+ Button,
132
+ {
133
+ "aria-label": props["aria-label"] ?? accessibleText(children),
134
+ color,
135
+ variant,
136
+ disabled,
137
+ sx: {
138
+ ...customSx,
139
+ minWidth: "40px",
140
+ height: "40px",
141
+ padding: "6px",
142
+ borderRadius: "4px"
143
+ },
144
+ ...props,
145
+ children
146
+ }
147
+ );
148
+ }
149
+ function inferIconLabel(children) {
150
+ if (!isValidElement(children)) return "Icon Button";
151
+ const type = children.type;
152
+ const name = type.displayName ?? type.name ?? "Icon Button";
153
+ return name.replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, "").replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase();
154
+ }
155
+ function SharedIconButton({ children, ...props }) {
93
156
  return /* @__PURE__ */ jsx(
94
157
  IconButton,
95
158
  {
96
- sx: { width: 40, height: 40, borderRadius: 1, ...sx },
97
- ...props
159
+ "aria-label": props["aria-label"] ?? inferIconLabel(children),
160
+ ...props,
161
+ children
98
162
  }
99
163
  );
100
164
  }
165
+ var LightTooltip = styled(({ className, children, ...props }) => {
166
+ const disabled = isValidElement(children) && Boolean(children.props.disabled);
167
+ if (disabled) return /* @__PURE__ */ jsx("span", { children });
168
+ return /* @__PURE__ */ jsx(Tooltip, { ...props, classes: className ? { popper: className } : void 0, children });
169
+ })(({ theme }) => ({
170
+ [`& .${tooltipClasses.tooltip}`]: {
171
+ backgroundColor: theme.palette.common.white,
172
+ color: "rgba(0, 0, 0, 0.87)",
173
+ boxShadow: theme.shadows[1],
174
+ fontSize: 14
175
+ }
176
+ }));
101
177
  function CustomGridHeaderCellWithInfo({
102
178
  displayName,
103
179
  title,
@@ -117,21 +193,19 @@ function CustomGridHeaderCellWithInfo({
117
193
  };
118
194
  return /* @__PURE__ */ jsxs(Stack, { direction: "row", alignItems: "center", spacing: 0.5, width: "100%", children: [
119
195
  /* @__PURE__ */ jsxs(
120
- "button",
196
+ SharedButton,
121
197
  {
122
- type: "button",
198
+ variant: "text",
123
199
  disabled: !enableSorting,
124
200
  "aria-label": sortLabel,
125
201
  onClick: requestSort,
126
- style: {
127
- appearance: "none",
128
- border: 0,
129
- background: "transparent",
202
+ sx: {
203
+ minWidth: 40,
204
+ px: 0.5,
130
205
  color: "inherit",
131
- font: "inherit",
132
206
  fontWeight: 600,
133
- cursor: enableSorting ? "pointer" : "default",
134
- padding: 4
207
+ justifyContent: "flex-start",
208
+ whiteSpace: "nowrap"
135
209
  },
136
210
  children: [
137
211
  headerTitle,
@@ -139,8 +213,8 @@ function CustomGridHeaderCellWithInfo({
139
213
  ]
140
214
  }
141
215
  ),
142
- info ? /* @__PURE__ */ jsx(Tooltip, { title: info, arrow: true, children: /* @__PURE__ */ jsx(SharedIconButton, { "aria-label": infoLabel, size: "small", children: /* @__PURE__ */ jsx(InfoOutlinedIcon, { fontSize: "small" }) }) }) : null,
143
- formula ? /* @__PURE__ */ jsx(Tooltip, { title: formula, arrow: true, children: /* @__PURE__ */ jsx(SharedIconButton, { "aria-label": formulaLabel, size: "small", children: /* @__PURE__ */ jsx(FunctionsIcon, { fontSize: "small" }) }) }) : null
216
+ info ? /* @__PURE__ */ jsx(LightTooltip, { title: info, arrow: true, children: /* @__PURE__ */ jsx(SharedIconButton, { "aria-label": infoLabel, size: "small", children: /* @__PURE__ */ jsx(InfoOutlinedIcon, { fontSize: "small" }) }) }) : null,
217
+ formula ? /* @__PURE__ */ jsx(LightTooltip, { title: formula, arrow: true, children: /* @__PURE__ */ jsx(SharedIconButton, { "aria-label": formulaLabel, size: "small", children: /* @__PURE__ */ jsx(FunctionsIcon, { fontSize: "small" }) }) }) : null
144
218
  ] });
145
219
  }
146
220
  function CustomGridTableWrapper({ children, sx, ...props }) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/grids/ag-grid/CustomAgGrid.tsx","../../src/buttons/SharedIconButton.tsx","../../src/grids/ag-grid/CustomGridHeaderCellWithInfo.tsx","../../src/grids/ag-grid/CustomGridTableWrapper.tsx"],"names":["jsx"],"mappings":"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","file":"ag-grid.js","sourcesContent":["import type {\n ColDef,\n GetRowIdParams,\n Module,\n RowSelectionOptions,\n SelectionChangedEvent,\n} from \"ag-grid-community\";\nimport { AllCommunityModule } from \"ag-grid-community\";\nimport {\n AgGridReact,\n type AgGridReactProps,\n} from \"ag-grid-react\";\nimport { memo, useCallback, useMemo, type CSSProperties } from \"react\";\n\nconst DEFAULT_AG_GRID_MODULES: Module[] = [AllCommunityModule];\n\nexport interface CustomGridTableProps<Row extends object>\n extends Omit<\n AgGridReactProps<Row>,\n | \"columnDefs\"\n | \"rowData\"\n | \"pinnedBottomRowData\"\n | \"defaultColDef\"\n | \"onSelectionChanged\"\n | \"pagination\"\n | \"paginationPageSize\"\n | \"paginationPageSizeSelector\"\n | \"rowSelection\"\n | \"modules\"\n | \"getRowId\"\n > {\n columns?: readonly ColDef<Row>[];\n data?: readonly Row[];\n totals?: readonly Row[];\n loading?: boolean;\n enableSelection?: boolean;\n onSelect?: (rows: Row[]) => void;\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n defaultColDef?: ColDef<Row>;\n pagination?: boolean;\n paginationPageSize?: number;\n paginationPageSizeSelector?: readonly number[];\n getRowId?: (params: GetRowIdParams<Row>) => string;\n modules?: Module[];\n ariaLabel?: string;\n}\n\n/**\n * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so\n * regular shared-component consumers do not load AG Grid.\n */\nexport function CustomGridTableComponent<Row extends object>({\n columns = [],\n data = [],\n totals = [],\n loading = false,\n enableSelection = false,\n onSelect,\n height = 500,\n minHeight = 240,\n defaultColDef,\n pagination,\n paginationPageSize = 25,\n paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],\n getRowId,\n modules = DEFAULT_AG_GRID_MODULES,\n ariaLabel = \"Data grid\",\n ...gridProps\n}: CustomGridTableProps<Row>) {\n const resolvedDefaultColDef = useMemo<ColDef<Row>>(\n () => ({\n flex: 1,\n minWidth: 160,\n resizable: true,\n sortable: true,\n wrapText: true,\n autoHeight: true,\n ...defaultColDef,\n }),\n [defaultColDef],\n );\n const rowSelection = useMemo<RowSelectionOptions<Row> | undefined>(\n () =>\n enableSelection\n ? {\n mode: \"multiRow\",\n checkboxes: true,\n headerCheckbox: true,\n enableClickSelection: false,\n selectAll: \"filtered\",\n }\n : undefined,\n [enableSelection],\n );\n const enablePagination = pagination ?? data.length > 50;\n const handleSelection = useCallback(\n (event: SelectionChangedEvent<Row>) => onSelect?.(event.api.getSelectedRows()),\n [onSelect],\n );\n\n return (\n <div\n aria-label={ariaLabel}\n role=\"region\"\n style={{ width: \"100%\", height, minHeight }}\n >\n <AgGridReact<Row>\n modules={modules}\n rowData={[...data]}\n columnDefs={[...columns]}\n pinnedBottomRowData={[...totals]}\n defaultColDef={resolvedDefaultColDef}\n loading={loading}\n pagination={enablePagination}\n paginationPageSize={paginationPageSize}\n paginationPageSizeSelector={[...paginationPageSizeSelector]}\n {...(rowSelection ? { rowSelection } : {})}\n onSelectionChanged={handleSelection}\n animateRows={false}\n suppressDragLeaveHidesColumns\n {...(getRowId ? { getRowId } : {})}\n {...gridProps}\n />\n </div>\n );\n}\n\nexport const CustomGridTable = memo(\n CustomGridTableComponent,\n) as typeof CustomGridTableComponent;\n\nexport const AgGridTable = CustomGridTable;\nexport default CustomGridTable;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\": string;\n}\n\n/** An icon-only button that requires an accessible label. */\nexport function SharedIconButton({ sx, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n sx={{ width: 40, height: 40, borderRadius: 1, ...sx }}\n {...props}\n />\n );\n}\n\nexport default SharedIconButton;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Stack from \"@mui/material/Stack\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport type { IHeaderParams } from \"ag-grid-community\";\nimport type { KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { SharedIconButton } from \"../../buttons/SharedIconButton\";\n\nexport interface CustomGridHeaderCellWithInfoProps<Row = unknown>\n extends IHeaderParams<Row> {\n title?: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n}\n\n/** Accessible sortable AG Grid header with optional information and formula help. */\nexport function CustomGridHeaderCellWithInfo<Row = unknown>({\n displayName,\n title,\n info,\n infoLabel = \"Column information\",\n formula,\n formulaLabel = \"Column formula\",\n column,\n enableSorting,\n progressSort,\n}: CustomGridHeaderCellWithInfoProps<Row>) {\n const sort = column.getSort();\n const headerTitle = title ?? displayName;\n const sortLabel = sort\n ? `${String(headerTitle)}, sorted ${sort === \"asc\" ? \"ascending\" : \"descending\"}`\n : `${String(headerTitle)}, not sorted`;\n const requestSort = (event: MouseEvent | KeyboardEvent) => {\n if (enableSorting) progressSort(event.shiftKey);\n };\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} width=\"100%\">\n <button\n type=\"button\"\n disabled={!enableSorting}\n aria-label={sortLabel}\n onClick={requestSort}\n style={{\n appearance: \"none\",\n border: 0,\n background: \"transparent\",\n color: \"inherit\",\n font: \"inherit\",\n fontWeight: 600,\n cursor: enableSorting ? \"pointer\" : \"default\",\n padding: 4,\n }}\n >\n {headerTitle}\n {sort === \"asc\" ? \" ▲\" : sort === \"desc\" ? \" ▼\" : \"\"}\n </button>\n {info ? (\n <Tooltip title={info} arrow>\n <SharedIconButton aria-label={infoLabel} size=\"small\">\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n </Tooltip>\n ) : null}\n {formula ? (\n <Tooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </Tooltip>\n ) : null}\n </Stack>\n );\n}\n\nexport default CustomGridHeaderCellWithInfo;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\n\nexport function CustomGridTableWrapper({ children, sx, ...props }: BoxProps) {\n return (\n <Box width=\"100%\" p={1.5} mb={0.5} sx={sx} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default CustomGridTableWrapper;\n"]}
1
+ {"version":3,"sources":["../../src/grids/ag-grid/CustomAgGrid.tsx","../../src/buttons/SharedButton.tsx","../../src/buttons/SharedIconButton.tsx","../../src/feedback/LightTooltip.tsx","../../src/grids/ag-grid/CustomGridHeaderCellWithInfo.tsx","../../src/grids/ag-grid/CustomGridTableWrapper.tsx"],"names":["jsx","isValidElement"],"mappings":"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","file":"ag-grid.js","sourcesContent":["import type {\n ColDef,\n GetRowIdParams,\n Module,\n RowSelectionOptions,\n SelectionChangedEvent,\n} from \"ag-grid-community\";\nimport { AllCommunityModule } from \"ag-grid-community\";\nimport {\n AgGridReact,\n type AgGridReactProps,\n} from \"ag-grid-react\";\nimport { memo, useCallback, useMemo, type CSSProperties } from \"react\";\n\nconst DEFAULT_AG_GRID_MODULES: Module[] = [AllCommunityModule];\n\nexport interface CustomGridTableProps<Row extends object>\n extends Omit<\n AgGridReactProps<Row>,\n | \"columnDefs\"\n | \"rowData\"\n | \"pinnedBottomRowData\"\n | \"defaultColDef\"\n | \"onSelectionChanged\"\n | \"pagination\"\n | \"paginationPageSize\"\n | \"paginationPageSizeSelector\"\n | \"rowSelection\"\n | \"modules\"\n | \"getRowId\"\n > {\n columns?: readonly ColDef<Row>[];\n data?: readonly Row[];\n totals?: readonly Row[];\n loading?: boolean;\n enableSelection?: boolean;\n onSelect?: (rows: Row[]) => void;\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n defaultColDef?: ColDef<Row>;\n pagination?: boolean;\n paginationPageSize?: number;\n paginationPageSizeSelector?: readonly number[];\n getRowId?: (params: GetRowIdParams<Row>) => string;\n modules?: Module[];\n ariaLabel?: string;\n}\n\n/**\n * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so\n * regular shared-component consumers do not load AG Grid.\n */\nexport function CustomGridTableComponent<Row extends object>({\n columns = [],\n data = [],\n totals = [],\n loading = false,\n enableSelection = false,\n onSelect,\n height = 500,\n minHeight = 240,\n defaultColDef,\n pagination,\n paginationPageSize = 25,\n paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],\n getRowId,\n modules = DEFAULT_AG_GRID_MODULES,\n ariaLabel = \"Data grid\",\n ...gridProps\n}: CustomGridTableProps<Row>) {\n const resolvedDefaultColDef = useMemo<ColDef<Row>>(\n () => ({\n flex: 1,\n minWidth: 160,\n resizable: true,\n sortable: true,\n wrapText: true,\n autoHeight: true,\n ...defaultColDef,\n }),\n [defaultColDef],\n );\n const rowSelection = useMemo<RowSelectionOptions<Row> | undefined>(\n () =>\n enableSelection\n ? {\n mode: \"multiRow\",\n checkboxes: true,\n headerCheckbox: true,\n enableClickSelection: false,\n selectAll: \"filtered\",\n }\n : undefined,\n [enableSelection],\n );\n const enablePagination = pagination ?? data.length > 50;\n const handleSelection = useCallback(\n (event: SelectionChangedEvent<Row>) => onSelect?.(event.api.getSelectedRows()),\n [onSelect],\n );\n\n return (\n <div\n aria-label={ariaLabel}\n role=\"region\"\n style={{ width: \"100%\", height, minHeight }}\n >\n <AgGridReact<Row>\n modules={modules}\n rowData={[...data]}\n columnDefs={[...columns]}\n pinnedBottomRowData={[...totals]}\n defaultColDef={resolvedDefaultColDef}\n loading={loading}\n pagination={enablePagination}\n paginationPageSize={paginationPageSize}\n paginationPageSizeSelector={[...paginationPageSizeSelector]}\n {...(rowSelection ? { rowSelection } : {})}\n onSelectionChanged={handleSelection}\n animateRows={false}\n suppressDragLeaveHidesColumns\n {...(getRowId ? { getRowId } : {})}\n {...gridProps}\n />\n </div>\n );\n}\n\nexport const CustomGridTable = memo(\n CustomGridTableComponent,\n) as typeof CustomGridTableComponent;\n\nexport const AgGridTable = CustomGridTable;\nexport default CustomGridTable;\n","import Button, { type ButtonProps } from \"@mui/material/Button\";\nimport { Children, isValidElement, type ReactNode } from \"react\";\n\nexport type SharedButtonProps = ButtonProps;\n\nconst colorOpacity: Record<string, string> = {\n primary: \"#1976d2\",\n secondary: \"#9c27b0\",\n error: \"#d32f2f\",\n warning: \"#ed6c02\",\n info: \"#0288d1\",\n success: \"#2e7d32\",\n inherit: \"#1976d2\",\n default: \"#1976d2\",\n};\n\nfunction accessibleText(children: ReactNode): string {\n let text = \"\";\n Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n text += String(child);\n } else if (isValidElement<{ children?: ReactNode }>(child)) {\n text += accessibleText(child.props.children);\n }\n });\n return text.trim() || \"Button\";\n}\n\n/** A consistently sized MUI button with accessible defaults. */\nexport function SharedButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={{\n ...customSx,\n minWidth: \"40px\",\n height: \"40px\",\n padding: \"6px\",\n borderRadius: \"4px\",\n }}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\n/** Visual-compatible version of the legacy `StyledButton` export. */\nexport function LegacyStyledButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={customSx}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\nexport default SharedButton;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\nimport { isValidElement, type ReactNode } from \"react\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\"?: string;\n}\n\nfunction inferIconLabel(children: ReactNode): string {\n if (!isValidElement(children)) return \"Icon Button\";\n const type = children.type as { displayName?: string; name?: string };\n const name = type.displayName ?? type.name ?? \"Icon Button\";\n return name\n .replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, \"\")\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .toLowerCase();\n}\n\n/** Legacy-size icon button with an accessible-name fallback. */\nexport function SharedIconButton({ children, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n aria-label={props[\"aria-label\"] ?? inferIconLabel(children)}\n {...props}\n >\n {children}\n </IconButton>\n );\n}\n\nexport default SharedIconButton;\n","import Tooltip, { tooltipClasses, type TooltipProps } from \"@mui/material/Tooltip\";\nimport { styled } from \"@mui/material/styles\";\nimport { isValidElement } from \"react\";\n\n/** Visual-compatible version of the legacy shared-base light tooltip. */\nexport const LightTooltip = styled(({ className, children, ...props }: TooltipProps) => {\n const disabled = isValidElement<{ disabled?: boolean }>(children) && Boolean(children.props.disabled);\n\n if (disabled) return <span>{children}</span>;\n\n return (\n <Tooltip {...props} classes={className ? { popper: className } : undefined}>\n {children}\n </Tooltip>\n );\n})(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 14,\n },\n}));\n\nexport const SharedTooltip = LightTooltip;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Stack from \"@mui/material/Stack\";\nimport type { IHeaderParams } from \"ag-grid-community\";\nimport type { KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { SharedButton } from \"../../buttons/SharedButton\";\nimport { SharedIconButton } from \"../../buttons/SharedIconButton\";\nimport { LightTooltip } from \"../../feedback/LightTooltip\";\n\nexport interface CustomGridHeaderCellWithInfoProps<Row = unknown>\n extends IHeaderParams<Row> {\n title?: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n}\n\n/** Accessible sortable AG Grid header with optional information and formula help. */\nexport function CustomGridHeaderCellWithInfo<Row = unknown>({\n displayName,\n title,\n info,\n infoLabel = \"Column information\",\n formula,\n formulaLabel = \"Column formula\",\n column,\n enableSorting,\n progressSort,\n}: CustomGridHeaderCellWithInfoProps<Row>) {\n const sort = column.getSort();\n const headerTitle = title ?? displayName;\n const sortLabel = sort\n ? `${String(headerTitle)}, sorted ${sort === \"asc\" ? \"ascending\" : \"descending\"}`\n : `${String(headerTitle)}, not sorted`;\n const requestSort = (event: MouseEvent | KeyboardEvent) => {\n if (enableSorting) progressSort(event.shiftKey);\n };\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} width=\"100%\">\n <SharedButton\n variant=\"text\"\n disabled={!enableSorting}\n aria-label={sortLabel}\n onClick={requestSort}\n sx={{\n minWidth: 40,\n px: 0.5,\n color: \"inherit\",\n fontWeight: 600,\n justifyContent: \"flex-start\",\n whiteSpace: \"nowrap\",\n }}\n >\n {headerTitle}\n {sort === \"asc\" ? \" ▲\" : sort === \"desc\" ? \" ▼\" : \"\"}\n </SharedButton>\n {info ? (\n <LightTooltip title={info} arrow>\n <SharedIconButton aria-label={infoLabel} size=\"small\">\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n {formula ? (\n <LightTooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n </Stack>\n );\n}\n\nexport default CustomGridHeaderCellWithInfo;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\n\nexport function CustomGridTableWrapper({ children, sx, ...props }: BoxProps) {\n return (\n <Box width=\"100%\" p={1.5} mb={0.5} sx={sx} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default CustomGridTableWrapper;\n"]}
@@ -1 +1,151 @@
1
1
  export { Check, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, CircleAlert, CircleHelp, Copy, Download, Edit, Eye, EyeOff, Filter, Info, LoaderCircle, Menu, MoreVertical, Plus, RefreshCw, Save, Search, Trash2, Upload, X } from 'lucide-react';
2
+ import '@mui/icons-material/AccessibilityNew';
3
+ import '@mui/icons-material/AccountTree';
4
+ import '@mui/icons-material/AccountTreeOutlined';
5
+ import '@mui/icons-material/Add';
6
+ import '@mui/icons-material/AddCircleOutline';
7
+ import '@mui/icons-material/AdminPanelSettings';
8
+ import '@mui/icons-material/Archive';
9
+ import '@mui/icons-material/ArrowBack';
10
+ import '@mui/icons-material/ArrowForwardIosSharp';
11
+ import '@mui/icons-material/ArticleOutlined';
12
+ import '@mui/icons-material/AssessmentOutlined';
13
+ import '@mui/icons-material/AssignmentOutlined';
14
+ import '@mui/icons-material/AssignmentTurnedIn';
15
+ import '@mui/icons-material/AttachMoney';
16
+ import '@mui/icons-material/Attachment';
17
+ import '@mui/icons-material/AutoModeOutlined';
18
+ import '@mui/icons-material/BackupTable';
19
+ import '@mui/icons-material/BookmarkAdded';
20
+ import '@mui/icons-material/BrightnessAuto';
21
+ import '@mui/icons-material/Business';
22
+ import '@mui/icons-material/BusinessCenterOutlined';
23
+ import '@mui/icons-material/CableOutlined';
24
+ import '@mui/icons-material/Cached';
25
+ import '@mui/icons-material/Cancel';
26
+ import '@mui/icons-material/Check';
27
+ import '@mui/icons-material/CheckCircle';
28
+ import '@mui/icons-material/CheckCircleOutline';
29
+ import '@mui/icons-material/Close';
30
+ import '@mui/icons-material/Comment';
31
+ import '@mui/icons-material/Compare';
32
+ import '@mui/icons-material/CompareArrows';
33
+ import '@mui/icons-material/ContactEmergency';
34
+ import '@mui/icons-material/ContentCopy';
35
+ import '@mui/icons-material/ContentCopyOutlined';
36
+ import '@mui/icons-material/CorporateFare';
37
+ import '@mui/icons-material/CurrencyExchange';
38
+ import '@mui/icons-material/DeleteForever';
39
+ import '@mui/icons-material/DeleteForeverOutlined';
40
+ import '@mui/icons-material/DeleteOutline';
41
+ import '@mui/icons-material/DeleteOutlined';
42
+ import '@mui/icons-material/DescriptionOutlined';
43
+ import '@mui/icons-material/Difference';
44
+ import '@mui/icons-material/DoneAllOutlined';
45
+ import '@mui/icons-material/DoneOutline';
46
+ import '@mui/icons-material/Download';
47
+ import '@mui/icons-material/EditOutlined';
48
+ import '@mui/icons-material/Email';
49
+ import '@mui/icons-material/Equalizer';
50
+ import '@mui/icons-material/ErrorOutlineOutlined';
51
+ import '@mui/icons-material/EventSeat';
52
+ import '@mui/icons-material/FileCopy';
53
+ import '@mui/icons-material/FileCopyOutlined';
54
+ import '@mui/icons-material/FileUpload';
55
+ import '@mui/icons-material/FileUploadOutlined';
56
+ import '@mui/icons-material/FilterAlt';
57
+ import '@mui/icons-material/FilterList';
58
+ import '@mui/icons-material/FilterListOff';
59
+ import '@mui/icons-material/Flag';
60
+ import '@mui/icons-material/FlagOutlined';
61
+ import '@mui/icons-material/FolderOpen';
62
+ import '@mui/icons-material/Functions';
63
+ import '@mui/icons-material/GetApp';
64
+ import '@mui/icons-material/Group';
65
+ import '@mui/icons-material/GroupAdd';
66
+ import '@mui/icons-material/GroupAddOutlined';
67
+ import '@mui/icons-material/GroupWorkOutlined';
68
+ import '@mui/icons-material/Handshake';
69
+ import '@mui/icons-material/HelpOutline';
70
+ import '@mui/icons-material/History';
71
+ import '@mui/icons-material/HistoryOutlined';
72
+ import '@mui/icons-material/HorizontalSplitOutlined';
73
+ import '@mui/icons-material/HourglassEmpty';
74
+ import '@mui/icons-material/HowToVote';
75
+ import '@mui/icons-material/HttpOutlined';
76
+ import '@mui/icons-material/ImportContacts';
77
+ import '@mui/icons-material/ImportExport';
78
+ import '@mui/icons-material/InfoOutlined';
79
+ import '@mui/icons-material/InsertChartOutlined';
80
+ import '@mui/icons-material/IosShareOutlined';
81
+ import '@mui/icons-material/Link';
82
+ import '@mui/icons-material/List';
83
+ import '@mui/icons-material/MailOutline';
84
+ import '@mui/icons-material/ManageAccounts';
85
+ import '@mui/icons-material/Menu';
86
+ import '@mui/icons-material/MenuBook';
87
+ import '@mui/icons-material/MonetizationOn';
88
+ import '@mui/icons-material/MoreVert';
89
+ import '@mui/icons-material/NextWeek';
90
+ import '@mui/icons-material/Nfc';
91
+ import '@mui/icons-material/OpenInNew';
92
+ import '@mui/icons-material/PanToolOutlined';
93
+ import '@mui/icons-material/PauseCircleOutline';
94
+ import '@mui/icons-material/PeopleAltOutlined';
95
+ import '@mui/icons-material/Person';
96
+ import '@mui/icons-material/PersonOutlineOutlined';
97
+ import '@mui/icons-material/PlayCircle';
98
+ import '@mui/icons-material/PlayCircleOutlined';
99
+ import '@mui/icons-material/PlaylistAddCheck';
100
+ import '@mui/icons-material/PostAddOutlined';
101
+ import '@mui/icons-material/PreviewRounded';
102
+ import '@mui/icons-material/PriceChangeOutlined';
103
+ import '@mui/icons-material/Print';
104
+ import '@mui/icons-material/Publish';
105
+ import '@mui/icons-material/PublishedWithChanges';
106
+ import '@mui/icons-material/RecentActorsOutlined';
107
+ import '@mui/icons-material/RecommendOutlined';
108
+ import '@mui/icons-material/Refresh';
109
+ import '@mui/icons-material/ReorderOutlined';
110
+ import '@mui/icons-material/Repeat';
111
+ import '@mui/icons-material/RequestQuoteOutlined';
112
+ import '@mui/icons-material/RestartAlt';
113
+ import '@mui/icons-material/Rule';
114
+ import '@mui/icons-material/RuleOutlined';
115
+ import '@mui/icons-material/SafetyDivider';
116
+ import '@mui/icons-material/Search';
117
+ import '@mui/icons-material/Security';
118
+ import '@mui/icons-material/Send';
119
+ import '@mui/icons-material/Settings';
120
+ import '@mui/icons-material/SettingsEthernet';
121
+ import '@mui/icons-material/Share';
122
+ import '@mui/icons-material/SimCardDownload';
123
+ import '@mui/icons-material/SlowMotionVideoOutlined';
124
+ import '@mui/icons-material/Sort';
125
+ import '@mui/icons-material/SpaceDashboardOutlined';
126
+ import '@mui/icons-material/Speed';
127
+ import '@mui/icons-material/Star';
128
+ import '@mui/icons-material/StarBorder';
129
+ import '@mui/icons-material/Stop';
130
+ import '@mui/icons-material/SupervisedUserCircleOutlined';
131
+ import '@mui/icons-material/SupervisorAccountOutlined';
132
+ import '@mui/icons-material/SwapCalls';
133
+ import '@mui/icons-material/Sync';
134
+ import '@mui/icons-material/SyncAlt';
135
+ import '@mui/icons-material/TableChartOutlined';
136
+ import '@mui/icons-material/Tag';
137
+ import '@mui/icons-material/TaskAlt';
138
+ import '@mui/icons-material/ThumbDownOutlined';
139
+ import '@mui/icons-material/ThumbUpOutlined';
140
+ import '@mui/icons-material/TimerOutlined';
141
+ import '@mui/icons-material/Toc';
142
+ import '@mui/icons-material/TornadoOutlined';
143
+ import '@mui/icons-material/TrackChanges';
144
+ import '@mui/icons-material/UploadFileOutlined';
145
+ import '@mui/icons-material/VerifiedUser';
146
+ import '@mui/icons-material/VerifiedUserOutlined';
147
+ import '@mui/icons-material/VerticalSplit';
148
+ import '@mui/icons-material/ViewComfy';
149
+ import '@mui/icons-material/ViewHeadline';
150
+ import '@mui/icons-material/Visibility';
151
+ import '@mui/icons-material/WarningOutlined';