@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.
- package/README.md +2 -2
- package/dist/bestax.css +3 -0
- package/dist/bestax.css.map +1 -0
- package/dist/bestax.js +1 -0
- package/dist/extras.css +3 -0
- package/dist/extras.css.map +1 -0
- package/dist/extras.js +1 -0
- package/dist/index.cjs.js +6214 -647
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +6154 -649
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/Card.d.ts +1 -1
- package/dist/types/components/Carousel.d.ts +34 -0
- package/dist/types/components/Collapse.d.ts +17 -0
- package/dist/types/components/Dialog.d.ts +47 -0
- package/dist/types/components/Loading.d.ts +18 -0
- package/dist/types/components/Navbar.d.ts +10 -0
- package/dist/types/components/Panel.d.ts +2 -4
- package/dist/types/components/Sidebar.d.ts +37 -0
- package/dist/types/components/Steps.d.ts +45 -0
- package/dist/types/components/Tabs.d.ts +42 -6
- package/dist/types/components/Toast.d.ts +46 -0
- package/dist/types/components/Tooltip.d.ts +22 -0
- package/dist/types/elements/Button.d.ts +1 -1
- package/dist/types/elements/Code.d.ts +9 -0
- package/dist/types/elements/Divider.d.ts +7 -0
- package/dist/types/elements/Emphasis.d.ts +9 -0
- package/dist/types/elements/Figure.d.ts +17 -0
- package/dist/types/elements/Icon.d.ts +2 -1
- package/dist/types/elements/Link.d.ts +10 -0
- package/dist/types/elements/LinkButton.d.ts +8 -0
- package/dist/types/elements/ListItem.d.ts +9 -0
- package/dist/types/elements/Notification.d.ts +31 -0
- package/dist/types/elements/OrderedList.d.ts +9 -0
- package/dist/types/elements/Paragraph.d.ts +9 -0
- package/dist/types/elements/Pre.d.ts +9 -0
- package/dist/types/elements/Span.d.ts +9 -0
- package/dist/types/elements/Strong.d.ts +9 -0
- package/dist/types/elements/UnorderedList.d.ts +9 -0
- package/dist/types/form/Autocomplete.d.ts +42 -0
- package/dist/types/form/Checkbox.d.ts +7 -2
- package/dist/types/form/Checkboxes.d.ts +6 -1
- package/dist/types/form/DateInput.d.ts +26 -0
- package/dist/types/form/DateInputBase.d.ts +42 -0
- package/dist/types/form/DateTimeInput.d.ts +26 -0
- package/dist/types/form/DateTimeInputBase.d.ts +50 -0
- package/dist/types/form/Field.d.ts +2 -1
- package/dist/types/form/File.d.ts +3 -2
- package/dist/types/form/FormContext.d.ts +22 -0
- package/dist/types/form/Input.d.ts +22 -11
- package/dist/types/form/InputBase.d.ts +16 -0
- package/dist/types/form/Numberinput.d.ts +30 -0
- package/dist/types/form/Radio.d.ts +7 -2
- package/dist/types/form/Radios.d.ts +6 -1
- package/dist/types/form/Rate.d.ts +38 -0
- package/dist/types/form/Select.d.ts +18 -11
- package/dist/types/form/SelectBase.d.ts +19 -0
- package/dist/types/form/Slider.d.ts +49 -0
- package/dist/types/form/Switch.d.ts +17 -0
- package/dist/types/form/Taginput.d.ts +54 -0
- package/dist/types/form/TextArea.d.ts +13 -14
- package/dist/types/form/TextAreaBase.d.ts +19 -0
- package/dist/types/form/TimeInput.d.ts +26 -0
- package/dist/types/form/TimeInputBase.d.ts +44 -0
- package/dist/types/form/_pickerInternals/Calendar.d.ts +26 -0
- package/dist/types/form/_pickerInternals/PickerPopover.d.ts +20 -0
- package/dist/types/form/_pickerInternals/TimeWheels.d.ts +29 -0
- package/dist/types/form/_pickerInternals/audioTick.d.ts +3 -0
- package/dist/types/form/_pickerInternals/dateUtils.d.ts +39 -0
- package/dist/types/form/_pickerInternals/formatters.d.ts +13 -0
- package/dist/types/form/_pickerInternals/haptics.d.ts +1 -0
- package/dist/types/form/_pickerInternals/pickerTypes.d.ts +31 -0
- package/dist/types/form/_pickerInternals/segmentMap.d.ts +20 -0
- package/dist/types/form/_pickerInternals/useFocusTrap.d.ts +7 -0
- package/dist/types/form/_pickerInternals/useNativeMobilePicker.d.ts +10 -0
- package/dist/types/form/_pickerInternals/useSegmentedEntry.d.ts +45 -0
- package/dist/types/form/fieldProps.d.ts +12 -0
- package/dist/types/helpers/bulmaClassHelpers.d.ts +35 -0
- package/dist/types/helpers/useBulmaClasses.d.ts +16 -83
- package/dist/types/helpers/useColorClasses.d.ts +8 -0
- package/dist/types/helpers/useFlexboxClasses.d.ts +12 -0
- package/dist/types/helpers/useOtherClasses.d.ts +15 -0
- package/dist/types/helpers/useSpacingClasses.d.ts +18 -0
- package/dist/types/helpers/useTypographyClasses.d.ts +19 -0
- package/dist/types/helpers/useVisibilityClasses.d.ts +10 -0
- package/dist/types/index.d.ts +53 -3
- package/dist/versions/bestax-bulma-prefixed.css +3 -0
- package/dist/versions/bestax-bulma-prefixed.css.map +1 -0
- package/dist/versions/bestax-bulma-prefixed.js +1 -0
- package/dist/versions/bestax-no-dark-mode.css +3 -0
- package/dist/versions/bestax-no-dark-mode.css.map +1 -0
- package/dist/versions/bestax-no-dark-mode.js +1 -0
- package/dist/versions/bestax-no-helpers-prefixed.css +3 -0
- package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -0
- package/dist/versions/bestax-no-helpers-prefixed.js +1 -0
- package/dist/versions/bestax-no-helpers.css +3 -0
- package/dist/versions/bestax-no-helpers.css.map +1 -0
- package/dist/versions/bestax-no-helpers.js +1 -0
- package/dist/versions/bestax-prefixed.css +3 -0
- package/dist/versions/bestax-prefixed.css.map +1 -0
- package/dist/versions/bestax-prefixed.js +1 -0
- package/package.json +109 -35
- package/src/scss/_mixins.scss +215 -0
- package/src/scss/_variables.scss +94 -0
- package/src/scss/bestax.scss +18 -0
- package/src/scss/components/_carousel.scss +580 -0
- package/src/scss/components/_collapse.scss +126 -0
- package/src/scss/components/_dialog.scss +134 -0
- package/src/scss/components/_index.scss +13 -0
- package/src/scss/components/_loading.scss +231 -0
- package/src/scss/components/_sidebar.scss +347 -0
- package/src/scss/components/_steps.scss +459 -0
- package/src/scss/components/_tabs.scss +147 -0
- package/src/scss/components/_toast.scss +244 -0
- package/src/scss/components/_tooltip.scss +250 -0
- package/src/scss/elements/_index.scss +5 -0
- package/src/scss/elements/_linkbutton.scss +77 -0
- package/src/scss/extras.scss +24 -0
- package/src/scss/form/_autocomplete.scss +261 -0
- package/src/scss/form/_checkbox.scss +217 -0
- package/src/scss/form/_dateinput.scss +292 -0
- package/src/scss/form/_datetimeinput.scss +191 -0
- package/src/scss/form/_index.scss +16 -0
- package/src/scss/form/_numberinput.scss +176 -0
- package/src/scss/form/_picker-popover.scss +185 -0
- package/src/scss/form/_radio.scss +196 -0
- package/src/scss/form/_rate.scss +307 -0
- package/src/scss/form/_slider.scss +630 -0
- package/src/scss/form/_switch.scss +314 -0
- package/src/scss/form/_taginput.scss +356 -0
- package/src/scss/form/_timeinput.scss +374 -0
- package/src/scss/helpers/_cursor.scss +5 -0
- package/src/scss/helpers/_index.scss +2 -0
- package/src/scss/helpers/_sizing.scss +5 -0
- package/src/scss/versions/bestax-bulma-prefixed.scss +15 -0
- package/src/scss/versions/bestax-no-dark-mode.scss +32 -0
- package/src/scss/versions/bestax-no-helpers-prefixed.scss +22 -0
- package/src/scss/versions/bestax-no-helpers.scss +23 -0
- package/src/scss/versions/bestax-prefixed.scss +15 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
@use 'bulma/sass/utilities/initial-variables' as iv;
|
|
2
|
+
@use 'bulma/sass/utilities/css-variables' as cv;
|
|
3
|
+
|
|
4
|
+
$timeinput-wheel-width: 3rem !default;
|
|
5
|
+
$timeinput-wheel-item-height: 2rem !default;
|
|
6
|
+
$timeinput-wheel-gap: 0.4rem !default;
|
|
7
|
+
$timeinput-wheel-bg: cv.getVar('scheme-main') !default;
|
|
8
|
+
$timeinput-wheel-color: cv.getVar('text') !default;
|
|
9
|
+
$timeinput-wheel-dim-color: cv.getVar('text-weak') !default;
|
|
10
|
+
$timeinput-wheel-hover-bg: hsla(0, 0%, 50%, 0.13) !default;
|
|
11
|
+
$timeinput-wheel-selected-bg: cv.getVar('primary') !default;
|
|
12
|
+
$timeinput-wheel-selected-color: cv.getVar('primary-invert') !default;
|
|
13
|
+
$timeinput-wheel-radius: cv.getVar('radius') !default;
|
|
14
|
+
// The per-item depth fade applied inline in TimeWheels.tsx now does the heavy
|
|
15
|
+
// lifting of dimming away-from-centre values. The mask just trims the very
|
|
16
|
+
// edges so partial items at the top/bottom don't get a hard cut-off — keep
|
|
17
|
+
// the transparent band thin so the fade and the mask don't compound and make
|
|
18
|
+
// near-edge items vanish before they reach the edge.
|
|
19
|
+
$timeinput-wheel-mask: linear-gradient(
|
|
20
|
+
180deg,
|
|
21
|
+
transparent 0,
|
|
22
|
+
black 18%,
|
|
23
|
+
black 82%,
|
|
24
|
+
transparent 100%
|
|
25
|
+
) !default;
|
|
26
|
+
$timeinput-separator-color: cv.getVar('text-weak') !default;
|
|
27
|
+
$timeinput-separator-size: cv.getVar('size-5') !default;
|
|
28
|
+
$timeinput-footer-padding: 0.5rem 0 0 !default;
|
|
29
|
+
|
|
30
|
+
.#{iv.$class-prefix}timeinput {
|
|
31
|
+
@include cv.register-vars(
|
|
32
|
+
(
|
|
33
|
+
'timeinput-wheel-width': #{$timeinput-wheel-width},
|
|
34
|
+
'timeinput-wheel-item-height': #{$timeinput-wheel-item-height},
|
|
35
|
+
'timeinput-wheel-gap': #{$timeinput-wheel-gap},
|
|
36
|
+
'timeinput-wheel-bg': #{$timeinput-wheel-bg},
|
|
37
|
+
'timeinput-wheel-color': #{$timeinput-wheel-color},
|
|
38
|
+
'timeinput-wheel-dim-color': #{$timeinput-wheel-dim-color},
|
|
39
|
+
'timeinput-wheel-hover-bg': #{$timeinput-wheel-hover-bg},
|
|
40
|
+
'timeinput-wheel-selected-bg': #{$timeinput-wheel-selected-bg},
|
|
41
|
+
'timeinput-wheel-selected-color': #{$timeinput-wheel-selected-color},
|
|
42
|
+
'timeinput-wheel-radius': #{$timeinput-wheel-radius},
|
|
43
|
+
'timeinput-wheel-mask': #{$timeinput-wheel-mask},
|
|
44
|
+
'timeinput-separator-color': #{$timeinput-separator-color},
|
|
45
|
+
'timeinput-separator-size': #{$timeinput-separator-size},
|
|
46
|
+
'timeinput-footer-padding': #{$timeinput-footer-padding},
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.#{iv.$class-prefix}timeinput {
|
|
52
|
+
display: inline-block;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Inline rendering: when the panel is a direct child of the container
|
|
56
|
+
// (no popover wrapper), give it a subtle frame so the wheels don't look
|
|
57
|
+
// orphaned on the page. Mirrors the popover's visual weight without the
|
|
58
|
+
// drop-shadow / animation.
|
|
59
|
+
.#{iv.$class-prefix}timeinput-container
|
|
60
|
+
> .#{iv.$class-prefix}timeinput-panel {
|
|
61
|
+
display: inline-block;
|
|
62
|
+
background-color: cv.getVar('scheme-main');
|
|
63
|
+
border: 1px solid cv.getVar('border');
|
|
64
|
+
border-radius: cv.getVar('radius');
|
|
65
|
+
padding: 0.75rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.#{iv.$class-prefix}timeinput-wheels {
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
gap: cv.getVar('timeinput-wheel-gap');
|
|
72
|
+
// Stop the browser from interpreting touches on the empty space inside
|
|
73
|
+
// this row (left/right of the wheels, between columns) as page-scroll
|
|
74
|
+
// gestures. The parent component routes those drags to the nearest
|
|
75
|
+
// wheel column via the `startDrag` ref method, matching the iOS native
|
|
76
|
+
// picker where the whole picker surface is grabbable.
|
|
77
|
+
touch-action: none;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.#{iv.$class-prefix}timeinput-wheel {
|
|
81
|
+
position: relative;
|
|
82
|
+
width: cv.getVar('timeinput-wheel-width');
|
|
83
|
+
outline: none;
|
|
84
|
+
overflow: hidden;
|
|
85
|
+
touch-action: none;
|
|
86
|
+
user-select: none;
|
|
87
|
+
-webkit-mask-image: cv.getVar('timeinput-wheel-mask');
|
|
88
|
+
mask-image: cv.getVar('timeinput-wheel-mask');
|
|
89
|
+
|
|
90
|
+
// Soft cylinder vignette: the wheel surface stays clean in the middle
|
|
91
|
+
// and gradually darkens toward the top and bottom, suggesting depth like
|
|
92
|
+
// the surface of a rotating drum. Kept very subtle (low alpha) so the
|
|
93
|
+
// numbers themselves stay fully readable — the depth cue comes from the
|
|
94
|
+
// background, not from fading the digits. Sits above the items and the
|
|
95
|
+
// band (z-index 2) with pointer-events disabled so clicks still land.
|
|
96
|
+
&::after {
|
|
97
|
+
content: '';
|
|
98
|
+
position: absolute;
|
|
99
|
+
inset: 0;
|
|
100
|
+
z-index: 2;
|
|
101
|
+
pointer-events: none;
|
|
102
|
+
background: linear-gradient(
|
|
103
|
+
180deg,
|
|
104
|
+
hsla(0, 0%, 0%, 0.22) 0%,
|
|
105
|
+
hsla(0, 0%, 0%, 0) 50%,
|
|
106
|
+
hsla(0, 0%, 0%, 0.22) 100%
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Focus emphasis uses `:focus-visible` so keyboard users see a clear ring
|
|
111
|
+
// while mouse/touch users (who have the stationary centre band as their
|
|
112
|
+
// visual anchor) don't get a distracting outline. The per-item box-shadow
|
|
113
|
+
// that used to live here was removed when the band became the indicator —
|
|
114
|
+
// pinning a ring to the selected item caused a broken-outline artefact
|
|
115
|
+
// whenever position was mid-flight (item offset from band).
|
|
116
|
+
&:focus-visible {
|
|
117
|
+
outline: 2px solid cv.getVar('primary');
|
|
118
|
+
outline-offset: 2px;
|
|
119
|
+
border-radius: cv.getVar('timeinput-wheel-radius');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&.#{iv.$class-prefix}is-dragging .#{iv.$class-prefix}timeinput-wheel-item {
|
|
123
|
+
transition: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&.#{iv.$class-prefix}is-disabled {
|
|
127
|
+
opacity: 0.55;
|
|
128
|
+
cursor: not-allowed;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.#{iv.$class-prefix}timeinput-wheel-item {
|
|
133
|
+
display: flex;
|
|
134
|
+
align-items: center;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
flex: 0 0 auto;
|
|
137
|
+
border: 0;
|
|
138
|
+
background: transparent;
|
|
139
|
+
color: cv.getVar('timeinput-wheel-dim-color');
|
|
140
|
+
font: inherit;
|
|
141
|
+
font-variant-numeric: tabular-nums;
|
|
142
|
+
font-weight: cv.getVar('weight-medium');
|
|
143
|
+
cursor: pointer;
|
|
144
|
+
padding: 0;
|
|
145
|
+
border-radius: cv.getVar('timeinput-wheel-radius');
|
|
146
|
+
// Items render ABOVE the stationary band so the band tints them.
|
|
147
|
+
z-index: 1;
|
|
148
|
+
transition:
|
|
149
|
+
color 0.1s ease,
|
|
150
|
+
font-weight 0.1s ease;
|
|
151
|
+
|
|
152
|
+
&:hover:not(:disabled):not(.#{iv.$class-prefix}is-selected) {
|
|
153
|
+
color: cv.getVar('timeinput-wheel-color');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// The selected item (whichever is currently centred over the band) is
|
|
157
|
+
// emphasised by colour + weight only — the green fill belongs to the
|
|
158
|
+
// band beneath it now, so it doesn't visibly slide with the finger.
|
|
159
|
+
&.#{iv.$class-prefix}is-selected {
|
|
160
|
+
color: cv.getVar('timeinput-wheel-selected-color');
|
|
161
|
+
font-weight: cv.getVar('weight-semibold');
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
&:disabled {
|
|
165
|
+
cursor: not-allowed;
|
|
166
|
+
// Dim individually-disabled values (driven by `unselectableTimes` per
|
|
167
|
+
// column in TimeWheels) so users can see what's unavailable. The whole
|
|
168
|
+
// wheel's `is-disabled` modifier dims the entire column separately.
|
|
169
|
+
opacity: 0.35;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Stationary selection band — sits at the centre of each wheel viewport and
|
|
174
|
+
// does NOT move while items slide through it (iOS-native picker feel). The
|
|
175
|
+
// vertical position and height are set inline by the JSX, so CSS only
|
|
176
|
+
// provides the visual treatment.
|
|
177
|
+
.#{iv.$class-prefix}timeinput-wheel-band {
|
|
178
|
+
background-color: cv.getVar('timeinput-wheel-selected-bg');
|
|
179
|
+
border-radius: cv.getVar('timeinput-wheel-radius');
|
|
180
|
+
z-index: 0;
|
|
181
|
+
// Explicit centre origin so the per-tick pulse animation (driven via WAI
|
|
182
|
+
// in TimeWheels.tsx) scales symmetrically rather than from a default
|
|
183
|
+
// corner. Defensive — current geometry centres the band, but this keeps
|
|
184
|
+
// future width / radius tweaks from skewing the pulse.
|
|
185
|
+
transform-origin: center;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.#{iv.$class-prefix}timeinput-separator {
|
|
189
|
+
font-size: cv.getVar('timeinput-separator-size');
|
|
190
|
+
font-weight: cv.getVar('weight-bold');
|
|
191
|
+
color: cv.getVar('timeinput-separator-color');
|
|
192
|
+
line-height: 1;
|
|
193
|
+
align-self: center;
|
|
194
|
+
padding: 0 0.1rem;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.#{iv.$class-prefix}timeinput-footer {
|
|
198
|
+
display: flex;
|
|
199
|
+
padding: cv.getVar('timeinput-footer-padding');
|
|
200
|
+
|
|
201
|
+
// Make the segmented button group span the full popover width: each
|
|
202
|
+
// child claims an equal share, so OK / Now / Cancel sit side-by-side
|
|
203
|
+
// across the bottom rather than huddling on the right.
|
|
204
|
+
> button {
|
|
205
|
+
flex: 1 1 0;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Soft "primed" indicator on OK whenever any wheel column is focused (via
|
|
210
|
+
// keyboard Tab or click — wheel root takes focus in both cases). Hint that
|
|
211
|
+
// Enter on a wheel will activate OK. Deliberately subtle — just a faint
|
|
212
|
+
// neutral background tint. Real focus on OK uses Bulma's default focus ring
|
|
213
|
+
// (same as Now / Cancel) so the three buttons stay visually consistent.
|
|
214
|
+
.#{iv.$class-prefix}timeinput-panel:has(
|
|
215
|
+
.#{iv.$class-prefix}timeinput-wheel:focus
|
|
216
|
+
)
|
|
217
|
+
.#{iv.$class-prefix}timeinput-footer-ok:not(:focus-visible) {
|
|
218
|
+
background-color: hsla(0, 0%, 50%, 0.12);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Sizes scale the item height + wheel width.
|
|
222
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-small {
|
|
223
|
+
width: 2.5rem;
|
|
224
|
+
}
|
|
225
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-medium {
|
|
226
|
+
width: 3.5rem;
|
|
227
|
+
}
|
|
228
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-large {
|
|
229
|
+
width: 4.25rem;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@media (prefers-reduced-motion: reduce) {
|
|
233
|
+
.#{iv.$class-prefix}timeinput-wheel-list {
|
|
234
|
+
transition: none;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Mobile (small viewport): bigger touch targets, larger numbers, more iOS-native
|
|
239
|
+
// feel. Item *height* is set inline by JS and bumped from 40px to 48px on small
|
|
240
|
+
// viewports by TimeInputBase; the rules below adjust everything that's CSS-only
|
|
241
|
+
// (font size, wheel width, gap, separator, mask intensity).
|
|
242
|
+
@media (max-width: 768px) {
|
|
243
|
+
.#{iv.$class-prefix}timeinput {
|
|
244
|
+
--bestax-timeinput-wheel-width: 4rem;
|
|
245
|
+
--bestax-timeinput-wheel-gap: 0.5rem;
|
|
246
|
+
// Mobile mask: with the per-item depth fade already pulling brightness
|
|
247
|
+
// down toward the edges, the mask only needs to handle the final crop.
|
|
248
|
+
// Slightly tighter than desktop because mobile items are bigger and the
|
|
249
|
+
// edge taper benefits from a touch more softening.
|
|
250
|
+
--bestax-timeinput-wheel-mask: linear-gradient(
|
|
251
|
+
180deg,
|
|
252
|
+
transparent 0,
|
|
253
|
+
black 28%,
|
|
254
|
+
black 72%,
|
|
255
|
+
transparent 100%
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.#{iv.$class-prefix}timeinput-wheel-item {
|
|
260
|
+
font-size: 1.1rem;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.#{iv.$class-prefix}timeinput-separator {
|
|
264
|
+
font-size: 1.4rem;
|
|
265
|
+
padding: 0 0.25rem;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// The wheel widths from .is-small / .is-medium / .is-large would otherwise
|
|
269
|
+
// override the mobile bump above. Re-apply the larger mobile widths so the
|
|
270
|
+
// size variants still scale around the iOS-native baseline.
|
|
271
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-small {
|
|
272
|
+
width: 3.25rem;
|
|
273
|
+
}
|
|
274
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-medium {
|
|
275
|
+
width: 4.5rem;
|
|
276
|
+
}
|
|
277
|
+
.#{iv.$class-prefix}timeinput-wheel.#{iv.$class-prefix}is-large {
|
|
278
|
+
width: 5.25rem;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// On mobile, the popover is wide and the panel is a column flex container
|
|
282
|
+
// (see below), so the timeinput root becomes a stretched flex item. For
|
|
283
|
+
// the wheels row to actually expose empty space on the sides (where we
|
|
284
|
+
// forward drag gestures to the nearest wheel), it has to span the full
|
|
285
|
+
// panel width — otherwise `display: flex` shrinks it to its content and
|
|
286
|
+
// `justify-content: center` has nothing to centre.
|
|
287
|
+
.#{iv.$class-prefix}timeinput {
|
|
288
|
+
display: block;
|
|
289
|
+
width: 100%;
|
|
290
|
+
}
|
|
291
|
+
.#{iv.$class-prefix}timeinput-wheels {
|
|
292
|
+
width: 100%;
|
|
293
|
+
justify-content: center;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Wide bottom-anchored popover when it contains a TimeInput panel — the
|
|
297
|
+
// OS-native picker on iOS occupies almost the full screen width with the
|
|
298
|
+
// wheels centred, so we mirror that. `:has()` is supported on iOS 15.4+,
|
|
299
|
+
// Safari 15.4+, and all current Chromium / Firefox.
|
|
300
|
+
.#{iv.$class-prefix}picker-popover:has(.#{iv.$class-prefix}timeinput-panel) {
|
|
301
|
+
// Override the popover's registered radius var so border-radius (which
|
|
302
|
+
// already references `cv.getVar('picker-popover-radius')`) updates
|
|
303
|
+
// automatically. We use Bulma's `radius-large` scaled by 4 for an
|
|
304
|
+
// iOS-sheet-sized corner without hard-coding a px value.
|
|
305
|
+
--bestax-picker-popover-radius: calc(#{cv.getVar('radius-large')} * 4);
|
|
306
|
+
position: fixed;
|
|
307
|
+
left: 1rem;
|
|
308
|
+
right: 1rem;
|
|
309
|
+
bottom: 1rem;
|
|
310
|
+
top: auto;
|
|
311
|
+
width: auto;
|
|
312
|
+
max-width: none;
|
|
313
|
+
}
|
|
314
|
+
.#{iv.$class-prefix}timeinput-panel {
|
|
315
|
+
display: flex;
|
|
316
|
+
flex-direction: column;
|
|
317
|
+
align-items: stretch;
|
|
318
|
+
// Prevent the browser from interpreting touches anywhere on the panel
|
|
319
|
+
// (the wheels row, the gap between wheels and footer, and the footer
|
|
320
|
+
// itself) as page-scroll gestures. Taps on the footer buttons still
|
|
321
|
+
// work — touch-action only suppresses native pan/zoom, not clicks.
|
|
322
|
+
touch-action: none;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// iOS-style mobile footer: "Reset" text link on the left, blue circular
|
|
326
|
+
// checkmark on the right.
|
|
327
|
+
.#{iv.$class-prefix}timeinput-footer-mobile {
|
|
328
|
+
display: flex;
|
|
329
|
+
align-items: center;
|
|
330
|
+
justify-content: space-between;
|
|
331
|
+
padding: 0.75rem 0.25rem 0;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.#{iv.$class-prefix}timeinput-footer-reset {
|
|
335
|
+
appearance: none;
|
|
336
|
+
background: transparent;
|
|
337
|
+
border: 0;
|
|
338
|
+
padding: 0.5rem 0.25rem;
|
|
339
|
+
font: inherit;
|
|
340
|
+
color: cv.getVar('text');
|
|
341
|
+
cursor: pointer;
|
|
342
|
+
border-radius: cv.getVar('radius');
|
|
343
|
+
|
|
344
|
+
&:hover,
|
|
345
|
+
&:focus-visible {
|
|
346
|
+
background-color: hsla(0, 0%, 50%, 0.12);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.#{iv.$class-prefix}timeinput-footer-done {
|
|
351
|
+
appearance: none;
|
|
352
|
+
border: 0;
|
|
353
|
+
padding: 0;
|
|
354
|
+
width: 2.75rem;
|
|
355
|
+
height: 2.75rem;
|
|
356
|
+
border-radius: 50%;
|
|
357
|
+
display: inline-flex;
|
|
358
|
+
align-items: center;
|
|
359
|
+
justify-content: center;
|
|
360
|
+
background-color: cv.getVar('primary');
|
|
361
|
+
color: cv.getVar('primary-invert');
|
|
362
|
+
cursor: pointer;
|
|
363
|
+
box-shadow: 0 1px 3px hsla(0, 0%, 0%, 0.18);
|
|
364
|
+
transition: transform 0.1s ease;
|
|
365
|
+
|
|
366
|
+
&:active {
|
|
367
|
+
transform: scale(0.94);
|
|
368
|
+
}
|
|
369
|
+
&:focus-visible {
|
|
370
|
+
outline: 2px solid cv.getVar('primary');
|
|
371
|
+
outline-offset: 2px;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Bestax Bulma-Prefixed - Combined Bulma + Extras with "bulma-" class prefix
|
|
2
|
+
//
|
|
3
|
+
// Usage (pre-built CSS):
|
|
4
|
+
// import '@allxsmith/bestax-bulma/versions/bestax-bulma-prefixed.css';
|
|
5
|
+
//
|
|
6
|
+
// All CSS classes will be prefixed with "bulma-", e.g. "bulma-button", "bulma-is-primary"
|
|
7
|
+
|
|
8
|
+
@use 'bulma/sass' with ($class-prefix: "bulma-", $primary: #1e6b99);
|
|
9
|
+
|
|
10
|
+
@use '../variables';
|
|
11
|
+
@use '../mixins';
|
|
12
|
+
@use '../components/index' as components;
|
|
13
|
+
@use '../form/index' as form;
|
|
14
|
+
@use '../elements/index' as elements;
|
|
15
|
+
@use '../helpers/index' as helpers;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Bestax No Dark Mode - Combined Bulma + Extras, light theme only
|
|
2
|
+
//
|
|
3
|
+
// Usage (pre-built CSS):
|
|
4
|
+
// import '@allxsmith/bestax-bulma/versions/bestax-no-dark-mode.css';
|
|
5
|
+
//
|
|
6
|
+
// Includes only the light theme, reducing CSS bundle size
|
|
7
|
+
|
|
8
|
+
// Configure utilities (primary override) before themes load it transitively
|
|
9
|
+
@use "bulma/sass/utilities" with ($primary: #1e6b99);
|
|
10
|
+
@use "bulma/sass/themes/light";
|
|
11
|
+
@use "bulma/sass/themes/setup";
|
|
12
|
+
@use '../variables';
|
|
13
|
+
@use '../mixins';
|
|
14
|
+
@use '../components/index' as components;
|
|
15
|
+
@use '../form/index' as form;
|
|
16
|
+
@use '../elements/index' as elements;
|
|
17
|
+
@use '../helpers/index' as helpers;
|
|
18
|
+
|
|
19
|
+
@forward "bulma/sass/utilities";
|
|
20
|
+
@forward "bulma/sass/base";
|
|
21
|
+
@forward "bulma/sass/elements";
|
|
22
|
+
@forward "bulma/sass/form";
|
|
23
|
+
@forward "bulma/sass/components";
|
|
24
|
+
@forward "bulma/sass/grid";
|
|
25
|
+
@forward "bulma/sass/layout";
|
|
26
|
+
@forward "bulma/sass/base/skeleton";
|
|
27
|
+
@forward "bulma/sass/helpers";
|
|
28
|
+
|
|
29
|
+
:root {
|
|
30
|
+
@include light.light-theme;
|
|
31
|
+
@include setup.setup-theme;
|
|
32
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Bestax No Helpers, Prefixed - Combined Bulma + Extras with "bestax-" prefix, no helpers
|
|
2
|
+
//
|
|
3
|
+
// Usage (pre-built CSS):
|
|
4
|
+
// import '@allxsmith/bestax-bulma/versions/bestax-no-helpers-prefixed.css';
|
|
5
|
+
//
|
|
6
|
+
// Excludes helper classes and prefixes all CSS classes with "bestax-"
|
|
7
|
+
|
|
8
|
+
@use "bulma/sass/utilities" with ($class-prefix: "bestax-", $primary: #1e6b99);
|
|
9
|
+
@forward "bulma/sass/themes";
|
|
10
|
+
@forward "bulma/sass/base";
|
|
11
|
+
@forward "bulma/sass/elements";
|
|
12
|
+
@forward "bulma/sass/form";
|
|
13
|
+
@forward "bulma/sass/components";
|
|
14
|
+
@forward "bulma/sass/grid";
|
|
15
|
+
@forward "bulma/sass/layout";
|
|
16
|
+
@forward "bulma/sass/base/skeleton";
|
|
17
|
+
|
|
18
|
+
@use '../variables';
|
|
19
|
+
@use '../mixins';
|
|
20
|
+
@use '../components/index' as components;
|
|
21
|
+
@use '../form/index' as form;
|
|
22
|
+
@use '../elements/index' as elements;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Bestax No Helpers - Combined Bulma + Extras without helper classes
|
|
2
|
+
//
|
|
3
|
+
// Usage (pre-built CSS):
|
|
4
|
+
// import '@allxsmith/bestax-bulma/versions/bestax-no-helpers.css';
|
|
5
|
+
//
|
|
6
|
+
// Excludes Bulma helper classes (spacing, typography, color utilities, etc.)
|
|
7
|
+
|
|
8
|
+
@use "bulma/sass/utilities" with ($primary: #1e6b99);
|
|
9
|
+
@forward "bulma/sass/utilities";
|
|
10
|
+
@forward "bulma/sass/themes";
|
|
11
|
+
@forward "bulma/sass/base";
|
|
12
|
+
@forward "bulma/sass/elements";
|
|
13
|
+
@forward "bulma/sass/form";
|
|
14
|
+
@forward "bulma/sass/components";
|
|
15
|
+
@forward "bulma/sass/grid";
|
|
16
|
+
@forward "bulma/sass/layout";
|
|
17
|
+
@forward "bulma/sass/base/skeleton";
|
|
18
|
+
|
|
19
|
+
@use '../variables';
|
|
20
|
+
@use '../mixins';
|
|
21
|
+
@use '../components/index' as components;
|
|
22
|
+
@use '../form/index' as form;
|
|
23
|
+
@use '../elements/index' as elements;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Bestax Prefixed - Combined Bulma + Extras with "bestax-" class prefix
|
|
2
|
+
//
|
|
3
|
+
// Usage (pre-built CSS):
|
|
4
|
+
// import '@allxsmith/bestax-bulma/versions/bestax-prefixed.css';
|
|
5
|
+
//
|
|
6
|
+
// All CSS classes will be prefixed with "bestax-", e.g. "bestax-button", "bestax-is-primary"
|
|
7
|
+
|
|
8
|
+
@use 'bulma/sass' with ($class-prefix: "bestax-", $primary: #1e6b99);
|
|
9
|
+
|
|
10
|
+
@use '../variables';
|
|
11
|
+
@use '../mixins';
|
|
12
|
+
@use '../components/index' as components;
|
|
13
|
+
@use '../form/index' as form;
|
|
14
|
+
@use '../elements/index' as elements;
|
|
15
|
+
@use '../helpers/index' as helpers;
|