@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.
Files changed (60) hide show
  1. package/README.md +105 -70
  2. package/dist/index.css +33 -0
  3. package/dist/utilities.css +5730 -0
  4. package/llms.txt +2765 -119
  5. package/package.json +6 -1
  6. package/rollup.config.js +39 -24
  7. package/src/bh-tokens/_primitives.scss +296 -0
  8. package/src/bh-tokens/_semantic.scss +158 -0
  9. package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
  10. package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
  11. package/src/bh-tokens/components/_badge.tokens.scss +61 -0
  12. package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
  13. package/src/bh-tokens/components/_button.tokens.scss +185 -0
  14. package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
  15. package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
  16. package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
  17. package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
  18. package/src/bh-tokens/components/_input.tokens.scss +86 -0
  19. package/src/bh-tokens/components/_label.tokens.scss +37 -0
  20. package/src/bh-tokens/components/_modal.tokens.scss +42 -0
  21. package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
  22. package/src/bh-tokens/components/_password.tokens.scss +63 -0
  23. package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
  24. package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
  25. package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
  26. package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
  27. package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
  28. package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
  29. package/src/bh-tokens/components/avatar.scss +288 -0
  30. package/src/bh-tokens/components/badge-dot.scss +177 -0
  31. package/src/bh-tokens/components/badge.scss +497 -0
  32. package/src/bh-tokens/components/button-icon.scss +227 -0
  33. package/src/bh-tokens/components/button.scss +640 -0
  34. package/src/bh-tokens/components/checkbox.scss +254 -0
  35. package/src/bh-tokens/components/dropdown.scss +231 -0
  36. package/src/bh-tokens/components/featured-icon.scss +219 -0
  37. package/src/bh-tokens/components/input-number.scss +147 -0
  38. package/src/bh-tokens/components/input.scss +271 -0
  39. package/src/bh-tokens/components/label.scss +176 -0
  40. package/src/bh-tokens/components/modal.scss +103 -0
  41. package/src/bh-tokens/components/pagination.scss +324 -0
  42. package/src/bh-tokens/components/password.scss +193 -0
  43. package/src/bh-tokens/components/progress-bar.scss +124 -0
  44. package/src/bh-tokens/components/progress-spinner.scss +130 -0
  45. package/src/bh-tokens/components/radiobutton.scss +193 -0
  46. package/src/bh-tokens/components/skeleton.scss +50 -0
  47. package/src/bh-tokens/components/textarea.scss +228 -0
  48. package/src/bh-tokens/components/toggle.scss +320 -0
  49. package/src/mixins/_responsive.scss +167 -0
  50. package/src/tokens/bellhop-typography.css +34 -0
  51. package/src/utilities/_breakpoints.scss +19 -0
  52. package/src/utilities/_flex.scss +228 -0
  53. package/src/utilities/_grid.scss +189 -0
  54. package/src/utilities/_index.scss +32 -0
  55. package/src/utilities/_scrollable.scss +239 -0
  56. package/src/utilities/_sizing.scss +229 -0
  57. package/src/utilities/_spacing.scss +187 -0
  58. package/src/utilities/_truncation.scss +126 -0
  59. package/src/utilities/_visibility.scss +117 -0
  60. package/src/utilities.scss +32 -0
package/llms.txt CHANGED
@@ -1,112 +1,2670 @@
1
- # Bellhop Styles - AI Documentation
1
+ This file is a merged representation of a subset of the codebase, containing specifically included files and files not matching ignore patterns, combined into a single document by Repomix.
2
+ The content has been processed where security check has been disabled.
2
3
 
3
- Shared CSS styles and design tokens documentation for AI assistants.
4
+ ================================================================
5
+ File Summary
6
+ ================================================================
4
7
 
5
- ## 📦 This Package
8
+ Purpose:
9
+ --------
10
+ This file contains a packed representation of a subset of the repository's contents that is considered the most important context.
11
+ It is designed to be easily consumable by AI systems for analysis, code review,
12
+ or other automated processes.
6
13
 
7
- **@actabldesign/bellhopos-styles** - Framework-agnostic CSS styles and design tokens
14
+ File Format:
15
+ ------------
16
+ The content is organized as follows:
17
+ 1. This summary section
18
+ 2. Repository information
19
+ 3. Directory structure
20
+ 4. Repository files (if enabled)
21
+ 5. Multiple file entries, each consisting of:
22
+ a. A separator line (================)
23
+ b. The file path (File: path/to/file)
24
+ c. Another separator line
25
+ d. The full contents of the file
26
+ e. A blank line
8
27
 
9
- - **Full Documentation**: `/llms/styles.txt` (223K, 62K tokens, 68 files)
10
- - **Version**: 0.0.1
11
- - **Framework**: None (works with Angular, React, Vue, etc.)
28
+ Usage Guidelines:
29
+ -----------------
30
+ - This file should be treated as read-only. Any changes should be made to the
31
+ original repository files, not this packed version.
32
+ - When processing this file, use the file path to distinguish
33
+ between different files in the repository.
34
+ - Be aware that this file may contain sensitive information. Handle it with
35
+ the same level of security as you would the original repository.
12
36
 
13
- ## 🎯 Quick Access
37
+ Notes:
38
+ ------
39
+ - Some files may have been excluded based on .gitignore rules and Repomix's configuration
40
+ - Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files
41
+ - Only files matching these patterns are included: **/*.ts, **/*.tsx, **/*.js, **/*.jsx, **/*.css, **/*.scss, **/*.json, **/*.md
42
+ - Files matching these patterns are excluded: **/node_modules/**, **/dist/**, **/build/**, **/coverage/**, **/.angular/**, **/.nx/**, **/storybook-static/**, **/*.lock, **/*.log, **/*.svg, **/*.png, **/*.jpg, **/*.jpeg, **/*.gif, **/*.ico, **/*.webp, **/*.woff, **/*.woff2, **/*.ttf, **/*.eot, **/*.otf, **/*.min.js, **/*.min.css, **/*.map, **/package-lock.json, **/yarn.lock, **/pnpm-lock.yaml, **/.DS_Store, **/Thumbs.db, **/llms.txt, **/llms/**
43
+ - Files matching patterns in .gitignore are excluded
44
+ - Files matching default ignore patterns are excluded
45
+ - Security check has been disabled - content may contain sensitive information
46
+ - Files are sorted by Git change count (files with more changes are at the bottom)
14
47
 
15
- ### Primary Documentation
16
48
 
17
- For complete codebase context, use:
18
- - **Root repository**: `/llms/styles.txt`
19
- - **This location**: `libs/bellhopos-styles/llms.txt` (this file)
49
+ ================================================================
50
+ Directory Structure
51
+ ================================================================
52
+ src/
53
+ base/
54
+ normalize.css
55
+ tokens/
56
+ bellhop-animations.css
57
+ bellhop-global.css
58
+ bellhop-icons.css
59
+ bellhop-layout.css
60
+ bellhop-primary-colors.css
61
+ bellhop-radius.css
62
+ bellhop-secondary-colors.css
63
+ bellhop-shadows.css
64
+ bellhop-spacing.css
65
+ bellhop-styles.css
66
+ bellhop-typography.css
67
+ colors.json
68
+ index.css
69
+ index.css
70
+ package.json
71
+ project.json
72
+ README.md
73
+ rollup.config.js
20
74
 
21
- Both point to the same comprehensive documentation.
75
+ ================================================================
76
+ Files
77
+ ================================================================
22
78
 
23
- ### Related Documentation
79
+ ================
80
+ File: src/base/normalize.css
81
+ ================
82
+ /* Base normalization for consistent rendering across frameworks */
24
83
 
