@xsmusices/ui 1.41.0 → 1.41.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.
Files changed (166) hide show
  1. package/README.md +4 -18
  2. package/fesm2022/xsmusices-ui-country-flag.xsstory-BPTu5b4i.mjs +84 -0
  3. package/fesm2022/xsmusices-ui-country-flag.xsstory-BPTu5b4i.mjs.map +1 -0
  4. package/fesm2022/xsmusices-ui-country-name.xsstory-ENhKrPTw.mjs +106 -0
  5. package/fesm2022/xsmusices-ui-country-name.xsstory-ENhKrPTw.mjs.map +1 -0
  6. package/fesm2022/xsmusices-ui-date-chat.xsstory-BBAJebr1.mjs +75 -0
  7. package/fesm2022/xsmusices-ui-date-chat.xsstory-BBAJebr1.mjs.map +1 -0
  8. package/fesm2022/xsmusices-ui-date-format.xsstory-Chrcn1yu.mjs +69 -0
  9. package/fesm2022/xsmusices-ui-date-format.xsstory-Chrcn1yu.mjs.map +1 -0
  10. package/fesm2022/xsmusices-ui-date-long.xsstory-CkYL5e1z.mjs +67 -0
  11. package/fesm2022/xsmusices-ui-date-long.xsstory-CkYL5e1z.mjs.map +1 -0
  12. package/fesm2022/xsmusices-ui-first-letter-case.xsstory-BJDtnUwE.mjs +49 -0
  13. package/fesm2022/xsmusices-ui-first-letter-case.xsstory-BJDtnUwE.mjs.map +1 -0
  14. package/fesm2022/xsmusices-ui-import-media-bottom-bar.xsstory-7FhVkiVz.mjs +29 -0
  15. package/fesm2022/xsmusices-ui-import-media-bottom-bar.xsstory-7FhVkiVz.mjs.map +1 -0
  16. package/fesm2022/xsmusices-ui-import-media-card.xsstory-vhn8r2YJ.mjs +61 -0
  17. package/fesm2022/xsmusices-ui-import-media-card.xsstory-vhn8r2YJ.mjs.map +1 -0
  18. package/fesm2022/xsmusices-ui-import-media-flow.xsstory-CMVovyMA.mjs +122 -0
  19. package/fesm2022/xsmusices-ui-import-media-flow.xsstory-CMVovyMA.mjs.map +1 -0
  20. package/fesm2022/xsmusices-ui-import-media-header.xsstory-Ci82oaxD.mjs +37 -0
  21. package/fesm2022/xsmusices-ui-import-media-header.xsstory-Ci82oaxD.mjs.map +1 -0
  22. package/fesm2022/xsmusices-ui-index-BpVmLxoG.mjs +11164 -0
  23. package/fesm2022/xsmusices-ui-index-BpVmLxoG.mjs.map +1 -0
  24. package/fesm2022/xsmusices-ui-max-count.xsstory-kWzvhDsC.mjs +70 -0
  25. package/fesm2022/xsmusices-ui-max-count.xsstory-kWzvhDsC.mjs.map +1 -0
  26. package/fesm2022/xsmusices-ui-number-to-month.xsstory-LUhA1uRx.mjs +81 -0
  27. package/fesm2022/xsmusices-ui-number-to-month.xsstory-LUhA1uRx.mjs.map +1 -0
  28. package/fesm2022/xsmusices-ui-priorities.xsstory-3n93Ph84.mjs +92 -0
  29. package/fesm2022/xsmusices-ui-priorities.xsstory-3n93Ph84.mjs.map +1 -0
  30. package/fesm2022/xsmusices-ui-role.xsstory-Cz3SBwNU.mjs +76 -0
  31. package/fesm2022/xsmusices-ui-role.xsstory-Cz3SBwNU.mjs.map +1 -0
  32. package/fesm2022/xsmusices-ui-slice-array.xsstory-ElPwFlwd.mjs +76 -0
  33. package/fesm2022/xsmusices-ui-slice-array.xsstory-ElPwFlwd.mjs.map +1 -0
  34. package/fesm2022/xsmusices-ui-social.xsstory-gjFcbal_.mjs +83 -0
  35. package/fesm2022/xsmusices-ui-social.xsstory-gjFcbal_.mjs.map +1 -0
  36. package/fesm2022/xsmusices-ui-state-name.xsstory-kkdBe2V8.mjs +113 -0
  37. package/fesm2022/xsmusices-ui-state-name.xsstory-kkdBe2V8.mjs.map +1 -0
  38. package/fesm2022/xsmusices-ui-stats-card.xsstory-PWTUDysc.mjs +96 -0
  39. package/fesm2022/xsmusices-ui-stats-card.xsstory-PWTUDysc.mjs.map +1 -0
  40. package/fesm2022/xsmusices-ui-thousands-separator.xsstory-Q9Q7cCAG.mjs +49 -0
  41. package/fesm2022/xsmusices-ui-thousands-separator.xsstory-Q9Q7cCAG.mjs.map +1 -0
  42. package/fesm2022/xsmusices-ui-title-media.xsstory-C4qa-mT2.mjs +81 -0
  43. package/fesm2022/xsmusices-ui-title-media.xsstory-C4qa-mT2.mjs.map +1 -0
  44. package/fesm2022/xsmusices-ui-truncate-text.xsstory-B3RQ9xZ3.mjs +67 -0
  45. package/fesm2022/xsmusices-ui-truncate-text.xsstory-B3RQ9xZ3.mjs.map +1 -0
  46. package/fesm2022/xsmusices-ui-type-es.xsstory-BsE_4D9p.mjs +110 -0
  47. package/fesm2022/xsmusices-ui-type-es.xsstory-BsE_4D9p.mjs.map +1 -0
  48. package/fesm2022/xsmusices-ui-type-user.xsstory-Bn6Fnnmi.mjs +98 -0
  49. package/fesm2022/xsmusices-ui-type-user.xsstory-Bn6Fnnmi.mjs.map +1 -0
  50. package/fesm2022/xsmusices-ui-xs-action-sheet.xsstory-CBpZBlfx.mjs +402 -0
  51. package/fesm2022/xsmusices-ui-xs-action-sheet.xsstory-CBpZBlfx.mjs.map +1 -0
  52. package/fesm2022/xsmusices-ui-xs-alert-group.xsstory-HMGGLHfv.mjs +201 -0
  53. package/fesm2022/xsmusices-ui-xs-alert-group.xsstory-HMGGLHfv.mjs.map +1 -0
  54. package/fesm2022/xsmusices-ui-xs-alert.xsstory-CXTRbHHS.mjs +158 -0
  55. package/fesm2022/xsmusices-ui-xs-alert.xsstory-CXTRbHHS.mjs.map +1 -0
  56. package/fesm2022/xsmusices-ui-xs-auth.xsstory-DxO8iDpd.mjs +205 -0
  57. package/fesm2022/xsmusices-ui-xs-auth.xsstory-DxO8iDpd.mjs.map +1 -0
  58. package/fesm2022/xsmusices-ui-xs-badge.xsstory-BZnTAQWz.mjs +232 -0
  59. package/fesm2022/xsmusices-ui-xs-badge.xsstory-BZnTAQWz.mjs.map +1 -0
  60. package/fesm2022/xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs +165 -0
  61. package/fesm2022/xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs.map +1 -0
  62. package/fesm2022/xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs +44 -0
  63. package/fesm2022/xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs.map +1 -0
  64. package/fesm2022/xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs +263 -0
  65. package/fesm2022/xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs.map +1 -0
  66. package/fesm2022/xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs +97 -0
  67. package/fesm2022/xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs.map +1 -0
  68. package/fesm2022/xsmusices-ui-xs-chart.xsstory--iUHj7bv.mjs +239 -0
  69. package/fesm2022/xsmusices-ui-xs-chart.xsstory--iUHj7bv.mjs.map +1 -0
  70. package/fesm2022/xsmusices-ui-xs-chat-alert.xsstory-rdpQcMgJ.mjs +40 -0
  71. package/fesm2022/xsmusices-ui-xs-chat-alert.xsstory-rdpQcMgJ.mjs.map +1 -0
  72. package/fesm2022/xsmusices-ui-xs-chat-conversation-info.xsstory-BQjdjpbB.mjs +157 -0
  73. package/fesm2022/xsmusices-ui-xs-chat-conversation-info.xsstory-BQjdjpbB.mjs.map +1 -0
  74. package/fesm2022/xsmusices-ui-xs-chat-conversation.xsstory-sK9b5_Wo.mjs +303 -0
  75. package/fesm2022/xsmusices-ui-xs-chat-conversation.xsstory-sK9b5_Wo.mjs.map +1 -0
  76. package/fesm2022/xsmusices-ui-xs-chat-floating-panel.xsstory-_XfEzM1j.mjs +223 -0
  77. package/fesm2022/xsmusices-ui-xs-chat-floating-panel.xsstory-_XfEzM1j.mjs.map +1 -0
  78. package/fesm2022/xsmusices-ui-xs-chat-list.xsstory-BSY46FgK.mjs +46 -0
  79. package/fesm2022/xsmusices-ui-xs-chat-list.xsstory-BSY46FgK.mjs.map +1 -0
  80. package/fesm2022/xsmusices-ui-xs-chat-textarea.xsstory-NG2p0Tdw.mjs +35 -0
  81. package/fesm2022/xsmusices-ui-xs-chat-textarea.xsstory-NG2p0Tdw.mjs.map +1 -0
  82. package/fesm2022/xsmusices-ui-xs-customize-profile.xsstory-Ba7wmXF7.mjs +98 -0
  83. package/fesm2022/xsmusices-ui-xs-customize-profile.xsstory-Ba7wmXF7.mjs.map +1 -0
  84. package/fesm2022/xsmusices-ui-xs-date-mini.xsstory-DXog7Yhg.mjs +67 -0
  85. package/fesm2022/xsmusices-ui-xs-date-mini.xsstory-DXog7Yhg.mjs.map +1 -0
  86. package/fesm2022/xsmusices-ui-xs-date-range-picker.xsstory-Bmk2wv1s.mjs +25 -0
  87. package/fesm2022/xsmusices-ui-xs-date-range-picker.xsstory-Bmk2wv1s.mjs.map +1 -0
  88. package/fesm2022/xsmusices-ui-xs-empty-state.xsstory-CCOJ4b9_.mjs +70 -0
  89. package/fesm2022/xsmusices-ui-xs-empty-state.xsstory-CCOJ4b9_.mjs.map +1 -0
  90. package/fesm2022/xsmusices-ui-xs-filter-panel.xsstory-DbvxGppo.mjs +287 -0
  91. package/fesm2022/xsmusices-ui-xs-filter-panel.xsstory-DbvxGppo.mjs.map +1 -0
  92. package/fesm2022/xsmusices-ui-xs-formly.xsstory-Bjne7mpZ.mjs +3453 -0
  93. package/fesm2022/xsmusices-ui-xs-formly.xsstory-Bjne7mpZ.mjs.map +1 -0
  94. package/fesm2022/xsmusices-ui-xs-full-image.xsstory-xwN2jkW1.mjs +147 -0
  95. package/fesm2022/xsmusices-ui-xs-full-image.xsstory-xwN2jkW1.mjs.map +1 -0
  96. package/fesm2022/xsmusices-ui-xs-icon.xsstory-asFaHy5H.mjs +97 -0
  97. package/fesm2022/xsmusices-ui-xs-icon.xsstory-asFaHy5H.mjs.map +1 -0
  98. package/fesm2022/xsmusices-ui-xs-image.xsstory-BaeUg3Zp.mjs +142 -0
  99. package/fesm2022/xsmusices-ui-xs-image.xsstory-BaeUg3Zp.mjs.map +1 -0
  100. package/fesm2022/xsmusices-ui-xs-info-blocks.xsstory-BHtaC7U6.mjs +957 -0
  101. package/fesm2022/xsmusices-ui-xs-info-blocks.xsstory-BHtaC7U6.mjs.map +1 -0
  102. package/fesm2022/xsmusices-ui-xs-item-action.xsstory-839UkJyC.mjs +153 -0
  103. package/fesm2022/xsmusices-ui-xs-item-action.xsstory-839UkJyC.mjs.map +1 -0
  104. package/fesm2022/xsmusices-ui-xs-item-card.xsstory-EGJ6itkx.mjs +254 -0
  105. package/fesm2022/xsmusices-ui-xs-item-card.xsstory-EGJ6itkx.mjs.map +1 -0
  106. package/fesm2022/xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs +270 -0
  107. package/fesm2022/xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs.map +1 -0
  108. package/fesm2022/xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs +252 -0
  109. package/fesm2022/xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs.map +1 -0
  110. package/fesm2022/xsmusices-ui-xs-items-slider.xsstory-CS4xTKuJ.mjs +189 -0
  111. package/fesm2022/xsmusices-ui-xs-items-slider.xsstory-CS4xTKuJ.mjs.map +1 -0
  112. package/fesm2022/xsmusices-ui-xs-list.xsstory-BxAErIEF.mjs +633 -0
  113. package/fesm2022/xsmusices-ui-xs-list.xsstory-BxAErIEF.mjs.map +1 -0
  114. package/fesm2022/xsmusices-ui-xs-map.xsstory-DBT6h0Hv.mjs +269 -0
  115. package/fesm2022/xsmusices-ui-xs-map.xsstory-DBT6h0Hv.mjs.map +1 -0
  116. package/fesm2022/xsmusices-ui-xs-maplibre.xsstory-u_NroLqJ.mjs +513 -0
  117. package/fesm2022/xsmusices-ui-xs-maplibre.xsstory-u_NroLqJ.mjs.map +1 -0
  118. package/fesm2022/xsmusices-ui-xs-modal.xsstory-B96CYHF0.mjs +199 -0
  119. package/fesm2022/xsmusices-ui-xs-modal.xsstory-B96CYHF0.mjs.map +1 -0
  120. package/fesm2022/xsmusices-ui-xs-navbar-sidebar.xsstory-DHmPSARx.mjs +122 -0
  121. package/fesm2022/xsmusices-ui-xs-navbar-sidebar.xsstory-DHmPSARx.mjs.map +1 -0
  122. package/fesm2022/xsmusices-ui-xs-navbar.xsstory-CkdvldoV.mjs +182 -0
  123. package/fesm2022/xsmusices-ui-xs-navbar.xsstory-CkdvldoV.mjs.map +1 -0
  124. package/fesm2022/xsmusices-ui-xs-profile-comments.xsstory-CHpCDxLe.mjs +373 -0
  125. package/fesm2022/xsmusices-ui-xs-profile-comments.xsstory-CHpCDxLe.mjs.map +1 -0
  126. package/fesm2022/xsmusices-ui-xs-profile-current-event.xsstory-BtRq4wE4.mjs +111 -0
  127. package/fesm2022/xsmusices-ui-xs-profile-current-event.xsstory-BtRq4wE4.mjs.map +1 -0
  128. package/fesm2022/xsmusices-ui-xs-profile-exclusive.xsstory-B1Sag_X-.mjs +147 -0
  129. package/fesm2022/xsmusices-ui-xs-profile-exclusive.xsstory-B1Sag_X-.mjs.map +1 -0
  130. package/fesm2022/xsmusices-ui-xs-profile-image.xsstory-Cm_ixcdU.mjs +181 -0
  131. package/fesm2022/xsmusices-ui-xs-profile-image.xsstory-Cm_ixcdU.mjs.map +1 -0
  132. package/fesm2022/xsmusices-ui-xs-profile-info.xsstory-DAfsbXrF.mjs +95 -0
  133. package/fesm2022/xsmusices-ui-xs-profile-info.xsstory-DAfsbXrF.mjs.map +1 -0
  134. package/fesm2022/xsmusices-ui-xs-profile-random-flag.xsstory-DH3Y_XX1.mjs +50 -0
  135. package/fesm2022/xsmusices-ui-xs-profile-random-flag.xsstory-DH3Y_XX1.mjs.map +1 -0
  136. package/fesm2022/xsmusices-ui-xs-profile-skeleton.xsstory-BO0ZqUMS.mjs +66 -0
  137. package/fesm2022/xsmusices-ui-xs-profile-skeleton.xsstory-BO0ZqUMS.mjs.map +1 -0
  138. package/fesm2022/xsmusices-ui-xs-profile-tops.xsstory-eKxRAMdS.mjs +246 -0
  139. package/fesm2022/xsmusices-ui-xs-profile-tops.xsstory-eKxRAMdS.mjs.map +1 -0
  140. package/fesm2022/xsmusices-ui-xs-profile-verified.xsstory-HtbUlJFX.mjs +34 -0
  141. package/fesm2022/xsmusices-ui-xs-profile-verified.xsstory-HtbUlJFX.mjs.map +1 -0
  142. package/fesm2022/xsmusices-ui-xs-section-title.xsstory-CHlZ69FK.mjs +180 -0
  143. package/fesm2022/xsmusices-ui-xs-section-title.xsstory-CHlZ69FK.mjs.map +1 -0
  144. package/fesm2022/xsmusices-ui-xs-select-modal.xsstory-BMc6o0W7.mjs +112 -0
  145. package/fesm2022/xsmusices-ui-xs-select-modal.xsstory-BMc6o0W7.mjs.map +1 -0
  146. package/fesm2022/xsmusices-ui-xs-send-scraper.xsstory-Cq6PuwN7.mjs +79 -0
  147. package/fesm2022/xsmusices-ui-xs-send-scraper.xsstory-Cq6PuwN7.mjs.map +1 -0
  148. package/fesm2022/xsmusices-ui-xs-skeleton-for-slider.xsstory-k-uutKIV.mjs +67 -0
  149. package/fesm2022/xsmusices-ui-xs-skeleton-for-slider.xsstory-k-uutKIV.mjs.map +1 -0
  150. package/fesm2022/xsmusices-ui-xs-stepper.xsstory-gKU4wN-_.mjs +91 -0
  151. package/fesm2022/xsmusices-ui-xs-stepper.xsstory-gKU4wN-_.mjs.map +1 -0
  152. package/fesm2022/xsmusices-ui-xs-table-items.xsstory-vR5x6wZe.mjs +95 -0
  153. package/fesm2022/xsmusices-ui-xs-table-items.xsstory-vR5x6wZe.mjs.map +1 -0
  154. package/fesm2022/xsmusices-ui-xs-table.xsstory-DXiZHI7p.mjs +2941 -0
  155. package/fesm2022/xsmusices-ui-xs-table.xsstory-DXiZHI7p.mjs.map +1 -0
  156. package/fesm2022/xsmusices-ui-xs-tabs.xsstory-ColZVzXZ.mjs +72 -0
  157. package/fesm2022/xsmusices-ui-xs-tabs.xsstory-ColZVzXZ.mjs.map +1 -0
  158. package/fesm2022/xsmusices-ui-xs-title-collapse.xsstory-COqb1jdP.mjs +65 -0
  159. package/fesm2022/xsmusices-ui-xs-title-collapse.xsstory-COqb1jdP.mjs.map +1 -0
  160. package/fesm2022/xsmusices-ui-xs-toast.xsstory-BBhGu-j4.mjs +59 -0
  161. package/fesm2022/xsmusices-ui-xs-toast.xsstory-BBhGu-j4.mjs.map +1 -0
  162. package/fesm2022/xsmusices-ui.mjs +707 -575
  163. package/fesm2022/xsmusices-ui.mjs.map +1 -0
  164. package/index.d.ts +69 -66
  165. package/package.json +2 -22
  166. package/LICENSE +0 -9
