@sinequa/atomic-angular 0.2.10 → 0.3.8

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.
package/README.md CHANGED
@@ -1,145 +1,218 @@
1
1
  # @sinequa/atomic-angular
2
2
 
3
- ![npm](https://img.shields.io/npm/v/@sinequa/atomic-angular?style=flat-square)
4
- ![Angular](https://img.shields.io/badge/angular-%5E20.0.0-red?style=flat-square)
3
+ [![npm version](https://img.shields.io/npm/v/@sinequa/atomic-angular.svg)](https://npm.sinequa.com/@sinequa/atomic-angular)
4
+ [![Angular](https://img.shields.io/badge/Angular-v20-red.svg)](https://angular.dev)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
5
6
 
6
- **A modern, modular Angular library for building Search-Based Applications (SBA) with the Sinequa platform.**
7
+ > A comprehensive Angular component library and design system for building modern Sinequa search applications.
7
8
 
8
- ---
9
+ ## Overview
9
10
 
10
- ## 🚀 Overview
11
+ **@sinequa/atomic-angular** provides a complete set of UI components, features, and utilities for building enterprise-grade search applications powered by Sinequa. Built with Angular 20+ and modern web standards, it offers a consistent, accessible, and themeable framework with TypeScript-first development experience.
11
12
 
12
- `@sinequa/atomic-angular` provides a rich set of Angular components, services, stores, and utilities to rapidly build advanced search and analytics applications. It is part of the [Sinequa platform](https://www.sinequa.com/), offering enterprise-grade search, analytics, and AI capabilities.
13
+ ## Installation
13
14
 
14
- - **Modern UI components** for search, navigation, metadata, and more
15
- - **State management** with stores for user settings, themes, aggregations, and queries
16
- - **Powerful services** for audit, preview, navigation, and backend integration
17
- - **Extensible utilities** for queries, debounced signals, and more
15
+ ```bash
16
+ npm install @sinequa/atomic-angular
17
+ ```
18
18
 
19
- ---
19
+ ### Peer Dependencies
20
20
 
21
- ## 📦 Installation
21
+ ```json
22
+ {
23
+ "@angular/common": "^20.0.0",
24
+ "@angular/core": "^20.0.0",
25
+ "rxjs": "^7.8.0"
26
+ }
27
+ ```
22
28
 
23
- ```sh
24
- npm install @sinequa/atomic-angular
29
+ ## Features
30
+
31
+ ### 🔐 Authentication & Authorization
32
+
33
+ - Complete authentication flows with SSO support
34
+ - Password management (expiry, forgotten, change)
35
+ - Route guards and access control
36
+ - Multi-language support (EN, FR, DE)
37
+
38
+ ### 🔍 Advanced Search
39
+
40
+ - Powerful filter system with aggregations
41
+ - "Did You Mean" suggestions and autocomplete
42
+ - Recent and saved searches
43
+ - Bookmark and collection management
44
+ - Document preview and navigation
45
+ - Export functionality
46
+
47
+ ### 🛠️ Developer Experience
48
+
49
+ - **TypeScript-first** with full type safety
50
+ - **Standalone components** (no NgModules required)
51
+ - **Signal-based reactivity** for better performance
52
+ - **Modern syntax**: @if, @for, @switch control flow
53
+ - **Tree-shakeable** for optimal bundle size
54
+
55
+ ## Package Structure
56
+
57
+ ### @sinequa/atomic-angular
58
+
59
+ ```bash
60
+ components/ # Reusable UI components
61
+ ├── backdrop/
62
+ ├── document-locator/
63
+ ├── navbar-tabs/
64
+ ├── pagination/
65
+ └── ...
66
+
67
+ features/ # Feature modules
68
+ ├── auth/ # Authentication flows
69
+ ├── filters/ # Filter system
70
+ ├── bookmarks/ # Bookmark management
71
+ ├── collections/
72
+ └── ...
73
+
74
+ services/ # Business logic services
75
+ stores/ # State management
76
+ guards/ # Route guards
77
+ pipes/ # Custom pipes
78
+ utils/ # Utility functions
25
79
  ```
26
80
 
27
- ---
81
+ ## Available Components
28
82
 
29
- ## 🛠️ Quick Start
83
+ ### Core Components
30
84
 
31
- 1. **Bootstrap your Angular app (Angular 20+):**
85
+ - `SearchInputComponent` - Advanced search input with autocomplete
86
+ - `FiltersComponent` - Dynamic filter system
87
+ - `PaginationComponent` - Result pagination
88
+ - `DocumentLocatorComponent` - Document navigation
89
+ - `PreviewComponent` - Document preview
90
+ - `BackdropComponent` - Backdrop overlay
91
+ - `NavbarTabsComponent` - Navigation tabs
92
+ - `NoResultComponent` - No results display
93
+ - `SortSelectorComponent` - Sort options selector
32
94
 
33
- In your `main.ts`:
95
+ ### Authentication
34
96
 
35
- ```ts
36
- import { bootstrapApplication } from '@angular/platform-browser';
37
- import { provideRouter } from '@angular/router';
38
- import { AppComponent } from './app/app.component';
39
- import { routes } from './app/app.routes';
40
- import { provideHttpClient } from '@angular/common/http';
41
- // Import any Sinequa providers if needed
97
+ - `SignInFormComponent` - User sign-in
98
+ - `ChangePasswordFormComponent` - Password change
99
+ - `ForgotPasswordFormComponent` - Password recovery
100
+ - `AuthGuard` - Route protection
101
+ - `PasswordExpiryGuard` - Password expiry detection
42
102
 
43
- bootstrapApplication(AppComponent, {
44
- providers: [
45
- provideRouter(routes),
46
- provideHttpClient(),
47
- // ...other providers (e.g. Sinequa stores/services)
48
- ]
49
- });
50
- ```
103
+ ### Features
51
104
 
52
- 2. **Use Sinequa standalone components directly:**
105
+ - Alerts management
106
+ - Bookmarks system
107
+ - Collections management
108
+ - Advanced search drawer
109
+ - Export functionality
110
+ - Feedback system
111
+ - Labels management
112
+ - Recent searches
113
+ - Saved searches
53
114
 
54
- In your `app.component.ts` (or any feature component):
115
+ ## API Documentation
55
116
 
56
- ```ts
57
- import { FiltersBarComponent, AggregationComponent, MoreComponent } from '@sinequa/atomic-angular';
117
+ ### Services
58
118
 
59
- @Component({
60
- selector: 'app-root',
61
- standalone: true,
62
- imports: [FiltersBarComponent, AggregationComponent, MoreComponent],
63
- template: `
64
- <FiltersBar />
65
- <More />
66
- <Aggregation [name]="aggregationName" [column]="aggregationColumn" />
67
- `
68
- })
69
- export class AppComponent {
70
- aggregationName = 'Places';
71
- aggregationColumn = 'location';
72
- }
73
- ```
119
+ ```typescript
120
+ // ApplicationService - Core application logic
121
+ import { ApplicationService } from '@sinequa/atomic-angular';
74
122
 
75
- ---
123
+ // AggregationsService - Filter management
124
+ import { AggregationsService } from '@sinequa/atomic-angular';
76
125
 
77
- ## Features
126
+ // AuthService - Authentication
127
+ import { AuthService } from '@sinequa/atomic-angular';
128
+ ```
78
129
 
79
- ### Components
130
+ ### Guards
80
131
 
81
- - **Metadata**: Dynamic metadata display
82
- - **NavbarTabs**: Tab navigation component for switching between views
83
- - **Aggregation**: Faceted filter component for search and aggregation
84
- - ...and more ([see all components](./docs/components/))
132
+ ```typescript
133
+ import { AuthGuard, PasswordExpiryGuard } from '@sinequa/atomic-angular';
134
+
135
+ const routes: Routes = [
136
+ {
137
+ path: 'search',
138
+ canActivate: [AuthGuard],
139
+ component: SearchComponent
140
+ },
141
+ {
142
+ path: 'profile',
143
+ canActivate: [AuthGuard, PasswordExpiryGuard],
144
+ component: ProfileComponent
145
+ }
146
+ ];
147
+ ```
85
148
 
86
- ### Services
149
+ ## Changelog
87
150
 
88
- - **AuditService**: Audit events (login, logout, document, route)
89
- - **PreviewService**: Document preview with highlights/entities
90
- - **TextChunkService**: Retrieve text chunks from backend
91
- - **JsonMethodPluginService**: Call JSON plugins via HTTP
92
- - **NavigationService**: Navigation and URL info
93
- - **SelectionService**: Manage article selection
94
- - **ApplicationService**: User auth, app init, dynamic routes
95
- - ...([see all services](./docs/services/))
151
+ ### Recent Releases
96
152
 
97
- ### Stores
153
+ **v0.3.8** (2025-12-18)
98
154
 
99
- - **AppStore**: App state, customization, computed values
100
- - **UserSettingsStore**: Language, theme, bookmarks, recent searches
101
- - **ThemeStore**: Theme settings, CSS variables
102
- - **AggregationsStore**: Aggregation state
103
- - **SelectionStore**: Article selection
104
- - **QueryParamsStore**: Query parameters
105
- - ...([see all stores](./docs/stores/))
155
+ - Added chevron icon in document locator menu
156
+ - Improved component structure
106
157
 
107
- ### Directives
158
+ **v0.3.7** (2025-12-17)
108
159
 
109
- - Custom Angular directives for enhanced HTML/component behavior ([see all directives](./docs/directives/))
160
+ - Fixed parent selection in filters with `linkChildren`
161
+ - Enhanced selection state management
110
162
 
111
- ### Guards
163
+ **v0.3.6** (2025-12-17)
112
164
 
113
- - Route guards for authentication, roles, and more ([see all guards](./docs/guards/))
165
+ - Enhanced "Did You Mean" component styling
166
+ - Added text truncation for long filter names
114
167
 
115
- ### Interceptors
168
+ **v0.3.4** (2025-12-15)
116
169
 
117
- - HTTP interceptors for auth, audit, error handling ([see all interceptors](./docs/interceptors/))
170
+ - Complete password management flows
171
+ - Added `PasswordExpiryGuard`
118
172
 
119
- ### Pipes
173
+ **v0.3.0** (2025-12-09) - Major Release
120
174
 
121
- - Custom pipes for formatting, highlighting, icons, and more ([see all pipes](./docs/pipes/))
175
+ - New Chapsvision theme system
176
+ - Standardized icon components
177
+ - New `InputGroup` architecture
178
+ - Badge API changes
122
179
 
123
- ### Utilities
180
+ See [full changelog](https://github.com/Product/sba-atomic-angular/blob/develop/changelogs/CHANGELOG_0.2.10_to_0.3.8.md) for details.
124
181
 
125
- - Query utilities, debounced signals, and more ([see all utilities](./docs/utils/))
182
+ ## Migration Guide
126
183
 
127
- ### Web Services
184
+ ### Migrating from 0.2.x to 0.3.0+
185
+
186
+ #### Authentication
187
+
188
+ ```typescript
189
+ // Before
190
+ import { SignInComponent } from '@sinequa/atomic-angular';
191
+ // After
192
+ import { SignInFormComponent } from '@sinequa/atomic-angular';
193
+ ```
128
194
 
129
- - Backend API integration for CRUD and more ([see all web services](./docs/services/))
195
+ ## Browser Support
130
196
 
131
- ---
197
+ - Chrome (latest)
198
+ - Firefox (latest)
199
+ - Safari (latest)
200
+ - Edge (latest)
132
201
 
133
- ## 📚 Documentation
202
+ ## Requirements
134
203
 
135
- - [Full Documentation & Examples](https://sinequa.github.io/sba-mint/atomic-angular/intro)
204
+ - Angular 20+
205
+ - TypeScript 5.7+
206
+ - Node.js 18+
136
207
 
137
- ---
208
+ ## License
138
209
 
139
- ## 📄 License
210
+ Proprietary - Copyright © 2025 Sinequa. All rights reserved.
140
211
 
141
- [MIT](./LICENSE)
212
+ ## Support
142
213
 
143
- ---
214
+ - 📧 Email: [support@sinequa.com](mailto:support@sinequa.com)
215
+ - 📚 Documentation: [sinequa.com/docs](https://sinequa.com/docs)
216
+ - 🌐 Website: [www.sinequa.com](https://www.sinequa.com)
144
217
 
145
- © Sinequa. Built with ❤️ for the Angular community.
218
+ **Built by the Sinequa Team**
@@ -5,8 +5,16 @@
5
5
  "changePassword": "Passwort ändern",
6
6
  "newPassword": "Neues Passwort",
7
7
  "confirmPassword": "Passwort bestätigen",
8
+ "currentPassword": "Aktuelles Passwort",
8
9
  "confirm": "Bestätigen",
9
10
  "passwordChanged": "Passwort erfolgreich geändert",
11
+ "passwordExpiresSoon": "Ihr Passwort läuft bald ab",
12
+ "forgotPassword": "Passwort vergessen",
13
+ "forgotPasswordTitle": "Passwort vergessen?",
14
+ "forgotPasswordDescription": "Geben Sie Ihren Benutzernamen ein. Wenn Ihr Konto gültig ist und eine E-Mail-Adresse hat, erhalten Sie einen Link zum Zurücksetzen.",
15
+ "sendResetLink": "Reset-Link senden",
16
+ "resetEmailSent": "Ein Reset-Link wurde an {{email}} gesendet",
17
+ "resetEmailFailed": "Die E-Mail zum Zurücksetzen konnte nicht gesendet werden",
10
18
  "passwordChangeFailed": "Passwortänderung fehlgeschlagen",
11
19
  "back": "Zurück",
12
20
  "disconnect": "Abmelden",
@@ -7,7 +7,15 @@
7
7
  "confirmPassword": "Confirm password",
8
8
  "confirm": "Confirm",
9
9
  "passwordChanged": "Password changed successfully",
10
+ "currentPassword": "Current password",
11
+ "passwordExpiresSoon": "Your password is expiring soon",
10
12
  "passwordChangeFailed": "Password change failed",
13
+ "forgotPassword": "Forgot password",
14
+ "forgotPasswordTitle": "Forgot your password",
15
+ "forgotPasswordDescription": "Enter your username. If your account is valid and has an email address, you will receive a reset link.",
16
+ "sendResetLink": "Send reset link",
17
+ "resetEmailSent": "A reset link has been sent to {{email}}",
18
+ "resetEmailFailed": "Unable to send the reset email",
11
19
  "back": "Back",
12
20
  "disconnect": "Logout",
13
21
  "SignInWith": "Sign-in with { provider }",
@@ -7,10 +7,17 @@
7
7
  "confirmPassword": "Confirmer le mot de passe",
8
8
  "confirm": "Confirmer",
9
9
  "passwordChanged": "Mot de passe changé avec succès",
10
+ "forgotPassword": "Mot de passe oublié",
11
+ "currentPassword": "Mot de passe actuel",
12
+ "passwordExpiresSoon": "Votre mot de passe expire bientôt",
10
13
  "passwordChangeFailed": "Échec du changement de mot de passe",
11
14
  "back": "Retour",
12
15
  "disconnect": "Se déconnecter",
13
- "forgotYourPassword": "Mot de passe oublié ?",
16
+ "forgotPasswordTitle": "Mot de passe oublié ?",
17
+ "forgotPasswordDescription": "Saisissez votre nom d'utilisateur. Si votre compte est valide et dispose d'une adresse e-mail, vous recevrez un lien de réinitialisation.",
18
+ "sendResetLink": "Envoyer le lien de réinitialisation",
19
+ "resetEmailSent": "Un lien de réinitialisation a été envoyé à {{email}}",
20
+ "resetEmailFailed": "Impossible d'envoyer l'e-mail de réinitialisation",
14
21
  "loginDescription": "Saisissez votre adresse email pour vous connecter",
15
22
  "SignInWith": "Se connecter avec { provider }",
16
23
  "or": "Ou",