25
- - **Angular Components**: `/llms/angular.txt`
26
- - **React Components**: `/llms/react.txt`
27
- - **Assets & Icons**: `/llms/assets.txt`
84
+ /* Ensure consistent font rendering */
85
+ * {
86
+ -webkit-font-smoothing: antialiased;
87
+ -moz-osx-font-smoothing: grayscale;
88
+ text-rendering: optimizeLegibility;
89
+ }
90
+
91
+ /* Set default font family with proper fallbacks */
92
+ body {
93
+ font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
94
+ }
95
+
96
+ /* Ensure consistent box sizing */
97
+ *,
98
+ *::before,
99
+ *::after {
100
+ box-sizing: border-box;
101
+ }
102
+
103
+ /* Remove default margins */
104
+ body,
105
+ h1,
106
+ h2,
107
+ h3,
108
+ h4,
109
+ h5,
110
+ h6,
111
+ p,
112
+ figure,
113
+ blockquote,
114
+ dl,
115
+ dd {
116
+ margin: 0;
117
+ }
118
+
119
+ /* Set core root defaults */
120
+ html {
121
+ font-size: 16px; /* Explicit base font size for consistent rem calculations */
122
+ }
123
+
124
+ html:focus-within {
125
+ scroll-behavior: smooth;
126
+ }
127
+
128
+ /* Set core body defaults */
129
+ body {
130
+ min-height: 100vh;
131
+ text-rendering: optimizeSpeed;
132
+ line-height: 1.5;
133
+ }
134
+
135
+ /* Make images easier to work with */
136
+ img,
137
+ picture,
138
+ video,
139
+ canvas,
140
+ svg {
141
+ display: block;
142
+ max-width: 100%;
143
+ }
144
+
145
+ /* Inherit fonts for inputs and buttons */
146
+ input,
147
+ button,
148
+ textarea,
149
+ select {
150
+ font: inherit;
151
+ }
152
+
153
+ /* Remove native browser focus outlines for form elements */
154
+ /* Components should provide their own focus styling */
155
+ input,
156
+ textarea,
157
+ button,
158
+ select {
159
+ outline: none;
160
+ box-shadow: none;
161
+ }
162
+
163
+ input:focus,
164
+ textarea:focus,
165
+ button:focus,
166
+ select:focus {
167
+ outline: none;
168
+ border: none;
169
+ box-shadow: none;
170
+ }
171
+
172
+ /* Remove all animations, transitions and smooth scroll for people that prefer not to see them */
173
+ @media (prefers-reduced-motion: reduce) {
174
+ html:focus-within {
175
+ scroll-behavior: auto;
176
+ }
177
+
178
+ *,
179
+ *::before,
180
+ *::after {
181
+ animation-duration: 0.01ms !important;
182
+ animation-iteration-count: 1 !important;
183
+ transition-duration: 0.01ms !important;
184
+ scroll-behavior: auto !important;
185
+ }
186
+ }
187
+
188
+ ================
189
+ File: src/tokens/bellhop-animations.css
190
+ ================
191
+ /* Bellhop Animation System */
192
+
193
+ /* Animation Variables */
194
+ :root {
195
+ /* Timing */
196
+ --animation-duration-fast: 150ms;
197
+ --animation-duration-normal: 200ms;
198
+ --animation-duration-slow: 300ms;
199
+
200
+ /* Easing Functions */
201
+ --animation-ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
202
+ --animation-ease-exit: cubic-bezier(0.4, 0, 1, 1);
203
+ --animation-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
204
+ --animation-ease-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
205
+
206
+ /* Transform Values */
207
+ --animation-slide-distance: 8px;
208
+ --animation-scale-start: 0.96;
209
+ --animation-scale-end: 1;
210
+ }
211
+
212
+ /* Dropdown Animations */
213
+ .animate-dropdown-enter {
214
+ animation: dropdownEnter var(--animation-duration-normal)
215
+ var(--animation-ease-enter) forwards;
216
+ }
217
+
218
+ .animate-dropdown-exit {
219
+ animation: dropdownExit var(--animation-duration-fast)
220
+ var(--animation-ease-exit) forwards;
221
+ }
222
+
223
+ @keyframes dropdownEnter {
224
+ 0% {
225
+ opacity: 0;
226
+ transform: scale(var(--animation-scale-start));
227
+ }
228
+ 100% {
229
+ opacity: 1;
230
+ transform: scale(var(--animation-scale-end));
231
+ }
232
+ }
233
+
234
+ @keyframes dropdownExit {
235
+ 0% {
236
+ opacity: 1;
237
+ transform: translateY(0) scale(var(--animation-scale-end));
238
+ }
239
+ 100% {
240
+ opacity: 0;
241
+ transform: translateY(calc(-1 * var(--animation-slide-distance)))
242
+ scale(var(--animation-scale-start));
243
+ }
244
+ }
245
+
246
+ /* Modal Animations */
247
+ .animate-modal-enter {
248
+ animation: modalEnter var(--animation-duration-normal)
249
+ var(--animation-ease-enter) forwards;
250
+ }
251
+
252
+ .animate-modal-exit {
253
+ animation: modalExit var(--animation-duration-fast) var(--animation-ease-exit)
254
+ forwards;
255
+ }
256
+
257
+ @keyframes modalEnter {
258
+ 0% {
259
+ opacity: 0;
260
+ transform: translateY(16px) scale(var(--animation-scale-start));
261
+ }
262
+ 100% {
263
+ opacity: 1;
264
+ transform: translateY(0) scale(var(--animation-scale-end));
265
+ }
266
+ }
267
+
268
+ @keyframes modalExit {
269
+ 0% {
270
+ opacity: 1;
271
+ transform: translateY(0) scale(var(--animation-scale-end));
272
+ }
273
+ 100% {
274
+ opacity: 0;
275
+ transform: translateY(16px) scale(var(--animation-scale-start));
276
+ }
277
+ }
278
+
279
+ /* Chevron Icon Animations */
280
+ .chevron-icon-rotate {
281
+ transition: transform var(--animation-duration-fast)
282
+ var(--animation-ease-smooth);
283
+ }
284
+
285
+ .chevron-icon-rotate.expanded {
286
+ transform: rotate(180deg);
287
+ }
288
+
289
+ /* Alternative with direct elements */
290
+ .chevron-expand {
291
+ display: inline-flex;
292
+ transition: transform var(--animation-duration-fast)
293
+ var(--animation-ease-smooth);
294
+ }
295
+
296
+ .chevron-expand.open {
297
+ transform: rotate(180deg);
298
+ }
299
+
300
+ /* Toast Animations */
301
+ .animate-toast-enter {
302
+ animation: toastEnter var(--animation-duration-normal)
303
+ var(--animation-ease-enter) forwards;
304
+ }
305
+
306
+ .animate-toast-exit {
307
+ animation: toastExit var(--animation-duration-fast) var(--animation-ease-exit)
308
+ forwards;
309
+ }
310
+
311
+ @keyframes toastEnter {
312
+ 0% {
313
+ opacity: 0;
314
+ transform: translateX(100%) scale(var(--animation-scale-start));
315
+ }
316
+ 100% {
317
+ opacity: 1;
318
+ transform: translateX(0) scale(var(--animation-scale-end));
319
+ }
320
+ }
321
+
322
+ @keyframes toastExit {
323
+ 0% {
324
+ opacity: 1;
325
+ transform: translateX(0) scale(var(--animation-scale-end));
326
+ }
327
+ 100% {
328
+ opacity: 0;
329
+ transform: translateX(100%) scale(var(--animation-scale-start));
330
+ }
331
+ }
332
+
333
+ /* Fade Animations */
334
+ .animate-fade-enter {
335
+ animation: fadeEnter var(--animation-duration-normal)
336
+ var(--animation-ease-enter) forwards;
337
+ }
338
+
339
+ .animate-fade-exit {
340
+ animation: fadeExit var(--animation-duration-fast) var(--animation-ease-exit)
341
+ forwards;
342
+ }
343
+
344
+ @keyframes fadeEnter {
345
+ 0% {
346
+ opacity: 0;
347
+ }
348
+ 100% {
349
+ opacity: 1;
350
+ }
351
+ }
352
+
353
+ @keyframes fadeExit {
354
+ 0% {
355
+ opacity: 1;
356
+ }
357
+ 100% {
358
+ opacity: 0;
359
+ }
360
+ }
361
+
362
+ /* Scale Animations */
363
+ .animate-scale-enter {
364
+ animation: scaleEnter var(--animation-duration-normal)
365
+ var(--animation-ease-enter) forwards;
366
+ }
367
+
368
+ .animate-scale-exit {
369
+ animation: scaleExit var(--animation-duration-fast) var(--animation-ease-exit)
370
+ forwards;
371
+ }
372
+
373
+ @keyframes scaleEnter {
374
+ 0% {
375
+ opacity: 0;
376
+ transform: scale(var(--animation-scale-start));
377
+ }
378
+ 100% {
379
+ opacity: 1;
380
+ transform: scale(var(--animation-scale-end));
381
+ }
382
+ }
383
+
384
+ @keyframes scaleExit {
385
+ 0% {
386
+ opacity: 1;
387
+ transform: scale(var(--animation-scale-end));
388
+ }
389
+ 100% {
390
+ opacity: 0;
391
+ transform: scale(var(--animation-scale-start));
392
+ }
393
+ }
394
+
395
+ /* Slide Animations */
396
+ .animate-slide-up-enter {
397
+ animation: slideUpEnter var(--animation-duration-normal)
398
+ var(--animation-ease-enter) forwards;
399
+ }
400
+
401
+ .animate-slide-up-exit {
402
+ animation: slideUpExit var(--animation-duration-fast)
403
+ var(--animation-ease-exit) forwards;
404
+ }
405
+
406
+ .animate-slide-down-enter {
407
+ animation: slideDownEnter var(--animation-duration-normal)
408
+ var(--animation-ease-enter) forwards;
409
+ }
410
+
411
+ .animate-slide-down-exit {
412
+ animation: slideDownExit var(--animation-duration-fast)
413
+ var(--animation-ease-exit) forwards;
414
+ }
415
+
416
+ @keyframes slideUpEnter {
417
+ 0% {
418
+ opacity: 0;
419
+ transform: translateY(var(--animation-slide-distance));
420
+ }
421
+ 100% {
422
+ opacity: 1;
423
+ transform: translateY(0);
424
+ }
425
+ }
426
+
427
+ @keyframes slideUpExit {
428
+ 0% {
429
+ opacity: 1;
430
+ transform: translateY(0);
431
+ }
432
+ 100% {
433
+ opacity: 0;
434
+ transform: translateY(var(--animation-slide-distance));
435
+ }
436
+ }
437
+
438
+ @keyframes slideDownEnter {
439
+ 0% {
440
+ opacity: 0;
441
+ transform: translateY(calc(-1 * var(--animation-slide-distance)));
442
+ }
443
+ 100% {
444
+ opacity: 1;
445
+ transform: translateY(0);
446
+ }
447
+ }
448
+
449
+ @keyframes slideDownExit {
450
+ 0% {
451
+ opacity: 1;
452
+ transform: translateY(0);
453
+ }
454
+ 100% {
455
+ opacity: 0;
456
+ transform: translateY(calc(-1 * var(--animation-slide-distance)));
457
+ }
458
+ }
459
+
460
+ /* Base Animation Classes */
461
+ .animate-base {
462
+ transform-origin: top center;
463
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
464
+ }
465
+
466
+ .animate-base-modal {
467
+ transform-origin: center center;
468
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
469
+ }
470
+
471
+ .animate-base-toast {
472
+ transform-origin: right center;
473
+ transition: all var(--animation-duration-normal) var(--animation-ease-smooth);
474
+ }
475
+
476
+ /* Dismiss Animations */
477
+ .animate-dismiss {
478
+ animation: dismiss var(--animation-duration-normal) var(--animation-ease-exit)
479
+ forwards;
480
+ }
481
+
482
+ @keyframes dismiss {
483
+ 0% {
484
+ opacity: 1;
485
+ transform: scale(1);
486
+ }
487
+ 60% {
488
+ opacity: 0.3;
489
+ transform: scale(0.94);
490
+ }
491
+ 100% {
492
+ opacity: 0;
493
+ transform: scale(0.88);
494
+ }
495
+ }
496
+
497
+ /* Chart Animations */
498
+ .animate-chart-segment-enter {
499
+ animation: chartSegmentEnter 600ms var(--animation-ease-enter) forwards;
500
+ }
501
+
502
+ .animate-chart-segment-hover {
503
+ transition: all var(--animation-duration-fast) var(--animation-ease-smooth);
504
+ }
505
+
506
+ .animate-chart-segment-hover:hover {
507
+ opacity: 0.85;
508
+ transform: scale(1.02);
509
+ filter: brightness(1.1);
510
+ }
511
+
512
+ @keyframes chartSegmentEnter {
513
+ 0% {
514
+ opacity: 0;
515
+ transform: scale(0.2) rotate(-45deg);
516
+ }
517
+ 25% {
518
+ opacity: 0.3;
519
+ transform: scale(0.5) rotate(-22deg);
520
+ }
521
+ 50% {
522
+ opacity: 0.6;
523
+ transform: scale(0.8) rotate(-8deg);
524
+ }
525
+ 75% {
526
+ opacity: 0.9;
527
+ transform: scale(1.05) rotate(2deg);
528
+ }
529
+ 100% {
530
+ opacity: 1;
531
+ transform: scale(1) rotate(0deg);
532
+ }
533
+ }
534
+
535
+ /* Pie Chart Segment Animation */
536
+ .animate-pie-segment-enter {
537
+ animation: pieSegmentEnter 700ms var(--animation-ease-enter) forwards;
538
+ }
539
+
540
+ @keyframes pieSegmentEnter {
541
+ 0% {
542
+ opacity: 0;
543
+ transform: scale(0.3) rotate(-90deg);
544
+ }
545
+ 15% {
546
+ opacity: 0.2;
547
+ transform: scale(0.4) rotate(-60deg);
548
+ }
549
+ 30% {
550
+ opacity: 0.5;
551
+ transform: scale(0.6) rotate(-30deg);
552
+ }
553
+ 60% {
554
+ opacity: 0.8;
555
+ transform: scale(0.95) rotate(-5deg);
556
+ }
557
+ 80% {
558
+ opacity: 0.95;
559
+ transform: scale(1.02) rotate(2deg);
560
+ }
561
+ 100% {
562
+ opacity: 1;
563
+ transform: scale(1) rotate(0deg);
564
+ }
565
+ }
566
+
567
+ /* Utility Classes */
568
+ .animate-duration-fast {
569
+ animation-duration: var(--animation-duration-fast) !important;
570
+ }
571
+
572
+ .animate-duration-normal {
573
+ animation-duration: var(--animation-duration-normal) !important;
574
+ }
575
+
576
+ .animate-duration-slow {
577
+ animation-duration: var(--animation-duration-slow) !important;
578
+ }
579
+
580
+ .animate-ease-bounce {
581
+ animation-timing-function: var(--animation-ease-bounce) !important;
582
+ }
583
+
584
+ ================
585
+ File: src/tokens/bellhop-global.css
586
+ ================
587
+ /* ==========================================================================
588
+ BELLHOP GLOBAL STYLES
589
+ ========================================================================== */
590
+
591
+ /* Import all Bellhop design system styles */
592
+ @import url('./bellhop-primary-colors.css');
593
+ @import url('./bellhop-secondary-colors.css');
594
+ @import url('./bellhop-spacing.css');
595
+ @import url('./bellhop-radius.css');
596
+ @import url('./bellhop-shadows.css');
597
+ @import url('./bellhop-typography.css');
598
+ @import url('./bellhop-icons.css');
28
599
 
29
- ## 📚 What's Included
600
+ /* ==========================================================================
601
+ FOCUS MANAGEMENT
602
+ ========================================================================== */
30
603
 
31
- ### Design Tokens
604
+ /* 1. Reset the outline for all focusable elements when a mouse is used. */
605
+ *:focus:not(:focus-visible) {
606
+ outline: none;
607
+ }
32
608
 
33
- **Colors**:
34
- - Primary colors: `--color-primary-50` to `--color-primary-900`
35
- - Neutral colors: `--color-neutral-50` to `--color-neutral-900`
36
- - Semantic colors: Success, Warning, Error, Info (50-900 scale)
37
- - Special: `--color-white`, `--color-black`
609
+ /* 2. Apply a custom outline that will only appear during keyboard navigation. */
610
+ *:focus-visible {
611
+ outline: 2px solid var(--color-brand-500); /* Using bellhop brand color */
612
+ outline-offset: 2px;
613
+ }
38
614
 
39
- **Typography**:
40
- - Font families: `--font-inter`
41
- - Font sizes: `--text-xs-size` to `--text-9xl-size`
42
- - Font weights: `--font-light` to `--font-bold`
43
- - Line heights: Corresponding to each size
615
+ /* ==========================================================================
616
+ ACCESSIBILITY IMPROVEMENTS
617
+ ========================================================================== */
44
618
 
45
- **Spacing**:
46
- - Scale: `--spacing-0-5` (0.125rem) to `--spacing-96` (24rem)
47
- - Based on 0.25rem (4px) increments
48
- - Consistent across all components
619
+ /* Ensure focus is visible on interactive elements */
620
+ button:focus-visible,
621
+ input:focus-visible,
622
+ select:focus-visible,
623
+ textarea:focus-visible,
624
+ a:focus-visible,
625
+ [tabindex]:focus-visible {
626
+ outline: 2px solid var(--color-brand-500);
627
+ outline-offset: 2px;
628
+ }
49
629
 
50
- **Shadows**:
51
- - Variants: `--shadow-xs`, `--shadow-sm`, `--shadow-md`, `--shadow-lg`, `--shadow-xl`
52
- - Consistent elevation system
630
+ /* ==========================================================================
631
+ UTILITY CLASSES
632
+ ========================================================================== */
53
633
 
54
- **Border Radius**:
55
- - Tokens: `--radius-sm`, `--radius-md`, `--radius-lg`, `--radius-xl`, `--radius-full`
56
- - Range: 0.125rem to 9999px (full circle)
634
+ /* Prevent text selection */
635
+ .no-select {
636
+ user-select: none;
637
+ -webkit-user-select: none;
638
+ -moz-user-select: none;
639
+ -ms-user-select: none;
640
+ }
57
641
 
58
- **Animations**:
59
- - Transitions: `--transition-fast`, `--transition-base`, `--transition-slow`
60
- - Easing: `--ease-in`, `--ease-out`, `--ease-in-out`
642
+ /* Screen reader only content */
643
+ .sr-only {
644
+ position: absolute;
645
+ width: 1px;
646
+ height: 1px;
647
+ padding: 0;
648
+ margin: -1px;
649
+ overflow: hidden;
650
+ clip: rect(0, 0, 0, 0);
651
+ white-space: nowrap;
652
+ border: 0;
653
+ }
61
654
 
62
- ### Component Styles
655
+ /* ==========================================================================
656
+ CONTENT LAYOUT UTILITIES
657
+ ========================================================================== */
63
658
 
64
- Complete CSS for 40+ components:
65
- - Layout: Appbar, Sidebar, PageNavigation, Container
66
- - Forms: Input, Textarea, Checkbox, RadioButton, Toggle, Dropdown
67
- - Data Display: Badge, Avatar, Notification, EmptyState
68
- - Data Visualization: Charts, tooltips, legends
69
- - Pickers: Date, Month, Range pickers
70
- - Interactive: Buttons, Popovers, Tooltips
659
+ /* Content Container - Main flex container for page navigation and content area */
660
+ .bellhop-content-container {
661
+ display: flex;
662
+ flex: 1;
663
+ overflow: hidden;
664
+ background-color: var(--color-white);
665
+ }
71
666
 
72
- ### Base Styles
667
+ /* Content Area - Scrollable main content region */
668
+ .bellhop-content-area {
669
+ flex: 1;
670
+ overflow-y: auto;
671
+ overflow-x: hidden;
672
+ background-color: var(--color-white);
673
+ }
73
674
 