@@ -0,0 +1,270 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, inject, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i2 from '@angular/router';
6
+ import { RouterModule } from '@angular/router';
7
+ import { XS_DEFAULT_ADMIN_USER_ID, getCountryItem, XSImageComponent, XSButtonComponent, PipesModule, CountryFlagPipe, DateLocaleFormatPipe } from './xsmusices-ui.mjs';
8
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
9
+ import { m as mockArtists, a as mockEvents, b as mockSites, c as mockMedia, d as mockUsers } from './xsmusices-ui-index-BpVmLxoG.mjs';
10
+
11
+ class XSItemCompactComponent {
12
+ type = input.required(...(ngDevMode ? [{ debugName: "type" }] : []));
13
+ subtypeForced = input(null, ...(ngDevMode ? [{ debugName: "subtypeForced" }] : []));
14
+ item = input.required(...(ngDevMode ? [{ debugName: "item" }] : []));
15
+ edit = input(false, ...(ngDevMode ? [{ debugName: "edit" }] : []));
16
+ year = input(false, ...(ngDevMode ? [{ debugName: "year" }] : []));
17
+ styles = input(false, ...(ngDevMode ? [{ debugName: "styles" }] : []));
18
+ link = input(true, ...(ngDevMode ? [{ debugName: "link" }] : []));
19
+ user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : []));
20
+ count = input(...(ngDevMode ? [undefined, { debugName: "count" }] : []));
21
+ forTop = input(false, ...(ngDevMode ? [{ debugName: "forTop" }] : []));
22
+ position = input(null, ...(ngDevMode ? [{ debugName: "position" }] : []));
23
+ buttonRightIcon = input(...(ngDevMode ? [undefined, { debugName: "buttonRightIcon" }] : []));
24
+ isDraggable = input(false, ...(ngDevMode ? [{ debugName: "isDraggable" }] : []));
25
+ language = input('es', ...(ngDevMode ? [{ debugName: "language" }] : []));
26
+ onClickButtonRight = output();
27
+ onClickDrag = output();
28
+ defaultAdminUserId = inject(XS_DEFAULT_ADMIN_USER_ID);
29
+ get routerLink() {
30
+ if (!this.link()) {
31
+ return null;
32
+ }
33
+ if (!this.item() || !this.type()) {
34
+ return null;
35
+ }
36
+ const typeOk = this.type() === 'media' ? 'music' : this.type() + 's';
37
+ const baseAccountPath = `/account/manage/${typeOk}/`;
38
+ let baseTypePath = `/${this.type()}s`;
39
+ if (this.type() === 'site' || this.type() === 'media') {
40
+ const itemType = this.item().type;
41
+ const typeValue = typeof itemType === 'string'
42
+ ? itemType
43
+ : itemType?.['name']
44
+ ?.toString()
45
+ ?.toLowerCase();
46
+ baseTypePath = typeValue
47
+ ? `/${typeValue}s`
48
+ : `/${this.subtypeForced()}s`;
49
+ }
50
+ else if (this.type() === 'organization') {
51
+ const itemTypes = this.item().types;
52
+ baseTypePath =
53
+ itemTypes && itemTypes.length > 0
54
+ ? `/${itemTypes[0]}s`
55
+ : `/${this.subtypeForced()}s`;
56
+ }
57
+ else if (this.type() === 'equipment') {
58
+ baseTypePath = '/gear';
59
+ }
60
+ if (!this.edit()) {
61
+ if (this.type() === 'equipment') {
62
+ return [baseTypePath];
63
+ }
64
+ return [baseTypePath, this.item().slug];
65
+ }
66
+ if (this.item().state === 'active') {
67
+ return [baseAccountPath, this.item().slug];
68
+ }
69
+ if (this.type() === 'playlist') {
70
+ return this.edit()
71
+ ? [`/account/${this.type()}s/`, this.item().slug]
72
+ : [baseTypePath, this.item().slug];
73
+ }
74
+ return null;
75
+ }
76
+ getItemUserName() {
77
+ const user = this.item().user;
78
+ if (!user)
79
+ return '';
80
+ if (typeof user === 'string')
81
+ return user;
82
+ return (user['name'] || '');
83
+ }
84
+ get typeForImage() {
85
+ if (this.type() === 'organization') {
86
+ return 'organization';
87
+ }
88
+ else if (this.type() === 'playlist') {
89
+ return 'media';
90
+ }
91
+ else {
92
+ return this.type();
93
+ }
94
+ }
95
+ get country() {
96
+ return getCountryItem(this.item(), this.type());
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemCompactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemCompactComponent, isStandalone: true, selector: "xs-item-compact", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, subtypeForced: { classPropertyName: "subtypeForced", publicName: "subtypeForced", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, edit: { classPropertyName: "edit", publicName: "edit", isSignal: true, isRequired: false, transformFunction: null }, year: { classPropertyName: "year", publicName: "year", isSignal: true, isRequired: false, transformFunction: null }, styles: { classPropertyName: "styles", publicName: "styles", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, forTop: { classPropertyName: "forTop", publicName: "forTop", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, buttonRightIcon: { classPropertyName: "buttonRightIcon", publicName: "buttonRightIcon", isSignal: true, isRequired: false, transformFunction: null }, isDraggable: { classPropertyName: "isDraggable", publicName: "isDraggable", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClickButtonRight: "onClickButtonRight", onClickDrag: "onClickDrag" }, host: { attributes: { "xs-item-compact-host": "" } }, ngImport: i0, template: "<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n &nbsp;x&nbsp;{{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }}&nbsp;|&nbsp;\n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span>&nbsp;|&nbsp;</span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}\u00BA\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "ngmodule", type: PipesModule }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }, { kind: "pipe", type: DateLocaleFormatPipe, name: "dateLocaleFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemCompactComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ selector: 'xs-item-compact', host: { 'xs-item-compact-host': '' }, imports: [
104
+ CommonModule,
105
+ RouterModule,
106
+ FontAwesomeModule,
107
+ XSImageComponent,
108
+ XSButtonComponent,
109
+ PipesModule,
110
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n &nbsp;x&nbsp;{{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }}&nbsp;|&nbsp;\n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span>&nbsp;|&nbsp;</span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}\u00BA\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n" }]
111
+ }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: true }] }], subtypeForced: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtypeForced", required: false }] }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], edit: [{ type: i0.Input, args: [{ isSignal: true, alias: "edit", required: false }] }], year: [{ type: i0.Input, args: [{ isSignal: true, alias: "year", required: false }] }], styles: [{ type: i0.Input, args: [{ isSignal: true, alias: "styles", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], forTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "forTop", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], buttonRightIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonRightIcon", required: false }] }], isDraggable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDraggable", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], onClickButtonRight: [{ type: i0.Output, args: ["onClickButtonRight"] }], onClickDrag: [{ type: i0.Output, args: ["onClickDrag"] }] } });
112
+
113
+ const story = {
114
+ id: 'item-compact',
115
+ name: 'Item Compact',
116
+ type: 'component',
117
+ subtype: 'UI',
118
+ status: 'active',
119
+ usage: ['admin', 'app', 'monitor'],
120
+ updated: '2026-01-04T22:00:00.000Z',
121
+ created: '2026-01-02T00:44:32.446Z',
122
+ description: 'Componente compacto para mostrar items de diferentes tipos (artistas, eventos, medios, usuarios, etc.) con imagen, nombre, metadatos contextuales y acciones. Incluye soporte para modos de edición, drag & drop, y diferentes layouts según el tipo de contenido. Diseñado para listas densas donde se necesita máxima información en mínimo espacio.',
123
+ component: XSItemCompactComponent,
124
+ selector: 'xs-item-compact',
125
+ inputs: [
126
+ {
127
+ key: 'type',
128
+ label: 'Type',
129
+ type: 'select',
130
+ options: [
131
+ 'artist',
132
+ 'organization',
133
+ 'event',
134
+ 'site',
135
+ 'equipment',
136
+ 'playlist',
137
+ 'media',
138
+ 'user',
139
+ ],
140
+ default: 'artist',
141
+ },
142
+ {
143
+ key: 'item',
144
+ label: 'Item',
145
+ type: 'json',
146
+ default: mockArtists[0], // Fatima Hajji - complete artist data
147
+ },
148
+ {
149
+ key: 'edit',
150
+ label: 'Edit',
151
+ type: 'boolean',
152
+ default: false,
153
+ },
154
+ {
155
+ key: 'year',
156
+ label: 'Year',
157
+ type: 'boolean',
158
+ default: false,
159
+ },
160
+ {
161
+ key: 'styles',
162
+ label: 'Styles',
163
+ type: 'boolean',
164
+ default: false,
165
+ },
166
+ {
167
+ key: 'link',
168
+ label: 'Link',
169
+ type: 'boolean',
170
+ default: true,
171
+ },
172
+ ],
173
+ examples: [
174
+ {
175
+ name: 'Artist Item',
176
+ description: 'Item compact para artista con datos reales',
177
+ inputs: {
178
+ type: 'artist',
179
+ item: mockArtists[0], // Fatima Hajji
180
+ },
181
+ },
182
+ {
183
+ name: 'Organization Item',
184
+ description: 'Item compact para organización',
185
+ inputs: {
186
+ type: 'organization',
187
+ item: mockArtists[0], // Using artist mock for organization example
188
+ },
189
+ },
190
+ {
191
+ name: 'Event Item',
192
+ description: 'Item compact para evento con datos reales',
193
+ inputs: {
194
+ type: 'event',
195
+ item: mockEvents[0], // Hale-Bopp Vol.4
196
+ },
197
+ },
198
+ {
199
+ name: 'Site Item',
200
+ description: 'Item compact para sitio con datos reales',
201
+ inputs: {
202
+ type: 'site',
203
+ item: mockSites[0], // Smut Athens
204
+ },
205
+ },
206
+ {
207
+ name: 'Equipment Item',
208
+ description: 'Item compact para equipo',
209
+ inputs: {
210
+ type: 'equipment',
211
+ item: {
212
+ name: 'Pioneer DJ Mixer',
213
+ type: { name: 'DJ Mixer' },
214
+ manufacturer: 'Pioneer',
215
+ info: 'Mezclador profesional para DJ',
216
+ slug: 'pioneer-dj-mixer',
217
+ },
218
+ },
219
+ },
220
+ {
221
+ name: 'Playlist Item',
222
+ description: 'Item compact para playlist',
223
+ inputs: {
224
+ type: 'playlist',
225
+ item: {
226
+ name: 'My Techno Mix',
227
+ slug: 'my-techno-mix',
228
+ tracks: [
229
+ { _id: 'track1', name: 'Track 1' },
230
+ { _id: 'track2', name: 'Track 2' },
231
+ ],
232
+ private: false,
233
+ updated: '2026-01-04T10:00:00.000Z',
234
+ },
235
+ },
236
+ },
237
+ {
238
+ name: 'Media Item',
239
+ description: 'Item compact para media con datos reales',
240
+ inputs: {
241
+ type: 'media',
242
+ item: mockMedia[0], // Opening Vinyl Set
243
+ },
244
+ },
245
+ {
246
+ name: 'User Item',
247
+ description: 'Item compact para usuario con datos reales',
248
+ inputs: {
249
+ type: 'user',
250
+ item: mockUsers[0], // JoseXS
251
+ },
252
+ },
253
+ ],
254
+ multilanguage: false,
255
+ notes: [
256
+ {
257
+ text: 'Este componente fue creado automáticamente. Es necesario completar la documentación, inputs y examples.',
258
+ type: 'warning',
259
+ },
260
+ ],
261
+ coverage: {
262
+ statements: 98,
263
+ branches: 82,
264
+ functions: 100,
265
+ lines: 98,
266
+ },
267
+ };
268
+
269
+ export { story };
270
+ //# sourceMappingURL=xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs","sources":["../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.component.ts","../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.component.html","../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.xsstory.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { XSImageComponent } from '../../../base/image';\nimport { XSButtonComponent } from '../../../base/button';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { UserI } from '../../../../interfaces';\nimport { XSItemData } from '../../../../interfaces/xs-item.interface';\nimport {\n XSGenericItemType,\n XSGenericSubItemType,\n} from '../../../../types';\nimport { XS_DEFAULT_ADMIN_USER_ID } from '../../../../tokens';\nimport { PipesModule } from '../../../../pipes';\nimport { getCountryItem } from '../../../../utils/xs-generic.utils';\n\n@Component({\n selector: 'xs-item-compact',\n templateUrl: 'xs-item-compact.component.html',\n host: { 'xs-item-compact-host': '' },\n imports: [\n CommonModule,\n RouterModule,\n FontAwesomeModule,\n XSImageComponent,\n XSButtonComponent,\n PipesModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XSItemCompactComponent {\n type = input.required<XSGenericItemType>();\n subtypeForced = input<XSGenericSubItemType | null>(null);\n item = input.required<XSItemData>();\n edit = input(false);\n year = input(false);\n styles = input(false);\n link = input(true);\n user = input<UserI>();\n count = input<{ name: string; value: unknown }>();\n forTop = input(false);\n position = input<number | null>(null);\n buttonRightIcon = input<string>();\n isDraggable = input(false);\n language = input<'en' | 'es' | null>('es');\n readonly onClickButtonRight = output<void>();\n readonly onClickDrag = output<void>();\n\n defaultAdminUserId = inject(XS_DEFAULT_ADMIN_USER_ID);\n\n get routerLink(): string[] | null {\n if (!this.link()) {\n return null;\n }\n\n if (!this.item() || !this.type()) {\n return null;\n }\n\n const typeOk =\n this.type() === 'media' ? 'music' : this.type() + 's';\n const baseAccountPath = `/account/manage/${typeOk}/`;\n let baseTypePath = `/${this.type()}s`;\n if (this.type() === 'site' || this.type() === 'media') {\n const itemType = this.item().type;\n const typeValue =\n typeof itemType === 'string'\n ? itemType\n : (itemType as Record<string, unknown>)?.['name']\n ?.toString()\n ?.toLowerCase();\n baseTypePath = typeValue\n ? `/${typeValue}s`\n : `/${this.subtypeForced()}s`;\n } else if (this.type() === 'organization') {\n const itemTypes = this.item().types;\n baseTypePath =\n itemTypes && itemTypes.length > 0\n ? `/${itemTypes[0]}s`\n : `/${this.subtypeForced()}s`;\n } else if (this.type() === 'equipment') {\n baseTypePath = '/gear';\n }\n\n if (!this.edit()) {\n if (this.type() === 'equipment') {\n return [baseTypePath];\n }\n return [baseTypePath, this.item().slug!];\n }\n\n if (this.item().state === 'active') {\n return [baseAccountPath, this.item().slug!];\n }\n\n if (this.type() === 'playlist') {\n return this.edit()\n ? [`/account/${this.type()}s/`, this.item().slug!]\n : [baseTypePath, this.item().slug!];\n }\n\n return null;\n }\n\n getItemUserName(): string {\n const user = this.item().user;\n if (!user) return '';\n if (typeof user === 'string') return user;\n return (\n ((user as Record<string, unknown>)['name'] as string) || ''\n );\n }\n\n get typeForImage() {\n if (this.type() === 'organization') {\n return 'organization';\n } else if (this.type() === 'playlist') {\n return 'media';\n } else {\n return this.type();\n }\n }\n\n get country() {\n return getCountryItem(this.item(), this.type());\n }\n}\n","<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n &nbsp;x&nbsp;{{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }}&nbsp;|&nbsp;\n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span>&nbsp;|&nbsp;</span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>,&nbsp;</span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}º\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n","import { StoryMeta } from '../../../../story.types';\nimport { XSItemCompactComponent } from './xs-item-compact.component';\nimport {\n mockArtists,\n mockEvents,\n mockSites,\n mockMedia,\n mockUsers,\n} from '../../../../mocks';\n\nexport const story: StoryMeta = {\n id: 'item-compact',\n name: 'Item Compact',\n type: 'component',\n subtype: 'UI',\n status: 'active',\n usage: ['admin', 'app', 'monitor'],\n updated: '2026-01-04T22:00:00.000Z',\n created: '2026-01-02T00:44:32.446Z',\n description:\n 'Componente compacto para mostrar items de diferentes tipos (artistas, eventos, medios, usuarios, etc.) con imagen, nombre, metadatos contextuales y acciones. Incluye soporte para modos de edición, drag & drop, y diferentes layouts según el tipo de contenido. Diseñado para listas densas donde se necesita máxima información en mínimo espacio.',\n component: XSItemCompactComponent,\n selector: 'xs-item-compact',\n inputs: [\n {\n key: 'type',\n label: 'Type',\n type: 'select',\n options: [\n 'artist',\n 'organization',\n 'event',\n 'site',\n 'equipment',\n 'playlist',\n 'media',\n 'user',\n ],\n default: 'artist',\n },\n {\n key: 'item',\n label: 'Item',\n type: 'json',\n default: mockArtists[0], // Fatima Hajji - complete artist data\n },\n {\n key: 'edit',\n label: 'Edit',\n type: 'boolean',\n default: false,\n },\n {\n key: 'year',\n label: 'Year',\n type: 'boolean',\n default: false,\n },\n {\n key: 'styles',\n label: 'Styles',\n type: 'boolean',\n default: false,\n },\n {\n key: 'link',\n label: 'Link',\n type: 'boolean',\n default: true,\n },\n ],\n examples: [\n {\n name: 'Artist Item',\n description: 'Item compact para artista con datos reales',\n inputs: {\n type: 'artist',\n item: mockArtists[0], // Fatima Hajji\n },\n },\n {\n name: 'Organization Item',\n description: 'Item compact para organización',\n inputs: {\n type: 'organization',\n item: mockArtists[0], // Using artist mock for organization example\n },\n },\n {\n name: 'Event Item',\n description: 'Item compact para evento con datos reales',\n inputs: {\n type: 'event',\n item: mockEvents[0], // Hale-Bopp Vol.4\n },\n },\n {\n name: 'Site Item',\n description: 'Item compact para sitio con datos reales',\n inputs: {\n type: 'site',\n item: mockSites[0], // Smut Athens\n },\n },\n {\n name: 'Equipment Item',\n description: 'Item compact para equipo',\n inputs: {\n type: 'equipment',\n item: {\n name: 'Pioneer DJ Mixer',\n type: { name: 'DJ Mixer' },\n manufacturer: 'Pioneer',\n info: 'Mezclador profesional para DJ',\n slug: 'pioneer-dj-mixer',\n },\n },\n },\n {\n name: 'Playlist Item',\n description: 'Item compact para playlist',\n inputs: {\n type: 'playlist',\n item: {\n name: 'My Techno Mix',\n slug: 'my-techno-mix',\n tracks: [\n { _id: 'track1', name: 'Track 1' },\n { _id: 'track2', name: 'Track 2' },\n ],\n private: false,\n updated: '2026-01-04T10:00:00.000Z',\n },\n },\n },\n {\n name: 'Media Item',\n description: 'Item compact para media con datos reales',\n inputs: {\n type: 'media',\n item: mockMedia[0], // Opening Vinyl Set\n },\n },\n {\n name: 'User Item',\n description: 'Item compact para usuario con datos reales',\n inputs: {\n type: 'user',\n item: mockUsers[0], // JoseXS\n },\n },\n ],\n multilanguage: false,\n notes: [\n {\n text: 'Este componente fue creado automáticamente. Es necesario completar la documentación, inputs y examples.',\n type: 'warning',\n },\n ],\n coverage: {\n statements: 98,\n branches: 82,\n functions: 100,\n lines: 98,\n },\n};\n"],"names":["i3.CountryFlagPipe","i4.DateLocaleFormatPipe"],"mappings":"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AAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,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"}
@@ -0,0 +1,252 @@
1
+ import { XSItemTypeComponent } from './xsmusices-ui.mjs';
2
+ import { m as mockArtists, a as mockEvents, b as mockSites, c as mockMedia, d as mockUsers, e as mockOrganizations, f as mockEquipment, g as mockTrackings } from './xsmusices-ui-index-BpVmLxoG.mjs';
3
+
4
+ const story = {
5
+ id: 'item-type',
6
+ name: 'Item Type',
7
+ type: 'component',
8
+ subtype: 'UI',
9
+ status: 'active',
10
+ usage: ['admin', 'app', 'monitor'],
11
+ updated: '2026-01-26T23:04:09.996Z',
12
+ created: '2026-01-11T12:51:28.669Z',
13
+ description: 'Componente completamente refactorizado con arquitectura modular. Cada tipo de item tiene su propio componente especializado: artist, user, lastLogin, lastVisit, y tracking. El componente principal delega a componentes específicos para mejor mantenibilidad. Componente de 2 líneas para mostrar items de tipo con imagen, nombre y segunda línea contextual.',
14
+ component: XSItemTypeComponent,
15
+ selector: 'xs-item-type',
16
+ inputs: [
17
+ {
18
+ key: 'item',
19
+ label: 'Item',
20
+ type: 'json',
21
+ default: {},
22
+ },
23
+ {
24
+ key: 'itemType',
25
+ label: 'Item Type',
26
+ type: 'select',
27
+ options: [
28
+ 'artist',
29
+ 'event',
30
+ 'site',
31
+ 'playlist',
32
+ 'organization',
33
+ 'user',
34
+ 'userStats',
35
+ 'lastLogin',
36
+ 'equipment',
37
+ 'lastVisit',
38
+ ],
39
+ default: 'artist',
40
+ },
41
+ {
42
+ key: 'isLink',
43
+ label: 'Is Link',
44
+ type: 'boolean',
45
+ default: true,
46
+ },
47
+ {
48
+ key: 'showChevron',
49
+ label: 'Show Chevron',
50
+ type: 'boolean',
51
+ default: false,
52
+ },
53
+ {
54
+ key: 'size',
55
+ label: 'Size',
56
+ type: 'select',
57
+ options: ['normal', 'small'],
58
+ default: 'normal',
59
+ },
60
+ ],
61
+ examples: [
62
+ {
63
+ name: 'Artista',
64
+ description: 'Artista española mostrada con nombre y país',
65
+ inputs: {
66
+ item: mockArtists[0], // Fatima Hajji
67
+ itemType: 'artist',
68
+ showChevron: false,
69
+ },
70
+ },
71
+ {
72
+ name: 'Evento',
73
+ description: 'Evento mostrado con formato "Nombre @ Lugar - Fecha" e información de ubicación',
74
+ inputs: {
75
+ item: mockEvents[0], // Hale-Bopp Vol.4
76
+ itemType: 'event',
77
+ showChevron: true,
78
+ },
79
+ },
80
+ {
81
+ name: 'Club con Región',
82
+ description: 'Club mostrado con región y país',
83
+ inputs: {
84
+ item: mockSites[0], // Smut Athens
85
+ itemType: 'site',
86
+ showChevron: false,
87
+ },
88
+ },
89
+ {
90
+ name: 'Media con Artistas',
91
+ description: 'Media mostrado con título "Nombre - Lugar" y segunda línea con artistas sin @',
92
+ inputs: {
93
+ item: mockMedia[0], // Opening Vinyl Set
94
+ itemType: 'media',
95
+ showChevron: false,
96
+ },
97
+ },
98
+ {
99
+ name: 'Usuario',
100
+ description: 'Usuario mostrado con nombre y país',
101
+ inputs: {
102
+ item: mockUsers[0], // JoseXS
103
+ itemType: 'user',
104
+ showChevron: false,
105
+ },
106
+ },
107
+ {
108
+ name: 'Usuario con Estadísticas',
109
+ description: 'Usuario mostrado con nombre y estadísticas (value y unit) a la derecha',
110
+ inputs: {
111
+ item: { ...mockUsers[0], value: 880, unit: 'likes' },
112
+ itemType: 'userStats',
113
+ showChevron: false,
114
+ },
115
+ },
116
+ {
117
+ name: 'Artista con Seguidores',
118
+ description: 'Artista mostrado con número de seguidores',
119
+ inputs: {
120
+ item: {
121
+ ...mockArtists[0],
122
+ value: 15420,
123
+ unit: 'seguidores',
124
+ },
125
+ itemType: 'artist',
126
+ showChevron: true,
127
+ },
128
+ },
129
+ {
130
+ name: 'Evento con Asistentes',
131
+ description: 'Evento mostrado con número de asistentes confirmados',
132
+ inputs: {
133
+ item: {
134
+ ...mockEvents[0],
135
+ value: 250,
136
+ unit: 'asistentes',
137
+ },
138
+ itemType: 'event',
139
+ showChevron: true,
140
+ },
141
+ },
142
+ {
143
+ name: 'Playlist con Reproducciones',
144
+ description: 'Playlist mostrada con número de reproducciones',
145
+ inputs: {
146
+ item: {
147
+ id: 'playlist-1',
148
+ name: 'Éxitos del 2026',
149
+ description: 'Los mejores hits del año',
150
+ trackCount: 25,
151
+ duration: '2h 15m',
152
+ },
153
+ itemType: 'playlist',
154
+ value: 125000,
155
+ unit: 'reproducciones',
156
+ showChevron: true,
157
+ },
158
+ },
159
+ {
160
+ name: 'Item Simple',
161
+ description: 'Item simple con título y valor',
162
+ inputs: {
163
+ item: {
164
+ title: 'Reproducciones',
165
+ value: 1250,
166
+ label: 'esta semana',
167
+ },
168
+ itemType: 'userStats',
169
+ showChevron: false,
170
+ },
171
+ },
172
+ {
173
+ name: 'Organización',
174
+ description: 'Organización mostrada con nombre y país',
175
+ inputs: {
176
+ item: mockOrganizations[0], // XSMusic Productions
177
+ itemType: 'organization',
178
+ showChevron: false,
179
+ },
180
+ },
181
+ {
182
+ name: 'Equipo',
183
+ description: 'Equipo mostrado con nombre y país',
184
+ inputs: {
185
+ item: mockEquipment[0], // Pioneer DJ XDJ-1000
186
+ itemType: 'equipment',
187
+ showCountry: true,
188
+ showChevron: false,
189
+ },
190
+ },
191
+ {
192
+ name: 'Last Login',
193
+ description: 'Usuario con información de último login integrada (sin slots)',
194
+ inputs: {
195
+ item: mockUsers[0],
196
+ itemType: 'lastLogin',
197
+ showCountry: false,
198
+ showChevron: false,
199
+ size: 'small',
200
+ },
201
+ template: `
202
+ <xs-item-type [item]="item" [itemType]="'lastLogin'" [showChevron]="false"></xs-item-type>
203
+ `,
204
+ },
205
+ {
206
+ name: 'Tracking',
207
+ description: 'Seguimiento de acción del sistema con información de usuario',
208
+ inputs: {
209
+ item: mockTrackings[1],
210
+ itemType: 'tracking',
211
+ showChevron: true,
212
+ size: 'small',
213
+ },
214
+ template: `
215
+ <xs-item-type [item]="item" [itemType]="'tracking'" [showChevron]="true"></xs-item-type>
216
+ `,
217
+ },
218
+ {
219
+ name: 'Last Visit',
220
+ description: 'Última visita a un item con información del dispositivo y usuario',
221
+ inputs: {
222
+ item: {
223
+ type: 'artist',
224
+ name: 'Fatima Hajji',
225
+ artist: mockArtists[0], // Fatima Hajji
226
+ deviceBrand: 'Android',
227
+ appType: 'mobile',
228
+ deviceCountry: 'es',
229
+ user: mockUsers[0], // JoseXS
230
+ created: '2026-01-09T17:30:00.000Z',
231
+ },
232
+ itemType: 'lastVisit',
233
+ showChevron: false,
234
+ size: 'small',
235
+ },
236
+ template: `
237
+ <xs-item-type [item]="item" [itemType]="'lastVisit'" [showChevron]="false"></xs-item-type>
238
+ `,
239
+ },
240
+ ],
241
+ multilanguage: false,
242
+ notes: [],
243
+ coverage: {
244
+ "statements": 13,
245
+ "branches": 0,
246
+ "functions": 0,
247
+ "lines": 13
248
+ },
249
+ };
250
+
251
+ export { story };
252
+ //# sourceMappingURL=xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs","sources":["../../../projects/xs-ui/src/lib/components/ui/items/type/xs-item-type.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../../story.types';\nimport { XSItemTypeComponent } from './xs-item-type.component';\nimport {\n mockArtists,\n mockEvents,\n mockSites,\n mockMedia,\n mockUsers,\n mockOrganizations,\n mockEquipment,\n mockTrackings,\n} from '../../../../mocks';\n\nexport const story: StoryMeta = {\n id: 'item-type',\n name: 'Item Type',\n type: 'component',\n subtype: 'UI',\n status: 'active',\n usage: ['admin', 'app', 'monitor'],\n updated: '2026-01-26T23:04:09.996Z',\n created: '2026-01-11T12:51:28.669Z',\n description:\n 'Componente completamente refactorizado con arquitectura modular. Cada tipo de item tiene su propio componente especializado: artist, user, lastLogin, lastVisit, y tracking. El componente principal delega a componentes específicos para mejor mantenibilidad. Componente de 2 líneas para mostrar items de tipo con imagen, nombre y segunda línea contextual.',\n component: XSItemTypeComponent,\n selector: 'xs-item-type',\n inputs: [\n {\n key: 'item',\n label: 'Item',\n type: 'json',\n default: {},\n },\n {\n key: 'itemType',\n label: 'Item Type',\n type: 'select',\n options: [\n 'artist',\n 'event',\n 'site',\n 'playlist',\n 'organization',\n 'user',\n 'userStats',\n 'lastLogin',\n 'equipment',\n 'lastVisit',\n ],\n default: 'artist',\n },\n {\n key: 'isLink',\n label: 'Is Link',\n type: 'boolean',\n default: true,\n },\n {\n key: 'showChevron',\n label: 'Show Chevron',\n type: 'boolean',\n default: false,\n },\n {\n key: 'size',\n label: 'Size',\n type: 'select',\n options: ['normal', 'small'],\n default: 'normal',\n },\n ],\n examples: [\n {\n name: 'Artista',\n description: 'Artista española mostrada con nombre y país',\n inputs: {\n item: mockArtists[0], // Fatima Hajji\n itemType: 'artist',\n\n showChevron: false,\n },\n },\n {\n name: 'Evento',\n description:\n 'Evento mostrado con formato \"Nombre @ Lugar - Fecha\" e información de ubicación',\n inputs: {\n item: mockEvents[0], // Hale-Bopp Vol.4\n itemType: 'event',\n showChevron: true,\n },\n },\n {\n name: 'Club con Región',\n description: 'Club mostrado con región y país',\n inputs: {\n item: mockSites[0], // Smut Athens\n itemType: 'site',\n showChevron: false,\n },\n },\n {\n name: 'Media con Artistas',\n description:\n 'Media mostrado con título \"Nombre - Lugar\" y segunda línea con artistas sin @',\n inputs: {\n item: mockMedia[0], // Opening Vinyl Set\n itemType: 'media',\n showChevron: false,\n },\n },\n {\n name: 'Usuario',\n description: 'Usuario mostrado con nombre y país',\n inputs: {\n item: mockUsers[0], // JoseXS\n itemType: 'user',\n showChevron: false,\n },\n },\n {\n name: 'Usuario con Estadísticas',\n description:\n 'Usuario mostrado con nombre y estadísticas (value y unit) a la derecha',\n inputs: {\n item: { ...mockUsers[0], value: 880, unit: 'likes' },\n itemType: 'userStats',\n showChevron: false,\n },\n },\n {\n name: 'Artista con Seguidores',\n description: 'Artista mostrado con número de seguidores',\n inputs: {\n item: {\n ...mockArtists[0],\n value: 15420,\n unit: 'seguidores',\n },\n itemType: 'artist',\n showChevron: true,\n },\n },\n {\n name: 'Evento con Asistentes',\n description:\n 'Evento mostrado con número de asistentes confirmados',\n inputs: {\n item: {\n ...mockEvents[0],\n value: 250,\n unit: 'asistentes',\n },\n itemType: 'event',\n showChevron: true,\n },\n },\n {\n name: 'Playlist con Reproducciones',\n description:\n 'Playlist mostrada con número de reproducciones',\n inputs: {\n item: {\n id: 'playlist-1',\n name: 'Éxitos del 2026',\n description: 'Los mejores hits del año',\n trackCount: 25,\n duration: '2h 15m',\n },\n itemType: 'playlist',\n value: 125000,\n unit: 'reproducciones',\n showChevron: true,\n },\n },\n {\n name: 'Item Simple',\n description: 'Item simple con título y valor',\n inputs: {\n item: {\n title: 'Reproducciones',\n value: 1250,\n label: 'esta semana',\n },\n itemType: 'userStats',\n showChevron: false,\n },\n },\n {\n name: 'Organización',\n description: 'Organización mostrada con nombre y país',\n inputs: {\n item: mockOrganizations[0], // XSMusic Productions\n itemType: 'organization',\n showChevron: false,\n },\n },\n {\n name: 'Equipo',\n description: 'Equipo mostrado con nombre y país',\n inputs: {\n item: mockEquipment[0], // Pioneer DJ XDJ-1000\n itemType: 'equipment',\n showCountry: true,\n showChevron: false,\n },\n },\n {\n name: 'Last Login',\n description:\n 'Usuario con información de último login integrada (sin slots)',\n inputs: {\n item: mockUsers[0],\n itemType: 'lastLogin',\n showCountry: false,\n showChevron: false,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'lastLogin'\" [showChevron]=\"false\"></xs-item-type>\n `,\n },\n {\n name: 'Tracking',\n description:\n 'Seguimiento de acción del sistema con información de usuario',\n inputs: {\n item: mockTrackings[1],\n itemType: 'tracking',\n showChevron: true,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'tracking'\" [showChevron]=\"true\"></xs-item-type>\n `,\n },\n {\n name: 'Last Visit',\n description:\n 'Última visita a un item con información del dispositivo y usuario',\n inputs: {\n item: {\n type: 'artist',\n name: 'Fatima Hajji',\n artist: mockArtists[0], // Fatima Hajji\n deviceBrand: 'Android',\n appType: 'mobile',\n deviceCountry: 'es',\n user: mockUsers[0], // JoseXS\n created: '2026-01-09T17:30:00.000Z',\n },\n itemType: 'lastVisit',\n showChevron: false,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'lastVisit'\" [showChevron]=\"false\"></xs-item-type>\n `,\n },\n ],\n multilanguage: false,\n notes: [],\n coverage: {\n \"statements\": 13,\n \"branches\": 0,\n \"functions\": 0,\n \"lines\": 13\n},\n};\n"],"names":[],"mappings":";;;AAaO,MAAM,KAAK,GAAc;AAC9B,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AAClC,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,WAAW,EACT,mWAAmW;AACrW,IAAA,SAAS,EAAE,mBAAmB;AAC9B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE;gBACP,QAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,UAAU;gBACV,cAAc;gBACd,MAAM;gBACN,WAAW;gBACX,WAAW;gBACX,WAAW;gBACX,WAAW;AACZ,aAAA;AACD,YAAA,OAAO,EAAE,QAAQ;AAClB,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC5B,YAAA,OAAO,EAAE,QAAQ;AAClB,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,6CAA6C;AAC1D,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACpB,gBAAA,QAAQ,EAAE,QAAQ;AAElB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EACT,iFAAiF;AACnF,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACnB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,WAAW,EAAE,iCAAiC;AAC9C,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,WAAW,EACT,+EAA+E;AACjF,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,WAAW,EACT,wEAAwE;AAC1E,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACpD,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,wBAAwB;AAC9B,YAAA,WAAW,EAAE,2CAA2C;AACxD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;oBACJ,GAAG,WAAW,CAAC,CAAC,CAAC;AACjB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;AACD,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,WAAW,EACT,sDAAsD;AACxD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;oBACJ,GAAG,UAAU,CAAC,CAAC,CAAC;AAChB,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;AACD,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,6BAA6B;AACnC,YAAA,WAAW,EACT,gDAAgD;AAClD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,WAAW,EAAE,0BAA0B;AACvC,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA;AACD,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,WAAW,EAAE,gCAAgC;AAC7C,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAE,aAAa;AACrB,iBAAA;AACD,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,WAAW,EAAE,yCAAyC;AACtD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC1B,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AACtB,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,WAAW,EACT,+DAA+D;AACjE,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;;AAET,MAAA,CAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,WAAW,EACT,8DAA8D;AAChE,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AACtB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;;AAET,MAAA,CAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,WAAW,EACT,mEAAmE;AACrE,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACtB,oBAAA,WAAW,EAAE,SAAS;AACtB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,oBAAA,OAAO,EAAE,0BAA0B;AACpC,iBAAA;AACD,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;;AAET,MAAA,CAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,QAAQ,EAAE;AACV,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,OAAO,EAAE;AACV,KAAA;;;;;"}