@finqu/cool 1.3.0 → 2.0.2

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 (74) hide show
  1. package/README.md +23 -9
  2. package/dist/css/cool.css +13391 -7742
  3. package/dist/css/cool.css.map +1 -1
  4. package/dist/css/cool.min.css +2 -93
  5. package/dist/css/cool.min.css.map +1 -1
  6. package/dist/js/cool.bundle.js +16051 -17050
  7. package/dist/js/cool.bundle.js.map +1 -1
  8. package/dist/js/cool.bundle.min.js +11 -18
  9. package/dist/js/cool.bundle.min.js.map +1 -1
  10. package/dist/js/cool.esm.js +3469 -4468
  11. package/dist/js/cool.esm.js.map +1 -1
  12. package/dist/js/cool.esm.min.js +2 -8
  13. package/dist/js/cool.esm.min.js.map +1 -1
  14. package/dist/js/cool.js +5083 -6089
  15. package/dist/js/cool.js.map +1 -1
  16. package/dist/js/cool.min.js +2 -8
  17. package/dist/js/cool.min.js.map +1 -1
  18. package/package.json +48 -16
  19. package/scss/LISENCE +15 -0
  20. package/scss/_badge.scss +134 -0
  21. package/scss/_button-group.scss +80 -0
  22. package/scss/_buttons.scss +304 -0
  23. package/scss/_dark.scss +637 -0
  24. package/scss/_dialog.scss +351 -0
  25. package/scss/_dropdown.scss +165 -0
  26. package/scss/_forms.scss +613 -0
  27. package/scss/_frame.scss +948 -0
  28. package/scss/_grid.scss +215 -0
  29. package/scss/_input-group.scss +326 -0
  30. package/scss/_list-group.scss +127 -0
  31. package/scss/_media.scss +439 -0
  32. package/scss/_navbar.scss +122 -0
  33. package/scss/_notification.scss +115 -0
  34. package/scss/_pagination.scss +82 -0
  35. package/scss/_popover.scss +61 -0
  36. package/scss/_reboot.scss +306 -0
  37. package/scss/_root.scss +848 -0
  38. package/scss/_section.scss +735 -0
  39. package/scss/_select.scss +559 -0
  40. package/scss/_tables.scss +611 -0
  41. package/scss/_tabs.scss +50 -0
  42. package/scss/_toast.scss +277 -0
  43. package/scss/_tooltip.scss +130 -0
  44. package/scss/_typography.scss +166 -0
  45. package/scss/_variables.scss +1229 -0
  46. package/scss/cool.scss +69 -0
  47. package/scss/utilities/_align.scss +51 -0
  48. package/scss/utilities/_animation.scss +165 -0
  49. package/scss/utilities/_background.scss +72 -0
  50. package/scss/utilities/_borders.scss +205 -0
  51. package/scss/utilities/_collapse.scss +28 -0
  52. package/scss/utilities/_cursor.scss +160 -0
  53. package/scss/utilities/_display.scss +116 -0
  54. package/scss/utilities/_embed.scss +89 -0
  55. package/scss/utilities/_fill.scss +79 -0
  56. package/scss/utilities/_filters.scss +233 -0
  57. package/scss/utilities/_flex.scss +216 -0
  58. package/scss/utilities/_grid.scss +136 -0
  59. package/scss/utilities/_opacity.scss +131 -0
  60. package/scss/utilities/_overflow.scss +242 -0
  61. package/scss/utilities/_perfect-scrollbar.scss +147 -0
  62. package/scss/utilities/_pointer-events.scss +125 -0
  63. package/scss/utilities/_position.scss +130 -0
  64. package/scss/utilities/_screen-readers.scss +95 -0
  65. package/scss/utilities/_shadows.scss +195 -0
  66. package/scss/utilities/_sizing.scss +288 -0
  67. package/scss/utilities/_spacing.scss +168 -0
  68. package/scss/utilities/_stroke.scss +124 -0
  69. package/scss/utilities/_text.scss +420 -0
  70. package/scss/utilities/_transform.scss +232 -0
  71. package/scss/utilities/_transitions.scss +147 -0
  72. package/scss/utilities/_user-select.scss +93 -0
  73. package/scss/utilities/_visibility.scss +66 -0
  74. package/scss/utilities/_z-index.scss +169 -0
