@lenne.tech/ng-base 22.0.4 → 22.1.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 (33) hide show
  1. package/CLAUDE.md +5 -0
  2. package/README.md +34 -7
  3. package/fesm2022/lenne.tech-ng-base-ai.mjs +27 -27
  4. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs +15 -14
  5. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs.map +1 -1
  6. package/fesm2022/lenne.tech-ng-base-auth.mjs +17 -13
  7. package/fesm2022/lenne.tech-ng-base-auth.mjs.map +1 -1
  8. package/fesm2022/{lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs → lenne.tech-ng-base-bug-bug-report-dialog-f6VNOWnW.mjs} +11 -11
  9. package/fesm2022/{lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs.map → lenne.tech-ng-base-bug-bug-report-dialog-f6VNOWnW.mjs.map} +1 -1
  10. package/fesm2022/{lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs → lenne.tech-ng-base-bug-bug-report-service-D6slR3GD.mjs} +4 -4
  11. package/fesm2022/{lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs.map → lenne.tech-ng-base-bug-bug-report-service-D6slR3GD.mjs.map} +1 -1
  12. package/fesm2022/lenne.tech-ng-base-bug.mjs +5 -5
  13. package/fesm2022/lenne.tech-ng-base-files-ui.mjs +3 -3
  14. package/fesm2022/lenne.tech-ng-base-files.mjs +8 -4
  15. package/fesm2022/lenne.tech-ng-base-files.mjs.map +1 -1
  16. package/fesm2022/lenne.tech-ng-base-share.mjs +3 -3
  17. package/fesm2022/lenne.tech-ng-base-ui-provide.mjs +3 -3
  18. package/fesm2022/lenne.tech-ng-base-ui.mjs +1206 -1216
  19. package/fesm2022/lenne.tech-ng-base-ui.mjs.map +1 -1
  20. package/fesm2022/lenne.tech-ng-base-utils.mjs +9 -9
  21. package/fesm2022/lenne.tech-ng-base.mjs +27 -24
  22. package/fesm2022/lenne.tech-ng-base.mjs.map +1 -1
  23. package/i18n/auth/de.json +1 -3
  24. package/i18n/auth/en.json +1 -3
  25. package/i18n/de.json +1 -2
  26. package/i18n/en.json +1 -2
  27. package/i18n/ui/de.json +0 -5
  28. package/i18n/ui/en.json +0 -5
  29. package/package.json +5 -1
  30. package/types/lenne.tech-ng-base-auth-provide.d.ts +2 -3
  31. package/types/lenne.tech-ng-base-auth.d.ts +4 -1
  32. package/types/lenne.tech-ng-base-files.d.ts +5 -1
  33. package/types/lenne.tech-ng-base.d.ts +8 -1
