@wildmason/aegis 1.16.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,73 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ interface LicenseStatus {
4
+ valid: boolean;
5
+ org: string | null;
6
+ product: string;
7
+ seats: number | null;
8
+ tier: string | null;
9
+ expires: string | null;
10
+ key_id: string | null;
11
+ error: string | null;
12
+ }
13
+
14
+ declare class WmLicenseService {
15
+ private toast;
16
+ readonly license: _angular_core.WritableSignal<LicenseStatus>;
17
+ readonly isLicensed: _angular_core.Signal<boolean>;
18
+ readonly orgName: _angular_core.Signal<string>;
19
+ checkLicense(): Promise<void>;
20
+ installKey(jwt: string): Promise<LicenseStatus>;
21
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseService, never>;
22
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<WmLicenseService>;
23
+ }
24
+
25
+ /**
26
+ * One of the values written to `AppConfig.declared_use_type` by the
27
+ * first-run EULA modal in apps that gate on use-type self-attestation
28
+ * (Mortar). Apps without a use-type system (Helm) leave this `null` and
29
+ * the nudge falls back to its original behaviour: visible to anyone
30
+ * without a valid commercial key.
31
+ */
32
+ type WmDeclaredUseType = 'personal' | 'oss' | 'commercial';
33
+ declare class WmLicenseNudge {
34
+ private licenseService;
35
+ /**
36
+ * Self-declared use type from the host app's first-run modal. When the
37
+ * user has declared `personal` or `oss` the nudge stays hidden — they've
38
+ * already told us a commercial key isn't relevant. `commercial` (without
39
+ * a key) and `null` (no declaration yet) keep the nudge visible.
40
+ *
41
+ * Typed `string | null` rather than `WmDeclaredUseType | null` because
42
+ * ng-packagr's partial-compilation d.ts emit drops the `null` from a
43
+ * union with a string-literal type, which then forces every consumer to
44
+ * `as` the binding. Runtime narrowing happens in `shouldShow`.
45
+ */
46
+ readonly declaredUseType: _angular_core.InputSignal<string>;
47
+ dismissed: _angular_core.WritableSignal<boolean>;
48
+ enterLicense: _angular_core.OutputEmitterRef<void>;
49
+ protected readonly shouldShow: () => boolean;
50
+ dismiss(): void;
51
+ onEnterLicense(): void;
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseNudge, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmLicenseNudge, "wm-license-nudge", never, { "declaredUseType": { "alias": "declaredUseType"; "required": false; "isSignal": true; }; }, { "enterLicense": "enterLicense"; }, never, never, true, never>;
54
+ }
55
+
56
+ declare class WmLicenseDialog {
57
+ private licenseService;
58
+ visible: _angular_core.InputSignal<boolean>;
59
+ dismiss: _angular_core.OutputEmitterRef<void>;
60
+ keyInput: _angular_core.WritableSignal<string>;
61
+ validationResult: _angular_core.WritableSignal<LicenseStatus>;
62
+ validating: _angular_core.WritableSignal<boolean>;
63
+ installed: _angular_core.WritableSignal<boolean>;
64
+ onDismiss(): void;
65
+ onKeyInput(event: Event): void;
66
+ validate(): Promise<void>;
67
+ private reset;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseDialog, never>;
69
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmLicenseDialog, "wm-license-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
70
+ }
71
+
72
+ export { WmLicenseDialog, WmLicenseNudge, WmLicenseService };
73
+ export type { LicenseStatus, WmDeclaredUseType };
@@ -956,6 +956,114 @@ declare class WmTooltip {
956
956
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<WmTooltip, "[wmTooltip]", ["wmTooltip"], { "wmTooltip": { "alias": "wmTooltip"; "required": false; "isSignal": true; }; "wmTooltipPosition": { "alias": "wmTooltipPosition"; "required": false; "isSignal": true; }; "wmTooltipDelay": { "alias": "wmTooltipDelay"; "required": false; "isSignal": true; }; "wmTooltipDisabled": { "alias": "wmTooltipDisabled"; "required": false; "isSignal": true; }; "wmTooltipRelation": { "alias": "wmTooltipRelation"; "required": false; "isSignal": true; }; "wmTooltipFocusable": { "alias": "wmTooltipFocusable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
957
957
  }
958
958
 
959
+ /** Marks the projected element that owns a rich tooltip. */
960
+ declare class WmRichTooltipTrigger {
961
+ readonly elementRef: ElementRef<any>;
962
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmRichTooltipTrigger, never>;
963
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<WmRichTooltipTrigger, "[wmRichTooltipTrigger]", never, {}, {}, never, never, true, never>;
964
+ }
965
+ /** Marks the projected Angular template used as a rich tooltip's body. */
966
+ declare class WmRichTooltipContent {
967
+ readonly templateRef: TemplateRef<any>;
968
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmRichTooltipContent, never>;
969
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<WmRichTooltipContent, "ng-template[wmRichTooltipContent]", never, {}, {}, never, never, true, never>;
970
+ }
971
+ /**
972
+ * `wm-rich-tooltip` — a tooltip-shaped CDK overlay with projected Angular
973
+ * template content.
974
+ *
975
+ * ```html
976
+ * <wm-rich-tooltip position="top">
977
+ * <span wmRichTooltipTrigger>feature/checkout</span>
978
+ * <ng-template wmRichTooltipContent>
979
+ * <strong>feature/checkout</strong>
980
+ * <div class="legend-row">
981
+ * <span class="swatch" aria-hidden="true"></span>
982
+ * <span>Pull request linked</span>
983
+ * </div>
984
+ * </ng-template>
985
+ * </wm-rich-tooltip>
986
+ * ```
987
+ *
988
+ * The body is an Angular `TemplateRef`, not an HTML string. Consumers can use
989
+ * normal Angular markup, bindings, loops, and components; callers should not
990
+ * use this as a path for unsanitized user HTML. If a caller explicitly uses
991
+ * Angular's `[innerHTML]`, Angular's normal sanitizer remains the boundary.
992
+ *
993
+ * The interaction contract matches `WmTooltip`: hover and keyboard focus,
994
+ * Escape dismissal, a hoverable panel, scroll/resize re-anchoring, clipping
995
+ * detection, and an `aria-describedby` relationship by default. Rich tooltip
996
+ * content should remain non-interactive; use `WmPopover` for menus, links,
997
+ * forms, or other content that needs focus and interaction.
998
+ */
999
+ declare class WmRichTooltip {
1000
+ /** Preferred side. Flips automatically when the viewport has no room. */
1001
+ readonly position: _angular_core.InputSignal<WmTooltipPosition>;
1002
+ /** Milliseconds a pointer must rest on the trigger before opening. */
1003
+ readonly delay: _angular_core.InputSignal<number>;
1004
+ /** Suppress the tooltip without removing its projected content. */
1005
+ readonly disabled: _angular_core.InputSignal<boolean>;
1006
+ /** Whether the panel describes the trigger or names it. */
1007
+ readonly relation: _angular_core.InputSignal<WmTooltipRelation>;
1008
+ /** Make a non-focusable projected trigger reachable by keyboard when needed. */
1009
+ readonly focusable: _angular_core.InputSignal<boolean>;
1010
+ private readonly injector;
1011
+ private readonly renderer;
1012
+ private readonly triggerQuery;
1013
+ private readonly contentQuery;
1014
+ private readonly panelId;
1015
+ private triggerElement;
1016
+ private contentTemplate;
1017
+ private triggerCleanups;
1018
+ private addedTabIndex;
1019
+ private overlayRef;
1020
+ private panelRef;
1021
+ private portal;
1022
+ private positionChanges;
1023
+ private showTimer;
1024
+ private hideTimer;
1025
+ private raiseFrame;
1026
+ private pointerOnTrigger;
1027
+ private pointerOnPanel;
1028
+ private triggerFocused;
1029
+ private detachDocumentListeners;
1030
+ private clippingAncestors;
1031
+ constructor();
1032
+ /** Open the rich tooltip immediately, bypassing the hover delay. */
1033
+ show(): void;
1034
+ /** Close the rich tooltip immediately, without the pointer grace period. */
1035
+ hideNow(): void;
1036
+ /** True while the rich tooltip panel is attached. */
1037
+ get isOpen(): boolean;
1038
+ private bindTrigger;
1039
+ private unbindTrigger;
1040
+ private updateFocusable;
1041
+ private onPointerEnterTrigger;
1042
+ private onPointerLeaveTrigger;
1043
+ private onFocusTrigger;
1044
+ private onBlurTrigger;
1045
+ private scheduleShow;
1046
+ private scheduleHide;
1047
+ private clearTimer;
1048
+ private ensureOverlay;
1049
+ private positions;
1050
+ private readonly onPointerEnterPanel;
1051
+ private readonly onPointerLeavePanel;
1052
+ private attachDocumentListeners;
1053
+ private releaseDocumentListeners;
1054
+ private reanchor;
1055
+ private resolveClippingAncestors;
1056
+ private isTriggerClipped;
1057
+ private relationAttribute;
1058
+ private linkTriggerToPanel;
1059
+ private unlinkTriggerFromPanel;
1060
+ private isNativelyFocusable;
1061
+ private matchesFocusVisible;
1062
+ private teardown;
1063
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmRichTooltip, never>;
1064
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmRichTooltip, "wm-rich-tooltip", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "relation": { "alias": "relation"; "required": false; "isSignal": true; }; "focusable": { "alias": "focusable"; "required": false; "isSignal": true; }; }, {}, ["triggerQuery", "contentQuery"], ["[wmRichTooltipTrigger]", "ng-template[wmRichTooltipContent]"], true, never>;
1065
+ }
1066
+
959
1067
  /**
960
1068
  * Notify a handler whenever anything that can move an anchored overlay moves.
961
1069
  *
@@ -982,74 +1090,5 @@ declare class WmTooltip {
982
1090
  */
983
1091
  declare function onViewportChange(handler: () => void): () => void;
984
1092
 
985
- interface LicenseStatus {
986
- valid: boolean;
987
- org: string | null;
988
- product: string;
989
- seats: number | null;
990
- tier: string | null;
991
- expires: string | null;
992
- key_id: string | null;
993
- error: string | null;
994
- }
995
-
996
- declare class WmLicenseService {
997
- private toast;
998
- readonly license: _angular_core.WritableSignal<LicenseStatus>;
999
- readonly isLicensed: _angular_core.Signal<boolean>;
1000
- readonly orgName: _angular_core.Signal<string>;
1001
- checkLicense(): Promise<void>;
1002
- installKey(jwt: string): Promise<LicenseStatus>;
1003
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseService, never>;
1004
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<WmLicenseService>;
1005
- }
1006
-
1007
- /**
1008
- * One of the values written to `AppConfig.declared_use_type` by the
1009
- * first-run EULA modal in apps that gate on use-type self-attestation
1010
- * (Mortar). Apps without a use-type system (Helm) leave this `null` and
1011
- * the nudge falls back to its original behaviour: visible to anyone
1012
- * without a valid commercial key.
1013
- */
1014
- type WmDeclaredUseType = 'personal' | 'oss' | 'commercial';
1015
- declare class WmLicenseNudge {
1016
- private licenseService;
1017
- /**
1018
- * Self-declared use type from the host app's first-run modal. When the
1019
- * user has declared `personal` or `oss` the nudge stays hidden — they've
1020
- * already told us a commercial key isn't relevant. `commercial` (without
1021
- * a key) and `null` (no declaration yet) keep the nudge visible.
1022
- *
1023
- * Typed `string | null` rather than `WmDeclaredUseType | null` because
1024
- * ng-packagr's partial-compilation d.ts emit drops the `null` from a
1025
- * union with a string-literal type, which then forces every consumer to
1026
- * `as` the binding. Runtime narrowing happens in `shouldShow`.
1027
- */
1028
- readonly declaredUseType: _angular_core.InputSignal<string>;
1029
- dismissed: _angular_core.WritableSignal<boolean>;
1030
- enterLicense: _angular_core.OutputEmitterRef<void>;
1031
- protected readonly shouldShow: () => boolean;
1032
- dismiss(): void;
1033
- onEnterLicense(): void;
1034
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseNudge, never>;
1035
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmLicenseNudge, "wm-license-nudge", never, { "declaredUseType": { "alias": "declaredUseType"; "required": false; "isSignal": true; }; }, { "enterLicense": "enterLicense"; }, never, never, true, never>;
1036
- }
1037
-
1038
- declare class WmLicenseDialog {
1039
- private licenseService;
1040
- visible: _angular_core.InputSignal<boolean>;
1041
- dismiss: _angular_core.OutputEmitterRef<void>;
1042
- keyInput: _angular_core.WritableSignal<string>;
1043
- validationResult: _angular_core.WritableSignal<LicenseStatus>;
1044
- validating: _angular_core.WritableSignal<boolean>;
1045
- installed: _angular_core.WritableSignal<boolean>;
1046
- onDismiss(): void;
1047
- onKeyInput(event: Event): void;
1048
- validate(): Promise<void>;
1049
- private reset;
1050
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<WmLicenseDialog, never>;
1051
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmLicenseDialog, "wm-license-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
1052
- }
1053
-
1054
- export { Checkbox, GhostField, NumberInput, PageHeader, Toggle, WmAnchoredScrollStrategy, WmAutoFocus, WmButton, WmCombobox, WmDialog, WmLicenseDialog, WmLicenseNudge, WmLicenseService, WmModal, WmPopover, WmSelect, WmTab, WmTabs, WmToastContainer, WmToastService, WmTooltip, onViewportChange };
1055
- export type { ButtonSize, ButtonVariant, ComboboxOption, DialogSize, LicenseStatus, SelectOption, Toast, ToastType, WmDeclaredUseType, WmTooltipPosition, WmTooltipRelation };
1093
+ export { Checkbox, GhostField, NumberInput, PageHeader, Toggle, WmAnchoredScrollStrategy, WmAutoFocus, WmButton, WmCombobox, WmDialog, WmModal, WmPopover, WmRichTooltip, WmRichTooltipContent, WmRichTooltipTrigger, WmSelect, WmTab, WmTabs, WmToastContainer, WmToastService, WmTooltip, onViewportChange };
1094
+ export type { ButtonSize, ButtonVariant, ComboboxOption, DialogSize, SelectOption, Toast, ToastType, WmTooltipPosition, WmTooltipRelation };
@@ -1,94 +1,94 @@
1
- Copyright (c) 2019 - Present, Microsoft Corporation,
2
- with Reserved Font Name Cascadia Code.
3
-
4
- This Font Software is licensed under the SIL Open Font License, Version 1.1.
5
- This license is copied below, and is also available with a FAQ at:
6
- http://scripts.sil.org/OFL
7
-
8
-
9
- -----------------------------------------------------------
10
- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11
- -----------------------------------------------------------
12
-
13
- PREAMBLE
14
- The goals of the Open Font License (OFL) are to stimulate worldwide
15
- development of collaborative font projects, to support the font creation
16
- efforts of academic and linguistic communities, and to provide a free and
17
- open framework in which fonts may be shared and improved in partnership
18
- with others.
19
-
20
- The OFL allows the licensed fonts to be used, studied, modified and
21
- redistributed freely as long as they are not sold by themselves. The
22
- fonts, including any derivative works, can be bundled, embedded,
23
- redistributed and/or sold with any software provided that any reserved
24
- names are not used by derivative works. The fonts and derivatives,
25
- however, cannot be released under any other type of license. The
26
- requirement for fonts to remain under this license does not apply
27
- to any document created using the fonts or their derivatives.
28
-
29
- DEFINITIONS
30
- "Font Software" refers to the set of files released by the Copyright
31
- Holder(s) under this license and clearly marked as such. This may
32
- include source files, build scripts and documentation.
33
-
34
- "Reserved Font Name" refers to any names specified as such after the
35
- copyright statement(s).
36
-
37
- "Original Version" refers to the collection of Font Software components as
38
- distributed by the Copyright Holder(s).
39
-
40
- "Modified Version" refers to any derivative made by adding to, deleting,
41
- or substituting -- in part or in whole -- any of the components of the
42
- Original Version, by changing formats or by porting the Font Software to a
43
- new environment.
44
-
45
- "Author" refers to any designer, engineer, programmer, technical
46
- writer or other person who contributed to the Font Software.
47
-
48
- PERMISSION & CONDITIONS
49
- Permission is hereby granted, free of charge, to any person obtaining
50
- a copy of the Font Software, to use, study, copy, merge, embed, modify,
51
- redistribute, and sell modified and unmodified copies of the Font
52
- Software, subject to the following conditions:
53
-
54
- 1) Neither the Font Software nor any of its individual components,
55
- in Original or Modified Versions, may be sold by itself.
56
-
57
- 2) Original or Modified Versions of the Font Software may be bundled,
58
- redistributed and/or sold with any software, provided that each copy
59
- contains the above copyright notice and this license. These can be
60
- included either as stand-alone text files, human-readable headers or
61
- in the appropriate machine-readable metadata fields within text or
62
- binary files as long as those fields can be easily viewed by the user.
63
-
64
- 3) No Modified Version of the Font Software may use the Reserved Font
65
- Name(s) unless explicit written permission is granted by the corresponding
66
- Copyright Holder. This restriction only applies to the primary font name as
67
- presented to the users.
68
-
69
- 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70
- Software shall not be used to promote, endorse or advertise any
71
- Modified Version, except to acknowledge the contribution(s) of the
72
- Copyright Holder(s) and the Author(s) or with their explicit written
73
- permission.
74
-
75
- 5) The Font Software, modified or unmodified, in part or in whole,
76
- must be distributed entirely under this license, and must not be
77
- distributed under any other license. The requirement for fonts to
78
- remain under this license does not apply to any document created
79
- using the Font Software.
80
-
81
- TERMINATION
82
- This license becomes null and void if any of the above conditions are
83
- not met.
84
-
85
- DISCLAIMER
86
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91
- INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92
- DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93
- FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94
- OTHER DEALINGS IN THE FONT SOFTWARE.
1
+ Copyright (c) 2019 - Present, Microsoft Corporation,
2
+ with Reserved Font Name Cascadia Code.
3
+
4
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
5
+ This license is copied below, and is also available with a FAQ at:
6
+ http://scripts.sil.org/OFL
7
+
8
+
9
+ -----------------------------------------------------------
10
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11
+ -----------------------------------------------------------
12
+
13
+ PREAMBLE
14
+ The goals of the Open Font License (OFL) are to stimulate worldwide
15
+ development of collaborative font projects, to support the font creation
16
+ efforts of academic and linguistic communities, and to provide a free and
17
+ open framework in which fonts may be shared and improved in partnership
18
+ with others.
19
+
20
+ The OFL allows the licensed fonts to be used, studied, modified and
21
+ redistributed freely as long as they are not sold by themselves. The
22
+ fonts, including any derivative works, can be bundled, embedded,
23
+ redistributed and/or sold with any software provided that any reserved
24
+ names are not used by derivative works. The fonts and derivatives,
25
+ however, cannot be released under any other type of license. The
26
+ requirement for fonts to remain under this license does not apply
27
+ to any document created using the fonts or their derivatives.
28
+
29
+ DEFINITIONS
30
+ "Font Software" refers to the set of files released by the Copyright
31
+ Holder(s) under this license and clearly marked as such. This may
32
+ include source files, build scripts and documentation.
33
+
34
+ "Reserved Font Name" refers to any names specified as such after the
35
+ copyright statement(s).
36
+
37
+ "Original Version" refers to the collection of Font Software components as
38
+ distributed by the Copyright Holder(s).
39
+
40
+ "Modified Version" refers to any derivative made by adding to, deleting,
41
+ or substituting -- in part or in whole -- any of the components of the
42
+ Original Version, by changing formats or by porting the Font Software to a
43
+ new environment.
44
+
45
+ "Author" refers to any designer, engineer, programmer, technical
46
+ writer or other person who contributed to the Font Software.
47
+
48
+ PERMISSION & CONDITIONS
49
+ Permission is hereby granted, free of charge, to any person obtaining
50
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
51
+ redistribute, and sell modified and unmodified copies of the Font
52
+ Software, subject to the following conditions:
53
+
54
+ 1) Neither the Font Software nor any of its individual components,
55
+ in Original or Modified Versions, may be sold by itself.
56
+
57
+ 2) Original or Modified Versions of the Font Software may be bundled,
58
+ redistributed and/or sold with any software, provided that each copy
59
+ contains the above copyright notice and this license. These can be
60
+ included either as stand-alone text files, human-readable headers or
61
+ in the appropriate machine-readable metadata fields within text or
62
+ binary files as long as those fields can be easily viewed by the user.
63
+
64
+ 3) No Modified Version of the Font Software may use the Reserved Font
65
+ Name(s) unless explicit written permission is granted by the corresponding
66
+ Copyright Holder. This restriction only applies to the primary font name as
67
+ presented to the users.
68
+
69
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70
+ Software shall not be used to promote, endorse or advertise any
71
+ Modified Version, except to acknowledge the contribution(s) of the
72
+ Copyright Holder(s) and the Author(s) or with their explicit written
73
+ permission.
74
+
75
+ 5) The Font Software, modified or unmodified, in part or in whole,
76
+ must be distributed entirely under this license, and must not be
77
+ distributed under any other license. The requirement for fonts to
78
+ remain under this license does not apply to any document created
79
+ using the Font Software.
80
+
81
+ TERMINATION
82
+ This license becomes null and void if any of the above conditions are
83
+ not met.
84
+
85
+ DISCLAIMER
86
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94
+ OTHER DEALINGS IN THE FONT SOFTWARE.
package/inputs.css CHANGED
@@ -49,6 +49,7 @@
49
49
  Keyboard:
