@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.
- package/README.md +39 -13
- package/app-shell/package.json +4 -0
- package/brand-lockup/package.json +4 -0
- package/central-sign-in/package.json +4 -0
- package/cli/build-brand-assets.mjs +12 -18
- package/cli/project.mjs +6 -0
- package/cli/verify-production-assets.mjs +71 -6
- package/confirm-dialog/package.json +4 -0
- package/core/package.json +4 -0
- package/empty-state/package.json +4 -0
- package/fesm2022/rblabs-dev-axiom-app-shell.mjs +375 -0
- package/fesm2022/rblabs-dev-axiom-app-shell.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-brand-lockup.mjs +154 -0
- package/fesm2022/rblabs-dev-axiom-brand-lockup.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-central-sign-in.mjs +375 -0
- package/fesm2022/rblabs-dev-axiom-central-sign-in.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-confirm-dialog.mjs +329 -0
- package/fesm2022/rblabs-dev-axiom-confirm-dialog.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-core.mjs +181 -0
- package/fesm2022/rblabs-dev-axiom-core.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-empty-state.mjs +252 -0
- package/fesm2022/rblabs-dev-axiom-empty-state.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-message.mjs +194 -0
- package/fesm2022/rblabs-dev-axiom-message.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-monogram.mjs +102 -0
- package/fesm2022/rblabs-dev-axiom-monogram.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-page-header.mjs +199 -0
- package/fesm2022/rblabs-dev-axiom-page-header.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-panel.mjs +207 -0
- package/fesm2022/rblabs-dev-axiom-panel.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-public-shell.mjs +165 -0
- package/fesm2022/rblabs-dev-axiom-public-shell.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-shell-footer.mjs +73 -0
- package/fesm2022/rblabs-dev-axiom-shell-footer.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-status-chip.mjs +161 -0
- package/fesm2022/rblabs-dev-axiom-status-chip.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-technical-value.mjs +173 -0
- package/fesm2022/rblabs-dev-axiom-technical-value.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom-theme-toggle.mjs +117 -0
- package/fesm2022/rblabs-dev-axiom-theme-toggle.mjs.map +1 -0
- package/fesm2022/rblabs-dev-axiom.mjs +15 -2955
- package/fonts/LICENSE +93 -0
- package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/message/package.json +4 -0
- package/monogram/package.json +4 -0
- package/package.json +77 -2
- package/page-header/package.json +4 -0
- package/panel/package.json +4 -0
- package/public-shell/package.json +4 -0
- package/shell-footer/package.json +4 -0
- package/status-chip/package.json +4 -0
- package/styles/_fonts.scss +7 -7
- package/styles/_index.scss +1 -1
- package/technical-value/package.json +4 -0
- package/theme-toggle/package.json +4 -0
- package/types/rblabs-dev-axiom-app-shell.d.ts +50 -0
- package/types/rblabs-dev-axiom-brand-lockup.d.ts +35 -0
- package/types/rblabs-dev-axiom-central-sign-in.d.ts +82 -0
- package/types/rblabs-dev-axiom-confirm-dialog.d.ts +76 -0
- package/types/rblabs-dev-axiom-core.d.ts +116 -0
- package/types/rblabs-dev-axiom-empty-state.d.ts +55 -0
- package/types/rblabs-dev-axiom-message.d.ts +48 -0
- package/types/rblabs-dev-axiom-monogram.d.ts +12 -0
- package/types/rblabs-dev-axiom-page-header.d.ts +44 -0
- package/types/rblabs-dev-axiom-panel.d.ts +44 -0
- package/types/rblabs-dev-axiom-public-shell.d.ts +28 -0
- package/types/rblabs-dev-axiom-shell-footer.d.ts +17 -0
- package/types/rblabs-dev-axiom-status-chip.d.ts +40 -0
- package/types/rblabs-dev-axiom-technical-value.d.ts +35 -0
- package/types/rblabs-dev-axiom-theme-toggle.d.ts +12 -0
- package/types/rblabs-dev-axiom.d.ts +15 -675
- 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":";;;;;;;AAcA,IAAI,SAAS;AAqEb,IAAa,2BAAb,MAAa,yBAAwB;CAE1B,UAAU,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAElC,QAAQ,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,UAAU,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAE3B,cAAc,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAE/B,OAAO,MAAc,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAE7B,WAAW,MAAc,mBAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAE3C,OAAO,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAExB,QAAQ,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAElC,WAAW,MAAmC,KAAI,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAGlD,SAAS,OAAM;CAEL,UAAU,4BAA4B;CAEtC,gBAAgB,eAC3B,KAAK,MAAK,KAAM,sBAAsB,KAAK,QAAO,KACzD,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CACkB,sBAAsB,eAErC,KAAK,YAAW,KAChB,kEAAkE,KAAK,QAAO,EAAE,IACnF,GAAA,YAAA,CAAA,EAAA,WAAA,sBAAA,CAAA,+BAAA,CAAA,CAAA;CAhCU,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAwB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAxB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAwB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,QAAA,SAAA;EAAA,MAAA;GAAA,YAAA,EAAA,cAAA,OAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UAnDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDT,UAAA;EAAA,QAAA,CAAA,0lFAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAxDS;IAAS,UAAA;IAAA,QAAA,CAAA,WAAA;IAAA,UAAA,CAAA,aAAA,WAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAO,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,UAAA,CAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAkB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAmB,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAU,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;EAAA,eAAA,GAAA,kBAAA;CAAA,CAAA;;AA2DtE,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EA7DpC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB;IAAC;IAAW;IAAS;IAAoB;IAAqB;GAAU;GAAC,iBACjE,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,MAC/B;IACJ,OAAO;IAEP,gBAAgB;GACjB;GAAA,UACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDT,QAAA,CAAA,0lFAAA;EAAA,CAAA"}
|