@allxsmith/bestax-bulma 2.6.2 → 3.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 (138) hide show
  1. package/README.md +2 -2
  2. package/dist/bestax.css +3 -0
  3. package/dist/bestax.css.map +1 -0
  4. package/dist/bestax.js +1 -0
  5. package/dist/extras.css +3 -0
  6. package/dist/extras.css.map +1 -0
  7. package/dist/extras.js +1 -0
  8. package/dist/index.cjs.js +6214 -647
  9. package/dist/index.cjs.js.map +1 -1
  10. package/dist/index.esm.js +6154 -649
  11. package/dist/index.esm.js.map +1 -1
  12. package/dist/types/components/Carousel.d.ts +34 -0
  13. package/dist/types/components/Collapse.d.ts +17 -0
  14. package/dist/types/components/Dialog.d.ts +47 -0
  15. package/dist/types/components/Loading.d.ts +18 -0
  16. package/dist/types/components/Navbar.d.ts +10 -0
  17. package/dist/types/components/Panel.d.ts +2 -4
  18. package/dist/types/components/Sidebar.d.ts +37 -0
  19. package/dist/types/components/Steps.d.ts +45 -0
  20. package/dist/types/components/Tabs.d.ts +42 -6
  21. package/dist/types/components/Toast.d.ts +46 -0
  22. package/dist/types/components/Tooltip.d.ts +22 -0
  23. package/dist/types/elements/Button.d.ts +1 -1
  24. package/dist/types/elements/Code.d.ts +9 -0
  25. package/dist/types/elements/Divider.d.ts +7 -0
  26. package/dist/types/elements/Emphasis.d.ts +9 -0
  27. package/dist/types/elements/Figure.d.ts +17 -0
  28. package/dist/types/elements/Icon.d.ts +1 -0
  29. package/dist/types/elements/Link.d.ts +10 -0
  30. package/dist/types/elements/LinkButton.d.ts +8 -0
  31. package/dist/types/elements/ListItem.d.ts +9 -0
  32. package/dist/types/elements/Notification.d.ts +31 -0
  33. package/dist/types/elements/OrderedList.d.ts +9 -0
  34. package/dist/types/elements/Paragraph.d.ts +9 -0
  35. package/dist/types/elements/Pre.d.ts +9 -0
  36. package/dist/types/elements/Span.d.ts +9 -0
  37. package/dist/types/elements/Strong.d.ts +9 -0
  38. package/dist/types/elements/UnorderedList.d.ts +9 -0
  39. package/dist/types/form/Autocomplete.d.ts +42 -0
  40. package/dist/types/form/Checkbox.d.ts +7 -2
  41. package/dist/types/form/Checkboxes.d.ts +6 -1
  42. package/dist/types/form/DateInput.d.ts +26 -0
  43. package/dist/types/form/DateInputBase.d.ts +42 -0
  44. package/dist/types/form/DateTimeInput.d.ts +26 -0
  45. package/dist/types/form/DateTimeInputBase.d.ts +50 -0
  46. package/dist/types/form/Field.d.ts +2 -1
  47. package/dist/types/form/File.d.ts +3 -2
  48. package/dist/types/form/FormContext.d.ts +22 -0
  49. package/dist/types/form/Input.d.ts +22 -11
  50. package/dist/types/form/InputBase.d.ts +16 -0
  51. package/dist/types/form/Numberinput.d.ts +30 -0
  52. package/dist/types/form/Radio.d.ts +7 -2
  53. package/dist/types/form/Radios.d.ts +6 -1
  54. package/dist/types/form/Rate.d.ts +38 -0
  55. package/dist/types/form/Select.d.ts +18 -11
  56. package/dist/types/form/SelectBase.d.ts +19 -0
  57. package/dist/types/form/Slider.d.ts +49 -0
  58. package/dist/types/form/Switch.d.ts +17 -0
  59. package/dist/types/form/Taginput.d.ts +54 -0
  60. package/dist/types/form/TextArea.d.ts +13 -14
  61. package/dist/types/form/TextAreaBase.d.ts +19 -0
  62. package/dist/types/form/TimeInput.d.ts +26 -0
  63. package/dist/types/form/TimeInputBase.d.ts +44 -0
  64. package/dist/types/form/_pickerInternals/Calendar.d.ts +26 -0
  65. package/dist/types/form/_pickerInternals/PickerPopover.d.ts +20 -0
  66. package/dist/types/form/_pickerInternals/TimeWheels.d.ts +29 -0
  67. package/dist/types/form/_pickerInternals/audioTick.d.ts +3 -0
  68. package/dist/types/form/_pickerInternals/dateUtils.d.ts +39 -0
  69. package/dist/types/form/_pickerInternals/formatters.d.ts +13 -0
  70. package/dist/types/form/_pickerInternals/haptics.d.ts +1 -0
  71. package/dist/types/form/_pickerInternals/pickerTypes.d.ts +31 -0
  72. package/dist/types/form/_pickerInternals/segmentMap.d.ts +20 -0
  73. package/dist/types/form/_pickerInternals/useFocusTrap.d.ts +7 -0
  74. package/dist/types/form/_pickerInternals/useNativeMobilePicker.d.ts +10 -0
  75. package/dist/types/form/_pickerInternals/useSegmentedEntry.d.ts +45 -0
  76. package/dist/types/form/fieldProps.d.ts +12 -0
  77. package/dist/types/helpers/bulmaClassHelpers.d.ts +35 -0
  78. package/dist/types/helpers/useBulmaClasses.d.ts +16 -83
  79. package/dist/types/helpers/useColorClasses.d.ts +8 -0
  80. package/dist/types/helpers/useFlexboxClasses.d.ts +12 -0
  81. package/dist/types/helpers/useOtherClasses.d.ts +15 -0
  82. package/dist/types/helpers/useSpacingClasses.d.ts +18 -0
  83. package/dist/types/helpers/useTypographyClasses.d.ts +19 -0
  84. package/dist/types/helpers/useVisibilityClasses.d.ts +10 -0
  85. package/dist/types/index.d.ts +53 -3
  86. package/dist/versions/bestax-bulma-prefixed.css +3 -0
  87. package/dist/versions/bestax-bulma-prefixed.css.map +1 -0
  88. package/dist/versions/bestax-bulma-prefixed.js +1 -0
  89. package/dist/versions/bestax-no-dark-mode.css +3 -0
  90. package/dist/versions/bestax-no-dark-mode.css.map +1 -0
  91. package/dist/versions/bestax-no-dark-mode.js +1 -0
  92. package/dist/versions/bestax-no-helpers-prefixed.css +3 -0
  93. package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -0
  94. package/dist/versions/bestax-no-helpers-prefixed.js +1 -0
  95. package/dist/versions/bestax-no-helpers.css +3 -0
  96. package/dist/versions/bestax-no-helpers.css.map +1 -0
  97. package/dist/versions/bestax-no-helpers.js +1 -0
  98. package/dist/versions/bestax-prefixed.css +3 -0
  99. package/dist/versions/bestax-prefixed.css.map +1 -0
  100. package/dist/versions/bestax-prefixed.js +1 -0
  101. package/package.json +100 -21
  102. package/src/scss/_mixins.scss +215 -0
  103. package/src/scss/_variables.scss +94 -0
  104. package/src/scss/bestax.scss +18 -0
  105. package/src/scss/components/_carousel.scss +580 -0
  106. package/src/scss/components/_collapse.scss +126 -0
  107. package/src/scss/components/_dialog.scss +134 -0
  108. package/src/scss/components/_index.scss +13 -0
  109. package/src/scss/components/_loading.scss +231 -0
  110. package/src/scss/components/_sidebar.scss +347 -0
  111. package/src/scss/components/_steps.scss +459 -0
  112. package/src/scss/components/_tabs.scss +147 -0
  113. package/src/scss/components/_toast.scss +244 -0
  114. package/src/scss/components/_tooltip.scss +250 -0
  115. package/src/scss/elements/_index.scss +5 -0
  116. package/src/scss/elements/_linkbutton.scss +77 -0
  117. package/src/scss/extras.scss +24 -0
  118. package/src/scss/form/_autocomplete.scss +261 -0
  119. package/src/scss/form/_checkbox.scss +217 -0
  120. package/src/scss/form/_dateinput.scss +292 -0
  121. package/src/scss/form/_datetimeinput.scss +191 -0
  122. package/src/scss/form/_index.scss +16 -0
  123. package/src/scss/form/_numberinput.scss +176 -0
  124. package/src/scss/form/_picker-popover.scss +185 -0
  125. package/src/scss/form/_radio.scss +196 -0
  126. package/src/scss/form/_rate.scss +307 -0
  127. package/src/scss/form/_slider.scss +630 -0
  128. package/src/scss/form/_switch.scss +314 -0
  129. package/src/scss/form/_taginput.scss +356 -0
  130. package/src/scss/form/_timeinput.scss +374 -0
  131. package/src/scss/helpers/_cursor.scss +5 -0
  132. package/src/scss/helpers/_index.scss +2 -0
  133. package/src/scss/helpers/_sizing.scss +5 -0
  134. package/src/scss/versions/bestax-bulma-prefixed.scss +15 -0
  135. package/src/scss/versions/bestax-no-dark-mode.scss +32 -0
  136. package/src/scss/versions/bestax-no-helpers-prefixed.scss +22 -0
  137. package/src/scss/versions/bestax-no-helpers.scss +23 -0
  138. package/src/scss/versions/bestax-prefixed.scss +15 -0
