snice 4.24.0 → 4.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/README.md +4 -39
  2. package/bin/mcp-server.js +32 -0
  3. package/dist/cdn/accordion/snice-accordion.js +2 -2
  4. package/dist/cdn/accordion/snice-accordion.min.js +2 -2
  5. package/dist/cdn/activity-feed/snice-activity-feed.js +3 -3
  6. package/dist/cdn/activity-feed/snice-activity-feed.js.map +1 -1
  7. package/dist/cdn/activity-feed/snice-activity-feed.min.js +3 -3
  8. package/dist/cdn/activity-feed/snice-activity-feed.min.js.map +1 -1
  9. package/dist/cdn/alert/snice-alert.js +8 -4
  10. package/dist/cdn/alert/snice-alert.js.map +1 -1
  11. package/dist/cdn/alert/snice-alert.min.js +2 -2
  12. package/dist/cdn/alert/snice-alert.min.js.map +1 -1
  13. package/dist/cdn/app-tiles/snice-app-tiles.js +2 -2
  14. package/dist/cdn/app-tiles/snice-app-tiles.min.js +2 -2
  15. package/dist/cdn/approval-flow/snice-approval-flow.js +3 -3
  16. package/dist/cdn/approval-flow/snice-approval-flow.js.map +1 -1
  17. package/dist/cdn/approval-flow/snice-approval-flow.min.js +3 -3
  18. package/dist/cdn/approval-flow/snice-approval-flow.min.js.map +1 -1
  19. package/dist/cdn/audio-recorder/README.md +1 -1
  20. package/dist/cdn/audio-recorder/snice-audio-recorder.js +2 -2
  21. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +2 -2
  22. package/dist/cdn/availability/snice-availability.js +2 -2
  23. package/dist/cdn/availability/snice-availability.min.js +2 -2
  24. package/dist/cdn/avatar/snice-avatar.js +2 -2
  25. package/dist/cdn/avatar/snice-avatar.min.js +2 -2
  26. package/dist/cdn/avatar-group/snice-avatar-group.js +3 -3
  27. package/dist/cdn/avatar-group/snice-avatar-group.js.map +1 -1
  28. package/dist/cdn/avatar-group/snice-avatar-group.min.js +16 -16
  29. package/dist/cdn/avatar-group/snice-avatar-group.min.js.map +1 -1
  30. package/dist/cdn/badge/snice-badge.js +2 -2
  31. package/dist/cdn/badge/snice-badge.min.js +2 -2
  32. package/dist/cdn/banner/snice-banner.js +9 -5
  33. package/dist/cdn/banner/snice-banner.js.map +1 -1
  34. package/dist/cdn/banner/snice-banner.min.js +3 -3
  35. package/dist/cdn/banner/snice-banner.min.js.map +1 -1
  36. package/dist/cdn/book/snice-book.js +2 -2
  37. package/dist/cdn/book/snice-book.min.js +2 -2
  38. package/dist/cdn/booking/snice-booking.js +2 -2
  39. package/dist/cdn/booking/snice-booking.min.js +2 -2
  40. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +8 -4
  41. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  42. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +2 -2
  43. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
  44. package/dist/cdn/button/snice-button.js +8 -4
  45. package/dist/cdn/button/snice-button.js.map +1 -1
  46. package/dist/cdn/button/snice-button.min.js +2 -2
  47. package/dist/cdn/button/snice-button.min.js.map +1 -1
  48. package/dist/cdn/calendar/snice-calendar.js +2 -2
  49. package/dist/cdn/calendar/snice-calendar.min.js +2 -2
  50. package/dist/cdn/camera/snice-camera.js +2 -2
  51. package/dist/cdn/camera/snice-camera.min.js +2 -2
  52. package/dist/cdn/camera-annotate/snice-camera-annotate.js +2 -2
  53. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +2 -2
  54. package/dist/cdn/candlestick/snice-candlestick.js +2 -2
  55. package/dist/cdn/candlestick/snice-candlestick.min.js +2 -2
  56. package/dist/cdn/card/README.md +1 -1
  57. package/dist/cdn/card/snice-card.js +2 -2
  58. package/dist/cdn/card/snice-card.min.js +2 -2
  59. package/dist/cdn/carousel/snice-carousel.js +2 -2
  60. package/dist/cdn/carousel/snice-carousel.min.js +2 -2
  61. package/dist/cdn/cart/snice-cart.js +3 -3
  62. package/dist/cdn/cart/snice-cart.js.map +1 -1
  63. package/dist/cdn/cart/snice-cart.min.js +3 -3
  64. package/dist/cdn/cart/snice-cart.min.js.map +1 -1
  65. package/dist/cdn/chart/snice-chart.js +2 -2
  66. package/dist/cdn/chart/snice-chart.min.js +2 -2
  67. package/dist/cdn/chat/snice-chat.js +9 -5
  68. package/dist/cdn/chat/snice-chat.js.map +1 -1
  69. package/dist/cdn/chat/snice-chat.min.js +3 -3
  70. package/dist/cdn/chat/snice-chat.min.js.map +1 -1
  71. package/dist/cdn/checkbox/snice-checkbox.js +2 -2
  72. package/dist/cdn/checkbox/snice-checkbox.min.js +2 -2
  73. package/dist/cdn/chip/README.md +1 -1
  74. package/dist/cdn/chip/snice-chip.js +8 -4
  75. package/dist/cdn/chip/snice-chip.js.map +1 -1
  76. package/dist/cdn/chip/snice-chip.min.js +2 -2
  77. package/dist/cdn/chip/snice-chip.min.js.map +1 -1
  78. package/dist/cdn/code-block/snice-code-block.js +2 -2
  79. package/dist/cdn/code-block/snice-code-block.min.js +2 -2
  80. package/dist/cdn/color-display/snice-color-display.js +3 -3
  81. package/dist/cdn/color-display/snice-color-display.js.map +1 -1
  82. package/dist/cdn/color-display/snice-color-display.min.js +4 -4
  83. package/dist/cdn/color-display/snice-color-display.min.js.map +1 -1
  84. package/dist/cdn/color-picker/snice-color-picker.js +2 -2
  85. package/dist/cdn/color-picker/snice-color-picker.min.js +2 -2
  86. package/dist/cdn/command-palette/README.md +1 -1
  87. package/dist/cdn/command-palette/snice-command-palette.js +2 -2
  88. package/dist/cdn/command-palette/snice-command-palette.min.js +2 -2
  89. package/dist/cdn/comments/snice-comments.js +3 -3
  90. package/dist/cdn/comments/snice-comments.js.map +1 -1
  91. package/dist/cdn/comments/snice-comments.min.js +3 -3
  92. package/dist/cdn/comments/snice-comments.min.js.map +1 -1
  93. package/dist/cdn/countdown/README.md +1 -1
  94. package/dist/cdn/countdown/snice-countdown.js +2 -2
  95. package/dist/cdn/countdown/snice-countdown.min.js +2 -2
  96. package/dist/cdn/cropper/snice-cropper.js +2 -2
  97. package/dist/cdn/cropper/snice-cropper.min.js +2 -2
  98. package/dist/cdn/data-card/snice-data-card.js +3 -3
  99. package/dist/cdn/data-card/snice-data-card.js.map +1 -1
  100. package/dist/cdn/data-card/snice-data-card.min.js +3 -3
  101. package/dist/cdn/data-card/snice-data-card.min.js.map +1 -1
  102. package/dist/cdn/date-picker/snice-date-picker.js +2 -2
  103. package/dist/cdn/date-picker/snice-date-picker.min.js +2 -2
  104. package/dist/cdn/date-time-picker/README.md +2 -2
  105. package/dist/cdn/date-time-picker/snice-date-time-picker.js +2 -2
  106. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +2 -2
  107. package/dist/cdn/diff/snice-diff.js +2 -2
  108. package/dist/cdn/diff/snice-diff.min.js +2 -2
  109. package/dist/cdn/divider/snice-divider.js +2 -2
  110. package/dist/cdn/divider/snice-divider.min.js +2 -2
  111. package/dist/cdn/doc/snice-doc.js +2 -2
  112. package/dist/cdn/doc/snice-doc.min.js +2 -2
  113. package/dist/cdn/draw/snice-draw.js +2 -2
  114. package/dist/cdn/draw/snice-draw.min.js +2 -2
  115. package/dist/cdn/drawer/README.md +1 -1
  116. package/dist/cdn/drawer/snice-drawer.js +12 -6
  117. package/dist/cdn/drawer/snice-drawer.js.map +1 -1
  118. package/dist/cdn/drawer/snice-drawer.min.js +4 -4
  119. package/dist/cdn/drawer/snice-drawer.min.js.map +1 -1
  120. package/dist/cdn/empty-state/snice-empty-state.js +9 -5
  121. package/dist/cdn/empty-state/snice-empty-state.js.map +1 -1
  122. package/dist/cdn/empty-state/snice-empty-state.min.js +3 -3
  123. package/dist/cdn/empty-state/snice-empty-state.min.js.map +1 -1
  124. package/dist/cdn/estimate/snice-estimate.js +3 -3
  125. package/dist/cdn/estimate/snice-estimate.js.map +1 -1
  126. package/dist/cdn/estimate/snice-estimate.min.js +3 -3
  127. package/dist/cdn/estimate/snice-estimate.min.js.map +1 -1
  128. package/dist/cdn/file-gallery/snice-file-gallery.js +2 -2
  129. package/dist/cdn/file-gallery/snice-file-gallery.min.js +2 -2
  130. package/dist/cdn/file-upload/snice-file-upload.js +3 -3
  131. package/dist/cdn/file-upload/snice-file-upload.js.map +1 -1
  132. package/dist/cdn/file-upload/snice-file-upload.min.js +3 -3
  133. package/dist/cdn/file-upload/snice-file-upload.min.js.map +1 -1
  134. package/dist/cdn/flip-card/snice-flip-card.js +2 -2
  135. package/dist/cdn/flip-card/snice-flip-card.min.js +2 -2
  136. package/dist/cdn/flow/README.md +1 -1
  137. package/dist/cdn/flow/snice-flow.js +2 -2
  138. package/dist/cdn/flow/snice-flow.min.js +2 -2
  139. package/dist/cdn/form-layout/snice-form-layout.js +3 -3
  140. package/dist/cdn/form-layout/snice-form-layout.js.map +1 -1
  141. package/dist/cdn/form-layout/snice-form-layout.min.js +3 -3
  142. package/dist/cdn/form-layout/snice-form-layout.min.js.map +1 -1
  143. package/dist/cdn/funnel/README.md +2 -2
  144. package/dist/cdn/funnel/snice-funnel.js +2 -2
  145. package/dist/cdn/funnel/snice-funnel.min.js +2 -2
  146. package/dist/cdn/gantt/README.md +1 -1
  147. package/dist/cdn/gantt/snice-gantt.js +2 -2
  148. package/dist/cdn/gantt/snice-gantt.min.js +2 -2
  149. package/dist/cdn/gauge/snice-gauge.js +2 -2
  150. package/dist/cdn/gauge/snice-gauge.min.js +2 -2
  151. package/dist/cdn/heatmap/README.md +1 -1
  152. package/dist/cdn/heatmap/snice-heatmap.js +2 -2
  153. package/dist/cdn/heatmap/snice-heatmap.min.js +2 -2
  154. package/dist/cdn/image/snice-image.js +3 -3
  155. package/dist/cdn/image/snice-image.js.map +1 -1
  156. package/dist/cdn/image/snice-image.min.js +3 -3
  157. package/dist/cdn/image/snice-image.min.js.map +1 -1
  158. package/dist/cdn/input/README.md +1 -1
  159. package/dist/cdn/input/snice-input.js +9 -5
  160. package/dist/cdn/input/snice-input.js.map +1 -1
  161. package/dist/cdn/input/snice-input.min.js +3 -3
  162. package/dist/cdn/input/snice-input.min.js.map +1 -1
  163. package/dist/cdn/invoice/snice-invoice.js +3 -3
  164. package/dist/cdn/invoice/snice-invoice.js.map +1 -1
  165. package/dist/cdn/invoice/snice-invoice.min.js +4 -4
  166. package/dist/cdn/invoice/snice-invoice.min.js.map +1 -1
  167. package/dist/cdn/kanban/snice-kanban.js +2 -2
  168. package/dist/cdn/kanban/snice-kanban.min.js +2 -2
  169. package/dist/cdn/key-value/snice-key-value.js +3 -3
  170. package/dist/cdn/key-value/snice-key-value.js.map +1 -1
  171. package/dist/cdn/key-value/snice-key-value.min.js +3 -3
  172. package/dist/cdn/key-value/snice-key-value.min.js.map +1 -1
  173. package/dist/cdn/kpi/snice-kpi.js +3 -3
  174. package/dist/cdn/kpi/snice-kpi.js.map +1 -1
  175. package/dist/cdn/kpi/snice-kpi.min.js +3 -3
  176. package/dist/cdn/kpi/snice-kpi.min.js.map +1 -1
  177. package/dist/cdn/layout/snice-layout.js +3 -3
  178. package/dist/cdn/layout/snice-layout.js.map +1 -1
  179. package/dist/cdn/layout/snice-layout.min.js +3 -3
  180. package/dist/cdn/layout/snice-layout.min.js.map +1 -1
  181. package/dist/cdn/leaderboard/snice-leaderboard.js +3 -3
  182. package/dist/cdn/leaderboard/snice-leaderboard.js.map +1 -1
  183. package/dist/cdn/leaderboard/snice-leaderboard.min.js +3 -3
  184. package/dist/cdn/leaderboard/snice-leaderboard.min.js.map +1 -1
  185. package/dist/cdn/link/snice-link.js +3 -3
  186. package/dist/cdn/link/snice-link.js.map +1 -1
  187. package/dist/cdn/link/snice-link.min.js +3 -3
  188. package/dist/cdn/link/snice-link.min.js.map +1 -1
  189. package/dist/cdn/link-preview/snice-link-preview.js +3 -3
  190. package/dist/cdn/link-preview/snice-link-preview.js.map +1 -1
  191. package/dist/cdn/link-preview/snice-link-preview.min.js +3 -3
  192. package/dist/cdn/link-preview/snice-link-preview.min.js.map +1 -1
  193. package/dist/cdn/list/snice-list.js +10 -6
  194. package/dist/cdn/list/snice-list.js.map +1 -1
  195. package/dist/cdn/list/snice-list.min.js +4 -4
  196. package/dist/cdn/list/snice-list.min.js.map +1 -1
  197. package/dist/cdn/location/snice-location.js +8 -4
  198. package/dist/cdn/location/snice-location.js.map +1 -1
  199. package/dist/cdn/location/snice-location.min.js +2 -2
  200. package/dist/cdn/location/snice-location.min.js.map +1 -1
  201. package/dist/cdn/login/snice-login.js +8 -4
  202. package/dist/cdn/login/snice-login.js.map +1 -1
  203. package/dist/cdn/login/snice-login.min.js +2 -2
  204. package/dist/cdn/login/snice-login.min.js.map +1 -1
  205. package/dist/cdn/map/README.md +1 -1
  206. package/dist/cdn/map/snice-map.js +2 -2
  207. package/dist/cdn/map/snice-map.min.js +2 -2
  208. package/dist/cdn/markdown/snice-markdown.js +2 -2
  209. package/dist/cdn/markdown/snice-markdown.min.js +2 -2
  210. package/dist/cdn/masonry/snice-masonry.js +2 -2
  211. package/dist/cdn/masonry/snice-masonry.min.js +2 -2
  212. package/dist/cdn/menu/snice-menu.js +2 -2
  213. package/dist/cdn/menu/snice-menu.min.js +2 -2
  214. package/dist/cdn/message-strip/snice-message-strip.js +8 -4
  215. package/dist/cdn/message-strip/snice-message-strip.js.map +1 -1
  216. package/dist/cdn/message-strip/snice-message-strip.min.js +2 -2
  217. package/dist/cdn/message-strip/snice-message-strip.min.js.map +1 -1
  218. package/dist/cdn/metric-table/snice-metric-table.js +3 -3
  219. package/dist/cdn/metric-table/snice-metric-table.js.map +1 -1
  220. package/dist/cdn/metric-table/snice-metric-table.min.js +8 -8
  221. package/dist/cdn/metric-table/snice-metric-table.min.js.map +1 -1
  222. package/dist/cdn/modal/README.md +1 -1
  223. package/dist/cdn/modal/snice-modal.js +2 -2
  224. package/dist/cdn/modal/snice-modal.min.js +2 -2
  225. package/dist/cdn/music-player/snice-music-player.js +2 -2
  226. package/dist/cdn/music-player/snice-music-player.min.js +2 -2
  227. package/dist/cdn/nav/snice-nav.js +3 -3
  228. package/dist/cdn/nav/snice-nav.js.map +1 -1
  229. package/dist/cdn/nav/snice-nav.min.js +3 -3
  230. package/dist/cdn/nav/snice-nav.min.js.map +1 -1
  231. package/dist/cdn/network-graph/snice-network-graph.js +2 -2
  232. package/dist/cdn/network-graph/snice-network-graph.min.js +2 -2
  233. package/dist/cdn/notification-center/snice-notification-center.js +9 -5
  234. package/dist/cdn/notification-center/snice-notification-center.js.map +1 -1
  235. package/dist/cdn/notification-center/snice-notification-center.min.js +3 -3
  236. package/dist/cdn/notification-center/snice-notification-center.min.js.map +1 -1
  237. package/dist/cdn/order-tracker/snice-order-tracker.js +3 -3
  238. package/dist/cdn/order-tracker/snice-order-tracker.js.map +1 -1
  239. package/dist/cdn/order-tracker/snice-order-tracker.min.js +3 -3
  240. package/dist/cdn/order-tracker/snice-order-tracker.min.js.map +1 -1
  241. package/dist/cdn/org-chart/README.md +1 -1
  242. package/dist/cdn/org-chart/snice-org-chart.js +2 -2
  243. package/dist/cdn/org-chart/snice-org-chart.min.js +2 -2
  244. package/dist/cdn/pagination/snice-pagination.js +2 -2
  245. package/dist/cdn/pagination/snice-pagination.min.js +2 -2
  246. package/dist/cdn/paint/snice-paint.js +2 -2
  247. package/dist/cdn/paint/snice-paint.min.js +2 -2
  248. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +2 -2
  249. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +2 -2
  250. package/dist/cdn/permission-matrix/snice-permission-matrix.js +3 -3
  251. package/dist/cdn/permission-matrix/snice-permission-matrix.js.map +1 -1
  252. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +12 -12
  253. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js.map +1 -1
  254. package/dist/cdn/podcast-player/snice-podcast-player.js +2 -2
  255. package/dist/cdn/podcast-player/snice-podcast-player.min.js +2 -2
  256. package/dist/cdn/pricing-table/README.md +1 -1
  257. package/dist/cdn/pricing-table/snice-pricing-table.js +3 -3
  258. package/dist/cdn/pricing-table/snice-pricing-table.js.map +1 -1
  259. package/dist/cdn/pricing-table/snice-pricing-table.min.js +3 -3
  260. package/dist/cdn/pricing-table/snice-pricing-table.min.js.map +1 -1
  261. package/dist/cdn/product-card/snice-product-card.js +3 -3
  262. package/dist/cdn/product-card/snice-product-card.js.map +1 -1
  263. package/dist/cdn/product-card/snice-product-card.min.js +3 -3
  264. package/dist/cdn/product-card/snice-product-card.min.js.map +1 -1
  265. package/dist/cdn/progress/README.md +1 -1
  266. package/dist/cdn/progress/snice-progress.js +2 -2
  267. package/dist/cdn/progress/snice-progress.min.js +2 -2
  268. package/dist/cdn/progress-ring/snice-progress-ring.js +2 -2
  269. package/dist/cdn/progress-ring/snice-progress-ring.min.js +2 -2
  270. package/dist/cdn/qr-code/snice-qr-code.js +2 -2
  271. package/dist/cdn/qr-code/snice-qr-code.min.js +2 -2
  272. package/dist/cdn/qr-reader/README.md +1 -1
  273. package/dist/cdn/qr-reader/snice-qr-reader.js +2 -2
  274. package/dist/cdn/qr-reader/snice-qr-reader.min.js +2 -2
  275. package/dist/cdn/radio/snice-radio.js +3 -3
  276. package/dist/cdn/radio/snice-radio.js.map +1 -1
  277. package/dist/cdn/radio/snice-radio.min.js +3 -3
  278. package/dist/cdn/radio/snice-radio.min.js.map +1 -1
  279. package/dist/cdn/range-slider/snice-range-slider.js +2 -2
  280. package/dist/cdn/range-slider/snice-range-slider.min.js +2 -2
  281. package/dist/cdn/rating/snice-rating.js +2 -2
  282. package/dist/cdn/rating/snice-rating.min.js +2 -2
  283. package/dist/cdn/receipt/snice-receipt.js +3 -3
  284. package/dist/cdn/receipt/snice-receipt.js.map +1 -1
  285. package/dist/cdn/receipt/snice-receipt.min.js +7 -7
  286. package/dist/cdn/receipt/snice-receipt.min.js.map +1 -1
  287. package/dist/cdn/recipe/snice-recipe.js +3 -3
  288. package/dist/cdn/recipe/snice-recipe.js.map +1 -1
  289. package/dist/cdn/recipe/snice-recipe.min.js +3 -3
  290. package/dist/cdn/recipe/snice-recipe.min.js.map +1 -1
  291. package/dist/cdn/runtime/README.md +1 -1
  292. package/dist/cdn/runtime/snice-runtime.esm.js +8 -8
  293. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  294. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  295. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  296. package/dist/cdn/runtime/snice-runtime.js +8 -8
  297. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  298. package/dist/cdn/runtime/snice-runtime.min.js +8 -8
  299. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  300. package/dist/cdn/sankey/README.md +1 -1
  301. package/dist/cdn/sankey/snice-sankey.js +2 -2
  302. package/dist/cdn/sankey/snice-sankey.min.js +2 -2
  303. package/dist/cdn/segmented-control/snice-segmented-control.js +2 -2
  304. package/dist/cdn/segmented-control/snice-segmented-control.min.js +2 -2
  305. package/dist/cdn/select/snice-select.js +2 -2
  306. package/dist/cdn/select/snice-select.min.js +2 -2
  307. package/dist/cdn/skeleton/snice-skeleton.js +2 -2
  308. package/dist/cdn/skeleton/snice-skeleton.min.js +2 -2
  309. package/dist/cdn/slider/README.md +1 -1
  310. package/dist/cdn/slider/snice-slider.js +2 -2
  311. package/dist/cdn/slider/snice-slider.min.js +2 -2
  312. package/dist/cdn/sortable/README.md +1 -1
  313. package/dist/cdn/sortable/snice-sortable.js +2 -2
  314. package/dist/cdn/sortable/snice-sortable.min.js +2 -2
  315. package/dist/cdn/sparkline/README.md +1 -1
  316. package/dist/cdn/sparkline/snice-sparkline.js +2 -2
  317. package/dist/cdn/sparkline/snice-sparkline.min.js +2 -2
  318. package/dist/cdn/spinner/README.md +2 -2
  319. package/dist/cdn/spinner/snice-spinner.js +2 -2
  320. package/dist/cdn/spinner/snice-spinner.min.js +2 -2
  321. package/dist/cdn/split-button/snice-split-button.js +2 -2
  322. package/dist/cdn/split-button/snice-split-button.min.js +2 -2
  323. package/dist/cdn/split-pane/snice-split-pane.js +2 -2
  324. package/dist/cdn/split-pane/snice-split-pane.min.js +2 -2
  325. package/dist/cdn/spotlight/snice-spotlight.js +2 -2
  326. package/dist/cdn/spotlight/snice-spotlight.min.js +2 -2
  327. package/dist/cdn/spreadsheet/README.md +2 -2
  328. package/dist/cdn/spreadsheet/snice-spreadsheet.js +2 -2
  329. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +2 -2
  330. package/dist/cdn/stat-group/snice-stat-group.js +3 -3
  331. package/dist/cdn/stat-group/snice-stat-group.js.map +1 -1
  332. package/dist/cdn/stat-group/snice-stat-group.min.js +4 -4
  333. package/dist/cdn/stat-group/snice-stat-group.min.js.map +1 -1
  334. package/dist/cdn/step-input/snice-step-input.js +3 -3
  335. package/dist/cdn/step-input/snice-step-input.js.map +1 -1
  336. package/dist/cdn/step-input/snice-step-input.min.js +3 -3
  337. package/dist/cdn/step-input/snice-step-input.min.js.map +1 -1
  338. package/dist/cdn/stepper/README.md +1 -1
  339. package/dist/cdn/stepper/snice-stepper.js +3 -3
  340. package/dist/cdn/stepper/snice-stepper.js.map +1 -1
  341. package/dist/cdn/stepper/snice-stepper.min.js +4 -4
  342. package/dist/cdn/stepper/snice-stepper.min.js.map +1 -1
  343. package/dist/cdn/switch/snice-switch.js +2 -2
  344. package/dist/cdn/switch/snice-switch.min.js +2 -2
  345. package/dist/cdn/table/README.md +1 -1
  346. package/dist/cdn/table/snice-table.js +9 -5
  347. package/dist/cdn/table/snice-table.js.map +1 -1
  348. package/dist/cdn/table/snice-table.min.js +3 -3
  349. package/dist/cdn/table/snice-table.min.js.map +1 -1
  350. package/dist/cdn/tabs/README.md +1 -1
  351. package/dist/cdn/tabs/snice-tabs.js +2 -2
  352. package/dist/cdn/tabs/snice-tabs.min.js +2 -2
  353. package/dist/cdn/tag/snice-tag.js +2 -2
  354. package/dist/cdn/tag/snice-tag.min.js +2 -2
  355. package/dist/cdn/tag-input/snice-tag-input.js +3 -3
  356. package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
  357. package/dist/cdn/tag-input/snice-tag-input.min.js +11 -11
  358. package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
  359. package/dist/cdn/terminal/snice-terminal.js +2 -2
  360. package/dist/cdn/terminal/snice-terminal.min.js +2 -2
  361. package/dist/cdn/testimonial/snice-testimonial.js +2 -2
  362. package/dist/cdn/testimonial/snice-testimonial.min.js +2 -2
  363. package/dist/cdn/textarea/README.md +1 -1
  364. package/dist/cdn/textarea/snice-textarea.js +2 -2
  365. package/dist/cdn/textarea/snice-textarea.min.js +2 -2
  366. package/dist/cdn/time-picker/snice-time-picker.js +2 -2
  367. package/dist/cdn/time-picker/snice-time-picker.min.js +2 -2
  368. package/dist/cdn/time-range-picker/snice-time-range-picker.js +3 -3
  369. package/dist/cdn/time-range-picker/snice-time-range-picker.js.map +1 -1
  370. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +3 -3
  371. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js.map +1 -1
  372. package/dist/cdn/timeline/snice-timeline.js +3 -3
  373. package/dist/cdn/timeline/snice-timeline.js.map +1 -1
  374. package/dist/cdn/timeline/snice-timeline.min.js +4 -4
  375. package/dist/cdn/timeline/snice-timeline.min.js.map +1 -1
  376. package/dist/cdn/timer/snice-timer.js +3 -3
  377. package/dist/cdn/timer/snice-timer.js.map +1 -1
  378. package/dist/cdn/timer/snice-timer.min.js +3 -3
  379. package/dist/cdn/timer/snice-timer.min.js.map +1 -1
  380. package/dist/cdn/toast/snice-toast.js +2 -2
  381. package/dist/cdn/toast/snice-toast.min.js +2 -2
  382. package/dist/cdn/tooltip/snice-tooltip.js +2 -2
  383. package/dist/cdn/tooltip/snice-tooltip.min.js +2 -2
  384. package/dist/cdn/tree/README.md +2 -2
  385. package/dist/cdn/tree/snice-tree.js +2 -2
  386. package/dist/cdn/tree/snice-tree.min.js +2 -2
  387. package/dist/cdn/treemap/snice-treemap.js +2 -2
  388. package/dist/cdn/treemap/snice-treemap.min.js +2 -2
  389. package/dist/cdn/user-card/snice-user-card.js +3 -3
  390. package/dist/cdn/user-card/snice-user-card.js.map +1 -1
  391. package/dist/cdn/user-card/snice-user-card.min.js +7 -7
  392. package/dist/cdn/user-card/snice-user-card.min.js.map +1 -1
  393. package/dist/cdn/video-player/snice-video-player.js +2 -2
  394. package/dist/cdn/video-player/snice-video-player.min.js +2 -2
  395. package/dist/cdn/virtual-scroller/README.md +1 -1
  396. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +2 -2
  397. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +2 -2
  398. package/dist/cdn/waterfall/README.md +1 -1
  399. package/dist/cdn/waterfall/snice-waterfall.js +2 -2
  400. package/dist/cdn/waterfall/snice-waterfall.min.js +2 -2
  401. package/dist/cdn/weather/snice-weather.js +2 -2
  402. package/dist/cdn/weather/snice-weather.min.js +2 -2
  403. package/dist/cdn/work-order/snice-work-order.js +3 -3
  404. package/dist/cdn/work-order/snice-work-order.js.map +1 -1
  405. package/dist/cdn/work-order/snice-work-order.min.js +3 -3
  406. package/dist/cdn/work-order/snice-work-order.min.js.map +1 -1
  407. package/dist/components/activity-feed/snice-activity-feed.js +1 -1
  408. package/dist/components/activity-feed/snice-activity-feed.js.map +1 -1
  409. package/dist/components/approval-flow/snice-approval-flow.js +1 -1
  410. package/dist/components/approval-flow/snice-approval-flow.js.map +1 -1
  411. package/dist/components/avatar-group/snice-avatar-group.js +1 -1
  412. package/dist/components/avatar-group/snice-avatar-group.js.map +1 -1
  413. package/dist/components/banner/snice-banner.js +1 -1
  414. package/dist/components/banner/snice-banner.js.map +1 -1
  415. package/dist/components/cart/snice-cart.js +1 -1
  416. package/dist/components/cart/snice-cart.js.map +1 -1
  417. package/dist/components/color-display/snice-color-display.js +1 -1
  418. package/dist/components/color-display/snice-color-display.js.map +1 -1
  419. package/dist/components/comments/snice-comments.js +1 -1
  420. package/dist/components/comments/snice-comments.js.map +1 -1
  421. package/dist/components/data-card/snice-data-card.js +1 -1
  422. package/dist/components/data-card/snice-data-card.js.map +1 -1
  423. package/dist/components/drawer/snice-drawer.js +10 -4
  424. package/dist/components/drawer/snice-drawer.js.map +1 -1
  425. package/dist/components/empty-state/snice-empty-state.js +1 -1
  426. package/dist/components/empty-state/snice-empty-state.js.map +1 -1
  427. package/dist/components/estimate/snice-estimate.js +1 -1
  428. package/dist/components/estimate/snice-estimate.js.map +1 -1
  429. package/dist/components/file-upload/snice-file-upload.js +1 -1
  430. package/dist/components/file-upload/snice-file-upload.js.map +1 -1
  431. package/dist/components/form-layout/snice-form-layout.js +1 -1
  432. package/dist/components/form-layout/snice-form-layout.js.map +1 -1
  433. package/dist/components/image/snice-image.js +1 -1
  434. package/dist/components/image/snice-image.js.map +1 -1
  435. package/dist/components/input/snice-input.js +1 -1
  436. package/dist/components/input/snice-input.js.map +1 -1
  437. package/dist/components/invoice/snice-invoice.js +1 -1
  438. package/dist/components/invoice/snice-invoice.js.map +1 -1
  439. package/dist/components/key-value/snice-key-value.js +1 -1
  440. package/dist/components/key-value/snice-key-value.js.map +1 -1
  441. package/dist/components/kpi/snice-kpi.js +1 -1
  442. package/dist/components/kpi/snice-kpi.js.map +1 -1
  443. package/dist/components/leaderboard/snice-leaderboard.js +1 -1
  444. package/dist/components/leaderboard/snice-leaderboard.js.map +1 -1
  445. package/dist/components/link/snice-link.js +1 -1
  446. package/dist/components/link/snice-link.js.map +1 -1
  447. package/dist/components/link-preview/snice-link-preview.js +1 -1
  448. package/dist/components/link-preview/snice-link-preview.js.map +1 -1
  449. package/dist/components/list/snice-list-item.js +1 -1
  450. package/dist/components/list/snice-list-item.js.map +1 -1
  451. package/dist/components/metric-table/snice-metric-table.js +1 -1
  452. package/dist/components/metric-table/snice-metric-table.js.map +1 -1
  453. package/dist/components/nav/snice-nav.js +1 -1
  454. package/dist/components/nav/snice-nav.js.map +1 -1
  455. package/dist/components/order-tracker/snice-order-tracker.js +1 -1
  456. package/dist/components/order-tracker/snice-order-tracker.js.map +1 -1
  457. package/dist/components/permission-matrix/snice-permission-matrix.js +1 -1
  458. package/dist/components/permission-matrix/snice-permission-matrix.js.map +1 -1
  459. package/dist/components/pricing-table/snice-pricing-table.js +1 -1
  460. package/dist/components/pricing-table/snice-pricing-table.js.map +1 -1
  461. package/dist/components/product-card/snice-product-card.js +1 -1
  462. package/dist/components/product-card/snice-product-card.js.map +1 -1
  463. package/dist/components/radio/snice-radio.js +1 -1
  464. package/dist/components/radio/snice-radio.js.map +1 -1
  465. package/dist/components/receipt/snice-receipt.js +1 -1
  466. package/dist/components/receipt/snice-receipt.js.map +1 -1
  467. package/dist/components/recipe/snice-recipe.js +1 -1
  468. package/dist/components/recipe/snice-recipe.js.map +1 -1
  469. package/dist/components/stat-group/snice-stat-group.js +1 -1
  470. package/dist/components/stat-group/snice-stat-group.js.map +1 -1
  471. package/dist/components/step-input/snice-step-input.js +1 -1
  472. package/dist/components/step-input/snice-step-input.js.map +1 -1
  473. package/dist/components/stepper/snice-stepper.js +1 -1
  474. package/dist/components/stepper/snice-stepper.js.map +1 -1
  475. package/dist/components/tag-input/snice-tag-input.js +1 -1
  476. package/dist/components/tag-input/snice-tag-input.js.map +1 -1
  477. package/dist/components/time-range-picker/snice-time-range-picker.js +1 -1
  478. package/dist/components/time-range-picker/snice-time-range-picker.js.map +1 -1
  479. package/dist/components/timeline/snice-timeline.js +1 -1
  480. package/dist/components/timeline/snice-timeline.js.map +1 -1
  481. package/dist/components/timer/snice-timer.js +1 -1
  482. package/dist/components/timer/snice-timer.js.map +1 -1
  483. package/dist/components/user-card/snice-user-card.js +1 -1
  484. package/dist/components/user-card/snice-user-card.js.map +1 -1
  485. package/dist/components/utils.d.ts +6 -2
  486. package/dist/components/utils.js +6 -2
  487. package/dist/components/utils.js.map +1 -1
  488. package/dist/components/work-order/snice-work-order.js +1 -1
  489. package/dist/components/work-order/snice-work-order.js.map +1 -1
  490. package/dist/index.cjs +2 -2
  491. package/dist/index.esm.js +2 -2
  492. package/dist/index.iife.js +2 -2
  493. package/dist/symbols.cjs +2 -2
  494. package/dist/symbols.esm.js +2 -2
  495. package/dist/transitions.cjs +2 -2
  496. package/dist/transitions.esm.js +2 -2
  497. package/docs/ai/components/alert.md +10 -9
  498. package/docs/ai/components/banner.md +8 -7
  499. package/docs/ai/components/breadcrumbs.md +4 -3
  500. package/docs/ai/components/button.md +20 -16
  501. package/docs/ai/components/chip.md +9 -8
  502. package/docs/ai/components/empty-state.md +9 -11
  503. package/docs/ai/components/input.md +16 -18
  504. package/docs/ai/components/location.md +1 -1
  505. package/docs/components/alert.md +8 -6
  506. package/docs/components/breadcrumbs.md +2 -2
  507. package/docs/components/button.md +58 -33
  508. package/docs/components/chip.md +8 -6
  509. package/docs/components/empty-state.md +1 -1
  510. package/docs/components/input.md +24 -10
  511. package/docs/components/location.md +1 -1
  512. package/package.json +4 -3
