@actabldesign/bellhop-styles 0.0.4 → 0.0.12
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 +105 -70
- package/dist/index.css +33 -0
- package/dist/utilities.css +5730 -0
- package/llms.txt +2765 -119
- package/package.json +6 -1
- package/rollup.config.js +39 -24
- package/src/bh-tokens/_primitives.scss +296 -0
- package/src/bh-tokens/_semantic.scss +158 -0
- package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
- package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
- package/src/bh-tokens/components/_badge.tokens.scss +61 -0
- package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
- package/src/bh-tokens/components/_button.tokens.scss +185 -0
- package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
- package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
- package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
- package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
- package/src/bh-tokens/components/_input.tokens.scss +86 -0
- package/src/bh-tokens/components/_label.tokens.scss +37 -0
- package/src/bh-tokens/components/_modal.tokens.scss +42 -0
- package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
- package/src/bh-tokens/components/_password.tokens.scss +63 -0
- package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
- package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
- package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
- package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
- package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
- package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
- package/src/bh-tokens/components/avatar.scss +288 -0
- package/src/bh-tokens/components/badge-dot.scss +177 -0
- package/src/bh-tokens/components/badge.scss +497 -0
- package/src/bh-tokens/components/button-icon.scss +227 -0
- package/src/bh-tokens/components/button.scss +640 -0
- package/src/bh-tokens/components/checkbox.scss +254 -0
- package/src/bh-tokens/components/dropdown.scss +231 -0
- package/src/bh-tokens/components/featured-icon.scss +219 -0
- package/src/bh-tokens/components/input-number.scss +147 -0
- package/src/bh-tokens/components/input.scss +271 -0
- package/src/bh-tokens/components/label.scss +176 -0
- package/src/bh-tokens/components/modal.scss +103 -0
- package/src/bh-tokens/components/pagination.scss +324 -0
- package/src/bh-tokens/components/password.scss +193 -0
- package/src/bh-tokens/components/progress-bar.scss +124 -0
- package/src/bh-tokens/components/progress-spinner.scss +130 -0
- package/src/bh-tokens/components/radiobutton.scss +193 -0
- package/src/bh-tokens/components/skeleton.scss +50 -0
- package/src/bh-tokens/components/textarea.scss +228 -0
- package/src/bh-tokens/components/toggle.scss +320 -0
- package/src/mixins/_responsive.scss +167 -0
- package/src/tokens/bellhop-typography.css +34 -0
- package/src/utilities/_breakpoints.scss +19 -0
- package/src/utilities/_flex.scss +228 -0
- package/src/utilities/_grid.scss +189 -0
- package/src/utilities/_index.scss +32 -0
- package/src/utilities/_scrollable.scss +239 -0
- package/src/utilities/_sizing.scss +229 -0
- package/src/utilities/_spacing.scss +187 -0
- package/src/utilities/_truncation.scss +126 -0
- package/src/utilities/_visibility.scss +117 -0
- package/src/utilities.scss +32 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
BELLHOP UTILITIES - SIZING
|
|
3
|
+
Width, height, and size constraint utilities
|
|
4
|
+
|
|
5
|
+
Dependencies:
|
|
6
|
+
- _semantic.scss (tokens)
|
|
7
|
+
- _responsive.scss (breakpoint mixins)
|
|
8
|
+
|
|
9
|
+
Generated classes:
|
|
10
|
+
- .bh-w_{size} (width)
|
|
11
|
+
- .bh-max-w_{size} (max-width)
|
|
12
|
+
- .bh-min-w_{size} (min-width)
|
|
13
|
+
- .bh-h_{size} (height)
|
|
14
|
+
- .bh-max-h_{size} (max-height)
|
|
15
|
+
- .bh-min-h_{size} (min-height)
|
|
16
|
+
========================================================================== */
|
|
17
|
+
|
|
18
|
+
@use '../mixins/responsive' as *;
|
|
19
|
+
|
|
20
|
+
/* --- WIDTH --- */
|
|
21
|
+
|
|
22
|
+
.bh-w_auto {
|
|
23
|
+
width: auto;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.bh-w_full {
|
|
27
|
+
width: 100%;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.bh-w_screen {
|
|
31
|
+
width: 100vw;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.bh-w_fit {
|
|
35
|
+
width: fit-content;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.bh-w_min {
|
|
39
|
+
width: min-content;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.bh-w_max {
|
|
43
|
+
width: max-content;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* --- MAX WIDTH (Container Sizes) --- */
|
|
47
|
+
|
|
48
|
+
.bh-max-w_xs {
|
|
49
|
+
max-width: 320px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.bh-max-w_sm {
|
|
53
|
+
max-width: 640px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bh-max-w_md {
|
|
57
|
+
max-width: 768px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.bh-max-w_lg {
|
|
61
|
+
max-width: 1120px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.bh-max-w_xl {
|
|
65
|
+
max-width: 1440px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.bh-max-w_wide {
|
|
69
|
+
max-width: 1680px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.bh-max-w_full {
|
|
73
|
+
max-width: 100%;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.bh-max-w_none {
|
|
77
|
+
max-width: none;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.bh-max-w_fit {
|
|
81
|
+
max-width: fit-content;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.bh-max-w_min {
|
|
85
|
+
max-width: min-content;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.bh-max-w_max {
|
|
89
|
+
max-width: max-content;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* --- MIN WIDTH --- */
|
|
93
|
+
|
|
94
|
+
.bh-min-w_0 {
|
|
95
|
+
min-width: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.bh-min-w_full {
|
|
99
|
+
min-width: 100%;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.bh-min-w_fit {
|
|
103
|
+
min-width: fit-content;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.bh-min-w_min {
|
|
107
|
+
min-width: min-content;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.bh-min-w_max {
|
|
111
|
+
min-width: max-content;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* --- HEIGHT --- */
|
|
115
|
+
|
|
116
|
+
.bh-h_auto {
|
|
117
|
+
height: auto;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.bh-h_full {
|
|
121
|
+
height: 100%;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.bh-h_screen {
|
|
125
|
+
height: 100vh;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.bh-h_fit {
|
|
129
|
+
height: fit-content;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.bh-h_min {
|
|
133
|
+
height: min-content;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.bh-h_max {
|
|
137
|
+
height: max-content;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* --- MAX HEIGHT --- */
|
|
141
|
+
|
|
142
|
+
.bh-max-h_full {
|
|
143
|
+
max-height: 100%;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.bh-max-h_screen {
|
|
147
|
+
max-height: 100vh;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.bh-max-h_none {
|
|
151
|
+
max-height: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.bh-max-h_fit {
|
|
155
|
+
max-height: fit-content;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.bh-max-h_min {
|
|
159
|
+
max-height: min-content;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.bh-max-h_max {
|
|
163
|
+
max-height: max-content;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* --- MIN HEIGHT --- */
|
|
167
|
+
|
|
168
|
+
.bh-min-h_0 {
|
|
169
|
+
min-height: 0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.bh-min-h_full {
|
|
173
|
+
min-height: 100%;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.bh-min-h_screen {
|
|
177
|
+
min-height: 100vh;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.bh-min-h_fit {
|
|
181
|
+
min-height: fit-content;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.bh-min-h_min {
|
|
185
|
+
min-height: min-content;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.bh-min-h_max {
|
|
189
|
+
min-height: max-content;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* --- SIZE (Both Width and Height) --- */
|
|
193
|
+
|
|
194
|
+
.bh-size_auto {
|
|
195
|
+
width: auto;
|
|
196
|
+
height: auto;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.bh-size_full {
|
|
200
|
+
width: 100%;
|
|
201
|
+
height: 100%;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.bh-size_fit {
|
|
205
|
+
width: fit-content;
|
|
206
|
+
height: fit-content;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* --- ASPECT RATIO --- */
|
|
210
|
+
|
|
211
|
+
.bh-aspect_square {
|
|
212
|
+
aspect-ratio: 1 / 1;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.bh-aspect_video {
|
|
216
|
+
aspect-ratio: 16 / 9;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.bh-aspect_portrait {
|
|
220
|
+
aspect-ratio: 3 / 4;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.bh-aspect_landscape {
|
|
224
|
+
aspect-ratio: 4 / 3;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.bh-aspect_auto {
|
|
228
|
+
aspect-ratio: auto;
|
|
229
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
BELLHOP UTILITIES - SPACING
|
|
3
|
+
Margin, padding, and gap utilities with responsive variants
|
|
4
|
+
|
|
5
|
+
Dependencies:
|
|
6
|
+
- _semantic.scss (tokens)
|
|
7
|
+
- _responsive.scss (breakpoint mixins)
|
|
8
|
+
|
|
9
|
+
Generated classes:
|
|
10
|
+
- .bh-m_{size}, .bh-m-{side}_{size}, .bh-m-x_{size}, .bh-m-y_{size}
|
|
11
|
+
- .bh-p_{size}, .bh-p-{side}_{size}, .bh-p-x_{size}, .bh-p-y_{size}
|
|
12
|
+
- .bh-gap_{size}, .bh-gap-x_{size}, .bh-gap-y_{size}
|
|
13
|
+
- Responsive variants: .bh-{utility}@tablet, @desktop, @wide
|
|
14
|
+
========================================================================== */
|
|
15
|
+
|
|
16
|
+
@use '../mixins/responsive' as *;
|
|
17
|
+
|
|
18
|
+
// Spacing scale map (references CSS custom properties from _semantic.scss)
|
|
19
|
+
$bh-spacing-scale: (
|
|
20
|
+
'none': var(--bh-spacing-none),
|
|
21
|
+
'xxs': var(--bh-spacing-xxs),
|
|
22
|
+
'xs': var(--bh-spacing-xs),
|
|
23
|
+
'sm': var(--bh-spacing-sm),
|
|
24
|
+
'md': var(--bh-spacing-md),
|
|
25
|
+
'lg': var(--bh-spacing-lg),
|
|
26
|
+
'xl': var(--bh-spacing-xl),
|
|
27
|
+
'2xl': var(--bh-spacing-2xl),
|
|
28
|
+
'3xl': var(--bh-spacing-3xl),
|
|
29
|
+
'4xl': var(--bh-spacing-4xl),
|
|
30
|
+
'5xl': var(--bh-spacing-5xl),
|
|
31
|
+
'6xl': var(--bh-spacing-6xl),
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// Sides for directional utilities
|
|
35
|
+
$bh-spacing-sides: (
|
|
36
|
+
'top': 'top',
|
|
37
|
+
'right': 'right',
|
|
38
|
+
'bottom': 'bottom',
|
|
39
|
+
'left': 'left',
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
/* --- MARGIN UTILITIES --- */
|
|
43
|
+
|
|
44
|
+
// All sides: .bh-m_{size}
|
|
45
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
46
|
+
@include generate-responsive(
|
|
47
|
+
'bh-m_#{$size-name}',
|
|
48
|
+
(
|
|
49
|
+
'margin': $size-value,
|
|
50
|
+
)
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Directional: .bh-m-{side}_{size}
|
|
55
|
+
@each $side-name, $side-value in $bh-spacing-sides {
|
|
56
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
57
|
+
@include generate-responsive(
|
|
58
|
+
'bh-m-#{$side-name}_#{$size-name}',
|
|
59
|
+
(
|
|
60
|
+
'margin-#{$side-value}': $size-value,
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Horizontal: .bh-m-x_{size}
|
|
67
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
68
|
+
@include generate-responsive(
|
|
69
|
+
'bh-m-x_#{$size-name}',
|
|
70
|
+
(
|
|
71
|
+
'margin-left': $size-value,
|
|
72
|
+
'margin-right': $size-value,
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Vertical: .bh-m-y_{size}
|
|
78
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
79
|
+
@include generate-responsive(
|
|
80
|
+
'bh-m-y_#{$size-name}',
|
|
81
|
+
(
|
|
82
|
+
'margin-top': $size-value,
|
|
83
|
+
'margin-bottom': $size-value,
|
|
84
|
+
)
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Auto margins: .bh-m_auto, .bh-m-x_auto, .bh-m-{side}_auto
|
|
89
|
+
@include generate-responsive(
|
|
90
|
+
'bh-m_auto',
|
|
91
|
+
(
|
|
92
|
+
'margin': auto,
|
|
93
|
+
)
|
|
94
|
+
);
|
|
95
|
+
@include generate-responsive(
|
|
96
|
+
'bh-m-x_auto',
|
|
97
|
+
(
|
|
98
|
+
'margin-left': auto,
|
|
99
|
+
'margin-right': auto,
|
|
100
|
+
)
|
|
101
|
+
);
|
|
102
|
+
@each $side-name, $side-value in $bh-spacing-sides {
|
|
103
|
+
@include generate-responsive(
|
|
104
|
+
'bh-m-#{$side-name}_auto',
|
|
105
|
+
(
|
|
106
|
+
'margin-#{$side-value}': auto,
|
|
107
|
+
)
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* --- PADDING UTILITIES --- */
|
|
112
|
+
|
|
113
|
+
// All sides: .bh-p_{size}
|
|
114
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
115
|
+
@include generate-responsive(
|
|
116
|
+
'bh-p_#{$size-name}',
|
|
117
|
+
(
|
|
118
|
+
'padding': $size-value,
|
|
119
|
+
)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Directional: .bh-p-{side}_{size}
|
|
124
|
+
@each $side-name, $side-value in $bh-spacing-sides {
|
|
125
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
126
|
+
@include generate-responsive(
|
|
127
|
+
'bh-p-#{$side-name}_#{$size-name}',
|
|
128
|
+
(
|
|
129
|
+
'padding-#{$side-value}': $size-value,
|
|
130
|
+
)
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Horizontal: .bh-p-x_{size}
|
|
136
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
137
|
+
@include generate-responsive(
|
|
138
|
+
'bh-p-x_#{$size-name}',
|
|
139
|
+
(
|
|
140
|
+
'padding-left': $size-value,
|
|
141
|
+
'padding-right': $size-value,
|
|
142
|
+
)
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Vertical: .bh-p-y_{size}
|
|
147
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
148
|
+
@include generate-responsive(
|
|
149
|
+
'bh-p-y_#{$size-name}',
|
|
150
|
+
(
|
|
151
|
+
'padding-top': $size-value,
|
|
152
|
+
'padding-bottom': $size-value,
|
|
153
|
+
)
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* --- GAP UTILITIES --- */
|
|
158
|
+
|
|
159
|
+
// Gap: .bh-gap_{size}
|
|
160
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
161
|
+
@include generate-responsive(
|
|
162
|
+
'bh-gap_#{$size-name}',
|
|
163
|
+
(
|
|
164
|
+
'gap': $size-value,
|
|
165
|
+
)
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Column gap: .bh-gap-x_{size}
|
|
170
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
171
|
+
@include generate-responsive(
|
|
172
|
+
'bh-gap-x_#{$size-name}',
|
|
173
|
+
(
|
|
174
|
+
'column-gap': $size-value,
|
|
175
|
+
)
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Row gap: .bh-gap-y_{size}
|
|
180
|
+
@each $size-name, $size-value in $bh-spacing-scale {
|
|
181
|
+
@include generate-responsive(
|
|
182
|
+
'bh-gap-y_#{$size-name}',
|
|
183
|
+
(
|
|
184
|
+
'row-gap': $size-value,
|
|
185
|
+
)
|
|
186
|
+
);
|
|
187
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
BELLHOP UTILITIES - TRUNCATION
|
|
3
|
+
Text overflow and truncation utilities
|
|
4
|
+
|
|
5
|
+
Dependencies:
|
|
6
|
+
- None (standalone utilities)
|
|
7
|
+
|
|
8
|
+
Generated classes:
|
|
9
|
+
- .bh-truncate (single line ellipsis)
|
|
10
|
+
- .bh-line-clamp_{n} (multi-line clamp)
|
|
11
|
+
- .bh-truncate_none (disable truncation)
|
|
12
|
+
- .bh-break-word, .bh-break-all (word breaking)
|
|
13
|
+
========================================================================== */
|
|
14
|
+
|
|
15
|
+
/* --- SINGLE LINE TRUNCATE --- */
|
|
16
|
+
|
|
17
|
+
.bh-truncate {
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
text-overflow: ellipsis;
|
|
20
|
+
white-space: nowrap;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* --- MULTI-LINE CLAMP --- */
|
|
24
|
+
/* Uses -webkit-line-clamp for cross-browser support */
|
|
25
|
+
|
|
26
|
+
.bh-line-clamp_1 {
|
|
27
|
+
display: -webkit-box;
|
|
28
|
+
-webkit-box-orient: vertical;
|
|
29
|
+
-webkit-line-clamp: 1;
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.bh-line-clamp_2 {
|
|
34
|
+
display: -webkit-box;
|
|
35
|
+
-webkit-box-orient: vertical;
|
|
36
|
+
-webkit-line-clamp: 2;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.bh-line-clamp_3 {
|
|
41
|
+
display: -webkit-box;
|
|
42
|
+
-webkit-box-orient: vertical;
|
|
43
|
+
-webkit-line-clamp: 3;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.bh-line-clamp_4 {
|
|
48
|
+
display: -webkit-box;
|
|
49
|
+
-webkit-box-orient: vertical;
|
|
50
|
+
-webkit-line-clamp: 4;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.bh-line-clamp_5 {
|
|
55
|
+
display: -webkit-box;
|
|
56
|
+
-webkit-box-orient: vertical;
|
|
57
|
+
-webkit-line-clamp: 5;
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.bh-line-clamp_6 {
|
|
62
|
+
display: -webkit-box;
|
|
63
|
+
-webkit-box-orient: vertical;
|
|
64
|
+
-webkit-line-clamp: 6;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* --- DISABLE TRUNCATION --- */
|
|
69
|
+
|
|
70
|
+
.bh-truncate_none {
|
|
71
|
+
overflow: visible;
|
|
72
|
+
text-overflow: clip;
|
|
73
|
+
white-space: normal;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* --- WORD BREAKING --- */
|
|
77
|
+
|
|
78
|
+
.bh-break-word {
|
|
79
|
+
word-break: break-word;
|
|
80
|
+
overflow-wrap: break-word;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.bh-break-all {
|
|
84
|
+
word-break: break-all;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.bh-break-normal {
|
|
88
|
+
word-break: normal;
|
|
89
|
+
overflow-wrap: normal;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.bh-break-keep {
|
|
93
|
+
word-break: keep-all;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* --- WHITE SPACE --- */
|
|
97
|
+
|
|
98
|
+
.bh-whitespace-normal {
|
|
99
|
+
white-space: normal;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.bh-whitespace-nowrap {
|
|
103
|
+
white-space: nowrap;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.bh-whitespace-pre {
|
|
107
|
+
white-space: pre;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.bh-whitespace-pre-line {
|
|
111
|
+
white-space: pre-line;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.bh-whitespace-pre-wrap {
|
|
115
|
+
white-space: pre-wrap;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* --- TEXT OVERFLOW --- */
|
|
119
|
+
|
|
120
|
+
.bh-text-ellipsis {
|
|
121
|
+
text-overflow: ellipsis;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.bh-text-clip {
|
|
125
|
+
text-overflow: clip;
|
|
126
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
BELLHOP UTILITIES - VISIBILITY
|
|
3
|
+
Responsive show/hide and accessibility utilities
|
|
4
|
+
|
|
5
|
+
Dependencies:
|
|
6
|
+
- _semantic.scss (tokens)
|
|
7
|
+
- _responsive.scss (breakpoint mixins)
|
|
8
|
+
|
|
9
|
+
Generated classes:
|
|
10
|
+
- .bh-hidden, .bh-invisible (always hidden)
|
|
11
|
+
- .bh-hide@{breakpoint} (responsive hide)
|
|
12
|
+
- .bh-show@{breakpoint} (responsive show)
|
|
13
|
+
- .bh-sr-only (screen reader only)
|
|
14
|
+
- .bh-hide@print, .bh-show@print (print utilities)
|
|
15
|
+
========================================================================== */
|
|
16
|
+
|
|
17
|
+
@use '../mixins/responsive' as *;
|
|
18
|
+
|
|
19
|
+
/* --- ALWAYS HIDDEN --- */
|
|
20
|
+
|
|
21
|
+
.bh-hidden {
|
|
22
|
+
display: none !important;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.bh-invisible {
|
|
26
|
+
visibility: hidden;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* --- RESPONSIVE HIDE --- */
|
|
30
|
+
/* Hidden at breakpoint and below (mobile-first) */
|
|
31
|
+
|
|
32
|
+
.bh-hide\@mobile {
|
|
33
|
+
@include bh-breakpoint-only('mobile') {
|
|
34
|
+
display: none !important;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.bh-hide\@tablet {
|
|
39
|
+
@include bh-breakpoint-down('tablet') {
|
|
40
|
+
display: none !important;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.bh-hide\@desktop {
|
|
45
|
+
@include bh-breakpoint-down('desktop') {
|
|
46
|
+
display: none !important;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* --- RESPONSIVE SHOW --- */
|
|
51
|
+
/* Hidden by default, shown at breakpoint and above */
|
|
52
|
+
|
|
53
|
+
.bh-show\@tablet {
|
|
54
|
+
display: none !important;
|
|
55
|
+
|
|
56
|
+
@include bh-breakpoint-up('tablet') {
|
|
57
|
+
display: block !important;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.bh-show\@desktop {
|
|
62
|
+
display: none !important;
|
|
63
|
+
|
|
64
|
+
@include bh-breakpoint-up('desktop') {
|
|
65
|
+
display: block !important;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.bh-show\@wide {
|
|
70
|
+
display: none !important;
|
|
71
|
+
|
|
72
|
+
@include bh-breakpoint-up('wide') {
|
|
73
|
+
display: block !important;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* --- SCREEN READER ONLY --- */
|
|
78
|
+
/* Accessible to screen readers but visually hidden */
|
|
79
|
+
|
|
80
|
+
.bh-sr-only {
|
|
81
|
+
position: absolute;
|
|
82
|
+
width: 1px;
|
|
83
|
+
height: 1px;
|
|
84
|
+
padding: 0;
|
|
85
|
+
margin: -1px;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
clip: rect(0, 0, 0, 0);
|
|
88
|
+
white-space: nowrap;
|
|
89
|
+
border-width: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Allow element to be focusable when navigated to via keyboard */
|
|
93
|
+
.bh-sr-only-focusable:focus,
|
|
94
|
+
.bh-sr-only-focusable:active {
|
|
95
|
+
position: static;
|
|
96
|
+
width: auto;
|
|
97
|
+
height: auto;
|
|
98
|
+
padding: inherit;
|
|
99
|
+
margin: inherit;
|
|
100
|
+
overflow: visible;
|
|
101
|
+
clip: auto;
|
|
102
|
+
white-space: normal;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* --- PRINT UTILITIES --- */
|
|
106
|
+
|
|
107
|
+
.bh-hide\@print {
|
|
108
|
+
@media print {
|
|
109
|
+
display: none !important;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.bh-show\@print {
|
|
114
|
+
@media not print {
|
|
115
|
+
display: none !important;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
BELLHOP UTILITIES
|
|
3
|
+
Public entry point for all utility classes
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
@import '@actabldesign/bellhop-styles/utilities';
|
|
7
|
+
|
|
8
|
+
Or import specific utilities:
|
|
9
|
+
@import '@actabldesign/bellhop-styles/utilities/spacing';
|
|
10
|
+
|
|
11
|
+
Available utilities:
|
|
12
|
+
|
|
13
|
+
Phase 1 - Foundation:
|
|
14
|
+
- Spacing: margin, padding, gap with responsive variants
|
|
15
|
+
- Breakpoints: CSS custom properties for JavaScript access
|
|
16
|
+
|
|
17
|
+
Phase 2 - Layout:
|
|
18
|
+
- Grid: CSS Grid layout utilities
|
|
19
|
+
- Flex: Flexbox alignment utilities
|
|
20
|
+
- Sizing: Width/height utilities
|
|
21
|
+
|
|
22
|
+
Phase 3 - Content:
|
|
23
|
+
- Visibility: Show/hide utilities with responsive and print support
|
|
24
|
+
- Truncation: Text overflow and line-clamp utilities
|
|
25
|
+
- Scrollable: Overflow and scroll behavior utilities
|
|
26
|
+
========================================================================== */
|
|
27
|
+
|
|
28
|
+
// Import design tokens first (required for utilities)
|
|
29
|
+
@use './bh-tokens/semantic';
|
|
30
|
+
|
|
31
|
+
// Import all utilities
|
|
32
|
+
@use './utilities/index';
|