@raintonic/formaui 0.4.0 → 0.9.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 (238) hide show
  1. package/CHANGELOG.md +80 -35
  2. package/README.md +22 -26
  3. package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +39 -41
  4. package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -1
  5. package/fesm2022/raintonic-formaui-cdk-form-field.mjs +207 -3
  6. package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -1
  7. package/fesm2022/raintonic-formaui-cdk-overlay.mjs +19 -1
  8. package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
  9. package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +5 -12
  10. package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -1
  11. package/fesm2022/raintonic-formaui-components-accordion.mjs +8 -5
  12. package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
  13. package/fesm2022/raintonic-formaui-components-alert.mjs +16 -2
  14. package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
  15. package/fesm2022/raintonic-formaui-components-autocomplete.mjs +255 -462
  16. package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
  17. package/fesm2022/raintonic-formaui-components-avatar.mjs +34 -59
  18. package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
  19. package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
  20. package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
  21. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +4 -4
  22. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
  23. package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
  24. package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
  25. package/fesm2022/raintonic-formaui-components-button.mjs +15 -20
  26. package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
  27. package/fesm2022/raintonic-formaui-components-card.mjs +2 -2
  28. package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
  29. package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
  30. package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
  31. package/fesm2022/raintonic-formaui-components-chip.mjs +97 -0
  32. package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -0
  33. package/fesm2022/raintonic-formaui-components-data-table.mjs +69 -29
  34. package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
  35. package/fesm2022/raintonic-formaui-components-date-picker.mjs +223 -144
  36. package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
  37. package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
  38. package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
  39. package/fesm2022/raintonic-formaui-components-drawer.mjs +2 -2
  40. package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
  41. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +888 -0
  42. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -0
  43. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +774 -0
  44. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -0
  45. package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
  46. package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
  47. package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
  48. package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
  49. package/fesm2022/raintonic-formaui-components-form-field.mjs +81 -50
  50. package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
  51. package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
  52. package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
  53. package/fesm2022/raintonic-formaui-components-input.mjs +47 -12
  54. package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
  55. package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
  56. package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
  57. package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -12
  58. package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
  59. package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
  60. package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
  61. package/fesm2022/raintonic-formaui-components-password-input.mjs +35 -110
  62. package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
  63. package/fesm2022/raintonic-formaui-components-popover.mjs +3 -2
  64. package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
  65. package/fesm2022/raintonic-formaui-components-progressbar.mjs +3 -2
  66. package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
  67. package/fesm2022/raintonic-formaui-components-radio.mjs +5 -6
  68. package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
  69. package/fesm2022/raintonic-formaui-components-select.mjs +257 -412
  70. package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
  71. package/fesm2022/raintonic-formaui-components-side-panel.mjs +2 -2
  72. package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
  73. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +525 -0
  74. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -0
  75. package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
  76. package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
  77. package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
  78. package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
  79. package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
  80. package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
  81. package/fesm2022/raintonic-formaui-components-stepper.mjs +50 -45
  82. package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
  83. package/fesm2022/raintonic-formaui-components-strength-meter.mjs +149 -0
  84. package/fesm2022/raintonic-formaui-components-strength-meter.mjs.map +1 -0
  85. package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
  86. package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
  87. package/fesm2022/raintonic-formaui-components-time-picker.mjs +194 -154
  88. package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
  89. package/fesm2022/raintonic-formaui-components-toggle-group.mjs +302 -0
  90. package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -0
  91. package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
  92. package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
  93. package/fesm2022/raintonic-formaui-components-toolbar.mjs +2 -2
  94. package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
  95. package/fesm2022/raintonic-formaui-components-tooltip.mjs +10 -4
  96. package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
  97. package/fesm2022/raintonic-formaui-components-topbar.mjs +60 -0
  98. package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -0
  99. package/fesm2022/raintonic-formaui-components-tree-select.mjs +59 -69
  100. package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
  101. package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
  102. package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
  103. package/fesm2022/raintonic-formaui-components-tree.mjs +31 -5
  104. package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
  105. package/fesm2022/raintonic-formaui-core.mjs +279 -1
  106. package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
  107. package/fesm2022/raintonic-formaui-services-breakpoint.mjs +93 -0
  108. package/fesm2022/raintonic-formaui-services-breakpoint.mjs.map +1 -0
  109. package/fesm2022/raintonic-formaui-services-dialog.mjs +314 -16
  110. package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
  111. package/fesm2022/raintonic-formaui-services-notification.mjs +93 -29
  112. package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
  113. package/fesm2022/raintonic-formaui-services-theme.mjs +46 -196
  114. package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
  115. package/fesm2022/raintonic-formaui.mjs +1 -1
  116. package/fesm2022/raintonic-formaui.mjs.map +1 -1
  117. package/llms-full.txt +2329 -450
  118. package/llms.txt +36 -33
  119. package/package.json +42 -19
  120. package/styles/fonts/Geist-Bold.woff2 +0 -0
  121. package/styles/fonts/Geist-Italic.woff2 +0 -0
  122. package/styles/fonts/Geist-Light.woff2 +0 -0
  123. package/styles/fonts/Geist-Medium.woff2 +0 -0
  124. package/styles/fonts/Geist-Regular.woff2 +0 -0
  125. package/styles/fonts/Geist-SemiBold.woff2 +0 -0
  126. package/styles/fonts/GeistMono-Regular.woff2 +0 -0
  127. package/styles/generated/_tokens.scss +906 -0
  128. package/styles/index.scss +11 -10
  129. package/styles/partials/_brand.scss +46 -0
  130. package/styles/partials/_constants.scss +22 -20
  131. package/styles/partials/_fonts.scss +54 -10
  132. package/styles/partials/_grid.scss +29 -18
  133. package/styles/partials/_mixins.scss +69 -27
  134. package/styles/partials/_motion.scss +28 -33
  135. package/styles/partials/_theme.scss +28 -255
  136. package/styles/partials/_type.scss +117 -0
  137. package/styles/partials/_typography.scss +45 -45
  138. package/styles/partials/_utilities.scss +198 -98
  139. package/styles/partials/components/_button.scss +144 -75
  140. package/styles/partials/components/_dialog.scss +181 -180
  141. package/styles/partials/components/_overlay.scss +87 -87
  142. package/styles/partials/themes/_dark.scss +3 -268
  143. package/styles/partials/themes/_light.scss +4 -268
  144. package/styles/styles.css +7744 -0
  145. package/styles/styles.entry.scss +3 -0
  146. package/styles/utilities.css +4802 -0
  147. package/styles/utilities.entry.scss +3 -0
  148. package/types/raintonic-formaui-cdk-drag-drop.d.ts +0 -1
  149. package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -1
  150. package/types/raintonic-formaui-cdk-form-field.d.ts +118 -2
  151. package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -1
  152. package/types/raintonic-formaui-cdk-overlay.d.ts +2 -0
  153. package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
  154. package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +0 -1
  155. package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -1
  156. package/types/raintonic-formaui-components-accordion.d.ts +1 -1
  157. package/types/raintonic-formaui-components-accordion.d.ts.map +1 -1
  158. package/types/raintonic-formaui-components-alert.d.ts +6 -1
  159. package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
  160. package/types/raintonic-formaui-components-autocomplete.d.ts +73 -116
  161. package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
  162. package/types/raintonic-formaui-components-avatar.d.ts +13 -31
  163. package/types/raintonic-formaui-components-avatar.d.ts.map +1 -1
  164. package/types/raintonic-formaui-components-button.d.ts +4 -10
  165. package/types/raintonic-formaui-components-button.d.ts.map +1 -1
  166. package/types/raintonic-formaui-components-chip.d.ts +43 -0
  167. package/types/raintonic-formaui-components-chip.d.ts.map +1 -0
  168. package/types/raintonic-formaui-components-data-table.d.ts +48 -11
  169. package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
  170. package/types/raintonic-formaui-components-date-picker.d.ts +59 -23
  171. package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
  172. package/types/raintonic-formaui-components-dropdown-menu.d.ts +394 -0
  173. package/types/raintonic-formaui-components-dropdown-menu.d.ts.map +1 -0
  174. package/types/raintonic-formaui-components-dual-tier-navigation.d.ts +87 -0
  175. package/types/raintonic-formaui-components-dual-tier-navigation.d.ts.map +1 -0
  176. package/types/raintonic-formaui-components-form-field.d.ts +51 -21
  177. package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
  178. package/types/raintonic-formaui-components-input.d.ts +20 -11
  179. package/types/raintonic-formaui-components-input.d.ts.map +1 -1
  180. package/types/raintonic-formaui-components-number-input.d.ts +5 -3
  181. package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
  182. package/types/raintonic-formaui-components-password-input.d.ts +18 -32
  183. package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
  184. package/types/raintonic-formaui-components-popover.d.ts.map +1 -1
  185. package/types/raintonic-formaui-components-progressbar.d.ts +1 -1
  186. package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
  187. package/types/raintonic-formaui-components-radio.d.ts +1 -2
  188. package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
  189. package/types/raintonic-formaui-components-select.d.ts +107 -76
  190. package/types/raintonic-formaui-components-select.d.ts.map +1 -1
  191. package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts +223 -0
  192. package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts.map +1 -0
  193. package/types/raintonic-formaui-components-stepper.d.ts +4 -2
  194. package/types/raintonic-formaui-components-stepper.d.ts.map +1 -1
  195. package/types/raintonic-formaui-components-strength-meter.d.ts +78 -0
  196. package/types/raintonic-formaui-components-strength-meter.d.ts.map +1 -0
  197. package/types/raintonic-formaui-components-time-picker.d.ts +44 -24
  198. package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
  199. package/types/raintonic-formaui-components-toggle-group.d.ts +100 -0
  200. package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -0
  201. package/types/raintonic-formaui-components-tooltip.d.ts +2 -1
  202. package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
  203. package/types/raintonic-formaui-components-topbar.d.ts +48 -0
  204. package/types/raintonic-formaui-components-topbar.d.ts.map +1 -0
  205. package/types/raintonic-formaui-components-tree-select.d.ts +25 -9
  206. package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -1
  207. package/types/raintonic-formaui-components-tree.d.ts +12 -1
  208. package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
  209. package/types/raintonic-formaui-core.d.ts +243 -5
  210. package/types/raintonic-formaui-core.d.ts.map +1 -1
  211. package/types/raintonic-formaui-services-breakpoint.d.ts +44 -0
  212. package/types/raintonic-formaui-services-breakpoint.d.ts.map +1 -0
  213. package/types/raintonic-formaui-services-dialog.d.ts +141 -2
  214. package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
  215. package/types/raintonic-formaui-services-notification.d.ts +24 -2
  216. package/types/raintonic-formaui-services-notification.d.ts.map +1 -1
  217. package/types/raintonic-formaui-services-theme.d.ts +13 -103
  218. package/types/raintonic-formaui-services-theme.d.ts.map +1 -1
  219. package/types/raintonic-formaui.d.ts +1 -1
  220. package/fesm2022/raintonic-formaui-components-big-menu.mjs +0 -86
  221. package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +0 -1
  222. package/fesm2022/raintonic-formaui-components-menu.mjs +0 -896
  223. package/fesm2022/raintonic-formaui-components-menu.mjs.map +0 -1
  224. package/fesm2022/raintonic-formaui-components-sidebar.mjs +0 -275
  225. package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +0 -1
  226. package/fesm2022/raintonic-formaui-components-tag.mjs +0 -95
  227. package/fesm2022/raintonic-formaui-components-tag.mjs.map +0 -1
  228. package/styles/_fonts-entry.scss +0 -3
  229. package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
  230. package/styles/fonts/inter-tight-latin.woff2 +0 -0
  231. package/types/raintonic-formaui-components-big-menu.d.ts +0 -73
  232. package/types/raintonic-formaui-components-big-menu.d.ts.map +0 -1
  233. package/types/raintonic-formaui-components-menu.d.ts +0 -403
  234. package/types/raintonic-formaui-components-menu.d.ts.map +0 -1
  235. package/types/raintonic-formaui-components-sidebar.d.ts +0 -185
  236. package/types/raintonic-formaui-components-sidebar.d.ts.map +0 -1
  237. package/types/raintonic-formaui-components-tag.d.ts +0 -43
  238. package/types/raintonic-formaui-components-tag.d.ts.map +0 -1
