@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.
- package/CHANGELOG.md +80 -35
- package/README.md +22 -26
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +39 -41
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +207 -3
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +19 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +5 -12
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-accordion.mjs +8 -5
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-alert.mjs +16 -2
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +255 -462
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-avatar.mjs +34 -59
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button.mjs +15 -20
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-card.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-chip.mjs +97 -0
- package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +69 -29
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +223 -144
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-drawer.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +888 -0
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +774 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-form-field.mjs +81 -50
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-input.mjs +47 -12
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -12
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-password-input.mjs +35 -110
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-popover.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-radio.mjs +5 -6
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-select.mjs +257 -412
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +525 -0
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-stepper.mjs +50 -45
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +194 -154
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs +302 -0
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +10 -4
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-topbar.mjs +60 -0
- package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +59 -69
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree.mjs +31 -5
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-core.mjs +279 -1
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs +93 -0
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +314 -16
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-notification.mjs +93 -29
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-theme.mjs +46 -196
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
- package/fesm2022/raintonic-formaui.mjs +1 -1
- package/fesm2022/raintonic-formaui.mjs.map +1 -1
- package/llms-full.txt +2329 -450
- package/llms.txt +36 -33
- package/package.json +42 -19
- package/styles/fonts/Geist-Bold.woff2 +0 -0
- package/styles/fonts/Geist-Italic.woff2 +0 -0
- package/styles/fonts/Geist-Light.woff2 +0 -0
- package/styles/fonts/Geist-Medium.woff2 +0 -0
- package/styles/fonts/Geist-Regular.woff2 +0 -0
- package/styles/fonts/Geist-SemiBold.woff2 +0 -0
- package/styles/fonts/GeistMono-Regular.woff2 +0 -0
- package/styles/generated/_tokens.scss +906 -0
- package/styles/index.scss +11 -10
- package/styles/partials/_brand.scss +46 -0
- package/styles/partials/_constants.scss +22 -20
- package/styles/partials/_fonts.scss +54 -10
- package/styles/partials/_grid.scss +29 -18
- package/styles/partials/_mixins.scss +69 -27
- package/styles/partials/_motion.scss +28 -33
- package/styles/partials/_theme.scss +28 -255
- package/styles/partials/_type.scss +117 -0
- package/styles/partials/_typography.scss +45 -45
- package/styles/partials/_utilities.scss +198 -98
- package/styles/partials/components/_button.scss +144 -75
- package/styles/partials/components/_dialog.scss +181 -180
- package/styles/partials/components/_overlay.scss +87 -87
- package/styles/partials/themes/_dark.scss +3 -268
- package/styles/partials/themes/_light.scss +4 -268
- package/styles/styles.css +7744 -0
- package/styles/styles.entry.scss +3 -0
- package/styles/utilities.css +4802 -0
- package/styles/utilities.entry.scss +3 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +0 -1
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-form-field.d.ts +118 -2
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-overlay.d.ts +2 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +0 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -1
- package/types/raintonic-formaui-components-alert.d.ts +6 -1
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
- package/types/raintonic-formaui-components-autocomplete.d.ts +73 -116
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
- package/types/raintonic-formaui-components-avatar.d.ts +13 -31
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-button.d.ts +4 -10
- package/types/raintonic-formaui-components-button.d.ts.map +1 -1
- package/types/raintonic-formaui-components-chip.d.ts +43 -0
- package/types/raintonic-formaui-components-chip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +48 -11
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
- package/types/raintonic-formaui-components-date-picker.d.ts +59 -23
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-dropdown-menu.d.ts +394 -0
- package/types/raintonic-formaui-components-dropdown-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts +87 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +51 -21
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-components-input.d.ts +20 -11
- package/types/raintonic-formaui-components-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-number-input.d.ts +5 -3
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-password-input.d.ts +18 -32
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-radio.d.ts +1 -2
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
- package/types/raintonic-formaui-components-select.d.ts +107 -76
- package/types/raintonic-formaui-components-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts +223 -0
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +4 -2
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -1
- package/types/raintonic-formaui-components-strength-meter.d.ts +78 -0
- package/types/raintonic-formaui-components-strength-meter.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +44 -24
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-toggle-group.d.ts +100 -0
- package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +2 -1
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
- package/types/raintonic-formaui-components-topbar.d.ts +48 -0
- package/types/raintonic-formaui-components-topbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +25 -9
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-tree.d.ts +12 -1
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
- package/types/raintonic-formaui-core.d.ts +243 -5
- package/types/raintonic-formaui-core.d.ts.map +1 -1
- package/types/raintonic-formaui-services-breakpoint.d.ts +44 -0
- package/types/raintonic-formaui-services-breakpoint.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +141 -2
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
- package/types/raintonic-formaui-services-notification.d.ts +24 -2
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -1
- package/types/raintonic-formaui-services-theme.d.ts +13 -103
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -1
- package/types/raintonic-formaui.d.ts +1 -1
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +0 -86
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-menu.mjs +0 -896
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +0 -275
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-tag.mjs +0 -95
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +0 -1
- package/styles/_fonts-entry.scss +0 -3
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +0 -73
- package/types/raintonic-formaui-components-big-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-menu.d.ts +0 -403
- package/types/raintonic-formaui-components-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-sidebar.d.ts +0 -185
- package/types/raintonic-formaui-components-sidebar.d.ts.map +0 -1
- package/types/raintonic-formaui-components-tag.d.ts +0 -43
- 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="
|
|
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
|
[](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
|
|
139
|
-
|
|
140
|
-
| **Forms**
|
|
141
|
-
| **Data**
|
|
142
|
-
| **Layout**
|
|
143
|
-
| **Navigation** | `breadcrumb` `
|
|
144
|
-
| **Feedback**
|
|
145
|
-
| **Actions**
|
|
146
|
-
| **Display**
|
|
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
|
|
159
|
-
|
|
160
|
-
| `@raintonic/formaui/cdk/overlay`
|
|
161
|
-
| `@raintonic/formaui/cdk/drag-drop`
|
|
162
|
-
| `@raintonic/formaui/cdk/virtual-scroll` | Virtual scrolling for large lists
|
|
163
|
-
| `@raintonic/formaui/cdk/form-field`
|
|
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
|
|
168
|
-
|
|
169
|
-
| **Dialog**
|
|
170
|
-
| **Notification** | `@raintonic/formaui/services/notification` | Toast notifications
|
|
171
|
-
| **Theme**
|
|
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,
|
|
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.
|
|
256
|
-
this.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
this.
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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.
|
|
275
|
-
this
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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.
|
|
308
|
-
|
|
309
|
-
this
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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();
|