@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,69 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .popover {
5
+ position: absolute;
6
+ top: 0;
7
+ left: 0;
8
+ z-index: 1060;
9
+ display: block;
10
+ max-width: 276px;
11
+ font-family: inherit;
12
+ font-style: normal;
13
+ font-weight: 400;
14
+ line-height: 1.5;
15
+ text-align: left;
16
+ text-transform: none;
17
+ letter-spacing: normal;
18
+ word-break: normal;
19
+ white-space: normal;
20
+ font-size: 0.875rem;
21
+ word-wrap: break-word;
22
+ background-color: #fff;
23
+ background-clip: padding-box;
24
+ border: 0; // No border
25
+ border-radius: $border-radius-lg;
26
+ box-shadow: $box-shadow-lg; // Strong shadow
27
+ opacity: 0;
28
+ transition: opacity 0.2s ease, transform 0.2s ease;
29
+
30
+ &.show {
31
+ opacity: 1;
32
+ }
33
+
34
+ .popover-arrow {
35
+ position: absolute;
36
+ display: block;
37
+ width: 1rem;
38
+ height: 0.5rem;
39
+
40
+ &::before,
41
+ &::after {
42
+ position: absolute;
43
+ display: block;
44
+ content: "";
45
+ border-color: transparent;
46
+ border-style: solid;
47
+ }
48
+ }
49
+ }
50
+
51
+ .popover-header {
52
+ padding: 0.75rem 1rem;
53
+ margin-bottom: 0;
54
+ font-size: 1rem;
55
+ font-weight: $font-weight-semibold;
56
+ background-color: #fff; // White header blending
57
+ border-bottom: 1px solid $gray-100;
58
+ border-top-left-radius: $border-radius-lg;
59
+ border-top-right-radius: $border-radius-lg;
60
+
61
+ &:empty {
62
+ display: none;
63
+ }
64
+ }
65
+
66
+ .popover-body {
67
+ padding: 1rem 1rem;
68
+ color: $body-color;
69
+ }
@@ -0,0 +1,90 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .progress {
5
+ --e-progress-height: 1rem;
6
+ --e-progress-font-size: 0.75rem;
7
+ --e-progress-bg: #{$gray-200}; // Lighter gray
8
+ --e-progress-border-radius: #{$border-radius-lg}; // Rounded
9
+ --e-progress-box-shadow: none; // No inner shadow
10
+ --e-progress-bar-color: #fff;
11
+ --e-progress-bar-bg: #{$primary};
12
+ --e-progress-bar-transition: width 0.6s ease;
13
+
14
+ display: flex;
15
+ height: var(--e-progress-height);
16
+ overflow: hidden;
17
+ font-size: var(--e-progress-font-size);
18
+ background-color: var(--e-progress-bg);
19
+ border-radius: var(--e-progress-border-radius);
20
+ box-shadow: var(--e-progress-box-shadow);
21
+ }
22
+
23
+ .progress-bar {
24
+ display: flex;
25
+ flex-direction: column;
26
+ justify-content: center;
27
+ overflow: hidden;
28
+ color: var(--e-progress-bar-color);
29
+ text-align: center;
30
+ white-space: nowrap;
31
+ background-color: var(--e-progress-bar-bg);
32
+ transition: var(--e-progress-bar-transition);
33
+ }
34
+
35
+ .progress-bar-striped {
36
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
37
+ background-size: 1rem 1rem;
38
+ }
39
+
40
+ @keyframes progress-bar-stripes {
41
+ 0% {
42
+ background-position-x: 1rem;
43
+ }
44
+ }
45
+
46
+ .progress-bar-animated {
47
+ animation: progress-bar-stripes 1s linear infinite;
48
+ }
49
+
50
+ // Indeterminate (loading)
51
+ .progress-indeterminate {
52
+ .progress-bar {
53
+ width: 100%;
54
+ background-color: transparent;
55
+ background-image: linear-gradient(to right, transparent 0%, $primary 50%, transparent 100%);
56
+ background-size: 200% 100%;
57
+ animation: progress-indeterminate 1.5s infinite linear;
58
+ }
59
+ }
60
+
61
+ @keyframes progress-indeterminate {
62
+ 0% {
63
+ background-position: 100% 0;
64
+ }
65
+
66
+ 100% {
67
+ background-position: -100% 0;
68
+ }
69
+ }
70
+
71
+ // Sizes
72
+ .progress-sm {
73
+ --e-progress-height: 0.5rem;
74
+ }
75
+
76
+ .progress-md {
77
+ --e-progress-height: 1rem;
78
+ }
79
+
80
+ .progress-lg {
81
+ --e-progress-height: 1.5rem;
82
+ font-size: 1rem;
83
+ }
84
+
85
+ // Colors
86
+ @each $color, $value in $theme-colors {
87
+ .progress-bar-#{$color} {
88
+ background-color: $value;
89
+ }
90
+ }
@@ -0,0 +1,82 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .form-range {
5
+ width: 100%;
6
+ height: 1.5rem;
7
+ padding: 0;
8
+ background-color: transparent;
9
+ appearance: none;
10
+
11
+ &:focus {
12
+ outline: 0;
13
+
14
+ &::-webkit-slider-thumb {
15
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba($primary, 0.25);
16
+ }
17
+ }
18
+
19
+ &::-webkit-slider-thumb {
20
+ width: 1rem;
21
+ height: 1rem;
22
+ margin-top: -0.25rem;
23
+ background-color: $primary;
24
+ border: 0;
25
+ border-radius: 1rem;
26
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
27
+ appearance: none;
28
+ cursor: pointer;
29
+
30
+ &:active {
31
+ background-color: color.scale($primary, $lightness: 90%);
32
+ }
33
+ }
34
+
35
+ &::-webkit-slider-runnable-track {
36
+ width: 100%;
37
+ height: 0.5rem;
38
+ color: transparent;
39
+ cursor: pointer;
40
+ background-color: $gray-300;
41
+ border-color: transparent;
42
+ border-radius: 1rem;
43
+ }
44
+
45
+ // Firefox styles
46
+ &::-moz-range-thumb {
47
+ width: 1rem;
48
+ height: 1rem;
49
+ background-color: $primary;
50
+ border: 0;
51
+ border-radius: 1rem;
52
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
53
+ appearance: none;
54
+ cursor: pointer;
55
+
56
+ &:active {
57
+ background-color: color.scale($primary, $lightness: 90%);
58
+ }
59
+ }
60
+
61
+ &::-moz-range-track {
62
+ width: 100%;
63
+ height: 0.5rem;
64
+ color: transparent;
65
+ cursor: pointer;
66
+ background-color: $gray-300;
67
+ border-color: transparent;
68
+ border-radius: 1rem;
69
+ }
70
+
71
+ &:disabled {
72
+ pointer-events: none;
73
+
74
+ &::-webkit-slider-thumb {
75
+ background-color: $gray-500;
76
+ }
77
+
78
+ &::-moz-range-thumb {
79
+ background-color: $gray-500;
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,239 @@
1
+ // Scrollspy
2
+ @use "sass:color";
3
+ @use "../abstracts/variables" as *;
4
+ // Styles for the documentation scrollspy example
5
+
6
+ // Container styling
7
+ .scrollspy-container {
8
+ position: relative;
9
+ height: 480px;
10
+ overflow-y: auto;
11
+ scroll-behavior: smooth;
12
+ border: 1px solid $gray-200;
13
+ border-radius: $border-radius-lg;
14
+ padding: 2rem;
15
+ background-color: $white;
16
+
17
+ // Custom scrollbar
18
+ &::-webkit-scrollbar {
19
+ width: 6px;
20
+ }
21
+
22
+ &::-webkit-scrollbar-track {
23
+ background: $gray-100;
24
+ border-radius: 3px;
25
+ }
26
+
27
+ &::-webkit-scrollbar-thumb {
28
+ background: $gray-300;
29
+ border-radius: 3px;
30
+
31
+ &:hover {
32
+ background: $gray-400;
33
+ }
34
+ }
35
+ }
36
+
37
+ // Navigation styling
38
+ .scrollspy-nav {
39
+ position: sticky;
40
+ top: 1rem;
41
+ padding: 0;
42
+
43
+ // Main links
44
+ >.nav-link {
45
+ display: block;
46
+ padding: 0.75rem 1.25rem;
47
+ color: $gray-600;
48
+ text-decoration: none;
49
+ transition: all 0.2s ease-in-out;
50
+ border: none;
51
+ border-left: 4px solid transparent;
52
+ margin-left: 0;
53
+ font-weight: 500;
54
+ background: transparent;
55
+
56
+ &:hover {
57
+ color: $primary;
58
+ background-color: rgba($primary, 0.05);
59
+ padding-left: 1.5rem;
60
+ }
61
+
62
+ &.active {
63
+ color: $primary !important;
64
+ font-weight: 700;
65
+ border-left-color: $primary !important;
66
+ background-color: rgba($primary, 0.1);
67
+ background: linear-gradient(90deg, rgba($primary, 0.12) 0%, rgba($primary, 0) 100%);
68
+ padding-left: 1.5rem;
69
+ box-shadow: inset 1px 0 0 rgba($primary, 0.1);
70
+ }
71
+ }
72
+
73
+ // Nested links
74
+ .nav {
75
+ display: none; // Hidden by default
76
+ padding-left: 0;
77
+
78
+ .nav-link {
79
+ padding: 0.5rem 1.25rem 0.5rem 2rem;
80
+ font-size: 0.85rem;
81
+ color: $gray-500;
82
+ border-left: 3px solid transparent;
83
+
84
+ &:hover {
85
+ color: $primary;
86
+ }
87
+
88
+ &.active {
89
+ color: $primary !important;
90
+ border-left-color: rgba($primary, 0.5) !important;
91
+ background-color: rgba($primary, 0.04);
92
+ font-weight: 600;
93
+ padding-left: 2rem;
94
+ }
95
+ }
96
+ }
97
+
98
+ // Show nested nav when parent is active
99
+ // Bootstrap adds .active to the parent link
100
+ .nav-link.active+.nav {
101
+ display: block !important;
102
+ }
103
+ }
104
+
105
+ // Layout wrapper
106
+ .scrollspy-layout {
107
+ display: grid;
108
+ grid-template-columns: 240px 1fr;
109
+ gap: 0;
110
+ position: relative;
111
+ border: 1px solid $gray-200;
112
+ border-radius: $border-radius-lg;
113
+ overflow: hidden;
114
+ background: $white;
115
+
116
+ .scrollspy-sidebar {
117
+ background: $gray-50;
118
+ border-right: 1px solid $gray-200;
119
+ padding: 1.5rem 0;
120
+ }
121
+
122
+ .scrollspy-content {
123
+ padding: 2rem;
124
+ height: 500px;
125
+ overflow-y: auto;
126
+ scroll-behavior: smooth;
127
+ }
128
+ }
129
+
130
+ // Dark Variant
131
+ .scrollspy-dark {
132
+ border-color: $gray-800;
133
+ background: #1a1d21;
134
+ color: $gray-300;
135
+
136
+ .scrollspy-sidebar {
137
+ background: #212529;
138
+ border-right-color: $gray-800;
139
+ }
140
+
141
+ .scrollspy-nav {
142
+
143
+ .nav-item .nav-link,
144
+ a.nav-link {
145
+ color: $gray-400;
146
+
147
+ &:hover {
148
+ color: color.adjust($primary, $lightness: 10%);
149
+ background-color: rgba($primary, 0.1);
150
+ }
151
+
152
+ &.active {
153
+ color: color.adjust($primary, $lightness: 10%) !important;
154
+ border-left-color: color.adjust($primary, $lightness: 10%) !important;
155
+ background: linear-gradient(90deg, rgba($primary, 0.2) 0%, rgba($primary, 0) 100%);
156
+ }
157
+ }
158
+
159
+ .nav .nav-link {
160
+ color: $gray-500;
161
+
162
+ &.active {
163
+ color: color.adjust($primary, $lightness: 10%) !important;
164
+ border-left-color: rgba($primary, 0.4) !important;
165
+ }
166
+ }
167
+ }
168
+
169
+ .scrollspy-content {
170
+
171
+ h4,
172
+ h5 {
173
+ color: $gray-100;
174
+ border-bottom-color: $gray-700;
175
+ }
176
+
177
+ p {
178
+ color: $gray-400;
179
+ }
180
+ }
181
+ }
182
+
183
+ // List Group Variant
184
+ .list-group-scrollspy {
185
+ position: sticky;
186
+ top: 1rem;
187
+
188
+ .list-group-item {
189
+ border: none;
190
+ padding: 0.75rem 1.25rem;
191
+ color: $gray-600;
192
+ background-color: transparent;
193
+ transition: all 0.2s;
194
+ border-radius: $border-radius;
195
+ margin-bottom: 2px;
196
+
197
+ &:hover {
198
+ background-color: $gray-100;
199
+ color: $primary;
200
+ }
201
+
202
+ &.active {
203
+ color: color.adjust($primary, $lightness: 10%) !important;
204
+ background-color: rgba($primary, 0.1) !important;
205
+ font-weight: 600;
206
+ box-shadow: none !important;
207
+ transform: translateX(5px);
208
+ border-left: 3px solid $primary !important;
209
+ border-radius: 0 $border-radius $border-radius 0;
210
+ // Override bootstrap default selection border
211
+ border-top: none;
212
+ border-bottom: none;
213
+ border-right: none;
214
+ }
215
+ }
216
+ }
217
+
218
+ // Content styling shared
219
+ .scrollspy-content {
220
+
221
+ h4,
222
+ h5 {
223
+ margin-top: 1.5rem;
224
+ margin-bottom: 1rem;
225
+ padding-bottom: 0.5rem;
226
+ border-bottom: 1px dashed $gray-300;
227
+ color: $dark;
228
+ scroll-margin-top: 4rem;
229
+
230
+ &:first-child {
231
+ margin-top: 0 !important;
232
+ }
233
+ }
234
+
235
+ p {
236
+ line-height: 1.6;
237
+ margin-bottom: 1rem;
238
+ }
239
+ }
@@ -0,0 +1,108 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .skeleton {
5
+ position: relative;
6
+ overflow: hidden;
7
+ background-color: $gray-300;
8
+ border-radius: $border-radius;
9
+ width: 100%;
10
+
11
+ // Animation
12
+ &::after {
13
+ content: "";
14
+ position: absolute;
15
+ top: 0;
16
+ right: 0;
17
+ bottom: 0;
18
+ left: 0;
19
+ transform: translateX(-100%);
20
+ background-image: linear-gradient(90deg,
21
+ rgba(#fff, 0) 0,
22
+ rgba(#fff, 0.2) 20%,
23
+ rgba(#fff, 0.5) 60%,
24
+ rgba(#fff, 0));
25
+ animation: shimmer 2s infinite;
26
+ }
27
+
28
+ // Shapes
29
+ &.skeleton-text {
30
+ height: 1em;
31
+ margin-bottom: 0.5rem;
32
+ border-radius: $border-radius-sm;
33
+ }
34
+
35
+ &.skeleton-circle {
36
+ border-radius: 50%;
37
+ }
38
+
39
+ &.skeleton-rect {
40
+ border-radius: 0;
41
+ }
42
+
43
+ // Fixed sizes
44
+ &.skeleton-w-10 {
45
+ width: 10%;
46
+ }
47
+
48
+ &.skeleton-w-20 {
49
+ width: 20%;
50
+ }
51
+
52
+ &.skeleton-w-30 {
53
+ width: 30%;
54
+ }
55
+
56
+ &.skeleton-w-40 {
57
+ width: 40%;
58
+ }
59
+
60
+ &.skeleton-w-50 {
61
+ width: 50%;
62
+ }
63
+
64
+ &.skeleton-w-60 {
65
+ width: 60%;
66
+ }
67
+
68
+ &.skeleton-w-70 {
69
+ width: 70%;
70
+ }
71
+
72
+ &.skeleton-w-80 {
73
+ width: 80%;
74
+ }
75
+
76
+ &.skeleton-w-90 {
77
+ width: 90%;
78
+ }
79
+ }
80
+
81
+ @keyframes shimmer {
82
+ 100% {
83
+ transform: translateX(100%);
84
+ }
85
+ }
86
+
87
+ // Pulse Animation Variant
88
+ .skeleton-pulse {
89
+ &::after {
90
+ display: none; // Disable shimmer
91
+ }
92
+
93
+ animation: pulse 1.5s ease-in-out 0.5s infinite;
94
+ }
95
+
96
+ @keyframes pulse {
97
+ 0% {
98
+ opacity: 1;
99
+ }
100
+
101
+ 50% {
102
+ opacity: 0.4;
103
+ }
104
+
105
+ 100% {
106
+ opacity: 1;
107
+ }
108
+ }
@@ -0,0 +1,95 @@
1
+ @use "sass:color";
2
+ @use "../abstracts/variables" as *;
3
+
4
+ .form-range {
5
+ width: 100%;
6
+ height: 1.5rem;
7
+ padding: 0;
8
+ background-color: transparent;
9
+ appearance: none;
10
+
11
+ &:focus {
12
+ outline: 0;
13
+
14
+ &::-webkit-slider-thumb {
15
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba($primary, 0.25);
16
+ }
17
+ }
18
+
19
+ &::-webkit-slider-thumb {
20
+ width: 1rem;
21
+ height: 1rem;
22
+ margin-top: -0.25rem;
23
+ background-color: $primary;
24
+ border: 0;
25
+ border-radius: 1rem;
26
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
27
+ appearance: none;
28
+ cursor: pointer;
29
+
30
+ &:active {
31
+ background-color: color.scale($primary, $lightness: 10%);
32
+ }
33
+ }
34
+
35
+ &::-webkit-slider-runnable-track {
36
+ width: 100%;
37
+ height: 0.5rem;
38
+ color: transparent;
39
+ cursor: pointer;
40
+ background-color: $gray-300;
41
+ border-color: transparent;
42
+ border-radius: 1rem;
43
+ }
44
+
45
+ // Firefox
46
+ &::-moz-range-thumb {
47
+ width: 1rem;
48
+ height: 1rem;
49
+ background-color: $primary;
50
+ border: 0;
51
+ border-radius: 1rem;
52
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
53
+ appearance: none;
54
+ cursor: pointer;
55
+ }
56
+
57
+ &::-moz-range-track {
58
+ width: 100%;
59
+ height: 0.5rem;
60
+ color: transparent;
61
+ cursor: pointer;
62
+ background-color: $gray-300;
63
+ border-color: transparent;
64
+ border-radius: 1rem;
65
+ }
66
+
67
+ // Sizes
68
+ &.form-range-sm {
69
+ height: 1rem;
70
+
71
+ &::-webkit-slider-thumb {
72
+ width: 0.75rem;
73
+ height: 0.75rem;
74
+ margin-top: -0.125rem;
75
+ }
76
+
77
+ &::-webkit-slider-runnable-track {
78
+ height: 0.375rem;
79
+ }
80
+ }
81
+
82
+ &.form-range-lg {
83
+ height: 2rem;
84
+
85
+ &::-webkit-slider-thumb {
86
+ width: 1.5rem;
87
+ height: 1.5rem;
88
+ margin-top: -0.5rem;
89
+ }
90
+
91
+ &::-webkit-slider-runnable-track {
92
+ height: 0.75rem;
93
+ }
94
+ }
95
+ }