@famalabs/web-ui 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +7 -0
  2. package/dist/components/auth/AuthSuccess.d.ts +11 -0
  3. package/dist/components/auth/AuthSuccess.js +1 -0
  4. package/dist/components/auth/PasswordField.d.ts +30 -0
  5. package/dist/components/auth/PasswordField.js +1 -0
  6. package/dist/components/common/MainDiv.d.ts +10 -0
  7. package/dist/components/common/MainDiv.js +1 -0
  8. package/dist/components/common/MenuItems.d.ts +19 -0
  9. package/dist/components/common/MenuItems.js +1 -0
  10. package/dist/components/forms/AiEditingContext.d.ts +20 -0
  11. package/dist/components/forms/AiEditingContext.js +1 -0
  12. package/dist/components/forms/AiUtils.js +1 -0
  13. package/dist/components/forms/AutocompleteField.d.ts +20 -0
  14. package/dist/components/forms/AutocompleteField.js +1 -0
  15. package/dist/components/forms/DateField.d.ts +18 -0
  16. package/dist/components/forms/DateField.js +1 -0
  17. package/dist/components/forms/InputField.d.ts +16 -0
  18. package/dist/components/forms/InputField.js +1 -0
  19. package/dist/components/forms/InputNumber.d.ts +21 -0
  20. package/dist/components/forms/InputNumber.js +1 -0
  21. package/dist/components/forms/InputString.d.ts +21 -0
  22. package/dist/components/forms/InputString.js +1 -0
  23. package/dist/components/forms/RichTextEditor/FormattingToolbar.d.ts +20 -0
  24. package/dist/components/forms/RichTextEditor/FormattingToolbar.js +1 -0
  25. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +37 -0
  26. package/dist/components/forms/RichTextEditor/RichTextEditor.js +1 -0
  27. package/dist/components/forms/RichTextField.d.ts +15 -0
  28. package/dist/components/forms/RichTextField.js +1 -0
  29. package/dist/components/forms/SelectField.d.ts +18 -0
  30. package/dist/components/forms/SelectField.js +1 -0
  31. package/dist/components/forms/TimeField.d.ts +18 -0
  32. package/dist/components/forms/TimeField.js +1 -0
  33. package/dist/components/forms/useFormState.d.ts +87 -0
  34. package/dist/components/forms/useFormState.js +1 -0
  35. package/dist/components/sidebar/SidebarFooter.d.ts +21 -0
  36. package/dist/components/sidebar/SidebarFooter.js +1 -0
  37. package/dist/components/sidebar/SidebarLayout.d.ts +42 -0
  38. package/dist/components/sidebar/SidebarLayout.js +1 -0
  39. package/dist/components/snackbar/Notifier/Notifier.d.ts +17 -0
  40. package/dist/components/snackbar/Notifier/Notifier.js +1 -0
  41. package/dist/components/tables/CardsGrid/CardsBodyCreator.js +1 -0
  42. package/dist/components/tables/CardsGrid/DynamcCardsFooter.js +1 -0
  43. package/dist/components/tables/CardsGrid/DynamicCardsTable.d.ts +6 -0
  44. package/dist/components/tables/CardsGrid/DynamicCardsTable.js +1 -0
  45. package/dist/components/tables/CardsGrid/DynamicCardsTypes.d.ts +61 -0
  46. package/dist/components/tables/LegacyTable/LegacyTable.d.ts +6 -0
  47. package/dist/components/tables/LegacyTable/LegacyTable.js +1 -0
  48. package/dist/components/tables/LegacyTable/LegacyTableFooter.js +1 -0
  49. package/dist/components/tables/RealtimeTable/RealTimeTableBody.js +1 -0
  50. package/dist/components/tables/RealtimeTable/RealTimeTableFooter.js +1 -0
  51. package/dist/components/tables/RealtimeTable/RealtimeTable.d.ts +6 -0
  52. package/dist/components/tables/RealtimeTable/RealtimeTable.js +1 -0
  53. package/dist/components/tables/RealtimeTable/RealtimeTableTypes.d.ts +20 -0
  54. package/dist/components/tables/TableCells/ActionCell.d.ts +15 -0
  55. package/dist/components/tables/TableCells/ActionCell.js +1 -0
  56. package/dist/components/tables/TableCells/AvatarCell.d.ts +8 -0
  57. package/dist/components/tables/TableCells/AvatarCell.js +1 -0
  58. package/dist/components/tables/TableCells/BooleanCell.d.ts +8 -0
  59. package/dist/components/tables/TableCells/BooleanCell.js +1 -0
  60. package/dist/components/tables/TableCells/DateCell.d.ts +7 -0
  61. package/dist/components/tables/TableCells/DateCell.js +1 -0
  62. package/dist/components/tables/TableCells/ImageCell.d.ts +7 -0
  63. package/dist/components/tables/TableCells/ImageCell.js +1 -0
  64. package/dist/components/tables/TableCells/LinkCell.d.ts +8 -0
  65. package/dist/components/tables/TableCells/LinkCell.js +1 -0
  66. package/dist/components/tables/TableCells/SelectCell.d.ts +13 -0
  67. package/dist/components/tables/TableCells/SelectCell.js +1 -0
  68. package/dist/components/tables/TableCells/StatusCell.d.ts +11 -0
  69. package/dist/components/tables/TableCells/StatusCell.js +1 -0
  70. package/dist/components/tables/TableComponents/TableActionHeader.js +1 -0
  71. package/dist/components/tables/TableComponents/TableCommonBody.js +1 -0
  72. package/dist/components/tables/TableComponents/TableFilterComponents.js +1 -0
  73. package/dist/components/tables/TableComponents/TableFilterHeader.js +1 -0
  74. package/dist/components/tables/TableComponents/TableLocales.js +1 -0
  75. package/dist/components/tables/TableComponents/TableTypes.d.ts +178 -0
  76. package/dist/components/theme/ThemeLoader/Loader.d.ts +13 -0
  77. package/dist/components/theme/ThemeLoader/Loader.js +1 -0
  78. package/dist/index.d.ts +33 -0
  79. package/dist/index.js +1 -0
  80. package/package.json +55 -0
