@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/CHANGELOG.md CHANGED
@@ -7,6 +7,73 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - **`FuiTopbarComponent`** (new entry point `@raintonic/formaui/components/topbar`): responsive topbar navigation with a CSS Grid two-row layout. Content projection slots: `[fuiTopbarStart]` (brand/logo), `[fuiTopbarExpand]` (expand toggle), `[fuiTopbarEnd]` (user area/actions), `[fuiTopbarBottomRow]` (tabs/search/secondary row). Menu items rendered as inline buttons via `MenuItem[]` input; `itemClick` output emits the selected `MenuItem`. No built-in tab component — consumers project their own navigation into `[fuiTopbarBottomRow]`.
13
+
14
+ ### Changed
15
+
16
+ - **BREAKING** `FuiAvatarComponent` simplified to design spec:
17
+ - `fullName` is now **required** (`input.required<string>()`)
18
+ - Removed inputs: `shape`, `avatarUrl`, `srcSet`, `sizesAttr`, `name`, `surname`, `identityKey`
19
+ - Removed local state: `imageFailed`, `onImgError()`, `displayImage`
20
+ - New input: `initials` (optional override for computed initials)
21
+ - `size` now supports `'2xl'` (64px) in addition to previous sizes
22
+ - Pixel sizes updated: `xs: 24, sm: 32, md: 40, lg: 48, xl: 56, '2xl': 64`
23
+ - Component is now **initials-only** (no `<img>` tag — use `<fui-avatar>` for initials display only; for image avatars, project an `<img>` into the component)
24
+ - Added tooltip via `FuiTooltipDirective` showing `fullName()`, moved `--fui-avatar-font-size` to inline `font-size` computed style
25
+ - CSS changes: removed image styles (`fui-avatar__img`), border, `--rounded`/`--square` shape variants; initials background uses `--fui-primary-muted`
26
+ - **BREAKING** `FuiTopbarComponent` content projection slots renamed:
27
+ - `[fuiTopbarHeader]` → `[fuiTopbarStart]`
28
+ - `[fuiTopbarTabs]` → `[fuiTopbarBottomRow]`
29
+ - `[fuiTopbarFooter]` → `[fuiTopbarEnd]`
30
+ - Removed `expanded` input and `fui-topbar--expanded` host class (always renders two-row layout with `[fuiTopbarBottomRow]`)
31
+ - Removed `FuiIconComponent` import (no longer used)
32
+ - **BREAKING** `FuiMenuComponent` renamed to `FuiDropdownMenuComponent`:
33
+ - Import path changed from `@raintonic/formaui/components/menu` to `@raintonic/formaui/components/dropdown-menu`
34
+ - Selector changed from `fui-menu` to `fui-dropdown-menu`
35
+ - `FuiMenuItemComponent` → `FuiDropdownMenuItemComponent` (selector `fui-dropdown-menu-item`)
36
+ - `FuiMenuTriggerDirective` → `FuiDropdownMenuTriggerDirective` (selector `[fuiDropdownMenuTrigger]`, input `fuiDropdownMenuTriggerFor`)
37
+ - CSS classes renamed: `.fui-menu` → `.fui-dropdown-menu`, `.fui-menu__panel` → `.fui-dropdown-menu__panel`, `.fui-menu-item` → `.fui-dropdown-menu-item`, `.fui-menu-panel` → `.fui-dropdown-menu-panel`, `.fui-menu-backdrop` → `.fui-dropdown-menu-backdrop`
38
+ - Type aliases renamed: `FuiMenuPosition` → `FuiDropdownMenuPosition`, `FuiMenuSize` → `FuiDropdownMenuSize`, `MenuItemVariant` → `DropdownMenuItemVariant`
39
+ - Constants renamed: `RT_MENU_POSITIONS` → `FUI_DROPDOWN_MENU_POSITIONS`, `RT_MENU_SIZES` → `FUI_DROPDOWN_MENU_SIZES`, `MENU_ITEM_VARIANTS` → `DROPDOWN_MENU_ITEM_VARIANTS`
40
+ - Old `lib/components/menu/` directory removed; re-created as `lib/components/dropdown-menu/`
41
+ - All internal consumers updated (`FuiAdvancedDataTableComponent`, toolbar overlay, topbar docs page)
42
+ - **`FuiToolbarComponent`**: `fui-avatar` usage updated to new API (`fullName` input only; placeholder value `"None"`)
43
+
44
+ ### Removed
45
+
46
+ - **`FuiBigMenuComponent`** (entry point `@raintonic/formaui/components/big-menu`) completely removed. Files deleted:
47
+ - Component files: `big-menu.component.ts`, `big-menu.component.html`, `big-menu.component.scss`
48
+ - Item interface: `big-menu-item.interface.ts`
49
+ - Internationalization: `big-menu.intl.ts`, `big-menu.intl.spec.ts`
50
+ - Tests: `big-menu.component.spec.ts`
51
+ - Entry points: `index.ts`, `ng-package.json`
52
+ - Doc pages: `big-menu.page.html`, `big-menu.page.ts`
53
+ - Entry removed from component registry and docs routes
54
+ - References purged from `README.md`, `lib/README.md`, and `docs/src/app/pages/i18n/i18n.page.ts`
55
+
56
+ ### Changed
57
+
58
+ - **BREAKING** `FuiTagComponent` renamed to `FuiChipComponent`:
59
+ - Import path changed from `@raintonic/formaui/components/tag` to `@raintonic/formaui/components/chip`
60
+ - Selector changed from `fui-tag` to `fui-chip`
61
+ - `FuiTagComponent` → `FuiChipComponent`
62
+ - `FuiTagIntl` → `FuiChipIntl`
63
+ - `FuiTagVariant` → `FuiChipVariant`
64
+ - `FuiTagSize` → `FuiChipSize`
65
+ - `FUI_TAG_VARIANTS` → `FUI_CHIP_VARIANTS`
66
+ - `FuiTagRemoveEvent` → `FuiChipRemoveEvent` (event shape property `tag` renamed to `chip`)
67
+ - CSS classes renamed: `.fui-tag` → `.fui-chip`, `.fui-tag--{variant}` → `.fui-chip--{variant}`, `.fui-tag__content` → `.fui-chip__content`, `.fui-tag__label` → `.fui-chip__label`, `.fui-tag__icon` → `.fui-chip__icon`, `.fui-tag__remove` → `.fui-chip__remove`
68
+ - Old `lib/components/tag/` directory removed; re-created as `lib/components/chip/`
69
+ - All doc pages, registry entries, routes, and i18n references updated
70
+
71
+ ### Fixed
72
+
73
+ - **FuiToolbarComponent**: avatar hardcoded `fullName="None"` as stopgap — toolbar needs user-profile data wired through (no functional regression)
74
+
75
+ ## [1.0.0-alpha.1] - 2026-06-04
76
+
10
77
  ### Changed
