@rblabs-dev/axiom 1.2.1 → 1.2.3

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 (73) hide show
  1. package/README.md +39 -13
  2. package/app-shell/package.json +4 -0
  3. package/brand-lockup/package.json +4 -0
  4. package/central-sign-in/package.json +4 -0
  5. package/cli/build-brand-assets.mjs +12 -18
  6. package/cli/project.mjs +6 -0
  7. package/cli/verify-production-assets.mjs +71 -6
  8. package/confirm-dialog/package.json +4 -0
  9. package/core/package.json +4 -0
  10. package/empty-state/package.json +4 -0
  11. package/fesm2022/rblabs-dev-axiom-app-shell.mjs +375 -0
  12. package/fesm2022/rblabs-dev-axiom-app-shell.mjs.map +1 -0
  13. package/fesm2022/rblabs-dev-axiom-brand-lockup.mjs +154 -0
  14. package/fesm2022/rblabs-dev-axiom-brand-lockup.mjs.map +1 -0
  15. package/fesm2022/rblabs-dev-axiom-central-sign-in.mjs +375 -0
  16. package/fesm2022/rblabs-dev-axiom-central-sign-in.mjs.map +1 -0
  17. package/fesm2022/rblabs-dev-axiom-confirm-dialog.mjs +329 -0
  18. package/fesm2022/rblabs-dev-axiom-confirm-dialog.mjs.map +1 -0
  19. package/fesm2022/rblabs-dev-axiom-core.mjs +181 -0
  20. package/fesm2022/rblabs-dev-axiom-core.mjs.map +1 -0
  21. package/fesm2022/rblabs-dev-axiom-empty-state.mjs +252 -0
  22. package/fesm2022/rblabs-dev-axiom-empty-state.mjs.map +1 -0
  23. package/fesm2022/rblabs-dev-axiom-message.mjs +194 -0
  24. package/fesm2022/rblabs-dev-axiom-message.mjs.map +1 -0
  25. package/fesm2022/rblabs-dev-axiom-monogram.mjs +102 -0
  26. package/fesm2022/rblabs-dev-axiom-monogram.mjs.map +1 -0
  27. package/fesm2022/rblabs-dev-axiom-page-header.mjs +199 -0
  28. package/fesm2022/rblabs-dev-axiom-page-header.mjs.map +1 -0
  29. package/fesm2022/rblabs-dev-axiom-panel.mjs +207 -0
  30. package/fesm2022/rblabs-dev-axiom-panel.mjs.map +1 -0
  31. package/fesm2022/rblabs-dev-axiom-public-shell.mjs +165 -0
  32. package/fesm2022/rblabs-dev-axiom-public-shell.mjs.map +1 -0
  33. package/fesm2022/rblabs-dev-axiom-shell-footer.mjs +73 -0
  34. package/fesm2022/rblabs-dev-axiom-shell-footer.mjs.map +1 -0
  35. package/fesm2022/rblabs-dev-axiom-status-chip.mjs +161 -0
  36. package/fesm2022/rblabs-dev-axiom-status-chip.mjs.map +1 -0
  37. package/fesm2022/rblabs-dev-axiom-technical-value.mjs +173 -0
  38. package/fesm2022/rblabs-dev-axiom-technical-value.mjs.map +1 -0
  39. package/fesm2022/rblabs-dev-axiom-theme-toggle.mjs +117 -0
  40. package/fesm2022/rblabs-dev-axiom-theme-toggle.mjs.map +1 -0
  41. package/fesm2022/rblabs-dev-axiom.mjs +15 -2955
  42. package/fonts/LICENSE +93 -0
  43. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  44. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  45. package/message/package.json +4 -0
  46. package/monogram/package.json +4 -0
  47. package/package.json +77 -2
  48. package/page-header/package.json +4 -0
  49. package/panel/package.json +4 -0
  50. package/public-shell/package.json +4 -0
  51. package/shell-footer/package.json +4 -0
  52. package/status-chip/package.json +4 -0
  53. package/styles/_fonts.scss +7 -7
  54. package/styles/_index.scss +1 -1
  55. package/technical-value/package.json +4 -0
  56. package/theme-toggle/package.json +4 -0
  57. package/types/rblabs-dev-axiom-app-shell.d.ts +50 -0
  58. package/types/rblabs-dev-axiom-brand-lockup.d.ts +35 -0
  59. package/types/rblabs-dev-axiom-central-sign-in.d.ts +82 -0
  60. package/types/rblabs-dev-axiom-confirm-dialog.d.ts +76 -0
  61. package/types/rblabs-dev-axiom-core.d.ts +116 -0
  62. package/types/rblabs-dev-axiom-empty-state.d.ts +55 -0
  63. package/types/rblabs-dev-axiom-message.d.ts +48 -0
  64. package/types/rblabs-dev-axiom-monogram.d.ts +12 -0
  65. package/types/rblabs-dev-axiom-page-header.d.ts +44 -0
  66. package/types/rblabs-dev-axiom-panel.d.ts +44 -0
  67. package/types/rblabs-dev-axiom-public-shell.d.ts +28 -0
  68. package/types/rblabs-dev-axiom-shell-footer.d.ts +17 -0
  69. package/types/rblabs-dev-axiom-status-chip.d.ts +40 -0
  70. package/types/rblabs-dev-axiom-technical-value.d.ts +35 -0
  71. package/types/rblabs-dev-axiom-theme-toggle.d.ts +12 -0
  72. package/types/rblabs-dev-axiom.d.ts +15 -675
  73. package/fesm2022/rblabs-dev-axiom.mjs.map +0 -1
