@sima-land/moleculas 16.0.0-alpha.4 → 16.0.0-alpha.40

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 (433) hide show
  1. package/README.md +23 -0
  2. package/common/components/badge/badge.d.ts +7 -0
  3. package/common/components/badge/badge.js +42 -0
  4. package/common/components/badge/badge.js.map +1 -0
  5. package/common/components/badge/badge.m.scss +100 -0
  6. package/common/components/badge/index.d.ts +2 -19
  7. package/common/components/badge/index.js +3 -80
  8. package/common/components/badge/index.js.map +1 -0
  9. package/common/components/badge/types.d.ts +40 -0
  10. package/common/components/{intractive-image → badge}/types.js +1 -0
  11. package/common/components/badge/types.js.map +1 -0
  12. package/common/components/badge/utils.d.ts +33 -0
  13. package/common/components/badge/utils.js +112 -0
  14. package/common/components/badge/utils.js.map +1 -0
  15. package/common/components/badge-list/badge-list.d.ts +29 -0
  16. package/common/components/badge-list/badge-list.js +38 -0
  17. package/common/components/badge-list/badge-list.js.map +1 -0
  18. package/common/components/badge-list/index.d.ts +1 -29
  19. package/common/components/badge-list/index.js +3 -56
  20. package/common/components/badge-list/index.js.map +1 -0
  21. package/common/components/breadcrumbs/breadcrumbs.d.ts +46 -0
  22. package/common/components/breadcrumbs/breadcrumbs.js +82 -0
  23. package/common/components/breadcrumbs/breadcrumbs.js.map +1 -0
  24. package/common/components/breadcrumbs/breadcrumbs.m.scss +113 -0
  25. package/common/components/breadcrumbs/index.d.ts +2 -0
  26. package/common/components/breadcrumbs/index.js +7 -0
  27. package/common/components/breadcrumbs/index.js.map +1 -0
  28. package/common/components/breadcrumbs/types.d.ts +8 -0
  29. package/common/{types.js → components/breadcrumbs/types.js} +1 -0
  30. package/common/components/breadcrumbs/types.js.map +1 -0
  31. package/common/components/hover-slider/hover-slider-nav.d.ts +7 -0
  32. package/common/components/hover-slider/hover-slider-nav.js +20 -0
  33. package/common/components/hover-slider/hover-slider-nav.js.map +1 -0
  34. package/common/components/hover-slider/hover-slider-nav.m.scss +22 -0
  35. package/common/components/hover-slider/hover-slider.d.ts +9 -0
  36. package/common/components/hover-slider/hover-slider.js +95 -0
  37. package/common/components/hover-slider/hover-slider.js.map +1 -0
  38. package/common/components/hover-slider/hover-slider.m.scss +36 -0
  39. package/common/components/hover-slider/index.d.ts +3 -0
  40. package/common/components/hover-slider/index.js +9 -0
  41. package/common/components/hover-slider/index.js.map +1 -0
  42. package/common/components/hover-slider/types.d.ts +30 -0
  43. package/common/components/hover-slider/types.js +3 -0
  44. package/common/components/hover-slider/types.js.map +1 -0
  45. package/common/components/hover-slider/utils.d.ts +13 -0
  46. package/common/components/hover-slider/utils.js +36 -0
  47. package/common/components/hover-slider/utils.js.map +1 -0
  48. package/common/components/img-stub/img-stub.d.ts +14 -0
  49. package/common/components/img-stub/img-stub.js +20 -0
  50. package/common/components/img-stub/img-stub.js.map +1 -0
  51. package/common/components/img-stub/img-stub.m.scss +36 -0
  52. package/common/components/img-stub/index.d.ts +1 -0
  53. package/common/components/img-stub/index.js +6 -0
  54. package/common/components/img-stub/index.js.map +1 -0
  55. package/common/components/{intractive-image → interactive-image}/index.js +1 -0
  56. package/common/components/interactive-image/index.js.map +1 -0
  57. package/common/components/{intractive-image → interactive-image}/interactive-image-util.scss +1 -1
  58. package/common/components/interactive-image/interactive-image.d.ts +15 -0
  59. package/common/components/interactive-image/interactive-image.js +55 -0
  60. package/common/components/interactive-image/interactive-image.js.map +1 -0
  61. package/common/components/{intractive-image/interactive-image.module.scss → interactive-image/interactive-image.m.scss} +2 -2
  62. package/common/components/{intractive-image → interactive-image}/types.d.ts +4 -4
  63. package/common/components/interactive-image/types.js +3 -0
  64. package/common/components/interactive-image/types.js.map +1 -0
  65. package/common/components/media-gallery/index.d.ts +2 -0
  66. package/common/components/media-gallery/index.js +7 -0
  67. package/common/components/media-gallery/index.js.map +1 -0
  68. package/common/components/media-gallery/media-gallery.d.ts +16 -0
  69. package/common/components/media-gallery/media-gallery.js +89 -0
  70. package/common/components/media-gallery/media-gallery.js.map +1 -0
  71. package/common/components/media-gallery/media-gallery.m.scss +35 -0
  72. package/common/components/media-gallery/types.d.ts +12 -0
  73. package/common/components/media-gallery/types.js +3 -0
  74. package/common/components/media-gallery/types.js.map +1 -0
  75. package/common/components/media-gallery/utils.d.ts +38 -0
  76. package/common/components/media-gallery/utils.js +102 -0
  77. package/common/components/media-gallery/utils.js.map +1 -0
  78. package/common/components/media-modal/index.d.ts +4 -4
  79. package/common/components/media-modal/index.js +6 -3
  80. package/common/components/media-modal/index.js.map +1 -0
  81. package/common/components/media-modal/layout.d.ts +5 -5
  82. package/common/components/media-modal/layout.js +22 -49
  83. package/common/components/media-modal/layout.js.map +1 -0
  84. package/common/components/media-modal/{layout.module.scss → layout.m.scss} +3 -5
  85. package/common/components/media-modal/parts/all-round-view.d.ts +1 -2
  86. package/common/components/media-modal/parts/all-round-view.js +13 -50
  87. package/common/components/media-modal/parts/all-round-view.js.map +1 -0
  88. package/common/components/media-modal/parts/index.d.ts +3 -3
  89. package/common/components/media-modal/parts/index.js +28 -23
  90. package/common/components/media-modal/parts/index.js.map +1 -0
  91. package/common/components/media-modal/parts/media-area.d.ts +25 -0
  92. package/common/components/media-modal/parts/media-area.js +60 -0
  93. package/common/components/media-modal/parts/media-area.js.map +1 -0
  94. package/common/components/media-modal/parts/media-area.m.scss +21 -0
  95. package/common/components/media-modal/parts/media-view.d.ts +9 -2
  96. package/common/components/media-modal/parts/media-view.js +31 -16
  97. package/common/components/media-modal/parts/media-view.js.map +1 -0
  98. package/common/components/media-modal/parts/{media-view.module.scss → media-view.m.scss} +8 -4
  99. package/common/components/media-modal/parts/{parts.module.scss → parts.m.scss} +2 -2
  100. package/common/components/media-modal/parts/product-brief.d.ts +4 -2
  101. package/common/components/media-modal/parts/product-brief.js +15 -33
  102. package/common/components/media-modal/parts/product-brief.js.map +1 -0
  103. package/common/components/media-modal/parts/{product-brief.module.scss → product-brief.m.scss} +11 -9
  104. package/common/components/media-modal/parts/review.d.ts +1 -1
  105. package/common/components/media-modal/parts/review.js +8 -21
  106. package/common/components/media-modal/parts/review.js.map +1 -0
  107. package/common/components/media-modal/parts/{review.module.scss → review.m.scss} +2 -2
  108. package/common/components/media-modal/parts/scroll-section.d.ts +1 -1
  109. package/common/components/media-modal/parts/scroll-section.js +6 -9
  110. package/common/components/media-modal/parts/scroll-section.js.map +1 -0
  111. package/common/components/media-modal/parts/{scroll-section.module.scss → scroll-section.m.scss} +2 -2
  112. package/common/components/media-modal/parts/thumbnail.d.ts +4 -4
  113. package/common/components/media-modal/parts/thumbnail.js +15 -44
  114. package/common/components/media-modal/parts/thumbnail.js.map +1 -0
  115. package/common/components/media-modal/parts/{thumbnail.module.scss → thumbnail.m.scss} +36 -14
  116. package/common/components/media-modal/parts/thumbnails.d.ts +1 -1
  117. package/common/components/media-modal/parts/thumbnails.js +13 -48
  118. package/common/components/media-modal/parts/thumbnails.js.map +1 -0
  119. package/common/components/media-modal/parts/{thumbnails.module.scss → thumbnails.m.scss} +1 -1
  120. package/common/components/media-modal/types.d.ts +1 -0
  121. package/common/components/media-modal/types.js +1 -0
  122. package/common/components/media-modal/types.js.map +1 -0
  123. package/common/components/media-modal/utils.d.ts +4 -9
  124. package/common/components/media-modal/utils.js +8 -20
  125. package/common/components/media-modal/utils.js.map +1 -0
  126. package/common/components/modifier/default-border.svg +14 -0
  127. package/common/components/modifier/hover-border.svg +14 -0
  128. package/common/components/modifier/index.d.ts +2 -48
  129. package/common/components/modifier/index.js +4 -100
  130. package/common/components/modifier/index.js.map +1 -0
  131. package/common/components/modifier/modifier.d.ts +13 -0
  132. package/common/components/modifier/modifier.js +72 -0
  133. package/common/components/modifier/modifier.js.map +1 -0
  134. package/common/components/modifier/{modifiers.module.scss → modifier.m.scss} +81 -17
  135. package/common/components/modifier/types.d.ts +37 -0
  136. package/common/components/modifier/types.js +3 -0
  137. package/common/components/modifier/types.js.map +1 -0
  138. package/common/components/pagination-controls/index.d.ts +2 -0
  139. package/common/components/pagination-controls/index.js +9 -0
  140. package/common/components/pagination-controls/index.js.map +1 -0
  141. package/common/components/pagination-controls/pagination-controls.d.ts +30 -0
  142. package/common/components/pagination-controls/pagination-controls.js +71 -0
  143. package/common/components/pagination-controls/pagination-controls.js.map +1 -0
  144. package/common/components/pagination-controls/pagination-controls.m.scss +73 -0
  145. package/common/components/pagination-controls/types.d.ts +20 -0
  146. package/common/components/pagination-controls/types.js +3 -0
  147. package/common/components/pagination-controls/types.js.map +1 -0
  148. package/common/components/product-image/index.d.ts +3 -0
  149. package/common/components/product-image/index.js +8 -0
  150. package/common/components/product-image/index.js.map +1 -0
  151. package/common/components/product-image/product-image.d.ts +10 -0
  152. package/common/components/product-image/product-image.js +32 -0
  153. package/common/components/product-image/product-image.js.map +1 -0
  154. package/common/components/product-image/product-image.m.scss +62 -0
  155. package/common/components/product-image/types.d.ts +30 -0
  156. package/common/components/product-image/types.js +3 -0
  157. package/common/components/product-image/types.js.map +1 -0
  158. package/common/components/product-image/utils.d.ts +2 -0
  159. package/common/components/product-image/utils.js +6 -0
  160. package/common/components/product-image/utils.js.map +1 -0
  161. package/common/components/product-info/index.d.ts +4 -16
  162. package/common/components/product-info/index.js +7 -40
  163. package/common/components/product-info/index.js.map +1 -0
  164. package/common/components/product-info/parts/adult-confirm-button.d.ts +7 -0
  165. package/common/components/product-info/parts/adult-confirm-button.js +19 -0
  166. package/common/components/product-info/parts/adult-confirm-button.js.map +1 -0
  167. package/common/components/product-info/parts/badges.d.ts +7 -0
  168. package/common/components/product-info/parts/badges.js +19 -0
  169. package/common/components/product-info/parts/badges.js.map +1 -0
  170. package/common/components/product-info/parts/badges.m.scss +3 -0
  171. package/common/components/product-info/parts/cart-control.d.ts +7 -0
  172. package/common/components/product-info/parts/cart-control.js +18 -0
  173. package/common/components/product-info/parts/cart-control.js.map +1 -0
  174. package/common/components/product-info/parts/cart-control.m.scss +41 -0
  175. package/common/components/product-info/parts/footer.d.ts +7 -0
  176. package/common/components/product-info/parts/footer.js +21 -0
  177. package/common/components/product-info/parts/footer.js.map +1 -0
  178. package/common/components/product-info/parts/footer.m.scss +3 -0
  179. package/common/components/product-info/parts/image-button.d.ts +7 -0
  180. package/common/components/product-info/parts/image-button.js +38 -0
  181. package/common/components/product-info/parts/image-button.js.map +1 -0
  182. package/common/components/product-info/parts/image-button.m.scss +40 -0
  183. package/common/components/product-info/parts/image.d.ts +7 -0
  184. package/common/components/product-info/parts/image.js +30 -0
  185. package/common/components/product-info/parts/image.js.map +1 -0
  186. package/common/components/product-info/parts/image.m.scss +24 -0
  187. package/common/components/product-info/parts/index.d.ts +33 -0
  188. package/common/components/product-info/parts/index.js +38 -0
  189. package/common/components/product-info/parts/index.js.map +1 -0
  190. package/common/components/product-info/parts/media.d.ts +7 -0
  191. package/common/components/product-info/parts/media.js +18 -0
  192. package/common/components/product-info/parts/media.js.map +1 -0
  193. package/common/components/product-info/parts/media.m.scss +10 -0
  194. package/common/components/product-info/parts/parts.m.scss +11 -0
  195. package/common/components/product-info/parts/prices.d.ts +7 -0
  196. package/common/components/product-info/parts/prices.js +25 -0
  197. package/common/components/product-info/parts/prices.js.map +1 -0
  198. package/common/components/product-info/parts/prices.m.scss +28 -0
  199. package/common/components/product-info/parts/rating-counter.m.scss +7 -0
  200. package/common/components/product-info/parts/rating-couter.d.ts +7 -0
  201. package/common/components/product-info/parts/rating-couter.js +19 -0
  202. package/common/components/product-info/parts/rating-couter.js.map +1 -0
  203. package/common/components/product-info/parts/secondary-info.d.ts +7 -0
  204. package/common/components/product-info/parts/secondary-info.js +18 -0
  205. package/common/components/product-info/parts/secondary-info.js.map +1 -0
  206. package/common/components/product-info/parts/secondary-info.m.scss +8 -0
  207. package/common/components/product-info/parts/title.d.ts +7 -0
  208. package/common/components/product-info/parts/title.js +23 -0
  209. package/common/components/product-info/parts/title.js.map +1 -0
  210. package/common/components/product-info/parts/title.m.scss +23 -0
  211. package/common/components/product-info/parts/trademark-link.d.ts +7 -0
  212. package/common/components/product-info/parts/trademark-link.js +19 -0
  213. package/common/components/product-info/parts/trademark-link.js.map +1 -0
  214. package/common/components/product-info/parts/trademark-link.m.scss +9 -0
  215. package/common/components/product-info/parts/wait-list-add-link.d.ts +7 -0
  216. package/common/components/product-info/parts/wait-list-add-link.js +19 -0
  217. package/common/components/product-info/parts/wait-list-add-link.js.map +1 -0
  218. package/common/components/product-info/parts/wait-list-added-link.d.ts +7 -0
  219. package/common/components/product-info/parts/wait-list-added-link.js +21 -0
  220. package/common/components/product-info/parts/wait-list-added-link.js.map +1 -0
  221. package/common/components/product-info/parts/wait-list-added-link.m.scss +9 -0
  222. package/common/components/product-info/product-info.d.ts +13 -0
  223. package/common/components/product-info/product-info.js +39 -0
  224. package/common/components/product-info/product-info.js.map +1 -0
  225. package/common/components/product-info/types.d.ts +65 -3
  226. package/common/components/product-info/types.js +1 -0
  227. package/common/components/product-info/types.js.map +1 -0
  228. package/common/components/product-info/utils.d.ts +3 -1
  229. package/common/components/product-info/utils.js +8 -2
  230. package/common/components/product-info/utils.js.map +1 -0
  231. package/common/components/rating-counter/index.d.ts +1 -25
  232. package/common/components/rating-counter/index.js +3 -35
  233. package/common/components/rating-counter/index.js.map +1 -0
  234. package/common/components/rating-counter/rating-counter-util.scss +1 -1
  235. package/common/components/rating-counter/rating-counter.d.ts +35 -0
  236. package/common/components/rating-counter/rating-counter.js +23 -0
  237. package/common/components/rating-counter/rating-counter.js.map +1 -0
  238. package/common/components/rating-counter/{rating-counter.module.scss → rating-counter.m.scss} +2 -2
  239. package/common/hooks/index.d.ts +3 -0
  240. package/common/hooks/index.js +10 -0
  241. package/common/hooks/index.js.map +1 -0
  242. package/common/hooks/use-client-width.d.ts +8 -0
  243. package/common/hooks/use-client-width.js +27 -0
  244. package/common/hooks/use-client-width.js.map +1 -0
  245. package/common/hooks/use-image-stub.d.ts +14 -0
  246. package/common/hooks/use-image-stub.js +25 -0
  247. package/common/hooks/use-image-stub.js.map +1 -0
  248. package/common/hooks/use-mounted.d.ts +5 -0
  249. package/common/hooks/use-mounted.js +18 -0
  250. package/common/hooks/use-mounted.js.map +1 -0
  251. package/desktop/components/breadcrumbs/breadcrumbs.d.ts +31 -0
  252. package/desktop/components/breadcrumbs/breadcrumbs.js +56 -0
  253. package/desktop/components/breadcrumbs/breadcrumbs.js.map +1 -0
  254. package/desktop/components/breadcrumbs/{breadcrumbs.module.scss → breadcrumbs.m.scss} +37 -2
  255. package/desktop/components/breadcrumbs/index.d.ts +1 -28
  256. package/desktop/components/breadcrumbs/index.js +3 -80
  257. package/desktop/components/breadcrumbs/index.js.map +1 -0
  258. package/desktop/components/gallery-modal/__mocks__/index.js +1 -0
  259. package/desktop/components/gallery-modal/__mocks__/index.js.map +1 -0
  260. package/desktop/components/gallery-modal/components/all-round-view.d.ts +1 -2
  261. package/desktop/components/gallery-modal/components/all-round-view.js +42 -60
  262. package/desktop/components/gallery-modal/components/all-round-view.js.map +1 -0
  263. package/desktop/components/gallery-modal/components/{all-round-view.module.scss → all-round-view.m.scss} +6 -1
  264. package/desktop/components/gallery-modal/components/gallery-modal.d.ts +6 -5
  265. package/desktop/components/gallery-modal/components/gallery-modal.js +16 -66
  266. package/desktop/components/gallery-modal/components/gallery-modal.js.map +1 -0
  267. package/desktop/components/gallery-modal/components/{gallery-modal.module.scss → gallery-modal.m.scss} +10 -5
  268. package/desktop/components/gallery-modal/components/image-overlay.d.ts +3 -3
  269. package/desktop/components/gallery-modal/components/image-overlay.js +4 -17
  270. package/desktop/components/gallery-modal/components/image-overlay.js.map +1 -0
  271. package/desktop/components/gallery-modal/components/review-info.d.ts +1 -1
  272. package/desktop/components/gallery-modal/components/review-info.js +11 -52
  273. package/desktop/components/gallery-modal/components/review-info.js.map +1 -0
  274. package/desktop/components/gallery-modal/components/{review-info.module.scss → review-info.m.scss} +1 -1
  275. package/desktop/components/gallery-modal/components/thumbnail.d.ts +3 -3
  276. package/desktop/components/gallery-modal/components/thumbnail.js +7 -10
  277. package/desktop/components/gallery-modal/components/thumbnail.js.map +1 -0
  278. package/desktop/components/gallery-modal/components/{thumbnail.module.scss → thumbnail.m.scss} +1 -1
  279. package/desktop/components/gallery-modal/index.js +1 -0
  280. package/desktop/components/gallery-modal/index.js.map +1 -0
  281. package/desktop/components/gallery-modal/types.js +1 -0
  282. package/desktop/components/gallery-modal/types.js.map +1 -0
  283. package/desktop/components/gallery-modal/utils.d.ts +5 -3
  284. package/desktop/components/gallery-modal/utils.js +21 -11
  285. package/desktop/components/gallery-modal/utils.js.map +1 -0
  286. package/desktop/components/person-info/index.d.ts +1 -41
  287. package/desktop/components/person-info/index.js +3 -43
  288. package/desktop/components/person-info/index.js.map +1 -0
  289. package/desktop/components/person-info/person-info.d.ts +42 -0
  290. package/desktop/components/person-info/person-info.js +23 -0
  291. package/desktop/components/person-info/person-info.js.map +1 -0
  292. package/desktop/components/person-info/{person-info.module.scss → person-info.m.scss} +2 -2
  293. package/desktop/components/product-carousel/index.d.ts +2 -31
  294. package/desktop/components/product-carousel/index.js +3 -133
  295. package/desktop/components/product-carousel/index.js.map +1 -0
  296. package/desktop/components/product-carousel/product-carousel.d.ts +7 -0
  297. package/desktop/components/product-carousel/product-carousel.js +84 -0
  298. package/desktop/components/product-carousel/product-carousel.js.map +1 -0
  299. package/desktop/components/product-carousel/{product-carousel.module.scss → product-carousel.m.scss} +2 -8
  300. package/desktop/components/product-carousel/types.d.ts +39 -0
  301. package/desktop/components/product-carousel/types.js +3 -0
  302. package/desktop/components/product-carousel/types.js.map +1 -0
  303. package/desktop/components/promotion-card/banner-title.d.ts +2 -3
  304. package/desktop/components/promotion-card/banner-title.js +9 -19
  305. package/desktop/components/promotion-card/banner-title.js.map +1 -0
  306. package/desktop/components/promotion-card/estimate.d.ts +1 -2
  307. package/desktop/components/promotion-card/estimate.js +5 -7
  308. package/desktop/components/promotion-card/estimate.js.map +1 -0
  309. package/desktop/components/promotion-card/index.d.ts +4 -31
  310. package/desktop/components/promotion-card/index.js +10 -83
  311. package/desktop/components/promotion-card/index.js.map +1 -0
  312. package/desktop/components/promotion-card/placeholder.d.ts +4 -2
  313. package/desktop/components/promotion-card/placeholder.js +4 -6
  314. package/desktop/components/promotion-card/placeholder.js.map +1 -0
  315. package/desktop/components/promotion-card/{placeholder.module.scss → placeholder.m.scss} +2 -2
  316. package/desktop/components/promotion-card/promotion-card.d.ts +31 -0
  317. package/desktop/components/promotion-card/promotion-card.js +44 -0
  318. package/desktop/components/promotion-card/promotion-card.js.map +1 -0
  319. package/desktop/components/promotion-card/{index.module.scss → promotion-card.m.scss} +25 -34
  320. package/desktop/components/promotion-card/types.js +1 -0
  321. package/desktop/components/promotion-card/types.js.map +1 -0
  322. package/mobile/components/action-circles/action-circles.d.ts +22 -0
  323. package/mobile/components/action-circles/action-circles.js +30 -0
  324. package/mobile/components/action-circles/action-circles.js.map +1 -0
  325. package/mobile/components/{action-list/action-list.module.scss → action-circles/action-circles.m.scss} +5 -2
  326. package/mobile/components/action-circles/index.d.ts +1 -22
  327. package/mobile/components/action-circles/index.js +3 -29
  328. package/mobile/components/action-circles/index.js.map +1 -0
  329. package/mobile/components/action-list/action-list.d.ts +29 -0
  330. package/mobile/components/action-list/action-list.js +39 -0
  331. package/mobile/components/action-list/action-list.js.map +1 -0
  332. package/mobile/components/{action-circles/action-circles.module.scss → action-list/action-list.m.scss} +5 -2
  333. package/mobile/components/action-list/index.d.ts +1 -23
  334. package/mobile/components/action-list/index.js +5 -34
  335. package/mobile/components/action-list/index.js.map +1 -0
  336. package/mobile/components/breadcrumbs/breadcrumbs.d.ts +12 -0
  337. package/mobile/components/breadcrumbs/breadcrumbs.js +17 -0
  338. package/mobile/components/breadcrumbs/breadcrumbs.js.map +1 -0
  339. package/mobile/components/breadcrumbs/{breadcrumbs.module.scss → breadcrumbs.m.scss} +1 -1
  340. package/mobile/components/breadcrumbs/index.d.ts +1 -13
  341. package/mobile/components/breadcrumbs/index.js +3 -13
  342. package/mobile/components/breadcrumbs/index.js.map +1 -0
  343. package/mobile/components/person-info/index.d.ts +1 -44
  344. package/mobile/components/person-info/index.js +4 -55
  345. package/mobile/components/person-info/index.js.map +1 -0
  346. package/mobile/components/person-info/person-info.d.ts +46 -0
  347. package/mobile/components/person-info/person-info.js +37 -0
  348. package/mobile/components/person-info/person-info.js.map +1 -0
  349. package/mobile/components/person-info/{person-info.module.scss → person-info.m.scss} +39 -17
  350. package/mobile/components/product-row/index.d.ts +1 -41
  351. package/mobile/components/product-row/index.js +3 -56
  352. package/mobile/components/product-row/index.js.map +1 -0
  353. package/mobile/components/product-row/product-row.d.ts +40 -0
  354. package/mobile/components/product-row/product-row.js +28 -0
  355. package/mobile/components/product-row/product-row.js.map +1 -0
  356. package/mobile/components/product-row/{product-row.module.scss → product-row.m.scss} +1 -1
  357. package/mobile/components/product-slider/index.d.ts +1 -17
  358. package/mobile/components/product-slider/index.js +3 -57
  359. package/mobile/components/product-slider/index.js.map +1 -0
  360. package/mobile/components/product-slider/product-slider.d.ts +22 -0
  361. package/mobile/components/product-slider/product-slider.js +38 -0
  362. package/mobile/components/product-slider/product-slider.js.map +1 -0
  363. package/mobile/components/product-slider/{product-slider.module.scss → product-slider.m.scss} +1 -1
  364. package/mobile/components/search-bar/index.d.ts +1 -39
  365. package/mobile/components/search-bar/index.js +4 -104
  366. package/mobile/components/search-bar/index.js.map +1 -0
  367. package/mobile/components/search-bar/search-bar.d.ts +39 -0
  368. package/mobile/components/search-bar/search-bar.js +64 -0
  369. package/mobile/components/search-bar/search-bar.js.map +1 -0
  370. package/mobile/components/search-bar/{search-bar.module.scss → search-bar.m.scss} +6 -6
  371. package/mobile/components/select-screen/index.d.ts +1 -20
  372. package/mobile/components/select-screen/index.js +4 -65
  373. package/mobile/components/select-screen/index.js.map +1 -0
  374. package/mobile/components/select-screen/select-screen.d.ts +20 -0
  375. package/mobile/components/select-screen/select-screen.js +30 -0
  376. package/mobile/components/select-screen/select-screen.js.map +1 -0
  377. package/mobile/components/select-screen/{select-screen.module.scss → select-screen.m.scss} +2 -2
  378. package/package.json +67 -64
  379. package/common/components/badge/badge.module.scss +0 -40
  380. package/common/components/intractive-image/interactive-image.d.ts +0 -15
  381. package/common/components/intractive-image/interactive-image.js +0 -96
  382. package/common/components/media-modal/__mocks__/index.d.ts +0 -3
  383. package/common/components/media-modal/__mocks__/index.js +0 -225
  384. package/common/components/media-modal/parts/media-content.d.ts +0 -19
  385. package/common/components/media-modal/parts/media-content.js +0 -103
  386. package/common/components/media-modal/parts/media-content.module.scss +0 -42
  387. package/common/components/product-info/parts.d.ts +0 -68
  388. package/common/components/product-info/parts.js +0 -212
  389. package/common/components/product-info/product-info.module.scss +0 -280
  390. package/common/components/rating-counter/star.svg +0 -5
  391. package/common/constants.d.ts +0 -2
  392. package/common/constants.js +0 -8
  393. package/common/icons/eighteen-plus.svg +0 -5
  394. package/common/icons/image-broken.svg +0 -7
  395. package/common/icons/touch-x.svg +0 -6
  396. package/common/types.d.ts +0 -1
  397. package/desktop/components/breadcrumbs/square-arrow-down.svg +0 -8
  398. package/desktop/components/gallery-modal/icons/360.svg +0 -3
  399. package/desktop/components/gallery-modal/icons/pause.svg +0 -3
  400. package/desktop/components/gallery-modal/icons/turn-left.svg +0 -10
  401. package/desktop/components/gallery-modal/icons/turn-right.svg +0 -10
  402. package/desktop/components/modifiers/button/index.d.ts +0 -22
  403. package/desktop/components/modifiers/button/index.js +0 -48
  404. package/desktop/components/modifiers/button/modifier-button.module.scss +0 -85
  405. package/desktop/components/modifiers/group/index.d.ts +0 -15
  406. package/desktop/components/modifiers/group/index.js +0 -70
  407. package/desktop/components/modifiers/group/modifiers-group.module.scss +0 -33
  408. package/desktop/components/modifiers/group/utils.d.ts +0 -20
  409. package/desktop/components/modifiers/group/utils.js +0 -73
  410. package/desktop/components/modifiers/modifiers.scss +0 -8
  411. package/desktop/components/product-card/index.d.ts +0 -26
  412. package/desktop/components/product-card/index.js +0 -105
  413. package/desktop/components/product-card/product-card.module.scss +0 -12
  414. package/desktop/components/product-carousel/hover-card.d.ts +0 -12
  415. package/desktop/components/product-carousel/hover-card.js +0 -76
  416. package/desktop/components/product-carousel/hover-card.module.scss +0 -14
  417. package/desktop/components/product-carousel/utils.d.ts +0 -16
  418. package/desktop/components/product-carousel/utils.js +0 -44
  419. package/mobile/components/modifiers-list/index.d.ts +0 -22
  420. package/mobile/components/modifiers-list/index.js +0 -25
  421. package/mobile/components/modifiers-list/modifier-item/index.d.ts +0 -29
  422. package/mobile/components/modifiers-list/modifier-item/index.js +0 -38
  423. package/mobile/components/modifiers-list/modifier-item/modifier-item.module.scss +0 -70
  424. package/mobile/components/modifiers-list/modifiers-list.module.scss +0 -21
  425. package/mobile/components/pseudo-input/index.d.ts +0 -11
  426. package/mobile/components/pseudo-input/index.js +0 -34
  427. package/mobile/components/pseudo-input/pseudo-input.module.scss +0 -24
  428. /package/common/components/badge-list/{badge-list.module.scss → badge-list.m.scss} +0 -0
  429. /package/common/components/{intractive-image → interactive-image}/index.d.ts +0 -0
  430. /package/common/components/media-modal/parts/{all-round-view.module.scss → all-round-view.m.scss} +0 -0
  431. /package/desktop/components/gallery-modal/components/{image-overlay.module.scss → image-overlay.m.scss} +0 -0
  432. /package/desktop/components/promotion-card/{variables.scss → _variables.scss} +0 -0
  433. /package/desktop/components/promotion-card/{banner-title.module.scss → banner-title.m.scss} +0 -0
