@allxsmith/bestax-bulma 2.6.2 → 3.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 (139) 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/Card.d.ts +1 -1
  13. package/dist/types/components/Carousel.d.ts +34 -0
  14. package/dist/types/components/Collapse.d.ts +17 -0
  15. package/dist/types/components/Dialog.d.ts +47 -0
  16. package/dist/types/components/Loading.d.ts +18 -0
  17. package/dist/types/components/Navbar.d.ts +10 -0
  18. package/dist/types/components/Panel.d.ts +2 -4
  19. package/dist/types/components/Sidebar.d.ts +37 -0
  20. package/dist/types/components/Steps.d.ts +45 -0
  21. package/dist/types/components/Tabs.d.ts +42 -6
  22. package/dist/types/components/Toast.d.ts +46 -0
  23. package/dist/types/components/Tooltip.d.ts +22 -0
  24. package/dist/types/elements/Button.d.ts +1 -1
  25. package/dist/types/elements/Code.d.ts +9 -0
  26. package/dist/types/elements/Divider.d.ts +7 -0
  27. package/dist/types/elements/Emphasis.d.ts +9 -0
  28. package/dist/types/elements/Figure.d.ts +17 -0
  29. package/dist/types/elements/Icon.d.ts +2 -1
  30. package/dist/types/elements/Link.d.ts +10 -0
  31. package/dist/types/elements/LinkButton.d.ts +8 -0
  32. package/dist/types/elements/ListItem.d.ts +9 -0
  33. package/dist/types/elements/Notification.d.ts +31 -0
  34. package/dist/types/elements/OrderedList.d.ts +9 -0
  35. package/dist/types/elements/Paragraph.d.ts +9 -0
  36. package/dist/types/elements/Pre.d.ts +9 -0
  37. package/dist/types/elements/Span.d.ts +9 -0
  38. package/dist/types/elements/Strong.d.ts +9 -0
  39. package/dist/types/elements/UnorderedList.d.ts +9 -0
  40. package/dist/types/form/Autocomplete.d.ts +42 -0
  41. package/dist/types/form/Checkbox.d.ts +7 -2
  42. package/dist/types/form/Checkboxes.d.ts +6 -1
  43. package/dist/types/form/DateInput.d.ts +26 -0
  44. package/dist/types/form/DateInputBase.d.ts +42 -0
  45. package/dist/types/form/DateTimeInput.d.ts +26 -0
  46. package/dist/types/form/DateTimeInputBase.d.ts +50 -0
  47. package/dist/types/form/Field.d.ts +2 -1
  48. package/dist/types/form/File.d.ts +3 -2
  49. package/dist/types/form/FormContext.d.ts +22 -0
  50. package/dist/types/form/Input.d.ts +22 -11
  51. package/dist/types/form/InputBase.d.ts +16 -0
  52. package/dist/types/form/Numberinput.d.ts +30 -0
  53. package/dist/types/form/Radio.d.ts +7 -2
  54. package/dist/types/form/Radios.d.ts +6 -1
  55. package/dist/types/form/Rate.d.ts +38 -0
  56. package/dist/types/form/Select.d.ts +18 -11
  57. package/dist/types/form/SelectBase.d.ts +19 -0
  58. package/dist/types/form/Slider.d.ts +49 -0
  59. package/dist/types/form/Switch.d.ts +17 -0
  60. package/dist/types/form/Taginput.d.ts +54 -0
  61. package/dist/types/form/TextArea.d.ts +13 -14
  62. package/dist/types/form/TextAreaBase.d.ts +19 -0
  63. package/dist/types/form/TimeInput.d.ts +26 -0
  64. package/dist/types/form/TimeInputBase.d.ts +44 -0
  65. package/dist/types/form/_pickerInternals/Calendar.d.ts +26 -0
  66. package/dist/types/form/_pickerInternals/PickerPopover.d.ts +20 -0
  67. package/dist/types/form/_pickerInternals/TimeWheels.d.ts +29 -0
  68. package/dist/types/form/_pickerInternals/audioTick.d.ts +3 -0
  69. package/dist/types/form/_pickerInternals/dateUtils.d.ts +39 -0
  70. package/dist/types/form/_pickerInternals/formatters.d.ts +13 -0
  71. package/dist/types/form/_pickerInternals/haptics.d.ts +1 -0
  72. package/dist/types/form/_pickerInternals/pickerTypes.d.ts +31 -0
  73. package/dist/types/form/_pickerInternals/segmentMap.d.ts +20 -0
  74. package/dist/types/form/_pickerInternals/useFocusTrap.d.ts +7 -0
  75. package/dist/types/form/_pickerInternals/useNativeMobilePicker.d.ts +10 -0
  76. package/dist/types/form/_pickerInternals/useSegmentedEntry.d.ts +45 -0
  77. package/dist/types/form/fieldProps.d.ts +12 -0
  78. package/dist/types/helpers/bulmaClassHelpers.d.ts +35 -0
  79. package/dist/types/helpers/useBulmaClasses.d.ts +16 -83
  80. package/dist/types/helpers/useColorClasses.d.ts +8 -0
  81. package/dist/types/helpers/useFlexboxClasses.d.ts +12 -0
  82. package/dist/types/helpers/useOtherClasses.d.ts +15 -0
  83. package/dist/types/helpers/useSpacingClasses.d.ts +18 -0
  84. package/dist/types/helpers/useTypographyClasses.d.ts +19 -0
  85. package/dist/types/helpers/useVisibilityClasses.d.ts +10 -0
  86. package/dist/types/index.d.ts +53 -3
  87. package/dist/versions/bestax-bulma-prefixed.css +3 -0
  88. package/dist/versions/bestax-bulma-prefixed.css.map +1 -0
  89. package/dist/versions/bestax-bulma-prefixed.js +1 -0
  90. package/dist/versions/bestax-no-dark-mode.css +3 -0
  91. package/dist/versions/bestax-no-dark-mode.css.map +1 -0
  92. package/dist/versions/bestax-no-dark-mode.js +1 -0
  93. package/dist/versions/bestax-no-helpers-prefixed.css +3 -0
  94. package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -0
  95. package/dist/versions/bestax-no-helpers-prefixed.js +1 -0
  96. package/dist/versions/bestax-no-helpers.css +3 -0
  97. package/dist/versions/bestax-no-helpers.css.map +1 -0
  98. package/dist/versions/bestax-no-helpers.js +1 -0
  99. package/dist/versions/bestax-prefixed.css +3 -0
  100. package/dist/versions/bestax-prefixed.css.map +1 -0
  101. package/dist/versions/bestax-prefixed.js +1 -0
  102. package/package.json +109 -35
  103. package/src/scss/_mixins.scss +215 -0
  104. package/src/scss/_variables.scss +94 -0
  105. package/src/scss/bestax.scss +18 -0
  106. package/src/scss/components/_carousel.scss +580 -0
  107. package/src/scss/components/_collapse.scss +126 -0
  108. package/src/scss/components/_dialog.scss +134 -0
  109. package/src/scss/components/_index.scss +13 -0
  110. package/src/scss/components/_loading.scss +231 -0
  111. package/src/scss/components/_sidebar.scss +347 -0
  112. package/src/scss/components/_steps.scss +459 -0
  113. package/src/scss/components/_tabs.scss +147 -0
  114. package/src/scss/components/_toast.scss +244 -0
  115. package/src/scss/components/_tooltip.scss +250 -0
  116. package/src/scss/elements/_index.scss +5 -0
  117. package/src/scss/elements/_linkbutton.scss +77 -0
  118. package/src/scss/extras.scss +24 -0
  119. package/src/scss/form/_autocomplete.scss +261 -0
  120. package/src/scss/form/_checkbox.scss +217 -0
  121. package/src/scss/form/_dateinput.scss +292 -0
  122. package/src/scss/form/_datetimeinput.scss +191 -0
  123. package/src/scss/form/_index.scss +16 -0
  124. package/src/scss/form/_numberinput.scss +176 -0
  125. package/src/scss/form/_picker-popover.scss +185 -0
  126. package/src/scss/form/_radio.scss +196 -0
  127. package/src/scss/form/_rate.scss +307 -0
  128. package/src/scss/form/_slider.scss +630 -0
  129. package/src/scss/form/_switch.scss +314 -0
  130. package/src/scss/form/_taginput.scss +356 -0
  131. package/src/scss/form/_timeinput.scss +374 -0
  132. package/src/scss/helpers/_cursor.scss +5 -0
  133. package/src/scss/helpers/_index.scss +2 -0
  134. package/src/scss/helpers/_sizing.scss +5 -0
  135. package/src/scss/versions/bestax-bulma-prefixed.scss +15 -0
  136. package/src/scss/versions/bestax-no-dark-mode.scss +32 -0
  137. package/src/scss/versions/bestax-no-helpers-prefixed.scss +22 -0
  138. package/src/scss/versions/bestax-no-helpers.scss +23 -0
  139. package/src/scss/versions/bestax-prefixed.scss +15 -0
