@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/fesm2022/{xsmusices-ui-xs-navbar.xsstory-DZrnLMId.mjs → xsmusices-ui-xs-navbar.xsstory-BDW0nLAH.mjs} +16 -6
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-BDW0nLAH.mjs.map +1 -0
- package/fesm2022/xsmusices-ui.mjs +27 -25
- package/fesm2022/xsmusices-ui.mjs.map +1 -1
- package/index.d.ts +23 -22
- package/package.json +1 -1
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-DZrnLMId.mjs.map +0 -1
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" | "
|
|
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 |
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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" | "
|
|
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<"
|
|
2306
|
-
rounded: _angular_core.InputSignal<"
|
|
2307
|
-
objectFit: _angular_core.InputSignal<"
|
|
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<"
|
|
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" | "
|
|
3204
|
-
hasScroll: _angular_core.InputSignal<boolean | "
|
|
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<"
|
|
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<"
|
|
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" | "
|
|
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<"
|
|
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): "
|
|
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" | "
|
|
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" | "
|
|
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
|
|
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 +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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"}
|