@underlayerdev/ui 0.1.0 → 0.3.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.1.0",
3
+ "version": "0.3.0",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^22.0.0",
6
6
  "@angular/common": "^22.0.0",
@@ -442,6 +442,45 @@ declare class CollapseComponent implements AfterViewInit {
442
442
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CollapseComponent, "ul-collapse", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": true; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
443
443
  }
444
444
 
445
+ /**
446
+ * Mobile-only bottom navigation bar, styled like an app's tab bar
447
+ * (icon-above-label items, one highlighted as active). Hidden above the
448
+ * 'md' breakpoint (1024px) by the component's own CSS — no wrapper class or
449
+ * media query is needed in the consuming app.
450
+ *
451
+ * Project `ul-dock-item`s directly; there is no data-driven `items` input,
452
+ * since each item typically needs its own `routerLink`.
453
+ *
454
+ * @example
455
+ * <ul-dock>
456
+ * <ul-dock-item icon="home" label="Home" routerLink="/home" routerLinkActive="ul-dock-item--active" />
457
+ * <ul-dock-item icon="search" label="Search" routerLink="/search" routerLinkActive="ul-dock-item--active" />
458
+ * </ul-dock>
459
+ */
460
+ declare class DockComponent {
461
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockComponent, never>;
462
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockComponent, "ul-dock", never, {}, {}, never, ["*"], true, never>;
463
+ }
464
+
465
+ /**
466
+ * A single tab in a `ul-dock`. Renders an icon above a label and tints both
467
+ * 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.
471
+ *
472
+ * @example
473
+ * <ul-dock-item icon="home" label="Home" [active]="true" routerLink="/home" />
474
+ */
475
+ declare class DockItemComponent {
476
+ icon: _angular_core.InputSignal<string>;
477
+ label: _angular_core.InputSignal<string>;
478
+ active: _angular_core.InputSignal<boolean>;
479
+ disabled: _angular_core.InputSignal<boolean>;
480
+ 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>;
482
+ }
483
+
445
484
  type ListItemTheme = 'ghost-white' | 'transparent-white' | 'outline-white' | 'outline-purple';
446
485
  declare class ListItemComponent {
447
486
  checkbox: _angular_core.Signal<CheckboxComponent | undefined>;
@@ -642,7 +681,6 @@ declare class FileInputComponent implements FormValueControl<FileList | null> {
642
681
  }
643
682
 
644
683
  declare class FooterComponent {
645
- copyrightText: _angular_core.InputSignal<string>;
646
684
  socialLinks: _angular_core.InputSignal<{
647
685
  url: string;
648
686
  icon: IconName;
@@ -651,8 +689,9 @@ declare class FooterComponent {
651
689
  url: string;
652
690
  text: string;
653
691
  }[]>;
692
+ navigate(url: string): void;
654
693
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FooterComponent, never>;
655
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FooterComponent, "ul-footer", never, { "copyrightText": { "alias": "copyrightText"; "required": false; "isSignal": true; }; "socialLinks": { "alias": "socialLinks"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
694
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FooterComponent, "ul-footer", never, { "socialLinks": { "alias": "socialLinks"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; }, {}, never, ["[ul-copyright]"], true, never>;
656
695
  }
657
696
 
658
697
  /** Place on the element projected into [ul-hero-badges] so the hero can detect custom badges content. */
@@ -904,8 +943,17 @@ declare class NavbarAvatarSlotDirective {
904
943
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarAvatarSlotDirective, never>;
905
944
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavbarAvatarSlotDirective, "[ul-navbar-avatar]", never, {}, {}, never, never, true, never>;
906
945
  }
946
+ /** Place on the element projected into [ul-navbar-app-name] so the navbar can detect app-name content. Only rendered when a logo slot is not projected (it sits next to the default logo image). */
947
+ declare class NavbarAppNameSlotDirective {
948
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarAppNameSlotDirective, never>;
949
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavbarAppNameSlotDirective, "[ul-navbar-app-name]", never, {}, {}, never, never, true, never>;
950
+ }
907
951
 
952
+ /** 'full' shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo — for auth pages and other chromeless flows. */
953
+ type NavbarVariant = 'full' | 'minimal';
908
954
  declare class NavbarComponent {
955
+ /** 'full' (default) shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo. */
956
+ variant: _angular_core.InputSignal<NavbarVariant>;
909
957
  /** Default logo link href when logo slot is not projected. */
910
958
  logoHref: _angular_core.InputSignal<string>;
911
959
  /** Default logo image src when logo slot is not projected. */
@@ -927,15 +975,18 @@ declare class NavbarComponent {
927
975
  readonly logoSlot: _angular_core.Signal<NavbarLogoSlotDirective | undefined>;
928
976
  readonly searchSlot: _angular_core.Signal<NavbarSearchSlotDirective | undefined>;
929
977
  readonly avatarSlot: _angular_core.Signal<NavbarAvatarSlotDirective | undefined>;
978
+ readonly appNameSlot: _angular_core.Signal<NavbarAppNameSlotDirective | undefined>;
979
+ readonly isMinimal: _angular_core.Signal<boolean>;
930
980
  readonly hasLogoSlot: _angular_core.Signal<boolean>;
931
981
  readonly hasSearchSlot: _angular_core.Signal<boolean>;
932
982
  readonly hasAvatarSlot: _angular_core.Signal<boolean>;
983
+ readonly hasAppNameSlot: _angular_core.Signal<boolean>;
933
984
  readonly showToggle: _angular_core.Signal<boolean>;
934
985
  readonly searchExpanded: _angular_core.WritableSignal<boolean>;
935
986
  toggleSearch(): void;
936
987
  toggleSidebar(): void;
937
988
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
938
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavbarComponent, "ul-navbar", never, { "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"], ["[ul-navbar-logo]", "[ul-navbar-search]", "[ul-navbar-avatar]"], true, 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>;
939
990
  }
940
991
 
941
992
  type PillSize = 'md' | 'lg';
@@ -1493,5 +1544,5 @@ declare class TextareaComponent implements FormValueControl<string> {
1493
1544
  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>;
1494
1545
  }
1495
1546
 
1496
- export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, ModalComponent, 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 };
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 };
1497
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 };