@goat-bravos/intern-hub-layout 1.0.0

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 (97) hide show
  1. package/.editorconfig +17 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +20 -0
  4. package/.vscode/mcp.json +9 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/README.md +267 -0
  7. package/angular.json +131 -0
  8. package/ng-package.json +7 -0
  9. package/package.json +46 -0
  10. package/projects/layout-templates/README.md +63 -0
  11. package/projects/layout-templates/ng-package.json +7 -0
  12. package/projects/layout-templates/package.json +12 -0
  13. package/projects/layout-templates/src/lib/layout-templates.spec.ts +23 -0
  14. package/projects/layout-templates/src/lib/layout-templates.ts +15 -0
  15. package/projects/layout-templates/src/public-api.ts +5 -0
  16. package/projects/layout-templates/tsconfig.lib.json +17 -0
  17. package/projects/layout-templates/tsconfig.lib.prod.json +11 -0
  18. package/projects/layout-templates/tsconfig.spec.json +15 -0
  19. package/projects/ui-components/README.md +63 -0
  20. package/projects/ui-components/ng-package.json +7 -0
  21. package/projects/ui-components/package.json +12 -0
  22. package/projects/ui-components/src/lib/ui-components.spec.ts +23 -0
  23. package/projects/ui-components/src/lib/ui-components.ts +15 -0
  24. package/projects/ui-components/src/public-api.ts +5 -0
  25. package/projects/ui-components/tsconfig.lib.json +17 -0
  26. package/projects/ui-components/tsconfig.lib.prod.json +11 -0
  27. package/projects/ui-components/tsconfig.spec.json +15 -0
  28. package/public/B/341/273/231 icon message (1).svg" +87 -0
  29. package/public/B/341/273/231 icon message (2).svg" +104 -0
  30. package/public/B/341/273/231 icon message.svg" +98 -0
  31. package/public/FPT-IS-Logo.png +0 -0
  32. package/public/FPT_IS_Logo.svg +12 -0
  33. package/public/favicon.ico +0 -0
  34. package/public/federation.manifest.json +8 -0
  35. package/src/app/app.config.ts +22 -0
  36. package/src/app/app.html +1 -0
  37. package/src/app/app.routes.ts +24 -0
  38. package/src/app/app.scss +0 -0
  39. package/src/app/app.spec.ts +23 -0
  40. package/src/app/app.ts +19 -0
  41. package/src/index.html +15 -0
  42. package/src/libs/layouts/header/header.component.html +27 -0
  43. package/src/libs/layouts/header/header.component.scss +96 -0
  44. package/src/libs/layouts/header/header.component.ts +13 -0
  45. package/src/libs/layouts/main-layout/main-layout.component.html +15 -0
  46. package/src/libs/layouts/main-layout/main-layout.component.scss +35 -0
  47. package/src/libs/layouts/main-layout/main-layout.component.ts +17 -0
  48. package/src/libs/layouts/main-layout-test/main-layout-test.component.html +296 -0
  49. package/src/libs/layouts/main-layout-test/main-layout-test.component.scss +94 -0
  50. package/src/libs/layouts/main-layout-test/main-layout-test.component.ts +121 -0
  51. package/src/libs/layouts/sidebar/sidebar.component.html +7 -0
  52. package/src/libs/layouts/sidebar/sidebar.component.scss +38 -0
  53. package/src/libs/layouts/sidebar/sidebar.component.ts +19 -0
  54. package/src/libs/shared/components/approval/approval-list/approval-list.component.html +19 -0
  55. package/src/libs/shared/components/approval/approval-list/approval-list.component.scss +24 -0
  56. package/src/libs/shared/components/approval/approval-list/approval-list.component.ts +19 -0
  57. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.html +21 -0
  58. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.scss +28 -0
  59. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.ts +20 -0
  60. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.model.ts +8 -0
  61. package/src/libs/shared/components/button/button-container/button-container.component.html +20 -0
  62. package/src/libs/shared/components/button/button-container/button-container.component.scss +49 -0
  63. package/src/libs/shared/components/button/button-container/button-container.component.ts +38 -0
  64. package/src/libs/shared/components/button/button-container/button-container.model.ts +58 -0
  65. package/src/libs/shared/components/button/label-button/label-button.component.html +11 -0
  66. package/src/libs/shared/components/button/label-button/label-button.component.scss +13 -0
  67. package/src/libs/shared/components/button/label-button/label-button.component.ts +18 -0
  68. package/src/libs/shared/components/functional-label/functional-label.component.html +4 -0
  69. package/src/libs/shared/components/functional-label/functional-label.component.scss +58 -0
  70. package/src/libs/shared/components/functional-label/functional-label.component.ts +15 -0
  71. package/src/libs/shared/components/input/input-calendar/input-calendar.component.html +52 -0
  72. package/src/libs/shared/components/input/input-calendar/input-calendar.component.scss +98 -0
  73. package/src/libs/shared/components/input/input-calendar/input-calendar.component.ts +102 -0
  74. package/src/libs/shared/components/input/input-label/input-label.component.html +0 -0
  75. package/src/libs/shared/components/input/input-label/input-label.component.scss +0 -0
  76. package/src/libs/shared/components/input/input-label/input-label.component.ts +0 -0
  77. package/src/libs/shared/components/input/input-stepper/input-stepper.component.html +62 -0
  78. package/src/libs/shared/components/input/input-stepper/input-stepper.component.scss +211 -0
  79. package/src/libs/shared/components/input/input-stepper/input-stepper.component.ts +73 -0
  80. package/src/libs/shared/components/input/input-text/input-text.component.html +40 -0
  81. package/src/libs/shared/components/input/input-text/input-text.component.scss +143 -0
  82. package/src/libs/shared/components/input/input-text/input-text.component.ts +63 -0
  83. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.html +15 -0
  84. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.scss +70 -0
  85. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.ts +29 -0
  86. package/src/libs/shared/components/table/table-body/table-body.component.html +18 -0
  87. package/src/libs/shared/components/table/table-body/table-body.component.scss +6 -0
  88. package/src/libs/shared/components/table/table-body/table-body.component.ts +17 -0
  89. package/src/libs/shared/components/table/table-header/table-header.component.html +27 -0
  90. package/src/libs/shared/components/table/table-header/table-header.component.scss +91 -0
  91. package/src/libs/shared/components/table/table-header/table-header.component.ts +25 -0
  92. package/src/main.ts +6 -0
  93. package/src/public-api.ts +22 -0
  94. package/src/styles.scss +27 -0
  95. package/tsconfig.app.json +15 -0
  96. package/tsconfig.json +53 -0
  97. package/tsconfig.spec.json +15 -0