74
- - **normalize.css**: CSS reset and normalization
75
- - **Global styles**: Body, typography, links
76
- - **Layout utilities**: Flexbox, grid helpers
675
+ /* Content Wrapper - Inner content container with padding and max-width */
676
+ .bellhop-content-wrapper {
677
+ padding: var(--spacing-4xl);
678
+ /*max-width: 1200px;*/
679
+ margin: 0 auto;
680
+ font-family: var(--font-inter);
681
+ }
682
+
683
+ /* Content Wrapper Variants */
684
+ .bellhop-content-wrapper-sm {
685
+ padding: var(--spacing-2xl);
686
+ /*max-width: 800px;*/
687
+ margin: 0 auto;
688
+ font-family: var(--font-inter);
689
+ }
77
690
 
78
- ## 🚀 Usage
691
+ .bellhop-content-wrapper-lg {
692
+ padding: var(--spacing-5xl);
693
+ /*max-width: 1400px;*/
694
+ margin: 0 auto;
695
+ font-family: var(--font-inter);
696
+ }
697
+
698
+ .bellhop-content-wrapper-full {
699
+ padding: var(--spacing-4xl);
700
+ max-width: none;
701
+ margin: 0;
702
+ font-family: var(--font-inter);
703
+ }
704
+
705
+ /* Content Typography - Standard content headings and text */
706
+ .bellhop-content-wrapper h1,
707
+ .bellhop-content-wrapper-sm h1,
708
+ .bellhop-content-wrapper-lg h1,
709
+ .bellhop-content-wrapper-full h1 {
710
+ font-size: var(--text-3xl-size);
711
+ font-weight: var(--weight-bold);
712
+ line-height: var(--text-3xl-line);
713
+ color: var(--color-neutral-800);
714
+ margin-bottom: var(--spacing-md);
715
+ }
716
+
717
+ .bellhop-content-wrapper p,
718
+ .bellhop-content-wrapper-sm p,
719
+ .bellhop-content-wrapper-lg p,
720
+ .bellhop-content-wrapper-full p {
721
+ font-size: var(--text-md-size);
722
+ font-weight: var(--weight-regular);
723
+ line-height: var(--text-md-line);
724
+ color: var(--color-neutral-600);
725
+ margin-bottom: var(--spacing-2xl);
726
+ }
727
+
728
+ /* Responsive adjustments for content wrappers */
729
+ @media (max-width: 768px) {
730
+ .bellhop-content-wrapper,
731
+ .bellhop-content-wrapper-sm,
732
+ .bellhop-content-wrapper-lg,
733
+ .bellhop-content-wrapper-full {
734
+ padding: var(--spacing-xl);
735
+ }
736
+
737
+ .bellhop-content-wrapper h1,
738
+ .bellhop-content-wrapper-sm h1,
739
+ .bellhop-content-wrapper-lg h1,
740
+ .bellhop-content-wrapper-full h1 {
741
+ font-size: var(--text-2xl-size);
742
+ line-height: var(--text-2xl-line);
743
+ }
744
+ }
79
745
 
