@proyecto-viviana/silapse 0.4.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 (394) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +192 -0
  3. package/dist/accordion/index.d.ts +6 -0
  4. package/dist/accordion/index.d.ts.map +1 -0
  5. package/dist/actionbar/index.d.ts +34 -0
  6. package/dist/actionbar/index.d.ts.map +1 -0
  7. package/dist/actiongroup/index.d.ts +42 -0
  8. package/dist/actiongroup/index.d.ts.map +1 -0
  9. package/dist/alert/index.d.ts +13 -0
  10. package/dist/alert/index.d.ts.map +1 -0
  11. package/dist/autocomplete/index.d.ts +51 -0
  12. package/dist/autocomplete/index.d.ts.map +1 -0
  13. package/dist/avatar/index.d.ts +18 -0
  14. package/dist/avatar/index.d.ts.map +1 -0
  15. package/dist/badge/index.d.ts +12 -0
  16. package/dist/badge/index.d.ts.map +1 -0
  17. package/dist/breadcrumbs/index.d.ts +38 -0
  18. package/dist/breadcrumbs/index.d.ts.map +1 -0
  19. package/dist/button/ActionButton.d.ts +21 -0
  20. package/dist/button/ActionButton.d.ts.map +1 -0
  21. package/dist/button/Button.d.ts +19 -0
  22. package/dist/button/Button.d.ts.map +1 -0
  23. package/dist/button/ClearButton.d.ts +19 -0
  24. package/dist/button/ClearButton.d.ts.map +1 -0
  25. package/dist/button/FieldButton.d.ts +16 -0
  26. package/dist/button/FieldButton.d.ts.map +1 -0
  27. package/dist/button/LogicButton.d.ts +16 -0
  28. package/dist/button/LogicButton.d.ts.map +1 -0
  29. package/dist/button/ToggleButton.d.ts +19 -0
  30. package/dist/button/ToggleButton.d.ts.map +1 -0
  31. package/dist/button/index.d.ts +13 -0
  32. package/dist/button/index.d.ts.map +1 -0
  33. package/dist/button/types.d.ts +23 -0
  34. package/dist/button/types.d.ts.map +1 -0
  35. package/dist/buttongroup/index.d.ts +11 -0
  36. package/dist/buttongroup/index.d.ts.map +1 -0
  37. package/dist/calendar/DateField.d.ts +47 -0
  38. package/dist/calendar/DateField.d.ts.map +1 -0
  39. package/dist/calendar/DatePicker.d.ts +28 -0
  40. package/dist/calendar/DatePicker.d.ts.map +1 -0
  41. package/dist/calendar/DateRangePicker.d.ts +26 -0
  42. package/dist/calendar/DateRangePicker.d.ts.map +1 -0
  43. package/dist/calendar/RangeCalendar.d.ts +42 -0
  44. package/dist/calendar/RangeCalendar.d.ts.map +1 -0
  45. package/dist/calendar/TimeField.d.ts +44 -0
  46. package/dist/calendar/TimeField.d.ts.map +1 -0
  47. package/dist/calendar/index.d.ts +50 -0
  48. package/dist/calendar/index.d.ts.map +1 -0
  49. package/dist/card/index.d.ts +11 -0
  50. package/dist/card/index.d.ts.map +1 -0
  51. package/dist/checkbox/index.d.ts +43 -0
  52. package/dist/checkbox/index.d.ts.map +1 -0
  53. package/dist/color/ColorEditor.d.ts +17 -0
  54. package/dist/color/ColorEditor.d.ts.map +1 -0
  55. package/dist/color/ColorSwatchPicker.d.ts +36 -0
  56. package/dist/color/ColorSwatchPicker.d.ts.map +1 -0
  57. package/dist/color/index.d.ts +233 -0
  58. package/dist/color/index.d.ts.map +1 -0
  59. package/dist/combobox/index.d.ts +81 -0
  60. package/dist/combobox/index.d.ts.map +1 -0
  61. package/dist/components.css +1152 -0
  62. package/dist/contextualhelp/index.d.ts +18 -0
  63. package/dist/contextualhelp/index.d.ts.map +1 -0
  64. package/dist/custom/calendar-card/index.d.ts +12 -0
  65. package/dist/custom/calendar-card/index.d.ts.map +1 -0
  66. package/dist/custom/chip/index.d.ts +16 -0
  67. package/dist/custom/chip/index.d.ts.map +1 -0
  68. package/dist/custom/conversation/index.d.ts +32 -0
  69. package/dist/custom/conversation/index.d.ts.map +1 -0
  70. package/dist/custom/event-card/index.d.ts +30 -0
  71. package/dist/custom/event-card/index.d.ts.map +1 -0
  72. package/dist/custom/header/index.d.ts +16 -0
  73. package/dist/custom/header/index.d.ts.map +1 -0
  74. package/dist/custom/lateral-nav/index.d.ts +32 -0
  75. package/dist/custom/lateral-nav/index.d.ts.map +1 -0
  76. package/dist/custom/logo/index.d.ts +28 -0
  77. package/dist/custom/logo/index.d.ts.map +1 -0
  78. package/dist/custom/nav-header/index.d.ts +13 -0
  79. package/dist/custom/nav-header/index.d.ts.map +1 -0
  80. package/dist/custom/page-layout/index.d.ts +13 -0
  81. package/dist/custom/page-layout/index.d.ts.map +1 -0
  82. package/dist/custom/profile-card/index.d.ts +16 -0
  83. package/dist/custom/profile-card/index.d.ts.map +1 -0
  84. package/dist/custom/project-card/index.d.ts +24 -0
  85. package/dist/custom/project-card/index.d.ts.map +1 -0
  86. package/dist/custom/timeline-item/index.d.ts +28 -0
  87. package/dist/custom/timeline-item/index.d.ts.map +1 -0
  88. package/dist/datepicker/index.d.ts +10 -0
  89. package/dist/datepicker/index.d.ts.map +1 -0
  90. package/dist/dialog/AlertDialog.d.ts +41 -0
  91. package/dist/dialog/AlertDialog.d.ts.map +1 -0
  92. package/dist/dialog/Dialog.d.ts +62 -0
  93. package/dist/dialog/Dialog.d.ts.map +1 -0
  94. package/dist/dialog/index.d.ts +5 -0
  95. package/dist/dialog/index.d.ts.map +1 -0
  96. package/dist/disclosure/index.d.ts +84 -0
  97. package/dist/disclosure/index.d.ts.map +1 -0
  98. package/dist/divider/index.d.ts +6 -0
  99. package/dist/divider/index.d.ts.map +1 -0
  100. package/dist/dnd/index.d.ts +7 -0
  101. package/dist/dnd/index.d.ts.map +1 -0
  102. package/dist/dropzone/index.d.ts +13 -0
  103. package/dist/dropzone/index.d.ts.map +1 -0
  104. package/dist/filetrigger/index.d.ts +13 -0
  105. package/dist/filetrigger/index.d.ts.map +1 -0
  106. package/dist/form/Field.d.ts +35 -0
  107. package/dist/form/Field.d.ts.map +1 -0
  108. package/dist/form/HelpText.d.ts +23 -0
  109. package/dist/form/HelpText.d.ts.map +1 -0
  110. package/dist/form/index.d.ts +20 -0
  111. package/dist/form/index.d.ts.map +1 -0
  112. package/dist/gridlist/index.d.ts +92 -0
  113. package/dist/gridlist/index.d.ts.map +1 -0
  114. package/dist/icon/Illustration.d.ts +22 -0
  115. package/dist/icon/Illustration.d.ts.map +1 -0
  116. package/dist/icon/UIIcon.d.ts +24 -0
  117. package/dist/icon/UIIcon.d.ts.map +1 -0
  118. package/dist/icon/icons/GitHubIcon.d.ts +8 -0
  119. package/dist/icon/icons/GitHubIcon.d.ts.map +1 -0
  120. package/dist/icon/index.d.ts +40 -0
  121. package/dist/icon/index.d.ts.map +1 -0
  122. package/dist/illustratedmessage/index.d.ts +14 -0
  123. package/dist/illustratedmessage/index.d.ts.map +1 -0
  124. package/dist/image/index.d.ts +11 -0
  125. package/dist/image/index.d.ts.map +1 -0
  126. package/dist/index.d.ts +231 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +10697 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/index.ssr.js +8944 -0
  131. package/dist/index.ssr.js.map +1 -0
  132. package/dist/inlinealert/index.d.ts +6 -0
  133. package/dist/inlinealert/index.d.ts.map +1 -0
  134. package/dist/label/index.d.ts +14 -0
  135. package/dist/label/index.d.ts.map +1 -0
  136. package/dist/labeledvalue/index.d.ts +25 -0
  137. package/dist/labeledvalue/index.d.ts.map +1 -0
  138. package/dist/landmark/index.d.ts +83 -0
  139. package/dist/landmark/index.d.ts.map +1 -0
  140. package/dist/layout/Flex.d.ts +29 -0
  141. package/dist/layout/Flex.d.ts.map +1 -0
  142. package/dist/layout/Grid.d.ts +37 -0
  143. package/dist/layout/Grid.d.ts.map +1 -0
  144. package/dist/layout/css-utils.d.ts +23 -0
  145. package/dist/layout/css-utils.d.ts.map +1 -0
  146. package/dist/layout/index.d.ts +11 -0
  147. package/dist/layout/index.d.ts.map +1 -0
  148. package/dist/link/index.d.ts +39 -0
  149. package/dist/link/index.d.ts.map +1 -0
  150. package/dist/list/index.d.ts +6 -0
  151. package/dist/list/index.d.ts.map +1 -0
  152. package/dist/listbox/index.d.ts +47 -0
  153. package/dist/listbox/index.d.ts.map +1 -0
  154. package/dist/menu/ActionMenu.d.ts +24 -0
  155. package/dist/menu/ActionMenu.d.ts.map +1 -0
  156. package/dist/menu/ContextualHelpTrigger.d.ts +36 -0
  157. package/dist/menu/ContextualHelpTrigger.d.ts.map +1 -0
  158. package/dist/menu/SubmenuTrigger.d.ts +14 -0
  159. package/dist/menu/SubmenuTrigger.d.ts.map +1 -0
  160. package/dist/menu/index.d.ts +80 -0
  161. package/dist/menu/index.d.ts.map +1 -0
  162. package/dist/meter/index.d.ts +51 -0
  163. package/dist/meter/index.d.ts.map +1 -0
  164. package/dist/numberfield/index.d.ts +32 -0
  165. package/dist/numberfield/index.d.ts.map +1 -0
  166. package/dist/overlays/Modal.d.ts +21 -0
  167. package/dist/overlays/Modal.d.ts.map +1 -0
  168. package/dist/overlays/OpenTransition.d.ts +46 -0
  169. package/dist/overlays/OpenTransition.d.ts.map +1 -0
  170. package/dist/overlays/Overlay.d.ts +21 -0
  171. package/dist/overlays/Overlay.d.ts.map +1 -0
  172. package/dist/overlays/Tray.d.ts +18 -0
  173. package/dist/overlays/Tray.d.ts.map +1 -0
  174. package/dist/overlays/index.d.ts +18 -0
  175. package/dist/overlays/index.d.ts.map +1 -0
  176. package/dist/picker/index.d.ts +6 -0
  177. package/dist/picker/index.d.ts.map +1 -0
  178. package/dist/popover/index.d.ts +86 -0
  179. package/dist/popover/index.d.ts.map +1 -0
  180. package/dist/progress/ProgressCircle.d.ts +31 -0
  181. package/dist/progress/ProgressCircle.d.ts.map +1 -0
  182. package/dist/progress/index.d.ts +8 -0
  183. package/dist/progress/index.d.ts.map +1 -0
  184. package/dist/progress-bar/index.d.ts +51 -0
  185. package/dist/progress-bar/index.d.ts.map +1 -0
  186. package/dist/provider/index.d.ts +77 -0
  187. package/dist/provider/index.d.ts.map +1 -0
  188. package/dist/radio/index.d.ts +39 -0
  189. package/dist/radio/index.d.ts.map +1 -0
  190. package/dist/searchfield/index.d.ts +29 -0
  191. package/dist/searchfield/index.d.ts.map +1 -0
  192. package/dist/select/index.d.ts +72 -0
  193. package/dist/select/index.d.ts.map +1 -0
  194. package/dist/separator/index.d.ts +38 -0
  195. package/dist/separator/index.d.ts.map +1 -0
  196. package/dist/shared-element/index.d.ts +10 -0
  197. package/dist/shared-element/index.d.ts.map +1 -0
  198. package/dist/slider/RangeSlider.d.ts +48 -0
  199. package/dist/slider/RangeSlider.d.ts.map +1 -0
  200. package/dist/slider/index.d.ts +32 -0
  201. package/dist/slider/index.d.ts.map +1 -0
  202. package/dist/statuslight/index.d.ts +22 -0
  203. package/dist/statuslight/index.d.ts.map +1 -0
  204. package/dist/steplist/index.d.ts +15 -0
  205. package/dist/steplist/index.d.ts.map +1 -0
  206. package/dist/story-utils/ErrorBoundary.d.ts +17 -0
  207. package/dist/story-utils/ErrorBoundary.d.ts.map +1 -0
  208. package/dist/story-utils/generatePowerset.d.ts +32 -0
  209. package/dist/story-utils/generatePowerset.d.ts.map +1 -0
  210. package/dist/story-utils/index.d.ts +9 -0
  211. package/dist/story-utils/index.d.ts.map +1 -0
  212. package/dist/style-macro-s1/index.d.ts +5 -0
  213. package/dist/style-macro-s1/index.d.ts.map +1 -0
  214. package/dist/styles.css +487 -0
  215. package/dist/switch/ToggleSwitch.d.ts +28 -0
  216. package/dist/switch/ToggleSwitch.d.ts.map +1 -0
  217. package/dist/switch/index.d.ts +26 -0
  218. package/dist/switch/index.d.ts.map +1 -0
  219. package/dist/table/index.d.ts +140 -0
  220. package/dist/table/index.d.ts.map +1 -0
  221. package/dist/tabs/index.d.ts +56 -0
  222. package/dist/tabs/index.d.ts.map +1 -0
  223. package/dist/tag/index.d.ts +6 -0
  224. package/dist/tag/index.d.ts.map +1 -0
  225. package/dist/tag-group/index.d.ts +84 -0
  226. package/dist/tag-group/index.d.ts.map +1 -0
  227. package/dist/text/Heading.d.ts +22 -0
  228. package/dist/text/Heading.d.ts.map +1 -0
  229. package/dist/text/Keyboard.d.ts +16 -0
  230. package/dist/text/Keyboard.d.ts.map +1 -0
  231. package/dist/text/index.d.ts +20 -0
  232. package/dist/text/index.d.ts.map +1 -0
  233. package/dist/textfield/TextArea.d.ts +30 -0
  234. package/dist/textfield/TextArea.d.ts.map +1 -0
  235. package/dist/textfield/index.d.ts +27 -0
  236. package/dist/textfield/index.d.ts.map +1 -0
  237. package/dist/theme/types.d.ts +10 -0
  238. package/dist/theme/types.d.ts.map +1 -0
  239. package/dist/theme-dark/index.d.ts +10 -0
  240. package/dist/theme-dark/index.d.ts.map +1 -0
  241. package/dist/theme-default/index.d.ts +8 -0
  242. package/dist/theme-default/index.d.ts.map +1 -0
  243. package/dist/theme-express/index.d.ts +5 -0
  244. package/dist/theme-express/index.d.ts.map +1 -0
  245. package/dist/theme-light/index.d.ts +10 -0
  246. package/dist/theme-light/index.d.ts.map +1 -0
  247. package/dist/theme.css +360 -0
  248. package/dist/toast/index.d.ts +101 -0
  249. package/dist/toast/index.d.ts.map +1 -0
  250. package/dist/toolbar/index.d.ts +42 -0
  251. package/dist/toolbar/index.d.ts.map +1 -0
  252. package/dist/tooltip/index.d.ts +78 -0
  253. package/dist/tooltip/index.d.ts.map +1 -0
  254. package/dist/tree/index.d.ts +99 -0
  255. package/dist/tree/index.d.ts.map +1 -0
  256. package/dist/view/Content.d.ts +37 -0
  257. package/dist/view/Content.d.ts.map +1 -0
  258. package/dist/view/index.d.ts +13 -0
  259. package/dist/view/index.d.ts.map +1 -0
  260. package/dist/well/index.d.ts +11 -0
  261. package/dist/well/index.d.ts.map +1 -0
  262. package/package.json +67 -0
  263. package/src/accordion/index.tsx +19 -0
  264. package/src/actionbar/index.tsx +92 -0
  265. package/src/actiongroup/index.tsx +110 -0
  266. package/src/alert/index.tsx +59 -0
  267. package/src/assets/favicon.png +0 -0
  268. package/src/assets/fire.gif +0 -0
  269. package/src/autocomplete/index.tsx +151 -0
  270. package/src/avatar/index.tsx +75 -0
  271. package/src/badge/index.tsx +43 -0
  272. package/src/breadcrumbs/index.tsx +212 -0
  273. package/src/button/ActionButton.tsx +80 -0
  274. package/src/button/Button.tsx +76 -0
  275. package/src/button/ClearButton.tsx +81 -0
  276. package/src/button/FieldButton.tsx +60 -0
  277. package/src/button/LogicButton.tsx +62 -0
  278. package/src/button/ToggleButton.tsx +77 -0
  279. package/src/button/index.ts +12 -0
  280. package/src/button/types.ts +24 -0
  281. package/src/buttongroup/index.tsx +25 -0
  282. package/src/calendar/DateField.tsx +208 -0
  283. package/src/calendar/DatePicker.tsx +257 -0
  284. package/src/calendar/DateRangePicker.tsx +254 -0
  285. package/src/calendar/RangeCalendar.tsx +238 -0
  286. package/src/calendar/TimeField.tsx +204 -0
  287. package/src/calendar/index.tsx +225 -0
  288. package/src/card/index.tsx +24 -0
  289. package/src/checkbox/index.tsx +259 -0
  290. package/src/color/ColorEditor.tsx +60 -0
  291. package/src/color/ColorSwatchPicker.tsx +169 -0
  292. package/src/color/index.tsx +725 -0
  293. package/src/combobox/index.tsx +398 -0
  294. package/src/components.css +1152 -0
  295. package/src/contextualhelp/index.tsx +42 -0
  296. package/src/custom/calendar-card/index.tsx +66 -0
  297. package/src/custom/chip/index.tsx +47 -0
  298. package/src/custom/conversation/index.tsx +107 -0
  299. package/src/custom/event-card/index.tsx +133 -0
  300. package/src/custom/header/index.tsx +33 -0
  301. package/src/custom/lateral-nav/index.tsx +88 -0
  302. package/src/custom/logo/index.tsx +58 -0
  303. package/src/custom/nav-header/index.tsx +45 -0
  304. package/src/custom/page-layout/index.tsx +29 -0
  305. package/src/custom/profile-card/index.tsx +64 -0
  306. package/src/custom/project-card/index.tsx +59 -0
  307. package/src/custom/timeline-item/index.tsx +105 -0
  308. package/src/datepicker/index.tsx +23 -0
  309. package/src/dialog/AlertDialog.tsx +140 -0
  310. package/src/dialog/Dialog.tsx +195 -0
  311. package/src/dialog/index.tsx +5 -0
  312. package/src/disclosure/index.tsx +310 -0
  313. package/src/divider/index.tsx +11 -0
  314. package/src/dnd/index.tsx +23 -0
  315. package/src/dropzone/index.tsx +48 -0
  316. package/src/filetrigger/index.tsx +28 -0
  317. package/src/form/Field.tsx +94 -0
  318. package/src/form/HelpText.tsx +48 -0
  319. package/src/form/index.tsx +48 -0
  320. package/src/gridlist/index.tsx +403 -0
  321. package/src/icon/Illustration.tsx +55 -0
  322. package/src/icon/UIIcon.tsx +59 -0
  323. package/src/icon/icons/GitHubIcon.tsx +22 -0
  324. package/src/icon/index.tsx +81 -0
  325. package/src/illustratedmessage/index.tsx +44 -0
  326. package/src/image/index.tsx +22 -0
  327. package/src/index.ts +666 -0
  328. package/src/inlinealert/index.tsx +10 -0
  329. package/src/label/index.tsx +36 -0
  330. package/src/labeledvalue/index.tsx +62 -0
  331. package/src/landmark/index.tsx +231 -0
  332. package/src/layout/Flex.tsx +94 -0
  333. package/src/layout/Grid.tsx +98 -0
  334. package/src/layout/css-utils.ts +31 -0
  335. package/src/layout/index.tsx +12 -0
  336. package/src/link/index.tsx +132 -0
  337. package/src/list/index.tsx +17 -0
  338. package/src/listbox/index.tsx +251 -0
  339. package/src/menu/ActionMenu.tsx +117 -0
  340. package/src/menu/ContextualHelpTrigger.tsx +122 -0
  341. package/src/menu/SubmenuTrigger.tsx +28 -0
  342. package/src/menu/index.tsx +309 -0
  343. package/src/meter/index.tsx +141 -0
  344. package/src/numberfield/index.tsx +282 -0
  345. package/src/overlays/Modal.tsx +64 -0
  346. package/src/overlays/OpenTransition.tsx +110 -0
  347. package/src/overlays/Overlay.tsx +47 -0
  348. package/src/overlays/Tray.tsx +48 -0
  349. package/src/overlays/index.tsx +55 -0
  350. package/src/picker/index.tsx +20 -0
  351. package/src/popover/index.tsx +261 -0
  352. package/src/progress/ProgressCircle.tsx +114 -0
  353. package/src/progress/index.tsx +14 -0
  354. package/src/progress-bar/index.tsx +144 -0
  355. package/src/provider/index.tsx +358 -0
  356. package/src/radio/index.tsx +192 -0
  357. package/src/searchfield/index.tsx +274 -0
  358. package/src/select/index.tsx +366 -0
  359. package/src/separator/index.tsx +110 -0
  360. package/src/shared-element/index.tsx +38 -0
  361. package/src/slider/RangeSlider.tsx +344 -0
  362. package/src/slider/index.tsx +232 -0
  363. package/src/statuslight/index.tsx +54 -0
  364. package/src/steplist/index.tsx +40 -0
  365. package/src/story-utils/ErrorBoundary.tsx +50 -0
  366. package/src/story-utils/generatePowerset.ts +63 -0
  367. package/src/story-utils/index.ts +13 -0
  368. package/src/style-macro-s1/index.ts +8 -0
  369. package/src/styles.css +487 -0
  370. package/src/switch/ToggleSwitch.tsx +114 -0
  371. package/src/switch/index.tsx +95 -0
  372. package/src/table/index.tsx +534 -0
  373. package/src/tabs/index.tsx +276 -0
  374. package/src/tag/index.tsx +12 -0
  375. package/src/tag-group/index.tsx +246 -0
  376. package/src/test-utils/index.ts +40 -0
  377. package/src/text/Heading.tsx +61 -0
  378. package/src/text/Keyboard.tsx +38 -0
  379. package/src/text/index.tsx +52 -0
  380. package/src/textfield/TextArea.tsx +193 -0
  381. package/src/textfield/index.tsx +191 -0
  382. package/src/theme/types.ts +10 -0
  383. package/src/theme-dark/index.ts +63 -0
  384. package/src/theme-default/index.ts +8 -0
  385. package/src/theme-express/index.ts +6 -0
  386. package/src/theme-light/index.ts +63 -0
  387. package/src/theme.css +360 -0
  388. package/src/toast/index.tsx +328 -0
  389. package/src/toolbar/index.tsx +110 -0
  390. package/src/tooltip/index.tsx +197 -0
  391. package/src/tree/index.tsx +496 -0
  392. package/src/view/Content.tsx +76 -0
  393. package/src/view/index.tsx +28 -0
  394. package/src/well/index.tsx +24 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Text component for proyecto-viviana-silapse