@@ -0,0 +1,375 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, output } from "@angular/core";
3
+ import { MatButton } from "@angular/material/button";
4
+ import { MatIcon } from "@angular/material/icon";
5
+ import { RouterLink } from "@angular/router";
6
+ import { RbMessageComponent } from "@rblabs-dev/axiom/message";
7
+ import { RbMonogramComponent } from "@rblabs-dev/axiom/monogram";
8
+ let nextId = 0;
9
+ var RbCentralSignInComponent = class RbCentralSignInComponent {
10
+ appName = input.required(...ngDevMode ? [{ debugName: "appName" }] : /* istanbul ignore next */ []);
11
+ title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
12
+ eyebrow = input("", ...ngDevMode ? [{ debugName: "eyebrow" }] : /* istanbul ignore next */ []);
13
+ description = input("", ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
14
+ icon = input("login", ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
15
+ authHost = input("auth.rblabs.dev", ...ngDevMode ? [{ debugName: "authHost" }] : /* istanbul ignore next */ []);
16
+ note = input("", ...ngDevMode ? [{ debugName: "note" }] : /* istanbul ignore next */ []);
17
+ error = input(null, ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
18
+ backLink = input("/", ...ngDevMode ? [{ debugName: "backLink" }] : /* istanbul ignore next */ []);
19
+ signIn = output();
20
+ titleId = `rb-central-sign-in-title-${nextId++}`;
21
+ resolvedTitle = computed(() => this.title() || `Sign in to RB Labs ${this.appName()}`, ...ngDevMode ? [{ debugName: "resolvedTitle" }] : /* istanbul ignore next */ []);
22
+ resolvedDescription = computed(() => this.description() || `You will be taken to RB Labs Auth to sign in, then returned to ${this.appName()}.`, ...ngDevMode ? [{ debugName: "resolvedDescription" }] : /* istanbul ignore next */ []);
23
+ static ɵfac = i0.ɵɵngDeclareFactory({
24
+ minVersion: "12.0.0",
25
+ version: "22.2.3",
26
+ ngImport: i0,
27
+ type: RbCentralSignInComponent,
28
+ deps: [],
29
+ target: i0.ɵɵFactoryTarget.Component
30
+ });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({
32
+ minVersion: "17.0.0",
33
+ version: "22.2.3",
34
+ type: RbCentralSignInComponent,
35
+ isStandalone: true,
36
+ selector: "rb-central-sign-in",
37
+ inputs: {
38
+ appName: {
39
+ classPropertyName: "appName",
40
+ publicName: "appName",
41
+ isSignal: true,
42
+ isRequired: true,
43
+ transformFunction: null
44
+ },
45
+ title: {
46
+ classPropertyName: "title",
47
+ publicName: "title",
48
+ isSignal: true,
49
+ isRequired: false,
50
+ transformFunction: null
51
+ },
52
+ eyebrow: {
53
+ classPropertyName: "eyebrow",
54
+ publicName: "eyebrow",
55
+ isSignal: true,
56
+ isRequired: false,
57
+ transformFunction: null
58
+ },
59
+ description: {
60
+ classPropertyName: "description",
61
+ publicName: "description",
62
+ isSignal: true,
63
+ isRequired: false,
64
+ transformFunction: null
65
+ },
66
+ icon: {
67
+ classPropertyName: "icon",
68
+ publicName: "icon",
69
+ isSignal: true,
70
+ isRequired: false,
71
+ transformFunction: null
72
+ },
73
+ authHost: {
74
+ classPropertyName: "authHost",
75
+ publicName: "authHost",
76
+ isSignal: true,
77
+ isRequired: false,
78
+ transformFunction: null
79
+ },
80
+ note: {
81
+ classPropertyName: "note",
82
+ publicName: "note",
83
+ isSignal: true,
84
+ isRequired: false,
85
+ transformFunction: null
86
+ },
87
+ error: {
88
+ classPropertyName: "error",
89
+ publicName: "error",
90
+ isSignal: true,
91
+ isRequired: false,
92
+ transformFunction: null
93
+ },
94
+ backLink: {
95
+ classPropertyName: "backLink",
96
+ publicName: "backLink",
97
+ isSignal: true,
98
+ isRequired: false,
99
+ transformFunction: null
100
+ }
101
+ },
102
+ outputs: { signIn: "signIn" },
103
+ host: {
104
+ properties: { "attr.title": "null" },
105
+ classAttribute: "rb-central-sign-in"
106
+ },
107
+ ngImport: i0,
108
+ template: `
109
+ <section class="rb-central-sign-in__card" [attr.aria-labelledby]="titleId">
110
+ <div class="rb-central-sign-in__intro">
111
+ <span class="rb-central-sign-in__icon" aria-hidden="true">
112
+ <mat-icon fontSet="material-symbols-outlined">{{ icon() }}</mat-icon>
113
+ </span>
114
+ @if (eyebrow()) {
115
+ <p class="rb-central-sign-in__eyebrow">{{ eyebrow() }}</p>
116
+ }
117
+ <h1 class="rb-central-sign-in__title" [id]="titleId">{{ resolvedTitle() }}</h1>
118
+ <p class="rb-central-sign-in__description">{{ resolvedDescription() }}</p>
119
+ </div>
120
+
121
+ <div class="rb-central-sign-in__provider">
122
+ <rb-monogram class="rb-central-sign-in__mark" />
123
+ <span class="rb-central-sign-in__provider-name">
124
+ <strong>RB Labs Auth</strong>
125
+ <code>{{ authHost() }}</code>
126
+ </span>
127
+ </div>
128
+
129
+ @if (error()) {
130
+ <rb-message tone="danger">
131
+ <p>{{ error() }}</p>
132
+ </rb-message>
133
+ }
134
+
135
+ <div class="rb-central-sign-in__actions">
136
+ <button
137
+ class="rb-central-sign-in__continue"
138
+ matButton="filled"
139
+ type="button"
140
+ (click)="signIn.emit()"
141
+ >
142
+ Continue to RB Labs Auth
143
+ <mat-icon fontSet="material-symbols-outlined" aria-hidden="true" iconPositionEnd
144
+ >arrow_forward</mat-icon
145
+ >
146
+ </button>
147
+ <a class="rb-central-sign-in__back" matButton="outlined" [routerLink]="backLink()"
148
+ >Back to home</a
149
+ >
150
+ </div>
151
+
152
+ @if (note()) {
153
+ <p class="rb-central-sign-in__note">{{ note() }}</p>
154
+ }
155
+ </section>
156
+ `,
157
+ isInline: true,
158
+ styles: ["rb-central-sign-in{display:block;inline-size:min(100%,var(--rb-size-card))}rb-central-sign-in .rb-central-sign-in__card{display:grid;gap:var(--rb-space-6);padding:var(--rb-space-8);border:1px solid var(--rb-color-border);border-radius:var(--rb-radius-lg);background-color:var(--rb-color-surface-raised);color:var(--rb-color-text);box-shadow:var(--rb-elevation-2)}@media(width<40rem){rb-central-sign-in .rb-central-sign-in__card{gap:var(--rb-space-5);padding:var(--rb-space-6) var(--rb-space-5)}}rb-central-sign-in .rb-central-sign-in__intro{display:grid;gap:var(--rb-space-2);min-width:0}rb-central-sign-in .rb-central-sign-in__icon{display:grid;place-items:center;inline-size:var(--rb-space-12);block-size:var(--rb-space-12);margin-block-end:var(--rb-space-2);border-radius:var(--rb-radius-md);background-color:var(--rb-color-primary-soft);color:var(--rb-color-on-primary-soft)}rb-central-sign-in .rb-central-sign-in__icon mat-icon{inline-size:var(--rb-size-icon-lg);block-size:var(--rb-size-icon-lg);font-size:var(--rb-size-icon-lg)}rb-central-sign-in .rb-central-sign-in__eyebrow{margin:0;color:var(--rb-color-primary);font:var(--rb-type-label-small);letter-spacing:var(--rb-type-label-small-tracking);text-transform:uppercase}rb-central-sign-in .rb-central-sign-in__title{margin:0;color:var(--rb-color-text-strong);font:var(--rb-type-headline-small);letter-spacing:var(--rb-type-headline-small-tracking);overflow-wrap:anywhere}rb-central-sign-in .rb-central-sign-in__description{margin:0;color:var(--rb-color-text-muted);font:var(--rb-type-body-medium)}rb-central-sign-in .rb-central-sign-in__provider{display:flex;gap:var(--rb-space-3);align-items:center;padding:var(--rb-space-3) var(--rb-space-4);border:1px solid var(--rb-color-border);border-radius:var(--rb-radius-md);background-color:var(--rb-color-surface-sunken)}rb-central-sign-in .rb-central-sign-in__mark{flex:none;inline-size:var(--rb-size-monogram-sm)}rb-central-sign-in .rb-central-sign-in__provider-name{display:grid;min-width:0}rb-central-sign-in .rb-central-sign-in__provider-name strong{color:var(--rb-color-text-strong);font:var(--rb-type-title-small);letter-spacing:var(--rb-type-title-small-tracking)}rb-central-sign-in .rb-central-sign-in__provider-name code{color:var(--rb-color-text-muted);font:var(--rb-type-body-small);font-family:var(--rb-font-mono);overflow-wrap:anywhere}rb-central-sign-in .rb-central-sign-in__actions{display:grid;gap:var(--rb-space-3)}rb-central-sign-in .rb-central-sign-in__note{margin:0;padding-block-start:var(--rb-space-4);border-block-start:1px solid var(--rb-color-border);color:var(--rb-color-text-muted);font:var(--rb-type-body-small)}\n"],
159
+ dependencies: [
160
+ {
161
+ kind: "component",
162
+ type: MatButton,
163
+ selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ",
164
+ inputs: ["matButton"],
165
+ exportAs: ["matButton", "matAnchor"]
166
+ },
167
+ {
168
+ kind: "component",
169
+ type: MatIcon,
170
+ selector: "mat-icon",
171
+ inputs: [
172
+ "color",
173
+ "inline",
174
+ "svgIcon",
175
+ "fontSet",
176
+ "fontIcon"
177
+ ],
178
+ exportAs: ["matIcon"]
179
+ },
180
+ {
181
+ kind: "component",
182
+ type: RbMessageComponent,
183
+ selector: "rb-message",
184
+ inputs: [
185
+ "tone",
186
+ "title",
187
+ "icon",
188
+ "live"
189
+ ]
190
+ },
191
+ {
192
+ kind: "component",
193
+ type: RbMonogramComponent,
194
+ selector: "rb-monogram"
195
+ },
196
+ {
197
+ kind: "directive",
198
+ type: RouterLink,
199
+ selector: "[routerLink]",
200
+ inputs: [
201
+ "target",
202
+ "queryParams",
203
+ "fragment",
204
+ "queryParamsHandling",
205
+ "state",
206
+ "info",
207
+ "relativeTo",
208
+ "preserveFragment",
209
+ "skipLocationChange",
210
+ "replaceUrl",
211
+ "browserUrl",
212
+ "routerLink"
213
+ ]
214
+ }
215
+ ],
216
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
217
+ encapsulation: i0.ViewEncapsulation.None
218
+ });
219
+ };
220
+ i0.ɵɵngDeclareClassMetadata({
221
+ minVersion: "12.0.0",
222
+ version: "22.2.3",
223
+ ngImport: i0,
224
+ type: RbCentralSignInComponent,
225
+ decorators: [{
226
+ type: Component,
227
+ args: [{
228
+ selector: "rb-central-sign-in",
229
+ imports: [
230
+ MatButton,
231
+ MatIcon,
232
+ RbMessageComponent,
233
+ RbMonogramComponent,
234
+ RouterLink
235
+ ],
236
+ changeDetection: ChangeDetectionStrategy.OnPush,
237
+ encapsulation: ViewEncapsulation.None,
238
+ host: {
239
+ class: "rb-central-sign-in",
240
+ "[attr.title]": "null"
241
+ },
242
+ template: `
243
+ <section class="rb-central-sign-in__card" [attr.aria-labelledby]="titleId">
244
+ <div class="rb-central-sign-in__intro">
245
+ <span class="rb-central-sign-in__icon" aria-hidden="true">
246
+ <mat-icon fontSet="material-symbols-outlined">{{ icon() }}</mat-icon>
247
+ </span>
248
+ @if (eyebrow()) {
249
+ <p class="rb-central-sign-in__eyebrow">{{ eyebrow() }}</p>
250
+ }
251
+ <h1 class="rb-central-sign-in__title" [id]="titleId">{{ resolvedTitle() }}</h1>
252
+ <p class="rb-central-sign-in__description">{{ resolvedDescription() }}</p>
253
+ </div>
254
+
255
+ <div class="rb-central-sign-in__provider">
256
+ <rb-monogram class="rb-central-sign-in__mark" />
257
+ <span class="rb-central-sign-in__provider-name">
258
+ <strong>RB Labs Auth</strong>
259
+ <code>{{ authHost() }}</code>
260
+ </span>
261
+ </div>
262
+
263
+ @if (error()) {
264
+ <rb-message tone="danger">
265
+ <p>{{ error() }}</p>
266
+ </rb-message>
267
+ }
268
+
269
+ <div class="rb-central-sign-in__actions">
270
+ <button
271
+ class="rb-central-sign-in__continue"
272
+ matButton="filled"
273
+ type="button"
274
+ (click)="signIn.emit()"
275
+ >
276
+ Continue to RB Labs Auth
277
+ <mat-icon fontSet="material-symbols-outlined" aria-hidden="true" iconPositionEnd
278
+ >arrow_forward</mat-icon
279
+ >
280
+ </button>
281
+ <a class="rb-central-sign-in__back" matButton="outlined" [routerLink]="backLink()"
282
+ >Back to home</a
283
+ >
284
+ </div>
285
+
286
+ @if (note()) {
287
+ <p class="rb-central-sign-in__note">{{ note() }}</p>
288
+ }
289
+ </section>
290
+ `,
291
+ styles: ["rb-central-sign-in{display:block;inline-size:min(100%,var(--rb-size-card))}rb-central-sign-in .rb-central-sign-in__card{display:grid;gap:var(--rb-space-6);padding:var(--rb-space-8);border:1px solid var(--rb-color-border);border-radius:var(--rb-radius-lg);background-color:var(--rb-color-surface-raised);color:var(--rb-color-text);box-shadow:var(--rb-elevation-2)}@media(width<40rem){rb-central-sign-in .rb-central-sign-in__card{gap:var(--rb-space-5);padding:var(--rb-space-6) var(--rb-space-5)}}rb-central-sign-in .rb-central-sign-in__intro{display:grid;gap:var(--rb-space-2);min-width:0}rb-central-sign-in .rb-central-sign-in__icon{display:grid;place-items:center;inline-size:var(--rb-space-12);block-size:var(--rb-space-12);margin-block-end:var(--rb-space-2);border-radius:var(--rb-radius-md);background-color:var(--rb-color-primary-soft);color:var(--rb-color-on-primary-soft)}rb-central-sign-in .rb-central-sign-in__icon mat-icon{inline-size:var(--rb-size-icon-lg);block-size:var(--rb-size-icon-lg);font-size:var(--rb-size-icon-lg)}rb-central-sign-in .rb-central-sign-in__eyebrow{margin:0;color:var(--rb-color-primary);font:var(--rb-type-label-small);letter-spacing:var(--rb-type-label-small-tracking);text-transform:uppercase}rb-central-sign-in .rb-central-sign-in__title{margin:0;color:var(--rb-color-text-strong);font:var(--rb-type-headline-small);letter-spacing:var(--rb-type-headline-small-tracking);overflow-wrap:anywhere}rb-central-sign-in .rb-central-sign-in__description{margin:0;color:var(--rb-color-text-muted);font:var(--rb-type-body-medium)}rb-central-sign-in .rb-central-sign-in__provider{display:flex;gap:var(--rb-space-3);align-items:center;padding:var(--rb-space-3) var(--rb-space-4);border:1px solid var(--rb-color-border);border-radius:var(--rb-radius-md);background-color:var(--rb-color-surface-sunken)}rb-central-sign-in .rb-central-sign-in__mark{flex:none;inline-size:var(--rb-size-monogram-sm)}rb-central-sign-in .rb-central-sign-in__provider-name{display:grid;min-width:0}rb-central-sign-in .rb-central-sign-in__provider-name strong{color:var(--rb-color-text-strong);font:var(--rb-type-title-small);letter-spacing:var(--rb-type-title-small-tracking)}rb-central-sign-in .rb-central-sign-in__provider-name code{color:var(--rb-color-text-muted);font:var(--rb-type-body-small);font-family:var(--rb-font-mono);overflow-wrap:anywhere}rb-central-sign-in .rb-central-sign-in__actions{display:grid;gap:var(--rb-space-3)}rb-central-sign-in .rb-central-sign-in__note{margin:0;padding-block-start:var(--rb-space-4);border-block-start:1px solid var(--rb-color-border);color:var(--rb-color-text-muted);font:var(--rb-type-body-small)}\n"]
292
+ }]
293
+ }],
294
+ propDecorators: {
295
+ appName: [{
296
+ type: i0.Input,
297
+ args: [{
298
+ isSignal: true,
299
+ alias: "appName",
300
+ required: true
301
+ }]
302
+ }],
303
+ title: [{
304
+ type: i0.Input,
305
+ args: [{
306
+ isSignal: true,
307
+ alias: "title",
308
+ required: false
309
+ }]
310
+ }],
311
+ eyebrow: [{
312
+ type: i0.Input,
313
+ args: [{
314
+ isSignal: true,
315
+ alias: "eyebrow",
316
+ required: false
317
+ }]
318
+ }],
319
+ description: [{
320
+ type: i0.Input,
321
+ args: [{
322
+ isSignal: true,
323
+ alias: "description",
324
+ required: false
325
+ }]
326
+ }],
327
+ icon: [{
328
+ type: i0.Input,
329
+ args: [{
330
+ isSignal: true,
331
+ alias: "icon",
332
+ required: false
333
+ }]
334
+ }],
335
+ authHost: [{
336
+ type: i0.Input,
337
+ args: [{
338
+ isSignal: true,
339
+ alias: "authHost",
340
+ required: false
341
+ }]
342
+ }],
343
+ note: [{
344
+ type: i0.Input,
345
+ args: [{
346
+ isSignal: true,
347
+ alias: "note",
348
+ required: false
349
+ }]
350
+ }],
351
+ error: [{
352
+ type: i0.Input,
353
+ args: [{
354
+ isSignal: true,
355
+ alias: "error",
356
+ required: false
357
+ }]
358
+ }],
359
+ backLink: [{
360
+ type: i0.Input,
361
+ args: [{
362
+ isSignal: true,
363
+ alias: "backLink",
364
+ required: false
365
+ }]
366
+ }],
367
+ signIn: [{
368
+ type: i0.Output,
369
+ args: ["signIn"]
370
+ }]
371
+ }
372
+ });
373
+ export { RbCentralSignInComponent };
374
+
375
+ //# sourceMappingURL=rblabs-dev-axiom-central-sign-in.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rblabs-dev-axiom-central-sign-in.mjs","names":[],"sources":["../../../projects/axiom/central-sign-in/src/central-sign-in.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { RbMessageComponent } from '@rblabs-dev/axiom/message';\nimport { RbMonogramComponent } from '@rblabs-dev/axiom/monogram';\n\nlet nextId = 0;\n\n/**\n * The central sign-in page (docs/design-system.md, section 16.3): one card that hands the user off\n * to RB Labs Auth. Apps that sign in through Auth place it alone in `rb-public-shell`; it renders\n * the page's single `<h1>`, collects no credentials and emits `signIn` for the app to start the\n * handoff with its own return path.\n */\n@Component({\n selector: 'rb-central-sign-in',\n imports: [MatButton, MatIcon, RbMessageComponent, RbMonogramComponent, RouterLink],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'rb-central-sign-in',\n // `title` is an input; a static `title=\"…\"` would also leave a native tooltip on the host.\n '[attr.title]': 'null',\n },\n template: `\n <section class=\"rb-central-sign-in__card\" [attr.aria-labelledby]=\"titleId\">\n <div class=\"rb-central-sign-in__intro\">\n <span class=\"rb-central-sign-in__icon\" aria-hidden=\"true\">\n <mat-icon fontSet=\"material-symbols-outlined\">{{ icon() }}</mat-icon>\n </span>\n @if (eyebrow()) {\n <p class=\"rb-central-sign-in__eyebrow\">{{ eyebrow() }}</p>\n }\n <h1 class=\"rb-central-sign-in__title\" [id]=\"titleId\">{{ resolvedTitle() }}</h1>\n <p class=\"rb-central-sign-in__description\">{{ resolvedDescription() }}</p>\n </div>\n\n <div class=\"rb-central-sign-in__provider\">\n <rb-monogram class=\"rb-central-sign-in__mark\" />\n <span class=\"rb-central-sign-in__provider-name\">\n <strong>RB Labs Auth</strong>\n <code>{{ authHost() }}</code>\n </span>\n </div>\n\n @if (error()) {\n <rb-message tone=\"danger\">\n <p>{{ error() }}</p>\n </rb-message>\n }\n\n <div class=\"rb-central-sign-in__actions\">\n <button\n class=\"rb-central-sign-in__continue\"\n matButton=\"filled\"\n type=\"button\"\n (click)=\"signIn.emit()\"\n >\n Continue to RB Labs Auth\n <mat-icon fontSet=\"material-symbols-outlined\" aria-hidden=\"true\" iconPositionEnd\n >arrow_forward</mat-icon\n >\n </button>\n <a class=\"rb-central-sign-in__back\" matButton=\"outlined\" [routerLink]=\"backLink()\"\n >Back to home</a\n >\n </div>\n\n @if (note()) {\n <p class=\"rb-central-sign-in__note\">{{ note() }}</p>\n }\n </section>\n `,\n styleUrl: './central-sign-in.scss',\n})\nexport class RbCentralSignInComponent {\n /** The app the user signs in to: `Admin`, `Rover`, `Photogrammetry`… */\n readonly appName = input.required<string>();\n /** Overrides the default title, `Sign in to RB Labs <appName>`. */\n readonly title = input<string>('');\n /** Short context above the title, such as the workspace the page protects. */\n readonly eyebrow = input<string>('');\n /** Overrides the default sentence about where the user is sent. */\n readonly description = input<string>('');\n /** Material Symbols name of the app's icon in the card header. */\n readonly icon = input<string>('login');\n /** Host shown in the identity row. */\n readonly authHost = input<string>('auth.rblabs.dev');\n /** Optional closing note, such as who may enter the app. */\n readonly note = input<string>('');\n /** A safe, non-disclosing message for the failure the app was sent back with. */\n readonly error = input<string | null>(null);\n /** The \"Back to home\" target, as a `routerLink` value. */\n readonly backLink = input<string | readonly unknown[]>('/');\n\n /** The primary action: the app starts the Auth handoff with its return path. */\n readonly signIn = output<void>();\n\n protected readonly titleId = `rb-central-sign-in-title-${nextId++}`;\n\n protected readonly resolvedTitle = computed(\n () => this.title() || `Sign in to RB Labs ${this.appName()}`,\n );\n protected readonly resolvedDescription = computed(\n () =>\n this.description() ||\n `You will be taken to RB Labs Auth to sign in, then returned to ${this.appName()}.`,\n );\n}\n"],"mappings":"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"}