@underlayerdev/ui 0.3.0 → 0.5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@underlayerdev/ui",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^22.0.0",
6
6
  "@angular/common": "^22.0.0",
@@ -1972,6 +1972,35 @@ a:active {
1972
1972
  -webkit-line-clamp: 3;
1973
1973
  }
1974
1974
 
1975
+ .ul-hidden {
1976
+ display: none;
1977
+ }
1978
+
1979
+ @media screen and (min-width: 0px) {
1980
+ .xs\:ul-hidden {
1981
+ display: none;
1982
+ }
1983
+ }
1984
+ @media screen and (min-width: 768px) {
1985
+ .sm\:ul-hidden {
1986
+ display: none;
1987
+ }
1988
+ }
1989
+ @media screen and (min-width: 1024px) {
1990
+ .md\:ul-hidden {
1991
+ display: none;
1992
+ }
1993
+ }
1994
+ @media screen and (min-width: 1280px) {
1995
+ .lg\:ul-hidden {
1996
+ display: none;
1997
+ }
1998
+ }
1999
+ @media screen and (min-width: 1600px) {
2000
+ .xl\:ul-hidden {
2001
+ display: none;
2002
+ }
2003
+ }
1975
2004
  .ul- {
1976
2005
  /*
1977
2006
  gap-{size} (both row and column)
@@ -462,23 +462,46 @@ declare class DockComponent {
462
462
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockComponent, "ul-dock", never, {}, {}, never, ["*"], true, never>;
463
463
  }
464
464
 
465
+ /** Place on the element projected into [ul-dock-item-content] so the dock item renders custom content instead of its default icon+label. */
466
+ declare class DockItemContentSlotDirective {
467
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockItemContentSlotDirective, never>;
468
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DockItemContentSlotDirective, "[ul-dock-item-content]", never, {}, {}, never, never, true, never>;
469
+ }
470
+
471
+ /** Pre-built visual treatments for a dock item. 'accent' raises/highlights the item (e.g. a primary action tab like "New"). */
472
+ type DockItemVariant = 'default' | 'accent';
465
473
  /**
466
474
  * A single tab in a `ul-dock`. Renders an icon above a label and tints both
467
475
  * when `active`. Attach `routerLink`/`routerLinkActive` (or any other
468
- * directive) directly on `ul-dock-item` for navigation — it has no
469
- * projection slots of its own, since its content (icon + label) is fully
470
- * data-driven via inputs.
476
+ * directive) directly on `ul-dock-item` for navigation.
477
+ *
478
+ * For the common case, content is data-driven via `icon`/`label`. To fully
479
+ * customize an item's content (e.g. a differently laid-out icon+label pair),
480
+ * project it with `[ul-dock-item-content]` — this replaces the default
481
+ * icon/label rendering entirely. `badge` and `variant` apply regardless of
482
+ * which content path is used.
471
483
  *
472
484
  * @example
473
- * <ul-dock-item icon="home" label="Home" [active]="true" routerLink="/home" />
485
+ * <ul-dock-item icon="home" label="Home" routerLink="/home" routerLinkActive="ul-dock-item--active" />
486
+ * <ul-dock-item icon="bell_on" badge="3" routerLink="/notifications" />
487
+ * <ul-dock-item variant="accent" routerLink="/listings/new">
488
+ * <span ul-dock-item-content>
489
+ * <ul-icon icon="plus" size="6" />
490
+ * <span class="ul-dock-item__label">New</span>
491
+ * </span>
492
+ * </ul-dock-item>
474
493
  */
475
494
  declare class DockItemComponent {
476
- icon: _angular_core.InputSignal<string>;
495
+ icon: _angular_core.InputSignal<string | undefined>;
477
496
  label: _angular_core.InputSignal<string>;
478
497
  active: _angular_core.InputSignal<boolean>;
479
498
  disabled: _angular_core.InputSignal<boolean>;
499
+ badge: _angular_core.InputSignal<string | number | undefined>;
500
+ variant: _angular_core.InputSignal<DockItemVariant>;
501
+ readonly contentSlot: _angular_core.Signal<DockItemContentSlotDirective | undefined>;
502
+ readonly hasContentSlot: _angular_core.Signal<boolean>;
480
503
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockItemComponent, never>;
481
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockItemComponent, "ul-dock-item", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
504
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockItemComponent, "ul-dock-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, ["contentSlot"], ["[ul-dock-item-content]"], true, never>;
482
505
  }
483
506
 
484
507
  type ListItemTheme = 'ghost-white' | 'transparent-white' | 'outline-white' | 'outline-purple';
@@ -949,7 +972,7 @@ declare class NavbarAppNameSlotDirective {
949
972
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavbarAppNameSlotDirective, "[ul-navbar-app-name]", never, {}, {}, never, never, true, never>;
950
973
  }
951
974
 
952
- /** 'full' shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo — for auth pages and other chromeless flows. */
975
+ /** 'full' shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo — for auth pages and other chromeless flows. See also `searchCollapsible` for whether the search slot collapses to an icon-toggle on mobile. */
953
976
  type NavbarVariant = 'full' | 'minimal';
954
977
  declare class NavbarComponent {
955
978
  /** 'full' (default) shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo. */
@@ -970,6 +993,8 @@ declare class NavbarComponent {
970
993
  sidebarOpen: _angular_core.InputSignal<boolean>;
971
994
  /** When true, show the sidebar toggle button even when a logo slot is projected. */
972
995
  showSidebarToggle: _angular_core.InputSignal<boolean>;
996
+ /** When false, the projected search slot is always rendered expanded (no icon-toggle collapse on mobile) — use for apps that want search visible and full-width at every viewport. */
997
+ searchCollapsible: _angular_core.InputSignal<boolean>;
973
998
  /** Emitted when the user clicks the sidebar toggle. Parent should flip the open state. */
974
999
  sidebarToggle: _angular_core.OutputEmitterRef<void>;
975
1000
  readonly logoSlot: _angular_core.Signal<NavbarLogoSlotDirective | undefined>;
@@ -979,6 +1004,7 @@ declare class NavbarComponent {
979
1004
  readonly isMinimal: _angular_core.Signal<boolean>;
980
1005
  readonly hasLogoSlot: _angular_core.Signal<boolean>;
981
1006
  readonly hasSearchSlot: _angular_core.Signal<boolean>;
1007
+ readonly showSearchToggle: _angular_core.Signal<boolean>;
982
1008
  readonly hasAvatarSlot: _angular_core.Signal<boolean>;
983
1009
  readonly hasAppNameSlot: _angular_core.Signal<boolean>;
984
1010
  readonly showToggle: _angular_core.Signal<boolean>;
@@ -986,7 +1012,7 @@ declare class NavbarComponent {
986
1012
  toggleSearch(): void;
987
1013
  toggleSidebar(): void;
988
1014
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
989
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavbarComponent, "ul-navbar", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "logoHref": { "alias": "logoHref"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "logoAlt": { "alias": "logoAlt"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarAlt": { "alias": "avatarAlt"; "required": false; "isSignal": true; }; "sidebarOpen": { "alias": "sidebarOpen"; "required": false; "isSignal": true; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; "isSignal": true; }; }, { "sidebarToggle": "sidebarToggle"; }, ["logoSlot", "searchSlot", "avatarSlot", "appNameSlot"], ["[ul-navbar-logo]", "[ul-navbar-app-name]", "[ul-navbar-search]", "[ul-navbar-avatar]"], true, never>;
1015
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavbarComponent, "ul-navbar", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "logoHref": { "alias": "logoHref"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "logoAlt": { "alias": "logoAlt"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarAlt": { "alias": "avatarAlt"; "required": false; "isSignal": true; }; "sidebarOpen": { "alias": "sidebarOpen"; "required": false; "isSignal": true; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; "isSignal": true; }; "searchCollapsible": { "alias": "searchCollapsible"; "required": false; "isSignal": true; }; }, { "sidebarToggle": "sidebarToggle"; }, ["logoSlot", "searchSlot", "avatarSlot", "appNameSlot"], ["[ul-navbar-logo]", "[ul-navbar-app-name]", "[ul-navbar-search]", "[ul-navbar-avatar]"], true, never>;
990
1016
  }
991
1017
 
992
1018
  type PillSize = 'md' | 'lg';
@@ -1544,5 +1570,5 @@ declare class TextareaComponent implements FormValueControl<string> {
1544
1570
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ul-textarea", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "groupFocused": { "alias": "groupFocused"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; "value": "valueChange"; "inputBlur": "inputBlur"; "inputFocus": "inputFocus"; }, ["customField"], ["[ul-textarea-left-elements]", "[ul-textarea-field]", "[ul-textarea-right-elements]"], true, never>;
1545
1571
  }
1546
1572
 
1547
- export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
1548
- export type { ActionsDistribution, AvatarData, BreadcrumbItem, BreadcrumbSeparator, CalendarDay, CalendarMode, CardCaptionSize, CardDirection, CheckboxZoneType, CollapseVariant, Currency, DropdownItem, FileInputAppearance, HeroAction, HeroAlignment, HeroSize, IconName, IconSize, IconWeight, InputAppearance, InputType, ListItemTheme, MediaAspectRatio, ModalVariant, PillSize, PillTheme, PillVariant, RadioGroupOption, RichTextSize, RichTextTone, SalePosition, SearchSelectOption, SelectOption, SidebarItem, SkeletonBorderRadius, SkeletonVariant, SortDirection, Status, TableColumn, TextareaResize, TimeSelection, ToastConfig, ToastKind, ToastWithRole, TooltipPosition };
1573
+ export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
1574
+ export type { ActionsDistribution, AvatarData, BreadcrumbItem, BreadcrumbSeparator, CalendarDay, CalendarMode, CardCaptionSize, CardDirection, CheckboxZoneType, CollapseVariant, Currency, DockItemVariant, DropdownItem, FileInputAppearance, HeroAction, HeroAlignment, HeroSize, IconName, IconSize, IconWeight, InputAppearance, InputType, ListItemTheme, MediaAspectRatio, ModalVariant, PillSize, PillTheme, PillVariant, RadioGroupOption, RichTextSize, RichTextTone, SalePosition, SearchSelectOption, SelectOption, SidebarItem, SkeletonBorderRadius, SkeletonVariant, SortDirection, Status, TableColumn, TextareaResize, TimeSelection, ToastConfig, ToastKind, ToastWithRole, TooltipPosition };