@syuttechnologies/layout 1.0.2 → 1.0.21

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 (53) hide show
  1. package/README.md +536 -0
  2. package/dist/components/ChangePasswordModal.d.ts.map +1 -1
  3. package/dist/components/ChangePasswordModal.js +22 -11
  4. package/dist/components/EnterpriseLayout.d.ts.map +1 -1
  5. package/dist/components/EnterpriseLayout.js +21 -6
  6. package/dist/components/ui/ActionMenu/ActionMenu.d.ts +52 -0
  7. package/dist/components/ui/ActionMenu/ActionMenu.d.ts.map +1 -0
  8. package/dist/components/ui/ActionMenu/ActionMenu.js +116 -0
  9. package/dist/components/ui/ActionMenu/index.d.ts +3 -0
  10. package/dist/components/ui/ActionMenu/index.d.ts.map +1 -0
  11. package/dist/components/ui/ActionMenu/index.js +2 -0
  12. package/dist/components/ui/ModuleHeader/ModuleHeader.d.ts +90 -0
  13. package/dist/components/ui/ModuleHeader/ModuleHeader.d.ts.map +1 -0
  14. package/dist/components/ui/ModuleHeader/ModuleHeader.js +433 -0
  15. package/dist/components/ui/ModuleHeader/index.d.ts +3 -0
  16. package/dist/components/ui/ModuleHeader/index.d.ts.map +1 -0
  17. package/dist/components/ui/ModuleHeader/index.js +1 -0
  18. package/dist/components/ui/SyutGrid/SyutGrid.d.ts +74 -0
  19. package/dist/components/ui/SyutGrid/SyutGrid.d.ts.map +1 -0
  20. package/dist/components/ui/SyutGrid/SyutGrid.js +306 -0
  21. package/dist/components/ui/SyutGrid/index.d.ts +3 -0
  22. package/dist/components/ui/SyutGrid/index.d.ts.map +1 -0
  23. package/dist/components/ui/SyutGrid/index.js +2 -0
  24. package/dist/components/ui/SyutSelect/SyutSelectUnified.d.ts +128 -0
  25. package/dist/components/ui/SyutSelect/SyutSelectUnified.d.ts.map +1 -0
  26. package/dist/components/ui/SyutSelect/SyutSelectUnified.js +679 -0
  27. package/dist/components/ui/SyutSelect/index.d.ts +3 -0
  28. package/dist/components/ui/SyutSelect/index.d.ts.map +1 -0
  29. package/dist/components/ui/SyutSelect/index.js +2 -0
  30. package/dist/icon-collection/icon-systems.d.ts +89 -0
  31. package/dist/icon-collection/icon-systems.d.ts.map +1 -0
  32. package/dist/icon-collection/icon-systems.js +70 -0
  33. package/dist/icon-collection/index.d.ts +4 -0
  34. package/dist/icon-collection/index.d.ts.map +1 -0
  35. package/dist/icon-collection/index.js +8 -0
  36. package/dist/index.d.ts +12 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +19 -1
  39. package/package.json +9 -4
  40. package/src/components/ChangePasswordModal.tsx +26 -14
  41. package/src/components/EnterpriseLayout.tsx +23 -8
  42. package/src/components/ui/ActionMenu/ActionMenu.tsx +222 -0
  43. package/src/components/ui/ActionMenu/index.ts +2 -0
  44. package/src/components/ui/ModuleHeader/ModuleHeader.tsx +722 -0
  45. package/src/components/ui/ModuleHeader/index.ts +9 -0
  46. package/src/components/ui/SyutGrid/SyutGrid.tsx +483 -0
  47. package/src/components/ui/SyutGrid/index.ts +2 -0
  48. package/src/components/ui/SyutSelect/SyutSelectUnified.tsx +1115 -0
  49. package/src/components/ui/SyutSelect/index.ts +3 -0
  50. package/src/icon-collection/icon-systems.tsx +464 -0
  51. package/src/icon-collection/index.ts +13 -0
  52. package/src/index.ts +47 -1
  53. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,3 @@
