@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,252 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output } from "@angular/core";
|
|
3
|
+
import { MatButton } from "@angular/material/button";
|
|
4
|
+
import { MatIcon } from "@angular/material/icon";
|
|
5
|
+
var RbEmptyStateComponent = class RbEmptyStateComponent {
|
|
6
|
+
title = input.required(...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
7
|
+
description = input("", ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
|
|
8
|
+
icon = input("inbox", ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
9
|
+
headingLevel = input(3, ...ngDevMode ? [{ debugName: "headingLevel" }] : /* istanbul ignore next */ []);
|
|
10
|
+
layout = input("centered", ...ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []);
|
|
11
|
+
actionLabel = input("", ...ngDevMode ? [{ debugName: "actionLabel" }] : /* istanbul ignore next */ []);
|
|
12
|
+
action = output();
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
14
|
+
minVersion: "12.0.0",
|
|
15
|
+
version: "22.2.3",
|
|
16
|
+
ngImport: i0,
|
|
17
|
+
type: RbEmptyStateComponent,
|
|
18
|
+
deps: [],
|
|
19
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
20
|
+
});
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
22
|
+
minVersion: "17.0.0",
|
|
23
|
+
version: "22.2.3",
|
|
24
|
+
type: RbEmptyStateComponent,
|
|
25
|
+
isStandalone: true,
|
|
26
|
+
selector: "rb-empty-state",
|
|
27
|
+
inputs: {
|
|
28
|
+
title: {
|
|
29
|
+
classPropertyName: "title",
|
|
30
|
+
publicName: "title",
|
|
31
|
+
isSignal: true,
|
|
32
|
+
isRequired: true,
|
|
33
|
+
transformFunction: null
|
|
34
|
+
},
|
|
35
|
+
description: {
|
|
36
|
+
classPropertyName: "description",
|
|
37
|
+
publicName: "description",
|
|
38
|
+
isSignal: true,
|
|
39
|
+
isRequired: false,
|
|
40
|
+
transformFunction: null
|
|
41
|
+
},
|
|
42
|
+
icon: {
|
|
43
|
+
classPropertyName: "icon",
|
|
44
|
+
publicName: "icon",
|
|
45
|
+
isSignal: true,
|
|
46
|
+
isRequired: false,
|
|
47
|
+
transformFunction: null
|
|
48
|
+
},
|
|
49
|
+
headingLevel: {
|
|
50
|
+
classPropertyName: "headingLevel",
|
|
51
|
+
publicName: "headingLevel",
|
|
52
|
+
isSignal: true,
|
|
53
|
+
isRequired: false,
|
|
54
|
+
transformFunction: null
|
|
55
|
+
},
|
|
56
|
+
layout: {
|
|
57
|
+
classPropertyName: "layout",
|
|
58
|
+
publicName: "layout",
|
|
59
|
+
isSignal: true,
|
|
60
|
+
isRequired: false,
|
|
61
|
+
transformFunction: null
|
|
62
|
+
},
|
|
63
|
+
actionLabel: {
|
|
64
|
+
classPropertyName: "actionLabel",
|
|
65
|
+
publicName: "actionLabel",
|
|
66
|
+
isSignal: true,
|
|
67
|
+
isRequired: false,
|
|
68
|
+
transformFunction: null
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
outputs: { action: "action" },
|
|
72
|
+
host: {
|
|
73
|
+
properties: {
|
|
74
|
+
"attr.title": "null",
|
|
75
|
+
"attr.data-layout": "layout()"
|
|
76
|
+
},
|
|
77
|
+
classAttribute: "rb-empty-state"
|
|
78
|
+
},
|
|
79
|
+
ngImport: i0,
|
|
80
|
+
template: `
|
|
81
|
+
<mat-icon class="rb-empty-state__icon" fontSet="material-symbols-outlined" aria-hidden="true">{{
|
|
82
|
+
icon()
|
|
83
|
+
}}</mat-icon>
|
|
84
|
+
<div class="rb-empty-state__copy">
|
|
85
|
+
@switch (headingLevel()) {
|
|
86
|
+
@case (2) {
|
|
87
|
+
<h2 class="rb-empty-state__title">{{ title() }}</h2>
|
|
88
|
+
}
|
|
89
|
+
@case (4) {
|
|
90
|
+
<h4 class="rb-empty-state__title">{{ title() }}</h4>
|
|
91
|
+
}
|
|
92
|
+
@case (5) {
|
|
93
|
+
<h5 class="rb-empty-state__title">{{ title() }}</h5>
|
|
94
|
+
}
|
|
95
|
+
@case (6) {
|
|
96
|
+
<h6 class="rb-empty-state__title">{{ title() }}</h6>
|
|
97
|
+
}
|
|
98
|
+
@default {
|
|
99
|
+
<h3 class="rb-empty-state__title">{{ title() }}</h3>
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
@if (description()) {
|
|
103
|
+
<p class="rb-empty-state__description">{{ description() }}</p>
|
|
104
|
+
}
|
|
105
|
+
<div class="rb-empty-state__actions">
|
|
106
|
+
@if (actionLabel()) {
|
|
107
|
+
<button matButton="outlined" type="button" (click)="action.emit()">
|
|
108
|
+
{{ actionLabel() }}
|
|
109
|
+
</button>
|
|
110
|
+
}
|
|
111
|
+
<ng-content select="[rbActions]" />
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
`,
|
|
115
|
+
isInline: true,
|
|
116
|
+
styles: ["rb-empty-state{display:flex;flex-direction:column;gap:var(--rb-space-3);align-items:center;min-width:0;padding:var(--rb-space-8) var(--rb-space-4);color:var(--rb-color-text-muted);text-align:center}rb-empty-state .rb-empty-state__icon{flex:none;width:var(--rb-space-10);height:var(--rb-space-10);color:var(--rb-color-primary);font-size:var(--rb-space-10)}rb-empty-state .rb-empty-state__copy{display:grid;gap:var(--rb-space-2);justify-items:center;min-width:0;max-width:30rem}rb-empty-state .rb-empty-state__title{margin:0;color:var(--rb-color-text-strong);font:var(--rb-type-title-medium);letter-spacing:var(--rb-type-title-medium-tracking);overflow-wrap:anywhere}rb-empty-state .rb-empty-state__description{margin:0;font:var(--rb-type-body-medium);overflow-wrap:anywhere}rb-empty-state .rb-empty-state__actions{display:flex;flex-wrap:wrap;gap:var(--rb-space-2);justify-content:center;margin-block-start:var(--rb-space-2)}rb-empty-state .rb-empty-state__actions:empty{display:none}rb-empty-state[data-layout=inline]{flex-direction:row;gap:var(--rb-space-3);align-items:flex-start;padding:var(--rb-space-4);border:1px dashed var(--rb-color-border-strong);border-radius:var(--rb-radius-md);background-color:var(--rb-color-surface-sunken);text-align:start}rb-empty-state[data-layout=inline] .rb-empty-state__icon{width:var(--rb-size-icon-lg);height:var(--rb-size-icon-lg);font-size:var(--rb-size-icon-lg)}rb-empty-state[data-layout=inline] .rb-empty-state__copy{gap:var(--rb-space-1);justify-items:start;max-width:none}rb-empty-state[data-layout=inline] .rb-empty-state__title{font:var(--rb-type-title-small);letter-spacing:var(--rb-type-title-small-tracking)}rb-empty-state[data-layout=inline] .rb-empty-state__actions{justify-content:flex-start}\n"],
|
|
117
|
+
dependencies: [{
|
|
118
|
+
kind: "component",
|
|
119
|
+
type: MatButton,
|
|
120
|
+
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] ",
|
|
121
|
+
inputs: ["matButton"],
|
|
122
|
+
exportAs: ["matButton", "matAnchor"]
|
|
123
|
+
}, {
|
|
124
|
+
kind: "component",
|
|
125
|
+
type: MatIcon,
|
|
126
|
+
selector: "mat-icon",
|
|
127
|
+
inputs: [
|
|
128
|
+
"color",
|
|
129
|
+
"inline",
|
|
130
|
+
"svgIcon",
|
|
131
|
+
"fontSet",
|
|
132
|
+
"fontIcon"
|
|
133
|
+
],
|
|
134
|
+
exportAs: ["matIcon"]
|
|
135
|
+
}],
|
|
136
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
137
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
141
|
+
minVersion: "12.0.0",
|
|
142
|
+
version: "22.2.3",
|
|
143
|
+
ngImport: i0,
|
|
144
|
+
type: RbEmptyStateComponent,
|
|
145
|
+
decorators: [{
|
|
146
|
+
type: Component,
|
|
147
|
+
args: [{
|
|
148
|
+
selector: "rb-empty-state",
|
|
149
|
+
imports: [MatButton, MatIcon],
|
|
150
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
151
|
+
encapsulation: ViewEncapsulation.None,
|
|
152
|
+
host: {
|
|
153
|
+
class: "rb-empty-state",
|
|
154
|
+
"[attr.title]": "null",
|
|
155
|
+
"[attr.data-layout]": "layout()"
|
|
156
|
+
},
|
|
157
|
+
template: `
|
|
158
|
+
<mat-icon class="rb-empty-state__icon" fontSet="material-symbols-outlined" aria-hidden="true">{{
|
|
159
|
+
icon()
|
|
160
|
+
}}</mat-icon>
|
|
161
|
+
<div class="rb-empty-state__copy">
|
|
162
|
+
@switch (headingLevel()) {
|
|
163
|
+
@case (2) {
|
|
164
|
+
<h2 class="rb-empty-state__title">{{ title() }}</h2>
|
|
165
|
+
}
|
|
166
|
+
@case (4) {
|
|
167
|
+
<h4 class="rb-empty-state__title">{{ title() }}</h4>
|
|
168
|
+
}
|
|
169
|
+
@case (5) {
|
|
170
|
+
<h5 class="rb-empty-state__title">{{ title() }}</h5>
|
|
171
|
+
}
|
|
172
|
+
@case (6) {
|
|
173
|
+
<h6 class="rb-empty-state__title">{{ title() }}</h6>
|
|
174
|
+
}
|
|
175
|
+
@default {
|
|
176
|
+
<h3 class="rb-empty-state__title">{{ title() }}</h3>
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
@if (description()) {
|
|
180
|
+
<p class="rb-empty-state__description">{{ description() }}</p>
|
|
181
|
+
}
|
|
182
|
+
<div class="rb-empty-state__actions">
|
|
183
|
+
@if (actionLabel()) {
|
|
184
|
+
<button matButton="outlined" type="button" (click)="action.emit()">
|
|
185
|
+
{{ actionLabel() }}
|
|
186
|
+
</button>
|
|
187
|
+
}
|
|
188
|
+
<ng-content select="[rbActions]" />
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
`,
|
|
192
|
+
styles: ["rb-empty-state{display:flex;flex-direction:column;gap:var(--rb-space-3);align-items:center;min-width:0;padding:var(--rb-space-8) var(--rb-space-4);color:var(--rb-color-text-muted);text-align:center}rb-empty-state .rb-empty-state__icon{flex:none;width:var(--rb-space-10);height:var(--rb-space-10);color:var(--rb-color-primary);font-size:var(--rb-space-10)}rb-empty-state .rb-empty-state__copy{display:grid;gap:var(--rb-space-2);justify-items:center;min-width:0;max-width:30rem}rb-empty-state .rb-empty-state__title{margin:0;color:var(--rb-color-text-strong);font:var(--rb-type-title-medium);letter-spacing:var(--rb-type-title-medium-tracking);overflow-wrap:anywhere}rb-empty-state .rb-empty-state__description{margin:0;font:var(--rb-type-body-medium);overflow-wrap:anywhere}rb-empty-state .rb-empty-state__actions{display:flex;flex-wrap:wrap;gap:var(--rb-space-2);justify-content:center;margin-block-start:var(--rb-space-2)}rb-empty-state .rb-empty-state__actions:empty{display:none}rb-empty-state[data-layout=inline]{flex-direction:row;gap:var(--rb-space-3);align-items:flex-start;padding:var(--rb-space-4);border:1px dashed var(--rb-color-border-strong);border-radius:var(--rb-radius-md);background-color:var(--rb-color-surface-sunken);text-align:start}rb-empty-state[data-layout=inline] .rb-empty-state__icon{width:var(--rb-size-icon-lg);height:var(--rb-size-icon-lg);font-size:var(--rb-size-icon-lg)}rb-empty-state[data-layout=inline] .rb-empty-state__copy{gap:var(--rb-space-1);justify-items:start;max-width:none}rb-empty-state[data-layout=inline] .rb-empty-state__title{font:var(--rb-type-title-small);letter-spacing:var(--rb-type-title-small-tracking)}rb-empty-state[data-layout=inline] .rb-empty-state__actions{justify-content:flex-start}\n"]
|
|
193
|
+
}]
|
|
194
|
+
}],
|
|
195
|
+
propDecorators: {
|
|
196
|
+
title: [{
|
|
197
|
+
type: i0.Input,
|
|
198
|
+
args: [{
|
|
199
|
+
isSignal: true,
|
|
200
|
+
alias: "title",
|
|
201
|
+
required: true
|
|
202
|
+
}]
|
|
203
|
+
}],
|
|
204
|
+
description: [{
|
|
205
|
+
type: i0.Input,
|
|
206
|
+
args: [{
|
|
207
|
+
isSignal: true,
|
|
208
|
+
alias: "description",
|
|
209
|
+
required: false
|
|
210
|
+
}]
|
|
211
|
+
}],
|
|
212
|
+
icon: [{
|
|
213
|
+
type: i0.Input,
|
|
214
|
+
args: [{
|
|
215
|
+
isSignal: true,
|
|
216
|
+
alias: "icon",
|
|
217
|
+
required: false
|
|
218
|
+
}]
|
|
219
|
+
}],
|
|
220
|
+
headingLevel: [{
|
|
221
|
+
type: i0.Input,
|
|
222
|
+
args: [{
|
|
223
|
+
isSignal: true,
|
|
224
|
+
alias: "headingLevel",
|
|
225
|
+
required: false
|
|
226
|
+
}]
|
|
227
|
+
}],
|
|
228
|
+
layout: [{
|
|
229
|
+
type: i0.Input,
|
|
230
|
+
args: [{
|
|
231
|
+
isSignal: true,
|
|
232
|
+
alias: "layout",
|
|
233
|
+
required: false
|
|
234
|
+
}]
|
|
235
|
+
}],
|
|
236
|
+
actionLabel: [{
|
|
237
|
+
type: i0.Input,
|
|
238
|
+
args: [{
|
|
239
|
+
isSignal: true,
|
|
240
|
+
alias: "actionLabel",
|
|
241
|
+
required: false
|
|
242
|
+
}]
|
|
243
|
+
}],
|
|
244
|
+
action: [{
|
|
245
|
+
type: i0.Output,
|
|
246
|
+
args: ["action"]
|
|
247
|
+
}]
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
export { RbEmptyStateComponent };
|
|
251
|
+
|
|
252
|
+
//# sourceMappingURL=rblabs-dev-axiom-empty-state.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rblabs-dev-axiom-empty-state.mjs","names":[],"sources":["../../../projects/axiom/empty-state/src/empty-state.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RbHeadingLevel } from '@rblabs-dev/axiom/panel';\n\nexport type RbEmptyStateLayout = 'centered' | 'inline';\n\n/**\n * Explains why a region has no content and, when there is one, offers the next step\n * (docs/design-system.md, section 15.4). `actionLabel` renders an outlined button that emits\n * `action`; elements marked `rbActions` are projected next to it, for links or several actions.\n */\n@Component({\n selector: 'rb-empty-state',\n imports: [MatButton, MatIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'rb-empty-state',\n // `title` is an input; a static `title=\"…\"` would also leave a native tooltip on the host.\n '[attr.title]': 'null',\n '[attr.data-layout]': 'layout()',\n },\n template: `\n <mat-icon class=\"rb-empty-state__icon\" fontSet=\"material-symbols-outlined\" aria-hidden=\"true\">{{\n icon()\n }}</mat-icon>\n <div class=\"rb-empty-state__copy\">\n @switch (headingLevel()) {\n @case (2) {\n <h2 class=\"rb-empty-state__title\">{{ title() }}</h2>\n }\n @case (4) {\n <h4 class=\"rb-empty-state__title\">{{ title() }}</h4>\n }\n @case (5) {\n <h5 class=\"rb-empty-state__title\">{{ title() }}</h5>\n }\n @case (6) {\n <h6 class=\"rb-empty-state__title\">{{ title() }}</h6>\n }\n @default {\n <h3 class=\"rb-empty-state__title\">{{ title() }}</h3>\n }\n }\n @if (description()) {\n <p class=\"rb-empty-state__description\">{{ description() }}</p>\n }\n <div class=\"rb-empty-state__actions\">\n @if (actionLabel()) {\n <button matButton=\"outlined\" type=\"button\" (click)=\"action.emit()\">\n {{ actionLabel() }}\n </button>\n }\n <ng-content select=\"[rbActions]\" />\n </div>\n </div>\n `,\n styleUrl: './empty-state.scss',\n})\nexport class RbEmptyStateComponent {\n readonly title = input.required<string>();\n readonly description = input<string>('');\n readonly icon = input<string>('inbox');\n /** Heading level of the title; follows the document outline, not the visual size. */\n readonly headingLevel = input<RbHeadingLevel>(3);\n /** `inline` is the compact variant for sidebars and narrow panels. */\n readonly layout = input<RbEmptyStateLayout>('centered');\n /** Label of the recovery button; leave empty for a purely informational state. */\n readonly actionLabel = input<string>('');\n readonly action = output<void>();\n}\n"],"mappings":";;;;AAkEA,IAAa,wBAAb,MAAa,sBAAqB;CACvB,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,cAAc,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,OAAO,MAAc,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAE7B,eAAe,MAAsB,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAEvC,SAAS,MAA0B,YAAW,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE9C,cAAc,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,SAAS,OAAM;CAVb,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAqB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;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,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,QAAA,SAAA;EAAA,MAAA;GAAA,YAAA;IAAA,cAAA;IAAA,oBAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UArCtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCT,UAAA;EAAA,QAAA,CAAA,qtDAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MA3CS;GAAS,UAAA;GAAA,QAAA,CAAA,WAAA;GAAA,UAAA,CAAA,aAAA,WAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAO,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;GAAA,UAAA,CAAA,SAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;EAAA,eAAA,GAAA,kBAAA;CAAA,CAAA;;AA8CjB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EAhDjC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAgB,SACjB,CAAC,WAAW,OAAO;GAAC,iBACZ,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,MAC/B;IACJ,OAAO;IAEP,gBAAgB;IAChB,sBAAsB;GACvB;GAAA,UACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCT,QAAA,CAAA,qtDAAA;EAAA,CAAA"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from "@angular/core";
|
|
3
|
+
import { MatIcon } from "@angular/material/icon";
|
|
4
|
+
import { RB_MESSAGE_TONE_LABELS, RB_TONE_ICONS } from "@rblabs-dev/axiom/core";
|
|
5
|
+
var RbMessageComponent = class RbMessageComponent {
|
|
6
|
+
tone = input("neutral", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
|
|
7
|
+
title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
8
|
+
icon = input("", ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
9
|
+
live = input("auto", ...ngDevMode ? [{ debugName: "live" }] : /* istanbul ignore next */ []);
|
|
10
|
+
resolvedIcon = computed(() => this.icon() || RB_TONE_ICONS[this.tone()] || "info", ...ngDevMode ? [{ debugName: "resolvedIcon" }] : /* istanbul ignore next */ []);
|
|
11
|
+
toneLabel = computed(() => RB_MESSAGE_TONE_LABELS[this.tone()], ...ngDevMode ? [{ debugName: "toneLabel" }] : /* istanbul ignore next */ []);
|
|
12
|
+
politeness = computed(() => {
|
|
13
|
+
const live = this.live();
|
|
14
|
+
if (live !== "auto") return live;
|
|
15
|
+
return this.tone() === "danger" ? "assertive" : "polite";
|
|
16
|
+
}, ...ngDevMode ? [{ debugName: "politeness" }] : /* istanbul ignore next */ []);
|
|
17
|
+
role = computed(() => {
|
|
18
|
+
const politeness = this.politeness();
|
|
19
|
+
if (politeness === "off") return null;
|
|
20
|
+
return politeness === "assertive" ? "alert" : "status";
|
|
21
|
+
}, ...ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []);
|
|
22
|
+
ariaLive = computed(() => {
|
|
23
|
+
const politeness = this.politeness();
|
|
24
|
+
return politeness === "off" ? null : politeness;
|
|
25
|
+
}, ...ngDevMode ? [{ debugName: "ariaLive" }] : /* istanbul ignore next */ []);
|
|
26
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
27
|
+
minVersion: "12.0.0",
|
|
28
|
+
version: "22.2.3",
|
|
29
|
+
ngImport: i0,
|
|
30
|
+
type: RbMessageComponent,
|
|
31
|
+
deps: [],
|
|
32
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
33
|
+
});
|
|
34
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
35
|
+
minVersion: "17.0.0",
|
|
36
|
+
version: "22.2.3",
|
|
37
|
+
type: RbMessageComponent,
|
|
38
|
+
isStandalone: true,
|
|
39
|
+
selector: "rb-message",
|
|
40
|
+
inputs: {
|
|
41
|
+
tone: {
|
|
42
|
+
classPropertyName: "tone",
|
|
43
|
+
publicName: "tone",
|
|
44
|
+
isSignal: true,
|
|
45
|
+
isRequired: false,
|
|
46
|
+
transformFunction: null
|
|
47
|
+
},
|
|
48
|
+
title: {
|
|
49
|
+
classPropertyName: "title",
|
|
50
|
+
publicName: "title",
|
|
51
|
+
isSignal: true,
|
|
52
|
+
isRequired: false,
|
|
53
|
+
transformFunction: null
|
|
54
|
+
},
|
|
55
|
+
icon: {
|
|
56
|
+
classPropertyName: "icon",
|
|
57
|
+
publicName: "icon",
|
|
58
|
+
isSignal: true,
|
|
59
|
+
isRequired: false,
|
|
60
|
+
transformFunction: null
|
|
61
|
+
},
|
|
62
|
+
live: {
|
|
63
|
+
classPropertyName: "live",
|
|
64
|
+
publicName: "live",
|
|
65
|
+
isSignal: true,
|
|
66
|
+
isRequired: false,
|
|
67
|
+
transformFunction: null
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
host: {
|
|
71
|
+
properties: {
|
|
72
|
+
"attr.title": "null",
|
|
73
|
+
"attr.data-tone": "tone()",
|
|
74
|
+
"attr.role": "role()",
|
|
75
|
+
"attr.aria-live": "ariaLive()"
|
|
76
|
+
},
|
|
77
|
+
classAttribute: "rb-message"
|
|
78
|
+
},
|
|
79
|
+
ngImport: i0,
|
|
80
|
+
template: `
|
|
81
|
+
<mat-icon class="rb-message__icon" fontSet="material-symbols-outlined" aria-hidden="true">{{
|
|
82
|
+
resolvedIcon()
|
|
83
|
+
}}</mat-icon>
|
|
84
|
+
<div class="rb-message__copy">
|
|
85
|
+
@if (title()) {
|
|
86
|
+
<p class="rb-message__title">
|
|
87
|
+
@if (toneLabel()) {
|
|
88
|
+
<span class="rb-visually-hidden">{{ toneLabel() }}: </span>
|
|
89
|
+
}
|
|
90
|
+
{{ title() }}
|
|
91
|
+
</p>
|
|
92
|
+
} @else if (toneLabel()) {
|
|
93
|
+
<span class="rb-visually-hidden">{{ toneLabel() }}: </span>
|
|
94
|
+
}
|
|
95
|
+
<div class="rb-message__body"><ng-content /></div>
|
|
96
|
+
</div>
|
|
97
|
+
`,
|
|
98
|
+
isInline: true,
|
|
99
|
+
styles: ["rb-message{display:flex;gap:var(--rb-space-3);align-items:flex-start;min-width:0;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);color:var(--rb-color-text);font:var(--rb-type-body-medium);letter-spacing:var(--rb-type-body-medium-tracking)}rb-message[data-tone=info]{border-color:var(--rb-color-info-border);background-color:var(--rb-color-info-soft);color:var(--rb-color-info)}rb-message[data-tone=success]{border-color:var(--rb-color-success-border);background-color:var(--rb-color-success-soft);color:var(--rb-color-success)}rb-message[data-tone=warning]{border-color:var(--rb-color-warning-border);background-color:var(--rb-color-warning-soft);color:var(--rb-color-warning)}rb-message[data-tone=danger]{border-color:var(--rb-color-danger-border);background-color:var(--rb-color-danger-soft);color:var(--rb-color-danger)}rb-message .rb-message__icon{flex:none;width:var(--rb-size-icon-md);height:var(--rb-size-icon-md);font-size:var(--rb-size-icon-md)}rb-message .rb-message__copy{display:grid;flex:1 1 auto;gap:var(--rb-space-1);min-width:0}rb-message .rb-message__title{margin:0;font-weight:var(--rb-font-weight-semibold)}rb-message .rb-message__body{min-width:0;overflow-wrap:anywhere}rb-message .rb-message__body:empty{display:none}rb-message .rb-message__body>:where(p,ul,ol){margin:0}rb-message .rb-message__body>*+*{margin-block-start:var(--rb-space-2)}rb-message .rb-message__body a{color:inherit;font-weight:var(--rb-font-weight-semibold)}\n"],
|
|
100
|
+
dependencies: [{
|
|
101
|
+
kind: "component",
|
|
102
|
+
type: MatIcon,
|
|
103
|
+
selector: "mat-icon",
|
|
104
|
+
inputs: [
|
|
105
|
+
"color",
|
|
106
|
+
"inline",
|
|
107
|
+
"svgIcon",
|
|
108
|
+
"fontSet",
|
|
109
|
+
"fontIcon"
|
|
110
|
+
],
|
|
111
|
+
exportAs: ["matIcon"]
|
|
112
|
+
}],
|
|
113
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
114
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
118
|
+
minVersion: "12.0.0",
|
|
119
|
+
version: "22.2.3",
|
|
120
|
+
ngImport: i0,
|
|
121
|
+
type: RbMessageComponent,
|
|
122
|
+
decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{
|
|
125
|
+
selector: "rb-message",
|
|
126
|
+
imports: [MatIcon],
|
|
127
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
128
|
+
encapsulation: ViewEncapsulation.None,
|
|
129
|
+
host: {
|
|
130
|
+
class: "rb-message",
|
|
131
|
+
"[attr.title]": "null",
|
|
132
|
+
"[attr.data-tone]": "tone()",
|
|
133
|
+
"[attr.role]": "role()",
|
|
134
|
+
"[attr.aria-live]": "ariaLive()"
|
|
135
|
+
},
|
|
136
|
+
template: `
|
|
137
|
+
<mat-icon class="rb-message__icon" fontSet="material-symbols-outlined" aria-hidden="true">{{
|
|
138
|
+
resolvedIcon()
|
|
139
|
+
}}</mat-icon>
|
|
140
|
+
<div class="rb-message__copy">
|
|
141
|
+
@if (title()) {
|
|
142
|
+
<p class="rb-message__title">
|
|
143
|
+
@if (toneLabel()) {
|
|
144
|
+
<span class="rb-visually-hidden">{{ toneLabel() }}: </span>
|
|
145
|
+
}
|
|
146
|
+
{{ title() }}
|
|
147
|
+
</p>
|
|
148
|
+
} @else if (toneLabel()) {
|
|
149
|
+
<span class="rb-visually-hidden">{{ toneLabel() }}: </span>
|
|
150
|
+
}
|
|
151
|
+
<div class="rb-message__body"><ng-content /></div>
|
|
152
|
+
</div>
|
|
153
|
+
`,
|
|
154
|
+
styles: ["rb-message{display:flex;gap:var(--rb-space-3);align-items:flex-start;min-width:0;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);color:var(--rb-color-text);font:var(--rb-type-body-medium);letter-spacing:var(--rb-type-body-medium-tracking)}rb-message[data-tone=info]{border-color:var(--rb-color-info-border);background-color:var(--rb-color-info-soft);color:var(--rb-color-info)}rb-message[data-tone=success]{border-color:var(--rb-color-success-border);background-color:var(--rb-color-success-soft);color:var(--rb-color-success)}rb-message[data-tone=warning]{border-color:var(--rb-color-warning-border);background-color:var(--rb-color-warning-soft);color:var(--rb-color-warning)}rb-message[data-tone=danger]{border-color:var(--rb-color-danger-border);background-color:var(--rb-color-danger-soft);color:var(--rb-color-danger)}rb-message .rb-message__icon{flex:none;width:var(--rb-size-icon-md);height:var(--rb-size-icon-md);font-size:var(--rb-size-icon-md)}rb-message .rb-message__copy{display:grid;flex:1 1 auto;gap:var(--rb-space-1);min-width:0}rb-message .rb-message__title{margin:0;font-weight:var(--rb-font-weight-semibold)}rb-message .rb-message__body{min-width:0;overflow-wrap:anywhere}rb-message .rb-message__body:empty{display:none}rb-message .rb-message__body>:where(p,ul,ol){margin:0}rb-message .rb-message__body>*+*{margin-block-start:var(--rb-space-2)}rb-message .rb-message__body a{color:inherit;font-weight:var(--rb-font-weight-semibold)}\n"]
|
|
155
|
+
}]
|
|
156
|
+
}],
|
|
157
|
+
propDecorators: {
|
|
158
|
+
tone: [{
|
|
159
|
+
type: i0.Input,
|
|
160
|
+
args: [{
|
|
161
|
+
isSignal: true,
|
|
162
|
+
alias: "tone",
|
|
163
|
+
required: false
|
|
164
|
+
}]
|
|
165
|
+
}],
|
|
166
|
+
title: [{
|
|
167
|
+
type: i0.Input,
|
|
168
|
+
args: [{
|
|
169
|
+
isSignal: true,
|
|
170
|
+
alias: "title",
|
|
171
|
+
required: false
|
|
172
|
+
}]
|
|
173
|
+
}],
|
|
174
|
+
icon: [{
|
|
175
|
+
type: i0.Input,
|
|
176
|
+
args: [{
|
|
177
|
+
isSignal: true,
|
|
178
|
+
alias: "icon",
|
|
179
|
+
required: false
|
|
180
|
+
}]
|
|
181
|
+
}],
|
|
182
|
+
live: [{
|
|
183
|
+
type: i0.Input,
|
|
184
|
+
args: [{
|
|
185
|
+
isSignal: true,
|
|
186
|
+
alias: "live",
|
|
187
|
+
required: false
|
|
188
|
+
}]
|
|
189
|
+
}]
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
export { RbMessageComponent };
|
|
193
|
+
|
|
194
|
+
//# sourceMappingURL=rblabs-dev-axiom-message.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rblabs-dev-axiom-message.mjs","names":[],"sources":["../../../projects/axiom/message/src/message.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { RB_MESSAGE_TONE_LABELS, RB_TONE_ICONS, RbMessageTone } from '@rblabs-dev/axiom/core';\n\n/**\n * How the message is announced. `auto` makes a danger message an assertive alert and every other\n * tone a polite status; `off` renders a static message with no live region.\n */\nexport type RbMessageLive = 'auto' | 'polite' | 'assertive' | 'off';\n\n/**\n * Inline status message (docs/design-system.md, section 15.3). The host is the live region, so keep\n * the component mounted and change its content: a region inserted together with its text is not\n * announced by most screen readers (section 9.5).\n */\n@Component({\n selector: 'rb-message',\n imports: [MatIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'rb-message',\n // `title` is an input; a static `title=\"…\"` would also leave a native tooltip on the host.\n '[attr.title]': 'null',\n '[attr.data-tone]': 'tone()',\n '[attr.role]': 'role()',\n '[attr.aria-live]': 'ariaLive()',\n },\n template: `\n <mat-icon class=\"rb-message__icon\" fontSet=\"material-symbols-outlined\" aria-hidden=\"true\">{{\n resolvedIcon()\n }}</mat-icon>\n <div class=\"rb-message__copy\">\n @if (title()) {\n <p class=\"rb-message__title\">\n @if (toneLabel()) {\n <span class=\"rb-visually-hidden\">{{ toneLabel() }}: </span>\n }\n {{ title() }}\n </p>\n } @else if (toneLabel()) {\n <span class=\"rb-visually-hidden\">{{ toneLabel() }}: </span>\n }\n <div class=\"rb-message__body\"><ng-content /></div>\n </div>\n `,\n styleUrl: './message.scss',\n})\nexport class RbMessageComponent {\n readonly tone = input<RbMessageTone>('neutral');\n /** Optional bold first line. */\n readonly title = input<string>('');\n /** Overrides the tone's default icon. */\n readonly icon = input<string>('');\n readonly live = input<RbMessageLive>('auto');\n\n protected readonly resolvedIcon = computed(\n () => this.icon() || RB_TONE_ICONS[this.tone()] || 'info',\n );\n protected readonly toneLabel = computed(() => RB_MESSAGE_TONE_LABELS[this.tone()]);\n\n private readonly politeness = computed(() => {\n const live = this.live();\n if (live !== 'auto') return live;\n return this.tone() === 'danger' ? 'assertive' : 'polite';\n });\n\n protected readonly role = computed(() => {\n const politeness = this.politeness();\n if (politeness === 'off') return null;\n return politeness === 'assertive' ? 'alert' : 'status';\n });\n\n protected readonly ariaLive = computed(() => {\n const politeness = this.politeness();\n return politeness === 'off' ? null : politeness;\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
let nextId = 0;
|
|
4
|
+
var RbMonogramComponent = class RbMonogramComponent {
|
|
5
|
+
gradientId = `rb-monogram-gradient-${nextId++}`;
|
|
6
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
7
|
+
minVersion: "12.0.0",
|
|
8
|
+
version: "22.2.3",
|
|
9
|
+
ngImport: i0,
|
|
10
|
+
type: RbMonogramComponent,
|
|
11
|
+
deps: [],
|
|
12
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
13
|
+
});
|
|
14
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
15
|
+
minVersion: "14.0.0",
|
|
16
|
+
version: "22.2.3",
|
|
17
|
+
type: RbMonogramComponent,
|
|
18
|
+
isStandalone: true,
|
|
19
|
+
selector: "rb-monogram",
|
|
20
|
+
host: {
|
|
21
|
+
attributes: { "aria-hidden": "true" },
|
|
22
|
+
classAttribute: "rb-monogram"
|
|
23
|
+
},
|
|
24
|
+
ngImport: i0,
|
|
25
|
+
template: `
|
|
26
|
+
<svg class="rb-monogram__svg" viewBox="0 0 64 64" focusable="false">
|
|
27
|
+
<defs>
|
|
28
|
+
<linearGradient
|
|
29
|
+
[attr.id]="gradientId"
|
|
30
|
+
x1="8"
|
|
31
|
+
y1="8"
|
|
32
|
+
x2="56"
|
|
33
|
+
y2="56"
|
|
34
|
+
gradientUnits="userSpaceOnUse"
|
|
35
|
+
>
|
|
36
|
+
<stop class="rb-monogram__gradient-start" />
|
|
37
|
+
<stop class="rb-monogram__gradient-end" offset="1" />
|
|
38
|
+
</linearGradient>
|
|
39
|
+
</defs>
|
|
40
|
+
<rect class="rb-monogram__frame" width="64" height="64" rx="16" />
|
|
41
|
+
<rect x="5" y="5" width="54" height="54" rx="14" [attr.fill]="'url(#' + gradientId + ')'" />
|
|
42
|
+
<g class="rb-monogram__letters">
|
|
43
|
+
<path d="M17 47V17h7.3c4.9 0 7.8 2.7 7.8 6.9s-2.9 6.8-7.8 6.8H17M24.3 30.7 34.5 47" />
|
|
44
|
+
<path
|
|
45
|
+
d="M40 17v30M40 17h6.8c4.4 0 7.1 2.6 7.1 6.2s-2.7 5.9-7.1 5.9H40M40 29.1h7.5c4.7 0 7.7 3.2 7.7 7.1s-3 7.8-7.7 7.8H40"
|
|
46
|
+
/>
|
|
47
|
+
</g>
|
|
48
|
+
</svg>
|
|
49
|
+
`,
|
|
50
|
+
isInline: true,
|
|
51
|
+
styles: ["rb-monogram{display:inline-block;flex:none;inline-size:var(--rb-size-monogram);aspect-ratio:1;line-height:0}rb-monogram .rb-monogram__svg{display:block;inline-size:100%;block-size:100%}rb-monogram .rb-monogram__frame{fill:var(--rb-color-brand-navy)}rb-monogram .rb-monogram__gradient-start{stop-color:var(--rb-color-brand-start)}rb-monogram .rb-monogram__gradient-end{stop-color:var(--rb-color-brand-end)}rb-monogram .rb-monogram__letters{fill:none;stroke:var(--rb-color-brand-ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5}\n"],
|
|
52
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
53
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
57
|
+
minVersion: "12.0.0",
|
|
58
|
+
version: "22.2.3",
|
|
59
|
+
ngImport: i0,
|
|
60
|
+
type: RbMonogramComponent,
|
|
61
|
+
decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: "rb-monogram",
|
|
65
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
66
|
+
encapsulation: ViewEncapsulation.None,
|
|
67
|
+
host: {
|
|
68
|
+
class: "rb-monogram",
|
|
69
|
+
"aria-hidden": "true"
|
|
70
|
+
},
|
|
71
|
+
template: `
|
|
72
|
+
<svg class="rb-monogram__svg" viewBox="0 0 64 64" focusable="false">
|
|
73
|
+
<defs>
|
|
74
|
+
<linearGradient
|
|
75
|
+
[attr.id]="gradientId"
|
|
76
|
+
x1="8"
|
|
77
|
+
y1="8"
|
|
78
|
+
x2="56"
|
|
79
|
+
y2="56"
|
|
80
|
+
gradientUnits="userSpaceOnUse"
|
|
81
|
+
>
|
|
82
|
+
<stop class="rb-monogram__gradient-start" />
|
|
83
|
+
<stop class="rb-monogram__gradient-end" offset="1" />
|
|
84
|
+
</linearGradient>
|
|
85
|
+
</defs>
|
|
86
|
+
<rect class="rb-monogram__frame" width="64" height="64" rx="16" />
|
|
87
|
+
<rect x="5" y="5" width="54" height="54" rx="14" [attr.fill]="'url(#' + gradientId + ')'" />
|
|
88
|
+
<g class="rb-monogram__letters">
|
|
89
|
+
<path d="M17 47V17h7.3c4.9 0 7.8 2.7 7.8 6.9s-2.9 6.8-7.8 6.8H17M24.3 30.7 34.5 47" />
|
|
90
|
+
<path
|
|
91
|
+
d="M40 17v30M40 17h6.8c4.4 0 7.1 2.6 7.1 6.2s-2.7 5.9-7.1 5.9H40M40 29.1h7.5c4.7 0 7.7 3.2 7.7 7.1s-3 7.8-7.7 7.8H40"
|
|
92
|
+
/>
|
|
93
|
+
</g>
|
|
94
|
+
</svg>
|
|
95
|
+
`,
|
|
96
|
+
styles: ["rb-monogram{display:inline-block;flex:none;inline-size:var(--rb-size-monogram);aspect-ratio:1;line-height:0}rb-monogram .rb-monogram__svg{display:block;inline-size:100%;block-size:100%}rb-monogram .rb-monogram__frame{fill:var(--rb-color-brand-navy)}rb-monogram .rb-monogram__gradient-start{stop-color:var(--rb-color-brand-start)}rb-monogram .rb-monogram__gradient-end{stop-color:var(--rb-color-brand-end)}rb-monogram .rb-monogram__letters{fill:none;stroke:var(--rb-color-brand-ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5}\n"]
|
|
97
|
+
}]
|
|
98
|
+
}]
|
|
99
|
+
});
|
|
100
|
+
export { RbMonogramComponent };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=rblabs-dev-axiom-monogram.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rblabs-dev-axiom-monogram.mjs","names":[],"sources":["../../../projects/axiom/monogram/src/monogram.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * The RB monogram (docs/design-system.md, section 12.1), drawn inline from the brand tokens so it\n * needs no request and is identical in both themes. Decorative: the element that contains it (the\n * brand lockup link) carries the accessible name. Size it with `inline-size` on the host.\n */\n@Component({\n selector: 'rb-monogram',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'rb-monogram', 'aria-hidden': 'true' },\n template: `\n <svg class=\"rb-monogram__svg\" viewBox=\"0 0 64 64\" focusable=\"false\">\n <defs>\n <linearGradient\n [attr.id]=\"gradientId\"\n x1=\"8\"\n y1=\"8\"\n x2=\"56\"\n y2=\"56\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop class=\"rb-monogram__gradient-start\" />\n <stop class=\"rb-monogram__gradient-end\" offset=\"1\" />\n </linearGradient>\n </defs>\n <rect class=\"rb-monogram__frame\" width=\"64\" height=\"64\" rx=\"16\" />\n <rect x=\"5\" y=\"5\" width=\"54\" height=\"54\" rx=\"14\" [attr.fill]=\"'url(#' + gradientId + ')'\" />\n <g class=\"rb-monogram__letters\">\n <path d=\"M17 47V17h7.3c4.9 0 7.8 2.7 7.8 6.9s-2.9 6.8-7.8 6.8H17M24.3 30.7 34.5 47\" />\n <path\n d=\"M40 17v30M40 17h6.8c4.4 0 7.1 2.6 7.1 6.2s-2.7 5.9-7.1 5.9H40M40 29.1h7.5c4.7 0 7.7 3.2 7.7 7.1s-3 7.8-7.7 7.8H40\"\n />\n </g>\n </svg>\n `,\n styleUrl: './monogram.scss',\n})\nexport class RbMonogramComponent {\n /** Unique per instance: several monograms can share a page. */\n protected readonly gradientId = `rb-monogram-gradient-${nextId++}`;\n}\n"],"mappings":";;AAEA,IAAI,SAAS;AAuCb,IAAa,sBAAb,MAAa,oBAAmB;CAEX,aAAa,wBAAwB;CAF7C,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,MAAA;GAAA,YAAA,EAAA,eAAA,OAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UA3BpB;;;;;;;;;;;;;;;;;;;;;;;;;EAwBT,UAAA;EAAA,QAAA,CAAA,kiBAAA;EAAA,iBAAA,GAAA,wBAAA;EAAA,eAAA,GAAA,kBAAA;CAAA,CAAA;;AAGU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAhC/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAa,iBACN,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,MAC/B;IAAE,OAAO;IAAe,eAAe;GAAM;GAAE,UAC3C;;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,QAAA,CAAA,kiBAAA;EAAA,CAAA"}
|