@syuttechnologies/layout 1.0.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/src/index.ts ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @prima/layout - Enterprise React Layout Library
3
+ *
4
+ * A comprehensive layout system for React applications featuring:
5
+ * - Enterprise-grade sidebar navigation with multi-level menus
6
+ * - Tab-based module management
7
+ * - Dark/Light theme support
8
+ * - Notification system
9
+ * - Responsive design
10
+ * - Change password modal
11
+ */
12
+
13
+ // Main Layout Component
14
+ export {
15
+ EnterpriseLayout,
16
+ type EnterpriseLayoutProps,
17
+ type ComponentRegistry,
18
+ type LogoConfig,
19
+ type Colors,
20
+ type BrandingConfig,
21
+ type LayoutConfig,
22
+ type FooterConfig,
23
+ type UserConfig,
24
+ type NavigationItem,
25
+ type NavigationSection,
26
+ type CompactModeItem,
27
+ type ToolbarAction,
28
+ type ModuleConfig,
29
+ type ModulesConfig,
30
+ type HooksConfig,
31
+ type EnterpriseLayoutConfig,
32
+ type TabData,
33
+ type IconSystemType,
34
+ type StoredModuleConfig,
35
+ } from './components/EnterpriseLayout';
36
+
37
+ export { default } from './components/EnterpriseLayout';
38
+
39
+ // Change Password Modal
40
+ export {
41
+ ChangePasswordModal,
42
+ type ChangePasswordModalProps,
43
+ type ChangePasswordData,
44
+ type PasswordValidationRules,
45
+ } from './components/ChangePasswordModal';
46
+
47
+ // Notification Service
48
+ export {
49
+ notificationService,
50
+ type NotificationType,
51
+ type NotificationPayload,
52
+ type Notification,
53
+ } from './services/notificationService';
@@ -0,0 +1,101 @@
1
+ // Notification Service - Event-based notification system for the application
2
+
3
+ export type NotificationType = 'success' | 'info' | 'warning' | 'error';
4
+
5
+ export interface NotificationPayload {
6
+ type: NotificationType;
7
+ title: string;
8
+ message: string;
9
+ autoClose?: boolean;
10
+ duration?: number;
11
+ }
12
+
13
+ export interface Notification extends NotificationPayload {
14
+ id: number;
15
+ time: string;
16
+ read: boolean;
17
+ }
18
+
19
+ const NOTIFICATION_EVENT = 'app:notification';
20
+
21
+ let notificationIdCounter = Date.now();
22
+ const generateId = (): number => ++notificationIdCounter;
23
+ const formatTime = (): string => 'Just now';
24
+
25
+ const dispatchNotification = (payload: NotificationPayload): Notification => {
26
+ const notification: Notification = {
27
+ ...payload,
28
+ id: generateId(),
29
+ time: formatTime(),
30
+ read: false,
31
+ };
32
+
33
+ const event = new CustomEvent<Notification>(NOTIFICATION_EVENT, {
34
+ detail: notification,
35
+ });
36
+
37
+ window.dispatchEvent(event);
38
+ return notification;
39
+ };
40
+
41
+ export const notificationService = {
42
+ success: (title: string, message: string, options?: Partial<NotificationPayload>): Notification => {
43
+ return dispatchNotification({
44
+ type: 'success',
45
+ title,
46
+ message,
47
+ autoClose: true,
48
+ duration: 5000,
49
+ ...options,
50
+ });
51
+ },
52
+
53
+ info: (title: string, message: string, options?: Partial<NotificationPayload>): Notification => {
54
+ return dispatchNotification({
55
+ type: 'info',
56
+ title,
57
+ message,
58
+ autoClose: true,
59
+ duration: 5000,
60
+ ...options,
61
+ });
62
+ },
63
+
64
+ warning: (title: string, message: string, options?: Partial<NotificationPayload>): Notification => {
65
+ return dispatchNotification({
66
+ type: 'warning',
67
+ title,
68
+ message,
69
+ autoClose: false,
70
+ ...options,
71
+ });
72
+ },
73
+
74
+ error: (title: string, message: string, options?: Partial<NotificationPayload>): Notification => {
75
+ return dispatchNotification({
76
+ type: 'error',
77
+ title,
78
+ message,
79
+ autoClose: false,
80
+ ...options,
81
+ });
82
+ },
83
+
84
+ notify: (payload: NotificationPayload): Notification => {
85
+ return dispatchNotification(payload);
86
+ },
87
+
88
+ subscribe: (callback: (notification: Notification) => void): (() => void) => {
89
+ const handler = (event: Event) => {
90
+ const customEvent = event as CustomEvent<Notification>;
91
+ callback(customEvent.detail);
92
+ };
93
+
94
+ window.addEventListener(NOTIFICATION_EVENT, handler);
95
+ return () => {
96
+ window.removeEventListener(NOTIFICATION_EVENT, handler);
97
+ };
98
+ },
99
+ };
100
+
101
+ export default notificationService;
package/tsconfig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "lib": ["DOM", "DOM.Iterable", "ES2020"],
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "jsx": "react-jsx",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "declaration": true,
13
+ "declarationMap": true,
14
+ "composite": true,
15
+ "outDir": "./dist",
16
+ "rootDir": "./src"
17
+ },
18
+ "include": ["src/**/*"],
19
+ "exclude": ["node_modules", "dist"]
20
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./src/services/notificationservice.ts","./src/components/changepasswordmodal.tsx","./src/components/enterpriselayout.tsx","./src/index.ts","./node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[50],[48,49],[50,51],[50,51,52,53],[51,52,53,54],[51]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"5e76305d58bcdc924ff2bf14f6a9dc2aa5441ed06464b7e7bd039e611d66a89b","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"3c676b5e0ff890347336fa387b3e27607787c94a616d57490866ae7436840ed4","signature":"9cf68f06c40e0554d7256518a50e310a67bb1d700af562eec0b0e9bfd9f921f5"},{"version":"713e0cc2f482ec8a9588eefd05f1411474f4f937d38552f01349ab8cdb257af3","signature":"b58ca7a7b8c6f16b24cfb046442a6594b25f726a5a6be1ef345c1802db2bde98"},{"version":"94fb469dad5c51060b901eb17b30c7ae3c37ff4a8d8d5d005aa25010475cc50f","signature":"9d61792ce79897c634591803a3862ef8e409cfb0d68dda89aeeca5dc861c56c9"},{"version":"cfca940a9bdfbf49117e523bce5a9008f3f841fd23d8f5922552127207f95150","signature":"77f954e39b8d3b2ca020e5861f6789fb2c3bf2d57a12819278433c924a7f4b25"},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1}],"root":[[52,55]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[56,1],[50,2],[51,1],[53,3],[54,4],[55,5],[52,6]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}