kelt-ui-kit-react 2.0.1 → 2.0.3

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 (115) hide show
  1. package/dist/_core/type/generiqueType.d.ts +4 -0
  2. package/dist/badge/Badge.d.ts +3 -1
  3. package/dist/button/Button.d.ts +1 -1
  4. package/dist/button/button.interface.d.ts +1 -2
  5. package/dist/dataTable/DataTable.d.ts +17 -14
  6. package/dist/dataTable/dataTable.interface.d.ts +24 -19
  7. package/dist/dataTable/dataTableActions/DataTableAction.d.ts +3 -5
  8. package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +13 -7
  9. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +10 -0
  10. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
  11. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
  12. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +13 -0
  13. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
  14. package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +11 -0
  15. package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +7 -0
  16. package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +1 -3
  17. package/dist/dataTable/dataTableRow/DataTableRow.d.ts +5 -6
  18. package/dist/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.d.ts +12 -0
  19. package/dist/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.d.ts +11 -0
  20. package/dist/expands/expand/expand.d.ts +1 -1
  21. package/dist/form/Form.d.ts +1 -2
  22. package/dist/form/form.enum.d.ts +2 -2
  23. package/dist/form/form.interface.d.ts +2 -4
  24. package/dist/form/input/Input.d.ts +3 -0
  25. package/dist/form/inputNumber/InputNumber.d.ts +0 -2
  26. package/dist/grid/col/Col.d.ts +6 -3
  27. package/dist/grid/col/colStyled/ColStyled.d.ts +5 -7
  28. package/dist/grid/grid.interface.d.ts +5 -9
  29. package/dist/header/Header.d.ts +1 -1
  30. package/dist/header/header.interface.d.ts +1 -2
  31. package/dist/icon/Icon.d.ts +1 -1
  32. package/dist/icon/icon.interface.d.ts +1 -0
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.js +3740 -3443
  35. package/dist/menus/menu/Menu.d.ts +0 -1
  36. package/dist/overlayPanel/OverlayPanel.d.ts +4 -2
  37. package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +2 -0
  38. package/dist/select/Select.d.ts +6 -2
  39. package/dist/select/selectOption.interface.d.ts +1 -0
  40. package/dist/style.css +1 -1
  41. package/dist/tabs/Tabs.d.ts +2 -1
  42. package/dist/toaster/store/useToasterStore.d.ts +0 -1
  43. package/index.html +2 -1
  44. package/package/package.json +56 -0
  45. package/package/src/sidebar/Sidebar.tsx +208 -0
  46. package/package/src/sidebar/sidebar.css +104 -0
  47. package/package.json +1 -1
  48. package/src/_core/type/generiqueType.tsx +4 -0
  49. package/src/badge/Badge.tsx +9 -1
  50. package/src/badge/badge.css +4 -0
  51. package/src/button/Button.tsx +1 -3
  52. package/src/button/button.css +2 -2
  53. package/src/button/button.interface.tsx +1 -2
  54. package/src/card/card.css +25 -5
  55. package/src/card/cardAction/CardAction.tsx +4 -4
  56. package/src/damier/Damier.tsx +7 -16
  57. package/src/damier/damier.css +4 -11
  58. package/src/dataTable/DataTable.tsx +685 -542
  59. package/src/dataTable/DataTable.view.tsx +48 -24
  60. package/src/dataTable/dataTable.css +134 -159
  61. package/src/dataTable/dataTable.interface.ts +25 -19
  62. package/src/dataTable/dataTableActions/DataTableAction.tsx +14 -25
  63. package/src/dataTable/dataTableColumn/DataTableColumn.tsx +64 -14
  64. package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
  65. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
  66. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
  67. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
  68. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
  69. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
  70. package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
  71. package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
  72. package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
  73. package/src/dataTable/dataTableLoading/DataTableLoading.tsx +4 -15
  74. package/src/dataTable/dataTableRow/DataTableRow.tsx +64 -180
  75. package/src/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.tsx +80 -0
  76. package/src/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.tsx +123 -0
  77. package/src/expands/Expands.tsx +2 -16
  78. package/src/expands/expand/expand.tsx +5 -122
  79. package/src/expands/expands.css +3 -8
  80. package/src/form/Form.tsx +25 -125
  81. package/src/form/Form.view.tsx +1 -9
  82. package/src/form/form.css +1 -38
  83. package/src/form/form.enum.ts +1 -1
  84. package/src/form/form.interface.tsx +2 -7
  85. package/src/form/input/Input.tsx +61 -7
  86. package/src/form/input/input.css +23 -1
  87. package/src/form/inputNumber/InputNumber.tsx +6 -11
  88. package/src/form/inputPrice/InputPrice.tsx +2 -4
  89. package/src/grid/col/Col.tsx +7 -5
  90. package/src/grid/col/colStyled/ColStyled.tsx +7 -21
  91. package/src/grid/grid.interface.tsx +5 -11
  92. package/src/header/Header.tsx +2 -4
  93. package/src/header/header.css +0 -17
  94. package/src/header/header.interface.tsx +1 -2
  95. package/src/icon/Icon.tsx +6 -2
  96. package/src/icon/icon.interface.tsx +1 -0
  97. package/src/index.css +12 -58
  98. package/src/index.ts +2 -1
  99. package/src/menus/Menus.tsx +0 -1
  100. package/src/menus/menu/Menu.tsx +1 -2
  101. package/src/overlayPanel/OverlayPanel.tsx +71 -18
  102. package/src/overlayPanel/overlay.context.tsx +6 -4
  103. package/src/overlayPanel/overlayPanel.css +10 -1
  104. package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +7 -2
  105. package/src/select/Select.tsx +178 -41
  106. package/src/select/select.css +94 -13
  107. package/src/select/selectOption.interface.ts +1 -0
  108. package/src/sidebar/Sidebar.tsx +5 -107
  109. package/src/sidebar/sidebar.css +1 -18
  110. package/src/tabs/Tabs.tsx +20 -1
  111. package/src/tabs/tabs.css +3 -9
  112. package/src/toaster/Toaster.tsx +2 -7
  113. package/src/toaster/Toaster.view.tsx +0 -1
  114. package/src/toaster/store/useToasterStore.tsx +0 -2
  115. package/src/toaster/toaster.css +2 -7