11
78
 
12
79
  - **BREAKING** `FuiButtonDirective` variant set reduced to the Figma spec: `primary | secondary | tertiary | tertiary-violet | link | destructive`.
@@ -15,59 +82,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
82
  - `variant="danger"` → use `variant="destructive"`.
16
83
  - `variant="icon"` → use `iconOnly` combined with a variant (typically `tertiary`).
17
84
  - **BREAKING** Button `loading` behavior: text is now visible during loading; the spinner occupies a leading slot; user-supplied icons (leading and trailing) are hidden during loading. Previously the entire label was hidden via `color: transparent`.
85
+ - **BREAKING** Responsive utility classes migrated to Tailwind-style colon syntax. The legacy Bootstrap-style classes `.fui-{bp}-{display}`, `.fui-{m,p}{,t,r,b,l,x,y}-{bp}-{size}`, and `.fui-text-{bp}-{align}` (where `{bp}` is `sm|md|lg|xl|2xl`) are removed. Use the colon prefix instead: `.{bp}:fui-{utility}` (e.g. `md:fui-flex`, `lg:fui-grid-cols-3`, `md:fui-px-4`, `lg:fui-text-center`). Responsive variants of `grid-cols-1..12` are now available. Bootstrap-style grid classes (`.fui-col-{bp}-N`, `.fui-offset-{bp}-N`, `.fui-g{,x,y}-{bp}-N`) are **unchanged**. No known consumer usages of the removed classes.
18
86
 