package/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # UI-moleculas
2
+
3
+ В этом проекте собраны UI-компоненты, привязанные к контексту интернет-магазина.
4
+
5
+ ## Использование
6
+
7
+ ### Установка
8
+
9
+ ```sh
10
+ # с помощью npm
11
+ npm i -S @sima-land/moleculas
12
+
13
+ # или с помощью yarn
14
+ yarn add @sima-land/moleculas
15
+ ```
16
+
17
+ ### Настройка среды
18
+
19
+ Компоненты библиотеки используют:
20
+
21
+ - импорты css/scss-файлов как css-модулей (каждый такой файл промаркирован в виде `*.m.{css,scss}`)
22
+
23
+ Поэтому, для использования библиотеки необходимо сконфигурировать среду (сборщик или тестовый фреймворк) таким образом чтобы данные импорты работали корректно.
@@ -0,0 +1,7 @@
1
+ import type { BadgeProps } from './types';
2
+ /**
3
+ * Шильдик.
4
+ * @param props Свойства.
5
+ * @return Элемент.
6
+ */
7
+ export declare function Badge({ rootRef, className, color, coloring, fields, style, shape, withHoverEffect, 'data-testid': testId, children, ...restProps }: BadgeProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Badge = Badge;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const utils_1 = require("./utils");
9
+ const bind_1 = __importDefault(require("classnames/bind"));
10
+ const badge_m_scss_1 = __importDefault(require("./badge.m.scss"));
11
+ const cx = bind_1.default.bind(badge_m_scss_1.default);
12
+ /**
13
+ * Шильдик.
14
+ * @param props Свойства.
15
+ * @return Элемент.
16
+ */
17
+ function Badge({ rootRef, className, color, coloring = 'outline', fields, style, shape = 'unset', withHoverEffect = true, 'data-testid': testId = 'badge', children, ...restProps }) {
18
+ const iconOnly = fields && fields.length === 1 && fields[0].type === 'svg-url';
19
+ const rootClassName = cx('root', iconOnly && 'icon-only', withHoverEffect && 'with-hover-effect', shape === 'round' && 'shape-round', shape === 'pill' && 'shape-pill', shape !== 'pill' && !iconOnly && 'padding-x-default', shape === 'pill' && !iconOnly && 'padding-x-pill', coloring === 'outline' && 'coloring-outline', coloring === 'fill' && 'coloring-fill', className);
20
+ const rootStyle = {
21
+ '--badge-color': (0, utils_1.tokenToCustomProperty)(color),
22
+ ...style,
23
+ };
24
+ const content = fields ? (0, utils_1.renderFields)(fields) : children;
25
+ if (restProps.as === 'span') {
26
+ return ((0, jsx_runtime_1.jsx)("span", { ref: rootRef, className: rootClassName, style: rootStyle, "data-testid": testId, ...omitPropAs(restProps), children: content }));
27
+ }
28
+ if (restProps.as === 'div') {
29
+ return ((0, jsx_runtime_1.jsx)("div", { ref: rootRef, className: rootClassName, style: rootStyle, "data-testid": testId, ...omitPropAs(restProps), children: content }));
30
+ }
31
+ if (restProps.as === 'button') {
32
+ return ((0, jsx_runtime_1.jsx)("button", { ref: rootRef, className: rootClassName, style: rootStyle, "data-testid": testId, type: 'button', ...omitPropAs(restProps), children: content }));
33
+ }
34
+ return ((0, jsx_runtime_1.jsx)("a", { ref: rootRef, className: rootClassName, style: rootStyle, "data-testid": testId, ...omitPropAs(restProps), children: content }));
35
+ }
36
+ /** @inheritdoc */
37
+ function omitPropAs(props) {
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ const { as, ...omitted } = props;
40
+ return omitted;
41
+ }
42
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/common/components/badge/badge.tsx"],"names":[],"mappings":";;;;;AAYA,sBAyFC;;AApGD,mCAA8D;AAC9D,2DAAyC;AACzC,kEAAoC;AAEpC,MAAM,EAAE,GAAG,cAAU,CAAC,IAAI,CAAC,sBAAM,CAAC,CAAC;AAEnC;;;;GAIG;AACH,SAAgB,KAAK,CAAC,EACpB,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GAAG,SAAS,EACpB,MAAM,EACN,KAAK,EACL,KAAK,GAAG,OAAO,EACf,eAAe,GAAG,IAAI,EACtB,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EACR,GAAG,SAAS,EACD;IACX,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;IAE/E,MAAM,aAAa,GAAG,EAAE,CACtB,MAAM,EACN,QAAQ,IAAI,WAAW,EACvB,eAAe,IAAI,mBAAmB,EACtC,KAAK,KAAK,OAAO,IAAI,aAAa,EAClC,KAAK,KAAK,MAAM,IAAI,YAAY,EAChC,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,IAAI,mBAAmB,EACpD,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,IAAI,gBAAgB,EACjD,QAAQ,KAAK,SAAS,IAAI,kBAAkB,EAC5C,QAAQ,KAAK,MAAM,IAAI,eAAe,EACtC,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAe;QAC5B,eAAe,EAAE,IAAA,6BAAqB,EAAC,KAAK,CAAC;QAC7C,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEzD,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CACL,iCACE,GAAG,EAAE,OAAc,EACnB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,iBACH,MAAM,KACf,UAAU,CAAC,SAAS,CAAC,YAExB,OAAO,GACH,CACR,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,CACL,gCACE,GAAG,EAAE,OAAc,EACnB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,iBACH,MAAM,KACf,UAAU,CAAC,SAAS,CAAC,YAExB,OAAO,GACJ,CACP,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CACL,mCACE,GAAG,EAAE,OAAc,EACnB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,iBACH,MAAM,EACnB,IAAI,EAAC,QAAQ,KACT,UAAU,CAAC,SAAS,CAAC,YAExB,OAAO,GACD,CACV,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACE,GAAG,EAAE,OAAc,EACnB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,iBACH,MAAM,KACf,UAAU,CAAC,SAAS,CAAC,YAExB,OAAO,GACN,CACL,CAAC;AACJ,CAAC;AAED,kBAAkB;AAClB,SAAS,UAAU,CAA6B,KAAQ;IACtD,6DAA6D;IAC7D,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAEjC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,100 @@
1
+ @use 'pkg:@sima-land/ui-nucleons/utils.scss';
2
+
3
+ $badge-size: 20px;
4
+ $icon-size: 16px;
5
+
6
+ .root {
7
+ @include utils.reset-button;
8
+ }
9
+
10
+ .root {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ height: $badge-size;
15
+ font-weight: bold;
16
+ font-size: 12px;
17
+ line-height: 16px;
18
+ max-width: 100%;
19
+ min-width: $badge-size;
20
+ text-decoration: none;
21
+ }
22
+
23
+ .padding-x-default {
24
+ padding-left: 6px;
25
+ padding-right: 6px;
26
+ &.coloring-outline {
27
+ // ВАЖНО: учитываем border
28
+ padding-left: 5px;
29
+ padding-right: 5px;
30
+ }
31
+ }
32
+
33
+ .padding-x-pill {
34
+ padding-left: 8px;
35
+ padding-right: 8px;
36
+ &.coloring-outline {
37
+ // ВАЖНО: учитываем border
38
+ padding-left: 7px;
39
+ padding-right: 7px;
40
+ }
41
+ }
42
+
43
+ .shape-round {
44
+ border-radius: 4px;
45
+ }
46
+
47
+ .shape-pill {
48
+ border-radius: 99999px;
49
+ }
50
+
51
+ .with-hover-effect:hover {
52
+ position: relative;
53
+ cursor: pointer;
54
+ &::after {
55
+ content: '';
56
+ display: block;
57
+ position: absolute;
58
+ top: 0;
59
+ left: 0;
60
+ right: 0;
61
+ bottom: 0;
62
+ background: #fff;
63
+ opacity: 0.16;
64
+ }
65
+ }
66
+
67
+ .coloring-outline {
68
+ color: var(--badge-color, #aaa);
69
+
70
+ // ВАЖНО: используем border т.к. на Safari box-shadow пропадает при уменьшении масштаба
71
+ border: 1px solid var(--badge-border-color, var(--badge-color, #aaa));
72
+ }
73
+
74
+ .coloring-fill {
75
+ background: var(--badge-color, #aaa);
76
+ color: var(--badge-text-color, #fff);
77
+ }
78
+
79
+ .icon-only {
80
+ width: $badge-size;
81
+ }
82
+
83
+ // содержимое
84
+ .content {
85
+ overflow: hidden;
86
+ text-overflow: ellipsis;
87
+ white-space: nowrap;
88
+ }
89
+
90
+ .icon {
91
+ display: block;
92
+ width: $icon-size;
93
+ height: $icon-size;
94
+ line-height: $icon-size;
95
+ }
96
+
97
+ .icon + .content,
98
+ .content + .icon {
99
+ margin-left: 4px;
100
+ }
@@ -1,19 +1,2 @@
1
- import React from 'react';
2
- export interface BadgeField {
3
- type: 'text' | 'timer' | 'svg-url';
4
- value: string;
5
- }
6
- export interface BadgeProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'> {
7
- /** Основной цвет, используется как цвет обводки, иконок и текста. */
8
- color?: string;
9
- /** Содержимое шильдика. */
10
- fields: Array<BadgeField>;
11
- /** Идентификатор для систем автоматизированного тестирования. */
12
- 'data-testid'?: string;
13
- }
14
- /**
15
- * Шильдик.
16
- * @param props Свойства.
17
- * @return Элемент.
18
- */
19
- export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLAnchorElement>>;
1
+ export type { BadgeSpecificProps, BadgeAsAnchorProps, BadgeAsButtonProps, BadgeAsSpanProps, BadgeAsDivProps, BadgeProps, BadgeField, } from './types';
2
+ export { Badge } from './badge';
@@ -1,83 +1,6 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __rest = (this && this.__rest) || function (s, e) {
26
- var t = {};
27
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
- t[p] = s[p];
29
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
- t[p[i]] = s[p[i]];
33
- }
34
- return t;
35
- };
36
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
2
  Object.defineProperty(exports, "__esModule", { value: true });
40
3
  exports.Badge = void 0;
41
- const react_1 = __importStar(require("react"));
42
- const timer_1 = require("@sima-land/ui-nucleons/timer");
43
- const bind_1 = __importDefault(require("classnames/bind"));
44
- const badge_module_scss_1 = __importDefault(require("./badge.module.scss"));
45
- const cx = bind_1.default.bind(badge_module_scss_1.default);
46
- /**
47
- * Шильдик.
48
- * @param props Свойства.
49
- * @return Элемент.
50
- */
51
- exports.Badge = (0, react_1.forwardRef)(function Badge(_a, ref) {
52
- var { className, color, fields, href, style, 'data-testid': testId = 'badge' } = _a, restProps = __rest(_a, ["className", "color", "fields", "href", "style", 'data-testid']);
53
- const iconOnly = fields.length === 1 && fields[0].type === 'svg-url';
54
- return (react_1.default.createElement("a", Object.assign({ ref: ref }, restProps, { "data-testid": testId, href: href, style: Object.assign(Object.assign({}, style), { '--badge-color': color }), className: cx('root', iconOnly && 'icon-only', href && 'interactive', className), children: iconOnly ? (react_1.default.createElement("img", { className: cx('icon'), src: fields[0].value, alt: '' })) : (
55
- // вложенный span нужен для того чтобы объединить `display: inline-flex` и `text-overflow: ellipsis`
56
- react_1.default.createElement("span", { className: cx('content') }, fields.reduce((acc, item, i) => {
57
- let result = null;
58
- // на данный момент сочетание иконки с другими элементами не предусмотрено макетами - игнорируем
59
- switch (item.type) {
60
- case 'text':
61
- result = item.value;
62
- break;
63
- case 'timer':
64
- result = (react_1.default.createElement(timer_1.Timer, { key: i, date: item.value, timeout: 1000 * 60, format: formatDistance }));
65
- break;
66
- }
67
- acc.push(result);
68
- i < fields.length - 1 && acc.push(' ');
69
- return acc;
70
- }, []))) })));
71
- });
72
- /**
73
- * Форматирует оставшееся время.
74
- * @param distance Оставшееся время.
75
- * @return Отформатированное время.
76
- */
77
- const formatDistance = ({ days, hours, minutes, }) => [toTimePart(days), ...[hours % 24, minutes % 60].map(toTimePart)].join(':');
78
- /**
79
- * Форматирует число добавляя нули при необходимости.
80
- * @param n Число.
81
- * @return Отформатированное число.
82
- */
83
- const toTimePart = (n) => `${n}`.padStart(2, '0');
4
+ var badge_1 = require("./badge");
5
+ Object.defineProperty(exports, "Badge", { enumerable: true, get: function () { return badge_1.Badge; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/components/badge/index.ts"],"names":[],"mappings":";;;AASA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
@@ -0,0 +1,40 @@
1
+ import type { AnchorHTMLAttributes, ButtonHTMLAttributes, CSSProperties, HTMLAttributes, Ref } from 'react';
2
+ export interface BadgeField {
3
+ type: 'text' | 'timer' | 'svg-url';
4
+ value: string;
5
+ }
6
+ export interface BadgeStyle extends CSSProperties {
7
+ '--badge-color'?: string;
8
+ '--badge-text-color'?: string;
9
+ '--badge-border-color'?: string;
10
+ }
11
+ export interface BadgeSpecificProps {
12
+ /** Основной цвет, используется как цвет обводки, иконок и текста. */
13
+ color?: string;
14
+ /** Как применится цвет. */
15
+ coloring?: 'fill' | 'outline' | 'unset';
16
+ /** Содержимое шильдика. */
17
+ fields?: Array<BadgeField>;
18
+ /** Форма скруглений. */
19
+ shape?: 'round' | 'pill' | 'unset';
20
+ /** Нужен ли эффект при наведении. */
21
+ withHoverEffect?: boolean;
22
+ /** Стили. */
23
+ style?: BadgeStyle;
24
+ /** Идентификатор для систем автоматизированного тестирования. */
25
+ 'data-testid'?: string;
26
+ rootRef?: Ref<HTMLElement>;
27
+ }
28
+ export interface BadgeAsAnchorProps extends BadgeSpecificProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'color' | 'style'> {
29
+ as?: 'anchor';
30
+ }
31
+ export interface BadgeAsButtonProps extends BadgeSpecificProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'style'> {
32
+ as: 'button';
33
+ }
34
+ export interface BadgeAsDivProps extends BadgeSpecificProps, Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'style'> {
35
+ as: 'div';
36
+ }
37
+ export interface BadgeAsSpanProps extends BadgeSpecificProps, Omit<HTMLAttributes<HTMLSpanElement>, 'color' | 'style'> {
38
+ as: 'span';
39
+ }
40
+ export type BadgeProps = BadgeAsAnchorProps | BadgeAsButtonProps | BadgeAsDivProps | BadgeAsSpanProps;
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/common/components/badge/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { BadgeField } from './types';
3
+ /**
4
+ * Если переданное значение является токеном цвета/градиента, вернёт CSS-значение с соответствующей CSS-переменной.
5
+ * Иначе вернет само значение.
6
+ * @param value Значение.
7
+ * @return Значение или undefined.
8
+ */
9
+ export declare function tokenToCustomProperty(value: string | undefined): string | undefined;
10
+ /**
11
+ * Сформирует содержимое шильдика на основе списка полей.
12
+ * Текстовые поля (type === text | timer) идущие подряд, будут объединены в один span.
13
+ * Между текстовыми полями в span будет вставлен 1 пробел.
14
+ * @param fields Поля.
15
+ * @return СОдержимое шильдика.
16
+ */
17
+ export declare function renderFields(fields: BadgeField[]): ReactNode[];
18
+ /**
19
+ * Форматирует оставшееся время.
20
+ * @param distance Оставшееся время.
21
+ * @return Отформатированное время.
22
+ */
23
+ export declare function formatDistance({ days, hours, minutes, }: {
24
+ days: number;
25
+ hours: number;
26
+ minutes: number;
27
+ }): string;
28
+ /**
29
+ * Форматирует число добавляя нули при необходимости.
30
+ * @param n Число.
31
+ * @return Отформатированное число.
32
+ */
33
+ export declare function toTimePart(n: number): string;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tokenToCustomProperty = tokenToCustomProperty;
7
+ exports.renderFields = renderFields;
8
+ exports.formatDistance = formatDistance;
9
+ exports.toTimePart = toTimePart;
10
+ const jsx_runtime_1 = require("react/jsx-runtime");
11
+ const colors_1 = require("@sima-land/ui-nucleons/colors");
12
+ const gradients_1 = require("@sima-land/ui-nucleons/gradients");
13
+ const timer_1 = require("@sima-land/ui-nucleons/timer");
14
+ const badge_m_scss_1 = __importDefault(require("./badge.m.scss"));
15
+ /**
16
+ * Если переданное значение является токеном цвета/градиента, вернёт CSS-значение с соответствующей CSS-переменной.
17
+ * Иначе вернет само значение.
18
+ * @param value Значение.
19
+ * @return Значение или undefined.
20
+ */
21
+ function tokenToCustomProperty(value) {
22
+ if (typeof value !== 'string') {
23
+ return value;
24
+ }
25
+ if (value.startsWith('color/')) {
26
+ const colorName = value.replace('color/', '');
27
+ if (!colors_1.COLORS.has(colorName)) {
28
+ return value;
29
+ }
30
+ return `var(--color-${colorName})`;
31
+ }
32
+ if (value.startsWith('gradient/')) {
33
+ const gradientName = value.replace('gradient/', '');
34
+ if (!gradients_1.GRADIENTS.has(gradientName)) {
35
+ return value;
36
+ }
37
+ return `var(--gradient-${gradientName})`;
38
+ }
39
+ return value;
40
+ }
41
+ /**
42
+ * Сформирует содержимое шильдика на основе списка полей.
43
+ * Текстовые поля (type === text | timer) идущие подряд, будут объединены в один span.
44
+ * Между текстовыми полями в span будет вставлен 1 пробел.
45
+ * @param fields Поля.
46
+ * @return СОдержимое шильдика.
47
+ */
48
+ function renderFields(fields) {
49
+ const result = [];
50
+ let item = null;
51
+ for (const field of fields) {
52
+ if (!item) {
53
+ switch (field.type) {
54
+ case 'text': {
55
+ item = [field.value];
56
+ break;
57
+ }
58
+ case 'timer': {
59
+ item = [(0, jsx_runtime_1.jsx)(timer_1.Timer, { date: field.value, timeout: 1000 * 60, format: formatDistance }, 0)];
60
+ break;
61
+ }
62
+ case 'svg-url': {
63
+ result.push((0, jsx_runtime_1.jsx)("img", { className: badge_m_scss_1.default.icon, src: field.value, alt: '' }, result.length));
64
+ break;
65
+ }
66
+ }
67
+ }
68
+ else {
69
+ switch (field.type) {
70
+ case 'text': {
71
+ item.push(' ');
72
+ item.push(field.value);
73
+ break;
74
+ }
75
+ case 'timer': {
76
+ item.push(' ');
77
+ item.push((0, jsx_runtime_1.jsx)(timer_1.Timer, { date: field.value, timeout: 1000 * 60, format: formatDistance }, item.length));
78
+ break;
79
+ }
80
+ case 'svg-url': {
81
+ // вложенный span нужен для того чтобы объединить `display: inline-flex` и `text-overflow: ellipsis`
82
+ result.push((0, jsx_runtime_1.jsx)("span", { className: badge_m_scss_1.default.content, children: item }, result.length));
83
+ item = null;
84
+ result.push((0, jsx_runtime_1.jsx)("img", { className: badge_m_scss_1.default.icon, src: field.value, alt: '' }, result.length));
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ if (item) {
91
+ result.push((0, jsx_runtime_1.jsx)("span", { className: badge_m_scss_1.default.content, children: item }, result.length));
92
+ item = null;
93
+ }
94
+ return result;
95
+ }
96
+ /**
97
+ * Форматирует оставшееся время.
98
+ * @param distance Оставшееся время.
99
+ * @return Отформатированное время.
100
+ */
101
+ function formatDistance({ days, hours, minutes, }) {
102
+ return `${toTimePart(days)}:${toTimePart(hours % 24)}:${toTimePart(minutes % 60)}`;
103
+ }
104
+ /**
105
+ * Форматирует число добавляя нули при необходимости.
106
+ * @param n Число.
107
+ * @return Отформатированное число.
108
+ */
109
+ function toTimePart(n) {
110
+ return `${n}`.padStart(2, '0');
111
+ }
112
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/common/components/badge/utils.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ReactNode, CSSProperties } from 'react';
2
+ export interface BadgeListProps {
3
+ /** Список данных для шильдиков. */
4
+ children?: ReactNode;
5
+ /** CSS-класс корневого элемента. */
6
+ className?: string;
7
+ /** Стили корневого элемента. */
8
+ style?: CSSProperties;
9
+ /** Лимит количества строк, не влезающие шильдики будут скрыты. */
10
+ lineLimit?: number;
11
+ }
12
+ /**
13
+ * Компонент списка шильдиков. Формирует отступы между шильдиками и переносы по дизайн-найдам.
14
+ * @param props Свойства компонента.
15
+ * @return Элемент.
16
+ */
17
+ export declare const BadgeList: {
18
+ ({ children, className, lineLimit, style }: BadgeListProps): import("react/jsx-runtime").JSX.Element;
19
+ Slot: typeof BadgeListSlot;
20
+ };
21
+ /**
22
+ * Слот для вывода Badge с произвольной оберткой.
23
+ * @param props Свойства.
24
+ * @return Элемент.
25
+ */
26
+ declare function BadgeListSlot({ children }: {
27
+ children?: ReactNode;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BadgeList = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const badge_1 = require("../badge");
10
+ const bind_1 = __importDefault(require("classnames/bind"));
11
+ const badge_list_m_scss_1 = __importDefault(require("./badge-list.m.scss"));
12
+ const cx = bind_1.default.bind(badge_list_m_scss_1.default);
13
+ /**
14
+ * Компонент списка шильдиков. Формирует отступы между шильдиками и переносы по дизайн-найдам.
15
+ * @param props Свойства компонента.
16
+ * @return Элемент.
17
+ */
18
+ const BadgeList = ({ children, className, lineLimit, style }) => ((0, jsx_runtime_1.jsx)("div", { className: cx('root', className, lineLimit && 'line-limit'), style: lineLimit ? { ...style, '--line-limit': lineLimit } : style, children: react_1.Children.toArray(children).map((child, index) => {
19
+ switch (true) {
20
+ case (0, react_1.isValidElement)(child) && child.type === badge_1.Badge:
21
+ return (0, jsx_runtime_1.jsx)(BadgeListSlot, { children: child }, index);
22
+ case (0, react_1.isValidElement)(child) && child.type === BadgeListSlot:
23
+ return child;
24
+ default:
25
+ return null;
26
+ }
27
+ }) }));
28
+ exports.BadgeList = BadgeList;
29
+ /**
30
+ * Слот для вывода Badge с произвольной оберткой.
31
+ * @param props Свойства.
32
+ * @return Элемент.
33
+ */
34
+ function BadgeListSlot({ children }) {
35
+ return (0, jsx_runtime_1.jsx)("div", { className: cx('item'), children: children });
36
+ }
37
+ exports.BadgeList.Slot = BadgeListSlot;
38
+ //# sourceMappingURL=badge-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge-list.js","sourceRoot":"","sources":["../../../../src/common/components/badge-list/badge-list.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAA2E;AAC3E,oCAAiC;AACjC,2DAAyC;AACzC,4EAAyC;AAgBzC,MAAM,EAAE,GAAG,cAAU,CAAC,IAAI,CAAC,2BAAM,CAAC,CAAC;AAEnC;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAkB,EAAE,EAAE,CAAC,CACtF,gCACE,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,YAAY,CAAC,EAC3D,KAAK,EAAE,SAAS,CAAC,CAAC,CAAE,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,SAAS,EAAoB,CAAC,CAAC,CAAC,KAAK,YAEpF,gBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAK;gBAChD,OAAO,uBAAC,aAAa,cAAc,KAAK,IAAb,KAAK,CAAyB,CAAC;YAC5D,KAAK,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;gBACxD,OAAO,KAAK,CAAC;YACf;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,GACE,CACP,CAAC;AAhBW,QAAA,SAAS,aAgBpB;AAEF;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAE,QAAQ,EAA4B;IAC3D,OAAO,gCAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,YAAG,QAAQ,GAAO,CAAC;AACtD,CAAC;AAED,iBAAS,CAAC,IAAI,GAAG,aAAa,CAAC"}
@@ -1,29 +1 @@
1
- import React, { ReactNode } from 'react';
2
- export interface BadgeListProps {
3
- /** Список данных для шильдиков. */
4
- children?: React.ReactNode;
5
- /** CSS-класс корневого элемента. */
6
- className?: string;
7
- /** Стили корневого элемента. */
8
- style?: React.CSSProperties;
9
- /** Лимит количества строк, не влезающие шильдики будут скрыты. */
10
- lineLimit?: number;
11
- }
12
- /**
13
- * Компонент списка шильдиков. Формирует отступы между шильдиками и переносы по дизайн-найдам.
14
- * @param props Свойства компонента.
15
- * @return Элемент.
16
- */
17
- export declare const BadgeList: {
18
- ({ children, className, lineLimit, style }: BadgeListProps): JSX.Element;
19
- Slot: typeof BadgeListSlot;
20
- };
21
- /**
22
- * Слот для вывода Badge с произвольной оберткой.
23
- * @param props Свойства.
24
- * @return Элемент.
25
- */
26
- declare function BadgeListSlot({ children }: {
27
- children?: ReactNode;
28
- }): JSX.Element;
29
- export {};
1
+ export { type BadgeListProps, BadgeList } from './badge-list';