ece-docs-components 1.0.4 → 1.0.6

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 (135) hide show
  1. package/dist/ThemeProvider.d.ts +12 -0
  2. package/dist/ThemeProvider.d.ts.map +1 -1
  3. package/dist/cjs/ThemeProvider.js +158 -0
  4. package/dist/cjs/ThemeProvider.js.map +1 -0
  5. package/dist/cjs/components/ActionButton.js +31 -0
  6. package/dist/cjs/components/ActionButton.js.map +1 -0
  7. package/dist/cjs/components/Alert.js +79 -0
  8. package/dist/cjs/components/Alert.js.map +1 -0
  9. package/dist/cjs/components/Breadcrumb.js +120 -0
  10. package/dist/cjs/components/Breadcrumb.js.map +1 -0
  11. package/dist/cjs/components/Button.js +109 -0
  12. package/dist/cjs/components/Button.js.map +1 -0
  13. package/dist/cjs/components/Card.js +45 -0
  14. package/dist/cjs/components/Card.js.map +1 -0
  15. package/dist/cjs/components/Checkbox.js +42 -0
  16. package/dist/cjs/components/Checkbox.js.map +1 -0
  17. package/dist/cjs/components/Concertina.js +153 -0
  18. package/dist/cjs/components/Concertina.js.map +1 -0
  19. package/dist/cjs/components/DefinitionBox.js +77 -0
  20. package/dist/cjs/components/DefinitionBox.js.map +1 -0
  21. package/dist/cjs/components/Header.js +177 -0
  22. package/dist/cjs/components/Header.js.map +1 -0
  23. package/dist/cjs/components/Input.js +77 -0
  24. package/dist/cjs/components/Input.js.map +1 -0
  25. package/dist/cjs/components/Modal.js +114 -0
  26. package/dist/cjs/components/Modal.js.map +1 -0
  27. package/dist/cjs/components/NoteBox.js +111 -0
  28. package/dist/cjs/components/NoteBox.js.map +1 -0
  29. package/dist/cjs/components/Progress.js +83 -0
  30. package/dist/cjs/components/Progress.js.map +1 -0
  31. package/dist/cjs/components/Radio.js +61 -0
  32. package/dist/cjs/components/Radio.js.map +1 -0
  33. package/dist/cjs/components/ReadBy.js +58 -0
  34. package/dist/cjs/components/ReadBy.js.map +1 -0
  35. package/dist/cjs/components/Select.js +96 -0
  36. package/dist/cjs/components/Select.js.map +1 -0
  37. package/dist/cjs/components/Sidebar.js +206 -0
  38. package/dist/cjs/components/Sidebar.js.map +1 -0
  39. package/dist/cjs/components/SimpleModal.js +40 -0
  40. package/dist/cjs/components/SimpleModal.js.map +1 -0
  41. package/dist/cjs/components/StatusBar.js +64 -0
  42. package/dist/cjs/components/StatusBar.js.map +1 -0
  43. package/dist/cjs/components/TableOfContents.js +62 -0
  44. package/dist/cjs/components/TableOfContents.js.map +1 -0
  45. package/dist/cjs/components/Tabs.js +97 -0
  46. package/dist/cjs/components/Tabs.js.map +1 -0
  47. package/dist/cjs/components/Toggle.js +60 -0
  48. package/dist/cjs/components/Toggle.js.map +1 -0
  49. package/dist/cjs/index.js +57 -0
  50. package/dist/cjs/index.js.map +1 -0
  51. package/dist/components/Button.d.ts.map +1 -1
  52. package/dist/components/index.d.ts.map +1 -1
  53. package/dist/esm/ThemeProvider.d.ts +117 -0
  54. package/dist/esm/ThemeProvider.js +136 -0
  55. package/dist/esm/ThemeProvider.js.map +1 -0
  56. package/dist/esm/components/ActionButton.d.ts +11 -0
  57. package/dist/esm/components/ActionButton.js +29 -0
  58. package/dist/esm/components/ActionButton.js.map +1 -0
  59. package/dist/esm/components/Alert.d.ts +11 -0
  60. package/dist/esm/components/Alert.js +77 -0
  61. package/dist/esm/components/Alert.js.map +1 -0
  62. package/dist/esm/components/Breadcrumb.d.ts +13 -0
  63. package/dist/esm/components/Breadcrumb.js +118 -0
  64. package/dist/esm/components/Breadcrumb.js.map +1 -0
  65. package/dist/esm/components/Button.d.ts +8 -0
  66. package/dist/esm/components/Button.js +107 -0
  67. package/dist/esm/components/Button.js.map +1 -0
  68. package/dist/esm/components/Card.d.ts +11 -0
  69. package/dist/esm/components/Card.js +43 -0
  70. package/dist/esm/components/Card.js.map +1 -0
  71. package/dist/esm/components/Checkbox.d.ts +8 -0
  72. package/dist/esm/components/Checkbox.js +40 -0
  73. package/dist/esm/components/Checkbox.js.map +1 -0
  74. package/dist/esm/components/Concertina.d.ts +10 -0
  75. package/dist/esm/components/Concertina.js +151 -0
  76. package/dist/esm/components/Concertina.js.map +1 -0
  77. package/dist/esm/components/DefinitionBox.d.ts +8 -0
  78. package/dist/esm/components/DefinitionBox.js +75 -0
  79. package/dist/esm/components/DefinitionBox.js.map +1 -0
  80. package/dist/esm/components/Header.d.ts +7 -0
  81. package/dist/esm/components/Header.js +175 -0
  82. package/dist/esm/components/Header.js.map +1 -0
  83. package/dist/esm/components/Input.d.ts +7 -0
  84. package/dist/esm/components/Input.js +75 -0
  85. package/dist/esm/components/Input.js.map +1 -0
  86. package/dist/esm/components/Modal.d.ts +20 -0
  87. package/dist/esm/components/Modal.js +112 -0
  88. package/dist/esm/components/Modal.js.map +1 -0
  89. package/dist/esm/components/NoteBox.d.ts +10 -0
  90. package/dist/esm/components/NoteBox.js +109 -0
  91. package/dist/esm/components/NoteBox.js.map +1 -0
  92. package/dist/esm/components/Progress.d.ts +15 -0
  93. package/dist/esm/components/Progress.js +80 -0
  94. package/dist/esm/components/Progress.js.map +1 -0
  95. package/dist/esm/components/Radio.d.ts +14 -0
  96. package/dist/esm/components/Radio.js +58 -0
  97. package/dist/esm/components/Radio.js.map +1 -0
  98. package/dist/esm/components/ReadBy.d.ts +6 -0
  99. package/dist/esm/components/ReadBy.js +56 -0
  100. package/dist/esm/components/ReadBy.js.map +1 -0
  101. package/dist/esm/components/Select.d.ts +19 -0
  102. package/dist/esm/components/Select.js +94 -0
  103. package/dist/esm/components/Select.js.map +1 -0
  104. package/dist/esm/components/Sidebar.d.ts +10 -0
  105. package/dist/esm/components/Sidebar.js +204 -0
  106. package/dist/esm/components/Sidebar.js.map +1 -0
  107. package/dist/esm/components/SimpleModal.d.ts +9 -0
  108. package/dist/esm/components/SimpleModal.js +38 -0
  109. package/dist/esm/components/SimpleModal.js.map +1 -0
  110. package/dist/esm/components/StatusBar.d.ts +9 -0
  111. package/dist/esm/components/StatusBar.js +62 -0
  112. package/dist/esm/components/StatusBar.js.map +1 -0
  113. package/dist/esm/components/TableOfContents.d.ts +11 -0
  114. package/dist/esm/components/TableOfContents.js +60 -0
  115. package/dist/esm/components/TableOfContents.js.map +1 -0
  116. package/dist/esm/components/Tabs.d.ts +12 -0
  117. package/dist/esm/components/Tabs.js +95 -0
  118. package/dist/esm/components/Tabs.js.map +1 -0
  119. package/dist/esm/components/Toggle.d.ts +8 -0
  120. package/dist/esm/components/Toggle.js +58 -0
  121. package/dist/esm/components/Toggle.js.map +1 -0
  122. package/dist/esm/components/index.d.ts +22 -0
  123. package/dist/esm/index.d.ts +25 -0
  124. package/dist/esm/index.js +26 -0
  125. package/dist/esm/index.js.map +1 -0
  126. package/dist/esm/theme-types.d.ts +39 -0
  127. package/dist/{index.esm.js → index.cjs} +317 -190
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +22 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +272 -190
  132. package/dist/index.js.map +1 -1
  133. package/dist/theme-types.d.ts.map +1 -1
  134. package/package.json +18 -11
  135. package/dist/index.esm.js.map +0 -1