19
87
  ### Added
20
88
 
21
89
  - Semantic alias tokens: `--fui-destructive-default`, `--fui-destructive-hover`, `--fui-destructive-text`, `--fui-tertiary-text`, `--fui-tertiary-hover-bg`, `--fui-tertiary-violet-text`, `--fui-tertiary-violet-hover-bg`.
90
+ - `FuiBreakpointService` (new entry point `@raintonic/formaui/services/breakpoint`): signal-based, SSR-safe access to the 6 PRD breakpoints (`xs|sm|md|lg|xl|2xl`). API: `matches(bp): Signal<boolean>` (same semantics as `@media (min-width: …)`) and `active: Signal<FuiBreakpoint | null>` (largest matched mobile-first; `null` below `xs` or on the server). Thresholds (`FUI_BREAKPOINTS`) kept in sync with `tokens/core/layout.json` and `_constants.scss`, drift detected by a unit test.
91
+ - Precompiled `utilities.css` shipped as an asset under `@raintonic/formaui/styles/utilities.css`. Lets consumers who don't use Sass `@import '@raintonic/formaui/styles/utilities.css'` to get the full utility-class output of `_utilities.scss` (display, spacing m/p/gap, text-align/color/transform/decoration, position, border, rounded, visibility, overflow, width, height, density, grid-cols, stack, flex utilities + responsive variants `{bp}:fui-*` for `sm|md|lg|xl|2xl` × `display|spacing|text-align|grid-cols`). ~50 KB unminified. Built via `scripts/build-utilities-css.mjs` in the `prebuild:lib` hook. NOT included: tokens (`:root`), Bootstrap grid (`_grid.scss`), reset CSS, component globals — consumers still need the FormaUI theme bundle for `var(--fui-*)` to resolve. Configurable customization remains available via the SCSS path `@use '@raintonic/formaui/styles/partials/utilities' with (…)`. See `docs/.../consumer-override-guide.md` § "Utility CSS precompilato (no Sass)" for details.
92
+ - Subpath aliases via the `exports` field of `lib/package.json`: `@raintonic/formaui/utilities` (alias for the precompiled `utilities.css` shipped in U4) and `@raintonic/formaui/styles` (alias for the SCSS entry `styles/index.scss`). The legacy long paths (`@raintonic/formaui/styles/utilities.css`, `@raintonic/formaui/styles/index.scss`, and any other file under `styles/**`) keep working thanks to a `./styles/*` wildcard. No breaking change.
93
+ - Precompiled full bundle `styles.css` shipped as an asset under `@raintonic/formaui/styles.css` (long path `@raintonic/formaui/styles/styles.css` works too). Drop-in CSS containing tokens (`:root`), reset, theme, typography, motion, grid, utilities, and component globals — ~135 KB unminified. Built via `scripts/build-styles-css.mjs` in the `prebuild:lib` hook. Unlike `utilities.css`, this includes the tokens block so it works standalone (no theme import required). Use the SCSS path `@use '@raintonic/formaui/styles' as fui` for configurable customization (rebrand, breakpoints, opt-out responsive families).
94
+ - Safety hardening of the publish flow: `lib/package.json` now ships a `prepublishOnly` hook that blocks direct `npm publish ./dist/formaui` unless invoked via `npm run publish:lib` (which sets the `FORMAUI_PUBLISH=1` escape env var). This prevents accidental publishes that bypass the lint/test/build/parity/size gates. `scripts/publish.mjs` also gained an explicit `tokens:verify-parity` gate between build and size check.
95
+ - Public SCSS API contract formalized: `fui.brand($primary, $accent)` is the SOLE stable mixin exposed via `@use '@raintonic/formaui/styles' as fui`. Other forwarded members (e.g. `fui-breakpoint`, `$fui-spacing-N`, `css-ident-escape`) remain internal and may change in minor versions without notice. See `docs/.../consumer-override-guide.md` § "Public SCSS API contract".
96
+ - Sass utility API now configurable via `@use '@raintonic/formaui/styles/partials/utilities' with (…)`. Two new parameters with `!default` values: `$breakpoints` (map, default = `(sm, md, lg, xl, '2xl')`) lets consumers rename or replace the responsive-prefix names; `$responsive-families` (map of booleans, default = all `true`) lets consumers opt-out individual responsive families (`display`, `spacing`, `text-align`, `grid-cols`) to trim CSS bulk. Defaults produce byte-identical CSS to the previous emission (parity preserved). Names with a leading digit (e.g. `2xl`) are auto-escaped via the new `css-ident-escape()` helper in `_mixins.scss`. See `docs/.../consumer-override-guide.md` § "Configurare le utility responsive" for examples.
22
97
 
