@xsmusices/ui 0.0.0-stage → 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 (167) hide show
  1. package/README.md +78 -2
  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 +23429 -0
  163. package/fesm2022/xsmusices-ui.mjs.map +1 -0
  164. package/index.d.ts +5851 -0
  165. package/package.json +45 -4
  166. package/styles/shared-base.css +93 -0
  167. package/styles/shared-utilities.css +349 -0
@@ -0,0 +1,165 @@
1
+ import { XSBlockComponent } from './xsmusices-ui.mjs';
2
+
3
+ const story = {
4
+ id: 'block',
5
+ name: 'Block',
6
+ type: 'component',
7
+ subtype: 'Base',
8
+ status: 'active',
9
+ usage: ['admin', 'app'],
10
+ updated: '2026-05-21T10:00:00.000Z',
11
+ created: '2026-05-21T10:00:00.000Z',
12
+ description: 'Bloque reutilizable con cabecera (título, select opcional, botón de recarga), slots para contenido y estados integrados: loading (skeleton), error (xs-empty-state), empty (xs-empty-state) y content.',
13
+ component: XSBlockComponent,
14
+ selector: 'xs-block',
15
+ slots: [
16
+ {
17
+ name: 'content',
18
+ description: 'Contenido principal del bloque. Se muestra cuando state = "content".',
19
+ },
20
+ {
21
+ name: 'blockHeaderRight',
22
+ description: 'Contenido adicional en la cabecera, al lado del título.',
23
+ },
24
+ ],
25
+ inputs: [
26
+ {
27
+ key: 'title',
28
+ label: 'Título del bloque',
29
+ type: 'text',
30
+ default: '',
31
+ },
32
+ {
33
+ key: 'state',
34
+ label: 'Estado',
35
+ type: 'select',
36
+ options: ['content', 'loading', 'error', 'empty'],
37
+ default: 'content',
38
+ },
39
+ {
40
+ key: 'emptyMessage',
41
+ label: 'Mensaje para estado vacío',
42
+ type: 'text',
43
+ default: 'No hay datos',
44
+ },
45
+ {
46
+ key: 'errorMessage',
47
+ label: 'Mensaje para estado error',
48
+ type: 'text',
49
+ default: 'Error al cargar los datos',
50
+ },
51
+ {
52
+ key: 'showRefresh',
53
+ label: 'Mostrar botón de recarga',
54
+ type: 'boolean',
55
+ default: true,
56
+ },
57
+ {
58
+ key: 'selectOptions',
59
+ label: 'Opciones del select',
60
+ type: 'json',
61
+ default: [],
62
+ },
63
+ {
64
+ key: 'selectValue',
65
+ label: 'Valor seleccionado',
66
+ type: 'text',
67
+ default: '',
68
+ },
69
+ {
70
+ key: 'titleRouterLink',
71
+ label: 'RouterLink para el título',
72
+ type: 'json',
73
+ default: null,
74
+ },
75
+ {
76
+ key: 'titleHref',
77
+ label: 'Enlace externo para el título',
78
+ type: 'text',
79
+ default: null,
80
+ },
81
+ {
82
+ key: 'loadingTemplate',
83
+ label: 'Template personalizado de carga',
84
+ type: 'text',
85
+ default: null,
86
+ },
87
+ {
88
+ key: 'loadingItems',
89
+ label: 'Número de items en skeleton de carga',
90
+ type: 'number',
91
+ default: 5,
92
+ },
93
+ {
94
+ key: 'emptyDescription',
95
+ label: 'Descripción para estado vacío',
96
+ type: 'text',
97
+ default: '',
98
+ },
99
+ ],
100
+ examples: [
101
+ {
102
+ name: 'Estado loading',
103
+ description: 'Muestra el esqueleto de carga',
104
+ inputs: {
105
+ title: 'Cargando...',
106
+ state: 'loading',
107
+ },
108
+ },
109
+ {
110
+ name: 'Estado vacío',
111
+ description: 'Muestra el mensaje de sin datos con xs-empty-state',
112
+ inputs: {
113
+ title: 'Sin datos',
114
+ state: 'empty',
115
+ emptyMessage: 'No hay actividad disponible',
116
+ },
117
+ },
118
+ {
119
+ name: 'Estado error',
120
+ description: 'Muestra el mensaje de error con xs-empty-state',
121
+ inputs: {
122
+ title: 'Error',
123
+ state: 'error',
124
+ errorMessage: 'No se pudieron cargar los datos',
125
+ },
126
+ },
127
+ {
128
+ name: 'Con select y refresh',
129
+ description: 'Cabecera con selector de período y botón de recarga',
130
+ inputs: {
131
+ title: 'Estadísticas',
132
+ state: 'content',
133
+ selectOptions: [
134
+ { label: '7 días', value: '7d' },
135
+ { label: '30 días', value: '30d' },
136
+ { label: '90 días', value: '90d' },
137
+ ],
138
+ selectValue: '30d',
139
+ },
140
+ },
141
+ {
142
+ name: 'Sin botón de recarga',
143
+ description: 'Bloque sin el botón de refresh',
144
+ inputs: {
145
+ title: 'Info estática',
146
+ state: 'content',
147
+ showRefresh: false,
148
+ },
149
+ },
150
+ ],
151
+ multilanguage: false,
152
+ notes: [
153
+ {
154
+ text: 'Los estados empty y error usan internamente xs-empty-state.',
155
+ type: 'info',
156
+ },
157
+ {
158
+ text: 'selectOptions es un array de objetos { label, value }. Al seleccionar una opción, selectValue se actualiza con el value.',
159
+ type: 'info',
160
+ },
161
+ ],
162
+ };
163
+
164
+ export { story };
165
+ //# sourceMappingURL=xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs","sources":["../../../projects/xs-ui/src/lib/components/base/block/xs-block.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../story.types';\nimport {\n XSBlockComponent,\n XSBlockState,\n} from './xs-block.component';\n\nexport const story: StoryMeta = {\n id: 'block',\n name: 'Block',\n type: 'component',\n subtype: 'Base',\n status: 'active',\n usage: ['admin', 'app'],\n updated: '2026-05-21T10:00:00.000Z',\n created: '2026-05-21T10:00:00.000Z',\n description:\n 'Bloque reutilizable con cabecera (título, select opcional, botón de recarga), slots para contenido y estados integrados: loading (skeleton), error (xs-empty-state), empty (xs-empty-state) y content.',\n component: XSBlockComponent,\n selector: 'xs-block',\n slots: [\n {\n name: 'content',\n description:\n 'Contenido principal del bloque. Se muestra cuando state = \"content\".',\n },\n {\n name: 'blockHeaderRight',\n description:\n 'Contenido adicional en la cabecera, al lado del título.',\n },\n ],\n inputs: [\n {\n key: 'title',\n label: 'Título del bloque',\n type: 'text',\n default: '',\n },\n {\n key: 'state',\n label: 'Estado',\n type: 'select',\n options: ['content', 'loading', 'error', 'empty'],\n default: 'content',\n },\n {\n key: 'emptyMessage',\n label: 'Mensaje para estado vacío',\n type: 'text',\n default: 'No hay datos',\n },\n {\n key: 'errorMessage',\n label: 'Mensaje para estado error',\n type: 'text',\n default: 'Error al cargar los datos',\n },\n {\n key: 'showRefresh',\n label: 'Mostrar botón de recarga',\n type: 'boolean',\n default: true,\n },\n {\n key: 'selectOptions',\n label: 'Opciones del select',\n type: 'json',\n default: [],\n },\n {\n key: 'selectValue',\n label: 'Valor seleccionado',\n type: 'text',\n default: '',\n },\n {\n key: 'titleRouterLink',\n label: 'RouterLink para el título',\n type: 'json',\n default: null,\n },\n {\n key: 'titleHref',\n label: 'Enlace externo para el título',\n type: 'text',\n default: null,\n },\n {\n key: 'loadingTemplate',\n label: 'Template personalizado de carga',\n type: 'text',\n default: null,\n },\n {\n key: 'loadingItems',\n label: 'Número de items en skeleton de carga',\n type: 'number',\n default: 5,\n },\n {\n key: 'emptyDescription',\n label: 'Descripción para estado vacío',\n type: 'text',\n default: '',\n },\n ],\n examples: [\n {\n name: 'Estado loading',\n description: 'Muestra el esqueleto de carga',\n inputs: {\n title: 'Cargando...',\n state: 'loading' as XSBlockState,\n },\n },\n {\n name: 'Estado vacío',\n description:\n 'Muestra el mensaje de sin datos con xs-empty-state',\n inputs: {\n title: 'Sin datos',\n state: 'empty' as XSBlockState,\n emptyMessage: 'No hay actividad disponible',\n },\n },\n {\n name: 'Estado error',\n description:\n 'Muestra el mensaje de error con xs-empty-state',\n inputs: {\n title: 'Error',\n state: 'error' as XSBlockState,\n errorMessage: 'No se pudieron cargar los datos',\n },\n },\n {\n name: 'Con select y refresh',\n description:\n 'Cabecera con selector de período y botón de recarga',\n inputs: {\n title: 'Estadísticas',\n state: 'content' as XSBlockState,\n selectOptions: [\n { label: '7 días', value: '7d' },\n { label: '30 días', value: '30d' },\n { label: '90 días', value: '90d' },\n ],\n selectValue: '30d',\n },\n },\n {\n name: 'Sin botón de recarga',\n description: 'Bloque sin el botón de refresh',\n inputs: {\n title: 'Info estática',\n state: 'content' as XSBlockState,\n showRefresh: false,\n },\n },\n ],\n multilanguage: false,\n notes: [\n {\n text: 'Los estados empty y error usan internamente xs-empty-state.',\n type: 'info',\n },\n {\n text: 'selectOptions es un array de objetos { label, value }. Al seleccionar una opción, selectValue se actualiza con el value.',\n type: 'info',\n },\n ],\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { XSBreadcrumbsComponent } from './xsmusices-ui.mjs';
2
+
3
+ const story = {
4
+ id: 'breadcrumbs',
5
+ name: 'Breadcrumbs',
6
+ type: 'component',
7
+ subtype: 'UI',
8
+ status: 'active',
9
+ usage: [],
10
+ updatedDate: '2026-02-10T12:45:00.000Z',
11
+ createdDate: '2026-01-16',
12
+ description: 'Componente de navegación breadcrumbs con diseño moderno glassmorphism. Muestra la jerarquía de navegación actual con soporte para provider dinámico.',
13
+ component: XSBreadcrumbsComponent,
14
+ selector: 'xs-breadcrumbs',
15
+ inputs: [
16
+ {
17
+ key: 'breadcrumbs',
18
+ label: 'Breadcrumbs manuales',
19
+ type: 'json',
20
+ default: '[]',
21
+ },
22
+ {
23
+ key: 'provider',
24
+ label: 'Provider personalizado',
25
+ type: 'json',
26
+ default: 'undefined',
27
+ },
28
+ ],
29
+ examples: [
30
+ {
31
+ name: 'Breadcrumbs automáticos',
32
+ description: 'Usa el provider global para generar breadcrumbs automáticamente',
33
+ template: `<xs-breadcrumbs></xs-breadcrumbs>`,
34
+ },
35
+ {
36
+ name: 'Breadcrumbs manuales',
37
+ description: 'Proporciona breadcrumbs manualmente',
38
+ template: `<xs-breadcrumbs [breadcrumbs]="manualBreadcrumbs"></xs-breadcrumbs>`,
39
+ },
40
+ ],
41
+ };
42
+
43
+ export { story };
44
+ //# sourceMappingURL=xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs","sources":["../../../projects/xs-ui/src/lib/components/ui/breadcrumbs/xs-breadcrumbs.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../story.types';\nimport { XSBreadcrumbsComponent } from './xs-breadcrumbs.component';\n\nexport const story: StoryMeta = {\n id: 'breadcrumbs',\n name: 'Breadcrumbs',\n type: 'component',\n subtype: 'UI',\n status: 'active',\n usage: [],\n updatedDate: '2026-02-10T12:45:00.000Z',\n createdDate: '2026-01-16',\n description:\n 'Componente de navegación breadcrumbs con diseño moderno glassmorphism. Muestra la jerarquía de navegación actual con soporte para provider dinámico.',\n component: XSBreadcrumbsComponent,\n selector: 'xs-breadcrumbs',\n inputs: [\n {\n key: 'breadcrumbs',\n label: 'Breadcrumbs manuales',\n type: 'json',\n default: '[]',\n },\n {\n key: 'provider',\n label: 'Provider personalizado',\n type: 'json',\n default: 'undefined',\n },\n ],\n examples: [\n {\n name: 'Breadcrumbs automáticos',\n description:\n 'Usa el provider global para generar breadcrumbs automáticamente',\n template: `<xs-breadcrumbs></xs-breadcrumbs>`,\n },\n {\n name: 'Breadcrumbs manuales',\n description: 'Proporciona breadcrumbs manualmente',\n template: `<xs-breadcrumbs [breadcrumbs]=\"manualBreadcrumbs\"></xs-breadcrumbs>`,\n },\n ],\n};\n"],"names":[],"mappings":";;AAGO,MAAM,KAAK,GAAc;AAC9B,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,WAAW,EACT,sJAAsJ;AACxJ,IAAA,SAAS,EAAE,sBAAsB;AACjC,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,WAAW;AACrB,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA;AACE,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,WAAW,EACT,iEAAiE;AACnE,YAAA,QAAQ,EAAE,CAAA,iCAAA,CAAmC;AAC9C,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,WAAW,EAAE,qCAAqC;AAClD,YAAA,QAAQ,EAAE,CAAA,mEAAA,CAAqE;AAChF,SAAA;AACF,KAAA;;;;;"}
@@ -0,0 +1,263 @@
1
+ import { XSButtonComponent } from './xsmusices-ui.mjs';
2
+
3
+ const story = {
4
+ id: 'button',
5
+ name: 'Button',
6
+ type: 'component',
7
+ subtype: 'Base',
8
+ status: 'active',
9
+ usage: ['admin', 'app', 'monitor'],
10
+ updated: '2026-04-26T15:45:46.112Z',
11
+ created: '2025-07-18T17:52:33.846Z',
12
+ description: 'Componente Button versátil con múltiples variantes, layouts y estados. Soporta iconos, badges, estados de carga y agrupación.',
13
+ component: XSButtonComponent,
14
+ selector: 'xs-button',
15
+ inputs: [
16
+ {
17
+ key: 'label',
18
+ label: 'Texto del botón',
19
+ type: 'text',
20
+ default: '',
21
+ },
22
+ {
23
+ key: 'type',
24
+ label: 'Tipo HTML',
25
+ type: 'select',
26
+ options: ['button', 'submit'],
27
+ default: 'button',
28
+ },
29
+ {
30
+ key: 'variant',
31
+ label: 'Variante visual',
32
+ type: 'select',
33
+ options: [
34
+ 'primary',
35
+ 'secondary',
36
+ 'tertiary',
37
+ 'error',
38
+ 'success',
39
+ 'warning',
40
+ 'info',
41
+ 'selected',
42
+ 'profile',
43
+ 'custom',
44
+ 'outline',
45
+ ],
46
+ default: 'primary',
47
+ },
48
+ {
49
+ key: 'layout',
50
+ label: 'Diseño y tamaño',
51
+ type: 'select',
52
+ options: [
53
+ 'base',
54
+ 'between',
55
+ 'iconOnly',
56
+ 'iconOnlyHeader',
57
+ 'iconOnlyMini',
58
+ 'small',
59
+ 'mini',
60
+ 'badge',
61
+ 'profile',
62
+ ],
63
+ default: 'base',
64
+ },
65
+ {
66
+ key: 'icon',
67
+ label: 'Icono FontAwesome',
68
+ type: 'json',
69
+ default: null,
70
+ },
71
+ {
72
+ key: 'disabled',
73
+ label: 'Deshabilitado',
74
+ type: 'boolean',
75
+ default: false,
76
+ },
77
+ {
78
+ key: 'loading',
79
+ label: 'Estado de carga',
80
+ type: 'boolean',
81
+ default: false,
82
+ },
83
+ {
84
+ key: 'isFull',
85
+ label: 'Ancho completo',
86
+ type: 'boolean',
87
+ default: false,
88
+ },
89
+ {
90
+ key: 'badgeCount',
91
+ label: 'Contador del badge',
92
+ type: 'number',
93
+ default: undefined,
94
+ },
95
+ {
96
+ key: 'customClass',
97
+ label: 'Clases CSS personalizadas',
98
+ type: 'text',
99
+ default: '',
100
+ },
101
+ {
102
+ key: 'isGrouped',
103
+ label: 'Parte de un grupo',
104
+ type: 'boolean',
105
+ default: false,
106
+ },
107
+ {
108
+ key: 'groupPosition',
109
+ label: 'Posición en grupo',
110
+ type: 'select',
111
+ options: ['first', 'middle', 'last'],
112
+ default: undefined,
113
+ dependsOn: 'isGrouped',
114
+ showWhenValues: [true],
115
+ },
116
+ {
117
+ key: 'borderRadius',
118
+ label: 'Radio del borde',
119
+ type: 'text',
120
+ default: 'rounded-xl',
121
+ },
122
+ ],
123
+ examples: [
124
+ {
125
+ name: 'Botón Básico',
126
+ description: 'Botón primario básico con texto',
127
+ inputs: {
128
+ label: 'Guardar',
129
+ },
130
+ },
131
+ {
132
+ name: 'Botón con Icono',
133
+ description: 'Botón con icono FontAwesome',
134
+ inputs: {
135
+ label: 'Agregar',
136
+ icon: { name: 'plus' },
137
+ },
138
+ },
139
+ {
140
+ name: 'Botón de Éxito',
141
+ description: 'Botón con variante success',
142
+ inputs: {
143
+ label: 'Confirmar',
144
+ variant: 'success',
145
+ },
146
+ },
147
+ {
148
+ name: 'Botón de Error',
149
+ description: 'Botón con variante error',
150
+ inputs: {
151
+ label: 'Eliminar',
152
+ variant: 'error',
153
+ },
154
+ },
155
+ {
156
+ name: 'Botón Deshabilitado',
157
+ description: 'Botón en estado deshabilitado',
158
+ inputs: {
159
+ label: 'Deshabilitado',
160
+ disabled: true,
161
+ },
162
+ },
163
+ {
164
+ name: 'Botón de Carga',
165
+ description: 'Botón en estado de carga',
166
+ inputs: {
167
+ label: 'Cargando...',
168
+ loading: true,
169
+ },
170
+ },
171
+ {
172
+ name: 'Botón Solo Icono',
173
+ description: 'Botón que muestra solo un icono',
174
+ inputs: {
175
+ layout: 'iconOnly',
176
+ icon: { name: 'search' },
177
+ },
178
+ },
179
+ {
180
+ name: 'Botón Pequeño',
181
+ description: 'Botón con layout pequeño',
182
+ inputs: {
183
+ label: 'Pequeño',
184
+ layout: 'small',
185
+ },
186
+ },
187
+ {
188
+ name: 'Botón Mini',
189
+ description: 'Botón con layout mini (estilo badge enano)',
190
+ inputs: {
191
+ label: 'Mini',
192
+ layout: 'mini',
193
+ },
194
+ },
195
+ {
196
+ name: 'Botón Ancho Completo',
197
+ description: 'Botón que ocupa todo el ancho disponible',
198
+ inputs: {
199
+ label: 'Ancho Completo',
200
+ isFull: true,
201
+ },
202
+ },
203
+ {
204
+ name: 'Botón con Badge',
205
+ description: 'Botón con contador de badge',
206
+ inputs: {
207
+ label: 'Notificaciones',
208
+ layout: 'badge',
209
+ badgeCount: 5,
210
+ },
211
+ },
212
+ {
213
+ name: 'Botón de Perfil',
214
+ description: 'Botón estilo perfil con layout perfil y variante profile',
215
+ inputs: {
216
+ label: 'Ir al perfil',
217
+ variant: 'profile',
218
+ layout: 'profile',
219
+ },
220
+ },
221
+ {
222
+ name: 'Botón Outline',
223
+ description: 'Botón con estilo outline',
224
+ inputs: {
225
+ label: 'Outline',
226
+ variant: 'outline',
227
+ },
228
+ },
229
+ {
230
+ name: 'Botón Custom',
231
+ description: 'Botón con clases personalizadas',
232
+ inputs: {
233
+ label: 'Custom',
234
+ variant: 'custom',
235
+ customClass: 'bg-purple-600 hover:bg-purple-700 text-white',
236
+ },
237
+ },
238
+ ],
239
+ multilanguage: false,
240
+ notes: [
241
+ {
242
+ text: 'El componente soporta iconos de FontAwesome. Puedes pasar el nombre del icono como string o un objeto con propiedades adicionales.',
243
+ type: 'info',
244
+ },
245
+ {
246
+ text: 'Los botones con loading=true no emiten eventos de click.',
247
+ type: 'warning',
248
+ },
249
+ {
250
+ text: 'Para botones agrupados, usa isGrouped=true y groupPosition para controlar los bordes redondeados.',
251
+ type: 'info',
252
+ },
253
+ ],
254
+ coverage: {
255
+ "statements": 99,
256
+ "branches": 89,
257
+ "functions": 100,
258
+ "lines": 99
259
+ },
260
+ };
261
+
262
+ export { story };
263
+ //# sourceMappingURL=xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs","sources":["../../../projects/xs-ui/src/lib/components/base/button/xs-button.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../story.types';\nimport { XSButtonComponent } from './xs-button.component';\n\nexport const story: StoryMeta = {\n id: 'button',\n name: 'Button',\n type: 'component',\n subtype: 'Base',\n status: 'active',\n usage: ['admin', 'app', 'monitor'],\n updated: '2026-04-26T15:45:46.112Z',\n created: '2025-07-18T17:52:33.846Z',\n description:\n 'Componente Button versátil con múltiples variantes, layouts y estados. Soporta iconos, badges, estados de carga y agrupación.',\n component: XSButtonComponent,\n selector: 'xs-button',\n inputs: [\n {\n key: 'label',\n label: 'Texto del botón',\n type: 'text',\n default: '',\n },\n {\n key: 'type',\n label: 'Tipo HTML',\n type: 'select',\n options: ['button', 'submit'],\n default: 'button',\n },\n {\n key: 'variant',\n label: 'Variante visual',\n type: 'select',\n options: [\n 'primary',\n 'secondary',\n 'tertiary',\n 'error',\n 'success',\n 'warning',\n 'info',\n 'selected',\n 'profile',\n 'custom',\n 'outline',\n ],\n default: 'primary',\n },\n {\n key: 'layout',\n label: 'Diseño y tamaño',\n type: 'select',\n options: [\n 'base',\n 'between',\n 'iconOnly',\n 'iconOnlyHeader',\n 'iconOnlyMini',\n 'small',\n 'mini',\n 'badge',\n 'profile',\n ],\n default: 'base',\n },\n {\n key: 'icon',\n label: 'Icono FontAwesome',\n type: 'json',\n default: null,\n },\n {\n key: 'disabled',\n label: 'Deshabilitado',\n type: 'boolean',\n default: false,\n },\n {\n key: 'loading',\n label: 'Estado de carga',\n type: 'boolean',\n default: false,\n },\n {\n key: 'isFull',\n label: 'Ancho completo',\n type: 'boolean',\n default: false,\n },\n {\n key: 'badgeCount',\n label: 'Contador del badge',\n type: 'number',\n default: undefined,\n },\n {\n key: 'customClass',\n label: 'Clases CSS personalizadas',\n type: 'text',\n default: '',\n },\n {\n key: 'isGrouped',\n label: 'Parte de un grupo',\n type: 'boolean',\n default: false,\n },\n {\n key: 'groupPosition',\n label: 'Posición en grupo',\n type: 'select',\n options: ['first', 'middle', 'last'],\n default: undefined,\n dependsOn: 'isGrouped',\n showWhenValues: [true],\n },\n {\n key: 'borderRadius',\n label: 'Radio del borde',\n type: 'text',\n default: 'rounded-xl',\n },\n ],\n examples: [\n {\n name: 'Botón Básico',\n description: 'Botón primario básico con texto',\n inputs: {\n label: 'Guardar',\n },\n },\n {\n name: 'Botón con Icono',\n description: 'Botón con icono FontAwesome',\n inputs: {\n label: 'Agregar',\n icon: { name: 'plus' },\n },\n },\n {\n name: 'Botón de Éxito',\n description: 'Botón con variante success',\n inputs: {\n label: 'Confirmar',\n variant: 'success',\n },\n },\n {\n name: 'Botón de Error',\n description: 'Botón con variante error',\n inputs: {\n label: 'Eliminar',\n variant: 'error',\n },\n },\n {\n name: 'Botón Deshabilitado',\n description: 'Botón en estado deshabilitado',\n inputs: {\n label: 'Deshabilitado',\n disabled: true,\n },\n },\n {\n name: 'Botón de Carga',\n description: 'Botón en estado de carga',\n inputs: {\n label: 'Cargando...',\n loading: true,\n },\n },\n {\n name: 'Botón Solo Icono',\n description: 'Botón que muestra solo un icono',\n inputs: {\n layout: 'iconOnly',\n icon: { name: 'search' },\n },\n },\n {\n name: 'Botón Pequeño',\n description: 'Botón con layout pequeño',\n inputs: {\n label: 'Pequeño',\n layout: 'small',\n },\n },\n {\n name: 'Botón Mini',\n description: 'Botón con layout mini (estilo badge enano)',\n inputs: {\n label: 'Mini',\n layout: 'mini',\n },\n },\n {\n name: 'Botón Ancho Completo',\n description: 'Botón que ocupa todo el ancho disponible',\n inputs: {\n label: 'Ancho Completo',\n isFull: true,\n },\n },\n {\n name: 'Botón con Badge',\n description: 'Botón con contador de badge',\n inputs: {\n label: 'Notificaciones',\n layout: 'badge',\n badgeCount: 5,\n },\n },\n {\n name: 'Botón de Perfil',\n description:\n 'Botón estilo perfil con layout perfil y variante profile',\n inputs: {\n label: 'Ir al perfil',\n variant: 'profile',\n layout: 'profile',\n },\n },\n {\n name: 'Botón Outline',\n description: 'Botón con estilo outline',\n inputs: {\n label: 'Outline',\n variant: 'outline',\n },\n },\n {\n name: 'Botón Custom',\n description: 'Botón con clases personalizadas',\n inputs: {\n label: 'Custom',\n variant: 'custom',\n customClass:\n 'bg-purple-600 hover:bg-purple-700 text-white',\n },\n },\n ],\n multilanguage: false,\n notes: [\n {\n text: 'El componente soporta iconos de FontAwesome. Puedes pasar el nombre del icono como string o un objeto con propiedades adicionales.',\n type: 'info',\n },\n {\n text: 'Los botones con loading=true no emiten eventos de click.',\n type: 'warning',\n },\n {\n text: 'Para botones agrupados, usa isGrouped=true y groupPosition para controlar los bordes redondeados.',\n type: 'info',\n },\n ],\n coverage: {\n \"statements\": 99,\n \"branches\": 89,\n \"functions\": 100,\n \"lines\": 99\n},\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { XSButtonsGroupComponent } from './xsmusices-ui.mjs';
2
+
3
+ const story = {
4
+ id: 'buttons-group',
5
+ name: 'Buttons Group',
6
+ type: 'component',
7
+ subtype: 'Base',
8
+ status: 'active',
9
+ usage: [],
10
+ updated: '2026-01-16T11:57:36.415Z',
11
+ created: '2025-08-15T21:04:25.954Z',
12
+ description: 'Componente contenedor para crear grupos de botones con estilos conectados. Facilita la creación de barras de herramientas y controles segmentados.',
13
+ component: XSButtonsGroupComponent,
14
+ selector: 'xs-buttons-group',
15
+ inputs: [
16
+ {
17
+ key: 'buttonsInput',
18
+ label: 'Botones (Array)',
19
+ type: 'json',
20
+ default: [],
21
+ },
22
+ {
23
+ key: 'buttonClick',
24
+ label: 'Función de Click',
25
+ type: 'json',
26
+ default: undefined,
27
+ },
28
+ ],
29
+ examples: [
30
+ {
31
+ name: 'Grupo Básico con Array',
32
+ description: 'Grupo de botones creado desde un array de configuración',
33
+ inputs: {
34
+ buttonsInput: [
35
+ { label: 'Guardar', variant: 'success' },
36
+ { label: 'Cancelar', variant: 'secondary' },
37
+ { label: 'Eliminar', variant: 'error' },
38
+ ],
39
+ },
40
+ },
41
+ {
42
+ name: 'Grupo con Iconos',
43
+ description: 'Botones agrupados con iconos FontAwesome',
44
+ inputs: {
45
+ buttonsInput: [
46
+ { label: 'Editar', icon: { name: 'edit' } },
47
+ { label: 'Copiar', icon: { name: 'copy' } },
48
+ {
49
+ label: 'Eliminar',
50
+ icon: { name: 'trash' },
51
+ variant: 'error',
52
+ },
53
+ ],
54
+ },
55
+ },
56
+ {
57
+ name: 'Grupo con Contenido Proyectado',
58
+ description: 'Usando ng-content para botones personalizados',
59
+ inputs: {},
60
+ },
61
+ {
62
+ name: 'Grupo con Estados',
63
+ description: 'Botones con diferentes estados (disabled, loading)',
64
+ inputs: {
65
+ buttonsInput: [
66
+ { label: 'Activo' },
67
+ { label: 'Cargando', loading: true },
68
+ { label: 'Deshabilitado', disabled: true },
69
+ ],
70
+ },
71
+ },
72
+ ],
73
+ multilanguage: false,
74
+ notes: [
75
+ {
76
+ text: 'Los botones se conectan automáticamente con bordes y radios apropiados.',
77
+ type: 'info',
78
+ },
79
+ {
80
+ text: 'Soporta tanto configuración declarativa (buttonsInput) como proyección de contenido (ng-content).',
81
+ type: 'info',
82
+ },
83
+ {
84
+ text: 'Para eventos de click, usa buttonClickOutput o configura buttonClick.',
85
+ type: 'info',
86
+ },
87
+ ],
88
+ coverage: {
89
+ "statements": 97,
90
+ "branches": 100,
91
+ "functions": 92,
92
+ "lines": 97
93
+ },
94
+ };
95
+
96
+ export { story };
97
+ //# sourceMappingURL=xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs","sources":["../../../projects/xs-ui/src/lib/components/base/buttons-group/xs-buttons-group.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../story.types';\nimport { XSButtonsGroupComponent } from './xs-buttons-group.component';\n\nexport const story: StoryMeta = {\n id: 'buttons-group',\n name: 'Buttons Group',\n type: 'component',\n subtype: 'Base',\n status: 'active',\n usage: [],\n updated: '2026-01-16T11:57:36.415Z',\n created: '2025-08-15T21:04:25.954Z',\n description:\n 'Componente contenedor para crear grupos de botones con estilos conectados. Facilita la creación de barras de herramientas y controles segmentados.',\n component: XSButtonsGroupComponent,\n selector: 'xs-buttons-group',\n inputs: [\n {\n key: 'buttonsInput',\n label: 'Botones (Array)',\n type: 'json',\n default: [],\n },\n {\n key: 'buttonClick',\n label: 'Función de Click',\n type: 'json',\n default: undefined,\n },\n ],\n examples: [\n {\n name: 'Grupo Básico con Array',\n description:\n 'Grupo de botones creado desde un array de configuración',\n inputs: {\n buttonsInput: [\n { label: 'Guardar', variant: 'success' },\n { label: 'Cancelar', variant: 'secondary' },\n { label: 'Eliminar', variant: 'error' },\n ],\n },\n },\n {\n name: 'Grupo con Iconos',\n description: 'Botones agrupados con iconos FontAwesome',\n inputs: {\n buttonsInput: [\n { label: 'Editar', icon: { name: 'edit' } },\n { label: 'Copiar', icon: { name: 'copy' } },\n {\n label: 'Eliminar',\n icon: { name: 'trash' },\n variant: 'error',\n },\n ],\n },\n },\n {\n name: 'Grupo con Contenido Proyectado',\n description:\n 'Usando ng-content para botones personalizados',\n inputs: {},\n },\n {\n name: 'Grupo con Estados',\n description:\n 'Botones con diferentes estados (disabled, loading)',\n inputs: {\n buttonsInput: [\n { label: 'Activo' },\n { label: 'Cargando', loading: true },\n { label: 'Deshabilitado', disabled: true },\n ],\n },\n },\n ],\n multilanguage: false,\n notes: [\n {\n text: 'Los botones se conectan automáticamente con bordes y radios apropiados.',\n type: 'info',\n },\n {\n text: 'Soporta tanto configuración declarativa (buttonsInput) como proyección de contenido (ng-content).',\n type: 'info',\n },\n {\n text: 'Para eventos de click, usa buttonClickOutput o configura buttonClick.',\n type: 'info',\n },\n ],\n coverage: {\n \"statements\": 97,\n \"branches\": 100,\n \"functions\": 92,\n \"lines\": 97\n},\n};\n"],"names":[],"mappings":"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"}