@daffodil/design 0.84.0 → 0.86.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 (210) hide show
  1. package/accordion/src/accordion-theme.scss +11 -13
  2. package/article/src/article-theme.scss +36 -38
  3. package/atoms/form/error-message/error-message.component.d.ts +6 -0
  4. package/atoms/form/form-field/form-field/form-field.component.d.ts +104 -13
  5. package/atoms/form/form-field/form-field-control.d.ts +3 -0
  6. package/atoms/form/form-field/form-field.d.ts +2 -1
  7. package/atoms/form/form-field/label/label.directive.d.ts +5 -0
  8. package/atoms/form/form-field/public_api.d.ts +1 -0
  9. package/atoms/form/form-label/form-label.directive.d.ts +3 -0
  10. package/atoms/form/hint/hint.component.d.ts +5 -1
  11. package/breadcrumb/src/breadcrumb-theme.scss +9 -11
  12. package/button/README.md +3 -3
  13. package/button/button/button-base.directive.d.ts +1 -2
  14. package/button/button/raised/raised.component.d.ts +1 -1
  15. package/button/src/button/basic/button-theme.scss +80 -82
  16. package/button/src/button/button-base.scss +0 -18
  17. package/button/src/button/flat/flat-theme.scss +28 -30
  18. package/button/src/button/icon/icon-theme.scss +74 -76
  19. package/button/src/button/raised/raised-theme.scss +28 -30
  20. package/button/src/button/stroked/stroked-theme.scss +31 -33
  21. package/button/src/button/underline/underline-theme.scss +30 -32
  22. package/callout/src/callout-theme.scss +21 -23
  23. package/card/src/card/raised/raised-theme.scss +9 -11
  24. package/card/src/card/stroked/stroked-theme.scss +32 -34
  25. package/card/src/card-base-theme.scss +42 -44
  26. package/core/colorable/colorable.d.ts +2 -2
  27. package/core/compactable/compactable.directive.d.ts +3 -0
  28. package/core/openable/openable.directive.d.ts +1 -1
  29. package/core/selectable/selectable.directive.d.ts +3 -1
  30. package/core/sizable/sizable.directive.d.ts +2 -2
  31. package/core/skeletonable/public_api.d.ts +0 -1
  32. package/core/skeletonable/skeletonable.directive.d.ts +3 -0
  33. package/core/text-alignable/text-alignable.directive.d.ts +9 -5
  34. package/fesm2022/daffodil-design-accordion-examples.mjs +10 -10
  35. package/fesm2022/daffodil-design-accordion-examples.mjs.map +1 -1
  36. package/fesm2022/daffodil-design-accordion.mjs +15 -15
  37. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  38. package/fesm2022/daffodil-design-article-examples.mjs +31 -31
  39. package/fesm2022/daffodil-design-article-examples.mjs.map +1 -1
  40. package/fesm2022/daffodil-design-article.mjs +12 -12
  41. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  42. package/fesm2022/daffodil-design-breadcrumb-examples.mjs +7 -7
  43. package/fesm2022/daffodil-design-breadcrumb-examples.mjs.map +1 -1
  44. package/fesm2022/daffodil-design-breadcrumb.mjs +12 -12
  45. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  46. package/fesm2022/daffodil-design-button-examples.mjs +34 -34
  47. package/fesm2022/daffodil-design-button-examples.mjs.map +1 -1
  48. package/fesm2022/daffodil-design-button.mjs +37 -61
  49. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  50. package/fesm2022/daffodil-design-callout-examples.mjs +13 -13
  51. package/fesm2022/daffodil-design-callout-examples.mjs.map +1 -1
  52. package/fesm2022/daffodil-design-callout.mjs +23 -23
  53. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  54. package/fesm2022/daffodil-design-card-examples.mjs +19 -19
  55. package/fesm2022/daffodil-design-card-examples.mjs.map +1 -1
  56. package/fesm2022/daffodil-design-card.mjs +35 -35
  57. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  58. package/fesm2022/daffodil-design-checkbox-examples.mjs +7 -7
  59. package/fesm2022/daffodil-design-checkbox-examples.mjs.map +1 -1
  60. package/fesm2022/daffodil-design-container-examples.mjs +4 -4
  61. package/fesm2022/daffodil-design-container-examples.mjs.map +1 -1
  62. package/fesm2022/daffodil-design-container.mjs +8 -8
  63. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  64. package/fesm2022/daffodil-design-hero-examples.mjs +13 -13
  65. package/fesm2022/daffodil-design-hero-examples.mjs.map +1 -1
  66. package/fesm2022/daffodil-design-hero.mjs +23 -23
  67. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  68. package/fesm2022/daffodil-design-image-examples.mjs +10 -10
  69. package/fesm2022/daffodil-design-image-examples.mjs.map +1 -1
  70. package/fesm2022/daffodil-design-image.mjs +9 -9
  71. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  72. package/fesm2022/daffodil-design-input-examples.mjs +42 -21
  73. package/fesm2022/daffodil-design-input-examples.mjs.map +1 -1
  74. package/fesm2022/daffodil-design-input.mjs +139 -0
  75. package/fesm2022/daffodil-design-input.mjs.map +1 -0
  76. package/fesm2022/daffodil-design-link-set.mjs +17 -17
  77. package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
  78. package/fesm2022/daffodil-design-list-examples.mjs +13 -13
  79. package/fesm2022/daffodil-design-list-examples.mjs.map +1 -1
  80. package/fesm2022/daffodil-design-list.mjs +12 -12
  81. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  82. package/fesm2022/daffodil-design-loading-icon-examples.mjs +4 -4
  83. package/fesm2022/daffodil-design-loading-icon-examples.mjs.map +1 -1
  84. package/fesm2022/daffodil-design-loading-icon.mjs +8 -8
  85. package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
  86. package/fesm2022/daffodil-design-media-gallery-examples.mjs +16 -16
  87. package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +1 -1
  88. package/fesm2022/daffodil-design-media-gallery.mjs +14 -21
  89. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  90. package/fesm2022/daffodil-design-menu-examples.mjs +7 -7
  91. package/fesm2022/daffodil-design-menu-examples.mjs.map +1 -1
  92. package/fesm2022/daffodil-design-menu.mjs +17 -17
  93. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  94. package/fesm2022/daffodil-design-modal-examples.mjs +7 -7
  95. package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
  96. package/fesm2022/daffodil-design-modal.mjs +28 -28
  97. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  98. package/fesm2022/daffodil-design-navbar-examples.mjs +13 -13
  99. package/fesm2022/daffodil-design-navbar-examples.mjs.map +1 -1
  100. package/fesm2022/daffodil-design-navbar.mjs +8 -8
  101. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  102. package/fesm2022/daffodil-design-notification-examples.mjs +16 -16
  103. package/fesm2022/daffodil-design-notification-examples.mjs.map +1 -1
  104. package/fesm2022/daffodil-design-notification.mjs +20 -20
  105. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  106. package/fesm2022/daffodil-design-paginator-examples.mjs +7 -7
  107. package/fesm2022/daffodil-design-paginator-examples.mjs.map +1 -1
  108. package/fesm2022/daffodil-design-paginator.mjs +8 -8
  109. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  110. package/fesm2022/daffodil-design-progress-bar-examples.mjs +10 -10
  111. package/fesm2022/daffodil-design-progress-bar-examples.mjs.map +1 -1
  112. package/fesm2022/daffodil-design-progress-bar.mjs +12 -12
  113. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  114. package/fesm2022/daffodil-design-quantity-field-examples.mjs +19 -18
  115. package/fesm2022/daffodil-design-quantity-field-examples.mjs.map +1 -1
  116. package/fesm2022/daffodil-design-quantity-field.mjs +355 -0
  117. package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -0
  118. package/fesm2022/daffodil-design-radio-examples.mjs +4 -4
  119. package/fesm2022/daffodil-design-radio-examples.mjs.map +1 -1
  120. package/fesm2022/daffodil-design-sidebar-examples.mjs +13 -13
  121. package/fesm2022/daffodil-design-sidebar-examples.mjs.map +1 -1
  122. package/fesm2022/daffodil-design-sidebar.mjs +27 -27
  123. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  124. package/fesm2022/daffodil-design-switch-examples.mjs +16 -16
  125. package/fesm2022/daffodil-design-switch-examples.mjs.map +1 -1
  126. package/fesm2022/daffodil-design-switch.mjs +4 -4
  127. package/fesm2022/daffodil-design-switch.mjs.map +1 -1
  128. package/fesm2022/daffodil-design-tabs-examples.mjs +16 -16
  129. package/fesm2022/daffodil-design-tabs-examples.mjs.map +1 -1
  130. package/fesm2022/daffodil-design-tabs.mjs +16 -16
  131. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  132. package/fesm2022/daffodil-design-text-snippet-examples.mjs +4 -4
  133. package/fesm2022/daffodil-design-text-snippet-examples.mjs.map +1 -1
  134. package/fesm2022/daffodil-design-text-snippet.mjs +4 -4
  135. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  136. package/fesm2022/daffodil-design-toast-examples.mjs +13 -72
  137. package/fesm2022/daffodil-design-toast-examples.mjs.map +1 -1
  138. package/fesm2022/daffodil-design-toast.mjs +73 -61
  139. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  140. package/fesm2022/daffodil-design-tree-examples.mjs +7 -7
  141. package/fesm2022/daffodil-design-tree-examples.mjs.map +1 -1
  142. package/fesm2022/daffodil-design-tree.mjs +11 -11
  143. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  144. package/fesm2022/daffodil-design-youtube-player.mjs +7 -7
  145. package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -1
  146. package/fesm2022/daffodil-design.mjs +477 -711
  147. package/fesm2022/daffodil-design.mjs.map +1 -1
  148. package/hero/src/hero-theme.scss +21 -23
  149. package/input/README.md +66 -0
  150. package/input/examples/input-hint-and-error/input-hint-and-error.component.d.ts +9 -0
  151. package/input/index.d.ts +1 -0
  152. package/{atoms/form/input → input}/input.component.d.ts +21 -5
  153. package/list/src/list-theme.scss +9 -11
  154. package/loading-icon/src/loading-icon-theme.scss +20 -22
  155. package/media-gallery/media-gallery/media-gallery.component.d.ts +0 -4
  156. package/media-gallery/src/media-gallery-theme.scss +10 -12
  157. package/menu/helpers/create-overlay.d.ts +1 -1
  158. package/menu/src/menu-theme.scss +10 -11
  159. package/modal/src/modal-theme.scss +2 -2
  160. package/navbar/src/navbar-theme.scss +18 -20
  161. package/notification/src/notification-theme.scss +44 -46
  162. package/package.json +1 -1
  163. package/paginator/src/paginator-theme.scss +9 -11
  164. package/progress-bar/src/progress-bar-theme.scss +18 -20
  165. package/public_api.d.ts +0 -2
  166. package/quantity-field/README.md +63 -0
  167. package/quantity-field/index.d.ts +1 -0
  168. package/quantity-field/public_api.d.ts +2 -0
  169. package/{atoms/form/quantity-field → quantity-field}/quantity-field.component.d.ts +3 -3
  170. package/quantity-field/quantity-field.module.d.ts +11 -0
  171. package/{atoms/form/quantity-field → quantity-field}/quantity-input/quantity-input.component.d.ts +2 -2
  172. package/{atoms/form/quantity-field → quantity-field}/quantity-select/quantity-select.component.d.ts +2 -2
  173. package/scss/state/skeleton/_mixins.scss +12 -10
  174. package/scss/theme.scss +0 -2
  175. package/scss/theming/_configure-theme.scss +16 -16
  176. package/scss/theming/_get-base-color.scss +19 -0
  177. package/scss/theming/_get-palette.scss +27 -0
  178. package/scss/theming/_get-theme-mode.scss +9 -0
  179. package/scss/theming/_index.scss +3 -0
  180. package/scss/theming/_light-dark.scss +4 -4
  181. package/scss/theming/_theme-css-variables.scss +20 -20
  182. package/scss/theming/contrast/luminance/luminance.scss +3 -3
  183. package/sidebar/src/sidebar-theme.scss +4 -5
  184. package/src/atoms/form/error-message/error-message-theme.scss +3 -4
  185. package/src/atoms/form/form-field/form-field/form-field-theme.scss +47 -31
  186. package/src/atoms/form/hint/hint-theme.scss +13 -8
  187. package/src/atoms/form/native-select/native-select-theme.scss +5 -7
  188. package/switch/src/switch-theme.scss +13 -15
  189. package/tabs/src/tabs-theme.scss +13 -15
  190. package/toast/README.md +21 -1
  191. package/toast/examples/public_api.d.ts +1 -2
  192. package/toast/helpers/toast-position.d.ts +8 -0
  193. package/toast/interfaces/toast-options.d.ts +19 -0
  194. package/toast/interfaces/toast.d.ts +1 -1
  195. package/toast/public_api.d.ts +2 -2
  196. package/toast/service/position-strategy.d.ts +1 -1
  197. package/toast/service/position.service.d.ts +1 -1
  198. package/toast/service/toast.service.d.ts +1 -1
  199. package/toast/src/toast-theme.scss +36 -38
  200. package/toast/toast/toast-provider.d.ts +16 -4
  201. package/toast/toast/toast-template.component.d.ts +1 -1
  202. package/tree/src/tree-theme.scss +20 -22
  203. package/atoms/form/quantity-field/public_api.d.ts +0 -4
  204. package/atoms/form/quantity-field/quantity-field.module.d.ts +0 -13
  205. package/core/skeletonable/skeletonable.d.ts +0 -6
  206. package/src/atoms/form/input/input-theme.scss +0 -12
  207. package/toast/examples/toast-positions/toast-positions.component.d.ts +0 -20
  208. package/toast/options/daff-toast-options.d.ts +0 -14
  209. /package/{atoms/form/input → input}/input.module.d.ts +0 -0
  210. /package/{atoms/form/input → input}/public_api.d.ts +0 -0
