@wildmason/aegis 1.15.0 → 1.18.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.
@@ -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
  *
@@ -1051,5 +1159,5 @@ declare class WmLicenseDialog {
1051
1159
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WmLicenseDialog, "wm-license-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
1052
1160
  }
1053
1161
 
1054
- export { Checkbox, GhostField, NumberInput, PageHeader, Toggle, WmAnchoredScrollStrategy, WmAutoFocus, WmButton, WmCombobox, WmDialog, WmLicenseDialog, WmLicenseNudge, WmLicenseService, WmModal, WmPopover, WmSelect, WmTab, WmTabs, WmToastContainer, WmToastService, WmTooltip, onViewportChange };
1162
+ export { Checkbox, GhostField, NumberInput, PageHeader, Toggle, WmAnchoredScrollStrategy, WmAutoFocus, WmButton, WmCombobox, WmDialog, WmLicenseDialog, WmLicenseNudge, WmLicenseService, WmModal, WmPopover, WmRichTooltip, WmRichTooltipContent, WmRichTooltipTrigger, WmSelect, WmTab, WmTabs, WmToastContainer, WmToastService, WmTooltip, onViewportChange };
1055
1163
  export type { ButtonSize, ButtonVariant, ComboboxOption, DialogSize, LicenseStatus, SelectOption, Toast, ToastType, WmDeclaredUseType, 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
  ----
@@ -1586,3 +1587,68 @@ select.wm-input {
1586
1587
  color: var(--wm-text-muted);
1587
1588
  pointer-events: none;
1588
1589
  }
1590
+
1591
+ /* ----------------------------------------------------------------
1592
+ On a filled control — .wm-kbd--on-fill
1593
+ ----------------------------------------------------------------
1594
+ A plain .wm-kbd is --wm-bg-sunken inside --wm-border-input: a
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.
1599
+
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
1602
+ contrast that pair already guarantees; nothing about the text needs
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:
1627
+ <button class="wm-btn wm-btn--primary">
1628
+ Accept
1629
+ <span class="wm-kbd-combo">
1630
+ <kbd class="wm-kbd wm-kbd--on-fill">Ctrl</kbd>
1631
+ <kbd class="wm-kbd wm-kbd--on-fill">Enter</kbd>
1632
+ </span>
1633
+ </button>
1634
+
1635
+ .wm-kbd--on-accent is the name this shipped under in 1.16.0 and
1636
+ still works, as the same declarations. It is kept because removing
1637
+ a published class is a breaking change, and it is deprecated
1638
+ because the mechanism was never accent-specific. Prefer --on-fill.
1639
+ ---------------------------------------------------------------- */
1640
+
1641
+ .wm-kbd--on-fill,
1642
+ .wm-kbd--on-accent {
1643
+ color: inherit;
1644
+ background: transparent;
1645
+ border-color: color-mix(in srgb, currentColor 75%, transparent);
1646
+ }
1647
+
1648
+ /* The combo's `+` is --wm-text-muted, a surface colour, so it is as wrong on
1649
+ a fill as the cap's own tokens were. Same share as the edge, so there is one
1650
+ number to keep in step rather than two. */
1651
+ .wm-kbd-combo > .wm-kbd--on-fill + .wm-kbd--on-fill::before,
1652
+ .wm-kbd-combo > .wm-kbd--on-accent + .wm-kbd--on-accent::before {
1653
+ color: color-mix(in srgb, currentColor 75%, transparent);
1654
+ }
package/package.json CHANGED
@@ -1,64 +1,65 @@
1
- {
2
- "name": "@wildmason/aegis",
3
- "version": "1.15.0",
4
- "description": "Aegis design system \u00e2\u20ac\u201d CSS tokens and Angular component library",
5
- "scripts": {
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:tooltip-contrast && npm run check:docs && ng-packagr -p ng-package.json",
8
- "prepublishOnly": "npm run build",
9
- "check:destructive-contrast": "node scripts/check-destructive-contrast.mjs",
10
- "check:semantic-contrast": "node scripts/check-semantic-contrast.mjs",
11
- "check:tooltip-contrast": "node scripts/check-tooltip-contrast.mjs",
12
- "check:docs": "node scripts/check-design-language.mjs"
13
- },
14
- "files": [
15
- "CHANGELOG.md",
16
- "dist",
17
- "fonts",
18
- "themes.css",
19
- "inputs.css"
20
- ],
21
- "exports": {
22
- "./themes.css": "./themes.css",
23
- "./inputs.css": "./inputs.css",
24
- "./components": {
25
- "types": "./dist/types/wildmason-aegis.d.ts",
26
- "default": "./dist/fesm2022/wildmason-aegis.mjs"
27
- }
28
- },
29
- "peerDependencies": {
30
- "@angular/cdk": ">=21",
31
- "@angular/core": ">=21",
32
- "@tauri-apps/api": ">=2",
33
- "rxjs": ">=7",
34
- "tslib": "^2.3.0"
35
- },
36
- "devDependencies": {
37
- "@angular/cdk": "^21.0.0",
38
- "@angular/common": "21.2.1",
39
- "@angular/compiler": "21.2.1",
40
- "@angular/compiler-cli": "21.2.1",
41
- "@angular/core": "21.2.1",
42
- "@angular/forms": "21.2.1",
43
- "@angular/platform-browser": "21.2.1",
44
- "@tauri-apps/api": "^2.10.1",
45
- "ng-packagr": "^21.0.0",
46
- "tslib": "^2.8.1",
47
- "typescript": "^5.9.2"
48
- },
49
- "keywords": [
50
- "design-system",
51
- "css",
52
- "angular",
53
- "tokens"
54
- ],
55
- "license": "MIT",
56
- "repository": {
57
- "type": "git",
58
- "url": "git+https://github.com/wildmason/aegis.git"
59
- },
60
- "publishConfig": {
61
- "access": "public",
62
- "registry": "https://registry.npmjs.org"
63
- }
64
- }
1
+ {
2
+ "name": "@wildmason/aegis",
3
+ "version": "1.18.0",
4
+ "description": "Aegis design system \u00e2\u20ac\u201d CSS tokens and Angular component library",
5
+ "scripts": {
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",
8
+ "prepublishOnly": "npm run build",
9
+ "check:destructive-contrast": "node scripts/check-destructive-contrast.mjs",
10
+ "check:semantic-contrast": "node scripts/check-semantic-contrast.mjs",
11
+ "check:tooltip-contrast": "node scripts/check-tooltip-contrast.mjs",
12
+ "check:accent-contrast": "node scripts/check-accent-contrast.mjs",
13
+ "check:docs": "node scripts/check-design-language.mjs"
14
+ },
15
+ "files": [
16
+ "CHANGELOG.md",
17
+ "dist",
18
+ "fonts",
19
+ "themes.css",
20
+ "inputs.css"
21
+ ],
22
+ "exports": {
23
+ "./themes.css": "./themes.css",
24
+ "./inputs.css": "./inputs.css",
25
+ "./components": {
26
+ "types": "./dist/types/wildmason-aegis.d.ts",
27
+ "default": "./dist/fesm2022/wildmason-aegis.mjs"
28
+ }
29
+ },
30
+ "peerDependencies": {
31
+ "@angular/cdk": ">=21",
32
+ "@angular/core": ">=21",
33
+ "@tauri-apps/api": ">=2",
34
+ "rxjs": ">=7",
35
+ "tslib": "^2.3.0"
36
+ },
37
+ "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",
47
+ "tslib": "^2.8.1",
48
+ "typescript": "^5.9.2"
49
+ },
50
+ "keywords": [
51
+ "design-system",
52
+ "css",
53
+ "angular",
54
+ "tokens"
55
+ ],
56
+ "license": "MIT",
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "git+https://github.com/wildmason/aegis.git"
60
+ },
61
+ "publishConfig": {
62
+ "access": "public",
63
+ "registry": "https://registry.npmjs.org"
64
+ }
65
+ }
package/themes.css CHANGED
@@ -354,7 +354,7 @@
354
354
 
