@atelier-ui/angular 0.0.11 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/angular",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Atelier UI component library for Angular — LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "angular",
@@ -23,7 +23,7 @@
23
23
  "@angular/forms": "^21.0.0"
24
24
  },
25
25
  "dependencies": {
26
- "@atelier-ui/spec": "latest",
26
+ "@atelier-ui/spec": "0.0.12",
27
27
  "tslib": "^2.3.0"
28
28
  },
29
29
  "module": "fesm2022/atelier-ui-angular.mjs",
@@ -38,4 +38,4 @@
38
38
  }
39
39
  },
40
40
  "sideEffects": false
41
- }
41
+ }
@@ -1,7 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, WritableSignal, Signal, OnInit, OnDestroy, ElementRef } from '@angular/core';
3
- import { LlmButtonVariant, LlmButtonSize } from '@atelier-ui/spec';
3
+ import { LlmButtonVariant, LlmButtonSize, LlmComboboxOption } from '@atelier-ui/spec';
4
4
  import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
5
+ import { FocusableOption } from '@angular/cdk/a11y';
5
6
  import * as _atelier_ui_angular from '@atelier-ui/angular';
6
7
  import * as i1 from '@angular/cdk/accordion';
7
8
  import * as i1$1 from '@angular/cdk/menu';
@@ -244,9 +245,9 @@ declare class LlmCheckbox implements FormCheckboxControl {
244
245
  }
245
246
 
246
247
  /** @internal — shape required by LlmRadioGroup's FocusKeyManager */
