@540deg/ds 0.0.0-stage → 0.1.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 (350) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +13 -0
  3. package/README.md +207 -2
  4. package/dist/assets/samples/captura.js +4 -0
  5. package/dist/assets/samples/charla-david.js +4 -0
  6. package/dist/assets/samples/charla-escultura.js +4 -0
  7. package/dist/assets/samples/charla-fachada.js +4 -0
  8. package/dist/assets/samples/charla-pintura.js +4 -0
  9. package/dist/assets/samples/charla-placa.js +4 -0
  10. package/dist/assets/samples/charla-teclado.js +4 -0
  11. package/dist/assets/samples/logo-540-claro.js +4 -0
  12. package/dist/assets/samples/logo-540-portada-claro.js +4 -0
  13. package/dist/assets/samples/logo-540-portada-oscuro.js +4 -0
  14. package/dist/assets/samples/logos/cliente-1.js +4 -0
  15. package/dist/assets/samples/logos/cliente-2.js +4 -0
  16. package/dist/assets/samples/logos/cliente-3.js +4 -0
  17. package/dist/assets/samples/logos/cliente-4.js +4 -0
  18. package/dist/assets/samples/logos/cliente-5.js +4 -0
  19. package/dist/assets/samples/logos/cliente-6.js +4 -0
  20. package/dist/assets/samples/logos/cliente-7.js +4 -0
  21. package/dist/assets/samples/logos/cliente-8.js +4 -0
  22. package/dist/assets/samples/logos/cliente-9.js +4 -0
  23. package/dist/assets/samples/retrato.js +4 -0
  24. package/dist/components/atoms/Bullets/Bullets.d.ts +6 -0
  25. package/dist/components/atoms/Bullets/Bullets.js +34 -0
  26. package/dist/components/atoms/Bullets/Bullets.module.js +13 -0
  27. package/dist/components/atoms/Bullets/index.d.ts +3 -0
  28. package/dist/components/atoms/Bullets/types.d.ts +23 -0
  29. package/dist/components/atoms/Bullets/types.js +9 -0
  30. package/dist/components/atoms/Button/Button.d.ts +6 -0
  31. package/dist/components/atoms/Button/Button.js +46 -0
  32. package/dist/components/atoms/Button/Button.module.js +24 -0
  33. package/dist/components/atoms/Button/index.d.ts +3 -0
  34. package/dist/components/atoms/Button/types.d.ts +38 -0
  35. package/dist/components/atoms/Button/types.js +14 -0
  36. package/dist/components/atoms/Count/Count.d.ts +6 -0
  37. package/dist/components/atoms/Count/Count.js +51 -0
  38. package/dist/components/atoms/Count/Count.module.js +9 -0
  39. package/dist/components/atoms/Count/index.d.ts +3 -0
  40. package/dist/components/atoms/Count/types.d.ts +17 -0
  41. package/dist/components/atoms/Count/types.js +8 -0
  42. package/dist/components/atoms/Image/Image.d.ts +6 -0
  43. package/dist/components/atoms/Image/Image.js +30 -0
  44. package/dist/components/atoms/Image/Image.module.js +11 -0
  45. package/dist/components/atoms/Image/index.d.ts +3 -0
  46. package/dist/components/atoms/Image/types.d.ts +16 -0
  47. package/dist/components/atoms/Image/types.js +13 -0
  48. package/dist/components/atoms/Logo/Logo.d.ts +6 -0
  49. package/dist/components/atoms/Logo/Logo.js +32 -0
  50. package/dist/components/atoms/Logo/Logo.module.js +10 -0
  51. package/dist/components/atoms/Logo/index.d.ts +3 -0
  52. package/dist/components/atoms/Logo/paths.d.ts +2 -0
  53. package/dist/components/atoms/Logo/paths.js +11 -0
  54. package/dist/components/atoms/Logo/types.d.ts +14 -0
  55. package/dist/components/atoms/Logo/types.js +12 -0
  56. package/dist/components/atoms/MenuItem/MenuItem.d.ts +6 -0
  57. package/dist/components/atoms/MenuItem/MenuItem.js +28 -0
  58. package/dist/components/atoms/MenuItem/MenuItem.module.js +19 -0
  59. package/dist/components/atoms/MenuItem/index.d.ts +3 -0
  60. package/dist/components/atoms/MenuItem/types.d.ts +18 -0
  61. package/dist/components/atoms/MenuItem/types.js +8 -0
  62. package/dist/components/atoms/SocialIcon/SocialIcon.d.ts +6 -0
  63. package/dist/components/atoms/SocialIcon/SocialIcon.js +26 -0
  64. package/dist/components/atoms/SocialIcon/SocialIcon.module.js +9 -0
  65. package/dist/components/atoms/SocialIcon/index.d.ts +3 -0
  66. package/dist/components/atoms/SocialIcon/paths.d.ts +7 -0
  67. package/dist/components/atoms/SocialIcon/paths.js +10 -0
  68. package/dist/components/atoms/SocialIcon/types.d.ts +15 -0
  69. package/dist/components/atoms/SocialIcon/types.js +11 -0
  70. package/dist/components/atoms/Text/Text.d.ts +6 -0
  71. package/dist/components/atoms/Text/Text.js +28 -0
  72. package/dist/components/atoms/Text/Text.module.js +32 -0
  73. package/dist/components/atoms/Text/index.d.ts +3 -0
  74. package/dist/components/atoms/Text/types.d.ts +39 -0
  75. package/dist/components/atoms/Text/types.js +54 -0
  76. package/dist/components/atoms/ThemeToggle/ThemeToggle.d.ts +6 -0
  77. package/dist/components/atoms/ThemeToggle/ThemeToggle.js +30 -0
  78. package/dist/components/atoms/ThemeToggle/ThemeToggle.module.js +17 -0
  79. package/dist/components/atoms/ThemeToggle/index.d.ts +3 -0
  80. package/dist/components/atoms/ThemeToggle/types.d.ts +13 -0
  81. package/dist/components/atoms/ThemeToggle/types.js +4 -0
  82. package/dist/components/molecules/Card/Card.d.ts +6 -0
  83. package/dist/components/molecules/Card/Card.js +82 -0
  84. package/dist/components/molecules/Card/Card.module.js +33 -0
  85. package/dist/components/molecules/Card/index.d.ts +3 -0
  86. package/dist/components/molecules/Card/types.d.ts +48 -0
  87. package/dist/components/molecules/Card/types.js +17 -0
  88. package/dist/components/molecules/Carousel/Carousel.d.ts +5 -0
  89. package/dist/components/molecules/Carousel/Carousel.js +148 -0
  90. package/dist/components/molecules/Carousel/Carousel.module.js +29 -0
  91. package/dist/components/molecules/Carousel/index.d.ts +3 -0
  92. package/dist/components/molecules/Carousel/types.d.ts +24 -0
  93. package/dist/components/molecules/Carousel/types.js +12 -0
  94. package/dist/components/molecules/CaseItem/CaseItem.d.ts +6 -0
  95. package/dist/components/molecules/CaseItem/CaseItem.js +54 -0
  96. package/dist/components/molecules/CaseItem/CaseItem.module.js +19 -0
  97. package/dist/components/molecules/CaseItem/index.d.ts +3 -0
  98. package/dist/components/molecules/CaseItem/types.d.ts +20 -0
  99. package/dist/components/molecules/CaseItem/types.js +7 -0
  100. package/dist/components/molecules/Dialog/Dialog.d.ts +6 -0
  101. package/dist/components/molecules/Dialog/Dialog.js +81 -0
  102. package/dist/components/molecules/Dialog/Dialog.module.js +19 -0
  103. package/dist/components/molecules/Dialog/index.d.ts +2 -0
  104. package/dist/components/molecules/Dialog/types.d.ts +22 -0
  105. package/dist/components/molecules/Field/Field.d.ts +6 -0
  106. package/dist/components/molecules/Field/Field.js +47 -0
  107. package/dist/components/molecules/Field/Field.module.js +15 -0
  108. package/dist/components/molecules/Field/index.d.ts +3 -0
  109. package/dist/components/molecules/Field/types.d.ts +24 -0
  110. package/dist/components/molecules/Field/types.js +5 -0
  111. package/dist/components/molecules/Footer/Footer.d.ts +6 -0
  112. package/dist/components/molecules/Footer/Footer.js +102 -0
  113. package/dist/components/molecules/Footer/Footer.module.js +33 -0
  114. package/dist/components/molecules/Footer/index.d.ts +3 -0
  115. package/dist/components/molecules/Footer/types.d.ts +46 -0
  116. package/dist/components/molecules/Footer/types.js +8 -0
  117. package/dist/components/molecules/Grid/Grid.d.ts +5 -0
  118. package/dist/components/molecules/Grid/Grid.js +32 -0
  119. package/dist/components/molecules/Grid/Grid.module.js +29 -0
  120. package/dist/components/molecules/Grid/index.d.ts +3 -0
  121. package/dist/components/molecules/Grid/types.d.ts +28 -0
  122. package/dist/components/molecules/Grid/types.js +14 -0
  123. package/dist/components/molecules/Lists/Lists.d.ts +7 -0
  124. package/dist/components/molecules/Lists/Lists.js +54 -0
  125. package/dist/components/molecules/Lists/Lists.module.js +15 -0
  126. package/dist/components/molecules/Lists/index.d.ts +2 -0
  127. package/dist/components/molecules/Lists/types.d.ts +22 -0
  128. package/dist/components/molecules/Menu/Menu.d.ts +6 -0
  129. package/dist/components/molecules/Menu/Menu.js +43 -0
  130. package/dist/components/molecules/Menu/Menu.module.js +13 -0
  131. package/dist/components/molecules/Menu/index.d.ts +3 -0
  132. package/dist/components/molecules/Menu/types.d.ts +27 -0
  133. package/dist/components/molecules/Menu/types.js +8 -0
  134. package/dist/components/molecules/Metric/Metric.d.ts +5 -0
  135. package/dist/components/molecules/Metric/Metric.js +40 -0
  136. package/dist/components/molecules/Metric/Metric.module.js +11 -0
  137. package/dist/components/molecules/Metric/index.d.ts +2 -0
  138. package/dist/components/molecules/Metric/types.d.ts +15 -0
  139. package/dist/components/molecules/NavMobile/NavMobile.d.ts +6 -0
  140. package/dist/components/molecules/NavMobile/NavMobile.js +95 -0
  141. package/dist/components/molecules/NavMobile/NavMobile.module.js +17 -0
  142. package/dist/components/molecules/NavMobile/index.d.ts +3 -0
  143. package/dist/components/molecules/NavMobile/types.d.ts +20 -0
  144. package/dist/components/molecules/NavMobile/types.js +8 -0
  145. package/dist/components/molecules/Question/Question.d.ts +3 -0
  146. package/dist/components/molecules/Question/Question.js +22 -0
  147. package/dist/components/molecules/Question/Question.module.js +5 -0
  148. package/dist/components/molecules/Question/index.d.ts +2 -0
  149. package/dist/components/molecules/Question/types.d.ts +8 -0
  150. package/dist/components/molecules/Screenshot/Screenshot.d.ts +3 -0
  151. package/dist/components/molecules/Screenshot/Screenshot.js +17 -0
  152. package/dist/components/molecules/Screenshot/Screenshot.module.js +5 -0
  153. package/dist/components/molecules/Screenshot/index.d.ts +2 -0
  154. package/dist/components/molecules/Screenshot/types.d.ts +12 -0
  155. package/dist/components/molecules/Section/Section.d.ts +6 -0
  156. package/dist/components/molecules/Section/Section.js +25 -0
  157. package/dist/components/molecules/Section/Section.module.js +11 -0
  158. package/dist/components/molecules/Section/index.d.ts +3 -0
  159. package/dist/components/molecules/Section/types.d.ts +13 -0
  160. package/dist/components/molecules/Section/types.js +5 -0
  161. package/dist/components/molecules/SectionHeader/SectionHeader.d.ts +6 -0
  162. package/dist/components/molecules/SectionHeader/SectionHeader.js +34 -0
  163. package/dist/components/molecules/SectionHeader/SectionHeader.module.js +9 -0
  164. package/dist/components/molecules/SectionHeader/index.d.ts +3 -0
  165. package/dist/components/molecules/SectionHeader/types.d.ts +22 -0
  166. package/dist/components/molecules/SectionHeader/types.js +14 -0
  167. package/dist/components/molecules/Stack/Stack.d.ts +6 -0
  168. package/dist/components/molecules/Stack/Stack.js +22 -0
  169. package/dist/components/molecules/Stack/Stack.module.js +12 -0
  170. package/dist/components/molecules/Stack/index.d.ts +3 -0
  171. package/dist/components/molecules/Stack/types.d.ts +18 -0
  172. package/dist/components/molecules/Stack/types.js +17 -0
  173. package/dist/components/molecules/TeamMember/TeamMember.d.ts +6 -0
  174. package/dist/components/molecules/TeamMember/TeamMember.js +55 -0
  175. package/dist/components/molecules/TeamMember/TeamMember.module.js +13 -0
  176. package/dist/components/molecules/TeamMember/index.d.ts +3 -0
  177. package/dist/components/molecules/TeamMember/types.d.ts +24 -0
  178. package/dist/components/molecules/TeamMember/types.js +8 -0
  179. package/dist/components/organisms/Bars/Bars.d.ts +6 -0
  180. package/dist/components/organisms/Bars/Bars.js +94 -0
  181. package/dist/components/organisms/Bars/Bars.module.js +26 -0
  182. package/dist/components/organisms/Bars/index.d.ts +3 -0
  183. package/dist/components/organisms/Bars/types.d.ts +43 -0
  184. package/dist/components/organisms/Bars/types.js +12 -0
  185. package/dist/components/organisms/Blobs/Blobs.d.ts +3 -0
  186. package/dist/components/organisms/Blobs/Blobs.js +14 -0
  187. package/dist/components/organisms/Blobs/Blobs.module.js +15 -0
  188. package/dist/components/organisms/Blobs/index.d.ts +2 -0
  189. package/dist/components/organisms/Blobs/types.d.ts +3 -0
  190. package/dist/components/organisms/BlockTitle/BlockTitle.d.ts +6 -0
  191. package/dist/components/organisms/BlockTitle/BlockTitle.js +46 -0
  192. package/dist/components/organisms/BlockTitle/BlockTitle.module.js +15 -0
  193. package/dist/components/organisms/BlockTitle/index.d.ts +2 -0
  194. package/dist/components/organisms/BlockTitle/types.d.ts +18 -0
  195. package/dist/components/organisms/CardList/CardList.d.ts +6 -0
  196. package/dist/components/organisms/CardList/CardList.js +15 -0
  197. package/dist/components/organisms/CardList/CardList.module.js +5 -0
  198. package/dist/components/organisms/CardList/index.d.ts +2 -0
  199. package/dist/components/organisms/CardList/types.d.ts +6 -0
  200. package/dist/components/organisms/Closing/Closing.d.ts +6 -0
  201. package/dist/components/organisms/Closing/Closing.js +42 -0
  202. package/dist/components/organisms/Closing/Closing.module.js +9 -0
  203. package/dist/components/organisms/Closing/index.d.ts +3 -0
  204. package/dist/components/organisms/Closing/types.d.ts +15 -0
  205. package/dist/components/organisms/Closing/types.js +4 -0
  206. package/dist/components/organisms/Cover/Cover.d.ts +6 -0
  207. package/dist/components/organisms/Cover/Cover.js +85 -0
  208. package/dist/components/organisms/Cover/Cover.module.js +21 -0
  209. package/dist/components/organisms/Cover/index.d.ts +3 -0
  210. package/dist/components/organisms/Cover/types.d.ts +33 -0
  211. package/dist/components/organisms/Cover/types.js +4 -0
  212. package/dist/components/organisms/Cycle/Cycle.d.ts +6 -0
  213. package/dist/components/organisms/Cycle/Cycle.js +79 -0
  214. package/dist/components/organisms/Cycle/Cycle.module.js +17 -0
  215. package/dist/components/organisms/Cycle/index.d.ts +3 -0
  216. package/dist/components/organisms/Cycle/types.d.ts +18 -0
  217. package/dist/components/organisms/Cycle/types.js +9 -0
  218. package/dist/components/organisms/Deck/Deck.d.ts +6 -0
  219. package/dist/components/organisms/Deck/Deck.js +159 -0
  220. package/dist/components/organisms/Deck/Deck.module.js +19 -0
  221. package/dist/components/organisms/Deck/index.d.ts +4 -0
  222. package/dist/components/organisms/Deck/types.d.ts +37 -0
  223. package/dist/components/organisms/Deck/types.js +13 -0
  224. package/dist/components/organisms/Deck/useDeckNavigation.d.ts +15 -0
  225. package/dist/components/organisms/Deck/useDeckNavigation.js +218 -0
  226. package/dist/components/organisms/DeckFooter/DeckFooter.d.ts +6 -0
  227. package/dist/components/organisms/DeckFooter/DeckFooter.js +75 -0
  228. package/dist/components/organisms/DeckFooter/DeckFooter.module.js +25 -0
  229. package/dist/components/organisms/DeckFooter/index.d.ts +3 -0
  230. package/dist/components/organisms/DeckFooter/types.d.ts +22 -0
  231. package/dist/components/organisms/DeckFooter/types.js +8 -0
  232. package/dist/components/organisms/Flow/Flow.d.ts +6 -0
  233. package/dist/components/organisms/Flow/Flow.js +26 -0
  234. package/dist/components/organisms/Flow/Flow.module.js +13 -0
  235. package/dist/components/organisms/Flow/index.d.ts +3 -0
  236. package/dist/components/organisms/Flow/types.d.ts +17 -0
  237. package/dist/components/organisms/Flow/types.js +4 -0
  238. package/dist/components/organisms/Form/Form.d.ts +6 -0
  239. package/dist/components/organisms/Form/Form.js +28 -0
  240. package/dist/components/organisms/Form/Form.module.js +13 -0
  241. package/dist/components/organisms/Form/index.d.ts +3 -0
  242. package/dist/components/organisms/Form/types.d.ts +16 -0
  243. package/dist/components/organisms/Form/types.js +8 -0
  244. package/dist/components/organisms/Heartbeat/Heartbeat.d.ts +3 -0
  245. package/dist/components/organisms/Heartbeat/Heartbeat.js +17 -0
  246. package/dist/components/organisms/Heartbeat/Heartbeat.module.js +13 -0
  247. package/dist/components/organisms/Heartbeat/index.d.ts +2 -0
  248. package/dist/components/organisms/Heartbeat/types.d.ts +3 -0
  249. package/dist/components/organisms/LogoCarousel/LogoCarousel.d.ts +6 -0
  250. package/dist/components/organisms/LogoCarousel/LogoCarousel.js +72 -0
  251. package/dist/components/organisms/LogoCarousel/LogoCarousel.module.js +13 -0
  252. package/dist/components/organisms/LogoCarousel/index.d.ts +3 -0
  253. package/dist/components/organisms/LogoCarousel/types.d.ts +18 -0
  254. package/dist/components/organisms/LogoCarousel/types.js +4 -0
  255. package/dist/components/organisms/Marquee/Marquee.d.ts +7 -0
  256. package/dist/components/organisms/Marquee/Marquee.js +57 -0
  257. package/dist/components/organisms/Marquee/Marquee.module.js +15 -0
  258. package/dist/components/organisms/Marquee/index.d.ts +3 -0
  259. package/dist/components/organisms/Marquee/types.d.ts +11 -0
  260. package/dist/components/organisms/Marquee/types.js +4 -0
  261. package/dist/components/organisms/ProgressBar/ProgressBar.d.ts +6 -0
  262. package/dist/components/organisms/ProgressBar/ProgressBar.js +56 -0
  263. package/dist/components/organisms/ProgressBar/ProgressBar.module.js +17 -0
  264. package/dist/components/organisms/ProgressBar/index.d.ts +3 -0
  265. package/dist/components/organisms/ProgressBar/types.d.ts +20 -0
  266. package/dist/components/organisms/ProgressBar/types.js +7 -0
  267. package/dist/components/organisms/Punchline/Punchline.d.ts +6 -0
  268. package/dist/components/organisms/Punchline/Punchline.js +41 -0
  269. package/dist/components/organisms/Punchline/Punchline.module.js +11 -0
  270. package/dist/components/organisms/Punchline/index.d.ts +3 -0
  271. package/dist/components/organisms/Punchline/types.d.ts +15 -0
  272. package/dist/components/organisms/Punchline/types.js +4 -0
  273. package/dist/components/organisms/Quote/Quote.d.ts +3 -0
  274. package/dist/components/organisms/Quote/Quote.js +33 -0
  275. package/dist/components/organisms/Quote/Quote.module.js +5 -0
  276. package/dist/components/organisms/Quote/index.d.ts +3 -0
  277. package/dist/components/organisms/Quote/types.d.ts +15 -0
  278. package/dist/components/organisms/Quote/types.js +4 -0
  279. package/dist/components/organisms/Schema/Schema.d.ts +54 -0
  280. package/dist/components/organisms/Schema/Schema.js +117 -0
  281. package/dist/components/organisms/Schema/Schema.module.js +87 -0
  282. package/dist/components/organisms/Schema/index.d.ts +2 -0
  283. package/dist/components/organisms/Schema/types.d.ts +32 -0
  284. package/dist/components/organisms/Share/Share.d.ts +6 -0
  285. package/dist/components/organisms/Share/Share.js +68 -0
  286. package/dist/components/organisms/Share/Share.module.js +22 -0
  287. package/dist/components/organisms/Share/index.d.ts +3 -0
  288. package/dist/components/organisms/Share/types.d.ts +24 -0
  289. package/dist/components/organisms/Share/types.js +4 -0
  290. package/dist/components/organisms/Sheet/Sheet.d.ts +2 -0
  291. package/dist/components/organisms/Sheet/Sheet.js +92 -0
  292. package/dist/components/organisms/Sheet/Sheet.module.js +15 -0
  293. package/dist/components/organisms/Sheet/index.d.ts +3 -0
  294. package/dist/components/organisms/Sheet/types.d.ts +15 -0
  295. package/dist/components/organisms/Sheet/types.js +4 -0
  296. package/dist/components/organisms/Slide/Slide.d.ts +6 -0
  297. package/dist/components/organisms/Slide/Slide.js +29 -0
  298. package/dist/components/organisms/Slide/Slide.module.js +13 -0
  299. package/dist/components/organisms/Slide/index.d.ts +3 -0
  300. package/dist/components/organisms/Slide/types.d.ts +18 -0
  301. package/dist/components/organisms/Slide/types.js +8 -0
  302. package/dist/components/organisms/Spotlight/Spotlight.d.ts +7 -0
  303. package/dist/components/organisms/Spotlight/Spotlight.js +39 -0
  304. package/dist/components/organisms/Spotlight/Spotlight.module.js +5 -0
  305. package/dist/components/organisms/Spotlight/index.d.ts +2 -0
  306. package/dist/components/organisms/Spotlight/types.d.ts +6 -0
  307. package/dist/components/organisms/Statements/Statements.d.ts +7 -0
  308. package/dist/components/organisms/Statements/Statements.js +50 -0
  309. package/dist/components/organisms/Statements/Statements.module.js +11 -0
  310. package/dist/components/organisms/Statements/index.d.ts +3 -0
  311. package/dist/components/organisms/Statements/types.d.ts +14 -0
  312. package/dist/components/organisms/Statements/types.js +7 -0
  313. package/dist/components/organisms/Steps/Steps.d.ts +15 -0
  314. package/dist/components/organisms/Steps/Steps.js +117 -0
  315. package/dist/components/organisms/Steps/Steps.module.js +13 -0
  316. package/dist/components/organisms/Steps/StepsContext.d.ts +11 -0
  317. package/dist/components/organisms/Steps/StepsContext.js +18 -0
  318. package/dist/components/organisms/Steps/index.d.ts +3 -0
  319. package/dist/components/organisms/Steps/types.d.ts +22 -0
  320. package/dist/components/organisms/Story/Story.d.ts +6 -0
  321. package/dist/components/organisms/Story/Story.js +43 -0
  322. package/dist/components/organisms/Story/Story.module.js +5 -0
  323. package/dist/components/organisms/Story/index.d.ts +3 -0
  324. package/dist/components/organisms/Story/types.d.ts +20 -0
  325. package/dist/components/organisms/Story/types.js +7 -0
  326. package/dist/components/organisms/Timeline/Timeline.d.ts +7 -0
  327. package/dist/components/organisms/Timeline/Timeline.js +67 -0
  328. package/dist/components/organisms/Timeline/Timeline.module.js +19 -0
  329. package/dist/components/organisms/Timeline/index.d.ts +3 -0
  330. package/dist/components/organisms/Timeline/types.d.ts +25 -0
  331. package/dist/components/organisms/Timeline/types.js +4 -0
  332. package/dist/components/organisms/Tools/Tools.d.ts +6 -0
  333. package/dist/components/organisms/Tools/Tools.js +47 -0
  334. package/dist/components/organisms/Tools/Tools.module.js +17 -0
  335. package/dist/components/organisms/Tools/index.d.ts +3 -0
  336. package/dist/components/organisms/Tools/types.d.ts +23 -0
  337. package/dist/components/organisms/Tools/types.js +4 -0
  338. package/dist/fonts/OFL.txt +93 -0
  339. package/dist/fonts/dm-sans-latin-opsz-normal.woff2 +0 -0
  340. package/dist/hooks/useCenterState.d.ts +9 -0
  341. package/dist/hooks/useCenterState.js +40 -0
  342. package/dist/hooks/useReveal.d.ts +7 -0
  343. package/dist/hooks/useReveal.js +34 -0
  344. package/dist/index.d.ts +54 -0
  345. package/dist/index.js +98 -0
  346. package/dist/styles.css +3441 -0
  347. package/dist/templates/TalkTemplate/TalkTemplate.d.ts +7 -0
  348. package/dist/templates/TalkTemplate/TalkTemplate.js +1392 -0
  349. package/dist/templates/TalkTemplate/index.d.ts +2 -0
  350. package/package.json +86 -4
