@underlayerdev/ui 0.0.4 → 0.2.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.0.4",
3
+ "version": "0.2.0",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^22.0.0",
6
6
  "@angular/common": "^22.0.0",
@@ -20,7 +20,8 @@
20
20
  ".": {
21
21
  "types": "./types/underlayerdev-ui.d.ts",
22
22
  "default": "./fesm2022/underlayerdev-ui.mjs"
23
- }
23
+ },
24
+ "./design-tokens/*": "./design-tokens/*"
24
25
  },
25
26
  "type": "module"
26
- }
27
+ }
@@ -642,7 +642,6 @@ declare class FileInputComponent implements FormValueControl<FileList | null> {
642
642
  }
643
643
 
644
644
  declare class FooterComponent {
645
- copyrightText: _angular_core.InputSignal<string>;
646
645
  socialLinks: _angular_core.InputSignal<{
647
646
  url: string;
648
647
  icon: IconName;
@@ -651,8 +650,9 @@ declare class FooterComponent {
651
650
  url: string;
652
651
  text: string;
653
652
  }[]>;
653
+ navigate(url: string): void;
654
654
  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>;
655
+ 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
656
  }
657
657
 
658
658
  /** Place on the element projected into [ul-hero-badges] so the hero can detect custom badges content. */
@@ -804,6 +804,10 @@ declare class InputComponent implements FormValueControl<string> {
804
804
  readonly autocomplete: _angular_core.InputSignal<string>;
805
805
  /** When provided (e.g. by a parent form field), the input element uses this id instead of the internal one. */
806
806
  readonly controlId: _angular_core.InputSignal<string | undefined>;
807
+ /** Aria-label for the toggle button when the password is hidden (i.e. the action reveals it). */
808
+ readonly showPasswordLabel: _angular_core.InputSignal<string>;
809
+ /** Aria-label for the toggle button when the password is visible (i.e. the action hides it). */
810
+ readonly hidePasswordLabel: _angular_core.InputSignal<string>;
807
811
  /** FormUiControl optional: bound by [formField] when invalid */
808
812
  readonly invalid: _angular_core.InputSignal<boolean>;
809
813
  /** FormUiControl optional: bound by [formField] for validation errors */
@@ -821,19 +825,28 @@ declare class InputComponent implements FormValueControl<string> {
821
825
  protected readonly effectiveErrorId: _angular_core.Signal<string>;
822
826
  protected readonly isFocused: _angular_core.WritableSignal<boolean>;
823
827
  protected readonly hasError: _angular_core.Signal<boolean>;
828
+ protected readonly isPasswordType: _angular_core.Signal<boolean>;
829
+ protected readonly passwordRevealed: _angular_core.WritableSignal<boolean>;
830
+ protected readonly effectiveType: _angular_core.Signal<InputType>;
831
+ protected readonly passwordToggleIcon: _angular_core.Signal<"eye_on" | "eye_dashed">;
832
+ protected readonly passwordToggleLabel: _angular_core.Signal<string>;
824
833
  protected readonly describedBy: _angular_core.Signal<string | undefined>;
825
834
  readonly inputBlur: _angular_core.OutputEmitterRef<FocusEvent>;
826
835
  readonly inputFocus: _angular_core.OutputEmitterRef<FocusEvent>;
836
+ /** Emitted when Enter is pressed in the field; typically used to submit a form. */
837
+ readonly inputEnter: _angular_core.OutputEmitterRef<KeyboardEvent>;
827
838
  onInput(event: Event): void;
828
839
  onBlur(event: FocusEvent): void;
829
840
  onFocus(event: FocusEvent): void;
841
+ onKeydown(event: KeyboardEvent): void;
842
+ togglePasswordVisibility(): void;
830
843
  /**
831
844
  * Programmatically focuses the input element
832
845
  */
833
846
  focus(): void;
834
847
  select(): void;
835
848
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
836
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ul-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "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; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "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"; }, never, ["[ul-input-left-elements]", "[ul-input-right-elements]"], true, never>;
849
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ul-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "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; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "showPasswordLabel": { "alias": "showPasswordLabel"; "required": false; "isSignal": true; }; "hidePasswordLabel": { "alias": "hidePasswordLabel"; "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"; "inputEnter": "inputEnter"; }, never, ["[ul-input-left-elements]", "[ul-input-right-elements]"], true, never>;
837
850
  }
838
851
 
839
852
  type ModalVariant = 'default' | 'success' | 'error' | 'custom' | 'bottom-sheet' | 'confirmation';
@@ -891,8 +904,17 @@ declare class NavbarAvatarSlotDirective {
891
904
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarAvatarSlotDirective, never>;
892
905
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavbarAvatarSlotDirective, "[ul-navbar-avatar]", never, {}, {}, never, never, true, never>;
893
906
  }
907
+ /** 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). */
908
+ declare class NavbarAppNameSlotDirective {
909
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarAppNameSlotDirective, never>;
910
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavbarAppNameSlotDirective, "[ul-navbar-app-name]", never, {}, {}, never, never, true, never>;
911
+ }
894
912
 
913
+ /** 'full' shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo — for auth pages and other chromeless flows. */
914
+ type NavbarVariant = 'full' | 'minimal';
895
915
  declare class NavbarComponent {
916
+ /** 'full' (default) shows the sidebar toggle, search, and avatar; 'minimal' shows only the logo. */
917
+ variant: _angular_core.InputSignal<NavbarVariant>;
896
918
  /** Default logo link href when logo slot is not projected. */
897
919
  logoHref: _angular_core.InputSignal<string>;
898
920
  /** Default logo image src when logo slot is not projected. */
@@ -914,15 +936,18 @@ declare class NavbarComponent {
914
936
  readonly logoSlot: _angular_core.Signal<NavbarLogoSlotDirective | undefined>;
915
937
  readonly searchSlot: _angular_core.Signal<NavbarSearchSlotDirective | undefined>;
916
938
  readonly avatarSlot: _angular_core.Signal<NavbarAvatarSlotDirective | undefined>;
939
+ readonly appNameSlot: _angular_core.Signal<NavbarAppNameSlotDirective | undefined>;
940
+ readonly isMinimal: _angular_core.Signal<boolean>;
917
941
  readonly hasLogoSlot: _angular_core.Signal<boolean>;
918
942
  readonly hasSearchSlot: _angular_core.Signal<boolean>;
919
943
  readonly hasAvatarSlot: _angular_core.Signal<boolean>;
944
+ readonly hasAppNameSlot: _angular_core.Signal<boolean>;
920
945
  readonly showToggle: _angular_core.Signal<boolean>;
921
946
  readonly searchExpanded: _angular_core.WritableSignal<boolean>;
922
947
  toggleSearch(): void;
923
948
  toggleSidebar(): void;
924
949
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
925
- 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>;
950
+ 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>;
926
951
  }
927
952
 
928
953
  type PillSize = 'md' | 'lg';
@@ -1480,5 +1505,5 @@ declare class TextareaComponent implements FormValueControl<string> {
1480
1505
  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>;
1481
1506
  }
1482
1507
 
1483
- 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 };
1508
+ 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, 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 };
1484
1509
  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 };