1
+ export { SyutSelectUnified, default } from './SyutSelectUnified';
2
+ export type { SyutSelectUnifiedProps, SelectOption } from './SyutSelectUnified';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/SyutSelect/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ // Unified Select Component (combines single/multi select with variants)
2
+ export { SyutSelectUnified, default } from './SyutSelectUnified';
@@ -0,0 +1,89 @@
1
+ /**
2
+ * ============================================================================
3
+ * ENTERPRISE PROFESSIONAL ICON SYSTEM v3.1 (FIXED)
4
+ * ============================================================================
5
+ *
6
+ * Professional outline icons for enterprise applications
7
+ * Simple, clean, monochrome design similar to industry standards
8
+ *
9
+ * Features:
10
+ * - Outline style (no fills)
11
+ * - Consistent stroke width
12
+ * - Monochrome (inherits color)
13
+ * - Professional appearance
14
+ * - Optimized for 16-20px sizes
15
+ *
16
+ * Usage:
17
+ * import { IconSystem } from '@syuttechnologies/layout';
18
+ * <IconSystem.add size={18} />
19
+ * <IconSystem.edit size={16} color="var(--primary)" />
20
+ *
21
+ * ============================================================================
22
+ */
23
+ import React from 'react';
24
+ export interface IconProps {
25
+ size?: number;
26
+ color?: string;
27
+ strokeWidth?: number;
28
+ className?: string;
29
+ style?: React.CSSProperties;
30
+ onClick?: (event: React.MouseEvent<SVGSVGElement>) => void;
31
+ }
32
+ declare const IconSystem: {
33
+ home: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
34
+ menu: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
35
+ dashboard: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
36
+ list: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
37
+ grid: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
38
+ add: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
39
+ edit: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
40
+ trash: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
41
+ save: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
42
+ cancel: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
43
+ x: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
44
+ search: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
45
+ filter: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
46
+ refresh: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
47
+ exportIcon: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
48
+ importIcon: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
49
+ download: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
50
+ upload: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
51
+ print: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
52
+ file: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
53
+ folder: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
54
+ copy: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
55
+ chevronLeft: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
56
+ chevronRight: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
57
+ chevronUp: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
58
+ chevronDown: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
59
+ arrowLeft: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
60
+ arrowRight: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
61
+ check: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
62
+ checkCircle: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
63
+ xCircle: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
64
+ alert: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
65
+ warning: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
66
+ info: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
67
+ eye: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
68
+ eyeOff: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
69
+ user: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
70
+ users: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
71
+ settings: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
72
+ moreVertical: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
73
+ moreHorizontal: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
74
+ mail: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
75
+ message: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
76
+ bell: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
77
+ lock: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
78
+ unlock: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
79
+ calendar: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
80
+ clock: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
81
+ chart: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
82
+ trendingUp: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
83
+ trendingDown: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
84
+ dollarSign: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
85
+ tag: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
86
+ link: ({ size, color, strokeWidth, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
87
+ };
88
+ export default IconSystem;
89
+ //# sourceMappingURL=icon-systems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-systems.d.ts","sourceRoot":"","sources":["../../src/icon-collection/icon-systems.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC5D;AAED,QAAA,MAAM,UAAU;mDAI2D,SAAS;mDAOT,SAAS;wDAQJ,SAAS;mDASd,SAAS;mDAWT,SAAS;kDAWV,SAAS;mDAOR,SAAS;oDAOR,SAAS;mDASV,SAAS;qDAQP,SAAS;gDAQd,SAAS;qDASJ,SAAS;qDAOT,SAAS;sDAMR,SAAS;yDAUN,SAAS;yDAQT,SAAS;uDAQX,SAAS;qDAQX,SAAS;oDAQV,SAAS;mDAUV,SAAS;qDAOP,SAAS;mDAMX,SAAS;0DASF,SAAS;2DAMR,SAAS;wDAMZ,SAAS;0DAMP,SAAS;wDAMX,SAAS;yDAOR,SAAS;oDASd,SAAS;0DAMH,SAAS;sDAOb,SAAS;oDAQX,SAAS;sDAQP,SAAS;mDAQZ,SAAS;kDAUV,SAAS;qDAON,SAAS;mDASX,SAAS;oDAOR,SAAS;uDASN,SAAS;2DAQL,SAAS;6DAQP,SAAS;mDAUnB,SAAS;sDAON,SAAS;mDAMZ,SAAS;mDAST,SAAS;qDAOP,SAAS;uDAOP,SAAS;oDASZ,SAAS;oDAST,SAAS;yDAQJ,SAAS;2DAOP,SAAS;yDAOX,SAAS;kDAOhB,SAAS;mDAOR,SAAS;CAOnF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const IconSystem = {
3
+ // ========== NAVIGATION ICONS ==========
4
+ home: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }), _jsx("polyline", { points: "9 22 9 12 15 12 15 22" })] })),
5
+ menu: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "3", y1: "12", x2: "21", y2: "12" }), _jsx("line", { x1: "3", y1: "6", x2: "21", y2: "6" }), _jsx("line", { x1: "3", y1: "18", x2: "21", y2: "18" })] })),
6
+ dashboard: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "3", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "14", width: "7", height: "7" }), _jsx("rect", { x: "3", y: "14", width: "7", height: "7" })] })),
7
+ list: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "8", y1: "6", x2: "21", y2: "6" }), _jsx("line", { x1: "8", y1: "12", x2: "21", y2: "12" }), _jsx("line", { x1: "8", y1: "18", x2: "21", y2: "18" }), _jsx("line", { x1: "3", y1: "6", x2: "3.01", y2: "6" }), _jsx("line", { x1: "3", y1: "12", x2: "3.01", y2: "12" }), _jsx("line", { x1: "3", y1: "18", x2: "3.01", y2: "18" })] })),
8
+ grid: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "3", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "14", width: "7", height: "7" }), _jsx("rect", { x: "3", y: "14", width: "7", height: "7" })] })),
9
+ // ========== PRIMARY ACTIONS ==========
10
+ add: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), _jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] })),
11
+ edit: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }), _jsx("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })] })),
12
+ trash: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("polyline", { points: "3 6 5 6 21 6" }), _jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }), _jsx("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), _jsx("line", { x1: "14", y1: "11", x2: "14", y2: "17" })] })),
13
+ save: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" }), _jsx("polyline", { points: "17 21 17 13 7 13 7 21" }), _jsx("polyline", { points: "7 3 7 8 15 8" })] })),
14
+ cancel: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] })),
15
+ x: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] })),
16
+ // ========== SEARCH & FILTER ==========
17
+ search: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "11", cy: "11", r: "8" }), _jsx("path", { d: "m21 21-4.35-4.35" })] })),
18
+ filter: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" }) })),
19
+ refresh: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("polyline", { points: "23 4 23 10 17 10" }), _jsx("polyline", { points: "1 20 1 14 7 14" }), _jsx("path", { d: "M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" })] })),
20
+ // ========== DATA OPERATIONS ==========
21
+ exportIcon: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] })),
22
+ importIcon: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "17 8 12 3 7 8" }), _jsx("line", { x1: "12", y1: "3", x2: "12", y2: "15" })] })),
23
+ download: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] })),
24
+ upload: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "17 8 12 3 7 8" }), _jsx("line", { x1: "12", y1: "3", x2: "12", y2: "15" })] })),
25
+ print: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("polyline", { points: "6 9 6 2 18 2 18 9" }), _jsx("path", { d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" }), _jsx("rect", { x: "6", y: "14", width: "12", height: "8" })] })),
26
+ // ========== FILE OPERATIONS ==========
27
+ file: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" }), _jsx("polyline", { points: "13 2 13 9 20 9" })] })),
28
+ folder: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("path", { d: "M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" }) })),
29
+ copy: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }), _jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })] })),
30
+ // ========== NAVIGATION ARROWS ==========
31
+ chevronLeft: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polyline", { points: "15 18 9 12 15 6" }) })),
32
+ chevronRight: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polyline", { points: "9 18 15 12 9 6" }) })),
33
+ chevronUp: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polyline", { points: "18 15 12 9 6 15" }) })),
34
+ chevronDown: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polyline", { points: "6 9 12 15 18 9" }) })),
35
+ arrowLeft: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "19", y1: "12", x2: "5", y2: "12" }), _jsx("polyline", { points: "12 19 5 12 12 5" })] })),
36
+ arrowRight: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), _jsx("polyline", { points: "12 5 19 12 12 19" })] })),
37
+ // ========== STATUS ICONS ==========
38
+ check: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("polyline", { points: "20 6 9 17 4 12" }) })),
39
+ checkCircle: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }), _jsx("polyline", { points: "22 4 12 14.01 9 11.01" })] })),
40
+ xCircle: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] })),
41
+ alert: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }), _jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }), _jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })] })),
42
+ warning: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }), _jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }), _jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })] })),
43
+ info: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })] })),
44
+ // ========== VIEW & VISIBILITY ==========
45
+ eye: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] })),
46
+ eyeOff: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24" }), _jsx("line", { x1: "1", y1: "1", x2: "23", y2: "23" })] })),
47
+ // ========== USER & PEOPLE ==========
48
+ user: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }), _jsx("circle", { cx: "12", cy: "7", r: "4" })] })),
49
+ users: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }), _jsx("circle", { cx: "9", cy: "7", r: "4" }), _jsx("path", { d: "M23 21v-2a4 4 0 0 0-3-3.87" }), _jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })] })),
50
+ settings: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "3" }), _jsx("path", { d: "M12 1v6m0 6v6m-7-7h6m6 0h6m-6-7L9.879 5.121M5.121 9.879 8 12.828M12 21l7.071-7.071M15.172 8l4.95-4.95" }), _jsx("path", { d: "M19.071 19.071 15.172 16m-7.071 0-4.95 4.95M8.828 8 3.88 3.05" })] })),
51
+ moreVertical: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: color, stroke: "none", strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "2" }), _jsx("circle", { cx: "12", cy: "5", r: "2" }), _jsx("circle", { cx: "12", cy: "19", r: "2" })] })),
52
+ moreHorizontal: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: color, stroke: "none", strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "2" }), _jsx("circle", { cx: "19", cy: "12", r: "2" }), _jsx("circle", { cx: "5", cy: "12", r: "2" })] })),
53
+ // ========== COMMUNICATION ==========
54
+ mail: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" }), _jsx("polyline", { points: "22,6 12,13 2,6" })] })),
55
+ message: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: _jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }) })),
56
+ bell: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" }), _jsx("path", { d: "M13.73 21a2 2 0 0 1-3.46 0" })] })),
57
+ // ========== SECURITY ==========
58
+ lock: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] })),
59
+ unlock: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] })),
60
+ calendar: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), _jsx("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), _jsx("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), _jsx("line", { x1: "3", y1: "10", x2: "21", y2: "10" })] })),
61
+ clock: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("polyline", { points: "12 6 12 12 16 14" })] })),
62
+ // ========== BUSINESS & ANALYTICS ==========
63
+ chart: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "18", y1: "20", x2: "18", y2: "10" }), _jsx("line", { x1: "12", y1: "20", x2: "12", y2: "4" }), _jsx("line", { x1: "6", y1: "20", x2: "6", y2: "14" })] })),
64
+ trendingUp: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("polyline", { points: "23 6 13.5 15.5 8.5 10.5 1 18" }), _jsx("polyline", { points: "17 6 23 6 23 12" })] })),
65
+ trendingDown: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("polyline", { points: "23 18 13.5 8.5 8.5 13.5 1 6" }), _jsx("polyline", { points: "17 18 23 18 23 12" })] })),
66
+ dollarSign: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("line", { x1: "12", y1: "1", x2: "12", y2: "23" }), _jsx("path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" })] })),
67
+ tag: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z" }), _jsx("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })] })),
68
+ link: ({ size = 18, color = 'currentColor', strokeWidth = 2, ...props }) => (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [_jsx("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }), _jsx("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })] })),
69
+ };
70
+ export default IconSystem;
@@ -0,0 +1,4 @@
1
+ export { default } from './icon-systems';
2
+ export { default as IconSystem } from './icon-systems';
3
+ export type { IconProps } from './icon-systems';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icon-collection/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGvD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ // ============================================================================
2
+ // ICON SYSTEM BARREL EXPORTS
3
+ // ============================================================================
4
+ // Centralized export point for the icon system
5
+ // Default export (recommended usage)
6
+ export { default } from './icon-systems';
7
+ // Named export (alternative usage)
8
+ export { default as IconSystem } from './icon-systems';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @prima/layout - Enterprise React Layout Library
2
+ * @syuttechnologies/layout - Enterprise React Layout Library
3
3
  *