80
- ### Installation
746
+ @media (max-width: 480px) {
747
+ .bellhop-content-wrapper,
748
+ .bellhop-content-wrapper-sm,
749
+ .bellhop-content-wrapper-lg,
750
+ .bellhop-content-wrapper-full {
751
+ padding: var(--spacing-md);
752
+ }
753
+
754
+ .bellhop-content-wrapper h1,
755
+ .bellhop-content-wrapper-sm h1,
756
+ .bellhop-content-wrapper-lg h1,
757
+ .bellhop-content-wrapper-full h1 {
758
+ font-size: var(--text-xl-size);
759
+ line-height: var(--text-xl-line);
760
+ }
761
+ }
762
+
763
+ ================
764
+ File: src/tokens/bellhop-icons.css
765
+ ================
766
+ /* ============================================
767
+ Bellhop Icon System
768
+ ============================================ */
769
+
770
+ :root {
771
+ /* Icon Sizes */
772
+ --icon-size-xs: 16px;
773
+ --icon-size-sm: 18px;
774
+ --icon-size-md: 20px;
775
+ --icon-size-lg: 24px;
776
+ --icon-size-xl: 28px;
777
+ --icon-size-2xl: 32px;
778
+ }
779
+
780
+ /* Base Material Symbols Configuration */
781
+ .material-symbols-outlined,
782
+ .material-icons,
783
+ .material-icons-outlined {
784
+ font-family: 'Material Symbols Outlined';
785
+ font-weight: normal;
786
+ font-style: normal;
787
+ font-size: var(--icon-size-md);
788
+ line-height: 1;
789
+ display: inline-block;
790
+ vertical-align: middle;
791
+ color: var(--color-neutral-500);
792
+ -webkit-font-smoothing: antialiased;
793
+ font-feature-settings: 'liga';
794
+ }
795
+
796
+ /* Icon Size Classes */
797
+ .icon-xs {
798
+ font-size: var(--icon-size-xs);
799
+ }
800
+ .icon-sm {
801
+ font-size: var(--icon-size-sm);
802
+ }
803
+ .icon-md {
804
+ font-size: var(--icon-size-md);
805
+ }
806
+ .icon-lg {
807
+ font-size: var(--icon-size-lg);
808
+ }
809
+ .icon-xl {
810
+ font-size: var(--icon-size-xl);
811
+ }
812
+ .icon-2xl {
813
+ font-size: var(--icon-size-2xl);
814
+ }
815
+
816
+ /* Icon Color Classes */
817
+ .icon-primary {
818
+ color: var(--color-brand-500);
819
+ }
820
+ .icon-secondary {
821
+ color: var(--color-neutral-500);
822
+ }
823
+ .icon-success {
824
+ color: var(--color-success-500);
825
+ }
826
+ .icon-error {
827
+ color: var(--color-error-500);
828
+ }
829
+ .icon-warning {
830
+ color: var(--color-warning-500);
831
+ }
832
+
833
+ /* Rotating Icons */
834
+ @keyframes icon-spin {
835
+ to {
836
+ transform: rotate(360deg);
837
+ }
838
+ }
839
+
840
+ .icon-spin {
841
+ animation: icon-spin 1s linear infinite;
842
+ }
843
+
844
+ ================
845
+ File: src/tokens/bellhop-layout.css
846
+ ================
847
+ /* ==========================================================================
848
+ BELLHOPOS LAYOUT SYSTEM
849
+ Essential layout classes for dashboard applications
850
+ ========================================================================== */
851
+
852
+ /* Main App Layout */
853
+ .app-layout {
854
+ display: grid;
855
+ grid-template-columns: auto 1fr;
856
+ height: 100vh;
857
+ overflow: hidden;
858
+ font-family: var(--font-inter);
859
+ }
860
+
861
+ /* Sidebar - Always visible, spans full height */
862
+ .app-sidebar {
863
+ background-color: var(--color-white);
864
+ border-right: 1px solid var(--color-neutral-100);
865
+ overflow-y: auto;
866
+ overflow-x: hidden;
867
+ z-index: 100;
868
+ width: 64px;
869
+ min-width: 64px;
870
+ height: 100vh;
871
+ }
872
+
873
+ /* Main Content Area */
874
+ .app-main {
875
+ display: flex;
876
+ flex-direction: column;
877
+ height: 100vh;
878
+ overflow: hidden;
879
+ }
880
+
881
+ /* Header */
882
+ .app-header {
883
+ background-color: var(--color-white);
884
+ z-index: 1000;
885
+ flex-shrink: 0;
886
+ }
887
+
888
+ /* Page Navigation Container - Smooth motion */
889
+ .page-nav {
890
+ flex-shrink: 0;
891
+ width: 280px;
892
+ overflow: hidden;
893
+ transition: all 0.4s cubic-bezier(0.08, 0.52, 0.52, 1);
894
+ transform: translateX(0);
895
+ opacity: 1;
896
+ }
897
+
898
+ .page-nav.collapsed {
899
+ width: 0;
900
+ transform: translateX(-20px);
901
+ opacity: 0;
902
+ }
903
+
904
+ /* Sample Content Grid */
905
+ .content-grid {
906
+ display: grid;
907
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
908
+ gap: var(--spacing-2xl);
909
+ margin-top: var(--spacing-3xl);
910
+ }
911
+
912
+ .content-card {
913
+ background-color: var(--color-white);
914
+ border-radius: var(--radius-lg);
915
+ padding: var(--spacing-2xl);
916
+ box-shadow: var(--shadow-sm);
917
+ transition: all 0.2s ease;
918
+ border: 1px solid var(--color-neutral-100);
919
+ }
920
+
921
+ .content-card:hover {
922
+ box-shadow: var(--shadow-md);
923
+ transform: translateY(-1px);
924
+ }
925
+
926
+ .content-card h3 {
927
+ font-size: var(--text-lg-size);
928
+ font-weight: var(--weight-semibold);
929
+ color: var(--color-neutral-800);
930
+ margin-bottom: var(--spacing-sm);
931
+ }
932
+
933
+ .content-card p {
934
+ font-size: var(--text-sm-size);
935
+ color: var(--color-neutral-500);
936
+ line-height: var(--text-sm-line);
937
+ margin-bottom: 0;
938
+ }
939
+
940
+ /* Responsive Design */
941
+ @media (max-width: 1024px) {
942
+ .page-nav {
943
+ display: none;
944
+ }
945
+
946
+ .content-grid {
947
+ grid-template-columns: 1fr;
948
+ gap: var(--spacing-lg);
949
+ }
950
+ }
951
+
952
+ @media (max-width: 768px) {
953
+ .app-sidebar {
954
+ position: fixed;
955
+ left: 0;
956
+ top: 0;
957
+ height: 100vh;
958
+ z-index: 1001;
959
+ box-shadow: var(--shadow-lg);
960
+ }
961
+
962
+ .app-main {
963
+ margin-left: 0;
964
+ }
965
+ }
966
+
967
+ @media (max-width: 480px) {
968
+ .content-card {
969
+ padding: var(--spacing-lg);
970
+ }
971
+
972
+ .content-grid {
973
+ gap: var(--spacing-md);
974
+ }
975
+ }
976
+
977
+ /* Scrollbar Styling */
978
+ .app-sidebar::-webkit-scrollbar,
979
+ .page-nav::-webkit-scrollbar,
980
+ .bellhop-content-area::-webkit-scrollbar {
981
+ width: 6px;
982
+ }
983
+
984
+ .app-sidebar::-webkit-scrollbar-track,
985
+ .page-nav::-webkit-scrollbar-track,
986
+ .bellhop-content-area::-webkit-scrollbar-track {
987
+ background: var(--color-neutral-50);
988
+ }
989
+
990
+ .app-sidebar::-webkit-scrollbar-thumb,
991
+ .page-nav::-webkit-scrollbar-thumb,
992
+ .bellhop-content-area::-webkit-scrollbar-thumb {
993
+ background: var(--color-neutral-300);
994
+ border-radius: 3px;
995
+ }
996
+
997
+ .app-sidebar::-webkit-scrollbar-thumb:hover,
998
+ .page-nav::-webkit-scrollbar-thumb:hover,
999
+ .bellhop-content-area::-webkit-scrollbar-thumb:hover {
1000
+ background: var(--color-neutral-400);
1001
+ }
1002
+
1003
+ /* Focus styles for accessibility */
1004
+ .content-card:focus-visible {
1005
+ outline: 2px solid var(--color-brand-500);
1006
+ outline-offset: 2px;
1007
+ }
1008
+
1009
+ /* Additional utility classes for dashboard layouts */
1010
+ .dashboard-container {
1011
+ padding: var(--spacing-2xl);
1012
+ max-width: 1200px;
1013
+ margin: 0 auto;
1014
+ }
1015
+
1016
+ .dashboard-section {
1017
+ margin-bottom: var(--spacing-3xl);
1018
+ }
1019
+
1020
+ .dashboard-header {
1021
+ display: flex;
1022
+ align-items: center;
1023
+ justify-content: space-between;
1024
+ margin-bottom: var(--spacing-xl);
1025
+ }
1026
+
1027
+ .dashboard-title {
1028
+ font-size: var(--text-2xl-size);
1029
+ font-weight: var(--weight-bold);
1030
+ color: var(--color-neutral-800);
1031
+ margin: 0;
1032
+ }
1033
+
1034
+ /* Stats grid for dashboard metrics */
1035
+ .stats-grid {
1036
+ display: grid;
1037
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1038
+ gap: var(--spacing-lg);
1039
+ margin-bottom: var(--spacing-2xl);
1040
+ }
1041
+
1042
+ .stat-card {
1043
+ background: var(--color-white);
1044
+ padding: var(--spacing-xl);
1045
+ border-radius: var(--radius-lg);
1046
+ border: 1px solid var(--color-neutral-200);
1047
+ text-align: center;
1048
+ }
1049
+
1050
+ .stat-value {
1051
+ font-size: var(--text-3xl-size);
1052
+ font-weight: var(--weight-bold);
1053
+ color: var(--color-brand-600);
1054
+ display: block;
1055
+ margin-bottom: var(--spacing-xs);
1056
+ }
1057
+
1058
+ .stat-label {
1059
+ font-size: var(--text-sm-size);
1060
+ color: var(--color-neutral-600);
1061
+ font-weight: var(--weight-medium);
1062
+ }
1063
+
1064
+ ================
1065
+ File: src/tokens/bellhop-primary-colors.css
1066
+ ================
1067
+ :root {
1068
+ /* Base */
1069
+ --color-white: hsl(0, 0%, 100%);
1070
+ --color-black: hsl(0, 0%, 0%);
1071
+ --color-transparent: hsla(0, 0%, 100%, 0.0);
1072
+
1073
+ /* Neutral (from gray in colors.json) */
1074
+ --color-neutral-25: hsl(240, 20%, 99%);
1075
+ --color-neutral-50: hsl(240, 20%, 98%);
1076
+ --color-neutral-100: hsl(220, 23%, 95%);
1077
+ --color-neutral-200: hsl(227, 25%, 89%);
1078
+ --color-neutral-300: hsl(224, 24%, 78%);
1079
+ --color-neutral-400: hsl(226, 24%, 59%);
1080
+ --color-neutral-500: hsl(226, 24%, 48%);
1081
+ --color-neutral-600: hsl(226, 24%, 38%);
1082
+ --color-neutral-700: hsl(227, 24%, 33%);
1083
+ --color-neutral-800: hsl(226, 24%, 25%);
1084
+ --color-neutral-900: hsl(233, 33%, 10%);
1085
+ --color-neutral-950: hsl(231, 32%, 8%);
1086
+
1087
+ /* Brand (from indigo in colors.json) */
1088
+ --color-brand-25: hsl(220, 82%, 98%);
1089
+ --color-brand-50: hsl(222, 87%, 97%);
1090
+ --color-brand-100: hsl(221, 94%, 94%);
1091
+ --color-brand-200: hsl(222, 92%, 86%);
1092
+ --color-brand-300: hsl(224, 95%, 77%);
1093
+ --color-brand-400: hsl(224, 94%, 72%);
1094
+ --color-brand-500: hsl(230, 67%, 59%);
1095
+ --color-brand-600: hsl(230, 69%, 48%);
1096
+ --color-brand-700: hsl(230, 74%, 38%);
1097
+ --color-brand-800: hsl(237, 69%, 34%);
1098
+ --color-brand-900: hsl(237, 69%, 28%);
1099
+ --color-brand-950: hsl(237, 61%, 20%);
1100
+
1101
+ /* Accent (guava/rose) */
1102
+ --color-accent-25: hsl(7, 60%, 97%);
1103
+ --color-accent-50: hsl(9, 62%, 96%);
1104
+ --color-accent-100: hsl(2, 57%, 91%);
1105
+ --color-accent-200: hsl(1, 58%, 85%);
1106
+ --color-accent-300: hsl(356, 59%, 79%);
1107
+ --color-accent-400: hsl(357, 61%, 72%);
1108
+ --color-accent-500: hsl(356, 67%, 66%);
1109
+ --color-accent-600: hsl(353, 58%, 58%);
1110
+ --color-accent-700: hsl(353, 52%, 51%);
1111
+ --color-accent-800: hsl(350, 58%, 41%);
1112
+ --color-accent-900: hsl(350, 56%, 28%);
1113
+
1114
+ /* Error */
1115
+ --color-error-25: hsl(12, 100%, 99%);
1116
+ --color-error-50: hsl(13, 90%, 96%);
1117
+ --color-error-100: hsl(0, 81%, 94%);
1118
+ --color-error-200: hsl(0, 84%, 90%);
1119
+ --color-error-300: hsl(0, 83%, 82%);
1120
+ --color-error-400: hsl(0, 91%, 71%);
1121
+ --color-error-500: hsl(1, 84%, 63%);
1122
+ --color-error-600: hsl(7, 75%, 48%);
1123
+ --color-error-700: hsl(7, 78%, 42%);
1124
+ --color-error-800: hsl(0, 62%, 37%);
1125
+ --color-error-900: hsl(3, 64%, 27%);
1126
+ --color-error-950: hsl(8, 75%, 19%);
1127
+
1128
+ /* Warning */
1129
+ --color-warning-25: hsl(42, 100%, 98%);
1130
+ --color-warning-50: hsl(45, 100%, 96%);
1131
+ --color-warning-100: hsl(45, 96%, 89%);
1132
+ --color-warning-200: hsl(44, 98%, 77%);
1133
+ --color-warning-300: hsl(42, 99%, 65%);
1134
+ --color-warning-400: hsl(39, 98%, 56%);
1135
+ --color-warning-500: hsl(34, 94%, 50%);
1136
+ --color-warning-600: hsl(28, 97%, 44%);
1137
+ --color-warning-700: hsl(22, 92%, 37%);
1138
+ --color-warning-800: hsl(19, 84%, 31%);
1139
+ --color-warning-900: hsl(18, 79%, 27%);
1140
+ --color-warning-950: hsl(17, 79%, 17%);
1141
+
1142
+ /* Success */
1143
+ --color-success-25: hsl(142, 80%, 98%);
1144
+ --color-success-50: hsl(145, 81%, 96%);
1145
+ --color-success-100: hsl(140, 75%, 92%);
1146
+ --color-success-200: hsl(144, 68%, 80%);
1147
+ --color-success-300: hsl(148, 63%, 67%);
1148
+ --color-success-400: hsl(150, 57%, 54%);
1149
+ --color-success-500: hsl(152, 77%, 39%);
1150
+ --color-success-600: hsl(153, 91%, 30%);
1151
+ --color-success-700: hsl(155, 90%, 24%);
1152
+ --color-success-800: hsl(155, 84%, 20%);
1153
+ --color-success-900: hsl(156, 83%, 16%);
1154
+ --color-success-950: hsl(157, 82%, 11%);
1155
+
1156
+ --alpha-80: 0.8;
1157
+ --alpha-60: 0.6;
1158
+ --alpha-40: 0.4;
1159
+ --alpha-20: 0.2;
1160
+ --alpha-10: 0.1;
1161
+ --alpha-5: 0.05;
1162
+ }
1163
+
1164
+ ================
1165
+ File: src/tokens/bellhop-radius.css
1166
+ ================
1167
+ :root {
1168
+ /* Radius scale */
1169
+ --radius-none: 0rem; /* 0px */
1170
+ --radius-xxs: 0.125rem; /* 2px */
1171
+ --radius-xs: 0.25rem; /* 4px */
1172
+ --radius-sm: 0.375rem; /* 6px */
1173
+ --radius-md: 0.5rem; /* 8px */
1174
+ --radius-lg: 0.625rem; /* 10px */
1175
+ --radius-xl: 0.75rem; /* 12px */
1176
+ --radius-2xl: 1rem; /* 16px */
1177
+ --radius-3xl: 1.25rem; /* 20px */
1178
+ --radius-4xl: 1.5rem; /* 24px */
1179
+ --radius-full: 9999px; /* Full / pill / circle */
1180
+ }
1181
+
1182
+ ================
1183
+ File: src/tokens/bellhop-secondary-colors.css
1184
+ ================
1185
+ :root {
1186
+ /* Gray Cool */
1187
+ --color-graycool-25: hsl(240, 20%, 99%);
1188
+ --color-graycool-50: hsl(240, 20%, 98%);
1189
+ --color-graycool-100: hsl(240, 17%, 95%);
1190
+ --color-graycool-200: hsl(227, 25%, 89%);
1191
+ --color-graycool-300: hsl(224, 24%, 78%);
1192
+ --color-graycool-400: hsl(226, 24%, 59%);
1193
+ --color-graycool-500: hsl(226, 24%, 48%);
1194
+ --color-graycool-600: hsl(226, 24%, 38%);
1195
+ --color-graycool-700: hsl(227, 24%, 33%);
1196
+ --color-graycool-800: hsl(233, 33%, 10%);
1197
+ --color-graycool-900: hsl(231, 32%, 8%);
1198
+ --color-graycool-950: hsl(231, 32%, 8%);
1199
+
1200
+ /* Lime */
1201
+ --color-lime-25: hsl(100, 60%, 98%);
1202
+ --color-lime-50: hsl(96, 91%, 96%);
1203
+ --color-lime-100: hsl(97, 87%, 91%);
1204
+ --color-lime-200: hsl(90, 89%, 82%);
1205
+ --color-lime-300: hsl(94, 87%, 71%);
1206
+ --color-lime-400: hsl(94, 73%, 56%);
1207
+ --color-lime-500: hsl(94, 75%, 44%);
1208
+ --color-lime-600: hsl(95, 85%, 35%);
1209
+ --color-lime-700: hsl(96, 78%, 27%);
1210
+ --color-lime-800: hsl(96, 69%, 23%);
1211
+ --color-lime-900: hsl(98, 61%, 20%);
1212
+ --color-lime-950: hsl(99, 61%, 10%);
1213
+
1214
+ /* Teal */
1215
+ --color-teal-25: hsl(165, 80%, 98%);
1216
+ --color-teal-50: hsl(162, 76%, 97%);
1217
+ --color-teal-100: hsl(165, 85%, 89%);
1218
+ --color-teal-200: hsl(166, 84%, 78%);
1219
+ --color-teal-300: hsl(169, 76%, 64%);
1220
+ --color-teal-400: hsl(170, 65%, 50%);
1221
+ --color-teal-500: hsl(171, 79%, 40%);
1222
+ --color-teal-600: hsl(173, 83%, 32%);
1223
+ --color-teal-700: hsl(173, 76%, 26%);
1224
+ --color-teal-800: hsl(174, 68%, 22%);
1225
+ --color-teal-900: hsl(174, 61%, 19%);
1226
+ --color-teal-950: hsl(174, 61%, 10%);
1227
+
1228
+ /* Blue */
1229
+ --color-blue-25: hsl(210, 100%, 98%);
1230
+ --color-blue-50: hsl(206, 100%, 97%);
1231
+ --color-blue-100: hsl(209, 100%, 91%);
1232
+ --color-blue-200: hsl(206, 100%, 85%);
1233
+ --color-blue-300: hsl(206, 100%, 76%);
1234
+ --color-blue-400: hsl(207, 98%, 66%);
1235
+ --color-blue-500: hsl(211, 95%, 58%);
1236
+ --color-blue-600: hsl(215, 87%, 51%);
1237
+ --color-blue-700: hsl(218, 80%, 46%);
1238
+ --color-blue-800: hsl(220, 75%, 38%);
1239
+ --color-blue-900: hsl(218, 68%, 31%);
1240
+ --color-blue-950: hsl(218, 69%, 20%);
1241
+
1242
+ /* Indigo */
1243
+ --color-indigo-25: hsl(222, 100%, 98%);
1244
+ --color-indigo-50: hsl(219, 100%, 97%);
1245
+ --color-indigo-100: hsl(221, 100%, 94%);
1246
+ --color-indigo-200: hsl(223, 96%, 89%);
1247
+ --color-indigo-300: hsl(224, 96%, 82%);
1248
+ --color-indigo-400: hsl(228, 91%, 74%);
1249
+ --color-indigo-500: hsl(233, 86%, 67%);
1250
+ --color-indigo-600: hsl(237, 77%, 59%);
1251
+ --color-indigo-700: hsl(239, 60%, 51%);
1252
+ --color-indigo-800: hsl(238, 57%, 41%);
1253
+ --color-indigo-900: hsl(236, 49%, 34%);
1254
+ --color-indigo-950: hsl(236, 49%, 24%);
1255
+
1256
+ /* Purple */
1257
+ --color-purple-25: hsl(240, 100%, 99%);
1258
+ --color-purple-50: hsl(245, 100%, 98%);
1259
+ --color-purple-100: hsl(246, 91%, 95%);
1260
+ --color-purple-200: hsl(244, 95%, 92%);
1261
+ --color-purple-300: hsl(247, 97%, 85%);
1262
+ --color-purple-400: hsl(253, 93%, 76%);
1263
+ --color-purple-500: hsl(257, 92%, 66%);
1264
+ --color-purple-600: hsl(265, 85%, 58%);
1265
+ --color-purple-700: hsl(265, 72%, 50%);
1266
+ --color-purple-800: hsl(265, 71%, 42%);
1267
+ --color-purple-900: hsl(265, 69%, 35%);
1268
+ --color-purple-950: hsl(257, 70%, 22%);
1269
+
1270
+ /* Purple Lavender */
1271
+ --color-plavender-25: hsl(240, 100%, 99%);
1272
+ --color-plavender-50: hsl(245, 100%, 98%);
1273
+ --color-plavender-100: hsl(246, 91%, 95%);
1274
+ --color-plavender-200: hsl(244, 95%, 92%);
1275
+ --color-plavender-300: hsl(247, 97%, 85%);
1276
+ --color-plavender-400: hsl(249, 93%, 76%);
1277
+ --color-plavender-500: hsl(252, 92%, 66%);
1278
+ --color-plavender-600: hsl(256, 85%, 58%);
1279
+ --color-plavender-700: hsl(257, 72%, 50%);
1280
+ --color-plavender-800: hsl(257, 71%, 42%);
1281
+ --color-plavender-900: hsl(257, 69%, 35%);
1282
+ --color-plavender-950: hsl(257, 70%, 22%);
1283
+
1284
+ /* Pink */
1285
+ --color-pink-25: hsl(323, 80%, 98%);
1286
+ --color-pink-50: hsl(327, 73%, 97%);
1287
+ --color-pink-100: hsl(326, 78%, 93%);
1288
+ --color-pink-200: hsl(326, 80%, 88%);
1289
+ --color-pink-300: hsl(327, 82%, 80%);
1290
+ --color-pink-400: hsl(330, 80%, 72%);
1291
+ --color-pink-500: hsl(331, 71%, 59%);
1292
+ --color-pink-600: hsl(331, 71%, 46%);
1293
+ --color-pink-700: hsl(331, 71%, 42%);
1294
+ --color-pink-800: hsl(331, 71%, 37%);
1295
+ --color-pink-900: hsl(331, 72%, 25%);
1296
+ --color-pink-950: hsl(328, 71%, 18%);
1297
+
1298
+ /* Guava (rose) */
1299
+ --color-guava-25: hsl(7, 60%, 97%);
1300
+ --color-guava-50: hsl(9, 62%, 96%);
1301
+ --color-guava-100: hsl(2, 57%, 91%);
1302
+ --color-guava-200: hsl(1, 58%, 85%);
1303
+ --color-guava-300: hsl(356, 59%, 79%);
1304
+ --color-guava-400: hsl(357, 61%, 72%);
1305
+ --color-guava-500: hsl(356, 67%, 66%);
1306
+ --color-guava-600: hsl(353, 58%, 58%);
1307
+ --color-guava-700: hsl(353, 52%, 51%);
1308
+ --color-guava-800: hsl(350, 58%, 41%);
1309
+ --color-guava-900: hsl(350, 56%, 28%);
1310
+
1311
+ /* Orange */
1312
+ --color-orange-25: hsl(33, 82%, 98%);
1313
+ --color-orange-50: hsl(30, 89%, 96%);
1314
+ --color-orange-100: hsl(30, 90%, 92%);
1315
+ --color-orange-200: hsl(36, 86%, 83%);
1316
+ --color-orange-300: hsl(27, 89%, 72%);
1317
+ --color-orange-400: hsl(23, 88%, 61%);
1318
+ --color-orange-500: hsl(21, 87%, 53%);
1319
+ --color-orange-600: hsl(17, 82%, 48%);
1320
+ --color-orange-700: hsl(13, 80%, 40%);
1321
+ --color-orange-800: hsl(11, 71%, 34%);
1322
+ --color-orange-900: hsl(11, 68%, 28%);
1323
+ --color-orange-950: hsl(7, 79%, 19%);
1324
+
1325
+ /* Yellow */
1326
+ --color-yellow-25: hsl(56, 88%, 97%);
1327
+ --color-yellow-50: hsl(52, 92%, 95%);
1328
+ --color-yellow-100: hsl(53, 97%, 88%);
1329
+ --color-yellow-200: hsl(53, 98%, 77%);
1330
+ --color-yellow-300: hsl(55, 99%, 67%);
1331
+ --color-yellow-400: hsl(48, 97%, 72%);
1332
+ --color-yellow-500: hsl(45, 93%, 47%);
1333
+ --color-yellow-600: hsl(39, 96%, 40%);
1334
+ --color-yellow-700: hsl(33, 92%, 33%);
1335
+ --color-yellow-800: hsl(30, 81%, 29%);
1336
+ --color-yellow-900: hsl(26, 73%, 26%);
1337
+ --color-yellow-950: hsl(26, 73%, 19%);
1338
+ }
1339
+
1340
+ ================
1341
+ File: src/tokens/bellhop-shadows.css
1342
+ ================
1343
+ :root {
1344
+ /* Shadow colors derived from neutral color scale */
1345
+ --shadow-color-base: var(
1346
+ --color-neutral-600
1347
+ ); /* #4A5578 - base shadow color */
1348
+ --shadow-color-06: color-mix(
1349
+ in srgb,
1350
+ var(--shadow-color-base) 6%,
1351
+ transparent
1352
+ ); /* 0.06 opacity */
1353
+ --shadow-color-10: color-mix(
1354
+ in srgb,
1355
+ var(--shadow-color-base) 10%,
1356
+ transparent
1357
+ ); /* 0.1 opacity */
1358
+ --shadow-color-14: color-mix(
1359
+ in srgb,
1360
+ var(--shadow-color-base) 14%,
1361
+ transparent
1362
+ ); /* 0.14 opacity */
1363
+ --shadow-color-18: color-mix(
1364
+ in srgb,
1365
+ var(--shadow-color-base) 18%,
1366
+ transparent
1367
+ ); /* 0.18 opacity */
1368
+
1369
+ /* Shadow scale - using consistent color variables */
1370
+ --shadow-xs: 0px 0px 2px 1px var(--shadow-color-06);
1371
+ --shadow-sm: 0px 3px 4px 0px var(--shadow-color-10),
1372
+ 0px 0px 1px 1px var(--shadow-color-10);
1373
+ --shadow-md: 0px 4px 8px 0px var(--shadow-color-10),
1374
+ 0px 0px 4px 0px var(--shadow-color-10);
1375
+ --shadow-lg: 0px 12px 16px -2px var(--shadow-color-10),
1376
+ 0px 0px 1px 1px var(--shadow-color-10);
1377
+ --shadow-xl: 0px 20px 24px -4px var(--shadow-color-10),
1378
+ 0px 0px 1px 1px var(--shadow-color-10);
1379
+ --shadow-2xl: 0px 24px 48px -12px var(--shadow-color-18),
1380
+ 0px 0px 1px 1px var(--shadow-color-10);
1381
+ --shadow-3xl: 0px 0px 1px 1px var(--shadow-color-10),
1382
+ 0px 32px 64px -12px var(--shadow-color-14);
1383
+
1384
+ /* Semantic shadows - use these in UI components */
1385
+ --shadow-none: none;
1386
+ --shadow-subtle: var(
1387
+ --shadow-xs
1388
+ ); /* Very subtle shadow for minimal elevation */
1389
+ --shadow-card: var(--shadow-sm); /* Cards and panels */
1390
+ --shadow-dropdown: var(--shadow-md); /* Dropdowns and small overlays */
1391
+ --shadow-modal: var(--shadow-lg); /* Modals and dialogs */
1392
+ --shadow-popover: var(--shadow-xl); /* Popovers and tooltips */
1393
+ --shadow-drawer: var(--shadow-2xl); /* Side drawers and large overlays */
1394
+ --shadow-floating: var(
1395
+ --shadow-3xl
1396
+ ); /* Floating action buttons and high elevation */
1397
+ }
1398
+
1399
+ ================
1400
+ File: src/tokens/bellhop-spacing.css
1401
+ ================
1402
+ :root {
1403
+ /* PRIMITIVES — one unit = 0.25rem (4px) */
1404
+ --sp-0: 0rem; /* 0px */
1405
+ --sp-0-5: 0.125rem; /* 2px */
1406
+ --sp-1: 0.25rem; /* 4px */
1407
+ --sp-1-5: 0.375rem; /* 6px */
1408
+ --sp-2: 0.5rem; /* 8px */
1409
+ --sp-3: 0.75rem; /* 12px */
1410
+ --sp-4: 1rem; /* 16px */
1411
+ --sp-5: 1.25rem; /* 20px */
1412
+ --sp-6: 1.5rem; /* 24px */
1413
+ --sp-8: 2rem; /* 32px */
1414
+ --sp-10: 2.5rem; /* 40px */
1415
+ --sp-12: 3rem; /* 48px */
1416
+ --sp-16: 4rem; /* 64px */
1417
+ --sp-20: 5rem; /* 80px */
1418
+ --sp-24: 6rem; /* 96px */
1419
+ --sp-32: 8rem; /* 128px */
1420
+ --sp-40: 10rem; /* 160px */
1421
+ --sp-48: 12rem; /* 192px */
1422
+ --sp-56: 14rem; /* 224px */
1423
+ --sp-64: 16rem; /* 256px */
1424
+ --sp-80: 20rem; /* 320px */
1425
+ --sp-96: 24rem; /* 384px */
1426
+ --sp-120: 30rem; /* 480px */
1427
+ --sp-140: 35rem; /* 560px */
1428
+ --sp-160: 40rem; /* 640px */
1429
+ --sp-180: 45rem; /* 720px */
1430
+ --sp-192: 48rem; /* 768px */
1431
+ --sp-256: 64rem; /* 1024px */
1432
+ --sp-320: 80rem; /* 1280px */
1433
+ --sp-360: 90rem; /* 1440px */
1434
+ --sp-400: 100rem; /* 1600px */
1435
+ --sp-480: 120rem; /* 1920px */
1436
+
1437
+ /* SEMANTIC SPACING — use these in UI; they reference primitives */
1438
+ --spacing-none: var(--sp-0); /* 0rem */
1439
+ --spacing-xxs: var(--sp-0-5); /* 0.125rem */
1440
+ --spacing-xs: var(--sp-1); /* 0.25rem */
1441
+ --spacing-sm: var(--sp-1-5); /* 0.375rem */
1442
+ --spacing-md: var(--sp-2); /* 0.5rem */
1443
+ --spacing-lg: var(--sp-3); /* 0.75rem */
1444
+ --spacing-xl: var(--sp-4); /* 1rem */
1445
+ --spacing-2xl: var(--sp-5); /* 1.25rem */
1446
+ --spacing-3xl: var(--sp-6); /* 1.5rem */
1447
+ --spacing-4xl: var(--sp-8); /* 2rem */
1448
+ --spacing-5xl: var(--sp-10); /* 2.5rem */
1449
+ --spacing-6xl: var(--sp-12); /* 3rem */
1450
+ --spacing-7xl: var(--sp-16); /* 4rem */
1451
+ --spacing-8xl: var(--sp-20); /* 5rem */
1452
+ --spacing-9xl: var(--sp-24); /* 6rem */
1453
+ --spacing-10xl: var(--sp-32); /* 8rem */
1454
+ --spacing-11xl: var(--sp-40); /* 10rem */
1455
+
1456
+ /* BUTTON PADDINGS — consistent padding sizes for button components */
1457
+ --btn-padding-sm: var(--spacing-sm); /* 0.375rem / 6px */
1458
+ --btn-padding-md: var(--spacing-md); /* 0.5rem / 8px */
1459
+ --btn-padding-lg: var(--spacing-lg); /* 0.75rem / 12px */
1460
+ --btn-padding-xl: var(--spacing-xl); /* 1rem / 16px */
1461
+
1462
+ /* ICON COMPENSATION — complete padding values for components with icons */
1463
+ --icon-compensation-xs-btn: calc(var(--spacing-lg) - var(--spacing-xs)); /* 12px - 4px = 8px - for xs buttons */
1464
+ --icon-compensation-sm-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for sm buttons */
1465
+ --icon-compensation-md-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for md buttons */
1466
+ --icon-compensation-lg-btn: calc(var(--spacing-xl) - var(--spacing-xs)); /* 16px - 4px = 12px - for lg buttons */
1467
+ }
1468
+
1469
+ ================
1470
+ File: src/tokens/bellhop-styles.css
1471
+ ================
1472
+ /* ==========================================================================
1473
+ BELLHOPOS ANGULAR LIBRARY STYLES
1474
+ Main entry point for all Bellhop design system styles
1475
+ ========================================================================== */
1476
+
1477
+ /* Import Google Fonts - Inter and Material Symbols */
1478
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap');
1479
+ @import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200');
1480
+
1481
+ /* Import all Bellhop design system styles */
1482
+ @import url('./bellhop-primary-colors.css');
1483
+ @import url('./bellhop-secondary-colors.css');
1484
+ @import url('./bellhop-spacing.css');
1485
+ @import url('./bellhop-radius.css');
1486
+ @import url('./bellhop-shadows.css');
1487
+ @import url('./bellhop-typography.css');
1488
+ @import url('./bellhop-icons.css');
1489
+ @import url('./bellhop-layout.css');
1490
+
1491
+ /* ==========================================================================
1492
+ GLOBAL RESETS AND DEFAULTS
1493
+ ========================================================================== */
1494
+
1495
+ /* Reset the outline for all focusable elements when a mouse is used. */
1496
+ *:focus:not(:focus-visible) {
1497
+ outline: none;
1498
+ }
1499
+
1500
+ /* Apply a custom outline that will only appear during keyboard navigation. */
1501
+ *:focus-visible {
1502
+ outline: 2px solid var(--color-brand-500);
1503
+ outline-offset: 2px;
1504
+ }
1505
+
1506
+ /* Ensure focus is visible on interactive elements */
1507
+ button:focus-visible,
1508
+ input:focus-visible,
1509
+ select:focus-visible,
1510
+ textarea:focus-visible,
1511
+ a:focus-visible,
1512
+ [tabindex]:focus-visible {
1513
+ outline: 2px solid var(--color-brand-500);
1514
+ outline-offset: 2px;
1515
+ }
1516
+
1517
+ /* ==========================================================================
1518
+ UTILITY CLASSES
1519
+ ========================================================================== */
1520
+
1521
+ /* Prevent text selection */
1522
+ .no-select {
1523
+ user-select: none;
1524
+ -webkit-user-select: none;
1525
+ -moz-user-select: none;
1526
+ -ms-user-select: none;
1527
+ }
1528
+
1529
+ /* Screen reader only content */
1530
+ .sr-only {
1531
+ position: absolute;
1532
+ width: 1px;
1533
+ height: 1px;
1534
+ padding: 0;
1535
+ margin: -1px;
1536
+ overflow: hidden;
1537
+ clip: rect(0, 0, 0, 0);
1538
+ white-space: nowrap;
1539
+ border: 0;
1540
+ }
1541
+
1542
+ /* ==========================================================================
1543
+ CONTENT LAYOUT UTILITIES
1544
+ ========================================================================== */
1545
+
1546
+ /* Content Container - Main flex container for page navigation and content area */
1547
+ .bellhop-content-container {
1548
+ display: flex;
1549
+ flex: 1;
1550
+ overflow: hidden;
1551
+ background-color: var(--color-white);
1552
+ }
1553
+
1554
+ /* Content Area - Scrollable main content region */
1555
+ .bellhop-content-area {
1556
+ flex: 1;
1557
+ overflow-y: auto;
1558
+ overflow-x: hidden;
1559
+ background-color: var(--color-white);
1560
+ }
1561
+
1562
+ /* Content Wrapper - Inner content container with padding and max-width */
1563
+ .bellhop-content-wrapper {
1564
+ padding: var(--spacing-4xl);
1565
+ margin: 0 auto;
1566
+ font-family: var(--font-inter);
1567
+ }
1568
+
1569
+ /* Content Wrapper Variants */
1570
+ .bellhop-content-wrapper-sm {
1571
+ padding: var(--spacing-2xl);
1572
+ margin: 0 auto;
1573
+ font-family: var(--font-inter);
1574
+ }
1575
+
1576
+ .bellhop-content-wrapper-lg {
1577
+ padding: var(--spacing-5xl);
1578
+ margin: 0 auto;
1579
+ font-family: var(--font-inter);
1580
+ }
1581
+
1582
+ .bellhop-content-wrapper-full {
1583
+ padding: var(--spacing-4xl);
1584
+ max-width: none;
1585
+ margin: 0;
1586
+ font-family: var(--font-inter);
1587
+ }
1588
+
1589
+ /* Content Typography - Standard content headings and text */
1590
+ .bellhop-content-wrapper h1,
1591
+ .bellhop-content-wrapper-sm h1,
1592
+ .bellhop-content-wrapper-lg h1,
1593
+ .bellhop-content-wrapper-full h1 {
1594
+ font-size: var(--text-3xl-size);
1595
+ font-weight: var(--weight-bold);
1596
+ line-height: var(--text-3xl-line);
1597
+ color: var(--color-neutral-800);
1598
+ margin-bottom: var(--spacing-md);
1599
+ }
1600
+
1601
+ .bellhop-content-wrapper p,
1602
+ .bellhop-content-wrapper-sm p,
1603
+ .bellhop-content-wrapper-lg p,
1604
+ .bellhop-content-wrapper-full p {
1605
+ font-size: var(--text-md-size);
1606
+ font-weight: var(--weight-regular);
1607
+ line-height: var(--text-md-line);
1608
+ color: var(--color-neutral-600);
1609
+ margin-bottom: var(--spacing-2xl);
1610
+ }
1611
+
1612
+ /* Responsive adjustments for content wrappers */
1613
+ @media (max-width: 768px) {
1614
+ .bellhop-content-wrapper,
1615
+ .bellhop-content-wrapper-sm,
1616
+ .bellhop-content-wrapper-lg,
1617
+ .bellhop-content-wrapper-full {
1618
+ padding: var(--spacing-xl);
1619
+ }
1620
+
1621
+ .bellhop-content-wrapper h1,
1622
+ .bellhop-content-wrapper-sm h1,
1623
+ .bellhop-content-wrapper-lg h1,
1624
+ .bellhop-content-wrapper-full h1 {
1625
+ font-size: var(--text-2xl-size);
1626
+ line-height: var(--text-2xl-line);
1627
+ }
1628
+ }
1629
+
1630
+ @media (max-width: 480px) {
1631
+ .bellhop-content-wrapper,
1632
+ .bellhop-content-wrapper-sm,
1633
+ .bellhop-content-wrapper-lg,
1634
+ .bellhop-content-wrapper-full {
1635
+ padding: var(--spacing-md);
1636
+ }
1637
+
1638
+ .bellhop-content-wrapper h1,
1639
+ .bellhop-content-wrapper-sm h1,
1640
+ .bellhop-content-wrapper-lg h1,
1641
+ .bellhop-content-wrapper-full h1 {
1642
+ font-size: var(--text-xl-size);
1643
+ line-height: var(--text-xl-line);
1644
+ }
1645
+ }
1646
+
1647
+ ================
1648
+ File: src/tokens/bellhop-typography.css
1649
+ ================
1650
+ /* =========================
1651
+ IMPORT FONT
1652
+ ========================= */
1653
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
1654
+
1655
+ /* =========================
1656
+ TYPOGRAPHY TOKENS
1657
+ ========================= */
1658
+ :root {
1659
+ /* Families */
1660
+ --font-inter: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI',
1661
+ Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Apple Color Emoji',
1662
+ 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
1663
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
1664
+ 'Liberation Mono', 'Courier New', monospace;
1665
+
1666
+ /* Weights */
1667
+ --weight-regular: 400;
1668
+ --weight-medium: 500;
1669
+ --weight-semibold: 600;
1670
+ --weight-bold: 700;
1671
+
1672
+ /* Sizes (font-size) */
1673
+ /* Display Sizes */
1674
+ --display-xl-size: 2.625rem; /* 42px */
1675
+ --display-lg-size: 2.5rem; /* 40px */
1676
+ --display-md-size: 2.25rem; /* 36px */
1677
+ --display-sm-size: 1.875rem; /* 30px */
1678
+ --display-xs-size: 1.5rem; /* 24px */
1679
+ /* Text Sizes */
1680
+ --text-xl-size: 1.25rem; /* 20px */
1681
+ --text-lg-size: 1.125rem; /* 18px */
1682
+ --text-md-size: 1rem; /* 16px */
1683
+ --text-sm-size: 0.875rem; /* 14px */
1684
+ --text-xs-size: 0.75rem; /* 12px */
1685
+
1686
+ /* Line heights */
1687
+ --text-xl-line: 1.875rem; /* 30px */
1688
+ --text-lg-line: 1.75rem; /* 28px */
1689
+ --text-md-line: 1.5rem; /* 24px */
1690
+ --text-sm-line: 1.25rem; /* 20px */
1691
+ --text-xs-line: 1.125rem; /* 18px */
1692
+
1693
+ /* Numbers (data tables) — use tabular figures */
1694
+ --num-sm-size: var(--text-sm-size); /* 14px */
1695
+ --num-sm-line: var(--text-sm-line); /* 20px */
1696
+ --num-xs-size: var(--text-xs-size); /* 12px */
1697
+ --num-xs-line: var(--text-xs-line); /* 18px */
1698
+ }
1699
+
1700
+ /* =========================
1701
+ BASE / WEIGHT UTILITIES
1702
+ ========================= */
1703
+ .font-inter {
1704
+ font-family: var(--font-inter);
1705
+ }
1706
+ .font-mono {
1707
+ font-family: var(--font-mono);
1708
+ }
1709
+
1710
+ .weight-regular {
1711
+ font-weight: var(--weight-regular);
1712
+ }
1713
+ .weight-medium {
1714
+ font-weight: var(--weight-medium);
1715
+ }
1716
+ .weight-semibold {
1717
+ font-weight: var(--weight-semibold);
1718
+ }
1719
+ .weight-bold {
1720
+ font-weight: var(--weight-bold);
1721
+ }
1722
+
1723
+ /* =========================
1724
+ SIZE UTILITIES
1725
+ ========================= */
1726
+ .text-xl {
1727
+ font-size: var(--text-xl-size);
1728
+ line-height: var(--text-xl-line);
1729
+ }
1730
+ .text-lg {
1731
+ font-size: var(--text-lg-size);
1732
+ line-height: var(--text-lg-line);
1733
+ }
1734
+ .text-md {
1735
+ font-size: var(--text-md-size);
1736
+ line-height: var(--text-md-line);
1737
+ }
1738
+ .text-sm {
1739
+ font-size: var(--text-sm-size);
1740
+ line-height: var(--text-sm-line);
1741
+ }
1742
+ .text-xs {
1743
+ font-size: var(--text-xs-size);
1744
+ line-height: var(--text-xs-line);
1745
+ }
1746
+
1747
+ /* =========================
1748
+ NUMERIC (DATA TABLES)
1749
+ ========================= */
1750
+ .num-sm {
1751
+ font-size: var(--num-sm-size);
1752
+ line-height: var(--num-sm-line);
1753
+ font-variant-numeric: tabular-nums;
1754
+ font-family: var(--font-inter);
1755
+ }
1756
+ .num-xs {
1757
+ font-size: var(--num-xs-size);
1758
+ line-height: var(--num-xs-line);
1759
+ font-variant-numeric: tabular-nums;
1760
+ font-family: var(--font-mono);
1761
+ }
1762
+
1763
+ ================
1764
+ File: src/tokens/colors.json
1765
+ ================
1766
+ {
1767
+ "colors": {
1768
+ "base": {
1769
+ "white": {
1770
+ "value": "#ffffff"
1771
+ },
1772
+ "black": {
1773
+ "value": "#000000"
1774
+ },
1775
+ "transparent": {
1776
+ "value": "rgba(255, 255, 255, 0.0000)"
1777
+ }
1778
+ },
1779
+ "indigo": {
1780
+ "25": {
1781
+ "value": "#f5f8fe"
1782
+ },
1783
+ "50": {
1784
+ "value": "#f1f5fe"
1785
+ },
1786
+ "100": {
1787
+ "value": "#e1eafe"
1788
+ },
1789
+ "200": {
1790
+ "value": "#bacefc"
1791
+ },
1792
+ "300": {
1793
+ "value": "#8daafc"
1794
+ },
1795
+ "400": {
1796
+ "value": "#7498fb"
1797
+ },
1798
+ "500": {
1799
+ "value": "#5068dd"
1800
+ },
1801
+ "600": {
1802
+ "value": "#2642cf"
1803
+ },
1804
+ "700": {
1805
+ "value": "#1930a9"
1806
+ },
1807
+ "800": {
1808
+ "value": "#1b2192"
1809
+ },
1810
+ "900": {
1811
+ "value": "#161b79"
1812
+ },
1813
+ "950": {
1814
+ "value": "#141752"
1815
+ }
1816
+ },
1817
+ "gray": {
1818
+ "25": {
1819
+ "value": "#fcfcfd"
1820
+ },
1821
+ "50": {
1822
+ "value": "#f9f9fb"
1823
+ },
1824
+ "100": {
1825
+ "value": "#eff1f5"
1826
+ },
1827
+ "200": {
1828
+ "value": "#dcdfea"
1829
+ },
1830
+ "300": {
1831
+ "value": "#b9c0d4"
1832
+ },
1833
+ "400": {
1834
+ "value": "#7d89b0"
1835
+ },
1836
+ "500": {
1837
+ "value": "#5d6b98"
1838
+ },
1839
+ "600": {
1840
+ "value": "#4a5578"
1841
+ },
1842
+ "700": {
1843
+ "value": "#404968"
1844
+ },
1845
+ "800": {
1846
+ "value": "#30374f"
1847
+ },
1848
+ "900": {
1849
+ "value": "#111322"
1850
+ },
1851
+ "950": {
1852
+ "value": "#0e101b"
1853
+ }
1854
+ },
1855
+ "neutral": {
1856
+ "25": {
1857
+ "value": "{colors.gray.25}"
1858
+ },
1859
+ "50": {
1860
+ "value": "{colors.gray.50}"
1861
+ },
1862
+ "100": {
1863
+ "value": "{colors.gray.100}"
1864
+ },
1865
+ "200": {
1866
+ "value": "{colors.gray.200}"
1867
+ },
1868
+ "300": {
1869
+ "value": "{colors.gray.300}"
1870
+ },
1871
+ "400": {
1872
+ "value": "{colors.gray.400}"
1873
+ },
1874
+ "500": {
1875
+ "value": "{colors.gray.500}"
1876
+ },
1877
+ "600": {
1878
+ "value": "{colors.gray.600}"
1879
+ },
1880
+ "700": {
1881
+ "value": "{colors.gray.700}"
1882
+ },
1883
+ "800": {
1884
+ "value": "{colors.gray.800}"
1885
+ },
1886
+ "900": {
1887
+ "value": "{colors.gray.900}"
1888
+ },
1889
+ "950": {
1890
+ "value": "{colors.gray.950}"
1891
+ }
1892
+ },
1893
+ "brand": {
1894
+ "25": {
1895
+ "value": "{colors.indigo.25}"
1896
+ },
1897
+ "50": {
1898
+ "value": "{colors.indigo.50}"
1899
+ },
1900
+ "100": {
1901
+ "value": "{colors.indigo.100}"
1902
+ },
1903
+ "200": {
1904
+ "value": "{colors.indigo.200}"
1905
+ },
1906
+ "300": {
1907
+ "value": "{colors.indigo.300}"
1908
+ },
1909
+ "400": {
1910
+ "value": "{colors.indigo.400}"
1911
+ },
1912
+ "500": {
1913
+ "value": "{colors.indigo.500}"
1914
+ },
1915
+ "600": {
1916
+ "value": "{colors.indigo.600}"
1917
+ },
1918
+ "700": {
1919
+ "value": "{colors.indigo.700}"
1920
+ },
1921
+ "800": {
1922
+ "value": "{colors.indigo.800}"
1923
+ },
1924
+ "900": {
1925
+ "value": "{colors.indigo.900}"
1926
+ },
1927
+ "950": {
1928
+ "value": "{colors.indigo.950}"
1929
+ }
1930
+ },
1931
+ "accent": {
1932
+ "25": {
1933
+ "value": "{colors.guava.25}"
1934
+ },
1935
+ "50": {
1936
+ "value": "{colors.guava.50}"
1937
+ },
1938
+ "100": {
1939
+ "value": "{colors.guava.100}"
1940
+ },
1941
+ "200": {
1942
+ "value": "{colors.guava.200}"
1943
+ },
1944
+ "300": {
1945
+ "value": "{colors.guava.300}"
1946
+ },
1947
+ "400": {
1948
+ "value": "{colors.guava.400}"
1949
+ },
1950
+ "500": {
1951
+ "value": "{colors.guava.500}"
1952
+ },
1953
+ "600": {
1954
+ "value": "{colors.guava.600}"
1955
+ },
1956
+ "700": {
1957
+ "value": "{colors.guava.700}"
1958
+ },
1959
+ "800": {
1960
+ "value": "{colors.guava.800}"
1961
+ },
1962
+ "900": {
1963
+ "value": "{colors.guava.900}"
1964
+ },
1965
+ "950": {
1966
+ "value": "{colors.guava.950}"
1967
+ }
1968
+ },
1969
+ "error": {
1970
+ "25": {
1971
+ "value": "#fffbfa"
1972
+ },
1973
+ "50": {
1974
+ "value": "#feefeb"
1975
+ },
1976
+ "100": {
1977
+ "value": "#fce3e3"
1978
+ },
1979
+ "200": {
1980
+ "value": "#fbd0d0"
1981
+ },
1982
+ "300": {
1983
+ "value": "#f7abab"
1984
+ },
1985
+ "400": {
1986
+ "value": "#f87272"
1987
+ },
1988
+ "500": {
1989
+ "value": "#f05250"
1990
+ },
1991
+ "600": {
1992
+ "value": "#d6341f"
1993
+ },
1994
+ "700": {
1995
+ "value": "#bf2b18"
1996
+ },
1997
+ "800": {
1998
+ "value": "#992424"
1999
+ },
2000
+ "900": {
2001
+ "value": "#701e19"
2002
+ },
2003
+ "950": {
2004
+ "value": "#55160c"
2005
+ }
2006
+ },
2007
+ "warning": {
2008
+ "25": {
2009
+ "value": "#fffcf5"
2010
+ },
2011
+ "50": {
2012
+ "value": "#fffaeb"
2013
+ },
2014
+ "100": {
2015
+ "value": "#fef0c7"
2016
+ },
2017
+ "200": {
2018
+ "value": "#fedf89"
2019
+ },
2020
+ "300": {
2021
+ "value": "#fec84b"
2022
+ },
2023
+ "400": {
2024
+ "value": "#fdb022"
2025
+ },
2026
+ "500": {
2027
+ "value": "#f79009"
2028
+ },
2029
+ "600": {
2030
+ "value": "#dc6803"
2031
+ },
2032
+ "700": {
2033
+ "value": "#b54708"
2034
+ },
2035
+ "800": {
2036
+ "value": "#93370d"
2037
+ },
2038
+ "900": {
2039
+ "value": "#7a2e0e"
2040
+ },
2041
+ "950": {
2042
+ "value": "#4e1d09"
2043
+ }
2044
+ },
2045
+ "success": {
2046
+ "25": {
2047
+ "value": "#f6fef9"
2048
+ },
2049
+ "50": {
2050
+ "value": "#ecfdf3"
2051
+ },
2052
+ "100": {
2053
+ "value": "#dcfae6"
2054
+ },
2055
+ "200": {
2056
+ "value": "#abefc6"
2057
+ },
2058
+ "300": {
2059
+ "value": "#75e0a7"
2060
+ },
2061
+ "400": {
2062
+ "value": "#47cd89"
2063
+ },
2064
+ "500": {
2065
+ "value": "#17b26a"
2066
+ },
2067
+ "600": {
2068
+ "value": "#079455"
2069
+ },
2070
+ "700": {
2071
+ "value": "#067647"
2072
+ },
2073
+ "800": {
2074
+ "value": "#085d3a"
2075
+ },
2076
+ "900": {
2077
+ "value": "#074d31"
2078
+ },
2079
+ "950": {
2080
+ "value": "#053321"
2081
+ }
2082
+ },
2083
+ "guava": {
2084
+ "25": {
2085
+ "value": "{colors.error.25}"
2086
+ },
2087
+ "50": {
2088
+ "value": "{colors.error.50}"
2089
+ },
2090
+ "100": {
2091
+ "value": "{colors.rose.100}"
2092
+ },
2093
+ "200": {
2094
+ "value": "{colors.rose.200}"
2095
+ },
2096
+ "300": {
2097
+ "value": "{colors.rose.300}"
2098
+ },
2099
+ "400": {
2100
+ "value": "{colors.rose.400}"
2101
+ },
2102
+ "500": {
2103
+ "value": "{colors.rose.500}"
2104
+ },
2105
+ "600": {
2106
+ "value": "{colors.rose.600}"
2107
+ },
2108
+ "700": {
2109
+ "value": "{colors.rose.700}"
2110
+ },
2111
+ "800": {
2112
+ "value": "{colors.rose.800}"
2113
+ },
2114
+ "900": {
2115
+ "value": "{colors.rose.900}"
2116
+ },
2117
+ "950": {
2118
+ "value": "{colors.rose.950}"
2119
+ }
2120
+ },
2121
+ "lime": {
2122
+ "25": {
2123
+ "value": "#fafdf7"
2124
+ },
2125
+ "50": {
2126
+ "value": "#f5fbee"
2127
+ },
2128
+ "100": {
2129
+ "value": "#e6f4d7"
2130
+ },
2131
+ "200": {
2132
+ "value": "#ceeab0"
2133
+ },
2134
+ "300": {
2135
+ "value": "#acdc79"
2136
+ },
2137
+ "400": {
2138
+ "value": "#86c93e"
2139
+ },
2140
+ "500": {
2141
+ "value": "#669f2a"
2142
+ },
2143
+ "600": {
2144
+ "value": "#4f7a21"
2145
+ },
2146
+ "700": {
2147
+ "value": "#3f621a"
2148
+ },
2149
+ "800": {
2150
+ "value": "#335015"
2151
+ },
2152
+ "900": {
2153
+ "value": "#2b4212"
2154
+ },
2155
+ "950": {
2156
+ "value": "#1a280b"
2157
+ }
2158
+ },
2159
+ "teal": {
2160
+ "25": {
2161
+ "value": "#f6fefc"
2162
+ },
2163
+ "50": {
2164
+ "value": "#f0fdf9"
2165
+ },
2166
+ "100": {
2167
+ "value": "#ccfbef"
2168
+ },
2169
+ "200": {
2170
+ "value": "#99f6e0"
2171
+ },
2172
+ "300": {
2173
+ "value": "#5fe9d0"
2174
+ },
2175
+ "400": {
2176
+ "value": "#2ed3b7"
2177
+ },
2178
+ "500": {
2179
+ "value": "#15b79e"
2180
+ },
2181
+ "600": {
2182
+ "value": "#0e9384"
2183
+ },
2184
+ "700": {
2185
+ "value": "#107569"
2186
+ },
2187
+ "800": {
2188
+ "value": "#125d56"
2189
+ },
2190
+ "900": {
2191
+ "value": "#134e48"
2192
+ },
2193
+ "950": {
2194
+ "value": "#0a2926"
2195
+ }
2196
+ },
2197
+ "blue": {
2198
+ "25": {
2199
+ "value": "#f5faff"
2200
+ },
2201
+ "50": {
2202
+ "value": "#eff8ff"
2203
+ },
2204
+ "100": {
2205
+ "value": "#d1e9ff"
2206
+ },
2207
+ "200": {
2208
+ "value": "#b2ddff"
2209
+ },
2210
+ "300": {
2211
+ "value": "#84caff"
2212
+ },
2213
+ "400": {
2214
+ "value": "#53b1fd"
2215
+ },
2216
+ "500": {
2217
+ "value": "#2e90fa"
2218
+ },
2219
+ "600": {
2220
+ "value": "#1570ef"
2221
+ },
2222
+ "700": {
2223
+ "value": "#175cd3"
2224
+ },
2225
+ "800": {
2226
+ "value": "#1849a9"
2227
+ },
2228
+ "900": {
2229
+ "value": "#194185"
2230
+ },
2231
+ "950": {
2232
+ "value": "#102a56"
2233
+ }
2234
+ },
2235
+ "violet": {
2236
+ "25": {
2237
+ "value": "#fbfaff"
2238
+ },
2239
+ "50": {
2240
+ "value": "#f5f3ff"
2241
+ },
2242
+ "100": {
2243
+ "value": "#ece9fe"
2244
+ },
2245
+ "200": {
2246
+ "value": "#ddd6fe"
2247
+ },
2248
+ "300": {
2249
+ "value": "#c3b5fd"
2250
+ },
2251
+ "400": {
2252
+ "value": "#a48afb"
2253
+ },
2254
+ "500": {
2255
+ "value": "#875bf7"
2256
+ },
2257
+ "600": {
2258
+ "value": "#7839ee"
2259
+ },
2260
+ "700": {
2261
+ "value": "#6927da"
2262
+ },
2263
+ "800": {
2264
+ "value": "#5720b7"
2265
+ },
2266
+ "900": {
2267
+ "value": "#491c96"
2268
+ },
2269
+ "950": {
2270
+ "value": "#2e125e"
2271
+ }
2272
+ },
2273
+ "purple": {
2274
+ "25": {
2275
+ "value": "#fafaff"
2276
+ },
2277
+ "50": {
2278
+ "value": "#f4f3ff"
2279
+ },
2280
+ "100": {
2281
+ "value": "#ebe9fe"
2282
+ },
2283
+ "200": {
2284
+ "value": "#d9d6fe"
2285
+ },
2286
+ "300": {
2287
+ "value": "#bdb4fe"
2288
+ },
2289
+ "400": {
2290
+ "value": "#a28afb"
2291
+ },
2292
+ "500": {
2293
+ "value": "#875af8"
2294
+ },
2295
+ "600": {
2296
+ "value": "#8438ef"
2297
+ },
2298
+ "700": {
2299
+ "value": "#7125dc"
2300
+ },
2301
+ "800": {
2302
+ "value": "#5f1fb8"
2303
+ },
2304
+ "900": {
2305
+ "value": "#4f1c96"
2306
+ },
2307
+ "950": {
2308
+ "value": "#32115f"
2309
+ }
2310
+ },
2311
+ "lavender": {
2312
+ "25": {
2313
+ "value": "#f8f2f8"
2314
+ },
2315
+ "50": {
2316
+ "value": "#f4ebf4"
2317
+ },
2318
+ "100": {
2319
+ "value": "#ebdbeb"
2320
+ },
2321
+ "200": {
2322
+ "value": "#dbbddb"
2323
+ },
2324
+ "300": {
2325
+ "value": "#cfa5ce"
2326
+ },
2327
+ "400": {
2328
+ "value": "#bb81ba"
2329
+ },
2330
+ "500": {
2331
+ "value": "#a05da8"
2332
+ },
2333
+ "600": {
2334
+ "value": "#8e4b9b"
2335
+ },
2336
+ "700": {
2337
+ "value": "#7d368c"
2338
+ },
2339
+ "800": {
2340
+ "value": "#6c3177"
2341
+ },
2342
+ "900": {
2343
+ "value": "#56255f"
2344
+ },
2345
+ "950": {
2346
+ "value": "#3d1745"
2347
+ }
2348
+ },
2349
+ "pink": {
2350
+ "25": {
2351
+ "value": "#fef6fb"
2352
+ },
2353
+ "50": {
2354
+ "value": "#fdf2f8"
2355
+ },
2356
+ "100": {
2357
+ "value": "#fbdfef"
2358
+ },
2359
+ "200": {
2360
+ "value": "#f9c8e4"
2361
+ },
2362
+ "300": {
2363
+ "value": "#f6a2d0"
2364
+ },
2365
+ "400": {
2366
+ "value": "#f17eb8"
2367
+ },
2368
+ "500": {
2369
+ "value": "#e14c94"
2370
+ },
2371
+ "600": {
2372
+ "value": "#c92273"
2373
+ },
2374
+ "700": {
2375
+ "value": "#b71f69"
2376
+ },
2377
+ "800": {
2378
+ "value": "#a11b5c"
2379
+ },
2380
+ "900": {
2381
+ "value": "#6d123e"
2382
+ },
2383
+ "950": {
2384
+ "value": "#4b0c2a"
2385
+ }
2386
+ },
2387
+ "orange": {
2388
+ "25": {
2389
+ "value": "#fefaf5"
2390
+ },
2391
+ "50": {
2392
+ "value": "#fef6ee"
2393
+ },
2394
+ "100": {
2395
+ "value": "#fdead7"
2396
+ },
2397
+ "200": {
2398
+ "value": "#f9dbaf"
2399
+ },
2400
+ "300": {
2401
+ "value": "#f7b27a"
2402
+ },
2403
+ "400": {
2404
+ "value": "#f38744"
2405
+ },
2406
+ "500": {
2407
+ "value": "#ef6820"
2408
+ },
2409
+ "600": {
2410
+ "value": "#e04f16"
2411
+ },
2412
+ "700": {
2413
+ "value": "#b93815"
2414
+ },
2415
+ "800": {
2416
+ "value": "#932f19"
2417
+ },
2418
+ "900": {
2419
+ "value": "#772917"
2420
+ },
2421
+ "950": {
2422
+ "value": "#511c10"
2423
+ }
2424
+ },
2425
+ "yellow": {
2426
+ "25": {
2427
+ "value": "#fefdf0"
2428
+ },
2429
+ "50": {
2430
+ "value": "#fefbe8"
2431
+ },
2432
+ "100": {
2433
+ "value": "#fef7c3"
2434
+ },
2435
+ "200": {
2436
+ "value": "#feee95"
2437
+ },
2438
+ "300": {
2439
+ "value": "#fde272"
2440
+ },
2441
+ "400": {
2442
+ "value": "#fac515"
2443
+ },
2444
+ "500": {
2445
+ "value": "#eaaa08"
2446
+ },
2447
+ "600": {
2448
+ "value": "#ca8504"
2449
+ },
2450
+ "700": {
2451
+ "value": "#a15c07"
2452
+ },
2453
+ "800": {
2454
+ "value": "#854a0e"
2455
+ },
2456
+ "900": {
2457
+ "value": "#713b12"
2458
+ },
2459
+ "950": {
2460
+ "value": "#542c0d"
2461
+ }
2462
+ },
2463
+ "rose": {
2464
+ "25": {
2465
+ "value": "#fcf4f3"
2466
+ },
2467
+ "50": {
2468
+ "value": "#fbf0ee"
2469
+ },
2470
+ "100": {
2471
+ "value": "#f5dcdb"
2472
+ },
2473
+ "200": {
2474
+ "value": "#efc3c2"
2475
+ },
2476
+ "300": {
2477
+ "value": "#e9aaae"
2478
+ },
2479
+ "400": {
2480
+ "value": "#e38c91"
2481
+ },
2482
+ "500": {
2483
+ "value": "#e26e76"
2484
+ },
2485
+ "600": {
2486
+ "value": "#d25664"
2487
+ },
2488
+ "700": {
2489
+ "value": "#c34151"
2490
+ },
2491
+ "800": {
2492
+ "value": "#a52c40"
2493
+ },
2494
+ "900": {
2495
+ "value": "#6f1f2d"
2496
+ },
2497
+ "950": {
2498
+ "value": "#500c17"
2499
+ }
2500
+ }
2501
+ }
2502
+ }
2503
+
2504
+ ================
2505
+ File: src/tokens/index.css
2506
+ ================
2507
+ /* ==========================================================================
2508
+ BELLHOP DESIGN TOKENS
2509
+ Shared design system tokens for all frameworks
2510
+ ========================================================================== */
2511
+
2512
+ /* Import all design token files */
2513
+ @import './bellhop-primary-colors.css';
2514
+ @import './bellhop-secondary-colors.css';
2515
+ @import './bellhop-typography.css';
2516
+ @import './bellhop-spacing.css';
2517
+ @import './bellhop-radius.css';
2518
+ @import './bellhop-shadows.css';
2519
+ @import './bellhop-animations.css';
2520
+ @import './bellhop-layout.css';
2521
+ @import './bellhop-icons.css';
2522
+ @import './bellhop-global.css';
2523
+ @import './bellhop-styles.css';
2524
+
2525
+ ================
2526
+ File: src/index.css
2527
+ ================
2528
+ /* Bellhop Shared Styles - Design Tokens & Utilities */
2529
+
2530
+ /* Import Google Fonts */
2531
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
2532
+
2533
+ /* Base normalization - import first */
2534
+ @import './base/normalize.css';
2535
+
2536
+ /* Design Tokens - Foundation */
2537
+ @import './tokens/index.css';
2538
+
2539
+ /*
2540
+ * Note: Component styles are no longer included here.
2541
+ * All component styles are bundled with their respective Stencil components
2542
+ * in the @actabldesign/bellhop-core package using Shadow DOM encapsulation.
2543
+ *
2544
+ * This package now provides only:
2545
+ * - Design tokens (colors, typography, spacing, shadows, radius, etc.)
2546
+ * - Base normalization
2547
+ * - Layout utilities
2548
+ * - Animations
2549
+ */
2550
+
2551
+ ================
2552
+ File: package.json
2553
+ ================
2554
+ {
2555
+ "name": "@actabldesign/bellhop-styles",
2556
+ "version": "0.0.4",
2557
+ "description": "Shared CSS styles for Bellhop design system",
2558
+ "main": "index.css",
2559
+ "module": "index.css",
2560
+ "types": "index.d.ts",
2561
+ "files": [
2562
+ "**/*"
2563
+ ],
2564
+ "scripts": {
2565
+ "build": "rollup -c",
2566
+ "dev": "rollup -c -w",
2567
+ "clean": "rimraf dist"
2568
+ },
2569
+ "keywords": [
2570
+ "design-system",
2571
+ "css",
2572
+ "styles",
2573
+ "bellhop",
2574
+ "actabl"
2575
+ ],
2576
+ "author": "Actabl Design Team",
2577
+ "license": "MIT",
2578
+ "devDependencies": {
2579
+ "rollup": "^4.0.0",
2580
+ "rollup-plugin-postcss": "^4.0.2",
2581
+ "postcss-import": "^16.0.0",
2582
+ "postcss": "^8.4.5",
2583
+ "rimraf": "^5.0.5"
2584
+ },
2585
+ "publishConfig": {
2586
+ "registry": "https://registry.npmjs.org/",
2587
+ "access": "public"
2588
+ }
2589
+ }
2590
+
2591
+ ================
2592
+ File: project.json
2593
+ ================
2594
+ {
2595
+ "name": "bellhop-styles",
2596
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
2597
+ "projectType": "library",
2598
+ "sourceRoot": "packages/bellhop-styles/src",
2599
+ "targets": {
2600
+ "build": {
2601
+ "executor": "nx:run-commands",
2602
+ "outputs": ["{workspaceRoot}/dist/bellhop-styles"],
2603
+ "options": {
2604
+ "commands": [
2605
+ "mkdir -p dist/bellhop-styles",
2606
+ "cd packages/bellhop-styles && npm run build",
2607
+ "cp packages/bellhop-styles/dist/* dist/bellhop-styles/",
2608
+ "cp packages/bellhop-styles/package.json dist/bellhop-styles/",
2609
+ "cp packages/bellhop-styles/README.md dist/bellhop-styles/ || true"
2610
+ ],
2611
+ "parallel": false
2612
+ }
2613
+ },
2614
+ "lint": {
2615
+ "executor": "nx:run-commands",
2616
+ "options": {
2617
+ "command": "echo 'No linting configured for styles library'"
2618
+ }
2619
+ }
2620
+ },
2621
+ "tags": ["type:styles", "framework:agnostic"]
2622
+ }
2623
+
2624
+ ================
2625
+ File: README.md
2626
+ ================
2627
+ # Bellhop Styles
2628
+
2629
+ Shared CSS styles and design tokens for the Bellhop design system. This package provides framework-agnostic styles that can be used with Angular, React, or any other framework.
2630
+
2631
+ ## Installation
81
2632
 