@@ -1,57 +1,57 @@
1
1
  /*!
2
- * snice v4.23.0
3
- * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v4.25.0
3
+ * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
7
- void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-avatar-group.min.js");var SniceAvatarGroup=function(t,a){"use strict";function e(t,a,e,r,i,s){function l(t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("Function expected");return t}for(var o,n=r.kind,c="getter"===n?"get":"setter"===n?"set":"value",d=!a&&t?r.static?t:t.prototype:null,v=a||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),h=!1,u=e.length-1;u>=0;u--){var p={};for(var g in r)p[g]="access"===g?{}:r[g];for(var g in r.access)p.access[g]=r.access[g];p.addInitializer=function(t){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(l(t||null))};var m=(0,e[u])("accessor"===n?{get:v.get,set:v.set}:v[c],p);if("accessor"===n){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(o=l(m.get))&&(v.get=o),(o=l(m.set))&&(v.set=o),(o=l(m.init))&&i.unshift(o)}else(o=l(m))&&("field"===n?i.unshift(o):v[c]=o)}d&&Object.defineProperty(d,r.name,v),h=!0}function r(t,a,e){for(var r=arguments.length>2,i=0;i<a.length;i++)e=r?a[i].call(t,e):a[i].call(t);return r?e:void 0}"function"==typeof SuppressedError&&SuppressedError;const i=["red","orange","yellow","lime","green","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"];let s=(()=>{let t,s,l,o,n,c,d,v,h,u,p,g,m,b,f,y=[a.element("snice-avatar-group")],k=[],x=HTMLElement,w=[],C=[],z=[],S=[],O=[],$=[],A=[],E=[],_=[];return class extends x{static{s=this}constructor(){super(...arguments),this.avatars=(r(this,w),r(this,C,[])),this.max=(r(this,z),r(this,S,5)),this.size=(r(this,O),r(this,$,"medium")),this.overlap=(r(this,A),r(this,E,8)),this._useSlot=(r(this,_),!1),this._childObserver=null}static{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(x[Symbol.metadata]??null):void 0;l=[a.property({type:Array,attribute:!1})],o=[a.property({type:Number})],n=[a.property()],c=[a.property({type:Number})],d=[a.ready()],v=[a.watch("overlap")],h=[a.watch("size")],u=[a.ready()],p=[a.dispose()],g=[a.dispatch("avatar-click",{bubbles:!0,composed:!0})],m=[a.dispatch("overflow-click",{bubbles:!0,composed:!0})],b=[a.render()],f=[a.styles()],e(this,null,d,{kind:"method",name:"init",static:!1,private:!1,access:{has:t=>"init"in t,get:t=>t.init},metadata:i},null,w),e(this,null,v,{kind:"method",name:"updateOverlap",static:!1,private:!1,access:{has:t=>"updateOverlap"in t,get:t=>t.updateOverlap},metadata:i},null,w),e(this,null,h,{kind:"method",name:"updateChildSizes",static:!1,private:!1,access:{has:t=>"updateChildSizes"in t,get:t=>t.updateChildSizes},metadata:i},null,w),e(this,null,u,{kind:"method",name:"setupChildObserver",static:!1,private:!1,access:{has:t=>"setupChildObserver"in t,get:t=>t.setupChildObserver},metadata:i},null,w),e(this,null,p,{kind:"method",name:"cleanupChildObserver",static:!1,private:!1,access:{has:t=>"cleanupChildObserver"in t,get:t=>t.cleanupChildObserver},metadata:i},null,w),e(this,null,g,{kind:"method",name:"dispatchAvatarClick",static:!1,private:!1,access:{has:t=>"dispatchAvatarClick"in t,get:t=>t.dispatchAvatarClick},metadata:i},null,w),e(this,null,m,{kind:"method",name:"dispatchOverflowClick",static:!1,private:!1,access:{has:t=>"dispatchOverflowClick"in t,get:t=>t.dispatchOverflowClick},metadata:i},null,w),e(this,null,b,{kind:"method",name:"renderContent",static:!1,private:!1,access:{has:t=>"renderContent"in t,get:t=>t.renderContent},metadata:i},null,w),e(this,null,f,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:t=>"componentStyles"in t,get:t=>t.componentStyles},metadata:i},null,w),e(null,null,l,{kind:"field",name:"avatars",static:!1,private:!1,access:{has:t=>"avatars"in t,get:t=>t.avatars,set:(t,a)=>{t.avatars=a}},metadata:i},C,z),e(null,null,o,{kind:"field",name:"max",static:!1,private:!1,access:{has:t=>"max"in t,get:t=>t.max,set:(t,a)=>{t.max=a}},metadata:i},S,O),e(null,null,n,{kind:"field",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,a)=>{t.size=a}},metadata:i},$,A),e(null,null,c,{kind:"field",name:"overlap",static:!1,private:!1,access:{has:t=>"overlap"in t,get:t=>t.overlap,set:(t,a)=>{t.overlap=a}},metadata:i},E,_),e(null,t={value:s},y,{kind:"class",name:s.name,metadata:i},null,k),s=t.value,i&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),r(s,k)}init(){this.updateOverlap(),this.detectMode()}updateOverlap(){this.style.setProperty("--avatar-group-overlap",`-${this.overlap/16}rem`)}updateChildSizes(){this._useSlot&&this.applySlottedStyles()}detectMode(){const t=this.querySelectorAll("snice-avatar");this._useSlot=t.length>0,this._useSlot&&this.applySlottedStyles()}setupChildObserver(){this._childObserver=new MutationObserver(()=>this.detectMode()),this._childObserver.observe(this,{childList:!0})}cleanupChildObserver(){this._childObserver?.disconnect(),this._childObserver=null}applySlottedStyles(){const t=Array.from(this.querySelectorAll("snice-avatar"));t.forEach((t,a)=>{t.classList.add("avatar-group-item"),this.size&&t.setAttribute("size",this.size),t.setAttribute("shape","circle")});const a=t.slice(0,this.max),e=t.slice(this.max);a.forEach(t=>t.style.display=""),e.forEach(t=>t.style.display="none")}renderAvatar(t,e){const r=t.name||t.initials||"",s=t.initials||function(t){if(!t)return"";const a=t.trim().split(/\s+/).filter(t=>t.length>0);return 0===a.length?"":1===a.length?a[0][0].toUpperCase():(a[0][0]+a[1][0]).toUpperCase()}(r),l=t.color?"":r?`avatar-color-${i[function(t){let a=0;for(let e=0;e<t.length;e++)a=t.charCodeAt(e)+((a<<5)-a);return Math.abs(a)}(r)%i.length]}`:"",o=t.color?`background: ${t.color}`:"";return t.src?a.html`
7
+ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-avatar-group.min.js");var SniceAvatarGroup=function(a,t){"use strict";function e(a,t,e,r,i,s){function l(a){if(void 0!==a&&"function"!=typeof a)throw new TypeError("Function expected");return a}for(var o,n=r.kind,c="getter"===n?"get":"setter"===n?"set":"value",d=!t&&a?r.static?a:a.prototype:null,v=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),h=!1,u=e.length-1;u>=0;u--){var p={};for(var g in r)p[g]="access"===g?{}:r[g];for(var g in r.access)p.access[g]=r.access[g];p.addInitializer=function(a){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(l(a||null))};var m=(0,e[u])("accessor"===n?{get:v.get,set:v.set}:v[c],p);if("accessor"===n){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(o=l(m.get))&&(v.get=o),(o=l(m.set))&&(v.set=o),(o=l(m.init))&&i.unshift(o)}else(o=l(m))&&("field"===n?i.unshift(o):v[c]=o)}d&&Object.defineProperty(d,r.name,v),h=!0}function r(a,t,e){for(var r=arguments.length>2,i=0;i<t.length;i++)e=r?t[i].call(a,e):t[i].call(a);return r?e:void 0}"function"==typeof SuppressedError&&SuppressedError;const i=["red","orange","yellow","lime","green","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"];let s=(()=>{let a,s,l,o,n,c,d,v,h,u,p,g,m,b,f,y=[t.element("snice-avatar-group")],k=[],x=HTMLElement,w=[],C=[],z=[],S=[],O=[],$=[],A=[],E=[],_=[];return class extends x{static{s=this}constructor(){super(...arguments),this.avatars=(r(this,w),r(this,C,[])),this.max=(r(this,z),r(this,S,5)),this.size=(r(this,O),r(this,$,"medium")),this.overlap=(r(this,A),r(this,E,8)),this._useSlot=(r(this,_),!1),this._childObserver=null}static{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(x[Symbol.metadata]??null):void 0;l=[t.property({type:Array,attribute:!1})],o=[t.property({type:Number})],n=[t.property()],c=[t.property({type:Number})],d=[t.ready()],v=[t.watch("overlap")],h=[t.watch("size")],u=[t.ready()],p=[t.dispose()],g=[t.dispatch("avatar-click",{bubbles:!0,composed:!0})],m=[t.dispatch("overflow-click",{bubbles:!0,composed:!0})],b=[t.render()],f=[t.styles()],e(this,null,d,{kind:"method",name:"init",static:!1,private:!1,access:{has:a=>"init"in a,get:a=>a.init},metadata:i},null,w),e(this,null,v,{kind:"method",name:"updateOverlap",static:!1,private:!1,access:{has:a=>"updateOverlap"in a,get:a=>a.updateOverlap},metadata:i},null,w),e(this,null,h,{kind:"method",name:"updateChildSizes",static:!1,private:!1,access:{has:a=>"updateChildSizes"in a,get:a=>a.updateChildSizes},metadata:i},null,w),e(this,null,u,{kind:"method",name:"setupChildObserver",static:!1,private:!1,access:{has:a=>"setupChildObserver"in a,get:a=>a.setupChildObserver},metadata:i},null,w),e(this,null,p,{kind:"method",name:"cleanupChildObserver",static:!1,private:!1,access:{has:a=>"cleanupChildObserver"in a,get:a=>a.cleanupChildObserver},metadata:i},null,w),e(this,null,g,{kind:"method",name:"dispatchAvatarClick",static:!1,private:!1,access:{has:a=>"dispatchAvatarClick"in a,get:a=>a.dispatchAvatarClick},metadata:i},null,w),e(this,null,m,{kind:"method",name:"dispatchOverflowClick",static:!1,private:!1,access:{has:a=>"dispatchOverflowClick"in a,get:a=>a.dispatchOverflowClick},metadata:i},null,w),e(this,null,b,{kind:"method",name:"renderContent",static:!1,private:!1,access:{has:a=>"renderContent"in a,get:a=>a.renderContent},metadata:i},null,w),e(this,null,f,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:a=>"componentStyles"in a,get:a=>a.componentStyles},metadata:i},null,w),e(null,null,l,{kind:"field",name:"avatars",static:!1,private:!1,access:{has:a=>"avatars"in a,get:a=>a.avatars,set:(a,t)=>{a.avatars=t}},metadata:i},C,z),e(null,null,o,{kind:"field",name:"max",static:!1,private:!1,access:{has:a=>"max"in a,get:a=>a.max,set:(a,t)=>{a.max=t}},metadata:i},S,O),e(null,null,n,{kind:"field",name:"size",static:!1,private:!1,access:{has:a=>"size"in a,get:a=>a.size,set:(a,t)=>{a.size=t}},metadata:i},$,A),e(null,null,c,{kind:"field",name:"overlap",static:!1,private:!1,access:{has:a=>"overlap"in a,get:a=>a.overlap,set:(a,t)=>{a.overlap=t}},metadata:i},E,_),e(null,a={value:s},y,{kind:"class",name:s.name,metadata:i},null,k),s=a.value,i&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),r(s,k)}init(){this.updateOverlap(),this.detectMode()}updateOverlap(){this.style.setProperty("--avatar-group-overlap",`-${this.overlap/16}rem`)}updateChildSizes(){this._useSlot&&this.applySlottedStyles()}detectMode(){const a=this.querySelectorAll("snice-avatar");this._useSlot=a.length>0,this._useSlot&&this.applySlottedStyles()}setupChildObserver(){this._childObserver=new MutationObserver(()=>this.detectMode()),this._childObserver.observe(this,{childList:!0})}cleanupChildObserver(){this._childObserver?.disconnect(),this._childObserver=null}applySlottedStyles(){const a=Array.from(this.querySelectorAll("snice-avatar"));a.forEach((a,t)=>{a.classList.add("avatar-group-item"),this.size&&a.setAttribute("size",this.size),a.setAttribute("shape","circle")});const t=a.slice(0,this.max),e=a.slice(this.max);t.forEach(a=>a.style.display=""),e.forEach(a=>a.style.display="none")}renderAvatar(a,e){const r=a.name||a.initials||"",s=a.initials||function(a){if(!a)return"";const t=a.trim().split(/\s+/).filter(a=>a.length>0);return 0===t.length?"":1===t.length?t[0][0].toUpperCase():(t[0][0]+t[1][0]).toUpperCase()}(r),l=a.color?"":r?`avatar-color-${i[function(a){let t=0;for(let e=0;e<a.length;e++)t=a.charCodeAt(e)+((t<<5)-t);return Math.abs(t)}(r)%i.length]}`:"",o=a.color?`background: ${a.color}`:"";return a.src?t.html`
8
8
  <button class="avatar-item ${l}"
9
9
  part="avatar"
10
10
  type="button"
11
11
  style="${o}"
12
12
  title="${r}"
13
13
  aria-label="${r||"Avatar"}"
14
- @click=${()=>this.handleAvatarClick(t,e)}>
15
- <img src="${t.src}" alt="${r}" @error=${t=>this.handleImgError(t,s)}>
14
+ @click=${()=>this.handleAvatarClick(a,e)}>
15
+ <img src="${a.src}" alt="${r}" @error=${a=>this.handleImgError(a,s)}>
16
16
  </button>
17
- `:s?a.html`
17
+ `:s?t.html`
18
18
  <button class="avatar-item ${l}"
19
19
  part="avatar"
20
20
  type="button"
21
21
  style="${o}"
22
22
  title="${r}"
23
23
  aria-label="${r||"Avatar"}"
24
- @click=${()=>this.handleAvatarClick(t,e)}>
24
+ @click=${()=>this.handleAvatarClick(a,e)}>
25
25
  <span class="avatar-initials">${s}</span>
26
26
  </button>
27
- `:a.html`
27
+ `:t.html`
28
28
  <button class="avatar-item ${l}"
29
29
  part="avatar"
30
30
  type="button"
31
31
  style="${o}"
32
32
  title="${r}"
33
33
  aria-label="${r||"Avatar"}"
34
- @click=${()=>this.handleAvatarClick(t,e)}>
34
+ @click=${()=>this.handleAvatarClick(a,e)}>
35
35
  <svg class="avatar-fallback-icon" viewBox="0 0 24 24" fill="currentColor">
36
36
  <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
37
37
  </svg>
38
38
  </button>
39
- `}handleImgError(t,a){const e=t.target,r=e.parentElement;if(r&&a){e.style.display="none";const t=document.createElement("span");t.className="avatar-initials",t.textContent=a,r.appendChild(t)}}handleAvatarClick(t,a){this.dispatchAvatarClick(t,a)}handleOverflowClick(){this.dispatchOverflowClick()}dispatchAvatarClick(t,a){return{avatar:t,index:a}}dispatchOverflowClick(){return{remaining:this._useSlot?this.querySelectorAll("snice-avatar").length-this.max:this.avatars.length-this.max,avatars:this._useSlot?[]:this.avatars.slice(this.max)}}renderContent(){if(this._useSlot){const t=this.querySelectorAll("snice-avatar").length-this.max;return a.html`
39
+ `}handleImgError(a,t){const e=a.target,r=e.parentElement;if(r&&t){e.style.display="none";const a=document.createElement("span");a.className="avatar-initials",a.textContent=t,r.appendChild(a)}}handleAvatarClick(a,t){this.dispatchAvatarClick(a,t)}handleOverflowClick(){this.dispatchOverflowClick()}dispatchAvatarClick(a,t){return{avatar:a,index:t}}dispatchOverflowClick(){return{remaining:this._useSlot?this.querySelectorAll("snice-avatar").length-this.max:this.avatars.length-this.max,avatars:this._useSlot?[]:this.avatars.slice(this.max)}}renderContent(){if(this._useSlot){const a=this.querySelectorAll("snice-avatar").length-this.max;return t.html`
40
40
  <div class="avatar-group" part="base" role="group" aria-label="Avatar group">
41
41
  <slot></slot>
42
- <if ${t>0}>
42
+ <if ${a>0}>
43
43
  <button class="avatar-item avatar-overflow"
44
44
  part="overflow"
45
45
  type="button"
46
- aria-label="${t} more"
46
+ aria-label="${a} more"
47
47
  @click=${()=>this.handleOverflowClick()}>
48
- +${t}
48
+ +${a}
49
49
  </button>
50
50
  </if>
51
51
  </div>
52
- `}const t=this.avatars.slice(0,this.max),e=this.avatars.length-this.max;return a.html`
52
+ `}const a=this.avatars.slice(0,this.max),e=this.avatars.length-this.max;return t.html`
53
53
  <div class="avatar-group" part="base" role="group" aria-label="Avatar group">
54
- ${t.map((t,a)=>this.renderAvatar(t,a))}
54
+ ${a.map((a,t)=>this.renderAvatar(a,t))}
55
55
  <if ${e>0}>
56
56
  <button class="avatar-item avatar-overflow"
57
57
  part="overflow"
@@ -62,5 +62,5 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
62
62
  </button>
63
63
  </if>
64
64
  </div>
65
- `}componentStyles(){return a.css`${":host{display:inline-flex;align-items:center;--avatar-group-size:2.5rem;--avatar-group-overlap:-0.5rem;--avatar-group-font-size:0.875rem;--avatar-group-border-color:var(--snice-color-background, rgb(255 255 255));--avatar-group-border-width:2px;contain:layout style}:host([size=small]){--avatar-group-size:2rem;--avatar-group-font-size:0.75rem}:host([size=large]){--avatar-group-size:3rem;--avatar-group-font-size:1rem}.avatar-group{display:flex;align-items:center}.avatar-item{position:relative;width:var(--avatar-group-size);height:var(--avatar-group-size);border-radius:50%;overflow:hidden;border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);box-sizing:content-box;cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--avatar-group-font-size);font-weight:var(--snice-font-weight-semibold,600);color:rgb(255 255 255);user-select:none;background:var(--snice-color-text-tertiary,rgb(115 115 115));padding:0;font-family:inherit;line-height:1}.avatar-item:not(:first-child){margin-left:var(--avatar-group-overlap)}.avatar-item:hover{transform:translateY(-2px);z-index:1}.avatar-item:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:2px;z-index:2}.avatar-item img{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{text-shadow:-1px -1px 0 rgb(0 0 0 / .3),1px -1px 0 rgb(0 0 0 / .3),-1px 1px 0 rgb(0 0 0 / .3),1px 1px 0 rgb(0 0 0 / .3)}.avatar-fallback-icon{width:60%;height:60%;opacity:.9}.avatar-overflow{background:var(--snice-color-background-element,rgb(229 231 235));color:var(--snice-color-text-secondary,rgb(82 82 82));font-weight:var(--snice-font-weight-semibold,600);text-shadow:none}.avatar-color-red{background:rgb(239 68 68)}.avatar-color-orange{background:rgb(251 146 60)}.avatar-color-yellow{background:rgb(234 179 8)}.avatar-color-lime{background:rgb(163 230 53)}.avatar-color-green{background:rgb(34 197 94)}.avatar-color-teal{background:rgb(20 184 166)}.avatar-color-cyan{background:rgb(6 182 212)}.avatar-color-sky{background:rgb(14 165 233)}.avatar-color-blue{background:rgb(59 130 246)}.avatar-color-indigo{background:rgb(99 102 241)}.avatar-color-violet{background:rgb(139 92 246)}.avatar-color-purple{background:rgb(168 85 247)}.avatar-color-fuchsia{background:rgb(217 70 239)}.avatar-color-pink{background:rgb(236 72 153)}.avatar-color-rose{background:rgb(244 63 94)}::slotted(snice-avatar){--avatar-size:var(--avatar-group-size);border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);border-radius:50%;flex-shrink:0;transition:transform var(--snice-transition-fast, 150ms) ease}::slotted(snice-avatar:not(:first-child)){margin-left:var(--avatar-group-overlap)}::slotted(snice-avatar:hover){transform:translateY(-2px);z-index:1}"}`}},s})();return t.SniceAvatarGroup=s,t}({},Snice);
65
+ `}componentStyles(){return t.css`${":host{display:inline-flex;align-items:center;--avatar-group-size:2.5rem;--avatar-group-overlap:-0.5rem;--avatar-group-font-size:0.875rem;--avatar-group-border-color:var(--snice-color-background, rgb(255 255 255));--avatar-group-border-width:2px}:host([size=small]){--avatar-group-size:2rem;--avatar-group-font-size:0.75rem}:host([size=large]){--avatar-group-size:3rem;--avatar-group-font-size:1rem}.avatar-group{display:flex;align-items:center}.avatar-item{position:relative;width:var(--avatar-group-size);height:var(--avatar-group-size);border-radius:50%;overflow:hidden;border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);box-sizing:content-box;cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--avatar-group-font-size);font-weight:var(--snice-font-weight-semibold,600);color:rgb(255 255 255);user-select:none;background:var(--snice-color-text-tertiary,rgb(115 115 115));padding:0;font-family:inherit;line-height:1}.avatar-item:not(:first-child){margin-left:var(--avatar-group-overlap)}.avatar-item:hover{transform:translateY(-2px);z-index:1}.avatar-item:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:2px;z-index:2}.avatar-item img{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{text-shadow:-1px -1px 0 rgb(0 0 0 / .3),1px -1px 0 rgb(0 0 0 / .3),-1px 1px 0 rgb(0 0 0 / .3),1px 1px 0 rgb(0 0 0 / .3)}.avatar-fallback-icon{width:60%;height:60%;opacity:.9}.avatar-overflow{background:var(--snice-color-background-element,rgb(229 231 235));color:var(--snice-color-text-secondary,rgb(82 82 82));font-weight:var(--snice-font-weight-semibold,600);text-shadow:none}.avatar-color-red{background:rgb(239 68 68)}.avatar-color-orange{background:rgb(251 146 60)}.avatar-color-yellow{background:rgb(234 179 8)}.avatar-color-lime{background:rgb(163 230 53)}.avatar-color-green{background:rgb(34 197 94)}.avatar-color-teal{background:rgb(20 184 166)}.avatar-color-cyan{background:rgb(6 182 212)}.avatar-color-sky{background:rgb(14 165 233)}.avatar-color-blue{background:rgb(59 130 246)}.avatar-color-indigo{background:rgb(99 102 241)}.avatar-color-violet{background:rgb(139 92 246)}.avatar-color-purple{background:rgb(168 85 247)}.avatar-color-fuchsia{background:rgb(217 70 239)}.avatar-color-pink{background:rgb(236 72 153)}.avatar-color-rose{background:rgb(244 63 94)}::slotted(snice-avatar){--avatar-size:var(--avatar-group-size);border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);border-radius:50%;flex-shrink:0;transition:transform var(--snice-transition-fast, 150ms) ease}::slotted(snice-avatar:not(:first-child)){margin-left:var(--avatar-group-overlap)}::slotted(snice-avatar:hover){transform:translateY(-2px);z-index:1}"}`}},s})();return a.SniceAvatarGroup=s,a}({},Snice);
66
66
  //# sourceMappingURL=snice-avatar-group.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snice-avatar-group.min.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/avatar-group/snice-avatar-group.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, ready, watch, dispose, dispatch, render, styles, html, css } from 'snice';\n\nvar cssContent = \":host{display:inline-flex;align-items:center;--avatar-group-size:2.5rem;--avatar-group-overlap:-0.5rem;--avatar-group-font-size:0.875rem;--avatar-group-border-color:var(--snice-color-background, rgb(255 255 255));--avatar-group-border-width:2px;contain:layout style}:host([size=small]){--avatar-group-size:2rem;--avatar-group-font-size:0.75rem}:host([size=large]){--avatar-group-size:3rem;--avatar-group-font-size:1rem}.avatar-group{display:flex;align-items:center}.avatar-item{position:relative;width:var(--avatar-group-size);height:var(--avatar-group-size);border-radius:50%;overflow:hidden;border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);box-sizing:content-box;cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--avatar-group-font-size);font-weight:var(--snice-font-weight-semibold,600);color:rgb(255 255 255);user-select:none;background:var(--snice-color-text-tertiary,rgb(115 115 115));padding:0;font-family:inherit;line-height:1}.avatar-item:not(:first-child){margin-left:var(--avatar-group-overlap)}.avatar-item:hover{transform:translateY(-2px);z-index:1}.avatar-item:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:2px;z-index:2}.avatar-item img{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{text-shadow:-1px -1px 0 rgb(0 0 0 / .3),1px -1px 0 rgb(0 0 0 / .3),-1px 1px 0 rgb(0 0 0 / .3),1px 1px 0 rgb(0 0 0 / .3)}.avatar-fallback-icon{width:60%;height:60%;opacity:.9}.avatar-overflow{background:var(--snice-color-background-element,rgb(229 231 235));color:var(--snice-color-text-secondary,rgb(82 82 82));font-weight:var(--snice-font-weight-semibold,600);text-shadow:none}.avatar-color-red{background:rgb(239 68 68)}.avatar-color-orange{background:rgb(251 146 60)}.avatar-color-yellow{background:rgb(234 179 8)}.avatar-color-lime{background:rgb(163 230 53)}.avatar-color-green{background:rgb(34 197 94)}.avatar-color-teal{background:rgb(20 184 166)}.avatar-color-cyan{background:rgb(6 182 212)}.avatar-color-sky{background:rgb(14 165 233)}.avatar-color-blue{background:rgb(59 130 246)}.avatar-color-indigo{background:rgb(99 102 241)}.avatar-color-violet{background:rgb(139 92 246)}.avatar-color-purple{background:rgb(168 85 247)}.avatar-color-fuchsia{background:rgb(217 70 239)}.avatar-color-pink{background:rgb(236 72 153)}.avatar-color-rose{background:rgb(244 63 94)}::slotted(snice-avatar){--avatar-size:var(--avatar-group-size);border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);border-radius:50%;flex-shrink:0;transition:transform var(--snice-transition-fast, 150ms) ease}::slotted(snice-avatar:not(:first-child)){margin-left:var(--avatar-group-overlap)}::slotted(snice-avatar:hover){transform:translateY(-2px);z-index:1}\";\n\nconst COLORS = [\n 'red', 'orange', 'yellow', 'lime', 'green',\n 'teal', 'cyan', 'sky', 'blue', 'indigo',\n 'violet', 'purple', 'fuchsia', 'pink', 'rose'\n];\nfunction hashName(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash);\n}\nfunction getInitials(name) {\n if (!name)\n return '';\n const words = name.trim().split(/\\s+/).filter(w => w.length > 0);\n if (words.length === 0)\n return '';\n if (words.length === 1)\n return words[0][0].toUpperCase();\n return (words[0][0] + words[1][0]).toUpperCase();\n}\nlet SniceAvatarGroup = (() => {\n let _classDecorators = [element('snice-avatar-group')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _avatars_decorators;\n let _avatars_initializers = [];\n let _avatars_extraInitializers = [];\n let _max_decorators;\n let _max_initializers = [];\n let _max_extraInitializers = [];\n let _size_decorators;\n let _size_initializers = [];\n let _size_extraInitializers = [];\n let _overlap_decorators;\n let _overlap_initializers = [];\n let _overlap_extraInitializers = [];\n let _init_decorators;\n let _updateOverlap_decorators;\n let _updateChildSizes_decorators;\n let _setupChildObserver_decorators;\n let _cleanupChildObserver_decorators;\n let _dispatchAvatarClick_decorators;\n let _dispatchOverflowClick_decorators;\n let _renderContent_decorators;\n let _componentStyles_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.avatars = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _avatars_initializers, []));\n this.max = (__runInitializers(this, _avatars_extraInitializers), __runInitializers(this, _max_initializers, 5));\n this.size = (__runInitializers(this, _max_extraInitializers), __runInitializers(this, _size_initializers, 'medium'));\n this.overlap = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _overlap_initializers, 8));\n this._useSlot = (__runInitializers(this, _overlap_extraInitializers), false);\n this._childObserver = null;\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _avatars_decorators = [property({ type: Array, attribute: false })];\n _max_decorators = [property({ type: Number })];\n _size_decorators = [property()];\n _overlap_decorators = [property({ type: Number })];\n _init_decorators = [ready()];\n _updateOverlap_decorators = [watch('overlap')];\n _updateChildSizes_decorators = [watch('size')];\n _setupChildObserver_decorators = [ready()];\n _cleanupChildObserver_decorators = [dispose()];\n _dispatchAvatarClick_decorators = [dispatch('avatar-click', { bubbles: true, composed: true })];\n _dispatchOverflowClick_decorators = [dispatch('overflow-click', { bubbles: true, composed: true })];\n _renderContent_decorators = [render()];\n _componentStyles_decorators = [styles()];\n __esDecorate(this, null, _init_decorators, { kind: \"method\", name: \"init\", static: false, private: false, access: { has: obj => \"init\" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _updateOverlap_decorators, { kind: \"method\", name: \"updateOverlap\", static: false, private: false, access: { has: obj => \"updateOverlap\" in obj, get: obj => obj.updateOverlap }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _updateChildSizes_decorators, { kind: \"method\", name: \"updateChildSizes\", static: false, private: false, access: { has: obj => \"updateChildSizes\" in obj, get: obj => obj.updateChildSizes }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _setupChildObserver_decorators, { kind: \"method\", name: \"setupChildObserver\", static: false, private: false, access: { has: obj => \"setupChildObserver\" in obj, get: obj => obj.setupChildObserver }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanupChildObserver_decorators, { kind: \"method\", name: \"cleanupChildObserver\", static: false, private: false, access: { has: obj => \"cleanupChildObserver\" in obj, get: obj => obj.cleanupChildObserver }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _dispatchAvatarClick_decorators, { kind: \"method\", name: \"dispatchAvatarClick\", static: false, private: false, access: { has: obj => \"dispatchAvatarClick\" in obj, get: obj => obj.dispatchAvatarClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _dispatchOverflowClick_decorators, { kind: \"method\", name: \"dispatchOverflowClick\", static: false, private: false, access: { has: obj => \"dispatchOverflowClick\" in obj, get: obj => obj.dispatchOverflowClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _renderContent_decorators, { kind: \"method\", name: \"renderContent\", static: false, private: false, access: { has: obj => \"renderContent\" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _componentStyles_decorators, { kind: \"method\", name: \"componentStyles\", static: false, private: false, access: { has: obj => \"componentStyles\" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _avatars_decorators, { kind: \"field\", name: \"avatars\", static: false, private: false, access: { has: obj => \"avatars\" in obj, get: obj => obj.avatars, set: (obj, value) => { obj.avatars = value; } }, metadata: _metadata }, _avatars_initializers, _avatars_extraInitializers);\n __esDecorate(null, null, _max_decorators, { kind: \"field\", name: \"max\", static: false, private: false, access: { has: obj => \"max\" in obj, get: obj => obj.max, set: (obj, value) => { obj.max = value; } }, metadata: _metadata }, _max_initializers, _max_extraInitializers);\n __esDecorate(null, null, _size_decorators, { kind: \"field\", name: \"size\", static: false, private: false, access: { has: obj => \"size\" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);\n __esDecorate(null, null, _overlap_decorators, { kind: \"field\", name: \"overlap\", static: false, private: false, access: { has: obj => \"overlap\" in obj, get: obj => obj.overlap, set: (obj, value) => { obj.overlap = value; } }, metadata: _metadata }, _overlap_initializers, _overlap_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n init() {\n this.updateOverlap();\n this.detectMode();\n }\n updateOverlap() {\n this.style.setProperty('--avatar-group-overlap', `-${this.overlap / 16}rem`);\n }\n updateChildSizes() {\n if (this._useSlot) {\n this.applySlottedStyles();\n }\n }\n detectMode() {\n const slotted = this.querySelectorAll('snice-avatar');\n this._useSlot = slotted.length > 0;\n if (this._useSlot) {\n this.applySlottedStyles();\n }\n }\n setupChildObserver() {\n this._childObserver = new MutationObserver(() => this.detectMode());\n this._childObserver.observe(this, { childList: true });\n }\n cleanupChildObserver() {\n this._childObserver?.disconnect();\n this._childObserver = null;\n }\n applySlottedStyles() {\n const children = Array.from(this.querySelectorAll('snice-avatar'));\n children.forEach((child, i) => {\n child.classList.add('avatar-group-item');\n if (this.size) {\n child.setAttribute('size', this.size);\n }\n child.setAttribute('shape', 'circle');\n });\n // Handle overflow\n const visible = children.slice(0, this.max);\n const hidden = children.slice(this.max);\n visible.forEach(c => c.style.display = '');\n hidden.forEach(c => c.style.display = 'none');\n }\n renderAvatar(avatar, index) {\n const name = avatar.name || avatar.initials || '';\n const initials = avatar.initials || getInitials(name);\n const colorClass = avatar.color\n ? ''\n : name ? `avatar-color-${COLORS[hashName(name) % COLORS.length]}` : '';\n const customBg = avatar.color ? `background: ${avatar.color}` : '';\n if (avatar.src) {\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <img src=\"${avatar.src}\" alt=\"${name}\" @error=${(e) => this.handleImgError(e, initials)}>\n </button>\n `;\n }\n if (initials) {\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <span class=\"avatar-initials\">${initials}</span>\n </button>\n `;\n }\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <svg class=\"avatar-fallback-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"/>\n </svg>\n </button>\n `;\n }\n handleImgError(e, initials) {\n const img = e.target;\n const parent = img.parentElement;\n if (parent && initials) {\n img.style.display = 'none';\n const span = document.createElement('span');\n span.className = 'avatar-initials';\n span.textContent = initials;\n parent.appendChild(span);\n }\n }\n handleAvatarClick(avatar, index) {\n this.dispatchAvatarClick(avatar, index);\n }\n handleOverflowClick() {\n this.dispatchOverflowClick();\n }\n dispatchAvatarClick(avatar, index) {\n return { avatar, index };\n }\n dispatchOverflowClick() {\n const remaining = this._useSlot\n ? this.querySelectorAll('snice-avatar').length - this.max\n : this.avatars.length - this.max;\n const avatars = this._useSlot\n ? []\n : this.avatars.slice(this.max);\n return { remaining, avatars };\n }\n renderContent() {\n // Slotted mode: use child <snice-avatar> elements\n if (this._useSlot) {\n const totalChildren = this.querySelectorAll('snice-avatar').length;\n const remaining = totalChildren - this.max;\n return html /*html*/ `\n <div class=\"avatar-group\" part=\"base\" role=\"group\" aria-label=\"Avatar group\">\n <slot></slot>\n <if ${remaining > 0}>\n <button class=\"avatar-item avatar-overflow\"\n part=\"overflow\"\n type=\"button\"\n aria-label=\"${remaining} more\"\n @click=${() => this.handleOverflowClick()}>\n +${remaining}\n </button>\n </if>\n </div>\n `;\n }\n // Imperative mode: render from avatars array\n const visible = this.avatars.slice(0, this.max);\n const remaining = this.avatars.length - this.max;\n return html /*html*/ `\n <div class=\"avatar-group\" part=\"base\" role=\"group\" aria-label=\"Avatar group\">\n ${visible.map((avatar, index) => this.renderAvatar(avatar, index))}\n <if ${remaining > 0}>\n <button class=\"avatar-item avatar-overflow\"\n part=\"overflow\"\n type=\"button\"\n aria-label=\"${remaining} more\"\n @click=${() => this.handleOverflowClick()}>\n +${remaining}\n </button>\n </if>\n </div>\n `;\n }\n componentStyles() {\n return css /*css*/ `${cssContent}`;\n }\n });\n return _classThis;\n})();\n\nexport { SniceAvatarGroup };\n//# sourceMappingURL=snice-avatar-group.js.map\n"],"names":["__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","key","target","prototype","descriptor","Object","getOwnPropertyDescriptor","name","done","i","length","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","value","useValue","arguments","call","SuppressedError","COLORS","SniceAvatarGroup","_classDescriptor","_classThis","_avatars_decorators","_max_decorators","_size_decorators","_overlap_decorators","_init_decorators","_updateOverlap_decorators","_updateChildSizes_decorators","_setupChildObserver_decorators","_cleanupChildObserver_decorators","_dispatchAvatarClick_decorators","_dispatchOverflowClick_decorators","_renderContent_decorators","_componentStyles_decorators","_classDecorators","element","_classExtraInitializers","_classSuper","HTMLElement","_instanceExtraInitializers","_avatars_initializers","_avatars_extraInitializers","_max_initializers","_max_extraInitializers","_size_initializers","_size_extraInitializers","_overlap_initializers","_overlap_extraInitializers","this","constructor","super","avatars","max","size","overlap","_useSlot","_childObserver","_metadata","Symbol","metadata","create","property","type","Array","attribute","Number","ready","watch","dispose","dispatch","bubbles","composed","render","styles","static","private","has","obj","updateOverlap","updateChildSizes","setupChildObserver","cleanupChildObserver","dispatchAvatarClick","dispatchOverflowClick","renderContent","componentStyles","enumerable","configurable","writable","detectMode","style","setProperty","applySlottedStyles","slotted","querySelectorAll","MutationObserver","observe","childList","disconnect","children","from","forEach","child","classList","add","setAttribute","visible","slice","hidden","c","display","renderAvatar","avatar","index","initials","words","trim","split","filter","w","toUpperCase","getInitials","colorClass","color","hash","charCodeAt","Math","abs","hashName","customBg","src","html","handleAvatarClick","e","handleImgError","img","parent","parentElement","span","document","createElement","className","textContent","appendChild","handleOverflowClick","remaining","map","css"],"mappings":";;;;;;wKAiEO,SAASA,EAAaC,EAAMC,EAAcC,EAAYC,EAAWC,EAAcC,GACpF,SAASC,EAAOC,GAAK,QAAU,IAANA,GAA6B,mBAANA,EAAkB,MAAM,IAAIC,UAAU,qBAAsB,OAAOD,CAAG,CAKtH,IAJA,IAGIE,EAHAC,EAAOP,EAAUO,KAAMC,EAAe,WAATD,EAAoB,MAAiB,WAATA,EAAoB,MAAQ,QACrFE,GAAUX,GAAgBD,EAAOG,EAAkB,OAAIH,EAAOA,EAAKa,UAAY,KAC/EC,EAAab,IAAiBW,EAASG,OAAOC,yBAAyBJ,EAAQT,EAAUc,MAAQ,IAC9FC,GAAO,EACLC,EAAIjB,EAAWkB,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC7C,IAAIE,EAAU,CAAA,EACd,IAAK,IAAIC,KAAKnB,EAAWkB,EAAQC,GAAW,WAANA,EAAiB,CAAA,EAAKnB,EAAUmB,GACtE,IAAK,IAAIA,KAAKnB,EAAUoB,OAAQF,EAAQE,OAAOD,GAAKnB,EAAUoB,OAAOD,GACrED,EAAQG,eAAiB,SAAUjB,GAAK,GAAIW,EAAM,MAAM,IAAIV,UAAU,0DAA2DH,EAAkBoB,KAAKnB,EAAOC,GAAK,MAAQ,EAC5K,IAAImB,GAAS,EAAIxB,EAAWiB,IAAa,aAATT,EAAsB,CAAEiB,IAAKb,EAAWa,IAAKC,IAAKd,EAAWc,KAAQd,EAAWH,GAAMU,GACtH,GAAa,aAATX,EAAqB,CACrB,QAAe,IAAXgB,EAAmB,SACvB,GAAe,OAAXA,GAAqC,iBAAXA,EAAqB,MAAM,IAAIlB,UAAU,oBACnEC,EAAIH,EAAOoB,EAAOC,QAAMb,EAAWa,IAAMlB,IACzCA,EAAIH,EAAOoB,EAAOE,QAAMd,EAAWc,IAAMnB,IACzCA,EAAIH,EAAOoB,EAAOG,QAAOzB,EAAa0B,QAAQrB,EACtD,MACSA,EAAIH,EAAOoB,MACH,UAAThB,EAAkBN,EAAa0B,QAAQrB,GACtCK,EAAWH,GAAOF,EAE/B,CACIG,GAAQG,OAAOgB,eAAenB,EAAQT,EAAUc,KAAMH,GAC1DI,GAAO,CACT,CAEO,SAASc,EAAkBC,EAAS7B,EAAc8B,GAEvD,IADA,IAAIC,EAAWC,UAAUhB,OAAS,EACzBD,EAAI,EAAGA,EAAIf,EAAagB,OAAQD,IACrCe,EAAQC,EAAW/B,EAAae,GAAGkB,KAAKJ,EAASC,GAAS9B,EAAae,GAAGkB,KAAKJ,GAEnF,OAAOE,EAAWD,OAAQ,CAC5B,CAoOkD,mBAApBI,iBAAiCA,gBClU/D,MAAMC,EAAS,CACX,MAAO,SAAU,SAAU,OAAQ,QACnC,OAAQ,OAAQ,MAAO,OAAQ,SAC/B,SAAU,SAAU,UAAW,OAAQ,QAmBxC,IAACC,EAAmB,MACnB,IACIC,EAEAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EA1BAC,EAAmB,CAACC,UAAQ,uBAE5BC,EAA0B,GAE1BC,EAAcC,YACdC,EAA6B,GAE7BC,EAAwB,GACxBC,EAA6B,GAE7BC,EAAoB,GACpBC,EAAyB,GAEzBC,EAAqB,GACrBC,EAA0B,GAE1BC,EAAwB,GACxBC,EAA6B,GAsNjC,OA5MA,cAAeV,SACFjB,EAAa4B,IAAK,CAC3B,WAAAC,GACIC,SAASpC,WACTkC,KAAKG,SAAWzC,EAAkBsC,KAAMT,GAA6B7B,EAAkBsC,KAAMR,EAAuB,KACpHQ,KAAKI,KAAO1C,EAAkBsC,KAAMP,GAA6B/B,EAAkBsC,KAAMN,EAAmB,IAC5GM,KAAKK,MAAQ3C,EAAkBsC,KAAML,GAAyBjC,EAAkBsC,KAAMJ,EAAoB,WAC1GI,KAAKM,SAAW5C,EAAkBsC,KAAMH,GAA0BnC,EAAkBsC,KAAMF,EAAuB,IACjHE,KAAKO,UAAY7C,EAAkBsC,KAAMD,IAA6B,GACtEC,KAAKQ,eAAiB,IAC1B,QAEI,MAAMC,EAA8B,mBAAXC,QAAyBA,OAAOC,SAAWlE,OAAOmE,OAAOvB,EAAYqB,OAAOC,WAAa,WAAQ,EAC1HtC,EAAsB,CAACwC,EAAAA,SAAS,CAAEC,KAAMC,MAAOC,WAAW,KAC1D1C,EAAkB,CAACuC,EAAAA,SAAS,CAAEC,KAAMG,UACpC1C,EAAmB,CAACsC,EAAAA,YACpBrC,EAAsB,CAACqC,EAAAA,SAAS,CAAEC,KAAMG,UACxCxC,EAAmB,CAACyC,EAAAA,SACpBxC,EAA4B,CAACyC,QAAM,YACnCxC,EAA+B,CAACwC,QAAM,SACtCvC,EAAiC,CAACsC,EAAAA,SAClCrC,EAAmC,CAACuC,EAAAA,WACpCtC,EAAkC,CAACuC,EAAAA,SAAS,eAAgB,CAAEC,SAAS,EAAMC,UAAU,KACvFxC,EAAoC,CAACsC,EAAAA,SAAS,iBAAkB,CAAEC,SAAS,EAAMC,UAAU,KAC3FvC,EAA4B,CAACwC,EAAAA,UAC7BvC,EAA8B,CAACwC,EAAAA,UAC/BhG,EAAauE,KAAM,KAAMvB,EAAkB,CAAErC,KAAM,SAAUO,KAAM,OAAQ+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,SAAUA,EAAKxE,IAAKwE,GAAOA,EAAItE,MAAQoD,SAAUF,GAAa,KAAMlB,GACpM9D,EAAauE,KAAM,KAAMtB,EAA2B,CAAEtC,KAAM,SAAUO,KAAM,gBAAiB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,kBAAmBA,EAAKxE,IAAKwE,GAAOA,EAAIC,eAAiBnB,SAAUF,GAAa,KAAMlB,GACxO9D,EAAauE,KAAM,KAAMrB,EAA8B,CAAEvC,KAAM,SAAUO,KAAM,mBAAoB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,qBAAsBA,EAAKxE,IAAKwE,GAAOA,EAAIE,kBAAoBpB,SAAUF,GAAa,KAAMlB,GACpP9D,EAAauE,KAAM,KAAMpB,EAAgC,CAAExC,KAAM,SAAUO,KAAM,qBAAsB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,uBAAwBA,EAAKxE,IAAKwE,GAAOA,EAAIG,oBAAsBrB,SAAUF,GAAa,KAAMlB,GAC5P9D,EAAauE,KAAM,KAAMnB,EAAkC,CAAEzC,KAAM,SAAUO,KAAM,uBAAwB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,yBAA0BA,EAAKxE,IAAKwE,GAAOA,EAAII,sBAAwBtB,SAAUF,GAAa,KAAMlB,GACpQ9D,EAAauE,KAAM,KAAMlB,EAAiC,CAAE1C,KAAM,SAAUO,KAAM,sBAAuB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,wBAAyBA,EAAKxE,IAAKwE,GAAOA,EAAIK,qBAAuBvB,SAAUF,GAAa,KAAMlB,GAChQ9D,EAAauE,KAAM,KAAMjB,EAAmC,CAAE3C,KAAM,SAAUO,KAAM,wBAAyB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,0BAA2BA,EAAKxE,IAAKwE,GAAOA,EAAIM,uBAAyBxB,SAAUF,GAAa,KAAMlB,GACxQ9D,EAAauE,KAAM,KAAMhB,EAA2B,CAAE5C,KAAM,SAAUO,KAAM,gBAAiB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,kBAAmBA,EAAKxE,IAAKwE,GAAOA,EAAIO,eAAiBzB,SAAUF,GAAa,KAAMlB,GACxO9D,EAAauE,KAAM,KAAMf,EAA6B,CAAE7C,KAAM,SAAUO,KAAM,kBAAmB+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,oBAAqBA,EAAKxE,IAAKwE,GAAOA,EAAIQ,iBAAmB1B,SAAUF,GAAa,KAAMlB,GAChP9D,EAAa,KAAM,KAAM4C,EAAqB,CAAEjC,KAAM,QAASO,KAAM,UAAW+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,YAAaA,EAAKxE,IAAKwE,GAAOA,EAAI1B,QAAS7C,IAAK,CAACuE,EAAKjE,KAAYiE,EAAI1B,QAAUvC,IAAY+C,SAAUF,GAAajB,EAAuBC,GAC/QhE,EAAa,KAAM,KAAM6C,EAAiB,CAAElC,KAAM,QAASO,KAAM,MAAO+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,QAASA,EAAKxE,IAAKwE,GAAOA,EAAIzB,IAAK9C,IAAK,CAACuE,EAAKjE,KAAYiE,EAAIzB,IAAMxC,IAAY+C,SAAUF,GAAaf,EAAmBC,GACvPlE,EAAa,KAAM,KAAM8C,EAAkB,CAAEnC,KAAM,QAASO,KAAM,OAAQ+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,SAAUA,EAAKxE,IAAKwE,GAAOA,EAAIxB,KAAM/C,IAAK,CAACuE,EAAKjE,KAAYiE,EAAIxB,KAAOzC,IAAY+C,SAAUF,GAAab,EAAoBC,GAC7PpE,EAAa,KAAM,KAAM+C,EAAqB,CAAEpC,KAAM,QAASO,KAAM,UAAW+E,QAAQ,EAAOC,SAAS,EAAO1E,OAAQ,CAAE2E,IAAKC,GAAO,YAAaA,EAAKxE,IAAKwE,GAAOA,EAAIvB,QAAShD,IAAK,CAACuE,EAAKjE,KAAYiE,EAAIvB,QAAU1C,IAAY+C,SAAUF,GAAaX,EAAuBC,GAC/QtE,EAAa,KAAM0C,EAAmB,CAAEP,MAAOQ,GAAcc,EAAkB,CAAE9C,KAAM,QAASO,KAAMyB,EAAWzB,KAAMgE,SAAUF,GAAa,KAAMrB,GACpJhB,EAAaD,EAAiBP,MAC1B6C,GAAWhE,OAAOgB,eAAeW,EAAYsC,OAAOC,SAAU,CAAE2B,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAM5E,MAAO6C,IACjI/C,EAAkBU,EAAYgB,EAC1C,CACQ,IAAA7B,GACIyC,KAAK8B,gBACL9B,KAAKyC,YACT,CACA,aAAAX,GACI9B,KAAK0C,MAAMC,YAAY,yBAA0B,IAAI3C,KAAKM,QAAU,QACxE,CACA,gBAAAyB,GACQ/B,KAAKO,UACLP,KAAK4C,oBAEb,CACA,UAAAH,GACI,MAAMI,EAAU7C,KAAK8C,iBAAiB,gBACtC9C,KAAKO,SAAWsC,EAAQ/F,OAAS,EAC7BkD,KAAKO,UACLP,KAAK4C,oBAEb,CACA,kBAAAZ,GACIhC,KAAKQ,eAAiB,IAAIuC,iBAAiB,IAAM/C,KAAKyC,cACtDzC,KAAKQ,eAAewC,QAAQhD,KAAM,CAAEiD,WAAW,GACnD,CACA,oBAAAhB,GACIjC,KAAKQ,gBAAgB0C,aACrBlD,KAAKQ,eAAiB,IAC1B,CACA,kBAAAoC,GACI,MAAMO,EAAWpC,MAAMqC,KAAKpD,KAAK8C,iBAAiB,iBAClDK,EAASE,QAAQ,CAACC,EAAOzG,KACrByG,EAAMC,UAAUC,IAAI,qBAChBxD,KAAKK,MACLiD,EAAMG,aAAa,OAAQzD,KAAKK,MAEpCiD,EAAMG,aAAa,QAAS,YAGhC,MAAMC,EAAUP,EAASQ,MAAM,EAAG3D,KAAKI,KACjCwD,EAAST,EAASQ,MAAM3D,KAAKI,KACnCsD,EAAQL,QAAQQ,GAAKA,EAAEnB,MAAMoB,QAAU,IACvCF,EAAOP,QAAQQ,GAAKA,EAAEnB,MAAMoB,QAAU,OAC1C,CACA,YAAAC,CAAaC,EAAQC,GACjB,MAAMtH,EAAOqH,EAAOrH,MAAQqH,EAAOE,UAAY,GACzCA,EAAWF,EAAOE,UA9HpC,SAAqBvH,GACjB,IAAKA,EACD,MAAO,GACX,MAAMwH,EAAQxH,EAAKyH,OAAOC,MAAM,OAAOC,OAAOC,GAAKA,EAAEzH,OAAS,GAC9D,OAAqB,IAAjBqH,EAAMrH,OACC,GACU,IAAjBqH,EAAMrH,OACCqH,EAAM,GAAG,GAAGK,eACfL,EAAM,GAAG,GAAKA,EAAM,GAAG,IAAIK,aACvC,CAqHgDC,CAAY9H,GAC1C+H,EAAaV,EAAOW,MACpB,GACAhI,EAAO,gBAAgBsB,EAxIzC,SAAkBtB,GACd,IAAIiI,EAAO,EACX,IAAK,IAAI/H,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAC7B+H,EAAOjI,EAAKkI,WAAWhI,KAAO+H,GAAQ,GAAKA,GAE/C,OAAOE,KAAKC,IAAIH,EACpB,CAkIgDI,CAASrI,GAAQsB,EAAOnB,UAAY,GAClEmI,EAAWjB,EAAOW,MAAQ,eAAeX,EAAOW,QAAU,GAChE,OAAIX,EAAOkB,IACAC,MAAc;qCACAT;;;yBAGZO;yBACAtI;8BACKA,GAAQ;yBACb,IAAMqD,KAAKoF,kBAAkBpB,EAAQC;sBACxCD,EAAOkB,aAAavI,aAAiB0I,GAAMrF,KAAKsF,eAAeD,EAAGnB;;QAIxEA,EACOiB,MAAc;qCACAT;;;yBAGZO;yBACAtI;8BACKA,GAAQ;yBACb,IAAMqD,KAAKoF,kBAAkBpB,EAAQC;0CACpBC;;QAIvBiB,MAAc;mCACET;;;uBAGZO;uBACAtI;4BACKA,GAAQ;uBACb,IAAMqD,KAAKoF,kBAAkBpB,EAAQC;;;;;KAMpD,CACA,cAAAqB,CAAeD,EAAGnB,GACd,MAAMqB,EAAMF,EAAE/I,OACRkJ,EAASD,EAAIE,cACnB,GAAID,GAAUtB,EAAU,CACpBqB,EAAI7C,MAAMoB,QAAU,OACpB,MAAM4B,EAAOC,SAASC,cAAc,QACpCF,EAAKG,UAAY,kBACjBH,EAAKI,YAAc5B,EACnBsB,EAAOO,YAAYL,EACvB,CACJ,CACA,iBAAAN,CAAkBpB,EAAQC,GACtBjE,KAAKkC,oBAAoB8B,EAAQC,EACrC,CACA,mBAAA+B,GACIhG,KAAKmC,uBACT,CACA,mBAAAD,CAAoB8B,EAAQC,GACxB,MAAO,CAAED,SAAQC,QACrB,CACA,qBAAA9B,GAOI,MAAO,CAAE8D,UANSjG,KAAKO,SACjBP,KAAK8C,iBAAiB,gBAAgBhG,OAASkD,KAAKI,IACpDJ,KAAKG,QAAQrD,OAASkD,KAAKI,IAIbD,QAHJH,KAAKO,SACf,GACAP,KAAKG,QAAQwD,MAAM3D,KAAKI,KAElC,CACA,aAAAgC,GAEI,GAAIpC,KAAKO,SAAU,CACf,MACM0F,EADgBjG,KAAK8C,iBAAiB,gBAAgBhG,OAC1BkD,KAAKI,IACvC,OAAO+E,MAAc;;;gBAGrBc,EAAY;;;;kCAIMA;6BACL,IAAMjG,KAAKgG;iBACvBC;;;;OAKL,CAEA,MAAMvC,EAAU1D,KAAKG,QAAQwD,MAAM,EAAG3D,KAAKI,KACrC6F,EAAYjG,KAAKG,QAAQrD,OAASkD,KAAKI,IAC7C,OAAO+E,MAAc;;UAEvBzB,EAAQwC,IAAI,CAAClC,EAAQC,IAAUjE,KAAK+D,aAAaC,EAAQC;cACrDgC,EAAY;;;;gCAIMA;2BACL,IAAMjG,KAAKgG;eACvBC;;;;KAKP,CACA,eAAA5D,GACI,OAAO8D,EAAAA,GAAY,GA7Pd,81FA8PT,GAEG/H,CACV,EAzOsB","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"snice-avatar-group.min.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/avatar-group/snice-avatar-group.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, ready, watch, dispose, dispatch, render, styles, html, css } from 'snice';\n\nvar cssContent = \":host{display:inline-flex;align-items:center;--avatar-group-size:2.5rem;--avatar-group-overlap:-0.5rem;--avatar-group-font-size:0.875rem;--avatar-group-border-color:var(--snice-color-background, rgb(255 255 255));--avatar-group-border-width:2px}:host([size=small]){--avatar-group-size:2rem;--avatar-group-font-size:0.75rem}:host([size=large]){--avatar-group-size:3rem;--avatar-group-font-size:1rem}.avatar-group{display:flex;align-items:center}.avatar-item{position:relative;width:var(--avatar-group-size);height:var(--avatar-group-size);border-radius:50%;overflow:hidden;border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);box-sizing:content-box;cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--avatar-group-font-size);font-weight:var(--snice-font-weight-semibold,600);color:rgb(255 255 255);user-select:none;background:var(--snice-color-text-tertiary,rgb(115 115 115));padding:0;font-family:inherit;line-height:1}.avatar-item:not(:first-child){margin-left:var(--avatar-group-overlap)}.avatar-item:hover{transform:translateY(-2px);z-index:1}.avatar-item:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:2px;z-index:2}.avatar-item img{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{text-shadow:-1px -1px 0 rgb(0 0 0 / .3),1px -1px 0 rgb(0 0 0 / .3),-1px 1px 0 rgb(0 0 0 / .3),1px 1px 0 rgb(0 0 0 / .3)}.avatar-fallback-icon{width:60%;height:60%;opacity:.9}.avatar-overflow{background:var(--snice-color-background-element,rgb(229 231 235));color:var(--snice-color-text-secondary,rgb(82 82 82));font-weight:var(--snice-font-weight-semibold,600);text-shadow:none}.avatar-color-red{background:rgb(239 68 68)}.avatar-color-orange{background:rgb(251 146 60)}.avatar-color-yellow{background:rgb(234 179 8)}.avatar-color-lime{background:rgb(163 230 53)}.avatar-color-green{background:rgb(34 197 94)}.avatar-color-teal{background:rgb(20 184 166)}.avatar-color-cyan{background:rgb(6 182 212)}.avatar-color-sky{background:rgb(14 165 233)}.avatar-color-blue{background:rgb(59 130 246)}.avatar-color-indigo{background:rgb(99 102 241)}.avatar-color-violet{background:rgb(139 92 246)}.avatar-color-purple{background:rgb(168 85 247)}.avatar-color-fuchsia{background:rgb(217 70 239)}.avatar-color-pink{background:rgb(236 72 153)}.avatar-color-rose{background:rgb(244 63 94)}::slotted(snice-avatar){--avatar-size:var(--avatar-group-size);border:var(--avatar-group-border-width) solid var(--avatar-group-border-color);border-radius:50%;flex-shrink:0;transition:transform var(--snice-transition-fast, 150ms) ease}::slotted(snice-avatar:not(:first-child)){margin-left:var(--avatar-group-overlap)}::slotted(snice-avatar:hover){transform:translateY(-2px);z-index:1}\";\n\nconst COLORS = [\n 'red', 'orange', 'yellow', 'lime', 'green',\n 'teal', 'cyan', 'sky', 'blue', 'indigo',\n 'violet', 'purple', 'fuchsia', 'pink', 'rose'\n];\nfunction hashName(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash);\n}\nfunction getInitials(name) {\n if (!name)\n return '';\n const words = name.trim().split(/\\s+/).filter(w => w.length > 0);\n if (words.length === 0)\n return '';\n if (words.length === 1)\n return words[0][0].toUpperCase();\n return (words[0][0] + words[1][0]).toUpperCase();\n}\nlet SniceAvatarGroup = (() => {\n let _classDecorators = [element('snice-avatar-group')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _avatars_decorators;\n let _avatars_initializers = [];\n let _avatars_extraInitializers = [];\n let _max_decorators;\n let _max_initializers = [];\n let _max_extraInitializers = [];\n let _size_decorators;\n let _size_initializers = [];\n let _size_extraInitializers = [];\n let _overlap_decorators;\n let _overlap_initializers = [];\n let _overlap_extraInitializers = [];\n let _init_decorators;\n let _updateOverlap_decorators;\n let _updateChildSizes_decorators;\n let _setupChildObserver_decorators;\n let _cleanupChildObserver_decorators;\n let _dispatchAvatarClick_decorators;\n let _dispatchOverflowClick_decorators;\n let _renderContent_decorators;\n let _componentStyles_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.avatars = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _avatars_initializers, []));\n this.max = (__runInitializers(this, _avatars_extraInitializers), __runInitializers(this, _max_initializers, 5));\n this.size = (__runInitializers(this, _max_extraInitializers), __runInitializers(this, _size_initializers, 'medium'));\n this.overlap = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _overlap_initializers, 8));\n this._useSlot = (__runInitializers(this, _overlap_extraInitializers), false);\n this._childObserver = null;\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _avatars_decorators = [property({ type: Array, attribute: false })];\n _max_decorators = [property({ type: Number })];\n _size_decorators = [property()];\n _overlap_decorators = [property({ type: Number })];\n _init_decorators = [ready()];\n _updateOverlap_decorators = [watch('overlap')];\n _updateChildSizes_decorators = [watch('size')];\n _setupChildObserver_decorators = [ready()];\n _cleanupChildObserver_decorators = [dispose()];\n _dispatchAvatarClick_decorators = [dispatch('avatar-click', { bubbles: true, composed: true })];\n _dispatchOverflowClick_decorators = [dispatch('overflow-click', { bubbles: true, composed: true })];\n _renderContent_decorators = [render()];\n _componentStyles_decorators = [styles()];\n __esDecorate(this, null, _init_decorators, { kind: \"method\", name: \"init\", static: false, private: false, access: { has: obj => \"init\" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _updateOverlap_decorators, { kind: \"method\", name: \"updateOverlap\", static: false, private: false, access: { has: obj => \"updateOverlap\" in obj, get: obj => obj.updateOverlap }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _updateChildSizes_decorators, { kind: \"method\", name: \"updateChildSizes\", static: false, private: false, access: { has: obj => \"updateChildSizes\" in obj, get: obj => obj.updateChildSizes }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _setupChildObserver_decorators, { kind: \"method\", name: \"setupChildObserver\", static: false, private: false, access: { has: obj => \"setupChildObserver\" in obj, get: obj => obj.setupChildObserver }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanupChildObserver_decorators, { kind: \"method\", name: \"cleanupChildObserver\", static: false, private: false, access: { has: obj => \"cleanupChildObserver\" in obj, get: obj => obj.cleanupChildObserver }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _dispatchAvatarClick_decorators, { kind: \"method\", name: \"dispatchAvatarClick\", static: false, private: false, access: { has: obj => \"dispatchAvatarClick\" in obj, get: obj => obj.dispatchAvatarClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _dispatchOverflowClick_decorators, { kind: \"method\", name: \"dispatchOverflowClick\", static: false, private: false, access: { has: obj => \"dispatchOverflowClick\" in obj, get: obj => obj.dispatchOverflowClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _renderContent_decorators, { kind: \"method\", name: \"renderContent\", static: false, private: false, access: { has: obj => \"renderContent\" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _componentStyles_decorators, { kind: \"method\", name: \"componentStyles\", static: false, private: false, access: { has: obj => \"componentStyles\" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _avatars_decorators, { kind: \"field\", name: \"avatars\", static: false, private: false, access: { has: obj => \"avatars\" in obj, get: obj => obj.avatars, set: (obj, value) => { obj.avatars = value; } }, metadata: _metadata }, _avatars_initializers, _avatars_extraInitializers);\n __esDecorate(null, null, _max_decorators, { kind: \"field\", name: \"max\", static: false, private: false, access: { has: obj => \"max\" in obj, get: obj => obj.max, set: (obj, value) => { obj.max = value; } }, metadata: _metadata }, _max_initializers, _max_extraInitializers);\n __esDecorate(null, null, _size_decorators, { kind: \"field\", name: \"size\", static: false, private: false, access: { has: obj => \"size\" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);\n __esDecorate(null, null, _overlap_decorators, { kind: \"field\", name: \"overlap\", static: false, private: false, access: { has: obj => \"overlap\" in obj, get: obj => obj.overlap, set: (obj, value) => { obj.overlap = value; } }, metadata: _metadata }, _overlap_initializers, _overlap_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n init() {\n this.updateOverlap();\n this.detectMode();\n }\n updateOverlap() {\n this.style.setProperty('--avatar-group-overlap', `-${this.overlap / 16}rem`);\n }\n updateChildSizes() {\n if (this._useSlot) {\n this.applySlottedStyles();\n }\n }\n detectMode() {\n const slotted = this.querySelectorAll('snice-avatar');\n this._useSlot = slotted.length > 0;\n if (this._useSlot) {\n this.applySlottedStyles();\n }\n }\n setupChildObserver() {\n this._childObserver = new MutationObserver(() => this.detectMode());\n this._childObserver.observe(this, { childList: true });\n }\n cleanupChildObserver() {\n this._childObserver?.disconnect();\n this._childObserver = null;\n }\n applySlottedStyles() {\n const children = Array.from(this.querySelectorAll('snice-avatar'));\n children.forEach((child, i) => {\n child.classList.add('avatar-group-item');\n if (this.size) {\n child.setAttribute('size', this.size);\n }\n child.setAttribute('shape', 'circle');\n });\n // Handle overflow\n const visible = children.slice(0, this.max);\n const hidden = children.slice(this.max);\n visible.forEach(c => c.style.display = '');\n hidden.forEach(c => c.style.display = 'none');\n }\n renderAvatar(avatar, index) {\n const name = avatar.name || avatar.initials || '';\n const initials = avatar.initials || getInitials(name);\n const colorClass = avatar.color\n ? ''\n : name ? `avatar-color-${COLORS[hashName(name) % COLORS.length]}` : '';\n const customBg = avatar.color ? `background: ${avatar.color}` : '';\n if (avatar.src) {\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <img src=\"${avatar.src}\" alt=\"${name}\" @error=${(e) => this.handleImgError(e, initials)}>\n </button>\n `;\n }\n if (initials) {\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <span class=\"avatar-initials\">${initials}</span>\n </button>\n `;\n }\n return html /*html*/ `\n <button class=\"avatar-item ${colorClass}\"\n part=\"avatar\"\n type=\"button\"\n style=\"${customBg}\"\n title=\"${name}\"\n aria-label=\"${name || 'Avatar'}\"\n @click=${() => this.handleAvatarClick(avatar, index)}>\n <svg class=\"avatar-fallback-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"/>\n </svg>\n </button>\n `;\n }\n handleImgError(e, initials) {\n const img = e.target;\n const parent = img.parentElement;\n if (parent && initials) {\n img.style.display = 'none';\n const span = document.createElement('span');\n span.className = 'avatar-initials';\n span.textContent = initials;\n parent.appendChild(span);\n }\n }\n handleAvatarClick(avatar, index) {\n this.dispatchAvatarClick(avatar, index);\n }\n handleOverflowClick() {\n this.dispatchOverflowClick();\n }\n dispatchAvatarClick(avatar, index) {\n return { avatar, index };\n }\n dispatchOverflowClick() {\n const remaining = this._useSlot\n ? this.querySelectorAll('snice-avatar').length - this.max\n : this.avatars.length - this.max;\n const avatars = this._useSlot\n ? []\n : this.avatars.slice(this.max);\n return { remaining, avatars };\n }\n renderContent() {\n // Slotted mode: use child <snice-avatar> elements\n if (this._useSlot) {\n const totalChildren = this.querySelectorAll('snice-avatar').length;\n const remaining = totalChildren - this.max;\n return html /*html*/ `\n <div class=\"avatar-group\" part=\"base\" role=\"group\" aria-label=\"Avatar group\">\n <slot></slot>\n <if ${remaining > 0}>\n <button class=\"avatar-item avatar-overflow\"\n part=\"overflow\"\n type=\"button\"\n aria-label=\"${remaining} more\"\n @click=${() => this.handleOverflowClick()}>\n +${remaining}\n </button>\n </if>\n </div>\n `;\n }\n // Imperative mode: render from avatars array\n const visible = this.avatars.slice(0, this.max);\n const remaining = this.avatars.length - this.max;\n return html /*html*/ `\n <div class=\"avatar-group\" part=\"base\" role=\"group\" aria-label=\"Avatar group\">\n ${visible.map((avatar, index) => this.renderAvatar(avatar, index))}\n <if ${remaining > 0}>\n <button class=\"avatar-item avatar-overflow\"\n part=\"overflow\"\n type=\"button\"\n aria-label=\"${remaining} more\"\n @click=${() => this.handleOverflowClick()}>\n +${remaining}\n </button>\n </if>\n </div>\n `;\n }\n componentStyles() {\n return css /*css*/ `${cssContent}`;\n }\n });\n return _classThis;\n})();\n\nexport { SniceAvatarGroup };\n//# sourceMappingURL=snice-avatar-group.js.map\n"],"names":["__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","key","target","prototype","descriptor","Object","getOwnPropertyDescriptor","name","done","i","length","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","value","useValue","arguments","call","SuppressedError","COLORS","SniceAvatarGroup","_classDescriptor","_classThis","_avatars_decorators","_max_decorators","_size_decorators","_overlap_decorators","_init_decorators","_updateOverlap_decorators","_updateChildSizes_decorators","_setupChildObserver_decorators","_cleanupChildObserver_decorators","_dispatchAvatarClick_decorators","_dispatchOverflowClick_decorators","_renderContent_decorators","_componentStyles_decorators","_classDecorators","element","_classExtraInitializers","_classSuper","HTMLElement","_instanceExtraInitializers","_avatars_initializers","_avatars_extraInitializers","_max_initializers","_max_extraInitializers","_size_initializers","_size_extraInitializers","_overlap_initializers","_overlap_extraInitializers","this","constructor","super","avatars","max","size","overlap","_useSlot","_childObserver","_metadata","Symbol","metadata","create","property","type","Array","attribute","Number","ready","watch","dispose","dispatch","bubbles","composed","render","styles","static","private","has","obj","updateOverlap","updateChildSizes","setupChildObserver","cleanupChildObserver","dispatchAvatarClick","dispatchOverflowClick","renderContent","componentStyles","enumerable","configurable","writable","detectMode","style","setProperty","applySlottedStyles","slotted","querySelectorAll","MutationObserver","observe","childList","disconnect","children","from","forEach","child","classList","add","setAttribute","visible","slice","hidden","c","display","renderAvatar","avatar","index","initials","words","trim","split","filter","w","toUpperCase","getInitials","colorClass","color","hash","charCodeAt","Math","abs","hashName","customBg","src","html","handleAvatarClick","e","handleImgError","img","parent","parentElement","span","document","createElement","className","textContent","appendChild","handleOverflowClick","remaining","map","css"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * snice v4.23.0
