@hermes-ui/angular 0.1.7 → 0.2.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.
Files changed (108) hide show
  1. package/README.md +6 -6
  2. package/button/_buttons.clarity.scss +80 -2
  3. package/button/_mixins.buttons.scss +44 -2
  4. package/button/_properties.buttons.scss +209 -247
  5. package/button/_variables.buttons.scss +22 -0
  6. package/fesm2022/hermes-ui-angular-accordion.mjs +2 -2
  7. package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
  8. package/fesm2022/hermes-ui-angular-addons-card-container.mjs +3 -3
  9. package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
  10. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2 -2
  11. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
  12. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2 -2
  13. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
  14. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +2 -2
  15. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
  16. package/fesm2022/hermes-ui-angular-addons-property-view.mjs +2 -2
  17. package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
  18. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +66 -66
  19. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
  20. package/fesm2022/hermes-ui-angular-addons-var.mjs +2 -2
  21. package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
  22. package/fesm2022/hermes-ui-angular-addons-wizard.mjs +2 -2
  23. package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
  24. package/fesm2022/hermes-ui-angular-button.mjs +2 -2
  25. package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
  26. package/fesm2022/hermes-ui-angular-data-datagrid.mjs +2 -2
  27. package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
  28. package/fesm2022/hermes-ui-angular-data-stack-view.mjs +2 -2
  29. package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
  30. package/fesm2022/hermes-ui-angular-data-tree-view.mjs +2 -2
  31. package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
  32. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +2 -2
  33. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
  34. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +2 -2
  35. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
  36. package/fesm2022/hermes-ui-angular-forms-combobox.mjs +2 -2
  37. package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
  38. package/fesm2022/hermes-ui-angular-forms-common.mjs +2 -2
  39. package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
  40. package/fesm2022/hermes-ui-angular-forms-datalist.mjs +2 -2
  41. package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
  42. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +3 -3
  43. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
  44. package/fesm2022/hermes-ui-angular-forms-file-input.mjs +2 -2
  45. package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
  46. package/fesm2022/hermes-ui-angular-forms-input.mjs +2 -2
  47. package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
  48. package/fesm2022/hermes-ui-angular-forms-native-select.mjs +2 -2
  49. package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
  50. package/fesm2022/hermes-ui-angular-forms-number-input.mjs +2 -2
  51. package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
  52. package/fesm2022/hermes-ui-angular-forms-password.mjs +2 -2
  53. package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
  54. package/fesm2022/hermes-ui-angular-forms-radio.mjs +2 -2
  55. package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
  56. package/fesm2022/hermes-ui-angular-forms-range.mjs +2 -2
  57. package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
  58. package/fesm2022/hermes-ui-angular-forms-select.mjs +2 -2
  59. package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
  60. package/fesm2022/hermes-ui-angular-forms-textarea.mjs +2 -2
  61. package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
  62. package/fesm2022/hermes-ui-angular-icon.mjs +29 -29
  63. package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
  64. package/fesm2022/hermes-ui-angular-layout-nav.mjs +2 -2
  65. package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
  66. package/fesm2022/hermes-ui-angular-layout-tabs.mjs +2 -2
  67. package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
  68. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +382 -28
  69. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
  70. package/fesm2022/hermes-ui-angular-modal.mjs +2 -2
  71. package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
  72. package/fesm2022/hermes-ui-angular-popover-signpost.mjs +2 -2
  73. package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
  74. package/fesm2022/hermes-ui-angular-stepper.mjs +2 -2
  75. package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
  76. package/fesm2022/hermes-ui-angular-timeline.mjs +2 -2
  77. package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
  78. package/fesm2022/hermes-ui-angular-toast.mjs +2 -2
  79. package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
  80. package/fesm2022/hermes-ui-angular-utils.mjs +6 -0
  81. package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
  82. package/fesm2022/hermes-ui-angular-wizard.mjs +2 -2
  83. package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
  84. package/forms/combobox/_combobox.clarity.scss +18 -4
  85. package/forms/combobox/_properties.combobox.scss +5 -5
  86. package/forms/styles/_input-group.clarity.scss +7 -0
  87. package/forms/styles/_mixins.forms.scss +12 -10
  88. package/forms/styles/_native-select.clarity.scss +17 -5
  89. package/forms/styles/_properties.forms.scss +29 -18
  90. package/forms/styles/_textarea.clarity.scss +4 -4
  91. package/forms/styles/_variables.forms.scss +6 -0
  92. package/layout/main-container/_properties.header.scss +44 -6
  93. package/layout/main-container/_variables.header.scss +11 -0
  94. package/layout/nav/_header.clarity.scss +14 -0
  95. package/layout/nav/_mixins.header.scss +55 -40
  96. package/layout/nav/_responsive-nav.clarity.scss +21 -10
  97. package/layout/vertical-nav/_properties.vertical-nav.scss +77 -27
  98. package/layout/vertical-nav/_variables.vertical-nav.scss +23 -0
  99. package/layout/vertical-nav/_vertical-nav.clarity.scss +418 -277
  100. package/package.json +1 -1
  101. package/types/hermes-ui-angular-addons-theme-builder.d.ts +2 -2
  102. package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -1
  103. package/types/hermes-ui-angular-icon.d.ts +3 -3
  104. package/types/hermes-ui-angular-icon.d.ts.map +1 -1
  105. package/types/hermes-ui-angular-layout-vertical-nav.d.ts +134 -10
  106. package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -1
  107. package/types/hermes-ui-angular-utils.d.ts +12 -0
  108. package/types/hermes-ui-angular-utils.d.ts.map +1 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  1. Install Hermes packages through npm:
