@skra/ui 0.2.0

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.
Files changed (160) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +7 -0
  3. package/README.md +39 -0
  4. package/consumer-guide/README.md +84 -0
  5. package/consumer-guide/accessible-names.md +80 -0
  6. package/consumer-guide/forms-and-binding.md +149 -0
  7. package/consumer-guide/layout.md +86 -0
  8. package/consumer-guide/overlays.md +100 -0
  9. package/consumer-guide/setup-and-gotchas.md +103 -0
  10. package/consumer-guide/theming-and-encapsulation.md +115 -0
  11. package/consumer-guide/wrapping-patterns.md +90 -0
  12. package/fesm2022/skra-ui-accordion.mjs +333 -0
  13. package/fesm2022/skra-ui-accordion.mjs.map +1 -0
  14. package/fesm2022/skra-ui-alert.mjs +110 -0
  15. package/fesm2022/skra-ui-alert.mjs.map +1 -0
  16. package/fesm2022/skra-ui-avatar.mjs +83 -0
  17. package/fesm2022/skra-ui-avatar.mjs.map +1 -0
  18. package/fesm2022/skra-ui-badge.mjs +91 -0
  19. package/fesm2022/skra-ui-badge.mjs.map +1 -0
  20. package/fesm2022/skra-ui-button.mjs +67 -0
  21. package/fesm2022/skra-ui-button.mjs.map +1 -0
  22. package/fesm2022/skra-ui-checkbox.mjs +98 -0
  23. package/fesm2022/skra-ui-checkbox.mjs.map +1 -0
  24. package/fesm2022/skra-ui-chip.mjs +82 -0
  25. package/fesm2022/skra-ui-chip.mjs.map +1 -0
  26. package/fesm2022/skra-ui-combobox.mjs +335 -0
  27. package/fesm2022/skra-ui-combobox.mjs.map +1 -0
  28. package/fesm2022/skra-ui-core.mjs +529 -0
  29. package/fesm2022/skra-ui-core.mjs.map +1 -0
  30. package/fesm2022/skra-ui-counter.mjs +53 -0
  31. package/fesm2022/skra-ui-counter.mjs.map +1 -0
  32. package/fesm2022/skra-ui-datepicker.mjs +867 -0
  33. package/fesm2022/skra-ui-datepicker.mjs.map +1 -0
  34. package/fesm2022/skra-ui-dialog.mjs +133 -0
  35. package/fesm2022/skra-ui-dialog.mjs.map +1 -0
  36. package/fesm2022/skra-ui-field.mjs +293 -0
  37. package/fesm2022/skra-ui-field.mjs.map +1 -0
  38. package/fesm2022/skra-ui-icon.mjs +54 -0
  39. package/fesm2022/skra-ui-icon.mjs.map +1 -0
  40. package/fesm2022/skra-ui-input.mjs +42 -0
  41. package/fesm2022/skra-ui-input.mjs.map +1 -0
  42. package/fesm2022/skra-ui-kbd.mjs +44 -0
  43. package/fesm2022/skra-ui-kbd.mjs.map +1 -0
  44. package/fesm2022/skra-ui-layout.mjs +119 -0
  45. package/fesm2022/skra-ui-layout.mjs.map +1 -0
  46. package/fesm2022/skra-ui-link.mjs +29 -0
  47. package/fesm2022/skra-ui-link.mjs.map +1 -0
  48. package/fesm2022/skra-ui-loading-indicator.mjs +24 -0
  49. package/fesm2022/skra-ui-loading-indicator.mjs.map +1 -0
  50. package/fesm2022/skra-ui-menu.mjs +334 -0
  51. package/fesm2022/skra-ui-menu.mjs.map +1 -0
  52. package/fesm2022/skra-ui-multi-select.mjs +179 -0
  53. package/fesm2022/skra-ui-multi-select.mjs.map +1 -0
  54. package/fesm2022/skra-ui-native-select.mjs +123 -0
  55. package/fesm2022/skra-ui-native-select.mjs.map +1 -0
  56. package/fesm2022/skra-ui-popover.mjs +158 -0
  57. package/fesm2022/skra-ui-popover.mjs.map +1 -0
  58. package/fesm2022/skra-ui-progress.mjs +57 -0
  59. package/fesm2022/skra-ui-progress.mjs.map +1 -0
  60. package/fesm2022/skra-ui-radio.mjs +92 -0
  61. package/fesm2022/skra-ui-radio.mjs.map +1 -0
  62. package/fesm2022/skra-ui-rating-display.mjs +81 -0
  63. package/fesm2022/skra-ui-rating-display.mjs.map +1 -0
  64. package/fesm2022/skra-ui-select.mjs +151 -0
  65. package/fesm2022/skra-ui-select.mjs.map +1 -0
  66. package/fesm2022/skra-ui-skeleton.mjs +65 -0
  67. package/fesm2022/skra-ui-skeleton.mjs.map +1 -0
  68. package/fesm2022/skra-ui-star-rating.mjs +110 -0
  69. package/fesm2022/skra-ui-star-rating.mjs.map +1 -0
  70. package/fesm2022/skra-ui-status-dot.mjs +61 -0
  71. package/fesm2022/skra-ui-status-dot.mjs.map +1 -0
  72. package/fesm2022/skra-ui-switch.mjs +94 -0
  73. package/fesm2022/skra-ui-switch.mjs.map +1 -0
  74. package/fesm2022/skra-ui-tabs.mjs +356 -0
  75. package/fesm2022/skra-ui-tabs.mjs.map +1 -0
  76. package/fesm2022/skra-ui-textarea.mjs +81 -0
  77. package/fesm2022/skra-ui-textarea.mjs.map +1 -0
  78. package/fesm2022/skra-ui-toast.mjs +208 -0
  79. package/fesm2022/skra-ui-toast.mjs.map +1 -0
  80. package/fesm2022/skra-ui-tooltip.mjs +252 -0
  81. package/fesm2022/skra-ui-tooltip.mjs.map +1 -0
  82. package/fesm2022/skra-ui-typography.mjs +35 -0
  83. package/fesm2022/skra-ui-typography.mjs.map +1 -0
  84. package/fesm2022/skra-ui.mjs +4 -0
  85. package/fesm2022/skra-ui.mjs.map +1 -0
  86. package/package.json +175 -0
  87. package/types/skra-ui-accordion.d.ts +196 -0
  88. package/types/skra-ui-accordion.d.ts.map +1 -0
  89. package/types/skra-ui-alert.d.ts +81 -0
  90. package/types/skra-ui-alert.d.ts.map +1 -0
  91. package/types/skra-ui-avatar.d.ts +71 -0
  92. package/types/skra-ui-avatar.d.ts.map +1 -0
  93. package/types/skra-ui-badge.d.ts +73 -0
  94. package/types/skra-ui-badge.d.ts.map +1 -0
  95. package/types/skra-ui-button.d.ts +45 -0
  96. package/types/skra-ui-button.d.ts.map +1 -0
  97. package/types/skra-ui-checkbox.d.ts +52 -0
  98. package/types/skra-ui-checkbox.d.ts.map +1 -0
  99. package/types/skra-ui-chip.d.ts +60 -0
  100. package/types/skra-ui-chip.d.ts.map +1 -0
  101. package/types/skra-ui-combobox.d.ts +95 -0
  102. package/types/skra-ui-combobox.d.ts.map +1 -0
  103. package/types/skra-ui-core.d.ts +314 -0
  104. package/types/skra-ui-core.d.ts.map +1 -0
  105. package/types/skra-ui-counter.d.ts +33 -0
  106. package/types/skra-ui-counter.d.ts.map +1 -0
  107. package/types/skra-ui-datepicker.d.ts +164 -0
  108. package/types/skra-ui-datepicker.d.ts.map +1 -0
  109. package/types/skra-ui-dialog.d.ts +59 -0
  110. package/types/skra-ui-dialog.d.ts.map +1 -0
  111. package/types/skra-ui-field.d.ts +181 -0
  112. package/types/skra-ui-field.d.ts.map +1 -0
  113. package/types/skra-ui-icon.d.ts +38 -0
  114. package/types/skra-ui-icon.d.ts.map +1 -0
  115. package/types/skra-ui-input.d.ts +22 -0
  116. package/types/skra-ui-input.d.ts.map +1 -0
  117. package/types/skra-ui-kbd.d.ts +33 -0
  118. package/types/skra-ui-kbd.d.ts.map +1 -0
  119. package/types/skra-ui-layout.d.ts +86 -0
  120. package/types/skra-ui-layout.d.ts.map +1 -0
  121. package/types/skra-ui-link.d.ts +20 -0
  122. package/types/skra-ui-link.d.ts.map +1 -0
  123. package/types/skra-ui-loading-indicator.d.ts +9 -0
  124. package/types/skra-ui-loading-indicator.d.ts.map +1 -0
  125. package/types/skra-ui-menu.d.ts +116 -0
  126. package/types/skra-ui-menu.d.ts.map +1 -0
  127. package/types/skra-ui-multi-select.d.ts +47 -0
  128. package/types/skra-ui-multi-select.d.ts.map +1 -0
  129. package/types/skra-ui-native-select.d.ts +74 -0
  130. package/types/skra-ui-native-select.d.ts.map +1 -0
  131. package/types/skra-ui-popover.d.ts +57 -0
  132. package/types/skra-ui-popover.d.ts.map +1 -0
  133. package/types/skra-ui-progress.d.ts +41 -0
  134. package/types/skra-ui-progress.d.ts.map +1 -0
  135. package/types/skra-ui-radio.d.ts +54 -0
  136. package/types/skra-ui-radio.d.ts.map +1 -0
  137. package/types/skra-ui-rating-display.d.ts +56 -0
  138. package/types/skra-ui-rating-display.d.ts.map +1 -0
  139. package/types/skra-ui-select.d.ts +43 -0
  140. package/types/skra-ui-select.d.ts.map +1 -0
  141. package/types/skra-ui-skeleton.d.ts +42 -0
  142. package/types/skra-ui-skeleton.d.ts.map +1 -0
  143. package/types/skra-ui-star-rating.d.ts +71 -0
  144. package/types/skra-ui-star-rating.d.ts.map +1 -0
  145. package/types/skra-ui-status-dot.d.ts +62 -0
  146. package/types/skra-ui-status-dot.d.ts.map +1 -0
  147. package/types/skra-ui-switch.d.ts +54 -0
  148. package/types/skra-ui-switch.d.ts.map +1 -0
  149. package/types/skra-ui-tabs.d.ts +191 -0
  150. package/types/skra-ui-tabs.d.ts.map +1 -0
  151. package/types/skra-ui-textarea.d.ts +55 -0
  152. package/types/skra-ui-textarea.d.ts.map +1 -0
  153. package/types/skra-ui-toast.d.ts +140 -0
  154. package/types/skra-ui-toast.d.ts.map +1 -0
  155. package/types/skra-ui-tooltip.d.ts +90 -0
  156. package/types/skra-ui-tooltip.d.ts.map +1 -0
  157. package/types/skra-ui-typography.d.ts +17 -0
  158. package/types/skra-ui-typography.d.ts.map +1 -0
  159. package/types/skra-ui.d.ts +3 -0
  160. package/types/skra-ui.d.ts.map +1 -0