@@ -1,40 +1,40 @@
1
1
  @use 'sass:map';
2
2
  @use 'sass:color';
3
3
  @use '../core';
4
- @use '../theming';
4
+ @use '../theming' as *;
5
5
 
6
6
  // @docs
7
7
  //
8
8
  // Global theme tokens
9
9
  @mixin daff-root-theme-tokens($theme) {
10
- $base: core.daff-map-get($theme, 'core', 'base');
11
- $base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
12
- $primary: core.daff-map-get($theme, primary);
13
- $secondary: core.daff-map-get($theme, secondary);
14
- $tertiary: core.daff-map-get($theme, tertiary);
15
- $warn: core.daff-map-get($theme, warn);
16
- $success: core.daff-map-get($theme, success);
17
- $critical: core.daff-map-get($theme, critical);
18
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
19
- $white: core.daff-map-get($theme, 'core', 'white');
20
- $black: core.daff-map-get($theme, 'core', 'black');
10
+ $base: daff-get-base-color($theme, base);
11
+ $base-contrast: daff-get-base-color($theme, base-contrast);
12
+ $primary: daff-get-palette($theme, primary);
13
+ $secondary: daff-get-palette($theme, secondary);
14
+ $tertiary: daff-get-palette($theme, tertiary);
15
+ $warn: daff-get-palette($theme, warn);
16
+ $success: daff-get-palette($theme, success);
17
+ $critical: daff-get-palette($theme, critical);
18
+ $neutral: daff-get-palette($theme, neutral);
19
+ $white: daff-get-base-color($theme, 'white');
20
+ $black: daff-get-base-color($theme, 'black');
21
21
 
22
22
  --daff-theme-rgb: #{color.red($base), color.green($base), color.blue($base)};
23
23
  --daff-theme-contrast-rgb: #{color.red($base-contrast), color.green($base-contrast),
24
24
  color.blue($base-contrast)};
