diff --git a/apps/app/src/app/pages/(documentation)/documentation/cli.page.ts b/apps/app/src/app/pages/(documentation)/documentation/cli.page.ts
index 450e1dc4b..48ce39a9c 100644
--- a/apps/app/src/app/pages/(documentation)/documentation/cli.page.ts
+++ b/apps/app/src/app/pages/(documentation)/documentation/cli.page.ts
@@ -3,8 +3,8 @@ import { Component } from '@angular/core';
import { provideIcons } from '@ng-icons/core';
import { lucideTriangleAlert } from '@ng-icons/lucide';
import { hlmCode, hlmH4, hlmP } from '@spartan-ng/ui-typography-helm';
-import { CodeComponent } from '../../../shared/code/code.component';
import { MainSectionDirective } from '../../../shared/layout/main-section.directive';
+import { PackageInstallerTabsComponent } from '../../../shared/layout/package-installer-tabs.component';
import { PageBottomNavLinkComponent } from '../../../shared/layout/page-bottom-nav/page-bottom-nav-link.component';
import { PageBottomNavComponent } from '../../../shared/layout/page-bottom-nav/page-bottom-nav.component';
import { PageNavComponent } from '../../../shared/layout/page-nav/page-nav.component';
@@ -29,8 +29,8 @@ export const routeMeta: RouteMeta = {
PageBottomNavLinkComponent,
PageNavComponent,
SectionSubHeadingComponent,
- CodeComponent,
TabsCliComponent,
+ PackageInstallerTabsComponent,
],
providers: [provideIcons({ lucideTriangleAlert })],
template: `
@@ -52,7 +52,7 @@ export const routeMeta: RouteMeta = {
spartan
to your Angular CLI project or Nx workspace simply install the plugin with the command below:
diff --git a/apps/app/src/app/shared/layout/package-installer-tabs.component.ts b/apps/app/src/app/shared/layout/package-installer-tabs.component.ts new file mode 100644 index 000000000..88f4f8181 --- /dev/null +++ b/apps/app/src/app/shared/layout/package-installer-tabs.component.ts @@ -0,0 +1,68 @@ +import { KeyValuePipe } from '@angular/common'; +import { Component, computed, input, signal } from '@angular/core'; +import { + BrnTabsContentDirective, + BrnTabsDirective, + BrnTabsListDirective, + BrnTabsTriggerDirective, +} from '@spartan-ng/brain/tabs'; +import { CodeComponent } from '../code/code.component'; + +const packageInstallationCommands = { + npm: 'npm i -D @spartan-ng/cli', + pnpm: 'pnpm add -D @spartan-ng/cli', + yarn: 'yarn add -D @spartan-ng/cli', + bun: 'bun install -D @spartan-ng/cli', +} as const; + +type PackageKey = keyof typeof packageInstallationCommands; + +const tabBtn = + 'inline-flex items-center justify-center whitespace-nowrap py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background relative h-9 rounded-none border-b-2 border-b-transparent bg-transparent px-4 pb-3 pt-2 font-semibold text-muted-foreground shadow-none transition-none data-[state=active]:border-b-primary data-[state=active]:text-foreground data-[state=active]:shadow-none'; +const tabContent = + 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative rounded-md border border-border'; +@Component({ + selector: 'spartan-package-installer-tab', + standalone: true, + imports: [ + BrnTabsDirective, + BrnTabsListDirective, + BrnTabsTriggerDirective, + BrnTabsContentDirective, + CodeComponent, + KeyValuePipe, + ], + host: { + class: 'block', + }, + template: ` +