4
4
  * A comprehensive layout system for React applications featuring:
5
5
  * - Enterprise-grade sidebar navigation with multi-level menus
@@ -8,9 +8,20 @@
8
8
  * - Notification system
9
9
  * - Responsive design
10
10
  * - Change password modal
11
+ * - Data Grid Component (SyutGrid)
12
+ * - Select Component (SyutSelect)
13
+ * - Icon System
14
+ * - Action Menu
11
15
  */
12
16
  export { EnterpriseLayout, type EnterpriseLayoutProps, type ComponentRegistry, type LogoConfig, type Colors, type BrandingConfig, type LayoutConfig, type FooterConfig, type UserConfig, type NavigationItem, type NavigationSection, type CompactModeItem, type ToolbarAction, type ModuleConfig, type ModulesConfig, type HooksConfig, type EnterpriseLayoutConfig, type TabData, type IconSystemType, type StoredModuleConfig, } from './components/EnterpriseLayout';
13
17
  export { default } from './components/EnterpriseLayout';
14
18
  export { ChangePasswordModal, type ChangePasswordModalProps, type ChangePasswordData, type PasswordValidationRules, } from './components/ChangePasswordModal';
15
19
  export { notificationService, type NotificationType, type NotificationPayload, type Notification, } from './services/notificationService';
