@inceptionbg/iui 2.0.15 → 2.0.16

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 (34) hide show
  1. package/dist/NoAccessPage-BmizYfw0.js +2 -0
  2. package/dist/{NoAccessPage-DBq5IzIf.js.map → NoAccessPage-BmizYfw0.js.map} +1 -1
  3. package/dist/NotFoundPage-Cv544vAr.js +2 -0
  4. package/dist/{NotFoundPage-DM-I96ar.js.map → NotFoundPage-Cv544vAr.js.map} +1 -1
  5. package/dist/index.d.ts +6 -3
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/iui.css +1 -1
  9. package/package.json +2 -3
  10. package/src/components/Dialog/Dialog.tsx +3 -3
  11. package/src/components/Header/Components/UserMenu.tsx +15 -14
  12. package/src/components/Inputs/TextInput.tsx +1 -0
  13. package/src/components/List/ListItem.tsx +1 -1
  14. package/src/components/Menu/Menu.tsx +3 -0
  15. package/src/components/Pullover/Pullover.tsx +26 -32
  16. package/src/components/Table/Table.tsx +18 -29
  17. package/src/components/Table/components/columns/ColumnsList.tsx +59 -0
  18. package/src/components/Table/components/columns/TableColumnsEdit.tsx +116 -0
  19. package/src/components/Table/components/edit/TableEditRow.tsx +13 -19
  20. package/src/components/Table/components/header/TableHeaderRow.tsx +1 -1
  21. package/src/components/Table/contexts/TableContext.tsx +1 -9
  22. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +21 -24
  23. package/src/components/Table/hooks/useTableColumns.ts +16 -8
  24. package/src/components/Tabs/Tabs.tsx +1 -0
  25. package/src/index.ts +1 -1
  26. package/src/styles/components/_badge.scss +1 -1
  27. package/src/styles/components/_header.scss +4 -7
  28. package/src/styles/components/_list.scss +1 -1
  29. package/src/styles/components/_table.scss +49 -38
  30. package/src/styles/variables/_variables.scss +9 -0
  31. package/src/types/IHeader.ts +1 -1
  32. package/src/types/ITable.ts +1 -0
  33. package/dist/NoAccessPage-DBq5IzIf.js +0 -2
  34. package/dist/NotFoundPage-DM-I96ar.js +0 -2
