@cadriciel/layout-cerema 0.0.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.
Files changed (34) hide show
  1. package/fesm2022/cadriciel-layout-cerema.mjs +1576 -0
  2. package/fesm2022/cadriciel-layout-cerema.mjs.map +1 -0
  3. package/package.json +35 -0
  4. package/src/assets/layout/images/avatar.png +0 -0
  5. package/src/assets/layout/images/logo-cadriciel.png +0 -0
  6. package/src/assets/layout/images/logo-cerema.png +0 -0
  7. package/src/assets/layout/images/logo-cerema.svg +4 -0
  8. package/src/assets/layout/images/logo-dark.svg +3 -0
  9. package/src/assets/layout/images/logo-light.svg +3 -0
  10. package/src/lib/cerema-styles.scss +41 -0
  11. package/src/lib/cerema-tailwind.css +10 -0
  12. package/src/lib/styles/_breadcrumb.scss +18 -0
  13. package/src/lib/styles/_config.scss +8 -0
  14. package/src/lib/styles/_content.scss +20 -0
  15. package/src/lib/styles/_fonts.scss +32 -0
  16. package/src/lib/styles/_footer.scss +26 -0
  17. package/src/lib/styles/_main.scss +29 -0
  18. package/src/lib/styles/_responsive.scss +181 -0
  19. package/src/lib/styles/_sass_variables.scss +1 -0
  20. package/src/lib/styles/_sidebar.scss +3 -0
  21. package/src/lib/styles/_topbar.scss +230 -0
  22. package/src/lib/styles/_utils.scss +19 -0
  23. package/src/lib/styles/layout.scss +15 -0
  24. package/src/lib/styles/sidebar/_sidebar_slim.scss +146 -0
  25. package/src/lib/styles/sidebar/_sidebar_slim_plus.scss +158 -0
  26. package/src/lib/styles/sidebar/_sidebar_vertical.scss +132 -0
  27. package/src/lib/styles/theme/_dark.scss +10 -0
  28. package/src/lib/styles/theme/_light.scss +10 -0
  29. package/src/lib/styles/theme/_primary.scss +10 -0
  30. package/src/lib/styles/theme/_themes.scss +3 -0
  31. package/src/lib/styles/variables/_common.scss +15 -0
  32. package/src/lib/styles/variables/_dark.scss +3 -0
  33. package/src/lib/styles/variables/_light.scss +3 -0
  34. package/types/cadriciel-layout-cerema.d.ts +112 -0
