@design-factory/styles 21.0.0-next.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 (242) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +13 -0
  3. package/assets/fonts/amadeus-bold/amadeus-bold.woff +0 -0
  4. package/assets/fonts/amadeus-bold/amadeus-bold.woff2 +0 -0
  5. package/assets/fonts/amadeus-full/amadeus-full-bold.woff +0 -0
  6. package/assets/fonts/amadeus-full/amadeus-full-bold.woff2 +0 -0
  7. package/assets/fonts/amadeus-full/amadeus-full-bolditalic.woff +0 -0
  8. package/assets/fonts/amadeus-full/amadeus-full-bolditalic.woff2 +0 -0
  9. package/assets/fonts/amadeus-full/amadeus-full-italic.woff +0 -0
  10. package/assets/fonts/amadeus-full/amadeus-full-italic.woff2 +0 -0
  11. package/assets/fonts/amadeus-full/amadeus-full-light.woff +0 -0
  12. package/assets/fonts/amadeus-full/amadeus-full-light.woff2 +0 -0
  13. package/assets/fonts/amadeus-full/amadeus-full-lightitalic.woff +0 -0
  14. package/assets/fonts/amadeus-full/amadeus-full-lightitalic.woff2 +0 -0
  15. package/assets/fonts/amadeus-full/amadeus-full-regular.woff +0 -0
  16. package/assets/fonts/amadeus-full/amadeus-full-regular.woff2 +0 -0
  17. package/assets/fonts/amadeus-full/amadeus-full-thin.woff +0 -0
  18. package/assets/fonts/amadeus-full/amadeus-full-thin.woff2 +0 -0
  19. package/assets/fonts/amadeus-full/amadeus-full-thinitalic.woff +0 -0
  20. package/assets/fonts/amadeus-full/amadeus-full-thinitalic.woff2 +0 -0
  21. package/assets/fonts/amadeus-neue/bold/AmadeusNeueWeb-Bold.woff +0 -0
  22. package/assets/fonts/amadeus-neue/bold/AmadeusNeueWeb-Bold.woff2 +0 -0
  23. package/assets/fonts/amadeus-neue/bold/AmadeusNeueWeb-BoldItalic.woff +0 -0
  24. package/assets/fonts/amadeus-neue/bold/AmadeusNeueWeb-BoldItalic.woff2 +0 -0
  25. package/assets/fonts/amadeus-neue/light/AmadeusNeueWeb-Light.woff +0 -0
  26. package/assets/fonts/amadeus-neue/light/AmadeusNeueWeb-Light.woff2 +0 -0
  27. package/assets/fonts/amadeus-neue/light/AmadeusNeueWeb-LightItalic.woff +0 -0
  28. package/assets/fonts/amadeus-neue/light/AmadeusNeueWeb-LightItalic.woff2 +0 -0
  29. package/assets/fonts/amadeus-neue/medium/AmadeusNeueWeb-Medium.woff +0 -0
  30. package/assets/fonts/amadeus-neue/medium/AmadeusNeueWeb-Medium.woff2 +0 -0
  31. package/assets/fonts/amadeus-neue/medium/AmadeusNeueWeb-MediumItalic.woff +0 -0
  32. package/assets/fonts/amadeus-neue/medium/AmadeusNeueWeb-MediumItalic.woff2 +0 -0
  33. package/assets/fonts/amadeus-neue/regular/AmadeusNeueWeb-Regular.woff +0 -0
  34. package/assets/fonts/amadeus-neue/regular/AmadeusNeueWeb-Regular.woff2 +0 -0
  35. package/assets/fonts/amadeus-neue/regular/AmadeusNeueWeb-RegularItalic.woff +0 -0
  36. package/assets/fonts/amadeus-neue/regular/AmadeusNeueWeb-RegularItalic.woff2 +0 -0
  37. package/assets/fonts/amadeus-regular/amadeus-regular.woff +0 -0
  38. package/assets/fonts/amadeus-regular/amadeus-regular.woff2 +0 -0
  39. package/assets/fonts/amadeus-thin/amadeus-thin.woff +0 -0
  40. package/assets/fonts/amadeus-thin/amadeus-thin.woff2 +0 -0
  41. package/assets/fonts/df-icons/df-icons-light.woff2 +0 -0
  42. package/assets/fonts/df-icons/df-icons-solid.woff2 +0 -0
  43. package/assets/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  44. package/assets/fonts/font-awesome/fa-light-300.woff2 +0 -0
  45. package/assets/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  46. package/assets/fonts/noto/notosans-bold.woff +0 -0
  47. package/assets/fonts/noto/notosans-bold.woff2 +0 -0
  48. package/assets/fonts/noto/notosans-bolditalic.woff +0 -0
  49. package/assets/fonts/noto/notosans-bolditalic.woff2 +0 -0
  50. package/assets/fonts/noto/notosans-italic.woff +0 -0
  51. package/assets/fonts/noto/notosans-italic.woff2 +0 -0
  52. package/assets/fonts/noto/notosans-light.woff +0 -0
  53. package/assets/fonts/noto/notosans-light.woff2 +0 -0
  54. package/assets/fonts/noto/notosans-lightitalic.woff +0 -0
  55. package/assets/fonts/noto/notosans-lightitalic.woff2 +0 -0
  56. package/assets/fonts/noto/notosans-regular.woff +0 -0
  57. package/assets/fonts/noto/notosans-regular.woff2 +0 -0
  58. package/assets/fonts/noto/notosans-thin.woff +0 -0
  59. package/assets/fonts/noto/notosans-thin.woff2 +0 -0
  60. package/assets/fonts/noto/notosans-thinitalic.woff +0 -0
  61. package/assets/fonts/noto/notosans-thinitalic.woff2 +0 -0
  62. package/assets/fonts/noto/notosansarabic-bold.woff +0 -0
  63. package/assets/fonts/noto/notosansarabic-bold.woff2 +0 -0
  64. package/assets/fonts/noto/notosansarabic-light.woff +0 -0
  65. package/assets/fonts/noto/notosansarabic-light.woff2 +0 -0
  66. package/assets/fonts/noto/notosansarabic-regular.woff +0 -0
  67. package/assets/fonts/noto/notosansarabic-regular.woff2 +0 -0
  68. package/assets/fonts/noto/notosansarabic-thin.woff +0 -0
  69. package/assets/fonts/noto/notosansarabic-thin.woff2 +0 -0
  70. package/assets/fonts/noto/notosansgeorgian-bold.woff +0 -0
  71. package/assets/fonts/noto/notosansgeorgian-bold.woff2 +0 -0
  72. package/assets/fonts/noto/notosansgeorgian-light.woff +0 -0
  73. package/assets/fonts/noto/notosansgeorgian-light.woff2 +0 -0
  74. package/assets/fonts/noto/notosansgeorgian-regular.woff +0 -0
  75. package/assets/fonts/noto/notosansgeorgian-regular.woff2 +0 -0
  76. package/assets/fonts/noto/notosansgeorgian-thin.woff +0 -0
  77. package/assets/fonts/noto/notosansgeorgian-thin.woff2 +0 -0
  78. package/assets/fonts/noto/notosanshebrew-bold.woff +0 -0
  79. package/assets/fonts/noto/notosanshebrew-bold.woff2 +0 -0
  80. package/assets/fonts/noto/notosanshebrew-light.woff +0 -0
  81. package/assets/fonts/noto/notosanshebrew-light.woff2 +0 -0
  82. package/assets/fonts/noto/notosanshebrew-regular.woff +0 -0
  83. package/assets/fonts/noto/notosanshebrew-regular.woff2 +0 -0
  84. package/assets/fonts/noto/notosanshebrew-thin.woff +0 -0
  85. package/assets/fonts/noto/notosanshebrew-thin.woff2 +0 -0
  86. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.woff +0 -0
  87. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.woff2 +0 -0
  88. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bold.woff +0 -0
  89. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bold.woff2 +0 -0
  90. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bolditalic.woff +0 -0
  91. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bolditalic.woff2 +0 -0
  92. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-italic.woff +0 -0
  93. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-italic.woff2 +0 -0
  94. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-light.woff +0 -0
  95. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-light.woff2 +0 -0
  96. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-lightitalic.woff +0 -0
  97. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-lightitalic.woff2 +0 -0
  98. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-regular.woff +0 -0
  99. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-regular.woff2 +0 -0
  100. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.woff +0 -0
  101. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.woff2 +0 -0
  102. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.woff +0 -0
  103. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.woff2 +0 -0
  104. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.woff +0 -0
  105. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.woff2 +0 -0
  106. package/bundle.css +13 -0
  107. package/package.json +31 -0
  108. package/scss/_common.mixins.scss +30 -0
  109. package/scss/_common.root.scss +36 -0
  110. package/scss/_common.scss +50 -0
  111. package/scss/_common.variables.scss +62 -0
  112. package/scss/_new-brand-common.variables.scss +7 -0
  113. package/scss/_variables.scss +46 -0
  114. package/scss/agnosui/_variables.scss +33 -0
  115. package/scss/bootstrap/_helpers.scss +12 -0
  116. package/scss/bootstrap/_maps.scss +68 -0
  117. package/scss/bootstrap/_mixins-override.scss +69 -0
  118. package/scss/bootstrap/_rtl-styles-override.scss +111 -0
  119. package/scss/bootstrap/_utilities-override.scss +127 -0
  120. package/scss/bootstrap/_variables-dark.scss +86 -0
  121. package/scss/bootstrap/_variables.scss +1118 -0
  122. package/scss/bootstrap/helpers/_color-bg.scss +14 -0
  123. package/scss/bundle.scss +120 -0
  124. package/scss/components/accordion/_accordion.mixin.scss +94 -0
  125. package/scss/components/accordion/_accordion.scss +201 -0
  126. package/scss/components/accordion/_accordion.variables.scss +14 -0
  127. package/scss/components/alert/_alert.mixin.scss +64 -0
  128. package/scss/components/alert/_alert.scss +142 -0
  129. package/scss/components/alert/_alert.variables.scss +3 -0
  130. package/scss/components/badge/_badge.mixins.scss +9 -0
  131. package/scss/components/badge/_badge.scss +250 -0
  132. package/scss/components/badge/_badge.variables.scss +4 -0
  133. package/scss/components/brand-color/_brand-color.mixins.scss +17 -0
  134. package/scss/components/brand-color/_brand-color.scss +13 -0
  135. package/scss/components/brand-color/_brand-color.variables.scss +146 -0
  136. package/scss/components/brand-color/_brand-color_container.scss +23 -0
  137. package/scss/components/breadcrumbs/_breadcrumbs.scss +110 -0
  138. package/scss/components/breadcrumbs/_breadcrumbs.variables.scss +7 -0
  139. package/scss/components/button/_button.mixins.scss +144 -0
  140. package/scss/components/button/_button.scss +178 -0
  141. package/scss/components/button/_button.variables.scss +8 -0
  142. package/scss/components/button/_button_container.scss +47 -0
  143. package/scss/components/card/_card.scss +167 -0
  144. package/scss/components/card/_card.variables.scss +12 -0
  145. package/scss/components/carousel/_carousel.scss +83 -0
  146. package/scss/components/carousel/_carousel.variables.scss +3 -0
  147. package/scss/components/checkbox/_checkbox.scss +155 -0
  148. package/scss/components/checkbox/_checkbox.variables.scss +23 -0
  149. package/scss/components/collapse/_collapse.scss +48 -0
  150. package/scss/components/datepicker/_datepicker.scss +223 -0
  151. package/scss/components/drawer/_drawer.scss +120 -0
  152. package/scss/components/dropdown/_dropdown.mixins.scss +24 -0
  153. package/scss/components/dropdown/_dropdown.scss +129 -0
  154. package/scss/components/dropdown/_dropdown.variables.scss +15 -0
  155. package/scss/components/fieldset/_fieldset.variables.scss +2 -0
  156. package/scss/components/fonts/_font-awesome-icons-brands.scss +1585 -0
  157. package/scss/components/fonts/_font-awesome-icons.scss +12886 -0
  158. package/scss/components/fonts/_font-faces.mixins.scss +579 -0
  159. package/scss/components/fonts/_fonts-family.scss +195 -0
  160. package/scss/components/fonts/_fonts.scss +50 -0
  161. package/scss/components/fonts/_fonts.variables.scss +68 -0
  162. package/scss/components/fonts/_icon-font.scss +97 -0
  163. package/scss/components/fonts/_multi-lang.mixins.scss +8 -0
  164. package/scss/components/fonts/multi-lang/_arabic.mixins.scss +9 -0
  165. package/scss/components/fonts/multi-lang/_chinese.mixins.scss +14 -0
  166. package/scss/components/fonts/multi-lang/_cyrillic-extended.mixins.scss +11 -0
  167. package/scss/components/fonts/multi-lang/_cyrillic.mixins.scss +10 -0
  168. package/scss/components/fonts/multi-lang/_georgian.mixins.scss +9 -0
  169. package/scss/components/fonts/multi-lang/_hebrew.mixins.scss +9 -0
  170. package/scss/components/fonts/multi-lang/_japanese.mixins.scss +25 -0
  171. package/scss/components/fonts/multi-lang/_korean.mixins.scss +12 -0
  172. package/scss/components/footer/_footer.mixins.scss +36 -0
  173. package/scss/components/footer/_footer.scss +49 -0
  174. package/scss/components/form/_form.scss +101 -0
  175. package/scss/components/form/_form.variables.scss +48 -0
  176. package/scss/components/icon/_amadeus-icon.scss +29 -0
  177. package/scss/components/image/_image.variables.scss +2 -0
  178. package/scss/components/inputs/_inputs.mixin.scss +45 -0
  179. package/scss/components/inputs/_inputs.scss +254 -0
  180. package/scss/components/inputs/_inputs.variables.scss +20 -0
  181. package/scss/components/link/_link.scss +150 -0
  182. package/scss/components/link/_link.variables.scss +5 -0
  183. package/scss/components/list/_list.scss +17 -0
  184. package/scss/components/list-group/_list-group.scss +81 -0
  185. package/scss/components/list-group/_list-group.variables.scss +21 -0
  186. package/scss/components/media/_media.scss +27 -0
  187. package/scss/components/modal/_modal.scss +154 -0
  188. package/scss/components/modal/_modal.variables.scss +13 -0
  189. package/scss/components/navbar/_navbar.mixins.scss +46 -0
  190. package/scss/components/navbar/_navbar.scss +287 -0
  191. package/scss/components/navbar/_navbar.variables.scss +14 -0
  192. package/scss/components/pagination/_pagination.mixins.scss +30 -0
  193. package/scss/components/pagination/_pagination.scss +189 -0
  194. package/scss/components/pagination/_pagination.variables.scss +20 -0
  195. package/scss/components/pagination/_pagination_container.scss +17 -0
  196. package/scss/components/popover/_popover.mixins.scss +13 -0
  197. package/scss/components/popover/_popover.scss +65 -0
  198. package/scss/components/popover/_popover.variables.scss +17 -0
  199. package/scss/components/popover/_popover_container.scss +214 -0
  200. package/scss/components/progressbar/_progressbar.scss +52 -0
  201. package/scss/components/progressbar/_progressbar.variables.scss +6 -0
  202. package/scss/components/radio/_radio.scss +63 -0
  203. package/scss/components/rating/_rating.mixins.scss +17 -0
  204. package/scss/components/rating/_rating.scss +51 -0
  205. package/scss/components/scrollspy/_scrollspy.scss +42 -0
  206. package/scss/components/select/_select.mixin.scss +7 -0
  207. package/scss/components/select/_select.scss +531 -0
  208. package/scss/components/select/_select.variables.scss +18 -0
  209. package/scss/components/separator/_separator.scss +8 -0
  210. package/scss/components/separator/_separator.variables.scss +5 -0
  211. package/scss/components/sidenav/_sidenav-deprecated.scss +165 -0
  212. package/scss/components/sidenav/_sidenav.scss +227 -0
  213. package/scss/components/slider/_slider.mixins.scss +82 -0
  214. package/scss/components/slider/_slider.scss +402 -0
  215. package/scss/components/speechbubble/_speechbubble.mixin.scss +28 -0
  216. package/scss/components/speechbubble/_speechbubble.scss +107 -0
  217. package/scss/components/spinner/_spinner.scss +68 -0
  218. package/scss/components/spinner/_spinner.variables.scss +5 -0
  219. package/scss/components/spinner/_spinner_container.scss +43 -0
  220. package/scss/components/stepper/_stepper.mixins.scss +22 -0
  221. package/scss/components/stepper/_stepper.scss +176 -0
  222. package/scss/components/table/_advancedtables.scss +285 -0
  223. package/scss/components/table/_table.scss +19 -0
  224. package/scss/components/table/_table.variables.scss +20 -0
  225. package/scss/components/tabs/_tabs.scss +163 -0
  226. package/scss/components/tabs/_tabs.variables.scss +19 -0
  227. package/scss/components/timepicker/_timepicker.scss +9 -0
  228. package/scss/components/toast/_toast.scss +79 -0
  229. package/scss/components/toast/_toast.variables.scss +7 -0
  230. package/scss/components/toggle/_toggle.scss +140 -0
  231. package/scss/components/toggle/_toggle.variables.scss +10 -0
  232. package/scss/components/tooltip/_tooltip.scss +24 -0
  233. package/scss/components/tooltip/_tooltip.variables.scss +7 -0
  234. package/scss/components/tooltip/_tooltip_container.scss +116 -0
  235. package/scss/components/typeahead/_typeahead.scss +44 -0
  236. package/scss/components/waves/waves.scss +19 -0
  237. package/scss/namespace.scss +160 -0
  238. package/scss/themes/brand2023/_variables.scss +315 -0
  239. package/scss/utilities/_common.utilities.scss +98 -0
  240. package/scss/utilities/_form.mixins.scss +26 -0
  241. package/scss/utilities/_rgb.scss +10 -0
  242. package/scss/utilities.scss +5 -0