20
+ export { default as IconSystem } from './icon-collection/icon-systems';
21
+ export type { IconProps } from './icon-collection/icon-systems';
22
+ export { ActionMenu, type ActionMenuProps, type ActionMenuItem, type ProcessedActionMenuItem, } from './components/ui/ActionMenu';
23
+ export { SyutGrid, type SyutGridProps, type SyutGridColumn, } from './components/ui/SyutGrid';
24
+ export { SyutSelectUnified, SyutSelectUnified as SyutSelect, // Alias for convenience
25
+ type SyutSelectUnifiedProps, type SelectOption, } from './components/ui/SyutSelect';
26
+ export { ModuleHeader, type ModuleHeaderProps, type ActionButton, type ViewModeOption, type SearchConfig, type ViewModeConfig, type FilterConfig, } from './components/ui/ModuleHeader';
16
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGxD,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGxD,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,UAAU,EAAE,wBAAwB;AACzD,KAAK,sBAAsB,EAC3B,KAAK,YAAY,GAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @prima/layout - Enterprise React Layout Library
2
+ * @syuttechnologies/layout - Enterprise React Layout Library
3
3
  *
4
4
  * A comprehensive layout system for React applications featuring:
5
5
  * - Enterprise-grade sidebar navigation with multi-level menus
