@xsmusices/ui 1.42.0 → 1.43.1

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/index.d.ts CHANGED
@@ -121,7 +121,7 @@ interface XSItemData {
121
121
 
122
122
  declare class XSItemActionComponent {
123
123
  item: _angular_core.InputSignal<XSItemData>;
124
- size: _angular_core.InputSignal<"small" | "normal" | "profile">;
124
+ size: _angular_core.InputSignal<"small" | "profile" | "normal">;
125
125
  isLink: _angular_core.InputSignal<boolean>;
126
126
  showBorder: _angular_core.InputSignal<boolean>;
127
127
  rounded: _angular_core.InputSignal<boolean>;
@@ -244,7 +244,7 @@ declare class XSItemCardComponent {
244
244
  get typeForImage(): XSGenericItemType;
245
245
  get isVerified(): boolean | "";
246
246
  get isLiked(): boolean | undefined;
247
- get truncateForEvent(): 16 | 30 | 18 | 19 | 21 | 28 | 31 | 33;
247
+ get truncateForEvent(): 16 | 19 | 30 | 18 | 21 | 28 | 31 | 33;
248
248
  private getNavigationPath;
249
249
  onClickItem(event?: Event): void;
250
250
  onClickEditItem(): void;
@@ -334,7 +334,7 @@ declare class XSItemsSliderTitleButtonsComponent {
334
334
  manage: _angular_core.InputSignal<boolean>;
335
335
  state: _angular_core.InputSignal<boolean>;
336
336
  total: _angular_core.InputSignal<number>;
337
- view: _angular_core.InputSignal<"cards" | "list">;
337
+ view: _angular_core.InputSignal<"list" | "cards">;
338
338
  hasViewButtons: _angular_core.InputSignal<boolean>;
339
339
  hasSoundcloudItems: _angular_core.InputSignal<boolean>;
340
340
  tabs: _angular_core.InputSignal<{
@@ -347,7 +347,7 @@ declare class XSItemsSliderTitleButtonsComponent {
347
347
  }>;
348
348
  texts: _angular_core.InputSignal<XSItemsSliderTexts>;
349
349
  isPlayingAll: _angular_core.InputSignal<boolean>;
350
- onClickChangeView: _angular_core.OutputEmitterRef<"cards" | "list">;
350
+ onClickChangeView: _angular_core.OutputEmitterRef<"list" | "cards">;
351
351
  onClickPlayAll: _angular_core.OutputEmitterRef<void>;
352
352
  onClickSort: _angular_core.OutputEmitterRef<void>;
353
353
  onChangeState: _angular_core.OutputEmitterRef<void>;
@@ -393,7 +393,7 @@ declare class XSItemsSliderComponent implements AfterViewInit, OnDestroy, OnInit
393
393
  items: _angular_core.InputSignal<XSItemData[]>;
394
394
  typeFrom: _angular_core.InputSignal<XSItemData | undefined>;
395
395
  total: _angular_core.InputSignal<number>;
396
- view: _angular_core.ModelSignal<"cards" | "list">;
396
+ view: _angular_core.ModelSignal<"list" | "cards">;
397
397
  hasViewButtons: _angular_core.InputSignal<boolean>;
398
398
  loading: _angular_core.InputSignal<{
399
399
  items: boolean;
@@ -514,7 +514,7 @@ declare class XSButtonComponent {
514
514
  ariaLabel: _angular_core.InputSignal<string | undefined>;
515
515
  borderRadius: _angular_core.InputSignal<string | undefined>;
516
516
  isGrouped: _angular_core.ModelSignal<boolean>;
517
- groupPosition: _angular_core.ModelSignal<"first" | "middle" | "last" | undefined>;
517
+ groupPosition: _angular_core.ModelSignal<"middle" | "first" | "last" | undefined>;
518
518
  click: _angular_core.OutputEmitterRef<MouseEvent>;
519
519
  onClick: _angular_core.OutputEmitterRef<MouseEvent>;
520
520
  protected _normalizedIcon: _angular_core.Signal<XSButtonIcon | null>;
@@ -2041,7 +2041,7 @@ declare class XSButtonGroupService {
2041
2041
  declare class XSIconComponent {
2042
2042
  private library;
2043
2043
  icon: _angular_core.InputSignal<string | string[] | [IconPrefix, IconName] | _fortawesome_fontawesome_common_types.IconLookup>;
2044
- size: _angular_core.InputSignal<"sm" | "normal" | "xs" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl">;
2044
+ size: _angular_core.InputSignal<"sm" | "lg" | "normal" | "xs" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl">;
2045
2045
  class: _angular_core.InputSignal<string>;
2046
2046
  resolvedIcon: _angular_core.Signal<IconProp | IconDefinition>;
2047
2047
  isValidIcon: _angular_core.Signal<boolean>;
@@ -2302,9 +2302,9 @@ declare class XSImageComponent {
2302
2302
  alt: _angular_core.InputSignal<string | undefined>;
2303
2303
  width: _angular_core.InputSignal<string | number | undefined>;
2304
2304
  height: _angular_core.InputSignal<string | number | undefined>;
2305
- size: _angular_core.InputSignal<"md" | "sm" | "xs" | "lg" | "xl" | "2xl" | "full" | undefined>;
2306
- rounded: _angular_core.InputSignal<"md" | "sm" | "lg" | "xl" | "2xl" | "full" | "none" | "3xl" | undefined>;
2307
- objectFit: _angular_core.InputSignal<"cover" | "fill" | "none" | "contain" | "scale-down" | undefined>;
2305
+ size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xs" | "xl" | "2xl" | "full" | undefined>;
2306
+ rounded: _angular_core.InputSignal<"sm" | "none" | "md" | "lg" | "xl" | "2xl" | "full" | "3xl" | undefined>;
2307
+ objectFit: _angular_core.InputSignal<"fill" | "none" | "contain" | "cover" | "scale-down" | undefined>;
2308
2308
  clickable: _angular_core.InputSignal<boolean | undefined>;
2309
2309
  item: _angular_core.InputSignal<XSImageItem | null | undefined>;
2310
2310
  typeItem: _angular_core.InputSignal<string | undefined>;
@@ -2354,7 +2354,7 @@ declare class XSStatsCardComponent {
2354
2354
  likes?: number;
2355
2355
  comments?: number;
2356
2356
  } | undefined>;
2357
- type: _angular_core.InputSignal<"comments" | "likes" | "visits">;
2357
+ type: _angular_core.InputSignal<"visits" | "comments" | "likes">;
2358
2358
  stats: _angular_core.InputSignal<{
2359
2359
  currentValue: number;
2360
2360
  differencePercent: string;
@@ -2381,6 +2381,7 @@ declare class XSNavbarComponent implements OnInit {
2381
2381
  readonly showBack: _angular_core.InputSignal<boolean>;
2382
2382
  readonly showMenu: _angular_core.InputSignal<boolean>;
2383
2383
  readonly menuIcon: _angular_core.InputSignal<string>;
2384
+ readonly contextual: _angular_core.InputSignal<boolean>;
2384
2385
  readonly showLanguage: _angular_core.InputSignal<boolean>;
2385
2386
  readonly showNotifications: _angular_core.InputSignal<boolean>;
2386
2387
  readonly showChat: _angular_core.InputSignal<boolean>;
@@ -2412,7 +2413,7 @@ declare class XSNavbarComponent implements OnInit {
2412
2413
  onTitleClick(): void;
2413
2414
  onToggleLang(): void;
2414
2415
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XSNavbarComponent, never>;
2415
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XSNavbarComponent, "xs-navbar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "mobileTitle": { "alias": "mobileTitle"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "mobileSubtitle": { "alias": "mobileSubtitle"; "required": false; "isSignal": true; }; "showBorder": { "alias": "showBorder"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "showBack": { "alias": "showBack"; "required": false; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "menuIcon": { "alias": "menuIcon"; "required": false; "isSignal": true; }; "showLanguage": { "alias": "showLanguage"; "required": false; "isSignal": true; }; "showNotifications": { "alias": "showNotifications"; "required": false; "isSignal": true; }; "showChat": { "alias": "showChat"; "required": false; "isSignal": true; }; "showImpersonation": { "alias": "showImpersonation"; "required": false; "isSignal": true; }; "unreadChatMessages": { "alias": "unreadChatMessages"; "required": false; "isSignal": true; }; "unreadNotifications": { "alias": "unreadNotifications"; "required": false; "isSignal": true; }; "homeRoute": { "alias": "homeRoute"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "hideEnvBadge": { "alias": "hideEnvBadge"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, { "back": "back"; "menuToggle": "menuToggle"; "titleClick": "titleClick"; "notificationsClick": "notificationsClick"; "chatClick": "chatClick"; "impersonationClick": "impersonationClick"; }, ["bottomContent"], ["[leading]", "[actions]", "[bottom]"], true, never>;
2416
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XSNavbarComponent, "xs-navbar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "mobileTitle": { "alias": "mobileTitle"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "mobileSubtitle": { "alias": "mobileSubtitle"; "required": false; "isSignal": true; }; "showBorder": { "alias": "showBorder"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "showBack": { "alias": "showBack"; "required": false; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "menuIcon": { "alias": "menuIcon"; "required": false; "isSignal": true; }; "contextual": { "alias": "contextual"; "required": false; "isSignal": true; }; "showLanguage": { "alias": "showLanguage"; "required": false; "isSignal": true; }; "showNotifications": { "alias": "showNotifications"; "required": false; "isSignal": true; }; "showChat": { "alias": "showChat"; "required": false; "isSignal": true; }; "showImpersonation": { "alias": "showImpersonation"; "required": false; "isSignal": true; }; "unreadChatMessages": { "alias": "unreadChatMessages"; "required": false; "isSignal": true; }; "unreadNotifications": { "alias": "unreadNotifications"; "required": false; "isSignal": true; }; "homeRoute": { "alias": "homeRoute"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "hideEnvBadge": { "alias": "hideEnvBadge"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, { "back": "back"; "menuToggle": "menuToggle"; "titleClick": "titleClick"; "notificationsClick": "notificationsClick"; "chatClick": "chatClick"; "impersonationClick": "impersonationClick"; }, ["bottomContent"], ["[leading]", "[actions]", "[bottom]"], true, never>;
2416
2417
  }
2417
2418
 
2418
2419
  interface NavbarSidebarItem {
@@ -3200,8 +3201,8 @@ declare class XSListComponent {
3200
3201
  initialLoading: _angular_core.InputSignal<boolean>;
3201
3202
  columns: _angular_core.InputSignal<1 | 2 | 3>;
3202
3203
  isLink: _angular_core.InputSignal<boolean>;
3203
- size: _angular_core.InputSignal<"small" | "normal" | "profile">;
3204
- hasScroll: _angular_core.InputSignal<boolean | "lg" | "xl" | "mobile">;
3204
+ size: _angular_core.InputSignal<"small" | "profile" | "normal">;
3205
+ hasScroll: _angular_core.InputSignal<boolean | "mobile" | "lg" | "xl">;
3205
3206
  class: _angular_core.InputSignal<string | undefined>;
3206
3207
  rounded: _angular_core.InputSignal<boolean>;
3207
3208
  showChevron: _angular_core.InputSignal<boolean>;
@@ -3265,7 +3266,7 @@ type XSFormlyOptions = FormlyFormOptions;
3265
3266
  declare class XSFormlyComponent implements AfterViewInit {
3266
3267
  private translateService;
3267
3268
  form: FormGroup<{}>;
3268
- readonly layout: _angular_core.InputSignal<"grid" | "stack">;
3269
+ readonly layout: _angular_core.InputSignal<"stack" | "grid">;
3269
3270
  readonly gridClass: _angular_core.InputSignal<string>;
3270
3271
  readonly size: _angular_core.InputSignal<"normal" | "compact">;
3271
3272
  readonly fields: _angular_core.InputSignal<XSFormlyFields>;
@@ -4672,7 +4673,7 @@ declare class XSProfileExclusiveComponent {
4672
4673
  exclusive?: boolean;
4673
4674
  }>;
4674
4675
  readonly type: _angular_core.InputSignal<"artist" | "media">;
4675
- readonly subType: _angular_core.InputSignal<"set" | "track" | "podcast" | "radioshow" | undefined>;
4676
+ readonly subType: _angular_core.InputSignal<"podcast" | "radioshow" | "set" | "track" | undefined>;
4676
4677
  readonly message: _angular_core.InputSignal<string>;
4677
4678
  readonly link: _angular_core.InputSignal<boolean>;
4678
4679
  urlLogo: string;
@@ -4763,7 +4764,7 @@ interface ProfileImageItem {
4763
4764
  declare class XSProfileImageComponent implements OnInit {
4764
4765
  readonly item: _angular_core.InputSignal<ProfileImageItem>;
4765
4766
  readonly type: _angular_core.InputSignal<"artist" | "event" | "equipment" | "media" | "organization" | "site">;
4766
- readonly subType: _angular_core.InputSignal<"club" | "festival" | "set" | "track" | "podcast" | "radioshow" | "promoter" | "label" | "collective" | "radio" | "medio" | undefined>;
4767
+ readonly subType: _angular_core.InputSignal<"club" | "collective" | "festival" | "label" | "medio" | "podcast" | "promoter" | "radio" | "radioshow" | "set" | "track" | undefined>;
4767
4768
  readonly totalDays: _angular_core.InputSignal<number | undefined>;
4768
4769
  readonly heightImage: _angular_core.InputSignal<number>;
4769
4770
  readonly viewTransitionName: _angular_core.InputSignal<string | undefined>;
@@ -4994,7 +4995,7 @@ declare class XSSendScraperComponent implements OnInit {
4994
4995
  protected stepLabels: _angular_core.Signal<string[]>;
4995
4996
  protected showSourceSelection: _angular_core.Signal<boolean>;
4996
4997
  protected canSearch: _angular_core.Signal<boolean>;
4997
- protected primaryVariant: _angular_core.Signal<"youtube" | "soundcloud">;
4998
+ protected primaryVariant: _angular_core.Signal<"soundcloud" | "youtube">;
4998
4999
  protected activeFormFields: _angular_core.Signal<FormlyFieldConfig<_ngx_formly_core.FormlyFieldProps & {
4999
5000
  [additionalProperties: string]: any;
5000
5001
  }>[]>;
@@ -5472,7 +5473,7 @@ declare class XSTableItemsComponent<TType extends string = XSTableHeaderType, TI
5472
5473
  getRemainingPercentage(item: TItem): number;
5473
5474
  getUrlStatsPage: (item: TItem) => string;
5474
5475
  getNameOrCategoryEvent(event: string, type: 'name' | 'category' | 'value'): string | null;
5475
- getSubStatePromotion(item: TItem): "schedule" | "finished" | "inProgress";
5476
+ getSubStatePromotion(item: TItem): "finished" | "inProgress" | "schedule";
5476
5477
  getColorForType(type: string): string;
5477
5478
  getColorForStyle(style: TItem): string;
5478
5479
  getLevelName: (item: TItem) => string | undefined;
@@ -5594,7 +5595,7 @@ declare class XSItemTypeComponent {
5594
5595
  itemType: _angular_core.InputSignal<XSGenericItemType>;
5595
5596
  isLink: _angular_core.InputSignal<boolean>;
5596
5597
  showChevron: _angular_core.InputSignal<boolean>;
5597
- size: _angular_core.InputSignal<"small" | "normal" | "profile">;
5598
+ size: _angular_core.InputSignal<"small" | "profile" | "normal">;
5598
5599
  rounded: _angular_core.InputSignal<boolean>;
5599
5600
  loading: _angular_core.InputSignal<boolean>;
5600
5601
  readonly onClick: _angular_core.OutputEmitterRef<XSItemData>;
@@ -5606,7 +5607,7 @@ declare abstract class XSItemTypeBaseComponent {
5606
5607
  item: _angular_core.InputSignal<XSItemData>;
5607
5608
  isLink: _angular_core.InputSignal<boolean>;
5608
5609
  showChevron: _angular_core.InputSignal<boolean>;
5609
- size: _angular_core.InputSignal<"small" | "normal" | "profile">;
5610
+ size: _angular_core.InputSignal<"small" | "profile" | "normal">;
5610
5611
  rounded: _angular_core.InputSignal<boolean>;
5611
5612
  loading: _angular_core.InputSignal<boolean>;
5612
5613
  readonly onClick: _angular_core.OutputEmitterRef<XSItemData>;
@@ -5824,7 +5825,7 @@ declare class XSMapInfoBlockComponent implements OnChanges {
5824
5825
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<XSMapInfoBlockComponent, "xs-map-info-block", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "subtype": { "alias": "subtype"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "showEvents": { "alias": "showEvents"; "required": false; "isSignal": true; }; }, { "type": "typeChange"; "subtype": "subtypeChange"; "clickItem": "clickItem"; "clickEvent": "clickEvent"; "closeClick": "closeClick"; }, never, ["[custom-info]", "*"], true, never>;
5825
5826
  }
5826
5827
 
5827
- declare const STANDALONE_PIPES: (typeof CountryFlagPipe | typeof CountryNamePipe | typeof DateLongPipe | typeof XSDateFormatPipe | typeof ImageApiPipe | typeof SliceArrayPipe | typeof TruncateTextPipe | typeof NumberDaysPipe | typeof VisitsMonthTotalPipe | typeof RandomImagePipe | typeof TimeAgoPipe | typeof TableLinkPipe | typeof TitleMediaPipe | typeof SocialPipe | typeof IncludeEventPipe | typeof FilterArrayPipe | typeof XSFindLabelByValuePipe)[];
5828
+ declare const STANDALONE_PIPES: (typeof XSDateFormatPipe | typeof CountryFlagPipe | typeof ImageApiPipe | typeof TruncateTextPipe | typeof SliceArrayPipe | typeof DateLongPipe | typeof NumberDaysPipe | typeof VisitsMonthTotalPipe | typeof RandomImagePipe | typeof TimeAgoPipe | typeof TableLinkPipe | typeof TitleMediaPipe | typeof SocialPipe | typeof IncludeEventPipe | typeof FilterArrayPipe | typeof XSFindLabelByValuePipe)[];
5828
5829
 
5829
5830
  declare const LIB_STORIES: Array<() => Promise<any>>;
5830
5831
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsmusices/ui",
3
- "version": "1.42.0",
3
+ "version": "1.43.1",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/"
6
6
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"xsmusices-ui-xs-navbar.xsstory-DZrnLMId.mjs","sources":["../../../projects/xs-ui/src/lib/components/base/navbar/xs-navbar.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../story.types';\nimport { XSNavbarComponent } from './xs-navbar.component';\n\nexport const story: StoryMeta = {\n id: 'navbar',\n name: 'Navbar',\n type: 'component',\n subtype: 'Base',\n status: 'active',\n usage: ['app', 'admin'],\n updated: '2026-05-17T12:00:00.000Z',\n created: '2026-04-25T12:00:00.000Z',\n description:\n 'Barra de navegación superior reutilizable. Usada tanto en App (top bar con título + acciones) como en Admin (top bar + sidebar toggle).',\n component: XSNavbarComponent,\n selector: 'xs-navbar',\n inputs: [\n { key: 'title', label: 'Título', type: 'text', default: '' },\n {\n key: 'subtitle',\n label: 'Subtítulo',\n type: 'text',\n default: '',\n },\n {\n key: 'showBorder',\n label: 'Mostrar borde inferior',\n type: 'boolean',\n default: false,\n },\n {\n key: 'transparent',\n label: 'Fondo transparente',\n type: 'boolean',\n default: false,\n },\n {\n key: 'sticky',\n label: 'Encabezado sticky',\n type: 'boolean',\n default: true,\n },\n {\n key: 'showBack',\n label: 'Mostrar botón retroceso',\n type: 'boolean',\n default: true,\n },\n {\n key: 'showMenu',\n label: 'Mostrar botón menú lateral',\n type: 'boolean',\n default: false,\n },\n {\n key: 'menuIcon',\n label: 'Icono del botón menú',\n type: 'text',\n default: 'bars',\n },\n {\n key: 'showLanguage',\n label: 'Mostrar selector de idioma',\n type: 'boolean',\n default: true,\n },\n {\n key: 'showNotifications',\n label: 'Mostrar campanita notificaciones',\n type: 'boolean',\n default: false,\n },\n {\n key: 'hideEnvBadge',\n label: 'Ocultar badge de entorno (dev/uat)',\n type: 'boolean',\n default: false,\n },\n {\n key: 'currentLang',\n label: 'Idioma actual',\n type: 'select',\n options: ['es', 'en'],\n default: 'es',\n },\n ],\n slots: [\n {\n name: 'actions',\n description:\n 'Contenido proyectado en el lado derecho (botones, avatar, notificaciones)',\n },\n {\n name: 'leading',\n description:\n 'Contenido contextual junto al botón de retroceso, solo visible en móvil (XS-770: miniatura de perfil en navbars contextuales)',\n },\n {\n name: 'bottom',\n description:\n 'Contenido proyectado debajo de la barra principal (tabs, buscador)',\n },\n ],\n examples: [\n {\n name: 'App: Pantalla de inicio',\n description:\n 'Navbar usada en la app principal. Título \"XSMusic\", subtítulo, botón de retroceso, selector de idioma y campanita de notificaciones.',\n inputs: {\n title: 'XSMusic',\n subtitle: 'Descubre',\n showBack: true,\n showLanguage: true,\n showNotifications: true,\n currentLang: 'es',\n },\n },\n {\n name: 'App: Pantalla con tabs',\n description:\n 'Navbar en la app con contenido adicional en el slot bottom (tabs de navegación).',\n inputs: {\n title: 'XSMusic',\n subtitle: 'Artistas',\n showBack: true,\n showLanguage: true,\n showNotifications: true,\n currentLang: 'en',\n },\n template: `<xs-navbar title=\"XSMusic\" subtitle=\"Artistas\" [showBack]=\"true\" [showLanguage]=\"true\" [showNotifications]=\"true\" currentLang=\"en\">\n <div bottom>\n <div class=\"flex gap-4 text-sm text-zinc-400\">\n <span class=\"text-white font-semibold\">Todos</span>\n <span>Populares</span>\n <span>Nuevos</span>\n </div>\n </div>\n</xs-navbar>`,\n },\n {\n name: 'Admin: Dashboard',\n description:\n 'Navbar usada en el panel de administración. Sin retroceso, con botón de menú lateral (hamburguesa) para abrir el sidebar. Las acciones (búsqueda, perfil) van en el slot actions.',\n inputs: {\n title: 'XSADMIN',\n showBack: false,\n showMenu: true,\n menuIcon: 'bars',\n showLanguage: false,\n showNotifications: false,\n },\n },\n {\n name: 'Admin: Menú colapsado',\n description:\n 'Navbar en admin con el sidebar colapsado. El icono del menú cambia a \"chevron-right\" para indicar que se puede expandir.',\n inputs: {\n title: 'XSADMIN',\n showBack: false,\n showMenu: true,\n menuIcon: 'chevron-right',\n showLanguage: false,\n showNotifications: false,\n },\n },\n {\n name: 'Admin: Detalle con retroceso',\n description:\n 'Navbar en admin cuando se navega a una página de detalle. El botón de menú se reemplaza por el de retroceso.',\n inputs: {\n title: 'XSADMIN',\n subtitle: 'Editar Usuario',\n showBack: true,\n showMenu: false,\n showLanguage: false,\n showNotifications: false,\n },\n },\n {\n name: 'Transparente sin sticky',\n description:\n 'Navbar con fondo transparente y sin sticky, ideal para landing pages o perfiles.',\n inputs: {\n title: 'XSMusic',\n subtitle: 'Perfil',\n showBack: true,\n transparent: true,\n sticky: false,\n showLanguage: true,\n currentLang: 'es',\n },\n },\n {\n name: 'App: Navbar contextual de perfil (móvil)',\n description:\n 'XS-770: navbar compacta de perfil en móvil. El slot leading lleva la miniatura (32px) y mobileTitle/mobileSubtitle el nombre y el país. En desktop se muestra el título normal.',\n inputs: {\n title: 'XSMusic',\n mobileTitle: 'Nombre del artista',\n mobileSubtitle: 'España',\n showBack: true,\n showLanguage: true,\n currentLang: 'es',\n },\n template: `<xs-navbar title=\"XSMusic\" mobileTitle=\"Nombre del artista\" mobileSubtitle=\"España\" [showBack]=\"true\" [showLanguage]=\"true\" currentLang=\"es\">\n <div leading>\n <img src=\"https://api-v2.xsmusic.es/uploads/artist/small/artist.webp\" alt=\"Nombre del artista\" class=\"w-8 h-8 rounded-xl object-cover\" />\n </div>\n</xs-navbar>`,\n },\n ],\n};\n"],"names":[],"mappings":"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"}