@@ -0,0 +1,51 @@
1
+ @use '../../new-brand-common.variables.scss' as df;
2
+ @use 'rating.mixins' as rating-mixins;
3
+
4
+ // flag angular
5
+ // stylelint-disable-next-line selector-type-no-unknown
6
+ ngb-rating {
7
+ // the spacing-3 is not in Figma but just looks better
8
+ margin: var(--df-spacing-2) var(--df-spacing-3);
9
+ // fixed value in Figma, not in design tokens
10
+ border-radius: 2px;
11
+ gap: var(--df-spacing-2);
12
+ line-height: 1.25;
13
+
14
+ @include transition(box-shadow 0.15s ease-in-out);
15
+
16
+ &:not([aria-disabled='true']):focus-visible {
17
+ outline: none;
18
+ box-shadow: #{df.$df-focus-box-shadow};
19
+ }
20
+
21
+ @include rating-mixins.rating-color('primary');
22
+
23
+ &[aria-disabled='true'] {
24
+ color: var(--df-color-disabled-main-foreground);
25
+ cursor: not-allowed;
26
+
27
+ span {
28
+ cursor: not-allowed !important;
29
+ }
30
+ }
31
+
32
+ &.ng-invalid {
33
+ @include rating-mixins.rating-color('danger');
34
+ }
35
+
36
+ .df-rating-decimal {
37
+ position: relative;
38
+ display: inline-block;
39
+
40
+ .df-rating-decimal-half {
41
+ inset-inline-start: 0;
42
+ position: absolute;
43
+ display: inline-block;
44
+ overflow: hidden;
45
+ }
46
+ }
47
+
48
+ .df-rating-tiny {
49
+ color: var(--df-color-neutral-alt-default-foreground);
50
+ }
51
+ }
@@ -0,0 +1,42 @@
1
+ @use '../../new-brand-common.variables' as df;
2
+
3
+ // All bootstrap sass var overrides are found in the file _tabs.variables.scss
4
+
5
+ // Todo should we wrap this into a class specific for scrollspy ?
6
+ .nav.nav-pills .nav-link {
7
+ --df-inner-box-shadow-color: var(--df-color-neutral-alt-default-background);
8
+
9
+ padding-inline-start: var(--df-spacing-3);
10
+ padding-top: 0.28125rem; // 4.5px not a token in Figma
11
+ padding-bottom: 0.28125rem; // 4.5px not a token in Figma
12
+ margin-block-end: 1px;
13
+ font-size: var(--df-typo-sizing-small);
14
+ display: flex;
15
+
16
+ &.active {
17
+ --df-inner-box-shadow-color: var(--df-color-primary-alt-active-background);
18
+
19
+ font-weight: var(--df-typo-weight-bold);
20
+
21
+ .df-icon-inlink {
22
+ color: var(--df-color-neutral-alt-active-foreground) !important;
23
+ }
24
+ }
25
+
26
+ &:focus-visible {
27
+ --df-box-shadow-color: var(--df-color-focus-main-border);
28
+
29
+ outline: none;
30
+ box-shadow: df.$df-focus-inset-box-shadow;
31
+
32
+ &:hover {
33
+ --df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);
34
+ }
35
+ }
36
+ }
37
+ .nav.nav-pills:not([role='tablist']) {
38
+ // remove default link color
39
+ a.nav-link {
40
+ border-bottom: 0;
41
+ }
42
+ }
@@ -0,0 +1,7 @@
1
+ @use 'sass:selector';
2
+
3
+ @mixin ngs-root($child) {
4
+ @at-root #{selector.replace(&, '.ng-select', '.ng-select' + $child)} {
5
+ @content;
6
+ }
7
+ }
@@ -0,0 +1,531 @@
1
+ @use '../../new-brand-common.variables.scss' as df;
2
+ @use 'select.mixin' as select-mixins;
3
+
4
+ //TODO: we are forced to use the color instead of the token: https://github.com/Amadeus-xDLC/design-factory.design-system/issues/2840
5
+ html:root[data-df-theme='dark'] {
6
+ .form-select {
7
+ --df-form-select-bg-img: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fafafa' d='m1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z'/%3E%3C/svg%3E");
8
+ &:not([multiple]):disabled {
9
+ --df-form-select-bg-img: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23999999' d='m1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z'/%3E%3C/svg%3E");
10
+ }
11
+ }
12
+ }
13
+
14
+ /* Native select */
15
+ .form-select {
16
+ --df-box-shadow-color: var(--df-color-input-border);
17
+ --df-form-select-bg-img: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%231a1a1a' d='m1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z'/%3E%3C/svg%3E");
18
+
19
+ @each $state, $name in ('invalid': 'danger', 'warning': 'warning') {
20
+ &.is-#{$state} {
21
+ --df-box-shadow-color: var(--df-color-#{$name}-alt-default-border);
22
+ }
23
+ }
24
+ &:not([multiple]) {
25
+ //we don't have multiple basic select in df, but I prefer to limit it to avoid unexpected behaviours
26
+ @include rtl {
27
+ padding: $form-select-padding-y $form-select-padding-x $form-select-padding-y $form-select-indicator-padding;
28
+ background-position: left 0.5rem center;
29
+ }
30
+ }
31
+
32
+ &:focus {
33
+ box-shadow: none;
34
+ border-color: unset;
35
+ }
36
+
37
+ &:focus-visible {
38
+ box-shadow: df.$df-focus-box-shadow;
39
+ }
40
+
41
+ &:not([disabled]) {
42
+ cursor: pointer;
43
+
44
+ > option {
45
+ cursor: pointer;
46
+
47
+ &:checked {
48
+ background-color: var(--df-color-primary-alt-active-background);
49
+ color: var(--df-color-primary-alt-active-foreground);
50
+ }
51
+
52
+ &:not(:disabled):hover {
53
+ background-color: var(--df-color-primary-alt-hovered-background);
54
+ color: var(--df-color-primary-alt-hovered-foreground);
55
+ }
56
+ }
57
+ }
58
+
59
+ &:disabled {
60
+ cursor: not-allowed;
61
+ }
62
+
63
+ &:not([multiple]):disabled {
64
+ --df-form-select-bg-img: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23b3b3b3' d='m1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z'/%3E%3C/svg%3E");
65
+ }
66
+ }
67
+
68
+ /* Ng-select select */
69
+ // Use this to remove the arrow from the ng-select widget.
70
+ .df-selectno-arrow > .ng-select-container > .ng-arrow-wrapper {
71
+ display: none;
72
+ }
73
+
74
+ .highlighted {
75
+ color: var(--df-color-primary-alt-default-foreground);
76
+ text-decoration: inherit !important;
77
+
78
+ .ng-option-marked & {
79
+ color: var(--df-color-primary-alt-hovered-foreground);
80
+ }
81
+ }
82
+
83
+ // ng-select
84
+ // style taken directly from the scss file of the library
85
+ // Override is elements that was changed from the default look
86
+ .ng-select {
87
+ $df-select-value-margin-sm: 0.125rem;
88
+ $df-select-value-margin-lg: 0.5rem;
89
+
90
+ --df-box-shadow-color: #{$input-focus-border-color};
91
+
92
+ &.form-control {
93
+ padding: 0;
94
+ border: none;
95
+ height: initial;
96
+ }
97
+
98
+ &.form-control-lg {
99
+ padding: 0;
100
+
101
+ :is(.ng-select-container, .ng-dropdown-panel) {
102
+ border-radius: var(--df-borderRadius-main-large);
103
+ }
104
+ }
105
+
106
+ &.form-control-sm {
107
+ padding: 0;
108
+
109
+ :is(.ng-select-container, .ng-dropdown-panel) {
110
+ border-radius: var(--df-borderRadius-main-small);
111
+ }
112
+ }
113
+
114
+ .ng-option-selected {
115
+ background-color: var(--df-color-primary-alt-active-background);
116
+ color: var(--df-color-primary-alt-active-foreground);
117
+ }
118
+
119
+ .ng-option-marked {
120
+ // ng-option-marked is equivalent to hover
121
+ background-color: var(--df-color-primary-alt-hovered-background);
122
+ color: var(--df-color-primary-alt-hovered-foreground);
123
+ }
124
+
125
+ &:not(.ng-select-disabled) {
126
+ .ng-input {
127
+ cursor: pointer;
128
+
129
+ & > input:not(:disabled) {
130
+ cursor: pointer;
131
+ }
132
+ }
133
+ }
134
+
135
+ .ng-value .badge:not(.disabled) {
136
+ cursor: inherit;
137
+ }
138
+
139
+ .ng-arrow:before {
140
+ font-family: 'Font Awesome 6 Pro', sans-serif;
141
+ content: '\f0d7';
142
+ font-weight: 900;
143
+ font-size: 1rem;
144
+ width: 1.5rem;
145
+ height: 1.5rem;
146
+ }
147
+
148
+ &.ng-select-focused > .ng-select-container {
149
+ outline: 0;
150
+ box-shadow: df.$df-focus-box-shadow;
151
+ }
152
+
153
+ &.ng-select-disabled > .ng-select-container {
154
+ background-color: var(--df-color-disabled-main-background);
155
+ color: var(--df-color-disabled-main-foreground);
156
+ border-color: var(--df-color-disabled-main-border);
157
+ cursor: not-allowed;
158
+
159
+ .ng-arrow-wrapper {
160
+ cursor: not-allowed;
161
+ }
162
+
163
+ .ng-value {
164
+ background-color: var(--df-color-disabled-main-background) !important;
165
+ }
166
+ }
167
+
168
+ &.df-ng-select-readonly {
169
+ > .ng-select-container {
170
+ background-color: var(--df-color-disabled-main-background);
171
+ color: var(--df-color-inert-neutral-readonly-foreground);
172
+ border-color: var(--df-color-disabled-main-border);
173
+ }
174
+ }
175
+
176
+ @each $state, $name in ('invalid': 'danger', 'warning': 'warning') {
177
+ &.is-#{$state} {
178
+ --df-box-shadow-color: var(--df-color-#{$name}-alt-default-border);
179
+
180
+ .ng-select-container {
181
+ border-color: var(--df-color-#{$name}-alt-default-border);
182
+ }
183
+ }
184
+ }
185
+
186
+ .ng-has-value .ng-placeholder {
187
+ display: none;
188
+ }
189
+
190
+ .ng-select-container {
191
+ background-color: var(--df-color-inert-neutral-main-background);
192
+ border-radius: var(--df-borderRadius-main-medium);
193
+ border: 1px solid var(--df-color-input-border);
194
+
195
+ .ng-value-container {
196
+ max-width: 100%;
197
+ overflow: hidden;
198
+ align-items: center;
199
+
200
+ .ng-placeholder {
201
+ font-style: italic;
202
+ color: var(--df-color-subtext-foreground);
203
+ // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
204
+ opacity: 1;
205
+ }
206
+ }
207
+ }
208
+
209
+ &.ng-select-single {
210
+ &.form-control-lg .ng-select-container {
211
+ height: $input-height-lg; // in single case we will only have one line
212
+ }
213
+
214
+ &.form-control-sm .ng-select-container {
215
+ height: $input-height-sm; // in single case we will only have one line
216
+ }
217
+
218
+ .ng-select-container {
219
+ height: $input-height;
220
+
221
+ .ng-value-container {
222
+ padding-inline-start: var(--df-spacing-3);
223
+
224
+ .ng-input {
225
+ inset-inline-start: 0;
226
+ padding-inline-start: var(--df-spacing-3);
227
+ padding-inline-end: calc(var(--df-spacing-3) + 1.5rem);
228
+
229
+ @include select-mixins.ngs-root('.ng-select-clearable') {
230
+ padding-inline-end: calc(var(--df-spacing-3) + 3rem);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+
237
+ &.ng-select-multiple {
238
+ &.form-control-lg {
239
+ height: initial; // in single case we will only have one line
240
+
241
+ > .ng-select-container .ng-value-container {
242
+ min-height: calc($input-height-lg - 2px);
243
+
244
+ .ng-value {
245
+ font-size: inherit;
246
+ }
247
+ }
248
+ }
249
+
250
+ &.form-control-sm {
251
+ height: initial; // in single case we will only have one line
252
+
253
+ > .ng-select-container {
254
+ height: inherit;
255
+
256
+ .ng-value-container {
257
+ min-height: calc($input-height-sm - 2px);
258
+ }
259
+ }
260
+ }
261
+
262
+ &:not([disabled]):not(.df-ng-select-readonly) .ng-select-container {
263
+ cursor: pointer;
264
+ }
265
+
266
+ .ng-select-container {
267
+ .ng-value-container {
268
+ padding-inline-start: var(--df-spacing-3);
269
+ height: fit-content;
270
+
271
+ .ng-value {
272
+ display: flex;
273
+ align-items: center;
274
+ margin-top: $input-padding-y;
275
+ margin-bottom: $input-padding-y;
276
+ max-width: 100%;
277
+ padding-inline-end: var(--df-spacing-3);
278
+ color: var(--df-color-inert-neutral-main-foreground);
279
+
280
+ @include select-mixins.ngs-root('.form-control-lg') {
281
+ margin-top: $df-select-value-margin-lg;
282
+ margin-bottom: $df-select-value-margin-lg;
283
+ }
284
+ @include select-mixins.ngs-root('.form-control-sm') {
285
+ margin-top: $df-select-value-margin-sm;
286
+ margin-bottom: $df-select-value-margin-sm;
287
+ }
288
+
289
+ &.ng-value-disabled {
290
+ cursor: not-allowed;
291
+ }
292
+
293
+ .ng-value-label {
294
+ display: inline-block;
295
+ }
296
+ }
297
+
298
+ .ng-input {
299
+ > input {
300
+ padding: 0;
301
+ }
302
+
303
+ margin-top: $input-padding-y;
304
+ margin-bottom: $input-padding-y;
305
+ @include select-mixins.ngs-root('.form-control-lg') {
306
+ margin-top: $df-select-value-margin-lg;
307
+ margin-bottom: $df-select-value-margin-lg;
308
+ }
309
+ @include select-mixins.ngs-root('.form-control-sm') {
310
+ margin-top: $df-select-value-margin-sm;
311
+ margin-bottom: $df-select-value-margin-sm;
312
+ }
313
+ }
314
+ }
315
+ }
316
+
317
+ .ng-dropdown-panel .ng-dropdown-panel-items {
318
+ .ng-optgroup,
319
+ .ng-option {
320
+ white-space: normal;
321
+ word-break: normal;
322
+ overflow-wrap: anywhere;
323
+ }
324
+ }
325
+ }
326
+
327
+ .ng-clear-wrapper {
328
+ width: 1.5rem !important;
329
+ height: 1.5rem;
330
+ display: flex;
331
+ margin-top: $input-padding-y;
332
+ margin-bottom: $input-padding-y;
333
+
334
+ @include select-mixins.ngs-root('.form-control-lg') {
335
+ margin-top: calc(($input-height-lg - 2px - 1.5rem) / 2);
336
+ }
337
+ @include select-mixins.ngs-root('.form-control-sm') {
338
+ margin-top: $df-select-value-margin-sm;
339
+ margin-bottom: $df-select-value-margin-sm;
340
+ }
341
+ margin-inline-start: 0.4rem;
342
+ @include select-mixins.ngs-root('.df-selectno-arrow') {
343
+ margin-inline-end: var(--df-spacing-3);
344
+ }
345
+
346
+ &:after {
347
+ content: '\f00d';
348
+ font-family: 'Font Awesome 6 Pro', sans-serif;
349
+ font-size: 1rem;
350
+ border-radius: 50%;
351
+ display: flex;
352
+ width: 1.5rem;
353
+ height: 1.5rem;
354
+ line-height: 1.5rem;
355
+ justify-content: center;
356
+ }
357
+
358
+ &:focus {
359
+ outline: none;
360
+
361
+ &:after {
362
+ background-color: var(--df-color-inert-neutral-main-background);
363
+ box-shadow: df.$df-focus-box-shadow;
364
+ }
365
+ }
366
+
367
+ &:hover {
368
+ &:after {
369
+ background-color: var(--df-color-primary-alt-hovered-background);
370
+ cursor: pointer;
371
+ }
372
+ }
373
+
374
+ > .ng-clear {
375
+ display: none !important;
376
+ }
377
+ }
378
+
379
+ .ng-arrow-wrapper {
380
+ width: 1.5rem;
381
+ height: 1.5rem;
382
+ border-radius: 50%;
383
+ margin-top: $input-padding-y;
384
+ margin-inline-start: 0.3rem;
385
+ margin-inline-end: 0.375rem;
386
+ display: flex;
387
+
388
+ @include select-mixins.ngs-root('.form-control-lg') {
389
+ margin-top: $df-select-value-margin-lg;
390
+ font-size: var(--df-typo-sizing-default); // in order to have the arrow verticaly aligned in large
391
+ }
392
+ @include select-mixins.ngs-root('.form-control-sm') {
393
+ margin-top: $df-select-value-margin-sm;
394
+ }
395
+
396
+ .ng-arrow {
397
+ width: 1.5rem !important;
398
+ height: 1.5rem !important;
399
+ }
400
+ }
401
+
402
+ &:not(.ng-select-disabled):not(.df-ng-select-readonly) {
403
+ .ng-arrow-wrapper:hover {
404
+ background-color: var(--df-color-primary-alt-hovered-background);
405
+ }
406
+ }
407
+
408
+ .ng-dropdown-panel {
409
+ background-color: var(--df-color-inert-neutral-main-background);
410
+ border-radius: var(--df-borderRadius-main-medium);
411
+ box-shadow: df.$df-box-shadow;
412
+ overflow: auto;
413
+ width: initial;
414
+ min-width: 100%;
415
+
416
+ .ng-option + .ng-optgroup {
417
+ border-top: 1px solid var(--df-color-input-border);
418
+ }
419
+
420
+ &.ng-select-bottom {
421
+ top: calc(100% + #{$input-btn-focus-width} + 1px);
422
+
423
+ .ng-dropdown-panel-items {
424
+ .ng-option {
425
+ white-space: initial;
426
+ }
427
+ }
428
+ }
429
+
430
+ &.ng-select-top {
431
+ bottom: calc(100% + #{$input-btn-focus-width} + 1px);
432
+ margin-bottom: -1px;
433
+ }
434
+
435
+ .ng-dropdown-panel-items {
436
+ margin-bottom: 0px;
437
+
438
+ .ng-optgroup,
439
+ .ng-option {
440
+ overflow: hidden;
441
+ text-overflow: ellipsis;
442
+
443
+ .form-check {
444
+ margin-bottom: 0;
445
+ padding-bottom: $form-check-margin-bottom;
446
+ padding-inline-start: $form-check-padding-start + 0.5rem;
447
+ margin-inline-start: -0.5em;
448
+ overflow: hidden;
449
+ text-overflow: ellipsis;
450
+ }
451
+ }
452
+
453
+ .ng-optgroup {
454
+ user-select: none;
455
+ padding: 0.325rem 1rem;
456
+ font-weight: 500;
457
+ cursor: pointer;
458
+
459
+ @include select-mixins.ngs-root('.form-control-lg') {
460
+ padding: 0.525rem 1rem;
461
+ }
462
+ @include select-mixins.ngs-root('.form-control-sm') {
463
+ padding: 0.138rem 1rem;
464
+ }
465
+
466
+ &.ng-option-disabled {
467
+ cursor: default;
468
+ }
469
+
470
+ &.ng-option-selected {
471
+ font-weight: 400;
472
+ }
473
+ }
474
+
475
+ .ng-option {
476
+ padding: 0.325rem 1rem;
477
+ @include select-mixins.ngs-root('.form-control-lg') {
478
+ padding: 0.525rem 1rem;
479
+ }
480
+ @include select-mixins.ngs-root('.form-control-sm') {
481
+ padding: 0.138rem 1rem;
482
+ }
483
+
484
+ .ng-option-label {
485
+ display: block;
486
+ @include select-mixins.ngs-root('.form-control-lg') {
487
+ height: 1.95rem;
488
+ line-height: 1.95rem;
489
+ }
490
+ @include select-mixins.ngs-root('.form-control-sm') {
491
+ height: 1.6rem;
492
+ line-height: 1.6rem;
493
+ }
494
+ }
495
+
496
+ &.ng-option-selected {
497
+ .ng-option-label {
498
+ font-weight: 400;
499
+ }
500
+ }
501
+
502
+ &.ng-option-disabled {
503
+ color: var(--df-color-disabled-main-foreground);
504
+ cursor: not-allowed;
505
+ }
506
+ }
507
+ }
508
+ }
509
+ }
510
+
511
+ .input-group {
512
+ .ng-select {
513
+ &.ng-select-focused {
514
+ z-index: 1001; // this is the actual value of ng-select.component.scss
515
+ }
516
+
517
+ &:not(:first-child) {
518
+ .ng-select-container {
519
+ border-start-start-radius: 0;
520
+ border-end-start-radius: 0;
521
+ }
522
+ }
523
+
524
+ &:not(:last-child) {
525
+ .ng-select-container {
526
+ border-start-end-radius: 0;
527
+ border-end-end-radius: 0;
528
+ }
529
+ }
530
+ }
531
+ }
@@ -0,0 +1,18 @@
1
+ $form-select-bg-size: 16px 16px !default; // In pixels because image dimensions
2
+ $form-select-indicator: str-replace(
3
+ url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z'/%3E%3C/svg%3E"),
4
+ '#',
5
+ '%23'
6
+ ) !default;
7
+
8
+ $form-select-disabled-color: var(--df-color-disabled-main-foreground) !default;
9
+ $form-select-disabled-bg: var(--df-color-disabled-main-background) !default;
10
+
11
+ $form-select-color: var(--df-color-inert-neutral-main-foreground) !default;
12
+ $form-select-bg: var(--df-color-inert-neutral-main-background) !default;
13
+
14
+ $form-select-padding-x: $input-padding-x !default;
15
+ $form-select-indicator-padding: calc(#{$form-select-padding-x} * 3) !default; // Extra padding for background-image
16
+ $form-select-feedback-icon-padding-end: calc(
17
+ #{$form-select-padding-x} * 2.5 + #{$form-select-indicator-padding}
18
+ ) !default;
@@ -0,0 +1,8 @@
1
+ .vertical-separator {
2
+ width: 1px;
3
+ color: var(--df-color-inert-neutral-main-border);
4
+ background-color: currentColor;
5
+ display: inline-block;
6
+ height: 100%;
7
+ opacity: $hr-opacity;
8
+ }
@@ -0,0 +1,5 @@
1
+ $hr-opacity: 1 !default;
2
+ $hr-border-color: var(--df-color-inert-neutral-main-border) !default;
3
+ $hr-border-width: 1px !default;
4
+ $hr-margin-y: 1.5rem !default;
5
+ $hr-color: initial !default;