355
355
  /* Accent */
356
356
  --wm-color-accent: #105987;
357
- --wm-color-accent-hover: #2aa198;
357
+ --wm-color-accent-hover: #004771;
358
358
  --wm-color-accent-text: #ffffff;
359
359
  --wm-color-accent-readable: #004066;
360
360
 
@@ -500,8 +500,8 @@
500
500
 
501
501
  /* Accent — light teal requires dark text */
502
502
  --wm-color-accent: #8fc4d3;
503
- --wm-color-accent-hover: #81a1c1;
504
- --wm-color-accent-text: #2e3440;
503
+ --wm-color-accent-hover: #b2e8f7;
504
+ --wm-color-accent-text: #2c323e;
505
505
  --wm-color-accent-readable: #a5dbea;
506
506
 
507
507
  /* Semantic */
@@ -577,8 +577,8 @@
577
577
 
578
578
  /* Accent — slightly lighter than canonical purple for card contrast */
579
579
  --wm-color-accent: #c9a7fa;
580
- --wm-color-accent-hover: #ff79c6;
581
- --wm-color-accent-text: #282a36;
580
+ --wm-color-accent-hover: #e5d5ff;
581
+ --wm-color-accent-text: #242632;
582
582
  --wm-color-accent-readable: #dcc6fe;