@@ -0,0 +1,158 @@
1
+ @media screen and (min-width: 992px) {
2
+ .layout-container {
3
+ &.layout-slim-plus {
4
+ .layout-topbar {
5
+ .app-logo {
6
+ width: 5rem;
7
+ justify-content: center;
8
+
9
+ span {
10
+ display: none;
11
+ }
12
+ }
13
+
14
+ .topbar-menu {
15
+ margin: 0 2rem;
16
+ }
17
+ }
18
+
19
+ .topbar-menubutton {
20
+ display: none;
21
+ }
22
+
23
+ .layout-sidebar {
24
+ width: 7rem;
25
+ overflow: visible;
26
+
27
+ .layout-menu-container {
28
+ overflow: auto;
29
+ display: flex;
30
+ justify-content: center;
31
+ padding: 0;
32
+
33
+ &::-webkit-scrollbar {
34
+ display: none;
35
+ }
36
+ }
37
+ }
38
+
39
+ .layout-content-wrapper {
40
+ margin-left: 7rem;
41
+ }
42
+
43
+ .layout-menu {
44
+ ul {
45
+ display: none;
46
+ }
47
+
48
+ li.active-menuitem {
49
+ > ul {
50
+ display: block;
51
+ }
52
+ }
53
+ .layout-root-menuitem {
54
+ > .layout-menuitem-root-text {
55
+ display: none;
56
+ }
57
+
58
+ > a {
59
+ display: flex;
60
+ flex-direction: column;
61
+ align-items: center;
62
+ justify-content: center;
63
+ border-radius: var(--border-radius);
64
+ text-align: center;
65
+ cursor: pointer;
66
+ outline: none;
67
+ transition: background-color var(--transition-duration);
68
+ width: auto;
69
+ height: auto;
70
+ margin: 0 auto 1rem auto;
71
+ padding: 0.75rem 0;
72
+ color: var(--v-menuitem-text-color);
73
+
74
+ &:hover {
75
+ background: var(--v-menuitem-hover-bg);
76
+ }
77
+
78
+ .layout-submenu-toggler {
79
+ display: none;
80
+ }
81
+
82
+ .layout-menuitem-icon {
83
+ font-size: 1.75rem;
84
+ }
85
+
86
+ .layout-menuitem-text {
87
+ font-size: 0.875rem;
88
+ display: block;
89
+ margin-top: 0.25rem;
90
+ color: var(--menuitem-text-color);
91
+ }
92
+ }
93
+
94
+ > ul {
95
+ position: absolute;
96
+ left: 7rem;
97
+ top: 0;
98
+ min-width: 15rem;
99
+ background-color: var(--surface-overlay);
100
+ border-radius: var(--border-radius);
101
+ box-shadow:
102
+ 0px 4px 10px rgb(0 0 0 / 3%),
103
+ 0px 0px 2px rgb(0 0 0 / 6%),
104
+ 0px 2px 6px rgb(0 0 0 / 12%);
105
+ padding: 1rem;
106
+ max-height: 20rem;
107
+ overflow: auto;
108
+ z-index: 999;
109
+
110
+ a {
111
+ color: var(--v-overlay-menuitem-text-color);
112
+
113
+ &:hover {
114
+ background: var(--v-overlay-menuitem-hover-bg);
115
+ }
116
+ }
117
+
118
+ li {
119
+ a {
120
+ padding-left: 0.5rem;
121
+ }
122
+
123
+ li {
124
+ a {
125
+ padding-left: 1.5rem;
126
+ }
127
+
128
+ li {
129
+ a {
130
+ padding-left: 2.5rem;
131
+ }
132
+
133
+ li {
134
+ a {
135
+ padding-left: 3.5rem;
136
+ }
137
+
138
+ li {
139
+ a {
140
+ padding-left: 4.5rem;
141
+ }
142
+
143
+ li {
144
+ a {
145
+ padding-left: 5.5rem;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
@@ -0,0 +1,132 @@
1
+ .layout-sidebar {
2
+ position: fixed;
3
+ width: 14rem;
4
+ display: flex;
5
+ flex-direction: column;
6
+ height: calc(100% - 5rem);
7
+ left: 0;
8
+ top: 5rem;
9
+ user-select: none;
10
+ background: var(--v-body-bg);
11
+ z-index: 999;
12
+
13
+ .layout-menu-container {
14
+ overflow: auto;
15
+ flex: 1;
16
+ height: 100%;
17
+ padding: 1rem 1.5rem;
18
+ }
19
+
20
+ .layout-menu {
21
+ margin: 0;
22
+ padding: 0;
23
+ list-style-type: none;
24
+
25
+ .layout-root-menuitem {
26
+ > .layout-menuitem-root-text {
27
+ font-size: .857rem;
28
+ text-transform: uppercase;
29
+ font-weight: 700;
30
+ padding: 1rem 0 .5rem 0;
31
+ color: var(--v-menuitem-text-color-secondary);
32
+
33
+ .active-route {
34
+ font-weight: 700;
35
+ }
36
+ }
37
+
38
+ > a {
39
+ display: none;
40
+ }
41
+ }
42
+
43
+ li {
44
+ &.active-menuitem {
45
+ > a {
46
+ .layout-submenu-toggler {
47
+ transform: rotate(-180deg);
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ ul {
54
+ margin: 0;
55
+ padding: 0;
56
+ list-style-type: none;
57
+
58
+ a {
59
+ display: flex;
60
+ align-items: center;
61
+ outline: 0 none;
62
+ position: relative;
63
+ color: var(--v-menuitem-text-color);
64
+ padding: .5rem;
65
+ margin-bottom: .25rem;
66
+ border-radius: var(--border-radius);
67
+ line-height: 1;
68
+ transition: background-color var(--transition-duration), box-shadow var(--transition-duration);
69
+ cursor: pointer;
70
+
71
+ .layout-menuitem-icon {
72
+ margin-right: .5rem;
73
+ }
74
+
75
+ .layout-submenu-toggler {
76
+ font-size: 75%;
77
+ margin-left: auto;
78
+ transition: transform var(--transition-duration);
79
+ }
80
+
81
+ &.active-route {
82
+ font-weight: 700;
83
+ }
84
+
85
+ &:hover {
86
+ background: var(--v-menuitem-hover-bg);
87
+ }
88
+ }
89
+
90
+ ul {
91
+ overflow: hidden;
92
+ border-radius: var(--border-radius);
93
+
94
+ li {
95
+ a {
96
+ padding-left: 1.5rem;
97
+ }
98
+
99
+ li {
100
+ a {
101
+ padding-left: 2.5rem;
102
+ }
103
+
104
+ li {
105
+ a {
106
+ padding-left: 3.5rem;
107
+ }
108
+
109
+ li {
110
+ a {
111
+ padding-left: 4.5rem;
112
+ }
113
+
114
+ li {
115
+ a {
116
+ padding-left: 5.5rem;
117
+ }
118
+
119
+ li {
120
+ a {
121
+ padding-left: 6.5rem;
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,10 @@
1
+ .layout-dark {
2
+ --v-body-bg: var(--p-surface-900);
3
+ --v-menuitem-text-color-secondary: var(--text-color-secondary);
4
+ --v-menuitem-text-color: var(--text-color);
5
+ --v-menuitem-hover-bg: var(--surface-hover);
6
+ --v-overlay-menuitem-text-color: var(--text-color);
7
+ --v-overlay-menuitem-hover-bg: var(--surface-hover);
8
+ --v-topbar-search-button-bg: var(--surface-ground);
9
+ --v-topbar-search-button-icon-color: var(--v-menuitem-text-color-secondary);
10
+ }
@@ -0,0 +1,10 @@
1
+ .layout-light {
2
+ --v-body-bg: var(--p-surface-0);
3
+ --v-menuitem-text-color-secondary: var(--text-color-secondary);
4
+ --v-menuitem-text-color: var(--text-color);
5
+ --v-menuitem-hover-bg: var(--surface-hover);
6
+ --v-overlay-menuitem-text-color: var(--text-color);
7
+ --v-overlay-menuitem-hover-bg: var(--surface-hover);
8
+ --v-topbar-search-button-bg: var(--surface-ground);
9
+ --v-topbar-search-button-icon-color: var(--v-menuitem-text-color-secondary);
10
+ }
@@ -0,0 +1,10 @@
1
+ .layout-primary {
2
+ --v-body-bg: linear-gradient(147.38deg, var(--p-primary-500) 0%, var(--p-primary-800) 100%);
3
+ --v-menuitem-text-color-secondary: var(--primary-color-text);
4
+ --v-menuitem-text-color: var(--primary-color-text);
5
+ --v-menuitem-hover-bg: rgba(255, 255, 255, 0.1);
6
+ --v-overlay-menuitem-text-color: var(--text-color);
7
+ --v-overlay-menuitem-hover-bg: var(--surface-hover);
8
+ --v-topbar-search-button-bg: var(--primary-color-text);
9
+ --v-topbar-search-button-icon-color: var(--primary-color);
10
+ }
@@ -0,0 +1,3 @@
1
+ @use './_light';
2
+ @use './_dark';
3
+ @use './_primary';
@@ -0,0 +1,15 @@
1
+ :root {
2
+ --primary-color: var(--p-primary-color);
3
+ --primary-color-text: var(--p-primary-contrast-color);
4
+ --text-color: var(--p-text-color);
5
+ --text-color-secondary: var(--p-text-muted-color);
6
+ --surface-border: var(--p-content-border-color);
7
+ --surface-card: var(--p-content-background);
8
+ --surface-hover: var(--p-content-hover-background);
9
+ --surface-overlay: var(--p-overlay-popover-background);
10
+ --transition-duration: var(--p-transition-duration);
11
+ --maskbg: var(--p-mask-background);
12
+ --border-radius: var(--p-content-border-radius);
13
+ --layout-section-transition-duration: 0.2s;
14
+ --focus-ring-shadow: var(--p-focus-ring-shadow);
15
+ }
@@ -0,0 +1,3 @@
1
+ :root[class*='app-dark'] {
2
+ --surface-ground: var(--p-surface-950);
3
+ }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --surface-ground: var(--p-surface-100);
3
+ }
@@ -0,0 +1,112 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ElementRef, OnInit, OnDestroy, Renderer2 } from '@angular/core';
3
+ import { Router } from '@angular/router';
4
+ import * as rxjs from 'rxjs';
5
+ import { Subscription } from 'rxjs';
6
+ import * as _cadriciel_core from '@cadriciel/core';
7
+ import { LayoutService as LayoutService$1, UserService } from '@cadriciel/core';
8
+ import { MenuItem } from 'primeng/api';
9
+
10
+ interface MenuChangeEvent {
11
+ key: string;
12
+ routeEvent?: boolean;
13
+ }
14
+ interface TabCloseEvent {
15
+ tab: MenuItem;
16
+ index: number;
17
+ }
18
+ declare class LayoutService extends LayoutService$1 {
19
+ private menuSource;
20
+ private tabOpen;
21
+ private tabClose;
22
+ tabs: MenuItem[];
23
+ menuSource$: rxjs.Observable<MenuChangeEvent>;
24
+ tabOpen$: rxjs.Observable<MenuItem>;
25
+ tabClose$: rxjs.Observable<TabCloseEvent>;
26
+ constructor();
27
+ onMenuStateChange(event: MenuChangeEvent): void;
28
+ showProfileSidebar(): void;
29
+ onTabOpen(value: MenuItem): void;
30
+ openTab(value: MenuItem): void;
31
+ onTabClose(value: MenuItem, index: number): void;
32
+ closeTab(index: number): void;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutService, never>;
34
+ static ɵprov: i0.ɵɵInjectableDeclaration<LayoutService>;
35
+ }
36
+
37
+ declare class AppTopbar {
38
+ menu: MenuItem[];
39
+ searchInput: ElementRef;
40
+ menuButton: ElementRef;
41
+ searchActive: boolean;
42
+ layoutService: LayoutService;
43
+ userService: UserService;
44
+ constructor();
45
+ currentUserSignal: i0.Signal<_cadriciel_core.User>;
46
+ formatRoles(roles: string[] | undefined): string;
47
+ get userInitials(): string;
48
+ onMenuButtonClick(): void;
49
+ activateSearch(): void;
50
+ deactivateSearch(): void;
51
+ removeTab(event: any, item: MenuItem, index: number): void;
52
+ get layoutTheme(): string | undefined;
53
+ set layoutTheme(value: string);
54
+ get logo(): string;
55
+ get tabs(): MenuItem[];
56
+ onConfigButtonClick(): void;
57
+ toggleConfigSidebar(): void;
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppTopbar, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppTopbar, "[app-topbar]", never, {}, {}, never, never, true, never>;
60
+ }
61
+
62
+ declare class AppMenu implements OnInit {
63
+ el: ElementRef;
64
+ private menuService;
65
+ menuContainer: ElementRef;
66
+ model: MenuItem[];
67
+ ngOnInit(): void;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppMenu, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppMenu, "[app-menu]", never, {}, {}, never, never, true, never>;
70
+ }
71
+
72
+ declare class AppSidebar {
73
+ el: ElementRef<any>;
74
+ appMenu: AppMenu;
75
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppSidebar, never>;
76
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppSidebar, "[app-sidebar]", never, {}, {}, never, never, true, never>;
77
+ }
78
+
79
+ declare class AppLayout implements OnDestroy {
80
+ layoutService: LayoutService;
81
+ renderer: Renderer2;
82
+ router: Router;
83
+ overlayMenuOpenSubscription: Subscription;
84
+ tabOpenSubscription: Subscription;
85
+ tabCloseSubscription: Subscription;
86
+ menuOutsideClickListener: any;
87
+ menuScrollListener: any;
88
+ appSidebar: AppSidebar;
89
+ appTopbar: AppTopbar;
90
+ constructor(layoutService: LayoutService, renderer: Renderer2, router: Router);
91
+ blockBodyScroll(): void;
92
+ unblockBodyScroll(): void;
93
+ hideMenu(): void;
94
+ get containerClass(): {
95
+ 'layout-slim': boolean;
96
+ 'layout-slim-plus': boolean;
97
+ 'layout-static': boolean;
98
+ 'layout-overlay': boolean;
99
+ 'layout-overlay-active': boolean;
100
+ 'layout-mobile-active': boolean;
101
+ 'layout-static-inactive': boolean;
102
+ 'layout-light': boolean;
103
+ 'layout-dark': boolean;
104
+ 'layout-primary': boolean;
105
+ };
106
+ ngOnDestroy(): void;
107
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppLayout, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppLayout, "app-layout", never, {}, {}, never, never, true, never>;
109
+ }
110
+
111
+ export { AppLayout, LayoutService };
112
+ export type { MenuChangeEvent, TabCloseEvent };