25
25
  --daff-theme: #{$base};
26
26
  --daff-theme-contrast: #{$base-contrast};
27
- --daff-theme-primary: #{theming.daff-color($primary)};
28
- --daff-theme-secondary: #{theming.daff-color($secondary)};
29
- --daff-theme-tertiary: #{theming.daff-color($tertiary)};
30
- --daff-theme-warn: #{theming.daff-color($warn)};
31
- --daff-theme-success: #{theming.daff-color($success)};
32
- --daff-theme-critical: #{theming.daff-color($critical)};
27
+ --daff-theme-primary: #{daff-color($primary)};
28
+ --daff-theme-secondary: #{daff-color($secondary)};
29
+ --daff-theme-tertiary: #{daff-color($tertiary)};
30
+ --daff-theme-warn: #{daff-color($warn)};
31
+ --daff-theme-success: #{daff-color($success)};
32
+ --daff-theme-critical: #{daff-color($critical)};
33
33
  --daff-theme-white: #{$white};
34
34
  --daff-theme-black: #{$black};
35
- --daff-theme-gray: #{theming.daff-color($neutral)};
35
+ --daff-theme-gray: #{daff-color($neutral)};
36
36
  --daff-base-bg: #{$base};
37
- --daff-base-text: #{theming.daff-text-contrast($base)};
37
+ --daff-base-text: #{daff-text-contrast($base)};
38
38
  }