50
50
  .wm-kbd Single keyboard key badge (heavier bottom border = key depth)
51
51
  .wm-kbd-combo Flex wrapper for key combinations — auto-injects '+' between keys
52
+ .wm-kbd--on-fill Key cap on a control that carries its own fill — borrows its label
52
53
 
53
54
  Spec
54
55
  ----
@@ -1588,46 +1589,62 @@ select.wm-input {
1588
1589
  }
1589
1590
 
1590
1591
  /* ----------------------------------------------------------------
1591
- On an accent fill — .wm-kbd--on-accent
1592
+ On a filled control — .wm-kbd--on-fill
1592
1593
  ----------------------------------------------------------------
1593
1594
  A plain .wm-kbd is --wm-bg-sunken inside --wm-border-input: a
1594
- recess in a surface. Put one on .wm-btn--primary and both tokens
1595
- are answering the wrong question — the fill is a surface colour
1596
- stranded on the accent, and the border is tuned to separate from
1597
- surfaces rather than from a saturated fill.
1595
+ recess in a surface. Put one on any control that carries its own
1596
+ fill and both tokens are answering the wrong question — the
1597
+ fill is a surface colour stranded on the control, and the border
1598
+ is tuned to separate from surfaces rather than from a fill.
1598
1599
 
1599
- This modifier carries no fill of its own. It borrows the button's,
1600
- which means the cap's label IS the button's label and inherits the
1600
+ This modifier carries no fill of its own. It borrows the control's,
1601
+ which means the cap's label IS the control's label and inherits the
1601
1602
  contrast that pair already guarantees; nothing about the text needs
1602
- measuring twice. The edge is the label colour at 75% over whatever
1603
- sits behind it, and mixing toward `transparent` rather than toward
1604
- a named fill is what lets ONE declaration serve both the rest fill
1605
- and the hover fill — a mix toward --wm-color-accent could only
1606
- ever be correct for one of the two.
1607
-
1608
- 75% is held by check-accent-contrast.mjs against both fills on
1609
- every theme. The binding case is posh-sandalwood, where the edge
1610
- measures 3.47:1 against WCAG 1.4.11's 3:1.
1611
-
1612
- Usage — inside an accent button:
1603
+ measuring twice. The edge is that same label colour at 75% over
1604
+ whatever sits behind it, and mixing toward `transparent` rather than
1605
+ toward a named fill is what lets ONE declaration serve every state
1606
+ the control has — a mix toward --wm-color-accent could only ever
1607
+ be correct for one fill.
1608
+
1609
+ Both values come from `currentColor` rather than from a named token,
1610
+ which is what makes this general. On .wm-btn--primary currentColor
1611
+ IS --wm-color-accent-text, so the accent case computes to exactly
1612
+ what it did when this rule named that token outright; on a danger
1613
+ or success control it follows that control's own label instead of
1614
+ painting the accent's label on a fill that is not the accent.
1615
+
1616
+ The generality is not theoretical. Measured across all 12 themes on
1617
+ Helm's conflict-resolution Reject button — danger at 22% over a
1618
+ tinted header — a plain .wm-kbd's edge separates from the button
1619
+ at 1.65:1 to 2.89:1, failing WCAG 1.4.11 on EVERY theme. The same
1620
+ cap under this modifier measures 3.55:1 to 4.43:1.
1621
+
1622
+ 75% is held by check-accent-contrast.mjs against both accent fills
1623
+ on every theme. The binding case there is posh-sandalwood, where
1624
+ the edge measures 3.47:1 against 1.4.11's 3:1.
1625
+
1626
+ Usage — inside a filled button:
1613
1627
  <button class="wm-btn wm-btn--primary">
1614
1628
  Accept
1615
1629
  <span class="wm-kbd-combo">
1616
- <kbd class="wm-kbd wm-kbd--on-accent">Ctrl</kbd>
1617
- <kbd class="wm-kbd wm-kbd--on-accent">Enter</kbd>
1630
+ <kbd class="wm-kbd wm-kbd--on-fill">Ctrl</kbd>
1631
+ <kbd class="wm-kbd wm-kbd--on-fill">Enter</kbd>
1618
1632
  </span>
1619
1633
  </button>
1634
+
1635
+ .wm-kbd--on-accent, the name this shipped under in 1.16.0, was
1636
+ removed in 2.0.0: the mechanism was never accent-specific.
1620
1637
  ---------------------------------------------------------------- */