@@ -0,0 +1,244 @@
1
+ // Toast component styles
2
+ @use "bulma/sass/utilities/initial-variables" as iv;
3
+ @use "bulma/sass/utilities/css-variables" as cv;
4
+ @use '../variables' as *;
5
+ @use '../mixins' as *;
6
+
7
+ // Toast-specific SCSS variables
8
+ $toast-background: hsl(0, 0%, 21%) !default;
9
+ $toast-color: hsl(0, 0%, 96%) !default;
10
+ $toast-radius: cv.getVar("radius") !default;
11
+ $toast-shadow: 0 4px 12px hsla(0, 0%, 0%, 0.2) !default;
12
+ $toast-padding: 0.875rem 1.25rem !default;
13
+ $toast-min-width: 288px !default;
14
+ $toast-max-width: 568px !default;
15
+ $toast-gap: 1rem !default;
16
+ $toast-message-size: 0.95rem !default;
17
+ $toast-container-padding: 2rem !default;
18
+ $toast-container-z-index: $extras-z-index-toast !default;
19
+ $toast-container-gap: 0.75rem !default;
20
+ $toast-animation-duration: 0.3s !default;
21
+ $toast-action-weight: cv.getVar("weight-semibold") !default;
22
+ $toast-action-radius: cv.getVar("radius") !default;
23
+ $toast-action-hover-opacity: 0.1 !default;
24
+
25
+ // Register CSS variables on .toast (cascade down to children)
26
+ .#{iv.$class-prefix}toast {
27
+ @include cv.register-vars(
28
+ (
29
+ "toast-background": #{$toast-background},
30
+ "toast-color": #{$toast-color},
31
+ "toast-radius": #{$toast-radius},
32
+ "toast-shadow": #{$toast-shadow},
33
+ "toast-padding": #{$toast-padding},
34
+ "toast-min-width": #{$toast-min-width},
35
+ "toast-max-width": #{$toast-max-width},
36
+ "toast-gap": #{$toast-gap},
37
+ "toast-message-size": #{$toast-message-size},
38
+ "toast-animation-duration": #{$toast-animation-duration},
39
+ "toast-action-weight": #{$toast-action-weight},
40
+ "toast-action-radius": #{$toast-action-radius},
41
+ "toast-action-hover-opacity": #{$toast-action-hover-opacity},
42
+ )
43
+ );
44
+ }
45
+
46
+ // Toast container — positions toasts on screen and stacks multiples vertically.
47
+ // Uses SCSS variables directly since the container is a parent of .toast
48
+ // (CSS vars registered on .toast don't cascade up).
49
+ .#{iv.$class-prefix}toast-container {
50
+ position: fixed;
51
+ z-index: #{$toast-container-z-index};
52
+ display: flex;
53
+ flex-direction: column;
54
+ gap: #{$toast-container-gap};
55
+ padding: #{$toast-container-padding};
56
+ pointer-events: none;
57
+ max-width: 100%;
58
+
59
+ // Top positions
60
+ &.#{iv.$class-prefix}is-top-right {
61
+ top: 0;
62
+ right: 0;
63
+ align-items: flex-end;
64
+ }
65
+
66
+ &.#{iv.$class-prefix}is-top-left {
67
+ top: 0;
68
+ left: 0;
69
+ align-items: flex-start;
70
+ }
71
+
72
+ &.#{iv.$class-prefix}is-top-center {
73
+ top: 0;
74
+ left: 50%;
75
+ transform: translateX(-50%);
76
+ align-items: center;
77
+ }
78
+
79
+ // Bottom positions — column-reverse so newer toasts appear nearest the edge
80
+ &.#{iv.$class-prefix}is-bottom-right {
81
+ bottom: 0;
82
+ right: 0;
83
+ align-items: flex-end;
84
+ flex-direction: column-reverse;
85
+ }
86
+
87
+ &.#{iv.$class-prefix}is-bottom-left {
88
+ bottom: 0;
89
+ left: 0;
90
+ align-items: flex-start;
91
+ flex-direction: column-reverse;
92
+ }
93
+
94
+ &.#{iv.$class-prefix}is-bottom-center {
95
+ bottom: 0;
96
+ left: 50%;
97
+ transform: translateX(-50%);
98
+ align-items: center;
99
+ flex-direction: column-reverse;
100
+ }
101
+ }
102
+
103
+ // Toast element
104
+ .#{iv.$class-prefix}toast {
105
+ display: flex;
106
+ align-items: center;
107
+ cursor: pointer;
108
+ gap: cv.getVar("toast-gap");
109
+ padding: cv.getVar("toast-padding");
110
+ border-radius: cv.getVar("toast-radius");
111
+ background-color: cv.getVar("toast-background");
112
+ color: cv.getVar("toast-color");
113
+ box-shadow: cv.getVar("toast-shadow");
114
+ pointer-events: auto;
115
+ min-width: cv.getVar("toast-min-width");
116
+ max-width: cv.getVar("toast-max-width");
117
+ animation: extras-toast-slide-up cv.getVar("toast-animation-duration") ease;
118
+
119
+ // Type variants — color the BACKGROUND.
120
+ // Uses Bulma's -invert-l pattern for text contrast (same approach as buttons).
121
+ @each $name in "primary", "link", "info", "success", "warning", "danger" {
122
+ &.#{iv.$class-prefix}is-#{$name} {
123
+ background-color: cv.getVar($name);
124
+ color: hsl(cv.getVar($name, "", "-h"), cv.getVar($name, "", "-s"), cv.getVar($name, "", "-invert-l"));
125
+ }
126
+ }
127
+
128
+ &.#{iv.$class-prefix}is-dark {
129
+ background-color: cv.getVar("dark");
130
+ color: cv.getVar("light");
131
+ }
132
+
133
+ &.#{iv.$class-prefix}is-light {
134
+ background-color: cv.getVar("light");
135
+ color: cv.getVar("dark");
136
+ }
137
+
138
+ // Action-type variants — color the ACTION BUTTON (triggered by `actionType` prop).
139
+ // Uses `is-action-*` prefix to avoid collision with `is-*` background classes.
140
+ @each $name in "primary", "link", "info", "success", "warning", "danger" {
141
+ &.#{iv.$class-prefix}is-action-#{$name} .#{iv.$class-prefix}toast-action .#{iv.$class-prefix}button {
142
+ color: cv.getVar($name);
143
+ }
144
+ }
145
+
146
+ // Rounded (pill shape)
147
+ &.#{iv.$class-prefix}is-rounded {
148
+ border-radius: 9999px;
149
+ }
150
+
151
+ // Top positions use slide-down animation
152
+ .#{iv.$class-prefix}toast-container.#{iv.$class-prefix}is-top &,
153
+ .#{iv.$class-prefix}toast-container.#{iv.$class-prefix}is-top-left &,
154
+ .#{iv.$class-prefix}toast-container.#{iv.$class-prefix}is-top-center &,
155
+ .#{iv.$class-prefix}toast-container.#{iv.$class-prefix}is-top-right & {
156
+ animation-name: extras-toast-slide-down;
157
+ }
158
+ }
159
+
160
+ // Toast message
161
+ .#{iv.$class-prefix}toast-message {
162
+ flex: 1;
163
+ font-size: cv.getVar("toast-message-size");
164
+ }
165
+
166
+ // Toast actions wrapper
167
+ .#{iv.$class-prefix}toast-actions {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: 0.5rem;
171
+ flex-shrink: 0;
172
+ }
173
+
174
+ // Toast action button
175
+ .#{iv.$class-prefix}toast-action {
176
+ flex-shrink: 0;
177
+
178
+ .#{iv.$class-prefix}button {
179
+ background: none;
180
+ border: none;
181
+ color: inherit;
182
+ cursor: pointer;
183
+ font-weight: cv.getVar("toast-action-weight");
184
+ text-transform: uppercase;
185
+ letter-spacing: 0.025em;
186
+ padding: 0.25rem 0.5rem;
187
+ border-radius: cv.getVar("toast-action-radius");
188
+ transition: background-color 0.15s ease;
189
+
190
+ &:hover {
191
+ background-color: hsla(0, 0%, 100%, cv.getVar("toast-action-hover-opacity"));
192
+ }
193
+ }
194
+ }
195
+
196
+ // Toast cancel button
197
+ .#{iv.$class-prefix}toast-cancel {
198
+ flex-shrink: 0;
199
+
200
+ .#{iv.$class-prefix}button {
201
+ background: none;
202
+ border: none;
203
+ color: inherit;
204
+ cursor: pointer;
205
+ padding: 0.25rem 0.5rem;
206
+ border-radius: cv.getVar("toast-action-radius");
207
+ opacity: 0.7;
208
+ transition: opacity 0.15s ease;
209
+
210
+ &:hover {
211
+ opacity: 1;
212
+ }
213
+ }
214
+ }
215
+
216
+ // Animations
217
+ @keyframes extras-toast-slide-up {
218
+ from {
219
+ opacity: 0;
220
+ transform: translateY(100%);
221
+ }
222
+ to {
223
+ opacity: 1;
224
+ transform: translateY(0);
225
+ }
226
+ }
227
+
228
+ @keyframes extras-toast-slide-down {
229
+ from {
230
+ opacity: 0;
231
+ transform: translateY(-100%);
232
+ }
233
+ to {
234
+ opacity: 1;
235
+ transform: translateY(0);
236
+ }
237
+ }
238
+
239
+ // Reduced motion
240
+ @media (prefers-reduced-motion: reduce) {
241
+ .#{iv.$class-prefix}toast {
242
+ animation: none;
243
+ }
244
+ }
@@ -0,0 +1,250 @@
1
+ // Tooltip Component Styles
2
+ // A hover tooltip popover
3
+ @use "bulma/sass/utilities/initial-variables" as iv;
4
+ @use "bulma/sass/utilities/css-variables" as cv;
5
+ @use '../variables' as *;
6
+ @use '../mixins' as *;
7
+
8
+ // Tooltip-specific SCSS variables
9
+ $tooltip-background: hsl(0, 0%, 21%) !default;
10
+ $tooltip-color: white !default;
11
+ $tooltip-max-width: 15rem !default;
12
+ $tooltip-multiline-width: 15rem !default;
13
+ $tooltip-radius: cv.getVar("radius") !default;
14
+ $tooltip-arrow-size: 5px !default;
15
+ $tooltip-arrow-margin: 4px !default;
16
+ $tooltip-padding: 0.35rem 0.75rem !default;
17
+ $tooltip-z-index: $extras-z-index-tooltip !default;
18
+ $tooltip-font-size: calc(#{$extras-size-normal} * 0.85) !default;
19
+ $tooltip-font-weight: $extras-weight-normal !default;
20
+ $tooltip-line-height: 1.25 !default;
21
+ $tooltip-dashed-color: hsl(0, 0%, 60%) !default;
22
+
23
+ // Size variant SCSS variables
24
+ $tooltip-small-font-size: $extras-size-small !default;
25
+ $tooltip-small-padding: 0.25rem 0.5rem !default;
26
+ $tooltip-small-arrow-size: 4px !default;
27
+
28
+ $tooltip-medium-font-size: calc(#{$extras-size-medium} * 0.85) !default;
29
+ $tooltip-medium-padding: 0.5rem 1rem !default;
30
+ $tooltip-medium-arrow-size: 6px !default;
31
+
32
+ $tooltip-large-font-size: calc(#{$extras-size-large} * 0.85) !default;
33
+ $tooltip-large-padding: 0.75rem 1.25rem !default;
34
+ $tooltip-large-arrow-size: 7px !default;
35
+
36
+ // Register CSS variables on .tooltip-content
37
+ // (tooltip-content is the actual tooltip element that gets themed)
38
+ .#{iv.$class-prefix}tooltip-content {
39
+ @include cv.register-vars(
40
+ (
41
+ "tooltip-background": #{$tooltip-background},
42
+ "tooltip-color": #{$tooltip-color},
43
+ "tooltip-radius": #{$tooltip-radius},
44
+ "tooltip-padding": #{$tooltip-padding},
45
+ "tooltip-max-width": #{$tooltip-max-width},
46
+ "tooltip-multiline-width": #{$tooltip-multiline-width},
47
+ "tooltip-arrow-size": #{$tooltip-arrow-size},
48
+ "tooltip-arrow-margin": #{$tooltip-arrow-margin},
49
+ "tooltip-z-index": #{$tooltip-z-index},
50
+ "tooltip-font-size": #{$tooltip-font-size},
51
+ "tooltip-font-weight": #{$tooltip-font-weight},
52
+ "tooltip-line-height": #{$tooltip-line-height},
53
+ "tooltip-dashed-color": #{$tooltip-dashed-color},
54
+ )
55
+ );
56
+ }
57
+
58
+ // Tooltip wrapper
59
+ .#{iv.$class-prefix}tooltip {
60
+ @include cv.register-vars(
61
+ (
62
+ "tooltip-dashed-color": #{$tooltip-dashed-color},
63
+ )
64
+ );
65
+
66
+ position: relative;
67
+ display: inline-flex;
68
+
69
+ // Dashed underline style
70
+ &.#{iv.$class-prefix}is-dashed {
71
+ border-bottom: 1px dashed cv.getVar("tooltip-dashed-color");
72
+ cursor: help;
73
+ }
74
+ }
75
+
76
+ // Tooltip content element
77
+ .#{iv.$class-prefix}tooltip-content {
78
+ position: absolute;
79
+ z-index: cv.getVar("tooltip-z-index");
80
+ padding: cv.getVar("tooltip-padding");
81
+ font-size: cv.getVar("tooltip-font-size");
82
+ font-weight: cv.getVar("tooltip-font-weight");
83
+ line-height: cv.getVar("tooltip-line-height");
84
+ white-space: nowrap;
85
+ max-width: cv.getVar("tooltip-max-width");
86
+ background-color: cv.getVar("tooltip-background");
87
+ color: cv.getVar("tooltip-color");
88
+ border-radius: cv.getVar("tooltip-radius");
89
+ pointer-events: none;
90
+ opacity: 0;
91
+ visibility: hidden;
92
+
93
+ // Arrow
94
+ &::before {
95
+ content: '';
96
+ position: absolute;
97
+ border: cv.getVar("tooltip-arrow-size") solid transparent;
98
+ }
99
+
100
+ // Animation styles
101
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-animated & {
102
+ @include extras-transition(opacity, visibility);
103
+ }
104
+
105
+ // Show tooltip
106
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-active & {
107
+ opacity: 1;
108
+ visibility: visible;
109
+ }
110
+
111
+ // Square corners
112
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-square & {
113
+ border-radius: 0;
114
+ }
115
+
116
+ // Multiline
117
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-multiline & {
118
+ white-space: normal;
119
+ width: cv.getVar("tooltip-multiline-width");
120
+ text-align: center;
121
+ }
122
+ }
123
+
124
+ // Position: Top (default)
125
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-top .#{iv.$class-prefix}tooltip-content,
126
+ .#{iv.$class-prefix}tooltip:not(.#{iv.$class-prefix}is-bottom):not(.#{iv.$class-prefix}is-left):not(.#{iv.$class-prefix}is-right) .#{iv.$class-prefix}tooltip-content {
127
+ bottom: calc(100% + #{cv.getVar("tooltip-arrow-size")} + #{cv.getVar("tooltip-arrow-margin")});
128
+ left: 50%;
129
+ transform: translateX(-50%);
130
+
131
+ &::before {
132
+ top: 100%;
133
+ left: calc(50% + var(--tooltip-arrow-offset, 0px));
134
+ transform: translateX(-50%);
135
+ border-top-color: cv.getVar("tooltip-background");
136
+ }
137
+ }
138
+
139
+ // Position: Bottom
140
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-bottom .#{iv.$class-prefix}tooltip-content {
141
+ top: calc(100% + #{cv.getVar("tooltip-arrow-size")} + #{cv.getVar("tooltip-arrow-margin")});
142
+ left: 50%;
143
+ transform: translateX(-50%);
144
+
145
+ &::before {
146
+ bottom: 100%;
147
+ left: calc(50% + var(--tooltip-arrow-offset, 0px));
148
+ transform: translateX(-50%);
149
+ border-bottom-color: cv.getVar("tooltip-background");
150
+ }
151
+ }
152
+
153
+ // Position: Left
154
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-left .#{iv.$class-prefix}tooltip-content {
155
+ right: calc(100% + #{cv.getVar("tooltip-arrow-size")} + #{cv.getVar("tooltip-arrow-margin")});
156
+ top: 50%;
157
+ transform: translateY(-50%);
158
+
159
+ &::before {
160
+ left: 100%;
161
+ top: calc(50% + var(--tooltip-arrow-offset, 0px));
162
+ transform: translateY(-50%);
163
+ border-left-color: cv.getVar("tooltip-background");
164
+ }
165
+ }
166
+
167
+ // Position: Right
168
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-right .#{iv.$class-prefix}tooltip-content {
169
+ left: calc(100% + #{cv.getVar("tooltip-arrow-size")} + #{cv.getVar("tooltip-arrow-margin")});
170
+ top: 50%;
171
+ transform: translateY(-50%);
172
+
173
+ &::before {
174
+ right: 100%;
175
+ top: calc(50% + var(--tooltip-arrow-offset, 0px));
176
+ transform: translateY(-50%);
177
+ border-right-color: cv.getVar("tooltip-background");
178
+ }
179
+ }
180
+
181
+ // Color variants
182
+ // Uses Bulma's -invert-l pattern for text contrast (same approach as buttons)
183
+ @mixin tooltip-color($name) {
184
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-#{$name} .#{iv.$class-prefix}tooltip-content {
185
+ @include cv.register-vars(
186
+ (
187
+ "tooltip-background": #{cv.getVar($name)},
188
+ "tooltip-color": #{hsl(cv.getVar($name, "", "-h"), cv.getVar($name, "", "-s"), cv.getVar($name, "", "-invert-l"))},
189
+ )
190
+ );
191
+ }
192
+ }
193
+
194
+ @include tooltip-color('primary');
195
+ @include tooltip-color('link');
196
+ @include tooltip-color('info');
197
+ @include tooltip-color('success');
198
+ @include tooltip-color('warning');
199
+ @include tooltip-color('danger');
200
+
201
+ // Dark variant
202
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-dark .#{iv.$class-prefix}tooltip-content {
203
+ @include cv.register-vars(
204
+ (
205
+ "tooltip-background": #{cv.getVar("dark")},
206
+ "tooltip-color": #{cv.getVar("light")},
207
+ )
208
+ );
209
+ }
210
+
211
+ // Light variant
212
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-light .#{iv.$class-prefix}tooltip-content {
213
+ @include cv.register-vars(
214
+ (
215
+ "tooltip-background": #{cv.getVar("light")},
216
+ "tooltip-color": #{cv.getVar("dark")},
217
+ )
218
+ );
219
+ }
220
+
221
+ // Size variants
222
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-small .#{iv.$class-prefix}tooltip-content {
223
+ @include cv.register-vars(
224
+ (
225
+ "tooltip-font-size": #{$tooltip-small-font-size},
226
+ "tooltip-padding": #{$tooltip-small-padding},
227
+ "tooltip-arrow-size": #{$tooltip-small-arrow-size},
228
+ )
229
+ );
230
+ }
231
+
232
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-medium .#{iv.$class-prefix}tooltip-content {
233
+ @include cv.register-vars(
234
+ (
235
+ "tooltip-font-size": #{$tooltip-medium-font-size},
236
+ "tooltip-padding": #{$tooltip-medium-padding},
237
+ "tooltip-arrow-size": #{$tooltip-medium-arrow-size},
238
+ )
239
+ );
240
+ }
241
+
242
+ .#{iv.$class-prefix}tooltip.#{iv.$class-prefix}is-large .#{iv.$class-prefix}tooltip-content {
243
+ @include cv.register-vars(
244
+ (
245
+ "tooltip-font-size": #{$tooltip-large-font-size},
246
+ "tooltip-padding": #{$tooltip-large-padding},
247
+ "tooltip-arrow-size": #{$tooltip-large-arrow-size},
248
+ )
249
+ );
250
+ }
@@ -0,0 +1,5 @@
1
+ // Bestax Extras - Element Styles Index
2
+ // Import all element partials here
3
+
4
+ // Element Components
5
+ @use 'linkbutton';
@@ -0,0 +1,77 @@
1
+ // Bestax Extras - LinkButton Styles
2
+ // Overrides for .button.is-text and .button.is-ghost when used as LinkButton
3
+ // Follows Bulma v1 CSS variable convention
4
+
5
+ @use "bulma/sass/utilities/initial-variables" as iv;
6
+ @use "bulma/sass/utilities/css-variables" as cv;
7
+
8
+ // LinkButton-specific SCSS variables
9
+ $link-button-underline-offset: 0.2em !default;
10
+ $link-button-transition-duration: cv.getVar("duration") !default;
11
+ $link-button-ghost-color: cv.getVar("text") !default;
12
+ $link-button-ghost-hover-color: cv.getVar("text-strong") !default;
13
+
14
+ // Register CSS custom properties
15
+ .#{iv.$class-prefix}button.#{iv.$class-prefix}link-button {
16
+ @include cv.register-vars(
17
+ (
18
+ "link-button-underline-offset": #{$link-button-underline-offset},
19
+ "link-button-transition-duration": #{$link-button-transition-duration},
20
+ "link-button-ghost-color": #{$link-button-ghost-color},
21
+ "link-button-ghost-hover-color": #{$link-button-ghost-hover-color},
22
+ )
23
+ );
24
+
25
+ // Text variant: remove underline that Bulma adds
26
+ &.#{iv.$class-prefix}is-text {
27
+ text-decoration: none;
28
+
29
+ &:hover,
30
+ &:focus {
31
+ text-decoration: none;
32
+ }
33
+ }
34
+
35
+ // Ghost variant: use default text color instead of link color, remove underline
36
+ &.#{iv.$class-prefix}is-ghost {
37
+ color: cv.getVar("link-button-ghost-color");
38
+ text-decoration: none;
39
+
40
+ &:hover,
41
+ &:focus {
42
+ color: cv.getVar("link-button-ghost-hover-color");
43
+ text-decoration: none;
44
+ }
45
+ }
46
+
47
+ // Underline variant: plain text, underline on hover/focus, no button chrome
48
+ &.#{iv.$class-prefix}link-button-underline {
49
+ text-decoration: none;
50
+ background-color: transparent;
51
+ border-color: transparent;
52
+ transition: text-decoration cv.getVar("link-button-transition-duration");
53
+
54
+ &:hover,
55
+ &:focus {
56
+ text-decoration: underline;
57
+ text-underline-offset: cv.getVar("link-button-underline-offset");
58
+ background-color: transparent;
59
+ border-color: transparent;
60
+ }
61
+ }
62
+
63
+ // Color variants — override text color for all variants
64
+ @each $name
65
+ in ("primary", "link", "info", "success", "warning", "danger", "white",
66
+ "light", "dark", "black")
67
+ {
68
+ &.#{iv.$class-prefix}link-button-#{$name} {
69
+ color: cv.getVar("#{$name}");
70
+
71
+ &:hover,
72
+ &:focus {
73
+ color: cv.getVar("#{$name}");
74
+ }
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,24 @@
1
+ // Bestax Extras - Main SCSS Entry Point
2
+ // This file imports all extra component styles
3
+ //
4
+ // Usage (pre-built CSS):
5
+ // import '@allxsmith/bestax-bulma/dist/extras.css';
6
+ //
7
+ // Usage (SCSS source for customization):
8
+ // @use '@allxsmith/bestax-bulma/src/scss/extras';
9
+
10
+ // Foundation
11
+ @use 'variables';
12
+ @use 'mixins';
13
+
14
+ // Component styles
15
+ @use 'components/index' as components;
16
+
17
+ // Form component styles
18
+ @use 'form/index' as form;
19
+
20
+ // Element styles
21
+ @use 'elements/index' as elements;
22
+
23
+ // Helper styles
24
+ @use 'helpers/index' as helpers;