package/styles/index.scss CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  // 4. Typography system
14
14
  @forward './partials/typography';
15
+ @forward './partials/type';
16
+ @forward './partials/brand';
15
17
 
16
18
  // 5. Motion system
17
19
  @forward './partials/motion';
@@ -32,8 +34,7 @@
32
34
  @use './partials/constants' as *;
33
35
 
34
36
  // Fonts are now opt-in. Import directly in your app's styles.scss:
35
- // @use "@formaui/styles/fonts-entry";
36
- // @use "./partials/fonts";
37
+ @use './partials/fonts.scss';
37
38
 
38
39
  // Base reset and normalization
39
40
  *,
@@ -49,7 +50,7 @@
49
50
  }
50
51
 
51
52
  html {
52
- font-family: var(--fui-font-family-sans);
53
+ font-family: var(--fui-font-sans);
53
54
  line-height: 1.5;
54
55
  -webkit-text-size-adjust: 100%;
55
56
  -moz-tab-size: 4;
@@ -61,7 +62,7 @@ body {
61
62
  font-family: inherit;
62
63
  line-height: inherit;
63
64
  color: var(--fui-text-primary);
64
- background-color: var(--fui-surface-00);
65
+ background-color: var(--fui-bg-default);
65
66
 
66
67
  // Dialog overlay support
67
68
  &.fui-dialog-open {
@@ -69,11 +70,11 @@ body {
69
70
  }
70
71
  }
71
72
 
72
- // Focus management
73
+ // Focus management. For inputs we delegate focus to fui-form-field
73
74
  button:focus-visible,
74
75
  [role='button']:focus-visible,
75
76
  a:focus-visible,
76
- input:focus-visible,
77
+ input:focus-visible, // ONLY for inputs not wrapper by form-field, which overrides outline to none
77
78
  select:focus-visible,
78
79
  textarea:focus-visible {
79
80
  @include fui-focus-ring();
@@ -84,14 +85,14 @@ button {
84
85
  @include fui-button-reset();
85
86
  }
86
87
 
87
- // Link styles exclude fui-button anchors, which have their own variant system
88
+ // Link styles — exclude fui-button anchors, which have their own variant system
88
89
  a:not(.fui-button) {
89
- color: var(--fui-primary);
90
+ color: var(--fui-text-link);
90
91
  text-decoration: none;
91
92
 
92
93
  &:hover {
93
- color: var(--fui-primary-hover);
94
- text-decoration: underline;
94
+ color: var(--fui-text-link-hover);
95
+ /* text-decoration: underline; */
95
96
  }
96
97
 
97
98
  &:focus-visible {
@@ -0,0 +1,46 @@
1
+ // FormaUI — build-time brand override. NO runtime generation.
2
+ // Uso consumer: @use '@raintonic/formaui/styles' as fui; @include fui.brand($primary: #6657B8, $accent: #9D94F0);
3
+ @use 'sass:color';
4
+ @use 'sass:math';
5
+
6
+ @function _fui-ramp-light($base, $s) {
7
+ @if $s == 60 {
8
+ @return $base;
9
+ } @else if $s < 60 {
10
+ @return color.mix(#fff, $base, math.div(60 - $s, 60) * 100%);
11
+ } @else {
12
+ @return color.mix(#000, $base, math.div($s - 60, 60) * 100%);
13
+ }
14
+ }
15
+ // dark = mirror: step s dark = light (120 - s)
16
+ @function _fui-ramp-dark($base, $s) {
17
+ @return _fui-ramp-light($base, 120 - $s);
18
+ }
19
+
20
+ $_fui-steps: 10 20 30 40 50 60 70 80 90 100 110;
21
+
22
+ @mixin brand($primary, $accent: null) {
23
+ :root,
24
+ :root[data-theme='light'],
25
+ [data-theme='light'] {
26
+ @each $s in $_fui-steps {
27
+ --fui-primary-#{$s}: #{_fui-ramp-light($primary, $s)};
28
+ }
29
+ @if $accent {
30
+ @each $s in $_fui-steps {
31
+ --fui-accent-#{$s}: #{_fui-ramp-light($accent, $s)};
32
+ }
33
+ }
34
+ }
35
+ :root[data-theme='dark'],
36
+ [data-theme='dark'] {
37
+ @each $s in $_fui-steps {
38
+ --fui-primary-#{$s}: #{_fui-ramp-dark($primary, $s)};
39
+ }
40
+ @if $accent {
41
+ @each $s in $_fui-steps {
42
+ --fui-accent-#{$s}: #{_fui-ramp-dark($accent, $s)};
43
+ }
44
+ }
45
+ }
46
+ }
@@ -1,29 +1,31 @@
1
1
  // Design tokens and constants
2
2
  // Based on Carbon Design System principles
3
3
 
4
- // Spacing scale (rem units)
5
- $fui-spacing-01: 0.125rem; // 2px
6
- $fui-spacing-02: 0.25rem; // 4px
7
- $fui-spacing-03: 0.5rem; // 8px
8
- $fui-spacing-04: 0.75rem; // 12px
9
- $fui-spacing-05: 1rem; // 16px
10
- $fui-spacing-06: 1.5rem; // 24px
11
- $fui-spacing-07: 2rem; // 32px
12
- $fui-spacing-08: 2.5rem; // 40px
13
- $fui-spacing-09: 3rem; // 48px
14
- $fui-spacing-10: 4rem; // 64px
15
- $fui-spacing-11: 5rem; // 80px
16
- $fui-spacing-12: 6rem; // 96px
4
+ // Spacing scale (rem units) — PRD scale 0..13
5
+ $fui-spacing-0: 0; // 0px
6
+ $fui-spacing-1: 0.125rem; // 2px
7
+ $fui-spacing-2: 0.25rem; // 4px
8
+ $fui-spacing-3: 0.375rem; // 6px
9
+ $fui-spacing-4: 0.5rem; // 8px
10
+ $fui-spacing-5: 0.625rem; // 10px
11
+ $fui-spacing-6: 0.75rem; // 12px
12
+ $fui-spacing-7: 1rem; // 16px
13
+ $fui-spacing-8: 1.25rem; // 20px
14
+ $fui-spacing-9: 1.5rem; // 24px
15
+ $fui-spacing-10: 1.75rem; // 28px
16
+ $fui-spacing-11: 2rem; // 32px
17
+ $fui-spacing-12: 2.5rem; // 40px
18
+ $fui-spacing-13: 3rem; // 48px
17
19
 
18
20
  // Layout constants
19
21
  $fui-grid-columns: 12;
20
- $fui-grid-gutter: $fui-spacing-05;
22
+ $fui-grid-gutter: $fui-spacing-7;
21
23
  $fui-container-max-width: 1200px;
22
24
 
23
25
  // Breakpoints
24
- $fui-breakpoint-xs: 0;
25
- $fui-breakpoint-sm: 576px;
26
- $fui-breakpoint-md: 768px;
27
- $fui-breakpoint-lg: 992px;
28
- $fui-breakpoint-xl: 1200px;
29
- $fui-breakpoint-xxl: 1400px;
26
+ $fui-bp-xs: 480px;
27
+ $fui-bp-sm: 640px;
28
+ $fui-bp-md: 768px;
29
+ $fui-bp-lg: 1024px;
30
+ $fui-bp-xl: 1280px;
31
+ $fui-bp-2xl: 1536px;
@@ -1,35 +1,79 @@
1
1
  // Self-hosted fonts — eliminates render-blocking Google Fonts dependency
2
2
 
3
- // Inter Tight variable weight (100-900), latin subset
3
+ // Geistindividual weights (Light, Regular, Medium, SemiBold, Bold)
4
4
  @font-face {
5
- font-family: 'Inter Tight';
5
+ font-family: 'Geist';
6
6
  font-style: normal;
7
- font-weight: 100 900;
7
+ font-weight: 300;
8
8
  font-display: swap;
9
- src: url('../fonts/inter-tight-latin.woff2') format('woff2');
9
+ src: url('../fonts/Geist-Light.woff2') format('woff2');
10
10
  unicode-range:
11
11
  U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
12
12
  U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
13
13
  }
14
14
 
15
15
  @font-face {
16
- font-family: 'Inter Tight';
16
+ font-family: 'Geist';
17
+ font-style: normal;
18
+ font-weight: 400;
19
+ font-display: swap;
20
+ src: url('../fonts/Geist-Regular.woff2') format('woff2');
21
+ unicode-range:
22
+ U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
23
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
24
+ }
25
+
26
+ @font-face {
27
+ font-family: 'Geist';
28
+ font-style: normal;
29
+ font-weight: 500;
30
+ font-display: swap;
31
+ src: url('../fonts/Geist-Medium.woff2') format('woff2');
32
+ unicode-range:
33
+ U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
34
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
35
+ }
36
+
37
+ @font-face {
38
+ font-family: 'Geist';
39
+ font-style: normal;
40
+ font-weight: 600;
41
+ font-display: swap;
42
+ src: url('../fonts/Geist-SemiBold.woff2') format('woff2');
43
+ unicode-range:
44
+ U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
45
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
46
+ }
47
+
48
+ @font-face {
49
+ font-family: 'Geist';
50
+ font-style: normal;
51
+ font-weight: 700;
52
+ font-display: swap;
53
+ src: url('../fonts/Geist-Bold.woff2') format('woff2');
54
+ unicode-range:
55
+ U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
56
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
57
+ }
58
+
59
+ @font-face {
60
+ font-family: 'Geist';
17
61
  font-style: italic;
18
- font-weight: 100 900;
62
+ font-weight: 400;
19
63
  font-display: swap;
20
- src: url('../fonts/inter-tight-latin-italic.woff2') format('woff2');
64
+ src: url('../fonts/Geist-Italic.woff2') format('woff2');
21
65
  unicode-range:
22
66
  U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
23
67
  U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
24
68
  }
25
69
 
26
- // DM Mono — regular (400) only, latin subset
70
+ // Geist Mono — regular (400) only, latin subset
27
71
  @font-face {
28
- font-family: 'DM Mono';
72
+ font-family: 'Geist Mono';
29
73
  font-style: normal;
30
74
  font-weight: 400;
31
75
  font-display: swap;
32
- src: url('../fonts/dm-mono-400-latin.woff2') format('woff2');
76
+ src: url('../fonts/GeistMono-Regular.woff2') format('woff2');
33
77
  unicode-range:
34
78
  U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
35
79
  U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
@@ -10,28 +10,39 @@
10
10
  padding-left: calc(var(--fui-gutter-x, #{$fui-grid-gutter}) * 0.5);
11
11
  margin-right: auto;
12
12
  margin-left: auto;
13
+
14
+ @media (min-width: $fui-bp-sm) {
15
+ max-width: var(--fui-container-sm);
16
+ }
17
+ @media (min-width: $fui-bp-md) {
18
+ max-width: var(--fui-container-md);
19
+ }
20
+ @media (min-width: $fui-bp-lg) {
21
+ max-width: var(--fui-container-lg);
22
+ }
23
+ @media (min-width: $fui-bp-xl) {
24
+ max-width: var(--fui-container-xl);
25
+ }
26
+ @media (min-width: $fui-bp-2xl) {
27
+ max-width: var(--fui-container-2xl);
28
+ }
13
29
  }
14
30
 
15
31
  .fui-container-sm {
16
- max-width: 540px;
32
+ max-width: var(--fui-container-sm);
17
33
  }
18
-
19
34
  .fui-container-md {
20
- max-width: 720px;
35
+ max-width: var(--fui-container-md);
21
36
  }
22
-
23
37
  .fui-container-lg {
24
- max-width: 960px;
38
+ max-width: var(--fui-container-lg);
25
39
  }
26
-
27
40
  .fui-container-xl {
28
- max-width: 1140px;
41
+ max-width: var(--fui-container-xl);
29
42
  }
30
-
31
- .fui-container-xxl {
32
- max-width: $fui-container-max-width;
43
+ .fui-container-2xl {
44
+ max-width: var(--fui-container-2xl);
33
45
  }
34
-
35
46
  .fui-container-fluid {
36
47
  max-width: none;
37
48
  }
@@ -75,7 +86,7 @@
75
86
  }
76
87
 
77
88
  // Responsive columns
78
- @each $breakpoint in (sm, md, lg, xl, xxl) {
89
+ @each $breakpoint in (sm, md, lg, xl, 2xl) {
79
90
  @include fui-breakpoint($breakpoint) {
80
91
  .fui-col-#{$breakpoint} {
81
92
  flex: 1 0 0%;
@@ -106,7 +117,7 @@
106
117
  }
107
118
  }
108
119
 
109
- @each $breakpoint in (sm, md, lg, xl, xxl) {
120
+ @each $breakpoint in (sm, md, lg, xl, 2xl) {
110
121
  @include fui-breakpoint($breakpoint) {
111
122
  @for $i from 0 through ($fui-grid-columns - 1) {
112
123
  .fui-offset-#{$breakpoint}-#{$i} {
@@ -134,17 +145,17 @@
134
145
  @for $i from 1 through 5 {
135
146
  .fui-g-#{$i},
136
147
  .fui-gx-#{$i} {
137
- --fui-gutter-x: #{$fui-spacing-03 * $i};
148
+ --fui-gutter-x: #{$fui-spacing-4 * $i};
138
149
  }
139
150
 
140
151
  .fui-g-#{$i},
141
152
  .fui-gy-#{$i} {
142
- --fui-gutter-y: #{$fui-spacing-03 * $i};
153
+ --fui-gutter-y: #{$fui-spacing-4 * $i};
143
154
  }
144
155
  }
145
156
 
146
157
  // Responsive gutters
147
- @each $breakpoint in (sm, md, lg, xl, xxl) {
158
+ @each $breakpoint in (sm, md, lg, xl, 2xl) {
148
159
  @include fui-breakpoint($breakpoint) {
149
160
  .fui-g-#{$breakpoint}-0,
150
161
  .fui-gx-#{$breakpoint}-0 {
@@ -159,12 +170,12 @@
159
170
  @for $i from 1 through 5 {
160
171
  .fui-g-#{$breakpoint}-#{$i},
161
172
  .fui-gx-#{$breakpoint}-#{$i} {
162
- --fui-gutter-x: #{$fui-spacing-03 * $i};
173
+ --fui-gutter-x: #{$fui-spacing-4 * $i};
163
174
  }
164
175
 
165
176
  .fui-g-#{$breakpoint}-#{$i},
166
177
  .fui-gy-#{$breakpoint}-#{$i} {
167
- --fui-gutter-y: #{$fui-spacing-03 * $i};
178
+ --fui-gutter-y: #{$fui-spacing-4 * $i};
168
179
  }
169
180
  }
170
181
  }
@@ -1,11 +1,53 @@
1
1
  // Mixins for common patterns
2
2
  @use 'sass:color';
3
+ @use 'sass:map';
4
+ @use 'sass:string';
3
5
  @use './constants' as *;
4
6
 
5
- // Focus ring mixin (Carbon Design System style)
6
- @mixin fui-focus-ring($offset: 2px) {
7
- outline: 2px solid var(--fui-primary);
8
- outline-offset: $offset;
7
+ // CSS identifier escape per nomi che iniziano con cifra (es. 2xl \32 xl).
8
+ // In CSS un identificatore di classe non può iniziare con una cifra senza
9
+ // escape. Lo standard CSS richiede `\3X ` (hex del codice ASCII + space
10
+ // terminatore). Stesso pattern usato da Tailwind.
11
+ //
12
+ // Esempi:
13
+ // css-ident-escape('2xl') → '\32 xl'
14
+ // css-ident-escape('4k') → '\34 k'
15
+ // css-ident-escape('md') → 'md' (no-op)
16
+ @function css-ident-escape($name) {
17
+ $str: '#{$name}';
18
+ $first: string.slice($str, 1, 1);
19
+ $digits: ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
20
+ $hex-map: (
21
+ '0': '\\30',
22
+ '1': '\\31',
23
+ '2': '\\32',
24
+ '3': '\\33',
25
+ '4': '\\34',
26
+ '5': '\\35',
27
+ '6': '\\36',
28
+ '7': '\\37',
29
+ '8': '\\38',
30
+ '9': '\\39',
31
+ );
32
+
33
+ $is-digit: false;
34
+ @each $d in $digits {
35
+ @if $first == $d {
36
+ $is-digit: true;
37
+ }
38
+ }
39
+
40
+ @if $is-digit {
41
+ $hex: map.get($hex-map, $first);
42
+ $rest: string.slice($str, 2);
43
+ @return string.unquote('#{$hex} #{$rest}');
44
+ }
45
+ @return $name;
46
+ }
47
+
48
+ // Focus ring mixin (Carbon Design System style). fui-primary-10 follows figma design
49
+ @mixin fui-focus-ring($width: 2px, $color: var(--fui-primary-10)) {
50
+ outline: $width solid $color;
9
51
  }
10
52
 
11
53
  // Button reset mixin
@@ -54,32 +96,32 @@
54
96
  // Responsive breakpoint mixin
55
97
  @mixin fui-breakpoint($size) {
56
98
  @if $size == xs {
57
- @media (min-width: #{$fui-breakpoint-xs}) {
99
+ @media (min-width: #{$fui-bp-xs}) {
58
100
  @content;
59
101
  }
60
102
  }
61
103
  @if $size == sm {
62
- @media (min-width: #{$fui-breakpoint-sm}) {
104
+ @media (min-width: #{$fui-bp-sm}) {
63
105
  @content;
64
106
  }
65
107
  }
66
108
  @if $size == md {
67
- @media (min-width: #{$fui-breakpoint-md}) {
109
+ @media (min-width: #{$fui-bp-md}) {
68
110
  @content;
69
111
  }
70
112
  }
71
113
  @if $size == lg {
72
- @media (min-width: #{$fui-breakpoint-lg}) {
114
+ @media (min-width: #{$fui-bp-lg}) {
73
115
  @content;
74
116
  }
75
117
  }
76
118
  @if $size == xl {
77
- @media (min-width: #{$fui-breakpoint-xl}) {
119
+ @media (min-width: #{$fui-bp-xl}) {
78
120
  @content;
79
121
  }
80
122
  }
81
- @if $size == xxl {
82
- @media (min-width: #{$fui-breakpoint-xxl}) {
123
+ @if $size == 2xl {
124
+ @media (min-width: #{$fui-bp-2xl}) {
83
125
  @content;
84
126
  }
85
127
  }
@@ -92,22 +134,22 @@
92
134
  @mixin fui-elevation($level: 1) {
93
135
  @if $level == 0 {
94
136
  box-shadow: none;
95
- background-color: var(--fui-surface-00);
137
+ background-color: var(--fui-bg-default);
96
138
  } @else if $level == 1 {
97
- box-shadow: var(--fui-shadow-01);
98
- background-color: var(--fui-surface-01);
139
+ box-shadow: var(--fui-shadow-xs);
140
+ background-color: var(--fui-bg-default);
99
141
  } @else if $level == 2 {
100
- box-shadow: var(--fui-shadow-02);
101
- background-color: var(--fui-surface-02);
142
+ box-shadow: var(--fui-shadow-sm);
143
+ background-color: var(--fui-bg-subtle);
102
144
  } @else if $level == 3 {
103
- box-shadow: var(--fui-shadow-03);
104
- background-color: var(--fui-surface-03);
145
+ box-shadow: var(--fui-shadow-md);
146
+ background-color: var(--fui-bg-muted);
105
147
  } @else if $level == 4 {
106
- box-shadow: var(--fui-shadow-04);
107
- background-color: var(--fui-surface-04);
148
+ box-shadow: var(--fui-shadow-lg);
149
+ background-color: var(--fui-bg-muted);
108
150
  } @else if $level == 5 {
109
- box-shadow: var(--fui-shadow-05);
110
- background-color: var(--fui-surface-05);
151
+ box-shadow: var(--fui-shadow-xl);
152
+ background-color: var(--fui-bg-muted);
111
153
  }
112
154
  }
113
155
 
@@ -116,15 +158,15 @@
116
158
  @if $level == 0 {
117
159
  box-shadow: none;
118
160
  } @else if $level == 1 {
119
- box-shadow: var(--fui-shadow-01);
161
+ box-shadow: var(--fui-shadow-xs);
120
162
  } @else if $level == 2 {
121
- box-shadow: var(--fui-shadow-02);
163
+ box-shadow: var(--fui-shadow-sm);
122
164
  } @else if $level == 3 {
123
- box-shadow: var(--fui-shadow-03);
165
+ box-shadow: var(--fui-shadow-md);
124
166
  } @else if $level == 4 {
125
- box-shadow: var(--fui-shadow-04);
167
+ box-shadow: var(--fui-shadow-lg);
126
168
  } @else if $level == 5 {
127
- box-shadow: var(--fui-shadow-05);
169
+ box-shadow: var(--fui-shadow-xl);
128
170
  }
129
171
  }
130
172
 
@@ -4,48 +4,46 @@
4
4
  // Motion CSS variables are defined in _theme-variables.scss to avoid duplication.
5
5
 
6
6
  // Motion mixins
7
- @mixin fui-motion(
8
- $property: all,
9
- $duration: var(--fui-duration-moderate-01),
10
- $easing: var(--fui-ease-standard),
11
- $delay: 0ms
12
- ) {
13
- transition: $property $duration $easing $delay;
7
+ @mixin fui-motion($property: all, $duration: var(--fui-duration-base), $easing: var(--fui-ease-in-out), $delay: 0ms) {
8
+ transition-property: $property;
9
+ transition-duration: $duration;
10
+ transition-timing-function: $easing;
11
+ transition-delay: $delay;
14
12
  }
15
13
 
16
14
  // Specific motion patterns
17
15
  @mixin fui-motion-fade-in {
18
- @include fui-motion(opacity, var(--fui-duration-fast-02), var(--fui-ease-entrance));
16
+ @include fui-motion(opacity, var(--fui-duration-fast), var(--fui-ease-out));
19
17
  }
20
18
 
21
19
  @mixin fui-motion-fade-out {
22
- @include fui-motion(opacity, var(--fui-duration-fast-01), var(--fui-ease-exit));
20
+ @include fui-motion(opacity, var(--fui-duration-fast), var(--fui-ease-in));
23
21
  }
24
22
 
25
23
  @mixin fui-motion-slide-in($direction: 'bottom') {
26
24
  @if $direction == 'bottom' {
27
- @include fui-motion(transform, var(--fui-duration-moderate-01), var(--fui-ease-entrance));
25
+ @include fui-motion(transform, var(--fui-duration-base), var(--fui-ease-out));
28
26
  transform: translateY(0);
29
27
 
30
28
  &.fui-motion-entering {
31
29
  transform: translateY(1rem);
32
30
  }
33
31
  } @else if $direction == 'top' {
34
- @include fui-motion(transform, var(--fui-duration-moderate-01), var(--fui-ease-entrance));
32
+ @include fui-motion(transform, var(--fui-duration-base), var(--fui-ease-out));
35
33
  transform: translateY(0);
36
34
 
37
35
  &.fui-motion-entering {
38
36
  transform: translateY(-1rem);
39
37
  }
40
38
  } @else if $direction == 'left' {
41
- @include fui-motion(transform, var(--fui-duration-moderate-01), var(--fui-ease-entrance));
39
+ @include fui-motion(transform, var(--fui-duration-base), var(--fui-ease-out));
42
40
  transform: translateX(0);
43
41
 
44
42
  &.fui-motion-entering {
45
43
  transform: translateX(-1rem);
46
44
  }
47
45
  } @else if $direction == 'right' {
48
- @include fui-motion(transform, var(--fui-duration-moderate-01), var(--fui-ease-entrance));
46
+ @include fui-motion(transform, var(--fui-duration-base), var(--fui-ease-out));
49
47
  transform: translateX(0);
50
48
 
51
49
  &.fui-motion-entering {
@@ -55,7 +53,7 @@
55
53
  }
56
54
 
57
55
  @mixin fui-motion-scale-in {
58
- @include fui-motion((transform, opacity), var(--fui-duration-moderate-01), var(--fui-ease-entrance));
56
+ @include fui-motion((transform, opacity), var(--fui-duration-base), var(--fui-ease-out));
59
57
  transform: scale(1);
60
58
  opacity: 1;
61
59
 
@@ -67,10 +65,10 @@
67
65
 
68
66
  @mixin fui-motion-expand($direction: 'vertical') {
69
67
  @if $direction == 'vertical' {
70
- @include fui-motion(max-height, var(--fui-duration-moderate-02), var(--fui-ease-standard));
68
+ @include fui-motion(max-height, var(--fui-duration-moderate), var(--fui-ease-in-out));
71
69
  overflow: hidden;
72
70
  } @else if $direction == 'horizontal' {
73
- @include fui-motion(max-width, var(--fui-duration-moderate-02), var(--fui-ease-standard));
71
+ @include fui-motion(max-width, var(--fui-duration-moderate), var(--fui-ease-in-out));
74
72
  overflow: hidden;
75
73
  }
76
74
  }
@@ -92,9 +90,9 @@
92
90
  opacity: 0;
93
91
  transform: translate(-50%, -50%);
94
92
  transition:
95
- width var(--fui-duration-slow-01) var(--fui-ease-expressive),
96
- height var(--fui-duration-slow-01) var(--fui-ease-expressive),
97
- opacity var(--fui-duration-slow-01) var(--fui-ease-standard);
93
+ width var(--fui-duration-slow) var(--fui-ease-emphasized),
94
+ height var(--fui-duration-slow) var(--fui-ease-emphasized),
95
+ opacity var(--fui-duration-slow) var(--fui-ease-in-out);
98
96
  }
99
97
 
100
98
  &:active::before {
@@ -119,22 +117,22 @@
119
117
 
120
118
  @mixin fui-skeleton-loading {
121
119
  animation: fui-skeleton-pulse 1.5s ease-in-out infinite;
122
- background-color: var(--fui-surface-05);
123
- border-radius: var(--fui-border-radius-md);
120
+ background-color: var(--fui-bg-muted);
121
+ border-radius: var(--fui-radius-md);
124
122
  }
125
123
 
126
124
  // Focus transition
127
125
  @mixin fui-focus-transition {
128
126
  transition:
129
- box-shadow var(--fui-duration-fast-02) var(--fui-ease-standard),
130
- outline var(--fui-duration-fast-02) var(--fui-ease-standard);
127
+ box-shadow var(--fui-duration-fast) var(--fui-ease-in-out),
128
+ outline var(--fui-duration-fast) var(--fui-ease-in-out);
131
129
  }
132
130
 
133
131
  // Hover lift effect
134
132
  @mixin fui-hover-lift {
135
133
  transition:
136
- transform var(--fui-duration-fast-02) var(--fui-ease-standard),
137
- box-shadow var(--fui-duration-fast-02) var(--fui-ease-standard);
134
+ transform var(--fui-duration-fast) var(--fui-ease-in-out),
135
+ box-shadow var(--fui-duration-fast) var(--fui-ease-in-out);
138
136
 
139
137
  &:hover {
140
138
  transform: translateY(-2px);
@@ -145,8 +143,8 @@
145
143
  // Disabled state transition
146
144
  @mixin fui-disabled-transition {
147
145
  transition:
148
- opacity var(--fui-duration-fast-02) var(--fui-ease-standard),
149
- cursor var(--fui-duration-fast-02) var(--fui-ease-standard);
146
+ opacity var(--fui-duration-fast) var(--fui-ease-in-out),
147
+ cursor var(--fui-duration-fast) var(--fui-ease-in-out);
150
148
  }
151
149
 
152
150
  // Loading spinner
@@ -182,7 +180,7 @@
182
180
  }
183
181
 
184
182
  @mixin fui-error-shake {
185
- animation: fui-shake var(--fui-duration-slow-01) var(--fui-ease-standard);
183
+ animation: fui-shake var(--fui-duration-slow) var(--fui-ease-in-out);
186
184
  }
187
185
 
188
186
  // Utility classes for motion
@@ -248,7 +246,7 @@
248
246
  }
249
247
 
250
248
  .fui-slide-in {
251
- animation: fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance);
249
+ animation: fui-slide-in var(--fui-duration-base) var(--fui-ease-out);
252
250
  }
253
251
 
254
252
  // Popover/dropdown entrance — for panels portaled into the overlay container
@@ -268,10 +266,7 @@
268
266
  }
269
267
  }
270
268
 
271
- @mixin fui-motion-popover-enter(
272
- $duration: var(--fui-duration-moderate-01),
273
- $easing: var(--fui-ease-entrance)
274
- ) {
269
+ @mixin fui-motion-popover-enter($duration: var(--fui-duration-base), $easing: var(--fui-ease-out)) {
275
270
  animation: fui-popover-enter $duration $easing both;
276
271
  will-change: transform, opacity;
277
272
  }