@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
package/scss/cool.scss ADDED
@@ -0,0 +1,69 @@
1
+ /*!
2
+ * Cool UI (https://finqu.com)
3
+ * Copyright 2026 Finqu Oy.
4
+ * Licensed under the ISC license - (http://opensource.org/licenses/ISC)
5
+ * Forked from Bootstrap, licensed MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ */
7
+
8
+ // Base: CSS custom properties and typography
9
+ @use "root";
10
+ @use "dark";
11
+ @use "typography";
12
+
13
+ // Reset: Browser normalization
14
+ @use "reboot";
15
+
16
+ // Layout: Page structure
17
+ @use "frame";
18
+ @use "grid";
19
+ @use "media";
20
+
21
+ // Components: UI elements
22
+ @use "tables";
23
+ @use "forms";
24
+ @use "buttons";
25
+ @use "dropdown";
26
+ @use "button-group";
27
+ @use "input-group";
28
+ @use "navbar";
29
+ @use "badge";
30
+ @use "list-group";
31
+ @use "tabs";
32
+ @use "pagination";
33
+ @use "dialog";
34
+ @use "toast";
35
+ @use "tooltip";
36
+ @use "popover";
37
+ @use "notification";
38
+ @use "section";
39
+ @use "select";
40
+
41
+ // Utilities: Helper classes
42
+ @use "utilities/align";
43
+ @use "utilities/animation";
44
+ @use "utilities/background";
45
+ @use "utilities/borders";
46
+ @use "utilities/collapse";
47
+ @use "utilities/cursor";
48
+ @use "utilities/display";
49
+ @use "utilities/embed";
50
+ @use "utilities/fill";
51
+ @use "utilities/filters";
52
+ @use "utilities/flex";
53
+ @use "utilities/grid" as util-grid;
54
+ @use "utilities/opacity";
55
+ @use "utilities/overflow";
56
+ @use "utilities/perfect-scrollbar";
57
+ @use "utilities/pointer-events";
58
+ @use "utilities/position";
59
+ @use "utilities/screen-readers";
60
+ @use "utilities/shadows";
61
+ @use "utilities/sizing";
62
+ @use "utilities/spacing";
63
+ @use "utilities/stroke";
64
+ @use "utilities/text";
65
+ @use "utilities/transform";
66
+ @use "utilities/transitions";
67
+ @use "utilities/user-select";
68
+ @use "utilities/visibility";
69
+ @use "utilities/z-index";
@@ -0,0 +1,51 @@
1
+ @use "../variables" as *;
2
+ /* Align ========================================================================== */
3
+
4
+ @mixin cool-align {
5
+ .align-top {
6
+ vertical-align: top;
7
+ }
8
+
9
+ .align-middle {
10
+ vertical-align: middle;
11
+ }
12
+
13
+ .align-bottom {
14
+ vertical-align: bottom;
15
+ }
16
+
17
+ .align-baseline {
18
+ vertical-align: baseline;
19
+ }
20
+
21
+ .align-text-top {
22
+ vertical-align: text-bottom;
23
+ }
24
+
25
+ .align-text-bottom {
26
+ vertical-align: text-top;
27
+ }
28
+
29
+ .align-left {
30
+ display: block;
31
+ margin: 0 auto 0 0;
32
+ }
33
+
34
+ .align-center {
35
+ display: block;
36
+ margin: 0 auto;
37
+ }
38
+
39
+ .align-right {
40
+ display: block;
41
+ margin: 0 0 0 auto;
42
+ }
43
+ }
44
+
45
+ @if $cool-use-utilities-layer {
46
+ @layer utilities {
47
+ @include cool-align;
48
+ }
49
+ } @else {
50
+ @include cool-align;
51
+ }
@@ -0,0 +1,165 @@
1
+ @use "../variables" as *;
2
+ /* Animation ========================================================================== */
3
+
4
+ @mixin cool-animation {
5
+ .animation {
6
+ animation-duration: var(--cool-animation-duration);
7
+ animation-timing-function: var(--cool-animation-timing);
8
+ animation-fill-mode: var(--cool-animation-fill, both);
9
+ animation-iteration-count: var(--cool-animation-iteration, 1);
10
+ }
11
+
12
+ .animation.slow {
13
+ --cool-animation-duration: 2s;
14
+ }
15
+
16
+ .animation.slower {
17
+ --cool-animation-duration: 3s;
18
+ }
19
+
20
+ .animation.fast {
21
+ --cool-animation-duration: 800ms;
22
+ }
23
+
24
+ .animation.faster {
25
+ --cool-animation-duration: 500ms;
26
+ }
27
+
28
+ .animation.fastest {
29
+ --cool-animation-duration: 250ms;
30
+ }
31
+
32
+ @keyframes zoomIn {
33
+ from {
34
+ opacity: 0;
35
+ transform: scale3d(0.3, 0.3, 0.3);
36
+ }
37
+
38
+ 50% {
39
+ opacity: 1;
40
+ }
41
+
42
+ to {
43
+ opacity: 1;
44
+ }
45
+ }
46
+
47
+ .animation.zoomIn {
48
+ animation-name: zoomIn;
49
+ }
50
+
51
+ @keyframes zoomOut {
52
+ from {
53
+ opacity: 1;
54
+ }
55
+
56
+ 50% {
57
+ opacity: 0;
58
+ transform: scale3d(0.3, 0.3, 0.3);
59
+ }
60
+
61
+ to {
62
+ opacity: 0;
63
+ }
64
+ }
65
+
66
+ .animation.zoomOut {
67
+ animation-name: zoomOut;
68
+ }
69
+
70
+ @keyframes fadeIn {
71
+ from {
72
+ opacity: 0;
73
+ }
74
+
75
+ to {
76
+ opacity: 1;
77
+ }
78
+ }
79
+
80
+ .animation.fadeIn {
81
+ animation-name: fadeIn;
82
+ }
83
+
84
+ @keyframes fadeOut {
85
+ from {
86
+ opacity: 1;
87
+ }
88
+
89
+ to {
90
+ opacity: 0;
91
+ }
92
+ }
93
+
94
+ .animation.fadeOut {
95
+ animation-name: fadeOut;
96
+ }
97
+
98
+ @keyframes slideInUp {
99
+ from {
100
+ transform: translate3d(0, 100%, 0);
101
+ visibility: visible;
102
+ }
103
+
104
+ to {
105
+ transform: translate3d(0, 0, 0);
106
+ }
107
+ }
108
+
109
+ .animation.slideInUp {
110
+ animation-name: slideInUp;
111
+ }
112
+
113
+ @keyframes slideInDown {
114
+ from {
115
+ transform: translate3d(0, -100%, 0);
116
+ visibility: visible;
117
+ }
118
+
119
+ to {
120
+ transform: translate3d(0, 0, 0);
121
+ }
122
+ }
123
+
124
+ .animation.slideInDown {
125
+ animation-name: slideInDown;
126
+ }
127
+
128
+ @keyframes slideOutDown {
129
+ from {
130
+ transform: translate3d(0, 0, 0);
131
+ }
132
+
133
+ to {
134
+ visibility: hidden;
135
+ transform: translate3d(0, 100%, 0);
136
+ }
137
+ }
138
+
139
+ .animation.slideOutDown {
140
+ animation-name: slideOutDown;
141
+ }
142
+
143
+ @keyframes slideOutUp {
144
+ from {
145
+ transform: translate3d(0, 0, 0);
146
+ }
147
+
148
+ to {
149
+ visibility: hidden;
150
+ transform: translate3d(0, -100%, 0);
151
+ }
152
+ }
153
+
154
+ .animation.slideOutUp {
155
+ animation-name: slideOutUp;
156
+ }
157
+ }
158
+
159
+ @if $cool-use-utilities-layer {
160
+ @layer utilities {
161
+ @include cool-animation;
162
+ }
163
+ } @else {
164
+ @include cool-animation;
165
+ }
@@ -0,0 +1,72 @@
1
+ @use "../variables" as *;
2
+ /* Background ========================================================================== */
3
+
4
+ @mixin cool-background {
5
+ @each $color, $value in $colors {
6
+ .bg-#{$color} {
7
+ background-color: var(--cool-color-#{$color});
8
+ }
9
+
10
+ a.bg-#{$color},
11
+ button.bg-#{$color} {
12
+ &:hover,
13
+ &:focus {
14
+ background-color: color-mix(in srgb, var(--cool-color-#{$color}) 98%, black);
15
+ }
16
+ }
17
+ }
18
+
19
+ @each $color, $value in $theme-bg-colors {
20
+ .bg-#{$color} {
21
+ background-color: var(--cool-theme-bg-color-#{$color});
22
+ }
23
+
24
+ a.bg-#{$color},
25
+ button.bg-#{$color} {
26
+ &:hover,
27
+ &:focus {
28
+ background-color: color-mix(in srgb, var(--cool-theme-bg-color-#{$color}) 98%, black);
29
+ }
30
+ }
31
+ }
32
+
33
+ .bg-transparent {
34
+ background-color: transparent;
35
+ }
36
+
37
+ .bg-white {
38
+ background-color: #ffffff;
39
+ }
40
+
41
+ .bg-surface {
42
+ background-color: var(--cool-body-surface-bg);
43
+ }
44
+
45
+ a.bg-white,
46
+ button.bg-white {
47
+ &:hover,
48
+ &:focus {
49
+ background-color: color-mix(in srgb, #ffffff 98%, black);
50
+ }
51
+ }
52
+
53
+ .bg-black {
54
+ background-color: #000000;
55
+ }
56
+
57
+ a.bg-black,
58
+ button.bg-black {
59
+ &:hover,
60
+ &:focus {
61
+ background-color: color-mix(in oklab, #000000 80%, transparent);
62
+ }
63
+ }
64
+ }
65
+
66
+ @if $cool-use-utilities-layer {
67
+ @layer utilities {
68
+ @include cool-background;
69
+ }
70
+ } @else {
71
+ @include cool-background;
72
+ }
@@ -0,0 +1,205 @@
1
+ @use "../variables" as *;
2
+ /* Borders ========================================================================== */
3
+
4
+ @mixin cool-borders {
5
+ .border {
6
+ border: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
7
+ }
8
+
9
+ .border-0 {
10
+ border: 0;
11
+ }
12
+
13
+ .border-top {
14
+ border-top: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
15
+ }
16
+
17
+ .border-right {
18
+ border-right: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
19
+ }
20
+
21
+ .border-bottom {
22
+ border-bottom: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
23
+ }
24
+
25
+ .border-left {
26
+ border-left: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
27
+ }
28
+
29
+ .border-block {
30
+ border-block: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
31
+ }
32
+
33
+ .border-block-start {
34
+ border-block-start: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
35
+ }
36
+
37
+ .border-block-end {
38
+ border-block-end: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
39
+ }
40
+
41
+ .border-inline {
42
+ border-inline: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
43
+ }
44
+
45
+ .border-inline-start {
46
+ border-inline-start: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
47
+ }
48
+
49
+ .border-inline-end {
50
+ border-inline-end: var(--cool-border-width) var(--cool-border-style, solid) var(--cool-border-color);
51
+ }
52
+
53
+ .border-top-0 {
54
+ border-top: 0;
55
+ }
56
+
57
+ .border-right-0 {
58
+ border-right: 0;
59
+ }
60
+
61
+ .border-bottom-0 {
62
+ border-bottom: 0;
63
+ }
64
+
65
+ .border-left-0 {
66
+ border-left: 0;
67
+ }
68
+
69
+ @each $color, $value in $theme-colors {
70
+ .border-#{$color} {
71
+ border-color: var(--cool-theme-color-#{$color}, #{$value});
72
+ }
73
+ }
74
+
75
+ @for $i from 1 through 5 {
76
+ .border-#{$i} {
77
+ border-width: #{$i}px;
78
+ }
79
+ }
80
+
81
+ .border-solid {
82
+ border-style: solid;
83
+ }
84
+
85
+ .border-dashed {
86
+ border-style: dashed;
87
+ }
88
+
89
+ .border-dotted {
90
+ border-style: dotted;
91
+ }
92
+
93
+ .border-none {
94
+ border-style: none;
95
+ }
96
+
97
+ .rounded-0 {
98
+ border-radius: 0;
99
+ }
100
+
101
+ .rounded-xs {
102
+ border-radius: var(--cool-border-radius-xs, 0.1rem);
103
+ }
104
+
105
+ .rounded-sm {
106
+ border-radius: var(--cool-border-radius-sm, 0.2rem);
107
+ }
108
+
109
+ .rounded {
110
+ border-radius: var(--cool-border-radius, 0.25rem);
111
+ }
112
+
113
+ .rounded-lg {
114
+ border-radius: var(--cool-border-radius-lg, 0.3rem);
115
+ }
116
+
117
+ .rounded-full {
118
+ border-radius: 9999px;
119
+ }
120
+
121
+ .rounded-top {
122
+ border-top-left-radius: var(--cool-border-radius);
123
+ border-top-right-radius: var(--cool-border-radius);
124
+ }
125
+
126
+ .rounded-right {
127
+ border-top-right-radius: var(--cool-border-radius);
128
+ border-bottom-right-radius: var(--cool-border-radius);
129
+ }
130
+
131
+ .rounded-bottom {
132
+ border-bottom-right-radius: var(--cool-border-radius);
133
+ border-bottom-left-radius: var(--cool-border-radius);
134
+ }
135
+
136
+ .rounded-left {
137
+ border-top-left-radius: var(--cool-border-radius);
138
+ border-bottom-left-radius: var(--cool-border-radius);
139
+ }
140
+
141
+ .rounded-start {
142
+ border-start-start-radius: var(--cool-border-radius);
143
+ border-end-start-radius: var(--cool-border-radius);
144
+ }
145
+
146
+ .rounded-end {
147
+ border-start-end-radius: var(--cool-border-radius);
148
+ border-end-end-radius: var(--cool-border-radius);
149
+ }
150
+
151
+ .rounded-tl {
152
+ border-top-left-radius: var(--cool-border-radius);
153
+ }
154
+
155
+ .rounded-tr {
156
+ border-top-right-radius: var(--cool-border-radius);
157
+ }
158
+
159
+ .rounded-br {
160
+ border-bottom-right-radius: var(--cool-border-radius);
161
+ }
162
+
163
+ .rounded-bl {
164
+ border-bottom-left-radius: var(--cool-border-radius);
165
+ }
166
+
167
+ .rounded-ss {
168
+ border-start-start-radius: var(--cool-border-radius);
169
+ }
170
+
171
+ .rounded-se {
172
+ border-start-end-radius: var(--cool-border-radius);
173
+ }
174
+
175
+ .rounded-ee {
176
+ border-end-end-radius: var(--cool-border-radius);
177
+ }
178
+
179
+ .rounded-es {
180
+ border-end-start-radius: var(--cool-border-radius);
181
+ }
182
+
183
+ .outline-none {
184
+ outline: none;
185
+ }
186
+
187
+ .outline {
188
+ outline-style: solid;
189
+ outline-width: 2px;
190
+ }
191
+
192
+ @each $color, $value in $theme-colors {
193
+ .outline-#{$color} {
194
+ outline-color: var(--cool-theme-color-#{$color}, #{$value});
195
+ }
196
+ }
197
+ }
198
+
199
+ @if $cool-use-utilities-layer {
200
+ @layer utilities {
201
+ @include cool-borders;
202
+ }
203
+ } @else {
204
+ @include cool-borders;
205
+ }
@@ -0,0 +1,28 @@
1
+ @use "../variables" as *;
2
+ /* Collapse ========================================================================== */
3
+
4
+ @mixin cool-collapse {
5
+ .collapse:not(.show) {
6
+ display: none;
7
+ }
8
+
9
+ .collapse.show {
10
+ display: block;
11
+ }
12
+
13
+ [data-collapse-indicator] {
14
+ display: inline-block;
15
+ }
16
+
17
+ [data-collapse-indicator].show > .icon {
18
+ transform: rotate(180deg);
19
+ }
20
+ }
21
+
22
+ @if $cool-use-utilities-layer {
23
+ @layer utilities {
24
+ @include cool-collapse;
25
+ }
26
+ } @else {
27
+ @include cool-collapse;
28
+ }