583
583
 
584
584
  /* Semantic */
@@ -657,8 +657,8 @@
657
657
 
658
658
  /* Accent — warm peach */
659
659
  --wm-color-accent: #f5986a;
660
- --wm-color-accent-hover: #f08458;
661
- --wm-color-accent-text: #1c1d2e;
660
+ --wm-color-accent-hover: #ffc7ac;
661
+ --wm-color-accent-text: #0e0e1e;
662
662
  --wm-color-accent-readable: #fead85;
663
663
 
664
664
  /* Semantic */
@@ -737,7 +737,7 @@
737
737
 
738
738
  /* Accent — thistle (muted lavender) */
739
739
  --wm-color-accent: #c4a8d8;
740
- --wm-color-accent-hover: #9e7abf;
740
+ --wm-color-accent-hover: #e7cafc;
741
741
  --wm-color-accent-text: #1a1715;
742
742
  --wm-color-accent-readable: #d8bced;
743
743
 
@@ -884,7 +884,7 @@
884
884
 
885
885
  /* Accent — Monokai hot pink */
886
886
  --wm-color-accent: #f92672;
887
- --wm-color-accent-hover: #fd971f;
887
+ --wm-color-accent-hover: #ff8dc2;
888
888
  --wm-color-accent-text: #1c1c15;
889
889
  /* #ff8ac4 was chosen for the WCAG failure (#f92672 is 2.9:1 on bg-float) and
890
890
  cleared 5.03:1, but measures APCA Lc 51.4 there. See the note in :root. */
@@ -964,7 +964,7 @@
964
964
 
965
965
  /* Accent — golden orange, the crepuscular ray color */
966
966
  --wm-color-accent: #c09d06;
967
- --wm-color-accent-hover: #b15000;
967
+ --wm-color-accent-hover: #e0bd3f;
968
968
  --wm-color-accent-text: #060810;
969
969
  --wm-color-accent-readable: #dcb83a;
970
970
 
@@ -1041,7 +1041,7 @@
1041
1041
 
1042
1042
  /* Accent — medium green, needs dark text for contrast */
1043
1043
  --wm-color-accent: #3fb950;
1044
- --wm-color-accent-hover: #58a6ff;
1044
+ --wm-color-accent-hover: #62d96f;
1045
1045
  --wm-color-accent-text: #0d1117;
1046
1046
  --wm-color-accent-readable: #5dd46a;
1047
1047
 
@@ -1118,7 +1118,7 @@
1118
1118
 
1119
1119
  /* Accent — Forest Moss Green */
1120
1120
  --wm-color-accent: #82a682;
1121
- --wm-color-accent-hover: #94b894;
1121
+ --wm-color-accent-hover: #9fc59f;
1122
1122
  --wm-color-accent-text: #161817;
1123
1123
  /* #9bc99b was chosen for the WCAG failure (#82a682 is 3.30:1 on bg-float) and
1124
1124
  cleared 4.74:1, but measures APCA Lc 54.3 there. See the note in :root. */