trama-ui 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 (285) hide show
  1. package/CATALOG.md +1237 -0
  2. package/LICENSE +21 -0
  3. package/README.md +78 -0
  4. package/THIRD-PARTY.md +4 -0
  5. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/brown.png +0 -0
  6. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/brown_inlay.png +0 -0
  7. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/brown_pressed.png +0 -0
  8. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/grey.png +0 -0
  9. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/grey_inlay.png +0 -0
  10. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/grey_pressed.png +0 -0
  11. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/tan.png +0 -0
  12. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/tan_inlay.png +0 -0
  13. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/tan_pressed.png +0 -0
  14. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/white.png +0 -0
  15. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/white_inlay.png +0 -0
  16. package/assets/pixel/kenney-pixel-ui/9-slice/Ancient/white_pressed.png +0 -0
  17. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/blue.png +0 -0
  18. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/blue_pressed.png +0 -0
  19. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/green.png +0 -0
  20. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/green_pressed.png +0 -0
  21. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/grey.png +0 -0
  22. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/grey_pressed.png +0 -0
  23. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/red.png +0 -0
  24. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/red_pressed.png +0 -0
  25. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/yellow.png +0 -0
  26. package/assets/pixel/kenney-pixel-ui/9-slice/Colored/yellow_pressed.png +0 -0
  27. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/blue.png +0 -0
  28. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/blue_pressed.png +0 -0
  29. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/green.png +0 -0
  30. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/green_pressed.png +0 -0
  31. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/red.png +0 -0
  32. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/red_pressed.png +0 -0
  33. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/yellow.png +0 -0
  34. package/assets/pixel/kenney-pixel-ui/9-slice/Outline/yellow_pressed.png +0 -0
  35. package/assets/pixel/kenney-pixel-ui/9-slice/list.png +0 -0
  36. package/assets/pixel/kenney-pixel-ui/9-slice/space.png +0 -0
  37. package/assets/pixel/kenney-pixel-ui/9-slice/space_inlay.png +0 -0
  38. package/assets/pixel/kenney-pixel-ui/License.txt +23 -0
  39. package/assets/pixel/kenney-pixel-ui/spritesheet/sheet.png +0 -0
  40. package/bin/trama-ui.mjs +27 -0
  41. package/dist/components/ui/Accordion.d.ts +12 -0
  42. package/dist/components/ui/Accordion.js +12 -0
  43. package/dist/components/ui/Alert.d.ts +15 -0
  44. package/dist/components/ui/Alert.js +15 -0
  45. package/dist/components/ui/ArticlesSection.d.ts +30 -0
  46. package/dist/components/ui/ArticlesSection.js +18 -0
  47. package/dist/components/ui/AsciiBackground.d.ts +58 -0
  48. package/dist/components/ui/AsciiBackground.js +173 -0
  49. package/dist/components/ui/AsciiCard.d.ts +78 -0
  50. package/dist/components/ui/AsciiCard.js +253 -0
  51. package/dist/components/ui/AsciiChart.d.ts +18 -0
  52. package/dist/components/ui/AsciiChart.js +47 -0
  53. package/dist/components/ui/Badge.d.ts +15 -0
  54. package/dist/components/ui/Badge.js +8 -0
  55. package/dist/components/ui/BitmapText.d.ts +25 -0
  56. package/dist/components/ui/BitmapText.js +21 -0
  57. package/dist/components/ui/BlogCard.d.ts +33 -0
  58. package/dist/components/ui/BlogCard.js +13 -0
  59. package/dist/components/ui/Breadcrumbs.d.ts +9 -0
  60. package/dist/components/ui/Breadcrumbs.js +7 -0
  61. package/dist/components/ui/Button.d.ts +74 -0
  62. package/dist/components/ui/Button.js +48 -0
  63. package/dist/components/ui/CTASection.d.ts +13 -0
  64. package/dist/components/ui/CTASection.js +7 -0
  65. package/dist/components/ui/Carousel.d.ts +30 -0
  66. package/dist/components/ui/Carousel.js +80 -0
  67. package/dist/components/ui/CheckboxGroup.d.ts +11 -0
  68. package/dist/components/ui/CheckboxGroup.js +20 -0
  69. package/dist/components/ui/CodeBlock.d.ts +11 -0
  70. package/dist/components/ui/CodeBlock.js +20 -0
  71. package/dist/components/ui/ContactForm.d.ts +25 -0
  72. package/dist/components/ui/ContactForm.js +26 -0
  73. package/dist/components/ui/CrtOverlay.d.ts +10 -0
  74. package/dist/components/ui/CrtOverlay.js +5 -0
  75. package/dist/components/ui/Divider.d.ts +12 -0
  76. package/dist/components/ui/Divider.js +7 -0
  77. package/dist/components/ui/Drawer.d.ts +16 -0
  78. package/dist/components/ui/Drawer.js +25 -0
  79. package/dist/components/ui/Dropdown.d.ts +10 -0
  80. package/dist/components/ui/Dropdown.js +21 -0
  81. package/dist/components/ui/FAQSection.d.ts +14 -0
  82. package/dist/components/ui/FAQSection.js +7 -0
  83. package/dist/components/ui/FeatureGrid.d.ts +18 -0
  84. package/dist/components/ui/FeatureGrid.js +14 -0
  85. package/dist/components/ui/Footer.d.ts +14 -0
  86. package/dist/components/ui/Footer.js +16 -0
  87. package/dist/components/ui/GlyphCursor.d.ts +22 -0
  88. package/dist/components/ui/GlyphCursor.js +50 -0
  89. package/dist/components/ui/GridBackground.d.ts +15 -0
  90. package/dist/components/ui/GridBackground.js +6 -0
  91. package/dist/components/ui/Hero.d.ts +21 -0
  92. package/dist/components/ui/Hero.js +12 -0
  93. package/dist/components/ui/HoverFX.d.ts +29 -0
  94. package/dist/components/ui/HoverFX.js +75 -0
  95. package/dist/components/ui/Icon.d.ts +33 -0
  96. package/dist/components/ui/Icon.js +29 -0
  97. package/dist/components/ui/ImageGallery.d.ts +31 -0
  98. package/dist/components/ui/ImageGallery.js +79 -0
  99. package/dist/components/ui/LogoCloud.d.ts +12 -0
  100. package/dist/components/ui/LogoCloud.js +9 -0
  101. package/dist/components/ui/MagneticButton.d.ts +12 -0
  102. package/dist/components/ui/MagneticButton.js +49 -0
  103. package/dist/components/ui/Marquee.d.ts +29 -0
  104. package/dist/components/ui/Marquee.js +15 -0
  105. package/dist/components/ui/Modal.d.ts +40 -0
  106. package/dist/components/ui/Modal.js +51 -0
  107. package/dist/components/ui/NavBar.d.ts +14 -0
  108. package/dist/components/ui/NavBar.js +12 -0
  109. package/dist/components/ui/NeonSign.d.ts +14 -0
  110. package/dist/components/ui/NeonSign.js +7 -0
  111. package/dist/components/ui/OtpInput.d.ts +9 -0
  112. package/dist/components/ui/OtpInput.js +27 -0
  113. package/dist/components/ui/Pagination.d.ts +10 -0
  114. package/dist/components/ui/Pagination.js +24 -0
  115. package/dist/components/ui/Panel.d.ts +21 -0
  116. package/dist/components/ui/Panel.js +8 -0
  117. package/dist/components/ui/PixelFrame.d.ts +61 -0
  118. package/dist/components/ui/PixelFrame.js +29 -0
  119. package/dist/components/ui/Presence.d.ts +51 -0
  120. package/dist/components/ui/Presence.js +343 -0
  121. package/dist/components/ui/PricingCard.d.ts +30 -0
  122. package/dist/components/ui/PricingCard.js +21 -0
  123. package/dist/components/ui/PricingSection.d.ts +35 -0
  124. package/dist/components/ui/PricingSection.js +21 -0
  125. package/dist/components/ui/Progress.d.ts +17 -0
  126. package/dist/components/ui/Progress.js +9 -0
  127. package/dist/components/ui/RadioGroup.d.ts +10 -0
  128. package/dist/components/ui/RadioGroup.js +11 -0
  129. package/dist/components/ui/RangeSlider.d.ts +14 -0
  130. package/dist/components/ui/RangeSlider.js +11 -0
  131. package/dist/components/ui/Reveal.d.ts +48 -0
  132. package/dist/components/ui/Reveal.js +181 -0
  133. package/dist/components/ui/SceneFlash.d.ts +14 -0
  134. package/dist/components/ui/SceneFlash.js +51 -0
  135. package/dist/components/ui/ScrambleText.d.ts +31 -0
  136. package/dist/components/ui/ScrambleText.js +51 -0
  137. package/dist/components/ui/ScrollArea.d.ts +15 -0
  138. package/dist/components/ui/ScrollArea.js +18 -0
  139. package/dist/components/ui/SectionHeader.d.ts +12 -0
  140. package/dist/components/ui/SectionHeader.js +6 -0
  141. package/dist/components/ui/Select.d.ts +17 -0
  142. package/dist/components/ui/Select.js +31 -0
  143. package/dist/components/ui/Skeleton.d.ts +12 -0
  144. package/dist/components/ui/Skeleton.js +18 -0
  145. package/dist/components/ui/Spinner.d.ts +15 -0
  146. package/dist/components/ui/Spinner.js +24 -0
  147. package/dist/components/ui/Spotlight.d.ts +16 -0
  148. package/dist/components/ui/Spotlight.js +16 -0
  149. package/dist/components/ui/Sprite.d.ts +27 -0
  150. package/dist/components/ui/Sprite.js +19 -0
  151. package/dist/components/ui/StatCounter.d.ts +24 -0
  152. package/dist/components/ui/StatCounter.js +70 -0
  153. package/dist/components/ui/StatsSection.d.ts +14 -0
  154. package/dist/components/ui/StatsSection.js +13 -0
  155. package/dist/components/ui/Stepper.d.ts +10 -0
  156. package/dist/components/ui/Stepper.js +7 -0
  157. package/dist/components/ui/Table.d.ts +10 -0
  158. package/dist/components/ui/Table.js +8 -0
  159. package/dist/components/ui/Tabs.d.ts +12 -0
  160. package/dist/components/ui/Tabs.js +18 -0
  161. package/dist/components/ui/TeamSection.d.ts +18 -0
  162. package/dist/components/ui/TeamSection.js +19 -0
  163. package/dist/components/ui/TerminalTyper.d.ts +20 -0
  164. package/dist/components/ui/TerminalTyper.js +45 -0
  165. package/dist/components/ui/Testimonial.d.ts +19 -0
  166. package/dist/components/ui/Testimonial.js +9 -0
  167. package/dist/components/ui/TestimonialSection.d.ts +20 -0
  168. package/dist/components/ui/TestimonialSection.js +15 -0
  169. package/dist/components/ui/TextField.d.ts +26 -0
  170. package/dist/components/ui/TextField.js +13 -0
  171. package/dist/components/ui/TextmodeBackground.d.ts +52 -0
  172. package/dist/components/ui/TextmodeBackground.js +83 -0
  173. package/dist/components/ui/Timeline.d.ts +13 -0
  174. package/dist/components/ui/Timeline.js +8 -0
  175. package/dist/components/ui/Toast.d.ts +30 -0
  176. package/dist/components/ui/Toast.js +47 -0
  177. package/dist/components/ui/Toggle.d.ts +13 -0
  178. package/dist/components/ui/Toggle.js +10 -0
  179. package/dist/components/ui/Tooltip.d.ts +20 -0
  180. package/dist/components/ui/Tooltip.js +20 -0
  181. package/dist/components/ui/Typewriter.d.ts +20 -0
  182. package/dist/components/ui/Typewriter.js +46 -0
  183. package/dist/components/ui/VideoPlayer.d.ts +81 -0
  184. package/dist/components/ui/VideoPlayer.js +379 -0
  185. package/dist/components/ui/fill.d.ts +32 -0
  186. package/dist/components/ui/fill.js +27 -0
  187. package/dist/components/ui/intent.d.ts +20 -0
  188. package/dist/components/ui/intent.js +23 -0
  189. package/dist/components/ui/styles/kit.css +31 -0
  190. package/dist/components/ui/styles/ui-carousel.css +113 -0
  191. package/dist/components/ui/styles/ui-kit.css +1135 -0
  192. package/dist/components/ui/styles/ui-video.css +75 -0
  193. package/dist/components/ui/swiperCss.d.ts +15 -0
  194. package/dist/components/ui/swiperCss.js +15 -0
  195. package/dist/components/ui/variants.d.ts +12 -0
  196. package/dist/components/ui/variants.js +10 -0
  197. package/dist/index.d.ts +77 -0
  198. package/dist/index.js +77 -0
  199. package/dist/lib/asciify/painters.d.ts +25 -0
  200. package/dist/lib/asciify/painters.js +604 -0
  201. package/dist/lib/asciify/pointer.d.ts +12 -0
  202. package/dist/lib/asciify/pointer.js +54 -0
  203. package/dist/lib/asciify/shape-painters.d.ts +44 -0
  204. package/dist/lib/asciify/shape-painters.js +335 -0
  205. package/dist/lib/asciify/theme-painters.d.ts +8 -0
  206. package/dist/lib/asciify/theme-painters.js +437 -0
  207. package/dist/lib/cells.d.ts +46 -0
  208. package/dist/lib/cells.js +114 -0
  209. package/dist/lib/scroll/store.d.ts +21 -0
  210. package/dist/lib/scroll/store.js +25 -0
  211. package/dist/lib/sketches/aurora.d.ts +3 -0
  212. package/dist/lib/sketches/aurora.js +42 -0
  213. package/dist/lib/sketches/fire.d.ts +3 -0
  214. package/dist/lib/sketches/fire.js +80 -0
  215. package/dist/lib/sketches/flow.d.ts +3 -0
  216. package/dist/lib/sketches/flow.js +70 -0
  217. package/dist/lib/sketches/life.d.ts +3 -0
  218. package/dist/lib/sketches/life.js +107 -0
  219. package/dist/lib/sketches/matrix.d.ts +3 -0
  220. package/dist/lib/sketches/matrix.js +64 -0
  221. package/dist/lib/sketches/ocean.d.ts +3 -0
  222. package/dist/lib/sketches/ocean.js +56 -0
  223. package/dist/lib/sketches/plasma.d.ts +3 -0
  224. package/dist/lib/sketches/plasma.js +29 -0
  225. package/dist/lib/sketches/registry.d.ts +6 -0
  226. package/dist/lib/sketches/registry.js +60 -0
  227. package/dist/lib/sketches/ripples.d.ts +3 -0
  228. package/dist/lib/sketches/ripples.js +84 -0
  229. package/dist/lib/sketches/scroll-assemble.d.ts +8 -0
  230. package/dist/lib/sketches/scroll-assemble.js +90 -0
  231. package/dist/lib/sketches/scroll-parallax.d.ts +6 -0
  232. package/dist/lib/sketches/scroll-parallax.js +76 -0
  233. package/dist/lib/sketches/scroll-rain.d.ts +6 -0
  234. package/dist/lib/sketches/scroll-rain.js +82 -0
  235. package/dist/lib/sketches/scroll-stats.d.ts +7 -0
  236. package/dist/lib/sketches/scroll-stats.js +81 -0
  237. package/dist/lib/sketches/scroll-terminal.d.ts +6 -0
  238. package/dist/lib/sketches/scroll-terminal.js +87 -0
  239. package/dist/lib/sketches/scroll-zoom.d.ts +7 -0
  240. package/dist/lib/sketches/scroll-zoom.js +49 -0
  241. package/dist/lib/sketches/starfield.d.ts +3 -0
  242. package/dist/lib/sketches/starfield.js +54 -0
  243. package/dist/lib/sketches/text-3d.d.ts +6 -0
  244. package/dist/lib/sketches/text-3d.js +62 -0
  245. package/dist/lib/sketches/text-combo-figlet.d.ts +6 -0
  246. package/dist/lib/sketches/text-combo-figlet.js +91 -0
  247. package/dist/lib/sketches/text-glitch.d.ts +3 -0
  248. package/dist/lib/sketches/text-glitch.js +57 -0
  249. package/dist/lib/sketches/text-marquee.d.ts +3 -0
  250. package/dist/lib/sketches/text-marquee.js +35 -0
  251. package/dist/lib/sketches/text-particles.d.ts +9 -0
  252. package/dist/lib/sketches/text-particles.js +91 -0
  253. package/dist/lib/sketches/text-rain.d.ts +3 -0
  254. package/dist/lib/sketches/text-rain.js +73 -0
  255. package/dist/lib/sketches/text-scramble.d.ts +6 -0
  256. package/dist/lib/sketches/text-scramble.js +49 -0
  257. package/dist/lib/sketches/text-wave.d.ts +3 -0
  258. package/dist/lib/sketches/text-wave.js +43 -0
  259. package/dist/lib/sketches/theme-orbit.d.ts +6 -0
  260. package/dist/lib/sketches/theme-orbit.js +119 -0
  261. package/dist/lib/sketches/theme-pulse.d.ts +7 -0
  262. package/dist/lib/sketches/theme-pulse.js +84 -0
  263. package/dist/lib/sketches/tunnel.d.ts +3 -0
  264. package/dist/lib/sketches/tunnel.js +28 -0
  265. package/dist/lib/text/banner.d.ts +5 -0
  266. package/dist/lib/text/banner.js +35 -0
  267. package/dist/lib/text/mask.d.ts +40 -0
  268. package/dist/lib/text/mask.js +143 -0
  269. package/dist/lib/text/store.d.ts +23 -0
  270. package/dist/lib/text/store.js +86 -0
  271. package/dist/lib/ui/card-fields.d.ts +52 -0
  272. package/dist/lib/ui/card-fields.js +193 -0
  273. package/dist/lib/ui/fonts.d.ts +56 -0
  274. package/dist/lib/ui/fonts.js +94 -0
  275. package/dist/lib/ui/fx.d.ts +42 -0
  276. package/dist/lib/ui/fx.js +162 -0
  277. package/dist/lib/ui/icons.d.ts +437 -0
  278. package/dist/lib/ui/icons.js +314 -0
  279. package/dist/lib/ui/placeholder.d.ts +11 -0
  280. package/dist/lib/ui/placeholder.js +65 -0
  281. package/dist/lib/ui/tokens.d.ts +49 -0
  282. package/dist/lib/ui/tokens.js +129 -0
  283. package/dist/lib/ui/useTokens.d.ts +10 -0
  284. package/dist/lib/ui/useTokens.js +32 -0
  285. package/package.json +80 -0