@@ -0,0 +1,351 @@
1
+ @use "variables" as *;
2
+ /* Dialog ========================================================================== */
3
+
4
+ @mixin cool-dialog {
5
+ .dialog {
6
+ position: fixed;
7
+ top: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ left: 0;
11
+ z-index: var(--cool-zindex-dialog);
12
+ overflow: hidden;
13
+ outline: 0;
14
+ -webkit-overflow-scrolling: touch;
15
+
16
+ .dialog-container {
17
+ position: relative;
18
+ margin: var(--cool-dialog-margin);
19
+ pointer-events: none;
20
+
21
+ .dialog-content {
22
+ display: flex;
23
+ flex-direction: column;
24
+ width: var(--cool-dialog-width);
25
+ pointer-events: auto;
26
+ position: relative;
27
+ text-align: left;
28
+ border: none;
29
+ border-radius: var(--cool-border-radius);
30
+ background-color: var(--cool-dialog-bg);
31
+ background-clip: padding-box;
32
+ outline: 0;
33
+ overflow: auto;
34
+ box-shadow: var(--cool-dialog-box-shadow);
35
+
36
+ @include media-breakpoint-down(md) {
37
+ min-width: 50vw;
38
+ }
39
+
40
+ @include media-breakpoint-down(sm) {
41
+ min-width: calc(100vw - calc(var(--cool-dialog-margin-x) * 2));
42
+ }
43
+
44
+ .dialog-header {
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: space-between;
48
+ padding: var(--cool-dialog-padding-y) var(--cool-dialog-padding-x);
49
+ border-bottom: var(--cool-dialog-border-width) solid var(--cool-border-color);
50
+ min-height: var(--cool-dialog-header-height);
51
+
52
+ @include media-breakpoint-down(md) {
53
+ text-align: center;
54
+ }
55
+
56
+ & + .dialog-body,
57
+ & + .dialog-footer {
58
+ padding-top: 0;
59
+ }
60
+
61
+ .dialog-title {
62
+ font-size: var(--cool-dialog-title-font-size);
63
+ width: 100%;
64
+ font-family: var(--cool-dialog-title-font-family);
65
+ font-weight: var(--cool-dialog-title-font-weight);
66
+ }
67
+
68
+ .dialog-header-close {
69
+ position: absolute;
70
+ top: calc(var(--cool-dialog-padding-y) * 0.5);
71
+ right: calc(var(--cool-dialog-padding-x) * 0.5);
72
+ color: var(--cool-body-color);
73
+ background-color: transparent;
74
+ border: 0;
75
+ opacity: 0.75;
76
+
77
+ &:hover,
78
+ &:focus {
79
+ opacity: 1;
80
+ outline: 0;
81
+ }
82
+ }
83
+ }
84
+
85
+ &:not(:has(.dialog-header)) .dialog-body .content-full-height {
86
+ margin-top: calc(var(--cool-dialog-padding-y) * -1);
87
+ }
88
+
89
+ &:not(:has(.dialog-footer)) .dialog-body .content-full-height {
90
+ margin-bottom: calc(var(--cool-dialog-padding-y) * -1);
91
+ }
92
+
93
+ .dialog-body {
94
+ position: relative;
95
+ flex: 1 1 auto;
96
+ padding: var(--cool-dialog-padding-y) var(--cool-dialog-padding-x);
97
+ overflow-y: auto;
98
+ max-height: var(--cool-dialog-body-height, auto);
99
+ --cool-table-th-padding: var(--cool-table-th-padding-y) var(--cool-dialog-padding-x);
100
+ --cool-table-td-padding: var(--cool-table-td-padding-y) var(--cool-dialog-padding-x);
101
+ --cool-list-group-item-padding-x: var(--cool-dialog-padding-x);
102
+
103
+ &:has(+ .dialog-footer) {
104
+ padding-bottom: 0;
105
+ }
106
+
107
+ .content-full-width {
108
+ margin-left: calc(var(--cool-dialog-padding-x) * -1);
109
+ margin-right: calc(var(--cool-dialog-padding-x) * -1);
110
+ }
111
+
112
+ .content-to-top {
113
+ margin-top: calc(var(--cool-dialog-padding-y) * -1);
114
+ }
115
+
116
+ .content-to-bottom {
117
+ margin-bottom: calc(var(--cool-dialog-padding-y) * -1);
118
+ }
119
+
120
+ > .tabs-container {
121
+ border-bottom: 1px solid var(--cool-section-tabs-border-color);
122
+ margin-left: calc(var(--cool-dialog-padding-x) * -1);
123
+ margin-right: calc(var(--cool-dialog-padding-x) * -1);
124
+
125
+ > .tab-nav {
126
+ display: flex;
127
+ align-items: stretch;
128
+ flex-wrap: nowrap;
129
+ list-style: none;
130
+ padding: 0 var(--cool-dialog-padding-x);
131
+ margin: 0;
132
+ overflow: visible;
133
+ border-bottom: 1px solid var(--cool-section-tabs-border-color);
134
+ gap: var(--cool-section-tabs-item-gap);
135
+ position: relative;
136
+
137
+ > .tab-nav-item {
138
+ display: flex;
139
+ align-items: stretch;
140
+ flex-grow: 0;
141
+ flex-shrink: 0;
142
+ position: relative;
143
+ margin: 0;
144
+ font-family: var(--cool-font-family-sans-serif);
145
+ font-weight: var(--cool-font-weight-base);
146
+ padding: 0;
147
+
148
+ &.dropdown-container {
149
+ display: none;
150
+ position: absolute;
151
+ right: var(--cool-section-tabs-item-gap);
152
+ top: 0;
153
+ bottom: 0;
154
+
155
+ &.visible {
156
+ display: flex;
157
+ }
158
+ }
159
+
160
+ > .tab-nav-item-action {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: center;
164
+ flex-grow: 1;
165
+ line-height: 1;
166
+ position: relative;
167
+ text-align: center;
168
+ cursor: pointer;
169
+ min-width: var(--cool-section-tabs-item-min-width);
170
+ color: var(--cool-section-tabs-color);
171
+ padding: var(--cool-section-tabs-item-padding-y) 0;
172
+ border-bottom: var(--cool-section-tabs-border-width) solid transparent;
173
+ border-radius: 0;
174
+
175
+ &:hover {
176
+ color: var(--cool-section-tabs-hover-color);
177
+ border-color: var(--cool-section-tabs-border-hover-color);
178
+ }
179
+
180
+ &.active {
181
+ color: var(--cool-section-tabs-active-color);
182
+ border-color: var(--cool-section-tabs-border-active-color);
183
+ font-weight: var(--cool-font-weight-bold);
184
+ }
185
+ }
186
+
187
+ > span.tab-item-action {
188
+ cursor: default;
189
+ }
190
+ }
191
+ }
192
+
193
+ > .tab-content-item:not(.active) {
194
+ display: none;
195
+ }
196
+ }
197
+ }
198
+
199
+ .dialog-footer {
200
+ display: flex;
201
+ align-items: center;
202
+ padding: var(--cool-dialog-padding-y) var(--cool-dialog-padding-x);
203
+ border-top: var(--cool-dialog-border-width) solid var(--cool-border-color);
204
+ gap: var(--cool-spacing-2);
205
+ min-height: var(--cool-dialog-footer-height);
206
+
207
+ .btn {
208
+ flex: 1;
209
+ }
210
+
211
+ .spacer {
212
+ width: 30%;
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
218
+
219
+ @include media-breakpoint-up(md) {
220
+ .dialog {
221
+ --cool-dialog-width: var(--cool-dialog-width-md);
222
+ --cool-dialog-margin: var(--cool-dialog-margin-y-lg);
223
+ }
224
+
225
+ .dialog-sm {
226
+ --cool-dialog-width: var(--cool-dialog-width-sm);
227
+ }
228
+
229
+ .dialog-lg {
230
+ --cool-dialog-width: var(--cool-dialog-width-lg);
231
+ }
232
+
233
+ .dialog-xl {
234
+ --cool-dialog-width: var(--cool-dialog-width-xl);
235
+ }
236
+ }
237
+
238
+ .dialog-full {
239
+ .dialog-container {
240
+ width: calc(100vw - calc(var(--cool-dialog-margin-x) * 2));
241
+ height: calc(100dvh - calc(var(--cool-dialog-margin-y) * 2));
242
+ max-width: 100%;
243
+ margin: auto;
244
+ position: absolute;
245
+ inset: 0;
246
+
247
+ @include media-breakpoint-up(sm) {
248
+ width: calc(100vw - calc(var(--cool-dialog-margin-x-lg) * 2));
249
+ height: calc(100dvh - calc(var(--cool-dialog-margin-y-lg) * 2));
250
+ }
251
+
252
+ .dialog-content {
253
+ width: 100%;
254
+ height: 100%;
255
+ display: grid;
256
+ grid-template-rows: auto 1fr auto;
257
+
258
+ &:not(:has(.dialog-footer)) {
259
+ grid-template-rows: auto 1fr;
260
+ }
261
+ }
262
+ }
263
+ }
264
+
265
+ .dialog-centered:not(.dialog-full) {
266
+ .dialog-container {
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: center;
270
+ height: calc(100dvh - var(--cool-dialog-margin-y) * 2);
271
+
272
+ @include media-breakpoint-up(sm) {
273
+ height: calc(100dvh - var(--cool-dialog-margin-y-lg) * 2);
274
+ }
275
+ }
276
+ }
277
+
278
+ .dialog-notification {
279
+ .dialog-container {
280
+ @include media-breakpoint-up(sm) {
281
+ max-width: var(--cool-dialog-notification-width);
282
+ }
283
+
284
+ .dialog-content {
285
+ .dialog-header {
286
+ padding: var(--cool-dialog-padding-y) var(--cool-dialog-padding-x) 0;
287
+
288
+ .dialog-title {
289
+ text-align: center;
290
+ }
291
+
292
+ .dialog-header-close {
293
+ display: none;
294
+ }
295
+ }
296
+
297
+ .dialog-body {
298
+ text-align: center;
299
+ min-height: var(--cool-dialog-notification-body-height);
300
+ }
301
+
302
+ .dialog-footer {
303
+ justify-content: center;
304
+
305
+ .spacer {
306
+ display: none;
307
+ }
308
+ }
309
+ }
310
+ }
311
+ }
312
+
313
+ .dialog-backdrop {
314
+ position: fixed;
315
+ top: 0;
316
+ bottom: 0;
317
+ left: 0;
318
+ right: 0;
319
+ opacity: 0;
320
+ background-color: #000000;
321
+ z-index: var(--cool-zindex-dialog);
322
+ backface-visibility: hidden;
323
+ transition: opacity 0.1s;
324
+ }
325
+
326
+ .has-dialogs .dialog-backdrop {
327
+ opacity: var(--cool-dialog-backdrop-opacity);
328
+ }
329
+
330
+ .dialog-overflow-visible {
331
+ overflow: visible;
332
+
333
+ .dialog-container {
334
+ .dialog-content {
335
+ overflow: visible;
336
+
337
+ .dialog-body {
338
+ overflow-y: visible;
339
+ }
340
+ }
341
+ }
342
+ }
343
+ }
344
+
345
+ @if $cool-use-component-layer {
346
+ @layer components {
347
+ @include cool-dialog;
348
+ }
349
+ } @else {
350
+ @include cool-dialog;
351
+ }
@@ -0,0 +1,165 @@
1
+ @use "variables" as *;
2
+ /* Dropdown ========================================================================== */
3
+
4
+ @mixin cool-dropdown {
5
+ .dropdown {
6
+ position: relative;
7
+ display: inline-flex;
8
+ align-items: center;
9
+
10
+ .dropdown-trigger {
11
+ > .icon {
12
+ pointer-events: none;
13
+ }
14
+ }
15
+ }
16
+
17
+ .dropdown-menu {
18
+ position: absolute;
19
+ top: 100%;
20
+ left: 0;
21
+ z-index: var(--cool-zindex-dropdown);
22
+ display: none;
23
+ float: left;
24
+ min-width: var(--cool-dropdown-width);
25
+ padding: var(--cool-dropdown-padding-y) 0;
26
+ margin: 0;
27
+ font-size: var(--cool-dropdown-font-size);
28
+ text-align: left;
29
+ list-style: none;
30
+ background-color: var(--cool-dropdown-bg);
31
+ background-clip: padding-box;
32
+ border: var(--cool-dropdown-border-width) solid var(--cool-dropdown-border-color);
33
+ color: var(--cool-dropdown-color);
34
+ overflow: hidden;
35
+ box-shadow: var(--cool-dropdown-box-shadow);
36
+ border-radius: var(--cool-dropdown-border-radius);
37
+ font-family: var(--cool-font-family-sans-serif);
38
+ }
39
+
40
+ .dropdown-divider {
41
+ height: 0;
42
+ margin: var(--cool-nav-divider-margin-y) 0;
43
+ overflow: hidden;
44
+ border-top: var(--cool-dropdown-border-width) solid var(--cool-dropdown-divider-bg);
45
+ }
46
+
47
+ .dropdown-content {
48
+ width: 100%;
49
+ padding: var(--cool-dropdown-item-padding-y) var(--cool-dropdown-item-padding-x);
50
+ }
51
+
52
+ .dropdown-item {
53
+ display: block;
54
+ width: 100%;
55
+ padding: var(--cool-dropdown-item-padding-y) var(--cool-dropdown-item-padding-x);
56
+ color: var(--cool-dropdown-link-color);
57
+ font-family: var(--cool-font-family-sans-serif);
58
+ font-weight: var(--cool-font-weight-normal);
59
+ line-height: var(--cool-dropdown-line-height);
60
+ text-align: inherit;
61
+ background-color: transparent;
62
+ appearance: none;
63
+ white-space: nowrap;
64
+ border: 0;
65
+
66
+ &:hover,
67
+ &:focus {
68
+ color: var(--cool-dropdown-link-hover-color);
69
+ text-decoration: none;
70
+ cursor: pointer;
71
+ background-color: var(--cool-dropdown-link-hover-bg);
72
+ }
73
+
74
+ &.active,
75
+ &:active {
76
+ color: var(--cool-dropdown-link-active-color);
77
+ text-decoration: none;
78
+ background-color: var(--cool-dropdown-link-active-bg);
79
+ }
80
+
81
+ &.disabled,
82
+ &:disabled {
83
+ color: var(--cool-dropdown-link-disabled-color);
84
+ background: transparent;
85
+ cursor: default;
86
+ }
87
+
88
+ .icon + span {
89
+ margin-left: var(--cool-icon-spacer);
90
+ }
91
+ }
92
+
93
+ button.dropdown-item {
94
+ cursor: pointer;
95
+ outline: 0;
96
+ }
97
+
98
+ .dropdown-menu.show {
99
+ display: block;
100
+ }
101
+
102
+ .dropdown-title {
103
+ display: block;
104
+ padding: var(--cool-dropdown-item-padding-y) var(--cool-dropdown-item-padding-x);
105
+ font-size: var(--cool-font-size-xs);
106
+ color: var(--cool-dropdown-title-color);
107
+ text-transform: uppercase;
108
+ letter-spacing: 0.2px;
109
+ }
110
+
111
+ .dropdown-item-text {
112
+ display: block;
113
+ padding: var(--cool-dropdown-item-padding-y) var(--cool-dropdown-item-padding-x);
114
+ color: var(--cool-dropdown-link-color);
115
+ }
116
+
117
+ .dropdown-scrollable-content {
118
+ position: relative;
119
+ }
120
+
121
+ .dropdown-list {
122
+ padding: 0;
123
+ margin: 0;
124
+ list-style: none;
125
+
126
+ li {
127
+ a {
128
+ display: block;
129
+ width: 100%;
130
+ font-weight: var(--cool-font-weight-normal);
131
+ color: var(--cool-dropdown-link-color);
132
+ white-space: nowrap;
133
+ box-sizing: border-box;
134
+
135
+ &:hover,
136
+ &:focus {
137
+ color: var(--cool-dropdown-link-hover-color);
138
+ text-decoration: none;
139
+ background-color: var(--cool-dropdown-link-hover-bg);
140
+ }
141
+
142
+ &.active,
143
+ &:active {
144
+ color: var(--cool-dropdown-link-active-color);
145
+ text-decoration: none;
146
+ background-color: var(--cool-dropdown-link-active-bg);
147
+ }
148
+
149
+ &.disabled,
150
+ &:disabled {
151
+ color: var(--cool-dropdown-link-disabled-color);
152
+ background-color: transparent;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+
159
+ @if $cool-use-component-layer {
160
+ @layer components {
161
+ @include cool-dropdown;
162
+ }
163
+ } @else {
164
+ @include cool-dropdown;
165
+ }