Design tokens
ng-hub-ui is built on a three-layer token system: reference tokens (--hub-ref-*) hold the raw primitives, system tokens (--hub-sys-*) assign semantic meaning, and component tokens scope styling per component. Every token is a CSS variable, so you can re-theme the whole library at runtime by overriding values at :root or on a wrapper.
Libraries with tokens
Each library declares its own component tokens (--hub-{prefix}-*). Open any to see its documentation.
ng-hub-ui-avatar35 tokens
--hub-avatar-*ng-hub-ui-badges30 tokens--hub-badge-*ng-hub-ui-board75 tokens--hub-board-*ng-hub-ui-breadcrumbs21 tokens--hub-breadcrumb-*ng-hub-ui-buttons46 tokens--hub-btn-*--hub-button-*--hub-dropdown-*--hub-fab-*--hub-speed-*ng-hub-ui-calendar45 tokens--hub-calendar-*ng-hub-ui-forms165 tokens--hub-check-*--hub-datepicker-*--hub-daterangepicker-*--hub-form-*--hub-input-*--hub-label-*--hub-otp-*--hub-select-*--hub-slider-*--hub-switch-*--hub-textarea-*ng-hub-ui-milestones23 tokens--hub-milestone-*ng-hub-ui-modal90 tokens--hub-modal-*ng-hub-ui-nav120 tokens--hub-nav-*ng-hub-ui-paginable218 tokens--hub-list-*--hub-paginator-*--hub-table-*ng-hub-ui-panels143 tokens--hub-accordion-*--hub-panels-*ng-hub-ui-skeleton14 tokens--hub-skeleton-*ng-hub-ui-stepper46 tokens--hub-stepper-*ng-hub-ui-toast26 tokens--hub-toast-*ng-hub-ui-utils21 tokens--hub-overlay-*--hub-tooltip-*Reference (--hub-ref-*)
| Color | Token | Value | Resolved |
|---|---|---|---|
--hub-ref-color-white | #ffffff | — | |
--hub-ref-color-black | #000000 | — | |
--hub-ref-color-gray-100 | #f8f9fa | — | |
--hub-ref-color-gray-200 | #e9ecef | — | |
--hub-ref-color-gray-300 | #dee2e6 | — | |
--hub-ref-color-gray-400 | #ced4da | — | |
--hub-ref-color-gray-500 | #adb5bd | — | |
--hub-ref-color-gray-600 | #6c757d | — | |
--hub-ref-color-gray-700 | #495057 | — | |
--hub-ref-color-gray-800 | #343a40 | — | |
--hub-ref-color-gray-900 | #212529 | — | |
--hub-ref-color-blue-100 | #cfe2ff | — | |
--hub-ref-color-blue-200 | #9ec5fe | — | |
--hub-ref-color-blue-300 | #6ea8fe | — | |
--hub-ref-color-blue-400 | #3d8bfd | — | |
--hub-ref-color-blue-500 | #0d6efd | — | |
--hub-ref-color-blue-600 | #0a58ca | — | |
--hub-ref-color-blue-700 | #084298 | — | |
--hub-ref-color-blue-800 | #052c65 | — | |
--hub-ref-color-blue-900 | #031633 | — | |
--hub-ref-color-green-100 | #d1e7dd | — | |
--hub-ref-color-green-200 | #a3cfbb | — | |
--hub-ref-color-green-300 | #75b798 | — | |
--hub-ref-color-green-400 | #479f76 | — | |
--hub-ref-color-green-500 | #198754 | — | |
--hub-ref-color-green-600 | #146c43 | — | |
--hub-ref-color-green-700 | #0f5132 | — | |
--hub-ref-color-green-800 | #0a3622 | — | |
--hub-ref-color-green-900 | #051b11 | — | |
--hub-ref-color-red-100 | #f8d7da | — | |
--hub-ref-color-red-200 | #f1aeb5 | — | |
--hub-ref-color-red-300 | #ea868f | — | |
--hub-ref-color-red-400 | #e35d6a | — | |
--hub-ref-color-red-500 | #dc3545 | — | |
--hub-ref-color-red-600 | #b02a37 | — | |
--hub-ref-color-red-700 | #842029 | — | |
--hub-ref-color-red-800 | #58151c | — | |
--hub-ref-color-red-900 | #2c0b0e | — | |
--hub-ref-color-yellow-100 | #fff3cd | — | |
--hub-ref-color-yellow-200 | #ffe69c | — | |
--hub-ref-color-yellow-300 | #ffda6a | — | |
--hub-ref-color-yellow-400 | #ffcd39 | — | |
--hub-ref-color-yellow-500 | #ffc107 | — | |
--hub-ref-color-yellow-600 | #cc9a06 | — | |
--hub-ref-color-yellow-700 | #997404 | — | |
--hub-ref-color-yellow-800 | #664d03 | — | |
--hub-ref-color-yellow-900 | #332701 | — | |
--hub-ref-color-cyan-100 | #cff4fc | — | |
--hub-ref-color-cyan-200 | #9eeaf9 | — | |
--hub-ref-color-cyan-300 | #6edff6 | — | |
--hub-ref-color-cyan-400 | #3dd5f3 | — | |
--hub-ref-color-cyan-500 | #0dcaf0 | — | |
--hub-ref-color-cyan-600 | #0aa2c0 | — | |
--hub-ref-color-cyan-700 | #087990 | — | |
--hub-ref-color-cyan-800 | #055160 | — | |
--hub-ref-color-cyan-900 | #032830 | — | |
--hub-ref-surface-1 | #ffffff | — | |
--hub-ref-surface-2 | #f8f9fa | — | |
--hub-ref-space-0 | 0 | — | |
--hub-ref-space-1 | 0.25rem | — | |
--hub-ref-space-2 | 0.5rem | — | |
--hub-ref-space-3 | 1rem | — | |
--hub-ref-space-4 | 1.5rem | — | |
--hub-ref-space-5 | 3rem | — | |
--hub-ref-space-6 | 4.5rem | — | |
--hub-ref-space-7 | 6rem | — | |
--hub-ref-radius-none | 0 | — | |
--hub-ref-radius-sm | 0.25rem | — | |
--hub-ref-radius-md | 0.375rem | — | |
--hub-ref-radius-lg | 0.5rem | — | |
--hub-ref-radius-pill | 50rem | — | |
--hub-ref-border-width | 1px | — | |
--hub-ref-font-family-base | system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif | — | |
--hub-ref-font-family-display | 'Sora', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif | — | |
--hub-ref-font-family-mono | SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace | — | |
--hub-ref-font-size-base | 1rem | — | |
--hub-ref-font-size-xs | 0.75rem | — | |
--hub-ref-font-size-sm | 0.875rem | — | |
--hub-ref-font-size-lg | 1.25rem | — | |
--hub-ref-font-weight-light | 300 | — | |
--hub-ref-font-weight-base | 400 | — | |
--hub-ref-font-weight-medium | 500 | — | |
--hub-ref-font-weight-semibold | 600 | — | |
--hub-ref-font-weight-bold | 700 | — | |
--hub-ref-line-height-base | 1.5 | — | |
--hub-ref-line-height-sm | 1.25 | — | |
--hub-ref-line-height-lg | 2 | — | |
--hub-ref-icon-size | 1em | — |
System (--hub-sys-*)
| Color | Token | Value | Resolved |
|---|---|---|---|
--hub-sys-color-primary | var(--hub-ref-color-blue-500, #0d6efd) | — | |
--hub-sys-color-secondary | var(--hub-ref-color-gray-600, #6c757d) | — | |
--hub-sys-color-success | var(--hub-ref-color-green-500, #198754) | — | |
--hub-sys-color-danger | var(--hub-ref-color-red-500, #dc3545) | — | |
--hub-sys-color-warning | var(--hub-ref-color-yellow-500, #ffc107) | — | |
--hub-sys-color-info | var(--hub-ref-color-cyan-500, #0dcaf0) | — | |
--hub-sys-color-neutral | var(--hub-ref-color-gray-600, #6c757d) | — | |
--hub-sys-color-light | var(--hub-ref-color-gray-100, #f8f9fa) | — | |
--hub-sys-color-dark | var(--hub-ref-color-gray-900, #212529) | — | |
--hub-sys-color-primary-subtle | color-mix( in oklch, var(--hub-sys-color-primary) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-primary-border-subtle | color-mix( in oklch, var(--hub-sys-color-primary) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-primary-emphasis | color-mix( in oklch, var(--hub-sys-color-primary) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-primary-on | oklch(from var(--hub-sys-color-primary) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-secondary-subtle | color-mix( in oklch, var(--hub-sys-color-secondary) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-secondary-border-subtle | color-mix( in oklch, var(--hub-sys-color-secondary) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-secondary-emphasis | color-mix( in oklch, var(--hub-sys-color-secondary) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-secondary-on | oklch(from var(--hub-sys-color-secondary) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-success-subtle | color-mix( in oklch, var(--hub-sys-color-success) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-success-border-subtle | color-mix( in oklch, var(--hub-sys-color-success) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-success-emphasis | color-mix( in oklch, var(--hub-sys-color-success) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-success-on | oklch(from var(--hub-sys-color-success) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-danger-subtle | color-mix( in oklch, var(--hub-sys-color-danger) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-danger-border-subtle | color-mix( in oklch, var(--hub-sys-color-danger) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-danger-emphasis | color-mix( in oklch, var(--hub-sys-color-danger) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-danger-on | oklch(from var(--hub-sys-color-danger) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-warning-subtle | color-mix( in oklch, var(--hub-sys-color-warning) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-warning-border-subtle | color-mix( in oklch, var(--hub-sys-color-warning) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-warning-emphasis | color-mix( in oklch, var(--hub-sys-color-warning) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-warning-on | oklch(from var(--hub-sys-color-warning) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-info-subtle | color-mix( in oklch, var(--hub-sys-color-info) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-info-border-subtle | color-mix( in oklch, var(--hub-sys-color-info) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-info-emphasis | color-mix( in oklch, var(--hub-sys-color-info) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-info-on | oklch(from var(--hub-sys-color-info) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-neutral-subtle | color-mix( in oklch, var(--hub-sys-color-neutral) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-neutral-border-subtle | color-mix( in oklch, var(--hub-sys-color-neutral) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-neutral-emphasis | color-mix( in oklch, var(--hub-sys-color-neutral) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-neutral-on | oklch(from var(--hub-sys-color-neutral) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-light-subtle | color-mix( in oklch, var(--hub-sys-color-light) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-light-border-subtle | color-mix( in oklch, var(--hub-sys-color-light) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-light-emphasis | color-mix( in oklch, var(--hub-sys-color-light) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-light-on | oklch(from var(--hub-sys-color-light) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-dark-subtle | color-mix( in oklch, var(--hub-sys-color-dark) 12%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-dark-border-subtle | color-mix( in oklch, var(--hub-sys-color-dark) 35%, var(--hub-sys-surface-page, #fff) ) | — | |
--hub-sys-color-dark-emphasis | color-mix( in oklch, var(--hub-sys-color-dark) 80%, var(--hub-sys-color-ink, #212529) ) | — | |
--hub-sys-color-dark-on | oklch(from var(--hub-sys-color-dark) clamp(0, (0.62 - l) * 1000, 1) 0 h) | — | |
--hub-sys-color-ink | var(--hub-ref-color-gray-900, #212529) | — | |
--hub-sys-color-brand-default | var(--hub-sys-color-primary, #0d6efd) | — | |
--hub-sys-color-brand-on-default | var(--hub-ref-color-white, #fff) | — | |
--hub-sys-gradient-1 | #7c3aed | — | |
--hub-sys-gradient-2 | #db2777 | — | |
--hub-sys-gradient-3 | #d97706 | — | |
--hub-sys-gradient-accent | linear-gradient( 135deg, var(--hub-sys-gradient-1) 0%, var(--hub-sys-gradient-2) 50%, var(--hub-sys-gradient-3) 100% ) | — | |
--hub-sys-surface-page | var(--hub-ref-surface-1, #ffffff) | — | |
--hub-sys-surface-elevated | var(--hub-ref-surface-2, #f8f9fa) | — | |
--hub-sys-color-surface-default | var(--hub-sys-surface-page, #ffffff) | — | |
--hub-sys-color-surface-subtle | var(--hub-sys-surface-elevated, #f8f9fa) | — | |
--hub-sys-text-primary | var(--hub-ref-color-gray-900, #212529) | — | |
--hub-sys-text-muted | var(--hub-ref-color-gray-600, #6c757d) | — | |
--hub-sys-color-text-subtle | var(--hub-sys-text-muted, #6c757d) | — | |
--hub-sys-link-color | var(--hub-sys-color-primary, #0d6efd) | — | |
--hub-sys-link-hover-color | var(--hub-ref-color-blue-600, #0a58ca) | — | |
--hub-sys-border-color-default | var(--hub-ref-color-gray-300, #dee2e6) | — | |
--hub-sys-color-border-subtle | var(--hub-sys-border-color-default, #dee2e6) | — | |
--hub-sys-shadow-sm | 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) | — | |
--hub-sys-shadow | 0 0.5rem 1rem rgba(0, 0, 0, 0.15) | — | |
--hub-sys-shadow-lg | 0 1rem 3rem rgba(0, 0, 0, 0.175) | — | |
--hub-sys-shadow-inset | inset 0 1px 2px rgba(0, 0, 0, 0.075) | — | |
--hub-sys-shadow-none | none | — | |
--hub-sys-shadow-md | var(--hub-sys-shadow, 0 0.5rem 1rem rgba(0, 0, 0, 0.15)) | — | |
--hub-sys-radius-none | var(--hub-ref-radius-none, 0) | — | |
--hub-sys-radius-sm | var(--hub-ref-radius-sm, 0.25rem) | — | |
--hub-sys-radius-md | var(--hub-ref-radius-md, 0.375rem) | — | |
--hub-sys-radius-lg | var(--hub-ref-radius-lg, 0.5rem) | — | |
--hub-sys-radius-pill | var(--hub-ref-radius-pill, 9999px) | — | |
--hub-sys-size-full | 100% | — | |
--hub-sys-size-auto | auto | — | |
--hub-sys-size-min | min-content | — | |
--hub-sys-size-max | max-content | — | |
--hub-sys-size-fit | fit-content | — | |
--hub-sys-size-1-2 | 50% | — | |
--hub-sys-size-1-3 | 33.333333% | — | |
--hub-sys-size-2-3 | 66.666667% | — | |
--hub-sys-size-1-4 | 25% | — | |
--hub-sys-size-3-4 | 75% | — | |
--hub-sys-container-max-width-sm | 540px | — | |
--hub-sys-container-max-width-md | 720px | — | |
--hub-sys-container-max-width-lg | 960px | — | |
--hub-sys-container-max-width-xl | 1140px | — | |
--hub-sys-container-max-width-xxl | 1320px | — | |
--hub-sys-grid-columns | 12 | — | |
--hub-sys-grid-gutter-x | var(--hub-ref-space-4, 1.5rem) | — | |
--hub-sys-grid-gutter-y | var(--hub-ref-space-0, 0) | — | |
--hub-sys-gap-0 | var(--hub-ref-space-0, 0) | — | |
--hub-sys-gap-1 | var(--hub-ref-space-1, 0.25rem) | — | |
--hub-sys-gap-2 | var(--hub-ref-space-2, 0.5rem) | — | |
--hub-sys-gap-3 | var(--hub-ref-space-3, 1rem) | — | |
--hub-sys-gap-4 | var(--hub-ref-space-4, 1.5rem) | — | |
--hub-sys-gap-5 | var(--hub-ref-space-5, 3rem) | — | |
--hub-sys-focus-ring-width | 0.25rem | — | |
--hub-sys-focus-ring-color | rgba(13, 110, 253, 0.25) | — | |
--hub-sys-focus-ring-offset | 2px | — | |
--hub-sys-hit-area-min-size | 44px | — | |
--hub-sys-text-contrast-min | 4.5 | — | |
--hub-sys-zindex-dropdown | 1000 | — | |
--hub-sys-zindex-sticky | 1020 | — | |
--hub-sys-zindex-fixed | 1030 | — | |
--hub-sys-zindex-modal-backdrop | 1050 | — | |
--hub-sys-zindex-modal | 1055 | — | |
--hub-sys-zindex-popover | 1070 | — | |
--hub-sys-zindex-tooltip | 1080 | — | |
--hub-sys-zindex-toast | 1090 | — | |
--hub-sys-breakpoint-xs | 0 | — | |
--hub-sys-breakpoint-sm | 576px | — | |
--hub-sys-breakpoint-md | 768px | — | |
--hub-sys-breakpoint-lg | 992px | — | |
--hub-sys-breakpoint-xl | 1200px | — | |
--hub-sys-breakpoint-xxl | 1400px | — | |
--hub-sys-opacity-0 | 0 | — | |
--hub-sys-opacity-25 | 0.25 | — | |
--hub-sys-opacity-50 | 0.5 | — | |
--hub-sys-opacity-75 | 0.75 | — | |
--hub-sys-opacity-100 | 1 | — | |
--hub-sys-opacity-disabled | 0.65 | — | |
--hub-sys-state-hover-bg | rgba(0, 0, 0, 0.075) | — | |
--hub-sys-state-active-bg | rgba(0, 0, 0, 0.1) | — | |
--hub-sys-state-striped-bg | rgba(0, 0, 0, 0.05) | — | |
--hub-sys-transition-fast | all 0.15s ease-in-out | — | |
--hub-sys-transition-base | all 0.2s ease-in-out | — | |
--hub-sys-transition-slow | all 0.3s ease-in-out | — | |
--hub-sys-transition-fade | opacity 0.15s linear | — | |
--hub-sys-transition-collapse | height 0.35s ease | — | |
--hub-sys-transition-duration-base | 260ms | — | |
--hub-sys-transition-timing-function-base | ease | — |