82
2633
  ```bash
83
- npm install @actabldesign/bellhopos-styles
2634
+ npm install @actabldesign/bellhop-styles
84
2635
  ```
85
2636
 
2637
+ ## Usage
2638
+
86
2639
  ### Import All Styles
87
2640
 
2641
+ Import the complete style package in your main CSS or TypeScript/JavaScript file:
2642
+
88
2643
  ```css
89
- /* Import everything */
90
- @import '@actabldesign/bellhopos-styles';
2644
+ @import '@actabldesign/bellhop-styles';
91
2645
  ```
92
2646
 
93
- Or in JavaScript/TypeScript:
2647
+ or in TypeScript/JavaScript:
94
2648
 
95
2649
  ```tsx
96
- import '@actabldesign/bellhopos-styles';
2650
+ import '@actabldesign/bellhop-styles';
97
2651
  ```
98
2652
 
99
- ### Import Specific Modules
2653
+ ### Import Individual Style Modules
2654
+
2655
+ For more granular control, you can import individual style modules:
100
2656
 
101
2657
  ```css
102
- /* Import only what you need */
103
- @import '@actabldesign/bellhopos-styles/base/colors.css';
104
- @import '@actabldesign/bellhopos-styles/base/typography.css';
105
- @import '@actabldesign/bellhopos-styles/base/spacing.css';
106
- @import '@actabldesign/bellhopos-styles/components/button.css';
2658
+ @import '@actabldesign/bellhop-styles/base/colors.css';
2659
+ @import '@actabldesign/bellhop-styles/base/typography.css';
2660
+ @import '@actabldesign/bellhop-styles/base/spacing.css';
2661
+ @import '@actabldesign/bellhop-styles/base/shadows.css';
2662
+ @import '@actabldesign/bellhop-styles/base/radius.css';
107
2663
  ```