@@ -8,6 +8,10 @@
8
8
  * - Notification system
9
9
  * - Responsive design
10
10
  * - Change password modal
11
+ * - Data Grid Component (SyutGrid)
12
+ * - Select Component (SyutSelect)
13
+ * - Icon System
14
+ * - Action Menu
11
15
  */
12
16
  // Main Layout Component
13
17
  export { EnterpriseLayout, } from './components/EnterpriseLayout';
@@ -16,3 +20,17 @@ export { default } from './components/EnterpriseLayout';
16
20
  export { ChangePasswordModal, } from './components/ChangePasswordModal';
17
21
  // Notification Service
18
22
  export { notificationService, } from './services/notificationService';
23
+ // ============================================================================
24
+ // UI COMPONENTS
25
+ // ============================================================================
26
+ // Icon System
27
+ export { default as IconSystem } from './icon-collection/icon-systems';
28
+ // Action Menu Component
29
+ export { ActionMenu, } from './components/ui/ActionMenu';
30
+ // SyutGrid - Data Grid Component
31
+ export { SyutGrid, } from './components/ui/SyutGrid';
32
+ // SyutSelect - Unified Select Component
33
+ export { SyutSelectUnified, SyutSelectUnified as SyutSelect, // Alias for convenience
34
+ } from './components/ui/SyutSelect';
35
+ // ModuleHeader - Reusable Header Component for Master Screens
36
+ export { ModuleHeader, } from './components/ui/ModuleHeader';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@syuttechnologies/layout",
3
- "version": "1.0.2",
4
- "description": "Enterprise React Layout Component",
3
+ "version": "1.0.21",
4
+ "description": "Enterprise React Layout Component with UI Components",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
@@ -10,7 +10,9 @@
10
10
  },
