implements OnInit {
+ protected readonly idGenerator = inject(NgxPrimerIdGeneratorDirective, {
+ host: true,
+ optional: true,
});
+
+ public readonly accordionContentId = this.idGenerator?.resolvedId;
+
+ protected readonly accordionItemContext = inject(
+ NgxPrimerAccordionItemContext,
+ {
+ optional: true,
+ }
+ );
+
+ protected readonly accordionContentContext = inject(
+ NgxPrimerAccordionContentContext,
+ {
+ optional: true,
+ }
+ );
+
+ @HostBinding('role')
+ public get roleAttr() {
+ return 'region';
+ }
+
+ @HostBinding('attr.data-orientation')
+ public get dataOrientationAttr() {
+ return this.accordionRoot?.orientation();
+ }
+
+ @HostBinding('attr.data-expanded')
+ public get dataExpandedAttr() {
+ return this.accordionItem?.isOpen();
+ }
+
+ @HostBinding('attr.data-is-open')
+ public get dataIsOpenAttr() {
+ return this.accordionItem.isOpen();
+ }
+
+ @HostBinding('attr.aria-labelledby')
+ public get dataAriaLabelledByAttr() {
+ return this.accordionItem?.accordionTrigger()?.accordionTriggerId;
+ }
+
+ ngOnInit(): void {
+ this.runInitializationFn();
+ }
+
+ protected runInitializationFn(doneFn?: (args?: P) => void): void {
+ if (doneFn) {
+ doneFn({
+ context: this.accordionContentContext
+ });
+ }
+ }
+
+ protected get accordionContent() {
+ return this.accordionContentContext
+ ?.instance as NgxPrimerAccordionContentComponent;
+ }
+
+ protected get accordionItem() {
+ return this.accordionItemContext
+ ?.instance as NgxPrimerAccordionItemComponent;
+ }
+
+ protected get accordionRoot() {
+ return this.accordionItem?.accordionRootContext
+ ?.instance as NgxPrimerAccordionRootComponent;
+ }
}
diff --git a/packages/primitives/accordion/src/components/accordion-item/accordion-item.component.ts b/packages/primitives/accordion/src/components/accordion-item/accordion-item.component.ts
index fd90dcf..694ba89 100644
--- a/packages/primitives/accordion/src/components/accordion-item/accordion-item.component.ts
+++ b/packages/primitives/accordion/src/components/accordion-item/accordion-item.component.ts
@@ -14,29 +14,60 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { Component, contentChild, input } from '@angular/core';
+import {
+ Component,
+ HostBinding,
+ Injector,
+ OnInit,
+ computed,
+ contentChild,
+ inject,
+ input,
+} from '@angular/core';
import { CommonModule } from '@angular/common';
import { NgxPrimerAccordionContentComponent } from '../accordion-content/accordion-content.component';
+import { NgxPrimerAccordionItemContext } from '../../contexts/accordion-item/accordion-item.context';
+import { NgxPrimerAccordionItemContextDirective } from '../../directives';
import { NgxPrimerAccordionRootComponent } from '../accordion-root/accordion-root.component';
+import { NgxPrimerAccordionRootContext } from '../../contexts/accordion-root/accordion-root.context';
import { NgxPrimerAccordionTriggerComponent } from '../accordion-trigger/accordion-trigger.component';
+import { NgxPrimerIdGeneratorDirective } from '@ngx-primer/primitive/utilities';
@Component({
selector: 'ngx-primer-accordion-item',
standalone: true,
imports: [CommonModule],
+ providers: [NgxPrimerAccordionItemContext],
templateUrl: './accordion-item.component.html',
styleUrl: './accordion-item.component.scss',
exportAs: 'ngxPrimerAccordionItemComponent',
+ hostDirectives: [
+ {
+ directive: NgxPrimerIdGeneratorDirective,
+ inputs: ['ngxPrimerIdAttr'],
+ },
+ {
+ directive: NgxPrimerAccordionItemContextDirective
+ }
+ ],
})
-export class NgxPrimerAccordionItemComponent {
- /**
- * Accordion root instance.
- */
- public readonly accordionRoot = input.required<
- NgxPrimerAccordionRootComponent
- >({
- alias: 'ngxPrimerAccordionRootInstanceRef',
+export class NgxPrimerAccordionItemComponent implements OnInit {
+ protected readonly injector = inject(Injector);
+
+ protected readonly idGenerator = inject(NgxPrimerIdGeneratorDirective, {
+ host: true,
+ optional: true,
+ });
+
+ public readonly accordionItemId = this.idGenerator?.resolvedId;
+
+ public readonly accordionRootContext = inject(NgxPrimerAccordionRootContext, {
+ optional: true,
+ });
+
+ public readonly accordionItemContext = inject(NgxPrimerAccordionItemContext, {
+ optional: true,
});
/**
@@ -60,4 +91,93 @@ export class NgxPrimerAccordionItemComponent {
read: NgxPrimerAccordionTriggerComponent,
}
);
+
+ public readonly value = input.required({
+ alias: 'ngxPrimerAccordionItemValue',
+ });
+
+ public readonly isOpen = computed(() =>
+ this.accordionRoot?.isOpen(this.value())
+ );
+
+ @HostBinding('attr.data-orientation')
+ public get dataOrientationAttr() {
+ return this.accordionRoot?.orientation();
+ }
+
+ @HostBinding('attr.data-is-open')
+ public get dataIsOpenAttr() {
+ return this.isOpen();
+ }
+
+ @HostBinding('attr.data-value')
+ public get dataValueAttr() {
+ return this.value();
+ }
+
+ @HostBinding('attr.data-disabled')
+ public get dataDisabledAttr() {
+ return this.accordionRoot?.disabled();
+ }
+
+ ngOnInit(): void {
+ this.runInitializationFn();
+ }
+
+ /**
+ * Runs the initialization logic for the accordion component, setting up default values and context.
+ *
+ * This method initializes the accordion component, optionally setting a default value if provided.
+ * It also sets the context instance to allow dependency injection in child components,
+ * preventing the need for manual prop drilling.
+ *
+ * If a `doneFn` callback is provided, it will be executed after the initialization process
+ * with the current context and value.
+ *
+ * ### Parameters
+ * - `doneFn` (Optional): A callback function that will be executed after initialization.
+ * It receives an object with the `context` and `value` properties, where:
+ * - `context`: The current instance of the accordion component's root context.
+ * - `value`: The current value of the accordion, either the default value or a set value.
+ *
+ * ### Returns
+ * This method does not return anything. It performs initialization tasks and optionally invokes the callback.
+ *
+ * ### Example Usage
+ * ```typescript
+ * // In the accordion component
+ * this.runInitializationFn((params) => {
+ * console.log('Accordion initialized with context:', params.context);
+ * console.log('Initial value:', params.value);
+ * });
+ * ```
+ *
+ * ### Description
+ * - **Context Setup**: The `accordionRootContext.instance` is set to the current accordion instance,
+ * making it accessible for child components through dependency injection.
+ * - **Default Value**: If a default value is set for the accordion, it will be applied at initialization.
+ * - **Callback Execution**: If the `doneFn` callback is provided, it is executed with the current context and value.
+ */
+ protected runInitializationFn(doneFn?: (args?: P) => void): void {
+ if (doneFn) {
+ // ensure context being initalized
+ setTimeout(() => doneFn({
+ context: this.accordionItemContext
+ }));
+ }
+ }
+
+ protected get accordionItem() {
+ return this.accordionItemContext
+ ?.instance as NgxPrimerAccordionItemComponent;
+ }
+
+ protected get accordionRoot() {
+ return this.accordionItem?.accordionRootContext
+ ?.instance as NgxPrimerAccordionRootComponent;
+ }
+
+ focus(){
+ this.accordionTrigger()?.focus();
+ }
}
diff --git a/packages/primitives/accordion/src/components/accordion-root/accordion-root.component.ts b/packages/primitives/accordion/src/components/accordion-root/accordion-root.component.ts
index e23f379..13c7e72 100644
--- a/packages/primitives/accordion/src/components/accordion-root/accordion-root.component.ts
+++ b/packages/primitives/accordion/src/components/accordion-root/accordion-root.component.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/ban-ts-comment */
/* eslint-disable @angular-eslint/no-input-rename */
/**
* Copyright [2024] [ElhakimDev]
@@ -16,19 +17,19 @@
*/
import {
Component,
+ HostBinding,
OnInit,
booleanAttribute,
- contentChild,
contentChildren,
inject,
input,
model,
} from '@angular/core';
-import { AccordionRootContext } from '../../contexts/accordion-root/accordion-root.context';
import { CommonModule } from '@angular/common';
import { NgxPrimerAccordionItemComponent } from '../accordion-item/accordion-item.component';
-import { NgxPrimerAccordionRootThemeVariantDirective } from '../../directives';
+import { NgxPrimerAccordionRootContext } from '../../contexts/accordion-root/accordion-root.context';
+import { NgxPrimerAccordionRootContextDirective } from '../../directives/component-context';
import { NgxPrimerIdGeneratorDirective } from '@ngx-primer/primitive/utilities';
import { injectAccordionConfig } from '../../configs/accordion-config';
@@ -36,12 +37,27 @@ import { injectAccordionConfig } from '../../configs/accordion-config';
selector: 'ngx-primer-accordion-root',
standalone: true,
imports: [CommonModule],
- providers: [],
+ providers: [NgxPrimerAccordionRootContext],
+ hostDirectives: [
+ {
+ directive: NgxPrimerIdGeneratorDirective,
+ inputs: ['ngxPrimerIdAttr'],
+ },
+ {
+ directive: NgxPrimerAccordionRootContextDirective,
+ },
+ ],
templateUrl: './accordion-root.component.html',
styleUrl: './accordion-root.component.scss',
exportAs: 'ngxPrimerAccordionRootComponent',
})
export class NgxPrimerAccordionRootComponent implements OnInit {
+ protected readonly idGenerator = inject(NgxPrimerIdGeneratorDirective, {
+ host: true,
+ optional: true,
+ });
+
+ public readonly accordionRootId = this.idGenerator?.resolvedId;
/**
* Injects the `AccordionRootContext` service into the component or directive.
*
@@ -49,17 +65,6 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
* enabling interaction or data sharing between the accordion root
* and its child components, such as items, triggers, and content.
*
- * ### Example Usage
- * ```typescript
- * export class AccordionItemComponent {
- * public readonly accordionRootContext = inject(AccordionRootContext);
- *
- * constructor() {
- * const context = this.accordionRootContext.getInstance();
- * console.log(context); // Access the accordion root instance
- * }
- * }
- * ```
*
* ### Purpose
* - Facilitates communication between the root and its children.
@@ -67,7 +72,9 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
*
* @see AccordionRootContext
*/
- public readonly accordionRootContext = inject(AccordionRootContext);
+ public readonly accordionRootContext = inject(NgxPrimerAccordionRootContext, {
+ optional: true,
+ });
/**
* Provides the configuration for the accordion component by injecting the `AccordionConfig` service.
@@ -76,18 +83,8 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
* and configurations for the accordion, such as default behaviors, styles,
* or other shared properties. These configurations can be tailored globally
* or overridden at specific component levels.
- *
- * ### Example Usage
- * ```typescript
- * export class AccordionComponent {
- * public readonly accordionConfig = injectAccordionConfig();
- *
- * constructor() {
- * console.log(this.accordionConfig); // Access accordion-specific configurations
- * }
- * }
- * ```
- *
+ *
+ *
* ### Purpose
* - Centralizes the configuration for the accordion component.
* - Promotes consistency and reusability across multiple accordion instances.
@@ -97,70 +94,6 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
*/
public readonly accordionConfig = injectAccordionConfig();
- /**
- * Retrieves the instance of `NgxPrimerIdGeneratorDirective` within the content of the accordion component.
- *
- * The `accordionIdGenerator` is a `ContentChild` query that looks for the `NgxPrimerIdGeneratorDirective`
- * within the component's content, ensuring unique and consistent ID generation for accordion elements.
- *
- * ### Configuration
- * - **descendants**: Ensures the query searches recursively through all descendant elements.
- * - **read**: Specifies the directive (`NgxPrimerIdGeneratorDirective`) to be queried and retrieved.
- *
- * ### Use Case
- * This property is typically used to provide a mechanism for generating unique IDs for
- * accordion elements, such as items, triggers, or content sections. It enables better accessibility
- * and avoids ID conflicts in dynamically generated content.
- *
- * ### Example Usage
- * ```typescript
- * export class AccordionComponent {
- * @ContentChild(NgxPrimerIdGeneratorDirective, { descendants: true, read: NgxPrimerIdGeneratorDirective })
- * public readonly accordionIdGenerator;
- *
- * generateUniqueId(): string {
- * return this.accordionIdGenerator.generateId();
- * }
- * }
- * ```
- *
- * ### Benefits
- * - Ensures ID uniqueness across all accordion elements.
- * - Integrates seamlessly with dynamic content or programmatic ID generation.
- *
- * @see NgxPrimerIdGeneratorDirective
- */
- public readonly accordionIdGenerator = contentChild(
- NgxPrimerIdGeneratorDirective,
- {
- descendants: true,
- read: NgxPrimerIdGeneratorDirective,
- }
- );
-
- /**
- * Retrieves the unique ID for the accordion component, generated by the injected ID generator.
- *
- * If the ID generator is unavailable or not provided, the method falls back to a default ID value.
- * This ensures that each accordion component has a unique identifier, which can be useful for accessibility or dynamic content rendering.
- *
- * ### Returns
- * - **string**: The unique ID for the accordion component, either generated by the injected ID generator or a default value if unavailable.
- *
- * ### Example Usage
- * ```typescript
- * // Access the generated accordion ID
- * const id = this.accordionId;
- * ```
- *
- * ### Behavior:
- * - If `accordionIdGenerator` is available, the `generatedId` from the generator is returned.
- * - If `accordionIdGenerator` is not available, a fallback ID value is returned (usually a default or empty string).
- */
- public get accordionId() {
- return this.accordionIdGenerator()?.generatedId;
- }
-
/**
* The list of accordion item instances that belong to this accordion root.
*
@@ -170,17 +103,7 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
*
* ### Type
* - **QueryList**: A list of accordion items that are part of the current accordion root component.
- *
- * ### Example Usage
- * ```typescript
- * // Accessing the list of accordion items
- * const items = this.accordionItems;
- *
- * // Looping through the accordion items
- * this.accordionItems.forEach(item => {
- * // Perform actions on each item
- * });
- * ```
+ *
*
* ### Behavior:
* - The `accordionItems` list includes all `NgxPrimerAccordionItemComponent` instances that are within the root accordion, including descendants.
@@ -196,19 +119,6 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
}
);
- /**
- * Reference to the accordion root theme variant directive.
- * Allows access to the theme configuration for the accordion root.
- *
- * @type {NgxPrimerAccordionRootThemeVariantDirective | null} The theme variant directive or null if not provided.
- */
- public readonly accordionRootThemeVariant = inject(
- NgxPrimerAccordionRootThemeVariantDirective,
- {
- optional: true,
- }
- );
-
/**
* The accordion type (Single/Multiple).
* This defines whether the accordion allows single or multiple items to be open at once.
@@ -287,16 +197,7 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
* @param {T} value The value to check. This can be any type defined for the accordion values (e.g., string, number, etc.).
*
* @returns {boolean} True if the value is open (i.e., selected or expanded), false otherwise.
- *
- * ### Example Usage
- * ```typescript
- * const isItemOpen = this.isOpen(itemValue);
- * if (isItemOpen) {
- * // Handle the case where the item is open
- * } else {
- * // Handle the case where the item is closed
- * }
- * ```
+ *
*
* ### Behavior:
* - **Multiple Type**: If the accordion type is set to "Multiple", the method checks if the value exists in the list of selected/open values.
@@ -322,12 +223,7 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
*
* ### Returns
* This method does not return anything. It modifies the internal state of the accordion based on the toggled value.
- *
- * ### Example Usage
- * ```typescript
- * // To toggle an accordion item
- * this.toggle('item1'); // Toggles the open/closed state of 'item1'
- * ```
+ *
*
* ### Behavior:
* - **Single Accordion Mode**:
@@ -340,26 +236,48 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
public toggle(value: T): void {
const isOpenValue = this.isOpen(value);
- // Prevent toggle for single-type accordion when collapsible is false and already open.
- if (this.type() === 'Single' && isOpenValue && !this.collapsible()) {
- return;
+ if (this.type() === 'Single') {
+ this.toogleSingle(value, isOpenValue);
}
- if (this.type() === 'Single') {
- this.value.set(isOpenValue ? null : value); // Set to null for single-value mode.
+ if (this.type() === 'Multiple') {
+ this.toogleMultiple(value, isOpenValue);
}
+ }
- const values = (this.value() as T[]) ?? [];
+ protected toogleSingle(value: T, isOpen: boolean) {
+ if (isOpen && !this.collapsible()) return;
+ this.value.set(isOpen ? null : value);
+ }
+
+ protected toogleMultiple(value: T, isOpenValue: boolean) {
+ const values = Array.isArray(this.value())
+ ? [...(this.value() as T[])]
+ : [this.value()];
- // Toggle the value in the selected values list.
if (isOpenValue) {
- this.value.set(values.filter((v) => v !== value)); // Remove if currently open.
+ // @ts-expect-error
+ this.value.set(values?.filter((v) => v !== value));
} else {
- this.value.set([...values, value]); // Add if currently closed.
+ this.value.set([...(values as T[]), value]);
}
}
- // --------------------------- Hooks ---------------------------------- //
+ // -------------------------- Host Bindings --------------------------- //
+ @HostBinding('attr.data-orientation')
+ public get dataOrientationAttr() {
+ return this.accordionConfig.orientation;
+ }
+
+ @HostBinding('attr.data-disabled')
+ public get dataDisabledAttr() {
+ return this.disabled() ? '' : null;
+ }
+
+ @HostBinding('attr.data-type')
+ public get dataTypeAttr() {
+ return this.type();
+ }
/**
* Angular initialization hook.
@@ -368,9 +286,7 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
* @returns {void} This method does not return anything.
*/
ngOnInit(): void {
- this.runInitializationFn((ctx) => {
- console.log({ ctx });
- });
+ this.runInitializationFn();
}
/**
@@ -391,15 +307,7 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
*
* ### Returns
* This method does not return anything. It performs initialization tasks and optionally invokes the callback.
- *
- * ### Example Usage
- * ```typescript
- * // In the accordion component
- * this.runInitializationFn((params) => {
- * console.log('Accordion initialized with context:', params.context);
- * console.log('Initial value:', params.value);
- * });
- * ```
+ *
*
* ### Description
* - **Context Setup**: The `accordionRootContext.instance` is set to the current accordion instance,
@@ -408,19 +316,28 @@ export class NgxPrimerAccordionRootComponent implements OnInit {
* - **Callback Execution**: If the `doneFn` callback is provided, it is executed with the current context and value.
*/
protected runInitializationFn(doneFn?: (args?: P) => void): void {
- // set the context instance to allow inject in child component prevent manual prop drilling
- this.accordionRootContext.instance = this;
-
if (this.defaultValue()) {
this.value.set(this.defaultValue()); // Set default value if provided.
}
if (doneFn) {
- doneFn({
+ setTimeout(() => doneFn({
context: this.accordionRootContext
- .instance as NgxPrimerAccordionRootComponent,
- value: this.value(),
- }); // Execute the callback with the current value.
+ }))
}
}
+
+ moveFocus(currentIndex: number, direction: number) {
+ const accordionItems = this.accordionItems();
+ const nextIndex = (currentIndex + direction + accordionItems.length) % accordionItems.length;
+ accordionItems[nextIndex].focus()
+ }
+
+ moveFocusToEnd(){
+ this.accordionItems()[this.accordionItems().length -1].focus();
+ }
+
+ moveFocusToStart() {
+ this.accordionItems()[0].focus();
+ }
}
diff --git a/packages/primitives/accordion/src/components/accordion-trigger/accordion-trigger.component.ts b/packages/primitives/accordion/src/components/accordion-trigger/accordion-trigger.component.ts
index 0119345..324fa62 100644
--- a/packages/primitives/accordion/src/components/accordion-trigger/accordion-trigger.component.ts
+++ b/packages/primitives/accordion/src/components/accordion-trigger/accordion-trigger.component.ts
@@ -1,4 +1,4 @@
-/* eslint-disable @angular-eslint/no-input-rename */
+import { CommonModule, isPlatformBrowser } from '@angular/common';
/**
* Copyright [2024] [ElhakimDev]
*
@@ -14,25 +14,166 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { Component, input } from '@angular/core';
+import {
+ Component,
+ HostBinding,
+ HostListener,
+ OnInit,
+ PLATFORM_ID,
+ ViewContainerRef,
+ inject,
+} from '@angular/core';
+import {
+ NgxPrimerAccordionItemContext,
+ NgxPrimerAccordionTriggerContext,
+} from '../../contexts';
-import { CommonModule } from '@angular/common';
+import { NgxPrimerAccordionContentComponent } from '../accordion-content/accordion-content.component';
import { NgxPrimerAccordionItemComponent } from '../accordion-item/accordion-item.component';
+import { NgxPrimerAccordionRootComponent } from '../accordion-root/accordion-root.component';
+import { NgxPrimerAccordionTriggerContextDirective } from '../../directives';
+import { NgxPrimerIdGeneratorDirective } from '@ngx-primer/primitive/utilities';
@Component({
selector: 'ngx-primer-accordion-trigger',
standalone: true,
imports: [CommonModule],
+ providers: [NgxPrimerAccordionTriggerContext],
templateUrl: './accordion-trigger.component.html',
styleUrl: './accordion-trigger.component.scss',
+ hostDirectives: [
+ {
+ directive: NgxPrimerIdGeneratorDirective,
+ inputs: ['ngxPrimerIdAttr'],
+ },
+ {
+ directive: NgxPrimerAccordionTriggerContextDirective
+ }
+ ],
})
-export class NgxPrimerAccordionTriggerComponent {
- /**
- * Accodion item instance.
- */
- public readonly accordionItem = input.required<
- NgxPrimerAccordionItemComponent
- >({
- alias: 'ngxPrimerAccordionItemInstanceRef',
+export class NgxPrimerAccordionTriggerComponent implements OnInit {
+ protected readonly platformId = inject(PLATFORM_ID);
+ protected readonly viewContainerRef = inject(ViewContainerRef);
+ protected readonly idGenerator = inject(NgxPrimerIdGeneratorDirective, {
+ host: true,
+ optional: true,
});
+
+ public readonly accordionTriggerId = this.idGenerator?.resolvedId;
+
+ protected readonly accordionItemContext = inject(
+ NgxPrimerAccordionItemContext,
+ {
+ optional: true,
+ }
+ );
+
+ protected readonly accordionTriggerContext = inject(
+ NgxPrimerAccordionTriggerContext,
+ {
+ optional: true,
+ }
+ );
+
+ ngOnInit(): void {
+ this.runInitializationFn();
+ }
+
+ protected runInitializationFn(doneFn?: (args?: P) => void): void {
+ if (doneFn) {
+ setTimeout(() => doneFn({
+ context: this.accordionTriggerContext
+ }));
+ }
+ }
+
+ @HostListener('click')
+ toogle() {
+ if (this.accordionRoot?.disabled()) return;
+ this.accordionRoot?.toggle(this.accordionItem?.value());
+ }
+
+ @HostBinding('role')
+ public get roleAttr() {
+ return 'button';
+ }
+
+ @HostBinding('tabIndex')
+ public get tabIndexAttr() {
+ return this.accordionItem.isOpen() ? 0 : -1;
+ }
+
+ @HostBinding('attr.data-focus')
+ public get dataFocusAttr() {
+ return isPlatformBrowser(this.platformId) ? document.activeElement === this.viewContainerRef.element.nativeElement : false;
+ }
+
+ @HostBinding('attr.data-orientation')
+ public get dataOrientationAttr() {
+ return this.accordionRoot?.orientation();
+ }
+
+ @HostBinding('attr.data-is-open')
+ public get dataIsOpenAttr() {
+ return this.accordionItem?.isOpen();
+ }
+
+ @HostBinding('attr.data-expanded')
+ public get dataExpandedAttr() {
+ return this.accordionItem?.isOpen();
+ }
+
+ @HostBinding('attr.aria-controls')
+ public get dataControlsAttr() {
+ return this.accordionItem?.accordionContent()?.accordionContentId;
+ }
+
+ @HostListener('keydown', ['$event'])
+ onKeyDown(event: KeyboardEvent) {
+ const currentIndex = this.accordionRoot.accordionItems().findIndex((item: NgxPrimerAccordionItemComponent) => item.accordionTrigger() === this);
+
+ switch (event.key) {
+ case 'Enter':
+ case ' ':
+ this.toogle();
+ event.preventDefault();
+ break;
+ case 'ArrowDown':
+ this.accordionRoot.moveFocus(currentIndex, 1);
+ event.preventDefault();
+ break;
+ case 'ArrowUp':
+ this.accordionRoot.moveFocus(currentIndex, -1);
+ event.preventDefault();
+ break;
+ case 'Home':
+ this.accordionRoot.moveFocusToStart();
+ event.preventDefault();
+ break;
+ case 'End':
+ this.accordionRoot.moveFocusToEnd();
+ event.preventDefault();
+ break;
+ }
+ }
+
+ protected get accordionItem() {
+ return this.accordionItemContext
+ ?.instance as NgxPrimerAccordionItemComponent;
+ }
+
+ protected get accordionRoot() {
+ return this.accordionItem?.accordionRootContext
+ ?.instance as NgxPrimerAccordionRootComponent;
+ }
+
+ protected get accordionContent() {
+ return this.accordionItem?.accordionItemContext?.instance as NgxPrimerAccordionContentComponent;
+ }
+
+ focus() {
+ (this.viewContainerRef.element.nativeElement as HTMLElement).focus({
+ preventScroll: false
+ })
+ }
}
diff --git a/packages/primitives/accordion/src/contexts/accordion-content/accordion-content.context.spec.ts b/packages/primitives/accordion/src/contexts/accordion-content/accordion-content.context.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/contexts/accordion-content/accordion-content.context.ts b/packages/primitives/accordion/src/contexts/accordion-content/accordion-content.context.ts
new file mode 100644
index 0000000..d15e3cc
--- /dev/null
+++ b/packages/primitives/accordion/src/contexts/accordion-content/accordion-content.context.ts
@@ -0,0 +1,8 @@
+import { Component, Injectable } from '@angular/core';
+
+import { Context } from '@ngx-primer/primitive/utilities';
+
+@Injectable()
+export class NgxPrimerAccordionContentContext<
+ NgxPrimerAccordionContentComponent extends Component
+> extends Context {}
diff --git a/packages/primitives/accordion/src/contexts/accordion-item/accordion-item.context.spec.ts b/packages/primitives/accordion/src/contexts/accordion-item/accordion-item.context.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/contexts/accordion-item/accordion-item.context.ts b/packages/primitives/accordion/src/contexts/accordion-item/accordion-item.context.ts
new file mode 100644
index 0000000..6f983e7
--- /dev/null
+++ b/packages/primitives/accordion/src/contexts/accordion-item/accordion-item.context.ts
@@ -0,0 +1,8 @@
+import { Component, Injectable } from '@angular/core';
+
+import { Context } from '@ngx-primer/primitive/utilities';
+
+@Injectable()
+export class NgxPrimerAccordionItemContext<
+ NgxPrimerAccordionItemComponent extends Component
+> extends Context {}
diff --git a/packages/primitives/accordion/src/contexts/accordion-root/accordion-root.context.ts b/packages/primitives/accordion/src/contexts/accordion-root/accordion-root.context.ts
index df42b77..eb1c4e4 100644
--- a/packages/primitives/accordion/src/contexts/accordion-root/accordion-root.context.ts
+++ b/packages/primitives/accordion/src/contexts/accordion-root/accordion-root.context.ts
@@ -2,9 +2,7 @@ import { Component, Injectable } from '@angular/core';
import { Context } from '@ngx-primer/primitive/utilities';
-@Injectable({
- providedIn: 'root',
-})
-export class AccordionRootContext<
+@Injectable()
+export class NgxPrimerAccordionRootContext<
NgxPrimerAccordionRootComponent extends Component
> extends Context {}
diff --git a/packages/primitives/accordion/src/contexts/accordion-trigger/accordion-trigger.context.spec.ts b/packages/primitives/accordion/src/contexts/accordion-trigger/accordion-trigger.context.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/contexts/accordion-trigger/accordion-trigger.context.ts b/packages/primitives/accordion/src/contexts/accordion-trigger/accordion-trigger.context.ts
new file mode 100644
index 0000000..91d3eeb
--- /dev/null
+++ b/packages/primitives/accordion/src/contexts/accordion-trigger/accordion-trigger.context.ts
@@ -0,0 +1,8 @@
+import { Component, Injectable } from '@angular/core';
+
+import { Context } from '@ngx-primer/primitive/utilities';
+
+@Injectable()
+export class NgxPrimerAccordionTriggerContext<
+ NgxPrimerAccordionTriggerComponent extends Component
+> extends Context {}
diff --git a/packages/primitives/accordion/src/contexts/index.ts b/packages/primitives/accordion/src/contexts/index.ts
new file mode 100644
index 0000000..3baa3d4
--- /dev/null
+++ b/packages/primitives/accordion/src/contexts/index.ts
@@ -0,0 +1,4 @@
+export * from './accordion-root/accordion-root.context';
+export * from './accordion-item/accordion-item.context';
+export * from './accordion-content/accordion-content.context';
+export * from './accordion-trigger/accordion-trigger.context';
diff --git a/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.spec.ts b/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.spec.ts
deleted file mode 100644
index 1608b65..0000000
--- a/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.spec.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { NgxPrimerAccordionRootThemeVariantDirective } from './accordion-root-theme-variant.directive';
-
-describe('NgxPrimerAccordionRootThemeVariantDirective', () => {
- it('should create an instance', () => {
- const directive = new NgxPrimerAccordionRootThemeVariantDirective();
- expect(directive).toBeTruthy();
- });
-});
diff --git a/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.ts b/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.ts
deleted file mode 100644
index 51305d0..0000000
--- a/packages/primitives/accordion/src/directives/accordion-root/accordion-root-theme-variant.directive.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import {
- AccordionRootThemeVariant,
- accordionRootThemeVariant,
-} from '../../themes';
-import { Directive, HostBinding, model } from '@angular/core';
-
-import { injectAccordionConfig } from '../../configs/accordion-config';
-
-interface AccordionRootProps extends HTMLElement, AccordionRootThemeVariant {}
-@Directive({
- selector: '[ngxPrimerAccordionRootThemeVariant]',
- standalone: true,
- exportAs: 'ngxPrimerAccordionRootThemeVariant',
-})
-export class NgxPrimerAccordionRootThemeVariantDirective {
- /**
- * The accordion root variant.
- */
- public readonly variant = model('light', {
- alias: 'ngxPrimerAccordionRootVariant',
- });
-
- /**
- * The accordion root size.
- */
- public readonly size = model('md', {
- alias: 'ngxPrimerAccordionRootSize',
- });
-
- /**
- * The accordion root border radius.
- */
- public readonly borderRadius = model(
- 'md',
- {
- alias: 'ngxPrimerAcordionRootBorderRadius',
- }
- );
-
- /**
- * The accordion config instance.
- */
- protected readonly accordionConfig = injectAccordionConfig();
-
- /**
- * Check wether the built in theme variants was enabled.
- */
- protected get isEnableBuiltinThemeVariant() {
- return this.accordionConfig.theme.builtIn;
- }
-
- /**
- * Resolve built in theme variant.
- */
- protected get useBuiltinThemeVariant() {
- return accordionRootThemeVariant({
- size: this.size(),
- variant: this.variant(),
- borderRadius: this.borderRadius(),
- });
- }
-
- /**
- * Bind class attributes to the current accordion root instance.
- */
- @HostBinding('class')
- public get classLists() {
- return this.isEnableBuiltinThemeVariant ? this.useBuiltinThemeVariant : {};
- }
-}
diff --git a/packages/primitives/accordion/src/directives/animations/collapse-expand-animation/collapse-expand-animation.directive.ts b/packages/primitives/accordion/src/directives/animations/collapse-expand-animation/collapse-expand-animation.directive.ts
new file mode 100644
index 0000000..b484d92
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/animations/collapse-expand-animation/collapse-expand-animation.directive.ts
@@ -0,0 +1,52 @@
+import { CollapsibleState, animationTriggerName } from '../../../utils';
+/* eslint-disable @angular-eslint/no-input-rename */
+import { Directive, HostBinding, input } from '@angular/core';
+
+import { NgxPrimerAccordionOrientation } from '../../../configs/accordion-config';
+
+@Directive({
+ selector: '[ngxPrimerCollapsibleDirective]',
+ exportAs: 'ngxPrimerCollapsibleDirective',
+ standalone: true,
+})
+export class NgxPrimerCollapseExpandAnimationDirective {
+ public readonly collapsed = input.required({
+ alias: 'ngxPrimerCollapsed',
+ });
+
+ public readonly collapsibleDirection = input.required<
+ NgxPrimerAccordionOrientation | 'Vertical' | 'Horizontal'
+ >({
+ alias: 'ngxPrimerCollapsibleDirection',
+ });
+
+ @HostBinding(`@${animationTriggerName}`)
+ public get animationParams() {
+ return {
+ value: this.collapsed()
+ ? CollapsibleState.Collapsed
+ : CollapsibleState.Expanded,
+ params: {
+ collapsedHeight:
+ this.collapsibleDirection() === NgxPrimerAccordionOrientation.Vertical
+ ? '0px'
+ : '*',
+ collapsedWidth:
+ this.collapsibleDirection() ===
+ NgxPrimerAccordionOrientation.Horizontal
+ ? '0px'
+ : '*',
+ expandedHeight:
+ this.collapsibleDirection() === NgxPrimerAccordionOrientation.Vertical
+ ? '*'
+ : '*',
+ expandedWidth:
+ this.collapsibleDirection() ===
+ NgxPrimerAccordionOrientation.Horizontal
+ ? '*'
+ : '*',
+ duration: '300ms',
+ },
+ };
+ }
+}
diff --git a/packages/primitives/accordion/src/directives/appearance/accordion-root/accordion-root-style.directive.ts b/packages/primitives/accordion/src/directives/appearance/accordion-root/accordion-root-style.directive.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/appearance/accordion-root/accordion-root-style.directive.ts
@@ -0,0 +1 @@
+export {};
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-content/accordion-content.context.spec.ts b/packages/primitives/accordion/src/directives/component-context/accordion-content/accordion-content.context.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-content/accordion-content.context.ts b/packages/primitives/accordion/src/directives/component-context/accordion-content/accordion-content.context.ts
new file mode 100644
index 0000000..4affeda
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/component-context/accordion-content/accordion-content.context.ts
@@ -0,0 +1,32 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { Context, ContextDirective } from '@ngx-primer/primitive/utilities';
+
+import { Directive, inject, OnInit } from '@angular/core';
+import { NgxPrimerAccordionContentComponent} from '../../../components';
+import { NgxPrimerAccordionContentContext } from '../../../contexts';
+
+@Directive({
+ selector: '[ngxPrimerAccordionContentContextDirective]',
+ exportAs: 'ngxPrimerAccordionContentContextDirective',
+ standalone: true,
+})
+export class NgxPrimerAccordionContentContextDirective extends ContextDirective>
+implements OnInit{
+
+ protected override host: NgxPrimerAccordionContentComponent = inject(NgxPrimerAccordionContentComponent, {
+ host: true,
+ optional: true
+ })!;
+
+ protected override context: Context> = inject(NgxPrimerAccordionContentContext, {
+ optional: true,
+ })!;
+
+ ngOnInit(): void {
+ this.context.instance = this.host;
+ }
+
+ get instance() {
+ return this.context?.instance as NgxPrimerAccordionContentComponent;
+ }
+}
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-item/accordion-item-context.directive.spec.ts b/packages/primitives/accordion/src/directives/component-context/accordion-item/accordion-item-context.directive.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-item/accordion-item-context.directive.ts b/packages/primitives/accordion/src/directives/component-context/accordion-item/accordion-item-context.directive.ts
new file mode 100644
index 0000000..e85fa26
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/component-context/accordion-item/accordion-item-context.directive.ts
@@ -0,0 +1,32 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { Context, ContextDirective } from '@ngx-primer/primitive/utilities';
+
+import { Directive, inject, OnInit } from '@angular/core';
+import { NgxPrimerAccordionItemComponent} from '../../../components';
+import { NgxPrimerAccordionItemContext } from '../../../contexts';
+
+@Directive({
+ selector: '[ngxPrimerAccordionItemContextDirective]',
+ exportAs: 'ngxPrimerAccordionItemContextDirective',
+ standalone: true,
+})
+export class NgxPrimerAccordionItemContextDirective extends ContextDirective>
+implements OnInit{
+
+ protected override host: NgxPrimerAccordionItemComponent = inject(NgxPrimerAccordionItemComponent, {
+ host: true,
+ optional: true
+ })!;
+
+ protected override context: Context> = inject(NgxPrimerAccordionItemContext, {
+ optional: true,
+ })!;
+
+ ngOnInit(): void {
+ this.context.instance = this.host;
+ }
+
+ get instance() {
+ return this.context?.instance as NgxPrimerAccordionItemComponent;
+ }
+}
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-root/accordion-root-context.directive.spec.ts b/packages/primitives/accordion/src/directives/component-context/accordion-root/accordion-root-context.directive.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-root/accordion-root-context.directive.ts b/packages/primitives/accordion/src/directives/component-context/accordion-root/accordion-root-context.directive.ts
new file mode 100644
index 0000000..14dfa7a
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/component-context/accordion-root/accordion-root-context.directive.ts
@@ -0,0 +1,36 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { Directive, OnInit, inject } from '@angular/core';
+
+import { ContextDirective } from '@ngx-primer/primitive/utilities';
+import { NgxPrimerAccordionRootComponent } from '../../../components';
+import { NgxPrimerAccordionRootContext } from '../../../contexts';
+
+@Directive({
+ selector: '[ngxPrimerAccordionRootContextDirective]',
+ exportAs: 'ngxPrimerAccordionRootContextDirective',
+ standalone: true,
+})
+export class NgxPrimerAccordionRootContextDirective
+ extends ContextDirective>
+ implements OnInit
+{
+ protected override host: NgxPrimerAccordionRootComponent = inject(
+ NgxPrimerAccordionRootComponent,
+ {
+ host: true,
+ optional: true,
+ }
+ )!;
+
+ protected readonly context = inject(NgxPrimerAccordionRootContext, {
+ optional: true,
+ })!;
+
+ ngOnInit(): void {
+ this.context.instance = this.host;
+ }
+
+ get instance() {
+ return this.context?.instance as NgxPrimerAccordionRootComponent;
+ }
+}
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-trigger/accordion-trigger-context.directive.spec.ts b/packages/primitives/accordion/src/directives/component-context/accordion-trigger/accordion-trigger-context.directive.spec.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/primitives/accordion/src/directives/component-context/accordion-trigger/accordion-trigger-context.directive.ts b/packages/primitives/accordion/src/directives/component-context/accordion-trigger/accordion-trigger-context.directive.ts
new file mode 100644
index 0000000..dc7b3c0
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/component-context/accordion-trigger/accordion-trigger-context.directive.ts
@@ -0,0 +1,32 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { Context, ContextDirective } from '@ngx-primer/primitive/utilities';
+
+import { Directive, inject, OnInit } from '@angular/core';
+import { NgxPrimerAccordionTriggerComponent} from '../../../components';
+import { NgxPrimerAccordionTriggerContext } from '../../../contexts';
+
+@Directive({
+ selector: '[ngxPrimerAccordionTriggerContextDirective]',
+ exportAs: 'ngxPrimerAccordionTriggerContextDirective',
+ standalone: true,
+})
+export class NgxPrimerAccordionTriggerContextDirective extends ContextDirective>
+implements OnInit{
+
+ protected override host: NgxPrimerAccordionTriggerComponent = inject(NgxPrimerAccordionTriggerComponent, {
+ host: true,
+ optional: true
+ })!;
+
+ protected override context: Context> = inject(NgxPrimerAccordionTriggerContext, {
+ optional: true,
+ })!;
+
+ ngOnInit(): void {
+ this.context.instance = this.host;
+ }
+
+ get instance() {
+ return this.context?.instance as NgxPrimerAccordionTriggerComponent;
+ }
+}
diff --git a/packages/primitives/accordion/src/directives/component-context/index.ts b/packages/primitives/accordion/src/directives/component-context/index.ts
new file mode 100644
index 0000000..6ec29fa
--- /dev/null
+++ b/packages/primitives/accordion/src/directives/component-context/index.ts
@@ -0,0 +1,4 @@
+export * from './accordion-root/accordion-root-context.directive';
+export * from './accordion-item/accordion-item-context.directive';
+export * from './accordion-content/accordion-content.context';
+export * from './accordion-trigger/accordion-trigger-context.directive';
diff --git a/packages/primitives/accordion/src/directives/index.ts b/packages/primitives/accordion/src/directives/index.ts
index 8f4fd77..bf99962 100644
--- a/packages/primitives/accordion/src/directives/index.ts
+++ b/packages/primitives/accordion/src/directives/index.ts
@@ -1 +1,2 @@
-export * from './accordion-root/accordion-root-theme-variant.directive';
\ No newline at end of file
+export * from './animations/collapse-expand-animation/collapse-expand-animation.directive';
+export * from './component-context';
diff --git a/packages/primitives/accordion/src/index.ts b/packages/primitives/accordion/src/index.ts
index a8405e3..bdd9265 100644
--- a/packages/primitives/accordion/src/index.ts
+++ b/packages/primitives/accordion/src/index.ts
@@ -1,3 +1,5 @@
export * from './components';
export * from './directives';
-export * from './themes';
\ No newline at end of file
+export * from './themes';
+export * from './tokens';
+export * from './utils';
diff --git a/packages/primitives/accordion/src/tokens/accordion-component.token.ts b/packages/primitives/accordion/src/tokens/accordion-component.token.ts
index e73b9b5..cf0d133 100644
--- a/packages/primitives/accordion/src/tokens/accordion-component.token.ts
+++ b/packages/primitives/accordion/src/tokens/accordion-component.token.ts
@@ -1,6 +1,24 @@
+import {
+ NgxPrimerAccordionContentComponent,
+ NgxPrimerAccordionItemComponent,
+ NgxPrimerAccordionRootComponent,
+ NgxPrimerAccordionTriggerComponent,
+} from '../components';
+
import { InjectionToken } from '@angular/core';
-import { NgxPrimerAccordionRootComponent } from '../components';
export const NgxPrimerAccordionRootComponentToken = new InjectionToken<
NgxPrimerAccordionRootComponent
>('NgxPrimerAccordionRootComponentToken');
+
+export const NgxPrimerAccordionItemComponentToken = new InjectionToken<
+ NgxPrimerAccordionItemComponent
+>('NgxPrimerAccordionItemComponentToken');
+
+export const NgxPrimerAccordionTriggerComponentToken = new InjectionToken<
+ NgxPrimerAccordionTriggerComponent
+>('NgxPrimerAccordionTriggerComponentToken');
+
+export const NgxPrimerAccordionContentComponentToken = new InjectionToken<
+ NgxPrimerAccordionContentComponent
+>('NgxPrimerAccordionContentComponentToken');
diff --git a/packages/primitives/accordion/src/tokens/index.ts b/packages/primitives/accordion/src/tokens/index.ts
new file mode 100644
index 0000000..a4b7097
--- /dev/null
+++ b/packages/primitives/accordion/src/tokens/index.ts
@@ -0,0 +1,2 @@
+export * from './accordion-component.token';
+export * from './accordion-config.token';
diff --git a/packages/primitives/accordion/src/utils/animations/collapse-expand-animation/collapse-expand-animation.ts b/packages/primitives/accordion/src/utils/animations/collapse-expand-animation/collapse-expand-animation.ts
new file mode 100644
index 0000000..2f64b1e
--- /dev/null
+++ b/packages/primitives/accordion/src/utils/animations/collapse-expand-animation/collapse-expand-animation.ts
@@ -0,0 +1,71 @@
+import {
+ animate,
+ state,
+ style,
+ transition,
+ trigger,
+} from '@angular/animations';
+export enum CollapsibleState {
+ Collapsed = 'collapsed',
+ Expanded = 'Expanded',
+}
+export const animationTriggerName = 'ngxPrimerCollapsibleAnimation';
+export const animationTimingDuration = '200ms';
+export const animationEasingFn = 'cubic-bezier(0.5, 0.0, 0.5, 1)';
+const expandedState = state(
+ CollapsibleState.Expanded,
+ style({
+ maxHeight: '{{expandedHeight}}',
+ maxWidth: '{{expandedWidth}}',
+ opacity: 1,
+ paddingTop: '8px',
+ paddingBottom: '8px',
+ paddingLeft: '8px',
+ paddingRight: '8px',
+ }),
+ {
+ params: {
+ expandedHeight: '500px',
+ expandedWidth: '500px',
+ },
+ }
+);
+const collapsedState = state(
+ CollapsibleState.Collapsed,
+ style({
+ maxHeight: '{{collapsedHeight}}',
+ maxWidth: '{{collapsedWidth}}',
+ opacity: 0,
+ paddingTop: '0px',
+ paddingBottom: '0px',
+ paddingLeft: '8px',
+ paddingRight: '8px',
+ }),
+ {
+ params: {
+ collapsedHeight: '0px',
+ collapsedWidth: '0px',
+ },
+ }
+);
+export const collapsibleState = {
+ collapse: collapsedState,
+ expanded: expandedState,
+};
+export const collapsibleTransition = {
+ default: transition(
+ `${CollapsibleState.Collapsed} <=> ${CollapsibleState.Expanded}`,
+ [animate('{{timingDuration}} {{easingFunction}}')],
+ {
+ params: {
+ timingDuration: animationTimingDuration,
+ easingFunction: animationEasingFn,
+ },
+ }
+ ),
+};
+export const collapseExpandAnimation = trigger(animationTriggerName, [
+ collapsibleState.collapse,
+ collapsibleState.expanded,
+ collapsibleTransition.default,
+]);
diff --git a/packages/primitives/accordion/src/utils/animations/index.ts b/packages/primitives/accordion/src/utils/animations/index.ts
new file mode 100644
index 0000000..1ae68d3
--- /dev/null
+++ b/packages/primitives/accordion/src/utils/animations/index.ts
@@ -0,0 +1 @@
+export * from './collapse-expand-animation/collapse-expand-animation';
diff --git a/packages/primitives/accordion/src/utils/index.ts b/packages/primitives/accordion/src/utils/index.ts
new file mode 100644
index 0000000..bdc583c
--- /dev/null
+++ b/packages/primitives/accordion/src/utils/index.ts
@@ -0,0 +1 @@
+export * from './animations/collapse-expand-animation/collapse-expand-animation';
diff --git a/packages/primitives/slot/package.json b/packages/primitives/slot/package.json
index fc3b84f..f8b0393 100644
--- a/packages/primitives/slot/package.json
+++ b/packages/primitives/slot/package.json
@@ -1,6 +1,6 @@
{
"name": "@ngx-primer/primitive/slot",
- "version": "0.0.2-0",
+ "version": "0.0.2",
"peerDependencies": {
"@angular/common": "^18.2.0",
"@angular/core": "^18.2.0"
diff --git a/packages/primitives/utilities/package.json b/packages/primitives/utilities/package.json
index 83ca142..49de46b 100644
--- a/packages/primitives/utilities/package.json
+++ b/packages/primitives/utilities/package.json
@@ -1,6 +1,6 @@
{
"name": "@ngx-primer/primitive/utilities",
- "version": "0.0.2-0",
+ "version": "0.0.2",
"peerDependencies": {
"@angular/core": "^18.2.0",
"nanoid": "5.0.8"
diff --git a/packages/primitives/utilities/src/directives/event-listeners/index.ts b/packages/primitives/utilities/src/directives/event-listeners/index.ts
new file mode 100644
index 0000000..13f00f3
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/index.ts
@@ -0,0 +1,2 @@
+export * from './keyboard-event/keyboard-event.directive';
+export * from './mouse-event/mouse-event.directive';
diff --git a/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event-key.interface.ts b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event-key.interface.ts
new file mode 100644
index 0000000..852837e
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event-key.interface.ts
@@ -0,0 +1,12 @@
+export enum FunctionalKey {
+ Enter = 'Enter', // Activates a button, form submission, etc.
+ Escape = 'Escape', // Cancels an action or closes a modal.
+ Tab = 'Tab', // Move focus to the next focusable element.
+ Backspace = 'Backspace', // Deletes a character to the left.
+ Delete = 'Delete', // Deletes a character to the right.
+ ArrowUp = 'ArrowUp', // Moves up (e.g., in dropdowns, lists, etc.).
+ ArrowDown = 'ArrowDown', // Moves down.
+ ArrowLeft = 'ArrowLeft', // Moves left.
+ ArrowRight = 'ArrowRight', // Moves right.
+ Space = 'Space', // Activates a button or checkbox when focused.
+}
diff --git a/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.spec.ts b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.spec.ts
new file mode 100644
index 0000000..aa45791
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.spec.ts
@@ -0,0 +1,8 @@
+import { NgxPrimerKeyboardEventDirective } from './keyboard-event.directive';
+
+describe('KeyboardEventDirective', () => {
+ it('should create an instance', () => {
+ const directive = new NgxPrimerKeyboardEventDirective();
+ expect(directive).toBeTruthy();
+ });
+});
diff --git a/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.ts b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.ts
new file mode 100644
index 0000000..9e41f1d
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.directive.ts
@@ -0,0 +1,63 @@
+/* eslint-disable @angular-eslint/no-input-rename */
+import { Directive, HostListener, input } from '@angular/core';
+
+@Directive({
+ selector: '[ngxPrimerKeyboardEventDirective]',
+ exportAs: 'ngxPrimerKeyboardEventDirective',
+ standalone: true,
+})
+export class NgxPrimerKeyboardEventDirective {
+ public readonly onKeyUp = input<((event: KeyboardEvent) => void) | null>(
+ null,
+ {
+ alias: 'ngxPrimerOnKeyUpEvent',
+ }
+ );
+
+ public readonly onKeyDown = input<((event: KeyboardEvent) => void) | null>(
+ null,
+ {
+ alias: 'ngxPrimerOnKeyDownEvent',
+ }
+ );
+
+ public readonly onKeyPress = input<((event: KeyboardEvent) => void) | null>(
+ null,
+ {
+ alias: 'ngxPrimerOnKeyPressEvent',
+ }
+ );
+
+ @HostListener('keyup', ['$event']) handleOnKeyUpListener(
+ event: KeyboardEvent
+ ) {
+ if (this.onKeyUp()) {
+ const onKeyUpFn = this.onKeyUp() as unknown as (
+ event: KeyboardEvent
+ ) => void;
+ onKeyUpFn(event);
+ }
+ }
+
+ @HostListener('keydown', ['$event']) handleOnKeyDownListener(
+ event: KeyboardEvent
+ ) {
+ if (this.onKeyDown()) {
+ const onKeyDown = this.onKeyDown() as unknown as (
+ event: KeyboardEvent
+ ) => void;
+ onKeyDown(event);
+ }
+ }
+
+ @HostListener('keypress', ['$event']) handleOnKeyPressListener(
+ event: KeyboardEvent
+ ) {
+ if (this.onKeyPress()) {
+ const onKeyPress = this.onKeyPress() as unknown as (
+ event: KeyboardEvent
+ ) => void;
+ onKeyPress(event);
+ }
+ }
+}
diff --git a/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.summaries.md b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.summaries.md
new file mode 100644
index 0000000..3cc8765
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/keyboard-event/keyboard-event.summaries.md
@@ -0,0 +1,122 @@
+Here is a comprehensive list of keyboard events in the **DOM** that you can handle using Angular's `@HostListener` or JavaScript. These events are divided into categories based on their purpose:
+
+---
+
+### **1. General Keyboard Events**
+
+These events are triggered during keyboard interaction.
+
+| **Event Name** | **Description** |
+| -------------- | ------------------------------------------------------------------------------------------- |
+| `keydown` | Fired when a key is pressed down. This event fires continuously as long as the key is held. |
+| `keypress` | (Deprecated) Similar to `keydown`, but only for printable characters. |
+| `keyup` | Fired when a key is released. |
+
+---
+
+### **2. Key Properties (KeyboardEvent API)**
+
+You can access specific properties in the event object:
+
+| **Property** | **Description** |
+| ------------- | ----------------------------------------------------------------------------- |
+| `key` | The value of the key pressed (e.g., `"Enter"`, `"A"`, `"1"`). |
+| `code` | The physical key on the keyboard (e.g., `"KeyA"`, `"Digit1"`, `"ArrowUp"`). |
+| `altKey` | `true` if the `Alt` key is pressed. |
+| `ctrlKey` | `true` if the `Control` key is pressed. |
+| `metaKey` | `true` if the `Meta` key is pressed (Windows Key / Command Key on macOS). |
+| `shiftKey` | `true` if the `Shift` key is pressed. |
+| `repeat` | `true` if the event is fired repeatedly when a key is held down. |
+| `isComposing` | `true` if the input method is composing (used for IME - Input Method Editor). |
+
+---
+
+### **3. Commonly Used Keys**
+
+These are frequently used keys in web applications:
+
+#### **Functional Keys**
+
+| **Key** | **Description** |
+| ------------ | -------------------------------------------- |
+| `Enter` | Activates a button, form submission, etc. |
+| `Escape` | Cancels an action or closes a modal. |
+| `Tab` | Moves focus to the next focusable element. |
+| `Backspace` | Deletes a character to the left. |
+| `Delete` | Deletes a character to the right. |
+| `ArrowUp` | Moves up (e.g., in dropdowns, lists, etc.). |
+| `ArrowDown` | Moves down. |
+| `ArrowLeft` | Moves left. |
+| `ArrowRight` | Moves right. |
+| `Space` | Activates a button or checkbox when focused. |
+
+#### **Modifier Keys**
+
+| **Key** | **Description** |
+| ------------------ | --------------------------------------------- |
+| `Shift` | Used to modify other keys (e.g., uppercase). |
+| `Control` / `Ctrl` | Modifier for shortcuts (e.g., `Ctrl+C`). |
+| `Alt` | Modifier for alternate functions. |
+| `Meta` | Windows Key (Windows) or Command Key (macOS). |
+
+#### **Navigation Keys**
+
+| **Key** | **Description** |
+| ---------- | --------------------------------------------- |
+| `Home` | Moves to the beginning of a document or line. |
+| `End` | Moves to the end of a document or line. |
+| `PageUp` | Scrolls up one page. |
+| `PageDown` | Scrolls down one page. |
+
+#### **Media Keys (if supported by the device)**
+
+| **Key** | **Description** |
+| -------------------- | ---------------------------- |
+| `MediaPlayPause` | Plays/pauses media. |
+| `MediaNextTrack` | Skips to the next track. |
+| `MediaPreviousTrack` | Skips to the previous track. |
+| `VolumeUp` | Increases the volume. |
+| `VolumeDown` | Decreases the volume. |
+| `Mute` | Mutes the audio. |
+
+---
+
+### **4. Handling Accessibility**
+
+These keys are commonly used for accessibility purposes:
+
+| **Key** | **Description** |
+| ----------------------- | ------------------------------------------- |
+| `ArrowUp` / `ArrowDown` | Navigate within menus, dropdowns, or lists. |
+| `Tab` | Navigate between focusable elements. |
+| `Enter` | Activates a selected item. |
+| `Escape` | Closes dialogs, modals, or dropdowns. |
+| `Space` | Activates focused controls like checkboxes. |
+
+---
+
+### **5. Deprecated Keyboard Events**
+
+- **`keypress`**: Deprecated because it doesn't handle non-printable keys (e.g., `Arrow`, `Escape`).
+
+---
+
+### **6. Key Combinations**
+
+You can handle key combinations by checking `event.altKey`, `event.ctrlKey`, `event.shiftKey`, or `event.metaKey`.
+
+#### Examples:
+
+```typescript
+@HostListener('keydown', ['$event'])
+handleKeyDown(event: KeyboardEvent): void {
+ if (event.ctrlKey && event.key === 's') {
+ console.log('Ctrl+S pressed!');
+ event.preventDefault(); // Prevent the default browser save behavior.
+ }
+}
+```
+
+---
+
+Would you like more details on specific scenarios, such as keyboard navigation or shortcut handling?
diff --git a/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.spec.ts b/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.spec.ts
new file mode 100644
index 0000000..78a49a7
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.spec.ts
@@ -0,0 +1,8 @@
+import { NgxPrimerMouseEventDirective } from './mouse-event.directive';
+
+describe('MouseEventDirective', () => {
+ it('should create an instance', () => {
+ const directive = new NgxPrimerMouseEventDirective();
+ expect(directive).toBeTruthy();
+ });
+});
diff --git a/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.ts b/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.ts
new file mode 100644
index 0000000..4cc7776
--- /dev/null
+++ b/packages/primitives/utilities/src/directives/event-listeners/mouse-event/mouse-event.directive.ts
@@ -0,0 +1,17 @@
+/* eslint-disable @angular-eslint/no-output-rename */
+import { Directive, HostListener, output } from '@angular/core';
+
+@Directive({
+ selector: '[ngxPrimerMouseEventDirective]',
+ exportAs: 'ngxPrimerMouseEventDirective',
+ standalone: true,
+})
+export class NgxPrimerMouseEventDirective {
+ protected readonly clickEvent = output({
+ alias: 'ngxPrimerOnClickEvent',
+ });
+
+ @HostListener('click', ['$event']) handleOnCLickListener(event: MouseEvent) {
+ this.clickEvent.emit(event);
+ }
+}
diff --git a/packages/primitives/utilities/src/directives/id-generator/id-generator.config.ts b/packages/primitives/utilities/src/directives/id-generator/id-generator.config.ts
deleted file mode 100644
index bcd0551..0000000
--- a/packages/primitives/utilities/src/directives/id-generator/id-generator.config.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export type IdGeneratorConfig = {
- prefix: string;
-};
diff --git a/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.spec.ts b/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.spec.ts
index 26a81b6..246b811 100644
--- a/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.spec.ts
+++ b/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.spec.ts
@@ -1,124 +1,8 @@
-/* eslint-disable @typescript-eslint/ban-ts-comment */
-import { ElementRef, ViewContainerRef } from '@angular/core';
+import { IdGeneratorDirective } from './id-generator.directive';
-import { IdGeneratorConfig } from '../../providers/id-generator/id-generator.provider';
-import { NgxPrimerIdGeneratorDirective } from './id-generator.directive';
-
-describe('NgxPrimerIdGeneratorDirective', () => {
- let directive: NgxPrimerIdGeneratorDirective;
- let mockElementRef: Partial;
- let mockViewContainerRef: Partial;
-
- beforeEach(() => {
- mockElementRef = {
- nativeElement: { tagName: 'DIV' },
- };
- mockViewContainerRef = {
- element: {
- nativeElement: { tagName: 'APP-MY-COMPONENT' },
- },
- };
-
- directive = new NgxPrimerIdGeneratorDirective();
- });
-
- describe('given a valid configuration and custom ID', () => {
- beforeEach(() => {
- // @ts-expect-error
- directive.customId = () => 'custom-id';
- directive.config = {
- prefix: 'test',
- separator: '-',
- } as Partial;
- });
-
- describe('when the directive initializes', () => {
- it('should generate a unique and sanitized ID', () => {
- directive.ngOnInit();
-
- expect(directive.generatedId).toMatch(
- /^app-my-component-custom-id-\d+-[a-z0-9]+$/
- );
- });
-
- it('should correctly sanitize the ID', () => {
- // @ts-expect-error
- directive.customId = () => 'Invalid@ID';
- directive.ngOnInit();
-
- expect(directive.generatedId).toContain('invalid-id');
- });
- });
- });
-
- describe('given no custom ID is provided', () => {
- beforeEach(() => {
- // @ts-expect-error
- directive.customId = undefined;
- });
-
- describe('when the directive initializes', () => {
- it('should generate a unique ID based on the component and tag name', () => {
- directive.ngOnInit();
-
- expect(directive.generatedId).toMatch(
- /^app-my-component-div-\d+-[a-z0-9]+$/
- );
- });
- });
- });
-
- describe('given an invalid component or tag name', () => {
- beforeEach(() => {
- mockElementRef.nativeElement = { tagName: 'INVALID@TAG' };
- });
-
- describe('when the directive initializes', () => {
- it('should sanitize the tag name in the generated ID', () => {
- directive.ngOnInit();
-
- expect(directive.generatedId).toContain('invalid-tag');
- });
-
- it('should still produce a unique ID', () => {
- directive.ngOnInit();
-
- expect(directive.generatedId).toMatch(/-[a-z0-9]+$/);
- });
- });
- });
-
- describe('given no host component is resolved', () => {
- beforeEach(() => {
- // @ts-expect-error
- mockViewContainerRef.element.nativeElement = undefined;
- });
-
- describe('when the directive initializes', () => {
- it('should default to an unknown component name', () => {
- directive.ngOnInit();
-
- expect(directive.generatedId).toContain('unknown-element');
- });
- });
- });
-
- describe('given multiple instances of the same tag', () => {
- beforeEach(() => {
- mockElementRef.nativeElement = { tagName: 'DIV' };
- });
-
- describe('when the directive initializes multiple times', () => {
- it('should increment the counter for the same tag', () => {
- directive.ngOnInit();
- const firstId = directive.generatedId;
-
- const anotherDirective = new NgxPrimerIdGeneratorDirective();
- anotherDirective.ngOnInit();
- const secondId = anotherDirective.generatedId;
-
- expect(firstId).not.toEqual(secondId);
- });
- });
+describe('IdGeneratorDirective', () => {
+ it('should create an instance', () => {
+ const directive = new IdGeneratorDirective();
+ expect(directive).toBeTruthy();
});
});
diff --git a/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.ts b/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.ts
index 1c443ef..543355d 100644
--- a/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.ts
+++ b/packages/primitives/utilities/src/directives/id-generator/id-generator.directive.ts
@@ -1,187 +1,63 @@
/* eslint-disable @angular-eslint/no-input-rename */
-/* eslint-disable @typescript-eslint/no-explicit-any */
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
-/**
- * Copyright [2024] [ElhakimDev]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
import {
Directive,
- ElementRef,
HostBinding,
- OnInit,
ViewContainerRef,
+ computed,
inject,
input,
} from '@angular/core';
-import { IdGeneratorConfig } from './id-generator.config';
-import { nanoid } from 'nanoid';
+import { customAlphabet } from 'nanoid';
-// Map to track counters for each component and tag
-const COMPONENT_COUNTERS: Map> = new Map();
+const nanoid = customAlphabet('1234567890abcdef', 10);
+const nextIdentifier = nanoid(10);
@Directive({
selector: '[ngxPrimerIdGenerator]',
exportAs: 'ngxPrimerIdGenerator',
standalone: true,
})
-export class NgxPrimerIdGeneratorDirective implements OnInit {
- private _config!: IdGeneratorConfig;
-
- /**
- * User-provided custom ID, if any.
- * This ID will be used if provided, otherwise, a default ID will be generated.
- */
- public readonly customId = input('', {
- alias: 'ngxPrimerId',
+export class NgxPrimerIdGeneratorDirective {
+ public readonly idAttr = input('', {
+ alias: 'ngxPrimerIdAttr',
});
- /**
- * Access to the element reference.
- * Injected to provide direct interaction with the DOM element.
- */
- private readonly elementRef = inject(ElementRef);
-
- /**
- * Access to the view container reference.
- * This allows interaction with the container where the directive is applied.
- */
- private readonly viewContainerRef = inject(ViewContainerRef);
-
- /**
- * The host component instance, if available.
- * Will be used to resolve the component's selector for ID generation.
- */
- public hostComponent: unknown | null = null;
-
- @HostBinding('attr.id')
- public generatedId!: string;
-
- /**
- * Set configuration options.
- * Merges the provided config with the current settings.
- */
- set config(config: Partial) {
- this._config = { ...this._config, ...config };
- }
-
- /**
- * On initialization, generates and assigns a unique ID to the element.
- * The ID is composed of a sanitized component name, tag name, and a unique counter.
- */
- ngOnInit(): void {
- // Get the component's selector if available
- this.hostComponent = this.getComponentSelector();
- const componentName = (this.hostComponent ??
- 'ngx-primer-component') as string;
- const tagName = this.elementRef.nativeElement.tagName.toLowerCase();
-
- // Initialize counters for components and tags
- this.initializeComponentCounters(componentName, tagName);
-
- // Sanitize the component and tag names for a valid ID format
- const sanitizedComponent = this.sanitize(componentName as string);
- const sanitizedTag = this.sanitize(tagName);
-
- // Generate a unique ID for the component
- this.generatedId = this.customId
- ? `${sanitizedComponent}-${this.sanitize(this.customId())}-${
- COMPONENT_COUNTERS.get(componentName)![tagName]
- }-${nanoid()}`
- : `${sanitizedComponent}-${sanitizedTag}-${
- COMPONENT_COUNTERS.get(componentName)![tagName]
- }-${nanoid()}`;
-
- // Increment the counter for this component-tag pair
- COMPONENT_COUNTERS.get(componentName)![tagName]++;
+ protected readonly _uniqueKey = nextIdentifier;
- // Normalize multiple hyphens to a single one
- this.generatedId = this.generatedId.replace(/-+/g, '-').toLowerCase();
+ protected readonly _viewContainerRef = inject(ViewContainerRef);
- // this.provider.register('NgxPrimerIdGeneratorDirective', this as NgxPrimerIdGeneratorDirective)
- }
-
- /**
- * Sanitizes a string by replacing invalid characters with a hyphen.
- * Ensures that the component and tag names are valid in the ID.
- */
- private sanitize(value: string): string {
- return value.replace(/[^a-zA-Z0-9-_\\.]/g, '-').toLowerCase();
- }
+ protected readonly _element = computed(
+ () => this._viewContainerRef.element.nativeElement as HTMLElement
+ );
+ protected readonly _hostNodeRef = computed(() => ({
+ tagName: this._element().tagName,
+ localName: this._element().localName,
+ originalId: this._element().id,
+ }));
- /**
- * Initializes the component's counter for a given tag name.
- * Ensures that each component-tag combination has a starting counter.
- */
- private initializeComponentCounters(
- componentName: string,
- tagName: string
- ): void {
- if (!COMPONENT_COUNTERS.has(componentName)) {
- COMPONENT_COUNTERS.set(componentName, {});
- }
+ protected readonly _resolvedId = computed(() => {
+ const { id, ...parts } = this.resolveHostId();
+ return id ?? Object.values(parts).join('-');
+ });
- const tagCounters = COMPONENT_COUNTERS.get(componentName)!;
- if (!tagCounters[tagName]) {
- tagCounters[tagName] = 0;
+ protected resolveHostId() {
+ if (this._element().id.length !== 0) {
+ return { id: this._element().id };
}
- }
-
- /**
- * Resolves the host component selector from the view container reference.
- * If no component is found, defaults to 'unknown-component'.
- */
- private getComponentSelector(): string | null {
- const nativeElement = this.viewContainerRef.element.nativeElement;
-
- const tagName = nativeElement.tagName?.toLowerCase();
- if (tagName) return tagName;
-
- // Try to resolve the host component if tag name is not available
- const hostComponent = this.resolveHostComponent();
- return hostComponent
- ? (hostComponent.constructor as any).selector ?? 'unknown-component'
- : 'unknown-element';
- }
-
- /**
- * Resolves the host component from the view container.
- * This function uses the internal `_lContainer` to fetch the component.
- */
- private resolveHostComponent(): unknown | null {
- const lContainer = (this.viewContainerRef as any)._lContainer;
- if (!lContainer) return null;
- // Indexing used to resolve the component's context from the LView container
- const HOST_INDEX = 0;
- const CONTEXT_INDEX = 8;
+ const customPrefix = this.idAttr();
+ const componentName = this._hostNodeRef().localName;
+ const uniquedIdentifierKey = this._uniqueKey;
- const lView = lContainer[HOST_INDEX];
- return lView ? lView[CONTEXT_INDEX] || null : null;
+ return {
+ customPrefix,
+ componentName,
+ uniquedIdentifierKey,
+ };
}
- /**
- * A snapshot of the current component counters.
- * Returns an array of components and their respective tag counters.
- */
- get countersSnapshot() {
- return Array.from(COMPONENT_COUNTERS.entries()).map(
- ([component, tags]) => ({
- component,
- tags,
- })
- );
+ @HostBinding('attr.id') get resolvedId() {
+ return this._resolvedId();
}
}
diff --git a/packages/primitives/utilities/src/directives/index.ts b/packages/primitives/utilities/src/directives/index.ts
index c386b5d..dd44abb 100644
--- a/packages/primitives/utilities/src/directives/index.ts
+++ b/packages/primitives/utilities/src/directives/index.ts
@@ -1 +1,2 @@
export * from './id-generator/id-generator.directive';
+export * from './event-listeners';
diff --git a/packages/primitives/utilities/src/index.ts b/packages/primitives/utilities/src/index.ts
index 0fd8dfa..963da9e 100644
--- a/packages/primitives/utilities/src/index.ts
+++ b/packages/primitives/utilities/src/index.ts
@@ -1,2 +1,3 @@
-export * from './directives/id-generator/id-generator.directive';
export * from './utils/context/context';
+export * from './utils/context/context-directive';
+export * from './directives';
diff --git a/packages/primitives/utilities/src/utils/context/context-directive.ts b/packages/primitives/utilities/src/utils/context/context-directive.ts
new file mode 100644
index 0000000..67430a7
--- /dev/null
+++ b/packages/primitives/utilities/src/utils/context/context-directive.ts
@@ -0,0 +1,12 @@
+import { Context } from './context';
+import { Directive } from '@angular/core';
+
+@Directive({
+ selector: '[ngxPrimerContextDirective]',
+ exportAs: 'ngxPrimerContextDirective',
+ standalone: true,
+})
+export abstract class ContextDirective {
+ protected abstract readonly host: T;
+ protected abstract readonly context: Context;
+}
diff --git a/packages/primitives/utilities/src/utils/context/context.ts b/packages/primitives/utilities/src/utils/context/context.ts
index 0e0d265..ce4a654 100644
--- a/packages/primitives/utilities/src/utils/context/context.ts
+++ b/packages/primitives/utilities/src/utils/context/context.ts
@@ -1,7 +1,7 @@
-import { Component, Injectable, signal } from '@angular/core';
+import { Injectable, signal } from '@angular/core';
@Injectable()
-export abstract class Context {
+export abstract class Context {
private _instance = signal(null);
set instance(instance: T) {
@@ -9,6 +9,6 @@ export abstract class Context {
}
get instance(): T | null {
- return this._instance();
+ return this._instance() as T;
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d618308..1776b66 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,10 +9,10 @@ importers:
dependencies:
'@analogjs/content':
specifier: ^1.7.0
- version: 1.9.4(eziz7pypilkdu6gvivmuk3c4am)
+ version: 1.9.4(o2i2lnlh4hta6usg74df5sntw4)
'@analogjs/router':
specifier: ^1.7.0
- version: 1.9.4(@analogjs/content@1.9.4(eziz7pypilkdu6gvivmuk3c4am))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/router@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1))
+ version: 1.9.4(@analogjs/content@1.9.4(o2i2lnlh4hta6usg74df5sntw4))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/router@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1))
'@angular/animations':
specifier: ~18.2.13
version: 18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))
@@ -70,7 +70,7 @@ importers:
devDependencies:
'@analogjs/platform':
specifier: 1.10.0-beta.6
- version: 1.10.0-beta.6(nyoojjlqzpoaiiylwftngxmatm)
+ version: 1.10.0-beta.6(d2pvisb3dcolhizruxpy64qjtm)
'@analogjs/vite-plugin-angular':
specifier: ^1.9.0
version: 1.9.4(eqvhc5kwfcihayihcvjnnlx36i)
@@ -98,36 +98,42 @@ importers:
'@eslint/js':
specifier: ^9.15.0
version: 9.15.0
+ '@ng-icons/core':
+ specifier: ^29.10.0
+ version: 29.10.0(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1)
+ '@ng-icons/heroicons':
+ specifier: ^29.10.0
+ version: 29.10.0
'@nx/angular':
- specifier: 20.1.0
- version: 20.1.0(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
+ specifier: 20.1.3
+ version: 20.1.3(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
'@nx/devkit':
- specifier: 20.1.0
- version: 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ specifier: 20.1.3
+ version: 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
'@nx/eslint':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@nx/eslint-plugin':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.15.0(jiti@2.4.0)))(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.15.0(jiti@2.4.0)))(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@nx/jest':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@nx/js':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@nx/playwright':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@playwright/test@1.49.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@playwright/test@1.49.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
'@nx/vite':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
'@nx/web':
- specifier: 20.1.0
- version: 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ specifier: 20.1.3
+ version: 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@nx/workspace':
- specifier: 20.1.0
- version: 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ specifier: 20.1.3
+ version: 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
'@playwright/test':
specifier: ^1.49.0
version: 1.49.0
@@ -201,8 +207,8 @@ importers:
specifier: ~18.2.1
version: 18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(tailwindcss@3.4.15(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(typescript@5.5.4)))(tslib@2.8.1)(typescript@5.5.4)
nx:
- specifier: 20.1.0
- version: 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ specifier: 20.1.3
+ version: 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
postcss:
specifier: ^8.4.49
version: 8.4.49
@@ -3720,6 +3726,22 @@ packages:
}
engines: { node: '>=18.0.0' }
+ '@ng-icons/core@29.10.0':
+ resolution:
+ {
+ integrity: sha512-PR6SO00yvFhwDhh37BWhtAgRfzxuXpJQBsAQ44Pg3gjc83fOAwOtMSXizYwtN0uUFIkAYZHZCEuV7Sb8eosK+w==,
+ }
+ peerDependencies:
+ '@angular/common': '>=18.0.0'
+ '@angular/core': '>=18.0.0'
+ rxjs: ^6.5.3 || ^7.4.0
+
+ '@ng-icons/heroicons@29.10.0':
+ resolution:
+ {
+ integrity: sha512-xUUXUYFL42eO0J14JOWoom/hxvBZr6E5H34icVNIThX022SjIArFYUQ21U5pf9KMoUDp9wxQJCKAGK1ZJbtmTA==,
+ }
+
'@ngtools/webpack@18.2.12':
resolution:
{
@@ -3821,10 +3843,10 @@ packages:
}
engines: { node: ^16.14.0 || >=18.0.0 }
- '@nx/angular@20.1.0':
+ '@nx/angular@20.1.3':
resolution:
{
- integrity: sha512-13WlZuZ6Ln7KGn+H2jWGKEP0NpFcdo6Eevls09DDUB+A6iYEpo1DsWCeST18Y2ywjaK0i5zWxfhYhFnP7rSlzQ==,
+ integrity: sha512-A+AJc0FNwlPb9jafpXVAHI+Z+xlpxN3ROfYFpb3g6/SJ8NHMDybphR6DxlNi0UJMKV5+96p0v4MJ2UIk7NMoaQ==,
}
peerDependencies:
'@angular-devkit/build-angular': '>= 16.0.0 < 19.0.0'
@@ -3833,18 +3855,18 @@ packages:
'@schematics/angular': '>= 16.0.0 < 19.0.0'
rxjs: ^6.5.3 || ^7.5.0
- '@nx/devkit@20.1.0':
+ '@nx/devkit@20.1.3':
resolution:
{
- integrity: sha512-TDWT3d7nei+FtqoZscR7KtbQ9BXzV1c1Wvk9UUejo7eXbrQ/+YnHVVze8EMuIgTXaHxNIBTKGUPcRi3cibmCDw==,
+ integrity: sha512-+bNCRNSHKS7SS4Q2xI/p4hhd4mIibIbeF+hpF3TLO5wxyXbrYGSdhCVK5SwclwWUN/KhcKQjOrVGW5CKAm7HAw==,
}
peerDependencies:
nx: '>= 19 <= 21'
- '@nx/eslint-plugin@20.1.0':
+ '@nx/eslint-plugin@20.1.3':
resolution:
{
- integrity: sha512-INNNpcED5qfmqSHzDapwoSWppd0ryfAtP/9HlMj8C3F8Sjy9LjxVKOFINsbilbNmxKVxxuDGix4gRl8s1YnjQA==,
+ integrity: sha512-EnYr8HxFZDVckugKMvb7DDkYeyZ4zMJDckPiqCJZAEnUgr97usk2kUDAc5LYyBfTohQPKC84t81ztcIRZ9jMbw==,
}
peerDependencies:
'@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0
@@ -3853,10 +3875,10 @@ packages:
eslint-config-prettier:
optional: true
- '@nx/eslint@20.1.0':
+ '@nx/eslint@20.1.3':
resolution:
{
- integrity: sha512-r33P116QT5d8iLS18pZKOp1VBUueprESjHrVozDhUmTy0d/Xu5y/ExbhxcnlSicHFPxM7auYUoj1vE/6llRLQw==,
+ integrity: sha512-XYgnBmQwYRCKHocTKvEVaeugg/TspaoUUJW5cr0lPywEEUnxwQoGMl91CK+rll079mJp9CIBD7zeZs5rZgqVcQ==,
}
peerDependencies:
'@zkochan/js-yaml': 0.0.7
@@ -3865,16 +3887,16 @@ packages:
'@zkochan/js-yaml':
optional: true
- '@nx/jest@20.1.0':
+ '@nx/jest@20.1.3':
resolution:
{
- integrity: sha512-miFXntl6XcdexPBedPfef9Lhc4VamqL1VhSCRz7xVRHY8MPq5dloGhr9TFx6KI0t8/IHfJ3cYZbhgi/1Uaw1GA==,
+ integrity: sha512-OGP7iCrpfuVscVeMtQRvC/dvCkyNKSuoqcEnP9bs79agKknxhpvhFmFNwELh9Ovcf6MJber13QeSZCE+p9rxOw==,
}
- '@nx/js@20.1.0':
+ '@nx/js@20.1.3':
resolution:
{
- integrity: sha512-E5iDtTchK1vkEGFHXUM+PZnIvQvs3JjK+3SUfPfobVV60jKb4T2YiBLJPqXdk123hwVGKSKebgrUhO6mGGNMFQ==,
+ integrity: sha512-PS6GjPWS0u37JJ6Gh7MVq+r25p5YRHcm+FlxzIfngDesLB8rZ2GFgztsz2r21WlOncGurDmjzJ8aRKQZNWXl8Q==,
}
peerDependencies:
verdaccio: ^5.0.4
@@ -3882,100 +3904,100 @@ packages:
verdaccio:
optional: true
- '@nx/nx-darwin-arm64@20.1.0':
+ '@nx/nx-darwin-arm64@20.1.3':
resolution:
{
- integrity: sha512-fel9LpSWuwY0cGAsRFEPxLp6J5VcK/5sjeWA0lZWrFf1oQJCOlKBfkxzi384Nd7eK5JSjxIXrpYfRLaqSbp+IA==,
+ integrity: sha512-m0Rwawht7Jwq6u2QPmAtsv+khFsTUIZUfiO1kXGcKOX3nQdJ7i82zLRd5yGbrDTAyRbAsgWO3v8zWQyhC1oGjw==,
}
engines: { node: '>= 10' }
cpu: [arm64]
os: [darwin]
- '@nx/nx-darwin-x64@20.1.0':
+ '@nx/nx-darwin-x64@20.1.3':
resolution:
{
- integrity: sha512-l1DB8dk2rCLGgXW26HmFOKYpUCF259LRus8z+z7dsFv5vz9TeN+fk5m9aAdiENgMA2cGlndQQW+E8UIo3yv+9g==,
+ integrity: sha512-WsQK1sxOJFzD0vOtFqSHpLzWuFO4vG7G1PUyJ1Y5mPo4vbRslqoAUTqF7n42bBRPY/lE2aT7BqAAj8hm4PgcnQ==,
}
engines: { node: '>= 10' }
cpu: [x64]
os: [darwin]
- '@nx/nx-freebsd-x64@20.1.0':
+ '@nx/nx-freebsd-x64@20.1.3':
resolution:
{
- integrity: sha512-f8uMRIhiOA/73cIjiyS3gpKvaAtsHgyUkkoCOPc4xdxoSLAjlxb6VOUPIFj9rzLA6qQXImVpsiNPG+p1sJ1GAQ==,
+ integrity: sha512-HV57XMtCVPy/0LZtifcEHbOpVNKLTOBFUoUXkmGYBmAKfw7lccfF600/tunTCZ4aijsD6+opEeGHzlDUK0Ir1w==,
}
engines: { node: '>= 10' }
cpu: [x64]
os: [freebsd]
- '@nx/nx-linux-arm-gnueabihf@20.1.0':
+ '@nx/nx-linux-arm-gnueabihf@20.1.3':
resolution:
{
- integrity: sha512-M7pay8hFJQZ3uJHlr5hZK/8o1BcHt95hy/SU7Azt7+LKQGOy42tXhHO30As9APzXqRmvoA2Iq1IyrJJicrz+Ew==,
+ integrity: sha512-RzP0vc4yhXktKxz7iiwVYFkgpyb5TN/lLGcKLMM4kjuyYJ0IUX58Kk5FDoqCy+HMKiMfGyTOT4fP+/UEsgW6qQ==,
}
engines: { node: '>= 10' }
cpu: [arm]
os: [linux]
- '@nx/nx-linux-arm64-gnu@20.1.0':
+ '@nx/nx-linux-arm64-gnu@20.1.3':
resolution:
{
- integrity: sha512-A5+Kpk1uwYIj6CPm0DWLVz5wNTN4ewNl7ajLS9YJOi4yHx/FhfMMyPj4ZnbTpc4isuvgZwBZNl8kwFb2RdXq4w==,
+ integrity: sha512-WCaU5AiGx21C3t3v4+d7nrA1r5Xc5Wk7yVxZFWh+mKHdcqk1JebDIr1qj/7yoKHD2R9k2Vp5x5Kd0pzAGS8AyA==,
}
engines: { node: '>= 10' }
cpu: [arm64]
os: [linux]
- '@nx/nx-linux-arm64-musl@20.1.0':
+ '@nx/nx-linux-arm64-musl@20.1.3':
resolution:
{
- integrity: sha512-pWIQPt9Fst1O4dgrWHdU1b+5wpfLmsmaSeRvLQ9b2VFp3tKGko4ie0skme62TuMgpcqMWDBFKs8KgbHESOi7vw==,
+ integrity: sha512-lKAvR9jNyx/qvk3UZGYNJAoK5mkZc+rDD4gA23tOGYPjNrWHJEgbWycCk5A9tQ4QX4CskCNmkgQx0lOMdLeXsw==,
}
engines: { node: '>= 10' }
cpu: [arm64]
os: [linux]
- '@nx/nx-linux-x64-gnu@20.1.0':
+ '@nx/nx-linux-x64-gnu@20.1.3':
resolution:
{
- integrity: sha512-sOpeGOHznk2ztCXzKhRPAKG3WtwaQUsfQ/3aYDXE6z+rSfyZTGY29M/a9FbdjI4cLJX+NdLAAMj15c3VecJ65g==,
+ integrity: sha512-RKNm7RnTgCSl2HstDb/qMKO9r8o81EUe+UZB5fgjNR89PB757iHUX30kM0xbkiRZui1vIkMAvWcNsidxBnGGfg==,
}
engines: { node: '>= 10' }
cpu: [x64]
os: [linux]
- '@nx/nx-linux-x64-musl@20.1.0':
+ '@nx/nx-linux-x64-musl@20.1.3':
resolution:
{
- integrity: sha512-SxnQJhjOvuOfUZnF4Wt4/O/l1e21qpACZzfMaPIvmiTLk9zPJZWtfgbqlKtTXHKWq9DfIUZQqZXRIpHPM1sDZQ==,
+ integrity: sha512-aCXEWt1WQDPLzgp5I+NfqaP0y4ZKi2aauZMnSO6KE54MnZmvB+B4HQMZvqHM3dfU0jluvLRBmVIPLeTHiCccrw==,
}
engines: { node: '>= 10' }
cpu: [x64]
os: [linux]
- '@nx/nx-win32-arm64-msvc@20.1.0':
+ '@nx/nx-win32-arm64-msvc@20.1.3':
resolution:
{
- integrity: sha512-Z/KoaAA+Rg9iqqOPkKZV61MejPoJBOHlecFpq0G4TgKMJEJ/hEsjojq5usO1fUGAbvQT/SXL3pYWgZwhD3VEHw==,
+ integrity: sha512-625rRYFfoCTu73bjDZ+jOLU0lvEN2heiiUGlErc6GchfcWuIcZy16oyYQzZX69UQqryGkkZVTaoyMXhGS5p7Tg==,
}
engines: { node: '>= 10' }
cpu: [arm64]
os: [win32]
- '@nx/nx-win32-x64-msvc@20.1.0':
+ '@nx/nx-win32-x64-msvc@20.1.3':
resolution:
{
- integrity: sha512-pbxacjLsW9vXD9FibvU8Pal/r5+Yq6AaW6I57CDi7jsLt+K6jcS0fP4FlfXT8QFWdx9+bOKNfOsKEIwpirMN1w==,
+ integrity: sha512-XUbxSB6vUWoixNyCXkaXGkeUy/syqFOBXVh5Wbi6bqwTJ5o6EFUxCnzK/JsK55dfOz+I/jMXJzDWYEDAsikTSA==,
}
engines: { node: '>= 10' }
cpu: [x64]
os: [win32]
- '@nx/playwright@20.1.0':
+ '@nx/playwright@20.1.3':
resolution:
{
- integrity: sha512-A/7HCSJVTgobgBq7jS7BtZKmc9XkqEX5I4ogcHfpPr0Ju3xHI2IpqEwkEkb9PQV4jBJs7iQlUd9HK+W3dPP+Wg==,
+ integrity: sha512-Avl1LN78TX2aSbG8MmE5zyeOVBtzgBjAcM7zx4XaI9xE3ykPkFddCCurORMlMGxlxAUE0WZVa9sQ1zj1iskACQ==,
}
peerDependencies:
'@playwright/test': ^1.36.0
@@ -3983,31 +4005,31 @@ packages:
'@playwright/test':
optional: true
- '@nx/vite@20.1.0':
+ '@nx/vite@20.1.3':
resolution:
{
- integrity: sha512-Z27yzmhnAdZchfEBHeRM32h6dBlj92UPRp1tmHKei8qzOEd7EzuwYFemp4jSYP/JSQsWIcQ4nyF39tF9kMR0jg==,
+ integrity: sha512-rVWGGTEo9T2YQobBL/AztWXTjnSVqItpby5xCyBmmx1U4nLswKS39PI18ImUbkmU627P1aPNAx1cBFwgBeq8Fg==,
}
peerDependencies:
vite: ^5.0.0
vitest: ^1.3.1 || ^2.0.0
- '@nx/web@20.1.0':
+ '@nx/web@20.1.3':
resolution:
{
- integrity: sha512-0mT9f7Usgr3bN4oxO8FdE+w2g1Hm/7/7XqZQ9xoAKG0qM4LB9KOIJolq7fQjXCpmg64lF7t4EqSrvUIqizPoZg==,
+ integrity: sha512-V2OtqgKx+LIGZAldv5n/tt13FxOXAzWRHnhkxdP/q6/jY43bcHOHJEdtjWlI9gcmrzyGTjErNQejd/3Ux3OtPQ==,
}
- '@nx/webpack@20.1.0':
+ '@nx/webpack@20.1.3':
resolution:
{
- integrity: sha512-KBiJDxtv0RjRo7Ud3lgFXRMYCn1sWlNTVMQpP65O0aPs1I0yrriIOeiZhMKZm3xp4r4S9ABIWV1rrz0ILp1Qog==,
+ integrity: sha512-0tytQ3evuAH3EctkEJe6KuHj7CYXutnXFzlvz/uzNrq/kTLjIaNsjEpihxy3J/Ut1S7EJYG/3LoBqllZS46+XQ==,
}
- '@nx/workspace@20.1.0':
+ '@nx/workspace@20.1.3':
resolution:
{
- integrity: sha512-1L432K76uWfo+hR5SD/XIdJGiArXQ6u0+q1MB49slObRNYQHMWqyB3/6C7QRN0sOqh5k893i9wXUH8vokYpPew==,
+ integrity: sha512-YOFzkvCcREG4sYNrW3GukBiXCUjxfe4dN2qgYZJ7p4aGoStgfIntjP0REwbgdrZMPTQi9gfAQo27+wTJ6O0FwA==,
}
'@oozcitak/dom@1.15.10':
@@ -11396,10 +11418,10 @@ packages:
integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==,
}
- nx@20.1.0:
+ nx@20.1.3:
resolution:
{
- integrity: sha512-d8Ywh1AvG3szYqWEHg2n9DHh/hF0jtVhMZKxwsr7n+kSVxp7gE/rHCCfOo8H+OmP030qXoox5e4Ovp7H9CEJnA==,
+ integrity: sha512-mipsacEpn0gLd/4NSlOgyHW6Ozl++8ZIfuv42RtZEnS3BaGnnW+L2dkt85h4zffq+zBILoudd/VDFzaLY7Yrfw==,
}
hasBin: true
peerDependencies:
@@ -15310,13 +15332,13 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- '@analogjs/content@1.9.4(eziz7pypilkdu6gvivmuk3c4am)':
+ '@analogjs/content@1.9.4(o2i2lnlh4hta6usg74df5sntw4)':
dependencies:
'@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1)
'@angular/core': 18.2.13(rxjs@7.8.1)(zone.js@0.14.10)
'@angular/platform-browser': 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))
'@angular/router': 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1)
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
front-matter: 4.0.2
marked: 5.1.2
marked-gfm-heading-id: 3.2.0(marked@5.1.2)
@@ -15326,13 +15348,13 @@ snapshots:
rxjs: 7.8.1
tslib: 2.8.1
- '@analogjs/platform@1.10.0-beta.6(nyoojjlqzpoaiiylwftngxmatm)':
+ '@analogjs/platform@1.10.0-beta.6(d2pvisb3dcolhizruxpy64qjtm)':
dependencies:
'@analogjs/vite-plugin-angular': 1.10.0-beta.6(eqvhc5kwfcihayihcvjnnlx36i)
'@analogjs/vite-plugin-nitro': 1.10.0-beta.6(encoding@0.1.13)(typescript@5.5.4)
- '@nx/angular': 20.1.0(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/vite': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
+ '@nx/angular': 20.1.3(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/vite': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
marked: 5.1.2
marked-gfm-heading-id: 3.2.0(marked@5.1.2)
marked-mangle: 1.1.10(marked@5.1.2)
@@ -15367,9 +15389,9 @@ snapshots:
- vite
- xml2js
- '@analogjs/router@1.9.4(@analogjs/content@1.9.4(eziz7pypilkdu6gvivmuk3c4am))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/router@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1))':
+ '@analogjs/router@1.9.4(@analogjs/content@1.9.4(o2i2lnlh4hta6usg74df5sntw4))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/router@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1))':
dependencies:
- '@analogjs/content': 1.9.4(eziz7pypilkdu6gvivmuk3c4am)
+ '@analogjs/content': 1.9.4(o2i2lnlh4hta6usg74df5sntw4)
'@angular/core': 18.2.13(rxjs@7.8.1)(zone.js@0.14.10)
'@angular/router': 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1)
tslib: 2.8.1
@@ -18342,6 +18364,17 @@ snapshots:
'@netlify/node-cookies': 0.1.0
urlpattern-polyfill: 8.0.2
+ '@ng-icons/core@29.10.0(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1)':
+ dependencies:
+ '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1)
+ '@angular/core': 18.2.13(rxjs@7.8.1)(zone.js@0.14.10)
+ rxjs: 7.8.1
+ tslib: 2.8.1
+
+ '@ng-icons/heroicons@29.10.0':
+ dependencies:
+ tslib: 2.8.1
+
'@ngtools/webpack@18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.5.29(@swc/helpers@0.5.15))(esbuild@0.23.0))':
dependencies:
'@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4)
@@ -18425,18 +18458,18 @@ snapshots:
- bluebird
- supports-color
- '@nx/angular@20.1.0(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
+ '@nx/angular@20.1.3(@angular-devkit/build-angular@18.2.12(hn5fv266wbcc3iqid2ur7btcfm))(@angular-devkit/core@18.2.12(chokidar@3.6.0))(@angular-devkit/schematics@18.2.12(chokidar@3.6.0))(@babel/traverse@7.25.9)(@schematics/angular@18.2.12(chokidar@3.6.0))(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rxjs@7.8.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
dependencies:
'@angular-devkit/build-angular': 18.2.12(hn5fv266wbcc3iqid2ur7btcfm)
'@angular-devkit/core': 18.2.12(chokidar@3.6.0)
'@angular-devkit/schematics': 18.2.12(chokidar@3.6.0)
'@module-federation/enhanced': 0.6.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.96.1(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/eslint': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
- '@nx/web': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
- '@nx/webpack': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
- '@nx/workspace': 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/eslint': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/web': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/webpack': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
+ '@nx/workspace': 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
'@schematics/angular': 18.2.12(chokidar@3.6.0)
'@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4)
@@ -18483,22 +18516,22 @@ snapshots:
- vue-tsc
- webpack-cli
- '@nx/devkit@20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))':
+ '@nx/devkit@20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))':
dependencies:
ejs: 3.1.10
enquirer: 2.3.6
ignore: 5.3.2
minimatch: 9.0.3
- nx: 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ nx: 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
semver: 7.6.3
tmp: 0.2.3
tslib: 2.8.1
yargs-parser: 21.1.1
- '@nx/eslint-plugin@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.15.0(jiti@2.4.0)))(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/eslint-plugin@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.15.0(jiti@2.4.0)))(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4)
'@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4)
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.5.4)
@@ -18523,10 +18556,10 @@ snapshots:
- typescript
- verdaccio
- '@nx/eslint@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/eslint@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.4.5)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.4.5)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
eslint: 9.15.0(jiti@2.4.0)
semver: 7.6.3
tslib: 2.8.1
@@ -18544,12 +18577,12 @@ snapshots:
- supports-color
- verdaccio
- '@nx/jest@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/jest@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
chalk: 4.1.2
identity-obj-proxy: 3.0.0
@@ -18576,7 +18609,7 @@ snapshots:
- typescript
- verdaccio
- '@nx/js@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.4.5)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/js@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.4.5)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
@@ -18585,8 +18618,8 @@ snapshots:
'@babel/preset-env': 7.26.0(@babel/core@7.26.0)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
'@babel/runtime': 7.26.0
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/workspace': 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/workspace': 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
'@zkochan/js-yaml': 0.0.7
babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0)
babel-plugin-macros: 2.8.0
@@ -18621,7 +18654,7 @@ snapshots:
- supports-color
- typescript
- '@nx/js@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/js@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
@@ -18630,8 +18663,8 @@ snapshots:
'@babel/preset-env': 7.26.0(@babel/core@7.26.0)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
'@babel/runtime': 7.26.0
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/workspace': 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/workspace': 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
'@zkochan/js-yaml': 0.0.7
babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0)
babel-plugin-macros: 2.8.0
@@ -18666,43 +18699,43 @@ snapshots:
- supports-color
- typescript
- '@nx/nx-darwin-arm64@20.1.0':
+ '@nx/nx-darwin-arm64@20.1.3':
optional: true
- '@nx/nx-darwin-x64@20.1.0':
+ '@nx/nx-darwin-x64@20.1.3':
optional: true
- '@nx/nx-freebsd-x64@20.1.0':
+ '@nx/nx-freebsd-x64@20.1.3':
optional: true
- '@nx/nx-linux-arm-gnueabihf@20.1.0':
+ '@nx/nx-linux-arm-gnueabihf@20.1.3':
optional: true
- '@nx/nx-linux-arm64-gnu@20.1.0':
+ '@nx/nx-linux-arm64-gnu@20.1.3':
optional: true
- '@nx/nx-linux-arm64-musl@20.1.0':
+ '@nx/nx-linux-arm64-musl@20.1.3':
optional: true
- '@nx/nx-linux-x64-gnu@20.1.0':
+ '@nx/nx-linux-x64-gnu@20.1.3':
optional: true
- '@nx/nx-linux-x64-musl@20.1.0':
+ '@nx/nx-linux-x64-musl@20.1.3':
optional: true
- '@nx/nx-win32-arm64-msvc@20.1.0':
+ '@nx/nx-win32-arm64-msvc@20.1.3':
optional: true
- '@nx/nx-win32-x64-msvc@20.1.0':
+ '@nx/nx-win32-x64-msvc@20.1.3':
optional: true
- '@nx/playwright@20.1.0(@babel/traverse@7.25.9)(@playwright/test@1.49.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
+ '@nx/playwright@20.1.3(@babel/traverse@7.25.9)(@playwright/test@1.49.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/eslint': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
- '@nx/vite': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
- '@nx/webpack': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/eslint': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.15.0(jiti@2.4.0))(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/vite': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)
+ '@nx/webpack': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
minimatch: 9.0.3
tslib: 2.8.1
@@ -18743,10 +18776,10 @@ snapshots:
- vue-tsc
- webpack-cli
- '@nx/vite@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)':
+ '@nx/vite@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vite@5.4.11(@types/node@18.16.9)(less@4.1.3)(sass@1.81.0)(stylus@0.64.0)(terser@5.31.6))(vitest@2.1.6)':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
'@swc/helpers': 0.5.15
enquirer: 2.3.6
@@ -18766,10 +18799,10 @@ snapshots:
- typescript
- verdaccio
- '@nx/web@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
+ '@nx/web@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
detect-port: 1.6.1
http-server: 14.1.1
picocolors: 1.1.1
@@ -18786,13 +18819,13 @@ snapshots:
- typescript
- verdaccio
- '@nx/webpack@20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
+ '@nx/webpack@20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))(vue-template-compiler@2.7.16)(vue-tsc@1.8.27(typescript@5.5.4))':
dependencies:
'@babel/core': 7.26.0
'@module-federation/enhanced': 0.6.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.96.1(@swc/core@1.5.29(@swc/helpers@0.5.15)))
'@module-federation/sdk': 0.6.16
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
- '@nx/js': 20.1.0(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/js': 20.1.3(@babel/traverse@7.25.9)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))(@types/node@18.16.9)(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))(typescript@5.5.4)(verdaccio@5.33.0(encoding@0.1.13)(typanion@3.14.0))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4)
ajv: 8.17.1
autoprefixer: 10.4.20(postcss@8.4.49)
@@ -18860,12 +18893,12 @@ snapshots:
- vue-tsc
- webpack-cli
- '@nx/workspace@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))':
+ '@nx/workspace@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))':
dependencies:
- '@nx/devkit': 20.1.0(nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
+ '@nx/devkit': 20.1.3(nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)))
chalk: 4.1.2
enquirer: 2.3.6
- nx: 20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
+ nx: 20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15))
tslib: 2.8.1
yargs-parser: 21.1.1
transitivePeerDependencies:
@@ -23987,7 +24020,7 @@ snapshots:
nwsapi@2.2.13: {}
- nx@20.1.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)):
+ nx@20.1.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.15)):
dependencies:
'@napi-rs/wasm-runtime': 0.2.4
'@yarnpkg/lockfile': 1.1.0
@@ -24022,16 +24055,16 @@ snapshots:
yargs: 17.7.2
yargs-parser: 21.1.1
optionalDependencies:
- '@nx/nx-darwin-arm64': 20.1.0
- '@nx/nx-darwin-x64': 20.1.0
- '@nx/nx-freebsd-x64': 20.1.0
- '@nx/nx-linux-arm-gnueabihf': 20.1.0
- '@nx/nx-linux-arm64-gnu': 20.1.0
- '@nx/nx-linux-arm64-musl': 20.1.0
- '@nx/nx-linux-x64-gnu': 20.1.0
- '@nx/nx-linux-x64-musl': 20.1.0
- '@nx/nx-win32-arm64-msvc': 20.1.0
- '@nx/nx-win32-x64-msvc': 20.1.0
+ '@nx/nx-darwin-arm64': 20.1.3
+ '@nx/nx-darwin-x64': 20.1.3
+ '@nx/nx-freebsd-x64': 20.1.3
+ '@nx/nx-linux-arm-gnueabihf': 20.1.3
+ '@nx/nx-linux-arm64-gnu': 20.1.3
+ '@nx/nx-linux-arm64-musl': 20.1.3
+ '@nx/nx-linux-x64-gnu': 20.1.3
+ '@nx/nx-linux-x64-musl': 20.1.3
+ '@nx/nx-win32-arm64-msvc': 20.1.3
+ '@nx/nx-win32-x64-msvc': 20.1.3
'@swc-node/register': 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.5.4)
'@swc/core': 1.5.29(@swc/helpers@0.5.15)
transitivePeerDependencies:
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..12a703d
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/project.json b/project.json
index e5a8ec1..c398c43 100644
--- a/project.json
+++ b/project.json
@@ -10,5 +10,17 @@
"storage": "tmp/local-registry/storage"
}
}
+ },
+ "release": {
+ "changelog": {
+ "projectChangelogs": {
+ "renderOptions": {
+ "authors": true,
+ "mapAuthorsToGitHubUsernames": true,
+ "commitReferences": true,
+ "versionTitleDate": true
+ }
+ }
+ }
}
}