247
- interface RadioItem {
248
- focusInput(): void;
249
- isDisabled(): boolean;
248
+ interface RadioItem extends FocusableOption {
249
+ focus(): void;
250
+ disabled?: boolean;
250
251
  readonly radioValue: Signal<string>;
251
252
  }
252
253
  interface LlmRadioGroupContext {
@@ -275,7 +276,7 @@ declare class LlmRadio implements RadioItem, OnInit, OnDestroy {
275
276
  /** The value this radio option represents within the group. */
276
277
  readonly radioValue: _angular_core.InputSignal<string>;
277
278
  /** Whether this specific radio is individually disabled (stacked with group disabled). */
278
- readonly disabled: _angular_core.InputSignal<boolean>;
279
+ readonly disabledInput: _angular_core.InputSignal<boolean>;
279
280
  /** @internal */
280
281
  private readonly group;
281
282
  /** @internal */
@@ -291,7 +292,9 @@ declare class LlmRadio implements RadioItem, OnInit, OnDestroy {
291
292
  /** @internal */
292
293
  protected readonly hostClasses: _angular_core.Signal<string>;
293
294
  /** @internal — for FocusKeyManager */
294
- focusInput(): void;
295
+ get disabled(): boolean;
296
+ /** @internal — for FocusKeyManager */
297
+ focus(): void;
295
298
  ngOnInit(): void;
296
299
  ngOnDestroy(): void;
297
300
  /** @internal */
@@ -299,7 +302,7 @@ declare class LlmRadio implements RadioItem, OnInit, OnDestroy {
299
302
  /** @internal */
300
303
  protected onBlur(): void;
301
304
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmRadio, never>;
302
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmRadio, "llm-radio", never, { "radioValue": { "alias": "radioValue"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
305
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmRadio, "llm-radio", never, { "radioValue": { "alias": "radioValue"; "required": true; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
303
306
  }
304
307
 
305
308
  /**
@@ -340,6 +343,8 @@ declare class LlmRadioGroup implements FormValueControl<string>, LlmRadioGroupCo
340
343
  /** @internal */
341
344
  private readonly items;
342
345
  /** @internal */
346
+ private keyManager;
347
+ /** @internal */
343
348
  protected readonly showErrors: _angular_core.Signal<boolean>;
344
349
  /** @internal */
345
350
  protected readonly hostClasses: _angular_core.Signal<string>;
@@ -440,7 +445,7 @@ declare const LLM_SELECT: InjectionToken<LlmSelectContext>;
440
445
 
441
446
  /**
442
447
  * Accessible dropdown select component for use with Angular Signal Forms.
443
- * Uses the native Popover API for the panel overlay.
448
+ * Uses the CDK Overlay for viewport-aware panel positioning.
444
449
  *
445
450
  * Usage:
446
451
  * ```html
@@ -455,7 +460,7 @@ declare const LLM_SELECT: InjectionToken<LlmSelectContext>;
455
460
  * </llm-select>
456
461
  * ```
457
462
  */
458
- declare class LlmSelect implements FormValueControl<string>, LlmSelectContext {
463
+ declare class LlmSelect implements FormValueControl<string>, LlmSelectContext, OnDestroy {
459
464
  /** The selected value. Bound by [formField] directive. Supports [(value)] two-way binding. */
460
465
  readonly value: _angular_core.ModelSignal<string>;
461
466
  /** Whether the user has interacted. Bound by [formField] directive. */
@@ -499,8 +504,10 @@ declare class LlmSelect implements FormValueControl<string>, LlmSelectContext {
499
504
  protected readonly hostClasses: _angular_core.Signal<string>;
500
505
  /** @internal */
501
506
  private keyManager;
507
+ private overlayRef;
502
508
  private outsideClickHandler;
503
509
  private readonly elementRef;
510
+ private readonly injector;
504
511
  /** @internal — called by LlmOption on init */
505
512
  registerOption(id: string, value: string, labelText: string, disabled: boolean): void;
506
513
  /** @internal — called by LlmOption on destroy */
@@ -514,11 +521,11 @@ declare class LlmSelect implements FormValueControl<string>, LlmSelectContext {
514
521
  /** @internal */
515
522
  protected onTriggerBlur(): void;
516
523
  /** @internal */
517
- protected onPanelToggle(event: Event): void;
518
- /** @internal */
519
524
  protected onKeydown(event: KeyboardEvent): void;
525
+ ngOnDestroy(): void;
520
526
  private open;
521
527
  private close;
528
+ private createOverlay;
522
529
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmSelect, never>;
523
530
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmSelect, "llm-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, ["*"], true, never>;
524
531
  }
@@ -556,6 +563,86 @@ declare class LlmOption implements OnInit, OnDestroy {
556
563
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmOption, "llm-option", never, { "optionValue": { "alias": "optionValue"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
557
564
  }
558
565
 
566
+ /**
567
+ * Filterable autocomplete combobox. Accepts an `options` array and emits the
568
+ * selected option's `value`. The user types to narrow the list; selecting an
569
+ * option commits the value and displays its label.
570
+ *
571
+ * Usage:
572
+ * ```html
573
+ * <llm-combobox
574
+ * [(value)]="country"
575
+ * [options]="countryOptions"
576
+ * placeholder="Search country…"
577
+ * />
578
+ *
579
+ * <!-- With Signal Forms -->
580
+ * <llm-combobox [formField]="form.country" [options]="countryOptions" />
581
+ * ```
582
+ */
583
+ declare class LlmCombobox implements FormValueControl<string> {
584
+ /** The selected value. Supports [(value)] two-way binding and [formField] directive. */
585
+ readonly value: _angular_core.ModelSignal<string>;
586
+ /** Whether the user has interacted. Bound by [formField] directive. */
587
+ readonly touched: _angular_core.ModelSignal<boolean>;
588
+ /** Options to display and filter. */
589
+ readonly options: _angular_core.InputSignal<LlmComboboxOption[]>;
590
+ /** Placeholder text for the input. */
591
+ readonly placeholder: _angular_core.InputSignal<string>;
592
+ /** Whether the combobox is disabled. */
593
+ readonly disabled: _angular_core.InputSignal<boolean>;
594
+ /** Whether the combobox has validation errors. */
595
+ readonly invalid: _angular_core.InputSignal<boolean>;
596
+ /** Whether the combobox is required. */
597
+ readonly required: _angular_core.InputSignal<boolean>;
598
+ /** The input's name attribute. */
599
+ readonly name: _angular_core.InputSignal<string>;
600
+ /** Validation errors from the form system. */
601
+ readonly errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
602
+ /** @internal */
603
+ protected readonly query: _angular_core.WritableSignal<string>;
604
+ /** @internal */
605
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
606
+ /** @internal */
607
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
608
+ /** @internal */
609
+ protected readonly panelRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
610
+ /** @internal */
611
+ protected readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
612
+ /** @internal */
613
+ protected readonly inputId: string;
614
+ /** @internal */
615
+ protected readonly panelId: string;
616
+ /** @internal */
617
+ protected readonly errorId: string;
618
+ /** @internal */
619
+ protected readonly filteredOptions: _angular_core.Signal<LlmComboboxOption[]>;
620
+ /** @internal */
621
+ protected readonly activeOptionId: _angular_core.Signal<string | null>;
622
+ /** @internal */
623
+ protected readonly showErrors: _angular_core.Signal<boolean>;
624
+ /** @internal */
625
+ protected readonly hostClasses: _angular_core.Signal<string>;
626
+ private outsideClickHandler;
627
+ private readonly elementRef;
628
+ /** @internal */
629
+ protected optionId(index: number): string;
630
+ /** @internal */
631
+ protected onInput(event: Event): void;
632
+ /** @internal */
633
+ protected onFocus(): void;
634
+ /** @internal */
635
+ protected onBlur(): void;
636
+ /** @internal */
637
+ protected onOptionSelect(option: LlmComboboxOption): void;
638
+ /** @internal */
639
+ protected onKeydown(event: KeyboardEvent): void;
640
+ private open;
641
+ private close;
642
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmCombobox, never>;
643
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmCombobox, "llm-combobox", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
644
+ }
645
+
559
646
  /**
560
647
  * Accessible modal dialog using the native `<dialog>` element.
561
648
  * Includes focus trap, Escape to close, backdrop click to close, and animation.
@@ -662,7 +749,7 @@ declare class LlmTabGroup implements LlmTabGroupContext {
662
749
  /** @internal */
663
750
  readonly tabs: _angular_core.WritableSignal<TabInfo[]>;
664
751
  /** @internal */
665
- private readonly elementRef;
752
+ protected readonly tabBtns: _angular_core.Signal<readonly ElementRef<HTMLButtonElement>[]>;
666
753
  /** @internal */
667
754
  protected readonly hostClasses: _angular_core.Signal<string>;
668
755
  /** @internal — called by LlmTab on init */
@@ -706,10 +793,10 @@ declare class LlmTab implements OnInit, OnDestroy {
706
793
  }
707
794
 
708
795
  /** @internal — shape required by LlmAccordionGroup's FocusKeyManager */
709
- interface AccordionItem {
796
+ interface AccordionItem extends FocusableOption {
710
797
  readonly id: string;
711
- focusTrigger(): void;
712
- isItemDisabled(): boolean;
798
+ focus(): void;
799
+ disabled?: boolean;
713
800
  }
714
801
  interface LlmAccordionGroupContext {
715
802
  register(item: AccordionItem): void;
@@ -771,7 +858,9 @@ declare class LlmAccordionItem implements AccordionItem, OnInit, OnDestroy {
771
858
  /** Whether this item is expanded. Supports two-way binding. */
772
859
  readonly expanded: _angular_core.ModelSignal<boolean>;
773
860
  /** Whether this item is disabled. */
774
- readonly disabled: _angular_core.InputSignal<boolean>;
861
+ readonly disabledInput: _angular_core.InputSignal<boolean>;
862
+ /** @internal — satisfies AccordionItem / FocusableOption interface */
863
+ get disabled(): boolean;
775
864
  /** @internal */
776
865
  readonly id: string;
777
866
  /** @internal */
@@ -796,15 +885,13 @@ declare class LlmAccordionItem implements AccordionItem, OnInit, OnDestroy {
796
885
  ngOnInit(): void;
797
886
  ngOnDestroy(): void;
798
887
  /** @internal — for FocusKeyManager */
799
- focusTrigger(): void;
800
- /** @internal — for FocusKeyManager */
801
- isItemDisabled(): boolean;
888
+ focus(): void;
802
889
  /** @internal */
803
890
  protected onToggle(): void;
804
891
  /** @internal */
805
892
  protected onKeydown(event: KeyboardEvent): void;
806
893
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmAccordionItem, never>;
807
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmAccordionItem, "llm-accordion-item", never, { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["[llmAccordionHeader]", "*"], true, [{ directive: typeof i1.CdkAccordionItem; inputs: {}; outputs: {}; }]>;
894
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmAccordionItem, "llm-accordion-item", never, { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["[llmAccordionHeader]", "*"], true, [{ directive: typeof i1.CdkAccordionItem; inputs: {}; outputs: {}; }]>;
808
895
  }
809
896
 
810
897
  /**
@@ -1229,7 +1316,7 @@ declare class LlmDrawer {
1229
1316
  /** Whether the drawer is open. Supports two-way binding: [(open)]="isOpen". */
1230
1317
  readonly open: _angular_core.ModelSignal<boolean>;
1231
1318
  /** Which edge the drawer slides in from. */
1232
- readonly position: _angular_core.InputSignal<"top" | "bottom" | "left" | "right">;
1319
+ readonly position: _angular_core.InputSignal<"bottom" | "top" | "left" | "right">;
1233
1320
  /** Width (for left/right) or height (for top/bottom) of the panel. */
1234
1321
  readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "full">;
1235
1322
  /** Whether clicking the backdrop closes the drawer. */
@@ -1431,5 +1518,133 @@ declare class LlmTd {
1431
1518
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTd, "llm-td", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1432
1519
  }
1433
1520
 
1434
- export { LLM_ACCORDION_GROUP, LLM_BREADCRUMBS, LLM_DIALOG, LLM_DRAWER, LLM_RADIO_GROUP, LLM_SELECT, LLM_TABLE, LLM_TAB_GROUP, LlmAccordionGroup, LlmAccordionHeader, LlmAccordionItem, LlmAlert, LlmAvatar, LlmAvatarGroup, LlmBadge, LlmBreadcrumbItem, LlmBreadcrumbs, LlmButton, LlmCard, LlmCardContent, LlmCardFooter, LlmCardHeader, LlmCheckbox, LlmDialog, LlmDialogContent, LlmDialogFooter, LlmDialogHeader, LlmDrawer, LlmDrawerContent, LlmDrawerFooter, LlmDrawerHeader, LlmInput, LlmMenu, LlmMenuItem, LlmMenuSeparator, LlmMenuTrigger, LlmOption, LlmPagination, LlmProgress, LlmRadio, LlmRadioGroup, LlmSelect, LlmSkeleton, LlmTab, LlmTabGroup, LlmTable, LlmTbody, LlmTd, LlmTextarea, LlmTh, LlmThead, LlmToast, LlmToastContainer, LlmToastService, LlmToggle, LlmTooltip, LlmTr };
1435
- export type { LlmAccordionGroupContext, LlmBreadcrumbsContext, LlmDialogContext, LlmDrawerContext, LlmRadioGroupContext, LlmSelectContext, LlmSortDirection, LlmTabGroupContext, LlmTableContext, PageItem, TabInfo, ToastData, ToastOptions };
1521
+ interface StepInfo {
1522
+ id: string;
1523
+ label: string;
1524
+ description?: string;
1525
+ completed: boolean;
1526
+ error: boolean;
1527
+ optional: boolean;
1528
+ disabled: boolean;
1529
+ }
1530
+ interface LlmStepperContext {
1531
+ readonly activeStep: WritableSignal<number>;
1532
+ readonly steps: Signal<StepInfo[]>;
1533
+ readonly linear: Signal<boolean>;
1534
+ registerStep(info: StepInfo): void;
1535
+ unregisterStep(id: string): void;
1536
+ updateStep(id: string, info: Partial<StepInfo>): void;
1537
+ goTo(index: number): void;
1538
+ next(): void;
1539
+ prev(): void;
1540
+ }
1541
+ declare const LLM_STEPPER: InjectionToken<LlmStepperContext>;
1542
+
1543
+ /**
1544
+ * Multi-step wizard container.
1545
+ *
1546
+ * Usage:
1547
+ * ```html
1548
+ * <llm-stepper [(activeStep)]="step">
1549
+ * <llm-step label="Account">Account form here.</llm-step>
1550
+ * <llm-step label="Profile">Profile form here.</llm-step>
1551
+ * <llm-step label="Review">Review and submit.</llm-step>
1552
+ * </llm-stepper>
1553
+ * ```
1554
+ */
1555
+ declare class LlmStepper implements LlmStepperContext {
1556
+ /** Index of the currently active step. Supports two-way binding. */
1557
+ readonly activeStep: _angular_core.ModelSignal<number>;
1558
+ /** Layout orientation. */
1559
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
1560
+ /**
1561
+ * When true, users can only navigate to completed steps or the next pending step.
1562
+ * Use `goTo()` / `next()` in your step content to advance programmatically.
1563
+ */
1564
+ readonly linear: _angular_core.InputSignal<boolean>;
1565
+ /** @internal */
1566
+ readonly steps: _angular_core.WritableSignal<StepInfo[]>;
1567
+ /** @internal */
1568
+ protected readonly hostClasses: _angular_core.Signal<string>;
1569
+ /** @internal — called by LlmStep on init */
1570
+ registerStep(info: StepInfo): void;
1571
+ /** @internal — called by LlmStep on destroy */
1572
+ unregisterStep(id: string): void;
1573
+ /** @internal — called by LlmStep effect when inputs change */
1574
+ updateStep(id: string, info: Partial<StepInfo>): void;
1575
+ /** Navigate to a specific step index. Respects linear mode. */
1576
+ goTo(index: number): void;
1577
+ /** Advance to the next step. */
1578
+ next(): void;
1579
+ /** Go back to the previous step. */
1580
+ prev(): void;
1581
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmStepper, never>;
1582
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmStepper, "llm-stepper", never, { "activeStep": { "alias": "activeStep"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; }, { "activeStep": "activeStepChange"; }, never, ["*"], true, never>;
1583
+ }
1584
+ /**
1585
+ * Individual step. Place inside `<llm-stepper>`.
1586
+ *
1587
+ * Usage:
1588
+ * ```html
1589
+ * <llm-step label="Account">Account form here.</llm-step>
1590
+ * ```
1591
+ */
1592
+ declare class LlmStep implements OnInit, OnDestroy {
1593
+ /** Text displayed on the step indicator. Required. */
1594
+ readonly label: _angular_core.InputSignal<string>;
1595
+ /** Optional subtitle shown below the label. */
1596
+ readonly description: _angular_core.InputSignal<string | undefined>;
1597
+ /** Mark this step as completed (shows a checkmark). */
1598
+ readonly completed: _angular_core.InputSignal<boolean>;
1599
+ /** Mark this step as having an error (shows an X). */
1600
+ readonly error: _angular_core.InputSignal<boolean>;
1601
+ /** Mark this step as optional. */
1602
+ readonly optional: _angular_core.InputSignal<boolean>;
1603
+ /** Whether this step is disabled. */
1604
+ readonly disabled: _angular_core.InputSignal<boolean>;
1605
+ /** @internal */
1606
+ private readonly id;
1607
+ /** @internal */
1608
+ private readonly context;
1609
+ /** @internal */
1610
+ protected readonly myIndex: _angular_core.Signal<number>;
1611
+ /** @internal */
1612
+ protected readonly isActive: _angular_core.Signal<boolean>;
1613
+ constructor();
1614
+ ngOnInit(): void;
1615
+ ngOnDestroy(): void;
1616
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmStep, never>;
1617
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmStep, "llm-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1618
+ }
1619
+
1620
+ /**
1621
+ * Displays a block of code with an optional header, language label, and copy button.
1622
+ * Designed for rendering LLM-generated code output, inline snippets, and API examples.
1623
+ *
1624
+ * Usage:
1625
+ * ```html
1626
+ * <llm-code-block code="const x = 1;" language="typescript" />
1627
+ * <llm-code-block [code]="generatedCode" filename="app.component.ts" [showLineNumbers]="true" />
1628
+ * ```
1629
+ */
1630
+ declare class LlmCodeBlock {
1631
+ /** The code string to display. */
1632
+ readonly code: _angular_core.InputSignal<string>;
1633
+ /** Language label shown in the header. Ignored if filename is set. */
1634
+ readonly language: _angular_core.InputSignal<string>;
1635
+ /** Optional filename shown in the header instead of the language label. */
1636
+ readonly filename: _angular_core.InputSignal<string>;
1637
+ /** Whether to show a copy-to-clipboard button. */
1638
+ readonly copyable: _angular_core.InputSignal<boolean>;
1639
+ /** Whether to display line numbers alongside the code. */
1640
+ readonly showLineNumbers: _angular_core.InputSignal<boolean>;
1641
+ protected readonly copied: _angular_core.WritableSignal<boolean>;
1642
+ protected readonly displayLabel: _angular_core.Signal<string>;
1643
+ protected readonly lines: _angular_core.Signal<string[]>;
1644
+ protected copy(): void;
1645
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmCodeBlock, never>;
1646
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmCodeBlock, "llm-code-block", never, { "code": { "alias": "code"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "copyable": { "alias": "copyable"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1647
+ }
1648
+
1649
+ export { LLM_ACCORDION_GROUP, LLM_BREADCRUMBS, LLM_DIALOG, LLM_DRAWER, LLM_RADIO_GROUP, LLM_SELECT, LLM_STEPPER, LLM_TABLE, LLM_TAB_GROUP, LlmAccordionGroup, LlmAccordionHeader, LlmAccordionItem, LlmAlert, LlmAvatar, LlmAvatarGroup, LlmBadge, LlmBreadcrumbItem, LlmBreadcrumbs, LlmButton, LlmCard, LlmCardContent, LlmCardFooter, LlmCardHeader, LlmCheckbox, LlmCodeBlock, LlmCombobox, LlmDialog, LlmDialogContent, LlmDialogFooter, LlmDialogHeader, LlmDrawer, LlmDrawerContent, LlmDrawerFooter, LlmDrawerHeader, LlmInput, LlmMenu, LlmMenuItem, LlmMenuSeparator, LlmMenuTrigger, LlmOption, LlmPagination, LlmProgress, LlmRadio, LlmRadioGroup, LlmSelect, LlmSkeleton, LlmStep, LlmStepper, LlmTab, LlmTabGroup, LlmTable, LlmTbody, LlmTd, LlmTextarea, LlmTh, LlmThead, LlmToast, LlmToastContainer, LlmToastService, LlmToggle, LlmTooltip, LlmTr };
1650
+ export type { LlmAccordionGroupContext, LlmBreadcrumbsContext, LlmDialogContext, LlmDrawerContext, LlmRadioGroupContext, LlmSelectContext, LlmSortDirection, LlmStepperContext, LlmTabGroupContext, LlmTableContext, PageItem, StepInfo, TabInfo, ToastData, ToastOptions };