@@ -0,0 +1,59 @@
1
+ import { useEffect, useState, type FC } from 'react';
2
+ import { Draggable, Droppable } from '@hello-pangea/dnd';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { ITableColumn } from '../../../../types/ITable';
5
+ import { faGripDotsVertical } from '../../../../assets/icons/solid/faGripDotsVertical';
6
+
7
+ interface Props {
8
+ id: 'hidden' | 'visible';
9
+ items: ITableColumn[];
10
+ search: string;
11
+ }
12
+
13
+ export const ColumnsList: FC<Props> = ({ id, items, search }) => {
14
+ const [filteredItems, setFilteredItems] = useState<ITableColumn[]>([]);
15
+
16
+ useEffect(() => {
17
+ if (search.length) {
18
+ setFilteredItems(
19
+ items.filter(e =>
20
+ (typeof e.label === 'string' ? e.label : (e.labelForFilter ?? ''))
21
+ .toLocaleLowerCase()
22
+ .includes(search.toLocaleLowerCase())
23
+ )
24
+ );
25
+ }
26
+ }, [search, items]);
27
+
28
+ const list = search.length ? filteredItems : items;
29
+
30
+ return (
31
+ <Droppable droppableId={id}>
32
+ {({ droppableProps, innerRef, placeholder }) => (
33
+ <div {...droppableProps} ref={innerRef} className="list-box">
34
+ {list.map(c => (
35
+ <Draggable key={c.id} draggableId={c.id} index={items.indexOf(c)}>
36
+ {({ innerRef, draggableProps, dragHandleProps }, snapshot) => (
37
+ <div
38
+ className={`item ${snapshot.isDragging ? 'dragging' : ''}`}
39
+ ref={innerRef}
40
+ {...draggableProps}
41
+ {...dragHandleProps}
42
+ style={{
43
+ ...draggableProps.style,
44
+ top: 'unset',
45
+ left: 'unset',
46
+ }}
47
+ >
48
+ {c.label}
49
+ <FontAwesomeIcon icon={faGripDotsVertical} />
50
+ </div>
51
+ )}
52
+ </Draggable>
53
+ ))}
54
+ {placeholder}
55
+ </div>
56
+ )}
57
+ </Droppable>
58
+ );
59
+ };
@@ -0,0 +1,116 @@
1
+ import { FC, useEffect, useState } from 'react';
2
+ import { DragDropContext, DropResult } from '@hello-pangea/dnd';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { ITableColumn } from '../../../../types/ITable';
5
+ import { faArrowRightArrowLeft } from '../../../../assets/icons/regular/faArrowRightArrowLeft';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { ColumnsList } from './ColumnsList';
8
+ import { SearchInput } from '../../../Inputs/SearchInput';
9
+ import { Pullover } from '../../../Pullover/Pullover';
10
+ import { useTableContext } from '../../contexts/TableContext';
11
+ import { usePopupControl } from '../../../../hooks/usePopupControl';
12
+ import { IconButton } from '../../../Button/IconButton';
13
+ import { faLineColumns } from '../../../../assets/icons/light/faLineColumns';
14
+
15
+ export const TableColumnsEdit: FC = () => {
16
+ const [hidden, setHidden] = useState<ITableColumn[]>([]);
17
+ const [visible, setVisible] = useState<ITableColumn[]>([]);
18
+ const [searchHidden, setSearchHidden] = useState('');
19
+ const [searchVisible, setSearchVisible] = useState('');
20
+
21
+ const { t } = useTranslation();
22
+ const {
23
+ columnData: { defaultColumns, setColumns },
24
+ } = useTableContext();
25
+ const { control, onClose, onOpen } = usePopupControl();
26
+
27
+ useEffect(() => {
28
+ if (control.isOpen) {
29
+ let hiddenCols: ITableColumn[] = [];
30
+ let visibleCols: ITableColumn[] = [];
31
+ defaultColumns.forEach(col =>
32
+ !!col.hidden ? hiddenCols.push(col) : visibleCols.push(col)
33
+ );
34
+ setHidden(hiddenCols);
35
+ setVisible(visibleCols);
36
+ }
37
+ }, [control.isOpen, defaultColumns]);
38
+
39
+ const onDragEnd = ({ source, destination }: DropResult) => {
40
+ if (!destination) return;
41
+ const hiddenCols = [...hidden];
42
+ const visibleCols = [...visible];
43
+ const destinationIsHidden = destination.droppableId === 'hidden';
44
+
45
+ const sourceList = source.droppableId === 'hidden' ? hiddenCols : visibleCols;
46
+ const destinationList = destinationIsHidden ? hiddenCols : visibleCols;
47
+
48
+ const [removed] = sourceList.splice(source.index, 1);
49
+ destinationList.splice(destination.index, 0, removed);
50
+ if (source.droppableId !== destination.droppableId) {
51
+ destinationList[destination.index].hidden = destinationIsHidden;
52
+ setHidden(hiddenCols);
53
+ setVisible(visibleCols);
54
+ } else {
55
+ destinationIsHidden ? setHidden(hiddenCols) : setVisible(visibleCols);
56
+ }
57
+ };
58
+
59
+ const onSubmit = () => {
60
+ if (setColumns) {
61
+ const newColumns = [...visible, ...hidden];
62
+ setColumns(newColumns);
63
+ onClose();
64
+ }
65
+ };
66
+
67
+ return (
68
+ <>
69
+ <IconButton
70
+ tooltip={t('Columns')}
71
+ icon={faLineColumns}
72
+ active={control.isOpen}
73
+ onClick={onOpen}
74
+ size="s"
75
+ variant="outlined"
76
+ />
77
+
78
+ <DragDropContext onDragEnd={onDragEnd}>
79
+ <Pullover
80
+ control={control}
81
+ header={{ title: t('Columns') }}
82
+ footer={{
83
+ confirmButton: {
84
+ label: t('Confirm'),
85
+ onClick: onSubmit,
86
+ },
87
+ }}
88
+ >
89
+ <div className="dual-list-container">
90
+ <p className="pb-3">{t('DragDropListsInfo')}</p>
91
+ <div className="dual-list-content">
92
+ <p className="bold ml-2">{t('HiddenColumns')}:</p>
93
+ <div />
94
+ <p className="bold ml-2">{t('SelectedColumns')}:</p>
95
+
96
+ {/* {withSearch && (
97
+ <> */}
98
+ <SearchInput onSearch={setSearchHidden} />
99
+ <div />
100
+ <SearchInput onSearch={setSearchVisible} />
101
+ {/* </>
102
+ )} */}
103
+ <ColumnsList id="hidden" items={hidden} search={searchHidden} />
104
+
105
+ <div className="exchange-icon">
106
+ <FontAwesomeIcon icon={faArrowRightArrowLeft} />
107
+ </div>
108
+
109
+ <ColumnsList id="visible" items={visible} search={searchVisible} />
110
+ </div>
111
+ </div>
112
+ </Pullover>
113
+ </DragDropContext>
114
+ </>
115
+ );
116
+ };
@@ -1,15 +1,12 @@
1
1
  import { FC, useEffect, useRef } from 'react';
