@frame-kit/ui-ng 0.1.11 → 0.1.13

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.
@@ -92,6 +92,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
92
92
  }]
93
93
  }] });
94
94
 
95
+ const FK_ACCORDION_TRAILING = new InjectionToken('FK_ACCORDION_TRAILING');
96
+ /**
97
+ * Projects content into the accordion trigger's trailing region, between the
98
+ * optional leading text and the chevron — a right-aligned slot for a badge,
99
+ * count, or status pill.
100
+ */
101
+ class FkAccordionTrailingDirective {
102
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FkAccordionTrailingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
103
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: FkAccordionTrailingDirective, isStandalone: true, selector: "[fkAccordionTrailing]", providers: [
104
+ {
105
+ provide: FK_ACCORDION_TRAILING,
106
+ useExisting: FkAccordionTrailingDirective,
107
+ },
108
+ ], ngImport: i0 });
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FkAccordionTrailingDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[fkAccordionTrailing]',
114
+ standalone: true,
115
+ providers: [
116
+ {
117
+ provide: FK_ACCORDION_TRAILING,
118
+ useExisting: FkAccordionTrailingDirective,
119
+ },
120
+ ],
121
+ }]
122
+ }] });
123
+
95
124
  let uid = 0;
96
125
  class AccordionComponent {
97
126
  group = inject(AccordionGroupCoordinator, {
@@ -114,6 +143,7 @@ class AccordionComponent {
114
143
  // ===== CONTENT CHILDREN =====
115
144
  leadingIconRef = contentChild(FK_ACCORDION_LEADING_ICON, ...(ngDevMode ? [{ debugName: "leadingIconRef" }] : /* istanbul ignore next */ []));
116
145
  chevronRef = contentChild(FK_ACCORDION_CHEVRON, ...(ngDevMode ? [{ debugName: "chevronRef" }] : /* istanbul ignore next */ []));
146
+ trailingRef = contentChild(FK_ACCORDION_TRAILING, ...(ngDevMode ? [{ debugName: "trailingRef" }] : /* istanbul ignore next */ []));
117
147
  // ===== OUTPUTS =====
118
148
  /** Fires whenever the panel opens or closes, emitting the new expanded state. */
119
149
  expandedChange = output();
@@ -175,12 +205,12 @@ class AccordionComponent {
175
205
  this.expandedChange.emit(expanded);
176
206
  }
177
207
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
178
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AccordionComponent, isStandalone: true, selector: "fk-accordion", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, leadingText: { classPropertyName: "leadingText", publicName: "leadingText", 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 }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "leadingIconRef", first: true, predicate: FK_ACCORDION_LEADING_ICON, descendants: true, isSignal: true }, { propertyName: "chevronRef", first: true, predicate: FK_ACCORDION_CHEVRON, descendants: true, isSignal: true }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n", styles: [":host{display:block;color:var(--fk-accordion-color, var(--fk-color-text, #121926));border:var(--fk-accordion-border-width, 1px) solid var(--fk-accordion-border-color, var(--fk-color-border, #d9e2ee));border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem))}.fk-accordion__header{display:flex;align-items:center;width:100%;padding:var(--fk-accordion-header-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-header-padding-inline, var(--fk-rhythm-4, 1rem));background:var(--fk-accordion-header-bg, transparent);border:none;border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem));font-family:inherit;color:inherit;text-align:left;cursor:pointer}.fk-accordion__header:hover:not(:disabled){background:var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa))}.fk-accordion__header:focus-visible{outline:none;box-shadow:var(--fk-accordion-focus-ring, var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, .18)))}.fk-accordion__header:disabled{cursor:not-allowed;opacity:.6}.fk-accordion__leading-icon{display:inline-flex;align-items:center;flex:0 0 auto;margin-right:var(--fk-accordion-leading-icon-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__text{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.fk-accordion__title{font-size:var(--fk-accordion-title-font-size, var(--fk-typography-body-font-size, .9375rem));font-weight:var(--fk-accordion-title-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-title-color, var(--fk-color-text, #121926));line-height:1.4}.fk-accordion__description{margin-top:var(--fk-accordion-description-gap, var(--fk-rhythm-1, .25rem));font-size:var(--fk-accordion-description-font-size, var(--fk-typography-small-font-size, .8125rem));color:var(--fk-accordion-description-color, var(--fk-color-muted, #64748b));line-height:1.5}.fk-accordion__trailing{display:inline-flex;align-items:center;flex:0 0 auto;margin-left:var(--fk-accordion-trailing-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__leading-text{margin-right:var(--fk-accordion-leading-text-gap, var(--fk-rhythm-2, .5rem));font-size:var(--fk-accordion-leading-text-font-size, var(--fk-typography-small-font-size, .8125rem));font-weight:var(--fk-accordion-leading-text-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-leading-text-color, var(--fk-color-muted, #64748b));letter-spacing:.02em}.fk-accordion__chevron{display:inline-flex;align-items:center;justify-content:center;color:var(--fk-accordion-chevron-color, var(--fk-color-muted, #64748b));transition:transform .15s ease}.fk-accordion__chevron--open{transform:rotate(180deg)}.fk-accordion__chevron-svg{display:block}.fk-accordion__panel{margin-top:var(--fk-accordion-panel-gap, var(--fk-rhythm-2, .5rem));padding:var(--fk-accordion-panel-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-panel-padding-inline, var(--fk-rhythm-4, 1rem));color:var(--fk-accordion-panel-color, var(--fk-color-text, #121926))}:host.fk-accordion--expanded .fk-accordion__header{background:var(--fk-accordion-header-bg-expanded, var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa)))}:host.fk-accordion--sm .fk-accordion__header{padding:var(--fk-accordion-sm-header-padding-block, var(--fk-rhythm-2, .5rem)) var(--fk-accordion-sm-header-padding-inline, var(--fk-rhythm-3, .75rem))}:host.fk-accordion--sm .fk-accordion__title{font-size:var(--fk-accordion-sm-title-font-size, var(--fk-typography-small-font-size, .8125rem))}:host.fk-accordion--sm .fk-accordion__description{font-size:var(--fk-accordion-sm-description-font-size, .75rem)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
208
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AccordionComponent, isStandalone: true, selector: "fk-accordion", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, leadingText: { classPropertyName: "leadingText", publicName: "leadingText", 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 }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "leadingIconRef", first: true, predicate: FK_ACCORDION_LEADING_ICON, descendants: true, isSignal: true }, { propertyName: "chevronRef", first: true, predicate: FK_ACCORDION_CHEVRON, descendants: true, isSignal: true }, { propertyName: "trailingRef", first: true, predicate: FK_ACCORDION_TRAILING, descendants: true, isSignal: true }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (trailingRef()) {\n <span class=\"fk-accordion__trailing-content\">\n <ng-content select=\"[fkAccordionTrailing]\" />\n </span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n", styles: [":host{display:block;color:var(--fk-accordion-color, var(--fk-color-text, #121926));border:var(--fk-accordion-border-width, 1px) solid var(--fk-accordion-border-color, var(--fk-color-border, #d9e2ee));border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem))}.fk-accordion__header{display:flex;align-items:center;width:100%;padding:var(--fk-accordion-header-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-header-padding-inline, var(--fk-rhythm-4, 1rem));background:var(--fk-accordion-header-bg, transparent);border:none;border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem));font-family:inherit;color:inherit;text-align:left;cursor:pointer}.fk-accordion__header:hover:not(:disabled){background:var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa))}.fk-accordion__header:focus-visible{outline:none;box-shadow:var(--fk-accordion-focus-ring, var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, .18)))}.fk-accordion__header:disabled{cursor:not-allowed;opacity:.6}.fk-accordion__leading-icon{display:inline-flex;align-items:center;flex:0 0 auto;margin-right:var(--fk-accordion-leading-icon-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__text{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.fk-accordion__title{font-size:var(--fk-accordion-title-font-size, var(--fk-typography-body-font-size, .9375rem));font-weight:var(--fk-accordion-title-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-title-color, var(--fk-color-text, #121926));line-height:1.4}.fk-accordion__description{margin-top:var(--fk-accordion-description-gap, var(--fk-rhythm-1, .25rem));font-size:var(--fk-accordion-description-font-size, var(--fk-typography-small-font-size, .8125rem));color:var(--fk-accordion-description-color, var(--fk-color-muted, #64748b));line-height:1.5}.fk-accordion__trailing{display:inline-flex;align-items:center;flex:0 0 auto;margin-left:var(--fk-accordion-trailing-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__trailing-content{display:inline-flex;align-items:center;margin-right:var(--fk-accordion-trailing-content-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__leading-text{margin-right:var(--fk-accordion-leading-text-gap, var(--fk-rhythm-2, .5rem));font-size:var(--fk-accordion-leading-text-font-size, var(--fk-typography-small-font-size, .8125rem));font-weight:var(--fk-accordion-leading-text-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-leading-text-color, var(--fk-color-muted, #64748b));letter-spacing:.02em}.fk-accordion__chevron{display:inline-flex;align-items:center;justify-content:center;color:var(--fk-accordion-chevron-color, var(--fk-color-muted, #64748b));transition:transform .15s ease}.fk-accordion__chevron--open{transform:rotate(180deg)}.fk-accordion__chevron-svg{display:block}.fk-accordion__panel{margin-top:var(--fk-accordion-panel-gap, var(--fk-rhythm-2, .5rem));padding:var(--fk-accordion-panel-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-panel-padding-inline, var(--fk-rhythm-4, 1rem));color:var(--fk-accordion-panel-color, var(--fk-color-text, #121926))}:host.fk-accordion--expanded .fk-accordion__header{background:var(--fk-accordion-header-bg-expanded, var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa)))}:host.fk-accordion--sm .fk-accordion__header{padding:var(--fk-accordion-sm-header-padding-block, var(--fk-rhythm-2, .5rem)) var(--fk-accordion-sm-header-padding-inline, var(--fk-rhythm-3, .75rem))}:host.fk-accordion--sm .fk-accordion__title{font-size:var(--fk-accordion-sm-title-font-size, var(--fk-typography-small-font-size, .8125rem))}:host.fk-accordion--sm .fk-accordion__description{font-size:var(--fk-accordion-sm-description-font-size, .75rem)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
179
209
  }
180
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AccordionComponent, decorators: [{
181
211
  type: Component,
182
- args: [{ selector: 'fk-accordion', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n", styles: [":host{display:block;color:var(--fk-accordion-color, var(--fk-color-text, #121926));border:var(--fk-accordion-border-width, 1px) solid var(--fk-accordion-border-color, var(--fk-color-border, #d9e2ee));border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem))}.fk-accordion__header{display:flex;align-items:center;width:100%;padding:var(--fk-accordion-header-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-header-padding-inline, var(--fk-rhythm-4, 1rem));background:var(--fk-accordion-header-bg, transparent);border:none;border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem));font-family:inherit;color:inherit;text-align:left;cursor:pointer}.fk-accordion__header:hover:not(:disabled){background:var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa))}.fk-accordion__header:focus-visible{outline:none;box-shadow:var(--fk-accordion-focus-ring, var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, .18)))}.fk-accordion__header:disabled{cursor:not-allowed;opacity:.6}.fk-accordion__leading-icon{display:inline-flex;align-items:center;flex:0 0 auto;margin-right:var(--fk-accordion-leading-icon-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__text{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.fk-accordion__title{font-size:var(--fk-accordion-title-font-size, var(--fk-typography-body-font-size, .9375rem));font-weight:var(--fk-accordion-title-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-title-color, var(--fk-color-text, #121926));line-height:1.4}.fk-accordion__description{margin-top:var(--fk-accordion-description-gap, var(--fk-rhythm-1, .25rem));font-size:var(--fk-accordion-description-font-size, var(--fk-typography-small-font-size, .8125rem));color:var(--fk-accordion-description-color, var(--fk-color-muted, #64748b));line-height:1.5}.fk-accordion__trailing{display:inline-flex;align-items:center;flex:0 0 auto;margin-left:var(--fk-accordion-trailing-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__leading-text{margin-right:var(--fk-accordion-leading-text-gap, var(--fk-rhythm-2, .5rem));font-size:var(--fk-accordion-leading-text-font-size, var(--fk-typography-small-font-size, .8125rem));font-weight:var(--fk-accordion-leading-text-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-leading-text-color, var(--fk-color-muted, #64748b));letter-spacing:.02em}.fk-accordion__chevron{display:inline-flex;align-items:center;justify-content:center;color:var(--fk-accordion-chevron-color, var(--fk-color-muted, #64748b));transition:transform .15s ease}.fk-accordion__chevron--open{transform:rotate(180deg)}.fk-accordion__chevron-svg{display:block}.fk-accordion__panel{margin-top:var(--fk-accordion-panel-gap, var(--fk-rhythm-2, .5rem));padding:var(--fk-accordion-panel-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-panel-padding-inline, var(--fk-rhythm-4, 1rem));color:var(--fk-accordion-panel-color, var(--fk-color-text, #121926))}:host.fk-accordion--expanded .fk-accordion__header{background:var(--fk-accordion-header-bg-expanded, var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa)))}:host.fk-accordion--sm .fk-accordion__header{padding:var(--fk-accordion-sm-header-padding-block, var(--fk-rhythm-2, .5rem)) var(--fk-accordion-sm-header-padding-inline, var(--fk-rhythm-3, .75rem))}:host.fk-accordion--sm .fk-accordion__title{font-size:var(--fk-accordion-sm-title-font-size, var(--fk-typography-small-font-size, .8125rem))}:host.fk-accordion--sm .fk-accordion__description{font-size:var(--fk-accordion-sm-description-font-size, .75rem)}\n"] }]
183
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], leadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingText", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }], leadingIconRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FK_ACCORDION_LEADING_ICON), { isSignal: true }] }], chevronRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FK_ACCORDION_CHEVRON), { isSignal: true }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], hostClass: [{
212
+ args: [{ selector: 'fk-accordion', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (trailingRef()) {\n <span class=\"fk-accordion__trailing-content\">\n <ng-content select=\"[fkAccordionTrailing]\" />\n </span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n", styles: [":host{display:block;color:var(--fk-accordion-color, var(--fk-color-text, #121926));border:var(--fk-accordion-border-width, 1px) solid var(--fk-accordion-border-color, var(--fk-color-border, #d9e2ee));border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem))}.fk-accordion__header{display:flex;align-items:center;width:100%;padding:var(--fk-accordion-header-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-header-padding-inline, var(--fk-rhythm-4, 1rem));background:var(--fk-accordion-header-bg, transparent);border:none;border-radius:var(--fk-accordion-radius, var(--fk-radius-md, .375rem));font-family:inherit;color:inherit;text-align:left;cursor:pointer}.fk-accordion__header:hover:not(:disabled){background:var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa))}.fk-accordion__header:focus-visible{outline:none;box-shadow:var(--fk-accordion-focus-ring, var(--fk-focus-ring, 0 0 0 3px rgba(10, 132, 255, .18)))}.fk-accordion__header:disabled{cursor:not-allowed;opacity:.6}.fk-accordion__leading-icon{display:inline-flex;align-items:center;flex:0 0 auto;margin-right:var(--fk-accordion-leading-icon-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__text{display:flex;flex:1 1 auto;flex-direction:column;min-width:0}.fk-accordion__title{font-size:var(--fk-accordion-title-font-size, var(--fk-typography-body-font-size, .9375rem));font-weight:var(--fk-accordion-title-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-title-color, var(--fk-color-text, #121926));line-height:1.4}.fk-accordion__description{margin-top:var(--fk-accordion-description-gap, var(--fk-rhythm-1, .25rem));font-size:var(--fk-accordion-description-font-size, var(--fk-typography-small-font-size, .8125rem));color:var(--fk-accordion-description-color, var(--fk-color-muted, #64748b));line-height:1.5}.fk-accordion__trailing{display:inline-flex;align-items:center;flex:0 0 auto;margin-left:var(--fk-accordion-trailing-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__trailing-content{display:inline-flex;align-items:center;margin-right:var(--fk-accordion-trailing-content-gap, var(--fk-rhythm-3, .75rem))}.fk-accordion__leading-text{margin-right:var(--fk-accordion-leading-text-gap, var(--fk-rhythm-2, .5rem));font-size:var(--fk-accordion-leading-text-font-size, var(--fk-typography-small-font-size, .8125rem));font-weight:var(--fk-accordion-leading-text-font-weight, var(--fk-font-weight-semibold, 600));color:var(--fk-accordion-leading-text-color, var(--fk-color-muted, #64748b));letter-spacing:.02em}.fk-accordion__chevron{display:inline-flex;align-items:center;justify-content:center;color:var(--fk-accordion-chevron-color, var(--fk-color-muted, #64748b));transition:transform .15s ease}.fk-accordion__chevron--open{transform:rotate(180deg)}.fk-accordion__chevron-svg{display:block}.fk-accordion__panel{margin-top:var(--fk-accordion-panel-gap, var(--fk-rhythm-2, .5rem));padding:var(--fk-accordion-panel-padding-block, var(--fk-rhythm-3, .75rem)) var(--fk-accordion-panel-padding-inline, var(--fk-rhythm-4, 1rem));color:var(--fk-accordion-panel-color, var(--fk-color-text, #121926))}:host.fk-accordion--expanded .fk-accordion__header{background:var(--fk-accordion-header-bg-expanded, var(--fk-accordion-header-bg-hover, var(--fk-color-surface-muted, #f5f7fa)))}:host.fk-accordion--sm .fk-accordion__header{padding:var(--fk-accordion-sm-header-padding-block, var(--fk-rhythm-2, .5rem)) var(--fk-accordion-sm-header-padding-inline, var(--fk-rhythm-3, .75rem))}:host.fk-accordion--sm .fk-accordion__title{font-size:var(--fk-accordion-sm-title-font-size, var(--fk-typography-small-font-size, .8125rem))}:host.fk-accordion--sm .fk-accordion__description{font-size:var(--fk-accordion-sm-description-font-size, .75rem)}\n"] }]
213
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], leadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingText", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }], leadingIconRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FK_ACCORDION_LEADING_ICON), { isSignal: true }] }], chevronRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FK_ACCORDION_CHEVRON), { isSignal: true }] }], trailingRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FK_ACCORDION_TRAILING), { isSignal: true }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], hostClass: [{
184
214
  type: HostBinding,
185
215
  args: ['class']
186
216
  }] } });
@@ -210,5 +240,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
210
240
  * Generated bundle index. Do not edit.
211
241
  */
212
242
 
213
- export { AccordionComponent, AccordionGroupComponent, AccordionGroupCoordinator, FK_ACCORDION_CHEVRON, FK_ACCORDION_LEADING_ICON, FkAccordionChevronDirective, FkAccordionLeadingIconDirective };
243
+ export { AccordionComponent, AccordionGroupComponent, AccordionGroupCoordinator, FK_ACCORDION_CHEVRON, FK_ACCORDION_LEADING_ICON, FK_ACCORDION_TRAILING, FkAccordionChevronDirective, FkAccordionLeadingIconDirective, FkAccordionTrailingDirective };
214
244
  //# sourceMappingURL=frame-kit-ui-ng-ui-accordion.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-kit-ui-ng-ui-accordion.mjs","sources":["../../../../packages/ui-ng/ui/accordion/accordion-chevron.directive.ts","../../../../packages/ui-ng/ui/accordion/accordion-group.service.ts","../../../../packages/ui-ng/ui/accordion/accordion-leading-icon.directive.ts","../../../../packages/ui-ng/ui/accordion/accordion.component.ts","../../../../packages/ui-ng/ui/accordion/accordion.component.html","../../../../packages/ui-ng/ui/accordion/accordion-group.component.ts","../../../../packages/ui-ng/ui/accordion/accordion-group.component.html","../../../../packages/ui-ng/ui/accordion/frame-kit-ui-ng-ui-accordion.ts"],"sourcesContent":["import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_ACCORDION_CHEVRON =\n new InjectionToken<FkAccordionChevronDirective>('FK_ACCORDION_CHEVRON');\n\n@Directive({\n selector: '[fkAccordionChevron]',\n standalone: true,\n providers: [\n { provide: FK_ACCORDION_CHEVRON, useExisting: FkAccordionChevronDirective },\n ],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class FkAccordionChevronDirective {}\n","import { Injectable } from '@angular/core';\n\nimport type { AccordionComponent } from './accordion.component';\n\n/**\n * Coordinator scoped to a single `<fk-accordion-group>`. Any\n * `<fk-accordion>` rendered inside a group picks this up via DI and\n * reports its toggle state. The coordinator enforces single-open:\n * when a new accordion opens, the previously active one is collapsed.\n */\n@Injectable()\nexport class AccordionGroupCoordinator {\n private active: AccordionComponent | null = null;\n\n register(accordion: AccordionComponent): void {\n if (accordion.expanded()) {\n if (this.active && this.active !== accordion) {\n accordion.setExpanded(false);\n } else {\n this.active = accordion;\n }\n }\n }\n\n unregister(accordion: AccordionComponent): void {\n if (this.active === accordion) {\n this.active = null;\n }\n }\n\n notifyExpandedChange(\n accordion: AccordionComponent,\n nextExpanded: boolean,\n ): void {\n if (nextExpanded) {\n const prev = this.active;\n\n this.active = accordion;\n\n if (prev && prev !== accordion) {\n prev.setExpanded(false);\n }\n\n return;\n }\n\n if (this.active === accordion) {\n this.active = null;\n }\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_ACCORDION_LEADING_ICON =\n new InjectionToken<FkAccordionLeadingIconDirective>(\n 'FK_ACCORDION_LEADING_ICON',\n );\n\n@Directive({\n selector: '[fkAccordionLeadingIcon]',\n standalone: true,\n providers: [\n {\n provide: FK_ACCORDION_LEADING_ICON,\n useExisting: FkAccordionLeadingIconDirective,\n },\n ],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class FkAccordionLeadingIconDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n HostBinding,\n inject,\n input,\n linkedSignal,\n OnInit,\n output,\n} from '@angular/core';\n\nimport type { AccordionSize } from './accordion.types';\nimport { FK_ACCORDION_CHEVRON } from './accordion-chevron.directive';\nimport { AccordionGroupCoordinator } from './accordion-group.service';\nimport { FK_ACCORDION_LEADING_ICON } from './accordion-leading-icon.directive';\n\nlet uid = 0;\n\n@Component({\n selector: 'fk-accordion',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n})\nexport class AccordionComponent implements OnInit {\n private readonly group = inject(AccordionGroupCoordinator, {\n optional: true,\n });\n\n private readonly destroyRef = inject(DestroyRef);\n\n // ===== INPUTS =====\n /** Heading text shown in the trigger row. */\n readonly title = input<string>('');\n /** Optional supporting text rendered beneath the title. */\n readonly description = input<string | null>(null);\n /** Short label rendered to the leading side of the trigger row. */\n readonly leadingText = input<string | null>(null);\n /** Controls the size variant of the accordion trigger and content. */\n readonly size = input<AccordionSize>('md');\n /** When true the accordion cannot be opened or closed by the user. */\n readonly disabled = input<boolean>(false);\n /** Whether the panel starts in the expanded state on first render. */\n readonly defaultExpanded = input<boolean>(false);\n\n // ===== CONTENT CHILDREN =====\n readonly leadingIconRef = contentChild(FK_ACCORDION_LEADING_ICON);\n readonly chevronRef = contentChild(FK_ACCORDION_CHEVRON);\n\n // ===== OUTPUTS =====\n /** Fires whenever the panel opens or closes, emitting the new expanded state. */\n readonly expandedChange = output<boolean>();\n\n // ===== BASE PROPS =====\n readonly className = input<string>('');\n readonly id = input<string | null>(null);\n readonly ariaLabel = input<string | null>(null);\n\n // ===== INTERNAL STATE =====\n private readonly _expanded = linkedSignal<boolean>(() =>\n this.defaultExpanded(),\n );\n\n private readonly uid = ++uid;\n\n readonly expanded = computed(() => this._expanded());\n\n protected readonly triggerId = computed(\n () => `fk-accordion-${this.uid}-trigger`,\n );\n\n protected readonly panelId = computed(() => `fk-accordion-${this.uid}-panel`);\n\n // ===== COMPUTED =====\n readonly classes = computed(() => {\n return [\n 'fk-accordion',\n `fk-accordion--${this.size()}`,\n this._expanded() ? 'fk-accordion--expanded' : '',\n this.disabled() ? 'fk-accordion--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n @HostBinding('class')\n get hostClass(): string {\n return this.classes();\n }\n\n // ===== LIFECYCLE =====\n ngOnInit(): void {\n if (!this.group) {\n return;\n }\n\n this.group.register(this);\n this.destroyRef.onDestroy(() => this.group?.unregister(this));\n }\n\n // ===== ACTIONS =====\n /** Toggles the expanded state if the accordion is not disabled. */\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const next = !this._expanded();\n\n this._expanded.set(next);\n this.expandedChange.emit(next);\n this.group?.notifyExpandedChange(this, next);\n }\n\n /**\n * Set the expanded state imperatively. Reserved for\n * `AccordionGroupCoordinator` to force-collapse siblings when a new\n * accordion opens within the same group. Does not notify the\n * coordinator (to avoid re-entrance loops).\n */\n setExpanded(expanded: boolean): void {\n if (this._expanded() === expanded) {\n return;\n }\n\n this._expanded.set(expanded);\n this.expandedChange.emit(expanded);\n }\n}\n","<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nimport { AccordionGroupCoordinator } from './accordion-group.service';\n\n@Component({\n selector: 'fk-accordion-group',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AccordionGroupCoordinator],\n templateUrl: './accordion-group.component.html',\n styleUrl: './accordion-group.component.scss',\n})\nexport class AccordionGroupComponent {\n // ===== BASE PROPS =====\n readonly className = input<string>('');\n\n // ===== COMPUTED =====\n readonly classes = computed(() => {\n return ['fk-accordion-group', this.className()].filter(Boolean).join(' ');\n });\n\n @HostBinding('class')\n get hostClass(): string {\n return this.classes();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-kit-ui-ng-ui-accordion.mjs","sources":["../../../../packages/ui-ng/ui/accordion/accordion-chevron.directive.ts","../../../../packages/ui-ng/ui/accordion/accordion-group.service.ts","../../../../packages/ui-ng/ui/accordion/accordion-leading-icon.directive.ts","../../../../packages/ui-ng/ui/accordion/accordion-trailing.directive.ts","../../../../packages/ui-ng/ui/accordion/accordion.component.ts","../../../../packages/ui-ng/ui/accordion/accordion.component.html","../../../../packages/ui-ng/ui/accordion/accordion-group.component.ts","../../../../packages/ui-ng/ui/accordion/accordion-group.component.html","../../../../packages/ui-ng/ui/accordion/frame-kit-ui-ng-ui-accordion.ts"],"sourcesContent":["import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_ACCORDION_CHEVRON =\n new InjectionToken<FkAccordionChevronDirective>('FK_ACCORDION_CHEVRON');\n\n@Directive({\n selector: '[fkAccordionChevron]',\n standalone: true,\n providers: [\n { provide: FK_ACCORDION_CHEVRON, useExisting: FkAccordionChevronDirective },\n ],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class FkAccordionChevronDirective {}\n","import { Injectable } from '@angular/core';\n\nimport type { AccordionComponent } from './accordion.component';\n\n/**\n * Coordinator scoped to a single `<fk-accordion-group>`. Any\n * `<fk-accordion>` rendered inside a group picks this up via DI and\n * reports its toggle state. The coordinator enforces single-open:\n * when a new accordion opens, the previously active one is collapsed.\n */\n@Injectable()\nexport class AccordionGroupCoordinator {\n private active: AccordionComponent | null = null;\n\n register(accordion: AccordionComponent): void {\n if (accordion.expanded()) {\n if (this.active && this.active !== accordion) {\n accordion.setExpanded(false);\n } else {\n this.active = accordion;\n }\n }\n }\n\n unregister(accordion: AccordionComponent): void {\n if (this.active === accordion) {\n this.active = null;\n }\n }\n\n notifyExpandedChange(\n accordion: AccordionComponent,\n nextExpanded: boolean,\n ): void {\n if (nextExpanded) {\n const prev = this.active;\n\n this.active = accordion;\n\n if (prev && prev !== accordion) {\n prev.setExpanded(false);\n }\n\n return;\n }\n\n if (this.active === accordion) {\n this.active = null;\n }\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_ACCORDION_LEADING_ICON =\n new InjectionToken<FkAccordionLeadingIconDirective>(\n 'FK_ACCORDION_LEADING_ICON',\n );\n\n@Directive({\n selector: '[fkAccordionLeadingIcon]',\n standalone: true,\n providers: [\n {\n provide: FK_ACCORDION_LEADING_ICON,\n useExisting: FkAccordionLeadingIconDirective,\n },\n ],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class FkAccordionLeadingIconDirective {}\n","import { Directive, InjectionToken } from '@angular/core';\n\nexport const FK_ACCORDION_TRAILING =\n new InjectionToken<FkAccordionTrailingDirective>('FK_ACCORDION_TRAILING');\n\n/**\n * Projects content into the accordion trigger's trailing region, between the\n * optional leading text and the chevron — a right-aligned slot for a badge,\n * count, or status pill.\n */\n@Directive({\n selector: '[fkAccordionTrailing]',\n standalone: true,\n providers: [\n {\n provide: FK_ACCORDION_TRAILING,\n useExisting: FkAccordionTrailingDirective,\n },\n ],\n})\nexport class FkAccordionTrailingDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n HostBinding,\n inject,\n input,\n linkedSignal,\n OnInit,\n output,\n} from '@angular/core';\n\nimport type { AccordionSize } from './accordion.types';\nimport { FK_ACCORDION_CHEVRON } from './accordion-chevron.directive';\nimport { AccordionGroupCoordinator } from './accordion-group.service';\nimport { FK_ACCORDION_LEADING_ICON } from './accordion-leading-icon.directive';\nimport { FK_ACCORDION_TRAILING } from './accordion-trailing.directive';\n\nlet uid = 0;\n\n@Component({\n selector: 'fk-accordion',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n})\nexport class AccordionComponent implements OnInit {\n private readonly group = inject(AccordionGroupCoordinator, {\n optional: true,\n });\n\n private readonly destroyRef = inject(DestroyRef);\n\n // ===== INPUTS =====\n /** Heading text shown in the trigger row. */\n readonly title = input<string>('');\n /** Optional supporting text rendered beneath the title. */\n readonly description = input<string | null>(null);\n /** Short label rendered to the leading side of the trigger row. */\n readonly leadingText = input<string | null>(null);\n /** Controls the size variant of the accordion trigger and content. */\n readonly size = input<AccordionSize>('md');\n /** When true the accordion cannot be opened or closed by the user. */\n readonly disabled = input<boolean>(false);\n /** Whether the panel starts in the expanded state on first render. */\n readonly defaultExpanded = input<boolean>(false);\n\n // ===== CONTENT CHILDREN =====\n readonly leadingIconRef = contentChild(FK_ACCORDION_LEADING_ICON);\n readonly chevronRef = contentChild(FK_ACCORDION_CHEVRON);\n readonly trailingRef = contentChild(FK_ACCORDION_TRAILING);\n\n // ===== OUTPUTS =====\n /** Fires whenever the panel opens or closes, emitting the new expanded state. */\n readonly expandedChange = output<boolean>();\n\n // ===== BASE PROPS =====\n readonly className = input<string>('');\n readonly id = input<string | null>(null);\n readonly ariaLabel = input<string | null>(null);\n\n // ===== INTERNAL STATE =====\n private readonly _expanded = linkedSignal<boolean>(() =>\n this.defaultExpanded(),\n );\n\n private readonly uid = ++uid;\n\n readonly expanded = computed(() => this._expanded());\n\n protected readonly triggerId = computed(\n () => `fk-accordion-${this.uid}-trigger`,\n );\n\n protected readonly panelId = computed(() => `fk-accordion-${this.uid}-panel`);\n\n // ===== COMPUTED =====\n readonly classes = computed(() => {\n return [\n 'fk-accordion',\n `fk-accordion--${this.size()}`,\n this._expanded() ? 'fk-accordion--expanded' : '',\n this.disabled() ? 'fk-accordion--disabled' : '',\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n @HostBinding('class')\n get hostClass(): string {\n return this.classes();\n }\n\n // ===== LIFECYCLE =====\n ngOnInit(): void {\n if (!this.group) {\n return;\n }\n\n this.group.register(this);\n this.destroyRef.onDestroy(() => this.group?.unregister(this));\n }\n\n // ===== ACTIONS =====\n /** Toggles the expanded state if the accordion is not disabled. */\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const next = !this._expanded();\n\n this._expanded.set(next);\n this.expandedChange.emit(next);\n this.group?.notifyExpandedChange(this, next);\n }\n\n /**\n * Set the expanded state imperatively. Reserved for\n * `AccordionGroupCoordinator` to force-collapse siblings when a new\n * accordion opens within the same group. Does not notify the\n * coordinator (to avoid re-entrance loops).\n */\n setExpanded(expanded: boolean): void {\n if (this._expanded() === expanded) {\n return;\n }\n\n this._expanded.set(expanded);\n this.expandedChange.emit(expanded);\n }\n}\n","<button\n type=\"button\"\n class=\"fk-accordion__header\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (leadingIconRef()) {\n <span class=\"fk-accordion__leading-icon\">\n <ng-content select=\"[fkAccordionLeadingIcon]\" />\n </span>\n }\n\n <span class=\"fk-accordion__text\">\n @if (title()) {\n <span class=\"fk-accordion__title\">{{ title() }}</span>\n }\n\n @if (description()) {\n <span class=\"fk-accordion__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"fk-accordion__trailing\">\n @if (leadingText()) {\n <span class=\"fk-accordion__leading-text\">{{ leadingText() }}</span>\n }\n\n @if (trailingRef()) {\n <span class=\"fk-accordion__trailing-content\">\n <ng-content select=\"[fkAccordionTrailing]\" />\n </span>\n }\n\n @if (chevronRef()) {\n <ng-content select=\"[fkAccordionChevron]\" />\n } @else {\n <span\n class=\"fk-accordion__chevron\"\n [class.fk-accordion__chevron--open]=\"expanded()\"\n aria-hidden=\"true\"\n >\n <svg\n class=\"fk-accordion__chevron-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 18 18\"\n >\n <path\n d=\"M4.5 6.75L9 11.25L13.5 6.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </span>\n }\n </span>\n</button>\n\n@if (expanded()) {\n <div\n class=\"fk-accordion__panel\"\n role=\"region\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\"\n >\n <ng-content />\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n} from '@angular/core';\n\nimport { AccordionGroupCoordinator } from './accordion-group.service';\n\n@Component({\n selector: 'fk-accordion-group',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AccordionGroupCoordinator],\n templateUrl: './accordion-group.component.html',\n styleUrl: './accordion-group.component.scss',\n})\nexport class AccordionGroupComponent {\n // ===== BASE PROPS =====\n readonly className = input<string>('');\n\n // ===== COMPUTED =====\n readonly classes = computed(() => {\n return ['fk-accordion-group', this.className()].filter(Boolean).join(' ');\n });\n\n @HostBinding('class')\n get hostClass(): string {\n return this.classes();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frame-kit/ui-ng",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Style-agnostic, token-driven Angular UI component library for FrameKit.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -21,6 +21,7 @@ declare class AccordionComponent implements OnInit {
21
21
  readonly defaultExpanded: _angular_core.InputSignal<boolean>;
22
22
  readonly leadingIconRef: _angular_core.Signal<_frame_kit_ui_ng_ui_accordion.FkAccordionLeadingIconDirective | undefined>;
23
23
  readonly chevronRef: _angular_core.Signal<_frame_kit_ui_ng_ui_accordion.FkAccordionChevronDirective | undefined>;
24
+ readonly trailingRef: _angular_core.Signal<_frame_kit_ui_ng_ui_accordion.FkAccordionTrailingDirective | undefined>;
24
25
  /** Fires whenever the panel opens or closes, emitting the new expanded state. */
25
26
  readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
26
27
  readonly className: _angular_core.InputSignal<string>;
@@ -44,7 +45,7 @@ declare class AccordionComponent implements OnInit {
44
45
  */
45
46
  setExpanded(expanded: boolean): void;
46
47
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionComponent, never>;
47
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "fk-accordion", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "leadingText": { "alias": "leadingText"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "expandedChange": "expandedChange"; }, ["leadingIconRef", "chevronRef"], ["[fkAccordionLeadingIcon]", "[fkAccordionChevron]", "*"], true, never>;
48
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "fk-accordion", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "leadingText": { "alias": "leadingText"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "expandedChange": "expandedChange"; }, ["leadingIconRef", "chevronRef", "trailingRef"], ["[fkAccordionLeadingIcon]", "[fkAccordionTrailing]", "[fkAccordionChevron]", "*"], true, never>;
48
49
  }
49
50
 
50
51
  declare const FK_ACCORDION_CHEVRON: InjectionToken<FkAccordionChevronDirective>;
@@ -82,5 +83,16 @@ declare class FkAccordionLeadingIconDirective {
82
83
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkAccordionLeadingIconDirective, "[fkAccordionLeadingIcon]", never, {}, {}, never, never, true, never>;
83
84
  }
84
85
 
85
- export { AccordionComponent, AccordionGroupComponent, AccordionGroupCoordinator, FK_ACCORDION_CHEVRON, FK_ACCORDION_LEADING_ICON, FkAccordionChevronDirective, FkAccordionLeadingIconDirective };
86
+ declare const FK_ACCORDION_TRAILING: InjectionToken<FkAccordionTrailingDirective>;
87
+ /**
88
+ * Projects content into the accordion trigger's trailing region, between the
89
+ * optional leading text and the chevron — a right-aligned slot for a badge,
90
+ * count, or status pill.
91
+ */
92
+ declare class FkAccordionTrailingDirective {
93
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkAccordionTrailingDirective, never>;
94
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkAccordionTrailingDirective, "[fkAccordionTrailing]", never, {}, {}, never, never, true, never>;
95
+ }
96
+
97
+ export { AccordionComponent, AccordionGroupComponent, AccordionGroupCoordinator, FK_ACCORDION_CHEVRON, FK_ACCORDION_LEADING_ICON, FK_ACCORDION_TRAILING, FkAccordionChevronDirective, FkAccordionLeadingIconDirective, FkAccordionTrailingDirective };
86
98
  export type { AccordionSize };
@@ -26,15 +26,17 @@ A token-driven accordion/disclosure component for collapsible sections. A single
26
26
 
27
27
  ### Content
28
28
 
29
- Three projection targets:
29
+ Four projection targets:
30
30
 
31
31
  - **Default slot** — panel body (rendered only while expanded).
32
32
  - **`[fkAccordionLeadingIcon]`** — icon slot before the title/description stack.
33
+ - **`[fkAccordionTrailing]`** — trailing region between the optional leading text and the chevron; a right-aligned slot for a badge, count, or status pill.
33
34
  - **`[fkAccordionChevron]`** — replaces the default chevron SVG.
34
35
 
35
36
  ```html
36
37
  <fk-accordion title="API key" description="Management API key" leadingText="Scopes">
37
38
  <fk-icon fkAccordionLeadingIcon name="law-shield" size="md" />
39
+ <fk-badge fkAccordionTrailing>3 / 5</fk-badge>
38
40
  <p>read:users, write:users</p>
39
41
  </fk-accordion>
40
42
  ```