@doku-com/tala 1.0.0-alpha.1
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 +3 -0
- package/fesm2022/doku-com-tala.mjs +142 -0
- package/fesm2022/doku-com-tala.mjs.map +1 -0
- package/fonts/DINNextLTPro-Bold.woff2 +0 -0
- package/fonts/DINNextLTPro-Medium.woff2 +0 -0
- package/package.json +31 -0
- package/styles/_color.scss +131 -0
- package/styles/_radius.scss +10 -0
- package/styles/_reset.scss +351 -0
- package/styles/_shadow.scss +7 -0
- package/styles/_spacing.scss +12 -0
- package/styles/_typography.scss +312 -0
- package/styles/index.scss +6 -0
- package/types/doku-com-tala.d.ts +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class TalaAvatar {
|
|
5
|
+
name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
6
|
+
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
7
|
+
shape = input('circle', ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
|
|
8
|
+
status = input('none', ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
9
|
+
badgeCount = input(0, ...(ngDevMode ? [{ debugName: "badgeCount" }] : /* istanbul ignore next */ []));
|
|
10
|
+
src = input('', ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
|
|
11
|
+
initials = computed(() => this.getInitials(this.name()), ...(ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []));
|
|
12
|
+
bgColor = computed(() => this.src()
|
|
13
|
+
? 'transparent'
|
|
14
|
+
: this.palette[this.hashName(this.name() || 'default') % this.palette.length], ...(ngDevMode ? [{ debugName: "bgColor" }] : /* istanbul ignore next */ []));
|
|
15
|
+
hasStatus = computed(() => this.status() !== 'none', ...(ngDevMode ? [{ debugName: "hasStatus" }] : /* istanbul ignore next */ []));
|
|
16
|
+
hasBadge = computed(() => !!this.badgeCount(), ...(ngDevMode ? [{ debugName: "hasBadge" }] : /* istanbul ignore next */ []));
|
|
17
|
+
displayBadge = computed(() => {
|
|
18
|
+
const count = this.badgeCount();
|
|
19
|
+
return count > 99 ? '99+' : String(count);
|
|
20
|
+
}, ...(ngDevMode ? [{ debugName: "displayBadge" }] : /* istanbul ignore next */ []));
|
|
21
|
+
ariaLabel = computed(() => {
|
|
22
|
+
const parts = [this.name() || 'Avatar'];
|
|
23
|
+
if (this.hasStatus())
|
|
24
|
+
parts.push(`Status: ${this.status()}`);
|
|
25
|
+
const count = this.badgeCount();
|
|
26
|
+
if (count !== 0)
|
|
27
|
+
parts.push(`${count} notification${count !== 1 ? 's' : ''}`);
|
|
28
|
+
return parts.join(', ');
|
|
29
|
+
}, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
30
|
+
hostClasses = computed(() => [
|
|
31
|
+
'tala-avatar',
|
|
32
|
+
`tala-avatar--${this.size()}`,
|
|
33
|
+
`tala-avatar--${this.shape()}`,
|
|
34
|
+
this.src() ? 'tala-avatar--image' : '',
|
|
35
|
+
]
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.join(' '), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
38
|
+
palette = [
|
|
39
|
+
'var(--color-blue-60)',
|
|
40
|
+
'var(--color-green-60)',
|
|
41
|
+
'var(--color-red-60)',
|
|
42
|
+
'var(--color-amber-60)',
|
|
43
|
+
'var(--color-blue-70)',
|
|
44
|
+
'var(--color-green-70)',
|
|
45
|
+
'var(--color-red-70)',
|
|
46
|
+
'var(--color-amber-70)',
|
|
47
|
+
];
|
|
48
|
+
hashName(name) {
|
|
49
|
+
let hash = 0;
|
|
50
|
+
for (let i = 0; i < name.length; i++) {
|
|
51
|
+
hash = (name.charCodeAt(i) + ((hash << 5) - hash)) | 0;
|
|
52
|
+
}
|
|
53
|
+
return Math.abs(hash);
|
|
54
|
+
}
|
|
55
|
+
getInitials(name) {
|
|
56
|
+
const words = name.trim().split(/\s+/).filter(Boolean);
|
|
57
|
+
if (words.length === 0)
|
|
58
|
+
return '?';
|
|
59
|
+
if (words.length === 1)
|
|
60
|
+
return words[0].slice(0, 2).toUpperCase();
|
|
61
|
+
return (words[0][0] + words[words.length - 1][0]).toUpperCase();
|
|
62
|
+
}
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaAvatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.13", type: TalaAvatar, isStandalone: true, selector: "tala-avatar", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, badgeCount: { classPropertyName: "badgeCount", publicName: "badgeCount", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "style.background-color": "bgColor()", "attr.role": "\"img\"", "attr.aria-label": "ariaLabel()" } }, ngImport: i0, template: "@if (src()) {\n <img class=\"tala-avatar__image\" [src]=\"src()\" [alt]=\"name()\" />\n} @else {\n <span class=\"tala-avatar__initials\">{{ initials() }}</span>\n}\n\n@if (hasStatus()) {\n <span [class]=\"'tala-avatar__status tala-avatar__status--' + status()\" role=\"presentation\"></span>\n}\n\n@if (hasBadge()) {\n <span class=\"tala-avatar__badge\" aria-hidden=\"true\">\n {{ displayBadge() }}\n </span>\n}\n", styles: ["tala-avatar{--tala-avatar-border-color: var(--color-border-default);--tala-avatar-initials-color: var(--color-neutral-0);--tala-avatar-status-ring-width: 2px;--tala-avatar-status-ring-color: var(--color-surface-default);--tala-avatar-status-online-color: var(--color-green-40);--tala-avatar-status-offline-color: var(--color-neutral-40);--tala-avatar-status-busy-color: var(--color-red-50);--tala-avatar-status-away-color: var(--color-amber-30);--tala-avatar-badge-bg: var(--color-red-50);--tala-avatar-badge-color: var(--color-neutral-0);--tala-avatar-badge-ring-width: 2px;--tala-avatar-badge-ring-color: var(--color-surface-default);display:inline-flex;align-items:center;justify-content:center;position:relative;flex-shrink:0;border:1px solid var(--tala-avatar-border-color);overflow:visible;-webkit-user-select:none;user-select:none}.tala-avatar__initials{font-family:var(--font-body);font-weight:var(--font-weight-medium);color:var(--tala-avatar-initials-color);line-height:1;letter-spacing:var(--letter-spacing-normal)}tala-avatar.tala-avatar--image{overflow:hidden}.tala-avatar__image{width:100%;height:100%;object-fit:cover;display:block}tala-avatar.tala-avatar--xs{--tala-avatar-status-ring-width: 1.5px;--tala-avatar-badge-ring-width: 1.5px;width:24px;height:24px}tala-avatar.tala-avatar--xs .tala-avatar__initials{font-size:9px}tala-avatar.tala-avatar--xs .tala-avatar__status{width:6px;height:6px;bottom:-1px;right:-1px}tala-avatar.tala-avatar--xs .tala-avatar__badge{width:8px;height:8px;top:-5.4px;right:-3.4px;font-size:5px}tala-avatar.tala-avatar--sm{--tala-avatar-status-ring-width: 1.5px;--tala-avatar-badge-ring-width: 1.5px;width:32px;height:32px}tala-avatar.tala-avatar--sm .tala-avatar__initials{font-size:var(--font-size-11);line-height:var(--line-height-14)}tala-avatar.tala-avatar--sm .tala-avatar__status{width:7px;height:7px;bottom:-1px;right:-1px}tala-avatar.tala-avatar--sm .tala-avatar__badge{width:10px;height:10px;top:-6.5px;right:-4.5px;font-size:6px}tala-avatar.tala-avatar--md{width:40px;height:40px}tala-avatar.tala-avatar--md .tala-avatar__initials{font-size:var(--font-size-14);line-height:var(--line-height-20)}tala-avatar.tala-avatar--md .tala-avatar__status{width:8px;height:8px;bottom:-1.5px;right:-1.5px}tala-avatar.tala-avatar--md .tala-avatar__badge{min-width:12px;height:12px;top:-7.6px;right:-5.6px;font-size:7px}tala-avatar.tala-avatar--lg{width:48px;height:48px}tala-avatar.tala-avatar--lg .tala-avatar__initials{font-size:var(--font-size-16);line-height:var(--line-height-20)}tala-avatar.tala-avatar--lg .tala-avatar__status{width:10px;height:10px;bottom:-2px;right:-2px}tala-avatar.tala-avatar--lg .tala-avatar__badge{min-width:14px;height:14px;top:-8.7px;right:-6.7px;font-size:8px}tala-avatar.tala-avatar--xl{width:64px;height:64px}tala-avatar.tala-avatar--xl .tala-avatar__initials{font-size:22px;line-height:normal}tala-avatar.tala-avatar--xl .tala-avatar__status{width:12px;height:12px;bottom:-2.5px;right:-2.5px}tala-avatar.tala-avatar--xl .tala-avatar__badge{min-width:16px;height:16px;top:-9.8px;right:-7.8px;font-size:9px}tala-avatar.tala-avatar--circle{border-radius:var(--radius-full)}tala-avatar.tala-avatar--square.tala-avatar--xs{border-radius:var(--radius-sm)}tala-avatar.tala-avatar--square.tala-avatar--sm{border-radius:var(--radius-md)}tala-avatar.tala-avatar--square.tala-avatar--md,tala-avatar.tala-avatar--square.tala-avatar--lg{border-radius:var(--radius-lg)}tala-avatar.tala-avatar--square.tala-avatar--xl{border-radius:var(--radius-xl)}.tala-avatar__status{position:absolute;border-radius:var(--radius-full);box-shadow:0 0 0 var(--tala-avatar-status-ring-width) var(--tala-avatar-status-ring-color);pointer-events:none}.tala-avatar__status--online{background-color:var(--tala-avatar-status-online-color)}.tala-avatar__status--offline{background-color:var(--tala-avatar-status-offline-color)}.tala-avatar__status--busy{background-color:var(--tala-avatar-status-busy-color)}.tala-avatar__status--away{background-color:var(--tala-avatar-status-away-color)}.tala-avatar__badge{position:absolute;background-color:var(--tala-avatar-badge-bg);color:var(--tala-avatar-badge-color);border-radius:var(--radius-full);font-family:var(--font-body);font-weight:var(--font-weight-medium);box-shadow:0 0 0 var(--tala-avatar-badge-ring-width) var(--tala-avatar-badge-ring-color);display:flex;align-items:center;justify-content:center;padding:0 2px;pointer-events:none;white-space:nowrap;line-height:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaAvatar, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'tala-avatar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
69
|
+
'[class]': 'hostClasses()',
|
|
70
|
+
'[style.background-color]': 'bgColor()',
|
|
71
|
+
'[attr.role]': '"img"',
|
|
72
|
+
'[attr.aria-label]': 'ariaLabel()',
|
|
73
|
+
}, template: "@if (src()) {\n <img class=\"tala-avatar__image\" [src]=\"src()\" [alt]=\"name()\" />\n} @else {\n <span class=\"tala-avatar__initials\">{{ initials() }}</span>\n}\n\n@if (hasStatus()) {\n <span [class]=\"'tala-avatar__status tala-avatar__status--' + status()\" role=\"presentation\"></span>\n}\n\n@if (hasBadge()) {\n <span class=\"tala-avatar__badge\" aria-hidden=\"true\">\n {{ displayBadge() }}\n </span>\n}\n", styles: ["tala-avatar{--tala-avatar-border-color: var(--color-border-default);--tala-avatar-initials-color: var(--color-neutral-0);--tala-avatar-status-ring-width: 2px;--tala-avatar-status-ring-color: var(--color-surface-default);--tala-avatar-status-online-color: var(--color-green-40);--tala-avatar-status-offline-color: var(--color-neutral-40);--tala-avatar-status-busy-color: var(--color-red-50);--tala-avatar-status-away-color: var(--color-amber-30);--tala-avatar-badge-bg: var(--color-red-50);--tala-avatar-badge-color: var(--color-neutral-0);--tala-avatar-badge-ring-width: 2px;--tala-avatar-badge-ring-color: var(--color-surface-default);display:inline-flex;align-items:center;justify-content:center;position:relative;flex-shrink:0;border:1px solid var(--tala-avatar-border-color);overflow:visible;-webkit-user-select:none;user-select:none}.tala-avatar__initials{font-family:var(--font-body);font-weight:var(--font-weight-medium);color:var(--tala-avatar-initials-color);line-height:1;letter-spacing:var(--letter-spacing-normal)}tala-avatar.tala-avatar--image{overflow:hidden}.tala-avatar__image{width:100%;height:100%;object-fit:cover;display:block}tala-avatar.tala-avatar--xs{--tala-avatar-status-ring-width: 1.5px;--tala-avatar-badge-ring-width: 1.5px;width:24px;height:24px}tala-avatar.tala-avatar--xs .tala-avatar__initials{font-size:9px}tala-avatar.tala-avatar--xs .tala-avatar__status{width:6px;height:6px;bottom:-1px;right:-1px}tala-avatar.tala-avatar--xs .tala-avatar__badge{width:8px;height:8px;top:-5.4px;right:-3.4px;font-size:5px}tala-avatar.tala-avatar--sm{--tala-avatar-status-ring-width: 1.5px;--tala-avatar-badge-ring-width: 1.5px;width:32px;height:32px}tala-avatar.tala-avatar--sm .tala-avatar__initials{font-size:var(--font-size-11);line-height:var(--line-height-14)}tala-avatar.tala-avatar--sm .tala-avatar__status{width:7px;height:7px;bottom:-1px;right:-1px}tala-avatar.tala-avatar--sm .tala-avatar__badge{width:10px;height:10px;top:-6.5px;right:-4.5px;font-size:6px}tala-avatar.tala-avatar--md{width:40px;height:40px}tala-avatar.tala-avatar--md .tala-avatar__initials{font-size:var(--font-size-14);line-height:var(--line-height-20)}tala-avatar.tala-avatar--md .tala-avatar__status{width:8px;height:8px;bottom:-1.5px;right:-1.5px}tala-avatar.tala-avatar--md .tala-avatar__badge{min-width:12px;height:12px;top:-7.6px;right:-5.6px;font-size:7px}tala-avatar.tala-avatar--lg{width:48px;height:48px}tala-avatar.tala-avatar--lg .tala-avatar__initials{font-size:var(--font-size-16);line-height:var(--line-height-20)}tala-avatar.tala-avatar--lg .tala-avatar__status{width:10px;height:10px;bottom:-2px;right:-2px}tala-avatar.tala-avatar--lg .tala-avatar__badge{min-width:14px;height:14px;top:-8.7px;right:-6.7px;font-size:8px}tala-avatar.tala-avatar--xl{width:64px;height:64px}tala-avatar.tala-avatar--xl .tala-avatar__initials{font-size:22px;line-height:normal}tala-avatar.tala-avatar--xl .tala-avatar__status{width:12px;height:12px;bottom:-2.5px;right:-2.5px}tala-avatar.tala-avatar--xl .tala-avatar__badge{min-width:16px;height:16px;top:-9.8px;right:-7.8px;font-size:9px}tala-avatar.tala-avatar--circle{border-radius:var(--radius-full)}tala-avatar.tala-avatar--square.tala-avatar--xs{border-radius:var(--radius-sm)}tala-avatar.tala-avatar--square.tala-avatar--sm{border-radius:var(--radius-md)}tala-avatar.tala-avatar--square.tala-avatar--md,tala-avatar.tala-avatar--square.tala-avatar--lg{border-radius:var(--radius-lg)}tala-avatar.tala-avatar--square.tala-avatar--xl{border-radius:var(--radius-xl)}.tala-avatar__status{position:absolute;border-radius:var(--radius-full);box-shadow:0 0 0 var(--tala-avatar-status-ring-width) var(--tala-avatar-status-ring-color);pointer-events:none}.tala-avatar__status--online{background-color:var(--tala-avatar-status-online-color)}.tala-avatar__status--offline{background-color:var(--tala-avatar-status-offline-color)}.tala-avatar__status--busy{background-color:var(--tala-avatar-status-busy-color)}.tala-avatar__status--away{background-color:var(--tala-avatar-status-away-color)}.tala-avatar__badge{position:absolute;background-color:var(--tala-avatar-badge-bg);color:var(--tala-avatar-badge-color);border-radius:var(--radius-full);font-family:var(--font-body);font-weight:var(--font-weight-medium);box-shadow:0 0 0 var(--tala-avatar-badge-ring-width) var(--tala-avatar-badge-ring-color);display:flex;align-items:center;justify-content:center;padding:0 2px;pointer-events:none;white-space:nowrap;line-height:1}\n"] }]
|
|
74
|
+
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], badgeCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeCount", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }] } });
|
|
75
|
+
|
|
76
|
+
class TalaAvatarGroup {
|
|
77
|
+
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaAvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.13", type: TalaAvatarGroup, isStandalone: true, selector: "tala-avatar-group", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "class": "\"tala-avatar-group--\" + size()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: ["tala-avatar-group{--tala-avatar-group-ring-width: 2px;--tala-avatar-group-ring-color: var(--color-surface-default);display:inline-flex;flex-direction:row;align-items:center}tala-avatar-group tala-avatar{box-shadow:0 0 0 var(--tala-avatar-group-ring-width) var(--tala-avatar-group-ring-color)}tala-avatar-group tala-avatar:not(:first-child){margin-left:var(--avatar-group-overlap)}.tala-avatar-group--xs{--avatar-group-overlap: -7px}.tala-avatar-group--sm{--avatar-group-overlap: -10px}.tala-avatar-group--md{--avatar-group-overlap: -12px}.tala-avatar-group--lg{--avatar-group-overlap: -14px}.tala-avatar-group--xl{--avatar-group-overlap: -19px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaAvatarGroup, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'tala-avatar-group', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `<ng-content />`, host: {
|
|
84
|
+
'[class]': '"tala-avatar-group--" + size()',
|
|
85
|
+
role: 'group',
|
|
86
|
+
}, styles: ["tala-avatar-group{--tala-avatar-group-ring-width: 2px;--tala-avatar-group-ring-color: var(--color-surface-default);display:inline-flex;flex-direction:row;align-items:center}tala-avatar-group tala-avatar{box-shadow:0 0 0 var(--tala-avatar-group-ring-width) var(--tala-avatar-group-ring-color)}tala-avatar-group tala-avatar:not(:first-child){margin-left:var(--avatar-group-overlap)}.tala-avatar-group--xs{--avatar-group-overlap: -7px}.tala-avatar-group--sm{--avatar-group-overlap: -10px}.tala-avatar-group--md{--avatar-group-overlap: -12px}.tala-avatar-group--lg{--avatar-group-overlap: -14px}.tala-avatar-group--xl{--avatar-group-overlap: -19px}\n"] }]
|
|
87
|
+
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
88
|
+
|
|
89
|
+
class TalaButton {
|
|
90
|
+
variant = input('primary', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
91
|
+
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
92
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
93
|
+
loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
94
|
+
iconOnly = input(false, ...(ngDevMode ? [{ debugName: "iconOnly" }] : /* istanbul ignore next */ []));
|
|
95
|
+
hostClasses = computed(() => [
|
|
96
|
+
'tala-button',
|
|
97
|
+
`tala-button--${this.variant()}`,
|
|
98
|
+
`tala-button--${this.size()}`,
|
|
99
|
+
this.disabled() ? 'tala-button--disabled' : '',
|
|
100
|
+
this.loading() ? 'tala-button--loading' : '',
|
|
101
|
+
this.iconOnly() ? 'tala-button--icon-only' : '',
|
|
102
|
+
]
|
|
103
|
+
.filter(Boolean)
|
|
104
|
+
.join(' '), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
105
|
+
_onClick(event) {
|
|
106
|
+
if (this.disabled() || this.loading()) {
|
|
107
|
+
event.stopImmediatePropagation();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
_onKeydown(event) {
|
|
111
|
+
if (this.disabled() || this.loading())
|
|
112
|
+
return;
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
event.currentTarget.click();
|
|
115
|
+
}
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.13", type: TalaButton, isStandalone: true, selector: "tala-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)", "keydown.enter": "_onKeydown($event)", "keydown.space": "_onKeydown($event)" }, properties: { "class": "hostClasses()", "attr.role": "\"button\"", "attr.tabindex": "disabled() ? \"-1\" : \"0\"", "attr.aria-disabled": "disabled() || null", "attr.aria-busy": "loading() || null" } }, ngImport: i0, template: "@if (loading()) {\n <span class=\"tala-button__spinner\" aria-hidden=\"true\"></span>\n}\n\n<ng-content select=\"[slot=prefix]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[slot=suffix]\"></ng-content>\n", styles: ["tala-button{--tala-button-bg: transparent;--tala-button-color: var(--color-text-primary);--tala-button-border-color: transparent;--tala-button-hover-bg: var(--tala-button-bg);--tala-button-hover-color: var(--tala-button-color);--tala-button-focus-ring-color: var(--color-border-focus);--tala-button-height: 40px;--tala-button-padding-x: var(--space-4);--tala-button-gap: var(--space-2);--tala-button-font-size: var(--text-label-default-size);--tala-button-line-height: var(--text-label-default-height);--tala-button-border-radius: var(--radius-md);--tala-button-spinner-size: 16px;display:inline-flex;align-items:center;justify-content:center;gap:var(--tala-button-gap);height:var(--tala-button-height);padding:0 var(--tala-button-padding-x);border:1px solid var(--tala-button-border-color);border-radius:var(--tala-button-border-radius);background-color:var(--tala-button-bg);color:var(--tala-button-color);font-family:var(--font-body);font-size:var(--tala-button-font-size);line-height:var(--tala-button-line-height);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-normal);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;transition:background-color .15s ease,border-color .15s ease,color .15s ease}tala-button:focus-visible{outline:2px solid var(--tala-button-focus-ring-color);outline-offset:2px}tala-button.tala-button--icon-only{width:var(--tala-button-height);padding:0}tala-button:hover:not(.tala-button--disabled,.tala-button--loading){background-color:var(--tala-button-hover-bg);color:var(--tala-button-hover-color)}tala-button.tala-button--primary{--tala-button-bg: var(--color-action-primary-bg);--tala-button-color: var(--color-action-primary-text);--tala-button-hover-bg: var(--color-action-primary-hover)}tala-button.tala-button--secondary{--tala-button-bg: var(--color-action-secondary-bg);--tala-button-color: var(--color-action-secondary-text);--tala-button-border-color: var(--color-action-secondary-border);--tala-button-hover-bg: var(--color-action-secondary-hover)}tala-button.tala-button--ghost{--tala-button-color: var(--color-action-ghost-text);--tala-button-hover-bg: var(--color-action-ghost-hover)}tala-button.tala-button--accent{--tala-button-bg: var(--color-action-accent-bg);--tala-button-color: var(--color-action-accent-text);--tala-button-hover-bg: var(--color-red-60)}tala-button.tala-button--danger{--tala-button-bg: var(--color-action-danger-bg);--tala-button-color: var(--color-action-danger-text);--tala-button-hover-bg: var(--color-red-70)}tala-button.tala-button--link{--tala-button-color: var(--color-text-link);--tala-button-hover-color: var(--color-red-60)}tala-button.tala-button--xs{--tala-button-height: 24px;--tala-button-padding-x: var(--space-2);--tala-button-gap: var(--space-1);--tala-button-font-size: var(--text-label-xsmall-size);--tala-button-line-height: var(--text-label-xsmall-height);--tala-button-border-radius: var(--radius-sm);--tala-button-spinner-size: 12px}tala-button.tala-button--sm{--tala-button-height: 32px;--tala-button-padding-x: var(--space-3);--tala-button-gap: var(--space-1);--tala-button-font-size: var(--text-label-small-size);--tala-button-line-height: var(--text-label-small-height);--tala-button-spinner-size: 14px}tala-button.tala-button--lg{--tala-button-height: 48px;--tala-button-padding-x: var(--space-5);--tala-button-font-size: var(--text-label-large-size);--tala-button-line-height: var(--text-label-large-height);--tala-button-border-radius: var(--radius-lg);--tala-button-spinner-size: 18px}tala-button.tala-button--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}tala-button.tala-button--loading{cursor:wait;pointer-events:none}.tala-button__spinner{display:block;width:var(--tala-button-spinner-size);height:var(--tala-button-spinner-size);border-radius:var(--radius-full);border:1.5px solid currentColor;border-top-color:transparent;flex-shrink:0;animation:tala-button-spin .65s linear infinite}@keyframes tala-button-spin{to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: TalaButton, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{ selector: 'tala-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
122
|
+
'[class]': 'hostClasses()',
|
|
123
|
+
'[attr.role]': '"button"',
|
|
124
|
+
'[attr.tabindex]': 'disabled() ? "-1" : "0"',
|
|
125
|
+
'[attr.aria-disabled]': 'disabled() || null',
|
|
126
|
+
'[attr.aria-busy]': 'loading() || null',
|
|
127
|
+
'(click)': '_onClick($event)',
|
|
128
|
+
'(keydown.enter)': '_onKeydown($event)',
|
|
129
|
+
'(keydown.space)': '_onKeydown($event)',
|
|
130
|
+
}, template: "@if (loading()) {\n <span class=\"tala-button__spinner\" aria-hidden=\"true\"></span>\n}\n\n<ng-content select=\"[slot=prefix]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[slot=suffix]\"></ng-content>\n", styles: ["tala-button{--tala-button-bg: transparent;--tala-button-color: var(--color-text-primary);--tala-button-border-color: transparent;--tala-button-hover-bg: var(--tala-button-bg);--tala-button-hover-color: var(--tala-button-color);--tala-button-focus-ring-color: var(--color-border-focus);--tala-button-height: 40px;--tala-button-padding-x: var(--space-4);--tala-button-gap: var(--space-2);--tala-button-font-size: var(--text-label-default-size);--tala-button-line-height: var(--text-label-default-height);--tala-button-border-radius: var(--radius-md);--tala-button-spinner-size: 16px;display:inline-flex;align-items:center;justify-content:center;gap:var(--tala-button-gap);height:var(--tala-button-height);padding:0 var(--tala-button-padding-x);border:1px solid var(--tala-button-border-color);border-radius:var(--tala-button-border-radius);background-color:var(--tala-button-bg);color:var(--tala-button-color);font-family:var(--font-body);font-size:var(--tala-button-font-size);line-height:var(--tala-button-line-height);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-normal);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;transition:background-color .15s ease,border-color .15s ease,color .15s ease}tala-button:focus-visible{outline:2px solid var(--tala-button-focus-ring-color);outline-offset:2px}tala-button.tala-button--icon-only{width:var(--tala-button-height);padding:0}tala-button:hover:not(.tala-button--disabled,.tala-button--loading){background-color:var(--tala-button-hover-bg);color:var(--tala-button-hover-color)}tala-button.tala-button--primary{--tala-button-bg: var(--color-action-primary-bg);--tala-button-color: var(--color-action-primary-text);--tala-button-hover-bg: var(--color-action-primary-hover)}tala-button.tala-button--secondary{--tala-button-bg: var(--color-action-secondary-bg);--tala-button-color: var(--color-action-secondary-text);--tala-button-border-color: var(--color-action-secondary-border);--tala-button-hover-bg: var(--color-action-secondary-hover)}tala-button.tala-button--ghost{--tala-button-color: var(--color-action-ghost-text);--tala-button-hover-bg: var(--color-action-ghost-hover)}tala-button.tala-button--accent{--tala-button-bg: var(--color-action-accent-bg);--tala-button-color: var(--color-action-accent-text);--tala-button-hover-bg: var(--color-red-60)}tala-button.tala-button--danger{--tala-button-bg: var(--color-action-danger-bg);--tala-button-color: var(--color-action-danger-text);--tala-button-hover-bg: var(--color-red-70)}tala-button.tala-button--link{--tala-button-color: var(--color-text-link);--tala-button-hover-color: var(--color-red-60)}tala-button.tala-button--xs{--tala-button-height: 24px;--tala-button-padding-x: var(--space-2);--tala-button-gap: var(--space-1);--tala-button-font-size: var(--text-label-xsmall-size);--tala-button-line-height: var(--text-label-xsmall-height);--tala-button-border-radius: var(--radius-sm);--tala-button-spinner-size: 12px}tala-button.tala-button--sm{--tala-button-height: 32px;--tala-button-padding-x: var(--space-3);--tala-button-gap: var(--space-1);--tala-button-font-size: var(--text-label-small-size);--tala-button-line-height: var(--text-label-small-height);--tala-button-spinner-size: 14px}tala-button.tala-button--lg{--tala-button-height: 48px;--tala-button-padding-x: var(--space-5);--tala-button-font-size: var(--text-label-large-size);--tala-button-line-height: var(--text-label-large-height);--tala-button-border-radius: var(--radius-lg);--tala-button-spinner-size: 18px}tala-button.tala-button--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}tala-button.tala-button--loading{cursor:wait;pointer-events:none}.tala-button__spinner{display:block;width:var(--tala-button-spinner-size);height:var(--tala-button-spinner-size);border-radius:var(--radius-full);border:1.5px solid currentColor;border-top-color:transparent;flex-shrink:0;animation:tala-button-spin .65s linear infinite}@keyframes tala-button-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
131
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }] } });
|
|
132
|
+
|
|
133
|
+
/*
|
|
134
|
+
* Public API Surface of doku-tala
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Generated bundle index. Do not edit.
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
export { TalaAvatar, TalaAvatarGroup, TalaButton };
|
|
142
|
+
//# sourceMappingURL=doku-com-tala.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doku-com-tala.mjs","sources":["../../../projects/doku-tala/src/lib/components/avatar/avatar.ts","../../../projects/doku-tala/src/lib/components/avatar/avatar.html","../../../projects/doku-tala/src/lib/components/avatar/avatar-group.ts","../../../projects/doku-tala/src/lib/components/button/button.ts","../../../projects/doku-tala/src/lib/components/button/button.html","../../../projects/doku-tala/src/public-api.ts","../../../projects/doku-tala/src/doku-com-tala.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'none' | 'online' | 'busy' | 'away' | 'offline';\n\n@Component({\n selector: 'tala-avatar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './avatar.html',\n styleUrl: './avatar.scss',\n host: {\n '[class]': 'hostClasses()',\n '[style.background-color]': 'bgColor()',\n '[attr.role]': '\"img\"',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class TalaAvatar {\n readonly name = input<string>('');\n readonly size = input<AvatarSize>('md');\n readonly shape = input<AvatarShape>('circle');\n readonly status = input<AvatarStatus>('none');\n readonly badgeCount = input<number>(0);\n readonly src = input<string>('');\n\n protected readonly initials = computed(() => this.getInitials(this.name()));\n\n protected readonly bgColor = computed(() =>\n this.src()\n ? 'transparent'\n : this.palette[this.hashName(this.name() || 'default') % this.palette.length],\n );\n\n protected readonly hasStatus = computed(() => this.status() !== 'none');\n protected readonly hasBadge = computed(() => !!this.badgeCount());\n\n protected readonly displayBadge = computed(() => {\n const count = this.badgeCount();\n return count > 99 ? '99+' : String(count);\n });\n\n protected readonly ariaLabel = computed(() => {\n const parts = [this.name() || 'Avatar'];\n if (this.hasStatus()) parts.push(`Status: ${this.status()}`);\n const count = this.badgeCount();\n if (count !== 0) parts.push(`${count} notification${count !== 1 ? 's' : ''}`);\n return parts.join(', ');\n });\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-avatar',\n `tala-avatar--${this.size()}`,\n `tala-avatar--${this.shape()}`,\n this.src() ? 'tala-avatar--image' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n private readonly palette = [\n 'var(--color-blue-60)',\n 'var(--color-green-60)',\n 'var(--color-red-60)',\n 'var(--color-amber-60)',\n 'var(--color-blue-70)',\n 'var(--color-green-70)',\n 'var(--color-red-70)',\n 'var(--color-amber-70)',\n ];\n\n private hashName(name: string): number {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (name.charCodeAt(i) + ((hash << 5) - hash)) | 0;\n }\n return Math.abs(hash);\n }\n\n private getInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) return '?';\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase();\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n}\n","@if (src()) {\n <img class=\"tala-avatar__image\" [src]=\"src()\" [alt]=\"name()\" />\n} @else {\n <span class=\"tala-avatar__initials\">{{ initials() }}</span>\n}\n\n@if (hasStatus()) {\n <span [class]=\"'tala-avatar__status tala-avatar__status--' + status()\" role=\"presentation\"></span>\n}\n\n@if (hasBadge()) {\n <span class=\"tala-avatar__badge\" aria-hidden=\"true\">\n {{ displayBadge() }}\n </span>\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport type { AvatarSize } from './avatar';\n\n@Component({\n selector: 'tala-avatar-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<ng-content />`,\n styleUrl: './avatar-group.scss',\n host: {\n '[class]': '\"tala-avatar-group--\" + size()',\n role: 'group',\n },\n})\nexport class TalaAvatarGroup {\n readonly size = input<AvatarSize>('md');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'accent' | 'danger' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'tala-button',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './button.html',\n styleUrl: './button.scss',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"button\"',\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.aria-busy]': 'loading() || null',\n '(click)': '_onClick($event)',\n '(keydown.enter)': '_onKeydown($event)',\n '(keydown.space)': '_onKeydown($event)',\n },\n})\nexport class TalaButton {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly iconOnly = input<boolean>(false);\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-button',\n `tala-button--${this.variant()}`,\n `tala-button--${this.size()}`,\n this.disabled() ? 'tala-button--disabled' : '',\n this.loading() ? 'tala-button--loading' : '',\n this.iconOnly() ? 'tala-button--icon-only' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n protected _onClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.stopImmediatePropagation();\n }\n }\n\n protected _onKeydown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n event.preventDefault();\n (event.currentTarget as HTMLElement).click();\n }\n}\n","@if (loading()) {\n <span class=\"tala-button__spinner\" aria-hidden=\"true\"></span>\n}\n\n<ng-content select=\"[slot=prefix]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[slot=suffix]\"></ng-content>\n","/*\n * Public API Surface of doku-tala\n */\n\nexport * from './lib/components/avatar';\nexport * from './lib/components/button';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@doku-com/tala",
|
|
3
|
+
"version": "1.0.0-alpha.1",
|
|
4
|
+
"description": "The next generation of Angular UI library",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"doku",
|
|
7
|
+
"angular"
|
|
8
|
+
],
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"peerDependencies": {
|
|
11
|
+
"@angular/common": "^21.2.0",
|
|
12
|
+
"@angular/core": "^21.2.0"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"tslib": "^2.3.0"
|
|
16
|
+
},
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"sass": "./styles/index.scss",
|
|
21
|
+
"types": "./types/doku-com-tala.d.ts",
|
|
22
|
+
"default": "./fesm2022/doku-com-tala.mjs"
|
|
23
|
+
},
|
|
24
|
+
"./package.json": {
|
|
25
|
+
"default": "./package.json"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"module": "fesm2022/doku-com-tala.mjs",
|
|
29
|
+
"typings": "types/doku-com-tala.d.ts",
|
|
30
|
+
"type": "module"
|
|
31
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* ─── Primitive ─── */
|
|
3
|
+
|
|
4
|
+
/* Red */
|
|
5
|
+
--color-red-5: #fff0f0;
|
|
6
|
+
--color-red-10: #ffd6d5;
|
|
7
|
+
--color-red-20: #ff9b99;
|
|
8
|
+
--color-red-30: #f76b68;
|
|
9
|
+
--color-red-40: #ef4340;
|
|
10
|
+
--color-red-50: #e1251b;
|
|
11
|
+
--color-red-60: #c41e15;
|
|
12
|
+
--color-red-70: #a0170f;
|
|
13
|
+
--color-red-80: #7d110a;
|
|
14
|
+
--color-red-90: #5c0b06;
|
|
15
|
+
--color-red-100: #3a0603;
|
|
16
|
+
|
|
17
|
+
/* Neutral */
|
|
18
|
+
--color-neutral-0: #ffffff;
|
|
19
|
+
--color-neutral-5: #f7f7f8;
|
|
20
|
+
--color-neutral-10: #f0f0f2;
|
|
21
|
+
--color-neutral-20: #e2e2e6;
|
|
22
|
+
--color-neutral-30: #c8c8cf;
|
|
23
|
+
--color-neutral-40: #ababb5;
|
|
24
|
+
--color-neutral-50: #8e8e9a;
|
|
25
|
+
--color-neutral-60: #6e6e7c;
|
|
26
|
+
--color-neutral-70: #52525e;
|
|
27
|
+
--color-neutral-80: #363640;
|
|
28
|
+
--color-neutral-90: #1e1e26;
|
|
29
|
+
--color-neutral-100: #09090d;
|
|
30
|
+
|
|
31
|
+
/* Green */
|
|
32
|
+
--color-green-5: #f0fbf6;
|
|
33
|
+
--color-green-10: #d1f0e3;
|
|
34
|
+
--color-green-20: #a3dbca;
|
|
35
|
+
--color-green-30: #4ab98a;
|
|
36
|
+
--color-green-40: #22a470;
|
|
37
|
+
--color-green-50: #008856;
|
|
38
|
+
--color-green-60: #006b44;
|
|
39
|
+
--color-green-70: #005436;
|
|
40
|
+
--color-green-80: #003d28;
|
|
41
|
+
--color-green-90: #00261a;
|
|
42
|
+
--color-green-100: #00100c;
|
|
43
|
+
|
|
44
|
+
/* Amber */
|
|
45
|
+
--color-amber-5: #fffbf0;
|
|
46
|
+
--color-amber-10: #fef3c7;
|
|
47
|
+
--color-amber-20: #fde68a;
|
|
48
|
+
--color-amber-30: #ffd24a;
|
|
49
|
+
--color-amber-40: #d97706;
|
|
50
|
+
--color-amber-50: #b45309;
|
|
51
|
+
--color-amber-60: #92400e;
|
|
52
|
+
--color-amber-70: #78350f;
|
|
53
|
+
--color-amber-80: #5e2a0c;
|
|
54
|
+
--color-amber-90: #451e08;
|
|
55
|
+
--color-amber-100: #2d1206;
|
|
56
|
+
|
|
57
|
+
/* Blue */
|
|
58
|
+
--color-blue-5: #f0f6ff;
|
|
59
|
+
--color-blue-10: #dbeafe;
|
|
60
|
+
--color-blue-20: #bfdbfe;
|
|
61
|
+
--color-blue-30: #6aabfd;
|
|
62
|
+
--color-blue-40: #3b82f6;
|
|
63
|
+
--color-blue-50: #1d4ed8;
|
|
64
|
+
--color-blue-60: #1e40af;
|
|
65
|
+
--color-blue-70: #1e3a8a;
|
|
66
|
+
--color-blue-80: #1a3070;
|
|
67
|
+
--color-blue-90: #142558;
|
|
68
|
+
--color-blue-100: #0c1840;
|
|
69
|
+
|
|
70
|
+
/* ─── Semantic ─── */
|
|
71
|
+
|
|
72
|
+
/* Background */
|
|
73
|
+
--color-background-base: var(--color-neutral-0);
|
|
74
|
+
--color-background-subtle: var(--color-neutral-5);
|
|
75
|
+
--color-background-muted: var(--color-neutral-10);
|
|
76
|
+
--color-background-inverse: var(--color-neutral-100);
|
|
77
|
+
|
|
78
|
+
/* Surface */
|
|
79
|
+
--color-surface-default: var(--color-neutral-0);
|
|
80
|
+
--color-surface-raised: var(--color-neutral-0);
|
|
81
|
+
--color-surface-overlay: var(--color-neutral-0);
|
|
82
|
+
--color-surface-sunken: var(--color-neutral-5);
|
|
83
|
+
|
|
84
|
+
/* Border */
|
|
85
|
+
--color-border-default: var(--color-neutral-20);
|
|
86
|
+
--color-border-strong: var(--color-neutral-30);
|
|
87
|
+
--color-border-focus: var(--color-neutral-100);
|
|
88
|
+
--color-border-danger: var(--color-red-50);
|
|
89
|
+
|
|
90
|
+
/* Text */
|
|
91
|
+
--color-text-primary: var(--color-neutral-100);
|
|
92
|
+
--color-text-secondary: var(--color-neutral-60);
|
|
93
|
+
--color-text-tertiary: var(--color-neutral-50);
|
|
94
|
+
--color-text-disabled: var(--color-neutral-30);
|
|
95
|
+
--color-text-inverse: var(--color-neutral-0);
|
|
96
|
+
--color-text-accent: var(--color-red-50);
|
|
97
|
+
--color-text-link: var(--color-red-50);
|
|
98
|
+
--color-text-placeholder: var(--color-neutral-40);
|
|
99
|
+
|
|
100
|
+
/* Action */
|
|
101
|
+
--color-action-primary-bg: var(--color-neutral-100);
|
|
102
|
+
--color-action-primary-text: var(--color-neutral-0);
|
|
103
|
+
--color-action-primary-hover: var(--color-neutral-90);
|
|
104
|
+
--color-action-secondary-bg: var(--color-neutral-0);
|
|
105
|
+
--color-action-secondary-border: var(--color-neutral-20);
|
|
106
|
+
--color-action-secondary-text: var(--color-neutral-100);
|
|
107
|
+
--color-action-secondary-hover: var(--color-neutral-20);
|
|
108
|
+
--color-action-ghost-text: var(--color-neutral-100);
|
|
109
|
+
--color-action-ghost-hover: var(--color-neutral-10);
|
|
110
|
+
--color-action-danger-bg: var(--color-red-60);
|
|
111
|
+
--color-action-danger-text: var(--color-neutral-0);
|
|
112
|
+
--color-action-accent-bg: var(--color-red-50);
|
|
113
|
+
--color-action-accent-text: var(--color-neutral-0);
|
|
114
|
+
|
|
115
|
+
/* Status */
|
|
116
|
+
--color-status-success-bg: var(--color-green-5);
|
|
117
|
+
--color-status-success-text: var(--color-green-70);
|
|
118
|
+
--color-status-success-border: var(--color-green-30);
|
|
119
|
+
--color-status-warning-bg: var(--color-amber-5);
|
|
120
|
+
--color-status-warning-text: var(--color-amber-70);
|
|
121
|
+
--color-status-warning-border: var(--color-amber-30);
|
|
122
|
+
--color-status-danger-bg: var(--color-red-5);
|
|
123
|
+
--color-status-danger-text: var(--color-red-70);
|
|
124
|
+
--color-status-danger-border: var(--color-red-30);
|
|
125
|
+
--color-status-info-bg: var(--color-blue-5);
|
|
126
|
+
--color-status-info-text: var(--color-blue-70);
|
|
127
|
+
--color-status-info-border: var(--color-blue-30);
|
|
128
|
+
--color-status-neutral-bg: var(--color-neutral-5);
|
|
129
|
+
--color-status-neutral-text: var(--color-neutral-60);
|
|
130
|
+
--color-status-neutral-border: var(--color-neutral-20);
|
|
131
|
+
}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
|
2
|
+
|
|
3
|
+
/* Document
|
|
4
|
+
========================================================================== */
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 1. Correct the line height in all browsers.
|
|
8
|
+
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
html {
|
|
12
|
+
line-height: 1.15; /* 1 */
|
|
13
|
+
-webkit-text-size-adjust: 100%; /* 2 */
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Sections
|
|
17
|
+
========================================================================== */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Remove the margin in all browsers.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
body {
|
|
24
|
+
margin: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Render the `main` element consistently in IE.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
main {
|
|
32
|
+
display: block;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Correct the font size and margin on `h1` elements within `section` and
|
|
37
|
+
* `article` contexts in Chrome, Firefox, and Safari.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
h1 {
|
|
41
|
+
font-size: 2em;
|
|
42
|
+
margin: 0.67em 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Grouping content
|
|
46
|
+
========================================================================== */
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 1. Add the correct box sizing in Firefox.
|
|
50
|
+
* 2. Show the overflow in Edge and IE.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
hr {
|
|
54
|
+
box-sizing: content-box; /* 1 */
|
|
55
|
+
height: 0; /* 1 */
|
|
56
|
+
overflow: visible; /* 2 */
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 1. Correct the inheritance and scaling of font size in all browsers.
|
|
61
|
+
* 2. Correct the odd `em` font sizing in all browsers.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
pre {
|
|
65
|
+
font-family: monospace, monospace; /* 1 */
|
|
66
|
+
font-size: 1em; /* 2 */
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Text-level semantics
|
|
70
|
+
========================================================================== */
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Remove the gray background on active links in IE 10.
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
a {
|
|
77
|
+
background-color: transparent;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 1. Remove the bottom border in Chrome 57-
|
|
82
|
+
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
abbr[title] {
|
|
86
|
+
border-bottom: none; /* 1 */
|
|
87
|
+
text-decoration: underline; /* 2 */
|
|
88
|
+
text-decoration: underline dotted; /* 2 */
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Add the correct font weight in Chrome, Edge, and Safari.
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
b,
|
|
96
|
+
strong {
|
|
97
|
+
font-weight: bolder;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 1. Correct the inheritance and scaling of font size in all browsers.
|
|
102
|
+
* 2. Correct the odd `em` font sizing in all browsers.
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
code,
|
|
106
|
+
kbd,
|
|
107
|
+
samp {
|
|
108
|
+
font-family: monospace, monospace; /* 1 */
|
|
109
|
+
font-size: 1em; /* 2 */
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Add the correct font size in all browsers.
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
small {
|
|
117
|
+
font-size: 80%;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Prevent `sub` and `sup` elements from affecting the line height in
|
|
122
|
+
* all browsers.
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
sub,
|
|
126
|
+
sup {
|
|
127
|
+
font-size: 75%;
|
|
128
|
+
line-height: 0;
|
|
129
|
+
position: relative;
|
|
130
|
+
vertical-align: baseline;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
sub {
|
|
134
|
+
bottom: -0.25em;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
sup {
|
|
138
|
+
top: -0.5em;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Embedded content
|
|
142
|
+
========================================================================== */
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Remove the border on images inside links in IE 10.
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
img {
|
|
149
|
+
border-style: none;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* Forms
|
|
153
|
+
========================================================================== */
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* 1. Change the font styles in all browsers.
|
|
157
|
+
* 2. Remove the margin in Firefox and Safari.
|
|
158
|
+
*/
|
|
159
|
+
|
|
160
|
+
button,
|
|
161
|
+
input,
|
|
162
|
+
optgroup,
|
|
163
|
+
select,
|
|
164
|
+
textarea {
|
|
165
|
+
font-family: inherit; /* 1 */
|
|
166
|
+
font-size: 100%; /* 1 */
|
|
167
|
+
line-height: 1.15; /* 1 */
|
|
168
|
+
margin: 0; /* 2 */
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Show the overflow in IE.
|
|
173
|
+
* 1. Show the overflow in Edge.
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
button,
|
|
177
|
+
input {
|
|
178
|
+
/* 1 */
|
|
179
|
+
overflow: visible;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
|
184
|
+
* 1. Remove the inheritance of text transform in Firefox.
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
button,
|
|
188
|
+
select {
|
|
189
|
+
/* 1 */
|
|
190
|
+
text-transform: none;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Correct the inability to style clickable types in iOS and Safari.
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
button,
|
|
198
|
+
[type='button'],
|
|
199
|
+
[type='reset'],
|
|
200
|
+
[type='submit'] {
|
|
201
|
+
-webkit-appearance: button;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Remove the inner border and padding in Firefox.
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
button::-moz-focus-inner,
|
|
209
|
+
[type='button']::-moz-focus-inner,
|
|
210
|
+
[type='reset']::-moz-focus-inner,
|
|
211
|
+
[type='submit']::-moz-focus-inner {
|
|
212
|
+
border-style: none;
|
|
213
|
+
padding: 0;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Restore the focus styles unset by the previous rule.
|
|
218
|
+
*/
|
|
219
|
+
|
|
220
|
+
button:-moz-focusring,
|
|
221
|
+
[type='button']:-moz-focusring,
|
|
222
|
+
[type='reset']:-moz-focusring,
|
|
223
|
+
[type='submit']:-moz-focusring {
|
|
224
|
+
outline: 1px dotted ButtonText;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Correct the padding in Firefox.
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
fieldset {
|
|
232
|
+
padding: 0.35em 0.75em 0.625em;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* 1. Correct the text wrapping in Edge and IE.
|
|
237
|
+
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
|
238
|
+
* 3. Remove the padding so developers are not caught out when they zero out
|
|
239
|
+
* `fieldset` elements in all browsers.
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
legend {
|
|
243
|
+
box-sizing: border-box; /* 1 */
|
|
244
|
+
color: inherit; /* 2 */
|
|
245
|
+
display: table; /* 1 */
|
|
246
|
+
max-width: 100%; /* 1 */
|
|
247
|
+
padding: 0; /* 3 */
|
|
248
|
+
white-space: normal; /* 1 */
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
progress {
|
|
256
|
+
vertical-align: baseline;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Remove the default vertical scrollbar in IE 10+.
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
textarea {
|
|
264
|
+
overflow: auto;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* 1. Add the correct box sizing in IE 10.
|
|
269
|
+
* 2. Remove the padding in IE 10.
|
|
270
|
+
*/
|
|
271
|
+
|
|
272
|
+
[type='checkbox'],
|
|
273
|
+
[type='radio'] {
|
|
274
|
+
box-sizing: border-box; /* 1 */
|
|
275
|
+
padding: 0; /* 2 */
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Correct the cursor style of increment and decrement buttons in Chrome.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
[type='number']::-webkit-inner-spin-button,
|
|
283
|
+
[type='number']::-webkit-outer-spin-button {
|
|
284
|
+
height: auto;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* 1. Correct the odd appearance in Chrome and Safari.
|
|
289
|
+
* 2. Correct the outline style in Safari.
|
|
290
|
+
*/
|
|
291
|
+
|
|
292
|
+
[type='search'] {
|
|
293
|
+
-webkit-appearance: textfield; /* 1 */
|
|
294
|
+
outline-offset: -2px; /* 2 */
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Remove the inner padding in Chrome and Safari on macOS.
|
|
299
|
+
*/
|
|
300
|
+
|
|
301
|
+
[type='search']::-webkit-search-decoration {
|
|
302
|
+
-webkit-appearance: none;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* 1. Correct the inability to style clickable types in iOS and Safari.
|
|
307
|
+
* 2. Change font properties to `inherit` in Safari.
|
|
308
|
+
*/
|
|
309
|
+
|
|
310
|
+
::-webkit-file-upload-button {
|
|
311
|
+
-webkit-appearance: button; /* 1 */
|
|
312
|
+
font: inherit; /* 2 */
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* Interactive
|
|
316
|
+
========================================================================== */
|
|
317
|
+
|
|
318
|
+
/*
|
|
319
|
+
* Add the correct display in Edge, IE 10+, and Firefox.
|
|
320
|
+
*/
|
|
321
|
+
|
|
322
|
+
details {
|
|
323
|
+
display: block;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/*
|
|
327
|
+
* Add the correct display in all browsers.
|
|
328
|
+
*/
|
|
329
|
+
|
|
330
|
+
summary {
|
|
331
|
+
display: list-item;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Misc
|
|
335
|
+
========================================================================== */
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Add the correct display in IE 10+.
|
|
339
|
+
*/
|
|
340
|
+
|
|
341
|
+
template {
|
|
342
|
+
display: none;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Add the correct display in IE 10.
|
|
347
|
+
*/
|
|
348
|
+
|
|
349
|
+
[hidden] {
|
|
350
|
+
display: none;
|
|
351
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--shadow-xs: 0 1px 2px color-mix(in srgb, var(--color-neutral-100) 5%, transparent);
|
|
3
|
+
--shadow-sm: 0 1px 3px color-mix(in srgb, var(--color-neutral-100) 8%, transparent);
|
|
4
|
+
--shadow-md: 0 4px 6px color-mix(in srgb, var(--color-neutral-100) 7%, transparent);
|
|
5
|
+
--shadow-lg: 0 10px 15px color-mix(in srgb, var(--color-neutral-100) 8%, transparent);
|
|
6
|
+
--shadow-xl: 0 20px 25px color-mix(in srgb, var(--color-neutral-100) 10%, transparent);
|
|
7
|
+
}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/* ═══════════════════════════════════════════════
|
|
2
|
+
LOADING FONTS
|
|
3
|
+
DIN Next LT Pro — headings (H1–H6)
|
|
4
|
+
Inter — body, caption, label, doc
|
|
5
|
+
JetBrains Mono — code
|
|
6
|
+
═══════════════════════════════════════════════ */
|
|
7
|
+
|
|
8
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
|
|
9
|
+
|
|
10
|
+
@font-face {
|
|
11
|
+
font-family: 'DIN Next LT Pro';
|
|
12
|
+
font-style: normal;
|
|
13
|
+
font-weight: 500;
|
|
14
|
+
font-display: swap;
|
|
15
|
+
src: url('../fonts/DINNextLTPro-Medium.woff2') format('woff2');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@font-face {
|
|
19
|
+
font-family: 'DIN Next LT Pro';
|
|
20
|
+
font-style: normal;
|
|
21
|
+
font-weight: 700;
|
|
22
|
+
font-display: swap;
|
|
23
|
+
src: url('../fonts/DINNextLTPro-Bold.woff2') format('woff2');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ═══════════════════════════════════════════════
|
|
27
|
+
PRIMITIVE
|
|
28
|
+
Raw scale values. Don't use directly in
|
|
29
|
+
components — reference semantic tokens instead.
|
|
30
|
+
═══════════════════════════════════════════════ */
|
|
31
|
+
|
|
32
|
+
:root {
|
|
33
|
+
/* Font families */
|
|
34
|
+
--font-family-din: 'DIN Next LT Pro', system-ui, -apple-system, 'Helvetica Neue', sans-serif;
|
|
35
|
+
--font-family-inter: 'Inter', system-ui, -apple-system, 'Helvetica Neue', sans-serif;
|
|
36
|
+
--font-family-jetbrains: 'JetBrains Mono', 'Courier New', monospace;
|
|
37
|
+
|
|
38
|
+
/* Font size scale */
|
|
39
|
+
--font-size-11: 11px;
|
|
40
|
+
--font-size-12: 12px;
|
|
41
|
+
--font-size-13: 13px;
|
|
42
|
+
--font-size-14: 14px;
|
|
43
|
+
--font-size-16: 16px;
|
|
44
|
+
--font-size-18: 18px;
|
|
45
|
+
--font-size-20: 20px;
|
|
46
|
+
--font-size-24: 24px;
|
|
47
|
+
--font-size-28: 28px;
|
|
48
|
+
--font-size-30: 30px;
|
|
49
|
+
--font-size-32: 32px;
|
|
50
|
+
--font-size-36: 36px;
|
|
51
|
+
--font-size-40: 40px;
|
|
52
|
+
|
|
53
|
+
/* Line height scale */
|
|
54
|
+
--line-height-14: 14px;
|
|
55
|
+
--line-height-16: 16px;
|
|
56
|
+
--line-height-18: 18px;
|
|
57
|
+
--line-height-20: 20px;
|
|
58
|
+
--line-height-24: 24px;
|
|
59
|
+
--line-height-26: 26px;
|
|
60
|
+
--line-height-30: 30px;
|
|
61
|
+
--line-height-32: 32px;
|
|
62
|
+
--line-height-34: 34px;
|
|
63
|
+
--line-height-36: 36px;
|
|
64
|
+
--line-height-40: 40px;
|
|
65
|
+
--line-height-44: 44px;
|
|
66
|
+
|
|
67
|
+
/* Font weights */
|
|
68
|
+
--font-weight-regular: 400;
|
|
69
|
+
--font-weight-medium: 500;
|
|
70
|
+
--font-weight-semibold: 600;
|
|
71
|
+
--font-weight-bold: 700;
|
|
72
|
+
|
|
73
|
+
/* Letter spacings */
|
|
74
|
+
--letter-spacing-normal: 0px;
|
|
75
|
+
--letter-spacing-snug: -0.3px;
|
|
76
|
+
--letter-spacing-tight: -0.7px;
|
|
77
|
+
--letter-spacing-tighter: -0.8px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* ═══════════════════════════════════════════════
|
|
81
|
+
SEMANTIC
|
|
82
|
+
Role-based tokens that give meaning to
|
|
83
|
+
primitives. Use these in components.
|
|
84
|
+
═══════════════════════════════════════════════ */
|
|
85
|
+
|
|
86
|
+
:root {
|
|
87
|
+
/* Font families */
|
|
88
|
+
--font-heading: var(--font-family-din);
|
|
89
|
+
--font-body: var(--font-family-inter);
|
|
90
|
+
--font-code: var(--font-family-jetbrains);
|
|
91
|
+
|
|
92
|
+
/* ── Heading (DIN Next LT Pro) ── */
|
|
93
|
+
--text-h1-size: var(--font-size-40);
|
|
94
|
+
--text-h1-height: var(--line-height-44);
|
|
95
|
+
--text-h1-spacing: var(--letter-spacing-tighter);
|
|
96
|
+
--text-h1-weight: var(--font-weight-bold);
|
|
97
|
+
|
|
98
|
+
--text-h2-size: var(--font-size-36);
|
|
99
|
+
--text-h2-height: var(--line-height-40);
|
|
100
|
+
--text-h2-spacing: var(--letter-spacing-tight);
|
|
101
|
+
--text-h2-weight: var(--font-weight-bold);
|
|
102
|
+
|
|
103
|
+
--text-h3-size: var(--font-size-32);
|
|
104
|
+
--text-h3-height: var(--line-height-36);
|
|
105
|
+
--text-h3-spacing: var(--letter-spacing-snug);
|
|
106
|
+
--text-h3-weight: var(--font-weight-medium);
|
|
107
|
+
|
|
108
|
+
--text-h4-size: var(--font-size-30);
|
|
109
|
+
--text-h4-height: var(--line-height-34);
|
|
110
|
+
--text-h4-spacing: var(--letter-spacing-snug);
|
|
111
|
+
--text-h4-weight: var(--font-weight-medium);
|
|
112
|
+
|
|
113
|
+
--text-h5-size: var(--font-size-24);
|
|
114
|
+
--text-h5-height: var(--line-height-30);
|
|
115
|
+
--text-h5-weight: var(--font-weight-medium);
|
|
116
|
+
|
|
117
|
+
--text-h6-size: var(--font-size-20);
|
|
118
|
+
--text-h6-height: var(--line-height-26);
|
|
119
|
+
--text-h6-weight: var(--font-weight-medium);
|
|
120
|
+
|
|
121
|
+
/* ── Body (Inter) ── */
|
|
122
|
+
--text-body-large-size: var(--font-size-18);
|
|
123
|
+
--text-body-large-height: var(--line-height-24);
|
|
124
|
+
|
|
125
|
+
--text-body-default-size: var(--font-size-16);
|
|
126
|
+
--text-body-default-height: var(--line-height-20);
|
|
127
|
+
|
|
128
|
+
--text-body-small-size: var(--font-size-14);
|
|
129
|
+
--text-body-small-height: var(--line-height-20);
|
|
130
|
+
|
|
131
|
+
/* ── Caption (Inter, 400) ── */
|
|
132
|
+
--text-caption-large-size: var(--font-size-12);
|
|
133
|
+
--text-caption-large-height: var(--line-height-16);
|
|
134
|
+
|
|
135
|
+
--text-caption-small-size: var(--font-size-11);
|
|
136
|
+
--text-caption-small-height: var(--line-height-14);
|
|
137
|
+
|
|
138
|
+
/* ── Label (Inter, 500) ── */
|
|
139
|
+
--text-label-large-size: var(--font-size-14);
|
|
140
|
+
--text-label-large-height: var(--line-height-20);
|
|
141
|
+
|
|
142
|
+
--text-label-default-size: var(--font-size-13);
|
|
143
|
+
--text-label-default-height: var(--line-height-18);
|
|
144
|
+
|
|
145
|
+
--text-label-small-size: var(--font-size-12);
|
|
146
|
+
--text-label-small-height: var(--line-height-16);
|
|
147
|
+
|
|
148
|
+
--text-label-xsmall-size: var(--font-size-11);
|
|
149
|
+
--text-label-xsmall-height: var(--line-height-14);
|
|
150
|
+
|
|
151
|
+
--text-label-sm-bold-size: var(--font-size-12);
|
|
152
|
+
--text-label-sm-bold-height: var(--line-height-16);
|
|
153
|
+
|
|
154
|
+
/* ── Doc (Inter) ── */
|
|
155
|
+
--text-doc-title-size: var(--font-size-28);
|
|
156
|
+
--text-doc-title-height: var(--line-height-32);
|
|
157
|
+
--text-doc-title-weight: var(--font-weight-bold);
|
|
158
|
+
|
|
159
|
+
--text-doc-section-size: var(--font-size-11);
|
|
160
|
+
--text-doc-section-height: var(--line-height-14);
|
|
161
|
+
--text-doc-section-weight: var(--font-weight-semibold);
|
|
162
|
+
|
|
163
|
+
/* ── Code (JetBrains Mono, 400) ── */
|
|
164
|
+
--text-code-size: var(--font-size-13);
|
|
165
|
+
--text-code-height: var(--line-height-20);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* ═══════════════════════════════════════════════
|
|
169
|
+
UTILITIES / DEFAULTS
|
|
170
|
+
Helper classes and element defaults. Use utilities for one-off exceptions; use semantic tokens for
|
|
171
|
+
components. Don't use primitives directly in components — reference semantic tokens instead.
|
|
172
|
+
═══════════════════════════════════════════════ */
|
|
173
|
+
|
|
174
|
+
/* Heading */
|
|
175
|
+
.text-h1,
|
|
176
|
+
h1 {
|
|
177
|
+
font-family: var(--font-heading);
|
|
178
|
+
font-size: var(--text-h1-size);
|
|
179
|
+
line-height: var(--text-h1-height);
|
|
180
|
+
letter-spacing: var(--text-h1-spacing);
|
|
181
|
+
font-weight: var(--text-h1-weight);
|
|
182
|
+
}
|
|
183
|
+
.text-h2,
|
|
184
|
+
h2 {
|
|
185
|
+
font-family: var(--font-heading);
|
|
186
|
+
font-size: var(--text-h2-size);
|
|
187
|
+
line-height: var(--text-h2-height);
|
|
188
|
+
letter-spacing: var(--text-h2-spacing);
|
|
189
|
+
font-weight: var(--text-h2-weight);
|
|
190
|
+
}
|
|
191
|
+
.text-h3,
|
|
192
|
+
h3 {
|
|
193
|
+
font-family: var(--font-heading);
|
|
194
|
+
font-size: var(--text-h3-size);
|
|
195
|
+
line-height: var(--text-h3-height);
|
|
196
|
+
letter-spacing: var(--text-h3-spacing);
|
|
197
|
+
font-weight: var(--text-h3-weight);
|
|
198
|
+
}
|
|
199
|
+
.text-h4,
|
|
200
|
+
h4 {
|
|
201
|
+
font-family: var(--font-heading);
|
|
202
|
+
font-size: var(--text-h4-size);
|
|
203
|
+
line-height: var(--text-h4-height);
|
|
204
|
+
letter-spacing: var(--text-h4-spacing);
|
|
205
|
+
font-weight: var(--text-h4-weight);
|
|
206
|
+
}
|
|
207
|
+
.text-h5,
|
|
208
|
+
h5 {
|
|
209
|
+
font-family: var(--font-heading);
|
|
210
|
+
font-size: var(--text-h5-size);
|
|
211
|
+
line-height: var(--text-h5-height);
|
|
212
|
+
font-weight: var(--text-h5-weight);
|
|
213
|
+
}
|
|
214
|
+
.text-h6,
|
|
215
|
+
h6 {
|
|
216
|
+
font-family: var(--font-heading);
|
|
217
|
+
font-size: var(--text-h6-size);
|
|
218
|
+
line-height: var(--text-h6-height);
|
|
219
|
+
font-weight: var(--text-h6-weight);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* Body */
|
|
223
|
+
.text-body-large {
|
|
224
|
+
font-family: var(--font-body);
|
|
225
|
+
font-size: var(--text-body-large-size);
|
|
226
|
+
line-height: var(--text-body-large-height);
|
|
227
|
+
font-weight: var(--font-weight-regular);
|
|
228
|
+
}
|
|
229
|
+
.text-body-default,
|
|
230
|
+
body {
|
|
231
|
+
font-family: var(--font-body);
|
|
232
|
+
font-size: var(--text-body-default-size);
|
|
233
|
+
line-height: var(--text-body-default-height);
|
|
234
|
+
font-weight: var(--font-weight-regular);
|
|
235
|
+
}
|
|
236
|
+
.text-body-small {
|
|
237
|
+
font-family: var(--font-body);
|
|
238
|
+
font-size: var(--text-body-small-size);
|
|
239
|
+
line-height: var(--text-body-small-height);
|
|
240
|
+
font-weight: var(--font-weight-regular);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* Caption */
|
|
244
|
+
.text-caption-large {
|
|
245
|
+
font-family: var(--font-body);
|
|
246
|
+
font-size: var(--text-caption-large-size);
|
|
247
|
+
line-height: var(--text-caption-large-height);
|
|
248
|
+
font-weight: var(--font-weight-regular);
|
|
249
|
+
}
|
|
250
|
+
.text-caption-small,
|
|
251
|
+
caption {
|
|
252
|
+
font-family: var(--font-body);
|
|
253
|
+
font-size: var(--text-caption-small-size);
|
|
254
|
+
line-height: var(--text-caption-small-height);
|
|
255
|
+
font-weight: var(--font-weight-regular);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/* Label */
|
|
259
|
+
.text-label-large {
|
|
260
|
+
font-family: var(--font-body);
|
|
261
|
+
font-size: var(--text-label-large-size);
|
|
262
|
+
line-height: var(--text-label-large-height);
|
|
263
|
+
font-weight: var(--font-weight-medium);
|
|
264
|
+
}
|
|
265
|
+
.text-label-default,
|
|
266
|
+
label {
|
|
267
|
+
font-family: var(--font-body);
|
|
268
|
+
font-size: var(--text-label-default-size);
|
|
269
|
+
line-height: var(--text-label-default-height);
|
|
270
|
+
font-weight: var(--font-weight-medium);
|
|
271
|
+
}
|
|
272
|
+
.text-label-small {
|
|
273
|
+
font-family: var(--font-body);
|
|
274
|
+
font-size: var(--text-label-small-size);
|
|
275
|
+
line-height: var(--text-label-small-height);
|
|
276
|
+
font-weight: var(--font-weight-medium);
|
|
277
|
+
}
|
|
278
|
+
.text-label-xsmall {
|
|
279
|
+
font-family: var(--font-body);
|
|
280
|
+
font-size: var(--text-label-xsmall-size);
|
|
281
|
+
line-height: var(--text-label-xsmall-height);
|
|
282
|
+
font-weight: var(--font-weight-medium);
|
|
283
|
+
}
|
|
284
|
+
.text-label-sm-bold {
|
|
285
|
+
font-family: var(--font-body);
|
|
286
|
+
font-size: var(--text-label-sm-bold-size);
|
|
287
|
+
line-height: var(--text-label-sm-bold-height);
|
|
288
|
+
font-weight: var(--font-weight-semibold);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* Doc */
|
|
292
|
+
.text-doc-title {
|
|
293
|
+
font-family: var(--font-body);
|
|
294
|
+
font-size: var(--text-doc-title-size);
|
|
295
|
+
line-height: var(--text-doc-title-height);
|
|
296
|
+
font-weight: var(--text-doc-title-weight);
|
|
297
|
+
}
|
|
298
|
+
.text-doc-section {
|
|
299
|
+
font-family: var(--font-body);
|
|
300
|
+
font-size: var(--text-doc-section-size);
|
|
301
|
+
line-height: var(--text-doc-section-height);
|
|
302
|
+
font-weight: var(--text-doc-section-weight);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Code */
|
|
306
|
+
.text-code,
|
|
307
|
+
code {
|
|
308
|
+
font-family: var(--font-code);
|
|
309
|
+
font-size: var(--text-code-size);
|
|
310
|
+
line-height: var(--text-code-height);
|
|
311
|
+
font-weight: var(--font-weight-regular);
|
|
312
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
type AvatarShape = 'circle' | 'square';
|
|
5
|
+
type AvatarStatus = 'none' | 'online' | 'busy' | 'away' | 'offline';
|
|
6
|
+
declare class TalaAvatar {
|
|
7
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
8
|
+
readonly size: _angular_core.InputSignal<AvatarSize>;
|
|
9
|
+
readonly shape: _angular_core.InputSignal<AvatarShape>;
|
|
10
|
+
readonly status: _angular_core.InputSignal<AvatarStatus>;
|
|
11
|
+
readonly badgeCount: _angular_core.InputSignal<number>;
|
|
12
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
13
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
14
|
+
protected readonly bgColor: _angular_core.Signal<string>;
|
|
15
|
+
protected readonly hasStatus: _angular_core.Signal<boolean>;
|
|
16
|
+
protected readonly hasBadge: _angular_core.Signal<boolean>;
|
|
17
|
+
protected readonly displayBadge: _angular_core.Signal<string>;
|
|
18
|
+
protected readonly ariaLabel: _angular_core.Signal<string>;
|
|
19
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
20
|
+
private readonly palette;
|
|
21
|
+
private hashName;
|
|
22
|
+
private getInitials;
|
|
23
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TalaAvatar, never>;
|
|
24
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TalaAvatar, "tala-avatar", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "badgeCount": { "alias": "badgeCount"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
declare class TalaAvatarGroup {
|
|
28
|
+
readonly size: _angular_core.InputSignal<AvatarSize>;
|
|
29
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TalaAvatarGroup, never>;
|
|
30
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TalaAvatarGroup, "tala-avatar-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'accent' | 'danger' | 'link';
|
|
34
|
+
type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
35
|
+
declare class TalaButton {
|
|
36
|
+
readonly variant: _angular_core.InputSignal<ButtonVariant>;
|
|
37
|
+
readonly size: _angular_core.InputSignal<ButtonSize>;
|
|
38
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
39
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
40
|
+
readonly iconOnly: _angular_core.InputSignal<boolean>;
|
|
41
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
42
|
+
protected _onClick(event: MouseEvent): void;
|
|
43
|
+
protected _onKeydown(event: Event): void;
|
|
44
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TalaButton, never>;
|
|
45
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TalaButton, "tala-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=prefix]", "*", "[slot=suffix]"], true, never>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { TalaAvatar, TalaAvatarGroup, TalaButton };
|
|
49
|
+
export type { AvatarShape, AvatarSize, AvatarStatus, ButtonSize, ButtonVariant };
|