@amelharrak/eldo-ui 1.0.1

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 (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/css/eldo.css +11683 -0
  4. package/dist/css/eldo.css.map +1 -0
  5. package/dist/css/eldo.min.css +1 -0
  6. package/dist/index.cjs +2 -0
  7. package/dist/index.cjs.map +1 -0
  8. package/dist/index.mjs +64 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/types/__tests__/Alert.test.d.ts +1 -0
  11. package/dist/types/__tests__/Button.test.d.ts +1 -0
  12. package/dist/types/__tests__/Modal.test.d.ts +1 -0
  13. package/dist/types/components/Accordion.d.ts +15 -0
  14. package/dist/types/components/Alert.d.ts +15 -0
  15. package/dist/types/components/Avatar.d.ts +10 -0
  16. package/dist/types/components/Badge.d.ts +7 -0
  17. package/dist/types/components/Box.d.ts +27 -0
  18. package/dist/types/components/Breadcrumb.d.ts +15 -0
  19. package/dist/types/components/Button.d.ts +16 -0
  20. package/dist/types/components/ButtonGroup.d.ts +7 -0
  21. package/dist/types/components/Card.d.ts +15 -0
  22. package/dist/types/components/Carousel.d.ts +21 -0
  23. package/dist/types/components/Checkbox.d.ts +10 -0
  24. package/dist/types/components/Col.d.ts +12 -0
  25. package/dist/types/components/Collapse.d.ts +12 -0
  26. package/dist/types/components/Container.d.ts +8 -0
  27. package/dist/types/components/Dropdown.d.ts +19 -0
  28. package/dist/types/components/FileUpload.d.ts +13 -0
  29. package/dist/types/components/Input.d.ts +20 -0
  30. package/dist/types/components/InputOTP.d.ts +13 -0
  31. package/dist/types/components/ListGroup.d.ts +20 -0
  32. package/dist/types/components/Modal.d.ts +13 -0
  33. package/dist/types/components/Navbar.d.ts +17 -0
  34. package/dist/types/components/NumberInput.d.ts +15 -0
  35. package/dist/types/components/Offcanvas.d.ts +15 -0
  36. package/dist/types/components/Pagination.d.ts +14 -0
  37. package/dist/types/components/Popover.d.ts +14 -0
  38. package/dist/types/components/Progress.d.ts +11 -0
  39. package/dist/types/components/Radio.d.ts +11 -0
  40. package/dist/types/components/Row.d.ts +7 -0
  41. package/dist/types/components/Scrollspy.d.ts +13 -0
  42. package/dist/types/components/Select.d.ts +16 -0
  43. package/dist/types/components/Slider.d.ts +16 -0
  44. package/dist/types/components/Sonner.d.ts +21 -0
  45. package/dist/types/components/Spinner.d.ts +11 -0
  46. package/dist/types/components/Stat.d.ts +24 -0
  47. package/dist/types/components/Switch.d.ts +14 -0
  48. package/dist/types/components/Tabs.d.ts +20 -0
  49. package/dist/types/components/Text.d.ts +13 -0
  50. package/dist/types/components/Timeline.d.ts +41 -0
  51. package/dist/types/components/Toast.d.ts +17 -0
  52. package/dist/types/components/Tooltip.d.ts +12 -0
  53. package/dist/types/index.d.ts +40 -0
  54. package/package.json +106 -0
  55. package/setup.js +260 -0
  56. package/src/scss/abstracts/_functions.scss +19 -0
  57. package/src/scss/abstracts/_mixins.scss +33 -0
  58. package/src/scss/abstracts/_variables.scss +119 -0
  59. package/src/scss/base/_reset.scss +24 -0
  60. package/src/scss/base/_transitions.scss +10 -0
  61. package/src/scss/base/_typography.scss +50 -0
  62. package/src/scss/components/_accordion.scss +238 -0
  63. package/src/scss/components/_alert.scss +85 -0
  64. package/src/scss/components/_alerts.scss +137 -0
  65. package/src/scss/components/_avatar.scss +184 -0
  66. package/src/scss/components/_badge.scss +70 -0
  67. package/src/scss/components/_blockquote.scss +41 -0
  68. package/src/scss/components/_breadcrumb.scss +39 -0
  69. package/src/scss/components/_button-group.scss +43 -0
  70. package/src/scss/components/_button.scss +92 -0
  71. package/src/scss/components/_buttons.scss +66 -0
  72. package/src/scss/components/_calendar.scss +520 -0
  73. package/src/scss/components/_card.scss +52 -0
  74. package/src/scss/components/_cards.scss +123 -0
  75. package/src/scss/components/_carousel.scss +490 -0
  76. package/src/scss/components/_charts.scss +29 -0
  77. package/src/scss/components/_checkbox.scss +194 -0
  78. package/src/scss/components/_code.scss +70 -0
  79. package/src/scss/components/_collapse.scss +13 -0
  80. package/src/scss/components/_combobox.scss +239 -0
  81. package/src/scss/components/_date-picker.scss +102 -0
  82. package/src/scss/components/_divider.scss +55 -0
  83. package/src/scss/components/_dropdown.scss +122 -0
  84. package/src/scss/components/_file-upload.scss +233 -0
  85. package/src/scss/components/_floating-labels.scss +247 -0
  86. package/src/scss/components/_form-select.scss +49 -0
  87. package/src/scss/components/_forms.scss +41 -0
  88. package/src/scss/components/_index.scss +7 -0
  89. package/src/scss/components/_input-otp.scss +338 -0
  90. package/src/scss/components/_list-group.scss +95 -0
  91. package/src/scss/components/_modal.scss +166 -0
  92. package/src/scss/components/_nav.scss +175 -0
  93. package/src/scss/components/_navbar.scss +228 -0
  94. package/src/scss/components/_number-input.scss +67 -0
  95. package/src/scss/components/_offcanvas.scss +123 -0
  96. package/src/scss/components/_pagination.scss +64 -0
  97. package/src/scss/components/_placeholders.scss +52 -0
  98. package/src/scss/components/_popovers.scss +69 -0
  99. package/src/scss/components/_progress.scss +90 -0
  100. package/src/scss/components/_range.scss +82 -0
  101. package/src/scss/components/_scrollspy.scss +239 -0
  102. package/src/scss/components/_skeleton.scss +108 -0
  103. package/src/scss/components/_slider.scss +95 -0
  104. package/src/scss/components/_snippet.scss +79 -0
  105. package/src/scss/components/_spinners.scss +137 -0
  106. package/src/scss/components/_stat.scss +42 -0
  107. package/src/scss/components/_stepper.scss +104 -0
  108. package/src/scss/components/_switch.scss +57 -0
  109. package/src/scss/components/_table.scss +109 -0
  110. package/src/scss/components/_tag.scss +60 -0
  111. package/src/scss/components/_tags-input.scss +60 -0
  112. package/src/scss/components/_timeline.scss +238 -0
  113. package/src/scss/components/_toasts.scss +75 -0
  114. package/src/scss/components/_tooltips.scss +50 -0
  115. package/src/scss/components/_tree-view.scss +72 -0
  116. package/src/scss/components/_user.scss +26 -0
  117. package/src/scss/docs/_examples.scss +148 -0
  118. package/src/scss/docs/_layout.scss +251 -0
  119. package/src/scss/docs/_search.scss +141 -0
  120. package/src/scss/eldo.scss +74 -0
  121. package/src/scss/layout/_container.scss +37 -0
  122. package/src/scss/layout/_grid.scss +49 -0
  123. package/src/scss/pages/_landing-config.scss +135 -0
  124. package/src/scss/pages/_landing-features-enhanced.scss +165 -0
  125. package/src/scss/pages/_landing-hero-enhanced.scss +427 -0
  126. package/src/scss/pages/_landing-setup.scss +264 -0
  127. package/src/scss/pages/_landing.scss +1828 -0
  128. package/src/scss/utilities/_api.scss +66 -0
  129. package/src/scss/utilities/_colors.scss +32 -0
  130. package/src/scss/utilities/_display.scss +70 -0
  131. package/src/scss/utilities/_glass.scss +32 -0
  132. package/src/scss/utilities/_helpers.scss +16 -0
  133. package/src/scss/utilities/_map.scss +224 -0
  134. package/src/scss/utilities/_spacing.scss +58 -0
@@ -0,0 +1,338 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .input-otp-group {
5
+ display: flex;
6
+ gap: 0.5rem;
7
+ align-items: center;
8
+
9
+ // Base Slot Style
10
+ .input-otp-slot {
11
+ box-sizing: border-box;
12
+ width: 3rem; // Default LG
13
+ min-width: 3rem;
14
+ max-width: 3rem;
15
+ height: 3rem;
16
+ flex: 0 0 auto; // Prevent flex growing/shrinking
17
+
18
+ font-size: 1.125rem;
19
+ font-family: inherit;
20
+ text-align: center;
21
+ // Vertically align text roughly center
22
+ line-height: 1;
23
+ padding: 0;
24
+
25
+ border: 2px solid transparent;
26
+ border-radius: 0.875rem; // HeroUI "md" is approx 14px visually
27
+ background-color: transparent;
28
+ color: $body-color;
29
+
30
+ transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s, transform 0.1s;
31
+ appearance: none;
32
+ caret-color: $body-color; // Default caret
33
+ box-shadow: none;
34
+ font-weight: 400; // HeroUI usually normal/medium
35
+ display: block; // Ensure it behaves as a block in flex, though browser defaults vary
36
+
37
+ // Interactive States (Focus / Active)
38
+ &:focus,
39
+ &[data-focus="true"],
40
+ &[data-active="true"] {
41
+ outline: none;
42
+ z-index: 10;
43
+ // No default here if variants handle it, but for safety:
44
+ }
45
+
46
+ &:active {
47
+ transform: scale(0.97);
48
+ }
49
+
50
+ &:disabled,
51
+ &[data-disabled="true"] {
52
+ opacity: 0.5;
53
+ cursor: not-allowed;
54
+ pointer-events: none;
55
+ }
56
+
57
+ &[readonly],
58
+ &[data-readonly="true"] {
59
+ cursor: default;
60
+ background-color: transparent;
61
+ border-color: $gray-200;
62
+ color: $gray-600;
63
+ }
64
+
65
+ &[type="password"] {
66
+ font-family: monospace; // Better dot alignment
67
+ letter-spacing: 0;
68
+ }
69
+
70
+ // Invalid / Error State
71
+ &:invalid,
72
+ &.is-invalid {
73
+ border-color: $danger !important;
74
+ background-color: color.scale($danger, $lightness: 90%) !important; // Light pink
75
+ color: $danger !important;
76
+
77
+ &:focus,
78
+ &[data-focus="true"] {
79
+ border-color: $danger !important;
80
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $danger !important;
81
+ background-color: #fff !important;
82
+ }
83
+ }
84
+ }
85
+
86
+ // --- Helper Wrappers ---
87
+ .input-otp-helper-wrapper {
88
+ margin-top: 0.5rem;
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: 0.25rem;
92
+ }
93
+
94
+ .input-otp-description {
95
+ font-size: 0.75rem;
96
+ color: $gray-500;
97
+ }
98
+
99
+ .input-otp-error-message {
100
+ font-size: 0.75rem;
101
+ color: $danger;
102
+ }
103
+
104
+ // --- Sizes ---
105
+ // SM: 32px
106
+ &.input-otp-sm .input-otp-slot {
107
+ width: 2rem;
108
+ min-width: 2rem;
109
+ max-width: 2rem;
110
+ height: 2rem;
111
+ font-size: 0.875rem;
112
+ border-radius: 0.5rem; // 8px
113
+ }
114
+
115
+ // MD: 40px (Default)
116
+ &.input-otp-md .input-otp-slot {
117
+ width: 2.5rem;
118
+ min-width: 2.5rem;
119
+ max-width: 2.5rem;
120
+ height: 2.5rem;
121
+ font-size: 1rem;
122
+ border-radius: 0.75rem; // 12px
123
+ }
124
+
125
+ // LG: 48px
126
+ &.input-otp-lg .input-otp-slot {
127
+ width: 3rem;
128
+ min-width: 3rem;
129
+ max-width: 3rem;
130
+ height: 3rem;
131
+ font-size: 1.125rem;
132
+ border-radius: 0.875rem; // 14px
133
+ }
134
+
135
+ // --- Radius Overrides ---
136
+ &.input-otp-radius-none .input-otp-slot {
137
+ border-radius: 0;
138
+ }
139
+
140
+ &.input-otp-radius-sm .input-otp-slot {
141
+ border-radius: 0.5rem;
142
+ }
143
+
144
+ &.input-otp-radius-md .input-otp-slot {
145
+ border-radius: 0.75rem;
146
+ }
147
+
148
+ &.input-otp-radius-lg .input-otp-slot {
149
+ border-radius: 0.875rem;
150
+ }
151
+
152
+ &.input-otp-radius-full .input-otp-slot {
153
+ border-radius: 9999px;
154
+ }
155
+
156
+ // --- Shadow ---
157
+ &.input-otp-shadow-sm .input-otp-slot {
158
+ box-shadow: $box-shadow-sm;
159
+ }
160
+
161
+ &.input-otp-shadow .input-otp-slot {
162
+ box-shadow: $box-shadow;
163
+ }
164
+
165
+ &.input-otp-shadow-lg .input-otp-slot {
166
+ box-shadow: $box-shadow-lg;
167
+ }
168
+
169
+ // --- Variants ---
170
+
171
+ // 1. Flat (Default)
172
+ &.input-otp-flat .input-otp-slot,
173
+ & .input-otp-slot {
174
+ background-color: $gray-100;
175
+ border-color: transparent;
176
+
177
+ &:hover {
178
+ background-color: color.scale($gray-100, $lightness: -3%);
179
+ }
180
+
181
+ &:focus,
182
+ &[data-active="true"] {
183
+ background-color: #fff;
184
+ border-color: transparent;
185
+ // Ring with Offset: 2px offset + 2px ring
186
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $primary;
187
+ }
188
+
189
+ &[readonly],
190
+ &[data-readonly="true"] {
191
+ background-color: $gray-50;
192
+ box-shadow: none;
193
+ }
194
+ }
195
+
196
+ // 2. Bordered
197
+ &.input-otp-bordered .input-otp-slot {
198
+ background-color: transparent;
199
+ border-color: $gray-300;
200
+ border-width: 2px; // Explicit 2px border
201
+
202
+ &:hover {
203
+ border-color: $gray-400;
204
+ }
205
+
206
+ &:focus,
207
+ &[data-active="true"] {
208
+ border-color: $primary;
209
+ // Usually bordered validation/focus just changes border color,
210
+ // but strict HeroUI might add ring too? Let's check docs.
211
+ // Often just border color for "bordered".
212
+ box-shadow: none;
213
+ }
214
+ }
215
+
216
+ // 3. Underlined
217
+ &.input-otp-underlined .input-otp-slot {
218
+ background-color: transparent;
219
+ border-width: 0 0 2px 0;
220
+ border-radius: 0;
221
+ box-shadow: none !important;
222
+
223
+ &:hover {
224
+ border-bottom-color: $gray-400;
225
+ }
226
+
227
+ &:focus,
228
+ &[data-active="true"] {
229
+ border-bottom-color: $primary;
230
+ transform: none;
231
+ }
232
+ }
233
+
234
+ // 4. Faded
235
+ &.input-otp-faded .input-otp-slot {
236
+ background-color: $gray-100;
237
+ border: 2px solid $gray-100;
238
+
239
+ &:hover {
240
+ background-color: color.scale($gray-100, $lightness: -3%);
241
+ }
242
+
243
+ &:focus,
244
+ &[data-active="true"] {
245
+ background-color: #fff;
246
+ border-color: $gray-100;
247
+ // Ring with offset
248
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $gray-200;
249
+ }
250
+ }
251
+
252
+ // --- Colors ---
253
+ @each $color, $value in $theme-colors {
254
+ &.input-otp-color-#{$color} .input-otp-slot {
255
+ caret-color: $value;
256
+
257
+ // Flat Focus
258
+ &:focus,
259
+ &[data-active="true"] {
260
+ @if $color =="default" {
261
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $gray-400;
262
+ }
263
+
264
+ @else {
265
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $value;
266
+ }
267
+ }
268
+ }
269
+
270
+ // Bordered & Underlined Focus (Border only, no ring usually or subtle)
271
+ &.input-otp-bordered.input-otp-color-#{$color} .input-otp-slot[data-active="true"],
272
+ &.input-otp-underlined.input-otp-color-#{$color} .input-otp-slot[data-active="true"],
273
+ &.input-otp-bordered.input-otp-color-#{$color} .input-otp-slot:focus,
274
+ &.input-otp-underlined.input-otp-color-#{$color} .input-otp-slot:focus {
275
+ @if $color =="default" {
276
+ border-color: $body-color;
277
+ }
278
+
279
+ @else {
280
+ border-color: $value;
281
+ }
282
+
283
+ box-shadow: none;
284
+ }
285
+
286
+ // Faded Ring Color override
287
+ &.input-otp-faded.input-otp-color-#{$color} .input-otp-slot[data-active="true"],
288
+ &.input-otp-faded.input-otp-color-#{$color} .input-otp-slot:focus {
289
+ border-color: $gray-100; // Border stays gray
290
+
291
+ @if $color =="default" {
292
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px $gray-200;
293
+ }
294
+
295
+ @else {
296
+ box-shadow: 0 0 0 2px $body-bg, 0 0 0 4px color.scale($value, $alpha: -70%);
297
+ }
298
+ }
299
+ }
300
+
301
+ // --- Connected ---
302
+ &.input-otp-connected {
303
+ gap: 0;
304
+
305
+ .input-otp-slot {
306
+ border-radius: 0;
307
+ margin-right: -1px; // Collapse borders
308
+
309
+ &:focus,
310
+ &[data-active="true"] {
311
+ z-index: 20; // Ensure ring sits on top
312
+ }
313
+
314
+ &:first-child {
315
+ border-top-left-radius: 0.875rem;
316
+ border-bottom-left-radius: 0.875rem;
317
+ }
318
+
319
+ &:last-child {
320
+ border-top-right-radius: 0.875rem;
321
+ border-bottom-right-radius: 0.875rem;
322
+ margin-right: 0;
323
+ }
324
+ }
325
+
326
+ &.input-otp-radius-full {
327
+ .input-otp-slot:first-child {
328
+ border-top-left-radius: 9999px;
329
+ border-bottom-left-radius: 9999px;
330
+ }
331
+
332
+ .input-otp-slot:last-child {
333
+ border-top-right-radius: 9999px;
334
+ border-bottom-right-radius: 9999px;
335
+ }
336
+ }
337
+ }
338
+ }
@@ -0,0 +1,95 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .list-group {
5
+ --e-list-group-color: #{$body-color};
6
+ --e-list-group-bg: #fff;
7
+ --e-list-group-border-color: rgba(0, 0, 0, 0.125);
8
+ --e-list-group-border-width: 1px;
9
+ --e-list-group-border-radius: #{$border-radius};
10
+ --e-list-group-item-padding-x: 1rem;
11
+ --e-list-group-item-padding-y: 0.5rem;
12
+ --e-list-group-action-color: #495057;
13
+ --e-list-group-action-hover-color: #495057;
14
+ --e-list-group-action-hover-bg: #f8f9fa;
15
+ --e-list-group-action-active-color: #212529;
16
+ --e-list-group-action-active-bg: #e9ecef;
17
+ --e-list-group-disabled-color: #6c757d;
18
+ --e-list-group-disabled-bg: #fff;
19
+ --e-list-group-active-color: #fff;
20
+ --e-list-group-active-bg: #{$primary};
21
+ --e-list-group-active-border-color: #{$primary};
22
+
23
+ display: flex;
24
+ flex-direction: column;
25
+ padding-left: 0;
26
+ margin-bottom: 0;
27
+ border-radius: var(--e-list-group-border-radius);
28
+
29
+ // Optimization
30
+ content-visibility: auto;
31
+ contain-intrinsic-size: 0 50px;
32
+ }
33
+
34
+ .list-group-item {
35
+ position: relative;
36
+ display: block;
37
+ padding: var(--e-list-group-item-padding-y) var(--e-list-group-item-padding-x);
38
+ color: var(--e-list-group-color);
39
+ text-decoration: none;
40
+ background-color: var(--e-list-group-bg);
41
+ border: var(--e-list-group-border-width) solid var(--e-list-group-border-color);
42
+
43
+ &:first-child {
44
+ border-top-left-radius: inherit;
45
+ border-top-right-radius: inherit;
46
+ }
47
+
48
+ &:last-child {
49
+ border-bottom-right-radius: inherit;
50
+ border-bottom-left-radius: inherit;
51
+ }
52
+
53
+ &.disabled,
54
+ &:disabled {
55
+ color: var(--e-list-group-disabled-color);
56
+ pointer-events: none;
57
+ background-color: var(--e-list-group-disabled-bg);
58
+ }
59
+
60
+ &.active {
61
+ z-index: 2;
62
+ color: var(--e-list-group-active-color);
63
+ background-color: var(--e-list-group-active-bg);
64
+ border-color: var(--e-list-group-active-border-color);
65
+ }
66
+
67
+ +.list-group-item {
68
+ border-top-width: 0;
69
+
70
+ &.active {
71
+ margin-top: calc(var(--e-list-group-border-width) * -1);
72
+ border-top-width: var(--e-list-group-border-width);
73
+ }
74
+ }
75
+ }
76
+
77
+ // Interactive list items
78
+ .list-group-item-action {
79
+ width: 100%;
80
+ color: var(--e-list-group-action-color);
81
+ text-align: inherit;
82
+
83
+ &:hover,
84
+ &:focus {
85
+ z-index: 1; // Place above sibling items (less rounded corners)
86
+ color: var(--e-list-group-action-hover-color);
87
+ text-decoration: none;
88
+ background-color: var(--e-list-group-action-hover-bg);
89
+ }
90
+
91
+ &:active {
92
+ color: var(--e-list-group-action-active-color);
93
+ background-color: var(--e-list-group-action-active-bg);
94
+ }
95
+ }
@@ -0,0 +1,166 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .modal {
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ z-index: 1055;
9
+ display: none;
10
+ width: 100%;
11
+ height: 100%;
12
+ overflow-x: hidden;
13
+ overflow-y: auto;
14
+ outline: 0;
15
+
16
+ &.fade .modal-dialog {
17
+ transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.2s ease; // Bouncy scale
18
+ transform: scale(0.95);
19
+ opacity: 0;
20
+ }
21
+
22
+ &.show .modal-dialog {
23
+ transform: scale(1);
24
+ opacity: 1;
25
+ }
26
+
27
+ &.show {
28
+ display: block;
29
+ }
30
+ }
31
+
32
+ .modal-dialog {
33
+ position: relative;
34
+ width: auto;
35
+ margin: 0.5rem;
36
+ pointer-events: none;
37
+ display: flex; // Center alignment support
38
+ align-items: center;
39
+ min-height: calc(100% - 1rem); // Vertically center
40
+
41
+ @media (min-width: 576px) {
42
+ max-width: 500px;
43
+ margin: 1.75rem auto;
44
+ min-height: calc(100% - 3.5rem);
45
+ }
46
+ }
47
+
48
+ .modal-dialog-centered {
49
+ display: flex;
50
+ align-items: center;
51
+ min-height: calc(100% - 3.5rem);
52
+ }
53
+
54
+ .modal-sm {
55
+ @media (min-width: 576px) {
56
+ max-width: 300px;
57
+ }
58
+ }
59
+
60
+ .modal-lg {
61
+ @media (min-width: 992px) {
62
+ max-width: 800px;
63
+ }
64
+ }
65
+
66
+ .modal-xl {
67
+ @media (min-width: 1200px) {
68
+ max-width: 1140px;
69
+ }
70
+ }
71
+
72
+ .modal-fullscreen {
73
+ width: 100vw;
74
+ max-width: none;
75
+ height: 100%;
76
+ margin: 0;
77
+
78
+ .modal-content {
79
+ height: 100%;
80
+ border: 0;
81
+ border-radius: 0;
82
+ }
83
+
84
+ .modal-body {
85
+ overflow-y: auto;
86
+ }
87
+ }
88
+
89
+ .modal-content {
90
+ position: relative;
91
+ display: flex;
92
+ flex-direction: column;
93
+ width: 100%;
94
+ pointer-events: auto;
95
+ background-color: #fff;
96
+ background-clip: padding-box;
97
+ border: 0; // Remove border
98
+ border-radius: $border-radius-lg * 1.5; // Larger radius
99
+ outline: 0;
100
+ box-shadow: $box-shadow-lg;
101
+ }
102
+
103
+ .modal-backdrop {
104
+ position: fixed;
105
+ top: 0;
106
+ left: 0;
107
+ z-index: 1050;
108
+ width: 100vw;
109
+ height: 100vh;
110
+ background-color: rgba(0, 0, 0, 0.3); // Lighter overlay
111
+ backdrop-filter: blur(4px); // HeroUI Blur
112
+ transition: opacity 0.2s linear;
113
+
114
+ &.fade {
115
+ opacity: 0;
116
+ }
117
+
118
+ &.show {
119
+ opacity: 1;
120
+ }
121
+ }
122
+
123
+ .modal-header {
124
+ display: flex;
125
+ flex-shrink: 0;
126
+ align-items: center;
127
+ justify-content: space-between;
128
+ padding: 1.5rem 1.5rem 0.5rem; // Spacious header
129
+ border-bottom: 0; // Removing inner borders for cleaner look
130
+ border-top-left-radius: calc(#{$border-radius-lg} * 1.5);
131
+ border-top-right-radius: calc(#{$border-radius-lg} * 1.5);
132
+
133
+ .btn-close {
134
+ padding: 0.5rem;
135
+ margin: -0.5rem -0.5rem -0.5rem auto;
136
+ }
137
+ }
138
+
139
+ .modal-title {
140
+ margin-bottom: 0;
141
+ line-height: 1.5;
142
+ font-weight: $font-weight-bold;
143
+ font-size: 1.25rem;
144
+ }
145
+
146
+ .modal-body {
147
+ position: relative;
148
+ flex: 1 1 auto;
149
+ padding: 0.5rem 1.5rem 1.5rem; // Adjust padding
150
+ }
151
+
152
+ .modal-footer {
153
+ display: flex;
154
+ flex-wrap: wrap;
155
+ flex-shrink: 0;
156
+ align-items: center;
157
+ justify-content: flex-end;
158
+ padding: 0.75rem 1.5rem 1.5rem;
159
+ border-top: 0; // Remove border
160
+ border-bottom-right-radius: calc(#{$border-radius-lg} * 1.5);
161
+ border-bottom-left-radius: calc(#{$border-radius-lg} * 1.5);
162
+
163
+ >* {
164
+ margin: 0.25rem;
165
+ }
166
+ }