@@ -22,6 +22,10 @@ declare const themeConfigs: {
22
22
  markedRead: {
23
23
  main: string;
24
24
  };
25
+ text: {
26
+ primary: string;
27
+ secondary: string;
28
+ };
25
29
  custom: {
26
30
  iconColor: string;
27
31
  primaryButtonTextColor: string;
@@ -53,6 +57,10 @@ declare const themeConfigs: {
53
57
  markedRead: {
54
58
  main: string;
55
59
  };
60
+ text: {
61
+ primary: string;
62
+ secondary: string;
63
+ };
56
64
  custom: {
57
65
  primaryButtonTextColor: string;
58
66
  stepIndicatorTextColor: string;
@@ -80,6 +88,10 @@ declare const themeConfigs: {
80
88
  markedRead: {
81
89
  main: string;
82
90
  };
91
+ text: {
92
+ primary: string;
93
+ secondary: string;
94
+ };
83
95
  custom: {
84
96
  iconColor: string;
85
97
  primaryButtonTextColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../src/ThemeProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAqC,MAAM,sBAAsB,CAAC;AAEtF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,eAAe,CAAC;AAgCvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,YAAY,CAAC;AAOjD,UAAU,gBAAgB;IACxB,YAAY,EAAE,QAAQ,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CACvC;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAajE,CAAC;AAEF,eAAO,MAAM,QAAQ,wBAMpB,CAAC"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../src/ThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAqC,MAAM,sBAAsB,CAAC;AAEtF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,eAAe,CAAC;AAgDvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,YAAY,CAAC;AAMjD,UAAU,gBAAgB;IACxB,YAAY,EAAE,QAAQ,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CACvC;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAYjE,CAAC;AAEF,eAAO,MAAM,QAAQ,wBAMpB,CAAC"}
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@mui/material/styles');
5
+ var utils = require('@mui/utils');
6
+ var React = require('react');
7
+
8
+ function _interopNamespaceDefault(e) {
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
26
+
27
+ const baseTheme = styles.createTheme({
28
+ palette: {
29
+ text: {
30
+ primary: '#4D3019',
31
+ secondary: '#826E5C',
32
+ }
33
+ },
34
+ typography: {
35
+ fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),
36
+ allVariants: {
37
+ color: '#4D3019'
38
+ }
39
+ },
40
+ components: {
41
+ MuiTypography: {
42
+ styleOverrides: {
43
+ root: {
44
+ color: '#4D3019',
45
+ },
46
+ },
47
+ },
48
+ MuiCssBaseline: {
49
+ styleOverrides: {
50
+ body: {
51
+ WebkitFontSmoothing: 'antialiased',
52
+ MozOsxFontSmoothing: 'grayscale',
53
+ backgroundColor: '#FDFCEE',
54
+ color: '#4D3019',
55
+ },
56
+ 'input[type="checkbox"], input[type="radio"]': {
57
+ accentColor: '#D79AFC',
58
+ },
59
+ },
60
+ },
61
+ },
62
+ breakpoints: {
63
+ values: {
64
+ xs: 320,
65
+ sm: 640,
66
+ md: 768,
67
+ lg: 1024,
68
+ xl: 1280,
69
+ },
70
+ },
71
+ });
72
+ const themeConfigs = {
73
+ default: {
74
+ palette: {
75
+ primary: { main: '#AD46FF' },
76
+ secondary: { main: '#D79AFC' },
77
+ accent: { main: '#FFEDD1' },
78
+ dark: { main: '#4D3019' },
79
+ light: { main: '#FEFDF7' },
80
+ markedRead: { main: '#A3D977' },
81
+ text: {
82
+ primary: '#4D3019',
83
+ secondary: '#826E5C',
84
+ },
85
+ custom: {
86
+ iconColor: '#ebc7ff',
87
+ primaryButtonTextColor: '#FFFFFF',
88
+ readByBackgroundColor: '#ebc7ff',
89
+ stepIndicatorTextColor: '#FFFFFF',
90
+ markAsReadBackgroundColor: '#ebc7ff',
91
+ tabBackgroundColor: '#F8F0FC',
92
+ },
93
+ },
94
+ appName: 'ECE Docs',
95
+ },
96
+ school: {
97
+ palette: {
98
+ primary: { main: '#386e41' },
99
+ secondary: { main: '#8fc790' },
100
+ accent: { main: '#d5ebde' },
101
+ dark: { main: '#4D3019' },
102
+ light: { main: '#FEFDF7' },
103
+ markedRead: { main: '#A3D977' },
104
+ text: {
105
+ primary: '#4D3019',
106
+ secondary: '#826E5C',
107
+ },
108
+ custom: {
109
+ primaryButtonTextColor: '#FFFFFF',
110
+ stepIndicatorTextColor: '#FFFFFF',
111
+ },
112
+ },
113
+ appName: 'School Docs',
114
+ },
115
+ health: {
116
+ palette: {
117
+ primary: { main: '#4871cf' },
118
+ secondary: { main: '#a4d6ff' },
119
+ accent: { main: '#FF9ecb' },
120
+ dark: { main: '#4D3019' },
121
+ light: { main: '#FEFDF7' },
122
+ markedRead: { main: '#A3D977' },
123
+ text: {
124
+ primary: '#4D3019',
125
+ secondary: '#826E5C',
126
+ },
127
+ custom: {
128
+ iconColor: '#a4d6ff',
129
+ primaryButtonTextColor: '#FFFFFF',
130
+ markAsReadBorderColor: '#FF9ecb',
131
+ readByBackgroundColor: '#a4d6ff',
132
+ stepIndicatorTextColor: '#FFFFFF',
133
+ tabBackgroundColor: '#a4d6ff',
134
+ },
135
+ },
136
+ appName: 'GP Docs',
137
+ },
138
+ };
139
+ const createMuiTheme = (key) => {
140
+ return styles.createTheme(utils.deepmerge(baseTheme, themeConfigs[key]));
141
+ };
142
+ const ThemeContext = React__namespace.createContext(undefined);
143
+ const ThemeProvider = ({ children }) => {
144
+ const [currentTheme, setCurrentTheme] = React__namespace.useState('default');
145
+ const theme = React__namespace.useMemo(() => createMuiTheme(currentTheme), [currentTheme]);
146
+ return (jsxRuntime.jsx(ThemeContext.Provider, { value: { currentTheme, setTheme: setCurrentTheme, theme }, children: jsxRuntime.jsx(styles.ThemeProvider, { theme: theme, children: children }) }));
147
+ };
148
+ const useTheme = () => {
149
+ const context = React__namespace.useContext(ThemeContext);
150
+ if (context === undefined) {
151
+ throw new Error('useTheme must be used within a ThemeProvider');
152
+ }
153
+ return context;
154
+ };
155
+
156
+ exports.ThemeProvider = ThemeProvider;
157
+ exports.useTheme = useTheme;
158
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../src/ThemeProvider.tsx"],"sourcesContent":["import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\r\nimport { deepmerge } from '@mui/utils';\r\nimport * as React from 'react';\r\nimport './theme-types';\r\n\r\nconst baseTheme = createTheme({\r\n palette: {\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n }\r\n },\r\n typography: {\r\n fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),\r\n allVariants: {\r\n color: '#4D3019'\r\n }\r\n },\r\n components: {\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: '#4D3019',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n styleOverrides: {\r\n body: {\r\n WebkitFontSmoothing: 'antialiased',\r\n MozOsxFontSmoothing: 'grayscale',\r\n backgroundColor: '#FDFCEE',\r\n color: '#4D3019',\r\n },\r\n 'input[type=\"checkbox\"], input[type=\"radio\"]': {\r\n accentColor: '#D79AFC',\r\n },\r\n },\r\n },\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 320,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n },\r\n },\r\n});\r\n\r\nconst themeConfigs = {\r\n default: {\r\n palette: {\r\n primary: { main: '#AD46FF' },\r\n secondary: { main: '#D79AFC' },\r\n accent: { main: '#FFEDD1' },\r\n dark: { main: '#4D3019' },\r\n light: { main: '#FEFDF7' },\r\n markedRead: { main: '#A3D977' },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n },\r\n custom: {\r\n iconColor: '#ebc7ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n readByBackgroundColor: '#ebc7ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n markAsReadBackgroundColor: '#ebc7ff',\r\n tabBackgroundColor: '#F8F0FC',\r\n },\r\n },\r\n appName: 'ECE Docs',\r\n },\r\n school: {\r\n palette: {\r\n primary: { main: '#386e41' },\r\n secondary: { main: '#8fc790' },\r\n accent: { main: '#d5ebde' },\r\n dark: { main: '#4D3019' },\r\n light: { main: '#FEFDF7' },\r\n markedRead: { main: '#A3D977' },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n },\r\n custom: {\r\n primaryButtonTextColor: '#FFFFFF',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n },\r\n },\r\n appName: 'School Docs',\r\n },\r\n health: {\r\n palette: {\r\n primary: { main: '#4871cf' },\r\n secondary: { main: '#a4d6ff' },\r\n accent: { main: '#FF9ecb' },\r\n dark: { main: '#4D3019' },\r\n light: { main: '#FEFDF7' },\r\n markedRead: { main: '#A3D977' },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n },\r\n custom: {\r\n iconColor: '#a4d6ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n markAsReadBorderColor: '#FF9ecb',\r\n readByBackgroundColor: '#a4d6ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n tabBackgroundColor: '#a4d6ff',\r\n },\r\n },\r\n appName: 'GP Docs',\r\n },\r\n};\r\n\r\nexport type ThemeKey = keyof typeof themeConfigs;\r\n\r\nconst createMuiTheme = (key: ThemeKey) => {\r\n return createTheme(deepmerge(baseTheme, themeConfigs[key]));\r\n};\r\n\r\ninterface ThemeContextType {\r\n currentTheme: ThemeKey;\r\n setTheme: (theme: ThemeKey) => void;\r\n theme: ReturnType<typeof createTheme>;\r\n}\r\n\r\nconst ThemeContext = React.createContext<ThemeContextType | undefined>(undefined);\r\n\r\nexport const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const [currentTheme, setCurrentTheme] = React.useState<ThemeKey>('default');\r\n \r\n const theme = React.useMemo(() => createMuiTheme(currentTheme), [currentTheme]);\r\n\r\n return (\r\n <ThemeContext.Provider value={{ currentTheme, setTheme: setCurrentTheme, theme }}>\r\n <MuiThemeProvider theme={theme}>\r\n {children}\r\n </MuiThemeProvider>\r\n </ThemeContext.Provider>\r\n );\r\n};\r\n\r\nexport const useTheme = () => {\r\n const context = React.useContext(ThemeContext);\r\n if (context === undefined) {\r\n throw new Error('useTheme must be used within a ThemeProvider');\r\n }\r\n return context;\r\n};\r\n"],"names":["createTheme","deepmerge","React","_jsx","MuiThemeProvider"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var material = require('@mui/material');
6
+
7
+ const StyledIconButton = material.styled(material.IconButton)(({ theme }) => ({
8
+ width: 48,
9
+ height: 48,
10
+ borderRadius: (typeof theme.shape.borderRadius === 'string'
11
+ ? parseInt(theme.shape.borderRadius, 10)
12
+ : theme.shape.borderRadius || 4) * 2,
13
+ backgroundColor: '#fff',
14
+ border: `1px solid ${theme.palette.dark.main}1A`,
15
+ '&:hover': {
16
+ backgroundColor: '#f9fafb',
17
+ },
18
+ '& svg': {
19
+ color: '#4D3019',
20
+ transition: 'color 0.2s',
21
+ },
22
+ '&:hover svg': {
23
+ color: theme.palette.primary.main,
24
+ },
25
+ }));
26
+ const ActionButton = ({ icon: Icon, onClick, label, sx, }) => {
27
+ return (jsxRuntime.jsx(StyledIconButton, { onClick: onClick, "aria-label": label, sx: sx, children: jsxRuntime.jsx(Icon, {}) }));
28
+ };
29
+
30
+ exports.ActionButton = ActionButton;
31
+ //# sourceMappingURL=ActionButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButton.js","sources":["../../../../src/components/ActionButton.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { IconButton, styled, SxProps, Theme } from '@mui/material';\nimport { SvgIconComponent } from '@mui/icons-material';\n\ninterface ActionButtonProps {\n icon: SvgIconComponent;\n onClick?: () => void;\n label?: string;\n sx?: SxProps<Theme>;\n}\n\nconst StyledIconButton = styled(IconButton)(({ theme }) => ({\n width: 48,\n height: 48,\n borderRadius: (typeof theme.shape.borderRadius === 'string'\n ? parseInt(theme.shape.borderRadius, 10)\n : theme.shape.borderRadius || 4) * 2,\n backgroundColor: '#fff',\n border: `1px solid ${theme.palette.dark.main}1A`,\n '&:hover': {\n backgroundColor: '#f9fafb',\n },\n '& svg': {\n color: '#4D3019',\n transition: 'color 0.2s',\n },\n '&:hover svg': {\n color: theme.palette.primary.main,\n },\n}));\n\nexport const ActionButton: React.FC<ActionButtonProps> = ({\n icon: Icon,\n onClick,\n label,\n sx,\n}) => {\n return (\n <StyledIconButton\n onClick={onClick}\n aria-label={label}\n sx={sx}\n >\n <Icon />\n </StyledIconButton>\n );\n};"],"names":[],"mappings":";;;;;;AAaA;AACE;AACA;;;;AAIA;;AAEA;AACE;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACD;AACF;AAEM;AAML;AASF;;"}
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var material = require('@mui/material');
6
+ var iconsMaterial = require('@mui/icons-material');
7
+
8
+ const StyledAlert = material.styled(material.Alert)(({ theme, customvariant }) => {
9
+ const variants = {
10
+ info: {
11
+ backgroundColor: '#eff6ff',
12
+ borderColor: '#bfdbfe',
13
+ color: '#1e3a8a',
14
+ },
15
+ success: {
16
+ backgroundColor: '#f0fdf4',
17
+ borderColor: '#bbf7d0',
18
+ color: '#14532d',
19
+ },
20
+ warning: {
21
+ backgroundColor: '#fefce8',
22
+ borderColor: '#fef08a',
23
+ color: '#713f12',
24
+ },
25
+ error: {
26
+ backgroundColor: '#fef2f2',
27
+ borderColor: '#fecaca',
28
+ color: '#7f1d1d',
29
+ },
30
+ custom: {
31
+ backgroundColor: theme.palette.light.main,
32
+ borderColor: `${theme.palette.dark.main}33`,
33
+ color: theme.palette.dark.main,
34
+ },
35
+ };
36
+ const variantKey = customvariant || 'info';
37
+ const style = variants[variantKey];
38
+ return {
39
+ display: 'flex',
40
+ alignItems: 'flex-start',
41
+ gap: theme.spacing(1.5),
42
+ padding: theme.spacing(2),
43
+ border: `1px solid ${style.borderColor}`,
44
+ borderRadius: (typeof theme.shape.borderRadius === 'string'
45
+ ? parseInt(theme.shape.borderRadius, 10)
46
+ : theme.shape.borderRadius || 4) * 2,
47
+ backgroundColor: style.backgroundColor,
48
+ color: style.color,
49
+ '& .MuiAlert-icon': {
50
+ marginRight: 0,
51
+ padding: 0,
52
+ marginTop: '2px',
53
+ },
54
+ '& .MuiAlert-message': {
55
+ padding: 0,
56
+ flex: 1,
57
+ },
58
+ };
59
+ });
60
+ const Alert = ({ variant = 'info', children, className = '', icon = true, sx, }) => {
61
+ const iconMap = {
62
+ info: jsxRuntime.jsx(iconsMaterial.InfoOutlineRounded, { sx: { fontSize: 20 } }),
63
+ success: jsxRuntime.jsx(iconsMaterial.TaskAltRounded, { sx: { fontSize: 20 } }),
64
+ warning: jsxRuntime.jsx(iconsMaterial.ErrorOutlineRounded, { sx: { fontSize: 20 } }),
65
+ error: jsxRuntime.jsx(iconsMaterial.HighlightOffRounded, { sx: { fontSize: 20 } }),
66
+ custom: jsxRuntime.jsx(iconsMaterial.InfoOutlineRounded, { sx: { fontSize: 20 } }),
67
+ };
68
+ const severityMap = {
69
+ info: 'info',
70
+ success: 'success',
71
+ warning: 'warning',
72
+ error: 'error',
73
+ custom: 'info',
74
+ };
75
+ return (jsxRuntime.jsx(StyledAlert, { customvariant: variant, severity: severityMap[variant], icon: icon ? iconMap[variant] : false, className: className, sx: sx, children: children }));
76
+ };
77
+
78
+ exports.Alert = Alert;
79
+ //# sourceMappingURL=Alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.js","sources":["../../../../src/components/Alert.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Alert as MuiAlert, AlertProps as MuiAlertProps, styled, SxProps, Theme } from '@mui/material';\nimport InfoOutlineIcon from '@mui/icons-material/InfoOutline';\nimport { ErrorOutlineRounded, HighlightOffRounded, InfoOutlineRounded, TaskAltRounded } from '@mui/icons-material';\n\ninterface AlertProps {\n variant?: 'info' | 'success' | 'warning' | 'error' | 'custom';\n children: React.ReactNode;\n className?: string;\n icon?: boolean;\n sx?: SxProps<Theme>; \n}\n\nconst StyledAlert = styled(MuiAlert)<{ customvariant?: string }>(({ theme, customvariant }) => {\n const variants = {\n info: {\n backgroundColor: '#eff6ff',\n borderColor: '#bfdbfe',\n color: '#1e3a8a',\n },\n success: {\n backgroundColor: '#f0fdf4',\n borderColor: '#bbf7d0',\n color: '#14532d',\n },\n warning: {\n backgroundColor: '#fefce8',\n borderColor: '#fef08a',\n color: '#713f12',\n },\n error: {\n backgroundColor: '#fef2f2',\n borderColor: '#fecaca',\n color: '#7f1d1d',\n },\n custom: {\n backgroundColor: theme.palette.light.main,\n borderColor: `${theme.palette.dark.main}33`,\n color: theme.palette.dark.main,\n },\n };\n\n const variantKey = customvariant as keyof typeof variants || 'info';\n const style = variants[variantKey];\n\n return {\n display: 'flex',\n alignItems: 'flex-start',\n gap: theme.spacing(1.5),\n padding: theme.spacing(2),\n border: `1px solid ${style.borderColor}`,\n borderRadius: (typeof theme.shape.borderRadius === 'string'\n ? parseInt(theme.shape.borderRadius, 10)\n : theme.shape.borderRadius || 4) * 2,\n backgroundColor: style.backgroundColor,\n color: style.color,\n '& .MuiAlert-icon': {\n marginRight: 0,\n padding: 0,\n marginTop: '2px',\n },\n '& .MuiAlert-message': {\n padding: 0,\n flex: 1,\n },\n };\n});\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = 'info',\n children,\n className = '',\n icon = true,\n sx,\n}) => {\n const iconMap = {\n info: <InfoOutlineRounded sx={{fontSize: 20}} />,\n success: <TaskAltRounded sx={{fontSize: 20}} />,\n warning: <ErrorOutlineRounded sx={{fontSize: 20}} />,\n error: <HighlightOffRounded sx={{fontSize: 20}} />,\n custom: <InfoOutlineRounded sx={{fontSize: 20}} />,\n };\n\n const severityMap: Record<string, MuiAlertProps['severity']> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n error: 'error',\n custom: 'info',\n };\n\n return (\n <StyledAlert\n customvariant={variant}\n severity={severityMap[variant]}\n icon={icon ? iconMap[variant] : false}\n className={className}\n sx={sx}\n >\n {children}\n </StyledAlert>\n );\n};"],"names":[],"mappings":";;;;;;;AAeA;AACE;AACE;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACA;AACD;AACD;AACE;;AAEA;AACD;;AAGH;AACA;;AAGE;AACA;AACA;AACA;AACA;;;;;;AAMA;AACE;AACA;AACA;AACD;AACD;AACE;AACA;AACD;;AAEL;;AASE;;;;;;;AAQA;AACE;AACA;AACA;AACA;AACA;;AAGF;AAWF;;"}
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var material = require('@mui/material');
7
+ var ThemeProvider = require('../ThemeProvider.js');
8
+ var iconsMaterial = require('@mui/icons-material');
9
+
10
+ const HomeButton = material.styled(material.IconButton)(({ theme }) => ({
11
+ width: 40,
12
+ height: 40,
13
+ borderRadius: (typeof theme.shape.borderRadius === 'string'
14
+ ? parseInt(theme.shape.borderRadius, 10)
15
+ : theme.shape.borderRadius || 4) * 2,
16
+ backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,
17
+ flexShrink: 0,
18
+ display: 'none',
19
+ [theme.breakpoints.up('md')]: {
20
+ display: 'flex',
21
+ },
22
+ '&:hover': {
23
+ backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,
24
+ opacity: 0.8,
25
+ },
26
+ }));
27
+ const DropdownButton = material.styled('button')(({ theme }) => ({
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ gap: theme.spacing(1),
31
+ padding: theme.spacing(0.75, 2),
32
+ borderRadius: (typeof theme.shape.borderRadius === 'string'
33
+ ? parseInt(theme.shape.borderRadius, 10)
34
+ : theme.shape.borderRadius || 4) * 2,
35
+ border: `1px solid ${theme.palette.dark.main}33`,
36
+ backgroundColor: '#fff',
37
+ color: theme.palette.dark.main,
38
+ fontWeight: 500,
39
+ whiteSpace: 'nowrap',
40
+ cursor: 'pointer',
41
+ transition: 'border-color 0.2s',
42
+ fontSize: '0.875rem',
43
+ '&:hover': {
44
+ borderColor: `${theme.palette.dark.main}4D`,
45
+ },
46
+ [theme.breakpoints.down('sm')]: {
47
+ padding: theme.spacing(0.75, 1),
48
+ gap: theme.spacing(0.5),
49
+ },
50
+ }));
51
+ const StyledMenu = material.styled(material.Menu)(({ theme }) => ({
52
+ '& .MuiPaper-root': {
53
+ marginTop: theme.spacing(1),
54
+ width: '256px',
55
+ borderRadius: (typeof theme.shape.borderRadius === 'string'
56
+ ? parseInt(theme.shape.borderRadius, 10)
57
+ : theme.shape.borderRadius || 4) * 2,
58
+ border: `1px solid ${theme.palette.dark.main}33`,
59
+ boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
60
+ },
61
+ }));
62
+ const StyledMenuItem = material.styled(material.MenuItem)(({ theme, isActive }) => ({
63
+ padding: theme.spacing(1.25, 2),
64
+ fontSize: '0.875rem',
65
+ color: isActive ? theme.palette.primary.main : '#4D3019',
66
+ fontWeight: isActive ? 500 : 400,
67
+ backgroundColor: isActive ? '#F5F1ED' : 'transparent',
68
+ '&:hover': {
69
+ backgroundColor: '#F5F1ED',
70
+ },
71
+ }));
72
+ const Breadcrumb = ({ items, currentItem, dropdownItems = [], onItemSelect, }) => {
73
+ const { theme } = ThemeProvider.useTheme();
74
+ const [anchorEl, setAnchorEl] = React.useState(null);
75
+ const isDropdownOpen = Boolean(anchorEl);
76
+ const handleDropdownToggle = (event) => {
77
+ setAnchorEl(event.currentTarget);
78
+ };
79
+ const handleClose = () => {
80
+ setAnchorEl(null);
81
+ };
82
+ const handleItemClick = (item) => {
83
+ onItemSelect?.(item);
84
+ handleClose();
85
+ };
86
+ return (jsxRuntime.jsxs(material.Box, { component: "nav", sx: {
87
+ display: 'flex',
88
+ alignItems: 'center',
89
+ gap: { xs: 0.5, sm: 1 },
90
+ fontSize: { xs: '0.75rem', sm: '0.875rem' },
91
+ overflow: 'visible',
92
+ }, children: [jsxRuntime.jsx(HomeButton, { "aria-label": "Home", children: jsxRuntime.jsx(iconsMaterial.HomeRounded, { sx: { fontSize: 20, color: "#4D3019" } }) }), jsxRuntime.jsx(material.Breadcrumbs, { separator: "/", sx: {
93
+ display: { xs: 'none', md: 'flex' },
94
+ '& .MuiBreadcrumbs-separator': {
95
+ color: `${theme.palette.dark.main}66`,
96
+ },
97
+ }, children: items.map((item, index) => (jsxRuntime.jsx(material.Typography, { sx: {
98
+ color: theme.palette.dark.main,
99
+ fontWeight: 500,
100
+ px: { xs: 0.5, sm: 1 },
101
+ whiteSpace: 'nowrap',
102
+ fontSize: 'inherit',
103
+ }, children: item.label }, index))) }), jsxRuntime.jsx(material.Typography, { sx: {
104
+ display: { xs: 'none', md: 'inline' },
105
+ color: `${theme.palette.dark.main}66`,
106
+ }, children: "/" }), jsxRuntime.jsxs(material.Box, { sx: { position: 'relative', flexShrink: 0 }, children: [jsxRuntime.jsxs(DropdownButton, { type: "button", onClick: handleDropdownToggle, children: [jsxRuntime.jsx("span", { children: currentItem }), jsxRuntime.jsx(iconsMaterial.ExpandMoreRounded, { sx: {
107
+ fontSize: 20,
108
+ transition: 'transform 0.2s',
109
+ transform: isDropdownOpen ? 'rotate(180deg)' : 'rotate(0deg)',
110
+ } })] }), dropdownItems.length > 0 && (jsxRuntime.jsx(StyledMenu, { anchorEl: anchorEl, open: isDropdownOpen, onClose: handleClose, anchorOrigin: {
111
+ vertical: 'bottom',
112
+ horizontal: 'left',
113
+ }, transformOrigin: {
114
+ vertical: 'top',
115
+ horizontal: 'left',
116
+ }, children: dropdownItems.map((item, index) => (jsxRuntime.jsx(StyledMenuItem, { onClick: () => handleItemClick(item), isActive: item === currentItem, children: item }, index))) }))] })] }));
117
+ };
118
+
119
+ exports.Breadcrumb = Breadcrumb;
120
+ //# sourceMappingURL=Breadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumb.js","sources":["../../../../src/components/Breadcrumb.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { Box, Breadcrumbs as MuiBreadcrumbs, Typography, IconButton, Menu, MenuItem, styled } from '@mui/material';\nimport { useTheme } from '../ThemeProvider';\nimport { HomeRounded, ExpandMoreRounded } from '@mui/icons-material';\n\ninterface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[];\n currentItem: string;\n dropdownItems?: string[];\n onItemSelect?: (item: string) => void;\n}\n\nconst HomeButton = styled(IconButton)(({ theme }) => ({\n width: 40,\n height: 40,\n borderRadius: (typeof theme.shape.borderRadius === 'string'\n ? parseInt(theme.shape.borderRadius, 10)\n : theme.shape.borderRadius || 4) * 2,\n backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,\n flexShrink: 0,\n display: 'none',\n [theme.breakpoints.up('md')]: {\n display: 'flex',\n },\n '&:hover': {\n backgroundColor: theme.palette.custom?.iconColor || theme.palette.accent.main,\n opacity: 0.8,\n },\n}));\n\nconst DropdownButton = styled('button')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(0.75, 2),\n borderRadius: (typeof theme.shape.borderRadius === 'string'\n ? parseInt(theme.shape.borderRadius, 10)\n : theme.shape.borderRadius || 4) * 2,\n border: `1px solid ${theme.palette.dark.main}33`,\n backgroundColor: '#fff',\n color: theme.palette.dark.main,\n fontWeight: 500,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n transition: 'border-color 0.2s',\n fontSize: '0.875rem',\n '&:hover': {\n borderColor: `${theme.palette.dark.main}4D`,\n },\n [theme.breakpoints.down('sm')]: {\n padding: theme.spacing(0.75, 1),\n gap: theme.spacing(0.5),\n },\n}));\n\nconst StyledMenu = styled(Menu)(({ theme }) => ({\n '& .MuiPaper-root': {\n marginTop: theme.spacing(1),\n width: '256px',\n borderRadius: (typeof theme.shape.borderRadius === 'string'\n ? parseInt(theme.shape.borderRadius, 10)\n : theme.shape.borderRadius || 4) * 2,\n border: `1px solid ${theme.palette.dark.main}33`,\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n },\n}));\n\nconst StyledMenuItem = styled(MenuItem)<{ isActive?: boolean }>(({ theme, isActive }) => ({\n padding: theme.spacing(1.25, 2),\n fontSize: '0.875rem',\n color: isActive ? theme.palette.primary.main : '#4D3019',\n fontWeight: isActive ? 500 : 400,\n backgroundColor: isActive ? '#F5F1ED' : 'transparent',\n '&:hover': {\n backgroundColor: '#F5F1ED',\n },\n}));\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n items,\n currentItem,\n dropdownItems = [],\n onItemSelect,\n}) => {\n const { theme } = useTheme();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const isDropdownOpen = Boolean(anchorEl);\n\n const handleDropdownToggle = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleItemClick = (item: string) => {\n onItemSelect?.(item);\n handleClose();\n };\n\n return (\n <Box\n component=\"nav\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: { xs: 0.5, sm: 1 },\n fontSize: { xs: '0.75rem', sm: '0.875rem' },\n overflow: 'visible',\n }}\n >\n <HomeButton aria-label=\"Home\">\n <HomeRounded sx={{ fontSize: 20, color:\"#4D3019\"}} />\n </HomeButton>\n\n <MuiBreadcrumbs\n separator=\"/\"\n sx={{\n display: { xs: 'none', md: 'flex' },\n '& .MuiBreadcrumbs-separator': {\n color: `${theme.palette.dark.main}66`,\n },\n }}\n >\n {items.map((item, index) => (\n <Typography\n key={index}\n sx={{\n color: theme.palette.dark.main,\n fontWeight: 500,\n px: { xs: 0.5, sm: 1 },\n whiteSpace: 'nowrap',\n fontSize: 'inherit',\n }}\n >\n {item.label}\n </Typography>\n ))}\n </MuiBreadcrumbs>\n\n <Typography\n sx={{\n display: { xs: 'none', md: 'inline' },\n color: `${theme.palette.dark.main}66`,\n }}\n >\n /\n </Typography>\n\n <Box sx={{ position: 'relative', flexShrink: 0 }}>\n <DropdownButton\n type=\"button\"\n onClick={handleDropdownToggle}\n >\n <span>{currentItem}</span>\n <ExpandMoreRounded\n sx={{\n fontSize: 20,\n transition: 'transform 0.2s',\n transform: isDropdownOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n }}\n />\n </DropdownButton>\n\n {dropdownItems.length > 0 && (\n <StyledMenu\n anchorEl={anchorEl}\n open={isDropdownOpen}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n >\n {dropdownItems.map((item, index) => (\n <StyledMenuItem\n key={index}\n onClick={() => handleItemClick(item)}\n isActive={item === currentItem}\n >\n {item}\n </StyledMenuItem>\n ))}\n </StyledMenu>\n )}\n </Box>\n </Box>\n );\n};"],"names":[],"mappings":";;;;;;;;;AAmBA;AACE;AACA;;;;AAIA;AACA;AACA;;AAEE;AACD;AACD;AACE;AACA;AACD;AACF;AAED;AACE;AACA;AACA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEC;;;AAGC;AACD;AACF;AAED;AACE;AACE;AACA;;;;;AAKA;AACD;AACF;AAED;;AAEE;AACA;;;AAGA;AACE;AACD;AACF;AAEM;AAML;;AAEA;AAEA;AACE;AACF;;;AAIA;AAEA;AACE;AACA;AACF;;AAMM;AACA;;;AAGA;AACD;;AAUG;;AAEC;AACF;AAMK;AACA;;AAEA;AACA;AACD;;;AAWJ;AAaK;AACA;;;AAYA;AACA;AACD;AAEC;AACA;AACD;AAgBb;;"}
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var material = require('@mui/material');
5
+ var styles = require('@mui/material/styles');
6
+
7
+ const StyledButton = styles.styled(material.Button, {
8
+ shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',
9
+ })(({ theme, customVariant, customSize }) => {
10
+ const currentTheme = theme.palette;
11
+ // Size styles
12
+ const sizeStyles = {
13
+ sm: {
14
+ padding: '6px 12px',
15
+ fontSize: '0.875rem',
16
+ },
17
+ md: {
18
+ padding: '10px 16px',
19
+ fontSize: '1rem',
20
+ },
21
+ lg: {
22
+ padding: '12px 24px',
23
+ fontSize: '1.125rem',
24
+ },
25
+ };
26
+ // Base styles
27
+ const baseStyles = {
28
+ fontWeight: 500,
29
+ borderRadius: '8px',
30
+ textTransform: 'none',
31
+ transition: 'all 0.2s',
32
+ boxShadow: 'none',
33
+ '&:hover': {
34
+ boxShadow: 'none',
35
+ },
36
+ '&.Mui-disabled': {
37
+ opacity: 0.5,
38
+ cursor: 'not-allowed',
39
+ },
40
+ ...sizeStyles[customSize],
41
+ };
42
+ // Variant styles
43
+ const variantStyles = {
44
+ primary: {
45
+ backgroundColor: currentTheme.primary.main,
46
+ color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',
47
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
48
+ '&:hover': {
49
+ backgroundColor: currentTheme.primary.main,
50
+ opacity: 0.9,
51
+ },
52
+ },
53
+ secondary: {
54
+ backgroundColor: currentTheme.secondary.main,
55
+ color: currentTheme.dark.main,
56
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
57
+ '&:hover': {
58
+ backgroundColor: currentTheme.secondary.main,
59
+ opacity: 0.9,
60
+ },
61
+ },
62
+ outline: {
63
+ backgroundColor: currentTheme.light.main,
64
+ border: `2px solid rgba(77, 48, 25, 0.2)`,
65
+ color: currentTheme.dark.main,
66
+ '&:hover': {
67
+ backgroundColor: 'rgba(77, 48, 25, 0.05)',
68
+ borderColor: 'rgba(77, 48, 25, 0.3)',
69
+ },
70
+ },
71
+ 'marked-read': {
72
+ backgroundColor: 'rgba(163, 217, 119, 0.1)',
73
+ border: `2px solid ${currentTheme.markedRead.main}`,
74
+ color: currentTheme.dark.main,
75
+ isDisabled: true,
76
+ '&:hover': {
77
+ backgroundColor: 'rgba(163, 217, 119, 0.2)',
78
+ cursor: 'not-allowed',
79
+ },
80
+ },
81
+ 'mark-read': {
82
+ backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,
83
+ border: `2px solid ${currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main}`,
84
+ color: currentTheme.dark.main,
85
+ '&:hover': {
86
+ opacity: 0.9,
87
+ },
88
+ },
89
+ danger: {
90
+ backgroundColor: '#D32F2F', // Material-UI red
91
+ color: '#FFFFFF',
92
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
93
+ '&:hover': {
94
+ backgroundColor: '#B71C1C',
95
+ opacity: 0.9,
96
+ },
97
+ },
98
+ };
99
+ return {
100
+ ...baseStyles,
101
+ ...variantStyles[customVariant],
102
+ };
103
+ });
104
+ const Button = ({ variant = 'primary', size = 'md', children, fullWidth = false, ...props }) => {
105
+ return (jsxRuntime.jsx(StyledButton, { customVariant: variant, customSize: size, fullWidth: fullWidth, disableRipple: true, ...props, children: children }));
106
+ };
107
+
108
+ exports.Button = Button;
109
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React from 'react';\nimport { Button as MuiButton, ButtonProps as MuiButtonProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\ninterface CustomButtonProps extends Omit<MuiButtonProps, 'variant' | 'size'> {\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger'; // Add 'danger'\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst StyledButton = styled(MuiButton, {\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',\n})<{ customVariant: string; customSize: string }>(({ theme, customVariant, customSize }) => {\n const currentTheme = theme.palette;\n\n // Size styles\n const sizeStyles = {\n sm: {\n padding: '6px 12px',\n fontSize: '0.875rem',\n },\n md: {\n padding: '10px 16px',\n fontSize: '1rem',\n },\n lg: {\n padding: '12px 24px',\n fontSize: '1.125rem',\n },\n };\n\n // Base styles\n const baseStyles = {\n fontWeight: 500,\n borderRadius: '8px',\n textTransform: 'none' as const,\n transition: 'all 0.2s',\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none',\n },\n '&.Mui-disabled': {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n ...sizeStyles[customSize as keyof typeof sizeStyles],\n };\n\n // Variant styles\n const variantStyles = {\n primary: {\n backgroundColor: currentTheme.primary.main,\n color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n '&:hover': {\n backgroundColor: currentTheme.primary.main,\n opacity: 0.9,\n },\n },\n secondary: {\n backgroundColor: currentTheme.secondary.main,\n color: currentTheme.dark.main,\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n '&:hover': {\n backgroundColor: currentTheme.secondary.main,\n opacity: 0.9,\n },\n },\n outline: {\n backgroundColor: currentTheme.light.main,\n border: `2px solid rgba(77, 48, 25, 0.2)`,\n color: currentTheme.dark.main,\n '&:hover': {\n backgroundColor: 'rgba(77, 48, 25, 0.05)',\n borderColor: 'rgba(77, 48, 25, 0.3)',\n },\n },\n 'marked-read': {\n backgroundColor: 'rgba(163, 217, 119, 0.1)',\n border: `2px solid ${currentTheme.markedRead.main}`,\n color: currentTheme.dark.main,\n isDisabled: true,\n '&:hover': {\n backgroundColor: 'rgba(163, 217, 119, 0.2)',\n cursor: 'not-allowed',\n },\n },\n 'mark-read': {\n backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,\n border: `2px solid ${currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main}`,\n color: currentTheme.dark.main,\n '&:hover': {\n opacity: 0.9,\n },\n },\n danger: { // New danger variant\n backgroundColor: '#D32F2F', // Material-UI red\n color: '#FFFFFF',\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n '&:hover': {\n backgroundColor: '#B71C1C',\n opacity: 0.9,\n },\n },\n };\n\n return {\n ...baseStyles,\n ...variantStyles[customVariant as keyof typeof variantStyles],\n };\n});\n\nexport const Button: React.FC<CustomButtonProps> = ({\n variant = 'primary',\n size = 'md',\n children,\n fullWidth = false,\n ...props\n}) => {\n\n return (\n <StyledButton\n customVariant={variant}\n customSize={size}\n fullWidth={fullWidth}\n disableRipple\n {...props}\n >\n {children}\n </StyledButton>\n );\n};"],"names":["styled","MuiButton","_jsx"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var material = require('@mui/material');
6
+
7
+ const StyledCard = material.styled(material.Box, {
8
+ shouldForwardProp: (prop) => prop !== 'customPadding' && prop !== 'customVariant',
9
+ })(({ theme, customPadding, customVariant }) => {
10
+ const paddingStyles = {
11
+ none: { padding: 0 },
12
+ sm: { padding: theme.spacing(2) }, // 16px
13
+ md: { padding: theme.spacing(3) }, // 24px
14
+ lg: { padding: theme.spacing(4) }, // 32px
15
+ };
16
+ const variantStyles = {
17
+ default: {
18
+ border: `1px solid ${theme.palette.dark.main}10`, // dark.main with 10% opacity
19
+ },
20
+ bordered: {
21
+ border: `2px solid ${theme.palette.dark.main}20`, // dark.main with 20% opacity
22
+ },
23
+ elevated: {
24
+ border: `1px solid ${theme.palette.dark.main}05`, // dark.main with 5% opacity
25
+ boxShadow: theme.shadows[4], // MUI shadow level 4 for "elevated"
26
+ },
27
+ };
28
+ const borderRadiusValue = typeof theme.shape.borderRadius === 'string'
29
+ ? parseInt(theme.shape.borderRadius, 10)
30
+ : theme.shape.borderRadius || 4;
31
+ return {
32
+ borderRadius: borderRadiusValue * 2, // Matches rounded-xl (approx 12px)
33
+ overflow: 'visible',
34
+ backgroundColor: theme.palette.light.main, // Matches #FEFDF7
35
+ ...paddingStyles[customPadding],
36
+ ...variantStyles[customVariant],
37
+ };
38
+ });
39
+ const Card = ({ children, className = '', padding = 'md', variant = 'default', sx, // Destructure sx prop
40
+ }) => {
41
+ return (jsxRuntime.jsx(StyledCard, { className: className, customPadding: padding, customVariant: variant, sx: sx, children: children }));
42
+ };
43
+
44
+ exports.Card = Card;
45
+ //# sourceMappingURL=Card.js.map