1621
1638
 
1622
- .wm-kbd--on-accent {
1623
- color: var(--wm-color-accent-text);
1639
+ .wm-kbd--on-fill {
1640
+ color: inherit;
1624
1641
  background: transparent;
1625
- border-color: color-mix(in srgb, var(--wm-color-accent-text) 75%, transparent);
1642
+ border-color: color-mix(in srgb, currentColor 75%, transparent);
1626
1643
  }
1627
1644
 
1628
1645
  /* The combo's `+` is --wm-text-muted, a surface colour, so it is as wrong on
1629
- an accent fill as the cap's own tokens were. Same share as the edge, so
1630
- there is one number to keep in step rather than two. */
1631
- .wm-kbd-combo > .wm-kbd--on-accent + .wm-kbd--on-accent::before {
1646
+ a fill as the cap's own tokens were. Same share as the edge, so there is one
1647
+ number to keep in step rather than two. */
1648
+ .wm-kbd-combo > .wm-kbd--on-fill + .wm-kbd--on-fill::before {
1632
1649
  color: color-mix(in srgb, currentColor 75%, transparent);
1633
1650
  }
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@wildmason/aegis",
3
- "version": "1.16.0",
4
- "description": "Aegis design system \u00e2\u20ac\u201d CSS tokens and Angular component library",
3
+ "version": "2.0.0",
4
+ "description": "Aegis design system — CSS tokens and Angular component library",
5
5
  "scripts": {
6
6
  "check:offline-fonts": "node scripts/check-offline-fonts.mjs",
7
- "build": "npm run check:offline-fonts && npm run check:destructive-contrast && npm run check:semantic-contrast && npm run check:accent-contrast && npm run check:tooltip-contrast && npm run check:docs && ng-packagr -p ng-package.json",
7
+ "build": "npm run check:offline-fonts && npm run check:destructive-contrast && npm run check:semantic-contrast && npm run check:accent-contrast && npm run check:tooltip-contrast && npm run check:docs && ng-packagr -p ng-package.json && npm run check:entry-points",
8
8
  "prepublishOnly": "npm run build",
9
9
  "check:destructive-contrast": "node scripts/check-destructive-contrast.mjs",
10
10
  "check:semantic-contrast": "node scripts/check-semantic-contrast.mjs",
11
11
  "check:tooltip-contrast": "node scripts/check-tooltip-contrast.mjs",
12
12
  "check:accent-contrast": "node scripts/check-accent-contrast.mjs",
13
- "check:docs": "node scripts/check-design-language.mjs"
13
+ "check:docs": "node scripts/check-design-language.mjs",
14
+ "check:entry-points": "node scripts/check-entry-points.mjs"
14
15
  },
15
16
  "files": [
16
17
  "CHANGELOG.md",
@@ -22,9 +23,17 @@
22
23
  "exports": {
23
24
  "./themes.css": "./themes.css",
24
25
  "./inputs.css": "./inputs.css",
26
+ ".": {
27
+ "types": "./dist/types/wildmason-aegis.d.ts",
28
+ "default": "./dist/fesm2022/wildmason-aegis.mjs"
29
+ },
25
30
  "./components": {
26
31
  "types": "./dist/types/wildmason-aegis.d.ts",
27
32
  "default": "./dist/fesm2022/wildmason-aegis.mjs"
33
+ },
34
+ "./license": {
35
+ "types": "./dist/types/wildmason-aegis-license.d.ts",
36
+ "default": "./dist/fesm2022/wildmason-aegis-license.mjs"
28
37
  }
29
38
  },
30
39
  "peerDependencies": {
@@ -34,16 +43,21 @@
34
43
  "rxjs": ">=7",
35
44
  "tslib": "^2.3.0"
36
45
  },
46
+ "peerDependenciesMeta": {
47
+ "@tauri-apps/api": {
48
+ "optional": true
49
+ }
50
+ },
37
51
  "devDependencies": {
38
- "@angular/cdk": "^21.0.0",
39
- "@angular/common": "21.2.1",
40
- "@angular/compiler": "21.2.1",
41
- "@angular/compiler-cli": "21.2.1",
42
- "@angular/core": "21.2.1",
43
- "@angular/forms": "21.2.1",
44
- "@angular/platform-browser": "21.2.1",
45
- "@tauri-apps/api": "^2.10.1",
46
- "ng-packagr": "^21.0.0",
52
+ "@angular/cdk": "^21.2.14",
53
+ "@angular/common": "^21.2.23",
54
+ "@angular/compiler": "^21.2.23",
55
+ "@angular/compiler-cli": "^21.2.23",
56
+ "@angular/core": "^21.2.23",
57
+ "@angular/forms": "^21.2.23",
58
+ "@angular/platform-browser": "^21.2.23",
59
+ "@tauri-apps/api": "^2.11.1",
60
+ "ng-packagr": "^21.2.7",
47
61
  "tslib": "^2.8.1",
48
62
  "typescript": "^5.9.2"
49
63
  },