2
- import { ITableDataItem } from '../../../../types/ITable';
2
+ import { ITableColumn, ITableDataItem } from '../../../../types/ITable';
3
3
  import { IconButton } from '../../../Button/IconButton';
4
4
  import { faCheck, faXmark } from '../../../../assets/icons';
5
5
  import { useTableContext } from '../../contexts/TableContext';
6
6
  import { useGetFocusableElements } from '../../../../hooks/useGetFocusableElements';
7
7
 
8
- export const TableEditRow: FC = () => {
9
- const {
10
- columnData: { columns },
11
- editable,
12
- } = useTableContext();
8
+ export const TableEditRow: FC<{ columns: ITableColumn[] }> = ({ columns }) => {
9
+ const { editable } = useTableContext();
13
10
 
14
11
  const elementRef = useRef(null);
15
12
 
@@ -54,19 +51,16 @@ export const TableEditRow: FC = () => {
54
51
 
55
52
  return (
56
53
  <tr ref={elementRef} data-id={rowData.uuid} className="edit-row">
57
- {columns.map(
58
- column =>
59
- !column.hidden && (
60
- <td
61
- key={column.id}
62
- align={column.align}
63
- colSpan={rowData.cells[column.id]?.span}
64
- className={rowData.cells[column.id]?.className}
65
- >
66
- {rowData.cells[column.id]?.value ?? ''}
67
- </td>
68
- )
69
- )}
54
+ {columns.map(column => (
55
+ <td
56
+ key={column.id}
57
+ align={column.align}
58
+ colSpan={rowData.cells[column.id]?.span}
59
+ className={rowData.cells[column.id]?.className}
60
+ >
61
+ {rowData.cells[column.id]?.value ?? ''}
62
+ </td>
63
+ ))}
70
64
  </tr>
71
65
  );
72
66
  };
@@ -40,7 +40,7 @@ export const TableHeaderRow: FC<Props> = ({ row, print }) => {
40
40
  ? { width: col.width }
41
41
  : undefined
42
42
  }
43
- hidden={col.hidden}
43
+ // hidden={col.hidden}
44
44
  >
45
45
  <div className="flex align-center">
46
46
  {typeof col.label === 'string' ? (
@@ -15,7 +15,6 @@ import {
15
15
  ITableSelectedAction,
16
16
  } from '../../../types/ITable';
17
17
  import { useLocalTablePagination } from '../hooks/localHooks/useLocalTablePagination';
18
- import { useLocalTableColumns } from '../hooks/localHooks/useLocalTableColumns';
19
18
  import { useLocalTableData } from '../hooks/localHooks/useLocalTableData';
20
19
 
21
20
  interface ITableContext extends ITable {
@@ -86,20 +85,13 @@ export const TableProvider = ({
86
85
  rowSelect,
87
86
  });
88
87
 
89
- useLocalTableColumns({
90
- columnData,
91
- hasSelect: selectActions.length > 0,
92
- data,
93
- rowSelect,
94
- hasItemActions: updatedDataActions.hasItemActions,
95
- });
96
-
97
88
  const tableContextValue: ITableContext = {
98
89
  ...rest,
99
90
  data,
100
91
  dataActions: updatedDataActions,
101
92
  columnData,
102
93
  selectActions,
94
+ rowSelect,
103
95
  };
104
96
 
105
97
  if (editable) tableContextValue.editable = { ...editable, isAdding, setIsAdding };
@@ -1,33 +1,28 @@
1
- import { useEffect } from 'react';
2
- import { ITable, ITableColumn, ITableColumnsData } from '../../../../types/ITable';
1
+ import { useMemo } from 'react';
2
+ import { ITableColumn } from '../../../../types/ITable';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { Checkbox } from '../../../Inputs/Checkbox';
5
+ import { useTableContext } from '../../contexts/TableContext';
5
6
 
6
- interface Props {
7
- columnData: ITableColumnsData;
8
- hasSelect: boolean;
9
- data: ITable['data'];
10
- rowSelect: ITable['rowSelect'];
11
- hasItemActions?: boolean;
12
- }
13
-
14
- export const useLocalTableColumns = ({
15
- columnData: { defaultColumns, setColumns },
16
- hasSelect,
17
- data,
18
- rowSelect,
19
- hasItemActions,
20
- }: Props) => {
7
+ export const useLocalTableColumns = () => {
21
8
  const { t } = useTranslation();
22
9
 
23
- useEffect(() => {
24
- const activeColumns = defaultColumns.filter(e => !e.hidden && !e.unavailable);
25
- // const activeColumns = defaultColumns.filter(e => !e.unavailable);
10
+ const {
11
+ columnData: { columns },
12
+ selectActions,
13
+ data,
14
+ rowSelect,
15
+ dataActions: { hasItemActions } = {},
16
+ } = useTableContext();
17
+
18
+ const visibleColumns = useMemo(() => {
19
+ const hasSelect = rowSelect && selectActions.length > 0;
20
+ const filteredColumns = columns.filter(column => !column.hidden);
26
21
 
27
22
  let newCols: ITableColumn[] = [];
28
23
 
29
24
  // Select Column
30
- if (hasSelect && rowSelect) {
25
+ if (hasSelect) {
31
26
  const selectableData = data.filter(e => !e.disableSelect);
32
27
  const selectedSome =
33
28
  !!rowSelect.selectedRows.size &&
@@ -57,7 +52,7 @@ export const useLocalTableColumns = ({
57
52
  newCols.push(selectColumn);
58
53
  }
59
54
 
60
- newCols = newCols.concat(activeColumns);
55
+ newCols = newCols.concat(filteredColumns);
61
56
  hasItemActions &&
62
57
  newCols.push({
63
58
  id: 'actions',
@@ -66,6 +61,8 @@ export const useLocalTableColumns = ({
66
61
  className: 'actions-col',
67
62
  });
68
63
 
69
- setColumns?.(newCols);
70
- }, [defaultColumns, setColumns, hasSelect, data, rowSelect, hasItemActions, t]);
64
+ return newCols;
65
+ }, [columns, selectActions.length, data, rowSelect, hasItemActions, t]);
66
+
67
+ return { visibleColumns };
71
68
  };
@@ -1,28 +1,36 @@
1
- import { useEffect, useMemo, useState } from 'react';
1
+ import { useLayoutEffect, useMemo, useState } from 'react';
2
2
  import { ITableColumn, ITableColumnsData } from '../../../types/ITable';
3
3
 
4
4
  export interface ITableColumnsProps {
5
5
  defaultColumns: ITableColumn[];
6
6
  templateColumns?: ITableColumn[];
7
+ enableEdit?: boolean;
7
8
  }
8
9
 
9
10
  export const useTableColumns = ({
10
11
  defaultColumns,
11
12
  templateColumns,
13
+ enableEdit,
12
14
  }: ITableColumnsProps): ITableColumnsData => {
13
- const [columns, setColumns] = useState<ITableColumn[]>(defaultColumns);
15
+ const [columns, setColumns] = useState<ITableColumn[]>([]);
14
16
 
15
- useEffect(() => {
16
- setColumns(defaultColumns);
17
- }, [defaultColumns, templateColumns]);
17
+ const availableColumns = useMemo(
18
+ () => defaultColumns.filter(e => !e.unavailable),
19
+ [defaultColumns]
20
+ );
21
+
22
+ useLayoutEffect(() => {
23
+ setColumns(availableColumns);
24
+ }, [availableColumns, templateColumns]);
18
25
 
19
26
  const columnData = useMemo(
20
27
  () => ({
21
- defaultColumns,
28
+ defaultColumns: availableColumns,
22
29
  columns,
23
- setColumns,
30
+ setColumns: enableEdit ? setColumns : undefined,
24
31
  }),
25
- [defaultColumns, columns]
32
+ [availableColumns, columns, enableEdit]
26
33
  );
34
+
27
35
  return columnData;
28
36
  };
@@ -36,6 +36,7 @@ export const Tabs: FC<Props> = ({
36
36
  <div className="iui-tabs">
37
37
  {filteredTabs.map(tab => (
38
38
  <div
39
+ id={tab.value}
39
40
  key={tab.value}
40
41
  className={clsx('iui-tab clickable', {
41
42
  selected: (control?.value || selected) === tab.value,
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
2
2
  import type { IconDefinition } from '@fortawesome/fontawesome-svg-core';
3
3
  import clsx from 'clsx';
4
4
  import dayjs from 'dayjs';
5
- import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
5
+ import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd';
6
6
  import { ToastContainer } from 'react-toastify';
7
7
 
8
8
  import type { IFormWrapper } from './components/Wrappers/FormWrapper';
@@ -15,7 +15,7 @@
15
15
  padding: 0 4px;
16
16
  &.primary {
17
17
  color: var(--text-inverse);
18
- border: 2px solid white;
18
+ border: 2px solid var(--background);
19
19
  background-color: var(--primary);
20
20
  }
21
21
  // SIZES
@@ -118,13 +118,10 @@
118
118
  text-overflow: ellipsis;
119
119
  }
120
120
  }
121
- .user-badge {
122
- min-height: 10px;
123
- max-height: 10px;
124
- min-width: 10px;
125
- max-width: 10px;
126
- background: var(--danger);
127
- border-radius: 50px;
121
+ .user-notif-badge {
122
+ border: 1px solid var(--primary);
123
+ background-color: var(--danger);
124
+ right: -5px;
128
125
  }
129
126
  }
130
127
  .header-user-menu {
@@ -35,7 +35,7 @@
35
35
  cursor: default;
36
36
  opacity: 0.5;
37
37
  }
38
- &:not(.disabled) {
38
+ &.clickable:not(.disabled) {
39
39
  cursor: pointer;
40
40
  &:hover {
41
41
  background-color: var(--neutral-hover);
@@ -9,6 +9,8 @@ table {
9
9
  thead {
10
10
  z-index: 2;
11
11
  background-color: var(--neutral-100);
12
+ // background-color: var(--primary);
13
+ // color: var(--text-inverse);
12
14
  tr:first-child th {
13
15
  border-top: var(--borderlight);
14
16
  }
@@ -44,6 +46,10 @@ table {
44
46
  &.selected {
45
47
  background-color: rgba(0, 0, 0, 0.05);
46
48
  }
49
+ &:has(.iui-icon-btn:hover),
50
+ &:has(a:hover) {
51
+ background-color: transparent !important;
52
+ }
47
53
  &.focused {
48
54
  background-color: var(--primary-100);
49
55
  }
@@ -204,44 +210,49 @@ table {
204
210
  .table-sort-item {
205
211
  flex-direction: row-reverse;
206
212
  }
207
- // .dual-list-container {
208
- // .dual-list-content {
209
- // display: grid;
210
- // grid-template-columns: 1fr auto 1fr;
211
- // gap: 12px;
212
- // }
213
- // .list-box {
214
- // border: var(--border-light);
215
- // border-radius: 16px;
216
- // padding: 10px;
217
- // user-select: none;
218
- // & > .item {
219
- // display: flex;
220
- // justify-content: space-between;
221
- // align-items: center;
222
- // padding: 8px;
223
- // font-size: 12px;
224
- // svg {
225
- // color: rgba(0, 0, 0, 0.6);
226
- // margin-left: 1rem;
227
- // }
228
- // &:hover {
229
- // background-color: var(--primary-o10);
230
- // }
231
- // &:active {
232
- // background-color: var(--primary-o25);
233
- // }
234
- // }
235
- // }
236
- // .exchange-icon {
237
- // display: flex;
238
- // align-items: center;
239
- // svg {
240
- // height: 20px;
241
- // width: 20px;
242
- // }
243
- // }
244
- // }
213
+ .dual-list-container {
214
+ .dual-list-content {
215
+ display: grid;
216
+ grid-template-columns: 1fr auto 1fr;
217
+ gap: 16px 12px;
218
+ }
219
+ .list-box {
220
+ border: var(--border-light);
221
+ border-radius: 8px;
222
+ padding: 8px;
223
+ user-select: none;
224
+ & > .item {
225
+ display: flex;
226
+ justify-content: space-between;
227
+ align-items: center;
228
+ padding: 8px;
229
+ font-size: 14spx;
230
+ svg {
231
+ color: var(--text);
232
+ margin-left: 1rem;
233
+ }
234
+ &:hover {
235
+ background-color: var(--primary-o10);
236
+ }
237
+ &:active {
238
+ background-color: var(--primary-o25);
239
+ }
240
+ &.dragging {
241
+ transform: scale(1.02);
242
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
243
+ background-color: #fff !important;
244
+ }
245
+ }
246
+ }
247
+ .exchange-icon {
248
+ display: flex;
249
+ align-items: center;
250
+ svg {
251
+ height: 20px;
252
+ width: 20px;
253
+ }
254
+ }
255
+ }
245
256
 
246
257
  .edit-row {
247
258
  background: var(--neutral-100);
@@ -112,8 +112,17 @@
112
112
  --neutral-700: hsl(351, 0%, 31%);
113
113
  --neutral-t: rgba(16, 24, 40, 0.5);
114
114
 
115
+ // --danger-100: #fceae8;
116
+ // --danger-200: #f7d7d4;
117
+ // --danger-300: #dc776f;
118
+ // --danger-400: #de4f45;
119
+ // --danger-500: #d92d20;
120
+ // --danger-600: #c5261b;
121
+ // --danger-700: #a11b12;
122
+
115
123
  --primary: var(--primary-500);
116
124
  --neutral: var(--neutral-500);
125
+ --danger: var(--danger-500);
117
126
 
118
127
  --text: var(--neutral-700);
119
128
  --text-disabled: var(--neutral-400);
@@ -22,7 +22,7 @@ export type IHeaderUserMenuProps = {
22
22
  userName?: string;
23
23
  organizationName?: string;
24
24
  menuItems: IMenuItem[];
25
- showBadge?: boolean;
25
+ inviteCount?: number;
26
26
  controls: {
27
27
  myAccountControl: IPopupControl;
28
28
  changeOrgControl: IPopupControl;
@@ -4,6 +4,7 @@ import { ITableKeyboardActionsBase } from './IKeyboard';
4
4
  import { IPopupControl } from './IPopup';
5
5
 
6
6
  export interface ITable<T = unknown> {
7
+ id?: string;
7
8
  columnData: ITableColumnsData;
8
9
  data: ITableDataItem[];
9
10
  dataActions?: ITableDataActions;
@@ -1,2 +0,0 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useTranslation as r}from"react-i18next";import{Link as a}from"react-router";import{Button as c}from"./index.js";import"@fortawesome/react-fontawesome";import"clsx";import"dayjs";import"react-beautiful-dnd";import"react-toastify";import"react";import"react-dom";import"react-calendar";import"react-select";import"react-select-async-paginate";import"react-select/async-creatable";const i=()=>{const{t:i}=r();return e("div",{className:"full-screen-page",children:[e("div",{id:"content",children:[t("h1",{children:i("NoAccessPage")}),t("p",{className:"subtitle",children:i("NoAccessPageInfo")})]}),t("p",{id:"img",className:"img-403",children:"403"}),t("div",{id:"actions",children:t(a,{to:"/",children:t(c,{label:i("ReturnToHomepage")})})})]})};export{i as default};
2
- //# sourceMappingURL=NoAccessPage-DBq5IzIf.js.map