39
39
 
40
40
  @mixin daff-theme-css-variables($theme) {
@@ -10,9 +10,9 @@
10
10
  // See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
11
11
 
12
12
  @function daff-luminance($color) {
13
- $red-index: color.red($color) + 1;
14
- $green-index: color.green($color) + 1;
15
- $blue-index: color.blue($color) + 1;
13
+ $red-index: color.channel($color, 'red') + 1;
14
+ $green-index: color.channel($color, 'green') + 1;
15
+ $blue-index: color.channel($color, 'blue') + 1;
16
16
 
17
17
  $red: list.nth(v.$linear-channel-values, $red-index);
18
18
  $green: list.nth(v.$linear-channel-values, $green-index);
@@ -1,13 +1,12 @@
1
- @use '../../scss/core';
1
+ @use '../../scss/theming' as *;
2
2
 
3
3
  @mixin daff-sidebar-theme($theme) {
4
- $base: core.daff-map-get($theme, 'core', 'base');
5
- $base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
6
- $font-color: core.daff-map-get($theme, 'core', 'font-color');
4
+ $base: daff-get-base-color($theme, base);
5
+ $base-contrast: daff-get-base-color($theme, base-contrast);
7
6
 
8
7
  .daff-sidebar {
9
8
  background: $base;
10
- color: $font-color;
9
+ color: $base-contrast;
11
10
  }
12
11
 
13
12
  .daff-sidebar-viewport {
@@ -1,10 +1,9 @@
1
- @use '../../../../scss/theming';
2
- @use '../../../../scss/core';
1
+ @use '../../../../scss/theming' as *;
3
2
 
4
3
  @mixin daff-error-message-theme($theme) {
5
- $critical: core.daff-map-get($theme, critical);
4
+ $critical: daff-get-palette($theme, critical);
6
5
 
7
6
  .daff-error-message {
8
- color: theming.daff-color($critical);
7
+ color: daff-color($critical);
9
8
  }
10
9
  }
@@ -1,48 +1,64 @@
1
- @use 'sass:map';
2
- @use '../../../../../scss/core';
3
- @use '../../../../../scss/theming';
1
+ @use '../../../../../scss/theming' as *;
4
2
 
5
3
  @mixin daff-form-field-theme($theme) {
6
- $primary: core.daff-map-get($theme, primary);
7
- $secondary: core.daff-map-get($theme, secondary);
8
- $tertiary: core.daff-map-get($theme, tertiary);
9
- $critical: core.daff-map-get($theme, critical);
10
- $base: core.daff-map-get($theme, 'core', 'base');
11
- $base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
12
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
13
- $type: core.daff-map-get($theme, 'core', 'type');
4
+ $primary: daff-get-palette($theme, primary);
5
+ $secondary: daff-get-palette($theme, secondary);
6
+ $tertiary: daff-get-palette($theme, tertiary);
7
+ $critical: daff-get-palette($theme, critical);
8
+ $base: daff-get-base-color($theme, base);
9
+ $base-contrast: daff-get-base-color($theme, base-contrast);
10
+ $neutral: daff-get-palette($theme, neutral);
11
+ $mode: daff-get-theme-mode($theme);
14
12
 
15
13
  .daff-form-field {
16
- &__control {
17
- background: $base;
18
-
19
- @include theming.light($type) {
20
- border: 1px solid theming.daff-color($neutral);
21
- color: theming.daff-color($neutral);
14
+ @include light($mode) {
15
+ .daff-form-field__control {
16
+ border: 1px solid daff-color($neutral);
17
+ color: daff-color($neutral);
22
18
  }
19
+ }
23
20
 
24
- @include theming.dark($type) {
25
- border: 1px solid theming.daff-color($neutral, 40);
26
- color: theming.daff-color($neutral, 40);
21
+ @include dark($mode) {
22
+ .daff-form-field__control {
23
+ border: 1px solid daff-color($neutral, 40);
24
+ color: daff-color($neutral, 40);
27
25
  }
26
+ }
28
27
 
29
- &.daff-focused {
30
- border: 1px solid theming.daff-color($primary);
28
+ &.daff-focused {
29
+ .daff-form-field__control {
30
+ border: 1px solid daff-color($primary);
31
+ }
31
32
 
32
- .daff-form-label {
33
- color: theming.daff-color($primary);
34
- }
33
+ .daff-form-label,
34
+ label,
35
+ .daff-form-field__label {
36
+ color: daff-color($primary);
35
37
  }
38
+ }
36
39
 
37
- &.daff-error {
38
- border: 1px solid theming.daff-color($critical);
40
+ &.daff-error {
41
+ .daff-form-field__control {
42
+ border: 1px solid daff-color($critical);
43
+ }
39
44
 
40
- .daff-form-label {
41
- color: theming.daff-color($critical);
42
- }
45
+ .daff-form-label,
46
+ label,
47
+ .daff-form-field__label {
48
+ color: daff-color($critical);
43
49
  }
50
+ }
51
+
52
+ &.daff-valid {
53
+ color: $base-contrast;
54
+ }
55
+
56
+ &__control {
57
+ background: $base;
44
58
 
45
- &.daff-valid {
59
+ input,
60
+ textarea,
61
+ select {
46
62
  color: $base-contrast;
47
63
  }
48
64
  }
@@ -1,17 +1,22 @@
1
- @use '../../../../scss/core';
2
- @use '../../../../scss/theming';
1
+ @use '../../../../scss/theming' as *;
3
2
 
3
+ // stylelint-disable selector-class-pattern
4
4
  @mixin daff-hint-theme($theme) {
5
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
6
- $type: core.daff-map-get($theme, 'core', 'type');
5
+ $neutral: daff-get-palette($theme, neutral);
6
+ $success: daff-get-palette($theme, success);
7
+ $mode: daff-get-theme-mode($theme);
7
8
 
8
9
  .daff-hint {
9
- @include theming.light($type) {
10
- color: theming.daff-color($neutral, 80);
10
+ @include light($mode) {
11
+ color: daff-color($neutral, 80);
11
12
  }
12
13
 
13
- @include theming.dark($type) {
14
- color: theming.daff-color($neutral, 30);
14
+ @include dark($mode) {
15
+ color: daff-color($neutral, 30);
16
+ }
17
+
18
+ &.validated {
19
+ color: daff-color($success);
15
20
  }
16
21
  }
17
22
  }
@@ -1,14 +1,12 @@
1
- @use 'sass:map';
2
- @use '../../../../scss/core';
3
- @use '../../../../scss/theming';
1
+ @use '../../../../scss/theming' as *;
4
2
 
5
3
  @mixin daff-native-select-theme($theme) {
6
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
7
- $base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
8
- $black: core.daff-map-get($theme, 'core', 'black');
4
+ $neutral: daff-get-palette($theme, neutral);
5
+ $base-contrast: daff-get-base-color($theme, base-contrast);
6
+ $black: daff-get-base-color($theme, 'black');
9
7
 
10
8
  .daff-native-select {
11
- color: theming.daff-illuminate($base-contrast, $neutral, 4);
9
+ color: daff-illuminate($base-contrast, $neutral, 4);
12
10
 
13
11
  // removes dotted border on in FF
14
12
  &:-moz-focusring {
@@ -1,26 +1,24 @@
1
- @use 'sass:map';
2
- @use '../../scss/core';
3
- @use '../../scss/theming';
1
+ @use '../../scss/theming' as *;
4
2
 
5
3
  @mixin daff-switch-theme($theme) {
6
- $primary: core.daff-map-get($theme, primary);
7
- $white: core.daff-map-get($theme, 'core', 'white');
8
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
9
- $type: core.daff-map-get($theme, 'core', 'type');
4
+ $primary: daff-get-palette($theme, primary);
5
+ $white: daff-get-base-color($theme, 'white');
6
+ $neutral: daff-get-palette($theme, neutral);
7
+ $mode: daff-get-theme-mode($theme);
10
8
 
11
9
  .daff-switch {
12
10
  &__toggle {
13
11
  border: 2px solid transparent;
14
12
 
15
13
  &.daff-checked {
16
- background-color: theming.daff-color($primary);
14
+ background-color: daff-color($primary);
17
15
  }
18
16
 
19
- @include theming.light($type) {
20
- background-color: theming.daff-color($neutral, 30);
17
+ @include light($mode) {
18
+ background-color: daff-color($neutral, 30);
21
19
 
22
20
  &:focus-within {
23
- border: 2px solid theming.daff-color($neutral, 20);
21
+ border: 2px solid daff-color($neutral, 20);
24
22
  }
25
23
 
26
24
  &::before {
@@ -28,15 +26,15 @@
28
26
  }
29
27
  }
30
28
 
31
- @include theming.dark($type) {
32
- background-color: theming.daff-color($neutral, 80);
29
+ @include dark($mode) {
30
+ background-color: daff-color($neutral, 80);
33
31
 
34
32
  &:focus-within {
35
- border: 2px solid theming.daff-color($neutral, 90);
33
+ border: 2px solid daff-color($neutral, 90);
36
34
  }
37
35
 
38
36
  &::before {
39
- background-color: theming.daff-color($neutral, 40);
37
+ background-color: daff-color($neutral, 40);
40
38
  }
41
39
 
42
40
  &.daff-checked {
@@ -1,47 +1,45 @@
1
- @use 'sass:map';
2
- @use '../../scss/core';
3
- @use '../../scss/theming';
1
+ @use '../../scss/theming' as *;
4
2
 
5
3
  @mixin daff-tabs-theme($theme) {
6
- $primary: core.daff-map-get($theme, primary);
7
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
8
- $base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
9
- $type: core.daff-map-get($theme, 'core', 'type');
4
+ $primary: daff-get-palette($theme, primary);
5
+ $neutral: daff-get-palette($theme, neutral);
6
+ $base-contrast: daff-get-base-color($theme, base-contrast);
7
+ $mode: daff-get-theme-mode($theme);
10
8
 
11
- @include theming.light($type) {
9
+ @include light($mode) {
12
10
  .daff-tabs {
13
11
  &__tab-list {
14
12
  &::after {
15
- background: theming.daff-color($neutral, 20);
13
+ background: daff-color($neutral, 20);
16
14
  }
17
15
  }
18
16
  }
19
17
 
20
18
  .daff-tab-activator {
21
- border-bottom: 2px solid theming.daff-color($neutral, 20);
19
+ border-bottom: 2px solid daff-color($neutral, 20);
22
20
  color: $base-contrast;
23
21
 
24
22
  &.daff-selected {
25
- border-bottom: 2px solid theming.daff-color($primary);
23
+ border-bottom: 2px solid daff-color($primary);
26
24
  }
27
25
  }
28
26
  }
29
27
 
30
- @include theming.dark($type) {
28
+ @include dark($mode) {
31
29
  .daff-tabs {
32
30
  &__tab-list {
33
31
  &::after {
34
- background: theming.daff-color($neutral, 80);
32
+ background: daff-color($neutral, 80);
35
33
  }
36
34
  }
37
35
  }
38
36
 
39
37
  .daff-tab-activator {
40
- border-bottom: 2px solid theming.daff-color($neutral, 80);
38
+ border-bottom: 2px solid daff-color($neutral, 80);
41
39
  color: $base-contrast;
42
40
 
43
41
  &.daff-selected {
44
- border-bottom: 2px solid theming.daff-color($primary);
42
+ border-bottom: 2px solid daff-color($primary);
45
43
  }
46
44
  }
47
45
  }
package/toast/README.md CHANGED
@@ -8,7 +8,7 @@ Toasts should be used to display temporary messages about actions or events that
8
8
  <design-land-example-viewer-container example="default-toast"></design-land-example-viewer-container>
9
9
 
10
10
  ## Setting up the component
11
- `provideDaffToast()` must be added as a provider in your application's root component for global use or in a specific feature component for the toast functionality to work properly.
11
+ `provideDaffToast()` must be added as a provider in your application's root component for the toast to work properly.
12
12
 
13
13
  ```ts
14
14
  import { provideDaffToast } from '@daffodil/design/toast';
@@ -47,6 +47,26 @@ You can set the status of a toast when opening it with `DaffToastService`, using
47
47
 
48
48
  <design-land-example-viewer-container example="toast-status"></design-land-example-viewer-container>
49
49
 
50
+ ## Positions
51
+ Toasts are displayed in the top-right corner of the screen by default on desktop devices.
52
+
53
+ You can customize the position of toast notifications by configuring the `position` property in the `provideDaffToast` provider.
54
+
55
+ To customize toast positions, configure the `position` property in the `provideDaffToast` provider of your root component:
56
+
57
+ ```ts
58
+ providers: [
59
+ provideDaffToast({
60
+ position: {
61
+ vertical: 'bottom',
62
+ horizontal: 'right',
63
+ },
64
+ }),
65
+ ],
66
+ ```
67
+
68
+ > Note: On mobile devices, toasts will always appear in the bottom-center position, regardless of configuration settings.
69
+
50
70
  ## Accessibility
51
71
  By default, toasts use a `role="status"` to announce messages. It's the equivalent of `aria-live="polite"`, which does not interrupt a user's current activity and waits until they are idle to make the announcement.
52
72
 
@@ -1,6 +1,5 @@
1
1
  import { DefaultToastComponent } from './default-toast/default-toast.component';
2
2
  import { DismissibleToastComponent } from './dismissible-toast/dismissible-toast.component';
3
- import { ToastPositionsComponent } from './toast-positions/toast-positions.component';
4
3
  import { ToastStatusComponent } from './toast-status/toast-status.component';
5
4
  import { ToastWithCustomDurationComponent } from './toast-with-custom-duration/toast-with-custom-duration.component';
6
- export declare const TOAST_EXAMPLES: (typeof DefaultToastComponent | typeof DismissibleToastComponent | typeof ToastPositionsComponent | typeof ToastStatusComponent | typeof ToastWithCustomDurationComponent)[];
5
+ export declare const TOAST_EXAMPLES: (typeof DefaultToastComponent | typeof DismissibleToastComponent | typeof ToastStatusComponent | typeof ToastWithCustomDurationComponent)[];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The available vertical positions for toasts.
3
+ */
4
+ export type DaffToastVerticalPosition = 'top' | 'bottom';
5
+ /**
6
+ * The available horizontal positions for toasts.
7
+ */
8
+ export type DaffToastHorizontalPosition = 'left' | 'center' | 'right';
@@ -0,0 +1,19 @@
1
+ import { DaffToastHorizontalPosition, DaffToastVerticalPosition } from '../helpers/toast-position';
2
+ export interface DaffToastVerticalPositionInterface {
3
+ vertical: DaffToastVerticalPosition;
4
+ }
5
+ export interface DaffToastHorizontalPositionInterface {
6
+ horizontal: DaffToastHorizontalPosition;
7
+ }
8
+ export type DaffToastPosition = DaffToastVerticalPositionInterface & DaffToastHorizontalPositionInterface;
9
+ export interface DaffToastOptions {
10
+ /**
11
+ * The position of all toasts.
12
+ */
13
+ position: DaffToastPosition;
14
+ /** @docs-private */
15
+ useParent?: boolean;
16
+ }
17
+ export declare const daffToastDefaultOptions: DaffToastOptions;
18
+ export declare const provideDaffToastOptions: <R extends DaffToastOptions = DaffToastOptions>(config: Partial<R> | import("@angular/core").InjectionToken<Partial<R>>) => import("@angular/core").FactoryProvider;
19
+ export declare const DAFF_TOAST_OPTIONS: import("@angular/core").InjectionToken<DaffToastOptions>;
@@ -22,5 +22,5 @@ export interface DaffToast extends DaffToastData {
22
22
  /**
23
23
  * The observable that emits when the toast is closed.
24
24
  */
25
- dismissalStream: Observable<void | number>;
25
+ dismissalStream: Observable<void>;
26
26
  }
@@ -1,8 +1,8 @@
1
- export { DaffToastPositionService } from './service/position.service';
2
1
  export { DaffToastService } from './service/toast.service';
3
2
  export { DaffToastConfiguration } from './toast/toast-config';
4
3
  export { DaffToast, DaffToastData, } from './interfaces/toast';
5
4
  export { DaffToastAction } from './interfaces/toast-action';
6
- export { DAFF_TOAST_OPTIONS, provideDaffToastOptions, } from './options/daff-toast-options';
7
5
  export { provideDaffToast } from './toast/toast-provider';
8
6
  export { DaffToastActionButtonSize, DaffToastActionButtonType, } from './interfaces/toast-action.type';
7
+ export { DaffToastOptions, DaffToastPosition, } from './interfaces/toast-options';
8
+ export { DaffToastVerticalPosition, DaffToastHorizontalPosition, } from './helpers/toast-position';
@@ -1,3 +1,3 @@
1
1
  import { PositionStrategy } from '@angular/cdk/overlay';
2
- import { DaffToastPosition } from '../options/daff-toast-options';
2
+ import { DaffToastPosition } from '../interfaces/toast-options';
3
3
  export declare const createPositionStrategy: (position: DaffToastPosition) => PositionStrategy;
@@ -1,5 +1,5 @@
1
1
  import { BreakpointObserver } from '@angular/cdk/layout';
2
- import { DaffToastOptions, DaffToastPosition } from '../options/daff-toast-options';
2
+ import { DaffToastOptions, DaffToastPosition } from '../interfaces/toast-options';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class DaffToastPositionService {
5
5
  private options;
@@ -4,7 +4,7 @@ import { Injector, OnDestroy } from '@angular/core';
4
4
  import { DaffFocusStackService } from '@daffodil/design';
5
5
  import { DaffToastPositionService } from './position.service';
6
6
  import { DaffToast, DaffToastData } from '../interfaces/toast';
7
- import { DaffToastOptions } from '../options/daff-toast-options';
7
+ import { DaffToastOptions } from '../interfaces/toast-options';
8
8
  import { DaffToastConfiguration } from '../toast/toast-config';
9
9
  import * as i0 from "@angular/core";
10
10
  /**
@@ -1,112 +1,110 @@
1
- @use 'sass:map';
2
- @use '../../scss/core';
3
- @use '../../scss/theming';
1
+ @use '../../scss/theming' as *;
4
2
 
5
3
  @mixin daff-toast-theme($theme) {
6
- $info: core.daff-map-get($theme, informational);
7
- $warn: core.daff-map-get($theme, warn);
8
- $critical: core.daff-map-get($theme, critical);
9
- $success: core.daff-map-get($theme, success);
10
- $neutral: core.daff-map-get($theme, 'core', 'neutral');
11
- $base: core.daff-map-get($theme, 'core', 'base');
12
- $black: core.daff-map-get($theme, 'core', 'black');
13
- $white: core.daff-map-get($theme, 'core', 'white');
14
- $type: core.daff-map-get($theme, 'core', 'type');
4
+ $info: daff-get-palette($theme, informational);
5
+ $warn: daff-get-palette($theme, warn);
6
+ $critical: daff-get-palette($theme, critical);
7
+ $success: daff-get-palette($theme, success);
8
+ $neutral: daff-get-palette($theme, neutral);
9
+ $base: daff-get-base-color($theme, base);
10
+ $black: daff-get-base-color($theme, 'black');
11
+ $white: daff-get-base-color($theme, 'white');
12
+ $mode: daff-get-theme-mode($theme);
15
13
 
16
14
  .daff-toast {
17
- @include theming.light($type) {
18
- background: theming.daff-color($neutral, 10);
15
+ @include light($mode) {
16
+ background: daff-color($neutral, 10);
19
17
  box-shadow: 0 -16px 24px -4px rgba($black, 0.04),
20
18
  0 8px 24px -4px rgba($black, 0.1);
21
- color: theming.daff-text-contrast($base);
19
+ color: daff-text-contrast($base);
22
20
 
23
21
  &::before {
24
- background: theming.daff-color($neutral, 40);
22
+ background: daff-color($neutral, 40);
25
23
  }
26
24
 
27
25
  &.daff-success {
28
- background: theming.daff-color($success, 10);
26
+ background: daff-color($success, 10);
29
27
  color: $black;
30
28
 
31
29
  .daff-prefix {
32
- color: theming.daff-color($success);
30
+ color: daff-color($success);
33
31
  }
34
32
 
35
33
  &::before {
36
- background: theming.daff-color($success);
34
+ background: daff-color($success);
37
35
  }
38
36
  }
39
37
 
40
38
  &.daff-warn {
41
- background: theming.daff-color($warn, 10);
39
+ background: daff-color($warn, 10);
42
40
  color: $black;
43
41
 
44
42
  .daff-prefix {
45
- color: theming.daff-color($warn);
43
+ color: daff-color($warn);
46
44
  }
47
45
 
48
46
  &::before {
49
- background: theming.daff-color($warn);
47
+ background: daff-color($warn);
50
48
  }
51
49
  }
52
50
 
53
51
  &.daff-critical {
54
- background: theming.daff-color($critical, 10);
52
+ background: daff-color($critical, 10);
55
53
  color: $black;
56
54
 
57
55
  .daff-prefix {
58
- color: theming.daff-color($critical);
56
+ color: daff-color($critical);
59
57
  }
60
58
 
61
59
  &::before {
62
- background: theming.daff-color($critical);
60
+ background: daff-color($critical);
63
61
  }
64
62
  }
65
63
  }
66
64
 
67
- @include theming.dark($type) {
68
- background: theming.daff-color($neutral, 90);
65
+ @include dark($mode) {
66
+ background: daff-color($neutral, 90);
69
67
  box-shadow: 0 -16px 24px -4px rgba($black, 0.04),
70
68
  0 8px 24px -4px rgba($black, 0.1);
71
- color: theming.daff-text-contrast($base);
69
+ color: daff-text-contrast($base);
72
70
 
73
71
  &::before {
74
- background: theming.daff-color($neutral, 30);
72
+ background: daff-color($neutral, 30);
75
73
  }
76
74
 
77
75
  &.daff-success {
78
- background: theming.daff-color($success, 90);
76
+ background: daff-color($success, 90);
79
77
 
80
78
  .daff-prefix {
81
- color: theming.daff-color($success, 30);
79
+ color: daff-color($success, 30);
82
80
  }
83
81
 
84
82
  &::before {
85
- background: theming.daff-color($success, 30);
83
+ background: daff-color($success, 30);
86
84
  }
87
85
  }
88
86
 
89
87
  &.daff-warn {
90
- background: theming.daff-color($warn, 90);
88
+ background: daff-color($warn, 90);
91
89
 
92
90
  .daff-prefix {
93
- color: theming.daff-color($warn, 30);
91
+ color: daff-color($warn, 30);
94
92
  }
95
93
 
96
94
  &::before {
97
- background: theming.daff-color($warn, 30);
95
+ background: daff-color($warn, 30);
98
96
  }
99
97
  }
100
98
 
101
99
  &.daff-critical {
102
- background: theming.daff-color($critical, 90);
100
+ background: daff-color($critical, 90);
103
101
 
104
102
  .daff-prefix {
105
- color: theming.daff-color($critical, 30);
103
+ color: daff-color($critical, 30);
106
104
  }
107
105
 
108
106
  &::before {
109
- background: theming.daff-color($critical, 30);
107
+ background: daff-color($critical, 30);
110
108
  }
111
109
  }
112
110
  }