@@ -0,0 +1,196 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal } from '@angular/core';
3
+
4
+ /**
5
+ * SkraAccordion — the WAI-ARIA APG **Accordion** coordinator. A Component on a wrapping
6
+ * element that holds `[skraAccordionItem]` children (each item wraps a
7
+ * `button[skraAccordionHeader]` + a `[skraAccordionPanel]`). It provides
8
+ * `SkraAccordionContext` (the ADR 013 §3.6 non-form Contextual-ID-Sync bus), owns the
9
+ * consumer-facing `[expanded]` / `(expandedChange)` (controlled, ADR 037 — NO internal open
10
+ * state) and the `[exclusive]` policy, and draws the group's outer border + radius.
11
+ *
12
+ * <div skraAccordion [expanded]="open()" (expandedChange)="open.set($event)">
13
+ * <div skraAccordionItem value="general">
14
+ * <h3><button skraAccordionHeader>General</button></h3>
15
+ * <div skraAccordionPanel>…</div>
16
+ * </div>
17
+ * <div skraAccordionItem value="security"> … </div>
18
+ * </div>
19
+ *
20
+ * Open state is consumer-owned: a header click emits `(expandedChange)` with the resolved
21
+ * next set (the `[exclusive]` policy applied here); the visible state updates when the
22
+ * consumer round-trips `[expanded]`. `[exclusive]` is a POLICY flag on an invariant
23
+ * `string[]` value — NOT a value-type switch, so it does not trigger ADR 0046.
24
+ *
25
+ * Full contract: adr/specs/component-accordion-spec.md.
26
+ */
27
+ declare class SkraAccordion {
28
+ /** Consumer-owned set of OPEN item values (ADR 037). `[]` = all closed; order irrelevant. */
29
+ readonly expanded: _angular_core.InputSignal<readonly string[]>;
30
+ /** Policy: `true` → opening one item emits a set that drops the others (single-open). */
31
+ readonly exclusive: _angular_core.InputSignalWithTransform<boolean, unknown>;
32
+ /** Fires ONLY on user toggle — never on a programmatic `[expanded]` change. Carries the resolved next set. */
33
+ readonly expandedChange: _angular_core.OutputEmitterRef<readonly string[]>;
34
+ private readonly ctx;
35
+ private readonly items;
36
+ constructor();
37
+ /** A header was activated. Resolve the next open-set per the exclusive policy and REQUEST it
38
+ * from the consumer via `(expandedChange)` — never mutate open state internally (ADR 037). */
39
+ private toggleItem;
40
+ /** Dev-only nudge: duplicate item values collide on the shared header/panel id base. */
41
+ private warnDuplicateValues;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordion, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAccordion, "[skraAccordion]", ["skraAccordion"], { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; }, { "expandedChange": "expandedChange"; }, ["items"], ["*"], true, never>;
44
+ }
45
+
46
+ /**
47
+ * Per-item DI context provided by `[skraAccordionItem]` (via `useExisting`). It lets
48
+ * `button[skraAccordionHeader]` and `[skraAccordionPanel]` read their shared `value`,
49
+ * derived ids, and open state **without each re-declaring `value`** — the item declares it
50
+ * once. All members are read-only/derived; `toggle()` forwards to the group coordinator
51
+ * (the open/closed set stays consumer-owned, ADR 037). `*Id` are `null` only when an item
52
+ * is used outside a `[skraAccordion]` (standalone misuse → dev-warned).
53
+ */
54
+ declare abstract class SkraAccordionItemContext {
55
+ abstract readonly value: Signal<string>;
56
+ abstract readonly expanded: Signal<boolean>;
57
+ abstract readonly headerId: Signal<string | null>;
58
+ abstract readonly panelId: Signal<string | null>;
59
+ abstract toggle(): void;
60
+ }
61
+
62
+ /**
63
+ * SkraAccordionItem — one item, a Component on the consumer's `<div skraAccordionItem>`
64
+ * (ADR 040, `template: '<ng-content>'`). It declares `[value]` ONCE and provides
65
+ * `SkraAccordionItemContext` (via `useExisting`) so its `button[skraAccordionHeader]` and
66
+ * `[skraAccordionPanel]` read the shared value/ids/open-state without re-declaring it. It
67
+ * owns the per-item top divider (no double borders) and the open-item box (skins may tint it).
68
+ */
69
+ declare class SkraAccordionItem implements SkraAccordionItemContext {
70
+ /** The item key — matched against `[expanded]` and the id base for its header/panel. */
71
+ readonly value: _angular_core.InputSignal<string>;
72
+ private readonly group;
73
+ readonly expanded: _angular_core.Signal<boolean>;
74
+ readonly headerId: _angular_core.Signal<string | null>;
75
+ readonly panelId: _angular_core.Signal<string | null>;
76
+ toggle(): void;
77
+ constructor();
78
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionItem, never>;
79
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAccordionItem, "[skraAccordionItem]", ["skraAccordionItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
80
+ }
81
+
82
+ /**
83
+ * SkraAccordionHeader — the heading wrapper, a Component on the consumer's heading element
84
+ * (`<h2 skraAccordionHeader>` … `<h6 skraAccordionHeader>` — the consumer picks the level for
85
+ * the document outline; ADR 012 attach-to-native). It wraps a `button[skraAccordionTrigger]`
86
+ * (the Radix Header+Trigger split, the way Material/Carbon/Radix all OWN the heading box rather
87
+ * than leaving a projected heading's UA margin to leak).
88
+ *
89
+ * Its ONLY job is to OWN the heading's box: because Forge is now the heading's host, its Emulated
90
+ * `:host` CSS can reset the UA heading margin (`margin: 0`) so the collapsed item hugs the
91
+ * trigger height — impossible to do from the item, which only sees the heading as projected
92
+ * content (ADR 040 cross-encapsulation limit; the same reason `_form-controls.scss` exists, but
93
+ * here solved structurally without a global slice). Carries no ARIA role of its own (the native
94
+ * heading element provides the heading semantics).
95
+ */
96
+ declare class SkraAccordionHeader {
97
+ constructor();
98
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionHeader, never>;
99
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAccordionHeader, "[skraAccordionHeader]", ["skraAccordionHeader"], {}, {}, never, ["*"], true, never>;
100
+ }
101
+
102
+ /**
103
+ * Marker for the leading icon/element slot of `button[skraAccordionTrigger]` (the ADR 003
104
+ * `[skra-start]` convention). Detected via `contentChild` (ADR 020 Smart Slots v2.0) to
105
+ * toggle the start wrapper without emitting an empty DOM node. Lib-local (mirrors the
106
+ * Button/Chip per-lib marker) to avoid a cross-lib marker dependency.
107
+ */
108
+ declare class SkraAccordionStart {
109
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionStart, never>;
110
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraAccordionStart, "[skra-start]", never, {}, {}, never, never, true, never>;
111
+ }
112
+ /**
113
+ * Marker for the optional expand/collapse indicator override of `button[skraAccordionTrigger]`.
114
+ * When present, it replaces the component-rendered default chevron (the ADR 028 slot+fallback
115
+ * idiom — here a presentation override, NOT the loading primitive).
116
+ */
117
+ declare class SkraAccordionIndicator {
118
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionIndicator, never>;
119
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraAccordionIndicator, "[skra-accordion-indicator]", never, {}, {}, never, never, true, never>;
120
+ }
121
+
122
+ /**
123
+ * SkraAccordionTrigger — the disclosure trigger, a Component on the native command host
124
+ * `button[skraAccordionTrigger]` (ADR 012/040: a `<button>` gives Enter/Space→click + focus
125
+ * for free — the same attach-to-native-button precedent as `button[skraButton]` / `skraTab` /
126
+ * `skraMenuItem`). It is wrapped by `[skraAccordionHeader]` on a heading element (Radix
127
+ * Header+Trigger split) so the heading owns the document outline + its own box/margin.
128
+ * `aria-expanded` is the canonical Toggle state (no native HTML "expanded" attribute on a button
129
+ * → ARIA is correct, boundary #9); the open STYLE keys off `:host([aria-expanded="true"])` (Tabs
130
+ * `aria-selected` precedent). value/ids/open-state come from `SkraAccordionItemContext` — the
131
+ * trigger declares no `value`.
132
+ *
133
+ * **Iron boundary:** no `expanded` / `ariaLabel` / `size` / `severity` inputs.
134
+ */
135
+ declare class SkraAccordionTrigger {
136
+ private readonly ctx;
137
+ protected readonly startSlot: _angular_core.Signal<SkraAccordionStart | undefined>;
138
+ protected readonly indicatorSlot: _angular_core.Signal<SkraAccordionIndicator | undefined>;
139
+ protected readonly hasStart: _angular_core.Signal<boolean>;
140
+ protected readonly hasIndicator: _angular_core.Signal<boolean>;
141
+ protected readonly headerId: _angular_core.Signal<string | null>;
142
+ protected readonly panelId: _angular_core.Signal<string | null>;
143
+ protected readonly ariaExpanded: _angular_core.Signal<"true" | "false" | null>;
144
+ protected readonly expandedAttr: _angular_core.Signal<"" | null>;
145
+ protected onClick(): void;
146
+ constructor();
147
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionTrigger, never>;
148
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAccordionTrigger, "button[skraAccordionTrigger]", ["skraAccordionTrigger"], {}, {}, ["startSlot", "indicatorSlot"], ["[skra-start]", "*", "[skra-accordion-indicator]"], true, never>;
149
+ }
150
+
151
+ /**
152
+ * SkraAccordionPanel — the disclosed region, a Component on the consumer's
153
+ * `<div skraAccordionPanel>` (ADR 040). `role="region"`, auto-named by `aria-labelledby`→its
154
+ * header. Collapse/expand is a CSS-only `grid-template-rows: 0fr↔1fr` animation driven by
155
+ * `data-skra-expanded` (ADR 021 — no `[style.*]`); the inner wrapper's `visibility:hidden`
156
+ * at the collapsed end removes content from the a11y tree + Tab order (see accordion-panel.scss).
157
+ * value/ids/open-state come from `SkraAccordionItemContext`.
158
+ */
159
+ declare class SkraAccordionPanel {
160
+ private readonly ctx;
161
+ protected readonly panelId: _angular_core.Signal<string | null>;
162
+ protected readonly headerId: _angular_core.Signal<string | null>;
163
+ protected readonly expandedAttr: _angular_core.Signal<"" | null>;
164
+ constructor();
165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionPanel, never>;
166
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAccordionPanel, "[skraAccordionPanel]", ["skraAccordionPanel"], {}, {}, never, ["*"], true, never>;
167
+ }
168
+
169
+ /**
170
+ * DI Context provided per `[skraAccordion]` instance — the ADR 013 §3.6 **non-form**
171
+ * Contextual-ID-Sync bus (the 2nd consumer of the idiom after `SkraTabsContext`). It
172
+ * carries **IDs + derived, read-only interaction state only** (`expanded` mirrors the
173
+ * consumer's `[expanded]`; `exclusive` mirrors `[exclusive]`). It **never owns value** —
174
+ * the open/closed set stays consumer-owned (ADR 037); a header requests a change through
175
+ * `toggle()`, which the coordinator implements (resolving the exclusive policy) and from
176
+ * which it emits `(expandedChange)`.
177
+ */
178
+ declare class SkraAccordionContext {
179
+ /** Unique per `[skraAccordion]` — the prefix for every header/panel id in this group. */
180
+ private readonly baseId;
181
+ /** Mirror of the consumer's `[expanded]` — the set of OPEN item values (read-only to children). */
182
+ readonly expanded: _angular_core.WritableSignal<readonly string[]>;
183
+ /** Mirror of the consumer's `[exclusive]` policy (read-only to children). */
184
+ readonly exclusive: _angular_core.WritableSignal<boolean>;
185
+ headerId(value: string): string;
186
+ panelId(value: string): string;
187
+ isExpanded(value: string): boolean;
188
+ /** Coordinator-assigned: a header requests a toggle; the coordinator resolves the next
189
+ * open-set (applying the exclusive policy) and emits `(expandedChange)` — never mutated here. */
190
+ toggle: (value: string) => void;
191
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAccordionContext, never>;
192
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SkraAccordionContext>;
193
+ }
194
+
195
+ export { SkraAccordion, SkraAccordionContext, SkraAccordionHeader, SkraAccordionIndicator, SkraAccordionItem, SkraAccordionItemContext, SkraAccordionPanel, SkraAccordionStart, SkraAccordionTrigger };
196
+ //# sourceMappingURL=skra-ui-accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-accordion.d.ts","sources":["../../../../libs/ui/accordion/src/lib/accordion/accordion.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-item-context.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-item.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-header.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion.directives.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-trigger.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-panel.ts","../../../../libs/ui/accordion/src/lib/accordion/accordion-context.ts"],"mappings":";;;AAiBA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH,cAUa,aAAa;;uBAEP,aAAA,CAAA,WAAA;;wBAEC,aAAA,CAAA,wBAAA;;6BAEK,aAAA,CAAA,gBAAA;AAEvB;AACA;;AAiBA;AAC8F;AAC9F;;AAaA;oDAzCW,aAAa;sDAAb,aAAa;AAqDzB;;ACrGD;;;;;;;AAOG;AACH,uBAAsB,wBAAwB;6BACnB,MAAM;gCACH,MAAM;gCACN,MAAM;+BACP,MAAM;;AAElC;;ACFD;;;;;;AAMG;AACH,cAea,iBAAkB,YAAW,wBAAwB;;oBAElD,aAAA,CAAA,WAAA;AAEd;uBAEiB,aAAA,CAAA,MAAA;uBAGA,aAAA,CAAA,MAAA;sBAGD,aAAA,CAAA,MAAA;AAEhB;;oDAdW,iBAAiB;sDAAjB,iBAAiB;AA4B7B;;ACtDD;;;;;;;;;;;;;AAaG;AACH,cASa,mBAAmB;;oDAAnB,mBAAmB;sDAAnB,mBAAmB;AAc/B;;AC7CD;;;;;AAKG;AACH,cAIa,kBAAkB;oDAAlB,kBAAkB;sDAAlB,kBAAkB;AAAG;AAElC;;;;AAIG;AACH,cAIa,sBAAsB;oDAAtB,sBAAsB;sDAAtB,sBAAsB;AAAG;;ACNtC;;;;;;;;;;;;AAYG;AACH,cAmBa,oBAAoB;AAC/B;AAGA,kCAA4B,aAAA,CAAA,MAAA,CAAA,kBAAA;AAC5B,sCAAgC,aAAA,CAAA,MAAA,CAAA,sBAAA;AAChC,iCAA2B,aAAA,CAAA,MAAA;AAC3B,qCAA+B,aAAA,CAAA,MAAA;AAG/B,iCAA2B,aAAA,CAAA,MAAA;AAC3B,gCAA0B,aAAA,CAAA,MAAA;AAC1B,qCAA+B,aAAA,CAAA,MAAA;AAG/B,qCAA+B,aAAA,CAAA,MAAA;;;oDAfpB,oBAAoB;sDAApB,oBAAoB;AAiChC;;ACtED;;;;;;;AAOG;AACH,cAgBa,kBAAkB;AAC7B;AAEA,gCAA0B,aAAA,CAAA,MAAA;AAC1B,iCAA2B,aAAA,CAAA,MAAA;AAC3B,qCAA+B,aAAA,CAAA,MAAA;;oDALpB,kBAAkB;sDAAlB,kBAAkB;AAmB9B;;AC1CD;;;;;;;;AAQG;AACH,cACa,oBAAoB;;AAE/B;;uBAGiB,aAAA,CAAA,cAAA;;wBAEC,aAAA,CAAA,cAAA;AAElB;AAGA;AAGA;AAIA;AACiG;AACjG;oDArBW,oBAAoB;wDAApB,oBAAoB;AAsBhC;;;;","names":[]}
@@ -0,0 +1,81 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Marker directive for the leading icon slot of `<skra-alert>`.
5
+ * Detected via `contentChild` (ADR 020 Smart Slots v2.0) to toggle the icon
6
+ * wrapper without emitting an empty DOM node. Feedback-local (not the button
7
+ * lib's `[skra-start]`) to avoid a cross-lib marker dependency.
8
+ */
9
+ declare class SkraAlertIcon {
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAlertIcon, never>;
11
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraAlertIcon, "[skra-alert-icon]", never, {}, {}, never, never, true, never>;
12
+ }
13
+ /**
14
+ * Marker directive for the OPTIONAL title slot of `<skra-alert>` — a short, bold
15
+ * heading rendered above the message. Detected via `contentChild` (ADR 020) to
16
+ * toggle the title row. It is styled bold via a typography role but is NOT a
17
+ * semantic heading (`<h*>`): an alert title is not part of the document outline,
18
+ * and a heading would pollute screen-reader heading navigation (especially for a
19
+ * dynamically-injected alert). The live region announces title + body atomically.
20
+ */
21
+ declare class SkraAlertTitle {
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAlertTitle, never>;
23
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraAlertTitle, "[skra-alert-title]", never, {}, {}, never, never, true, never>;
24
+ }
25
+
26
+ /**
27
+ * AlertIntent — semantic feedback meaning (ADR 035 §3.1, downward subset).
28
+ * Excludes the action intents `primary`/`secondary` (meaningless for a status
29
+ * message). Closed enum; extension requires an ADR 035 amendment.
30
+ */
31
+ type AlertIntent = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
32
+ /**
33
+ * AlertEmphasis — visual loudness within the chosen intent (ADR 035 §3.1, subset).
34
+ * `high` = filled banner, `medium` = soft/tinted. `low` deferred.
35
+ */
36
+ type AlertEmphasis = 'high' | 'medium';
37
+ /**
38
+ * AlertLive — screen-reader announcement politeness (ADR 0052). Maps to the
39
+ * implicit-live ARIA role; politeness is a property of USE (static vs injected),
40
+ * NOT of intent.
41
+ */
42
+ type AlertLive = 'off' | 'polite' | 'assertive';
43
+ /**
44
+ * `<skra-alert>` — in-content, page/section-level feedback message (Feedback/Status
45
+ * family, ADR 0052). Serves BOTH a static notification (`live="off"`, present at load)
46
+ * and a dynamically-injected alert (`live="polite"|"assertive"`, announced on insertion).
47
+ *
48
+ * SRP-distinct from `<skra-error>` (form-validation-bound, `SkraFieldContext`, error-only).
49
+ *
50
+ * Announcement (ADR 0052): the `live` input maps to the implicit-live ARIA role
51
+ * (`status`/`alert`) — which carries `aria-live` + `aria-atomic` implicitly. NO explicit
52
+ * `aria-live` is set (that would be redundant/contradictory; the `skra-error` pattern).
53
+ *
54
+ * Dismissal: `dismissible` renders a built-in close control that emits `(dismissed)`.
55
+ * Forge does NOT remove itself from the DOM — the consumer owns removal via `@if`
56
+ * (agnostic-atom doctrine). The close control's accessible name comes from a projected
57
+ * `[skra-alert-close-label]` (sr-only; ADR 033 Path 2) — the "×" glyph is `aria-hidden`.
58
+ */
59
+ declare class SkraAlert {
60
+ readonly intent: _angular_core.InputSignal<AlertIntent>;
61
+ readonly emphasis: _angular_core.InputSignal<AlertEmphasis>;
62
+ readonly live: _angular_core.InputSignal<AlertLive>;
63
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
64
+ readonly dismissed: _angular_core.OutputEmitterRef<void>;
65
+ readonly iconSlot: _angular_core.Signal<SkraAlertIcon | undefined>;
66
+ readonly hasIcon: _angular_core.Signal<boolean>;
67
+ readonly titleSlot: _angular_core.Signal<SkraAlertTitle | undefined>;
68
+ readonly hasTitle: _angular_core.Signal<boolean>;
69
+ /**
70
+ * Map `live` politeness to the implicit-live ARIA role (ADR 0052). The role
71
+ * carries `aria-live` + `aria-atomic` implicitly; `off` → no live region.
72
+ */
73
+ readonly liveRole: _angular_core.Signal<"alert" | "status" | null>;
74
+ protected onDismiss(): void;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAlert, never>;
76
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAlert, "skra-alert", never, { "intent": { "alias": "intent"; "required": false; "isSignal": true; }; "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, ["iconSlot", "titleSlot"], ["[skra-alert-icon]", "[skra-alert-title]", "*", "[skra-alert-close-label]"], true, never>;
77
+ }
78
+
79
+ export { SkraAlert, SkraAlertIcon, SkraAlertTitle };
80
+ export type { AlertEmphasis, AlertIntent, AlertLive };
81
+ //# sourceMappingURL=skra-ui-alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-alert.d.ts","sources":["../../../../libs/ui/alert/src/lib/alert.directives.ts","../../../../libs/ui/alert/src/lib/alert/alert.ts"],"mappings":";;AAEA;;;;;AAKG;AACH,cAIa,aAAa;oDAAb,aAAa;sDAAb,aAAa;AAAG;AAE7B;;;;;;;AAOG;AACH,cAIa,cAAc;oDAAd,cAAc;sDAAd,cAAc;AAAG;;ACd9B;;;;AAIG;AACG,KAAM,WAAW;AAEvB;;;AAGG;KACS,aAAa;AAEzB;;;;AAIG;AACG,KAAM,SAAS;AAErB;;;;;;;;;;;;;;;AAeG;AACH,cAqBa,SAAS;qBAEL,aAAA,CAAA,WAAA,CAAA,WAAA;uBACE,aAAA,CAAA,WAAA,CAAA,aAAA;mBAGJ,aAAA,CAAA,WAAA,CAAA,SAAA;0BAGO,aAAA,CAAA,wBAAA;wBACF,aAAA,CAAA,gBAAA;uBAGD,aAAA,CAAA,MAAA,CAAA,aAAA;sBACD,aAAA,CAAA,MAAA;wBAEE,aAAA,CAAA,MAAA,CAAA,cAAA;uBACD,aAAA,CAAA,MAAA;AAEjB;;;AAGG;uBACc,aAAA,CAAA,MAAA;;oDAvBN,SAAS;sDAAT,SAAS;AAqCrB;;;;","names":[]}
@@ -0,0 +1,71 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * AvatarSize — the Variant Surface Size axis (ADR 035 §3.1, downward subset `sm|md|lg`).
5
+ * `xs`/`xl` are reserved (ADR 035 §3.2) and NOT in MVP — adding them later is purely additive
6
+ * (new enum values + token rows, zero migration). Closed enum; extension requires an ADR 035
7
+ * amendment. See `adr/specs/component-avatar-spec.md` OQ 1.
8
+ */
9
+ type AvatarSize = 'sm' | 'md' | 'lg';
10
+ /**
11
+ * `<skra-avatar>` — a compact graphical representation of a person/entity: a photo with a
12
+ * graceful fallback to projected **initials** or an **icon** when the image is absent or fails
13
+ * to load. First resident of `libs/ui/data-display` (the identity/media-display family). See
14
+ * `adr/specs/component-avatar-spec.md`.
15
+ *
16
+ * **Element, not a decorated native (ADR 012):** there is no native `<avatar>`, and a bare
17
+ * `<img>` has nowhere to render the text/icon fallback — so Forge owns a container that
18
+ * conditionally renders an internal `<img>` OR the projected fallback. NOT a Web Component
19
+ * (ADR 000).
20
+ *
21
+ * **Image + fallback (the defining value-add):** Forge owns the internal `<img>` (rendered from
22
+ * the `src` *data* input — value not look, ADR 037, agnostic) so it can observe `(error)`/`(load)`
23
+ * and swap to the projected fallback. The swap is internal presentational logic, NOT an ADR 028
24
+ * `loading` operation (no `aria-busy`, no `[skraLoadingIndicator]`). SSR-safe: pure signals +
25
+ * template; on the server the `<img>` renders, the client swaps on error.
26
+ *
27
+ * **Non-interactive (Badge precedent):** no focusable node, no role, no keyboard, no outputs →
28
+ * State Surface all-N/A. A clickable avatar is `button[skraButton]`/`a[skraLink]` wrapping
29
+ * `<skra-avatar>` (composition), not a variant.
30
+ *
31
+ * **Accessible name (ADR 033 Path 3 — graphic host, the SkraIcon/ADR 034 §3.4 contract):** the
32
+ * inner content is **always decorative** — the internal `<img>` is `alt=""` and the fallback
33
+ * wrapper is `aria-hidden` — and the host carries **NO default ARIA**. The consumer declares
34
+ * semantics explicitly, exactly as for `<skra-icon>`:
35
+ * - decorative (Mode A, the ~90% case — avatar beside a visible name) → `aria-hidden="true"`;
36
+ * - meaningful (Mode B — standalone) → **`role="img"` + `aria-label`/`aria-labelledby` TOGETHER**.
37
+ * `role="img"` is REQUIRED: `aria-label` on the roleless custom-element host is ARIA-prohibited
38
+ * (axe `aria-prohibited-attr`) and conveys no name. Forge does NOT auto-set the role (parity
39
+ * with SkraIcon — host owns no default ARIA).
40
+ * NO `ariaLabel` input (ADR 033 boundary #8), NO `name`/`alt` input (no initials derivation —
41
+ * agnostic; the name survives image failure by living on the host, not on the swapped-out img).
42
+ *
43
+ * **Look is skin-owned:** circle-vs-square is the `radius` comp token (a skin with
44
+ * `sys.radius.full: 0` — e.g. brutal — ships square avatars automatically). NO `shape`/`color`/
45
+ * `variant` look-inputs (skin philosophy). NO `intent`/`emphasis` (a neutral identity graphic —
46
+ * status colour is the sibling StatusDot's job, SRP).
47
+ */
48
+ declare class SkraAvatar {
49
+ /**
50
+ * Image URL — a data input (ADR 037; agnostic). Absent or failed-to-load → the projected
51
+ * fallback (initials / icon) shows.
52
+ */
53
+ readonly src: _angular_core.InputSignal<string | undefined>;
54
+ /** Variant Surface Size axis (ADR 035) — the square box dimension + initials scale. */
55
+ readonly size: _angular_core.InputSignal<AvatarSize>;
56
+ /**
57
+ * The `src` value that failed to load, if any. Keyed by URL (not a boolean) so that changing
58
+ * `src` to a new URL re-attempts the image instead of staying on the fallback.
59
+ */
60
+ private readonly failedSrc;
61
+ /** Whether the internal `<img>` should render (a `src` is set and has not failed). */
62
+ readonly showImage: _angular_core.Signal<boolean>;
63
+ /** The `<img>` failed to load → fall back to the projected content. */
64
+ protected onImageError(): void;
65
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraAvatar, never>;
66
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraAvatar, "skra-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
67
+ }
68
+
69
+ export { SkraAvatar };
70
+ export type { AvatarSize };
71
+ //# sourceMappingURL=skra-ui-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-avatar.d.ts","sources":["../../../../libs/ui/avatar/src/lib/avatar/avatar.ts"],"mappings":";;AASA;;;;;AAKG;AACG,KAAM,UAAU;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACH,cAea,UAAU;AACrB;;;AAGG;kBACS,aAAA,CAAA,WAAA;;mBAGC,aAAA,CAAA,WAAA,CAAA,UAAA;AAEb;;;AAGG;AACH;;wBAGkB,aAAA,CAAA,MAAA;;;oDAjBP,UAAU;sDAAV,UAAU;AA0BtB;;;;","names":[]}
@@ -0,0 +1,73 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Marker directive for the OPTIONAL leading icon/dot slot of `<skra-badge>`.
5
+ * Detected via `contentChild` (ADR 020 Smart Slots v2.0) to toggle the icon
6
+ * wrapper without emitting an empty DOM node. Feedback-local (not the button
7
+ * lib's `[skra-start]`) to avoid a cross-lib marker dependency, mirroring
8
+ * `[skra-alert-icon]`.
9
+ *
10
+ * The icon is decorative — the consumer sets `aria-hidden` on its content (ADR
11
+ * 034). The badge's visible text label still carries the meaning (WCAG 1.4.1):
12
+ * a leading dot enables the `● Active` pattern but never substitutes for the word.
13
+ */
14
+ declare class SkraBadgeIcon {
15
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraBadgeIcon, never>;
16
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraBadgeIcon, "[skra-badge-icon]", never, {}, {}, never, never, true, never>;
17
+ }
18
+
19
+ /**
20
+ * BadgeIntent — semantic feedback meaning (ADR 035 §3.1, downward subset).
21
+ * Excludes the action intents `primary`/`secondary` (meaningless for a status
22
+ * indicator). Closed enum; extension requires an ADR 035 amendment.
23
+ */
24
+ type BadgeIntent = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
25
+ /**
26
+ * BadgeEmphasis — visual loudness within the chosen intent (ADR 035 §3.1, subset).
27
+ * `high` = filled chip, `medium` = soft/tinted lozenge. `low` deferred.
28
+ */
29
+ type BadgeEmphasis = 'high' | 'medium';
30
+ /**
31
+ * BadgeLive — screen-reader announcement politeness (ADR 0052). Maps to the
32
+ * implicit-live ARIA role; politeness is a property of USE (static status vs a
33
+ * live notification count), NOT of intent. Default `off` (the static-status case).
34
+ */
35
+ type BadgeLive = 'off' | 'polite' | 'assertive';
36
+ /**
37
+ * `<skra-badge>` — a small, inline, non-interactive status indicator (Feedback/Status
38
+ * family, ADR 0052). Carries semantic importance (intent) as a short label or count —
39
+ * e.g. a status lozenge (`Active`/`Failed`) in a table, or a notification count.
40
+ *
41
+ * SRP-distinct from `<skra-counter>` (form value-bound character counter, `libs/ui/forms`)
42
+ * and from the closable `Tag/Chip` (interactive/dismissible — a different SRP, Wave 2).
43
+ *
44
+ * Non-interactive: no focusable node, no widget role, no keyboard, no outputs. The host is
45
+ * a presentational surface; severity is a Variant Surface axis (ADR 035), not a State (ADR 027).
46
+ *
47
+ * Announcement (ADR 0052): the `live` input maps to the implicit-live ARIA role
48
+ * (`status`/`alert`) — which carries `aria-live` + `aria-atomic` implicitly. NO explicit
49
+ * `aria-live` is set (that would be redundant; the `skra-alert`/`skra-error` pattern).
50
+ * When `live ≠ off`, the content must be self-describing (`3 unread`, not a bare `3`) — the
51
+ * role announces the whole badge atomically.
52
+ *
53
+ * Positioning (ADR 022): the badge owns no outer position. Overlaying it on a host's corner
54
+ * (a notification badge) is a consumer composition, not an atom responsibility.
55
+ */
56
+ declare class SkraBadge {
57
+ readonly intent: _angular_core.InputSignal<BadgeIntent>;
58
+ readonly emphasis: _angular_core.InputSignal<BadgeEmphasis>;
59
+ readonly live: _angular_core.InputSignal<BadgeLive>;
60
+ readonly iconSlot: _angular_core.Signal<SkraBadgeIcon | undefined>;
61
+ readonly hasIcon: _angular_core.Signal<boolean>;
62
+ /**
63
+ * Map `live` politeness to the implicit-live ARIA role (ADR 0052). The role
64
+ * carries `aria-live` + `aria-atomic` implicitly; `off` → no live region.
65
+ */
66
+ readonly liveRole: _angular_core.Signal<"alert" | "status" | null>;
67
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraBadge, never>;
68
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraBadge, "skra-badge", never, { "intent": { "alias": "intent"; "required": false; "isSignal": true; }; "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; }, {}, ["iconSlot"], ["[skra-badge-icon]", "*"], true, never>;
69
+ }
70
+
71
+ export { SkraBadge, SkraBadgeIcon };
72
+ export type { BadgeEmphasis, BadgeIntent, BadgeLive };
73
+ //# sourceMappingURL=skra-ui-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-badge.d.ts","sources":["../../../../libs/ui/badge/src/lib/badge.directives.ts","../../../../libs/ui/badge/src/lib/badge/badge.ts"],"mappings":";;AAEA;;;;;;;;;;AAUG;AACH,cAIa,aAAa;oDAAb,aAAa;sDAAb,aAAa;AAAG;;ACP7B;;;;AAIG;AACG,KAAM,WAAW;AAEvB;;;AAGG;KACS,aAAa;AAEzB;;;;AAIG;AACG,KAAM,SAAS;AAErB;;;;;;;;;;;;;;;;;;;AAmBG;AACH,cAoBa,SAAS;qBAEL,aAAA,CAAA,WAAA,CAAA,WAAA;uBACE,aAAA,CAAA,WAAA,CAAA,aAAA;mBAGJ,aAAA,CAAA,WAAA,CAAA,SAAA;uBAGI,aAAA,CAAA,MAAA,CAAA,aAAA;sBACD,aAAA,CAAA,MAAA;AAEhB;;;AAGG;uBACc,aAAA,CAAA,MAAA;oDAhBN,SAAS;sDAAT,SAAS;AA0BrB;;;;","names":[]}
@@ -0,0 +1,45 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { SkraLoadingIndicator } from '@skra/ui/loading-indicator';
3
+
4
+ declare class SkraButtonStart {
5
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraButtonStart, never>;
6
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraButtonStart, "[skra-start]", never, {}, {}, never, never, true, never>;
7
+ }
8
+ declare class SkraButtonEnd {
9
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraButtonEnd, never>;
10
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraButtonEnd, "[skra-end]", never, {}, {}, never, never, true, never>;
11
+ }
12
+
13
+ /**
14
+ * ButtonIntent — semantic role of the action (ADR 035 §3.1).
15
+ * Closed enum; extension requires amendment to ADR 035.
16
+ */
17
+ type ButtonIntent = 'neutral' | 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'danger';
18
+ /**
19
+ * ButtonEmphasis — visual loudness within the chosen intent (ADR 035 §3.1).
20
+ * Skin maps each level to its own treatment (filled / outlined / ghost / other).
21
+ */
22
+ type ButtonEmphasis = 'high' | 'medium' | 'low';
23
+ /**
24
+ * ButtonSize — per-instance scale relative to typography and spacing (ADR 035 §3.1).
25
+ * Distinct from Density (ADR 016 §3.5), which is subtree-runtime.
26
+ */
27
+ type ButtonSize = 'sm' | 'md' | 'lg';
28
+ declare class SkraButton {
29
+ readonly intent: _angular_core.InputSignal<ButtonIntent>;
30
+ readonly emphasis: _angular_core.InputSignal<ButtonEmphasis>;
31
+ readonly size: _angular_core.InputSignal<ButtonSize>;
32
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
33
+ readonly startSlot: _angular_core.Signal<SkraButtonStart | undefined>;
34
+ readonly endSlot: _angular_core.Signal<SkraButtonEnd | undefined>;
35
+ readonly hasStart: _angular_core.Signal<boolean>;
36
+ readonly hasEnd: _angular_core.Signal<boolean>;
37
+ readonly loadingIndicatorSlot: _angular_core.Signal<SkraLoadingIndicator | undefined>;
38
+ readonly hasLoadingIndicator: _angular_core.Signal<boolean>;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraButton, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraButton, "button[skraButton]", never, { "intent": { "alias": "intent"; "required": false; "isSignal": true; }; "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, ["startSlot", "endSlot", "loadingIndicatorSlot"], ["[skra-start]", "*", "[skra-end]", "[skraLoadingIndicator]"], true, never>;
41
+ }
42
+
43
+ export { SkraButton, SkraButtonEnd, SkraButtonStart };
44
+ export type { ButtonEmphasis, ButtonIntent, ButtonSize };
45
+ //# sourceMappingURL=skra-ui-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-button.d.ts","sources":["../../../../libs/ui/button/src/lib/button.directives.ts","../../../../libs/ui/button/src/lib/button/button.ts"],"mappings":";;;AAEA,cAIa,eAAe;oDAAf,eAAe;sDAAf,eAAe;AAAG;AAE/B,cAIa,aAAa;oDAAb,aAAa;sDAAb,aAAa;AAAG;;ACA7B;;;AAGG;KACS,YAAY;AASxB;;;AAGG;AACG,KAAM,cAAc;AAE1B;;;AAGG;AACG,KAAM,UAAU;AAEtB,cAsBa,UAAU;qBAEN,aAAA,CAAA,WAAA,CAAA,YAAA;uBACE,aAAA,CAAA,WAAA,CAAA,cAAA;mBACJ,aAAA,CAAA,WAAA,CAAA,UAAA;sBAGG,aAAA,CAAA,wBAAA;wBAGE,aAAA,CAAA,MAAA,CAAA,eAAA;sBACF,aAAA,CAAA,MAAA,CAAA,aAAA;uBAEC,aAAA,CAAA,MAAA;qBACF,aAAA,CAAA,MAAA;mCAGc,aAAA,CAAA,MAAA,CAAA,oBAAA;kCACD,aAAA,CAAA,MAAA;oDAlBjB,UAAU;sDAAV,UAAU;AAmBtB;;;;","names":[]}
@@ -0,0 +1,52 @@
1
+ import * as i0 from '@angular/core';
2
+ import { SkraFieldContext } from '@skra/ui/field';
3
+
4
+ /**
5
+ * Wires a native `<input type="checkbox">` to SkraFieldContext when inside
6
+ * `<skra-field>` (ADR 013), or stands alone with no cascade. Per ADR 039/040,
7
+ * Forge ships no `<skra-checkbox>` wrapper — this is a Component-on-the-native-
8
+ * host (`<input>` is void → `template: ''`, ADR 040 §2) carrying its own
9
+ * `checkbox.scss` via Emulated encapsulation. Value channel stays consumer-owned
10
+ * per ADR 037: bind
11
+ * via native `[checked]` + `(change)`, Reactive Forms `formControlName`,
12
+ * Signal Forms `[formField]`, or `[(ngModel)]` — all work orthogonally with
13
+ * this directive (which only handles a11y + skin context).
14
+ *
15
+ * <!-- inside Field -->
16
+ * <skra-field>
17
+ * <input type="checkbox" skraCheckbox [checked]="x()" (change)="x.set($any($event.target).checked)" />
18
+ * <label skraLabelFor>Accept ToS</label>
19
+ * </skra-field>
20
+ *
21
+ * <!-- standalone (label wraps input — no id/for needed) -->
22
+ * <label>
23
+ * <input type="checkbox" skraCheckbox [checked]="x()" (change)="x.set($any($event.target).checked)" />
24
+ * Accept ToS
25
+ * </label>
26
+ *
27
+ * Toggle state (`checked`, `indeterminate`) is NOT reflected as `data-skra-*`
28
+ * — that would require Forge to observe native state, violating ADR 037. Slice
29
+ * CSS targets native `:checked` and `:indeterminate` pseudo-classes directly;
30
+ * browsers handle `aria-checked` natively (including `"mixed"` for indeterminate).
31
+ */
32
+ declare class SkraCheckbox {
33
+ private readonly el;
34
+ readonly context: SkraFieldContext | null;
35
+ readonly indeterminate: i0.InputSignalWithTransform<boolean, unknown>;
36
+ constructor();
37
+ /**
38
+ * Readonly enforcement — native checkbox has no `[readonly]`, so without this
39
+ * the `aria-readonly` we announce would be a lie (the user could still toggle
40
+ * it). `preventDefault` on `click` blocks the toggle from both pointer and
41
+ * Space/Enter (keyboard activation dispatches a click on form controls).
42
+ * Mirrors the `<select skraSelect>` / `skraRadio` readonly guards.
43
+ */
44
+ protected blockWhenReadonly(event: Event): void;
45
+ /** Block keyboard activation (Space) when readonly; let `Tab` through. */
46
+ protected blockKeyWhenReadonly(event: KeyboardEvent): void;
47
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkraCheckbox, never>;
48
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkraCheckbox, "input[type=\"checkbox\"][skraCheckbox]", never, { "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
49
+ }
50
+
51
+ export { SkraCheckbox };
52
+ //# sourceMappingURL=skra-ui-checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-checkbox.d.ts","sources":["../../../../libs/ui/checkbox/src/lib/checkbox/checkbox.ts"],"mappings":";;;AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACH,cAqBa,YAAY;AACvB;sBACgB,gBAAA;4BAKMA,EAAA,CAAA,wBAAA;;AAsBtB;;;;;;AAMG;AACH,uCAAmC,KAAK;;AAKxC,0CAAsC,aAAa;yCAzCxC,YAAY;2CAAZ,YAAY;AA8CxB;;;;","names":["_angular_core"]}
@@ -0,0 +1,60 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Marker directive for the leading icon/dot/avatar slot of `<skra-chip>`.
5
+ * Detected via `contentChild` (ADR 020 Smart Slots v2.0) to toggle the icon
6
+ * wrapper without emitting an empty DOM node. Feedback-local (mirrors
7
+ * `SkraBadgeIcon`/`SkraAlertIcon`) to avoid a cross-lib marker dependency.
8
+ */
9
+ declare class SkraChipIcon {
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraChipIcon, never>;
11
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkraChipIcon, "[skra-chip-icon]", never, {}, {}, never, never, true, never>;
12
+ }
13
+
14
+ /**
15
+ * ChipIntent — semantic meaning (ADR 035 §3.1, downward subset). Excludes the
16
+ * action intents `primary`/`secondary` (meaningless for a status/category pill).
17
+ * Closed enum; extension requires an ADR 035 amendment.
18
+ */
19
+ type ChipIntent = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
20
+ /**
21
+ * ChipEmphasis — visual loudness within the chosen intent (ADR 035 §3.1, subset).
22
+ * `high` = filled pill, `medium` = soft/tinted. `low` deferred.
23
+ */
24
+ type ChipEmphasis = 'high' | 'medium';
25
+ /**
26
+ * `<skra-chip>` — a small, inline, **removable** labelled pill (Feedback/Status
27
+ * family, Wave 2): a selected multi-select value, an applied filter, an input tag.
28
+ * The host is a non-interactive presentational pill (the label is plain text, no
29
+ * host role/focus); it contains exactly ONE interactive sub-control — the built-in
30
+ * remove `<button>` (the Alert dismiss precedent).
31
+ *
32
+ * SRP-distinct from `<skra-badge>` (a NON-removable status pill): the remove
33
+ * control is intrinsic to Chip — there is no `removable` flag, because a chip
34
+ * without it would be a Badge. A SELECTABLE/filter chip (a toggle) is a SEPARATE
35
+ * deferred atom (ARCHITECTURE_BACKLOG watch-list), NOT a `selectable` variant —
36
+ * one atom carrying both interaction models is an SRP smell.
37
+ *
38
+ * No `live` axis (unlike Badge/Alert): a chip is an input/selection element, not a
39
+ * status announcer; add/remove announcements are the consumer's own `aria-live`.
40
+ *
41
+ * Removal (ADR 037): the remove control fires `(removed)`. Forge does NOT remove
42
+ * itself from the DOM — the consumer owns removal (splice the bound array / `@if`).
43
+ * The remove control's accessible name comes from a projected
44
+ * `[skra-chip-remove-label]` (sr-only; ADR 033 Path 2) — the "×" glyph is `aria-hidden`.
45
+ */
46
+ declare class SkraChip {
47
+ readonly intent: _angular_core.InputSignal<ChipIntent>;
48
+ readonly emphasis: _angular_core.InputSignal<ChipEmphasis>;
49
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
50
+ readonly removed: _angular_core.OutputEmitterRef<void>;
51
+ readonly iconSlot: _angular_core.Signal<SkraChipIcon | undefined>;
52
+ readonly hasIcon: _angular_core.Signal<boolean>;
53
+ protected onRemove(): void;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkraChip, never>;
55
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkraChip, "skra-chip", never, { "intent": { "alias": "intent"; "required": false; "isSignal": true; }; "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, ["iconSlot"], ["[skra-chip-icon]", "*", "[skra-chip-remove-label]"], true, never>;
56
+ }
57
+
58
+ export { SkraChip, SkraChipIcon };
59
+ export type { ChipEmphasis, ChipIntent };
60
+ //# sourceMappingURL=skra-ui-chip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skra-ui-chip.d.ts","sources":["../../../../libs/ui/chip/src/lib/chip.directives.ts","../../../../libs/ui/chip/src/lib/chip/chip.ts"],"mappings":";;AAEA;;;;;AAKG;AACH,cAIa,YAAY;oDAAZ,YAAY;sDAAZ,YAAY;AAAG;;ACA5B;;;;AAIG;AACG,KAAM,UAAU;AAEtB;;;AAGG;KACS,YAAY;AAExB;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,cAsBa,QAAQ;qBAEJ,aAAA,CAAA,WAAA,CAAA,UAAA;uBACE,aAAA,CAAA,WAAA,CAAA,YAAA;uBAGA,aAAA,CAAA,wBAAA;sBAGD,aAAA,CAAA,gBAAA;uBAGC,aAAA,CAAA,MAAA,CAAA,YAAA;sBACD,aAAA,CAAA,MAAA;;oDAbL,QAAQ;sDAAR,QAAQ;AAmBpB;;;;","names":[]}