23
98
  ### Fixed
24
99
 
25
100
  - Destructive variant now uses a saturated red (`--fui-danger-90` = `#e5484d`) instead of the pastel `--fui-danger-60` (`#fdbdbe`) that was incorrectly wired as the button's `danger` background.
26
101
 
27
- ## [1.0.0] - YYYY-MM-DD (placeholder — release script will set the date)
28
-
29
- First stable release. API is now locked under SemVer from this version forward.
30
-
31
- ### Breaking
32
- - Removed experimental `dynamic-form` component and its entry point (`@raintonic/formaui/components/dynamic-form`). No direct migration path — consumers should use reactive forms directly.
33
-
34
- ### Added
35
- - Pre-publication component audit (see `.claude/docs/reviews/`)
36
- - Bundle size budget enforced via `size-limit`
37
- - Coverage threshold enforced at 60% in CI
38
- - Explicit `.browserslistrc` for library
39
- - GitHub Pages deploy for docs at https://formaui.raintonic.com
40
- - PR validation CI workflow
41
- - Theming guide page in docs app
42
- - `.meta.md` metadata for flagship components
43
- - LICENSE, SECURITY.md, CONTRIBUTING.md
44
- - Tests for 8 previously uncovered components: breadcrumb, empty-state, list, radio, skeleton, spinner, tag, toggle
45
- - Auto-sync of `FORMAUI_VERSION` from `package.json` at build time
46
- - Syntax highlighting in docs code blocks (Prism.js)
47
- - Custom color support for badges via hex strings or explicit color pairs
48
- - Type declaration for `AdvancedDataTableHeader.type`
49
-
50
- ### Fixed
51
- - README package name in install and import examples (was `formaui/*`, now `@raintonic/formaui/*`)
52
- - Cross-entry-point import in tree-table (ng-packagr rootDir violation)
53
- - Topbar layout on mobile viewport (< 768px)
54
- - Nav panel position on mobile
55
- - API viewer type-column overflow for long union types
56
- - Select component keyboard navigation (added PageUp/PageDown)
57
- - JSDoc examples with stale `rtButton` references
58
- - Card header spacing handling
59
- - Checkbox label position when set to `before`
60
- - Toggle label position when set to `before`
61
-
62
102
  ## [0.2.1] - 2026-03-31
63
103
 
64
104
  ### Fixed
105
+
65
106
  - Dialog padding on overlay and CSS compile pipeline
