@bwp-web/components 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -401,13 +401,15 @@ var require_randomColor = __commonJS({
401
401
  var index_exports = {};
402
402
  __export(index_exports, {
403
403
  BIAMP_TABLE_DEBOUNCE_DELAY: () => BIAMP_TABLE_DEBOUNCE_DELAY,
404
- BiampAppDialog: () => BiampAppDialog,
405
- BiampAppDialogItem: () => BiampAppDialogItem,
406
404
  BiampAppPopover: () => BiampAppPopover,
407
405
  BiampBanner: () => BiampBanner,
408
406
  BiampBannerActions: () => BiampBannerActions,
409
407
  BiampBannerContent: () => BiampBannerContent,
410
408
  BiampBannerIcon: () => BiampBannerIcon,
409
+ BiampBuildAppContent: () => BiampBuildAppContent,
410
+ BiampBuildAppContentItem: () => BiampBuildAppContentItem,
411
+ BiampEndUserAppContent: () => BiampEndUserAppContent,
412
+ BiampEndUserAppContentItem: () => BiampEndUserAppContentItem,
411
413
  BiampGlobalSearch: () => BiampGlobalSearch,
412
414
  BiampHeader: () => BiampHeader,
413
415
  BiampHeaderActions: () => BiampHeaderActions,
@@ -716,6 +718,7 @@ function BiampHeaderButton({
716
718
  }
717
719
  );
718
720
  }
721
+ var POPOVER_MAX_WIDTH = 530;
719
722
  function BiampAppPopover({
720
723
  children,
721
724
  open,
@@ -726,9 +729,9 @@ function BiampAppPopover({
726
729
  import_material3.Popover,
727
730
  {
728
731
  open,
729
- anchorOrigin: { vertical: "bottom", horizontal: "left" },
732
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
733
+ transformOrigin: { vertical: -8, horizontal: POPOVER_MAX_WIDTH - 4 },
730
734
  sx: { ...sx },
731
- transformOrigin: { vertical: -4, horizontal: 150 },
732
735
  slotProps: {
733
736
  paper: {
734
737
  sx: {
@@ -737,7 +740,13 @@ function BiampAppPopover({
737
740
  outlineWidth: "0.6px",
738
741
  outlineStyle: "solid",
739
742
  outlineColor: ({ palette }) => palette.divider,
740
- boxShadow: ({ palette }) => `0px 4px 24px 0px ${(0, import_material3.alpha)(palette.common.black, 0.15)};`
743
+ boxShadow: ({ palette }) => `0px 4px 24px 0px ${(0, import_material3.alpha)(palette.common.black, 0.15)};`,
744
+ maxWidth: POPOVER_MAX_WIDTH,
745
+ width: "100%",
746
+ p: 2,
747
+ display: "flex",
748
+ flexDirection: "column",
749
+ gap: 2
741
750
  }
742
751
  }
743
752
  },
@@ -746,7 +755,7 @@ function BiampAppPopover({
746
755
  }
747
756
  );
748
757
  }
749
- function BiampAppDialog({
758
+ function BiampBuildAppContent({
750
759
  children,
751
760
  sx,
752
761
  ...props
@@ -755,13 +764,9 @@ function BiampAppDialog({
755
764
  import_material3.Box,
756
765
  {
757
766
  sx: {
758
- p: 2,
759
- display: "inline-flex",
760
- flexWrap: "wrap",
767
+ display: "grid",
768
+ gridTemplateColumns: "1fr 1fr",
761
769
  gap: 1.5,
762
- maxWidth: "284px",
763
- borderRadius: "16px",
764
- backgroundColor: ({ palette }) => palette.mode === "dark" ? palette.grey[800] : palette.common.white,
765
770
  ...sx
766
771
  },
767
772
  ...props,
@@ -769,64 +774,92 @@ function BiampAppDialog({
769
774
  }
770
775
  );
771
776
  }
772
- function BiampAppDialogItem({
777
+ function BiampBuildAppContentItem({
778
+ image,
779
+ name,
780
+ description,
781
+ button,
782
+ sx,
783
+ ...props
784
+ }) {
785
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
786
+ import_material3.Stack,
787
+ {
788
+ direction: "column",
789
+ position: "relative",
790
+ sx: {
791
+ p: 1.5,
792
+ borderRadius: 1.5,
793
+ outlineWidth: "1px",
794
+ outlineStyle: "solid",
795
+ outlineColor: ({ palette }) => palette.divider,
796
+ ...sx
797
+ },
798
+ ...props,
799
+ children: [
800
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Box, { sx: { width: 54, height: 54 }, mb: 0.5, children: image }),
801
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Typography, { variant: "caption", fontWeight: 600, mb: 0.5, children: name }),
802
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Typography, { variant: "caption", color: "text.secondary", children: description }),
803
+ button && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Box, { position: "absolute", top: "12px", right: "12px", children: button })
804
+ ]
805
+ }
806
+ );
807
+ }
808
+ function BiampEndUserAppContent({
773
809
  children,
810
+ sx,
811
+ ...props
812
+ }) {
813
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
814
+ import_material3.Stack,
815
+ {
816
+ direction: "column",
817
+ sx: {
818
+ gap: 1.5,
819
+ ...sx
820
+ },
821
+ ...props,
822
+ children
823
+ }
824
+ );
825
+ }
826
+ function BiampEndUserAppContentItem({
827
+ image,
774
828
  name,
829
+ description,
830
+ href,
831
+ target,
775
832
  sx,
776
833
  ...props
777
834
  }) {
778
835
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
779
- import_material3.Box,
836
+ import_material3.Stack,
780
837
  {
838
+ component: href ? "a" : "div",
839
+ href,
840
+ target,
841
+ direction: "row",
842
+ alignItems: "center",
781
843
  sx: {
782
- width: "76px",
783
- height: "89px",
784
- display: "flex",
785
- flexDirection: "column",
786
- alignItems: "center",
787
- cursor: "pointer",
788
- justifyContent: "center",
789
- gap: "4px",
790
- borderRadius: "12px",
791
- border: "0.6px solid transparent",
792
- transition: "background-color 0.2s ease, border-color 0.2s ease",
793
- ":hover": {
794
- backgroundColor: ({ palette }) => (0, import_material3.alpha)(palette.info.main, 0.1),
795
- borderColor: ({ palette }) => palette.info.main
796
- },
844
+ gap: 1.5,
845
+ p: 1.5,
846
+ borderRadius: 1.5,
847
+ outlineWidth: "1px",
848
+ outlineStyle: "solid",
849
+ outlineColor: ({ palette }) => palette.divider,
850
+ textDecoration: "none",
851
+ color: "inherit",
852
+ cursor: href ? "pointer" : void 0,
797
853
  ...sx
798
854
  },
799
855
  ...props,
800
856
  children: [
801
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
802
- import_material3.Box,
803
- {
804
- sx: {
805
- mt: "8px",
806
- width: "54px",
807
- height: "54px",
808
- display: "flex",
809
- alignItems: "center",
810
- justifyContent: "center"
811
- },
812
- children
813
- }
814
- ),
815
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
816
- import_material3.Typography,
817
- {
818
- variant: "caption",
819
- fontWeight: 600,
820
- sx: {
821
- textAlign: "center",
822
- overflow: "hidden",
823
- textOverflow: "ellipsis",
824
- whiteSpace: "nowrap",
825
- maxWidth: "100%"
826
- },
827
- children: name
828
- }
829
- )
857
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Box, { sx: { width: 32, height: 32 }, children: image }),
858
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.Stack, { direction: "column", children: [
859
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Typography, { variant: "caption", fontWeight: 600, children: name }),
860
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Typography, { variant: "caption", color: "text.secondary", children: description })
861
+ ] }),
862
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_assets2.ExternalLinkIcon, { sx: { width: 16, height: 16, ml: "auto" } })
830
863
  ]
831
864
  }
832
865
  );
@@ -1053,6 +1086,15 @@ function useLoadingDelay(loading, { delay = 150, minDuration = 500 } = {}) {
1053
1086
  return status === "loading" || status === "ending";
1054
1087
  }
1055
1088
 
1089
+ // src/BiampTable/slotProps.ts
1090
+ function resolveSlot(slot, ctx) {
1091
+ if (!slot) return void 0;
1092
+ return typeof slot === "function" ? slot(ctx) : slot;
1093
+ }
1094
+ function mergeSx(...inputs) {
1095
+ return inputs.filter((v) => Boolean(v)).flatMap((v) => Array.isArray(v) ? v : [v]);
1096
+ }
1097
+
1056
1098
  // src/BiampTable/BiampTable.tsx
1057
1099
  var import_jsx_runtime9 = require("react/jsx-runtime");
1058
1100
  var overlaySx = {
@@ -1123,24 +1165,38 @@ function BiampTableRowInner({
1123
1165
  enableExpanding,
1124
1166
  selectChildrenWithParent,
1125
1167
  getRowLabel,
1126
- hasExpandableRows
1168
+ hasExpandableRows,
1169
+ rowSlotProps,
1170
+ cellSlotProps
1127
1171
  }) {
1128
1172
  const clickable = onRowClick ? isRowClickable ? isRowClickable(row.original) : true : false;
1173
+ const resolvedRow = resolveSlot(rowSlotProps, { row });
1174
+ const {
1175
+ sx: userRowSx,
1176
+ onClick: userRowOnClick,
1177
+ onKeyDown: userRowOnKeyDown,
1178
+ ...restRowProps
1179
+ } = resolvedRow ?? {};
1129
1180
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1130
1181
  import_material7.TableRow,
1131
1182
  {
1183
+ ...restRowProps,
1132
1184
  hover: clickable,
1133
1185
  selected: enableRowSelection ? isSelected : void 0,
1134
1186
  role: clickable ? "button" : void 0,
1135
1187
  tabIndex: clickable ? 0 : void 0,
1136
- sx: clickable ? rowCursorPointerSx : void 0,
1137
- onClick: clickable && onRowClick ? () => onRowClick(row.original) : void 0,
1188
+ sx: mergeSx(clickable && rowCursorPointerSx, userRowSx),
1189
+ onClick: clickable && onRowClick ? (e) => {
1190
+ onRowClick(row.original);
1191
+ userRowOnClick?.(e);
1192
+ } : userRowOnClick,
1138
1193
  onKeyDown: clickable && onRowClick ? (e) => {
1139
1194
  if (e.key === "Enter" || e.key === " ") {
1140
1195
  e.preventDefault();
1141
1196
  onRowClick(row.original);
1142
1197
  }
1143
- } : void 0,
1198
+ userRowOnKeyDown?.(e);
1199
+ } : userRowOnKeyDown,
1144
1200
  children: [
1145
1201
  enableRowSelection && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableCell, { padding: "checkbox", sx: selectionCellSx, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1146
1202
  import_material7.Checkbox,
@@ -1166,14 +1222,18 @@ function BiampTableRowInner({
1166
1222
  cell.column.columnDef.cell,
1167
1223
  cell.getContext()
1168
1224
  );
1225
+ const resolvedCell = resolveSlot(cellSlotProps, { cell });
1226
+ const { sx: userCellSx, ...restCellProps } = resolvedCell ?? {};
1169
1227
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1170
1228
  import_material7.TableCell,
1171
1229
  {
1230
+ ...restCellProps,
1172
1231
  "data-sticky": sticky || void 0,
1173
- sx: {
1174
- ...cellSx(sticky, cell.column.columnDef.meta?.minWidth, 2),
1175
- pl: isExpandCell ? "6px" : "12px"
1176
- },
1232
+ sx: mergeSx(
1233
+ cellSx(sticky, cell.column.columnDef.meta?.minWidth, 2),
1234
+ { pl: isExpandCell ? "6px" : "12px" },
1235
+ userCellSx
1236
+ ),
1177
1237
  children: (() => {
1178
1238
  if (sticky) return content;
1179
1239
  const truncate = cell.column.columnDef.meta?.truncate ?? true;
@@ -1229,7 +1289,7 @@ function BiampTableRowInner({
1229
1289
  );
1230
1290
  }
1231
1291
  function biampTableRowPropsAreEqual(prev, next) {
1232
- return prev.row.id === next.row.id && prev.row.original === next.row.original && prev.isSelected === next.isSelected && prev.isExpanded === next.isExpanded && prev.row.getVisibleCells().length === next.row.getVisibleCells().length && prev.enableRowSelection === next.enableRowSelection && prev.enableExpanding === next.enableExpanding && prev.hasExpandableRows === next.hasExpandableRows && prev.selectChildrenWithParent === next.selectChildrenWithParent && prev.onRowClick === next.onRowClick && prev.isRowClickable === next.isRowClickable && prev.getRowLabel === next.getRowLabel;
1292
+ return prev.row.id === next.row.id && prev.row.original === next.row.original && prev.isSelected === next.isSelected && prev.isExpanded === next.isExpanded && prev.row.getVisibleCells().length === next.row.getVisibleCells().length && prev.enableRowSelection === next.enableRowSelection && prev.enableExpanding === next.enableExpanding && prev.hasExpandableRows === next.hasExpandableRows && prev.selectChildrenWithParent === next.selectChildrenWithParent && prev.onRowClick === next.onRowClick && prev.isRowClickable === next.isRowClickable && prev.getRowLabel === next.getRowLabel && prev.rowSlotProps === next.rowSlotProps && prev.cellSlotProps === next.cellSlotProps;
1233
1293
  }
1234
1294
  var BiampTableRow = import_react4.default.memo(
1235
1295
  BiampTableRowInner,
@@ -1247,9 +1307,14 @@ function BiampTable({
1247
1307
  hideSelectAll,
1248
1308
  selectChildrenWithParent = false,
1249
1309
  getRowLabel,
1310
+ slotProps,
1250
1311
  sx,
1251
1312
  ...boxProps
1252
1313
  }) {
1314
+ const { sx: userTableSx, ...restTableSlotProps } = slotProps?.table ?? {};
1315
+ const { sx: userHeadSx, ...restHeadSlotProps } = slotProps?.head ?? {};
1316
+ const { sx: userBodySx, ...restBodySlotProps } = slotProps?.body ?? {};
1317
+ const { sx: userHeaderRowSx, ...restHeaderRowSlotProps } = slotProps?.headerRow ?? {};
1253
1318
  const tableMinWidth = table.getVisibleLeafColumns().reduce(
1254
1319
  (sum, col) => {
1255
1320
  const mw = col.columnDef.meta?.minWidth;
@@ -1281,73 +1346,98 @@ function BiampTable({
1281
1346
  import_material7.Table,
1282
1347
  {
1283
1348
  "aria-busy": showLoading || void 0,
1284
- sx: { minWidth: tableMinWidth, tableLayout: "auto" },
1349
+ ...restTableSlotProps,
1350
+ sx: mergeSx(
1351
+ { minWidth: tableMinWidth, tableLayout: "auto" },
1352
+ userTableSx
1353
+ ),
1285
1354
  children: [
1286
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableHead, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_material7.TableRow, { children: [
1287
- enableRowSelection && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableCell, { padding: "checkbox", sx: headerSelectionCellSx, children: !hideSelectAll && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1288
- import_material7.Checkbox,
1289
- {
1290
- checked: table.getIsAllPageRowsSelected(),
1291
- indeterminate: table.getIsSomePageRowsSelected(),
1292
- onChange: table.getToggleAllPageRowsSelectedHandler(),
1293
- sx: rows.length === 0 ? checkboxHiddenHeaderSx : void 0,
1294
- slotProps: { input: { "aria-label": "Select all rows" } }
1295
- }
1296
- ) }),
1297
- headerGroup.headers.map((header) => {
1298
- const sticky = header.column.columnDef.meta?.sticky;
1299
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1300
- import_material7.TableCell,
1301
- {
1302
- "data-sticky": sticky || void 0,
1303
- sortDirection: header.column.getIsSorted() || false,
1304
- ...header.column.getCanSort() && {
1305
- "aria-sort": header.column.getIsSorted() ? header.column.getIsSorted() === "asc" ? "ascending" : "descending" : "none"
1306
- },
1307
- sx: cellSx(
1308
- sticky,
1309
- header.column.columnDef.meta?.minWidth,
1310
- 3
1311
- ),
1312
- children: header.isPlaceholder ? null : header.column.getCanSort() ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1313
- import_material7.TableSortLabel,
1355
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableHead, { ...restHeadSlotProps, sx: mergeSx(userHeadSx), children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1356
+ import_material7.TableRow,
1357
+ {
1358
+ ...restHeaderRowSlotProps,
1359
+ sx: mergeSx(userHeaderRowSx),
1360
+ children: [
1361
+ enableRowSelection && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableCell, { padding: "checkbox", sx: headerSelectionCellSx, children: !hideSelectAll && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1362
+ import_material7.Checkbox,
1363
+ {
1364
+ checked: table.getIsAllPageRowsSelected(),
1365
+ indeterminate: table.getIsSomePageRowsSelected(),
1366
+ onChange: table.getToggleAllPageRowsSelectedHandler(),
1367
+ sx: rows.length === 0 ? checkboxHiddenHeaderSx : void 0,
1368
+ slotProps: { input: { "aria-label": "Select all rows" } }
1369
+ }
1370
+ ) }),
1371
+ headerGroup.headers.map((header) => {
1372
+ const sticky = header.column.columnDef.meta?.sticky;
1373
+ const resolvedHeaderCell = resolveSlot(slotProps?.headerCell, {
1374
+ header
1375
+ });
1376
+ const { sx: userHeaderCellSx, ...restHeaderCellProps } = resolvedHeaderCell ?? {};
1377
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1378
+ import_material7.TableCell,
1314
1379
  {
1315
- active: !!header.column.getIsSorted(),
1316
- direction: header.column.getIsSorted() || "asc",
1317
- onClick: header.column.getToggleSortingHandler(),
1318
- ...header.column.getIsSorted() && {
1319
- IconComponent: header.column.getIsSorted() === "asc" ? import_assets5.DropdownChevronUpIcon : import_assets5.DropdownChevronDownIcon
1380
+ ...restHeaderCellProps,
1381
+ "data-sticky": sticky || void 0,
1382
+ sortDirection: header.column.getIsSorted() || false,
1383
+ ...header.column.getCanSort() && {
1384
+ "aria-sort": header.column.getIsSorted() ? header.column.getIsSorted() === "asc" ? "ascending" : "descending" : "none"
1320
1385
  },
1321
- children: (0, import_react_table.flexRender)(
1386
+ sx: mergeSx(
1387
+ cellSx(sticky, header.column.columnDef.meta?.minWidth, 3),
1388
+ userHeaderCellSx
1389
+ ),
1390
+ children: header.isPlaceholder ? null : header.column.getCanSort() ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1391
+ import_material7.TableSortLabel,
1392
+ {
1393
+ active: !!header.column.getIsSorted(),
1394
+ direction: header.column.getIsSorted() || "asc",
1395
+ onClick: header.column.getToggleSortingHandler(),
1396
+ ...header.column.getIsSorted() && {
1397
+ IconComponent: header.column.getIsSorted() === "asc" ? import_assets5.DropdownChevronUpIcon : import_assets5.DropdownChevronDownIcon
1398
+ },
1399
+ children: (0, import_react_table.flexRender)(
1400
+ header.column.columnDef.header,
1401
+ header.getContext()
1402
+ )
1403
+ }
1404
+ ) : (0, import_react_table.flexRender)(
1322
1405
  header.column.columnDef.header,
1323
1406
  header.getContext()
1324
1407
  )
1325
- }
1326
- ) : (0, import_react_table.flexRender)(
1327
- header.column.columnDef.header,
1328
- header.getContext()
1329
- )
1330
- },
1331
- header.id
1332
- );
1333
- })
1334
- ] }, headerGroup.id)) }),
1335
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material7.TableBody, { sx: { opacity: showLoading ? 0.3 : 1 }, children: !showError && rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1336
- BiampTableRow,
1337
- {
1338
- row,
1339
- isExpanded: row.getIsExpanded(),
1340
- isSelected: row.getIsSelected(),
1341
- onRowClick,
1342
- isRowClickable,
1343
- enableRowSelection,
1344
- enableExpanding,
1345
- selectChildrenWithParent,
1346
- getRowLabel,
1347
- hasExpandableRows
1408
+ },
1409
+ header.id
1410
+ );
1411
+ })
1412
+ ]
1348
1413
  },
1349
- row.id
1350
- )) })
1414
+ headerGroup.id
1415
+ )) }),
1416
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1417
+ import_material7.TableBody,
1418
+ {
1419
+ ...restBodySlotProps,
1420
+ sx: mergeSx({ opacity: showLoading ? 0.3 : 1 }, userBodySx),
1421
+ children: !showError && rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1422
+ BiampTableRow,
1423
+ {
1424
+ row,
1425
+ isExpanded: row.getIsExpanded(),
1426
+ isSelected: row.getIsSelected(),
1427
+ onRowClick,
1428
+ isRowClickable,
1429
+ enableRowSelection,
1430
+ enableExpanding,
1431
+ selectChildrenWithParent,
1432
+ getRowLabel,
1433
+ hasExpandableRows,
1434
+ rowSlotProps: slotProps?.row,
1435
+ cellSlotProps: slotProps?.cell
1436
+ },
1437
+ row.id
1438
+ ))
1439
+ }
1440
+ )
1351
1441
  ]
1352
1442
  }
1353
1443
  ),
@@ -2915,13 +3005,15 @@ function DynamicSvgIcon({
2915
3005
  // Annotate the CommonJS export names for ESM import in node:
2916
3006
  0 && (module.exports = {
2917
3007
  BIAMP_TABLE_DEBOUNCE_DELAY,
2918
- BiampAppDialog,
2919
- BiampAppDialogItem,
2920
3008
  BiampAppPopover,
2921
3009
  BiampBanner,
2922
3010
  BiampBannerActions,
2923
3011
  BiampBannerContent,
2924
3012
  BiampBannerIcon,
3013
+ BiampBuildAppContent,
3014
+ BiampBuildAppContentItem,
3015
+ BiampEndUserAppContent,
3016
+ BiampEndUserAppContentItem,
2925
3017
  BiampGlobalSearch,
2926
3018
  BiampHeader,
2927
3019
  BiampHeaderActions,