11
11
  "peerDependencies": {
12
12
  "react": "^18.0.0 || ^19.0.0",
13
- "react-dom": "^18.0.0 || ^19.0.0"
13
+ "react-dom": "^18.0.0 || ^19.0.0",
14
+ "@tanstack/react-table": "^8.0.0",
15
+ "react-select": "^5.0.0"
14
16
  },
15
17
  "devDependencies": {
16
18
  "@types/react": "^19.0.0",
@@ -21,7 +23,10 @@
21
23
  "react",
22
24
  "layout",
23
25
  "enterprise",
24
- "dashboard"
26
+ "dashboard",
27
+ "grid",
28
+ "select",
29
+ "ui-components"
25
30
  ],
26
31
  "license": "MIT"
27
32
  }
@@ -135,21 +135,27 @@ const styles = {
135
135
  backdrop: {
136
136
  position: 'fixed' as const,
137
137
  inset: 0,
138
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
139
- zIndex: 9998,
138
+ backgroundColor: 'rgba(0, 0, 0, 0.6)',
139
+ backdropFilter: 'blur(4px)',
140
+ zIndex: 10040,
141
+ overflowY: 'auto' as const,
142
+ overflowX: 'hidden' as const,
143
+ },
144
+ scrollWrapper: {
145
+ minHeight: '100%',
146
+ display: 'flex',
147
+ alignItems: 'center',
148
+ justifyContent: 'center',
149
+ padding: '2rem 1rem',
140
150
  },
141
151
  modal: {
142
- position: 'fixed' as const,
143
- top: '50%',
144
- left: '50%',
145
- transform: 'translate(-50%, -50%)',
152
+ position: 'relative' as const,
146
153
  backgroundColor: 'white',
147
154
  borderRadius: '12px',
148
- boxShadow: '0 20px 50px rgba(0, 0, 0, 0.3)',
155
+ boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.4)',
149
156
  width: '100%',
150
157
  maxWidth: '440px',
151
- zIndex: 9999,
152
- overflow: 'hidden',
158
+ zIndex: 10050,
153
159
  },
