@ojiepermana/angular 21.1.2 → 21.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,73 @@
1
- export * from '@ojiepermana/angular/brand/etos';
1
+ import * as _angular_core from '@angular/core';
2
+ import { EnvironmentProviders } from '@angular/core';
3
+ import { MaterialLayoutConfig } from '@ojiepermana/angular/layout';
4
+ import { NavigationItem, TopbarAppearance, SidebarAppearance, SidebarPosition } from '@ojiepermana/angular/navigation';
5
+ import { MaterialThemeConfig, MaterialThemeFeature } from '@ojiepermana/angular/theme';
6
+
7
+ declare const ETOS_BRAND_NAME = "etos";
8
+ declare const ETOS_THEME_CONFIG: {
9
+ mode: "light";
10
+ brand: "etos";
11
+ };
12
+ declare const ETOS_LAYOUT_CONFIG: {
13
+ mode: "vertical";
14
+ width: "fixed";
15
+ };
16
+
17
+ interface EtosBrandOptions {
18
+ readonly theme?: MaterialThemeConfig;
19
+ readonly layout?: MaterialLayoutConfig;
20
+ readonly navigation?: NavigationItem[];
21
+ readonly navigationId?: string;
22
+ readonly materialDefaults?: boolean;
23
+ }
24
+ declare function provideEtosTheme(config?: MaterialThemeConfig, ...features: MaterialThemeFeature[]): EnvironmentProviders;
25
+ declare function provideEtosLayout(config?: MaterialLayoutConfig): EnvironmentProviders;
26
+ declare function provideEtosBrand(options?: EtosBrandOptions): EnvironmentProviders;
27
+
28
+ declare class EtosEmptyLayoutComponent {
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EtosEmptyLayoutComponent, never>;
30
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EtosEmptyLayoutComponent, "etos-empty-layout", never, {}, {}, never, never, true, never>;
31
+ }
32
+
33
+ declare class EtosHorizontalLayoutComponent {
34
+ private readonly layout;
35
+ readonly topbarAppearance: _angular_core.InputSignal<TopbarAppearance>;
36
+ readonly ariaLabel: _angular_core.InputSignal<string>;
37
+ protected readonly brandLayout = "etos-horizontal";
38
+ protected readonly layoutWidth: _angular_core.Signal<"fixed" | "full">;
39
+ protected readonly dividerBorderWidth: _angular_core.Signal<string>;
40
+ protected readonly hostClasses: _angular_core.Signal<string>;
41
+ protected readonly frameClasses: _angular_core.Signal<string>;
42
+ protected readonly mainClasses: _angular_core.Signal<string>;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EtosHorizontalLayoutComponent, never>;
44
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EtosHorizontalLayoutComponent, "etos-horizontal-layout", never, { "topbarAppearance": { "alias": "topbarAppearance"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[ui-layout-brand],[ui-topbar-start]", "[ui-layout-profile],[ui-topbar-end]"], true, never>;
45
+ }
46
+
47
+ declare class EtosLayoutComponent {
48
+ private readonly layout;
49
+ readonly ariaLabel: _angular_core.InputSignal<string>;
50
+ protected readonly layoutMode: _angular_core.Signal<"vertical" | "horizontal">;
51
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EtosLayoutComponent, never>;
52
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EtosLayoutComponent, "etos-layout", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[ui-layout-brand],[ui-topbar-start]", "[ui-layout-profile],[ui-topbar-end]"], true, never>;
53
+ }
54
+
55
+ declare class EtosVerticalLayoutComponent {
56
+ private readonly layout;
57
+ readonly sidebarAppearance: _angular_core.InputSignal<SidebarAppearance>;
58
+ readonly sidebarPosition: _angular_core.InputSignal<SidebarPosition>;
59
+ readonly ariaLabel: _angular_core.InputSignal<string>;
60
+ protected readonly brandLayout = "etos-vertical";
61
+ protected readonly layoutWidth: _angular_core.Signal<"fixed" | "full">;
62
+ protected readonly dividerBorderWidth: _angular_core.Signal<string>;
63
+ protected readonly hostClasses: _angular_core.Signal<string>;
64
+ protected readonly frameClasses: _angular_core.Signal<string>;
65
+ protected readonly mainClasses: _angular_core.Signal<string>;
66
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EtosVerticalLayoutComponent, never>;
67
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EtosVerticalLayoutComponent, "etos-vertical-layout", never, { "sidebarAppearance": { "alias": "sidebarAppearance"; "required": false; "isSignal": true; }; "sidebarPosition": { "alias": "sidebarPosition"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
68
+ }
69
+
70
+ declare const ETOS_BRAND_VERSION = "0.0.1";
71
+
72
+ export { ETOS_BRAND_NAME, ETOS_BRAND_VERSION, ETOS_LAYOUT_CONFIG, ETOS_THEME_CONFIG, EtosEmptyLayoutComponent, EtosHorizontalLayoutComponent, EtosLayoutComponent, EtosVerticalLayoutComponent, provideEtosBrand, provideEtosLayout, provideEtosTheme };
73
+ export type { EtosBrandOptions };
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../../fesm2022/ojiepermana-angular-brand-etos.mjs",
3
- "typings": "../../types/ojiepermana-angular-brand-etos.d.ts"
4
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Etos brand color layer.
3
- */
4
- @layer tokens {
5
- [theme-brand='etos'] {
6
- --primary: 211 95% 29%;
7
- --primary-foreground: 0 0% 100%;
8
- --accent: 211 95% 96%;
9
- --accent-foreground: 211 95% 22%;
10
- --secondary: 211 24% 95%;
11
- --secondary-foreground: 211 75% 24%;
12
- --ring: 211 95% 29%;
13
- }
14
-
15
- [data-mode='dark'][theme-brand='etos'] {
16
- --accent: 211 58% 18%;
17
- --accent-foreground: 211 90% 84%;
18
- --secondary: 211 24% 18%;
19
- --secondary-foreground: 211 82% 84%;
20
- }
21
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * @ojiepermana/angular/etos — complete Etos brand stylesheet.
3
- *
4
- * Import before Tailwind, then import the shared Tailwind token bridge.
5
- */
6
- @import '@ojiepermana/angular/theme/styles/themes/library/_layers.css';
7
- @import '@ojiepermana/angular/theme/styles/themes/mode/index.css';
8
- @import '@ojiepermana/angular/theme/styles/themes/library/color/index.css';
9
- @import '@ojiepermana/angular/theme/styles/themes/library/style/index.css';
10
- @import './color.css';
11
- @import './style.css';
12
- @import './layout.css';
13
- @import '@ojiepermana/angular/theme/styles/themes/library/_tokens.css';
14
- @import '@ojiepermana/angular/theme/styles/themes/library/_material-overrides.css';
15
- @import '@ojiepermana/angular/theme/styles/themes/library/_components.css';
@@ -1,175 +0,0 @@
1
- /**
2
- * Etos brand layout layer.
3
- */
4
- @layer tokens {
5
- [theme-brand='etos'] {
6
- --etos-layout-shell-padding: clamp(1rem, 2vw, 2rem);
7
- --etos-layout-frame-radius: var(--radius-lg);
8
- --etos-layout-frame-shadow: var(--shadow-sm);
9
- --etos-layout-main-max-width: 80rem;
10
- --etos-layout-empty-max-width: 24rem;
11
- --etos-layout-empty-padding: clamp(1.5rem, 4vw, 3rem);
12
- --etos-layout-topbar-inline: 0.875rem;
13
- --etos-layout-brand-mark-size: 2rem;
14
- }
15
-
16
- [data-mode='dark'][theme-brand='etos'] {
17
- --etos-layout-frame-shadow: 0 0 0 1px hsl(var(--border));
18
- }
19
- }
20
-
21
- @layer components {
22
- .etos-layout-host {
23
- display: block;
24
- height: 100dvh;
25
- width: 100%;
26
- overflow: hidden;
27
- background: hsl(var(--background));
28
- color: hsl(var(--foreground));
29
- }
30
-
31
- .etos-layout-host--fixed {
32
- box-sizing: border-box;
33
- }
34
-
35
- .etos-layout-frame {
36
- display: flex;
37
- height: 100%;
38
- width: 100%;
39
- overflow: hidden;
40
- background: hsl(var(--background));
41
- }
42
-
43
- .etos-layout-frame--horizontal {
44
- flex-direction: column;
45
- }
46
-
47
- .etos-layout-main {
48
- min-width: 0;
49
- flex: 1 1 0%;
50
- overflow: auto;
51
- }
52
-
53
- .etos-layout-main--fixed {
54
- width: 100%;
55
- max-width: var(--etos-layout-main-max-width);
56
- margin-inline: auto;
57
- }
58
-
59
- .etos-layout-topbar {
60
- width: 100%;
61
- flex-shrink: 0;
62
- border-bottom: var(--border-width) solid hsl(var(--border));
63
- }
64
-
65
- .etos-layout-topbar-slot {
66
- display: flex;
67
- min-width: 0;
68
- align-items: center;
69
- }
70
-
71
- .etos-layout-topbar-slot--end {
72
- justify-content: flex-end;
73
- }
74
-
75
- .etos-layout-empty-host {
76
- display: flex;
77
- min-height: 100dvh;
78
- width: 100%;
79
- align-items: center;
80
- justify-content: center;
81
- padding: var(--etos-layout-empty-padding);
82
- background: hsl(var(--background));
83
- color: hsl(var(--foreground));
84
- }
85
-
86
- .etos-layout-empty-main {
87
- width: 100%;
88
- max-width: var(--etos-layout-empty-max-width);
89
- }
90
-
91
- .etos-brand-link,
92
- .etos-profile-trigger {
93
- display: inline-flex;
94
- align-items: center;
95
- gap: 0.75rem;
96
- min-height: 2.5rem;
97
- padding: 0.375rem 0.5rem;
98
- color: hsl(var(--foreground));
99
- text-decoration: none;
100
- transition:
101
- color 160ms ease,
102
- background-color 160ms ease;
103
- }
104
-
105
- .etos-brand-link:focus-visible,
106
- .etos-profile-trigger:focus-visible {
107
- outline: 2px solid hsl(var(--ring));
108
- outline-offset: 2px;
109
- }
110
-
111
- .etos-brand-mark,
112
- .etos-profile-mark {
113
- display: inline-flex;
114
- height: var(--etos-layout-brand-mark-size);
115
- width: var(--etos-layout-brand-mark-size);
116
- align-items: center;
117
- justify-content: center;
118
- border-radius: var(--radius-md);
119
- background: hsl(var(--primary));
120
- color: hsl(var(--primary-foreground));
121
- font-size: 0.7rem;
122
- font-weight: 700;
123
- letter-spacing: 0.18em;
124
- line-height: 1;
125
- }
126
-
127
- .etos-profile-mark {
128
- border-radius: 999px;
129
- letter-spacing: 0;
130
- }
131
-
132
- .etos-brand-copy {
133
- display: none;
134
- min-width: 0;
135
- flex-direction: column;
136
- gap: 0.125rem;
137
- }
138
-
139
- .etos-brand-name {
140
- font-size: var(--text-sm);
141
- font-weight: 700;
142
- line-height: 1;
143
- }
144
-
145
- .etos-brand-subtitle,
146
- .etos-profile-name {
147
- font-size: var(--text-xs);
148
- line-height: 1;
149
- color: hsl(var(--muted-foreground));
150
- }
151
-
152
- .etos-profile-name {
153
- display: none;
154
- font-weight: 600;
155
- }
156
-
157
- @media (min-width: 40rem) {
158
- .etos-brand-copy,
159
- .etos-profile-name {
160
- display: flex;
161
- }
162
- }
163
-
164
- @media (min-width: 64rem) {
165
- .etos-layout-host--fixed {
166
- padding: var(--etos-layout-shell-padding);
167
- }
168
-
169
- .etos-layout-frame--fixed {
170
- border: var(--border-width) solid hsl(var(--border));
171
- border-radius: var(--etos-layout-frame-radius);
172
- box-shadow: var(--etos-layout-frame-shadow);
173
- }
174
- }
175
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Etos brand style layer.
3
- */
4
- @layer tokens {
5
- [theme-brand='etos'] {
6
- --theme-radius-base: 0.375rem;
7
- --theme-radius-sm: calc(var(--theme-radius-base) - 2px);
8
- --theme-radius-md: var(--theme-radius-base);
9
- --theme-radius-lg: calc(var(--theme-radius-base) + 2px);
10
-
11
- --radius: var(--theme-radius-base);
12
- --radius-sm: var(--theme-radius-sm);
13
- --radius-md: var(--theme-radius-md);
14
- --radius-lg: var(--theme-radius-lg);
15
-
16
- --border-width: 1px;
17
-
18
- --theme-shadow-sm: 0 1px 0 0 hsl(211 95% 12% / 0.08);
19
- --theme-shadow: 0 2px 4px -2px hsl(211 95% 12% / 0.14);
20
- --theme-shadow-md: 0 8px 18px -14px hsl(211 95% 12% / 0.24);
21
- --theme-shadow-lg: 0 18px 36px -28px hsl(211 95% 12% / 0.34);
22
-
23
- --shadow-sm: var(--theme-shadow-sm);
24
- --shadow: var(--theme-shadow);
25
- --shadow-md: var(--theme-shadow-md);
26
- --shadow-lg: var(--theme-shadow-lg);
27
-
28
- --theme-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
29
- --theme-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
30
-
31
- --font-sans: var(--theme-font-sans);
32
- --font-mono: var(--theme-font-mono);
33
- --font-weight-bold: 650;
34
- --theme-text-scale: 1;
35
- --nav-font-family: var(--font-sans);
36
- --nav-text-size: var(--text-sm);
37
- --nav-text-line-height: var(--text-sm--line-height);
38
- --nav-heading-font-family: var(--font-sans);
39
- --nav-heading-size: var(--text-xs);
40
- --nav-heading-line-height: var(--text-xs--line-height);
41
- --nav-heading-weight: 700;
42
- --nav-heading-letter-spacing: 0.14em;
43
- --nav-badge-font-family: var(--font-sans);
44
- --nav-badge-size: var(--text-xs);
45
- --nav-badge-line-height: var(--text-xs--line-height);
46
- --nav-badge-weight: 600;
47
- --letter-spacing: 0;
48
- --space-unit: 0.25rem;
49
- --layout-topbar-height: 3.25rem;
50
- }
51
- }
@@ -1,285 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { provideEnvironmentInitializer, inject, makeEnvironmentProviders, ChangeDetectionStrategy, Component, input, computed } from '@angular/core';
3
- import { provideMaterialLayout, LayoutService } from '@ojiepermana/angular/layout';
4
- import { NavigationService, DEFAULT_NAVIGATION_ID, TopbarComponent, SidebarComponent } from '@ojiepermana/angular/navigation';
5
- import { provideMaterialTheme, withMaterialDefaults } from '@ojiepermana/angular/theme';
6
- import { RouterOutlet } from '@angular/router';
7
-
8
- const ETOS_BRAND_NAME = 'etos';
9
- const ETOS_THEME_CONFIG = {
10
- mode: 'light',
11
- brand: ETOS_BRAND_NAME,
12
- };
13
- const ETOS_LAYOUT_CONFIG = {
14
- mode: 'vertical',
15
- width: 'fixed',
16
- };
17
-
18
- function provideEtosTheme(config = {}, ...features) {
19
- return provideMaterialTheme({
20
- ...ETOS_THEME_CONFIG,
21
- ...config,
22
- brand: ETOS_BRAND_NAME,
23
- 'theme-brand': ETOS_BRAND_NAME,
24
- }, ...features);
25
- }
26
- function provideEtosLayout(config = {}) {
27
- return provideMaterialLayout({
28
- ...ETOS_LAYOUT_CONFIG,
29
- ...config,
30
- });
31
- }
32
- function provideEtosBrand(options = {}) {
33
- const providers = [
34
- provideEtosTheme(options.theme, ...(options.materialDefaults === false ? [] : [withMaterialDefaults()])),
35
- provideEtosLayout(options.layout),
36
- ];
37
- const navigation = options.navigation;
38
- if (navigation) {
39
- providers.push(provideEnvironmentInitializer(() => {
40
- inject(NavigationService).registerItems(options.navigationId ?? DEFAULT_NAVIGATION_ID, navigation);
41
- }));
42
- }
43
- return makeEnvironmentProviders(providers);
44
- }
45
-
46
- class EtosEmptyLayoutComponent {
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosEmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: EtosEmptyLayoutComponent, isStandalone: true, selector: "etos-empty-layout", host: { attributes: { "data-brand-layout": "etos-empty" }, classAttribute: "etos-layout-empty-host" }, ngImport: i0, template: `
49
- <main class="etos-layout-empty-main">
50
- <router-outlet />
51
- </main>
52
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosEmptyLayoutComponent, decorators: [{
55
- type: Component,
56
- args: [{
57
- selector: 'etos-empty-layout',
58
- changeDetection: ChangeDetectionStrategy.OnPush,
59
- imports: [RouterOutlet],
60
- host: {
61
- class: 'etos-layout-empty-host',
62
- 'data-brand-layout': 'etos-empty',
63
- },
64
- template: `
65
- <main class="etos-layout-empty-main">
66
- <router-outlet />
67
- </main>
68
- `,
69
- }]
70
- }] });
71
-
72
- class EtosHorizontalLayoutComponent {
73
- layout = inject(LayoutService);
74
- topbarAppearance = input('default', ...(ngDevMode ? [{ debugName: "topbarAppearance" }] : /* istanbul ignore next */ []));
75
- ariaLabel = input('Primary', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
76
- brandLayout = 'etos-horizontal';
77
- layoutWidth = this.layout.width;
78
- dividerBorderWidth = computed(() => 'var(--border-width)', ...(ngDevMode ? [{ debugName: "dividerBorderWidth" }] : /* istanbul ignore next */ []));
79
- hostClasses = computed(() => {
80
- const classes = ['etos-layout-host', 'etos-layout-host--horizontal'];
81
- if (this.layoutWidth() === 'fixed') {
82
- classes.push('etos-layout-host--fixed');
83
- }
84
- return classes.join(' ');
85
- }, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
86
- frameClasses = computed(() => {
87
- const classes = ['etos-layout-frame', 'etos-layout-frame--horizontal'];
88
- if (this.layoutWidth() === 'fixed') {
89
- classes.push('etos-layout-frame--fixed');
90
- }
91
- return classes.join(' ');
92
- }, ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
93
- mainClasses = computed(() => {
94
- const classes = ['etos-layout-main'];
95
- if (this.layoutWidth() === 'fixed') {
96
- classes.push('etos-layout-main--fixed');
97
- }
98
- return classes.join(' ');
99
- }, ...(ngDevMode ? [{ debugName: "mainClasses" }] : /* istanbul ignore next */ []));
100
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosHorizontalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: EtosHorizontalLayoutComponent, isStandalone: true, selector: "etos-horizontal-layout", inputs: { topbarAppearance: { classPropertyName: "topbarAppearance", publicName: "topbarAppearance", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.data-brand-layout": "brandLayout", "attr.data-layout-width": "layoutWidth()" } }, ngImport: i0, template: `
102
- <div [class]="frameClasses()">
103
- <ui-topbar
104
- class="etos-layout-topbar"
105
- [appearance]="topbarAppearance()"
106
- [ariaLabel]="ariaLabel()"
107
- [style.border-bottom-width]="dividerBorderWidth()">
108
- <div ui-topbar-start class="etos-layout-topbar-slot etos-layout-topbar-slot--start">
109
- <ng-content select="[ui-layout-brand],[ui-topbar-start]" />
110
- </div>
111
- <div ui-topbar-end class="etos-layout-topbar-slot etos-layout-topbar-slot--end">
112
- <ng-content select="[ui-layout-profile],[ui-topbar-end]" />
113
- </div>
114
- </ui-topbar>
115
- <main [class]="mainClasses()">
116
- <router-outlet />
117
- </main>
118
- </div>
119
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: TopbarComponent, selector: "ui-topbar", inputs: ["items", "navigationId", "appearance", "ariaLabel", "class", "autoRegister", "showHamburger", "hamburgerLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
120
- }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosHorizontalLayoutComponent, decorators: [{
122
- type: Component,
123
- args: [{
124
- selector: 'etos-horizontal-layout',
125
- changeDetection: ChangeDetectionStrategy.OnPush,
126
- imports: [RouterOutlet, TopbarComponent],
127
- host: {
128
- '[class]': 'hostClasses()',
129
- '[attr.data-brand-layout]': 'brandLayout',
130
- '[attr.data-layout-width]': 'layoutWidth()',
131
- },
132
- template: `
133
- <div [class]="frameClasses()">
134
- <ui-topbar
135
- class="etos-layout-topbar"
136
- [appearance]="topbarAppearance()"
137
- [ariaLabel]="ariaLabel()"
138
- [style.border-bottom-width]="dividerBorderWidth()">
139
- <div ui-topbar-start class="etos-layout-topbar-slot etos-layout-topbar-slot--start">
140
- <ng-content select="[ui-layout-brand],[ui-topbar-start]" />
141
- </div>
142
- <div ui-topbar-end class="etos-layout-topbar-slot etos-layout-topbar-slot--end">
143
- <ng-content select="[ui-layout-profile],[ui-topbar-end]" />
144
- </div>
145
- </ui-topbar>
146
- <main [class]="mainClasses()">
147
- <router-outlet />
148
- </main>
149
- </div>
150
- `,
151
- }]
152
- }], propDecorators: { topbarAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "topbarAppearance", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
153
-
154
- class EtosVerticalLayoutComponent {
155
- layout = inject(LayoutService);
156
- sidebarAppearance = input('default', ...(ngDevMode ? [{ debugName: "sidebarAppearance" }] : /* istanbul ignore next */ []));
157
- sidebarPosition = input('left', ...(ngDevMode ? [{ debugName: "sidebarPosition" }] : /* istanbul ignore next */ []));
158
- ariaLabel = input('Primary', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
159
- brandLayout = 'etos-vertical';
160
- layoutWidth = this.layout.width;
161
- dividerBorderWidth = computed(() => 'var(--border-width)', ...(ngDevMode ? [{ debugName: "dividerBorderWidth" }] : /* istanbul ignore next */ []));
162
- hostClasses = computed(() => {
163
- const classes = ['etos-layout-host', 'etos-layout-host--vertical'];
164
- if (this.layoutWidth() === 'fixed') {
165
- classes.push('etos-layout-host--fixed');
166
- }
167
- return classes.join(' ');
168
- }, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
169
- frameClasses = computed(() => {
170
- const classes = ['etos-layout-frame', 'etos-layout-frame--vertical'];
171
- if (this.layoutWidth() === 'fixed') {
172
- classes.push('etos-layout-frame--fixed');
173
- }
174
- return classes.join(' ');
175
- }, ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
176
- mainClasses = computed(() => {
177
- const classes = ['etos-layout-main'];
178
- if (this.layoutWidth() === 'fixed') {
179
- classes.push('etos-layout-main--fixed');
180
- }
181
- return classes.join(' ');
182
- }, ...(ngDevMode ? [{ debugName: "mainClasses" }] : /* istanbul ignore next */ []));
183
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosVerticalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: EtosVerticalLayoutComponent, isStandalone: true, selector: "etos-vertical-layout", inputs: { sidebarAppearance: { classPropertyName: "sidebarAppearance", publicName: "sidebarAppearance", isSignal: true, isRequired: false, transformFunction: null }, sidebarPosition: { classPropertyName: "sidebarPosition", publicName: "sidebarPosition", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.data-brand-layout": "brandLayout", "attr.data-layout-width": "layoutWidth()" } }, ngImport: i0, template: `
185
- <div [class]="frameClasses()">
186
- <ui-sidebar
187
- class="etos-layout-sidebar"
188
- [appearance]="sidebarAppearance()"
189
- [position]="sidebarPosition()"
190
- [ariaLabel]="ariaLabel()"
191
- [style.border-left-width]="dividerBorderWidth()"
192
- [style.border-right-width]="dividerBorderWidth()" />
193
- <main [class]="mainClasses()">
194
- <router-outlet />
195
- </main>
196
- </div>
197
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: SidebarComponent, selector: "ui-sidebar", inputs: ["items", "navigationId", "appearance", "position", "ariaLabel", "header", "class", "autoMobile", "autoRegister"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
198
- }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosVerticalLayoutComponent, decorators: [{
200
- type: Component,
201
- args: [{
202
- selector: 'etos-vertical-layout',
203
- changeDetection: ChangeDetectionStrategy.OnPush,
204
- imports: [RouterOutlet, SidebarComponent],
205
- host: {
206
- '[class]': 'hostClasses()',
207
- '[attr.data-brand-layout]': 'brandLayout',
208
- '[attr.data-layout-width]': 'layoutWidth()',
209
- },
210
- template: `
211
- <div [class]="frameClasses()">
212
- <ui-sidebar
213
- class="etos-layout-sidebar"
214
- [appearance]="sidebarAppearance()"
215
- [position]="sidebarPosition()"
216
- [ariaLabel]="ariaLabel()"
217
- [style.border-left-width]="dividerBorderWidth()"
218
- [style.border-right-width]="dividerBorderWidth()" />
219
- <main [class]="mainClasses()">
220
- <router-outlet />
221
- </main>
222
- </div>
223
- `,
224
- }]
225
- }], propDecorators: { sidebarAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarAppearance", required: false }] }], sidebarPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarPosition", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
226
-
227
- class EtosLayoutComponent {
228
- layout = inject(LayoutService);
229
- ariaLabel = input('Primary', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
230
- layoutMode = this.layout.mode;
231
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: EtosLayoutComponent, isStandalone: true, selector: "etos-layout", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, ngImport: i0, template: `
233
- @switch (layoutMode()) {
234
- @case ('horizontal') {
235
- <etos-horizontal-layout [ariaLabel]="ariaLabel()">
236
- <ng-content select="[ui-layout-brand],[ui-topbar-start]" />
237
- <ng-content select="[ui-layout-profile],[ui-topbar-end]" />
238
- </etos-horizontal-layout>
239
- }
240
- @default {
241
- <etos-vertical-layout [ariaLabel]="ariaLabel()" />
242
- }
243
- }
244
- `, isInline: true, dependencies: [{ kind: "component", type: EtosHorizontalLayoutComponent, selector: "etos-horizontal-layout", inputs: ["topbarAppearance", "ariaLabel"] }, { kind: "component", type: EtosVerticalLayoutComponent, selector: "etos-vertical-layout", inputs: ["sidebarAppearance", "sidebarPosition", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
245
- }
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EtosLayoutComponent, decorators: [{
247
- type: Component,
248
- args: [{
249
- selector: 'etos-layout',
250
- changeDetection: ChangeDetectionStrategy.OnPush,
251
- imports: [EtosHorizontalLayoutComponent, EtosVerticalLayoutComponent],
252
- host: {
253
- class: 'contents',
254
- },
255
- template: `
256
- @switch (layoutMode()) {
257
- @case ('horizontal') {
258
- <etos-horizontal-layout [ariaLabel]="ariaLabel()">
259
- <ng-content select="[ui-layout-brand],[ui-topbar-start]" />
260
- <ng-content select="[ui-layout-profile],[ui-topbar-end]" />
261
- </etos-horizontal-layout>
262
- }
263
- @default {
264
- <etos-vertical-layout [ariaLabel]="ariaLabel()" />
265
- }
266
- }
267
- `,
268
- }]
269
- }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
270
-
271
- /*
272
- * Implementation surface for @ojiepermana/angular/etos
273
- *
274
- * Etos is a brand umbrella entrypoint. Etos-specific layout, theme,
275
- * navigation composition, and brand defaults live here while shared
276
- * primitives remain in @ojiepermana/angular/theme, /layout, and /navigation.
277
- */
278
- const ETOS_BRAND_VERSION = '0.0.1';
279
-
280
- /**
281
- * Generated bundle index. Do not edit.
282
- */
283
-
284
- export { ETOS_BRAND_NAME, ETOS_BRAND_VERSION, ETOS_LAYOUT_CONFIG, ETOS_THEME_CONFIG, EtosEmptyLayoutComponent, EtosHorizontalLayoutComponent, EtosLayoutComponent, EtosVerticalLayoutComponent, provideEtosBrand, provideEtosLayout, provideEtosTheme };
285
- //# sourceMappingURL=ojiepermana-angular-brand-etos.mjs.map