@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,225 @@
1
+ /**
2
+ * Calendar component for proyecto-viviana-silapse
3
+ *
4
+ * Styled calendar component built on top of solidaria-components.
5
+ * A calendar displays a grid of days and allows users to select dates.
6
+ */
7
+
8
+ import { type JSX, splitProps } from 'solid-js';
9
+ import {
10
+ Calendar as HeadlessCalendar,
11
+ CalendarHeading,
12
+ CalendarButton,
13
+ CalendarGrid,
14
+ CalendarCell,
15
+ type CalendarDate,
16
+ type DateValue,
17
+ } from '@proyecto-viviana/solidaria-components';
18
+ import type { CalendarStateProps } from '@proyecto-viviana/solid-stately';
19
+ import { useProviderProps } from '../provider';
20
+
21
+ // ============================================
22
+ // TYPES
23
+ // ============================================
24
+
25
+ export type CalendarSize = 'sm' | 'md' | 'lg';
26
+
27
+ export interface CalendarProps<T extends DateValue = DateValue>
28
+ extends Omit<CalendarStateProps<T>, 'locale'> {
29
+ /** The size of the calendar. @default 'md' */
30
+ size?: CalendarSize;
31
+ /** Additional CSS class name. */
32
+ class?: string;
33
+ /** Whether to show week numbers. */
34
+ showWeekNumbers?: boolean;
35
+ /** The locale to use for formatting. */
36
+ locale?: string;
37
+ /** Custom aria label. */
38
+ 'aria-label'?: string;
39
+ }
40
+
41
+ // ============================================
42
+ // STYLES
43
+ // ============================================
44
+
45
+ const sizeStyles = {
46
+ sm: {
47
+ container: 'w-64',
48
+ header: 'text-sm',
49
+ cell: 'w-8 h-8 text-xs',
50
+ button: 'w-6 h-6',
51
+ },
52
+ md: {
53
+ container: 'w-80',
54
+ header: 'text-base',
55
+ cell: 'w-10 h-10 text-sm',
56
+ button: 'w-8 h-8',
57
+ },
58
+ lg: {
59
+ container: 'w-96',
60
+ header: 'text-lg',
61
+ cell: 'w-12 h-12 text-base',
62
+ button: 'w-10 h-10',
63
+ },
64
+ };
65
+
66
+ // ============================================
67
+ // CALENDAR COMPONENT
68
+ // ============================================
69
+
70
+ /**
71
+ * A calendar displays a grid of days and allows users to select a date.
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * // Basic usage
76
+ * <Calendar
77
+ * aria-label="Event date"
78
+ * onChange={(date) => console.log(date)}
79
+ * />
80
+ *
81
+ * // Controlled
82
+ * const [date, setDate] = createSignal<CalendarDate | null>(null);
83
+ * <Calendar
84
+ * value={date()}
85
+ * onChange={setDate}
86
+ * />
87
+ *
88
+ * // With min/max dates
89
+ * <Calendar
90
+ * minValue={today(getLocalTimeZone())}
91
+ * maxValue={today(getLocalTimeZone()).add({ months: 3 })}
92
+ * />
93
+ * ```
94
+ */
95
+ export function Calendar<T extends DateValue = CalendarDate>(
96
+ props: CalendarProps<T>
97
+ ): JSX.Element {
98
+ const mergedProps = useProviderProps(props);
99
+ const [local, rest] = splitProps(mergedProps, [
100
+ 'size',
101
+ 'class',
102
+ 'showWeekNumbers',
103
+ 'aria-label',
104
+ ]);
105
+
106
+ const size = () => local.size ?? 'md';
107
+ const sizeConfig = () => sizeStyles[size()];
108
+
109
+ return (
110
+ <HeadlessCalendar
111
+ {...rest}
112
+ aria-label={local['aria-label']}
113
+ class={`
114
+ ${sizeConfig().container}
115
+ bg-bg-500 rounded-lg border border-primary-700 p-4
116
+ ${local.class ?? ''}
117
+ `}
118
+ >
119
+ {/* Header with navigation */}
120
+ <header class="flex items-center justify-between mb-4">
121
+ <CalendarButton
122
+ slot="previous"
123
+ class={`
124
+ ${sizeConfig().button}
125
+ flex items-center justify-center
126
+ rounded-md text-primary-200
127
+ hover:bg-bg-400 transition-colors
128
+ disabled:opacity-50 disabled:cursor-not-allowed
129
+ focus:outline-none focus:ring-2 focus:ring-accent/50
130
+ `}
131
+ >
132
+ <svg
133
+ viewBox="0 0 24 24"
134
+ fill="none"
135
+ stroke="currentColor"
136
+ stroke-width="2"
137
+ stroke-linecap="round"
138
+ stroke-linejoin="round"
139
+ class="w-4 h-4"
140
+ >
141
+ <polyline points="15 18 9 12 15 6" />
142
+ </svg>
143
+ </CalendarButton>
144
+
145
+ <CalendarHeading
146
+ class={`
147
+ font-semibold text-primary-100
148
+ ${sizeConfig().header}
149
+ `}
150
+ />
151
+
152
+ <CalendarButton
153
+ slot="next"
154
+ class={`
155
+ ${sizeConfig().button}
156
+ flex items-center justify-center
157
+ rounded-md text-primary-200
158
+ hover:bg-bg-400 transition-colors
159
+ disabled:opacity-50 disabled:cursor-not-allowed
160
+ focus:outline-none focus:ring-2 focus:ring-accent/50
161
+ `}
162
+ >
163
+ <svg
164
+ viewBox="0 0 24 24"
165
+ fill="none"
166
+ stroke="currentColor"
167
+ stroke-width="2"
168
+ stroke-linecap="round"
169
+ stroke-linejoin="round"
170
+ class="w-4 h-4"
171
+ >
172
+ <polyline points="9 18 15 12 9 6" />
173
+ </svg>
174
+ </CalendarButton>
175
+ </header>
176
+
177
+ {/* Calendar grid */}
178
+ <CalendarGrid
179
+ class="w-full border-collapse"
180
+ >
181
+ {(date) => (
182
+ <CalendarCell
183
+ date={date}
184
+ class={({ isSelected, isFocused, isDisabled, isOutsideMonth, isToday, isPressed }) => {
185
+ const base = `
186
+ ${sizeConfig().cell}
187
+ flex items-center justify-center
188
+ rounded-md cursor-pointer
189
+ transition-colors duration-150
190
+ focus:outline-none
191
+ `;
192
+
193
+ let stateClass = '';
194
+
195
+ if (isDisabled) {
196
+ stateClass = 'text-primary-600 cursor-not-allowed';
197
+ } else if (isSelected) {
198
+ stateClass = 'bg-accent text-bg-400 font-medium';
199
+ } else if (isOutsideMonth) {
200
+ stateClass = 'text-primary-600';
201
+ } else if (isToday) {
202
+ stateClass = 'ring-1 ring-accent text-primary-100';
203
+ } else {
204
+ stateClass = 'text-primary-200 hover:bg-bg-400';
205
+ }
206
+
207
+ const focusClass = isFocused && !isSelected
208
+ ? 'ring-2 ring-accent/50'
209
+ : '';
210
+
211
+ const pressedClass = isPressed && !isDisabled
212
+ ? 'scale-95'
213
+ : '';
214
+
215
+ return `${base} ${stateClass} ${focusClass} ${pressedClass}`.trim();
216
+ }}
217
+ />
218
+ )}
219
+ </CalendarGrid>
220
+ </HeadlessCalendar>
221
+ );
222
+ }
223
+
224
+ // Re-export types
225
+ export type { CalendarDate, DateValue };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Card component for proyecto-viviana-silapse.
3
+ *
4
+ * Styling-only surface container primitive.
5
+ */
6
+
7
+ import { type JSX, splitProps } from 'solid-js';
8
+
9
+ export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
10
+ class?: string;
11
+ }
12
+
13
+ export function Card(props: CardProps): JSX.Element {
14
+ const [local, domProps] = splitProps(props, ['class', 'children']);
15
+ return (
16
+ <div
17
+ {...domProps}
18
+ class={`rounded-xl border border-primary-600 bg-bg-300 p-4 ${local.class ?? ''}`}
19
+ >
20
+ {local.children}
21
+ </div>
22
+ );
23
+ }
24
+
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Checkbox component for proyecto-viviana-silapse
3
+ *
4
+ * A styled checkbox component built on top of solidaria-components.
5
+ * This component only handles styling - all behavior and accessibility
6
+ * is provided by the headless Checkbox from solidaria-components.
7
+ */
8
+
9
+ import { type JSX, splitProps, mergeProps as solidMergeProps, Show } from 'solid-js'
10
+ import {
11
+ Checkbox as HeadlessCheckbox,
12
+ CheckboxGroup as HeadlessCheckboxGroup,
13
+ type CheckboxProps as HeadlessCheckboxProps,
14
+ type CheckboxGroupProps as HeadlessCheckboxGroupProps,
15
+ type CheckboxRenderProps,
16
+ type CheckboxGroupRenderProps,
17
+ } from '@proyecto-viviana/solidaria-components'
18
+ import { useProviderProps } from '../provider'
19
+
20
+ // ============================================
21
+ // TYPES
22
+ // ============================================
23
+
24
+ export type CheckboxSize = 'sm' | 'md' | 'lg'
25
+
26
+ export interface CheckboxProps extends Omit<HeadlessCheckboxProps, 'class' | 'children' | 'style'> {
27
+ /** The size of the checkbox. */
28
+ size?: CheckboxSize
29
+ /** Additional CSS class name. */
30
+ class?: string
31
+ /** Label text for the checkbox. */
32
+ children?: JSX.Element
33
+ }
34
+
35
+ export interface CheckboxGroupProps extends Omit<HeadlessCheckboxGroupProps, 'class' | 'children' | 'style'> {
36
+ /** Additional CSS class name. */
37
+ class?: string
38
+ /** Children checkboxes. */
39
+ children?: JSX.Element
40
+ /** Label for the group. */
41
+ label?: string
42
+ /** Description for the group. */
43
+ description?: string
44
+ /** Error message when invalid. */
45
+ errorMessage?: string
46
+ }
47
+
48
+ // ============================================
49
+ // STYLES
50
+ // ============================================
51
+
52
+ const sizeStyles = {
53
+ sm: {
54
+ box: 'h-4 w-4',
55
+ icon: 'h-3 w-3',
56
+ label: 'text-sm',
57
+ },
58
+ md: {
59
+ box: 'h-5 w-5',
60
+ icon: 'h-3.5 w-3.5',
61
+ label: 'text-base',
62
+ },
63
+ lg: {
64
+ box: 'h-6 w-6',
65
+ icon: 'h-4 w-4',
66
+ label: 'text-lg',
67
+ },
68
+ }
69
+
70
+ // ============================================
71
+ // ICONS
72
+ // ============================================
73
+
74
+ function CheckIcon(props: { class?: string }) {
75
+ return (
76
+ <svg
77
+ class={props.class}
78
+ viewBox="0 0 12 10"
79
+ fill="none"
80
+ xmlns="http://www.w3.org/2000/svg"
81
+ >
82
+ <path
83
+ d="M1 5L4.5 8.5L11 1"
84
+ stroke="currentColor"
85
+ stroke-width="2"
86
+ stroke-linecap="round"
87
+ stroke-linejoin="round"
88
+ />
89
+ </svg>
90
+ )
91
+ }
92
+
93
+ function IndeterminateIcon(props: { class?: string }) {
94
+ return (
95
+ <svg
96
+ class={props.class}
97
+ viewBox="0 0 12 2"
98
+ fill="none"
99
+ xmlns="http://www.w3.org/2000/svg"
100
+ >
101
+ <path
102
+ d="M1 1H11"
103
+ stroke="currentColor"
104
+ stroke-width="2"
105
+ stroke-linecap="round"
106
+ />
107
+ </svg>
108
+ )
109
+ }
110
+
111
+ // ============================================
112
+ // CHECKBOX COMPONENT
113
+ // ============================================
114
+
115
+ /**
116
+ * A checkbox allows users to select one or more items from a set.
117
+ *
118
+ * Built on solidaria-components Checkbox for full accessibility support.
119
+ */
120
+ export function Checkbox(props: CheckboxProps): JSX.Element {
121
+ const providerProps = useProviderProps(props)
122
+ const defaultProps: Partial<CheckboxProps> = {
123
+ size: 'md',
124
+ }
125
+
126
+ const merged = solidMergeProps(defaultProps, providerProps)
127
+
128
+ const [local, headlessProps] = splitProps(merged, [
129
+ 'size',
130
+ 'class',
131
+ 'children',
132
+ ])
133
+
134
+ const size = () => sizeStyles[local.size!]
135
+
136
+ // Generate class based on render props
137
+ const getClassName = (renderProps: CheckboxRenderProps): string => {
138
+ const base = 'inline-flex items-center gap-2 cursor-pointer'
139
+ const disabledClass = renderProps.isDisabled ? 'cursor-not-allowed opacity-50' : ''
140
+ const custom = local.class || ''
141
+ return [base, disabledClass, custom].filter(Boolean).join(' ')
142
+ }
143
+
144
+ return (
145
+ <HeadlessCheckbox
146
+ {...headlessProps}
147
+ class={getClassName}
148
+ >
149
+ {(renderProps: CheckboxRenderProps) => {
150
+ const boxClasses = () => {
151
+ const base = 'relative flex items-center justify-center rounded border-2 transition-all duration-200'
152
+ const sizeClass = size().box
153
+
154
+ let colorClass: string
155
+ if (renderProps.isDisabled) {
156
+ colorClass = 'border-bg-300 bg-bg-200'
157
+ } else if (renderProps.isSelected || renderProps.isIndeterminate) {
158
+ colorClass = 'border-accent bg-accent'
159
+ } else {
160
+ colorClass = 'border-primary-600 bg-transparent hover:border-accent-300'
161
+ }
162
+
163
+ const focusClass = renderProps.isFocusVisible
164
+ ? 'ring-2 ring-accent-300 ring-offset-2 ring-offset-bg-400'
165
+ : ''
166
+ const cursorClass = renderProps.isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'
167
+
168
+ return [base, sizeClass, colorClass, focusClass, cursorClass].filter(Boolean).join(' ')
169
+ }
170
+
171
+ const iconClasses = () => {
172
+ const base = 'text-white transition-opacity duration-200'
173
+ const sizeClass = size().icon
174
+ const visibilityClass = (renderProps.isSelected || renderProps.isIndeterminate)
175
+ ? 'opacity-100'
176
+ : 'opacity-0'
177
+
178
+ return [base, sizeClass, visibilityClass].filter(Boolean).join(' ')
179
+ }
180
+
181
+ const labelClasses = () => {
182
+ const base = 'text-primary-200'
183
+ const sizeClass = size().label
184
+ const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''
185
+
186
+ return [base, sizeClass, disabledClass].filter(Boolean).join(' ')
187
+ }
188
+
189
+ return (
190
+ <>
191
+ <span class={boxClasses()}>
192
+ <Show
193
+ when={!renderProps.isIndeterminate}
194
+ fallback={<IndeterminateIcon class={iconClasses()} />}
195
+ >
196
+ <CheckIcon class={iconClasses()} />
197
+ </Show>
198
+ </span>
199
+ <Show when={props.children}>
200
+ <span class={labelClasses()}>{props.children}</span>
201
+ </Show>
202
+ </>
203
+ )
204
+ }}
205
+ </HeadlessCheckbox>
206
+ )
207
+ }
208
+
209
+ // ============================================
210
+ // CHECKBOX GROUP COMPONENT
211
+ // ============================================
212
+
213
+ /**
214
+ * A checkbox group allows users to select multiple items from a list.
215
+ *
216
+ * Built on solidaria-components CheckboxGroup for full accessibility support.
217
+ */
218
+ export function CheckboxGroup(props: CheckboxGroupProps): JSX.Element {
219
+ const mergedProps = useProviderProps(props)
220
+ const [local, headlessProps] = splitProps(mergedProps, [
221
+ 'class',
222
+ 'label',
223
+ 'description',
224
+ 'errorMessage',
225
+ ])
226
+
227
+ // Generate class based on render props
228
+ const getClassName = (renderProps: CheckboxGroupRenderProps): string => {
229
+ const base = 'flex flex-col gap-2'
230
+ const disabledClass = renderProps.isDisabled ? 'opacity-50' : ''
231
+ const custom = local.class || ''
232
+ return [base, disabledClass, custom].filter(Boolean).join(' ')
233
+ }
234
+
235
+ // Render children function for the headless component
236
+ const renderChildren = (renderProps: CheckboxGroupRenderProps) => (
237
+ <>
238
+ <Show when={local.label}>
239
+ <span class="text-sm font-medium text-primary-200">{local.label}</span>
240
+ </Show>
241
+ <div class="flex flex-col gap-2">
242
+ {props.children}
243
+ </div>
244
+ <Show when={local.description && !renderProps.isInvalid}>
245
+ <span class="text-sm text-primary-400">{local.description}</span>
246
+ </Show>
247
+ <Show when={local.errorMessage && renderProps.isInvalid}>
248
+ <span class="text-sm text-danger-400">{local.errorMessage}</span>
249
+ </Show>
250
+ </>
251
+ )
252
+ return (
253
+ <HeadlessCheckboxGroup
254
+ {...headlessProps}
255
+ class={getClassName}
256
+ children={renderChildren}
257
+ />
258
+ )
259
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * ColorEditor component for proyecto-viviana-silapse
3
+ *
4
+ * Styled color editor composing ColorArea, ColorSliders, and ColorFields.
5
+ */
6
+
7
+ import { type JSX, splitProps } from 'solid-js'
8
+ import {
9
+ ColorEditor as HeadlessColorEditor,
10
+ type ColorEditorProps as HeadlessColorEditorProps,
11
+ } from '@proyecto-viviana/solidaria-components'
12
+
13
+ // ============================================
14
+ // TYPES
15
+ // ============================================
16
+
17
+ export interface ColorEditorProps extends Omit<HeadlessColorEditorProps, 'class' | 'style'> {
18
+ /** Additional CSS class name. */
19
+ class?: string
20
+ }
21
+
22
+ // ============================================
23
+ // COMPONENT
24
+ // ============================================
25
+
26
+ /**
27
+ * A complete color editor with area, hue slider, alpha slider,
28
+ * color space selector, and channel fields.
29
+ */
30
+ export function ColorEditor(props: ColorEditorProps): JSX.Element {
31
+ const [local, headlessProps] = splitProps(props, ['class'])
32
+
33
+ return (
34
+ <HeadlessColorEditor
35
+ {...headlessProps}
36
+ class={({ colorSpace }) => {
37
+ const base = [
38
+ // Container
39
+ 'flex flex-col gap-3',
40
+ // Ensure readable defaults for nested native form controls
41
+ '[&_label]:text-primary-200 [&_input]:text-primary-100',
42
+ // Top row (area + sliders)
43
+ '[&_.solidaria-ColorEditor-top]:flex [&_.solidaria-ColorEditor-top]:gap-3',
44
+ // Bottom row (format + fields)
45
+ '[&_.solidaria-ColorEditor-bottom]:flex [&_.solidaria-ColorEditor-bottom]:gap-2 [&_.solidaria-ColorEditor-bottom]:items-end',
46
+ // Format selector styling
47
+ '[&_.solidaria-ColorEditor-format]:h-8 [&_.solidaria-ColorEditor-format]:px-2 [&_.solidaria-ColorEditor-format]:text-sm',
48
+ '[&_.solidaria-ColorEditor-format]:rounded-md [&_.solidaria-ColorEditor-format]:border [&_.solidaria-ColorEditor-format]:border-bg-300',
49
+ '[&_.solidaria-ColorEditor-format]:bg-bg-400 [&_.solidaria-ColorEditor-format]:text-primary-200',
50
+ '[&_.solidaria-ColorEditor-format]:outline-none [&_.solidaria-ColorEditor-format]:focus:ring-2 [&_.solidaria-ColorEditor-format]:focus:ring-accent',
51
+ // Channel fields
52
+ '[&_.solidaria-ColorField-input]:bg-bg-400 [&_.solidaria-ColorField-input]:border [&_.solidaria-ColorField-input]:border-bg-300',
53
+ '[&_.solidaria-ColorField-input]:text-primary-100 [&_.solidaria-ColorField-input]:rounded-md',
54
+ ].join(' ')
55
+
56
+ return `${base} ${local.class ?? ''}`
57
+ }}
58
+ />
59
+ )
60
+ }