package/.editorconfig ADDED
@@ -0,0 +1,17 @@
1
+ # Editor configuration, see https://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ charset = utf-8
6
+ indent_style = space
7
+ indent_size = 2
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.ts]
12
+ quote_type = single
13
+ ij_typescript_use_double_quotes = false
14
+
15
+ [*.md]
16
+ max_line_length = off
17
+ trim_trailing_whitespace = false
@@ -0,0 +1,4 @@
1
+ {
2
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3
+ "recommendations": ["angular.ng-template"]
4
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
3
+ "version": "0.2.0",
4
+ "configurations": [
5
+ {
6
+ "name": "ng serve",
7
+ "type": "chrome",
8
+ "request": "launch",
9
+ "preLaunchTask": "npm: start",
10
+ "url": "http://localhost:4200/"
11
+ },
12
+ {
13
+ "name": "ng test",
14
+ "type": "chrome",
15
+ "request": "launch",
16
+ "preLaunchTask": "npm: test",
17
+ "url": "http://localhost:9876/debug.html"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ // For more information, visit: https://angular.dev/ai/mcp
3
+ "servers": {
4
+ "angular-cli": {
5
+ "command": "npx",
6
+ "args": ["-y", "@angular/cli", "mcp"]
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
3
+ "version": "2.0.0",
4
+ "tasks": [
5
+ {
6
+ "type": "npm",
7
+ "script": "start",
8
+ "isBackground": true,
9
+ "problemMatcher": {
10
+ "owner": "typescript",
11
+ "pattern": "$tsc",
12
+ "background": {
13
+ "activeOnStart": true,
14
+ "beginsPattern": {
15
+ "regexp": "Changes detected"
16
+ },
17
+ "endsPattern": {
18
+ "regexp": "bundle generation (complete|failed)"
19
+ }
20
+ }
21
+ }
22
+ },
23
+ {
24
+ "type": "npm",
25
+ "script": "test",
26
+ "isBackground": true,
27
+ "problemMatcher": {
28
+ "owner": "typescript",
29
+ "pattern": "$tsc",
30
+ "background": {
31
+ "activeOnStart": true,
32
+ "beginsPattern": {
33
+ "regexp": "Changes detected"
34
+ },
35
+ "endsPattern": {
36
+ "regexp": "bundle generation (complete|failed)"
37
+ }
38
+ }
39
+ }
40
+ }
41
+ ]
42
+ }
package/README.md ADDED
@@ -0,0 +1,267 @@
1
+ # Intern Hub Layout
2
+
3
+ This library provides a standard layout and shared UI components for Intern Hub applications. It is designed to be highly configurable via Angular Routing.
4
+
5
+ ## Installation
6
+
7
+ Run the following command to install the package:
8
+
9
+ ```bash
10
+ npm install intern-hub-layout dynamic-ds
11
+ ```
12
+
13
+ _(Note: `dynamic-ds` is a required peer dependency for the design system)_
14
+
15
+ ## Setup
16
+
17
+ To enable the configurable layout pattern, you must add `withComponentInputBinding()` to your `app.config.ts`. This allows the Router to pass configuration data directly to the Layout component inputs.
18
+
19
+ **`src/app/app.config.ts`**
20
+
21
+ ```typescript
22
+ import { ApplicationConfig } from '@angular/core';
23
+ import { provideRouter, withComponentInputBinding } from '@angular/router'; // Import this
24
+ import { routes } from './app.routes';
25
+
26
+ export const appConfig: ApplicationConfig = {
27
+ providers: [
28
+ provideRouter(routes, withComponentInputBinding()), // Add this function
29
+ ],
30
+ };
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ ### 1. Main Layout Configuration
36
+
37
+ You can use the `MainLayoutComponent` as a shell for your application. Define the Sidebar items directly in your route configuration using the `data` property.
38
+
39
+ **`src/app/app.routes.ts`**
40
+
41
+ ```typescript
42
+ import { Routes } from '@angular/router';
43
+ import { MainLayoutComponent } from 'intern-hub-layout'; // Import from library
44
+
45
+ export const routes: Routes = [
46
+ {
47
+ path: '',
48
+ component: MainLayoutComponent,
49
+ // Configure Sidebar Items here
50
+ data: {
51
+ sidebarItems: [
52
+ { icon: 'dsi-home-01-line', content: 'Home' },
53
+ { icon: 'dsi-map-01-line', content: 'Roadmap' },
54
+ { icon: 'dsi-file-01-line', content: 'Documents' },
55
+ ],
56
+ },
57
+ // Your application pages go here
58
+ children: [
59
+ {
60
+ path: '',
61
+ loadComponent: () => import('./home/home.component').then((m) => m.HomeComponent),
62
+ },
63
+ ],
64
+ },
65
+ ];
66
+ ```
67
+
68
+ ### 2. Using Shared Components
69
+
70
+ You can import individual components from the library.
71
+
72
+ ```typescript
73
+ import { Component } from '@angular/core';
74
+ import { ButtonContainerComponent, InputTextComponent } from 'intern-hub-layout';
75
+
76
+ @Component({
77
+ selector: 'app-example',
78
+ standalone: true,
79
+ imports: [ButtonContainerComponent, InputTextComponent],
80
+ template: `
81
+ <app-button-container content="Click Me"></app-button-container>
82
+ <app-input-text placeholder="Enter name"></app-input-text>
83
+ `,
84
+ })
85
+ export class ExampleComponent {}
86
+ ```
87
+
88
+ ## Available Components
89
+
90
+ ### Layouts
91
+
92
+ - `MainLayoutComponent`: Full application shell with Sidebar and Header.
93
+ - `SidebarComponent`: Standalone sidebar.
94
+ - `HeaderComponent`: Standalone header.
95
+
96
+ ### Shared UI
97
+
98
+ - **Buttons**: `ButtonContainerComponent`, `LabelButtonComponent`
99
+ - **Inputs**: `InputTextComponent`, `InputStepperComponent`, `InputCalendarComponent`
100
+ - **Tables**: `TableHeaderComponent`, `TableBodyComponent`
101
+ - **Other**: `ApprovalListComponent`, `PopUpConfirmComponent`
102
+
103
+ ## Author
104
+
105
+ Intern Hub Team
106
+
107
+ ## Component API Reference
108
+
109
+ ### 1. `MainLayoutComponent`
110
+
111
+ The main application shell.
112
+
113
+ - **Inputs**:
114
+ - `sidebarItems: SidebarItem[]`: List of items to display in the sidebar.
115
+
116
+ #### Interface `SidebarItem`
117
+
118
+ ```typescript
119
+ interface SidebarItem {
120
+ icon: string;
121
+ content: string;
122
+ }
123
+ ```
124
+
125
+ ---
126
+
127
+ ### 2. `ButtonContainerComponent`
128
+
129
+ A container for standard buttons.
130
+
131
+ - **Selector**: `app-button-container`
132
+ - **Inputs**:
133
+ - `size: 'xs' | 'sm' | 'md' | 'lg'`: Size of the button (default: `'md'`).
134
+ - `content: string`: Text content of the button.
135
+ - `leftIcon: string`: CSS class or content for left icon.
136
+ - `rightIcon: string`: CSS class or content for right icon.
137
+ - `color: string`: Text color (default: `var(--brand-100)`).
138
+ - `backgroundColor: string`: Background color (default: `var(--utility-900)`).
139
+ - `borderColor: string`: Border color (default: `var(--brand-100)`).
140
+ - `fontSize: string`: Custom font size.
141
+ - **Outputs**:
142
+ - `buttonClick`: Event emitted when button is clicked.
143
+
144
+ ### 3. `LabelButtonComponent`
145
+
146
+ A small button-like label.
147
+
148
+ - **Selector**: `app-label-button`
149
+ - **Inputs**:
150
+ - `label: string`: Text content.
151
+ - `bgColor: string`: Background color.
152
+ - `borderColor: string`: Border color.
153
+ - `textColor: string`: Text color.
154
+ - `width: string`: Width of the component (default: `100%`).
155
+ - `height: string`: Height of the component (default: `28px`).
156
+
157
+ ---
158
+
159
+ ### 4. `InputTextComponent`
160
+
161
+ Standard text input field.
162
+
163
+ - **Selector**: `app-input-text`
164
+ - **Inputs**:
165
+ - `headerInput: string`: Label text above the input.
166
+ - `placeholder: string`: Placeholder text.
167
+ - `value: string`: Initial value (supports binding).
168
+ - `readonly: boolean`: If true, input is read-only.
169
+ - `required: boolean`: If true, shows required asterisk.
170
+ - `width: string`: Width of the input container (default: `100%`).
171
+ - `maxLength: number`: Maximum character length.
172
+ - `showLimit: boolean`: Whether to show character count.
173
+ - `icon: string`: Icon class to display inside input.
174
+ - `typeInput: string`: Input type (e.g., `'text'`, `'password'`).
175
+ - **Outputs**:
176
+ - `valueChange`: Emits new value on input.
177
+ - `iconClick`: Emits when the icon is clicked.
178
+
179
+ ### 5. `InputStepperComponent`
180
+
181
+ Number input with increment/decrement buttons.
182
+
183
+ - **Selector**: `app-input-stepper`
184
+ - **Inputs**:
185
+ - `headerInput`: Label text.
186
+ - `value: number`: Initial value.
187
+ - `min`: Minimum value (default: 0).
188
+ - `max`: Maximum value (default: 100).
189
+ - `step`: Step value (default: 1).
190
+ - `state`: Visual state (`'default'`, `'negative'`, `'positive'`).
191
+ - `helperText`: Text displayed below the input.
192
+ - `readonly`, `required`, `disabled`, `width`.
193
+ - **Outputs**:
194
+ - `valueChange`: Emits new numeric value.
195
+
196
+ ### 6. `InputCalendarComponent`
197
+
198
+ Date picker input.
199
+
200
+ - **Selector**: `app-input-calendar`
201
+ - **Inputs**:
202
+ - `headerInput`: Label text.
203
+ - `value: string`: Date value in ISO format (`yyyy-mm-dd`).
204
+ - `placeholder`: Placeholder text (default: `'dd/mm/yyyy'`).
205
+ - `readonly`, `required`, `width`.
206
+ - **Outputs**:
207
+ - `valueChange`: Emits selected date in ISO format.
208
+
209
+ ---
210
+
211
+ ### 7. `TableHeaderComponent`
212
+
213
+ Renders table headers.
214
+
215
+ - **Selector**: `tr[app-table-header]` (Attribute on `<tr>`)
216
+ - **Inputs**:
217
+ - `columns: ColumnConfig[]`: Array of column configurations.
218
+ - `backgroundColor`: Header background color.
219
+ - `textColor`: Text color (default: white).
220
+ - `headerIconLeft`, `headerIconRight`: Icons for header cells.
221
+
222
+ #### Interface `ColumnConfig`
223
+
224
+ ```typescript
225
+ interface ColumnConfig {
226
+ header: string; // Display text
227
+ key: string; // Data key
228
+ width: string; // CSS width
229
+ }
230
+ ```
231
+
232
+ ### 8. `TableBodyComponent`
233
+
234
+ Renders table rows.
235
+
236
+ - **Selector**: `tbody[app-table-body]` (Attribute on `<tbody>`)
237
+ - **Inputs**:
238
+ - `rows: any[]`: Array of data objects.
239
+ - `columns: ColumnConfig[]`: Column configuration to map data.
240
+ - `columnTemplates`: Object mapping column keys to `TemplateRef` for custom cell rendering.
241
+
242
+ ---
243
+
244
+ ### 9. `ApprovalListComponent`
245
+
246
+ A list component showing approval items.
247
+
248
+ - **Selector**: `app-approval-list`
249
+ - **Inputs**:
250
+ - `rows: ApprovalListItemInterface[]`: List of items.
251
+ - `headerContentLeft`: Text for left header.
252
+ - `headerContentRight`: Text for right header.
253
+ - `width`: Component width.
254
+
255
+ ### 10. `PopUpConfirmComponent`
256
+
257
+ A confirmation modal.
258
+
259
+ - **Selector**: `app-pop-up-confirm`
260
+ - **Inputs**:
261
+ - `title`: Popup title.
262
+ - `content`: Message body.
263
+ - `imgUrl`: Icon/Image URL.
264
+ - `colorButton`: Color of the confirm button.
265
+ - **Outputs**:
266
+ - `confirmClick`: Emits when confirmed.
267
+ - `cancelClick`: Emits when canceled.
package/angular.json ADDED
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
+ "version": 1,
4
+ "cli": {
5
+ "packageManager": "npm",
6
+ "analytics": false
7
+ },
8
+ "newProjectRoot": "projects",
9
+ "projects": {
10
+ "intern-hub-layout": {
11
+ "projectType": "application",
12
+ "schematics": {
13
+ "@schematics/angular:component": {
14
+ "style": "scss"
15
+ }
16
+ },
17
+ "root": "",
18
+ "sourceRoot": "src",
19
+ "prefix": "app",
20
+ "architect": {
21
+ "build": {
22
+ "builder": "@angular/build:application",
23
+ "options": {
24
+ "browser": "src/main.ts",
25
+ "tsConfig": "tsconfig.app.json",
26
+ "inlineStyleLanguage": "scss",
27
+ "assets": [
28
+ {
29
+ "glob": "**/*",
30
+ "input": "public"
31
+ }
32
+ ],
33
+ "styles": [
34
+ "src/styles.scss"
35
+ ]
36
+ },
37
+ "configurations": {
38
+ "production": {
39
+ "budgets": [
40
+ {
41
+ "type": "initial",
42
+ "maximumWarning": "500kB",
43
+ "maximumError": "1MB"
44
+ },
45
+ {
46
+ "type": "anyComponentStyle",
47
+ "maximumWarning": "4kB",
48
+ "maximumError": "8kB"
49
+ }
50
+ ],
51
+ "outputHashing": "all"
52
+ },
53
+ "development": {
54
+ "optimization": false,
55
+ "extractLicenses": false,
56
+ "sourceMap": true
57
+ }
58
+ },
59
+ "defaultConfiguration": "production"
60
+ },
61
+ "serve": {
62
+ "builder": "@angular/build:dev-server",
63
+ "configurations": {
64
+ "production": {
65
+ "buildTarget": "intern-hub-layout:build:production"
66
+ },
67
+ "development": {
68
+ "buildTarget": "intern-hub-layout:build:development"
69
+ }
70
+ },
71
+ "defaultConfiguration": "development"
72
+ },
73
+ "test": {
74
+ "builder": "@angular/build:unit-test"
75
+ }
76
+ }
77
+ },
78
+ "ui-components": {
79
+ "projectType": "library",
80
+ "root": "projects/ui-components",
81
+ "sourceRoot": "projects/ui-components/src",
82
+ "prefix": "lib",
83
+ "architect": {
84
+ "build": {
85
+ "builder": "@angular/build:ng-packagr",
86
+ "configurations": {
87
+ "production": {
88
+ "tsConfig": "projects/ui-components/tsconfig.lib.prod.json"
89
+ },
90
+ "development": {
91
+ "tsConfig": "projects/ui-components/tsconfig.lib.json"
92
+ }
93
+ },
94
+ "defaultConfiguration": "production"
95
+ },
96
+ "test": {
97
+ "builder": "@angular/build:unit-test",
98
+ "options": {
99
+ "tsConfig": "projects/ui-components/tsconfig.spec.json"
100
+ }
101
+ }
102
+ }
103
+ },
104
+ "layout-templates": {
105
+ "projectType": "library",
106
+ "root": "projects/layout-templates",
107
+ "sourceRoot": "projects/layout-templates/src",
108
+ "prefix": "lib",
109
+ "architect": {
110
+ "build": {
111
+ "builder": "@angular/build:ng-packagr",
112
+ "configurations": {
113
+ "production": {
114
+ "tsConfig": "projects/layout-templates/tsconfig.lib.prod.json"
115
+ },
116
+ "development": {
117
+ "tsConfig": "projects/layout-templates/tsconfig.lib.json"
118
+ }
119
+ },
120
+ "defaultConfiguration": "production"
121
+ },
122
+ "test": {
123
+ "builder": "@angular/build:unit-test",
124
+ "options": {
125
+ "tsConfig": "projects/layout-templates/tsconfig.spec.json"
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "dist/intern-hub-layout",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@goat-bravos/intern-hub-layout",
3
+ "version": "1.0.0",
4
+ "scripts": {
5
+ "ng": "ng",
6
+ "start": "ng serve",
7
+ "build": "ng build",
8
+ "build:lib": "ng-packagr -p ng-package.json",
9
+ "watch": "ng build --watch --configuration development",
10
+ "test": "ng test"
11
+ },
12
+ "prettier": {
13
+ "printWidth": 100,
14
+ "singleQuote": true,
15
+ "overrides": [
16
+ {
17
+ "files": "*.html",
18
+ "options": {
19
+ "parser": "angular"
20
+ }
21
+ }
22
+ ]
23
+ },
24
+ "private": false,
25
+ "packageManager": "npm@10.9.2",
26
+ "dependencies": {
27
+ "@angular/common": "^21.1.0",
28
+ "@angular/compiler": "^21.1.0",
29
+ "@angular/core": "^21.1.0",
30
+ "@angular/forms": "^21.1.0",
31
+ "@angular/platform-browser": "^21.1.0",
32
+ "@angular/router": "^21.1.0",
33
+ "dynamic-ds": "^1.0.2",
34
+ "rxjs": "~7.8.0",
35
+ "tslib": "^2.3.0"
36
+ },
37
+ "devDependencies": {
38
+ "@angular/build": "^21.1.1",
39
+ "@angular/cli": "^21.1.1",
40
+ "@angular/compiler-cli": "^21.1.0",
41
+ "ng-packagr": "^21.0.0",
42
+ "jsdom": "^27.1.0",
43
+ "typescript": "~5.9.2",
44
+ "vitest": "^4.0.8"
45
+ }
46
+ }
@@ -0,0 +1,63 @@
1
+ # LayoutTemplates
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.1.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build layout-templates
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+ ```bash
35
+ cd dist/layout-templates
36
+ ```
37
+
38
+ 2. Run the `npm publish` command to publish your library to the npm registry:
39
+ ```bash
40
+ npm publish
41
+ ```
42
+
43
+ ## Running unit tests
44
+
45
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
46
+
47
+ ```bash
48
+ ng test
49
+ ```
50
+
51
+ ## Running end-to-end tests
52
+
53
+ For end-to-end (e2e) testing, run:
54
+
55
+ ```bash
56
+ ng e2e
57
+ ```
58
+
59
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
60
+
61
+ ## Additional Resources
62
+
63
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/layout-templates",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "layout-templates",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^21.1.0",
6
+ "@angular/core": "^21.1.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false
12
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { LayoutTemplates } from './layout-templates';
4
+
5
+ describe('LayoutTemplates', () => {
6
+ let component: LayoutTemplates;
7
+ let fixture: ComponentFixture<LayoutTemplates>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [LayoutTemplates]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(LayoutTemplates);
16
+ component = fixture.componentInstance;
17
+ await fixture.whenStable();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,15 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'lib-layout-templates',
5
+ imports: [],
6
+ template: `
7
+ <p>
8
+ layout-templates works!
9
+ </p>
10
+ `,
11
+ styles: ``,
12
+ })
13
+ export class LayoutTemplates {
14
+
15
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of layout-templates
3
+ */
4
+
5
+ export * from './lib/layout-templates';