no-frills-ui 0.0.14-alpha.1 → 0.0.14-alpha.10

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 (222) hide show
  1. package/README.md +28 -22
  2. package/dist/index.js +3419 -2768
  3. package/dist/index.js.map +1 -1
  4. package/lib-esm/components/Accordion/Accordion.d.ts +11 -16
  5. package/lib-esm/components/Accordion/Accordion.js +25 -29
  6. package/lib-esm/components/Accordion/Accordion.js.map +1 -1
  7. package/lib-esm/components/Accordion/AccordionStep.d.ts +22 -22
  8. package/lib-esm/components/Accordion/AccordionStep.js +111 -109
  9. package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
  10. package/lib-esm/components/Badge/Badge.d.ts +13 -16
  11. package/lib-esm/components/Badge/Badge.js +31 -51
  12. package/lib-esm/components/Badge/Badge.js.map +1 -1
  13. package/lib-esm/components/Button/ActionButton.d.ts +9 -5
  14. package/lib-esm/components/Button/ActionButton.js +18 -38
  15. package/lib-esm/components/Button/ActionButton.js.map +1 -1
  16. package/lib-esm/components/Button/Button.d.ts +9 -5
  17. package/lib-esm/components/Button/Button.js +18 -40
  18. package/lib-esm/components/Button/Button.js.map +1 -1
  19. package/lib-esm/components/Button/IconButton.d.ts +9 -5
  20. package/lib-esm/components/Button/IconButton.js +18 -42
  21. package/lib-esm/components/Button/IconButton.js.map +1 -1
  22. package/lib-esm/components/Button/LinkButton.d.ts +9 -5
  23. package/lib-esm/components/Button/LinkButton.js +18 -32
  24. package/lib-esm/components/Button/LinkButton.js.map +1 -1
  25. package/lib-esm/components/Button/RaisedButton.d.ts +9 -5
  26. package/lib-esm/components/Button/RaisedButton.js +18 -46
  27. package/lib-esm/components/Button/RaisedButton.js.map +1 -1
  28. package/lib-esm/components/Card/Card.d.ts +4 -6
  29. package/lib-esm/components/Card/Card.js +18 -13
  30. package/lib-esm/components/Card/Card.js.map +1 -1
  31. package/lib-esm/components/Chip/Chip.d.ts +6 -3
  32. package/lib-esm/components/Chip/Chip.js +44 -43
  33. package/lib-esm/components/Chip/Chip.js.map +1 -1
  34. package/lib-esm/components/ChipInput/ChipInput.d.ts +28 -30
  35. package/lib-esm/components/ChipInput/ChipInput.js +121 -139
  36. package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
  37. package/lib-esm/components/Dialog/AlertDialog.d.ts +11 -12
  38. package/lib-esm/components/Dialog/AlertDialog.js +44 -28
  39. package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
  40. package/lib-esm/components/Dialog/ConfirmDialog.d.ts +13 -14
  41. package/lib-esm/components/Dialog/ConfirmDialog.js +49 -33
  42. package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
  43. package/lib-esm/components/Dialog/Dialog.d.ts +40 -18
  44. package/lib-esm/components/Dialog/Dialog.js +125 -70
  45. package/lib-esm/components/Dialog/Dialog.js.map +1 -1
  46. package/lib-esm/components/Dialog/PromptDialog.d.ts +18 -19
  47. package/lib-esm/components/Dialog/PromptDialog.js +78 -49
  48. package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
  49. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +43 -41
  50. package/lib-esm/components/DragAndDrop/DragAndDrop.js +104 -31
  51. package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
  52. package/lib-esm/components/DragAndDrop/DragItem.d.ts +5 -1
  53. package/lib-esm/components/DragAndDrop/DragItem.js +171 -92
  54. package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
  55. package/lib-esm/components/DragAndDrop/types.d.ts +22 -3
  56. package/lib-esm/components/DragAndDrop/types.js +9 -6
  57. package/lib-esm/components/DragAndDrop/types.js.map +1 -1
  58. package/lib-esm/components/Drawer/Drawer.d.ts +86 -22
  59. package/lib-esm/components/Drawer/Drawer.js +176 -97
  60. package/lib-esm/components/Drawer/Drawer.js.map +1 -1
  61. package/lib-esm/components/Drawer/index.d.ts +1 -1
  62. package/lib-esm/components/Groups/Group.d.ts +5 -8
  63. package/lib-esm/components/Groups/Group.js +34 -79
  64. package/lib-esm/components/Groups/Group.js.map +1 -1
  65. package/lib-esm/components/Groups/GroupLabel.js +8 -17
  66. package/lib-esm/components/Groups/GroupLabel.js.map +1 -1
  67. package/lib-esm/components/Input/Checkbox.d.ts +12 -15
  68. package/lib-esm/components/Input/Checkbox.js +51 -118
  69. package/lib-esm/components/Input/Checkbox.js.map +1 -1
  70. package/lib-esm/components/Input/Dropdown.d.ts +11 -12
  71. package/lib-esm/components/Input/Dropdown.js +133 -52
  72. package/lib-esm/components/Input/Dropdown.js.map +1 -1
  73. package/lib-esm/components/Input/Input.d.ts +3 -3
  74. package/lib-esm/components/Input/Input.js +61 -109
  75. package/lib-esm/components/Input/Input.js.map +1 -1
  76. package/lib-esm/components/Input/Radio.d.ts +4 -8
  77. package/lib-esm/components/Input/Radio.js +35 -79
  78. package/lib-esm/components/Input/Radio.js.map +1 -1
  79. package/lib-esm/components/Input/RadioButton.d.ts +4 -8
  80. package/lib-esm/components/Input/RadioButton.js +34 -71
  81. package/lib-esm/components/Input/RadioButton.js.map +1 -1
  82. package/lib-esm/components/Input/Select.d.ts +6 -13
  83. package/lib-esm/components/Input/Select.js +75 -122
  84. package/lib-esm/components/Input/Select.js.map +1 -1
  85. package/lib-esm/components/Input/TextArea.d.ts +6 -13
  86. package/lib-esm/components/Input/TextArea.js +64 -108
  87. package/lib-esm/components/Input/TextArea.js.map +1 -1
  88. package/lib-esm/components/Input/Toggle.d.ts +4 -9
  89. package/lib-esm/components/Input/Toggle.js +31 -80
  90. package/lib-esm/components/Input/Toggle.js.map +1 -1
  91. package/lib-esm/components/Menu/Menu.d.ts +8 -6
  92. package/lib-esm/components/Menu/Menu.js +116 -31
  93. package/lib-esm/components/Menu/Menu.js.map +1 -1
  94. package/lib-esm/components/Menu/MenuContext.d.ts +11 -5
  95. package/lib-esm/components/Menu/MenuContext.js +6 -2
  96. package/lib-esm/components/Menu/MenuContext.js.map +1 -1
  97. package/lib-esm/components/Menu/MenuItem.d.ts +7 -4
  98. package/lib-esm/components/Menu/MenuItem.js +46 -47
  99. package/lib-esm/components/Menu/MenuItem.js.map +1 -1
  100. package/lib-esm/components/Modal/Modal.d.ts +75 -16
  101. package/lib-esm/components/Modal/Modal.js +150 -51
  102. package/lib-esm/components/Modal/Modal.js.map +1 -1
  103. package/lib-esm/components/Notification/Notification.d.ts +46 -39
  104. package/lib-esm/components/Notification/Notification.js +80 -87
  105. package/lib-esm/components/Notification/Notification.js.map +1 -1
  106. package/lib-esm/components/Notification/NotificationManager.d.ts +19 -5
  107. package/lib-esm/components/Notification/NotificationManager.js +177 -79
  108. package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
  109. package/lib-esm/components/Notification/style.d.ts +6 -3
  110. package/lib-esm/components/Notification/style.js +64 -140
  111. package/lib-esm/components/Notification/style.js.map +1 -1
  112. package/lib-esm/components/Notification/types.d.ts +2 -0
  113. package/lib-esm/components/Notification/types.js +9 -10
  114. package/lib-esm/components/Notification/types.js.map +1 -1
  115. package/lib-esm/components/Popover/Popover.d.ts +21 -20
  116. package/lib-esm/components/Popover/Popover.js +159 -126
  117. package/lib-esm/components/Popover/Popover.js.map +1 -1
  118. package/lib-esm/components/Spinner/Spinner.d.ts +14 -12
  119. package/lib-esm/components/Spinner/Spinner.js +22 -27
  120. package/lib-esm/components/Spinner/Spinner.js.map +1 -1
  121. package/lib-esm/components/Stepper/Step.d.ts +15 -12
  122. package/lib-esm/components/Stepper/Step.js +18 -25
  123. package/lib-esm/components/Stepper/Step.js.map +1 -1
  124. package/lib-esm/components/Stepper/Stepper.d.ts +11 -17
  125. package/lib-esm/components/Stepper/Stepper.js +104 -102
  126. package/lib-esm/components/Stepper/Stepper.js.map +1 -1
  127. package/lib-esm/components/Tabs/Tab.d.ts +10 -16
  128. package/lib-esm/components/Tabs/Tab.js +9 -15
  129. package/lib-esm/components/Tabs/Tab.js.map +1 -1
  130. package/lib-esm/components/Tabs/Tabs.d.ts +11 -22
  131. package/lib-esm/components/Tabs/Tabs.js +97 -55
  132. package/lib-esm/components/Tabs/Tabs.js.map +1 -1
  133. package/lib-esm/components/Toast/Toast.d.ts +34 -7
  134. package/lib-esm/components/Toast/Toast.js +200 -109
  135. package/lib-esm/components/Toast/Toast.js.map +1 -1
  136. package/lib-esm/components/Toast/ToastStory.d.ts +21 -24
  137. package/lib-esm/components/Tooltip/Tooltip.d.ts +11 -14
  138. package/lib-esm/components/Tooltip/Tooltip.js +52 -67
  139. package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
  140. package/lib-esm/components/index.d.ts +1 -0
  141. package/lib-esm/components/index.js +43 -20
  142. package/lib-esm/components/index.js.map +1 -1
  143. package/lib-esm/icons/CheckCircle.d.ts +1 -1
  144. package/lib-esm/icons/CheckCircle.js +22 -4
  145. package/lib-esm/icons/CheckCircle.js.map +1 -1
  146. package/lib-esm/icons/Close.d.ts +1 -1
  147. package/lib-esm/icons/Close.js +22 -4
  148. package/lib-esm/icons/Close.js.map +1 -1
  149. package/lib-esm/icons/DragIndicator.d.ts +1 -1
  150. package/lib-esm/icons/DragIndicator.js +22 -4
  151. package/lib-esm/icons/DragIndicator.js.map +1 -1
  152. package/lib-esm/icons/ErrorOutline.d.ts +1 -1
  153. package/lib-esm/icons/ErrorOutline.js +16 -4
  154. package/lib-esm/icons/ErrorOutline.js.map +1 -1
  155. package/lib-esm/icons/ExpandMore.d.ts +1 -1
  156. package/lib-esm/icons/ExpandMore.js +22 -4
  157. package/lib-esm/icons/ExpandMore.js.map +1 -1
  158. package/lib-esm/icons/FiberManualRecord.d.ts +1 -1
  159. package/lib-esm/icons/FiberManualRecord.js +24 -4
  160. package/lib-esm/icons/FiberManualRecord.js.map +1 -1
  161. package/lib-esm/icons/Info.d.ts +1 -1
  162. package/lib-esm/icons/Info.js +22 -4
  163. package/lib-esm/icons/Info.js.map +1 -1
  164. package/lib-esm/icons/ReportProblem.d.ts +1 -1
  165. package/lib-esm/icons/ReportProblem.js +22 -4
  166. package/lib-esm/icons/ReportProblem.js.map +1 -1
  167. package/lib-esm/shared/LayerManager.d.ts +34 -4
  168. package/lib-esm/shared/LayerManager.js +248 -114
  169. package/lib-esm/shared/LayerManager.js.map +1 -1
  170. package/lib-esm/shared/constants.d.ts +58 -27
  171. package/lib-esm/shared/constants.js +62 -26
  172. package/lib-esm/shared/constants.js.map +1 -1
  173. package/lib-esm/shared/styles.d.ts +1 -1
  174. package/lib-esm/shared/styles.js +21 -24
  175. package/lib-esm/shared/styles.js.map +1 -1
  176. package/package.json +130 -74
  177. package/lib-esm/components/Accordion/index.js +0 -3
  178. package/lib-esm/components/Accordion/index.js.map +0 -1
  179. package/lib-esm/components/Badge/index.js +0 -2
  180. package/lib-esm/components/Badge/index.js.map +0 -1
  181. package/lib-esm/components/Button/index.js +0 -6
  182. package/lib-esm/components/Button/index.js.map +0 -1
  183. package/lib-esm/components/Card/index.js +0 -3
  184. package/lib-esm/components/Card/index.js.map +0 -1
  185. package/lib-esm/components/Chip/index.js +0 -2
  186. package/lib-esm/components/Chip/index.js.map +0 -1
  187. package/lib-esm/components/ChipInput/index.js +0 -2
  188. package/lib-esm/components/ChipInput/index.js.map +0 -1
  189. package/lib-esm/components/Dialog/index.js +0 -5
  190. package/lib-esm/components/Dialog/index.js.map +0 -1
  191. package/lib-esm/components/DragAndDrop/index.js +0 -3
  192. package/lib-esm/components/DragAndDrop/index.js.map +0 -1
  193. package/lib-esm/components/Drawer/index.js +0 -2
  194. package/lib-esm/components/Drawer/index.js.map +0 -1
  195. package/lib-esm/components/Groups/index.js +0 -3
  196. package/lib-esm/components/Groups/index.js.map +0 -1
  197. package/lib-esm/components/Input/index.js +0 -9
  198. package/lib-esm/components/Input/index.js.map +0 -1
  199. package/lib-esm/components/Menu/index.js +0 -3
  200. package/lib-esm/components/Menu/index.js.map +0 -1
  201. package/lib-esm/components/Modal/index.js +0 -2
  202. package/lib-esm/components/Modal/index.js.map +0 -1
  203. package/lib-esm/components/Notification/index.js +0 -3
  204. package/lib-esm/components/Notification/index.js.map +0 -1
  205. package/lib-esm/components/Popover/index.js +0 -2
  206. package/lib-esm/components/Popover/index.js.map +0 -1
  207. package/lib-esm/components/Spinner/index.js +0 -2
  208. package/lib-esm/components/Spinner/index.js.map +0 -1
  209. package/lib-esm/components/Stepper/index.js +0 -4
  210. package/lib-esm/components/Stepper/index.js.map +0 -1
  211. package/lib-esm/components/Tabs/index.js +0 -3
  212. package/lib-esm/components/Tabs/index.js.map +0 -1
  213. package/lib-esm/components/Toast/ToastStory.js +0 -35
  214. package/lib-esm/components/Toast/ToastStory.js.map +0 -1
  215. package/lib-esm/components/Toast/index.js +0 -2
  216. package/lib-esm/components/Toast/index.js.map +0 -1
  217. package/lib-esm/components/Tooltip/index.js +0 -2
  218. package/lib-esm/components/Tooltip/index.js.map +0 -1
  219. package/lib-esm/icons/index.js +0 -9
  220. package/lib-esm/icons/index.js.map +0 -1
  221. package/lib-esm/index.js +0 -2
  222. package/lib-esm/index.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