66
107
  - README npm badge link
67
108
 
68
109
  ## [0.2.0] - 2026-03-31
69
110
 
70
111
  ### Added
112
+
71
113
  - Initial public npm publication as `@raintonic/formaui`
72
114
  - Comprehensive README for npm
73
115
  - `llms.txt` generator for AI-readable component metadata
@@ -79,6 +121,7 @@ First stable release. API is now locked under SemVer from this version forward.
79
121
  - Collapsible code panel in playground viewer
80
122
 
81
123
  ### Fixed
124
+
82
125
  - Number input behavior
83
126
  - Module name mapper for publication
84
127
  - Package name for publication
@@ -86,6 +129,7 @@ First stable release. API is now locked under SemVer from this version forward.
86
129
  - Icon config exports aligned with Fui naming
87
130
 
88
131
  ### Changed
132
+
89
133
  - Standardized all class names to `Fui` prefix (internal rename — no external API was called `Rt*`)
90
134
  - Replaced direct `document` access with `DOCUMENT` injection token (SSR groundwork)
91
135
  - Overlay subscription cleanup (memory leak fix)
@@ -96,6 +140,7 @@ First stable release. API is now locked under SemVer from this version forward.
96
140
  - Size tokens normalized (`sm|md|lg`), `readonly` casing normalized, ARIA attributes enriched, live announcements added
97
141
 
98
142
  ### Removed
143
+
99
144
  - Legacy `holiday`/`RainTonic` references in JSDoc
100
145
  - `data-rt*` HTML attributes (renamed to `data-fui*`)
101
146
 
package/README.md CHANGED
@@ -1,9 +1,6 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/RainTonic/formaui/main/resources/logo_black.svg" alt="FormaUI" width="360">
2
+ <img src="./resources/logo_white.svg" alt="FormaUI" width="360">
3
3
  </p>
4
-
5
- <h1 align="center">FormaUI</h1>
6
-
7
4
  <p align="center">A modern, standalone Angular UI component library with built-in theming, CDK primitives, and tree-shakable imports.</p>
8
5
 