@@ -0,0 +1,75 @@
1
+ /* =====================================================================
2
+ VideoPlayer (prefijo ui-vid). Controles propios sobre el <video> nativo: solo consumen tokens y --s-*.
3
+ Todo cuadrado y sin transiciones suaves: los cambios de estado son por pasos, como el resto del lenguaje pixel.
4
+ ===================================================================== */
5
+
6
+ .ui-vid { position: relative; width: 100%; max-width: var(--vid-max, 980px); margin-inline: auto; aspect-ratio: var(--vid-ratio, 16 / 9); overflow: hidden; background: #000; color: var(--fg); font-family: var(--s-ff, inherit); -webkit-tap-highlight-color: transparent; }
7
+ .ui-vid:focus-visible { outline: 3px solid var(--acc); outline-offset: 3px; }
8
+ .ui-vid__video { display: block; width: 100%; height: 100%; object-fit: contain; background: #000; }
9
+ .ui-vid.is-idle { cursor: none; }
10
+
11
+ /* Modo fondo: rellena el contenedor, sin marco, decorativo */
12
+ .ui-vid--bg { position: absolute; inset: 0; max-width: none; aspect-ratio: auto; margin: 0; border: 0; box-shadow: none; pointer-events: none; }
13
+ .ui-vid--bg .ui-vid__video { object-fit: cover; }
14
+
15
+ /* Carátula antes de empezar: botón grande de play y título en bloque duro */
16
+ .ui-vid__cover, .ui-vid__facade { position: absolute; inset: 0; width: 100%; display: grid; place-items: center; padding: 0; border: 0; background: linear-gradient(180deg, transparent 40%, rgba(0, 0, 0, 0.6)); color: inherit; font: inherit; cursor: pointer; }
17
+ .ui-vid__facade { background: #000; }
18
+ .ui-vid__facade img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; image-rendering: pixelated; opacity: 0.85; }
19
+ .ui-vid__big { position: relative; display: grid; place-items: center; width: 84px; height: 84px; background: var(--s-pri-bg, var(--acc)); color: var(--s-pri-fg, var(--bg)); border: var(--s-pri-bd, 3px solid var(--bg)); box-shadow: 6px 6px 0 var(--bg); }
20
+ .ui-vid__cover:hover .ui-vid__big, .ui-vid__facade:hover .ui-vid__big { translate: 3px 3px; box-shadow: 3px 3px 0 var(--bg); }
21
+ .ui-vid__cover:focus-visible, .ui-vid__facade:focus-visible { outline: 3px solid var(--fg); outline-offset: -6px; }
22
+ .ui-vid__title, .ui-vid__tag { position: absolute; left: 14px; bottom: 14px; max-width: calc(100% - 28px); padding: 6px 12px; background: var(--bg); color: var(--fg); border: 2px solid var(--fg); font-size: 14px; letter-spacing: 0.06em; text-align: left; text-transform: none; }
23
+ .ui-vid__tag { font-size: 12px; color: var(--acc); }
24
+ .ui-vid__frame { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #000; }
25
+ .ui-vid__scan { position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.3) 0 1px, transparent 1px 3px); mix-blend-mode: multiply; }
26
+ .ui-vid__err { position: absolute; inset: 0; display: grid; place-content: center; gap: 6px; padding: 20px; text-align: center; background: var(--bg); }
27
+ .ui-vid__err strong { color: var(--acc); }
28
+ .ui-vid__err span { color: var(--mut); font-size: 12px; word-break: break-all; }
29
+
30
+ /* Barra de controles: pegada abajo; se retira por completo (sin fundido) al quedar inactiva mientras se reproduce */
31
+ .ui-vid__ctl { position: absolute; left: 0; right: 0; bottom: 0; display: flex; align-items: center; gap: 8px; padding: 6px 8px; background: var(--bg); border-top: 2px solid var(--fg); text-transform: none; }
32
+ .ui-vid.is-idle .ui-vid__ctl { transform: translateY(100%); }
33
+ .ui-vid__ctl:focus-within { transform: none !important; }
34
+ .ui-vid__btn { position: relative; display: grid; place-items: center; flex: none; min-width: 34px; height: 34px; padding: 0 6px; background: transparent; color: var(--fg); border: 2px solid transparent; font: inherit; font-size: 13px; letter-spacing: 0.04em; cursor: pointer; }
35
+ .ui-vid__btn:hover { background: var(--acc); color: var(--bg); }
36
+ .ui-vid__btn:focus-visible { outline: 2px solid var(--fg); outline-offset: 1px; }
37
+ .ui-vid__btn.is-on { color: var(--acc); border-color: var(--acc); }
38
+ .ui-vid__btn.is-off svg { opacity: 0.4; }
39
+ .ui-vid__btn.is-off::after { content: ""; position: absolute; left: 6px; right: 6px; top: 50%; height: 2px; background: var(--acc); transform: rotate(-45deg); }
40
+ .ui-vid__time { flex: none; min-width: 40px; font-size: 12px; letter-spacing: 0.06em; color: var(--fg); font-variant-numeric: tabular-nums; }
41
+
42
+ /* Barra de valor (progreso y volumen) */
43
+ .ui-vid__bar { position: relative; flex: 1; min-width: 40px; height: 14px; background: var(--ln); border: 2px solid var(--fg); cursor: pointer; touch-action: none; }
44
+ .ui-vid__bar:focus-visible { outline: 2px solid var(--acc); outline-offset: 2px; }
45
+ .ui-vid__vol { flex: none; width: 72px; }
46
+ .ui-vid__bar-buf, .ui-vid__bar-fill { position: absolute; left: 0; top: 0; bottom: 0; }
47
+ .ui-vid__bar-buf { background: var(--fg); opacity: 0.25; }
48
+ .ui-vid__bar-fill { background: var(--acc); }
49
+ .ui-vid__bar-thumb { position: absolute; top: -5px; width: 8px; height: 18px; background: var(--fg); translate: -50% 0; pointer-events: none; }
50
+
51
+ /* Pantalla completa: sin marco ni límite de tamaño */
52
+ .ui-vid.is-full { max-width: none; width: 100vw; height: 100vh; aspect-ratio: auto; border: 0; box-shadow: none; }
53
+
54
+ @media (max-width: 640px) {
55
+ .ui-vid__vol, .ui-vid__btn--txt { display: none; }
56
+ .ui-vid__big { width: 64px; height: 64px; }
57
+ }
58
+ @media (prefers-reduced-motion: reduce) {
59
+ .ui-vid.is-idle .ui-vid__ctl { transform: none; }
60
+ }
61
+
62
+ /* Efecto ASCII: lienzo de asciify-engine sobre el vídeo, que sigue reproduciéndose debajo (útil para revelarlo con hover más adelante) */
63
+ .ui-vid__ascii { position: absolute; inset: 0; pointer-events: none; }
64
+ /* Con hover, el lienzo recibe el puntero (lo lee el motor) y el clic se reenvía al reproductor desde el componente */
65
+ .ui-vid__ascii.has-hover { pointer-events: auto; }
66
+ .ui-vid__ascii .ui-fill-canvas { display: block; width: 100%; height: 100%; }
67
+ .ui-vid__tag--top { top: 14px; bottom: auto; }
68
+ /* La carátula y la barra de controles quedan por encima del ASCII; el título de la carátula no debe ocultarse */
69
+ .ui-vid__cover { z-index: 2; }
70
+ .ui-vid__ctl { z-index: 3; }
71
+
72
+ /* Enlace para abrir el vídeo en su web: siempre a mano por si el autor no permite incrustarlo */
73
+ .ui-vid__tag--link { top: 10px; bottom: auto; left: auto; right: 10px; z-index: 2; text-decoration: none; }
74
+ .ui-vid__tag--link:hover { background: var(--acc); color: var(--bg); }
75
+ .ui-vid__tag--note { top: 10px; bottom: auto; left: 10px; z-index: 2; font-size: 11px; pointer-events: none; }
@@ -0,0 +1,15 @@
1
+ /** Estilos base de Swiper que usan `Carousel` e `ImageGallery` (los del kit, en components/ui/styles/ui-carousel.css, los retocan encima). */
2
+ import "swiper/css";
3
+ import "swiper/css/a11y";
4
+ import "swiper/css/autoplay";
5
+ import "swiper/css/effect-cards";
6
+ import "swiper/css/effect-coverflow";
7
+ import "swiper/css/effect-creative";
8
+ import "swiper/css/effect-cube";
9
+ import "swiper/css/effect-fade";
10
+ import "swiper/css/free-mode";
11
+ import "swiper/css/grid";
12
+ import "swiper/css/navigation";
13
+ import "swiper/css/pagination";
14
+ import "swiper/css/thumbs";
15
+ import "swiper/css/zoom";
@@ -0,0 +1,15 @@
1
+ /** Estilos base de Swiper que usan `Carousel` e `ImageGallery` (los del kit, en components/ui/styles/ui-carousel.css, los retocan encima). */
2
+ import "swiper/css";
3
+ import "swiper/css/a11y";
4
+ import "swiper/css/autoplay";
5
+ import "swiper/css/effect-cards";
6
+ import "swiper/css/effect-coverflow";
7
+ import "swiper/css/effect-creative";
8
+ import "swiper/css/effect-cube";
9
+ import "swiper/css/effect-fade";
10
+ import "swiper/css/free-mode";
11
+ import "swiper/css/grid";
12
+ import "swiper/css/navigation";
13
+ import "swiper/css/pagination";
14
+ import "swiper/css/thumbs";
15
+ import "swiper/css/zoom";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Las siete variantes de estilo del sistema (ver `docs/02-guia-de-componentes.md` §5).
3
+ * Cada una fija las variables `--s-*` en `components/ui/styles/ui-kit.css`; los componentes solo eligen la variante.
4
+ */
5
+ export declare const VARIANTS: readonly ["glass", "solid", "outline", "neon", "retro", "terminal", "minimal"];
6
+ export type Variant = (typeof VARIANTS)[number];
7
+ /** Clases del contenedor raíz de un componente con variante. */
8
+ export declare const vcls: (variant: Variant) => string;
9
+ /** Colores de un componente: cuál de los tokens usa como color principal. */
10
+ export declare const TONES: readonly ["fg", "acc", "acc2", "mut"];
11
+ export type Tone = (typeof TONES)[number];
12
+ export declare const tcls: (tone: Tone) => string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Las siete variantes de estilo del sistema (ver `docs/02-guia-de-componentes.md` §5).
3
+ * Cada una fija las variables `--s-*` en `components/ui/styles/ui-kit.css`; los componentes solo eligen la variante.
4
+ */
5
+ export const VARIANTS = ["glass", "solid", "outline", "neon", "retro", "terminal", "minimal"];
6
+ /** Clases del contenedor raíz de un componente con variante. */
7
+ export const vcls = (variant) => `ui-s ui-s--${variant}`;
8
+ /** Colores de un componente: cuál de los tokens usa como color principal. */
9
+ export const TONES = ["fg", "acc", "acc2", "mut"];
10
+ export const tcls = (tone) => `ui-tone--${tone}`;
@@ -0,0 +1,77 @@
1
+ /** Punto de entrada de Trama: cada componente por su nombre. También `import X from "trama-ui/X"`. */
2
+ export { default as Accordion } from "./components/ui/Accordion.js";
3
+ export { default as Alert } from "./components/ui/Alert.js";
4
+ export { default as ArticlesSection } from "./components/ui/ArticlesSection.js";
5
+ export { default as AsciiBackground } from "./components/ui/AsciiBackground.js";
6
+ export { default as AsciiCard } from "./components/ui/AsciiCard.js";
7
+ export { default as AsciiChart } from "./components/ui/AsciiChart.js";
8
+ export { default as Badge } from "./components/ui/Badge.js";
9
+ export { default as BitmapText } from "./components/ui/BitmapText.js";
10
+ export { default as BlogCard } from "./components/ui/BlogCard.js";
11
+ export { default as Breadcrumbs } from "./components/ui/Breadcrumbs.js";
12
+ export { default as Button } from "./components/ui/Button.js";
13
+ export { default as CTASection } from "./components/ui/CTASection.js";
14
+ export { default as Carousel } from "./components/ui/Carousel.js";
15
+ export { default as CheckboxGroup } from "./components/ui/CheckboxGroup.js";
16
+ export { default as CodeBlock } from "./components/ui/CodeBlock.js";
17
+ export { default as ContactForm } from "./components/ui/ContactForm.js";
18
+ export { default as CrtOverlay } from "./components/ui/CrtOverlay.js";
19
+ export { default as Divider } from "./components/ui/Divider.js";
20
+ export { default as Drawer } from "./components/ui/Drawer.js";
21
+ export { default as Dropdown } from "./components/ui/Dropdown.js";
22
+ export { default as FAQSection } from "./components/ui/FAQSection.js";
23
+ export { default as FeatureGrid } from "./components/ui/FeatureGrid.js";
24
+ export { default as Footer } from "./components/ui/Footer.js";
25
+ export { default as GlyphCursor } from "./components/ui/GlyphCursor.js";
26
+ export { default as GridBackground } from "./components/ui/GridBackground.js";
27
+ export { default as Hero } from "./components/ui/Hero.js";
28
+ export { default as HoverFX } from "./components/ui/HoverFX.js";
29
+ export { default as Icon } from "./components/ui/Icon.js";
30
+ export { default as ImageGallery } from "./components/ui/ImageGallery.js";
31
+ export { default as LogoCloud } from "./components/ui/LogoCloud.js";
32
+ export { default as MagneticButton } from "./components/ui/MagneticButton.js";
33
+ export { default as Marquee } from "./components/ui/Marquee.js";
34
+ export { default as Modal } from "./components/ui/Modal.js";
35
+ export { default as NavBar } from "./components/ui/NavBar.js";
36
+ export { default as NeonSign } from "./components/ui/NeonSign.js";
37
+ export { default as OtpInput } from "./components/ui/OtpInput.js";
38
+ export { default as Pagination } from "./components/ui/Pagination.js";
39
+ export { default as Panel } from "./components/ui/Panel.js";
40
+ export { default as PixelFrame } from "./components/ui/PixelFrame.js";
41
+ export { default as Presence } from "./components/ui/Presence.js";
42
+ export { default as PricingCard } from "./components/ui/PricingCard.js";
43
+ export { default as PricingSection } from "./components/ui/PricingSection.js";
44
+ export { default as Progress } from "./components/ui/Progress.js";
45
+ export { default as RadioGroup } from "./components/ui/RadioGroup.js";
46
+ export { default as RangeSlider } from "./components/ui/RangeSlider.js";
47
+ export { default as Reveal } from "./components/ui/Reveal.js";
48
+ export { default as SceneFlash } from "./components/ui/SceneFlash.js";
49
+ export { default as ScrambleText } from "./components/ui/ScrambleText.js";
50
+ export { default as ScrollArea } from "./components/ui/ScrollArea.js";
51
+ export { default as SectionHeader } from "./components/ui/SectionHeader.js";
52
+ export { default as Select } from "./components/ui/Select.js";
53
+ export { default as Skeleton } from "./components/ui/Skeleton.js";
54
+ export { default as Spinner } from "./components/ui/Spinner.js";
55
+ export { default as Spotlight } from "./components/ui/Spotlight.js";
56
+ export { default as Sprite } from "./components/ui/Sprite.js";
57
+ export { default as StatCounter } from "./components/ui/StatCounter.js";
58
+ export { default as StatsSection } from "./components/ui/StatsSection.js";
59
+ export { default as Stepper } from "./components/ui/Stepper.js";
60
+ export { default as Table } from "./components/ui/Table.js";
61
+ export { default as Tabs } from "./components/ui/Tabs.js";
62
+ export { default as TeamSection } from "./components/ui/TeamSection.js";
63
+ export { default as TerminalTyper } from "./components/ui/TerminalTyper.js";
64
+ export { default as Testimonial } from "./components/ui/Testimonial.js";
65
+ export { default as TestimonialSection } from "./components/ui/TestimonialSection.js";
66
+ export { default as TextField } from "./components/ui/TextField.js";
67
+ export { default as TextmodeBackground } from "./components/ui/TextmodeBackground.js";
68
+ export { default as Timeline } from "./components/ui/Timeline.js";
69
+ export { default as Toast } from "./components/ui/Toast.js";
70
+ export { default as Toggle } from "./components/ui/Toggle.js";
71
+ export { default as Tooltip } from "./components/ui/Tooltip.js";
72
+ export { default as Typewriter } from "./components/ui/Typewriter.js";
73
+ export { default as VideoPlayer } from "./components/ui/VideoPlayer.js";
74
+ export * from "./components/ui/intent.js";
75
+ export * from "./components/ui/fill.js";
76
+ export * from "./components/ui/variants.js";
77
+ export { tokensToStyle, neutralTokens, FONT_PRESETS, type TokenSet } from "./lib/ui/tokens.js";
package/dist/index.js ADDED
@@ -0,0 +1,77 @@
1
+ /** Punto de entrada de Trama: cada componente por su nombre. También `import X from "trama-ui/X"`. */
2
+ export { default as Accordion } from "./components/ui/Accordion.js";
3
+ export { default as Alert } from "./components/ui/Alert.js";
4
+ export { default as ArticlesSection } from "./components/ui/ArticlesSection.js";
5
+ export { default as AsciiBackground } from "./components/ui/AsciiBackground.js";
6
+ export { default as AsciiCard } from "./components/ui/AsciiCard.js";
7
+ export { default as AsciiChart } from "./components/ui/AsciiChart.js";
8
+ export { default as Badge } from "./components/ui/Badge.js";
9
+ export { default as BitmapText } from "./components/ui/BitmapText.js";
10
+ export { default as BlogCard } from "./components/ui/BlogCard.js";
11
+ export { default as Breadcrumbs } from "./components/ui/Breadcrumbs.js";
12
+ export { default as Button } from "./components/ui/Button.js";
13
+ export { default as CTASection } from "./components/ui/CTASection.js";
14
+ export { default as Carousel } from "./components/ui/Carousel.js";
15
+ export { default as CheckboxGroup } from "./components/ui/CheckboxGroup.js";
16
+ export { default as CodeBlock } from "./components/ui/CodeBlock.js";
17
+ export { default as ContactForm } from "./components/ui/ContactForm.js";
18
+ export { default as CrtOverlay } from "./components/ui/CrtOverlay.js";
19
+ export { default as Divider } from "./components/ui/Divider.js";
20
+ export { default as Drawer } from "./components/ui/Drawer.js";
21
+ export { default as Dropdown } from "./components/ui/Dropdown.js";
22
+ export { default as FAQSection } from "./components/ui/FAQSection.js";
23
+ export { default as FeatureGrid } from "./components/ui/FeatureGrid.js";
24
+ export { default as Footer } from "./components/ui/Footer.js";
25
+ export { default as GlyphCursor } from "./components/ui/GlyphCursor.js";
26
+ export { default as GridBackground } from "./components/ui/GridBackground.js";
27
+ export { default as Hero } from "./components/ui/Hero.js";
28
+ export { default as HoverFX } from "./components/ui/HoverFX.js";
29
+ export { default as Icon } from "./components/ui/Icon.js";
30
+ export { default as ImageGallery } from "./components/ui/ImageGallery.js";
31
+ export { default as LogoCloud } from "./components/ui/LogoCloud.js";
32
+ export { default as MagneticButton } from "./components/ui/MagneticButton.js";
33
+ export { default as Marquee } from "./components/ui/Marquee.js";
34
+ export { default as Modal } from "./components/ui/Modal.js";
35
+ export { default as NavBar } from "./components/ui/NavBar.js";
36
+ export { default as NeonSign } from "./components/ui/NeonSign.js";
37
+ export { default as OtpInput } from "./components/ui/OtpInput.js";
38
+ export { default as Pagination } from "./components/ui/Pagination.js";
39
+ export { default as Panel } from "./components/ui/Panel.js";
40
+ export { default as PixelFrame } from "./components/ui/PixelFrame.js";
41
+ export { default as Presence } from "./components/ui/Presence.js";
42
+ export { default as PricingCard } from "./components/ui/PricingCard.js";
43
+ export { default as PricingSection } from "./components/ui/PricingSection.js";
44
+ export { default as Progress } from "./components/ui/Progress.js";
45
+ export { default as RadioGroup } from "./components/ui/RadioGroup.js";
46
+ export { default as RangeSlider } from "./components/ui/RangeSlider.js";
47
+ export { default as Reveal } from "./components/ui/Reveal.js";
48
+ export { default as SceneFlash } from "./components/ui/SceneFlash.js";
49
+ export { default as ScrambleText } from "./components/ui/ScrambleText.js";
50
+ export { default as ScrollArea } from "./components/ui/ScrollArea.js";
51
+ export { default as SectionHeader } from "./components/ui/SectionHeader.js";
52
+ export { default as Select } from "./components/ui/Select.js";
53
+ export { default as Skeleton } from "./components/ui/Skeleton.js";
54
+ export { default as Spinner } from "./components/ui/Spinner.js";
55
+ export { default as Spotlight } from "./components/ui/Spotlight.js";
56
+ export { default as Sprite } from "./components/ui/Sprite.js";
57
+ export { default as StatCounter } from "./components/ui/StatCounter.js";
58
+ export { default as StatsSection } from "./components/ui/StatsSection.js";
59
+ export { default as Stepper } from "./components/ui/Stepper.js";
60
+ export { default as Table } from "./components/ui/Table.js";
61
+ export { default as Tabs } from "./components/ui/Tabs.js";
62
+ export { default as TeamSection } from "./components/ui/TeamSection.js";
63
+ export { default as TerminalTyper } from "./components/ui/TerminalTyper.js";
64
+ export { default as Testimonial } from "./components/ui/Testimonial.js";
65
+ export { default as TestimonialSection } from "./components/ui/TestimonialSection.js";
66
+ export { default as TextField } from "./components/ui/TextField.js";
67
+ export { default as TextmodeBackground } from "./components/ui/TextmodeBackground.js";
68
+ export { default as Timeline } from "./components/ui/Timeline.js";
69
+ export { default as Toast } from "./components/ui/Toast.js";
70
+ export { default as Toggle } from "./components/ui/Toggle.js";
71
+ export { default as Tooltip } from "./components/ui/Tooltip.js";
72
+ export { default as Typewriter } from "./components/ui/Typewriter.js";
73
+ export { default as VideoPlayer } from "./components/ui/VideoPlayer.js";
74
+ export * from "./components/ui/intent.js";
75
+ export * from "./components/ui/fill.js";
76
+ export * from "./components/ui/variants.js";
77
+ export { tokensToStyle, neutralTokens, FONT_PRESETS } from "./lib/ui/tokens.js";
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Fuentes procedurales para asciify-engine.
3
+ *
4
+ * asciify-engine convierte imágenes, vídeo o canvas en arte de caracteres. Como el
5
+ * proyecto no trae medios, cada demo dibuja su propia imagen animada en un canvas 2D
6
+ * y el motor la convierte en cada fotograma.
7
+ */
8
+ export type Pointer = {
9
+ /** Posición normalizada 0..1 (suavizada). Sin puntero real, vaga sola. */
10
+ x: number;
11
+ y: number;
12
+ down: boolean;
13
+ /** true si hay un puntero real sobre el lienzo */
14
+ active: boolean;
15
+ };
16
+ /** Progreso de scroll que leen las escenas "con progreso": `p` 0–1 y velocidad `v` -1..1. */
17
+ export type Progress = {
18
+ p: number;
19
+ v: number;
20
+ };
21
+ export type Painter = (ctx: CanvasRenderingContext2D, w: number, h: number, t: number, p: Pointer,
22
+ /** progreso propio de quien pinta; sin él, las escenas leen el `scrollState` global de las demos */
23
+ s?: Progress) => void;
24
+ export type SourceKind = "lava" | "synthwave" | "galaxy" | "waves" | "rings" | "plasma" | "torus" | "text" | "kaleido" | "rain" | "orbs" | "bigtext" | "bigglow" | "figlet" | "elastic" | "tide" | "wave" | "cube" | "pyramid" | "sphere" | "cylinder" | "cone" | "octahedron" | "tetrahedron" | "icosahedron" | "hexprism" | "diamond" | "torusknot" | "brew" | "bloom" | "arcade";
25
+ export declare const painters: Record<SourceKind, () => Painter>;