3
+ *
4
+ * Styling-only wrapper around solidaria-components Text.
5
+ */
6
+
7
+ import { type JSX, splitProps } from 'solid-js';
8
+ import {
9
+ Text as HeadlessText,
10
+ type TextProps as HeadlessTextProps,
11
+ } from '@proyecto-viviana/solidaria-components';
12
+
13
+ export type TextVariant = 'default' | 'muted' | 'success' | 'danger';
14
+ export type TextSize = 'sm' | 'md' | 'lg';
15
+
16
+ export interface TextProps extends Omit<HeadlessTextProps, 'class'> {
17
+ variant?: TextVariant;
18
+ size?: TextSize;
19
+ class?: string;
20
+ }
21
+
22
+ const variantStyles: Record<TextVariant, string> = {
23
+ default: 'text-primary-100',
24
+ muted: 'text-primary-400',
25
+ success: 'text-green-500',
26
+ danger: 'text-danger-400',
27
+ };
28
+
29
+ const sizeStyles: Record<TextSize, string> = {
30
+ sm: 'text-sm',
31
+ md: 'text-base',
32
+ lg: 'text-lg',
33
+ };
34
+
35
+ export function Text(props: TextProps): JSX.Element {
36
+ const [local, headlessProps] = splitProps(props, ['variant', 'size', 'class']);
37
+ const variant = () => local.variant ?? 'default';
38
+ const size = () => local.size ?? 'md';
39
+ return (
40
+ <HeadlessText
41
+ {...headlessProps}
42
+ class={`${variantStyles[variant()]} ${sizeStyles[size()]} ${local.class ?? ''}`}
43
+ />
44
+ );
45
+ }
46
+
47
+ // Sub-component re-exports
48
+ export { Heading } from './Heading';
49
+ export type { HeadingProps, HeadingLevel } from './Heading';
50
+ export { StyledKeyboard } from './Keyboard';
51
+ export type { KeyboardProps as StyledKeyboardProps } from './Keyboard';
52
+
@@ -0,0 +1,193 @@
1
+ /**
2
+ * TextArea component for proyecto-viviana-silapse
3
+ *
4
+ * Styled multiline text field with auto-resize support.
5
+ * Built on top of solidaria-components TextField + TextArea.
6
+ */
7
+
8
+ import { type JSX, splitProps, Show, useContext } from 'solid-js'
9
+ import {
10
+ TextField as HeadlessTextField,
11
+ Label as HeadlessLabel,
12
+ TextArea as HeadlessTextArea,
13
+ TextFieldContext,
14
+ type TextFieldProps as HeadlessTextFieldProps,
15
+ type TextFieldRenderProps,
16
+ } from '@proyecto-viviana/solidaria-components'
17
+ import { useProviderProps } from '../provider'
18
+
19
+ // ============================================
20
+ // TYPES
21
+ // ============================================
22
+
23
+ export type TextAreaSize = 'sm' | 'md' | 'lg'
24
+ export type TextAreaVariant = 'outline' | 'filled'
25
+
26
+ export interface TextAreaProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {
27
+ /** The size of the text area. */
28
+ size?: TextAreaSize
29
+ /** The visual variant of the text area. */
30
+ variant?: TextAreaVariant
31
+ /** Additional CSS class name. */
32
+ class?: string
33
+ /** Label text for the textarea. */
34
+ label?: string
35
+ /** Description text shown below the textarea. */
36
+ description?: string
37
+ /** Error message shown when invalid. */
38
+ errorMessage?: string
39
+ }
40
+
41
+ // ============================================
42
+ // STYLES
43
+ // ============================================
44
+
45
+ const sizeStyles = {
46
+ sm: {
47
+ textarea: 'min-h-[60px] px-2 py-1.5 text-sm',
48
+ label: 'text-sm',
49
+ description: 'text-xs',
50
+ },
51
+ md: {
52
+ textarea: 'min-h-[80px] px-3 py-2 text-base',
53
+ label: 'text-sm',
54
+ description: 'text-sm',
55
+ },
56
+ lg: {
57
+ textarea: 'min-h-[100px] px-4 py-3 text-lg',
58
+ label: 'text-base',
59
+ description: 'text-sm',
60
+ },
61
+ }
62
+
63
+ function TextAreaDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
64
+ const context = useContext(TextFieldContext)
65
+ if (!context) return null
66
+ const descriptionProps = () => {
67
+ const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>
68
+ return rest
69
+ }
70
+ return (
71
+ <p {...descriptionProps()} class={props.class}>
72
+ {props.children}
73
+ </p>
74
+ )
75
+ }
76
+
77
+ function TextAreaError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
78
+ const context = useContext(TextFieldContext)
79
+ if (!context) return null
80
+ const errorMessageProps = () => {
81
+ const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>
82
+ return rest
83
+ }
84
+ return (
85
+ <p {...errorMessageProps()} class={props.class}>
86
+ {props.children}
87
+ </p>
88
+ )
89
+ }
90
+
91
+ // ============================================
92
+ // COMPONENT
93
+ // ============================================
94
+
95
+ /**
96
+ * TextAreas are multiline text inputs, useful for cases where users have
97
+ * a sizable amount of text to enter.
98
+ */
99
+ export function TextArea(props: TextAreaProps): JSX.Element {
100
+ const mergedProps = useProviderProps(props)
101
+ const [local, headlessProps] = splitProps(mergedProps, [
102
+ 'size',
103
+ 'variant',
104
+ 'class',
105
+ 'label',
106
+ 'description',
107
+ 'errorMessage',
108
+ ])
109
+
110
+ const size = () => sizeStyles[local.size ?? 'md']
111
+
112
+ const containerClasses = () => {
113
+ const base = 'flex flex-col'
114
+ const custom = local.class ?? ''
115
+ return [base, custom].filter(Boolean).join(' ')
116
+ }
117
+
118
+ const textareaClasses = (renderProps: TextFieldRenderProps) => {
119
+ const base = 'w-full rounded-md transition-all duration-200 outline-none resize-none overflow-hidden'
120
+ const sizeClass = size().textarea
121
+
122
+ const variantClass = local.variant === 'filled'
123
+ ? 'bg-bg-200 border border-transparent'
124
+ : 'bg-transparent border border-bg-400'
125
+
126
+ let stateClass = ''
127
+ if (renderProps.isDisabled) {
128
+ stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'
129
+ } else if (renderProps.isInvalid) {
130
+ stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'
131
+ } else {
132
+ stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'
133
+ }
134
+
135
+ const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'
136
+
137
+ return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')
138
+ }
139
+
140
+ const labelClasses = () => {
141
+ const base = 'block font-medium text-primary-200 mb-1'
142
+ const sizeClass = size().label
143
+ return [base, sizeClass].filter(Boolean).join(' ')
144
+ }
145
+
146
+ const descriptionClasses = () => {
147
+ const base = 'mt-1 text-primary-400'
148
+ const sizeClass = size().description
149
+ return [base, sizeClass].filter(Boolean).join(' ')
150
+ }
151
+
152
+ const errorClasses = () => {
153
+ const base = 'mt-1 text-danger-400'
154
+ const sizeClass = size().description
155
+ return [base, sizeClass].filter(Boolean).join(' ')
156
+ }
157
+
158
+ return (
159
+ <HeadlessTextField
160
+ {...headlessProps}
161
+ label={local.label}
162
+ description={local.description}
163
+ errorMessage={local.errorMessage}
164
+ class={containerClasses()}
165
+ children={(renderProps) => (
166
+ <>
167
+ <Show when={local.label}>
168
+ <HeadlessLabel class={labelClasses()}>
169
+ {local.label}
170
+ <Show when={renderProps.isRequired}>
171
+ <span class="text-danger-400 ml-0.5">*</span>
172
+ </Show>
173
+ </HeadlessLabel>
174
+ </Show>
175
+
176
+ <HeadlessTextArea class={textareaClasses(renderProps)} />
177
+
178
+ <Show when={local.description && !renderProps.isInvalid}>
179
+ <TextAreaDescription class={descriptionClasses()}>
180
+ {local.description}
181
+ </TextAreaDescription>
182
+ </Show>
183
+
184
+ <Show when={local.errorMessage && renderProps.isInvalid}>
185
+ <TextAreaError class={errorClasses()}>
186
+ {local.errorMessage}
187
+ </TextAreaError>
188
+ </Show>
189
+ </>
190
+ )}
191
+ />
192
+ )
193
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * TextField component for proyecto-viviana-silapse
3
+ *
4
+ * Styled text field built on top of solidaria-components.
5
+ */
6
+
7
+ import { type JSX, splitProps, Show, useContext } from 'solid-js'
8
+ import {
9
+ TextField as HeadlessTextField,
10
+ Label as HeadlessLabel,
11
+ Input as HeadlessInput,
12
+ TextFieldContext,
13
+ type TextFieldProps as HeadlessTextFieldProps,
14
+ type TextFieldRenderProps,
15
+ } from '@proyecto-viviana/solidaria-components'
16
+ import { useProviderProps } from '../provider'
17
+
18
+ // ============================================
19
+ // TYPES
20
+ // ============================================
21
+
22
+ export type TextFieldSize = 'sm' | 'md' | 'lg'
23
+ export type TextFieldVariant = 'outline' | 'filled'
24
+
25
+ export interface TextFieldProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {
26
+ /** The size of the text field. */
27
+ size?: TextFieldSize
28
+ /** The visual variant of the text field. */
29
+ variant?: TextFieldVariant
30
+ /** Additional CSS class name. */
31
+ class?: string
32
+ /** Label text for the input. */
33
+ label?: string
34
+ /** Description text shown below the input. */
35
+ description?: string
36
+ /** Error message shown when invalid. */
37
+ errorMessage?: string
38
+ }
39
+
40
+ // ============================================
41
+ // STYLES
42
+ // ============================================
43
+
44
+ const sizeStyles = {
45
+ sm: {
46
+ input: 'h-8 px-2 text-sm',
47
+ label: 'text-sm',
48
+ description: 'text-xs',
49
+ },
50
+ md: {
51
+ input: 'h-10 px-3 text-base',
52
+ label: 'text-sm',
53
+ description: 'text-sm',
54
+ },
55
+ lg: {
56
+ input: 'h-12 px-4 text-lg',
57
+ label: 'text-base',
58
+ description: 'text-sm',
59
+ },
60
+ }
61
+
62
+ function TextFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
63
+ const context = useContext(TextFieldContext)
64
+ if (!context) return null
65
+ const descriptionProps = () => {
66
+ const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>
67
+ return rest
68
+ }
69
+ return (
70
+ <p {...descriptionProps()} class={props.class}>
71
+ {props.children}
72
+ </p>
73
+ )
74
+ }
75
+
76
+ function TextFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
77
+ const context = useContext(TextFieldContext)
78
+ if (!context) return null
79
+ const errorMessageProps = () => {
80
+ const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>
81
+ return rest
82
+ }
83
+ return (
84
+ <p {...errorMessageProps()} class={props.class}>
85
+ {props.children}
86
+ </p>
87
+ )
88
+ }
89
+
90
+ // ============================================
91
+ // COMPONENT
92
+ // ============================================
93
+
94
+ export { TextArea } from './TextArea';
95
+ export type { TextAreaProps, TextAreaSize, TextAreaVariant } from './TextArea';
96
+
97
+ export function TextField(props: TextFieldProps): JSX.Element {
98
+ const mergedProps = useProviderProps(props)
99
+ const [local, headlessProps] = splitProps(mergedProps, [
100
+ 'size',
101
+ 'variant',
102
+ 'class',
103
+ 'label',
104
+ 'description',
105
+ 'errorMessage',
106
+ ])
107
+
108
+ const size = () => sizeStyles[local.size ?? 'md']
109
+
110
+ const containerClasses = () => {
111
+ const base = 'flex flex-col'
112
+ const custom = local.class ?? ''
113
+ return [base, custom].filter(Boolean).join(' ')
114
+ }
115
+
116
+ const inputClasses = (renderProps: TextFieldRenderProps) => {
117
+ const base = 'w-full rounded-md transition-all duration-200 outline-none'
118
+ const sizeClass = size().input
119
+
120
+ const variantClass = local.variant === 'filled'
121
+ ? 'bg-bg-200 border border-transparent'
122
+ : 'bg-transparent border border-bg-400'
123
+
124
+ let stateClass = ''
125
+ if (renderProps.isDisabled) {
126
+ stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'
127
+ } else if (renderProps.isInvalid) {
128
+ stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'
129
+ } else {
130
+ stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'
131
+ }
132
+
133
+ const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'
134
+
135
+ return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')
136
+ }
137
+
138
+ const labelClasses = () => {
139
+ const base = 'block font-medium text-primary-200 mb-1'
140
+ const sizeClass = size().label
141
+ return [base, sizeClass].filter(Boolean).join(' ')
142
+ }
143
+
144
+ const descriptionClasses = () => {
145
+ const base = 'mt-1 text-primary-400'
146
+ const sizeClass = size().description
147
+ return [base, sizeClass].filter(Boolean).join(' ')
148
+ }
149
+
150
+ const errorClasses = () => {
151
+ const base = 'mt-1 text-danger-400'
152
+ const sizeClass = size().description
153
+ return [base, sizeClass].filter(Boolean).join(' ')
154
+ }
155
+
156
+ return (
157
+ <HeadlessTextField
158
+ {...headlessProps}
159
+ label={local.label}
160
+ description={local.description}
161
+ errorMessage={local.errorMessage}
162
+ class={containerClasses()}
163
+ children={(renderProps) => (
164
+ <>
165
+ <Show when={local.label}>
166
+ <HeadlessLabel class={labelClasses()}>
167
+ {local.label}
168
+ <Show when={renderProps.isRequired}>
169
+ <span class="text-danger-400 ml-0.5">*</span>
170
+ </Show>
171
+ </HeadlessLabel>
172
+ </Show>
173
+
174
+ <HeadlessInput class={inputClasses(renderProps)} />
175
+
176
+ <Show when={local.description && !renderProps.isInvalid}>
177
+ <TextFieldDescription class={descriptionClasses()}>
178
+ {local.description}
179
+ </TextFieldDescription>
180
+ </Show>
181
+
182
+ <Show when={local.errorMessage && renderProps.isInvalid}>
183
+ <TextFieldError class={errorClasses()}>
184
+ {local.errorMessage}
185
+ </TextFieldError>
186
+ </Show>
187
+ </>
188
+ )}
189
+ />
190
+ )
191
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Theme type definition for proyecto-viviana-silapse
3
+ */
4
+
5
+ export interface Theme {
6
+ /** CSS class to apply to the root element. */
7
+ className: string;
8
+ /** CSS custom properties for the theme. */
9
+ properties: Record<string, string>;
10
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Theme Dark module for proyecto-viviana-silapse
3
+ *
4
+ * Dark mode CSS custom properties. Apply the class to the root element
5
+ * or use the Provider component with colorScheme="dark".
6
+ */
7
+
8
+ import type { Theme } from '../theme/types';
9
+
10
+ export const themeDarkClass = 'vui-theme-dark';
11
+
12
+ export const darkTheme: Theme = {
13
+ className: themeDarkClass,
14
+ properties: {
15
+ // Backgrounds
16
+ '--vui-bg-100': '#0a0a0a',
17
+ '--vui-bg-200': '#141414',
18
+ '--vui-bg-300': '#1e1e1e',
19
+ '--vui-bg-400': '#282828',
20
+ '--vui-bg-500': '#333333',
21
+
22
+ // Text / Primary
23
+ '--vui-text-primary': '#f5f5f5',
24
+ '--vui-text-secondary': '#a3a3a3',
25
+ '--vui-text-tertiary': '#737373',
26
+ '--vui-text-disabled': '#525252',
27
+
28
+ // Accent
29
+ '--vui-accent': '#818cf8',
30
+ '--vui-accent-hover': '#a5b4fc',
31
+ '--vui-accent-active': '#6366f1',
32
+ '--vui-accent-subtle': 'rgba(129, 140, 248, 0.15)',
33
+
34
+ // Border
35
+ '--vui-border': '#374151',
36
+ '--vui-border-hover': '#4b5563',
37
+ '--vui-border-focus': '#818cf8',
38
+
39
+ // Focus
40
+ '--vui-focus-ring': 'rgba(129, 140, 248, 0.5)',
41
+
42
+ // Status: Error/Danger
43
+ '--vui-danger': '#f87171',
44
+ '--vui-danger-subtle': 'rgba(248, 113, 113, 0.15)',
45
+
46
+ // Status: Success
47
+ '--vui-success': '#4ade80',
48
+ '--vui-success-subtle': 'rgba(74, 222, 128, 0.15)',
49
+
50
+ // Status: Warning
51
+ '--vui-warning': '#fbbf24',
52
+ '--vui-warning-subtle': 'rgba(251, 191, 36, 0.15)',
53
+
54
+ // Status: Info
55
+ '--vui-info': '#60a5fa',
56
+ '--vui-info-subtle': 'rgba(96, 165, 250, 0.15)',
57
+
58
+ // Overlay
59
+ '--vui-overlay-bg': 'rgba(0, 0, 0, 0.6)',
60
+ '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3)',
61
+ '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)',
62
+ },
63
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Theme Default module for proyecto-viviana-silapse
3
+ *
4
+ * Re-exports the light theme as the default theme.
5
+ */
6
+
7
+ export { themeLightClass as themeDefaultClass } from '../theme-light';
8
+ export { lightTheme as defaultTheme } from '../theme-light';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Theme Express compatibility module.
3
+ */
4
+
5
+ export const themeExpressClass = 'vui-theme-express';
6
+
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Theme Light module for proyecto-viviana-silapse
3
+ *
4
+ * Light theme CSS custom properties. Apply the class to the root element
5
+ * or use the Provider component with colorScheme="light".
6
+ */
7
+
8
+ import type { Theme } from '../theme/types';
9
+
10
+ export const themeLightClass = 'vui-theme-light';
11
+
12
+ export const lightTheme: Theme = {
13
+ className: themeLightClass,
14
+ properties: {
15
+ // Backgrounds
16
+ '--vui-bg-100': '#ffffff',
17
+ '--vui-bg-200': '#fafafa',
18
+ '--vui-bg-300': '#f5f5f5',
19
+ '--vui-bg-400': '#eeeeee',
20
+ '--vui-bg-500': '#e0e0e0',
21
+
22
+ // Text / Primary
23
+ '--vui-text-primary': '#1a1a1a',
24
+ '--vui-text-secondary': '#666666',
25
+ '--vui-text-tertiary': '#999999',
26
+ '--vui-text-disabled': '#bdbdbd',
27
+
28
+ // Accent
29
+ '--vui-accent': '#6366f1',
30
+ '--vui-accent-hover': '#5558e6',
31
+ '--vui-accent-active': '#4f46e5',
32
+ '--vui-accent-subtle': 'rgba(99, 102, 241, 0.1)',
33
+
34
+ // Border
35
+ '--vui-border': '#e5e7eb',
36
+ '--vui-border-hover': '#d1d5db',
37
+ '--vui-border-focus': '#6366f1',
38
+
39
+ // Focus
40
+ '--vui-focus-ring': 'rgba(99, 102, 241, 0.5)',
41
+
42
+ // Status: Error/Danger
43
+ '--vui-danger': '#ef4444',
44
+ '--vui-danger-subtle': 'rgba(239, 68, 68, 0.1)',
45
+
46
+ // Status: Success
47
+ '--vui-success': '#22c55e',
48
+ '--vui-success-subtle': 'rgba(34, 197, 94, 0.1)',
49
+
50
+ // Status: Warning
51
+ '--vui-warning': '#f59e0b',
52
+ '--vui-warning-subtle': 'rgba(245, 158, 11, 0.1)',
53
+
54
+ // Status: Info
55
+ '--vui-info': '#3b82f6',
56
+ '--vui-info-subtle': 'rgba(59, 130, 246, 0.1)',
57
+
58
+ // Overlay
59
+ '--vui-overlay-bg': 'rgba(0, 0, 0, 0.4)',
60
+ '--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',
61
+ '--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',
62
+ },
63
+ };