9
6
  [![npm version](https://img.shields.io/npm/v/@raintonic/formaui.svg)](https://www.npmjs.com/package/@raintonic/formaui)
@@ -104,8 +101,7 @@ import { FuiThemeService } from '@raintonic/formaui/services/theme';
104
101
  ### Button
105
102
 
106
103
  ```html
107
- <button fuiButton variant="primary">Save</button>
108
- <button fuiButton variant="secondary">Cancel</button>
104
+ <button fuiButton variant="primary">Save</button> <button fuiButton variant="secondary">Cancel</button>
109
105
  ```
110
106
 
111
107
  ### Form Field
@@ -135,15 +131,15 @@ export class AppComponent {
135
131
 
136
132
  All components use the `fui` prefix and are standalone.
137
133
 
138
- | Category | Components |
139
- |---|---|
140
- | **Forms** | `autocomplete` `checkbox` `date-picker` `file-upload` `form-field` `input` `number-input` `password-input` `radio` `select` `slider` `time-picker` `toggle` `tree-select` |
141
- | **Data** | `data-table` `list` `paginator` `tree` `tree-table` |
142
- | **Layout** | `accordion` `card` `divider` `sidebar` `side-panel` `tab` `toolbar` |
143
- | **Navigation** | `breadcrumb` `menu` `big-menu` `stepper` |
144
- | **Feedback** | `alert` `badge` `empty-state` `progressbar` `skeleton` `spinner` `tag` `tooltip` |
145
- | **Actions** | `button` `button-group` `drawer` `popover` |
146
- | **Display** | `avatar` `icon` |
134
+ | Category | Components |
135
+ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
136
+ | **Forms** | `autocomplete` `checkbox` `date-picker` `file-upload` `form-field` `input` `number-input` `password-input` `radio` `select` `slider` `time-picker` `toggle` `tree-select` |
137
+ | **Data** | `data-table` `list` `paginator` `tree` `tree-table` |
138
+ | **Layout** | `accordion` `card` `divider` `side-panel` `sidebar-nav-menu` `tab` `toolbar` `topbar` |
139
+ | **Navigation** | `breadcrumb` `stepper` |
140
+ | **Feedback** | `alert` `badge` `chip` `empty-state` `progressbar` `skeleton` `spinner` `tooltip` |
141
+ | **Actions** | `button` `button-group` `drawer` `popover` |
142
+ | **Display** | `avatar` `icon` |
147
143
 
148
144
  ### Import Pattern
149
145
 
@@ -155,20 +151,20 @@ import { Fui<Component> } from '@raintonic/formaui/components/<name>';
155
151
 
156
152
  Low-level primitives for building custom components.
157
153
 
158
- | Module | Description |
159
- |---|---|
160
- | `@raintonic/formaui/cdk/overlay` | Overlay and portal positioning system |
161
- | `@raintonic/formaui/cdk/drag-drop` | Drag and drop functionality |
162
- | `@raintonic/formaui/cdk/virtual-scroll` | Virtual scrolling for large lists |
163
- | `@raintonic/formaui/cdk/form-field` | Form field infrastructure and control interface |
154
+ | Module | Description |
155
+ | --------------------------------------- | ----------------------------------------------- |
156
+ | `@raintonic/formaui/cdk/overlay` | Overlay and portal positioning system |
157
+ | `@raintonic/formaui/cdk/drag-drop` | Drag and drop functionality |
158
+ | `@raintonic/formaui/cdk/virtual-scroll` | Virtual scrolling for large lists |
159
+ | `@raintonic/formaui/cdk/form-field` | Form field infrastructure and control interface |
164
160
 
165
161
  ## Services
166
162
 
167
- | Service | Import | Description |
168
- |---|---|---|
169
- | **Dialog** | `@raintonic/formaui/services/dialog` | Modal dialog management |
170
- | **Notification** | `@raintonic/formaui/services/notification` | Toast notifications |
171
- | **Theme** | `@raintonic/formaui/services/theme` | Runtime theme switching |
163
+ | Service | Import | Description |
164
+ | ---------------- | ------------------------------------------ | ----------------------- |
165
+ | **Dialog** | `@raintonic/formaui/services/dialog` | Modal dialog management |
166
+ | **Notification** | `@raintonic/formaui/services/notification` | Toast notifications |
167
+ | **Theme** | `@raintonic/formaui/services/theme` | Runtime theme switching |
172
168
 
173
169
  ## Theming
174
170
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Injectable, input, output, inject, ElementRef, Renderer2, NgZone, Directive, effect, contentChildren } from '@angular/core';
2
+ import { signal, Injectable, input, output, inject, ElementRef, Renderer2, Directive, effect, contentChildren } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
 
5
5
  class FuiDragRegistryService {
@@ -210,7 +210,6 @@ class FuiDragDirective {
210
210
  _registry = inject(FuiDragRegistryService);
211
211
  _renderer = inject(Renderer2);
212
212
  _document = inject(DOCUMENT);
213
- _ngZone = inject(NgZone);
214
213
  _autoScroller = new FuiAutoScroller();
215
214
  _dragRef = new FuiDragRef();
216
215
  _previewElement = null;
@@ -252,16 +251,14 @@ class FuiDragDirective {
252
251
  distance: { x: 0, y: 0 },
253
252
  event,
254
253
  });
255
- this._ngZone.runOutsideAngular(() => {
256
- this._pointerMoveHandler = (e) => {
257
- this._onPointerMove(e);
258
- };
259
- this._pointerUpHandler = (e) => {
260
- this._onPointerUp(e);
261
- };
262
- this._document.addEventListener('pointermove', this._pointerMoveHandler);
263
- this._document.addEventListener('pointerup', this._pointerUpHandler);
264
- });
254
+ this._pointerMoveHandler = (e) => {
255
+ this._onPointerMove(e);
256
+ };
257
+ this._pointerUpHandler = (e) => {
258
+ this._onPointerUp(e);
259
+ };
260
+ this._document.addEventListener('pointermove', this._pointerMoveHandler);
261
+ this._document.addEventListener('pointerup', this._pointerUpHandler);
265
262
  }
266
263
  _onPointerMove(event) {
267
264
  const position = this._applyConstraints({ x: event.clientX, y: event.clientY });
@@ -271,14 +268,12 @@ class FuiDragDirective {
271
268
  }
272
269
  this._autoScroller.checkAutoScroll(position);
273
270
  this._registry.updateDrag(position, event);
274
- this._ngZone.run(() => {
275
- this.fuiDragMoved.emit({
276
- source: this,
277
- data: this.fuiDragData(),
278
- pointerPosition: position,
279
- distance: this._dragRef.distance,
280
- event,
281
- });
271
+ this.fuiDragMoved.emit({
272
+ source: this,
273
+ data: this.fuiDragData(),
274
+ pointerPosition: position,
275
+ distance: this._dragRef.distance,
276
+ event,
282
277
  });
283
278
  }
284
279
  _onPointerUp(event) {
@@ -290,31 +285,27 @@ class FuiDragDirective {
290
285
  const predicate = dropZone.fuiDropZonePredicate();
291
286
  const accepted = !predicate || predicate(this);
292
287
  if (accepted) {
293
- this._ngZone.run(() => {
294
- const dropEvent = {
295
- source: this,
296
- dragData: this.fuiDragData(),
297
- dropZoneData: dropZone.fuiDropZoneData(),
298
- dropZone,
299
- isPointerOverContainer: true,
300
- };
301
- this.fuiDragDropped.emit(dropEvent);
302
- dropZone.fuiDropped.emit(dropEvent);
303
- });
288
+ const dropEvent = {
289
+ source: this,
290
+ dragData: this.fuiDragData(),
291
+ dropZoneData: dropZone.fuiDropZoneData(),
292
+ dropZone,
293
+ isPointerOverContainer: true,
294
+ };
295
+ this.fuiDragDropped.emit(dropEvent);
296
+ dropZone.fuiDropped.emit(dropEvent);
304
297
  }
305
298
  }
306
299
  this._cleanupDrag();
307
- this._ngZone.run(() => {
308
- this._registry.endDrag(event);
309
- this.fuiDragEnded.emit({
310
- source: this,
311
- data: this.fuiDragData(),
312
- pointerPosition: position,
313
- distance: this._dragRef.distance,
314
- event,
315
- });
316
- this._isDragging.set(false);
300
+ this._registry.endDrag(event);
301
+ this.fuiDragEnded.emit({
302
+ source: this,
303
+ data: this.fuiDragData(),
304
+ pointerPosition: position,
305
+ distance: this._dragRef.distance,
306
+ event,
317
307
  });
308
+ this._isDragging.set(false);
318
309
  this._dragRef.reset();
319
310
  }
320
311
  _onKeydown(event) {
@@ -517,6 +508,13 @@ class FuiDragDirective {
517
508
  }
518
509
  }
519
510
  ngOnDestroy() {
511
+ // If the component is destroyed mid-drag, clear the registry first so its
512
+ // activeDrag signal doesn't keep a strong reference to this directive (memory
513
+ // leak until next drag overwrites) and so getDropZoneAtPoint doesn't return
514
+ // stale results in the window between destroy and next drag start.
515
+ if (this._isDragging()) {
516
+ this._registry.cancelDrag();
517
+ }
520
518
  this._removeListeners();
521
519
  this._cleanupDrag();
522
520
  this._autoScroller.destroy();