package/i18n/ui/de.json CHANGED
@@ -2,10 +2,6 @@
2
2
  "lt": {
3
3
  "ui": {
4
4
  "close": "Schließen",
5
- "colorMode": "Farbschema",
6
- "colorModeDark": "Dunkel",
7
- "colorModeLight": "Hell",
8
- "colorModeSystem": "System",
9
5
  "hidePassword": "Passwort verbergen",
10
6
  "showPassword": "Passwort anzeigen",
11
7
  "breadcrumb": "Brotkrumennavigation",
@@ -15,7 +11,6 @@
15
11
  "noData": "Keine Einträge",
16
12
  "selectPlaceholder": "Bitte auswählen",
17
13
  "searchPlaceholder": "Suchen...",
18
- "datePlaceholder": "Datum wählen",
19
14
  "time": "Uhrzeit",
20
15
  "confirm": "Bestätigen",
21
16
  "cancel": "Abbrechen",
package/i18n/ui/en.json CHANGED
@@ -2,10 +2,6 @@
2
2
  "lt": {
3
3
  "ui": {
4
4
  "close": "Close",
5
- "colorMode": "Color mode",
6
- "colorModeDark": "Dark",
7
- "colorModeLight": "Light",
8
- "colorModeSystem": "System",
9
5
  "hidePassword": "Hide password",
10
6
  "showPassword": "Show password",
11
7
  "breadcrumb": "Breadcrumb",
@@ -15,7 +11,6 @@
15
11
  "noData": "No entries",
16
12
  "selectPlaceholder": "Please select",
17
13
  "searchPlaceholder": "Search...",
18
- "datePlaceholder": "Pick a date",
19
14
  "time": "Time",
20
15
  "confirm": "Confirm",
21
16
  "cancel": "Cancel",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/ng-base",
3
- "version": "22.0.4",
3
+ "version": "22.1.0",
4
4
  "description": "Angular library for lenne.Tech projects: nest-server integration (Better Auth, TUS upload, AI, offline sync), Spartan-based UI, SSR server helpers and Playwright helpers",
5
5
  "keywords": [
6
6
  "angular",
@@ -122,6 +122,7 @@
122
122
  "better-auth": ">=1.7.16 <1.8.0",
123
123
  "modern-screenshot": ">=4.6.0",
124
124
  "rxjs": "^7.8.0",
125
+ "tailwindcss": ">=4.0.0",
125
126
  "tus-js-client": ">=4.0.0"
126
127
  },
127
128
  "peerDependenciesMeta": {
@@ -137,6 +138,9 @@
137
138
  "modern-screenshot": {
138
139
  "optional": true
139
140
  },
141
+ "tailwindcss": {
142
+ "optional": true
143
+ },
140
144
  "tus-js-client": {
141
145
  "optional": true
142
146
  }
@@ -189,9 +189,6 @@ interface LtAuthError {
189
189
  /** Result of `LtAuthService.authenticateWithPasskey()`. */
190
190
  interface LtPasskeyAuthResult {
191
191
  error?: string;
192
- session?: {
193
- token: string;
194
- };
195
192
  success: boolean;
196
193
  user?: LtUser;
197
194
  }
@@ -307,6 +304,8 @@ export declare class LtAuthStateService {
307
304
  static ɵfac: i0.ɵɵFactoryDeclaration<LtAuthStateService, never>;
308
305
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
309
306
  }
307
+ /** Whether `value` looks like a JWT (`eyJ…`, three segments), the same test nest-server applies (`isJwtShaped`). */
308
+ export declare function isLtJwtShaped(value: unknown): value is string;
310
309
  /**
311
310
  * Hooks around `signOut()`. `provideLtSync()` registers one that flushes the offline outbox before the session ends and
312
311
  * deletes the IndexedDB afterwards; projects can add their own (multi provider).
@@ -254,7 +254,10 @@ export declare class LtAuthService {
254
254
  list: () => Promise<LtAuthResponse<LtPasskey[]>>;
255
255
  update: (id: string, name: string) => Promise<LtAuthResponse>;
256
256
  };
257
- /** Two-factor methods (passwords hashed). `verifyTotp` / `verifyBackupCode` set the user on success (fix vs. Nuxt). */
257
+ /**
258
+ * Two-factor methods (passwords hashed). `verifyTotp` / `verifyBackupCode` set the user on success and return the answer
259
+ * without Better Auth's opaque session token (a JWT of `cookies: false` stays).
260
+ */
258
261
  readonly twoFactor: {
259
262
  disable: <T extends {
260
263
  password: string;
@@ -151,7 +151,8 @@ export declare class LtFileService implements LtFileState {
151
151
  getFileInfo(id: string | undefined): Promise<LtFileInfo | null | string>;
152
152
  /**
153
153
  * `<api>/files/id/:id` — nest-server's `GET files/id/:id` (CoreFileController), which streams the file (or redirects
154
- * to a presigned S3 URL) after the rights check (`file.downloadRoles`, default admin).
154
+ * to a presigned S3 URL) after the rights check (`file.downloadRoles`, default admin). The URL the browser uses, also
155
+ * during SSR (`NG_PUBLIC_API_URL` or `/api`): it ends up in `href`/`src`, so the server-only `NG_API_URL` never does.
155
156
  */
156
157
  getFileUrl(id: string): string;
157
158
  /**
@@ -167,7 +168,10 @@ export declare class LtFileService implements LtFileState {
167
168
  /** `/^[a-f\d]{24}$/i`. */
168
169
  isValidMongoID(id: string): boolean;
169
170
  /** `<api><filesBasePath>` without a trailing slash; an absolute `filesBasePath` is used as is. */
171
+ /** Base for requests this service sends itself (`NG_API_URL` during SSR). */
170
172
  private baseUrl;
173
+ /** Base for links the browser follows (see {@link getFileUrl}). */
174
+ private linkBaseUrl;
171
175
  static ɵfac: i0.ɵɵFactoryDeclaration<LtFileService, never>;
172
176
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
173
177
  }
@@ -53,6 +53,13 @@ export declare class LtApiUrlService {
53
53
  baseUrl(): string;
54
54
  /** Build a full API URL for a path such as `/iam/sign-in/email`. Absolute URLs are returned unchanged. */
55
55
  buildUrl(path: string): string;
56
+ /**
57
+ * Build the URL the browser uses for `path`, also during SSR: `NG_PUBLIC_API_URL` (or `/api` behind the dev proxy),
58
+ * never the server-only `NG_API_URL`. For links that end up in the HTML (`href`, `src`), which the browser follows
59
+ * itself: an internal API host would be unreachable there and must not leak into the page. Absolute URLs are returned
60
+ * unchanged.
61
+ */
62
+ buildBrowserUrl(path: string): string;
56
63
  /** Whether browser requests go through the dev-server proxy under `/api`. Always `false` on the server. */
57
64
  isProxy(): boolean;
58
65
  /** Report a missing API URL (`dev`: warning, production: error), at most once per scope. Used by the config check. */
@@ -492,7 +499,7 @@ export declare class LtToastService {
492
499
  */
493
500
  export declare function tw(strings: TemplateStringsArray | string, ...values: unknown[]): string;
494
501
  /** Version of `@lenne.tech/ng-base`; kept in sync with `package.json` by `scripts/sync-version.mjs`. */
495
- export declare const LT_NG_BASE_VERSION = "22.0.4";
502
+ export declare const LT_NG_BASE_VERSION = "22.1.0";
496
503
  /**
497
504
  * Log `message` the first time `key` is seen; ignore later calls. The conditions behind these messages (missing API
498
505
  * URL, implicit dev proxy) are constant for the process, so repeating them only drowns other output.