4
4
 
5
5
  ```
6
- npm install @hermes/angular
6
+ npm install @hermes-ui/angular @hermes-ui/core
7
7
  ```
8
8
 
9
9
  2. Import the HermesModule into your Angular application's module. Your application's main module might look like this:
@@ -11,7 +11,7 @@
11
11
  ```
12
12
  import { NgModule } from '@angular/core';
13
13
  import { BrowserModule } from '@angular/platform-browser';
14
- import { HermesModule } from '@hermes/angular';
14
+ import { HermesModule } from '@hermes-ui/angular';
15
15
  import { AppComponent } from './app.component';
16
16
 
17
17
  @NgModule({
@@ -26,20 +26,20 @@
26
26
  export class AppModule { }
27
27
  ```
28
28
 
29
- 3. Include the necessary styles in the build. You can do this by either including the compiled/minified css in your angular.json
30
- file or by importing the scss/css directly in your top level styles.scss/css file.
29
+ 3. Include the necessary styles in the build. You can do this by either adding the scss entry point to your angular.json
30
+ or by importing it in your top level styles.scss file.
31
31
 
32
32
  ```
33
33
  //...
34
34
  "styles": [
35
- "node_modules/@hermes/angular/hermes-ui.min.css",
35
+ "node_modules/@hermes-ui/angular/hermes-ui.scss",
36
36
  //... any other styles
37
37
  ]
38
38
  //...
39
39
  ```
40
40
 
41
41
  ```scss
42
- @use '@hermes/angular/hermes-ui';
42
+ @use '@hermes-ui/angular/hermes-ui';
43
43
  ```
44
44
 
45
45
  4. Set the Theme
@@ -19,13 +19,21 @@
19
19
  @include button-mixins.populateButtonProperties(default);
20
20
  @include mixins.generate-typography-token('BUTTON-12');
21
21
 
22
- // shadcn text-sm; only overrides the size from BUTTON-12 above, keeps its weight/
23
- // line-height/letter-spacing/text-transform.
22
+ // Size, weight and line-height follow app-botao (12px bold), not the shared BUTTON-12 token;
23
+ // its sentence case and untracked letters are kept.
24
24
  font-size: buttons-variables.$hermes-btn-font-size;
25
+ font-weight: buttons-variables.$hermes-btn-font-weight;
26
+ line-height: buttons-variables.$hermes-btn-line-height;
25
27
 
28
+ box-sizing: border-box;
26
29
  height: buttons-variables.$hermes-btn-appearance-form-height;
27
30
  padding: buttons-variables.$hermes-btn-appearance-form-padding;
28
31
 
32
+ // The focus ring takes the intent's legible color; the intents below retarget the token.
33
+ --hermes-btn-focus-color: var(--hermes-btn-palette-primary-ink);
34
+
35
+ @include button-mixins.btn-interaction();
36
+
29
37
  .hermes-loading-btn-content {
30
38
  display: flex;
31
39
  gap: buttons-variables.$hermes-btn-gap;
@@ -180,11 +188,68 @@
180
188
  @include button-mixins.populateButtonProperties(inverse);
181
189
  }
182
190
 
191
+ // Focus ring color per intent (--cor-* of app-botao).
192
+ .btn.btn-success,
193
+ .btn.btn-success-outline,
194
+ .btn.btn-outline-success,
195
+ .btn.btn-link-success,
196
+ .btn-success .btn,
197
+ .btn-success-outline .btn,
198
+ .btn-outline-success .btn,
199
+ .btn-link-success .btn {
200
+ --hermes-btn-focus-color: var(--hermes-btn-palette-success-ink);
201
+ }
202
+
203
+ .btn.btn-warning,
204
+ .btn.btn-warning-outline,
205
+ .btn.btn-outline-warning,
206
+ .btn.btn-link-warning,
207
+ .btn-warning .btn,
208
+ .btn-warning-outline .btn,
209
+ .btn-outline-warning .btn,
210
+ .btn-link-warning .btn {
211
+ --hermes-btn-focus-color: var(--hermes-btn-palette-warning-ink);
212
+ }
213
+
214
+ .btn.btn-danger,
215
+ .btn.btn-danger-outline,
216
+ .btn.btn-outline-danger,
217
+ .btn.btn-link-danger,
218
+ .btn-danger .btn,
219
+ .btn-danger-outline .btn,
220
+ .btn-outline-danger .btn,
221
+ .btn-link-danger .btn {
222
+ --hermes-btn-focus-color: var(--hermes-btn-palette-danger-ink);
223
+ }
224
+
225
+ // Minimal emphasis: underlined label, no dimming on hover (the tint is the feedback).
226
+ .btn.btn-link,
227
+ .btn.btn-link-primary,
228
+ .btn.btn-link-info,
229
+ .btn.btn-link-success,
230
+ .btn.btn-link-warning,
231
+ .btn.btn-link-danger,
232
+ .btn.btn-link-neutral,
233
+ .btn-link .btn,
234
+ .btn-link-primary .btn,
235
+ .btn-link-info .btn,
236
+ .btn-link-success .btn,
237
+ .btn-link-warning .btn,
238
+ .btn-link-danger .btn,
239
+ .btn-link-neutral .btn {
240
+ @include button-mixins.btn-underlined();
241
+ }
242
+
183
243
  .btn.btn-sm,