@@ -1,5 +1,6 @@
1
1
  .select-container {
2
2
  position: relative;
3
+
3
4
  &::after,
4
5
  &::before {
5
6
  --size: 0.3rem;
@@ -8,23 +9,19 @@
8
9
  right: 1rem;
9
10
  pointer-events: none;
10
11
  }
11
- select:has(option[value=""]:checked) {
12
- color: gray;
13
- }
14
- option {
15
- color: #000;
16
- }
12
+
17
13
  .clear-btn {
18
14
  position: absolute;
19
- top: 2px;
15
+ top: 50%;
16
+ transform: translateY(-50%);
20
17
  display: flex;
21
18
  align-items: center;
22
19
  z-index: 2;
23
20
  justify-content: center;
24
- bottom: 0;
25
- right: 30px;
21
+ right: 10px;
26
22
  cursor: pointer;
27
23
  }
24
+
28
25
  &::before {
29
26
  border-left: var(--size) solid transparent;
30
27
  border-right: var(--size) solid transparent;
@@ -38,15 +35,18 @@
38
35
  border-top: var(--size) solid black;
39
36
  top: 55%;
40
37
  }
38
+
41
39
  .select-container-label {
42
40
  font-weight: bold;
43
41
  color: #333;
44
42
  margin-bottom: 2px;
43
+ display: block;
45
44
  }
46
- .select-container-select {
45
+
46
+ .select-container-button {
47
47
  appearance: none;
48
48
  width: 100%;
49
- font-size: 1rem;
49
+ font-size: 0.8rem;
50
50
  padding: 0.5rem 1rem;
51
51
  margin: 0.25rem 0;
52
52
  background-color: #fff;
@@ -54,16 +54,97 @@
54
54
  border-radius: 0.25rem;
55
55
  color: #000;
56
56
  cursor: pointer;
57
- font-size: 0.8rem;
57
+ text-align: left;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: space-between;
61
+ padding-right: 2rem;
62
+
63
+ .select-container-value {
64
+ flex: 1;
65
+ min-width: 0;
66
+ overflow: hidden;
67
+ white-space: nowrap;
68
+ text-overflow: ellipsis;
69
+
70
+ .placeholder {
71
+ color: gray;
72
+ }
73
+ }
74
+
58
75
  &:disabled {
59
76
  background-color: #e9ecef;
60
77
  color: #6c757d;
61
78
  cursor: not-allowed;
62
79
  }
80
+
63
81
  &:focus {
64
- border-color: #007bff;
65
82
  outline: none;
66
83
  background-color: #fff;
67
84
  }
85
+
86
+
68
87
  }
69
88
  }
89
+
90
+ .select-overlay-options {
91
+ display: flex;
92
+ flex-direction: column;
93
+ max-height: 300px;
94
+ overflow-y: auto;
95
+ padding: 0.5rem 0;
96
+ background-color: #fff;
97
+ border: 1px solid #b2a1a1;
98
+ border-radius: 0.25rem;
99
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
100
+
101
+ .select-overlay-option {
102
+ padding: 0.5rem 1rem;
103
+ cursor: pointer;
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 0.5rem;
107
+ user-select: none;
108
+
109
+ .select-overlay-checkbox {
110
+ min-width: 20px;
111
+ width: 20px;
112
+ cursor: pointer;
113
+ }
114
+
115
+ &:hover {
116
+ background-color: #f0f0f0;
117
+ }
118
+
119
+ &.selected {
120
+ background-color: #e7f3ff;
121
+ color: #007bff;
122
+ }
123
+ }
124
+ }
125
+
126
+ .select-overlay-search {
127
+ padding-bottom: 0.5rem;
128
+ /* laisse la place à la croix de fermeture de l'overlay (.toggle-btn) */
129
+ padding-right: 1.5rem;
130
+
131
+ input {
132
+ width: 100%;
133
+ box-sizing: border-box;
134
+ font-size: 0.8rem;
135
+ padding: 0.4rem 0.75rem;
136
+ border: 1px solid #b2a1a1;
137
+ border-radius: 0.25rem;
138
+
139
+ &:focus {
140
+ outline: none;
141
+ border-color: #888;
142
+ }
143
+ }
144
+ }
145
+
146
+ .select-overlay-empty {
147
+ padding: 0.5rem 1rem;
148
+ color: gray;
149
+ font-size: 0.8rem;
150
+ }
@@ -1,4 +1,5 @@
1
1
  export interface SelectOptionInterface {
2
2
  value: string;
3
3
  label: string;
4
+ disabled?: boolean;
4
5
  }
@@ -15,9 +15,6 @@ export interface SidebarProps {
15
15
  onClose?: (close: boolean) => void;
16
16
  }
17
17
 
18
- const SWIPE_CLOSE_THRESHOLD = 60; // px à parcourir pour fermer
19
- const SWIPE_AXIS_LOCK_THRESHOLD = 10; // px pour déterminer l'axe du geste
20
-
21
18
  export const Sidebar = ({
22
19
  open,
23
20
  children,
@@ -30,13 +27,8 @@ export const Sidebar = ({
30
27
  displayOverlay = true,
31
28
  }: SidebarProps): JSX.Element => {
32
29
  const [isOpen, setIsOpen] = useState(open || false);
33
- const [dragX, setDragX] = useState(0);
34
- const [isDragging, setIsDragging] = useState(false);
35
30
  const sidebarRef = useRef<HTMLDivElement | null>(null);
36
31
  const rootRef = useRef<HTMLDivElement | null>(null);
37
- const touchStartX = useRef(0);
38
- const touchStartY = useRef(0);
39
- const axisLocked = useRef<"x" | "y" | null>(null);
40
32
 
41
33
  // Créer le conteneur une seule fois
42
34
  useEffect(() => {
@@ -68,7 +60,7 @@ export const Sidebar = ({
68
60
  }, [onClose]);
69
61
 
70
62
  const handleClickOutside = useCallback(
71
- (event: MouseEvent | TouchEvent) => {
63
+ (event: MouseEvent) => {
72
64
  if (!closeOnClickOutside) return;
73
65
  if (
74
66
  sidebarRef.current &&
@@ -77,98 +69,18 @@ export const Sidebar = ({
77
69
  toggleSidebar();
78
70
  }
79
71
  },
80
- [toggleSidebar, closeOnClickOutside],
81
- );
82
-
83
- const handleTouchStart = useCallback((event: React.TouchEvent) => {
84
- const touch = event.touches[0];
85
- touchStartX.current = touch.clientX;
86
- touchStartY.current = touch.clientY;
87
- axisLocked.current = null;
88
- setIsDragging(false);
89
- setDragX(0);
90
- }, []);
91
-
92
- const handleTouchMove = useCallback(
93
- (event: React.TouchEvent) => {
94
- if (!isOpen) return;
95
-
96
- const touch = event.touches[0];
97
- const deltaX = touch.clientX - touchStartX.current;
98
- const deltaY = touch.clientY - touchStartY.current;
99
-
100
- // Détermine l'axe du geste une seule fois, dès qu'on a un déplacement suffisant
101
- if (!axisLocked.current) {
102
- if (
103
- Math.abs(deltaX) < SWIPE_AXIS_LOCK_THRESHOLD &&
104
- Math.abs(deltaY) < SWIPE_AXIS_LOCK_THRESHOLD
105
- ) {
106
- return; // pas encore assez de mouvement pour trancher
107
- }
108
- axisLocked.current = Math.abs(deltaX) > Math.abs(deltaY) ? "x" : "y";
109
- }
110
-
111
- if (axisLocked.current !== "x") {
112
- return;
113
- }
114
-
115
- // Ignore les petits mouvements horizontaux
116
- if (deltaX < 20) {
117
- return;
118
- }
119
-
120
- event.preventDefault();
121
-
122
- setIsDragging(true);
123
- setDragX(Math.max(0, deltaX));
124
- },
125
- [isOpen],
126
- );
127
-
128
- const handleTouchEnd = useCallback(
129
- (event: React.TouchEvent) => {
130
- if (!isOpen) {
131
- return;
132
- }
133
-
134
- if (axisLocked.current === "x") {
135
- const touch = event.changedTouches[0];
136
- const deltaX = touch.clientX - touchStartX.current;
137
-
138
- if (deltaX > SWIPE_CLOSE_THRESHOLD) {
139
- toggleSidebar();
140
- }
141
- }
142
-
143
- setIsDragging(false);
144
- setDragX(0);
145
- axisLocked.current = null;
146
- },
147
- [isOpen, toggleSidebar],
148
- );
149
-
150
- const handleOverlayTouchEnd = useCallback(
151
- (event: React.TouchEvent) => {
152
- event.preventDefault();
153
- toggleSidebar();
154
- },
155
- [toggleSidebar],
72
+ [toggleSidebar, closeOnClickOutside]
156
73
  );
157
74
 
158
75
  useEffect(() => {
159
76
  if (isOpen) {
160
77
  document.addEventListener("mousedown", handleClickOutside);
161
- document.addEventListener("touchstart", handleClickOutside, {
162
- passive: true,
163
- });
164
78
  } else {
165
79
  document.removeEventListener("mousedown", handleClickOutside);
166
- document.removeEventListener("touchstart", handleClickOutside);
167
80
  }
168
81
 
169
82
  return () => {
170
83
  document.removeEventListener("mousedown", handleClickOutside);
171
- document.removeEventListener("touchstart", handleClickOutside);
172
84
  };
173
85
  }, [isOpen, handleClickOutside]);
174
86
 
@@ -178,25 +90,11 @@ export const Sidebar = ({
178
90
 
179
91
  return ReactDOM.createPortal(
180
92
  <>
181
- {isOpen && displayOverlay && (
182
- <div
183
- className="overlay"
184
- onClick={toggleSidebar}
185
- onTouchEnd={handleOverlayTouchEnd}
186
- ></div>
187
- )}
93
+ {isOpen && displayOverlay && <div className="overlay"></div>}
188
94
  <div
189
95
  ref={sidebarRef}
190
- style={{
191
- ...(width ? { width } : {}),
192
- transform: dragX ? `translateX(${dragX}px)` : undefined,
193
- transition: isDragging ? "none" : undefined,
194
- }}
96
+ style={width ? { width: width } : {}}
195
97
  className={`sidebar ${isOpen ? "open" : "closed"} ${className ?? ""}`}
196
- onClick={(event) => event.stopPropagation()}
197
- onTouchStart={handleTouchStart}
198
- onTouchMove={handleTouchMove}
199
- onTouchEnd={handleTouchEnd}
200
98
  >
201
99
  <div className="sidebar-header">
202
100
  {title && <h2 className="flex-1">{title}</h2>}
@@ -208,6 +106,6 @@ export const Sidebar = ({
208
106
  {children && children}
209
107
  </div>
210
108
  </>,
211
- rootRef.current,
109
+ rootRef.current
212
110
  );
213
111
  };
@@ -1,18 +1,3 @@
1
- .sidebar {
2
- touch-action: pan-y;
3
- /* laisse le scroll vertical natif, gère le X nous-même */
4
- will-change: transform;
5
- }
6
-
7
- .overlay {
8
- touch-action: none;
9
- }
10
-
11
- .toggle-btn {
12
- -webkit-tap-highlight-color: transparent;
13
- touch-action: manipulation;
14
- }
15
-
16
1
  .sidebar {
17
2
  width: 200px;
18
3
  height: 100vh;
@@ -25,8 +10,6 @@
25
10
  transform: translateX(0);
26
11
  z-index: 2;
27
12
 
28
-
29
-
30
13
  &:not(.full) {
31
14
  inset: 0;
32
15
  }
@@ -101,4 +84,4 @@
101
84
  width: 40vw;
102
85
  }
103
86
  }
104
- }
87
+ }
package/src/tabs/Tabs.tsx CHANGED
@@ -15,6 +15,7 @@ export type TabsProps = {
15
15
  className?: string;
16
16
  tabClassName?: string;
17
17
  panelClassName?: string;
18
+ keepMountedVisited?: boolean;
18
19
  };
19
20
 
20
21
  export const Tabs = ({
@@ -25,9 +26,14 @@ export const Tabs = ({
25
26
  className = "",
26
27
  tabClassName = "",
27
28
  panelClassName = "",
29
+ keepMountedVisited = false,
28
30
  }: TabsProps) => {
29
31
  const isControlled = typeof index === "number";
30
32
  const [active, setActive] = useState<number>(defaultIndex);
33
+ // En mode contrôlé, seul l'onglet réellement affiché est considéré comme visité
34
+ const [visitedTabs, setVisitedTabs] = useState<Set<number>>(
35
+ () => new Set([isControlled ? (index as number) : defaultIndex]),
36
+ );
31
37
  const current = isControlled ? (index as number) : active;
32
38
 
33
39
  useEffect(() => {
@@ -37,6 +43,18 @@ export const Tabs = ({
37
43
  }
38
44
  }, [defaultIndex, items.length, isControlled]);
39
45
 
46
+ useEffect(() => {
47
+ setVisitedTabs((prev) => {
48
+ if (prev.has(current)) {
49
+ return prev;
50
+ }
51
+
52
+ const next = new Set(prev);
53
+ next.add(current);
54
+ return next;
55
+ });
56
+ }, [current]);
57
+
40
58
  const tabsRef = useRef<Array<HTMLButtonElement | null>>([]);
41
59
 
42
60
  const activate = (next: number) => {
@@ -82,7 +100,8 @@ export const Tabs = ({
82
100
  hidden={current !== i}
83
101
  className={`${panelClassName} mt-3`}
84
102
  >
85
- {current === i && t.panel}
103
+ {(current === i || (keepMountedVisited && visitedTabs.has(i))) &&
104
+ t.panel}
86
105
  </div>
87
106
  ))}
88
107
  </div>
package/src/tabs/tabs.css CHANGED
@@ -1,30 +1,24 @@
1
1
  .tabs-root {
2
2
  height: 100%;
3
-
4
3
  .tabs-header {
5
4
  display: flex;
6
5
  border-bottom: 1px solid #b2a1a1;
7
-
8
6
  .tab-button {
9
7
  padding: 0.5rem 0.75rem;
10
8
  border: 0px;
11
9
  outline: none;
12
10
  background-color: transparent;
13
- color: #1e293b;
14
- /* slate-800 */
11
+ color: #1e293b; /* slate-800 */
15
12
  cursor: pointer;
16
13
 
17
14
  &.tab-button--active {
18
- border-bottom: 2px solid var(--primary-color);
19
- /* slate-800 */
15
+ border-bottom: 2px solid var(--primary-color); /* slate-800 */
20
16
  border-radius: 0px;
21
- font-weight: bold;
22
17
  }
23
-
24
18
  &.tab-button--disabled {
25
19
  opacity: 0.5;
26
20
  cursor: not-allowed;
27
21
  }
28
22
  }
29
23
  }
30
- }
24
+ }
@@ -34,14 +34,9 @@ export const Toaster = () => {
34
34
  return ReactDOM.createPortal(
35
35
  <div className={`toaster toaster-${severity}`}>
36
36
  {close && (
37
- <button
38
- type="button"
39
- className="toaster--close"
40
- onClick={onClose}
41
- aria-label="Fermer la notification"
42
- >
37
+ <div className="toaster--close" onClick={onClose}>
43
38
  <Icon classIcon="bi-x" />
44
- </button>
39
+ </div>
45
40
  )}
46
41
  <div>
47
42
  {severity === "info" && <Icon classIcon="bi-info-circle" />}
@@ -9,7 +9,6 @@ export const ToasterView = (): JSX.Element => {
9
9
  description: "This is a description for the toast message.",
10
10
  severity: "warning",
11
11
  duration: 10000,
12
- close: true,
13
12
  children: <div>Additional content can go here.</div>,
14
13
  });
15
14
  }, [showToast]);
@@ -15,7 +15,6 @@ type ToasterState = {
15
15
  severity?: "info" | "success" | "error" | "warning";
16
16
  duration?: number;
17
17
  children?: React.ReactNode;
18
- close?: boolean;
19
18
  }
20
19
  ) => void;
21
20
  hideToast: () => void;
@@ -37,7 +36,6 @@ export const useToasterStore = create<ToasterState>((set) => ({
37
36
  duration: options.duration || 2500,
38
37
  visible: true,
39
38
  children: options.children || null,
40
- close: options.close ?? true,
41
39
  })),
42
40
  hideToast: () => set(() => ({ visible: false })),
43
41
  }));
@@ -15,12 +15,7 @@
15
15
  position: absolute;
16
16
  top: 2px;
17
17
  right: 2px;
18
- margin: 0;
19
- padding: 0;
20
- border: 0;
21
- background: transparent;
22
18
  color: #333;
23
- min-width: auto;
24
19
  cursor: pointer;
25
20
  .bi {
26
21
  font-size: 1.2rem;
@@ -60,7 +55,7 @@
60
55
  }
61
56
  .title {
62
57
  font-weight: 500;
63
- font-size: 18px;
58
+ font-size: 16px;
64
59
  &.title-info {
65
60
  color: var(--primary-color);
66
61
  }
@@ -75,7 +70,7 @@
75
70
  }
76
71
  }
77
72
  .subtitle {
78
- font-size: 16px;
73
+ font-size: 14px;
79
74
  }
80
75
  .bi-info-circle {
81
76
  color: var(--primary-color);