108
2664
 
109
- ### Use Design Tokens
2665
+ ### Using Design Tokens
2666
+
2667
+ All design tokens are available as CSS custom properties:
110
2668
 
111
2669
  ```css
112
2670
  .my-component {
@@ -128,79 +2686,167 @@ import '@actabldesign/bellhopos-styles';
128
2686
 
129
2687
  /* Border Radius */
130
2688
  border-radius: var(--radius-md);
131
-
132
- /* Animations */
133
- transition: all var(--transition-base) var(--ease-in-out);
134
2689
  }
135
2690
  ```
136
2691
 
137
- ## 📖 For AI Assistants
2692
+ ## Design Tokens Reference
138
2693
 
139
- When working with styles:
2694
+ ### Colors
140
2695
 
141
- 1. **Load the full documentation**: `/llms/styles.txt` contains all CSS source
142
- 2. **Use design tokens**: Always reference CSS custom properties
143
- 3. **Follow BEM-like naming**: `.component-name__element--modifier`
144
- 4. **Match existing patterns**: Check component styles for consistency
145
- 5. **Responsive design**: Use mobile-first approach
2696
+ #### Primary Colors
2697
+ - `--color-primary-50` to `--color-primary-900`
2698
+ - `--color-primary-500` (default brand color)
146
2699
 