154
160
  header: {
155
161
  display: 'flex',
@@ -158,6 +164,7 @@ const styles = {
158
164
  padding: '1.25rem 1.5rem',
159
165
  borderBottom: '1px solid #e2e8f0',
160
166
  background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
167
+ borderRadius: '12px 12px 0 0',
161
168
  },
162
169
  headerTitle: {
163
170
  display: 'flex',
@@ -182,6 +189,9 @@ const styles = {
182
189
  },
183
190
  content: {
184
191
  padding: '1.5rem',
192
+ overflowY: 'auto' as const,
193
+ flex: 1,
194
+ minHeight: 0,
185
195
  },
186
196
  formGroup: {
187
197
  marginBottom: '1.25rem',
@@ -283,6 +293,7 @@ const styles = {
283
293
  padding: '1rem 1.5rem',
284
294
  borderTop: '1px solid #e2e8f0',
285
295
  backgroundColor: '#f8fafc',
296
+ flexShrink: 0,
286
297
  },
287
298
  button: {
288
299
  padding: '0.625rem 1.25rem',
@@ -422,9 +433,9 @@ export const ChangePasswordModal: React.FC<ChangePasswordModalProps> = ({
422
433
  const loading = isSubmitting || externalLoading;
423
434
 
424
435
  return (
425
- <>
426
- <div style={styles.backdrop} onClick={handleClose} />
427
- <div style={styles.modal}>
436
+ <div style={styles.backdrop} onClick={handleClose}>
437
+ <div style={styles.scrollWrapper}>
438
+ <div style={styles.modal} onClick={(e) => e.stopPropagation()}>
428
439
  <div style={styles.header}>
429
440
  <h2 style={styles.headerTitle}>
430
441
  <LockIcon />
@@ -435,7 +446,7 @@ export const ChangePasswordModal: React.FC<ChangePasswordModalProps> = ({
435
446
  </button>
436
447
  </div>
437
448
 
438
- <form onSubmit={handleSubmit}>
449
+ <form onSubmit={handleSubmit} style={{ display: 'flex', flexDirection: 'column', flex: 1, minHeight: 0 }}>
439
450
  <div style={styles.content}>
440
451
  {getFieldError('general') && (
441
452
  <div style={{ padding: '0.75rem', backgroundColor: '#fef2f2', border: '1px solid #fecaca', borderRadius: '8px', marginBottom: '1rem', color: '#dc2626', fontSize: '0.875rem' }}>
@@ -537,8 +548,9 @@ export const ChangePasswordModal: React.FC<ChangePasswordModalProps> = ({
537
548
  </button>
538
549
  </div>
539
550
  </form>
551
+ </div>
540
552
  </div>
541
- </>
553
+ </div>
542
554
  );
543
555
  };
544
556
 
@@ -331,9 +331,6 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
331
331
  setDynamicNavigation(parsedNavigation);
332
332
  // Update expanded sections for the new navigation
333
333
  setExpandedSections(new Set(parsedNavigation.map((n: NavigationSection) => n.section)));
334
- setExpandedOverviewSections(
335
- new Set(parsedNavigation.filter((sec: NavigationSection) => sec.section !== "Dashboard").map((sec: NavigationSection) => sec.section))
336
- );
337
334
  }
338
335
  } catch (error) {
339
336
  console.error('Failed to parse navigation menu from localStorage:', error);
@@ -367,6 +364,23 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
367
364
  }
368
365
  }, []);
369
366
 
367
+ // Sync dynamicModules when config.modules prop changes (if no localStorage override)
368
+ useEffect(() => {
369
+ const storedModules = localStorage.getItem('MODULES_CONFIG');
370
+ if (!storedModules && config.modules) {
371
+ setDynamicModules(config.modules);
372
+ }
373
+ }, [config.modules]);
374
+
375
+ // Sync dynamicNavigation when config.navigation prop changes (if no localStorage override)
376
+ useEffect(() => {
377
+ const storedNavigation = localStorage.getItem('NAVIGATION_MENU');
378
+ if (!storedNavigation && config.navigation) {
379
+ setDynamicNavigation(config.navigation);
380
+ setExpandedSections(new Set(config.navigation.map((n: NavigationSection) => n.section)));
381
+ }
382
+ }, [config.navigation]);
383
+
370
384
  // User preference for auto-collapse (configurable)
371
385
  const [autoCollapseEnabled, setAutoCollapseEnabled] = useState<boolean>(
372
386
  config.layout.autoCollapseSidebar
@@ -374,7 +388,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
374
388
 
375
389
  // Overview tab section management
376
390
  const [expandedOverviewSections, setExpandedOverviewSections] = useState<Set<string>>(
377
- new Set(config.navigation.filter(sec => sec.section !== "Dashboard").map(sec => sec.section))
391
+ new Set()
378
392
  );
379
393
 
380
394
  // React 18 Concurrent Features
@@ -1539,7 +1553,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
1539
1553
 
1540
1554
  .tab-content-area {
1541
1555
  flex: 1;
1542
- overflow: hidden;
1556
+ overflow: auto;
1543
1557
  width: 100%;
1544
1558
  height: 100%;
1545
1559
  min-height: 0;
@@ -1551,7 +1565,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
1551
1565
  display: none;
1552
1566
  width: 100%;
1553
1567
  height: 100%;
1554
- overflow: hidden;
1568
+ overflow: auto;
1555
1569
  box-sizing: border-box;
1556
1570
  }
1557
1571
 
@@ -1837,6 +1851,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
1837
1851
  cursor: pointer;
1838
1852
  transition: all 0.3s ease;
1839
1853
  flex-shrink: 0;
1854
+ z-index: 10002;
1840
1855
  }
1841
1856
 
1842
1857
  .persona-control:hover {
@@ -1877,7 +1892,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
1877
1892
  border-radius: 1rem;
1878
1893
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1879
1894
  padding: 1rem;
1880
- z-index: 1001;
1895
+ z-index: 10001;
1881
1896
  margin-top: 0.5rem;
1882
1897
  opacity: 0;
1883
1898
  visibility: hidden;
@@ -3483,7 +3498,7 @@ export const EnterpriseLayout: React.FC<EnterpriseLayoutProps> = ({
3483
3498
  <div className="persona-control-item">
3484
3499
  <div className="persona-control-label">
3485
3500
  <IconSystem.settings />
3486
- Dark Mode=5
3501
+ Dark Mode-7
3487
3502
  </div>
3488
3503
  <div
3489
3504
  className={`theme-switch ${darkMode ? "active" : ""}`}