@@ -0,0 +1,94 @@
1
+ // Bestax Extras - SCSS Variables
2
+ // These variables leverage Bulma v1 CSS custom properties for theming compatibility
3
+
4
+ // Color scheme references (use Bulma's CSS variables)
5
+ $extras-scheme-h: var(--bulma-scheme-h, 221);
6
+ $extras-scheme-s: var(--bulma-scheme-s, 14%);
7
+
8
+ // Primary color references (fallbacks track bestax primary #1e6b99)
9
+ $extras-primary-h: var(--bulma-primary-h, 202);
10
+ $extras-primary-s: var(--bulma-primary-s, 67%);
11
+ $extras-primary-l: var(--bulma-primary-l, 36%);
12
+ $extras-primary: hsl($extras-primary-h, $extras-primary-s, $extras-primary-l);
13
+
14
+ // Link color references
15
+ $extras-link-h: var(--bulma-link-h, 229);
16
+ $extras-link-s: var(--bulma-link-s, 53%);
17
+ $extras-link-l: var(--bulma-link-l, 53%);
18
+ $extras-link: hsl($extras-link-h, $extras-link-s, $extras-link-l);
19
+
20
+ // Info color references
21
+ $extras-info-h: var(--bulma-info-h, 207);
22
+ $extras-info-s: var(--bulma-info-s, 61%);
23
+ $extras-info-l: var(--bulma-info-l, 53%);
24
+ $extras-info: hsl($extras-info-h, $extras-info-s, $extras-info-l);
25
+
26
+ // Success color references
27
+ $extras-success-h: var(--bulma-success-h, 153);
28
+ $extras-success-s: var(--bulma-success-s, 53%);
29
+ $extras-success-l: var(--bulma-success-l, 53%);
30
+ $extras-success: hsl($extras-success-h, $extras-success-s, $extras-success-l);
31
+
32
+ // Warning color references
33
+ $extras-warning-h: var(--bulma-warning-h, 44);
34
+ $extras-warning-s: var(--bulma-warning-s, 100%);
35
+ $extras-warning-l: var(--bulma-warning-l, 77%);
36
+ $extras-warning: hsl($extras-warning-h, $extras-warning-s, $extras-warning-l);
37
+
38
+ // Danger color references
39
+ $extras-danger-h: var(--bulma-danger-h, 348);
40
+ $extras-danger-s: var(--bulma-danger-s, 86%);
41
+ $extras-danger-l: var(--bulma-danger-l, 61%);
42
+ $extras-danger: hsl($extras-danger-h, $extras-danger-s, $extras-danger-l);
43
+
44
+ // Typography
45
+ $extras-family-primary: var(--bulma-family-primary, BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif);
46
+ $extras-family-code: var(--bulma-family-code, "Inconsolata", "Hack", "SF Mono", "Roboto Mono", "Source Code Pro", "Ubuntu Mono", monospace);
47
+
48
+ // Font weights
49
+ $extras-weight-light: var(--bulma-weight-light, 300);
50
+ $extras-weight-normal: var(--bulma-weight-normal, 400);
51
+ $extras-weight-medium: var(--bulma-weight-medium, 500);
52
+ $extras-weight-semibold: var(--bulma-weight-semibold, 600);
53
+ $extras-weight-bold: var(--bulma-weight-bold, 700);
54
+
55
+ // Sizing
56
+ $extras-size-small: var(--bulma-size-small, 0.75rem);
57
+ $extras-size-normal: var(--bulma-size-normal, 1rem);
58
+ $extras-size-medium: var(--bulma-size-medium, 1.25rem);
59
+ $extras-size-large: var(--bulma-size-large, 1.5rem);
60
+
61
+ // Spacing
62
+ $extras-block-spacing: var(--bulma-block-spacing, 1.5rem);
63
+
64
+ // Borders and radius
65
+ $extras-radius-small: var(--bulma-radius-small, 2px);
66
+ $extras-radius: var(--bulma-radius, 4px);
67
+ $extras-radius-medium: var(--bulma-radius-medium, 6px);
68
+ $extras-radius-large: var(--bulma-radius-large, 8px);
69
+ $extras-radius-rounded: var(--bulma-radius-rounded, 9999px);
70
+
71
+ // Transitions
72
+ $extras-duration: var(--bulma-duration, 0.29s);
73
+ $extras-easing: var(--bulma-easing, ease-out);
74
+
75
+ // Control sizing
76
+ $extras-control-radius: var(--bulma-control-radius, 4px);
77
+ $extras-control-height: var(--bulma-control-height, 2.5em);
78
+ $extras-control-padding-vertical: var(--bulma-control-padding-vertical, calc(0.5em - 1px));
79
+ $extras-control-padding-horizontal: var(--bulma-control-padding-horizontal, calc(0.75em - 1px));
80
+
81
+ // Z-index layers
82
+ $extras-z-index-base: 1;
83
+ $extras-z-index-dropdown: 20;
84
+ $extras-z-index-sticky: 30;
85
+ $extras-z-index-fixed: 40;
86
+ $extras-z-index-modal-backdrop: 50;
87
+ $extras-z-index-modal: 60;
88
+ $extras-z-index-tooltip: 70;
89
+ $extras-z-index-toast: 80;
90
+
91
+ // Shadows
92
+ $extras-shadow-small: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.02);
93
+ $extras-shadow-medium: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.02);
94
+ $extras-shadow-large: 0 1em 2em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.02);
@@ -0,0 +1,18 @@
1
+ // Bestax - Combined Bulma + Extras
2
+ //
3
+ // Usage (pre-built CSS):
4
+ // import '@allxsmith/bestax-bulma/bestax.css';
5
+ //
6
+ // Usage (SCSS source):
7
+ // @use '@allxsmith/bestax-bulma/scss/bestax';
8
+
9
+ // Include all of Bulma (primary overridden to bestax blue)
10
+ @use 'bulma/sass' with ($primary: #1e6b99);
11
+
12
+ // Include bestax extras
13
+ @use 'variables';
14
+ @use 'mixins';
15
+ @use 'components/index' as components;
16
+ @use 'form/index' as form;
17
+ @use 'elements/index' as elements;
18
+ @use 'helpers/index' as helpers;
@@ -0,0 +1,580 @@
1
+ // Carousel component styles
2
+ @use "bulma/sass/utilities/initial-variables" as iv;
3
+ @use "bulma/sass/utilities/css-variables" as cv;
4
+
5
+ // Carousel-specific SCSS sizing variables
6
+ $carousel-arrow-size: 48px !default;
7
+ $carousel-arrow-size-mobile: 36px !default;
8
+ $carousel-arrow-icon-size: 24px !default;
9
+ $carousel-arrow-icon-size-mobile: 18px !default;
10
+ $carousel-arrow-offset: 1rem !default;
11
+ $carousel-arrow-offset-mobile: 0.5rem !default;
12
+ $carousel-arrow-disabled-opacity: 0.3 !default;
13
+
14
+ $carousel-indicator-size: 10px !default;
15
+ $carousel-indicator-size-mobile: 8px !default;
16
+ $carousel-indicator-gap: 0.5rem !default;
17
+ $carousel-indicator-gap-mobile: 0.375rem !default;
18
+ $carousel-indicator-circle-size: 12px !default;
19
+ $carousel-indicator-line-width: 30px !default;
20
+ $carousel-indicator-line-width-mobile: 20px !default;
21
+ $carousel-indicator-line-height: 4px !default;
22
+ $carousel-indicator-line-height-mobile: 3px !default;
23
+ $carousel-indicator-bar-width: 24px !default;
24
+ $carousel-indicator-bar-width-mobile: 16px !default;
25
+ $carousel-indicator-bar-height: 6px !default;
26
+ $carousel-indicator-bar-height-mobile: 4px !default;
27
+
28
+ $carousel-transition-duration: cv.getVar("duration") !default;
29
+ $carousel-fade-duration: 0.5s !default;
30
+
31
+ // Arrow colors - use Bulma's scheme variables so they adapt to light/dark automatically
32
+ // scheme-main-l is 100% in light mode, ~20% in dark mode
33
+ // scheme-invert-l is 4% in light mode, ~96% in dark mode
34
+ $carousel-arrow-background: hsla(
35
+ #{cv.getVar("scheme-h")},
36
+ #{cv.getVar("scheme-s")},
37
+ #{cv.getVar("scheme-main-l")},
38
+ 0.8
39
+ ) !default;
40
+ $carousel-arrow-background-hover: hsla(
41
+ #{cv.getVar("scheme-h")},
42
+ #{cv.getVar("scheme-s")},
43
+ #{cv.getVar("scheme-main-l")},
44
+ 0.95
45
+ ) !default;
46
+
47
+ // Overlay variant colors (for image carousels - always dark overlay regardless of theme)
48
+ $carousel-overlay-arrow-background: hsla(
49
+ #{cv.getVar("scheme-h")},
50
+ #{cv.getVar("scheme-s")},
51
+ #{cv.getVar("scheme-invert-l")},
52
+ 0.3
53
+ ) !default;
54
+ $carousel-overlay-arrow-background-hover: hsla(
55
+ #{cv.getVar("scheme-h")},
56
+ #{cv.getVar("scheme-s")},
57
+ #{cv.getVar("scheme-invert-l")},
58
+ 0.5
59
+ ) !default;
60
+ $carousel-overlay-indicator-background: hsla(
61
+ #{cv.getVar("scheme-h")},
62
+ #{cv.getVar("scheme-s")},
63
+ #{cv.getVar("scheme-main-l")},
64
+ 0.5
65
+ ) !default;
66
+ $carousel-overlay-indicator-background-hover: hsla(
67
+ #{cv.getVar("scheme-h")},
68
+ #{cv.getVar("scheme-s")},
69
+ #{cv.getVar("scheme-main-l")},
70
+ 0.8
71
+ ) !default;
72
+
73
+ // Gradient overlay for inside indicators
74
+ $carousel-gradient-overlay: hsla(
75
+ #{cv.getVar("scheme-h")},
76
+ #{cv.getVar("scheme-s")},
77
+ #{cv.getVar("scheme-invert-l")},
78
+ 0.3
79
+ ) !default;
80
+
81
+ $carousel-arrow-color: cv.getVar("text") !default;
82
+ $carousel-indicator-background: cv.getVar("border") !default;
83
+ $carousel-indicator-background-hover: cv.getVar("border-hover") !default;
84
+ $carousel-indicator-background-active: cv.getVar("primary") !default;
85
+ $carousel-overlay-arrow-color: cv.getVar("scheme-main") !default;
86
+ $carousel-overlay-indicator-background-active: cv.getVar("scheme-main") !default;
87
+ $carousel-arrow-radius: cv.getVar("radius") !default;
88
+ $carousel-indicator-line-radius: cv.getVar("radius-small") !default;
89
+
90
+ .#{iv.$class-prefix}carousel {
91
+ @include cv.register-vars(
92
+ (
93
+ "carousel-arrow-size": #{$carousel-arrow-size},
94
+ "carousel-arrow-size-mobile": #{$carousel-arrow-size-mobile},
95
+ "carousel-arrow-background": #{$carousel-arrow-background},
96
+ "carousel-arrow-background-hover": #{$carousel-arrow-background-hover},
97
+ "carousel-arrow-color": #{$carousel-arrow-color},
98
+ "carousel-arrow-disabled-opacity": #{$carousel-arrow-disabled-opacity},
99
+ "carousel-arrow-offset": #{$carousel-arrow-offset},
100
+ "carousel-arrow-offset-mobile": #{$carousel-arrow-offset-mobile},
101
+ "carousel-arrow-icon-size": #{$carousel-arrow-icon-size},
102
+ "carousel-arrow-icon-size-mobile": #{$carousel-arrow-icon-size-mobile},
103
+ "carousel-arrow-radius": #{$carousel-arrow-radius},
104
+ "carousel-indicator-size": #{$carousel-indicator-size},
105
+ "carousel-indicator-size-mobile": #{$carousel-indicator-size-mobile},
106
+ "carousel-indicator-gap": #{$carousel-indicator-gap},
107
+ "carousel-indicator-gap-mobile": #{$carousel-indicator-gap-mobile},
108
+ "carousel-indicator-background": #{$carousel-indicator-background},
109
+ "carousel-indicator-background-hover": #{$carousel-indicator-background-hover},
110
+ "carousel-indicator-background-active": #{$carousel-indicator-background-active},
111
+ "carousel-indicator-circle-size": #{$carousel-indicator-circle-size},
112
+ "carousel-indicator-line-width": #{$carousel-indicator-line-width},
113
+ "carousel-indicator-line-width-mobile": #{$carousel-indicator-line-width-mobile},
114
+ "carousel-indicator-line-height": #{$carousel-indicator-line-height},
115
+ "carousel-indicator-line-height-mobile": #{$carousel-indicator-line-height-mobile},
116
+ "carousel-indicator-line-radius": #{$carousel-indicator-line-radius},
117
+ "carousel-indicator-bar-width": #{$carousel-indicator-bar-width},
118
+ "carousel-indicator-bar-width-mobile": #{$carousel-indicator-bar-width-mobile},
119
+ "carousel-indicator-bar-height": #{$carousel-indicator-bar-height},
120
+ "carousel-indicator-bar-height-mobile": #{$carousel-indicator-bar-height-mobile},
121
+ "carousel-overlay-arrow-background": #{$carousel-overlay-arrow-background},
122
+ "carousel-overlay-arrow-background-hover": #{$carousel-overlay-arrow-background-hover},
123
+ "carousel-overlay-arrow-color": #{$carousel-overlay-arrow-color},
124
+ "carousel-overlay-indicator-background": #{$carousel-overlay-indicator-background},
125
+ "carousel-overlay-indicator-background-hover": #{$carousel-overlay-indicator-background-hover},
126
+ "carousel-overlay-indicator-background-active": #{$carousel-overlay-indicator-background-active},
127
+ "carousel-transition-duration": #{$carousel-transition-duration},
128
+ "carousel-fade-duration": #{$carousel-fade-duration},
129
+ )
130
+ );
131
+ }
132
+
133
+ .#{iv.$class-prefix}carousel {
134
+ position: relative;
135
+ overflow: hidden;
136
+ width: 100%;
137
+
138
+ // Container — also serves as positioning context for arrows
139
+ .#{iv.$class-prefix}carousel-container {
140
+ position: relative;
141
+ overflow: hidden;
142
+ width: 100%;
143
+ user-select: none;
144
+ touch-action: pan-y;
145
+ }
146
+
147
+ // Slides container
148
+ .#{iv.$class-prefix}carousel-slides {
149
+ display: flex;
150
+ width: 100%;
151
+ will-change: transform;
152
+ }
153
+
154
+ // Individual slide
155
+ .#{iv.$class-prefix}carousel-item {
156
+ flex: 0 0 100%;
157
+ width: 100%;
158
+ min-width: 100%;
159
+
160
+ // Allow images to fill the slide
161
+ img {
162
+ max-width: 100%;
163
+ height: auto;
164
+ display: block;
165
+ }
166
+ }
167
+
168
+ // Navigation arrows
169
+ .#{iv.$class-prefix}carousel-arrow {
170
+ position: absolute;
171
+ top: 50%;
172
+ transform: translateY(-50%);
173
+ z-index: 10;
174
+ display: flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ width: cv.getVar("carousel-arrow-size");
178
+ height: cv.getVar("carousel-arrow-size");
179
+ padding: 0;
180
+ border: none;
181
+ border-radius: cv.getVar("carousel-arrow-radius");
182
+ background-color: cv.getVar("carousel-arrow-background");
183
+ color: cv.getVar("carousel-arrow-color");
184
+ cursor: pointer;
185
+ opacity: 1;
186
+ transition: opacity cv.getVar("carousel-transition-duration"),
187
+ background-color cv.getVar("carousel-transition-duration"),
188
+ transform cv.getVar("carousel-transition-duration");
189
+
190
+ // Override Button component default styles
191
+ &.#{iv.$class-prefix}button {
192
+ border: none;
193
+ background-color: cv.getVar("carousel-arrow-background");
194
+ background-image: none;
195
+
196
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
197
+ background-color: cv.getVar("carousel-arrow-background-hover");
198
+ background-image: none;
199
+ transform: translateY(-50%) scale(1.05);
200
+ }
201
+
202
+ &:disabled,
203
+ &.#{iv.$class-prefix}is-disabled {
204
+ opacity: cv.getVar("carousel-arrow-disabled-opacity");
205
+ cursor: not-allowed;
206
+ background-color: cv.getVar("carousel-arrow-background");
207
+ background-image: none;
208
+ }
209
+ }
210
+
211
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
212
+ background-color: cv.getVar("carousel-arrow-background-hover");
213
+ transform: translateY(-50%) scale(1.05);
214
+ }
215
+
216
+ &:disabled,
217
+ &.#{iv.$class-prefix}is-disabled {
218
+ opacity: cv.getVar("carousel-arrow-disabled-opacity");
219
+ cursor: not-allowed;
220
+ }
221
+
222
+ svg {
223
+ width: cv.getVar("carousel-arrow-icon-size");
224
+ height: cv.getVar("carousel-arrow-icon-size");
225
+ }
226
+
227
+ // Icon component styling
228
+ .#{iv.$class-prefix}icon {
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+
233
+ // Match SVG sizing for consistency
234
+ &.#{iv.$class-prefix}is-small {
235
+ font-size: 0.875rem;
236
+ }
237
+
238
+ &.#{iv.$class-prefix}is-medium {
239
+ font-size: 1.25rem;
240
+ }
241
+
242
+ &.#{iv.$class-prefix}is-large {
243
+ font-size: 1.75rem;
244
+ }
245
+ }
246
+
247
+ &.#{iv.$class-prefix}is-prev {
248
+ left: cv.getVar("carousel-arrow-offset");
249
+ }
250
+
251
+ &.#{iv.$class-prefix}is-next {
252
+ right: cv.getVar("carousel-arrow-offset");
253
+ }
254
+
255
+ // Transparent variant (no background)
256
+ &.#{iv.$class-prefix}is-transparent {
257
+ background-color: transparent;
258
+ box-shadow: none;
259
+ border: none;
260
+
261
+ &.#{iv.$class-prefix}button {
262
+ background-color: transparent;
263
+ box-shadow: none;
264
+ border: none;
265
+
266
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
267
+ background-color: transparent;
268
+ box-shadow: none;
269
+ }
270
+
271
+ &:focus {
272
+ box-shadow: none;
273
+ }
274
+
275
+ &:disabled,
276
+ &.#{iv.$class-prefix}is-disabled {
277
+ background-color: transparent;
278
+ box-shadow: none;
279
+ }
280
+ }
281
+
282
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
283
+ background-color: transparent;
284
+ }
285
+
286
+ &:focus {
287
+ box-shadow: none;
288
+ outline: none;
289
+ }
290
+ }
291
+ }
292
+
293
+ // Arrow color variants
294
+ &.#{iv.$class-prefix}is-arrow-light {
295
+ .#{iv.$class-prefix}carousel-arrow {
296
+ color: cv.getVar("scheme-main");
297
+ }
298
+ }
299
+
300
+ &.#{iv.$class-prefix}is-arrow-dark {
301
+ .#{iv.$class-prefix}carousel-arrow {
302
+ color: cv.getVar("text-strong");
303
+ }
304
+ }
305
+
306
+ // Arrow hover variant
307
+ &.#{iv.$class-prefix}has-arrow-hover {
308
+ .#{iv.$class-prefix}carousel-arrow {
309
+ opacity: 0;
310
+ }
311
+
312
+ &:hover {
313
+ .#{iv.$class-prefix}carousel-arrow {
314
+ opacity: 1;
315
+ }
316
+ }
317
+ }
318
+
319
+ // Indicators
320
+ .#{iv.$class-prefix}carousel-indicator {
321
+ display: flex;
322
+ justify-content: center;
323
+ align-items: center;
324
+ gap: cv.getVar("carousel-indicator-gap");
325
+ padding: 1rem;
326
+ width: 100%;
327
+
328
+ &.#{iv.$class-prefix}is-inside {
329
+ position: absolute;
330
+ bottom: 0;
331
+ left: 0;
332
+ right: 0;
333
+ background: linear-gradient(transparent, #{$carousel-gradient-overlay});
334
+ padding-bottom: 1.5rem;
335
+ }
336
+
337
+ &.#{iv.$class-prefix}is-top {
338
+ top: 0;
339
+ bottom: auto;
340
+ background: linear-gradient(#{$carousel-gradient-overlay}, transparent);
341
+ padding-top: 1.5rem;
342
+ }
343
+ }
344
+
345
+ // Indicator items
346
+ .#{iv.$class-prefix}indicator-item {
347
+ width: cv.getVar("carousel-indicator-size");
348
+ height: cv.getVar("carousel-indicator-size");
349
+ padding: 0;
350
+ border: none;
351
+ border-radius: 50%;
352
+ background-color: cv.getVar("carousel-indicator-background");
353
+ cursor: pointer;
354
+ transition: background-color cv.getVar("carousel-transition-duration"),
355
+ transform cv.getVar("carousel-transition-duration");
356
+
357
+ // Override Button component styles
358
+ &.#{iv.$class-prefix}button {
359
+ min-width: auto;
360
+ min-height: auto;
361
+ border: none;
362
+ padding: 0;
363
+ background-image: none;
364
+ }
365
+
366
+ &:hover {
367
+ background-color: cv.getVar("carousel-indicator-background-hover");
368
+ transform: scale(1.2);
369
+ }
370
+
371
+ &.#{iv.$class-prefix}is-active {
372
+ background-color: cv.getVar("carousel-indicator-background-active");
373
+ }
374
+ }
375
+
376
+ // Indicator styles
377
+ &.#{iv.$class-prefix}is-indicator-circles {
378
+ .#{iv.$class-prefix}indicator-item {
379
+ width: cv.getVar("carousel-indicator-circle-size");
380
+ height: cv.getVar("carousel-indicator-circle-size");
381
+ border: 2px solid cv.getVar("border");
382
+ background-color: transparent;
383
+
384
+ &.#{iv.$class-prefix}is-active {
385
+ border-color: cv.getVar("carousel-indicator-background-active");
386
+ background-color: cv.getVar("carousel-indicator-background-active");
387
+ }
388
+ }
389
+ }
390
+
391
+ &.#{iv.$class-prefix}is-indicator-lines {
392
+ .#{iv.$class-prefix}indicator-item {
393
+ width: cv.getVar("carousel-indicator-line-width");
394
+ height: cv.getVar("carousel-indicator-line-height");
395
+ border-radius: cv.getVar("carousel-indicator-line-radius");
396
+ }
397
+ }
398
+
399
+ &.#{iv.$class-prefix}is-indicator-bars {
400
+ .#{iv.$class-prefix}indicator-item {
401
+ width: cv.getVar("carousel-indicator-bar-width");
402
+ height: cv.getVar("carousel-indicator-bar-height");
403
+ border-radius: cv.getVar("carousel-indicator-line-radius");
404
+ }
405
+ }
406
+
407
+ // Inside indicator light variant (overlay mode)
408
+ &.#{iv.$class-prefix}is-overlay {
409
+ .#{iv.$class-prefix}carousel-indicator.#{iv.$class-prefix}is-inside {
410
+ .#{iv.$class-prefix}indicator-item {
411
+ background-color: cv.getVar("carousel-overlay-indicator-background");
412
+
413
+ &:hover {
414
+ background-color: cv.getVar("carousel-overlay-indicator-background-hover");
415
+ }
416
+
417
+ &.#{iv.$class-prefix}is-active {
418
+ background-color: cv.getVar("carousel-overlay-indicator-background-active");
419
+ }
420
+ }
421
+ }
422
+
423
+ .#{iv.$class-prefix}carousel-arrow {
424
+ background-color: cv.getVar("carousel-overlay-arrow-background");
425
+ color: cv.getVar("carousel-overlay-arrow-color");
426
+
427
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
428
+ background-color: cv.getVar("carousel-overlay-arrow-background-hover");
429
+ }
430
+
431
+ &.#{iv.$class-prefix}button {
432
+ background-color: cv.getVar("carousel-overlay-arrow-background");
433
+ background-image: none;
434
+
435
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
436
+ background-color: cv.getVar("carousel-overlay-arrow-background-hover");
437
+ background-image: none;
438
+ }
439
+
440
+ &:disabled,
441
+ &.#{iv.$class-prefix}is-disabled {
442
+ background-color: cv.getVar("carousel-overlay-arrow-background");
443
+ background-image: none;
444
+ }
445
+ }
446
+
447
+ // Transparent variant within overlay
448
+ &.#{iv.$class-prefix}is-transparent {
449
+ background-color: transparent;
450
+ box-shadow: none;
451
+ border: none;
452
+
453
+ &.#{iv.$class-prefix}button {
454
+ background-color: transparent;
455
+ box-shadow: none;
456
+ border: none;
457
+
458
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
459
+ background-color: transparent;
460
+ box-shadow: none;
461
+ }
462
+
463
+ &:focus {
464
+ box-shadow: none;
465
+ }
466
+
467
+ &:disabled,
468
+ &.#{iv.$class-prefix}is-disabled {
469
+ background-color: transparent;
470
+ box-shadow: none;
471
+ }
472
+ }
473
+
474
+ &:hover:not(:disabled):not(.#{iv.$class-prefix}is-disabled) {
475
+ background-color: transparent;
476
+ }
477
+
478
+ &:focus {
479
+ box-shadow: none;
480
+ outline: none;
481
+ }
482
+ }
483
+ }
484
+ }
485
+
486
+ // Fade transition (alternative to slide)
487
+ &.#{iv.$class-prefix}is-fade {
488
+ .#{iv.$class-prefix}carousel-slides {
489
+ position: relative;
490
+ }
491
+
492
+ .#{iv.$class-prefix}carousel-item {
493
+ position: absolute;
494
+ top: 0;
495
+ left: 0;
496
+ width: 100%;
497
+ opacity: 0;
498
+ transition: opacity cv.getVar("carousel-fade-duration") ease-in-out;
499
+
500
+ &.#{iv.$class-prefix}is-active {
501
+ position: relative;
502
+ opacity: 1;
503
+ }
504
+ }
505
+ }
506
+ }
507
+
508
+ // Carousel list variant (multiple visible items)
509
+ .#{iv.$class-prefix}carousel-list {
510
+ .#{iv.$class-prefix}carousel-container {
511
+ overflow: visible;
512
+ }
513
+
514
+ .#{iv.$class-prefix}carousel-slides {
515
+ display: flex;
516
+ gap: 1rem;
517
+ }
518
+
519
+ .#{iv.$class-prefix}carousel-item {
520
+ flex: 0 0 auto;
521
+ width: auto;
522
+ position: relative;
523
+ opacity: 1;
524
+ visibility: visible;
525
+ }
526
+ }
527
+
528
+ // Responsive adjustments
529
+ @media screen and (max-width: 768px) {
530
+ .#{iv.$class-prefix}carousel {
531
+ .#{iv.$class-prefix}carousel-arrow {
532
+ width: cv.getVar("carousel-arrow-size-mobile");
533
+ height: cv.getVar("carousel-arrow-size-mobile");
534
+
535
+ svg {
536
+ width: cv.getVar("carousel-arrow-icon-size-mobile");
537
+ height: cv.getVar("carousel-arrow-icon-size-mobile");
538
+ }
539
+
540
+ .#{iv.$class-prefix}icon {
541
+ font-size: 1rem;
542
+
543
+ &.#{iv.$class-prefix}is-small {
544
+ font-size: 0.75rem;
545
+ }
546
+
547
+ &.#{iv.$class-prefix}is-large {
548
+ font-size: 1.25rem;
549
+ }
550
+ }
551
+
552
+ &.#{iv.$class-prefix}is-prev {
553
+ left: cv.getVar("carousel-arrow-offset-mobile");
554
+ }
555
+
556
+ &.#{iv.$class-prefix}is-next {
557
+ right: cv.getVar("carousel-arrow-offset-mobile");
558
+ }
559
+ }
560
+
561
+ .#{iv.$class-prefix}carousel-indicator {
562
+ gap: cv.getVar("carousel-indicator-gap-mobile");
563
+ }
564
+
565
+ .#{iv.$class-prefix}indicator-item {
566
+ width: cv.getVar("carousel-indicator-size-mobile");
567
+ height: cv.getVar("carousel-indicator-size-mobile");
568
+ }
569
+
570
+ &.#{iv.$class-prefix}is-indicator-lines .#{iv.$class-prefix}indicator-item {
571
+ width: cv.getVar("carousel-indicator-line-width-mobile");
572
+ height: cv.getVar("carousel-indicator-line-height-mobile");
573
+ }
574
+
575
+ &.#{iv.$class-prefix}is-indicator-bars .#{iv.$class-prefix}indicator-item {
576
+ width: cv.getVar("carousel-indicator-bar-width-mobile");
577
+ height: cv.getVar("carousel-indicator-bar-height-mobile");
578
+ }
579
+ }
580
+ }