147
- ### Naming Conventions
2700
+ #### Neutral Colors
2701
+ - `--color-neutral-50` to `--color-neutral-900`
2702
+ - `--color-white`, `--color-black`
148
2703
 
149
- **Components**:
150
- ```css
151
- .component-name { }
152
- .component-name__element { }
153
- .component-name--variant { }
154
- .component-name__element--state { }
155
- ```
2704
+ #### Semantic Colors
2705
+ - **Success**: `--color-success-50` to `--color-success-900`
2706
+ - **Warning**: `--color-warning-50` to `--color-warning-900`
2707
+ - **Error**: `--color-error-50` to `--color-error-900`
2708
+ - **Info**: `--color-info-50` to `--color-info-900`
2709
+
2710
+ ### Typography
2711
+
2712
+ #### Font Families
2713
+ - `--font-inter`: Primary font family
2714
+
2715
+ #### Font Sizes
2716
+ - `--text-xs-size` (0.75rem)
2717
+ - `--text-sm-size` (0.875rem)
2718
+ - `--text-base-size` (1rem)
2719
+ - `--text-lg-size` (1.125rem)
2720
+ - `--text-xl-size` (1.25rem)
2721
+ - And more...
2722
+
2723
+ #### Font Weights
2724
+ - `--font-light` (300)
2725
+ - `--font-normal` (400)
2726
+ - `--font-medium` (500)
2727
+ - `--font-semibold` (600)
2728
+ - `--font-bold` (700)
2729
+
2730
+ ### Spacing
2731
+
2732
+ Spacing scale from 0.5 to 96 (in 0.25rem increments):
2733
+ - `--spacing-0-5` (0.125rem)
2734
+ - `--spacing-1` (0.25rem)
2735
+ - `--spacing-2` (0.5rem)
2736
+ - `--spacing-4` (1rem)
2737
+ - `--spacing-8` (2rem)
2738
+ - And more...
2739
+
2740
+ ### Shadows
2741
+
2742
+ - `--shadow-xs`: Extra small shadow
2743
+ - `--shadow-sm`: Small shadow
2744
+ - `--shadow-md`: Medium shadow
2745
+ - `--shadow-lg`: Large shadow
2746
+ - `--shadow-xl`: Extra large shadow
2747
+
2748
+ ### Border Radius
2749
+
2750
+ - `--radius-sm` (0.125rem)
2751
+ - `--radius-md` (0.25rem)
2752
+ - `--radius-lg` (0.5rem)
2753
+ - `--radius-xl` (1rem)
2754
+ - `--radius-full` (9999px)
2755
+
2756
+ ## Component Styles
2757
+
2758
+ The package includes pre-built component styles that follow the Bellhop design system. These are automatically applied when using Bellhop components.
2759
+
2760
+ ### Layout Classes
156
2761
 
