@atelier-ui/angular 0.0.34 → 0.0.35
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,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, computed, ChangeDetectionStrategy, Component, model, viewChild, effect, InjectionToken,
|
|
2
|
+
import { input, computed, inject, ElementRef, afterNextRender, ChangeDetectionStrategy, Component, model, viewChild, effect, InjectionToken, signal, output, Injector, viewChildren, Directive, ViewEncapsulation, Injectable, DestroyRef, untracked, contentChildren } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/cdk/text-field';
|
|
4
4
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
5
5
|
import * as i1$1 from '@angular/cdk/a11y';
|
|
@@ -33,13 +33,33 @@ class LlmButton {
|
|
|
33
33
|
loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
34
34
|
isDisabled = computed(() => this.disabled() || this.loading(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
35
35
|
hostClasses = computed(() => `variant-${this.variant()} size-${this.size()}${this.isDisabled() ? ' is-disabled' : ''}${this.loading() ? ' is-loading' : ''}`, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
36
|
+
/** @internal — host element ref for the dev-mode a11y check. */
|
|
37
|
+
el = inject(ElementRef);
|
|
38
|
+
constructor() {
|
|
39
|
+
// Dev-mode warning when a button has no accessible name. Angular's
|
|
40
|
+
// <ng-content> projection means we can't enforce this at the type
|
|
41
|
+
// level (unlike the React adapter), so we check after first render.
|
|
42
|
+
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
43
|
+
afterNextRender(() => {
|
|
44
|
+
const host = this.el.nativeElement;
|
|
45
|
+
const hasText = (host.textContent ?? '').trim().length > 0;
|
|
46
|
+
const hasAriaLabel = host.hasAttribute('aria-label')
|
|
47
|
+
|| host.hasAttribute('aria-labelledby');
|
|
48
|
+
if (!hasText && !hasAriaLabel) {
|
|
49
|
+
// eslint-disable-next-line no-console
|
|
50
|
+
console.warn('[LlmButton] icon-only button is missing an accessible name — '
|
|
51
|
+
+ 'add an aria-label attribute so screen readers announce its purpose.', host);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
36
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
57
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: LlmButton, isStandalone: true, selector: "llm-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "button" }, properties: { "class": "hostClasses()", "attr.aria-disabled": "isDisabled()", "attr.disabled": "isDisabled() ? true : null" } }, ngImport: i0, template: `
|
|
38
58
|
@if (loading()) {
|
|
39
59
|
<span class="spinner" aria-hidden="true"></span>
|
|
40
60
|
}
|
|
41
61
|
<ng-content />
|
|
42
|
-
`, isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-spacing-2);border:1px solid transparent;border-radius:var(--ui-radius-md);font-family:var(--ui-font-family);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-weight-medium);line-height:var(--ui-line-height-tight);cursor:pointer;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),transform var(--ui-transition-fast);white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none}:host(:focus-visible){outline:none;box-shadow:var(--ui-focus-ring)}:host(.variant-primary){background-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);border-color:var(--ui-color-primary);box-shadow:var(--ui-shadow-xs)}:host(.variant-primary:hover:not(.is-disabled)){background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-primary:active:not(.is-disabled)){background-color:var(--ui-color-primary-active);border-color:var(--ui-color-primary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-secondary){background-color:var(--ui-color-secondary);color:var(--ui-color-text-on-secondary);border-color:var(--ui-color-secondary);box-shadow:var(--ui-shadow-xs)}:host(.variant-secondary:hover:not(.is-disabled)){background-color:var(--ui-color-secondary-hover);border-color:var(--ui-color-secondary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-secondary:active:not(.is-disabled)){background-color:var(--ui-color-secondary-active);border-color:var(--ui-color-secondary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-outline){background-color:transparent;color:var(--ui-color-primary);border-color:var(--ui-color-border)}:host(.variant-outline:hover:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:translateY(-1px)}:host(.variant-outline:active:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:scale(.97)}:host(.variant-danger){background-color:var(--ui-color-danger);color:var(--ui-color-text-on-danger);border-color:var(--ui-color-danger);box-shadow:var(--ui-shadow-xs)}:host(.variant-danger:hover:not(.is-disabled)){background-color:var(--ui-color-danger-hover);border-color:var(--ui-color-danger-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-danger:active:not(.is-disabled)){background-color:var(--ui-color-danger-active);border-color:var(--ui-color-danger-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.size-sm){padding:var(--ui-spacing-1) var(--ui-spacing-3);font-size:var(--ui-font-size-sm)}:host(.size-md){padding:var(--ui-spacing-2) var(--ui-spacing-4);font-size:var(--ui-font-size-md)}:host(.size-lg){padding:var(--ui-spacing-3) var(--ui-spacing-6);font-size:var(--ui-font-size-lg)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed;pointer-events:none}.spinner{display:inline-block;width:1em;height:1em;border:1.5px solid currentColor;border-top-color:transparent;border-radius:var(--ui-radius-full);animation:llm-spin .7s linear infinite;flex-shrink:0}@keyframes llm-spin{to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
62
|
+
`, isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-spacing-2);border:1px solid transparent;border-radius:var(--ui-radius-md);font-family:var(--ui-font-family);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-weight-medium);line-height:var(--ui-line-height-tight);cursor:pointer;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),transform var(--ui-transition-fast);white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none}:host(:focus-visible){outline:none;box-shadow:var(--ui-focus-ring)}:host(.variant-primary){background-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);border-color:var(--ui-color-primary);box-shadow:var(--ui-shadow-xs)}:host(.variant-primary:hover:not(.is-disabled)){background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-primary:active:not(.is-disabled)){background-color:var(--ui-color-primary-active);border-color:var(--ui-color-primary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-secondary){background-color:var(--ui-color-secondary);color:var(--ui-color-text-on-secondary);border-color:var(--ui-color-secondary);box-shadow:var(--ui-shadow-xs)}:host(.variant-secondary:hover:not(.is-disabled)){background-color:var(--ui-color-secondary-hover);border-color:var(--ui-color-secondary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-secondary:active:not(.is-disabled)){background-color:var(--ui-color-secondary-active);border-color:var(--ui-color-secondary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-outline){background-color:transparent;color:var(--ui-color-primary);border-color:var(--ui-color-border)}:host(.variant-outline:hover:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:translateY(-1px)}:host(.variant-outline:active:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:scale(.97)}:host(.variant-danger){background-color:var(--ui-color-danger);color:var(--ui-color-text-on-danger);border-color:var(--ui-color-danger);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-xs)}:host(.variant-danger:hover:not(.is-disabled)){background-color:var(--ui-color-danger-hover);border-color:var(--ui-color-danger-hover);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-danger:active:not(.is-disabled)){background-color:var(--ui-color-danger-active);border-color:var(--ui-color-danger-active);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-xs);transform:scale(.97)}:host(.size-sm){padding:var(--ui-spacing-1) var(--ui-spacing-3);font-size:var(--ui-font-size-sm)}:host(.size-md){padding:var(--ui-spacing-2) var(--ui-spacing-4);font-size:var(--ui-font-size-md)}:host(.size-lg){padding:var(--ui-spacing-3) var(--ui-spacing-6);font-size:var(--ui-font-size-lg)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed;pointer-events:none}.spinner{display:inline-block;width:1em;height:1em;border:1.5px solid currentColor;border-top-color:transparent;border-radius:var(--ui-radius-full);animation:llm-spin .7s linear infinite;flex-shrink:0}@keyframes llm-spin{to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
43
63
|
}
|
|
44
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmButton, decorators: [{
|
|
45
65
|
type: Component,
|
|
@@ -53,8 +73,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
53
73
|
'[class]': 'hostClasses()',
|
|
54
74
|
'[attr.aria-disabled]': 'isDisabled()',
|
|
55
75
|
'[attr.disabled]': 'isDisabled() ? true : null',
|
|
56
|
-
}, styles: [":host{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-spacing-2);border:1px solid transparent;border-radius:var(--ui-radius-md);font-family:var(--ui-font-family);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-weight-medium);line-height:var(--ui-line-height-tight);cursor:pointer;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),transform var(--ui-transition-fast);white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none}:host(:focus-visible){outline:none;box-shadow:var(--ui-focus-ring)}:host(.variant-primary){background-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);border-color:var(--ui-color-primary);box-shadow:var(--ui-shadow-xs)}:host(.variant-primary:hover:not(.is-disabled)){background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-primary:active:not(.is-disabled)){background-color:var(--ui-color-primary-active);border-color:var(--ui-color-primary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-secondary){background-color:var(--ui-color-secondary);color:var(--ui-color-text-on-secondary);border-color:var(--ui-color-secondary);box-shadow:var(--ui-shadow-xs)}:host(.variant-secondary:hover:not(.is-disabled)){background-color:var(--ui-color-secondary-hover);border-color:var(--ui-color-secondary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-secondary:active:not(.is-disabled)){background-color:var(--ui-color-secondary-active);border-color:var(--ui-color-secondary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-outline){background-color:transparent;color:var(--ui-color-primary);border-color:var(--ui-color-border)}:host(.variant-outline:hover:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:translateY(-1px)}:host(.variant-outline:active:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:scale(.97)}:host(.variant-danger){background-color:var(--ui-color-danger);color:var(--ui-color-text-on-danger);border-color:var(--ui-color-danger);box-shadow:var(--ui-shadow-xs)}:host(.variant-danger:hover:not(.is-disabled)){background-color:var(--ui-color-danger-hover);border-color:var(--ui-color-danger-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-danger:active:not(.is-disabled)){background-color:var(--ui-color-danger-active);border-color:var(--ui-color-danger-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.size-sm){padding:var(--ui-spacing-1) var(--ui-spacing-3);font-size:var(--ui-font-size-sm)}:host(.size-md){padding:var(--ui-spacing-2) var(--ui-spacing-4);font-size:var(--ui-font-size-md)}:host(.size-lg){padding:var(--ui-spacing-3) var(--ui-spacing-6);font-size:var(--ui-font-size-lg)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed;pointer-events:none}.spinner{display:inline-block;width:1em;height:1em;border:1.5px solid currentColor;border-top-color:transparent;border-radius:var(--ui-radius-full);animation:llm-spin .7s linear infinite;flex-shrink:0}@keyframes llm-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
57
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
|
|
76
|
+
}, styles: [":host{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-spacing-2);border:1px solid transparent;border-radius:var(--ui-radius-md);font-family:var(--ui-font-family);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-weight-medium);line-height:var(--ui-line-height-tight);cursor:pointer;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast),box-shadow var(--ui-transition-fast),transform var(--ui-transition-fast);white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none}:host(:focus-visible){outline:none;box-shadow:var(--ui-focus-ring)}:host(.variant-primary){background-color:var(--ui-color-primary);color:var(--ui-color-text-on-primary);border-color:var(--ui-color-primary);box-shadow:var(--ui-shadow-xs)}:host(.variant-primary:hover:not(.is-disabled)){background-color:var(--ui-color-primary-hover);border-color:var(--ui-color-primary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-primary:active:not(.is-disabled)){background-color:var(--ui-color-primary-active);border-color:var(--ui-color-primary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-secondary){background-color:var(--ui-color-secondary);color:var(--ui-color-text-on-secondary);border-color:var(--ui-color-secondary);box-shadow:var(--ui-shadow-xs)}:host(.variant-secondary:hover:not(.is-disabled)){background-color:var(--ui-color-secondary-hover);border-color:var(--ui-color-secondary-hover);box-shadow:var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-secondary:active:not(.is-disabled)){background-color:var(--ui-color-secondary-active);border-color:var(--ui-color-secondary-active);box-shadow:var(--ui-shadow-xs);transform:scale(.97)}:host(.variant-outline){background-color:transparent;color:var(--ui-color-primary);border-color:var(--ui-color-border)}:host(.variant-outline:hover:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:translateY(-1px)}:host(.variant-outline:active:not(.is-disabled)){background-color:var(--ui-color-surface-sunken);border-color:var(--ui-color-primary);transform:scale(.97)}:host(.variant-danger){background-color:var(--ui-color-danger);color:var(--ui-color-text-on-danger);border-color:var(--ui-color-danger);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-xs)}:host(.variant-danger:hover:not(.is-disabled)){background-color:var(--ui-color-danger-hover);border-color:var(--ui-color-danger-hover);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-md);transform:translateY(-1px)}:host(.variant-danger:active:not(.is-disabled)){background-color:var(--ui-color-danger-active);border-color:var(--ui-color-danger-active);box-shadow:inset 0 0 0 1px #0000002e,var(--ui-shadow-xs);transform:scale(.97)}:host(.size-sm){padding:var(--ui-spacing-1) var(--ui-spacing-3);font-size:var(--ui-font-size-sm)}:host(.size-md){padding:var(--ui-spacing-2) var(--ui-spacing-4);font-size:var(--ui-font-size-md)}:host(.size-lg){padding:var(--ui-spacing-3) var(--ui-spacing-6);font-size:var(--ui-font-size-lg)}:host(.is-disabled){opacity:var(--ui-opacity-disabled);cursor:not-allowed;pointer-events:none}.spinner{display:inline-block;width:1em;height:1em;border:1.5px solid currentColor;border-top-color:transparent;border-radius:var(--ui-radius-full);animation:llm-spin .7s linear infinite;flex-shrink:0}@keyframes llm-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
77
|
+
}], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
|
|
58
78
|
|
|
59
79
|
/**
|
|
60
80
|
* Card container component supporting elevated, outlined, and flat visual variants.
|
|
@@ -76,16 +96,29 @@ class LlmCard {
|
|
|
76
96
|
variant = input('elevated', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
77
97
|
/** Internal padding of the card. */
|
|
78
98
|
padding = input('md', ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
|
|
99
|
+
/**
|
|
100
|
+
* Opt-in landmark role. Default is no role.
|
|
101
|
+
*
|
|
102
|
+
* - `'article'` — self-contained content (blog post, comment).
|
|
103
|
+
* - `'region'` — perceivable area that needs a screen-reader stop;
|
|
104
|
+
* pair with `aria-label`.
|
|
105
|
+
* - `'section'` — mirrors an HTML `<section>`.
|
|
106
|
+
*
|
|
107
|
+
* Most cards group content visually and shouldn't add a landmark.
|
|
108
|
+
* Leave unset by default.
|
|
109
|
+
*/
|
|
110
|
+
role = input(undefined, ...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
79
111
|
hostClasses = computed(() => `variant-${this.variant()} padding-${this.padding()}`, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
80
112
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmCard, isStandalone: true, selector: "llm-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host(llm-card){display:block;border-radius:var(--ui-radius-xl);background-color:var(--ui-color-surface);overflow:hidden}:host(llm-card.variant-elevated){box-shadow:var(--ui-shadow-md);border:1px solid var(--ui-color-border)}:host(llm-card.variant-outlined){border:1px solid var(--ui-color-border);background-color:var(--ui-color-surface)}:host(llm-card.variant-flat){background-color:var(--ui-color-surface-sunken)}:host(llm-card.padding-none){--llm-card-padding: 0}:host(llm-card.padding-sm){--llm-card-padding: var(--ui-spacing-3)}:host(llm-card.padding-md){--llm-card-padding: var(--ui-spacing-4)}:host(llm-card.padding-lg){--llm-card-padding: var(--ui-spacing-6)}:host(llm-card-header){display:block;font-size:var(--ui-font-size-lg);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text);border-bottom:1px solid var(--ui-color-border);letter-spacing:var(--ui-letter-spacing-tight);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-content){display:block;color:var(--ui-color-text);line-height:var(--ui-line-height-normal);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-footer){display:flex;align-items:center;gap:var(--ui-spacing-2);border-top:1px solid var(--ui-color-border);padding:var(--llm-card-padding, var(--ui-spacing-4))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmCard, isStandalone: true, selector: "llm-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.role": "role() || null" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host(llm-card){display:block;border-radius:var(--ui-radius-xl);background-color:var(--ui-color-surface);overflow:hidden}:host(llm-card.variant-elevated){box-shadow:var(--ui-shadow-md);border:1px solid var(--ui-color-border)}:host(llm-card.variant-outlined){border:1px solid var(--ui-color-border);background-color:var(--ui-color-surface)}:host(llm-card.variant-flat){background-color:var(--ui-color-surface-sunken)}:host(llm-card.padding-none){--llm-card-padding: 0}:host(llm-card.padding-sm){--llm-card-padding: var(--ui-spacing-3)}:host(llm-card.padding-md){--llm-card-padding: var(--ui-spacing-4)}:host(llm-card.padding-lg){--llm-card-padding: var(--ui-spacing-6)}:host(llm-card-header){display:block;font-size:var(--ui-font-size-lg);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text);border-bottom:1px solid var(--ui-color-border);letter-spacing:var(--ui-letter-spacing-tight);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-content){display:block;color:var(--ui-color-text);line-height:var(--ui-line-height-normal);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-footer){display:flex;align-items:center;gap:var(--ui-spacing-2);border-top:1px solid var(--ui-color-border);padding:var(--llm-card-padding, var(--ui-spacing-4))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
114
|
}
|
|
83
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmCard, decorators: [{
|
|
84
116
|
type: Component,
|
|
85
117
|
args: [{ selector: 'llm-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `<ng-content />`, host: {
|
|
86
118
|
'[class]': 'hostClasses()',
|
|
119
|
+
'[attr.role]': 'role() || null',
|
|
87
120
|
}, styles: [":host(llm-card){display:block;border-radius:var(--ui-radius-xl);background-color:var(--ui-color-surface);overflow:hidden}:host(llm-card.variant-elevated){box-shadow:var(--ui-shadow-md);border:1px solid var(--ui-color-border)}:host(llm-card.variant-outlined){border:1px solid var(--ui-color-border);background-color:var(--ui-color-surface)}:host(llm-card.variant-flat){background-color:var(--ui-color-surface-sunken)}:host(llm-card.padding-none){--llm-card-padding: 0}:host(llm-card.padding-sm){--llm-card-padding: var(--ui-spacing-3)}:host(llm-card.padding-md){--llm-card-padding: var(--ui-spacing-4)}:host(llm-card.padding-lg){--llm-card-padding: var(--ui-spacing-6)}:host(llm-card-header){display:block;font-size:var(--ui-font-size-lg);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text);border-bottom:1px solid var(--ui-color-border);letter-spacing:var(--ui-letter-spacing-tight);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-content){display:block;color:var(--ui-color-text);line-height:var(--ui-line-height-normal);padding:var(--llm-card-padding, var(--ui-spacing-4))}:host(llm-card-footer){display:flex;align-items:center;gap:var(--ui-spacing-2);border-top:1px solid var(--ui-color-border);padding:var(--llm-card-padding, var(--ui-spacing-4))}\n"] }]
|
|
88
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }] } });
|
|
121
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }] } });
|
|
89
122
|
/**
|
|
90
123
|
* Header slot for `llm-card`. Renders above the main content with a bottom separator.
|
|
91
124
|
*
|
|
@@ -2269,6 +2302,13 @@ class LlmAccordionItem {
|
|
|
2269
2302
|
/** Whether this item is disabled. */
|
|
2270
2303
|
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
2271
2304
|
disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled' });
|
|
2305
|
+
/**
|
|
2306
|
+
* HTML heading level wrapping the trigger button. Default `3`.
|
|
2307
|
+
* Match your page's heading outline so heading order stays valid.
|
|
2308
|
+
* Rendered as `<div role="heading" aria-level="N">` so screen
|
|
2309
|
+
* readers treat it as a real heading at that level.
|
|
2310
|
+
*/
|
|
2311
|
+
headingLevel = input(3, ...(ngDevMode ? [{ debugName: "headingLevel" }] : /* istanbul ignore next */ []));
|
|
2272
2312
|
/** @internal — satisfies AccordionItem / FocusableOption interface */
|
|
2273
2313
|
get disabled() {
|
|
2274
2314
|
return this.disabledInput();
|
|
@@ -2330,8 +2370,8 @@ class LlmAccordionItem {
|
|
|
2330
2370
|
this.group.handleKeydown(event, this);
|
|
2331
2371
|
}
|
|
2332
2372
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2333
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmAccordionItem, isStandalone: true, selector: "llm-accordion-item", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-accordion-id": "id" } }, hostDirectives: [{ directive: i1$2.CdkAccordionItem }], ngImport: i0, template: `
|
|
2334
|
-
<
|
|
2373
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmAccordionItem, isStandalone: true, selector: "llm-accordion-item", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, headingLevel: { classPropertyName: "headingLevel", publicName: "headingLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-accordion-id": "id" } }, hostDirectives: [{ directive: i1$2.CdkAccordionItem }], ngImport: i0, template: `
|
|
2374
|
+
<div role="heading" [attr.aria-level]="headingLevel()" class="accordion-heading">
|
|
2335
2375
|
<button
|
|
2336
2376
|
type="button"
|
|
2337
2377
|
class="accordion-trigger"
|
|
@@ -2362,7 +2402,7 @@ class LlmAccordionItem {
|
|
|
2362
2402
|
/>
|
|
2363
2403
|
</svg>
|
|
2364
2404
|
</button>
|
|
2365
|
-
</
|
|
2405
|
+
</div>
|
|
2366
2406
|
<div
|
|
2367
2407
|
class="accordion-panel-wrapper"
|
|
2368
2408
|
[class.is-expanded]="isExpandedValue"
|
|
@@ -2381,7 +2421,7 @@ class LlmAccordionItem {
|
|
|
2381
2421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmAccordionItem, decorators: [{
|
|
2382
2422
|
type: Component,
|
|
2383
2423
|
args: [{ selector: 'llm-accordion-item', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CdkAccordionItem], template: `
|
|
2384
|
-
<
|
|
2424
|
+
<div role="heading" [attr.aria-level]="headingLevel()" class="accordion-heading">
|
|
2385
2425
|
<button
|
|
2386
2426
|
type="button"
|
|
2387
2427
|
class="accordion-trigger"
|
|
@@ -2412,7 +2452,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
2412
2452
|
/>
|
|
2413
2453
|
</svg>
|
|
2414
2454
|
</button>
|
|
2415
|
-
</
|
|
2455
|
+
</div>
|
|
2416
2456
|
<div
|
|
2417
2457
|
class="accordion-panel-wrapper"
|
|
2418
2458
|
[class.is-expanded]="isExpandedValue"
|
|
@@ -2429,7 +2469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
2429
2469
|
`, host: {
|
|
2430
2470
|
'[attr.data-accordion-id]': 'id',
|
|
2431
2471
|
}, styles: [":host{display:block;font-family:var(--ui-font-family);color:var(--ui-color-text)}:host(.variant-default){border-top:1px solid var(--ui-color-border)}:host(.variant-default) llm-accordion-item{border-bottom:1px solid var(--ui-color-border)}:host(.variant-bordered){border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden}:host(.variant-bordered) llm-accordion-item:not(:last-child){border-bottom:1px solid var(--ui-color-border)}:host(.variant-separated){display:flex;flex-direction:column;gap:var(--ui-spacing-2)}:host(.variant-separated) llm-accordion-item{border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-lg);overflow:hidden}llm-accordion-item{display:block}.accordion-heading{all:unset;display:block}.accordion-trigger{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--ui-spacing-4);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-weight-medium);color:var(--ui-color-text);cursor:pointer;transition:background-color var(--ui-transition-fast);-webkit-user-select:none;user-select:none}.accordion-trigger:hover:not(.is-disabled){background:var(--ui-color-surface-sunken)}.accordion-trigger:focus-visible{outline:none;box-shadow:var(--ui-focus-ring);position:relative;z-index:1}.accordion-trigger.is-disabled{opacity:var(--ui-opacity-disabled);cursor:not-allowed}.chevron{flex-shrink:0;color:var(--ui-color-text-muted);transition:transform var(--ui-duration-normal) var(--ui-ease-out)}.chevron.is-expanded{transform:rotate(180deg)}.accordion-panel-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--ui-duration-normal) var(--ui-ease-out)}.accordion-panel-wrapper.is-expanded{grid-template-rows:1fr}.accordion-panel{overflow:hidden}.accordion-panel-wrapper.is-expanded .accordion-panel{padding:0 var(--ui-spacing-4) var(--ui-spacing-4)}.accordion-panel-wrapper:not(.is-expanded) .accordion-panel{padding:0 var(--ui-spacing-4)}\n"] }]
|
|
2432
|
-
}], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
2472
|
+
}], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], headingLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingLevel", required: false }] }] } });
|
|
2433
2473
|
|
|
2434
2474
|
/**
|
|
2435
2475
|
* Trigger directive that opens an `<llm-menu>` dropdown.
|
|
@@ -3085,13 +3125,18 @@ class LlmProgress {
|
|
|
3085
3125
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
3086
3126
|
/** Shows an animated indeterminate state (loading). */
|
|
3087
3127
|
indeterminate = input(false, ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
|
|
3128
|
+
/**
|
|
3129
|
+
* Accessible name — rendered as `aria-label` on the host.
|
|
3130
|
+
* Required by ARIA when there is no visible label nearby.
|
|
3131
|
+
*/
|
|
3132
|
+
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
3088
3133
|
clampedValue = computed(() => Math.min(Math.max(this.value(), 0), this.max()), ...(ngDevMode ? [{ debugName: "clampedValue" }] : /* istanbul ignore next */ []));
|
|
3089
3134
|
fillWidth = computed(() => this.indeterminate()
|
|
3090
3135
|
? '100%'
|
|
3091
3136
|
: `${(this.clampedValue() / this.max()) * 100}%`, ...(ngDevMode ? [{ debugName: "fillWidth" }] : /* istanbul ignore next */ []));
|
|
3092
3137
|
hostClasses = computed(() => `variant-${this.variant()} size-${this.size()}${this.indeterminate() ? ' is-indeterminate' : ''}`, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
3093
3138
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3094
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmProgress, isStandalone: true, selector: "llm-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0" }, properties: { "attr.aria-valuenow": "indeterminate() ? null : clampedValue()", "attr.aria-valuemax": "indeterminate() ? null : max()", "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
3139
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmProgress, isStandalone: true, selector: "llm-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0" }, properties: { "attr.aria-valuenow": "indeterminate() ? null : clampedValue()", "attr.aria-valuemax": "indeterminate() ? null : max()", "attr.aria-label": "label() || null", "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
3095
3140
|
<div class="track">
|
|
3096
3141
|
<div class="fill" [style.width]="fillWidth()"></div>
|
|
3097
3142
|
</div>
|
|
@@ -3108,9 +3153,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
3108
3153
|
'aria-valuemin': '0',
|
|
3109
3154
|
'[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',
|
|
3110
3155
|
'[attr.aria-valuemax]': 'indeterminate() ? null : max()',
|
|
3156
|
+
'[attr.aria-label]': 'label() || null',
|
|
3111
3157
|
'[class]': 'hostClasses()',
|
|
3112
3158
|
}, styles: [":host{display:block;width:100%;font-family:var(--ui-font-family)}.track{position:relative;width:100%;border-radius:var(--ui-radius-full);background-color:var(--ui-color-surface-sunken);overflow:hidden}:host(.size-sm) .track{height:4px}:host(.size-md) .track{height:8px}:host(.size-lg) .track{height:12px}.fill{height:100%;border-radius:var(--ui-radius-full);background-color:var(--ui-color-primary);transition:width var(--ui-transition-normal)}:host(.variant-success) .fill{background-color:var(--ui-color-success)}:host(.variant-warning) .fill{background-color:var(--ui-color-warning)}:host(.variant-danger) .fill{background-color:var(--ui-color-danger)}@keyframes progress-indeterminate{0%{transform:translate(-150%)}to{transform:translate(350%)}}:host(.is-indeterminate) .fill{width:40%!important;animation:progress-indeterminate 1.4s var(--ui-ease-in-out) infinite}@media(prefers-reduced-motion:reduce){:host(.is-indeterminate) .fill{animation:none;opacity:.5}}\n"] }]
|
|
3113
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
|
|
3159
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
3114
3160
|
|
|
3115
3161
|
const LLM_BREADCRUMBS = new InjectionToken('LLM_BREADCRUMBS');
|
|
3116
3162
|
|
|
@@ -3671,6 +3717,14 @@ class LlmTable {
|
|
|
3671
3717
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
3672
3718
|
/** Whether the header row sticks to the top when the table scrolls. */
|
|
3673
3719
|
stickyHeader = input(false, ...(ngDevMode ? [{ debugName: "stickyHeader" }] : /* istanbul ignore next */ []));
|
|
3720
|
+
/**
|
|
3721
|
+
* Accessible name for the scrollable table region. Surfaces to
|
|
3722
|
+
* screen readers as the region's label so keyboard users who
|
|
3723
|
+
* scroll the wrapper know what they're scrolling. Defaults to
|
|
3724
|
+
* `"Table"` if unset.
|
|
3725
|
+
*/
|
|
3726
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
3727
|
+
ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
3674
3728
|
/** @internal */
|
|
3675
3729
|
hostClasses = computed(() => {
|
|
3676
3730
|
const classes = [`variant-${this.variant()}`, `size-${this.size()}`];
|
|
@@ -3679,8 +3733,17 @@ class LlmTable {
|
|
|
3679
3733
|
return classes.join(' ');
|
|
3680
3734
|
}, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
3681
3735
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3682
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmTable, isStandalone: true, selector: "llm-table", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, providers: [{ provide: LLM_TABLE, useExisting: LlmTable }], ngImport: i0, template: `
|
|
3683
|
-
|
|
3736
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: LlmTable, isStandalone: true, selector: "llm-table", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, providers: [{ provide: LLM_TABLE, useExisting: LlmTable }], ngImport: i0, template: `
|
|
3737
|
+
<!-- The wrapper is the scrollable region — tabindex=0 lets keyboard
|
|
3738
|
+
users scroll horizontally through wide tables. role=region +
|
|
3739
|
+
aria-label expose it as a labelled landmark for screen readers
|
|
3740
|
+
(axe: scrollable-region-focusable). -->
|
|
3741
|
+
<div
|
|
3742
|
+
class="llm-table-wrapper"
|
|
3743
|
+
tabindex="0"
|
|
3744
|
+
role="region"
|
|
3745
|
+
[attr.aria-label]="ariaLabel() || 'Table'"
|
|
3746
|
+
>
|
|
3684
3747
|
<table>
|
|
3685
3748
|
<ng-content />
|
|
3686
3749
|
</table>
|
|
@@ -3690,7 +3753,16 @@ class LlmTable {
|
|
|
3690
3753
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: LlmTable, decorators: [{
|
|
3691
3754
|
type: Component,
|
|
3692
3755
|
args: [{ selector: 'llm-table', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
3693
|
-
|
|
3756
|
+
<!-- The wrapper is the scrollable region — tabindex=0 lets keyboard
|
|
3757
|
+
users scroll horizontally through wide tables. role=region +
|
|
3758
|
+
aria-label expose it as a labelled landmark for screen readers
|
|
3759
|
+
(axe: scrollable-region-focusable). -->
|
|
3760
|
+
<div
|
|
3761
|
+
class="llm-table-wrapper"
|
|
3762
|
+
tabindex="0"
|
|
3763
|
+
role="region"
|
|
3764
|
+
[attr.aria-label]="ariaLabel() || 'Table'"
|
|
3765
|
+
>
|
|
3694
3766
|
<table>
|
|
3695
3767
|
<ng-content />
|
|
3696
3768
|
</table>
|
|
@@ -3698,7 +3770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
3698
3770
|
`, host: {
|
|
3699
3771
|
'[class]': 'hostClasses()',
|
|
3700
3772
|
}, providers: [{ provide: LLM_TABLE, useExisting: LlmTable }], encapsulation: ViewEncapsulation.None, styles: ["llm-thead,llm-tbody,llm-tr,llm-th,llm-td{display:contents}llm-table{display:block;font-family:var(--ui-font-family);color:var(--ui-color-text);border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-md);overflow:hidden}.llm-table-wrapper{width:100%;overflow-x:auto}llm-table table{width:100%;border-collapse:collapse}llm-table thead th{font-size:var(--ui-font-size-xs);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text-muted);letter-spacing:var(--ui-letter-spacing-wide);text-transform:uppercase;border-bottom:2px solid var(--ui-color-border);background-color:var(--ui-color-surface);padding:var(--ui-spacing-3) var(--ui-spacing-4);text-align:start;white-space:nowrap}llm-table tbody td{border-bottom:1px solid var(--ui-color-border);padding:var(--ui-spacing-3) var(--ui-spacing-4);vertical-align:middle;background-color:var(--ui-color-surface);transition:background-color var(--ui-transition-fast)}llm-table.size-sm thead th,llm-table.size-sm tbody td{padding:var(--ui-spacing-2) var(--ui-spacing-3);font-size:var(--ui-font-size-xs)}llm-table.size-md thead th,llm-table.size-md tbody td{padding:var(--ui-spacing-3) var(--ui-spacing-4);font-size:var(--ui-font-size-sm)}llm-table.size-lg thead th,llm-table.size-lg tbody td{padding:var(--ui-spacing-4) var(--ui-spacing-6);font-size:var(--ui-font-size-md)}llm-table.variant-striped llm-tbody llm-tr:nth-child(2n) td{background-color:var(--ui-color-surface-sunken)}llm-table.variant-bordered thead th,llm-table.variant-bordered tbody td{border:1px solid var(--ui-color-border)}th.align-start,td.align-start{text-align:start}th.align-center,td.align-center{text-align:center}th.align-end,td.align-end{text-align:end}llm-table tbody tr:hover td{background-color:var(--ui-color-surface-sunken)}llm-table tbody tr.is-selected td{background-color:var(--ui-color-primary-light)}llm-table tbody tr.is-selected:hover td{background-color:var(--ui-color-primary-light)}.llm-tr-select-cell{width:2.75rem;text-align:center}.llm-tr-select-cell llm-checkbox label{justify-content:center}llm-table.is-sticky-header thead th{position:sticky;top:0;z-index:1;box-shadow:0 1px 0 0 var(--ui-color-border)}.llm-th-sort-btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:var(--ui-spacing-2);cursor:pointer;font:inherit;color:inherit;font-weight:inherit;width:100%}.llm-th-sort-btn:focus-visible{outline:var(--ui-focus-ring);border-radius:var(--ui-radius-sm)}.llm-th-sort-icon{flex-shrink:0}.llm-th-sort-asc-arrow,.llm-th-sort-desc-arrow{opacity:.25;transition:opacity var(--ui-transition-fast)}th.is-sorted .llm-th-sort-icon{color:var(--ui-color-primary)}th.sort-asc .llm-th-sort-asc-arrow,th.sort-desc .llm-th-sort-desc-arrow{opacity:1}llm-table llm-tbody llm-tr:last-child td{border-bottom:none}.llm-tbody-empty-cell{text-align:center;padding:var(--ui-spacing-12) var(--ui-spacing-4)!important;color:var(--ui-color-text-muted);font-size:var(--ui-font-size-md);background-color:var(--ui-color-surface)!important}\n"] }]
|
|
3701
|
-
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], stickyHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeader", required: false }] }] } });
|
|
3773
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], stickyHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeader", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
|
|
3702
3774
|
// ---------------------------------------------------------------------------
|
|
3703
3775
|
// LlmThead
|
|
3704
3776
|
// ---------------------------------------------------------------------------
|