@@ -0,0 +1,79 @@
1
+ import Cycle_module_default from "./Cycle.module.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/components/organisms/Cycle/Cycle.tsx
4
+ var CX = 440;
5
+ var CY = 320;
6
+ var R = 215;
7
+ var NODE_R = 34;
8
+ var LENGTH = 2 * Math.PI * R;
9
+ /**
10
+ * Cycle is a ring of phases with an arc of progress. The phases before the active one are done;
11
+ * marks paint a node red, green or yellow.
12
+ */
13
+ function Cycle({ phases, active = -1, all = false, highlightFirst = false, marks = {}, label, className }) {
14
+ const n = phases.length;
15
+ const progress = all ? 1 : Math.max(0, active) / n;
16
+ return /* @__PURE__ */ jsxs("svg", {
17
+ className: [Cycle_module_default.cycle, className ?? ""].filter(Boolean).join(" "),
18
+ viewBox: "0 0 880 640",
19
+ role: "img",
20
+ "aria-label": label,
21
+ children: [
22
+ /* @__PURE__ */ jsx("circle", {
23
+ className: Cycle_module_default.ring,
24
+ cx: CX,
25
+ cy: CY,
26
+ r: R
27
+ }),
28
+ /* @__PURE__ */ jsx("circle", {
29
+ className: Cycle_module_default.arc,
30
+ cx: CX,
31
+ cy: CY,
32
+ r: R,
33
+ transform: `rotate(-90 ${CX} ${CY})`,
34
+ strokeDasharray: LENGTH,
35
+ strokeDashoffset: LENGTH * (1 - progress)
36
+ }),
37
+ phases.map((phase, i) => {
38
+ const angle = -Math.PI / 2 + i / n * 2 * Math.PI;
39
+ const x = CX + R * Math.cos(angle);
40
+ const y = CY + R * Math.sin(angle);
41
+ const lx = CX + 300 * Math.cos(angle);
42
+ const ly = CY + 300 * Math.sin(angle);
43
+ const anchor = Math.abs(Math.cos(angle)) < .2 ? "middle" : Math.cos(angle) > 0 ? "start" : "end";
44
+ let state = all || i < active ? "done" : i === active ? "active" : "idle";
45
+ if (all && highlightFirst && i === 0) state = "active";
46
+ return /* @__PURE__ */ jsxs("g", {
47
+ className: Cycle_module_default.node,
48
+ "data-state": state,
49
+ "data-mark": marks[i],
50
+ children: [
51
+ /* @__PURE__ */ jsx("circle", {
52
+ cx: x,
53
+ cy: y,
54
+ r: NODE_R
55
+ }),
56
+ /* @__PURE__ */ jsx("text", {
57
+ className: Cycle_module_default.number,
58
+ x,
59
+ y,
60
+ textAnchor: "middle",
61
+ dominantBaseline: "central",
62
+ children: i + 1
63
+ }),
64
+ /* @__PURE__ */ jsx("text", {
65
+ className: Cycle_module_default.label,
66
+ x: lx,
67
+ y: ly,
68
+ textAnchor: anchor,
69
+ dominantBaseline: "central",
70
+ children: phase
71
+ })
72
+ ]
73
+ }, phase);
74
+ })
75
+ ]
76
+ });
77
+ }
78
+ //#endregion
79
+ export { Cycle };
@@ -0,0 +1,17 @@
1
+ //#region src/components/organisms/Cycle/Cycle.module.css
2
+ var cycle = "_cycle_1bjzo_4";
3
+ var ring = "_ring_1bjzo_11";
4
+ var arc = "_arc_1bjzo_17";
5
+ var node = "_node_1bjzo_25";
6
+ var number = "_number_1bjzo_70";
7
+ var label = "_label_1bjzo_87";
8
+ var Cycle_module_default = {
9
+ cycle,
10
+ ring,
11
+ arc,
12
+ node,
13
+ number,
14
+ label
15
+ };
16
+ //#endregion
17
+ export { arc, cycle, Cycle_module_default as default, label, node, number, ring };
@@ -0,0 +1,3 @@
1
+ export { Cycle } from './Cycle';
2
+ export { CYCLE_DEFAULTS, CYCLE_MARKS } from './types';
3
+ export type { CycleMark, CycleProps } from './types';
@@ -0,0 +1,18 @@
1
+ export declare const CYCLE_MARKS: readonly ["red", "green", "yellow"];
2
+ export type CycleMark = (typeof CYCLE_MARKS)[number];
3
+ export type CycleProps = {
4
+ /** The phases, in order around the ring. */
5
+ phases: string[];
6
+ /** The active phase (index). Earlier ones are done. */
7
+ active?: number;
8
+ /** All phases done. */
9
+ all?: boolean;
10
+ /** With all, keep the first one as active. */
11
+ highlightFirst?: boolean;
12
+ /** Marks by index: red (a problem), green (solved), yellow (the concern). */
13
+ marks?: Record<number, CycleMark>;
14
+ /** Accessible name. */
15
+ label: string;
16
+ className?: string;
17
+ };
18
+ export declare const CYCLE_DEFAULTS: {};
@@ -0,0 +1,9 @@
1
+ //#region src/components/organisms/Cycle/types.ts
2
+ var CYCLE_MARKS = [
3
+ "red",
4
+ "green",
5
+ "yellow"
6
+ ];
7
+ var CYCLE_DEFAULTS = {};
8
+ //#endregion
9
+ export { CYCLE_DEFAULTS, CYCLE_MARKS };
@@ -0,0 +1,6 @@
1
+ import type { DeckProps } from './types';
2
+ /**
3
+ * Deck is the frame of a talk: the blobs behind, the top bar that hides while navigating,
4
+ * the stops (Slides), the side index, keyboard navigation, the remembered theme and the footer.
5
+ */
6
+ export declare function Deck({ items, children, footer, defaultTheme, storageKey, navLabel, indexLabel, blobs, homeHref, homeLabel, className, }: DeckProps): import("react").JSX.Element;
@@ -0,0 +1,159 @@
1
+ import { Bullets } from "../../atoms/Bullets/Bullets.js";
2
+ import { ThemeToggle } from "../../atoms/ThemeToggle/ThemeToggle.js";
3
+ import { Menu } from "../../molecules/Menu/Menu.js";
4
+ import { NavMobile } from "../../molecules/NavMobile/NavMobile.js";
5
+ import { Blobs } from "../Blobs/Blobs.js";
6
+ import { DeckFooter } from "../DeckFooter/DeckFooter.js";
7
+ import Deck_module_default from "./Deck.module.js";
8
+ import { DECK_DEFAULTS } from "./types.js";
9
+ import { useDeckNavigation } from "./useDeckNavigation.js";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { useCallback, useEffect, useRef, useState } from "react";
12
+ //#region src/components/organisms/Deck/Deck.tsx
13
+ /** The side index never paints more than this many marks; longer talks share them out evenly. */
14
+ var MAX_MARKS = 20;
15
+ function readTheme(key, fallback) {
16
+ if (!key) return fallback;
17
+ try {
18
+ const v = localStorage.getItem(key);
19
+ if (v === "claro") return "light";
20
+ if (v === "oscuro") return "dark";
21
+ } catch {}
22
+ return fallback;
23
+ }
24
+ /**
25
+ * Deck is the frame of a talk: the blobs behind, the top bar that hides while navigating,
26
+ * the stops (Slides), the side index, keyboard navigation, the remembered theme and the footer.
27
+ */
28
+ function Deck({ items, children, footer, defaultTheme = DECK_DEFAULTS.defaultTheme, storageKey = DECK_DEFAULTS.storageKey, navLabel = DECK_DEFAULTS.navLabel, indexLabel = DECK_DEFAULTS.indexLabel, blobs = DECK_DEFAULTS.blobs, homeHref = DECK_DEFAULTS.homeHref, homeLabel = DECK_DEFAULTS.homeLabel, className }) {
29
+ const mainRef = useRef(null);
30
+ const footerRef = useRef(null);
31
+ const barRef = useRef(null);
32
+ const [theme, setTheme] = useState(() => readTheme(storageKey, defaultTheme));
33
+ const [barHidden, setBarHidden] = useState(false);
34
+ const [indexVisible, setIndexVisible] = useState(false);
35
+ const { stops, current, goTo } = useDeckNavigation(mainRef, footerRef);
36
+ const toggleTheme = (dark) => {
37
+ setTheme(dark ? "dark" : "light");
38
+ if (storageKey) try {
39
+ localStorage.setItem(storageKey, dark ? "oscuro" : "claro");
40
+ } catch {}
41
+ };
42
+ const wakeAt = useRef(0);
43
+ const pointerTop = useRef(false);
44
+ const atCover = useCallback(() => window.scrollY < window.innerHeight * .6, []);
45
+ useEffect(() => {
46
+ const WAIT = 1e3;
47
+ let raf = 0;
48
+ const busy = () => {
49
+ const bar = barRef.current;
50
+ return pointerTop.current || Boolean(document.querySelector("dialog[open]")) || Boolean(bar && (bar.contains(document.activeElement) || bar.matches(":hover")));
51
+ };
52
+ const watch = (now) => {
53
+ if (atCover()) setBarHidden(false);
54
+ else if (busy()) wakeAt.current = now;
55
+ else if (now - wakeAt.current > WAIT) setBarHidden(true);
56
+ setIndexVisible(window.scrollY > window.innerHeight * .6);
57
+ raf = requestAnimationFrame(watch);
58
+ };
59
+ raf = requestAnimationFrame(watch);
60
+ const hide = () => {
61
+ if (!atCover() && !pointerTop.current) setBarHidden(true);
62
+ };
63
+ const onMove = (e) => {
64
+ pointerTop.current = e.clientY < 120;
65
+ if (pointerTop.current) {
66
+ wakeAt.current = performance.now();
67
+ setBarHidden(false);
68
+ }
69
+ };
70
+ const onLeave = () => {
71
+ pointerTop.current = false;
72
+ };
73
+ document.addEventListener("keydown", hide, true);
74
+ window.addEventListener("scroll", hide, { passive: true });
75
+ document.addEventListener("pointermove", onMove, { passive: true });
76
+ document.addEventListener("pointerleave", onLeave);
77
+ return () => {
78
+ cancelAnimationFrame(raf);
79
+ document.removeEventListener("keydown", hide, true);
80
+ window.removeEventListener("scroll", hide);
81
+ document.removeEventListener("pointermove", onMove);
82
+ document.removeEventListener("pointerleave", onLeave);
83
+ };
84
+ }, [atCover]);
85
+ const toggle = /* @__PURE__ */ jsx(ThemeToggle, {
86
+ dark: theme === "dark",
87
+ onToggle: toggleTheme
88
+ });
89
+ const classes = [Deck_module_default.deck, className ?? ""].filter(Boolean).join(" ");
90
+ const marks = Math.min(stops.length, MAX_MARKS);
91
+ const grouped = stops.length > MAX_MARKS;
92
+ const markOf = (stop) => grouped ? Math.min(marks - 1, Math.floor(stop * marks / stops.length)) : stop;
93
+ const firstStopOf = (mark) => grouped ? Math.ceil(mark * stops.length / marks) : mark;
94
+ return /* @__PURE__ */ jsxs("div", {
95
+ className: classes,
96
+ "data-theme": theme,
97
+ "data-deck": "",
98
+ children: [
99
+ blobs ? /* @__PURE__ */ jsx(Blobs, {}) : null,
100
+ /* @__PURE__ */ jsx("div", {
101
+ ref: barRef,
102
+ className: Deck_module_default.bar,
103
+ "data-hidden": barHidden ? "" : void 0,
104
+ children: /* @__PURE__ */ jsxs("div", {
105
+ className: Deck_module_default.row,
106
+ children: [/* @__PURE__ */ jsx("div", {
107
+ className: Deck_module_default.wide,
108
+ children: /* @__PURE__ */ jsx(Menu, {
109
+ items,
110
+ homeHref,
111
+ homeLabel,
112
+ label: navLabel,
113
+ end: toggle
114
+ })
115
+ }), /* @__PURE__ */ jsx("div", {
116
+ className: Deck_module_default.narrow,
117
+ children: /* @__PURE__ */ jsx(NavMobile, {
118
+ items,
119
+ homeHref,
120
+ homeLabel,
121
+ label: navLabel,
122
+ end: toggle
123
+ })
124
+ })]
125
+ })
126
+ }),
127
+ /* @__PURE__ */ jsx("main", {
128
+ ref: mainRef,
129
+ className: Deck_module_default.main,
130
+ "data-scale": "projection",
131
+ "data-deck-stops": "",
132
+ children
133
+ }),
134
+ /* @__PURE__ */ jsx("div", {
135
+ ref: footerRef,
136
+ children: /* @__PURE__ */ jsx(DeckFooter, {
137
+ homeHref,
138
+ homeLabel,
139
+ ...footer
140
+ })
141
+ }),
142
+ stops.length > 2 ? /* @__PURE__ */ jsx("div", {
143
+ className: Deck_module_default.index,
144
+ "data-visible": indexVisible ? "" : void 0,
145
+ children: /* @__PURE__ */ jsx(Bullets, {
146
+ orientation: "vertical",
147
+ count: marks,
148
+ current: markOf(current) + 1,
149
+ onSelect: (mark) => goTo(firstStopOf(mark - 1)),
150
+ label: indexLabel,
151
+ itemLabel: grouped ? "Tramo" : "Parada",
152
+ "aria-label": indexLabel
153
+ })
154
+ }) : null
155
+ ]
156
+ });
157
+ }
158
+ //#endregion
159
+ export { Deck };
@@ -0,0 +1,19 @@
1
+ //#region src/components/organisms/Deck/Deck.module.css
2
+ var deck = "_deck_1rkwo_4";
3
+ var bar = "_bar_1rkwo_13";
4
+ var row = "_row_1rkwo_39";
5
+ var narrow = "_narrow_1rkwo_49";
6
+ var wide = "_wide_1rkwo_54";
7
+ var main = "_main_1rkwo_70";
8
+ var index = "_index_1rkwo_76";
9
+ var Deck_module_default = {
10
+ deck,
11
+ bar,
12
+ row,
13
+ narrow,
14
+ wide,
15
+ main,
16
+ index
17
+ };
18
+ //#endregion
19
+ export { bar, deck, Deck_module_default as default, index, main, narrow, row, wide };
@@ -0,0 +1,4 @@
1
+ export { Deck } from './Deck';
2
+ export { DECK_DEFAULTS, DECK_THEMES } from './types';
3
+ export type { DeckProps, DeckTheme } from './types';
4
+ export { useDeckNavigation } from './useDeckNavigation';
@@ -0,0 +1,37 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { MenuDestination } from '../../molecules/Menu';
3
+ import type { DeckFooterProps } from '../DeckFooter';
4
+ export declare const DECK_THEMES: readonly ["dark", "light"];
5
+ export type DeckTheme = (typeof DECK_THEMES)[number];
6
+ export type DeckProps = {
7
+ /** The destinations of the top bar: the main stops of the talk. */
8
+ items: MenuDestination[];
9
+ /** The stops: Slides (and the photos that go with a block title). */
10
+ children: ReactNode;
11
+ /** The last stop. */
12
+ footer: DeckFooterProps;
13
+ /** Theme at first visit. Talks default to dark. */
14
+ defaultTheme?: DeckTheme;
15
+ /** localStorage key where the viewer's theme is remembered. Empty string disables it. */
16
+ storageKey?: string;
17
+ /** Accessible name of the top navigation. */
18
+ navLabel?: string;
19
+ /** Accessible name of the side index. */
20
+ indexLabel?: string;
21
+ /** Paint the background blobs. */
22
+ blobs?: boolean;
23
+ /** Where the logo links to: the cover. */
24
+ homeHref?: string;
25
+ /** Accessible name of the logo link. */
26
+ homeLabel?: string;
27
+ className?: string;
28
+ };
29
+ export declare const DECK_DEFAULTS: {
30
+ readonly defaultTheme: "dark";
31
+ readonly storageKey: "540:tema";
32
+ readonly navLabel: "Paradas de la charla";
33
+ readonly indexLabel: "Recorrido de la charla";
34
+ readonly blobs: true;
35
+ readonly homeHref: "#portada";
36
+ readonly homeLabel: "540, ir al inicio";
37
+ };
@@ -0,0 +1,13 @@
1
+ //#region src/components/organisms/Deck/types.ts
2
+ var DECK_THEMES = ["dark", "light"];
3
+ var DECK_DEFAULTS = {
4
+ defaultTheme: "dark",
5
+ storageKey: "540:tema",
6
+ navLabel: "Paradas de la charla",
7
+ indexLabel: "Recorrido de la charla",
8
+ blobs: true,
9
+ homeHref: "#portada",
10
+ homeLabel: "540, ir al inicio"
11
+ };
12
+ //#endregion
13
+ export { DECK_DEFAULTS, DECK_THEMES };
@@ -0,0 +1,15 @@
1
+ import type { RefObject } from 'react';
2
+ /**
3
+ * The journey of a talk, ported from the talks' navegacion-540.js (without GSAP):
4
+ * - stops are the Slides inside <main> (at any depth), split by their outermost [data-stop] descendants, plus the footer;
5
+ * - the keyboard moves between stops (and pages inside a stop taller than the window);
6
+ * - the current stop is the one holding the center of the window.
7
+ */
8
+ export declare function useDeckNavigation(mainRef: RefObject<HTMLElement | null>, footerRef: RefObject<HTMLElement | null>): {
9
+ stops: HTMLElement[];
10
+ current: number;
11
+ goTo: (i: number) => void;
12
+ next: () => void;
13
+ prev: () => void;
14
+ nameOf: (el: HTMLElement, i: number) => string;
15
+ };
@@ -0,0 +1,218 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ //#region src/components/organisms/Deck/useDeckNavigation.ts
3
+ var WRAPPERS = /* @__PURE__ */ new Set(["DS-SLOT", "DS-ISLAND"]);
4
+ /** The Slides under parent, at any depth: a wrapper (a div with a label, an island) does not hide them. Other sections are not stops. */
5
+ function slidesOf(parent) {
6
+ return Array.from(parent.querySelectorAll("[data-slide]"));
7
+ }
8
+ /** The element after el, looking through the ds-slot/ds-island wrappers (not other wrappers: a photo goes next to its title). */
9
+ function nextThroughWrappers(el) {
10
+ let cur = el;
11
+ while (!cur.nextElementSibling && cur.parentElement && WRAPPERS.has(cur.parentElement.tagName)) cur = cur.parentElement;
12
+ let next = cur.nextElementSibling;
13
+ while (next && WRAPPERS.has(next.tagName)) next = next.firstElementChild ?? next.nextElementSibling;
14
+ return next;
15
+ }
16
+ function photoAfter(el) {
17
+ const next = nextThroughWrappers(el);
18
+ return next && next.hasAttribute("data-deck-photo") ? next : null;
19
+ }
20
+ /**
21
+ * The journey of a talk, ported from the talks' navegacion-540.js (without GSAP):
22
+ * - stops are the Slides inside <main> (at any depth), split by their outermost [data-stop] descendants, plus the footer;
23
+ * - the keyboard moves between stops (and pages inside a stop taller than the window);
24
+ * - the current stop is the one holding the center of the window.
25
+ */
26
+ function useDeckNavigation(mainRef, footerRef) {
27
+ const [stops, setStops] = useState([]);
28
+ const [current, setCurrent] = useState(0);
29
+ const rangesRef = useRef([]);
30
+ const collect = useCallback(() => {
31
+ const main = mainRef.current;
32
+ if (!main) return;
33
+ let list = slidesOf(main);
34
+ list = list.flatMap((section) => {
35
+ const inner = Array.from(section.querySelectorAll(":scope [data-stop]:not([data-stop] [data-stop])"));
36
+ return inner.length ? inner : [section];
37
+ });
38
+ if (footerRef.current) list.push(footerRef.current);
39
+ setStops(list);
40
+ }, [mainRef, footerRef]);
41
+ const measure = useCallback(() => {
42
+ rangesRef.current = stops.map((el) => {
43
+ const r = el.getBoundingClientRect();
44
+ const top = r.top + window.scrollY;
45
+ return [top, top + r.height];
46
+ });
47
+ }, [stops]);
48
+ const reduced = () => window.matchMedia("(prefers-reduced-motion: reduce)").matches;
49
+ const slide = useCallback((y) => {
50
+ const max = document.documentElement.scrollHeight - window.innerHeight;
51
+ const top = Math.max(0, Math.min(Math.round(y), max));
52
+ window.scrollTo({
53
+ top,
54
+ behavior: reduced() ? "auto" : "smooth"
55
+ });
56
+ }, []);
57
+ const photoOf = (el) => el.tagName === "SECTION" ? photoAfter(el) : null;
58
+ const goTo = useCallback((i) => {
59
+ const n = Math.max(0, Math.min(stops.length - 1, i));
60
+ const el = stops[n];
61
+ if (!el) return;
62
+ if (n === stops.length - 1) {
63
+ slide(document.documentElement.scrollHeight);
64
+ return;
65
+ }
66
+ const vh = window.innerHeight;
67
+ const top = el.getBoundingClientRect().top + window.scrollY;
68
+ if (photoOf(el)) {
69
+ slide(top);
70
+ return;
71
+ }
72
+ const r = (el.querySelector("[data-slide-stage]") ?? el).getBoundingClientRect();
73
+ const t = r.top + window.scrollY;
74
+ slide(r.height < vh ? t - (vh - r.height) / 2 : top);
75
+ }, [stops, slide]);
76
+ const currentIndex = useCallback(() => {
77
+ if (!rangesRef.current.length) measure();
78
+ const yc = window.scrollY + window.innerHeight / 2;
79
+ const ranges = rangesRef.current;
80
+ for (let i = 0; i < ranges.length; i++) if (yc >= ranges[i][0] && yc < ranges[i][1]) return i;
81
+ let best = 0;
82
+ let min = Infinity;
83
+ ranges.forEach(([a, b], j) => {
84
+ const d = Math.abs((a + b) / 2 - yc);
85
+ if (d < min) {
86
+ min = d;
87
+ best = j;
88
+ }
89
+ });
90
+ return best;
91
+ }, [measure]);
92
+ const box = (i) => {
93
+ const el = stops[i];
94
+ const r = (el.querySelector("[data-slide-stage]") ?? el).getBoundingClientRect();
95
+ return [r.top + window.scrollY, r.bottom + window.scrollY];
96
+ };
97
+ const next = useCallback(() => {
98
+ const i = currentIndex();
99
+ const [, bottom] = box(i);
100
+ const y = window.scrollY;
101
+ const vh = window.innerHeight;
102
+ if (i > 0 && bottom - (y + vh) > 12) {
103
+ slide(Math.min(y + vh * .84, bottom - vh));
104
+ return;
105
+ }
106
+ goTo(i + 1);
107
+ }, [
108
+ currentIndex,
109
+ goTo,
110
+ slide,
111
+ stops
112
+ ]);
113
+ const prev = useCallback(() => {
114
+ const i = currentIndex();
115
+ const [top] = box(i);
116
+ const y = window.scrollY;
117
+ const vh = window.innerHeight;
118
+ if (i > 0 && y - top > 12) {
119
+ slide(Math.max(top, y - vh * .84));
120
+ return;
121
+ }
122
+ goTo(i - 1);
123
+ }, [
124
+ currentIndex,
125
+ goTo,
126
+ slide,
127
+ stops
128
+ ]);
129
+ useEffect(() => {
130
+ collect();
131
+ }, [collect]);
132
+ useEffect(() => {
133
+ if (!stops.length) return;
134
+ measure();
135
+ let lastY = -1;
136
+ let lastH = -1;
137
+ let raf = 0;
138
+ const tick = () => {
139
+ const y = window.scrollY;
140
+ const h = document.documentElement.scrollHeight;
141
+ if (h !== lastH) {
142
+ lastH = h;
143
+ measure();
144
+ lastY = -1;
145
+ }
146
+ if (y !== lastY) {
147
+ lastY = y;
148
+ setCurrent(currentIndex());
149
+ }
150
+ raf = requestAnimationFrame(tick);
151
+ };
152
+ raf = requestAnimationFrame(tick);
153
+ const onResize = () => {
154
+ measure();
155
+ setCurrent(currentIndex());
156
+ };
157
+ window.addEventListener("resize", onResize);
158
+ return () => {
159
+ cancelAnimationFrame(raf);
160
+ window.removeEventListener("resize", onResize);
161
+ };
162
+ }, [
163
+ stops,
164
+ measure,
165
+ currentIndex
166
+ ]);
167
+ useEffect(() => {
168
+ const editing = (t) => {
169
+ const el = t;
170
+ if (!el || !el.tagName) return false;
171
+ return el.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName);
172
+ };
173
+ const onKey = (e) => {
174
+ if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.altKey) return;
175
+ if (document.querySelector("dialog[open]")) return;
176
+ if (editing(e.target)) return;
177
+ const k = e.key;
178
+ if (k === "ArrowRight" || k === "ArrowDown" || k === "PageDown") {
179
+ e.preventDefault();
180
+ next();
181
+ } else if (k === " " || k === "Spacebar") {
182
+ e.preventDefault();
183
+ if (e.shiftKey) prev();
184
+ else next();
185
+ } else if (k === "ArrowLeft" || k === "ArrowUp" || k === "PageUp") {
186
+ e.preventDefault();
187
+ prev();
188
+ } else if (k === "Home") {
189
+ e.preventDefault();
190
+ goTo(0);
191
+ } else if (k === "End") {
192
+ e.preventDefault();
193
+ goTo(stops.length - 1);
194
+ }
195
+ };
196
+ document.addEventListener("keydown", onKey);
197
+ return () => document.removeEventListener("keydown", onKey);
198
+ }, [
199
+ next,
200
+ prev,
201
+ goTo,
202
+ stops.length
203
+ ]);
204
+ const nameOf = (el, i) => {
205
+ const txt = (el.querySelector("h1,h2,h3") ?? el.querySelector("p"))?.textContent?.trim() ?? el.id ?? "";
206
+ return `${i + 1} de ${stops.length}${txt ? `. ${txt.slice(0, 44)}` : ""}`;
207
+ };
208
+ return {
209
+ stops,
210
+ current,
211
+ goTo,
212
+ next,
213
+ prev,
214
+ nameOf
215
+ };
216
+ }
217
+ //#endregion
218
+ export { useDeckNavigation };
@@ -0,0 +1,6 @@
1
+ import type { DeckFooterProps } from './types';
2
+ /**
3
+ * DeckFooter is the last stop of a talk: a full screen with the halo, the logo, the tagline,
4
+ * the networks, the thanks and the signature, all centered.
5
+ */
6
+ export declare function DeckFooter({ tagline, networks, thanks, copyright, homeHref, homeLabel, className, }: DeckFooterProps): import("react").JSX.Element;