@filip.mazev/blocks-core 1.0.27 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/filip.mazev-blocks-core.mjs +32 -18
- package/fesm2022/filip.mazev-blocks-core.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/styles/_index.scss +3 -1
- package/src/lib/styles/_palettes.scss +30 -2
- package/src/lib/styles/_theme-engine.scss +246 -0
- package/src/lib/styles/themes/_green-theme.scss +4 -0
- package/src/lib/styles/themes/_high-contrast-theme.scss +119 -100
- package/src/lib/styles/themes/_orange-theme.scss +3 -98
- package/src/lib/styles/themes/_purple-theme.scss +3 -100
- package/src/lib/styles/themes/_red-theme.scss +4 -0
- package/types/filip.mazev-blocks-core.d.ts +3 -2
- package/src/lib/styles/_theme-provider.scss +0 -37
|
@@ -378,7 +378,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
378
378
|
}]
|
|
379
379
|
}], ctorParameters: () => [] });
|
|
380
380
|
|
|
381
|
-
const PALETTE_NAMES = ['orange', 'purple', '
|
|
381
|
+
const PALETTE_NAMES = ['orange', 'purple', 'red', 'green', 'danger', 'success', 'information', 'neutral'];
|
|
382
382
|
const SHADE_NUMBERS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];
|
|
383
383
|
const TOKEN_PREFIX = 'bx';
|
|
384
384
|
const TOKEN_DELIMITER = '-';
|
|
@@ -404,22 +404,34 @@ const SEMANTIC_PAIRS = {
|
|
|
404
404
|
'border-default': 'bg-surface',
|
|
405
405
|
'border-strong': 'bg-surface',
|
|
406
406
|
'border-brand': 'bg-surface',
|
|
407
|
-
'info
|
|
408
|
-
'info-
|
|
409
|
-
'info-
|
|
410
|
-
'info-
|
|
411
|
-
'
|
|
412
|
-
'
|
|
413
|
-
'
|
|
414
|
-
'success
|
|
415
|
-
'
|
|
416
|
-
'
|
|
417
|
-
'
|
|
418
|
-
'
|
|
419
|
-
'
|
|
420
|
-
'
|
|
421
|
-
'
|
|
422
|
-
'
|
|
407
|
+
'bg-info': 'text-info',
|
|
408
|
+
'bg-info-active': 'text-info',
|
|
409
|
+
'bg-info-hover': 'text-info',
|
|
410
|
+
'bg-info-disabled': 'border-info',
|
|
411
|
+
'bg-info-subtle': 'border-info',
|
|
412
|
+
'border-info': 'bg-info',
|
|
413
|
+
'text-info': 'bg-info',
|
|
414
|
+
'bg-success': 'text-success',
|
|
415
|
+
'bg-success-active': 'text-success',
|
|
416
|
+
'bg-success-hover': 'text-success',
|
|
417
|
+
'bg-success-disabled': 'border-success',
|
|
418
|
+
'bg-success-subtle': 'border-success',
|
|
419
|
+
'border-success': 'bg-success',
|
|
420
|
+
'text-success': 'bg-success',
|
|
421
|
+
'bg-warn': 'text-warn',
|
|
422
|
+
'bg-warn-active': 'text-warn',
|
|
423
|
+
'bg-warn-hover': 'text-warn',
|
|
424
|
+
'bg-warn-disabled': 'border-warn',
|
|
425
|
+
'bg-warn-subtle': 'border-warn',
|
|
426
|
+
'border-warn': 'bg-warn',
|
|
427
|
+
'text-warn': 'bg-warn',
|
|
428
|
+
'bg-danger': 'text-danger',
|
|
429
|
+
'bg-danger-active': 'text-danger',
|
|
430
|
+
'bg-danger-hover': 'text-danger',
|
|
431
|
+
'bg-danger-disabled': 'border-danger',
|
|
432
|
+
'bg-danger-subtle': 'border-danger',
|
|
433
|
+
'border-danger': 'bg-danger',
|
|
434
|
+
'text-danger': 'bg-danger',
|
|
423
435
|
'scroll-bg': 'bg-surface',
|
|
424
436
|
'scroll-thumb': 'scroll-bg',
|
|
425
437
|
'scroll-thumb-hover': 'scroll-bg'
|
|
@@ -427,6 +439,9 @@ const SEMANTIC_PAIRS = {
|
|
|
427
439
|
|
|
428
440
|
const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';
|
|
429
441
|
|
|
442
|
+
// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.
|
|
443
|
+
// Update the $required-theme-keys in the _theme-engine.scss file instead.
|
|
444
|
+
|
|
430
445
|
/**
|
|
431
446
|
* Type Guard: Detects if a token is a static palette shade (e.g., 'orange-500')
|
|
432
447
|
*/
|
|
@@ -455,7 +470,6 @@ function resolveTokenToCssVar(token) {
|
|
|
455
470
|
*/
|
|
456
471
|
function getComplementaryToken(token) {
|
|
457
472
|
if (!isPaletteToken(token)) {
|
|
458
|
-
console.log(SEMANTIC_PAIRS[token]);
|
|
459
473
|
return SEMANTIC_PAIRS[token] || 'surface';
|
|
460
474
|
}
|
|
461
475
|
const parts = token.split(TOKEN_DELIMITER);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-blocks-core.mjs","sources":["../../../projects/blocks-core/src/lib/enums/desktop-os.enum.ts","../../../projects/blocks-core/src/lib/enums/mobile-os.enum.ts","../../../projects/blocks-core/src/lib/services/device-type.service.ts","../../../projects/blocks-core/src/lib/constants/window-dimension.constants.ts","../../../projects/blocks-core/src/lib/services/window-dimension.service.ts","../../../projects/blocks-core/src/lib/services/scroll-lock.service.ts","../../../projects/blocks-core/src/lib/services/theming.service.ts","../../../projects/blocks-core/src/lib/constants/tokens.constants.ts","../../../projects/blocks-core/src/lib/constants/scroll-lock.constants.ts","../../../projects/blocks-core/src/lib/helpers/token-functions.ts","../../../projects/blocks-core/src/lib/helpers/uui4.ts","../../../projects/blocks-core/src/public-api.ts","../../../projects/blocks-core/src/filip.mazev-blocks-core.ts"],"sourcesContent":["export enum DesktopOS {\n Linux = 'linux',\n MacOS = 'mac_os',\n Unix = 'unix',\n Unknown = 'unknown',\n Windows = 'windows'\n}\n","export enum MobileOS {\n Android = 'android',\n iOS = 'ios',\n Unknown = 'unknown',\n WindowsPhone = 'Windows Phone'\n}\n","import { Injectable } from '@angular/core';\nimport { DesktopOS } from '../enums/desktop-os.enum';\nimport { MobileOS } from '../enums/mobile-os.enum';\nimport { DeviceState } from '../interfaces/device-state.interface';\nimport { DeviceOS, DeviceOrientationType, LegacyScreenOrientation, MSStreamWindow, OperaCapableWindow } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceTypeService {\n private readonly isDesktopDevice = !this.isMobileDevice() && !this.isTabletDevice();\n private userAgent?: string = navigator.userAgent || navigator.vendor || (window as OperaCapableWindow)?.opera || undefined;\n\n private supportedScreenOrientation =\n (screen?.orientation || {}).type ?? (screen as LegacyScreenOrientation).mozOrientation ?? (screen as LegacyScreenOrientation).msOrientation;\n\n private safariScreenOrientation: DeviceOrientationType =\n !screen?.orientation && matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary';\n\n private initialScreenOrientation: DeviceOrientationType = this.supportedScreenOrientation ?? this.safariScreenOrientation ?? 'portrait-primary';\n private screenOrientation: DeviceOrientationType = this.initialScreenOrientation;\n\n constructor() {\n if (screen.orientation) {\n screen.orientation.addEventListener('change', (ev: Event) => {\n const orientation = ev.target as ScreenOrientation | null;\n if (orientation?.type) {\n this.screenOrientation = orientation.type;\n }\n });\n }\n }\n\n public isLandscapeOrientation(): boolean {\n return ['landscape-primary', 'landscape-secondary'].includes(this.screenOrientation);\n }\n\n public isPortraitOrientation(): boolean {\n return ['portrait-primary', 'portrait-secondary'].includes(this.screenOrientation);\n }\n\n public getDeviceState(): DeviceState {\n const isDesktop = this.isDesktopDevice;\n const isMobile = this.isMobileDevice();\n const isTablet = this.isTabletDevice();\n const mobileOS: MobileOS | undefined = this.getMobileOS();\n const isAndroidDevice = this.getDeviceOS() === MobileOS.Android;\n const isAppleDevice = this.getDeviceOS() === MobileOS.iOS || this.getDeviceOS() === DesktopOS.MacOS;\n const isUnknownMobileDevice = this.getDeviceOS() === MobileOS.Unknown;\n const desktopOS: DesktopOS | undefined = this.getDesktopOS();\n const isWindowsDesktop = this.getDeviceOS() === DesktopOS.Windows;\n const isLinuxOrUnixDesktop = this.getDeviceOS() === DesktopOS.Linux || this.getDeviceOS() === DesktopOS.Unix;\n\n return {\n isDesktop,\n desktopOS,\n isWindowsDesktop,\n isLinuxOrUnixDesktop,\n isMobile,\n mobileOS,\n isAndroidDevice,\n isAppleDevice,\n isUnknownMobileDevice,\n isTablet,\n isLandscapeOrientation: () => this.isLandscapeOrientation(),\n isPortraitOrientation: () => this.isPortraitOrientation()\n };\n }\n\n private isMobileDevice(): boolean {\n const regexs = [/(Android)(.+)(Mobile)/i, /BlackBerry/i, /iPhone|iPod/i, /Opera Mini/i, /IEMobile/i];\n return regexs.some((b) => this.userAgent?.match(b) !== null);\n }\n\n private isTabletDevice(): boolean {\n const regex = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/;\n return regex.test(this.userAgent?.toLowerCase() ?? '');\n }\n\n private getMobileOS(): MobileOS | undefined {\n if (this.isMobileDevice() && this.userAgent) {\n if (/windows phone/i.test(this.userAgent)) return MobileOS.WindowsPhone;\n else if (/android/i.test(this.userAgent)) return MobileOS.Android;\n else if (/iPad|iPhone|iPod/.test(this.userAgent) && !(window as MSStreamWindow).MSStream) return MobileOS.iOS;\n\n return MobileOS.Unknown;\n }\n return undefined;\n }\n\n private getDesktopOS(): DesktopOS | undefined {\n if (this.isDesktopDevice && this.userAgent) {\n if (this.userAgent.indexOf('Win') !== -1) return DesktopOS.Windows;\n else if (this.userAgent.indexOf('Mac') !== -1) return DesktopOS.MacOS;\n else if (this.userAgent.indexOf('X11') !== -1) return DesktopOS.Unix;\n else if (this.userAgent.indexOf('Linux') !== -1) return DesktopOS.Linux;\n\n return DesktopOS.Unknown;\n } else return undefined;\n }\n\n private getDeviceOS(): DeviceOS | undefined {\n return this.getMobileOS() ?? this.getDesktopOS();\n }\n}\n","export const BREAKPOINTS = {\n xs: 360,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n '3xl': 1920,\n '4xl': 2560\n} as const;\n","import { Injectable, inject, NgZone, PLATFORM_ID, signal, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { BREAKPOINTS } from '../constants/window-dimension.constants';\nimport { WindowDimensions } from '../interfaces/window-dimensions.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WindowDimensionsService {\n public readonly ngZone = inject(NgZone);\n public readonly platformId = inject(PLATFORM_ID);\n\n public readonly isBrowser = isPlatformBrowser(this.platformId);\n\n public readonly _dimensions = signal<WindowDimensions>(this.getCurrentDimensions());\n\n public readonly dimensions = this._dimensions.asReadonly();\n\n public readonly isMobile = computed(() => this.dimensions().width < BREAKPOINTS.md);\n public readonly isTablet = computed(() => this.dimensions().width >= BREAKPOINTS.md && this.dimensions().width < BREAKPOINTS.lg);\n public readonly isDesktop = computed(() => this.dimensions().width >= BREAKPOINTS.lg);\n\n public readonly breakpoints = BREAKPOINTS;\n\n constructor() {\n this.initResizeListener();\n }\n\n private getCurrentDimensions(): WindowDimensions {\n if (!this.isBrowser) {\n return { width: 0, height: 0 };\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n\n private initResizeListener(): void {\n if (!this.isBrowser) return;\n\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(150),\n map(() => this.getCurrentDimensions()),\n distinctUntilChanged((prev, curr) => prev.width === curr.width && prev.height === curr.height)\n )\n .subscribe((dims) => {\n this.ngZone.run(() => {\n this._dimensions.set(dims);\n });\n });\n });\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTypeService } from './device-type.service';\nimport { WindowDimensionsService } from './window-dimension.service';\nimport { IScrollLockConfig } from '../interfaces/scroll-lock-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollLockService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly deviceTypeService = inject(DeviceTypeService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly activeLocks = new Map<string, IScrollLockConfig>();\n private readonly boundHandleTouchMove = this.handleTouchMove.bind(this);\n private readonly boundPreventDefault = this.preventDefault.bind(this);\n\n public readonly _isScrollDisabled = signal(false);\n public readonly isScrollDisabled = this._isScrollDisabled.asReadonly();\n\n private previousBodyPadding: string | null = null;\n\n private pendingListenerTimeout: number | null = null;\n\n public ngOnDestroy(): void {\n if (!this.isBrowser) return;\n this.clearPendingTimeout();\n this.forceCleanupAll();\n }\n\n public disableScroll(usageId: string, config: IScrollLockConfig): void {\n if (!this.isBrowser) return;\n\n const wasDisabled = this._isScrollDisabled();\n\n this.activeLocks.set(usageId, config);\n this._isScrollDisabled.set(true);\n\n if (wasDisabled) return;\n\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n const scrollBarWidth = windowWidth - documentWidth;\n\n if (scrollBarWidth > 0) {\n this.previousBodyPadding = document.body.style.paddingRight;\n const computedPadding = parseInt(getComputedStyle(document.body).paddingRight, 10) || 0;\n\n document.body.style.setProperty('padding-right', `${computedPadding + scrollBarWidth}px`, 'important');\n }\n\n document.body.style.setProperty('overflow', 'hidden', 'important');\n\n if (config.handleTouchInput !== false) {\n document.body.style.setProperty('touch-action', 'none', 'important');\n }\n\n this.clearPendingTimeout();\n\n this.pendingListenerTimeout = window.setTimeout(\n () => {\n if (!this._isScrollDisabled()) return;\n\n if (config.handleTouchInput === true) {\n document.body.addEventListener('touchmove', this.boundHandleTouchMove, { passive: false });\n }\n\n if (config.handleExtremeOverflow === true) {\n const opt = { passive: false };\n window.addEventListener('wheel', this.boundPreventDefault, opt);\n window.addEventListener('mousewheel', this.boundPreventDefault, opt);\n window.addEventListener('scroll', this.boundPreventDefault, opt);\n window.addEventListener('DOMMouseScroll', this.boundPreventDefault, opt);\n }\n },\n (config.animationDuration ?? 0) + 10\n );\n }\n\n public enableScroll(usageId: string, extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n if (!this.activeLocks.has(usageId)) return;\n\n this.activeLocks.delete(usageId);\n\n if (this.activeLocks.size > 0) return;\n\n this.updateStateAndCleanup(extremeOverflow);\n }\n\n private getActiveConfig(): IScrollLockConfig | null {\n if (this.activeLocks.size === 0) return null;\n const keys = Array.from(this.activeLocks.keys());\n return this.activeLocks.get(keys[keys.length - 1]) ?? null;\n }\n\n private updateStateAndCleanup(extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n this.clearPendingTimeout();\n\n this._isScrollDisabled.set(false);\n\n document.body.style.removeProperty('overflow');\n\n if (this.previousBodyPadding !== null) {\n if (this.previousBodyPadding) {\n document.body.style.setProperty('padding-right', this.previousBodyPadding);\n } else {\n document.body.style.removeProperty('padding-right');\n }\n this.previousBodyPadding = null;\n }\n\n document.body.removeEventListener('touchmove', this.boundHandleTouchMove);\n document.body.style.removeProperty('touch-action');\n\n if (extremeOverflow !== false) {\n window.removeEventListener('wheel', this.boundPreventDefault);\n window.removeEventListener('mousewheel', this.boundPreventDefault);\n window.removeEventListener('scroll', this.boundPreventDefault);\n window.removeEventListener('DOMMouseScroll', this.boundPreventDefault);\n }\n }\n\n private forceCleanupAll(): void {\n this.activeLocks.clear();\n this.updateStateAndCleanup(true);\n }\n\n private clearPendingTimeout(): void {\n if (this.pendingListenerTimeout !== null) {\n clearTimeout(this.pendingListenerTimeout);\n this.pendingListenerTimeout = null;\n }\n }\n\n private handleTouchMove(event: Event): void {\n const targetNode = event.target as Node;\n const cfg = this.getActiveConfig();\n\n if (!this.isAllowedToScroll(targetNode) && (cfg === null || cfg.handleTouchInput !== false)) {\n if (\n cfg === null ||\n cfg.mobileOnlyTouchPrevention !== true ||\n (cfg.mobileOnlyTouchPrevention === true &&\n (!this.deviceTypeService.getDeviceState().isMobile || !this.deviceTypeService.getDeviceState().isTablet) &&\n this.windowDimensionsService.dimensions().width < this.windowDimensionsService.breakpoints.sm)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n private isAllowedToScroll(targetNode: Node): boolean {\n const cfg = this.getActiveConfig();\n const allow = cfg?.allowTouchInputOn;\n\n if (!allow) return true;\n\n if (Array.isArray(allow)) {\n if (allow.length === 0) return true;\n return allow.some((el) => el.contains(targetNode));\n }\n\n return false;\n }\n\n private preventDefault(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '@core/types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = localStorage.getItem('theme') as DeviceTheme | null;\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.mediaQueryList && this.mediaQueryListener) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\n }\n }\n\n public setApplicationTheme(theme: DeviceTheme): void {\n this._applicationTheme.set(theme);\n if (this.isBrowser) {\n localStorage.setItem('theme', theme);\n }\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private detectInitialSystemTheme(): DeviceTheme {\n if (!this.isBrowser) return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n private initSystemThemeListener(): void {\n this.mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = (event: MediaQueryListEvent) => {\n this._systemTheme.set(event.matches ? 'dark' : 'light');\n };\n this.mediaQueryList.addEventListener('change', this.mediaQueryListener);\n }\n}\n","import { SemanticColorToken } from '../../public-api';\n\nexport const PALETTE_NAMES = ['orange', 'purple', 'error', 'success', 'information', 'neutral'] as const;\nexport const SHADE_NUMBERS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] as const;\n\nexport const TOKEN_PREFIX = 'bx';\nexport const TOKEN_DELIMITER = '-';\nexport const TOKEN_COLOR_DELIMITER = 'color';\nexport const FALLBACK_COLOR = '#000000';\n\nexport const SEMANTIC_PAIRS: Partial<Record<SemanticColorToken, SemanticColorToken>> = {\n 'bg-canvas': 'text-primary',\n 'bg-surface': 'text-primary',\n 'bg-surface-alt': 'text-primary',\n 'bg-element': 'text-primary',\n 'bg-element-hover': 'text-primary',\n\n 'text-heading': 'bg-surface',\n 'text-primary': 'bg-surface',\n 'text-secondary': 'bg-surface',\n 'text-brand': 'bg-surface',\n 'text-inverse': 'primary',\n 'on-primary': 'primary',\n\n primary: 'primary-subtle',\n 'primary-hover': 'on-primary',\n 'primary-active': 'on-primary',\n 'primary-subtle': 'text-primary',\n\n 'border-subtle': 'bg-surface',\n 'border-default': 'bg-surface',\n 'border-strong': 'bg-surface',\n 'border-brand': 'bg-surface',\n\n 'info-bg': 'info-text',\n 'info-bg-subtle': 'info-border',\n 'info-border': 'info-bg',\n 'info-text': 'info-bg',\n\n 'success-bg': 'success-text',\n 'success-bg-subtle': 'success-border',\n 'success-border': 'success-bg',\n 'success-text': 'success-bg',\n\n 'warn-bg': 'warn-text',\n 'warn-bg-subtle': 'warn-border',\n 'warn-border': 'warn-bg',\n 'warn-text': 'warn-bg',\n\n 'error-bg': 'error-text',\n 'error-bg-subtle': 'error-border',\n 'error-border': 'error-bg',\n 'error-text': 'error-bg',\n\n 'scroll-bg': 'bg-surface',\n 'scroll-thumb': 'scroll-bg',\n 'scroll-thumb-hover': 'scroll-bg'\n};\n","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","import { Color, SemanticColorToken, ThemeColorToken, ThemedColor } from '../types/tokens.types';\nimport * as tokenConsts from '../constants/tokens.constants';\n\n/**\n * Type Guard: Detects if a token is a static palette shade (e.g., 'orange-500')\n */\nexport function isPaletteToken(token: Color): token is ThemeColorToken {\n return /-\\d+$/.test(token);\n}\n\n/**\n * Type Guard: Detects if the provided color is a ThemedColor configuration object.\n */\nexport function isThemedColor(color: unknown): color is Extract<ThemedColor, object> {\n return color !== null && typeof color === 'object' && 'light' in color;\n}\n\n/**\n * Returns the correct CSS variable string based on the token type.\n */\nexport function resolveTokenToCssVar(token: Color): string {\n if (isPaletteToken(token)) {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${tokenConsts.TOKEN_COLOR_DELIMITER}${tokenConsts.TOKEN_DELIMITER}${token})`;\n } else {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${token})`;\n }\n}\n\n/**\n * Smartly resolves the complementary background token.\n */\nexport function getComplementaryToken(token: Color): Color {\n if (!isPaletteToken(token)) {\n console.log(tokenConsts.SEMANTIC_PAIRS[token as SemanticColorToken] as Color);\n return (tokenConsts.SEMANTIC_PAIRS[token as SemanticColorToken] as Color) || 'surface';\n }\n\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n const shade = parts.pop();\n const palette = parts.join(tokenConsts.TOKEN_DELIMITER);\n\n const shadeNum = parseInt(shade || '500', 10);\n const bgShade = shadeNum > 400 ? 50 : 900;\n\n return `${palette}-${bgShade}` as Color;\n}\n\n/**\n * Provides the inverted value of a given token color\n */\nexport function invertPaletteToken(token: Color): Color {\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n if (parts.length < 2) return token;\n\n const shadeStr = parts.pop();\n const base = parts.join(tokenConsts.TOKEN_DELIMITER);\n const shade = Number(shadeStr);\n\n if (isNaN(shade)) return token;\n\n let invertedShade: number;\n if (shade === 50) invertedShade = 900;\n else if (shade === 1000) invertedShade = 50;\n else invertedShade = 1000 - shade;\n\n const finalShade = (tokenConsts.SHADE_NUMBERS as readonly number[]).includes(invertedShade) ? invertedShade : shade;\n\n return `${base}-${finalShade}` as Color;\n}\n","export function uuidv4() {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16));\n}\n","/*\n * Public API Surface of blocks-core\n */\n\nexport * from './lib/services/device-type.service';\nexport * from './lib/services/scroll-lock.service';\nexport * from './lib/services/window-dimension.service';\nexport * from './lib/services/theming.service';\n\nexport * from './lib/enums/desktop-os.enum';\nexport * from './lib/enums/mobile-os.enum';\n\nexport * from './lib/interfaces/device-state.interface';\nexport * from './lib/interfaces/scroll-lock-config.interface';\nexport * from './lib/interfaces/window-dimensions.interface';\n\nexport * from './lib/constants/tokens.constants';\nexport * from './lib/constants/window-dimension.constants';\nexport * from './lib/constants/scroll-lock.constants';\n\nexport * from './lib/types/core.types';\nexport * from './lib/types/tokens.types';\n\nexport * from './lib/helpers/token-functions';\nexport * from './lib/helpers/uui4';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tokenConsts.TOKEN_PREFIX","tokenConsts.TOKEN_DELIMITER","tokenConsts.TOKEN_COLOR_DELIMITER","tokenConsts.SEMANTIC_PAIRS","tokenConsts.SHADE_NUMBERS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filip.mazev-blocks-core.mjs","sources":["../../../projects/blocks-core/src/lib/enums/desktop-os.enum.ts","../../../projects/blocks-core/src/lib/enums/mobile-os.enum.ts","../../../projects/blocks-core/src/lib/services/device-type.service.ts","../../../projects/blocks-core/src/lib/constants/window-dimension.constants.ts","../../../projects/blocks-core/src/lib/services/window-dimension.service.ts","../../../projects/blocks-core/src/lib/services/scroll-lock.service.ts","../../../projects/blocks-core/src/lib/services/theming.service.ts","../../../projects/blocks-core/src/lib/constants/tokens.constants.ts","../../../projects/blocks-core/src/lib/constants/scroll-lock.constants.ts","../../../projects/blocks-core/src/lib/types/theme.types.ts","../../../projects/blocks-core/src/lib/helpers/token-functions.ts","../../../projects/blocks-core/src/lib/helpers/uui4.ts","../../../projects/blocks-core/src/public-api.ts","../../../projects/blocks-core/src/filip.mazev-blocks-core.ts"],"sourcesContent":["export enum DesktopOS {\n Linux = 'linux',\n MacOS = 'mac_os',\n Unix = 'unix',\n Unknown = 'unknown',\n Windows = 'windows'\n}\n","export enum MobileOS {\n Android = 'android',\n iOS = 'ios',\n Unknown = 'unknown',\n WindowsPhone = 'Windows Phone'\n}\n","import { Injectable } from '@angular/core';\nimport { DesktopOS } from '../enums/desktop-os.enum';\nimport { MobileOS } from '../enums/mobile-os.enum';\nimport { DeviceState } from '../interfaces/device-state.interface';\nimport { DeviceOS, DeviceOrientationType, LegacyScreenOrientation, MSStreamWindow, OperaCapableWindow } from '../types/core.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeviceTypeService {\n private readonly isDesktopDevice = !this.isMobileDevice() && !this.isTabletDevice();\n private userAgent?: string = navigator.userAgent || navigator.vendor || (window as OperaCapableWindow)?.opera || undefined;\n\n private supportedScreenOrientation =\n (screen?.orientation || {}).type ?? (screen as LegacyScreenOrientation).mozOrientation ?? (screen as LegacyScreenOrientation).msOrientation;\n\n private safariScreenOrientation: DeviceOrientationType =\n !screen?.orientation && matchMedia('(orientation: portrait)').matches ? 'portrait-primary' : 'landscape-primary';\n\n private initialScreenOrientation: DeviceOrientationType = this.supportedScreenOrientation ?? this.safariScreenOrientation ?? 'portrait-primary';\n private screenOrientation: DeviceOrientationType = this.initialScreenOrientation;\n\n constructor() {\n if (screen.orientation) {\n screen.orientation.addEventListener('change', (ev: Event) => {\n const orientation = ev.target as ScreenOrientation | null;\n if (orientation?.type) {\n this.screenOrientation = orientation.type;\n }\n });\n }\n }\n\n public isLandscapeOrientation(): boolean {\n return ['landscape-primary', 'landscape-secondary'].includes(this.screenOrientation);\n }\n\n public isPortraitOrientation(): boolean {\n return ['portrait-primary', 'portrait-secondary'].includes(this.screenOrientation);\n }\n\n public getDeviceState(): DeviceState {\n const isDesktop = this.isDesktopDevice;\n const isMobile = this.isMobileDevice();\n const isTablet = this.isTabletDevice();\n const mobileOS: MobileOS | undefined = this.getMobileOS();\n const isAndroidDevice = this.getDeviceOS() === MobileOS.Android;\n const isAppleDevice = this.getDeviceOS() === MobileOS.iOS || this.getDeviceOS() === DesktopOS.MacOS;\n const isUnknownMobileDevice = this.getDeviceOS() === MobileOS.Unknown;\n const desktopOS: DesktopOS | undefined = this.getDesktopOS();\n const isWindowsDesktop = this.getDeviceOS() === DesktopOS.Windows;\n const isLinuxOrUnixDesktop = this.getDeviceOS() === DesktopOS.Linux || this.getDeviceOS() === DesktopOS.Unix;\n\n return {\n isDesktop,\n desktopOS,\n isWindowsDesktop,\n isLinuxOrUnixDesktop,\n isMobile,\n mobileOS,\n isAndroidDevice,\n isAppleDevice,\n isUnknownMobileDevice,\n isTablet,\n isLandscapeOrientation: () => this.isLandscapeOrientation(),\n isPortraitOrientation: () => this.isPortraitOrientation()\n };\n }\n\n private isMobileDevice(): boolean {\n const regexs = [/(Android)(.+)(Mobile)/i, /BlackBerry/i, /iPhone|iPod/i, /Opera Mini/i, /IEMobile/i];\n return regexs.some((b) => this.userAgent?.match(b) !== null);\n }\n\n private isTabletDevice(): boolean {\n const regex = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/;\n return regex.test(this.userAgent?.toLowerCase() ?? '');\n }\n\n private getMobileOS(): MobileOS | undefined {\n if (this.isMobileDevice() && this.userAgent) {\n if (/windows phone/i.test(this.userAgent)) return MobileOS.WindowsPhone;\n else if (/android/i.test(this.userAgent)) return MobileOS.Android;\n else if (/iPad|iPhone|iPod/.test(this.userAgent) && !(window as MSStreamWindow).MSStream) return MobileOS.iOS;\n\n return MobileOS.Unknown;\n }\n return undefined;\n }\n\n private getDesktopOS(): DesktopOS | undefined {\n if (this.isDesktopDevice && this.userAgent) {\n if (this.userAgent.indexOf('Win') !== -1) return DesktopOS.Windows;\n else if (this.userAgent.indexOf('Mac') !== -1) return DesktopOS.MacOS;\n else if (this.userAgent.indexOf('X11') !== -1) return DesktopOS.Unix;\n else if (this.userAgent.indexOf('Linux') !== -1) return DesktopOS.Linux;\n\n return DesktopOS.Unknown;\n } else return undefined;\n }\n\n private getDeviceOS(): DeviceOS | undefined {\n return this.getMobileOS() ?? this.getDesktopOS();\n }\n}\n","export const BREAKPOINTS = {\n xs: 360,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n '3xl': 1920,\n '4xl': 2560\n} as const;\n","import { Injectable, inject, NgZone, PLATFORM_ID, signal, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { BREAKPOINTS } from '../constants/window-dimension.constants';\nimport { WindowDimensions } from '../interfaces/window-dimensions.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WindowDimensionsService {\n public readonly ngZone = inject(NgZone);\n public readonly platformId = inject(PLATFORM_ID);\n\n public readonly isBrowser = isPlatformBrowser(this.platformId);\n\n public readonly _dimensions = signal<WindowDimensions>(this.getCurrentDimensions());\n\n public readonly dimensions = this._dimensions.asReadonly();\n\n public readonly isMobile = computed(() => this.dimensions().width < BREAKPOINTS.md);\n public readonly isTablet = computed(() => this.dimensions().width >= BREAKPOINTS.md && this.dimensions().width < BREAKPOINTS.lg);\n public readonly isDesktop = computed(() => this.dimensions().width >= BREAKPOINTS.lg);\n\n public readonly breakpoints = BREAKPOINTS;\n\n constructor() {\n this.initResizeListener();\n }\n\n private getCurrentDimensions(): WindowDimensions {\n if (!this.isBrowser) {\n return { width: 0, height: 0 };\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n\n private initResizeListener(): void {\n if (!this.isBrowser) return;\n\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(150),\n map(() => this.getCurrentDimensions()),\n distinctUntilChanged((prev, curr) => prev.width === curr.width && prev.height === curr.height)\n )\n .subscribe((dims) => {\n this.ngZone.run(() => {\n this._dimensions.set(dims);\n });\n });\n });\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTypeService } from './device-type.service';\nimport { WindowDimensionsService } from './window-dimension.service';\nimport { IScrollLockConfig } from '../interfaces/scroll-lock-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollLockService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly deviceTypeService = inject(DeviceTypeService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n private readonly activeLocks = new Map<string, IScrollLockConfig>();\n private readonly boundHandleTouchMove = this.handleTouchMove.bind(this);\n private readonly boundPreventDefault = this.preventDefault.bind(this);\n\n public readonly _isScrollDisabled = signal(false);\n public readonly isScrollDisabled = this._isScrollDisabled.asReadonly();\n\n private previousBodyPadding: string | null = null;\n\n private pendingListenerTimeout: number | null = null;\n\n public ngOnDestroy(): void {\n if (!this.isBrowser) return;\n this.clearPendingTimeout();\n this.forceCleanupAll();\n }\n\n public disableScroll(usageId: string, config: IScrollLockConfig): void {\n if (!this.isBrowser) return;\n\n const wasDisabled = this._isScrollDisabled();\n\n this.activeLocks.set(usageId, config);\n this._isScrollDisabled.set(true);\n\n if (wasDisabled) return;\n\n const documentWidth = document.documentElement.clientWidth;\n const windowWidth = window.innerWidth;\n const scrollBarWidth = windowWidth - documentWidth;\n\n if (scrollBarWidth > 0) {\n this.previousBodyPadding = document.body.style.paddingRight;\n const computedPadding = parseInt(getComputedStyle(document.body).paddingRight, 10) || 0;\n\n document.body.style.setProperty('padding-right', `${computedPadding + scrollBarWidth}px`, 'important');\n }\n\n document.body.style.setProperty('overflow', 'hidden', 'important');\n\n if (config.handleTouchInput !== false) {\n document.body.style.setProperty('touch-action', 'none', 'important');\n }\n\n this.clearPendingTimeout();\n\n this.pendingListenerTimeout = window.setTimeout(\n () => {\n if (!this._isScrollDisabled()) return;\n\n if (config.handleTouchInput === true) {\n document.body.addEventListener('touchmove', this.boundHandleTouchMove, { passive: false });\n }\n\n if (config.handleExtremeOverflow === true) {\n const opt = { passive: false };\n window.addEventListener('wheel', this.boundPreventDefault, opt);\n window.addEventListener('mousewheel', this.boundPreventDefault, opt);\n window.addEventListener('scroll', this.boundPreventDefault, opt);\n window.addEventListener('DOMMouseScroll', this.boundPreventDefault, opt);\n }\n },\n (config.animationDuration ?? 0) + 10\n );\n }\n\n public enableScroll(usageId: string, extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n if (!this.activeLocks.has(usageId)) return;\n\n this.activeLocks.delete(usageId);\n\n if (this.activeLocks.size > 0) return;\n\n this.updateStateAndCleanup(extremeOverflow);\n }\n\n private getActiveConfig(): IScrollLockConfig | null {\n if (this.activeLocks.size === 0) return null;\n const keys = Array.from(this.activeLocks.keys());\n return this.activeLocks.get(keys[keys.length - 1]) ?? null;\n }\n\n private updateStateAndCleanup(extremeOverflow?: boolean): void {\n if (!this.isBrowser) return;\n\n this.clearPendingTimeout();\n\n this._isScrollDisabled.set(false);\n\n document.body.style.removeProperty('overflow');\n\n if (this.previousBodyPadding !== null) {\n if (this.previousBodyPadding) {\n document.body.style.setProperty('padding-right', this.previousBodyPadding);\n } else {\n document.body.style.removeProperty('padding-right');\n }\n this.previousBodyPadding = null;\n }\n\n document.body.removeEventListener('touchmove', this.boundHandleTouchMove);\n document.body.style.removeProperty('touch-action');\n\n if (extremeOverflow !== false) {\n window.removeEventListener('wheel', this.boundPreventDefault);\n window.removeEventListener('mousewheel', this.boundPreventDefault);\n window.removeEventListener('scroll', this.boundPreventDefault);\n window.removeEventListener('DOMMouseScroll', this.boundPreventDefault);\n }\n }\n\n private forceCleanupAll(): void {\n this.activeLocks.clear();\n this.updateStateAndCleanup(true);\n }\n\n private clearPendingTimeout(): void {\n if (this.pendingListenerTimeout !== null) {\n clearTimeout(this.pendingListenerTimeout);\n this.pendingListenerTimeout = null;\n }\n }\n\n private handleTouchMove(event: Event): void {\n const targetNode = event.target as Node;\n const cfg = this.getActiveConfig();\n\n if (!this.isAllowedToScroll(targetNode) && (cfg === null || cfg.handleTouchInput !== false)) {\n if (\n cfg === null ||\n cfg.mobileOnlyTouchPrevention !== true ||\n (cfg.mobileOnlyTouchPrevention === true &&\n (!this.deviceTypeService.getDeviceState().isMobile || !this.deviceTypeService.getDeviceState().isTablet) &&\n this.windowDimensionsService.dimensions().width < this.windowDimensionsService.breakpoints.sm)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n private isAllowedToScroll(targetNode: Node): boolean {\n const cfg = this.getActiveConfig();\n const allow = cfg?.allowTouchInputOn;\n\n if (!allow) return true;\n\n if (Array.isArray(allow)) {\n if (allow.length === 0) return true;\n return allow.some((el) => el.contains(targetNode));\n }\n\n return false;\n }\n\n private preventDefault(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, OnDestroy, inject, signal, PLATFORM_ID, computed } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DeviceTheme } from '@core/types/core.types';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemingService implements OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n private readonly _systemTheme = signal<DeviceTheme>('light');\n private readonly _applicationTheme = signal<DeviceTheme | null>(null);\n\n public readonly systemTheme = this._systemTheme.asReadonly();\n public readonly applicationTheme = this._applicationTheme.asReadonly();\n public readonly activeTheme = computed(() => this.applicationTheme() ?? this.systemTheme());\n\n private readonly systemTheme$ = toObservable(this._systemTheme);\n private readonly applicationTheme$ = toObservable(this._applicationTheme);\n\n private mediaQueryList?: MediaQueryList;\n private mediaQueryListener?: (event: MediaQueryListEvent) => void;\n\n constructor() {\n if (this.isBrowser) {\n this._systemTheme.set(this.detectInitialSystemTheme());\n\n const storedTheme = localStorage.getItem('theme') as DeviceTheme | null;\n if (storedTheme === 'dark' || storedTheme === 'light') {\n this._applicationTheme.set(storedTheme);\n }\n\n this.initSystemThemeListener();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.mediaQueryList && this.mediaQueryListener) {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\n }\n }\n\n public setApplicationTheme(theme: DeviceTheme): void {\n this._applicationTheme.set(theme);\n if (this.isBrowser) {\n localStorage.setItem('theme', theme);\n }\n }\n\n public getSystemTheme$() {\n return this.systemTheme$;\n }\n\n public getApplicationTheme$() {\n return this.applicationTheme$;\n }\n\n private detectInitialSystemTheme(): DeviceTheme {\n if (!this.isBrowser) return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n private initSystemThemeListener(): void {\n this.mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = (event: MediaQueryListEvent) => {\n this._systemTheme.set(event.matches ? 'dark' : 'light');\n };\n this.mediaQueryList.addEventListener('change', this.mediaQueryListener);\n }\n}\n","import { SemanticColorToken } from '../types/theme.types';\n\nexport const PALETTE_NAMES = ['orange', 'purple', 'red', 'green', 'danger', 'success', 'information', 'neutral'] as const;\nexport const SHADE_NUMBERS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] as const;\n\nexport const TOKEN_PREFIX = 'bx';\nexport const TOKEN_DELIMITER = '-';\nexport const TOKEN_COLOR_DELIMITER = 'color';\nexport const FALLBACK_COLOR = '#000000';\n\nexport const SEMANTIC_PAIRS: Partial<Record<SemanticColorToken, SemanticColorToken>> = {\n 'bg-canvas': 'text-primary',\n 'bg-surface': 'text-primary',\n 'bg-surface-alt': 'text-primary',\n 'bg-element': 'text-primary',\n 'bg-element-hover': 'text-primary',\n\n 'text-heading': 'bg-surface',\n 'text-primary': 'bg-surface',\n 'text-secondary': 'bg-surface',\n 'text-brand': 'bg-surface',\n 'text-inverse': 'primary',\n 'on-primary': 'primary',\n\n primary: 'primary-subtle',\n 'primary-hover': 'on-primary',\n 'primary-active': 'on-primary',\n 'primary-subtle': 'text-primary',\n\n 'border-subtle': 'bg-surface',\n 'border-default': 'bg-surface',\n 'border-strong': 'bg-surface',\n 'border-brand': 'bg-surface',\n\n 'bg-info': 'text-info',\n 'bg-info-active': 'text-info',\n 'bg-info-hover': 'text-info',\n 'bg-info-disabled': 'border-info',\n 'bg-info-subtle': 'border-info',\n 'border-info': 'bg-info',\n 'text-info': 'bg-info',\n\n 'bg-success': 'text-success',\n 'bg-success-active': 'text-success',\n 'bg-success-hover': 'text-success',\n 'bg-success-disabled': 'border-success',\n 'bg-success-subtle': 'border-success',\n 'border-success': 'bg-success',\n 'text-success': 'bg-success',\n\n 'bg-warn': 'text-warn',\n 'bg-warn-active': 'text-warn',\n 'bg-warn-hover': 'text-warn',\n 'bg-warn-disabled': 'border-warn',\n 'bg-warn-subtle': 'border-warn',\n 'border-warn': 'bg-warn',\n 'text-warn': 'bg-warn',\n\n 'bg-danger': 'text-danger',\n 'bg-danger-active': 'text-danger',\n 'bg-danger-hover': 'text-danger',\n 'bg-danger-disabled': 'border-danger',\n 'bg-danger-subtle': 'border-danger',\n 'border-danger': 'bg-danger',\n 'text-danger': 'bg-danger',\n\n 'scroll-bg': 'bg-surface',\n 'scroll-thumb': 'scroll-bg',\n 'scroll-thumb-hover': 'scroll-bg'\n};\n","export const SCROLL_LOCK_INSTANCE_IDENTIFIER = 'scroll_lock_instance_';\n","// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.\n// Update the $required-theme-keys in the _theme-engine.scss file instead.\n\nexport type SemanticColorToken =\n | 'bg-canvas'\n | 'bg-surface'\n | 'bg-surface-alt'\n | 'bg-element'\n | 'bg-element-hover'\n | 'primary'\n | 'primary-hover'\n | 'primary-active'\n | 'primary-subtle'\n | 'on-primary'\n | 'text-heading'\n | 'text-primary'\n | 'text-secondary'\n | 'text-brand'\n | 'text-inverse'\n | 'text-info'\n | 'text-warn'\n | 'text-success'\n | 'text-danger'\n | 'border-subtle'\n | 'border-default'\n | 'border-strong'\n | 'border-brand'\n | 'border-info'\n | 'border-success'\n | 'border-warn'\n | 'border-danger'\n | 'bg-info'\n | 'bg-info-hover'\n | 'bg-info-active'\n | 'bg-info-disabled'\n | 'bg-info-subtle'\n | 'bg-success'\n | 'bg-success-hover'\n | 'bg-success-active'\n | 'bg-success-disabled'\n | 'bg-success-subtle'\n | 'bg-warn'\n | 'bg-warn-hover'\n | 'bg-warn-active'\n | 'bg-warn-disabled'\n | 'bg-warn-subtle'\n | 'bg-danger'\n | 'bg-danger-hover'\n | 'bg-danger-active'\n | 'bg-danger-disabled'\n | 'bg-danger-subtle'\n | 'scroll-bg'\n | 'scroll-thumb'\n | 'scroll-thumb-hover';\n","import { Color, ThemeColorToken, ThemedColor } from '../types/tokens.types';\nimport { SemanticColorToken } from '../types/theme.types';\nimport * as tokenConsts from '../constants/tokens.constants';\n\n/**\n * Type Guard: Detects if a token is a static palette shade (e.g., 'orange-500')\n */\nexport function isPaletteToken(token: Color): token is ThemeColorToken {\n return /-\\d+$/.test(token);\n}\n\n/**\n * Type Guard: Detects if the provided color is a ThemedColor configuration object.\n */\nexport function isThemedColor(color: unknown): color is Extract<ThemedColor, object> {\n return color !== null && typeof color === 'object' && 'light' in color;\n}\n\n/**\n * Returns the correct CSS variable string based on the token type.\n */\nexport function resolveTokenToCssVar(token: Color): string {\n if (isPaletteToken(token)) {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${tokenConsts.TOKEN_COLOR_DELIMITER}${tokenConsts.TOKEN_DELIMITER}${token})`;\n } else {\n return `var(--${tokenConsts.TOKEN_PREFIX}${tokenConsts.TOKEN_DELIMITER}${token})`;\n }\n}\n\n/**\n * Smartly resolves the complementary background token.\n */\nexport function getComplementaryToken(token: Color): Color {\n if (!isPaletteToken(token)) {\n return (tokenConsts.SEMANTIC_PAIRS[token as SemanticColorToken] as Color) || 'surface';\n }\n\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n const shade = parts.pop();\n const palette = parts.join(tokenConsts.TOKEN_DELIMITER);\n\n const shadeNum = parseInt(shade || '500', 10);\n const bgShade = shadeNum > 400 ? 50 : 900;\n\n return `${palette}-${bgShade}` as Color;\n}\n\n/**\n * Provides the inverted value of a given token color\n */\nexport function invertPaletteToken(token: Color): Color {\n const parts = token.split(tokenConsts.TOKEN_DELIMITER);\n if (parts.length < 2) return token;\n\n const shadeStr = parts.pop();\n const base = parts.join(tokenConsts.TOKEN_DELIMITER);\n const shade = Number(shadeStr);\n\n if (isNaN(shade)) return token;\n\n let invertedShade: number;\n if (shade === 50) invertedShade = 900;\n else if (shade === 1000) invertedShade = 50;\n else invertedShade = 1000 - shade;\n\n const finalShade = (tokenConsts.SHADE_NUMBERS as readonly number[]).includes(invertedShade) ? invertedShade : shade;\n\n return `${base}-${finalShade}` as Color;\n}\n","export function uuidv4() {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16));\n}\n","/*\n * Public API Surface of blocks-core\n */\n\nexport * from './lib/services/device-type.service';\nexport * from './lib/services/scroll-lock.service';\nexport * from './lib/services/window-dimension.service';\nexport * from './lib/services/theming.service';\n\nexport * from './lib/enums/desktop-os.enum';\nexport * from './lib/enums/mobile-os.enum';\n\nexport * from './lib/interfaces/device-state.interface';\nexport * from './lib/interfaces/scroll-lock-config.interface';\nexport * from './lib/interfaces/window-dimensions.interface';\n\nexport * from './lib/constants/tokens.constants';\nexport * from './lib/constants/window-dimension.constants';\nexport * from './lib/constants/scroll-lock.constants';\n\nexport * from './lib/types/core.types';\nexport * from './lib/types/tokens.types';\nexport * from './lib/types/theme.types';\n\nexport * from './lib/helpers/token-functions';\nexport * from './lib/helpers/uui4';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tokenConsts.TOKEN_PREFIX","tokenConsts.TOKEN_DELIMITER","tokenConsts.TOKEN_COLOR_DELIMITER","tokenConsts.SEMANTIC_PAIRS","tokenConsts.SHADE_NUMBERS"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
@forward 'variables';
|
|
3
3
|
@forward 'utilities';
|
|
4
4
|
@forward 'palettes';
|
|
5
|
-
@forward 'theme-
|
|
5
|
+
@forward 'theme-engine';
|
|
6
6
|
|
|
7
7
|
@forward 'themes/purple-theme';
|
|
8
8
|
@forward 'themes/orange-theme';
|
|
9
|
+
@forward 'themes/red-theme';
|
|
10
|
+
@forward 'themes/green-theme';
|
|
9
11
|
@forward 'themes/high-contrast-theme';
|
|
@@ -24,7 +24,33 @@ $purple-palette: (
|
|
|
24
24
|
900: #160033,
|
|
25
25
|
1000: #0B001A) !default;
|
|
26
26
|
|
|
27
|
-
$
|
|
27
|
+
$red-palette: (
|
|
28
|
+
50: #FDF1F0,
|
|
29
|
+
100: #FADCDA,
|
|
30
|
+
200: #F5B0AB,
|
|
31
|
+
300: #EF8079,
|
|
32
|
+
400: #EA4C43,
|
|
33
|
+
500: #E3241B,
|
|
34
|
+
600: #BE1810,
|
|
35
|
+
700: #991009,
|
|
36
|
+
800: #750904,
|
|
37
|
+
900: #520401,
|
|
38
|
+
1000: #2E0200) !default;
|
|
39
|
+
|
|
40
|
+
$green-palette: (
|
|
41
|
+
50: #F7FCE8,
|
|
42
|
+
100: #EDF8C8,
|
|
43
|
+
200: #DDF19C,
|
|
44
|
+
300: #CAE96A,
|
|
45
|
+
400: #BEE046,
|
|
46
|
+
500: #B0D624,
|
|
47
|
+
600: #92B518,
|
|
48
|
+
700: #718F10,
|
|
49
|
+
800: #556D0C,
|
|
50
|
+
900: #3C4E08,
|
|
51
|
+
1000: #212C03) !default;
|
|
52
|
+
|
|
53
|
+
$danger-palette: (
|
|
28
54
|
50: #FFFCFC,
|
|
29
55
|
100: #F4E5E5,
|
|
30
56
|
200: #EAD0D0,
|
|
@@ -99,7 +125,9 @@ $hc-green: #00ff00;
|
|
|
99
125
|
$all-palettes: (
|
|
100
126
|
'orange': $orange-palette,
|
|
101
127
|
'purple': $purple-palette,
|
|
102
|
-
'
|
|
128
|
+
'red': $red-palette,
|
|
129
|
+
'green': $green-palette,
|
|
130
|
+
'danger': $danger-palette,
|
|
103
131
|
'warn': $warn-palette,
|
|
104
132
|
'success': $success-palette,
|
|
105
133
|
'information': $information-palette,
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use 'sass:list';
|
|
3
|
+
@use 'palettes' as *;
|
|
4
|
+
|
|
5
|
+
$required-theme-keys: (
|
|
6
|
+
'bg-canvas',
|
|
7
|
+
'bg-surface',
|
|
8
|
+
'bg-surface-alt',
|
|
9
|
+
'bg-element',
|
|
10
|
+
'bg-element-hover',
|
|
11
|
+
|
|
12
|
+
'primary',
|
|
13
|
+
'primary-hover',
|
|
14
|
+
'primary-active',
|
|
15
|
+
'primary-subtle',
|
|
16
|
+
'on-primary',
|
|
17
|
+
|
|
18
|
+
'text-heading',
|
|
19
|
+
'text-primary',
|
|
20
|
+
'text-secondary',
|
|
21
|
+
'text-brand',
|
|
22
|
+
'text-inverse',
|
|
23
|
+
'text-info',
|
|
24
|
+
'text-warn',
|
|
25
|
+
'text-success',
|
|
26
|
+
'text-danger',
|
|
27
|
+
|
|
28
|
+
'border-subtle',
|
|
29
|
+
'border-default',
|
|
30
|
+
'border-strong',
|
|
31
|
+
'border-brand',
|
|
32
|
+
'border-info',
|
|
33
|
+
'border-success',
|
|
34
|
+
'border-warn',
|
|
35
|
+
'border-danger',
|
|
36
|
+
|
|
37
|
+
'bg-info',
|
|
38
|
+
'bg-info-hover',
|
|
39
|
+
'bg-info-active',
|
|
40
|
+
'bg-info-disabled',
|
|
41
|
+
'bg-info-subtle',
|
|
42
|
+
|
|
43
|
+
'bg-success',
|
|
44
|
+
'bg-success-hover',
|
|
45
|
+
'bg-success-active',
|
|
46
|
+
'bg-success-disabled',
|
|
47
|
+
'bg-success-subtle',
|
|
48
|
+
|
|
49
|
+
'bg-warn',
|
|
50
|
+
'bg-warn-hover',
|
|
51
|
+
'bg-warn-active',
|
|
52
|
+
'bg-warn-disabled',
|
|
53
|
+
'bg-warn-subtle',
|
|
54
|
+
|
|
55
|
+
'bg-danger',
|
|
56
|
+
'bg-danger-hover',
|
|
57
|
+
'bg-danger-active',
|
|
58
|
+
'bg-danger-disabled',
|
|
59
|
+
'bg-danger-subtle',
|
|
60
|
+
|
|
61
|
+
'scroll-bg',
|
|
62
|
+
'scroll-thumb',
|
|
63
|
+
'scroll-thumb-hover'
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
@function validate-theme($theme, $theme-name) {
|
|
67
|
+
@each $key in $required-theme-keys {
|
|
68
|
+
@if not map.has-key($theme, $key) {
|
|
69
|
+
@error "Strict Theme Error: '#{$theme-name}' is missing the required key '#{$key}'.";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@each $key, $value in $theme {
|
|
74
|
+
@if not list.index($required-theme-keys, $key) {
|
|
75
|
+
@error "Strict Theme Error: '#{$theme-name}' contains an invalid key '#{$key}'. Remove or rename it.";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@return $theme;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@function make-light-theme($brand, $overrides: ()) {
|
|
83
|
+
$base: (
|
|
84
|
+
'bg-canvas': #ffffff,
|
|
85
|
+
'bg-surface': #ffffff,
|
|
86
|
+
'bg-surface-alt': get-color-from-palette($brand, 50),
|
|
87
|
+
'bg-element': get-color-from-palette('neutral', 100),
|
|
88
|
+
'bg-element-hover': get-color-from-palette($brand, 200),
|
|
89
|
+
|
|
90
|
+
'primary': get-color-from-palette($brand, 500),
|
|
91
|
+
'primary-hover': get-color-from-palette($brand, 600),
|
|
92
|
+
'primary-active': get-color-from-palette($brand, 700),
|
|
93
|
+
'primary-subtle': rgba(get-color-from-palette($brand, 300), 0.6),
|
|
94
|
+
'on-primary': get-color-from-palette('neutral', 100),
|
|
95
|
+
|
|
96
|
+
'text-heading': get-color-from-palette('neutral', 900),
|
|
97
|
+
'text-primary': get-color-from-palette('neutral', 700),
|
|
98
|
+
'text-secondary': get-color-from-palette('neutral', 500),
|
|
99
|
+
'text-brand': get-color-from-palette($brand, 700),
|
|
100
|
+
'text-inverse': get-color-from-palette('neutral', 100),
|
|
101
|
+
'text-info': get-color-from-palette('information', 700),
|
|
102
|
+
'text-warn': get-color-from-palette('warn', 700),
|
|
103
|
+
'text-success': get-color-from-palette('success', 700),
|
|
104
|
+
'text-danger': get-color-from-palette('danger', 700),
|
|
105
|
+
|
|
106
|
+
'border-subtle': get-color-from-palette('neutral', 200),
|
|
107
|
+
'border-default': get-color-from-palette('neutral', 300),
|
|
108
|
+
'border-strong': get-color-from-palette('neutral', 400),
|
|
109
|
+
'border-brand': get-color-from-palette($brand, 400),
|
|
110
|
+
'border-info': get-color-from-palette('information', 400),
|
|
111
|
+
'border-success': get-color-from-palette('success', 400),
|
|
112
|
+
'border-warn': get-color-from-palette('warn', 400),
|
|
113
|
+
'border-danger': get-color-from-palette('danger', 400),
|
|
114
|
+
|
|
115
|
+
'bg-info': get-color-from-palette('information', 100),
|
|
116
|
+
'bg-info-hover': get-color-from-palette('information', 200),
|
|
117
|
+
'bg-info-active': get-color-from-palette('information', 300),
|
|
118
|
+
'bg-info-disabled': get-color-from-palette('information', 50),
|
|
119
|
+
'bg-info-subtle': rgba(get-color-from-palette('information', 50), 0.95),
|
|
120
|
+
|
|
121
|
+
'bg-success': get-color-from-palette('success', 100),
|
|
122
|
+
'bg-success-hover': get-color-from-palette('success', 200),
|
|
123
|
+
'bg-success-active': get-color-from-palette('success', 300),
|
|
124
|
+
'bg-success-disabled': get-color-from-palette('success', 50),
|
|
125
|
+
'bg-success-subtle': rgba(get-color-from-palette('success', 50), 0.95),
|
|
126
|
+
|
|
127
|
+
'bg-warn': get-color-from-palette('warn', 100),
|
|
128
|
+
'bg-warn-hover': get-color-from-palette('warn', 200),
|
|
129
|
+
'bg-warn-active': get-color-from-palette('warn', 300),
|
|
130
|
+
'bg-warn-disabled': get-color-from-palette('warn', 50),
|
|
131
|
+
'bg-warn-subtle': rgba(get-color-from-palette('warn', 50), 0.95),
|
|
132
|
+
|
|
133
|
+
'bg-danger': get-color-from-palette('danger', 100),
|
|
134
|
+
'bg-danger-hover': get-color-from-palette('danger', 200),
|
|
135
|
+
'bg-danger-active': get-color-from-palette('danger', 300),
|
|
136
|
+
'bg-danger-disabled': get-color-from-palette('danger', 50),
|
|
137
|
+
'bg-danger-subtle': rgba(get-color-from-palette('danger', 50), 0.95),
|
|
138
|
+
|
|
139
|
+
'scroll-bg': get-color-from-palette($brand, 100),
|
|
140
|
+
'scroll-thumb': linear-gradient(278deg, get-color-from-palette($brand, 300) -10.44%, get-color-from-palette($brand, 400) 100%),
|
|
141
|
+
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette($brand, 400) -10.44%, get-color-from-palette($brand, 700) 100%),
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
$merged-theme: map.merge($base, $overrides);
|
|
145
|
+
|
|
146
|
+
@return validate-theme($merged-theme, '#{$brand}-light');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@function make-dark-theme($brand, $overrides: ()) {
|
|
150
|
+
$base: (
|
|
151
|
+
'bg-canvas': #000000,
|
|
152
|
+
'bg-surface': get-color-from-palette('neutral', 1000),
|
|
153
|
+
'bg-surface-alt': get-color-from-palette('neutral', 900),
|
|
154
|
+
'bg-element': get-color-from-palette('neutral', 800),
|
|
155
|
+
'bg-element-hover': get-color-from-palette($brand, 700),
|
|
156
|
+
|
|
157
|
+
'primary': get-color-from-palette($brand, 500),
|
|
158
|
+
'primary-hover': get-color-from-palette($brand, 400),
|
|
159
|
+
'primary-active': get-color-from-palette($brand, 300),
|
|
160
|
+
'primary-subtle': rgba(get-color-from-palette($brand, 700), 0.6),
|
|
161
|
+
'on-primary': #ffffff,
|
|
162
|
+
|
|
163
|
+
'text-heading': #ffffff,
|
|
164
|
+
'text-primary': get-color-from-palette('neutral', 200),
|
|
165
|
+
'text-secondary': get-color-from-palette('neutral', 400),
|
|
166
|
+
'text-brand': get-color-from-palette($brand, 300),
|
|
167
|
+
'text-inverse': get-color-from-palette('neutral', 900),
|
|
168
|
+
'text-info': get-color-from-palette('information', 400),
|
|
169
|
+
'text-success': get-color-from-palette('success', 400),
|
|
170
|
+
'text-warn': get-color-from-palette('warn', 400),
|
|
171
|
+
'text-danger': get-color-from-palette('danger', 400),
|
|
172
|
+
|
|
173
|
+
'border-subtle': get-color-from-palette('neutral', 900),
|
|
174
|
+
'border-default': get-color-from-palette('neutral', 800),
|
|
175
|
+
'border-strong': get-color-from-palette('neutral', 700),
|
|
176
|
+
'border-brand': get-color-from-palette($brand, 600),
|
|
177
|
+
'border-info': get-color-from-palette('information', 400),
|
|
178
|
+
'border-success': get-color-from-palette('success', 400),
|
|
179
|
+
'border-warn': get-color-from-palette('warn', 400),
|
|
180
|
+
'border-danger': get-color-from-palette('danger', 400),
|
|
181
|
+
|
|
182
|
+
'bg-info': get-color-from-palette('information', 900),
|
|
183
|
+
'bg-info-hover': get-color-from-palette('information', 800),
|
|
184
|
+
'bg-info-active': get-color-from-palette('information', 700),
|
|
185
|
+
'bg-info-disabled': get-color-from-palette('information', 1000),
|
|
186
|
+
'bg-info-subtle': rgba(get-color-from-palette('information', 1000), 0.95),
|
|
187
|
+
|
|
188
|
+
'bg-success': get-color-from-palette('success', 900),
|
|
189
|
+
'bg-success-hover': get-color-from-palette('success', 800),
|
|
190
|
+
'bg-success-active': get-color-from-palette('success', 700),
|
|
191
|
+
'bg-success-disabled': get-color-from-palette('success', 1000),
|
|
192
|
+
'bg-success-subtle': rgba(get-color-from-palette('success', 1000), 0.95),
|
|
193
|
+
|
|
194
|
+
'bg-warn': get-color-from-palette('warn', 900),
|
|
195
|
+
'bg-warn-hover': get-color-from-palette('warn', 800),
|
|
196
|
+
'bg-warn-active': get-color-from-palette('warn', 700),
|
|
197
|
+
'bg-warn-disabled': get-color-from-palette('warn', 1000),
|
|
198
|
+
'bg-warn-subtle': rgba(get-color-from-palette('warn', 1000), 0.95),
|
|
199
|
+
|
|
200
|
+
'bg-danger': get-color-from-palette('danger', 900),
|
|
201
|
+
'bg-danger-hover': get-color-from-palette('danger', 800),
|
|
202
|
+
'bg-danger-active': get-color-from-palette('danger', 700),
|
|
203
|
+
'bg-danger-disabled': get-color-from-palette('danger', 1000),
|
|
204
|
+
'bg-danger-subtle': rgba(get-color-from-palette('danger', 1000), 0.95),
|
|
205
|
+
|
|
206
|
+
'scroll-bg': get-color-from-palette($brand, 900),
|
|
207
|
+
'scroll-thumb': linear-gradient(278deg, get-color-from-palette($brand, 700) -10.44%, get-color-from-palette($brand, 500) 100%),
|
|
208
|
+
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette($brand, 500) -10.44%, get-color-from-palette($brand, 400) 100%),
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
$merged-theme: map.merge($base, $overrides);
|
|
212
|
+
|
|
213
|
+
@return validate-theme($merged-theme, '#{$brand}-dark');
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@mixin core-theme($config) {
|
|
217
|
+
@each $key, $value in $config {
|
|
218
|
+
|
|
219
|
+
@if $key !='meta-brand-palette' {
|
|
220
|
+
--bx-#{$key}: #{$value};
|
|
221
|
+
|
|
222
|
+
.bx-bg-#{$key} {
|
|
223
|
+
background-color: var(--bx-#{$key});
|
|
224
|
+
transition: background-color 0.2s ease-in-out;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.bx-text-#{$key} {
|
|
228
|
+
color: var(--bx-#{$key});
|
|
229
|
+
transition: color 0.2s ease-in-out;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.bx-border-#{$key} {
|
|
233
|
+
border-color: var(--bx-#{$key});
|
|
234
|
+
transition: border-color 0.2s ease-in-out;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@if $key =='meta-brand-palette' {
|
|
239
|
+
$brand-palette: get-palette($value);
|
|
240
|
+
|
|
241
|
+
@each $shade, $color in $brand-palette {
|
|
242
|
+
--bx-color-primary-#{$shade}: #{$color};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
@@ -1,101 +1,120 @@
|
|
|
1
1
|
@use '../palettes' as *;
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
2
|
+
@use '../theme-engine' as *;
|
|
3
|
+
|
|
4
|
+
$high-contrast-light-theme: validate-theme(('bg-canvas': $hc-white,
|
|
5
|
+
'bg-surface': $hc-white,
|
|
6
|
+
'bg-surface-alt': $hc-white,
|
|
7
|
+
'bg-element': $hc-white,
|
|
8
|
+
'bg-element-hover': $hc-yellow,
|
|
9
|
+
|
|
10
|
+
'primary': $hc-black,
|
|
11
|
+
'primary-hover': $hc-black,
|
|
12
|
+
'primary-active': $hc-black,
|
|
13
|
+
'primary-subtle': $hc-white,
|
|
14
|
+
'on-primary': $hc-white,
|
|
15
|
+
|
|
16
|
+
'text-heading': $hc-black,
|
|
17
|
+
'text-primary': $hc-black,
|
|
18
|
+
'text-secondary': $hc-black,
|
|
19
|
+
'text-brand': $hc-black,
|
|
20
|
+
'text-inverse': $hc-white,
|
|
21
|
+
'text-info': $hc-cyan,
|
|
22
|
+
'text-success': $hc-green,
|
|
23
|
+
'text-warn': $hc-yellow,
|
|
24
|
+
'text-danger': $hc-red,
|
|
25
|
+
|
|
26
|
+
'border-subtle': $hc-black,
|
|
27
|
+
'border-default': $hc-black,
|
|
28
|
+
'border-strong': $hc-black,
|
|
29
|
+
'border-brand': $hc-black,
|
|
30
|
+
'border-info': $hc-black,
|
|
31
|
+
'border-success': $hc-black,
|
|
32
|
+
'border-warn': $hc-black,
|
|
33
|
+
'border-danger': $hc-black,
|
|
34
|
+
|
|
35
|
+
'bg-info': $hc-white,
|
|
36
|
+
'bg-info-hover': $hc-white,
|
|
37
|
+
'bg-info-active': $hc-white,
|
|
38
|
+
'bg-info-disabled': $hc-white,
|
|
39
|
+
'bg-info-subtle': $hc-white,
|
|
40
|
+
|
|
41
|
+
'bg-success': $hc-white,
|
|
42
|
+
'bg-success-hover': $hc-white,
|
|
43
|
+
'bg-success-active': $hc-white,
|
|
44
|
+
'bg-success-disabled': $hc-white,
|
|
45
|
+
'bg-success-subtle': $hc-white,
|
|
46
|
+
|
|
47
|
+
'bg-warn': $hc-white,
|
|
48
|
+
'bg-warn-hover': $hc-white,
|
|
49
|
+
'bg-warn-active': $hc-white,
|
|
50
|
+
'bg-warn-disabled': $hc-white,
|
|
51
|
+
'bg-warn-subtle': $hc-white,
|
|
52
|
+
|
|
53
|
+
'bg-danger': $hc-white,
|
|
54
|
+
'bg-danger-hover': $hc-white,
|
|
55
|
+
'bg-danger-active': $hc-white,
|
|
56
|
+
'bg-danger-disabled': $hc-white,
|
|
57
|
+
'bg-danger-subtle': $hc-white,
|
|
58
|
+
|
|
59
|
+
'scroll-bg': $hc-white,
|
|
60
|
+
'scroll-thumb': $hc-black,
|
|
61
|
+
'scroll-thumb-hover': $hc-yellow), 'high-contrast-light') !default;
|
|
62
|
+
|
|
63
|
+
$high-contrast-dark-theme: validate-theme(('bg-canvas': $hc-black,
|
|
64
|
+
'bg-surface': $hc-black,
|
|
65
|
+
'bg-surface-alt': $hc-black,
|
|
66
|
+
'bg-element': $hc-black,
|
|
67
|
+
'bg-element-hover': $hc-yellow,
|
|
68
|
+
|
|
69
|
+
'primary': $hc-white,
|
|
70
|
+
'primary-hover': $hc-white,
|
|
71
|
+
'primary-active': $hc-white,
|
|
72
|
+
'primary-subtle': $hc-black,
|
|
73
|
+
'on-primary': $hc-black,
|
|
74
|
+
|
|
75
|
+
'text-heading': $hc-white,
|
|
76
|
+
'text-primary': $hc-white,
|
|
77
|
+
'text-secondary': $hc-white,
|
|
78
|
+
'text-brand': $hc-white,
|
|
79
|
+
'text-inverse': $hc-black,
|
|
80
|
+
'text-info': $hc-cyan,
|
|
81
|
+
'text-success': $hc-green,
|
|
82
|
+
'text-warn': $hc-yellow,
|
|
83
|
+
'text-danger': $hc-red,
|
|
84
|
+
|
|
85
|
+
'border-subtle': $hc-white,
|
|
86
|
+
'border-default': $hc-white,
|
|
87
|
+
'border-strong': $hc-white,
|
|
88
|
+
'border-brand': $hc-white,
|
|
89
|
+
'border-info': $hc-white,
|
|
90
|
+
'border-success': $hc-white,
|
|
91
|
+
'border-warn': $hc-white,
|
|
92
|
+
'border-danger': $hc-white,
|
|
93
|
+
|
|
94
|
+
'bg-info': $hc-black,
|
|
95
|
+
'bg-info-hover': $hc-black,
|
|
96
|
+
'bg-info-active': $hc-black,
|
|
97
|
+
'bg-info-disabled': $hc-black,
|
|
98
|
+
'bg-info-subtle': $hc-black,
|
|
99
|
+
|
|
100
|
+
'bg-success': $hc-black,
|
|
101
|
+
'bg-success-hover': $hc-black,
|
|
102
|
+
'bg-success-active': $hc-black,
|
|
103
|
+
'bg-success-disabled': $hc-black,
|
|
104
|
+
'bg-success-subtle': $hc-black,
|
|
105
|
+
|
|
106
|
+
'bg-warn': $hc-black,
|
|
107
|
+
'bg-warn-hover': $hc-black,
|
|
108
|
+
'bg-warn-active': $hc-black,
|
|
109
|
+
'bg-warn-disabled': $hc-black,
|
|
110
|
+
'bg-warn-subtle': $hc-black,
|
|
111
|
+
|
|
112
|
+
'bg-danger': $hc-black,
|
|
113
|
+
'bg-danger-hover': $hc-black,
|
|
114
|
+
'bg-danger-active': $hc-black,
|
|
115
|
+
'bg-danger-disabled': $hc-black,
|
|
116
|
+
'bg-danger-subtle': $hc-black,
|
|
117
|
+
|
|
118
|
+
'scroll-bg': $hc-black,
|
|
119
|
+
'scroll-thumb': $hc-white,
|
|
120
|
+
'scroll-thumb-hover': $hc-yellow), 'high-contrast-dark') !default;
|
|
@@ -1,99 +1,4 @@
|
|
|
1
|
-
@use '../
|
|
1
|
+
@use '../theme-engine' as *;
|
|
2
2
|
|
|
3
|
-
$orange-light-theme: (
|
|
4
|
-
|
|
5
|
-
'bg-surface': #ffffff,
|
|
6
|
-
'bg-surface-alt': get-color-from-palette('orange', 50),
|
|
7
|
-
'bg-element': get-color-from-palette('neutral', 100),
|
|
8
|
-
'bg-element-hover': get-color-from-palette('orange', 200),
|
|
9
|
-
|
|
10
|
-
'primary': get-color-from-palette('orange', 500),
|
|
11
|
-
'primary-hover': get-color-from-palette('orange', 600),
|
|
12
|
-
'primary-active': get-color-from-palette('orange', 700),
|
|
13
|
-
'primary-subtle': rgba(get-color-from-palette('orange', 300), 0.6),
|
|
14
|
-
'on-primary': get-color-from-palette('neutral', 100),
|
|
15
|
-
|
|
16
|
-
'text-heading': get-color-from-palette('neutral', 900),
|
|
17
|
-
'text-primary': get-color-from-palette('neutral', 700),
|
|
18
|
-
'text-secondary': get-color-from-palette('neutral', 500),
|
|
19
|
-
'text-brand': get-color-from-palette('orange', 700),
|
|
20
|
-
'text-inverse': get-color-from-palette('neutral', 100),
|
|
21
|
-
|
|
22
|
-
'border-subtle': get-color-from-palette('neutral', 200),
|
|
23
|
-
'border-default': get-color-from-palette('neutral', 300),
|
|
24
|
-
'border-strong': get-color-from-palette('neutral', 400),
|
|
25
|
-
'border-brand': get-color-from-palette('orange', 400),
|
|
26
|
-
|
|
27
|
-
'info-bg': get-color-from-palette('information', 100),
|
|
28
|
-
'info-bg-subtle': rgba(get-color-from-palette('information', 50), 0.95),
|
|
29
|
-
'info-border': get-color-from-palette('information', 200),
|
|
30
|
-
'info-text': get-color-from-palette('information', 700),
|
|
31
|
-
|
|
32
|
-
'success-bg': get-color-from-palette('success', 100),
|
|
33
|
-
'success-bg-subtle': rgba(get-color-from-palette('success', 50), 0.95),
|
|
34
|
-
'success-border': get-color-from-palette('success', 200),
|
|
35
|
-
'success-text': get-color-from-palette('success', 700),
|
|
36
|
-
|
|
37
|
-
'warn-bg': get-color-from-palette('warn', 100),
|
|
38
|
-
'warn-bg-subtle': rgba(get-color-from-palette('warn', 50), 0.95),
|
|
39
|
-
'warn-border': get-color-from-palette('warn', 200),
|
|
40
|
-
'warn-text': get-color-from-palette('warn', 700),
|
|
41
|
-
|
|
42
|
-
'error-bg': get-color-from-palette('error', 100),
|
|
43
|
-
'error-bg-subtle': rgba(get-color-from-palette('error', 50), 0.95),
|
|
44
|
-
'error-border': get-color-from-palette('error', 200),
|
|
45
|
-
'error-text': get-color-from-palette('error', 700),
|
|
46
|
-
|
|
47
|
-
'scroll-bg': get-color-from-palette('orange', 100),
|
|
48
|
-
'scroll-thumb': linear-gradient(278deg, get-color-from-palette('orange', 300) -10.44%, get-color-from-palette('orange', 400) 100%),
|
|
49
|
-
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette('orange', 400) -10.44%, get-color-from-palette('orange', 700) 100%),
|
|
50
|
-
) !default;
|
|
51
|
-
|
|
52
|
-
$orange-dark-theme: (
|
|
53
|
-
'bg-canvas': #000000,
|
|
54
|
-
'bg-surface': get-color-from-palette('neutral', 1000),
|
|
55
|
-
'bg-surface-alt': get-color-from-palette('neutral', 900),
|
|
56
|
-
'bg-element': get-color-from-palette('neutral', 800),
|
|
57
|
-
'bg-element-hover': get-color-from-palette('orange', 700),
|
|
58
|
-
|
|
59
|
-
'primary': get-color-from-palette('orange', 500),
|
|
60
|
-
'primary-hover': get-color-from-palette('orange', 400),
|
|
61
|
-
'primary-active': get-color-from-palette('orange', 300),
|
|
62
|
-
'primary-subtle': rgba(get-color-from-palette('orange', 700), 0.6),
|
|
63
|
-
'on-primary': #ffffff,
|
|
64
|
-
|
|
65
|
-
'text-heading': #ffffff,
|
|
66
|
-
'text-primary': get-color-from-palette('neutral', 200),
|
|
67
|
-
'text-secondary': get-color-from-palette('neutral', 400),
|
|
68
|
-
'text-brand': get-color-from-palette('orange', 300),
|
|
69
|
-
'text-inverse': get-color-from-palette('neutral', 900),
|
|
70
|
-
|
|
71
|
-
'border-subtle': get-color-from-palette('neutral', 900),
|
|
72
|
-
'border-default': get-color-from-palette('neutral', 800),
|
|
73
|
-
'border-strong': get-color-from-palette('neutral', 700),
|
|
74
|
-
'border-brand': get-color-from-palette('orange', 600),
|
|
75
|
-
|
|
76
|
-
'info-bg': get-color-from-palette('information', 900),
|
|
77
|
-
'info-bg-subtle': rgba(get-color-from-palette('information', 1000), 0.95),
|
|
78
|
-
'info-border': get-color-from-palette('information', 900),
|
|
79
|
-
'info-text': get-color-from-palette('information', 400),
|
|
80
|
-
|
|
81
|
-
'success-bg': get-color-from-palette('success', 900),
|
|
82
|
-
'success-bg-subtle': rgba(get-color-from-palette('success', 1000), 0.95),
|
|
83
|
-
'success-border': get-color-from-palette('success', 900),
|
|
84
|
-
'success-text': get-color-from-palette('success', 400),
|
|
85
|
-
|
|
86
|
-
'warn-bg': get-color-from-palette('warn', 900),
|
|
87
|
-
'warn-bg-subtle': rgba(get-color-from-palette('warn', 1000), 0.95),
|
|
88
|
-
'warn-border': get-color-from-palette('warn', 900),
|
|
89
|
-
'warn-text': get-color-from-palette('warn', 400),
|
|
90
|
-
|
|
91
|
-
'error-bg': get-color-from-palette('error', 900),
|
|
92
|
-
'error-bg-subtle': rgba(get-color-from-palette('error', 1000), 0.95),
|
|
93
|
-
'error-border': get-color-from-palette('error', 900),
|
|
94
|
-
'error-text': get-color-from-palette('error', 400),
|
|
95
|
-
|
|
96
|
-
'scroll-bg': get-color-from-palette('orange', 900),
|
|
97
|
-
'scroll-thumb': linear-gradient(278deg, get-color-from-palette('orange', 700) -10.44%, get-color-from-palette('orange', 500) 100%),
|
|
98
|
-
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette('orange', 500) -10.44%, get-color-from-palette('orange', 400) 100%),
|
|
99
|
-
) !default;
|
|
3
|
+
$orange-light-theme: make-light-theme('orange');
|
|
4
|
+
$orange-dark-theme: make-dark-theme('orange');
|
|
@@ -1,101 +1,4 @@
|
|
|
1
|
-
@use '../
|
|
1
|
+
@use '../theme-engine' as *;
|
|
2
2
|
|
|
3
|
-
$purple-light-theme: (
|
|
4
|
-
|
|
5
|
-
'bg-surface': #ffffff,
|
|
6
|
-
'bg-surface-alt': get-color-from-palette('purple', 50),
|
|
7
|
-
'bg-element': get-color-from-palette('neutral', 100),
|
|
8
|
-
'bg-element-hover': get-color-from-palette('purple', 200),
|
|
9
|
-
|
|
10
|
-
'primary': get-color-from-palette('purple', 500),
|
|
11
|
-
'primary-hover': get-color-from-palette('purple', 600),
|
|
12
|
-
'primary-active': get-color-from-palette('purple', 700),
|
|
13
|
-
'primary-subtle': rgba(get-color-from-palette('purple', 300), 0.6),
|
|
14
|
-
'on-primary': get-color-from-palette('neutral', 100),
|
|
15
|
-
|
|
16
|
-
'text-heading': get-color-from-palette('neutral', 900),
|
|
17
|
-
'text-primary': get-color-from-palette('neutral', 700),
|
|
18
|
-
'text-secondary': get-color-from-palette('neutral', 500),
|
|
19
|
-
'text-brand': get-color-from-palette('purple', 700),
|
|
20
|
-
'text-inverse': get-color-from-palette('neutral', 100),
|
|
21
|
-
|
|
22
|
-
'border-subtle': get-color-from-palette('neutral', 200),
|
|
23
|
-
'border-default': get-color-from-palette('neutral', 300),
|
|
24
|
-
'border-strong': get-color-from-palette('neutral', 400),
|
|
25
|
-
'border-brand': get-color-from-palette('purple', 400),
|
|
26
|
-
|
|
27
|
-
'info-bg': get-color-from-palette('information', 100),
|
|
28
|
-
'info-bg-subtle': rgba(get-color-from-palette('information', 50), 0.95),
|
|
29
|
-
'info-border': get-color-from-palette('information', 200),
|
|
30
|
-
'info-text': get-color-from-palette('information', 700),
|
|
31
|
-
|
|
32
|
-
'success-bg': get-color-from-palette('success', 100),
|
|
33
|
-
'success-bg-subtle': rgba(get-color-from-palette('success', 50), 0.95),
|
|
34
|
-
'success-border': get-color-from-palette('success', 200),
|
|
35
|
-
'success-text': get-color-from-palette('success', 700),
|
|
36
|
-
'success-subtle': rgba(get-color-from-palette('success', 500), 0.44),
|
|
37
|
-
|
|
38
|
-
'warn-bg': get-color-from-palette('warn', 100),
|
|
39
|
-
'warn-bg-subtle': rgba(get-color-from-palette('warn', 50), 0.95),
|
|
40
|
-
'warn-border': get-color-from-palette('warn', 200),
|
|
41
|
-
'warn-text': get-color-from-palette('warn', 700),
|
|
42
|
-
|
|
43
|
-
'error-bg': get-color-from-palette('error', 100),
|
|
44
|
-
'error-bg-subtle': rgba(get-color-from-palette('error', 50), 0.95),
|
|
45
|
-
'error-border': get-color-from-palette('error', 200),
|
|
46
|
-
'error-text': get-color-from-palette('error', 700),
|
|
47
|
-
'error-subtle': rgba(get-color-from-palette('error', 500), 0.38),
|
|
48
|
-
|
|
49
|
-
'scroll-bg': get-color-from-palette('purple', 100),
|
|
50
|
-
'scroll-thumb': linear-gradient(278deg, get-color-from-palette('purple', 300) -10.44%, get-color-from-palette('purple', 400) 100%),
|
|
51
|
-
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette('purple', 400) -10.44%, get-color-from-palette('purple', 700) 100%),
|
|
52
|
-
) !default;
|
|
53
|
-
|
|
54
|
-
$purple-dark-theme: (
|
|
55
|
-
'bg-canvas': #000000,
|
|
56
|
-
'bg-surface': get-color-from-palette('neutral', 1000),
|
|
57
|
-
'bg-surface-alt': get-color-from-palette('neutral', 900),
|
|
58
|
-
'bg-element': get-color-from-palette('neutral', 800),
|
|
59
|
-
'bg-element-hover': get-color-from-palette('purple', 700),
|
|
60
|
-
|
|
61
|
-
'primary': get-color-from-palette('purple', 500),
|
|
62
|
-
'primary-hover': get-color-from-palette('purple', 400),
|
|
63
|
-
'primary-active': get-color-from-palette('purple', 300),
|
|
64
|
-
'primary-subtle': rgba(get-color-from-palette('purple', 700), 0.6),
|
|
65
|
-
'on-primary': #ffffff,
|
|
66
|
-
|
|
67
|
-
'text-heading': #ffffff,
|
|
68
|
-
'text-primary': get-color-from-palette('neutral', 200),
|
|
69
|
-
'text-secondary': get-color-from-palette('neutral', 400),
|
|
70
|
-
'text-brand': get-color-from-palette('purple', 300),
|
|
71
|
-
'text-inverse': get-color-from-palette('neutral', 900),
|
|
72
|
-
|
|
73
|
-
'border-subtle': get-color-from-palette('neutral', 900),
|
|
74
|
-
'border-default': get-color-from-palette('neutral', 800),
|
|
75
|
-
'border-strong': get-color-from-palette('neutral', 700),
|
|
76
|
-
'border-brand': get-color-from-palette('purple', 600),
|
|
77
|
-
|
|
78
|
-
'info-bg': get-color-from-palette('information', 900),
|
|
79
|
-
'info-bg-subtle': rgba(get-color-from-palette('information', 1000), 0.95),
|
|
80
|
-
'info-border': get-color-from-palette('information', 900),
|
|
81
|
-
'info-text': get-color-from-palette('information', 400),
|
|
82
|
-
|
|
83
|
-
'success-bg': get-color-from-palette('success', 900),
|
|
84
|
-
'success-bg-subtle': rgba(get-color-from-palette('success', 1000), 0.95),
|
|
85
|
-
'success-border': get-color-from-palette('success', 900),
|
|
86
|
-
'success-text': get-color-from-palette('success', 400),
|
|
87
|
-
|
|
88
|
-
'warn-bg': get-color-from-palette('warn', 900),
|
|
89
|
-
'warn-bg-subtle': rgba(get-color-from-palette('warn', 1000), 0.95),
|
|
90
|
-
'warn-border': get-color-from-palette('warn', 900),
|
|
91
|
-
'warn-text': get-color-from-palette('warn', 400),
|
|
92
|
-
|
|
93
|
-
'error-bg': get-color-from-palette('error', 900),
|
|
94
|
-
'error-bg-subtle': rgba(get-color-from-palette('error', 1000), 0.95),
|
|
95
|
-
'error-border': get-color-from-palette('error', 900),
|
|
96
|
-
'error-text': get-color-from-palette('error', 400),
|
|
97
|
-
|
|
98
|
-
'scroll-bg': get-color-from-palette('purple', 900),
|
|
99
|
-
'scroll-thumb': linear-gradient(278deg, get-color-from-palette('purple', 700) -10.44%, get-color-from-palette('purple', 500) 100%),
|
|
100
|
-
'scroll-thumb-hover': linear-gradient(278deg, get-color-from-palette('purple', 500) -10.44%, get-color-from-palette('purple', 400) 100%),
|
|
101
|
-
) !default;
|
|
3
|
+
$purple-light-theme: make-light-theme('purple');
|
|
4
|
+
$purple-dark-theme: make-dark-theme('purple');
|
|
@@ -141,7 +141,9 @@ declare class ThemingService implements OnDestroy {
|
|
|
141
141
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemingService>;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
type SemanticColorToken = 'bg-canvas' | 'bg-surface' | 'bg-surface-alt' | 'bg-element' | 'bg-element-hover' | 'primary' | 'primary-hover' | 'primary-active' | 'primary-subtle' | 'on-primary' | 'text-heading' | 'text-primary' | 'text-secondary' | 'text-brand' | 'text-inverse' | 'text-info' | 'text-warn' | 'text-success' | 'text-danger' | 'border-subtle' | 'border-default' | 'border-strong' | 'border-brand' | 'border-info' | 'border-success' | 'border-warn' | 'border-danger' | 'bg-info' | 'bg-info-hover' | 'bg-info-active' | 'bg-info-disabled' | 'bg-info-subtle' | 'bg-success' | 'bg-success-hover' | 'bg-success-active' | 'bg-success-disabled' | 'bg-success-subtle' | 'bg-warn' | 'bg-warn-hover' | 'bg-warn-active' | 'bg-warn-disabled' | 'bg-warn-subtle' | 'bg-danger' | 'bg-danger-hover' | 'bg-danger-active' | 'bg-danger-disabled' | 'bg-danger-subtle' | 'scroll-bg' | 'scroll-thumb' | 'scroll-thumb-hover';
|
|
145
|
+
|
|
146
|
+
declare const PALETTE_NAMES: readonly ["orange", "purple", "red", "green", "danger", "success", "information", "neutral"];
|
|
145
147
|
declare const SHADE_NUMBERS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];
|
|
146
148
|
declare const TOKEN_PREFIX = "bx";
|
|
147
149
|
declare const TOKEN_DELIMITER = "-";
|
|
@@ -178,7 +180,6 @@ type MSStreamWindow = Window & {
|
|
|
178
180
|
|
|
179
181
|
type ThemePalette = (typeof PALETTE_NAMES)[number];
|
|
180
182
|
type ThemeShade = (typeof SHADE_NUMBERS)[number];
|
|
181
|
-
type SemanticColorToken = 'bg-canvas' | 'bg-surface' | 'bg-surface-alt' | 'bg-element' | 'bg-element-hover' | 'primary' | 'primary-hover' | 'primary-active' | 'primary-subtle' | 'on-primary' | 'text-heading' | 'text-primary' | 'text-secondary' | 'text-brand' | 'text-inverse' | 'border-subtle' | 'border-default' | 'border-strong' | 'border-brand' | 'info-bg' | 'info-bg-subtle' | 'info-border' | 'info-text' | 'success-bg' | 'success-bg-subtle' | 'success-border' | 'success-text' | 'warn-bg' | 'warn-bg-subtle' | 'warn-border' | 'warn-text' | 'error-bg' | 'error-bg-subtle' | 'error-border' | 'error-text' | 'scroll-bg' | 'scroll-thumb' | 'scroll-thumb-hover';
|
|
182
183
|
type ThemeColorToken = `${ThemePalette}-${ThemeShade}`;
|
|
183
184
|
type Color = ThemeColorToken | SemanticColorToken;
|
|
184
185
|
type ThemedColor = Color | {
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
@use 'palettes' as *;
|
|
3
|
-
@use './themes/orange-theme' as *;
|
|
4
|
-
|
|
5
|
-
$semantic-keys: map-keys($orange-light-theme);
|
|
6
|
-
|
|
7
|
-
@mixin core-theme($config) {
|
|
8
|
-
@each $key, $value in $config {
|
|
9
|
-
|
|
10
|
-
@if $key !='meta-brand-palette' {
|
|
11
|
-
--bx-#{$key}: #{$value};
|
|
12
|
-
|
|
13
|
-
.bx-bg-#{$key} {
|
|
14
|
-
background-color: var(--bx-#{$key});
|
|
15
|
-
transition: background-color 0.2s ease-in-out;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.bx-text-#{$key} {
|
|
19
|
-
color: var(--bx-#{$key});
|
|
20
|
-
transition: color 0.2s ease-in-out;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.bx-border-#{$key} {
|
|
24
|
-
border-color: var(--bx-#{$key});
|
|
25
|
-
transition: border-color 0.2s ease-in-out;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@if $key =='meta-brand-palette' {
|
|
30
|
-
$brand-palette: get-palette($value);
|
|
31
|
-
|
|
32
|
-
@each $shade, $color in $brand-palette {
|
|
33
|
-
--bx-color-primary-#{$shade}: #{$color};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|