ng-luna 0.1.5 → 0.2.2

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":"ng-luna.mjs","sources":["../../src/controls/luna-control.ts","../../src/controls/button/button.component.ts","../../src/controls/button/button.component.html","../../src/controls/checkbox/checkbox.component.ts","../../src/controls/checkbox/checkbox.component.html","../../src/controls/fieldset/fieldset.component.ts","../../src/controls/fieldset/fieldset.component.html","../../src/controls/input/input.component.ts","../../src/controls/input/input.component.html","../../src/controls/progress/progress.component.ts","../../src/controls/progress/progress.component.html","../../src/controls/radio/radio.component.ts","../../src/controls/radio/radio.component.html","../../src/controls/select/select.component.ts","../../src/controls/select/select.component.html","../../src/controls/slider/slider.component.ts","../../src/controls/slider/slider.component.html","../../src/controls/tabs/tabs.component.ts","../../src/controls/tabs/tabs.component.html","../../src/controls/textarea/textarea.component.ts","../../src/controls/textarea/textarea.component.html","../../src/controls/window/window.component.ts","../../src/controls/window/window.component.html","../../src/public-api.ts","../../src/ng-luna.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\n\n// Base class for all Luna components providing common form element attributes\n@Directive()\nexport abstract class LunaControl\n{\n @Input()\n public id?: string;\n\n @Input()\n public name?: string;\n\n @Input()\n public disabled = false;\n\n @Input()\n public tabindex?: number;\n\n @Input()\n public autofocus = false;\n}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { BidiModule, Dir } from '@angular/cdk/bidi';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\nexport type FormEnctype = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\n\nexport type FormMethod = 'get' | 'post';\n\nexport type FormTarget = '_self' | '_blank' | '_parent' | '_top';\n\nexport type PopoverTargetAction = 'show' | 'hide' | 'toggle';\n\n@Component({\n selector: 'luna-button',\n standalone: true,\n imports: [ BidiModule ],\n templateUrl: './button.component.html',\n styleUrls: [ './button.component.scss' ]\n})\nexport class ButtonComponent\n extends LunaControl implements AfterViewInit, OnDestroy\n{\n @Input()\n public command?: string;\n\n @Input()\n public commandfor?: string;\n\n @Input()\n public form?: string;\n\n @Input()\n public formaction?: string;\n\n @Input()\n public formenctype?: FormEnctype;\n\n @Input()\n public formmethod?: FormMethod;\n\n @Input()\n public formnovalidate = false;\n\n @Input()\n public formtarget?: FormTarget;\n\n @Input()\n public popovertarget?: string;\n\n @Input()\n public popovertargetaction?: PopoverTargetAction;\n\n @Input()\n public type: ButtonType = 'button';\n\n @Input()\n public value?: string;\n\n @Output()\n public click = new EventEmitter<MouseEvent>();\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n public platform: Platform,\n public dir: Dir\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onClick(event: MouseEvent): void\n {\n if (this.disabled)\n {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n this.click.emit(event);\n }\n}\n","<button\n [attr.autofocus]=\"autofocus || null\"\n [attr.command]=\"command\"\n [attr.commandfor]=\"commandfor\"\n [disabled]=\"disabled\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate || null\"\n [attr.formtarget]=\"formtarget\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.popovertarget]=\"popovertarget\"\n [attr.popovertargetaction]=\"popovertargetaction\"\n [attr.tabindex]=\"tabindex\"\n [attr.type]=\"type\"\n [attr.value]=\"value\"\n (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-checkbox',\n standalone: true,\n templateUrl: './checkbox.component.html',\n styleUrls: [ './checkbox.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }]\n})\nexport class CheckboxComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public label?: string;\n\n @Input()\n public value?: string;\n\n @Output()\n public change = new EventEmitter<boolean>();\n\n public checked = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onCheckboxChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n const label = this.label || 'checkbox';\n const state = this.checked ? 'checked' : 'unchecked';\n this.liveAnnouncer.announce(`${label} ${state}`, 'polite');\n this.onChange(this.checked);\n this.onTouched();\n this.change.emit(this.checked);\n }\n\n public writeValue(value: boolean): void\n {\n this.checked = coerceBooleanProperty(value);\n }\n\n public registerOnChange(fn: (value: boolean) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n [attr.autofocus]=\"autofocus || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n type=\"checkbox\"\n [attr.value]=\"value\"\n (change)=\"onCheckboxChange($event)\">\n<label [attr.for]=\"id || name\">\n <ng-content></ng-content>{{ label }}\n</label>\n","import { Component, Input } from '@angular/core';\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-fieldset',\n standalone: true,\n templateUrl: './fieldset.component.html',\n styleUrls: [ './fieldset.component.scss' ]\n})\nexport class FieldsetComponent extends LunaControl\n{\n @Input()\n public legend?: string;\n}\n","<fieldset\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\">\n <legend *ngIf=\"legend\">{{ legend }}</legend>\n <ng-content></ng-content>\n</fieldset>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { Platform } from '@angular/cdk/platform';\nimport { BidiModule, Dir } from '@angular/cdk/bidi';\nimport { ClipboardModule, Clipboard } from '@angular/cdk/clipboard';\n\nimport { LunaControl } from '../luna-control';\n\nexport type InputType = 'text' | 'password' | 'email';\n\n@Component({\n selector: 'luna-input',\n standalone: true,\n imports: [ TextFieldModule, BidiModule ],\n templateUrl: './input.component.html',\n styleUrls: [ './input.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }]\n})\nexport class InputComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public placeholder?: string;\n\n @Input()\n public readonly = false;\n\n @Input()\n public type: InputType = 'text';\n\n @Output()\n public change = new EventEmitter<string>();\n\n @Output()\n public blur = new EventEmitter<FocusEvent>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n @ViewChild('inputElement', { static: false })\n public inputElement?: ElementRef<HTMLInputElement>;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform,\n public dir: Dir,\n private clipboard: Clipboard\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onInputChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n public onInputBlur(event: FocusEvent): void\n {\n this.onTouched();\n if (this.value && this.id)\n {\n this.liveAnnouncer.announce(`${this.id} value is ${this.value}`, 'polite');\n }\n this.blur.emit(event);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n #inputElement\n [attr.autofocus]=\"autofocus || null\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [attr.tabindex]=\"tabindex\"\n [attr.type]=\"type\"\n [value]=\"value\"\n (blur)=\"onInputBlur($event)\"\n (input)=\"onInputChange($event)\">\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-progress',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './progress.component.html',\n styleUrls: [ './progress.component.scss' ]\n})\nexport class ProgressComponent\n extends LunaControl implements OnChanges\n{\n @Input()\n public set max(value: NumberInput)\n {\n this._max = coerceNumberProperty(value, 100);\n }\n\n public get max(): number\n {\n return this._max;\n }\n\n @Input()\n public set value(value: NumberInput | undefined)\n {\n this._value = value !== undefined ? coerceNumberProperty(value) : undefined;\n }\n\n public get value(): number | undefined\n {\n return this._value;\n }\n\n private _max = 100;\n private _value?: number;\n private _previousValue?: number;\n\n constructor(\n private liveAnnouncer: LiveAnnouncer\n )\n {\n super();\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if (changes['value'] && this._value !== undefined)\n {\n const percentage = Math.round((this._value / this._max) * 100);\n const milestones = [ 0, 25, 50, 75, 100 ];\n const previousPercentage = this._previousValue !== undefined\n ? Math.round((this._previousValue / this._max) * 100)\n : undefined;\n\n if (previousPercentage === undefined || milestones.includes(percentage))\n {\n if (previousPercentage === undefined || Math.abs(percentage - (previousPercentage || 0)) >= 10)\n {\n this.liveAnnouncer.announce(`Progress ${percentage} percent`, 'polite');\n }\n }\n this._previousValue = this._value;\n }\n }\n}\n","<progress\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.max]=\"max\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value\"></progress>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-radio',\n standalone: true,\n templateUrl: './radio.component.html',\n styleUrls: [ './radio.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }]\n})\nexport class RadioComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public label?: string;\n\n @Input()\n public value?: string;\n\n @Output()\n public change = new EventEmitter<string>();\n\n public checked = false;\n\n private onChange: (value: string | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onRadioChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n if (this.checked)\n {\n const label = this.label || this.value || 'radio option';\n this.liveAnnouncer.announce(`${label} selected`, 'polite');\n }\n this.onChange(this.checked ? this.value ?? null : null);\n this.onTouched();\n if (this.value)\n {\n this.change.emit(this.value);\n }\n }\n\n public writeValue(value: string | null): void\n {\n this.checked = value === this.value;\n }\n\n public registerOnChange(fn: (value: string | null) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n [attr.autofocus]=\"autofocus || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n type=\"radio\"\n [attr.value]=\"value\"\n (change)=\"onRadioChange($event)\">\n<label [attr.for]=\"id || name\">\n <ng-content></ng-content>{{ label }}\n</label>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-select',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './select.component.html',\n styleUrls: [ './select.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }]\n})\nexport class SelectComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n\n @Output()\n public change = new EventEmitter<string>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onSelectChange(event: Event): void\n {\n const target = event.target as HTMLSelectElement;\n this.value = target.value;\n const selectedOption = target.options[target.selectedIndex];\n const optionText = selectedOption?.textContent || this.value;\n this.liveAnnouncer.announce(`Selected ${optionText}`, 'polite');\n this.onChange(this.value);\n this.onTouched();\n this.change.emit(this.value);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<select\n [attr.autofocus]=\"autofocus || null\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n [value]=\"value\"\n (change)=\"onSelectChange($event)\">\n <ng-content></ng-content>\n</select>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-slider',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './slider.component.html',\n styleUrls: [ './slider.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n }]\n})\nexport class SliderComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public boxIndicator = false;\n\n @Input()\n public set max(value: NumberInput)\n {\n this._max = coerceNumberProperty(value, 100);\n }\n\n public get max(): number\n {\n return this._max;\n }\n\n @Input()\n public set min(value: NumberInput)\n {\n this._min = coerceNumberProperty(value, 0);\n }\n\n public get min(): number\n {\n return this._min;\n }\n\n @Input()\n public set step(value: NumberInput)\n {\n this._step = coerceNumberProperty(value, 1);\n }\n\n public get step(): number\n {\n return this._step;\n }\n\n @Input()\n public vertical = false;\n\n @Output()\n public change = new EventEmitter<number>();\n\n public value = 0;\n\n private _max = 100;\n private _min = 0;\n private _step = 1;\n\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onSliderChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.value = Number(target.value);\n this.onChange(this.value);\n this.change.emit(this.value);\n this.liveAnnouncer.announce(`Value changed to ${this.value}`, 'polite');\n }\n\n public onSliderBlur(): void\n {\n this.onTouched();\n }\n\n public writeValue(value: number): void\n {\n this.value = coerceNumberProperty(value, 0);\n }\n\n public registerOnChange(fn: (value: number) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<div [class.is-vertical]=\"vertical\">\n <input\n [attr.autofocus]=\"autofocus || null\"\n [class.has-box-indicator]=\"boxIndicator\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [attr.step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n type=\"range\"\n [value]=\"value\"\n (blur)=\"onSliderBlur()\"\n (input)=\"onSliderChange($event)\">\n</div>\n","import { Component, Input, Output, EventEmitter, QueryList, ViewChildren, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule, FocusKeyManager, FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\nexport interface Tab\n{\n id: string;\n label: string;\n content?: string;\n}\n\nclass TabButtonFocusable implements FocusableOption\n{\n constructor(private elementRef: ElementRef<HTMLButtonElement>)\n {\n }\n\n public focus(origin?: FocusOrigin): void\n {\n this.elementRef.nativeElement.focus();\n }\n}\n\n@Component({\n selector: 'luna-tabs',\n standalone: true,\n imports: [ CommonModule, A11yModule ],\n templateUrl: './tabs.component.html',\n styleUrls: [ './tabs.component.scss' ]\n})\nexport class TabsComponent\n extends LunaControl implements AfterViewInit\n{\n @Input()\n public activeTabId?: string;\n\n @Input()\n public tabs: Tab[] = [];\n\n @Output()\n public tabChange = new EventEmitter<string>();\n\n @ViewChildren('tabButton')\n public tabButtons!: QueryList<ElementRef<HTMLButtonElement>>;\n\n private keyManager?: FocusKeyManager<TabButtonFocusable>;\n\n constructor(\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n const focusableItems = this.tabButtons.map(ref => new TabButtonFocusable(ref));\n this.keyManager = new FocusKeyManager(focusableItems)\n .withHorizontalOrientation('ltr')\n .withWrap();\n\n if (this.activeTabId)\n {\n const activeIndex = this.tabs.findIndex(tab => tab.id === this.activeTabId);\n if (activeIndex >= 0)\n {\n this.keyManager.setActiveItem(activeIndex);\n }\n }\n }\n\n public selectTab(tabId: string): void\n {\n this.activeTabId = tabId;\n this.tabChange.emit(tabId);\n\n const activeIndex = this.tabs.findIndex(tab => tab.id === tabId);\n if (activeIndex >= 0 && this.keyManager)\n {\n this.keyManager.setActiveItem(activeIndex);\n }\n }\n\n public isActive(tabId: string): boolean\n {\n return this.activeTabId === tabId;\n }\n\n public onKeyDown(event: KeyboardEvent): void\n {\n if (this.keyManager)\n {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n {\n this.keyManager.onKeydown(event);\n const activeIndex = this.keyManager.activeItemIndex;\n if (activeIndex !== null && activeIndex >= 0 && activeIndex < this.tabs.length)\n {\n this.selectTab(this.tabs[activeIndex].id);\n }\n }\n }\n }\n}\n","<menu\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n role=\"tablist\"\n [attr.tabindex]=\"tabindex\"\n (keydown)=\"onKeyDown($event)\">\n <button\n #tabButton\n *ngFor=\"let tab of tabs\"\n [attr.aria-selected]=\"isActive(tab.id)\"\n role=\"tab\"\n (click)=\"selectTab(tab.id)\">\n {{ tab.label }}\n </button>\n</menu>\n<div\n *ngFor=\"let tab of tabs\"\n role=\"tabpanel\"\n [hidden]=\"!isActive(tab.id)\">\n <ng-content [select]=\"'[data-tab-id=\\'' + tab.id + '\\']'\"></ng-content>\n <div *ngIf=\"tab.content\">{{ tab.content }}</div>\n</div>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-textarea',\n standalone: true,\n templateUrl: './textarea.component.html',\n styleUrls: [ './textarea.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }]\n})\nexport class TextareaComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public cols?: number;\n\n @Input()\n public placeholder?: string;\n\n @Input()\n public readonly = false;\n\n @Input()\n public rows?: number;\n\n @Output()\n public change = new EventEmitter<string>();\n\n @Output()\n public blur = new EventEmitter<FocusEvent>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onTextareaChange(event: Event): void\n {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n public onTextareaBlur(event: FocusEvent): void\n {\n this.onTouched();\n if (this.value && this.id)\n {\n const charCount = this.value.length;\n this.liveAnnouncer.announce(`${this.id} contains ${charCount} characters`, 'polite');\n }\n this.blur.emit(event);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<textarea\n [attr.autofocus]=\"autofocus || null\"\n [attr.cols]=\"cols\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [attr.rows]=\"rows\"\n [attr.tabindex]=\"tabindex\"\n [value]=\"value\"\n (blur)=\"onTextareaBlur($event)\"\n (input)=\"onTextareaChange($event)\"></textarea>\n","import { Component, Input, Output, EventEmitter, ElementRef, AfterViewInit, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule, CdkDrag } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-window',\n standalone: true,\n imports: [ CommonModule, DragDropModule, ScrollingModule ],\n templateUrl: './window.component.html',\n styleUrls: [ './window.component.scss' ]\n})\nexport class WindowComponent\n extends LunaControl implements AfterViewInit, OnChanges\n{\n @Input()\n public isMaximized = false;\n\n @Input()\n public showClose = true;\n\n @Input()\n public showHelp = false;\n\n @Input()\n public showMaximize = true;\n\n @Input()\n public showMinimize = true;\n\n @Input()\n public title?: string;\n\n @Output()\n public minimize = new EventEmitter<void>();\n\n @Output()\n public maximize = new EventEmitter<void>();\n\n @Output()\n public restore = new EventEmitter<void>();\n\n @Output()\n public help = new EventEmitter<void>();\n\n @Output()\n public close = new EventEmitter<void>();\n\n @Input()\n public boundaryElement?: string;\n\n @Input()\n public scrollable = false;\n\n public dragDisabled = false;\n\n @ViewChild(CdkDrag, { static: false })\n private dragInstance?: CdkDrag;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.updateDragState();\n this.updateDragBoundary();\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if (changes['isMaximized'])\n {\n this.updateDragState();\n }\n if (changes['boundaryElement'])\n {\n this.updateDragBoundary();\n }\n }\n\n private updateDragState(): void\n {\n this.dragDisabled = this.isMaximized;\n }\n\n private updateDragBoundary(): void\n {\n if (this.dragInstance && this.boundaryElement)\n {\n const boundary = document.querySelector(this.boundaryElement);\n if (boundary)\n {\n this.dragInstance.boundaryElement = boundary as HTMLElement;\n }\n }\n }\n\n public onMinimize(): void\n {\n this.minimize.emit();\n }\n\n public onMaximize(): void\n {\n if (this.isMaximized)\n {\n this.restore.emit();\n }\n else\n {\n this.maximize.emit();\n }\n this.updateDragState();\n }\n\n public onHelp(): void\n {\n this.help.emit();\n }\n\n public onClose(): void\n {\n this.close.emit();\n }\n}\n","<div\n [attr.autofocus]=\"autofocus || null\"\n [cdkDragDisabled]=\"dragDisabled\"\n class=\"window\"\n cdkDrag\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\">\n <div\n cdkDragHandle\n class=\"title-bar\">\n <div class=\"title-bar-text\">{{ title }}</div>\n <div class=\"title-bar-controls\">\n <button\n *ngIf=\"showMinimize\"\n aria-label=\"Minimize\"\n (click)=\"onMinimize()\"></button>\n <button\n *ngIf=\"showMaximize\"\n [attr.aria-label]=\"isMaximized ? 'Restore' : 'Maximize'\"\n (click)=\"onMaximize()\"></button>\n <button\n *ngIf=\"showHelp\"\n aria-label=\"Help\"\n (click)=\"onHelp()\"></button>\n <button\n *ngIf=\"showClose\"\n aria-label=\"Close\"\n (click)=\"onClose()\"></button>\n </div>\n </div>\n <div\n [class.scrollable]=\"scrollable\"\n class=\"window-body\">\n <div\n *ngIf=\"scrollable\"\n cdkScrollable>\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"!scrollable\"></ng-content>\n </div>\n <div class=\"status-bar\">\n <ng-content select=\"[slot='status']\"></ng-content>\n </div>\n</div>\n","/*\n * Public API Surface of ng-luna\n */\n\nexport * from './controls';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"ng-luna.mjs","sources":["../../src/controls/luna-control.ts","../../src/controls/button/button.component.ts","../../src/controls/button/button.component.html","../../src/controls/checkbox/checkbox.component.ts","../../src/controls/checkbox/checkbox.component.html","../../src/controls/fieldset/fieldset.component.ts","../../src/controls/fieldset/fieldset.component.html","../../src/controls/input/input.component.ts","../../src/controls/input/input.component.html","../../src/controls/progress/progress.component.ts","../../src/controls/progress/progress.component.html","../../src/controls/radio/radio.component.ts","../../src/controls/radio/radio.component.html","../../src/controls/select/select.component.ts","../../src/controls/select/select.component.html","../../src/controls/slider/slider.component.ts","../../src/controls/slider/slider.component.html","../../src/controls/tabs/tabs.component.ts","../../src/controls/tabs/tabs.component.html","../../src/controls/textarea/textarea.component.ts","../../src/controls/textarea/textarea.component.html","../../src/controls/window/window.component.ts","../../src/controls/window/window.component.html","../../src/public-api.ts","../../src/ng-luna.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\n\n// Base class for all Luna components providing common form element attributes\n@Directive()\nexport abstract class LunaControl\n{\n @Input()\n public id?: string;\n\n @Input()\n public name?: string;\n\n @Input()\n public disabled = false;\n\n @Input()\n public tabindex?: number;\n\n @Input()\n public autofocus = false;\n}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { BidiModule, Dir } from '@angular/cdk/bidi';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\nexport type FormEnctype = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\n\nexport type FormMethod = 'get' | 'post';\n\nexport type FormTarget = '_self' | '_blank' | '_parent' | '_top';\n\nexport type PopoverTargetAction = 'show' | 'hide' | 'toggle';\n\n@Component({\n selector: 'luna-button',\n standalone: true,\n imports: [ BidiModule ],\n templateUrl: './button.component.html',\n styleUrls: [ './button.component.scss' ]\n})\nexport class ButtonComponent\n extends LunaControl implements AfterViewInit, OnDestroy\n{\n @Input()\n public command?: string;\n\n @Input()\n public commandfor?: string;\n\n @Input()\n public form?: string;\n\n @Input()\n public formaction?: string;\n\n @Input()\n public formenctype?: FormEnctype;\n\n @Input()\n public formmethod?: FormMethod;\n\n @Input()\n public formnovalidate = false;\n\n @Input()\n public formtarget?: FormTarget;\n\n @Input()\n public popovertarget?: string;\n\n @Input()\n public popovertargetaction?: PopoverTargetAction;\n\n @Input()\n public type: ButtonType = 'button';\n\n @Input()\n public value?: string;\n\n @Output()\n public click = new EventEmitter<MouseEvent>();\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n public platform: Platform,\n public dir: Dir\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onClick(event: MouseEvent): void\n {\n if (this.disabled)\n {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n this.click.emit(event);\n }\n}\n","<button\n [attr.autofocus]=\"autofocus || null\"\n [attr.command]=\"command\"\n [attr.commandfor]=\"commandfor\"\n [disabled]=\"disabled\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate || null\"\n [attr.formtarget]=\"formtarget\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.popovertarget]=\"popovertarget\"\n [attr.popovertargetaction]=\"popovertargetaction\"\n [attr.tabindex]=\"tabindex\"\n [attr.type]=\"type\"\n [attr.value]=\"value\"\n (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-checkbox',\n standalone: true,\n templateUrl: './checkbox.component.html',\n styleUrls: [ './checkbox.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }]\n})\nexport class CheckboxComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public label?: string;\n\n @Input()\n public value?: string;\n\n @Output()\n public change = new EventEmitter<boolean>();\n\n public checked = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onCheckboxChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n const label = this.label || 'checkbox';\n const state = this.checked ? 'checked' : 'unchecked';\n this.liveAnnouncer.announce(`${label} ${state}`, 'polite');\n this.onChange(this.checked);\n this.onTouched();\n this.change.emit(this.checked);\n }\n\n public writeValue(value: boolean): void\n {\n this.checked = coerceBooleanProperty(value);\n }\n\n public registerOnChange(fn: (value: boolean) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n [attr.autofocus]=\"autofocus || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n type=\"checkbox\"\n [attr.value]=\"value\"\n (change)=\"onCheckboxChange($event)\">\n<label [attr.for]=\"id || name\">\n <ng-content></ng-content>{{ label }}\n</label>\n","import { Component, Input } from '@angular/core';\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-fieldset',\n standalone: true,\n templateUrl: './fieldset.component.html',\n styleUrls: [ './fieldset.component.scss' ]\n})\nexport class FieldsetComponent extends LunaControl\n{\n @Input()\n public legend?: string;\n}\n","<fieldset\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\">\n <legend *ngIf=\"legend\">{{ legend }}</legend>\n <ng-content></ng-content>\n</fieldset>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { Platform } from '@angular/cdk/platform';\nimport { BidiModule, Dir } from '@angular/cdk/bidi';\nimport { ClipboardModule, Clipboard } from '@angular/cdk/clipboard';\n\nimport { LunaControl } from '../luna-control';\n\nexport type InputType = 'text' | 'password' | 'email';\n\n@Component({\n selector: 'luna-input',\n standalone: true,\n imports: [ TextFieldModule, BidiModule ],\n templateUrl: './input.component.html',\n styleUrls: [ './input.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }]\n})\nexport class InputComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public placeholder?: string;\n\n @Input()\n public readonly = false;\n\n @Input()\n public type: InputType = 'text';\n\n @Output()\n public change = new EventEmitter<string>();\n\n @Output()\n public blur = new EventEmitter<FocusEvent>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n @ViewChild('inputElement', { static: false })\n public inputElement?: ElementRef<HTMLInputElement>;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform,\n public dir: Dir,\n private clipboard: Clipboard\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onInputChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n public onInputBlur(event: FocusEvent): void\n {\n this.onTouched();\n if (this.value && this.id)\n {\n this.liveAnnouncer.announce(`${this.id} value is ${this.value}`, 'polite');\n }\n this.blur.emit(event);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n #inputElement\n [attr.autofocus]=\"autofocus || null\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [attr.tabindex]=\"tabindex\"\n [attr.type]=\"type\"\n [value]=\"value\"\n (blur)=\"onInputBlur($event)\"\n (input)=\"onInputChange($event)\">\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-progress',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './progress.component.html',\n styleUrls: [ './progress.component.scss' ]\n})\nexport class ProgressComponent\n extends LunaControl implements OnChanges\n{\n @Input()\n public set max(value: NumberInput)\n {\n this._max = coerceNumberProperty(value, 100);\n }\n\n public get max(): number\n {\n return this._max;\n }\n\n @Input()\n public set value(value: NumberInput | undefined)\n {\n this._value = value !== undefined ? coerceNumberProperty(value) : undefined;\n }\n\n public get value(): number | undefined\n {\n return this._value;\n }\n\n private _max = 100;\n private _value?: number;\n private _previousValue?: number;\n\n constructor(\n private liveAnnouncer: LiveAnnouncer\n )\n {\n super();\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if (changes['value'] && this._value !== undefined)\n {\n const percentage = Math.round((this._value / this._max) * 100);\n const milestones = [ 0, 25, 50, 75, 100 ];\n const previousPercentage = this._previousValue !== undefined\n ? Math.round((this._previousValue / this._max) * 100)\n : undefined;\n\n if (previousPercentage === undefined || milestones.includes(percentage))\n {\n if (previousPercentage === undefined || Math.abs(percentage - (previousPercentage || 0)) >= 10)\n {\n this.liveAnnouncer.announce(`Progress ${percentage} percent`, 'polite');\n }\n }\n this._previousValue = this._value;\n }\n }\n}\n","<progress\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.max]=\"max\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value\"></progress>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-radio',\n standalone: true,\n templateUrl: './radio.component.html',\n styleUrls: [ './radio.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }]\n})\nexport class RadioComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public label?: string;\n\n @Input()\n public value?: string;\n\n @Output()\n public change = new EventEmitter<string>();\n\n public checked = false;\n\n private onChange: (value: string | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onRadioChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n if (this.checked)\n {\n const label = this.label || this.value || 'radio option';\n this.liveAnnouncer.announce(`${label} selected`, 'polite');\n }\n this.onChange(this.checked ? this.value ?? null : null);\n this.onTouched();\n if (this.value)\n {\n this.change.emit(this.value);\n }\n }\n\n public writeValue(value: string | null): void\n {\n this.checked = value === this.value;\n }\n\n public registerOnChange(fn: (value: string | null) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<input\n [attr.autofocus]=\"autofocus || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n type=\"radio\"\n [attr.value]=\"value\"\n (change)=\"onRadioChange($event)\">\n<label [attr.for]=\"id || name\">\n <ng-content></ng-content>{{ label }}\n</label>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-select',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './select.component.html',\n styleUrls: [ './select.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }]\n})\nexport class SelectComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n\n @Output()\n public change = new EventEmitter<string>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onSelectChange(event: Event): void\n {\n const target = event.target as HTMLSelectElement;\n this.value = target.value;\n const selectedOption = target.options[target.selectedIndex];\n const optionText = selectedOption?.textContent || this.value;\n this.liveAnnouncer.announce(`Selected ${optionText}`, 'polite');\n this.onChange(this.value);\n this.onTouched();\n this.change.emit(this.value);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<select\n [attr.autofocus]=\"autofocus || null\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\"\n [value]=\"value\"\n (change)=\"onSelectChange($event)\">\n <ng-content></ng-content>\n</select>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-slider',\n standalone: true,\n imports: [ CommonModule ],\n templateUrl: './slider.component.html',\n styleUrls: [ './slider.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n }]\n})\nexport class SliderComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public boxIndicator = false;\n\n @Input()\n public set max(value: NumberInput)\n {\n this._max = coerceNumberProperty(value, 100);\n }\n\n public get max(): number\n {\n return this._max;\n }\n\n @Input()\n public set min(value: NumberInput)\n {\n this._min = coerceNumberProperty(value, 0);\n }\n\n public get min(): number\n {\n return this._min;\n }\n\n @Input()\n public set step(value: NumberInput)\n {\n this._step = coerceNumberProperty(value, 1);\n }\n\n public get step(): number\n {\n return this._step;\n }\n\n @Input()\n public vertical = false;\n\n @Output()\n public change = new EventEmitter<number>();\n\n public value = 0;\n\n private _max = 100;\n private _min = 0;\n private _step = 1;\n\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onSliderChange(event: Event): void\n {\n const target = event.target as HTMLInputElement;\n this.value = Number(target.value);\n this.onChange(this.value);\n this.change.emit(this.value);\n this.liveAnnouncer.announce(`Value changed to ${this.value}`, 'polite');\n }\n\n public onSliderBlur(): void\n {\n this.onTouched();\n }\n\n public writeValue(value: number): void\n {\n this.value = coerceNumberProperty(value, 0);\n }\n\n public registerOnChange(fn: (value: number) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<div [class.is-vertical]=\"vertical\">\n <input\n [attr.autofocus]=\"autofocus || null\"\n [class.has-box-indicator]=\"boxIndicator\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.name]=\"name\"\n [attr.step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n type=\"range\"\n [value]=\"value\"\n (blur)=\"onSliderBlur()\"\n (input)=\"onSliderChange($event)\">\n</div>\n","import { Component, Input, Output, EventEmitter, QueryList, ViewChildren, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule, FocusKeyManager, FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\nexport interface Tab\n{\n id: string;\n label: string;\n content?: string;\n}\n\nclass TabButtonFocusable implements FocusableOption\n{\n constructor(private elementRef: ElementRef<HTMLButtonElement>)\n {\n }\n\n public focus(origin?: FocusOrigin): void\n {\n this.elementRef.nativeElement.focus();\n }\n}\n\n@Component({\n selector: 'luna-tabs',\n standalone: true,\n imports: [ CommonModule, A11yModule ],\n templateUrl: './tabs.component.html',\n styleUrls: [ './tabs.component.scss' ]\n})\nexport class TabsComponent\n extends LunaControl implements AfterViewInit\n{\n @Input()\n public activeTabId?: string;\n\n @Input()\n public tabs: Tab[] = [];\n\n @Output()\n public tabChange = new EventEmitter<string>();\n\n @ViewChildren('tabButton')\n public tabButtons!: QueryList<ElementRef<HTMLButtonElement>>;\n\n private keyManager?: FocusKeyManager<TabButtonFocusable>;\n\n constructor(\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n const focusableItems = this.tabButtons.map(ref => new TabButtonFocusable(ref));\n this.keyManager = new FocusKeyManager(focusableItems)\n .withHorizontalOrientation('ltr')\n .withWrap();\n\n if (this.activeTabId)\n {\n const activeIndex = this.tabs.findIndex(tab => tab.id === this.activeTabId);\n if (activeIndex >= 0)\n {\n this.keyManager.setActiveItem(activeIndex);\n }\n }\n }\n\n public selectTab(tabId: string): void\n {\n this.activeTabId = tabId;\n this.tabChange.emit(tabId);\n\n const activeIndex = this.tabs.findIndex(tab => tab.id === tabId);\n if (activeIndex >= 0 && this.keyManager)\n {\n this.keyManager.setActiveItem(activeIndex);\n }\n }\n\n public isActive(tabId: string): boolean\n {\n return this.activeTabId === tabId;\n }\n\n public onKeyDown(event: KeyboardEvent): void\n {\n if (this.keyManager)\n {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n {\n this.keyManager.onKeydown(event);\n const activeIndex = this.keyManager.activeItemIndex;\n if (activeIndex !== null && activeIndex >= 0 && activeIndex < this.tabs.length)\n {\n this.selectTab(this.tabs[activeIndex].id);\n }\n }\n }\n }\n}\n","<menu\n [attr.autofocus]=\"autofocus || null\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n role=\"tablist\"\n [attr.tabindex]=\"tabindex\"\n (keydown)=\"onKeyDown($event)\">\n <button\n #tabButton\n *ngFor=\"let tab of tabs\"\n [attr.aria-selected]=\"isActive(tab.id)\"\n role=\"tab\"\n (click)=\"selectTab(tab.id)\">\n {{ tab.label }}\n </button>\n</menu>\n<div\n *ngFor=\"let tab of tabs\"\n role=\"tabpanel\"\n [hidden]=\"!isActive(tab.id)\">\n <ng-content [select]=\"'[data-tab-id=\\'' + tab.id + '\\']'\"></ng-content>\n <div *ngIf=\"tab.content\">{{ tab.content }}</div>\n</div>\n","import { Component, Input, Output, EventEmitter, forwardRef, ElementRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-textarea',\n standalone: true,\n templateUrl: './textarea.component.html',\n styleUrls: [ './textarea.component.scss' ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }]\n})\nexport class TextareaComponent\n extends LunaControl implements ControlValueAccessor, AfterViewInit, OnDestroy\n{\n @Input()\n public cols?: number;\n\n @Input()\n public placeholder?: string;\n\n @Input()\n public readonly = false;\n\n @Input()\n public rows?: number;\n\n @Output()\n public change = new EventEmitter<string>();\n\n @Output()\n public blur = new EventEmitter<FocusEvent>();\n\n public value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n private liveAnnouncer: LiveAnnouncer,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n public ngOnDestroy(): void\n {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n public onTextareaChange(event: Event): void\n {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n public onTextareaBlur(event: FocusEvent): void\n {\n this.onTouched();\n if (this.value && this.id)\n {\n const charCount = this.value.length;\n this.liveAnnouncer.announce(`${this.id} contains ${charCount} characters`, 'polite');\n }\n this.blur.emit(event);\n }\n\n public writeValue(value: string): void\n {\n this.value = value ?? '';\n }\n\n public registerOnChange(fn: (value: string) => void): void\n {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void\n {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void\n {\n this.disabled = isDisabled;\n }\n}\n","<textarea\n [attr.autofocus]=\"autofocus || null\"\n [attr.cols]=\"cols\"\n [disabled]=\"disabled\"\n [attr.id]=\"id || name\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [attr.rows]=\"rows\"\n [attr.tabindex]=\"tabindex\"\n [value]=\"value\"\n (blur)=\"onTextareaBlur($event)\"\n (input)=\"onTextareaChange($event)\"></textarea>\n","import { Component, Input, Output, EventEmitter, ElementRef, AfterViewInit, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule, CdkDrag } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { LunaControl } from '../luna-control';\n\n@Component({\n selector: 'luna-window',\n standalone: true,\n imports: [ CommonModule, DragDropModule, ScrollingModule ],\n templateUrl: './window.component.html',\n styleUrls: [ './window.component.scss' ]\n})\nexport class WindowComponent\n extends LunaControl implements AfterViewInit, OnChanges\n{\n @Input()\n public isMaximized = false;\n\n @Input()\n public showClose = true;\n\n @Input()\n public showHelp = false;\n\n @Input()\n public showMaximize = true;\n\n @Input()\n public showMinimize = true;\n\n @Input()\n public title?: string;\n\n @Output()\n public minimize = new EventEmitter<void>();\n\n @Output()\n public maximize = new EventEmitter<void>();\n\n @Output()\n public restore = new EventEmitter<void>();\n\n @Output()\n public help = new EventEmitter<void>();\n\n @Output()\n public close = new EventEmitter<void>();\n\n @Input()\n public boundaryElement?: string;\n\n @Input()\n public scrollable = false;\n\n @Input()\n public dragDisabled = false;\n\n @ViewChild(CdkDrag, { static: false })\n private dragInstance?: CdkDrag;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n public platform: Platform\n )\n {\n super();\n }\n\n public ngAfterViewInit(): void\n {\n this.updateDragBoundary();\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if (changes['boundaryElement'])\n {\n this.updateDragBoundary();\n }\n }\n\n public get isDragDisabled(): boolean\n {\n return this.dragDisabled || this.isMaximized;\n }\n\n private updateDragBoundary(): void\n {\n if (this.dragInstance && this.boundaryElement)\n {\n const boundary = document.querySelector(this.boundaryElement);\n if (boundary)\n {\n this.dragInstance.boundaryElement = boundary as HTMLElement;\n }\n }\n }\n\n public onMinimize(): void\n {\n this.minimize.emit();\n }\n\n public onMaximize(): void\n {\n if (this.isMaximized)\n {\n this.restore.emit();\n }\n else\n {\n this.maximize.emit();\n }\n }\n\n public onHelp(): void\n {\n this.help.emit();\n }\n\n public onClose(): void\n {\n this.close.emit();\n }\n}\n","<div\n [attr.autofocus]=\"autofocus || null\"\n [cdkDragDisabled]=\"isDragDisabled\"\n class=\"window\"\n cdkDrag\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.tabindex]=\"tabindex\">\n <div\n cdkDragHandle\n class=\"title-bar\">\n <div class=\"title-bar-text\">{{ title }}</div>\n <div class=\"title-bar-controls\">\n <button\n *ngIf=\"showMinimize\"\n aria-label=\"Minimize\"\n (click)=\"onMinimize()\"></button>\n <button\n *ngIf=\"showMaximize\"\n [attr.aria-label]=\"isMaximized ? 'Restore' : 'Maximize'\"\n (click)=\"onMaximize()\"></button>\n <button\n *ngIf=\"showHelp\"\n aria-label=\"Help\"\n (click)=\"onHelp()\"></button>\n <button\n *ngIf=\"showClose\"\n aria-label=\"Close\"\n (click)=\"onClose()\"></button>\n </div>\n </div>\n <div\n [class.scrollable]=\"scrollable\"\n class=\"window-body\">\n <div\n *ngIf=\"scrollable\"\n cdkScrollable>\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"!scrollable\"></ng-content>\n </div>\n <div class=\"status-bar\">\n <ng-content select=\"[slot='status']\"></ng-content>\n </div>\n</div>\n","/*\n * Public API Surface of ng-luna\n */\n\nexport * from './controls';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-luna",
3
- "version": "0.1.5",
3
+ "version": "0.2.2",
4
4
  "description": "An Angular component library inspired by Windows XP aesthetics, built with IBM Plex fonts",
