@bvs-tech/material 0.0.1 → 0.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bvs-tech-material.mjs","sources":["../../../../projects/bvs-lib/src/lib/services/theme.service.ts","../../../../projects/bvs-lib/src/lib/components/atoms/avatar/avatar.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/badge/badge.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/button/button.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/card/card.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/message/message.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/input/input.component.ts","../../../../projects/bvs-lib/src/lib/components/molecules/form-field/form-field.component.ts","../../../../projects/bvs-lib/src/lib/components/molecules/form-field/form-field.component.html","../../../../projects/bvs-lib/src/lib/components/organisms/navbar/navbar.component.ts","../../../../projects/bvs-lib/src/lib/components/organisms/navbar/navbar.component.html","../../../../projects/bvs-lib/src/public-api.ts","../../../../projects/bvs-lib/src/bvs-tech-material.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\nexport interface CustomThemeConfig {\n brand: string;\n brandHover: string;\n brandActive: string;\n surface: string;\n surfaceSubtle: string;\n surfaceMuted: string;\n textPrimary: string;\n textSecondary: string;\n textDisabled: string;\n border: string;\n borderStrong: string;\n}\n\nexport type PresetBrand = 'default' | 'emerald' | 'sunset' | 'amethyst' | 'ruby';\nexport type ColorScheme = 'light' | 'dark';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n readonly currentBrand = signal<PresetBrand>('default');\n readonly currentTheme = signal<ColorScheme>('light');\n readonly isCustomTheme = signal<boolean>(false);\n\n constructor() {\n // Initialize default state on DOM if running in browser\n if (typeof document !== 'undefined') {\n this.updateDomAttributes();\n }\n }\n\n setPresetTheme(brand: PresetBrand): void {\n this.isCustomTheme.set(false);\n this.currentBrand.set(brand);\n this.clearCustomStyles();\n this.updateDomAttributes();\n }\n\n setColorScheme(scheme: ColorScheme): void {\n this.currentTheme.set(scheme);\n this.updateDomAttributes();\n }\n\n setCustomTheme(config: CustomThemeConfig): void {\n this.isCustomTheme.set(true);\n \n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n \n // Remove data-brand attribute to let custom inline properties take precedence\n root.removeAttribute('data-brand');\n\n // Dynamically inject custom color properties\n root.style.setProperty('--bvs-color-brand', config.brand);\n root.style.setProperty('--bvs-color-brand-hover', config.brandHover);\n root.style.setProperty('--bvs-color-brand-active', config.brandActive);\n root.style.setProperty('--bvs-color-surface', config.surface);\n root.style.setProperty('--bvs-color-surface-subtle', config.surfaceSubtle);\n root.style.setProperty('--bvs-color-surface-muted', config.surfaceMuted);\n root.style.setProperty('--bvs-color-text-primary', config.textPrimary);\n root.style.setProperty('--bvs-color-text-secondary', config.textSecondary);\n root.style.setProperty('--bvs-color-text-disabled', config.textDisabled);\n root.style.setProperty('--bvs-color-border', config.border);\n root.style.setProperty('--bvs-color-border-strong', config.borderStrong);\n }\n\n private updateDomAttributes(): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.setAttribute('data-theme', this.currentTheme());\n if (!this.isCustomTheme()) {\n root.setAttribute('data-brand', this.currentBrand());\n }\n }\n\n private clearCustomStyles(): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.style.removeProperty('--bvs-color-brand');\n root.style.removeProperty('--bvs-color-brand-hover');\n root.style.removeProperty('--bvs-color-brand-active');\n root.style.removeProperty('--bvs-color-surface');\n root.style.removeProperty('--bvs-color-surface-subtle');\n root.style.removeProperty('--bvs-color-surface-muted');\n root.style.removeProperty('--bvs-color-text-primary');\n root.style.removeProperty('--bvs-color-text-secondary');\n root.style.removeProperty('--bvs-color-text-disabled');\n root.style.removeProperty('--bvs-color-border');\n root.style.removeProperty('--bvs-color-border-strong');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Avatar atom component — shows user initials in a styled circle.\n */\n@Component({\n selector: 'bvs-avatar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"avatar\" [attr.aria-label]=\"initials\">\n {{ initials }}\n </div>\n `,\n styleUrl: './avatar.component.scss'\n})\nexport class AvatarComponent {\n /** Full name used to derive initials. */\n @Input({ required: true }) fullName!: string;\n\n /** Returns the first letter of the first and last word of fullName. */\n get initials(): string {\n const parts = this.fullName.trim().split(/\\s+/);\n const first = parts[0]?.[0] ?? '';\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? '') : '';\n return `${first}${last}`.toUpperCase();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type BadgeColor = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Badge atom — displays a label with semantic coloring and size.\n */\n@Component({\n selector: '[bvs-badge]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.badge]': 'true',\n '[class.badge-info]': \"color === 'info'\",\n '[class.badge-success]': \"color === 'success'\",\n '[class.badge-warning]': \"color === 'warning'\",\n '[class.badge-danger]': \"color === 'danger'\",\n '[class.badge-neutral]': \"color === 'neutral'\",\n '[class.badge-sm]': \"size === 'sm'\",\n '[class.badge-md]': \"size === 'md'\",\n '[class.badge-lg]': \"size === 'lg'\"\n }\n})\nexport class BadgeComponent {\n /** Semantic color variant. */\n @Input() color: BadgeColor = 'neutral';\n\n /** Size variant. */\n @Input() size: BadgeSize = 'md';\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\n/**\n * Button atom — generic and reusable button component.\n */\n@Component({\n selector: '[bvs-button]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.btn]': 'true',\n '[class.btn-primary]': \"variant === 'primary'\",\n '[class.btn-secondary]': \"variant === 'secondary'\",\n '[class.btn-danger]': \"variant === 'danger'\",\n '[class.btn-ghost]': \"variant === 'ghost'\",\n '[class.btn-sm]': \"size === 'sm'\",\n '[class.btn-md]': \"size === 'md'\",\n '[class.btn-lg]': \"size === 'lg'\",\n '[class.btn-block]': 'block'\n }\n})\nexport class ButtonComponent {\n /** Semantic variant. */\n @Input() variant: ButtonVariant = 'primary';\n\n /** Size variant. */\n @Input() size: ButtonSize = 'md';\n\n /** Whether the button takes full width. */\n @Input() block = false;\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Card atom — provides a premium container for content.\n */\n@Component({\n selector: '[bvs-card]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-card]': 'true'\n }\n})\nexport class CardComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type MessageColor = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\n/**\n * Message atom — provides standard feedback messages.\n */\n@Component({\n selector: '[bvs-message]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './message.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-message]': 'true',\n '[class.bvs-message-neutral]': \"color === 'neutral'\",\n '[class.bvs-message-danger]': \"color === 'danger'\",\n '[class.bvs-message-warning]': \"color === 'warning'\",\n '[class.bvs-message-info]': \"color === 'info'\",\n '[class.bvs-message-success]': \"color === 'success'\"\n }\n})\nexport class MessageComponent {\n /** Color variant matching the feedback status. */\n @Input() color: MessageColor = 'neutral';\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type InputVariant = 'primary' | 'secondary' | 'danger';\nexport type InputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Input atom — generic and reusable input component.\n */\n@Component({\n selector: 'input[bvs-input], textarea[bvs-input]',\n standalone: true,\n template: '',\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-input]': 'true',\n '[class.input-primary]': \"variant === 'primary'\",\n '[class.input-secondary]': \"variant === 'secondary'\",\n '[class.input-danger]': \"variant === 'danger'\",\n '[class.input-sm]': \"size === 'sm'\",\n '[class.input-md]': \"size === 'md'\",\n '[class.input-lg]': \"size === 'lg'\",\n '[class.input-block]': 'block'\n }\n})\nexport class InputComponent {\n /** Semantic variant. */\n @Input() variant: InputVariant = 'primary';\n\n /** Size variant. */\n @Input() size: InputSize = 'md';\n\n /** Whether the input takes full width. */\n @Input() block = false;\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * FormField molecule — groups label, input and errors.\n * Implements a premium floating label behaviour for inputs.\n */\n@Component({\n selector: 'bvs-form-field',\n standalone: true,\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormFieldComponent {\n /** Label text. */\n @Input({ required: true }) label!: string;\n\n /** ID of the associated input for accessibility. */\n @Input() forId?: string;\n}\n","<div class=\"bvs-form-field\">\n <div class=\"bvs-form-field-container\">\n <ng-content></ng-content>\n <label class=\"bvs-form-field-label\" [attr.for]=\"forId\">\n {{ label }}\n </label>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Navbar organism — generic and reusable header component.\n * Provides content slots for brand and actions.\n */\n@Component({\n selector: 'bvs-navbar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss'\n})\nexport class NavbarComponent {}\n","<header class=\"navbar\" role=\"banner\">\n <div class=\"navbar__brand\">\n <ng-content select=\"[navbar-brand]\"></ng-content>\n </div>\n\n <nav class=\"navbar__actions\">\n <ng-content select=\"[navbar-actions]\"></ng-content>\n </nav>\n</header>\n","/*\n * Public API Surface of @bvs-tech/material\n */\n\nexport * from './lib/services/theme.service';\nexport * from './lib/components/atoms';\nexport * from './lib/components/molecules';\nexport * from './lib/components/organisms';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bvs-tech-material.mjs","sources":["../../../../projects/bvs-lib/src/lib/services/theme.service.ts","../../../../projects/bvs-lib/src/lib/components/atoms/avatar/avatar.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/badge/badge.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/button/button.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/card/card.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/message/message.component.ts","../../../../projects/bvs-lib/src/lib/components/atoms/input/input.component.ts","../../../../projects/bvs-lib/src/lib/components/molecules/form-field/form-field.component.ts","../../../../projects/bvs-lib/src/lib/components/molecules/form-field/form-field.component.html","../../../../projects/bvs-lib/src/lib/components/molecules/stepper/stepper.component.ts","../../../../projects/bvs-lib/src/lib/components/molecules/stepper/stepper.component.html","../../../../projects/bvs-lib/src/lib/components/organisms/navbar/navbar.component.ts","../../../../projects/bvs-lib/src/lib/components/organisms/navbar/navbar.component.html","../../../../projects/bvs-lib/src/public-api.ts","../../../../projects/bvs-lib/src/bvs-tech-material.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\nexport interface CustomThemeConfig {\n brand: string;\n brandHover: string;\n brandActive: string;\n surface: string;\n surfaceSubtle: string;\n surfaceMuted: string;\n textPrimary: string;\n textSecondary: string;\n textDisabled: string;\n border: string;\n borderStrong: string;\n}\n\nexport type PresetBrand = 'default' | 'emerald' | 'sunset' | 'amethyst' | 'ruby';\nexport type ColorScheme = 'light' | 'dark';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n readonly currentBrand = signal<PresetBrand>('default');\n readonly currentTheme = signal<ColorScheme>('light');\n readonly isCustomTheme = signal<boolean>(false);\n\n constructor() {\n // Initialize default state on DOM if running in browser\n if (typeof document !== 'undefined') {\n this.updateDomAttributes();\n }\n }\n\n setPresetTheme(brand: PresetBrand): void {\n this.isCustomTheme.set(false);\n this.currentBrand.set(brand);\n this.clearCustomStyles();\n this.updateDomAttributes();\n }\n\n setColorScheme(scheme: ColorScheme): void {\n this.currentTheme.set(scheme);\n this.updateDomAttributes();\n }\n\n setCustomTheme(config: CustomThemeConfig): void {\n this.isCustomTheme.set(true);\n\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n\n // Remove data-brand attribute to let custom inline properties take precedence\n root.removeAttribute('data-brand');\n\n // Dynamically inject custom color properties\n root.style.setProperty('--bvs-color-brand', config.brand);\n root.style.setProperty('--bvs-color-brand-hover', config.brandHover);\n root.style.setProperty('--bvs-color-brand-active', config.brandActive);\n root.style.setProperty('--bvs-color-surface', config.surface);\n root.style.setProperty('--bvs-color-surface-subtle', config.surfaceSubtle);\n root.style.setProperty('--bvs-color-surface-muted', config.surfaceMuted);\n root.style.setProperty('--bvs-color-text-primary', config.textPrimary);\n root.style.setProperty('--bvs-color-text-secondary', config.textSecondary);\n root.style.setProperty('--bvs-color-text-disabled', config.textDisabled);\n root.style.setProperty('--bvs-color-border', config.border);\n root.style.setProperty('--bvs-color-border-strong', config.borderStrong);\n }\n\n private updateDomAttributes(): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.setAttribute('data-theme', this.currentTheme());\n if (!this.isCustomTheme()) {\n root.setAttribute('data-brand', this.currentBrand());\n }\n }\n\n private clearCustomStyles(): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.style.removeProperty('--bvs-color-brand');\n root.style.removeProperty('--bvs-color-brand-hover');\n root.style.removeProperty('--bvs-color-brand-active');\n root.style.removeProperty('--bvs-color-surface');\n root.style.removeProperty('--bvs-color-surface-subtle');\n root.style.removeProperty('--bvs-color-surface-muted');\n root.style.removeProperty('--bvs-color-text-primary');\n root.style.removeProperty('--bvs-color-text-secondary');\n root.style.removeProperty('--bvs-color-text-disabled');\n root.style.removeProperty('--bvs-color-border');\n root.style.removeProperty('--bvs-color-border-strong');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Avatar atom component — shows user initials in a styled circle.\n */\n@Component({\n selector: 'bvs-avatar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"avatar\" [attr.aria-label]=\"initials\">\n {{ initials }}\n </div>\n `,\n styleUrl: './avatar.component.scss',\n})\nexport class AvatarComponent {\n /** Full name used to derive initials. */\n @Input({ required: true }) fullName!: string;\n\n /** Returns the first letter of the first and last word of fullName. */\n get initials(): string {\n const parts = this.fullName.trim().split(/\\s+/);\n const first = parts[0]?.[0] ?? '';\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? '') : '';\n return `${first}${last}`.toUpperCase();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type BadgeColor = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Badge atom — displays a label with semantic coloring and size.\n */\n@Component({\n selector: '[bvs-badge]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.badge]': 'true',\n '[class.badge-info]': \"color === 'info'\",\n '[class.badge-success]': \"color === 'success'\",\n '[class.badge-warning]': \"color === 'warning'\",\n '[class.badge-danger]': \"color === 'danger'\",\n '[class.badge-neutral]': \"color === 'neutral'\",\n '[class.badge-sm]': \"size === 'sm'\",\n '[class.badge-md]': \"size === 'md'\",\n '[class.badge-lg]': \"size === 'lg'\",\n },\n})\nexport class BadgeComponent {\n /** Semantic color variant. */\n @Input() color: BadgeColor = 'neutral';\n\n /** Size variant. */\n @Input() size: BadgeSize = 'md';\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\n/**\n * Button atom — generic and reusable button component.\n */\n@Component({\n selector: '[bvs-button]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.btn]': 'true',\n '[class.btn-primary]': \"variant === 'primary'\",\n '[class.btn-secondary]': \"variant === 'secondary'\",\n '[class.btn-danger]': \"variant === 'danger'\",\n '[class.btn-ghost]': \"variant === 'ghost'\",\n '[class.btn-sm]': \"size === 'sm'\",\n '[class.btn-md]': \"size === 'md'\",\n '[class.btn-lg]': \"size === 'lg'\",\n '[class.btn-block]': 'block',\n },\n})\nexport class ButtonComponent {\n /** Semantic variant. */\n @Input() variant: ButtonVariant = 'primary';\n\n /** Size variant. */\n @Input() size: ButtonSize = 'md';\n\n /** Whether the button takes full width. */\n @Input() block = false;\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Card atom — provides a premium container for content.\n */\n@Component({\n selector: '[bvs-card]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-card]': 'true',\n },\n})\nexport class CardComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type MessageColor = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\n/**\n * Message atom — provides standard feedback messages.\n */\n@Component({\n selector: '[bvs-message]',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './message.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-message]': 'true',\n '[class.bvs-message-neutral]': \"color === 'neutral'\",\n '[class.bvs-message-danger]': \"color === 'danger'\",\n '[class.bvs-message-warning]': \"color === 'warning'\",\n '[class.bvs-message-info]': \"color === 'info'\",\n '[class.bvs-message-success]': \"color === 'success'\",\n },\n})\nexport class MessageComponent {\n /** Color variant matching the feedback status. */\n @Input() color: MessageColor = 'neutral';\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type InputVariant = 'primary' | 'secondary' | 'danger';\nexport type InputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Input atom — generic and reusable input component.\n */\n@Component({\n selector: 'input[bvs-input], textarea[bvs-input], select[bvs-input]',\n template: '',\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bvs-input]': 'true',\n '[class.input-primary]': \"variant() === 'primary'\",\n '[class.input-secondary]': \"variant() === 'secondary'\",\n '[class.input-danger]': \"variant() === 'danger'\",\n '[class.input-sm]': \"size() === 'sm'\",\n '[class.input-md]': \"size() === 'md'\",\n '[class.input-lg]': \"size() === 'lg'\",\n '[class.input-block]': 'block()',\n },\n})\nexport class InputComponent {\n /** Semantic variant. */\n variant = input<InputVariant>('primary');\n\n /** Size variant. */\n size = input<InputSize>('md');\n\n /** Whether the input takes full width. */\n block = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * FormField molecule — groups label, input and errors.\n * Implements a premium floating label behaviour for inputs.\n */\n@Component({\n selector: 'bvs-form-field',\n standalone: true,\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormFieldComponent {\n /** Label text. */\n @Input({ required: true }) label!: string;\n\n /** ID of the associated input for accessibility. */\n @Input() forId?: string;\n}\n","<div class=\"bvs-form-field\">\n <div class=\"bvs-form-field-container\">\n <ng-content></ng-content>\n <label class=\"bvs-form-field-label\" [attr.for]=\"forId\">\n {{ label }}\n </label>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface BvsStep {\n label: string;\n description?: string;\n}\n\n/**\n * Stepper molecule — displays progress through a sequence of steps.\n */\n@Component({\n selector: 'bvs-stepper',\n imports: [CommonModule],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepperComponent {\n /** The list of steps to display. */\n steps = input<BvsStep[]>([]);\n\n /** The 0-based index of the active step. */\n activeStepIndex = input<number>(0);\n\n /** Emits when a step is clicked. */\n @Output() stepChange = new EventEmitter<number>();\n\n /**\n * Handles clicking on a step.\n * Only allows navigating to already completed steps or the next immediately available step\n * to ensure structured progression, or any step if desired by parent. We emit the index.\n */\n onStepClick(index: number): void {\n this.stepChange.emit(index);\n }\n\n isCompleted(index: number): boolean {\n return index < this.activeStepIndex();\n }\n\n isActive(index: number): boolean {\n return index === this.activeStepIndex();\n }\n\n isPending(index: number): boolean {\n return index > this.activeStepIndex();\n }\n}\n","<div class=\"bvs-stepper\">\n @for (step of steps(); track step.label; let i = $index; let last = $last) {\n <div\n class=\"bvs-stepper-step\"\n [class.is-active]=\"isActive(i)\"\n [class.is-completed]=\"isCompleted(i)\"\n [class.is-pending]=\"isPending(i)\"\n >\n <button\n type=\"button\"\n class=\"bvs-stepper-trigger\"\n (click)=\"onStepClick(i)\"\n [attr.aria-current]=\"isActive(i) ? 'step' : null\"\n >\n <span class=\"bvs-stepper-indicator\">\n @if (!isCompleted(i)) {\n <span class=\"bvs-stepper-number\">{{ i + 1 }}</span>\n } @else {\n <svg\n class=\"bvs-stepper-check-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n <span class=\"bvs-stepper-content\">\n <span class=\"bvs-stepper-label\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"bvs-stepper-description\">{{ step.description }}</span>\n }\n </span>\n </button>\n @if (!last) {\n <div class=\"bvs-stepper-line\"></div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Navbar organism — generic and reusable header component.\n * Provides content slots for brand and actions.\n */\n@Component({\n selector: 'bvs-navbar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss',\n})\nexport class NavbarComponent {}\n","<header class=\"navbar\" role=\"banner\">\n <div class=\"navbar__brand\">\n <ng-content select=\"[navbar-brand]\"></ng-content>\n </div>\n\n <nav class=\"navbar__actions\">\n <ng-content select=\"[navbar-actions]\"></ng-content>\n </nav>\n</header>\n","/*\n * Public API Surface of @bvs-tech/material\n */\n\nexport * from './lib/services/theme.service';\nexport * from './lib/components/atoms';\nexport * from './lib/components/molecules';\nexport * from './lib/components/organisms';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bvs-tech/material",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.2.0",
6
6
  "@angular/core": "^21.2.0"
@@ -0,0 +1,157 @@
1
+ @use 'sass:color';
2
+ @use './tokens' as *;
3
+
4
+ // ============================================================
5
+ // MIXINS – BVSTech Design System
6
+ // ============================================================
7
+
8
+ // --- RESPONSIVE MEDIA QUERIES ---
9
+ @mixin respond-to($breakpoint) {
10
+ @if $breakpoint == 'sm' {
11
+ @media (min-width: 640px) {
12
+ @content;
13
+ }
14
+ } @else if $breakpoint == 'md' {
15
+ @media (min-width: 768px) {
16
+ @content;
17
+ }
18
+ } @else if $breakpoint == 'lg' {
19
+ @media (min-width: 1024px) {
20
+ @content;
21
+ }
22
+ } @else if $breakpoint == 'xl' {
23
+ @media (min-width: 1280px) {
24
+ @content;
25
+ }
26
+ } @else if $breakpoint == '2xl' {
27
+ @media (min-width: 1536px) {
28
+ @content;
29
+ }
30
+ }
31
+ }
32
+
33
+ @mixin respond-below($breakpoint) {
34
+ @if $breakpoint == 'sm' {
35
+ @media (max-width: 639px) {
36
+ @content;
37
+ }
38
+ } @else if $breakpoint == 'md' {
39
+ @media (max-width: 767px) {
40
+ @content;
41
+ }
42
+ } @else if $breakpoint == 'lg' {
43
+ @media (max-width: 1023px) {
44
+ @content;
45
+ }
46
+ } @else if $breakpoint == 'xl' {
47
+ @media (max-width: 1279px) {
48
+ @content;
49
+ }
50
+ }
51
+ }
52
+
53
+ // --- FLEXBOX HELPERS ---
54
+ @mixin flex-center {
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ }
59
+
60
+ @mixin flex-between {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ }
65
+
66
+ @mixin flex-column {
67
+ display: flex;
68
+ flex-direction: column;
69
+ }
70
+
71
+ @mixin flex-row {
72
+ display: flex;
73
+ flex-direction: row;
74
+ }
75
+
76
+ // --- TYPOGRAPHY UTILITIES ---
77
+ @mixin text-style(
78
+ $size: $font-size-base,
79
+ $weight: $font-weight-regular,
80
+ $line-height: $line-height-normal
81
+ ) {
82
+ font-size: $size;
83
+ font-weight: $weight;
84
+ line-height: $line-height;
85
+ }
86
+
87
+ @mixin truncate {
88
+ overflow: hidden;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ }
92
+
93
+ @mixin line-clamp($lines: 2) {
94
+ display: -webkit-box;
95
+ -webkit-box-orient: vertical;
96
+ -webkit-line-clamp: $lines;
97
+ overflow: hidden;
98
+ }
99
+
100
+ // --- VISUAL EFFECTS ---
101
+ @mixin elevation($level: 'base') {
102
+ @if $level == 'sm' {
103
+ box-shadow: $shadow-sm;
104
+ } @else if $level == 'base' {
105
+ box-shadow: $shadow-base;
106
+ } @else if $level == 'md' {
107
+ box-shadow: $shadow-md;
108
+ } @else if $level == 'lg' {
109
+ box-shadow: $shadow-lg;
110
+ } @else if $level == 'xl' {
111
+ box-shadow: $shadow-xl;
112
+ }
113
+ }
114
+
115
+ @mixin focus-ring($color: $color-brand) {
116
+ outline: 2px solid $color;
117
+ outline-offset: 2px;
118
+ }
119
+
120
+ @mixin transition($property: all, $duration: $transition-base) {
121
+ transition: $property $duration;
122
+ }
123
+
124
+ // --- CUSTOM SCROLLBARS ---
125
+ @mixin custom-scrollbar(
126
+ $size: 6px,
127
+ $thumb: var(--bvs-color-neutral-300),
128
+ $track: var(--bvs-color-neutral-100)
129
+ ) {
130
+ &::-webkit-scrollbar {
131
+ width: $size;
132
+ height: $size;
133
+ }
134
+
135
+ &::-webkit-scrollbar-track {
136
+ background: $track;
137
+ border-radius: $radius-full;
138
+ }
139
+
140
+ &::-webkit-scrollbar-thumb {
141
+ background: $thumb;
142
+ border-radius: $radius-full;
143
+ }
144
+ }
145
+
146
+ // --- ACCESSIBILITY (Screen Reader Only) ---
147
+ @mixin sr-only {
148
+ position: absolute;
149
+ width: 1px;
150
+ height: 1px;
151
+ padding: 0;
152
+ margin: -1px;
153
+ overflow: hidden;
154
+ clip-path: inset(50%);
155
+ white-space: nowrap;
156
+ border-width: 0;
157
+ }
@@ -0,0 +1,272 @@
1
+ // ============================================================
2
+ // DESIGN TOKENS ENTRYPOINT
3
+ // ============================================================
4
+
5
+ @use 'sass:map';
6
+
7
+ @use './tokens/colors' as *;
8
+ @use './tokens/spacing' as *;
9
+ @use './tokens/typography' as *;
10
+ @use './tokens/shadows' as *;
11
+
12
+ // ============================================================
13
+ // CSS VARIABLE INJECTION (Runtime Presets)
14
+ // ============================================================
15
+
16
+ :root {
17
+ // Primitives
18
+ @each $key, $value in $palette-primary {
19
+ --bvs-color-primary-#{$key}: #{$value};
20
+ }
21
+ @each $key, $value in $palette-secondary {
22
+ --bvs-color-secondary-#{$key}: #{$value};
23
+ }
24
+ @each $key, $value in $palette-neutral {
25
+ --bvs-color-neutral-#{$key}: #{$value};
26
+ }
27
+
28
+ --bvs-color-success-light: #{map.get($palette-success, 'light')};
29
+ --bvs-color-success: #{map.get($palette-success, 'base')};
30
+ --bvs-color-success-dark: #{map.get($palette-success, 'dark')};
31
+
32
+ --bvs-color-warning-light: #{map.get($palette-warning, 'light')};
33
+ --bvs-color-warning: #{map.get($palette-warning, 'base')};
34
+ --bvs-color-warning-dark: #{map.get($palette-warning, 'dark')};
35
+
36
+ --bvs-color-error-light: #{map.get($palette-error, 'light')};
37
+ --bvs-color-error: #{map.get($palette-error, 'base')};
38
+ --bvs-color-error-dark: #{map.get($palette-error, 'dark')};
39
+
40
+ --bvs-color-info-light: #{map.get($palette-info, 'light')};
41
+ --bvs-color-info: #{map.get($palette-info, 'base')};
42
+ --bvs-color-info-dark: #{map.get($palette-info, 'dark')};
43
+
44
+ // Spacing (8pt Grid)
45
+ @each $key, $value in $spacing {
46
+ --bvs-space-#{$key}: #{$value};
47
+ }
48
+
49
+ // Typography Sizes
50
+ @each $key, $value in $font-sizes {
51
+ --bvs-font-size-#{$key}: #{$value};
52
+ }
53
+
54
+ // Typography Weights
55
+ @each $key, $value in $font-weights {
56
+ --bvs-font-weight-#{$key}: #{$value};
57
+ }
58
+
59
+ // Line Heights
60
+ @each $key, $value in $line-heights {
61
+ --bvs-line-height-#{$key}: #{$value};
62
+ }
63
+
64
+ // Shadows
65
+ @each $key, $value in $shadows {
66
+ --bvs-shadow-#{$key}: #{$value};
67
+ }
68
+
69
+ // Border Radius
70
+ @each $key, $value in $radius {
71
+ --bvs-radius-#{$key}: #{$value};
72
+ }
73
+
74
+ // Breakpoints
75
+ @each $key, $value in $breakpoints {
76
+ --bvs-breakpoint-#{$key}: #{$value};
77
+ }
78
+
79
+ // Transitions
80
+ @each $key, $value in $transitions {
81
+ --bvs-transition-#{$key}: #{$value};
82
+ }
83
+
84
+ // Z-Indices
85
+ @each $key, $value in $z-index {
86
+ --bvs-z-#{$key}: #{$value};
87
+ }
88
+
89
+ // Default Preset Fallbacks (Light default theme)
90
+ @each $key, $value in $theme-default-light {
91
+ --bvs-color-#{$key}: #{$value};
92
+ }
93
+ }
94
+
95
+ // ------------------------------------------------------------
96
+ // Preset theme bindings based on DOM data-attributes
97
+ // ------------------------------------------------------------
98
+
99
+ // 1. Default Brand Theme
100
+ [data-brand='default'] {
101
+ &[data-theme='light'] {
102
+ @each $key, $value in $theme-default-light {
103
+ --bvs-color-#{$key}: #{$value};
104
+ }
105
+ }
106
+ &[data-theme='dark'] {
107
+ @each $key, $value in $theme-default-dark {
108
+ --bvs-color-#{$key}: #{$value};
109
+ }
110
+ }
111
+ }
112
+
113
+ // 2. Emerald Brand Theme
114
+ [data-brand='emerald'] {
115
+ &[data-theme='light'] {
116
+ @each $key, $value in $theme-emerald-light {
117
+ --bvs-color-#{$key}: #{$value};
118
+ }
119
+ }
120
+ &[data-theme='dark'] {
121
+ @each $key, $value in $theme-emerald-dark {
122
+ --bvs-color-#{$key}: #{$value};
123
+ }
124
+ }
125
+ }
126
+
127
+ // 3. Sunset Brand Theme
128
+ [data-brand='sunset'] {
129
+ &[data-theme='light'] {
130
+ @each $key, $value in $theme-sunset-light {
131
+ --bvs-color-#{$key}: #{$value};
132
+ }
133
+ }
134
+ &[data-theme='dark'] {
135
+ @each $key, $value in $theme-sunset-dark {
136
+ --bvs-color-#{$key}: #{$value};
137
+ }
138
+ }
139
+ }
140
+
141
+ // 4. Amethyst Brand Theme
142
+ [data-brand='amethyst'] {
143
+ &[data-theme='light'] {
144
+ @each $key, $value in $theme-amethyst-light {
145
+ --bvs-color-#{$key}: #{$value};
146
+ }
147
+ }
148
+ &[data-theme='dark'] {
149
+ @each $key, $value in $theme-amethyst-dark {
150
+ --bvs-color-#{$key}: #{$value};
151
+ }
152
+ }
153
+ }
154
+
155
+ // 5. Ruby Brand Theme
156
+ [data-brand='ruby'] {
157
+ &[data-theme='light'] {
158
+ @each $key, $value in $theme-ruby-light {
159
+ --bvs-color-#{$key}: #{$value};
160
+ }
161
+ }
162
+ &[data-theme='dark'] {
163
+ @each $key, $value in $theme-ruby-dark {
164
+ --bvs-color-#{$key}: #{$value};
165
+ }
166
+ }
167
+ }
168
+
169
+ // ------------------------------------------------------------
170
+ // SASS Variables Wrapping CSS Custom Properties
171
+ // ------------------------------------------------------------
172
+
173
+ $color-brand: var(--bvs-color-brand);
174
+ $color-brand-hover: var(--bvs-color-brand-hover);
175
+ $color-brand-active: var(--bvs-color-brand-active);
176
+
177
+ $color-surface: var(--bvs-color-surface);
178
+ $color-surface-subtle: var(--bvs-color-surface-subtle);
179
+ $color-surface-muted: var(--bvs-color-surface-muted);
180
+
181
+ $color-text-primary: var(--bvs-color-text-primary);
182
+ $color-text-secondary: var(--bvs-color-text-secondary);
183
+ $color-text-disabled: var(--bvs-color-text-disabled);
184
+
185
+ $color-border: var(--bvs-color-border);
186
+ $color-border-strong: var(--bvs-color-border-strong);
187
+
188
+ // Semantic Alert Colors
189
+ $color-success-light: var(--bvs-color-success-light);
190
+ $color-success: var(--bvs-color-success);
191
+ $color-success-dark: var(--bvs-color-success-dark);
192
+
193
+ $color-warning-light: var(--bvs-color-warning-light);
194
+ $color-warning: var(--bvs-color-warning);
195
+ $color-warning-dark: var(--bvs-color-warning-dark);
196
+
197
+ $color-error-light: var(--bvs-color-error-light);
198
+ $color-error: var(--bvs-color-error);
199
+ $color-error-dark: var(--bvs-color-error-dark);
200
+
201
+ $color-info-light: var(--bvs-color-info-light);
202
+ $color-info: var(--bvs-color-info);
203
+ $color-info-dark: var(--bvs-color-info-dark);
204
+
205
+ // Spacings
206
+ $space-0: var(--bvs-space-0);
207
+ $space-1: var(--bvs-space-1);
208
+ $space-2: var(--bvs-space-2);
209
+ $space-3: var(--bvs-space-3);
210
+ $space-4: var(--bvs-space-4);
211
+ $space-5: var(--bvs-space-5);
212
+ $space-6: var(--bvs-space-6);
213
+ $space-8: var(--bvs-space-8);
214
+ $space-10: var(--bvs-space-10);
215
+ $space-12: var(--bvs-space-12);
216
+ $space-16: var(--bvs-space-16);
217
+ $space-20: var(--bvs-space-20);
218
+ $space-24: var(--bvs-space-24);
219
+
220
+ // Typography
221
+ $font-sans: var(--bvs-font-family-sans);
222
+ $font-mono: var(--bvs-font-family-mono);
223
+
224
+ $font-size-xs: var(--bvs-font-size-xs);
225
+ $font-size-sm: var(--bvs-font-size-sm);
226
+ $font-size-base: var(--bvs-font-size-base);
227
+ $font-size-lg: var(--bvs-font-size-lg);
228
+ $font-size-xl: var(--bvs-font-size-xl);
229
+ $font-size-2xl: var(--bvs-font-size-2xl);
230
+ $font-size-3xl: var(--bvs-font-size-3xl);
231
+ $font-size-4xl: var(--bvs-font-size-4xl);
232
+
233
+ $font-weight-light: var(--bvs-font-weight-light);
234
+ $font-weight-regular: var(--bvs-font-weight-regular);
235
+ $font-weight-medium: var(--bvs-font-weight-medium);
236
+ $font-weight-semibold: var(--bvs-font-weight-semibold);
237
+ $font-weight-bold: var(--bvs-font-weight-bold);
238
+
239
+ $line-height-tight: var(--bvs-line-height-tight);
240
+ $line-height-normal: var(--bvs-line-height-normal);
241
+ $line-height-loose: var(--bvs-line-height-loose);
242
+
243
+ // Shadows & Radius
244
+ $shadow-sm: var(--bvs-shadow-sm);
245
+ $shadow-base: var(--bvs-shadow-base);
246
+ $shadow-md: var(--bvs-shadow-md);
247
+ $shadow-lg: var(--bvs-shadow-lg);
248
+ $shadow-xl: var(--bvs-shadow-xl);
249
+
250
+ $radius-none: var(--bvs-radius-none);
251
+ $radius-sm: var(--bvs-radius-sm);
252
+ $radius-base: var(--bvs-radius-base);
253
+ $radius-md: var(--bvs-radius-md);
254
+ $radius-lg: var(--bvs-radius-lg);
255
+ $radius-xl: var(--bvs-radius-xl);
256
+ $radius-2xl: var(--bvs-radius-2xl);
257
+ $radius-full: var(--bvs-radius-full);
258
+
259
+ // Transitions
260
+ $transition-fast: var(--bvs-transition-fast);
261
+ $transition-base: var(--bvs-transition-base);
262
+ $transition-slow: var(--bvs-transition-slow);
263
+ $transition-slower: var(--bvs-transition-slower);
264
+
265
+ // Z-Indices
266
+ $z-dropdown: var(--bvs-z-dropdown);
267
+ $z-sticky: var(--bvs-z-sticky);
268
+ $z-fixed: var(--bvs-z-fixed);
269
+ $z-modal: var(--bvs-z-modal);
270
+ $z-popover: var(--bvs-z-popover);
271
+ $z-tooltip: var(--bvs-z-tooltip);
272
+ $z-toast: var(--bvs-z-toast);
@@ -0,0 +1,2 @@
1
+ @use './tokens' as *;
2
+ @use './mixins' as *;