157
- **Utilities**:
158
2762
  ```css
159
- .u-margin-top-4 { }
160
- .u-flex { }
161
- .u-text-center { }
2763
+ .app-layout { /* Dashboard layout */ }
2764
+ .app-sidebar { /* Sidebar container */ }
2765
+ .app-main { /* Main content area */ }
2766
+ .bellhop-content-container { /* Content wrapper */ }
162
2767
  ```
163
2768
 
164
- ### Token Usage
2769
+ ## Framework Integration
165
2770
 
166
- Always prefer tokens over hard-coded values:
2771
+ ### React
167
2772
 
168
- ❌ **Don't**:
169
- ```css
170
- .button {
171
- background: #0ea5e9;
172
- padding: 16px;
173
- font-size: 14px;
2773
+ ```tsx
2774
+ import '@actabldesign/bellhop-styles';
2775
+
2776
+ function App() {
2777
+ return (
2778
+ <div className="app-layout">
2779
+ {/* Your components */}
2780
+ </div>
2781
+ );
174
2782
  }
175
2783
  ```
176
2784
 
177
- **Do**:
2785
+ ### Angular
2786
+
2787
+ Add to your `src/styles.css`:
2788
+
178
2789
  ```css
179
- .button {
180
- background: var(--color-primary-500);
181
- padding: var(--spacing-4);
182
- font-size: var(--text-sm-size);
183
- }
2790
+ @import '@actabldesign/bellhop-styles';
2791
+ ```
2792
+
2793
+ ### Vanilla JavaScript/HTML
2794
+
2795
+ ```html
2796
+ <link rel="stylesheet" href="node_modules/@actabldesign/bellhop-styles/index.css">
2797
+ ```
2798
+
2799
+ ## Development
2800
+
2801
+ This package is built using Rollup and PostCSS.
2802
+
2803
+ ### Building
2804
+
2805
+ ```bash
2806
+ npm run build:lib:styles
184
2807
  ```
185
2808
 
186
- ### Color Scales
2809
+ ## License
2810
+
2811
+ MIT
2812
+
2813
+ ================
2814
+ File: rollup.config.js
2815
+ ================
2816
+ import postcss from 'rollup-plugin-postcss';
2817
+ import postcssImport from 'postcss-import';
2818
+ import { resolve } from 'path';
187
2819
 
188
- All colors follow a 50-900 scale:
189
- - **50**: Lightest (backgrounds, hover states)
190
- - **500**: Base color (primary action color)
191
- - **900**: Darkest (text, emphasis)
2820
+ export default {
2821
+ input: 'src/index.css',
2822
+ output: {
2823
+ file: 'dist/index.css',
2824
+ format: 'es'
2825
+ },
2826
+ plugins: [
2827
+ postcss({
2828
+ extract: true,
2829
+ plugins: [
2830
+ postcssImport({
2831
+ resolve: (id, basedir) => {
2832
+ // Handle relative imports
2833
+ if (id.startsWith('./')) {
2834
+ return resolve(basedir, id);
2835
+ }
2836
+ return id;
2837
+ }
2838
+ })
2839
+ ],
2840
+ minimize: false,
2841
+ sourceMap: false
2842
+ })
2843
+ ]
2844
+ };
192
2845
 
193
- Use:
194
- - `50-200` for backgrounds
195
- - `300-600` for borders and subtle elements
196
- - `700-900` for text and high contrast
197
2846
 
198
- ## 🔗 Resources
199
2847
 
200
- - **Full Documentation**: See README.md in this directory
201
- - **Repository**: https://github.com/actabldesign/bellhopos
202
- - **NPM**: https://www.npmjs.com/package/@actabldesign/bellhopos-styles
203
2848
 
204
- ---
205
2849
 
206
- **Note**: This file is a pointer to the main documentation. For complete CSS source code and design token details, use `/llms/styles.txt`.
2850
+ ================================================================
2851
+ End of Codebase
2852
+ ================================================================