@@ -0,0 +1,178 @@
1
+ import { IconButtonOwnProps, ButtonProps, IconButtonProps } from '@mui/material';
2
+ import { Dispatch, SetStateAction } from 'react';
3
+
4
+ interface DynamicFilterOptions {
5
+ id: string | number | boolean;
6
+ label: string;
7
+ }
8
+ type ColumnType = 'string' | 'number' | 'action' | 'avatar' | 'boolean' | 'date' | 'image' | 'link' | 'status' | 'select';
9
+ interface DynamicColumns<T> {
10
+ accessor: string;
11
+ label: string;
12
+ filterOptions?: {
13
+ type: FilterType;
14
+ options?: DynamicFilterOptions[];
15
+ singleDate?: boolean;
16
+ regex?: boolean;
17
+ priority?: boolean;
18
+ export?: boolean;
19
+ };
20
+ ColumnCell?: () => React.ReactNode;
21
+ Cell?: (props: {
22
+ cellValue: string;
23
+ currentColumn?: DynamicColumns<T>;
24
+ currentRow?: T;
25
+ }) => React.ReactNode;
26
+ Tooltip?: {
27
+ icon?: React.ReactNode;
28
+ color?: IconButtonOwnProps['color'];
29
+ label: string;
30
+ };
31
+ maxWidth?: number | string | 'stretch';
32
+ visible?: boolean;
33
+ locked?: boolean;
34
+ }
35
+ type FilterType = 'string' | 'number' | 'select' | 'date';
36
+ type FilterValue = unknown;
37
+ interface ActiveFilter {
38
+ filterIndex: number;
39
+ filterColumn: string;
40
+ filterValue?: FilterValue;
41
+ filterType?: FilterType;
42
+ filterComparator?: string;
43
+ }
44
+ /**
45
+ * Type for the action event.
46
+ */
47
+ type ActionEvent<T> = (actionType: string, selectedRows: T[], activeFilters: ActiveFilter[], allSelected?: boolean) => void;
48
+ /**
49
+ * Interface for an action event button.
50
+ * Only one of label or icon is required. Both can be provided.
51
+ * @param {ActionType} type - The type of the action.
52
+ * @param {string} label - Optional label of the button.
53
+ * @param {ButtonOwnProps['color']} color - Optional color of the button.
54
+ * @param {React.ReactNode} icon - Optional icon of the button.
55
+ * @param {boolean} isIconButton - Indicates whether the button is an icon button.
56
+ */
57
+ interface ActionEventItem {
58
+ type: string;
59
+ label?: string;
60
+ color?: ButtonProps['color'];
61
+ icon?: React.ReactNode;
62
+ isIconButton?: boolean;
63
+ refetch?: boolean;
64
+ }
65
+ /**
66
+ * Interface for the props accepted by the TableInfo prop.
67
+ * @param {string} tableName - The name of the table.
68
+ * @param {Array<T>} tableData - The data of the table.
69
+ * @param {Dispatch<SetStateAction<T[]>>} setTableData - The function to set the table data.
70
+ * @param {DynamicColumns[]} columns - The columns of the table.
71
+ * @param {number} expectedRowCount - The expected row count.
72
+ * @param {boolean} static - Indicates whether the table is static.
73
+ * @param {boolean} showVisibleColumnsButton - Indicates whether the visible columns button is shown.
74
+ * @param {string} emptyTablePlaceholderSrc - The source of the empty table placeholder.
75
+ * @param {string} emptyTablePlaceholderText - The text of the empty table placeholder.
76
+ * @param {Object} paginationOptions - The options for the pagination.
77
+ */
78
+ interface TableInfoProps<T> {
79
+ tableName: string;
80
+ tableData: Array<T>;
81
+ setTableData?: Dispatch<SetStateAction<T[]>>;
82
+ columns: DynamicColumns<T>[];
83
+ expectedRowCount: number;
84
+ variant?: 'standard' | 'dense' | 'compact';
85
+ filterMode?: 'single' | 'multiple';
86
+ defaultShowFilters?: boolean;
87
+ staticMode?: boolean;
88
+ showRefreshButton?: boolean;
89
+ showVisibleColumnsButton?: boolean;
90
+ emptyTablePlaceholderSrc?: string;
91
+ emptyTablePlaceholderText?: string;
92
+ paginationOptions?: {
93
+ stickyHeader?: boolean;
94
+ stickyFooter?: boolean;
95
+ customPageRowCount?: number;
96
+ customSelectPages?: number[];
97
+ autoSizeHeight?: boolean;
98
+ hideFooter?: boolean;
99
+ footerVariant?: 'standard' | 'simple';
100
+ };
101
+ }
102
+ interface FetchInfoProps {
103
+ fetchData: (limit: number, filters: ActiveFilter[], firstLoad?: boolean) => Promise<void>;
104
+ isFetching: boolean;
105
+ }
106
+ interface QueryInfoProps {
107
+ filtersQuery: ActiveFilter[] | string;
108
+ }
109
+ interface DefineActionsProps<T> {
110
+ actionList: ActionEventItem[];
111
+ onAction: ActionEvent<T>;
112
+ }
113
+ interface TableActions<T> {
114
+ quickActions?: DefineActionsProps<T>;
115
+ contextMenuActions?: DefineActionsProps<T>;
116
+ }
117
+ interface i18nStrings {
118
+ header?: {
119
+ quickActions: string;
120
+ lockedColumns: string;
121
+ visibleColumns: string;
122
+ hiddenColumns: string;
123
+ itemsSelected: string;
124
+ selectedAll: string;
125
+ deselectAll: string;
126
+ allItemsSelected: string;
127
+ };
128
+ filters?: {
129
+ addFilter: string;
130
+ removeFilter: string;
131
+ filterBy: string;
132
+ moreFilters: string;
133
+ date: string;
134
+ exact: string;
135
+ dateFrom: string;
136
+ dateTo: string;
137
+ range: string;
138
+ dateLanguage: string;
139
+ apply: string;
140
+ clear: string;
141
+ refresh: string;
142
+ showFilters: string;
143
+ hideFilters: string;
144
+ };
145
+ footer?: {
146
+ rowsPerPage: string;
147
+ of: string;
148
+ elements: string;
149
+ };
150
+ }
151
+ interface TableButton extends ButtonProps {
152
+ label: string;
153
+ }
154
+ interface TableIconButton extends IconButtonProps {
155
+ label?: string;
156
+ icon?: React.ReactNode;
157
+ activeIcon?: React.ReactNode;
158
+ }
159
+ interface CustomTableButtons {
160
+ newItemButton?: TableButton;
161
+ columnsButton?: TableIconButton;
162
+ actionButton?: TableIconButton;
163
+ exportButton?: TableIconButton;
164
+ selectAllButton?: TableButton;
165
+ refreshButton?: TableIconButton;
166
+ }
167
+ interface DynamicTableProps<T> {
168
+ tableInfo: TableInfoProps<T>;
169
+ fetchInfo: FetchInfoProps;
170
+ queryInfo?: QueryInfoProps;
171
+ tableActions?: TableActions<T>;
172
+ tableButtons?: CustomTableButtons;
173
+ onRowClick?: (row: T) => void;
174
+ tableLocale?: 'en' | 'it';
175
+ localeStr?: i18nStrings;
176
+ }
177
+
178
+ export type { ActionEvent, ActionEventItem, ActiveFilter, ColumnType, CustomTableButtons, DefineActionsProps, DynamicColumns, DynamicFilterOptions, DynamicTableProps, FetchInfoProps, FilterType, FilterValue, QueryInfoProps, TableActions, TableButton, TableIconButton, TableInfoProps, i18nStrings };
@@ -0,0 +1,13 @@
1
+ import { Theme } from '@mui/material/styles';
2
+ import React from 'react';
3
+
4
+ interface ThemeLoaderProps {
5
+ loaded: () => void;
6
+ theme: Theme;
7
+ load: () => void | Promise<void>;
8
+ lang?: string;
9
+ children: any;
10
+ }
11
+ declare const ThemeLoader: React.FC<ThemeLoaderProps>;
12
+
13
+ export { ThemeLoader };
@@ -0,0 +1 @@
1
+ import e from"@mui/material/CssBaseline";import o from"@mui/material/GlobalStyles";import{ThemeProvider as m}from"@mui/material/styles";import{SnackbarProvider as t}from"notistack";import l from"react";import{jsxs as r,jsx as i}from"react/jsx-runtime";const a=({loaded:a,load:s,theme:c,children:f})=>(l.useEffect(()=>{const e=s();e instanceof Promise?e.then(a).catch(e=>{console.log("Couldn't load theme: ",e)}):a()},[]),r(m,{theme:c,children:[i(o,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),i(e,{}),i(t,{maxSnack:3,children:f})]}));export{a as ThemeLoader};
@@ -0,0 +1,33 @@
1
+ export { PasswordField, PasswordFieldProps } from './components/auth/PasswordField.js';
2
+ export { AuthSuccess, AuthSuccessProps } from './components/auth/AuthSuccess.js';
3
+ export { IProps, MainDiv } from './components/common/MainDiv.js';
4
+ export { ListType as MenuID, MenuItems, MenuItemsProps } from './components/common/MenuItems.js';
5
+ export { Form, FormNodeType, FormNodeValidator, default as useFormState } from './components/forms/useFormState.js';
6
+ export { InputString, InputStringProps, StringValidator } from './components/forms/InputString.js';
7
+ export { InputNumber, InputNumberProps, NumberValidator } from './components/forms/InputNumber.js';
8
+ export { AutocompleteField, AutocompleteFieldProps } from './components/forms/AutocompleteField.js';
9
+ export { InputField, InputFieldProps } from './components/forms/InputField.js';
10
+ export { RichTextField, RichTextFieldProps } from './components/forms/RichTextField.js';
11
+ export { SelectField, SelectFieldProps } from './components/forms/SelectField.js';
12
+ export { DateField, DateFieldProps } from './components/forms/DateField.js';
13
+ export { TimeField, TimeFieldProps } from './components/forms/TimeField.js';
14
+ export { RichTextEditor, RichTextEditorProps } from './components/forms/RichTextEditor/RichTextEditor.js';
15
+ export { AiEditingProvider, useAiEditing } from './components/forms/AiEditingContext.js';
16
+ export { SidebarItem, SidebarLayout, SidebarLayoutProps, SidebarLogo, SidebarProps } from './components/sidebar/SidebarLayout.js';
17
+ export { FooterData, SidebarFooterProps } from './components/sidebar/SidebarFooter.js';
18
+ export { ISnackbar, Notifier, NotifierProps } from './components/snackbar/Notifier/Notifier.js';
19
+ export { RealtimeTable } from './components/tables/RealtimeTable/RealtimeTable.js';
20
+ export { RealtimeTableProps } from './components/tables/RealtimeTable/RealtimeTableTypes.js';
21
+ export { LegacyDynamicTable } from './components/tables/LegacyTable/LegacyTable.js';
22
+ export { BooleanCell } from './components/tables/TableCells/BooleanCell.js';
23
+ export { DateCell } from './components/tables/TableCells/DateCell.js';
24
+ export { ActionCell } from './components/tables/TableCells/ActionCell.js';
25
+ export { LinkCell } from './components/tables/TableCells/LinkCell.js';
26
+ export { AvatarCell } from './components/tables/TableCells/AvatarCell.js';
27
+ export { ALL_STATUS, IStatus, StatusCell } from './components/tables/TableCells/StatusCell.js';
28
+ export { ImageCell } from './components/tables/TableCells/ImageCell.js';
29
+ export { SelectCell, SelectCellOption } from './components/tables/TableCells/SelectCell.js';
30
+ export { ActionEvent, ActionEventItem, ActiveFilter, ColumnType, TableButton as CustomButton, DefineActionsProps, DynamicColumns, DynamicFilterOptions, DynamicTableProps, FetchInfoProps, FilterType, FilterValue, QueryInfoProps, TableInfoProps, i18nStrings } from './components/tables/TableComponents/TableTypes.js';
31
+ export { DynamicCardsTable } from './components/tables/CardsGrid/DynamicCardsTable.js';
32
+ export { CardFilters, DynamicCardsProps, InfiniteViewType } from './components/tables/CardsGrid/DynamicCardsTypes.js';
33
+ export { ThemeLoader } from './components/theme/ThemeLoader/Loader.js';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export{PasswordField}from"./components/auth/PasswordField.js";export{AuthSuccess}from"./components/auth/AuthSuccess.js";export{MainDiv}from"./components/common/MainDiv.js";export{MenuItems}from"./components/common/MenuItems.js";export{default as useFormState}from"./components/forms/useFormState.js";export{InputString}from"./components/forms/InputString.js";export{InputNumber}from"./components/forms/InputNumber.js";export{AutocompleteField}from"./components/forms/AutocompleteField.js";export{InputField}from"./components/forms/InputField.js";export{RichTextField}from"./components/forms/RichTextField.js";export{SelectField}from"./components/forms/SelectField.js";export{DateField}from"./components/forms/DateField.js";export{TimeField}from"./components/forms/TimeField.js";export{RichTextEditor}from"./components/forms/RichTextEditor/RichTextEditor.js";export{AiEditingProvider,useAiEditing}from"./components/forms/AiEditingContext.js";export{SidebarLayout}from"./components/sidebar/SidebarLayout.js";export{Notifier}from"./components/snackbar/Notifier/Notifier.js";export{RealtimeTable}from"./components/tables/RealtimeTable/RealtimeTable.js";export{LegacyDynamicTable}from"./components/tables/LegacyTable/LegacyTable.js";export{BooleanCell}from"./components/tables/TableCells/BooleanCell.js";export{DateCell}from"./components/tables/TableCells/DateCell.js";export{ActionCell}from"./components/tables/TableCells/ActionCell.js";export{LinkCell}from"./components/tables/TableCells/LinkCell.js";export{AvatarCell}from"./components/tables/TableCells/AvatarCell.js";export{ALL_STATUS,StatusCell}from"./components/tables/TableCells/StatusCell.js";export{ImageCell}from"./components/tables/TableCells/ImageCell.js";export{SelectCell}from"./components/tables/TableCells/SelectCell.js";export{DynamicCardsTable}from"./components/tables/CardsGrid/DynamicCardsTable.js";export{ThemeLoader}from"./components/theme/ThemeLoader/Loader.js";
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@famalabs/web-ui",
3
+ "version": "1.0.0-beta.1",
4
+ "author": " Fama Labs <info@famalabs.com>",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "peerDependencies": {
17
+ "@blocknote/core": "^0.46.1",
18
+ "@blocknote/mantine": "^0.46.1",
19
+ "@blocknote/react": "^0.46.1",
20
+ "@hello-pangea/dnd": "^18.0.1",
21
+ "@mui/material": "^7.3.7",
22
+ "@mui/x-date-pickers": ">=8.20.0 <9.0.0",
23
+ "dayjs": "^1.11.19",
24
+ "lucide-react": ">=0.552.0 <1.0.0",
25
+ "notistack": "^3.0.2",
26
+ "qs": "^6.14.1",
27
+ "react": "^19.2.3",
28
+ "react-dom": "^19.2.3",
29
+ "react-hook-form": "^7.71.1"
30
+ },
31
+ "dependencies": {
32
+ "tslib": "^2.8.1"
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "nx": {
38
+ "targets": {
39
+ "typecheck": {
40
+ "executor": "nx:run-commands",
41
+ "options": {
42
+ "cwd": "packages/web-ui",
43
+ "command": "tsc -p tsconfig.lib.json --noEmit"
44
+ }
45
+ },
46
+ "build": {
47
+ "dependsOn": [
48
+ "typecheck",
49
+ "test",
50
+ "^build"
51
+ ]
52
+ }
53
+ }
54
+ }
55
+ }