184
244
  .btn-sm .btn {
185
245
  @include button-mixins.btn-sm-appearance();
186
246
  }
187
247
 
248
+ .btn.btn-lg,
249
+ .btn-lg .btn {
250
+ @include button-mixins.btn-lg-appearance();
251
+ }
252
+
188
253
  .btn-block {
189
254
  display: flex;
190
255
  width: 100%;
@@ -215,8 +280,21 @@
215
280
  }
216
281
  }
217
282
 
283
+ .btn-lg:not(.btn-link) {
284
+ hermes-icon,
285
+ hermes-icon {
286
+ &:not([size]) {
287
+ height: buttons-variables.$hermes-btn-icon-size-lg;
288
+ width: buttons-variables.$hermes-btn-icon-size-lg;
289
+ }
290
+ }
291
+ }
292
+
293
+ // Icon-only buttons are square, like app-botao-icone: the box is the height of the step.
218
294
  .btn-icon {
219
295
  min-width: 0;
296
+ padding-inline: 0;
297
+ aspect-ratio: 1;
220
298
  }
221
299
 
222
300
  //Overflow
@@ -103,7 +103,7 @@
103
103
  @include button-css-var($button-type, color);
104
104
 
105
105
  &:not([size]) {
106
- @include mixins.min-equilateral(density.$hermes-base-icon-size-s);
106
+ @include mixins.min-equilateral(buttons-variables.$hermes-btn-icon-size);
107
107
  }
108
108
  }
109
109
 
@@ -194,7 +194,7 @@
194
194
  overflow: hidden;
195
195
  }
196
196
  @mixin btn-min-max-widths() {
197
- min-width: tokens.$hermes-global-space-14;
197
+ min-width: buttons-variables.$hermes-btn-min-width;
198
198
  max-width: mixins.baselinePx(360);
199
199
  }
200
200
  @mixin btn-text-properties() {
@@ -226,7 +226,49 @@
226
226
  @include mixins.generate-typography-token('BUTTON-11-SMALL');
227
227
 
228
228
  height: buttons-variables.$hermes-btn-appearance-standard-height;
229
+ min-width: buttons-variables.$hermes-btn-min-width-sm;
229
230
  padding: buttons-variables.$hermes-btn-appearance-standard-padding;
231
+ font-size: buttons-variables.$hermes-btn-font-size-sm;
232
+ font-weight: buttons-variables.$hermes-btn-font-weight;
233
+ line-height: buttons-variables.$hermes-btn-line-height;
234
+ }
235
+ @mixin btn-lg-appearance() {
236
+ height: buttons-variables.$hermes-btn-height-lg;
237
+ min-width: buttons-variables.$hermes-btn-min-width-lg;
238
+ padding: buttons-variables.$hermes-btn-padding-lg;
239
+ font-size: buttons-variables.$hermes-btn-font-size-lg;
240
+ }
241
+ // Darkens the whole control (fill, label and icon) instead of swapping tokens per intent. The
242
+ // resting pair was measured for contrast; a brightness filter scales it without re-measuring.
243
+ @mixin btn-interaction() {
244
+ transition: buttons-variables.$hermes-btn-transition;
245
+
246
+ &:hover:not(:disabled):not(.disabled) {
247
+ filter: brightness(#{buttons-variables.$hermes-btn-hover-brightness});
248
+ }
249
+
250
+ &:active:not(:disabled):not(.disabled) {
251
+ filter: brightness(#{buttons-variables.$hermes-btn-active-brightness});
252
+ }
253
+
254
+ &:focus-visible {
255
+ outline: buttons-variables.$hermes-btn-focus-width solid buttons-variables.$hermes-btn-focus-color;
256
+ outline-offset: buttons-variables.$hermes-btn-focus-offset;
257
+ }
258
+ }
259
+ // Minimal emphasis has no frame, so the underline is what says it is actionable (WCAG 1.4.1).
260
+ @mixin btn-underlined() {
261
+ text-decoration: underline;
262
+
263
+ &:hover,
264
+ &:active {
265
+ text-decoration: underline;
266
+ }
267
+
268
+ &:hover:not(:disabled):not(.disabled),
269
+ &:active:not(:disabled):not(.disabled) {
270
+ filter: none;
271
+ }
230
272
  }
231
273
  @mixin generateButton() {
232
274
  @include btn-appearance();