- import { useEffect } from 'react';
3
- import styled from '@emotion/styled';
1
+ import { jsx } from '@emotion/react/jsx-runtime';
2
+ import React, { useEffect } from 'react';
4
3
  import ReactDOM from 'react-dom';
5
- /** Enums for layer position on screen. */
6
- export var LAYER_POSITION;
7
- (function (LAYER_POSITION) {
4
+ import styled from '@emotion/styled';
5
+ import { getThemeValue, THEME_NAME } from './constants.js';
6
+
7
+ /** Enums for layer position on screen. */ var LAYER_POSITION = /*#__PURE__*/ function(LAYER_POSITION) {
8
8
  LAYER_POSITION[LAYER_POSITION["TOP_LEFT"] = 0] = "TOP_LEFT";
9
9
  LAYER_POSITION[LAYER_POSITION["TOP_CENTER"] = 1] = "TOP_CENTER";
10
10
  LAYER_POSITION[LAYER_POSITION["TOP_RIGHT"] = 2] = "TOP_RIGHT";
@@ -12,53 +12,39 @@ export var LAYER_POSITION;
12
12
  LAYER_POSITION[LAYER_POSITION["BOTTOM_CENTER"] = 4] = "BOTTOM_CENTER";
13
13
  LAYER_POSITION[LAYER_POSITION["BOTTOM_RIGHT"] = 5] = "BOTTOM_RIGHT";
14
14
  LAYER_POSITION[LAYER_POSITION["DIALOG"] = 6] = "DIALOG";
15
- })(LAYER_POSITION || (LAYER_POSITION = {}));
16
- ;
17
- /** Default value of config */
18
- const defaultConfig = {
15
+ return LAYER_POSITION;
16
+ }({});
17
+ /** Default value of config */ const defaultConfig = {
19
18
  closeOnEsc: true,
20
19
  overlay: false,
21
- position: LAYER_POSITION.TOP_LEFT,
20
+ position: 0,
22
21
  component: null,
23
22
  exitDelay: 0,
24
23
  closeOnOverlayClick: true,
25
- alwaysOnTop: false,
24
+ alwaysOnTop: false
26
25
  };
27
- /** Styles for each position */
28
- const POSITION_STYLE = {
29
- [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',
30
- [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',
31
- [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',
32
- [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',
33
- [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',
34
- [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',
35
- [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',
26
+ /** Styles for each position */ const POSITION_STYLE = {
27
+ [0]: 'top: 0; left: 0;',
28
+ [1]: 'top: 0; left: 50%; justify-content: center;',
29
+ [2]: 'top: 0; right: 0; justify-content: flex-end;',
30
+ [3]: 'bottom: 0; left: 0;',
31
+ [4]: 'bottom: 0; left: 50%; justify-content: center;',
32
+ [5]: 'bottom: 0; right: 0; justify-content: flex-end;',
33
+ [6]: 'top: 0; left: 0; justify-content: center; align-items: center;'
36
34
  };
37
- /** Layer container component. */
38
- const Container = styled.div `
39
- position: fixed;
40
- display: flex;
41
- opacity: 0;
42
- transition: opacity .3s ease;
43
- ${props => POSITION_STYLE[props.position]}
44
- ${props => props.overlay && `
35
+ /** Layer container component. */ const Container$5 = /*#__PURE__*/ styled("div", {
36
+ target: "e1wjyeea0",
37
+ label: "Container"
38
+ })("position:fixed;display:flex;opacity:0;transition:opacity 0.3s ease;", (props)=>POSITION_STYLE[props.position], " ", (props)=>props.overlay && `
45
39
  width: 100%;
46
40
  height: 100vh;
47
- background-color: var(--backdrop-color, #2681da80);
41
+ background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};
48
42
  backdrop-filter: blur(0px);
49
43
  pointer-events: all;
50
- `}
51
- z-index: ${props => props.zIndex};
52
-
53
- .nf-layer-enter & {
54
- opacity: 1;
55
- ${props => props.overlay && `
44
+ `, " z-index:", (props)=>props.zIndex, ";.nf-layer-enter &{opacity:1;", (props)=>props.overlay && `
56
45
  backdrop-filter: blur(3px);
57
- `}
58
- }
59
- `;
60
- /** Key code for different keys. */
61
- const KEY_CODES = {
46
+ `, "}");
47
+ /** Key code for different keys. */ const KEY_CODES$1 = {
62
48
  ESC: 27
63
49
  };
64
50
  /**
@@ -70,97 +56,245 @@ const KEY_CODES = {
70
56
  * This way we need not worry about the z-index and can freely keep on creating
71
57
  * new layers. The staring layer z-index is 10000. Leaving enough z-index for the
72
58
  * user if they desires so.
73
- */
74
- class LayerManager {
59
+ *
60
+ * @important Usage Pattern
61
+ * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),
62
+ * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)
63
+ * or in an imperative method (like `open()`).
64
+ *
65
+ * @example
66
+ * // ❌ Don't call renderLayer in render() method
67
+ * render() {
68
+ * if (this.state.show) {
69
+ * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render
70
+ * return <Component />;
71
+ * }
72
+ * }
73
+ *
74
+ * @example
75
+ * // ✅ Do call renderLayer once in a method and store the component
76
+ * open() {
77
+ * const [Component, closeFn] = LayerManager.renderLayer({ ... });
78
+ * this.setState({ LayerComponent: Component });
79
+ * }
80
+ *
81
+ * render() {
82
+ * const { LayerComponent } = this.state;
83
+ * return LayerComponent ? <LayerComponent /> : null;
84
+ * }
85
+ */ let LayerManager$1 = class LayerManager {
75
86
  /**
76
87
  * Constructor simply registers a event listener on body to
77
88
  * react to esc key press.
78
- */
79
- constructor() {
80
- /** Layer stack */
81
- this.layers = [];
82
- /** z-index of the next layer */
83
- this.nextIndex = 10000;
89
+ */ constructor(){
90
+ /** Layer stack */ this.layers = [];
91
+ /** z-index of the next layer */ this.nextIndex = 0;
92
+ this.timeoutIds = new Map(); // Track timeouts
93
+ // Add cleanup method
94
+ this.destroy = ()=>{
95
+ if (typeof document !== 'undefined' && this.keyupHandler) {
96
+ document.body.removeEventListener('keyup', this.keyupHandler);
97
+ }
98
+ // Clear all pending timeouts
99
+ this.timeoutIds.forEach((id)=>clearTimeout(id));
100
+ this.timeoutIds.clear();
101
+ // Clean up remaining layers
102
+ this.layers.forEach((layer)=>{
103
+ if (document.body.contains(layer.element)) {
104
+ document.body.removeChild(layer.element);
105
+ }
106
+ });
107
+ this.layers = [];
108
+ };
84
109
  /**
85
- * Un-mounts a layer.
86
- *
87
- * It first adds a class 'nf-layer-exit' and then un-mounts the
88
- * layer after the `exitDelay` mentioned in the layer config.
89
- * This class will help component in triggering the entry animation.
90
- *
91
- * @param layer
92
- */
93
- this.unmount = (layer, resp) => {
110
+ * Un-mounts a layer.
111
+ *
112
+ * It first adds a class 'nf-layer-exit' and then un-mounts the
113
+ * layer after the `exitDelay` mentioned in the layer config.
114
+ * This class will help component in triggering the entry animation.
115
+ *
116
+ * @param layer
117
+ */ this.unmount = (layer, resp)=>{
94
118
  layer.element.setAttribute('class', 'nf-layer-exit');
95
- this.layers.splice(this.layers.findIndex(item => item === layer), 1);
96
- setTimeout(() => {
119
+ const index = this.layers.findIndex((item)=>item === layer);
120
+ if (index !== -1) {
121
+ this.layers.splice(index, 1);
122
+ }
123
+ const timeoutId = window.setTimeout(()=>{
124
+ this.timeoutIds.delete(layer.id);
97
125
  try {
98
- layer.config.closeCallback && layer.config.closeCallback(resp);
99
- }
100
- catch (e) {
101
- // Error in callback function. Ignore and proceed.
102
- console.warn(e.message);
126
+ layer.config.closeCallback?.(resp);
127
+ } catch (err) {
128
+ if (err instanceof Error) {
129
+ console.warn(err.message);
130
+ } else {
131
+ console.warn(err);
132
+ }
103
133
  }
134
+ // Clear reference to help GC
135
+ layer.config.component = null;
104
136
  }, layer.config.exitDelay);
137
+ this.timeoutIds.set(layer.id, timeoutId);
138
+ };
139
+ this.Empty = ()=>{
140
+ return null;
105
141
  };
106
142
  /**
107
- * Renders a layer.
108
- * @param config
109
- */
110
- this.renderLayer = (config) => {
143
+ * Renders a layer.
144
+ * @param config
145
+ */ this.renderLayer = (config)=>{
146
+ // SSR guard
147
+ if (typeof document === 'undefined') {
148
+ return [
149
+ /*#__PURE__*/ React.forwardRef(this.Empty),
150
+ ()=>{}
151
+ ];
152
+ }
111
153
  // Merge default config with the provided config.
112
- const layerConfig = Object.assign(Object.assign({}, defaultConfig), config);
154
+ const layerConfig = {
155
+ ...defaultConfig,
156
+ ...config
157
+ };
113
158
  // Get the z-index for the new layer
114
- const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : this.nextIndex++;
115
- // Prepare the div on DOM where the new layer will be mounted.
116
- const divElement = document.createElement('div');
117
- divElement.setAttribute('id', `nf-layer-manager-${currentIndex}`);
118
- document.body.appendChild(divElement);
119
- // Add layer to stack.
120
- const currentLayer = {
121
- id: `nf-layer-manager-${currentIndex}`,
122
- config: layerConfig,
123
- element: divElement
159
+ const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;
160
+ const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';
161
+ // Create a unique ID for tracking this layer
162
+ const layerId = `${className}-${currentIndex + this.nextIndex}`;
163
+ // Always increment for next layer
164
+ this.nextIndex += 1;
165
+ const overlayClickHandler = ()=>{
166
+ const layer = this.layers.find((l)=>l.id === layerId);
167
+ if (layer && layer.config.closeOnOverlayClick !== false) {
168
+ this.unmount(layer);
169
+ }
124
170
  };
125
- this.layers.push(currentLayer);
126
- const overlayClickHandler = (layer) => () => {
127
- layer.config.closeOnOverlayClick !== false && this.unmount(layer);
171
+ const closeFn = (resp)=>{
172
+ const layer = this.layers.find((l)=>l.id === layerId);
173
+ if (layer) {
174
+ this.unmount(layer, resp);
175
+ }
176
+ };
177
+ const LayerContainer = (props, ref)=>{
178
+ const [divElement, setDivElement] = React.useState(null);
179
+ useEffect(()=>{
180
+ // Create the div element only once when component mounts
181
+ const div = document.createElement('div');
182
+ div.setAttribute('class', className);
183
+ div.setAttribute('id', layerId);
184
+ document.body.appendChild(div);
185
+ // Add layer to stack
186
+ const currentLayer = {
187
+ id: layerId,
188
+ config: layerConfig,
189
+ element: div
190
+ };
191
+ this.layers.push(currentLayer);
192
+ setDivElement(div);
193
+ // Add entry animation class after a short delay
194
+ setTimeout(()=>{
195
+ div.setAttribute('class', 'nf-layer-enter');
196
+ }, 10);
197
+ // Track elements modified for accessibility
198
+ const modifiedElements = [];
199
+ let originalBodyOverflow = null;
200
+ let originalBodyPosition = null;
201
+ let originalBodyWidth = null;
202
+ let originalBodyTop = null;
203
+ let scrollY = 0;
204
+ // Apply aria-hidden to siblings and body scroll lock for overlay modals
205
+ if (layerConfig.overlay) {
206
+ // Hide all body children except this layer portal, scripts, and styles
207
+ const bodyChildren = Array.from(document.body.children);
208
+ bodyChildren.forEach((child)=>{
209
+ if (child !== div && child.className !== 'nf-layer-manager-top' && child.tagName !== 'SCRIPT' && child.tagName !== 'STYLE') {
210
+ const hadAriaHidden = child.hasAttribute('aria-hidden');
211
+ const previousValue = child.getAttribute('aria-hidden');
212
+ // Only set aria-hidden if not already hidden
213
+ if (previousValue !== 'true') {
214
+ child.setAttribute('aria-hidden', 'true');
215
+ modifiedElements.push({
216
+ element: child,
217
+ hadAriaHidden,
218
+ previousValue
219
+ });
220
+ }
221
+ }
222
+ });
223
+ // Prevent body scroll on iOS
224
+ scrollY = window.scrollY;
225
+ originalBodyOverflow = document.body.style.overflow;
226
+ originalBodyPosition = document.body.style.position;
227
+ originalBodyWidth = document.body.style.width;
228
+ originalBodyTop = document.body.style.top;
229
+ document.body.style.overflow = 'hidden';
230
+ document.body.style.position = 'fixed';
231
+ document.body.style.width = '100%';
232
+ document.body.style.top = `-${scrollY}px`;
233
+ }
234
+ // Cleanup function - remove div when component unmounts
235
+ return ()=>{
236
+ // Restore aria-hidden attributes
237
+ modifiedElements.forEach(({ element, hadAriaHidden, previousValue })=>{
238
+ if (document.body.contains(element)) {
239
+ if (hadAriaHidden && previousValue !== null) {
240
+ element.setAttribute('aria-hidden', previousValue);
241
+ } else {
242
+ element.removeAttribute('aria-hidden');
243
+ }
244
+ }
245
+ });
246
+ // Restore body scroll
247
+ if (layerConfig.overlay) {
248
+ document.body.style.overflow = originalBodyOverflow || '';
249
+ document.body.style.position = originalBodyPosition || '';
250
+ document.body.style.width = originalBodyWidth || '';
251
+ document.body.style.top = originalBodyTop || '';
252
+ window.scrollTo(0, scrollY);
253
+ }
254
+ if (document.body.contains(div)) {
255
+ document.body.removeChild(div);
256
+ }
257
+ // Remove from layers array
258
+ const index = this.layers.findIndex((layer)=>layer.id === layerId);
259
+ if (index !== -1) {
260
+ this.layers.splice(index, 1);
261
+ }
262
+ };
263
+ }, []); // Empty dependency array - run only once
264
+ if (!divElement) {
265
+ return null;
266
+ }
267
+ return /*#__PURE__*/ ReactDOM.createPortal(/*#__PURE__*/ jsx(Container$5, {
268
+ ...props,
269
+ ref: ref,
270
+ onClick: overlayClickHandler,
271
+ zIndex: currentIndex,
272
+ ...layerConfig,
273
+ children: layerConfig.component
274
+ }), divElement);
128
275
  };
129
276
  // Return callback which will trigger the un-mount.
130
277
  return [
131
- // Render the layer and then add `nf-layer-enter` class to
132
- // the div created above.
133
- // This class will help component in triggering the entry animation.
134
- function TestLayer() {
135
- useEffect(() => {
136
- // The delay is introduced to enable entry animation on Firefox.
137
- // Somehow on Firefox, useEffect is triggered before the component
138
- // is rendered it seems.
139
- setTimeout(() => {
140
- divElement.setAttribute('class', 'nf-layer-enter');
141
- }, 10);
142
- // Cleanup function
143
- return () => {
144
- document.body.removeChild(divElement);
145
- };
146
- }, []);
147
- return ReactDOM.createPortal(_jsx(Container, Object.assign({ onClick: overlayClickHandler(currentLayer), zIndex: currentIndex }, layerConfig, { children: layerConfig.component })), divElement);
148
- },
149
- (resp) => {
150
- this.unmount(currentLayer, resp);
151
- }
278
+ /*#__PURE__*/ React.forwardRef(LayerContainer),
279
+ closeFn
152
280
  ];
153
281
  };
154
- document.body.addEventListener('keyup', (e) => {
155
- if (this.layers.length && e.keyCode === KEY_CODES.ESC) {
156
- const lastLayer = this.layers.slice(-1)[0];
157
- if (lastLayer.config.closeOnEsc !== false) {
158
- this.unmount(lastLayer);
282
+ if (typeof document !== 'undefined') {
283
+ // Store handler reference for cleanup
284
+ this.keyupHandler = (e)=>{
285
+ if (this.layers.length && e.keyCode === KEY_CODES$1.ESC) {
286
+ const lastLayer = this.layers.slice(-1)[0];
287
+ if (lastLayer.config.closeOnEsc !== false) {
288
+ this.unmount(lastLayer);
289
+ }
159
290
  }
160
- }
161
- });
291
+ };
292
+ document.body.addEventListener('keyup', this.keyupHandler);
293
+ }
162
294
  }
163
- }
295
+ };
164
296
  // Return the instance of the class to create a Singleton.
165
- export default new LayerManager();
166
- //# sourceMappingURL=LayerManager.js.map
297
+ var LayerManager = new LayerManager$1();
298
+
299
+ export { LAYER_POSITION, LayerManager as default };
300
+ //# sourceMappingURL=LayerManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayerManager.js","sourceRoot":"","sources":["../../src/shared/LayerManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LayerManager.js","sources":["../../src/shared/LayerManager.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: JSX.Element | null;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: (resp?: unknown) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE: Record<LAYER_POSITION, string> = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position as LAYER_POSITION]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 0;\n private keyupHandler!: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (err) {\n if (err instanceof Error) {\n console.warn(err.message);\n } else {\n console.warn(err);\n }\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n private Empty = () => {\n return null;\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [React.forwardRef(this.Empty), () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `${className}-${currentIndex + this.nextIndex}`;\n\n // Always increment for next layer\n this.nextIndex += 1;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n const LayerContainer = (\n props: React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let originalBodyPosition: string | null = null;\n let originalBodyWidth: string | null = null;\n let originalBodyTop: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPosition = document.body.style.position;\n originalBodyWidth = document.body.style.width;\n originalBodyTop = document.body.style.top;\n\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n document.body.style.width = '100%';\n document.body.style.top = `-${scrollY}px`;\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n document.body.style.position = originalBodyPosition || '';\n document.body.style.width = originalBodyWidth || '';\n document.body.style.top = originalBodyTop || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <Container\n {...props}\n ref={ref}\n onClick={overlayClickHandler}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n );\n };\n\n // Return callback which will trigger the un-mount.\n return [\n React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(LayerContainer),\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n"],"names":["LAYER_POSITION","defaultConfig","closeOnEsc","overlay","position","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","Container","styled","props","getThemeValue","THEME_NAME","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","document","keyupHandler","body","removeEventListener","forEach","id","clearTimeout","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","index","findIndex","item","splice","timeoutId","window","setTimeout","delete","config","closeCallback","err","Error","console","warn","message","set","Empty","renderLayer","React","forwardRef","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","LayerContainer","ref","divElement","setDivElement","useState","useEffect","div","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","originalBodyPosition","originalBodyWidth","originalBodyTop","scrollY","bodyChildren","Array","from","children","child","tagName","hadAriaHidden","hasAttribute","previousValue","getAttribute","style","overflow","width","top","removeAttribute","scrollTo","ReactDOM","createPortal","_jsx","onClick","e","length","keyCode","lastLayer","slice","addEventListener"],"mappings":"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"}
@@ -1,27 +1,58 @@
1
- declare const _default: {
2
- PRIMARY: string;
3
- PRIMARY_LIGHT: string;
4
- PRIMARY_LIGHTER: string;
5
- BACKDROP_COLOR: string;
6
- INFO: string;
7
- INFO_LIGHT: string;
8
- SUCCESS: string;
9
- SUCCESS_LIGHT: string;
10
- WARNING: string;
11
- WARNING_LIGHT: string;
12
- ERROR: string;
13
- ERROR_LIGHT: string;
14
- BORDER_COLOR: string;
15
- TOAST: string;
16
- TOOLTIP_COLOR: string;
17
- BORDER_LIGHT_COLOR: string;
18
- BACKGROUND: string;
19
- DISABLED_BACKGROUND: string;
20
- DISABLED_BORDER: string;
21
- LIGHT_GREY: string;
22
- DISABLED: string;
23
- SHADOW: string;
24
- HOVER_SHADOW: string;
25
- MODAL_SHADOW: string;
26
- };
27
- export default _default;
1
+ export declare enum THEME_CONSTANTS {
2
+ PRIMARY = "#1f7ac5",
3
+ PRIMARY_LIGHT = "#64baff",
4
+ PRIMARY_LIGHTER = "#cfe9ff",
5
+ BACKDROP_COLOR = "#2681da80",
6
+ INFO = "#1f7ac5ff",
7
+ INFO_LIGHT = "#64baffff",
8
+ SUCCESS = "#1a835f",
9
+ SUCCESS_LIGHT = "#80eac6",
10
+ WARNING = "#916b01",
11
+ WARNING_LIGHT = "#ffba00",
12
+ ERROR = "#bb2828",
13
+ ERROR_LIGHT = "#f1a5a5",
14
+ BORDER_COLOR = "#555555",
15
+ TOAST = "#5f5f5f",
16
+ TOOLTIP_COLOR = "rgba(0,0,0,0.6)",
17
+ BORDER_LIGHT_COLOR = "#eeeeee",
18
+ BACKGROUND = "#ffffff",
19
+ DISABLED_BACKGROUND = "#fafafa",
20
+ DISABLED_BORDER = "#aaa",
21
+ LIGHT_GREY = "#ccc",
22
+ DISABLED = "#737373",
23
+ TEXT_COLOR_LIGHT = "#fff",
24
+ TEXT_COLOR_DARK = "#000",
25
+ SHADOW = "0px 1px 3px 0px rgba(0,0,0,0.1), 0px 1px 2px 0px rgba(0,0,0,0.06)",
26
+ HOVER_SHADOW = "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
27
+ MODAL_SHADOW = "0px 8px 17px 2px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12), 0px 5px 5px -3px rgba(0,0,0,0.2)"
28
+ }
29
+ export declare enum THEME_NAME {
30
+ PRIMARY = "--nfui-primary",
31
+ PRIMARY_LIGHT = "--nfui-primary-light",
32
+ PRIMARY_LIGHTER = "--nfui-primary-lighter",
33
+ INFO = "--nfui-info",
34
+ INFO_LIGHT = "--nfui-info-light",
35
+ SUCCESS = "--nfui-success",
36
+ SUCCESS_LIGHT = "--nfui-success-light",
37
+ WARNING = "--nfui-warning",
38
+ WARNING_LIGHT = "--nfui-warning-light",
39
+ ERROR = "--nfui-error",
40
+ ERROR_LIGHT = "--nfui-error-light",
41
+ BORDER_COLOR = "--nfui-border-color",
42
+ TOAST = "--nfui-toast",
43
+ TOOLTIP_COLOR = "--nfui-tooltip-color",
44
+ BORDER_LIGHT_COLOR = "--nfui-border-light-color",
45
+ BACKGROUND = "--nfui-background",
46
+ DISABLED_BACKGROUND = "--nfui-disabled-background",
47
+ DISABLED_BORDER = "--nfui-disabled-border",
48
+ LIGHT_GREY = "--nfui-light-grey",
49
+ DISABLED = "--nfui-disabled",
50
+ TEXT_COLOR_LIGHT = "--nfui-text-color-light",
51
+ TEXT_COLOR_DARK = "--nfui-text-color-dark",
52
+ SHADOW = "--nfui-shadow",
53
+ HOVER_SHADOW = "--nfui-hover-shadow",
54
+ MODAL_SHADOW = "--nfui-modal-shadow",
55
+ BACKDROP_COLOR = "--nfui-backdrop-color"
56
+ }
57
+ export declare const themeNameMap: Record<THEME_NAME, THEME_CONSTANTS>;
58
+ export declare const getThemeValue: (key: THEME_NAME) => string;