5
5
  "author": {
6
6
  "name": "Adam R Moss",
@@ -0,0 +1,153 @@
1
+ @use 'sass:math';
2
+
3
+ $breakpoints: (
4
+ xxs: 320px,
5
+ xs: 375px,
6
+ sm: 425px,
7
+ md: 768px,
8
+ lg: 1024px,
9
+ xl: 1440px
10
+ );
11
+
12
+ @function breakpoint-next($name)
13
+ {
14
+ $breakpoint-names: map-keys($breakpoints);
15
+ $n: index($breakpoint-names, $name);
16
+ @if not $n
17
+ {
18
+ $breakpoints-keys: map-keys($breakpoints);
19
+ @error "breakpoint `#{$name}` not found in any of the breakpoints: `#{$breakpoints-keys}`";
20
+ }
21
+ @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
22
+ }
23
+
24
+ @function breakpoint-min($name)
25
+ {
26
+ $min: map-get($breakpoints, $name);
27
+ @return if($min != 0, $min, null);
28
+ }
29
+
30
+ @function breakpoint-max($name)
31
+ {
32
+ $max: map-get($breakpoints, $name);
33
+ @return if($max and $max > 0, $max - .02, null);
34
+ }
35
+
36
+ @mixin media-breakpoint-up($name)
37
+ {
38
+ $min: breakpoint-min($name);
39
+ @if $min
40
+ {
41
+ @media (min-width: $min)
42
+ {
43
+ @content;
44
+ }
45
+ } @else
46
+ {
47
+ @content;
48
+ }
49
+ }
50
+
51
+ @mixin media-breakpoint-down($name)
52
+ {
53
+ $max: breakpoint-max($name);
54
+ @if $max
55
+ {
56
+ @media (max-width: $max)
57
+ {
58
+ @content;
59
+ }
60
+ } @else
61
+ {
62
+ @content;
63
+ }
64
+ }
65
+
66
+ @mixin media-breakpoint-between($lower, $upper)
67
+ {
68
+ $min: breakpoint-min($lower);
69
+ $max: breakpoint-max($upper);
70
+
71
+ @if $min != null and $max != null
72
+ {
73
+ @media (min-width: $min) and (max-width: $max)
74
+ {
75
+ @content;
76
+ }
77
+ } @else if $max == null
78
+ {
79
+ @include media-breakpoint-up($lower)
80
+ {
81
+ @content;
82
+ }
83
+ } @else if $min == null
84
+ {
85
+ @include media-breakpoint-down($upper)
86
+ {
87
+ @content;
88
+ }
89
+ }
90
+ }
91
+
92
+ @mixin media-breakpoint-only($name)
93
+ {
94
+ $min: breakpoint-min($name);
95
+ $next: breakpoint-next($name);
96
+ $max: breakpoint-max($next);
97
+
98
+ @if $min != null and $max != null
99
+ {
100
+ @media (min-width: $min) and (max-width: $max)
101
+ {
102
+ @content;
103
+ }
104
+ } @else if $max == null
105
+ {
106
+ @include media-breakpoint-up($name)
107
+ {
108
+ @content;
109
+ }
110
+ } @else if $min == null
111
+ {
112
+ @include media-breakpoint-down($next)
113
+ {
114
+ @content;
115
+ }
116
+ }
117
+ }
118
+
119
+ @mixin responsive-value($property, $value)
120
+ {
121
+ // Ratio (100 / 1440) => 5 / 72
122
+ #{$property}: #{math.div($value * 5, 72)}vw;
123
+
124
+ @include media-breakpoint-only(xl)
125
+ {
126
+ // Value is designed for 1440px layout
127
+ #{$property}: #{$value}px;
128
+ }
129
+ }
130
+
131
+ @mixin lg-responsive-value($property, $value)
132
+ {
133
+ // Ratio (100 / 1024) => 25 / 256
134
+ #{$property}: #{math.div($value * 25, 256)}vw;
135
+
136
+ @include media-breakpoint-up(lg)
137
+ {
138
+ // Value is designed for 1024px layout
139
+ #{$property}: #{$value}px;
140
+ }
141
+ }
142
+
143
+ @mixin md-responsive-value($property, $value)
144
+ {
145
+ // Ratio (100 / 768) => 25 / 192
146
+ #{$property}: #{math.div($value * 25, 192)}vw;
147
+
148
+ @include media-breakpoint-up(md)
149
+ {
150
+ // Value is designed for 768px layout
151
+ #{$property}: #{$value}px;
152
+ }
153
+ }
@@ -0,0 +1,16 @@
1
+ // Override font-prefix to point to node_modules
2
+ // Path is relative from component SCSS files (e.g., src/controls/*/) to node_modules
3
+ // Components import this file, so paths resolve from component location
4
+ // Set without !default to ensure it overrides IBM Plex's !default values
5
+ $font-prefix: '../../../node_modules/@ibm/plex';
6
+
7
+ // Import all IBM Plex font families from npm
8
+ // Note: Using @use with @forward to maintain compatibility while avoiding deprecation warnings
9
+ @use '@ibm/plex/scss/mono';
10
+ @use '@ibm/plex/scss/sans';
11
+ @use '@ibm/plex/scss/serif';
12
+
13
+ // Define static SCSS variables for consistent usage
14
+ $font-mono: 'IBM Plex Mono', monospace;
15
+ $font-sans: 'IBM Plex Sans', sans-serif;
16
+ $font-serif: 'IBM Plex Serif', serif;
@@ -0,0 +1,61 @@
1
+ $black: #000000;
2
+ $navy-darkest: #00138c;
3
+ $navy-darker: #0f1089;
4
+ $navy-dark: #001ea0;
5
+ $navy: #003c74;
6
+ $blue-royal: #0046d5;
7
+ $blue-bright-darkest: #003bda;
8
+ $blue-bright-darker: #003dd7;
9
+ $blue-bright-dark: #0050ee;
10
+ $blue-bright: #0053ee;
11
+ $blue-bright-medium: #0066ff;
12
+ $blue-bright-light: #005bff;
13
+ $blue-bright-lighter: #0831d9;
14
+ $blue-bright-lightest: #0855dd;
15
+ $blue-sky-dark: #0997ff;
16
+ $blue-sky: #166aee;
17
+ $blue-steel-dark: #1d5281;
18
+ $blue-steel: #7f9db9;
19
+ $blue-steel-light: #91a7b4;
20
+ $blue: #89ade4;
21
+ $blue-medium: #98b8ea;
22
+ $blue-light: #bcd4f6;
23
+ $blue-lightest: #cee7ff;
24
+ $blue-gray: #919b9c;
25
+
26
+ $green-darkest: #2ed330;
27
+ $green-dark: #42d845;
28
+ $green: #4cda50;
29
+ $green-light: #76e275;
30
+ $green-lighter: #7be47d;
31
+ $green-lightest: #8fe791;
32
+ $green-mint: #acedad;
33
+
34
+ $orange-dark: #e68b2c;
35
+ $orange: #e5a01a;
36
+ $gold: #f8b636;
37
+ $yellow-gold: #ffc73c;
38
+ $yellow-medium: #fbc761;
39
+ $yellow-light: #fdd889;
40
+ $yellow-cream: #fedf9c;
41
+ $cream-light: #fff0cf;
42
+
43
+ $gray-darkest: #686868;
44
+ $gray-dark: #9d9c99;
45
+ $gray-darker: #b0b0a7;
46
+ $gray-medium: #cdcac3;
47
+ $beige-tan: #cac8bb;
48
+ $beige-khaki: #d0d0bf;
49
+ $beige-medium: #d8d0c4;
50
+ $gray-light-warm: #dcdcd7;
51
+ $beige-pale: #e3e1d2;
52
+ $gray-light: #e3e3db;
53
+ $gray-lighter: #e5e5de;
54
+ $beige-lighter: #ecebe4;
55
+ $beige-light: #ecebe5;
56
+ $cream-pale: #f0f0ea;
57
+ $gray-lightest: #f2f2f1;
58
+ $cream: #f3f2ea;
59
+ $off-white-warm: #fafaf9;
60
+ $off-white: #fcfcfe;
61
+ $white: #ffffff;
@@ -0,0 +1,58 @@
1
+ *
2
+ {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ html, body, div, span, applet, object, iframe,
7
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8
+ a, abbr, acronym, address, big, cite, code,
9
+ del, dfn, em, img, ins, kbd, q, s, samp,
10
+ small, strike, strong, sub, sup, tt, var,
11
+ b, u, i, center,
12
+ dl, dt, dd, ol, ul, li,
13
+ fieldset, form, label, legend,
14
+ table, caption, tbody, tfoot, thead, tr, th, td,
15
+ article, aside, canvas, details, embed,
16
+ figure, figcaption, footer, header, hgroup,
17
+ menu, nav, output, ruby, section, summary,
18
+ time, mark, audio, video
19
+ {
20
+ border: 0;
21
+ margin: 0;
22
+ padding: 0;
23
+ vertical-align: baseline;
24
+ }
25
+
26
+ // HTML5 display-role reset for older browsers
27
+ article, aside, details, figcaption, figure,
28
+ footer, header, hgroup, menu, nav, section
29
+ {
30
+ display: block;
31
+ }
32
+
33
+ body
34
+ {
35
+ line-height: 1;
36
+ }
37
+
38
+ ol, ul
39
+ {
40
+ list-style: none;
41
+ }
42
+
43
+ blockquote, q
44
+ {
45
+ quotes: none;
46
+ }
47
+
48
+ blockquote:before, blockquote:after,
49
+ q:before, q:after
50
+ {
51
+ content: "";
52
+ }
53
+
54
+ table
55
+ {
56
+ border-collapse: collapse;
57
+ border-spacing: 0;
58
+ }
@@ -0,0 +1,10 @@
1
+ $far-below: -100;
2
+ $below: -10;
3
+ $under: -5;
4
+ $normal: 0;
5
+ $over: 5;
6
+ $above: 10;
7
+ $popup: 100;
8
+ $overlay: 200;
9
+ $modal: 300;
10
+ $alert: 400;