3
- * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v4.25.0
3
+ * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * snice v4.23.0
3
- * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v4.25.0
3
+ * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * snice v4.23.0
3
- * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v4.25.0
3
+ * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
@@ -75,14 +75,18 @@ var SniceBanner = (function (exports, snice) {
75
75
  * - URLs (http://, https://, /, ./, ../, data:) -> <img>
76
76
  * - Image extensions (svg, png, jpg, jpeg, jfif, pjp, gif, webp, avif, jxl,
77
77
  * ico, cur, bmp, tif, tiff, heic, heif, apng) -> <img>
78
- * - Everything else -> span with text (emoji, font ligatures)
78
+ * - Everything else -> span with text content (emoji, plain text)
79
+ *
80
+ * ⚠️ "home" or "settings" renders as PLAIN TEXT, not a Material icon.
81
+ * For Material Symbols, use the icon slot instead:
82
+ * <span slot="icon" class="material-symbols-outlined">home</span>
79
83
  *
80
84
  * Examples:
81
85
  * - "/path/icon.svg" -> <img>
82
86
  * - "icon.png" -> <img>
83
87
  * - "img://filename" -> <img> (forced)
84
- * - "home" -> <span> text (Material Symbols ligature)
85
88
  * - "🏠" -> <span> text (emoji)
89
+ * - "home" -> <span> text (plain text, NOT a Material icon)
86
90
  * - "text:///not/a/path" -> <span> text (forced)
87
91
  */
88
92
  function renderIcon(icon, className = 'icon') {
@@ -112,7 +116,7 @@ var SniceBanner = (function (exports, snice) {
112
116
  return snice.html `<span class="${className}" part="icon">${icon}</span>`;
113
117
  }
114
118
 
115
- var cssContent = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint;position:fixed;top:0;left:0;right:0;z-index:var(--snice-z-index-modal,1000);transform:translateY(-100%);transition:transform var(--snice-transition-medium, 250ms) ease;pointer-events:none}:host([position=top]){top:0}:host([position=bottom]){top:auto;bottom:0;transform:translateY(100%)}:host([open]){transform:translateY(0);pointer-events:auto}.banner{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.5rem);box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1))}.banner--info{background:var(--snice-color-info-light,rgb(239 246 255));border-bottom:2px solid var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-info-dark,rgb(30 64 175))}.banner--success{background:var(--snice-color-success-light,rgb(240 253 244));border-bottom:2px solid var(--snice-color-success,rgb(22 163 74));color:var(--snice-color-success-dark,rgb(22 101 52))}.banner--warning{background:var(--snice-color-warning-light,rgb(255 251 235));border-bottom:2px solid var(--snice-color-warning,rgb(245 158 11));color:var(--snice-color-warning-dark,rgb(146 64 14))}.banner--error{background:var(--snice-color-danger-light,rgb(254 242 242));border-bottom:2px solid var(--snice-color-danger,rgb(220 38 38));color:var(--snice-color-danger-dark,rgb(153 27 27))}:host([position=bottom]) .banner{border-bottom:none;border-top:2px solid}:host([position=bottom]) .banner--info{border-top-color:var(--snice-color-primary,rgb(37 99 235))}:host([position=bottom]) .banner--success{border-top-color:var(--snice-color-success,rgb(22 163 74))}:host([position=bottom]) .banner--warning{border-top-color:var(--snice-color-warning,rgb(245 158 11))}:host([position=bottom]) .banner--error{border-top-color:var(--snice-color-danger,rgb(220 38 38))}.banner__icon-slot{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.banner__icon-slot:empty{display:none}.banner__icon{font-size:var(--snice-font-size-xl, 1.25rem);line-height:1}.banner__icon-slot ::slotted(*){display:flex;align-items:center;justify-content:center;font-size:var(--snice-font-size-xl, 1.25rem);line-height:1}.banner__icon-slot ::slotted(svg){width:1.25rem;height:1.25rem}.banner__icon-slot ::slotted(img){width:1.25rem;height:1.25rem;object-fit:contain}.banner__message{flex:1;font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500)}.banner__action{padding:var(--snice-spacing-2xs,.375rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);background:0 0;border:1px solid currentColor;border-radius:var(--snice-border-radius-sm,.25rem);color:inherit;cursor:pointer;transition:all var(--snice-transition-fast, 150ms);flex-shrink:0}.banner__action:hover{background:hsl(0 0% 0% / .05)}.banner__close{padding:var(--snice-spacing-2xs,.25rem);background:0 0;border:none;color:inherit;cursor:pointer;font-size:var(--snice-font-size-xl, 1.25rem);line-height:1;opacity:.6;transition:opacity var(--snice-transition-fast, 150ms);flex-shrink:0}.banner__close:hover{opacity:1}.banner__slot{display:contents}";
119
+ var cssContent = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);position:fixed;top:0;left:0;right:0;z-index:var(--snice-z-index-modal,1000);transform:translateY(-100%);transition:transform var(--snice-transition-medium, 250ms) ease;pointer-events:none}:host([position=top]){top:0}:host([position=bottom]){top:auto;bottom:0;transform:translateY(100%)}:host([open]){transform:translateY(0);pointer-events:auto}.banner{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.5rem);box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1))}.banner--info{background:var(--snice-color-info-light,rgb(239 246 255));border-bottom:2px solid var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-info-dark,rgb(30 64 175))}.banner--success{background:var(--snice-color-success-light,rgb(240 253 244));border-bottom:2px solid var(--snice-color-success,rgb(22 163 74));color:var(--snice-color-success-dark,rgb(22 101 52))}.banner--warning{background:var(--snice-color-warning-light,rgb(255 251 235));border-bottom:2px solid var(--snice-color-warning,rgb(245 158 11));color:var(--snice-color-warning-dark,rgb(146 64 14))}.banner--error{background:var(--snice-color-danger-light,rgb(254 242 242));border-bottom:2px solid var(--snice-color-danger,rgb(220 38 38));color:var(--snice-color-danger-dark,rgb(153 27 27))}:host([position=bottom]) .banner{border-bottom:none;border-top:2px solid}:host([position=bottom]) .banner--info{border-top-color:var(--snice-color-primary,rgb(37 99 235))}:host([position=bottom]) .banner--success{border-top-color:var(--snice-color-success,rgb(22 163 74))}:host([position=bottom]) .banner--warning{border-top-color:var(--snice-color-warning,rgb(245 158 11))}:host([position=bottom]) .banner--error{border-top-color:var(--snice-color-danger,rgb(220 38 38))}.banner__icon-slot{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.banner__icon-slot:empty{display:none}.banner__icon{font-size:var(--snice-font-size-xl, 1.25rem);line-height:1}.banner__icon-slot ::slotted(*){display:flex;align-items:center;justify-content:center;font-size:var(--snice-font-size-xl, 1.25rem);line-height:1}.banner__icon-slot ::slotted(svg){width:1.25rem;height:1.25rem}.banner__icon-slot ::slotted(img){width:1.25rem;height:1.25rem;object-fit:contain}.banner__message{flex:1;font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500)}.banner__action{padding:var(--snice-spacing-2xs,.375rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);background:0 0;border:1px solid currentColor;border-radius:var(--snice-border-radius-sm,.25rem);color:inherit;cursor:pointer;transition:all var(--snice-transition-fast, 150ms);flex-shrink:0}.banner__action:hover{background:hsl(0 0% 0% / .05)}.banner__close{padding:var(--snice-spacing-2xs,.25rem);background:0 0;border:none;color:inherit;cursor:pointer;font-size:var(--snice-font-size-xl, 1.25rem);line-height:1;opacity:.6;transition:opacity var(--snice-transition-fast, 150ms);flex-shrink:0}.banner__close:hover{opacity:1}.banner__slot{display:contents}";
116
120
 
117
121
  let SniceBanner = (() => {
118
122
  let _classDecorators = [snice.element('snice-banner')];