@puzzle-ui/ui 0.0.0-stage → 0.2.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 (613) hide show
  1. package/README.md +97 -2
  2. package/dist/LICENSE +21 -0
  3. package/dist/components/actions/button/button-content.cjs +41 -0
  4. package/dist/components/actions/button/button-content.cjs.map +1 -0
  5. package/dist/components/actions/button/button-content.js +41 -0
  6. package/dist/components/actions/button/button-content.js.map +1 -0
  7. package/dist/components/actions/button/button.css +191 -0
  8. package/dist/components/actions/button/button.types.d.cts +30 -0
  9. package/dist/components/actions/button/button.types.d.ts +30 -0
  10. package/dist/components/actions/button/index.cjs +80 -0
  11. package/dist/components/actions/button/index.cjs.map +1 -0
  12. package/dist/components/actions/button/index.d.cts +3 -0
  13. package/dist/components/actions/button/index.d.ts +3 -0
  14. package/dist/components/actions/button/index.js +80 -0
  15. package/dist/components/actions/button/index.js.map +1 -0
  16. package/dist/components/actions/button-group/button-group.css +64 -0
  17. package/dist/components/actions/button-group/index.cjs +25 -0
  18. package/dist/components/actions/button-group/index.cjs.map +1 -0
  19. package/dist/components/actions/button-group/index.d.cts +14 -0
  20. package/dist/components/actions/button-group/index.d.ts +14 -0
  21. package/dist/components/actions/button-group/index.js +25 -0
  22. package/dist/components/actions/button-group/index.js.map +1 -0
  23. package/dist/components/actions/toggle-group/index.cjs +124 -0
  24. package/dist/components/actions/toggle-group/index.cjs.map +1 -0
  25. package/dist/components/actions/toggle-group/index.d.cts +10 -0
  26. package/dist/components/actions/toggle-group/index.d.ts +10 -0
  27. package/dist/components/actions/toggle-group/index.js +124 -0
  28. package/dist/components/actions/toggle-group/index.js.map +1 -0
  29. package/dist/components/actions/toggle-group/toggle-group.css +67 -0
  30. package/dist/components/actions/toggle-group/toggle-group.types.d.cts +54 -0
  31. package/dist/components/actions/toggle-group/toggle-group.types.d.ts +54 -0
  32. package/dist/components/data-display/alert/alert.css +128 -0
  33. package/dist/components/data-display/alert/alert.types.d.cts +14 -0
  34. package/dist/components/data-display/alert/alert.types.d.ts +14 -0
  35. package/dist/components/data-display/alert/alert.utils.cjs +11 -0
  36. package/dist/components/data-display/alert/alert.utils.cjs.map +1 -0
  37. package/dist/components/data-display/alert/alert.utils.js +11 -0
  38. package/dist/components/data-display/alert/alert.utils.js.map +1 -0
  39. package/dist/components/data-display/alert/index.cjs +103 -0
  40. package/dist/components/data-display/alert/index.cjs.map +1 -0
  41. package/dist/components/data-display/alert/index.d.cts +3 -0
  42. package/dist/components/data-display/alert/index.d.ts +3 -0
  43. package/dist/components/data-display/alert/index.js +103 -0
  44. package/dist/components/data-display/alert/index.js.map +1 -0
  45. package/dist/components/data-display/avatar/avatar.css +30 -0
  46. package/dist/components/data-display/avatar/index.cjs +42 -0
  47. package/dist/components/data-display/avatar/index.cjs.map +1 -0
  48. package/dist/components/data-display/avatar/index.d.cts +10 -0
  49. package/dist/components/data-display/avatar/index.d.ts +10 -0
  50. package/dist/components/data-display/avatar/index.js +42 -0
  51. package/dist/components/data-display/avatar/index.js.map +1 -0
  52. package/dist/components/data-display/badge/badge.css +91 -0
  53. package/dist/components/data-display/badge/index.cjs +31 -0
  54. package/dist/components/data-display/badge/index.cjs.map +1 -0
  55. package/dist/components/data-display/badge/index.d.cts +18 -0
  56. package/dist/components/data-display/badge/index.d.ts +18 -0
  57. package/dist/components/data-display/badge/index.js +31 -0
  58. package/dist/components/data-display/badge/index.js.map +1 -0
  59. package/dist/components/data-display/card/card.css +164 -0
  60. package/dist/components/data-display/card/index.cjs +42 -0
  61. package/dist/components/data-display/card/index.cjs.map +1 -0
  62. package/dist/components/data-display/card/index.d.cts +29 -0
  63. package/dist/components/data-display/card/index.d.ts +29 -0
  64. package/dist/components/data-display/card/index.js +35 -0
  65. package/dist/components/data-display/card/index.js.map +1 -0
  66. package/dist/components/data-display/image/image.css +80 -0
  67. package/dist/components/data-display/image/image.types.d.cts +154 -0
  68. package/dist/components/data-display/image/image.types.d.ts +154 -0
  69. package/dist/components/data-display/image/image.utils.cjs +55 -0
  70. package/dist/components/data-display/image/image.utils.cjs.map +1 -0
  71. package/dist/components/data-display/image/image.utils.js +51 -0
  72. package/dist/components/data-display/image/image.utils.js.map +1 -0
  73. package/dist/components/data-display/image/index.cjs +176 -0
  74. package/dist/components/data-display/image/index.cjs.map +1 -0
  75. package/dist/components/data-display/image/index.d.cts +3 -0
  76. package/dist/components/data-display/image/index.d.ts +3 -0
  77. package/dist/components/data-display/image/index.js +176 -0
  78. package/dist/components/data-display/image/index.js.map +1 -0
  79. package/dist/components/data-display/image/use-image-state.cjs +54 -0
  80. package/dist/components/data-display/image/use-image-state.cjs.map +1 -0
  81. package/dist/components/data-display/image/use-image-state.js +54 -0
  82. package/dist/components/data-display/image/use-image-state.js.map +1 -0
  83. package/dist/components/data-display/paper/index.cjs +16 -0
  84. package/dist/components/data-display/paper/index.cjs.map +1 -0
  85. package/dist/components/data-display/paper/index.d.cts +8 -0
  86. package/dist/components/data-display/paper/index.d.ts +8 -0
  87. package/dist/components/data-display/paper/index.js +16 -0
  88. package/dist/components/data-display/paper/index.js.map +1 -0
  89. package/dist/components/data-display/paper/paper.css +40 -0
  90. package/dist/components/data-display/progress/circular-progress.cjs +75 -0
  91. package/dist/components/data-display/progress/circular-progress.cjs.map +1 -0
  92. package/dist/components/data-display/progress/circular-progress.css +21 -0
  93. package/dist/components/data-display/progress/circular-progress.d.cts +9 -0
  94. package/dist/components/data-display/progress/circular-progress.d.ts +9 -0
  95. package/dist/components/data-display/progress/circular-progress.js +75 -0
  96. package/dist/components/data-display/progress/circular-progress.js.map +1 -0
  97. package/dist/components/data-display/progress/linear-progress.cjs +32 -0
  98. package/dist/components/data-display/progress/linear-progress.cjs.map +1 -0
  99. package/dist/components/data-display/progress/linear-progress.css +39 -0
  100. package/dist/components/data-display/progress/linear-progress.d.cts +5 -0
  101. package/dist/components/data-display/progress/linear-progress.d.ts +5 -0
  102. package/dist/components/data-display/progress/linear-progress.js +32 -0
  103. package/dist/components/data-display/progress/linear-progress.js.map +1 -0
  104. package/dist/components/data-display/progress/types.d.cts +5 -0
  105. package/dist/components/data-display/progress/types.d.ts +5 -0
  106. package/dist/components/data-display/progress/utils.cjs +16 -0
  107. package/dist/components/data-display/progress/utils.cjs.map +1 -0
  108. package/dist/components/data-display/progress/utils.js +15 -0
  109. package/dist/components/data-display/progress/utils.js.map +1 -0
  110. package/dist/components/data-display/skeleton/index.cjs +18 -0
  111. package/dist/components/data-display/skeleton/index.cjs.map +1 -0
  112. package/dist/components/data-display/skeleton/index.d.cts +10 -0
  113. package/dist/components/data-display/skeleton/index.d.ts +10 -0
  114. package/dist/components/data-display/skeleton/index.js +18 -0
  115. package/dist/components/data-display/skeleton/index.js.map +1 -0
  116. package/dist/components/data-display/skeleton/skeleton.css +47 -0
  117. package/dist/components/editors/text-editor/editor.cjs +620 -0
  118. package/dist/components/editors/text-editor/editor.cjs.map +1 -0
  119. package/dist/components/editors/text-editor/editor.d.cts +1 -0
  120. package/dist/components/editors/text-editor/editor.d.ts +1 -0
  121. package/dist/components/editors/text-editor/editor.js +620 -0
  122. package/dist/components/editors/text-editor/editor.js.map +1 -0
  123. package/dist/components/editors/text-editor/index.cjs +39 -0
  124. package/dist/components/editors/text-editor/index.cjs.map +1 -0
  125. package/dist/components/editors/text-editor/index.d.cts +13 -0
  126. package/dist/components/editors/text-editor/index.d.ts +13 -0
  127. package/dist/components/editors/text-editor/index.js +38 -0
  128. package/dist/components/editors/text-editor/index.js.map +1 -0
  129. package/dist/components/editors/text-editor/text-document.cjs +406 -0
  130. package/dist/components/editors/text-editor/text-document.cjs.map +1 -0
  131. package/dist/components/editors/text-editor/text-document.js +391 -0
  132. package/dist/components/editors/text-editor/text-document.js.map +1 -0
  133. package/dist/components/editors/text-editor/text-editor-toolbar.cjs +251 -0
  134. package/dist/components/editors/text-editor/text-editor-toolbar.cjs.map +1 -0
  135. package/dist/components/editors/text-editor/text-editor-toolbar.css +16 -0
  136. package/dist/components/editors/text-editor/text-editor-toolbar.d.cts +7 -0
  137. package/dist/components/editors/text-editor/text-editor-toolbar.d.ts +7 -0
  138. package/dist/components/editors/text-editor/text-editor-toolbar.js +251 -0
  139. package/dist/components/editors/text-editor/text-editor-toolbar.js.map +1 -0
  140. package/dist/components/editors/text-editor/text-editor.css +116 -0
  141. package/dist/components/editors/text-editor/text-editor.types.d.cts +37 -0
  142. package/dist/components/editors/text-editor/text-editor.types.d.ts +37 -0
  143. package/dist/components/editors/text-editor/text-parser.cjs +262 -0
  144. package/dist/components/editors/text-editor/text-parser.cjs.map +1 -0
  145. package/dist/components/editors/text-editor/text-parser.js +261 -0
  146. package/dist/components/editors/text-editor/text-parser.js.map +1 -0
  147. package/dist/components/editors/text-editor/text-renderer.cjs +85 -0
  148. package/dist/components/editors/text-editor/text-renderer.cjs.map +1 -0
  149. package/dist/components/editors/text-editor/text-renderer.d.cts +7 -0
  150. package/dist/components/editors/text-editor/text-renderer.d.ts +7 -0
  151. package/dist/components/editors/text-editor/text-renderer.js +85 -0
  152. package/dist/components/editors/text-editor/text-renderer.js.map +1 -0
  153. package/dist/components/forms/autocomplete/autocomplete.css +384 -0
  154. package/dist/components/forms/autocomplete/autocomplete.types.d.cts +86 -0
  155. package/dist/components/forms/autocomplete/autocomplete.types.d.ts +86 -0
  156. package/dist/components/forms/autocomplete/autocomplete.utils.cjs +47 -0
  157. package/dist/components/forms/autocomplete/autocomplete.utils.cjs.map +1 -0
  158. package/dist/components/forms/autocomplete/autocomplete.utils.js +44 -0
  159. package/dist/components/forms/autocomplete/autocomplete.utils.js.map +1 -0
  160. package/dist/components/forms/autocomplete/index.cjs +532 -0
  161. package/dist/components/forms/autocomplete/index.cjs.map +1 -0
  162. package/dist/components/forms/autocomplete/index.d.cts +3 -0
  163. package/dist/components/forms/autocomplete/index.d.ts +3 -0
  164. package/dist/components/forms/autocomplete/index.js +532 -0
  165. package/dist/components/forms/autocomplete/index.js.map +1 -0
  166. package/dist/components/forms/checkbox/checkbox.css +146 -0
  167. package/dist/components/forms/checkbox/index.cjs +80 -0
  168. package/dist/components/forms/checkbox/index.cjs.map +1 -0
  169. package/dist/components/forms/checkbox/index.d.cts +20 -0
  170. package/dist/components/forms/checkbox/index.d.ts +20 -0
  171. package/dist/components/forms/checkbox/index.js +80 -0
  172. package/dist/components/forms/checkbox/index.js.map +1 -0
  173. package/dist/components/forms/date-picker/date-picker.css +478 -0
  174. package/dist/components/forms/date-picker/date-picker.types.d.cts +75 -0
  175. package/dist/components/forms/date-picker/date-picker.types.d.ts +75 -0
  176. package/dist/components/forms/date-picker/date-picker.utils.cjs +76 -0
  177. package/dist/components/forms/date-picker/date-picker.utils.cjs.map +1 -0
  178. package/dist/components/forms/date-picker/date-picker.utils.js +64 -0
  179. package/dist/components/forms/date-picker/date-picker.utils.js.map +1 -0
  180. package/dist/components/forms/date-picker/index.cjs +572 -0
  181. package/dist/components/forms/date-picker/index.cjs.map +1 -0
  182. package/dist/components/forms/date-picker/index.d.cts +3 -0
  183. package/dist/components/forms/date-picker/index.d.ts +3 -0
  184. package/dist/components/forms/date-picker/index.js +572 -0
  185. package/dist/components/forms/date-picker/index.js.map +1 -0
  186. package/dist/components/forms/file-upload/file-upload.css +290 -0
  187. package/dist/components/forms/file-upload/file-upload.types.d.cts +51 -0
  188. package/dist/components/forms/file-upload/file-upload.types.d.ts +51 -0
  189. package/dist/components/forms/file-upload/file-upload.utils.cjs +76 -0
  190. package/dist/components/forms/file-upload/file-upload.utils.cjs.map +1 -0
  191. package/dist/components/forms/file-upload/file-upload.utils.js +72 -0
  192. package/dist/components/forms/file-upload/file-upload.utils.js.map +1 -0
  193. package/dist/components/forms/file-upload/index.cjs +346 -0
  194. package/dist/components/forms/file-upload/index.cjs.map +1 -0
  195. package/dist/components/forms/file-upload/index.d.cts +3 -0
  196. package/dist/components/forms/file-upload/index.d.ts +3 -0
  197. package/dist/components/forms/file-upload/index.js +346 -0
  198. package/dist/components/forms/file-upload/index.js.map +1 -0
  199. package/dist/components/forms/form-field/form-field-state.cjs +25 -0
  200. package/dist/components/forms/form-field/form-field-state.cjs.map +1 -0
  201. package/dist/components/forms/form-field/form-field-state.js +25 -0
  202. package/dist/components/forms/form-field/form-field-state.js.map +1 -0
  203. package/dist/components/forms/form-field/form-field.css +44 -0
  204. package/dist/components/forms/form-field/index.cjs +61 -0
  205. package/dist/components/forms/form-field/index.cjs.map +1 -0
  206. package/dist/components/forms/form-field/index.d.cts +23 -0
  207. package/dist/components/forms/form-field/index.d.ts +23 -0
  208. package/dist/components/forms/form-field/index.js +61 -0
  209. package/dist/components/forms/form-field/index.js.map +1 -0
  210. package/dist/components/forms/input/index.d.cts +4 -0
  211. package/dist/components/forms/input/index.d.ts +4 -0
  212. package/dist/components/forms/input/input.css +153 -0
  213. package/dist/components/forms/input/number-input.cjs +192 -0
  214. package/dist/components/forms/input/number-input.cjs.map +1 -0
  215. package/dist/components/forms/input/number-input.d.cts +20 -0
  216. package/dist/components/forms/input/number-input.d.ts +20 -0
  217. package/dist/components/forms/input/number-input.js +192 -0
  218. package/dist/components/forms/input/number-input.js.map +1 -0
  219. package/dist/components/forms/input/text-area-input.cjs +47 -0
  220. package/dist/components/forms/input/text-area-input.cjs.map +1 -0
  221. package/dist/components/forms/input/text-area-input.d.cts +8 -0
  222. package/dist/components/forms/input/text-area-input.d.ts +8 -0
  223. package/dist/components/forms/input/text-area-input.js +47 -0
  224. package/dist/components/forms/input/text-area-input.js.map +1 -0
  225. package/dist/components/forms/input/text-input.cjs +47 -0
  226. package/dist/components/forms/input/text-input.cjs.map +1 -0
  227. package/dist/components/forms/input/text-input.d.cts +9 -0
  228. package/dist/components/forms/input/text-input.d.ts +9 -0
  229. package/dist/components/forms/input/text-input.js +47 -0
  230. package/dist/components/forms/input/text-input.js.map +1 -0
  231. package/dist/components/forms/label/index.cjs +26 -0
  232. package/dist/components/forms/label/index.cjs.map +1 -0
  233. package/dist/components/forms/label/index.d.cts +8 -0
  234. package/dist/components/forms/label/index.d.ts +8 -0
  235. package/dist/components/forms/label/index.js +26 -0
  236. package/dist/components/forms/label/index.js.map +1 -0
  237. package/dist/components/forms/label/label.css +22 -0
  238. package/dist/components/forms/radio-group/index.cjs +226 -0
  239. package/dist/components/forms/radio-group/index.cjs.map +1 -0
  240. package/dist/components/forms/radio-group/index.d.cts +5 -0
  241. package/dist/components/forms/radio-group/index.d.ts +5 -0
  242. package/dist/components/forms/radio-group/index.js +225 -0
  243. package/dist/components/forms/radio-group/index.js.map +1 -0
  244. package/dist/components/forms/radio-group/radio-group.css +222 -0
  245. package/dist/components/forms/radio-group/radio-group.types.d.cts +51 -0
  246. package/dist/components/forms/radio-group/radio-group.types.d.ts +51 -0
  247. package/dist/components/forms/radio-group/radio-group.utils.cjs +22 -0
  248. package/dist/components/forms/radio-group/radio-group.utils.cjs.map +1 -0
  249. package/dist/components/forms/radio-group/radio-group.utils.js +21 -0
  250. package/dist/components/forms/radio-group/radio-group.utils.js.map +1 -0
  251. package/dist/components/forms/select/index.cjs +468 -0
  252. package/dist/components/forms/select/index.cjs.map +1 -0
  253. package/dist/components/forms/select/index.d.cts +112 -0
  254. package/dist/components/forms/select/index.d.ts +112 -0
  255. package/dist/components/forms/select/index.js +468 -0
  256. package/dist/components/forms/select/index.js.map +1 -0
  257. package/dist/components/forms/select/select.css +363 -0
  258. package/dist/components/forms/slider/index.cjs +93 -0
  259. package/dist/components/forms/slider/index.cjs.map +1 -0
  260. package/dist/components/forms/slider/index.d.cts +37 -0
  261. package/dist/components/forms/slider/index.d.ts +37 -0
  262. package/dist/components/forms/slider/index.js +93 -0
  263. package/dist/components/forms/slider/index.js.map +1 -0
  264. package/dist/components/forms/slider/slider.css +202 -0
  265. package/dist/components/forms/stepper/index.cjs +113 -0
  266. package/dist/components/forms/stepper/index.cjs.map +1 -0
  267. package/dist/components/forms/stepper/index.d.cts +48 -0
  268. package/dist/components/forms/stepper/index.d.ts +48 -0
  269. package/dist/components/forms/stepper/index.js +113 -0
  270. package/dist/components/forms/stepper/index.js.map +1 -0
  271. package/dist/components/forms/stepper/stepper.css +241 -0
  272. package/dist/components/forms/switch/index.cjs +45 -0
  273. package/dist/components/forms/switch/index.cjs.map +1 -0
  274. package/dist/components/forms/switch/index.d.cts +11 -0
  275. package/dist/components/forms/switch/index.d.ts +11 -0
  276. package/dist/components/forms/switch/index.js +45 -0
  277. package/dist/components/forms/switch/index.js.map +1 -0
  278. package/dist/components/forms/switch/switch.css +142 -0
  279. package/dist/components/layout/app-bar/app-bar.css +197 -0
  280. package/dist/components/layout/app-bar/index.cjs +150 -0
  281. package/dist/components/layout/app-bar/index.cjs.map +1 -0
  282. package/dist/components/layout/app-bar/index.d.cts +21 -0
  283. package/dist/components/layout/app-bar/index.d.ts +21 -0
  284. package/dist/components/layout/app-bar/index.js +150 -0
  285. package/dist/components/layout/app-bar/index.js.map +1 -0
  286. package/dist/components/layout/background/background.css +160 -0
  287. package/dist/components/layout/background/index.cjs +34 -0
  288. package/dist/components/layout/background/index.cjs.map +1 -0
  289. package/dist/components/layout/background/index.d.cts +23 -0
  290. package/dist/components/layout/background/index.d.ts +23 -0
  291. package/dist/components/layout/background/index.js +34 -0
  292. package/dist/components/layout/background/index.js.map +1 -0
  293. package/dist/components/layout/bottom-navigation/bottom-navigation.css +108 -0
  294. package/dist/components/layout/bottom-navigation/index.cjs +51 -0
  295. package/dist/components/layout/bottom-navigation/index.cjs.map +1 -0
  296. package/dist/components/layout/bottom-navigation/index.d.cts +19 -0
  297. package/dist/components/layout/bottom-navigation/index.d.ts +19 -0
  298. package/dist/components/layout/bottom-navigation/index.js +50 -0
  299. package/dist/components/layout/bottom-navigation/index.js.map +1 -0
  300. package/dist/components/layout/breadcrumbs/breadcrumbs.css +80 -0
  301. package/dist/components/layout/breadcrumbs/index.cjs +38 -0
  302. package/dist/components/layout/breadcrumbs/index.cjs.map +1 -0
  303. package/dist/components/layout/breadcrumbs/index.d.cts +18 -0
  304. package/dist/components/layout/breadcrumbs/index.d.ts +18 -0
  305. package/dist/components/layout/breadcrumbs/index.js +38 -0
  306. package/dist/components/layout/breadcrumbs/index.js.map +1 -0
  307. package/dist/components/layout/collapsable-sidebar/collapsable-sidebar.css +240 -0
  308. package/dist/components/layout/collapsable-sidebar/index.cjs +107 -0
  309. package/dist/components/layout/collapsable-sidebar/index.cjs.map +1 -0
  310. package/dist/components/layout/collapsable-sidebar/index.d.cts +35 -0
  311. package/dist/components/layout/collapsable-sidebar/index.d.ts +35 -0
  312. package/dist/components/layout/collapsable-sidebar/index.js +107 -0
  313. package/dist/components/layout/collapsable-sidebar/index.js.map +1 -0
  314. package/dist/components/layout/container/container.css +24 -0
  315. package/dist/components/layout/container/container.utils.cjs +11 -0
  316. package/dist/components/layout/container/container.utils.cjs.map +1 -0
  317. package/dist/components/layout/container/container.utils.d.cts +1 -0
  318. package/dist/components/layout/container/container.utils.d.ts +1 -0
  319. package/dist/components/layout/container/container.utils.js +11 -0
  320. package/dist/components/layout/container/container.utils.js.map +1 -0
  321. package/dist/components/layout/container/index.cjs +17 -0
  322. package/dist/components/layout/container/index.cjs.map +1 -0
  323. package/dist/components/layout/container/index.d.cts +11 -0
  324. package/dist/components/layout/container/index.d.ts +11 -0
  325. package/dist/components/layout/container/index.js +17 -0
  326. package/dist/components/layout/container/index.js.map +1 -0
  327. package/dist/components/layout/page-layout/index.cjs +80 -0
  328. package/dist/components/layout/page-layout/index.cjs.map +1 -0
  329. package/dist/components/layout/page-layout/index.d.cts +61 -0
  330. package/dist/components/layout/page-layout/index.d.ts +61 -0
  331. package/dist/components/layout/page-layout/index.js +80 -0
  332. package/dist/components/layout/page-layout/index.js.map +1 -0
  333. package/dist/components/layout/page-layout/page-layout.css +88 -0
  334. package/dist/components/layout/resizable-panels/index.cjs +226 -0
  335. package/dist/components/layout/resizable-panels/index.cjs.map +1 -0
  336. package/dist/components/layout/resizable-panels/index.d.cts +59 -0
  337. package/dist/components/layout/resizable-panels/index.d.ts +59 -0
  338. package/dist/components/layout/resizable-panels/index.js +224 -0
  339. package/dist/components/layout/resizable-panels/index.js.map +1 -0
  340. package/dist/components/layout/resizable-panels/resizable-panels.css +121 -0
  341. package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs +107 -0
  342. package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs.map +1 -0
  343. package/dist/components/layout/resizable-panels/resizable-panels.utils.js +105 -0
  344. package/dist/components/layout/resizable-panels/resizable-panels.utils.js.map +1 -0
  345. package/dist/components/layout/section/index.cjs +15 -0
  346. package/dist/components/layout/section/index.cjs.map +1 -0
  347. package/dist/components/layout/section/index.d.cts +2 -0
  348. package/dist/components/layout/section/index.d.ts +2 -0
  349. package/dist/components/layout/section/index.js +15 -0
  350. package/dist/components/layout/section/index.js.map +1 -0
  351. package/dist/components/layout/section/section.css +71 -0
  352. package/dist/components/layout/section/types.d.cts +13 -0
  353. package/dist/components/layout/section/types.d.ts +13 -0
  354. package/dist/components/layout/section-stack/index.cjs +29 -0
  355. package/dist/components/layout/section-stack/index.cjs.map +1 -0
  356. package/dist/components/layout/section-stack/index.d.cts +8 -0
  357. package/dist/components/layout/section-stack/index.d.ts +8 -0
  358. package/dist/components/layout/section-stack/index.js +29 -0
  359. package/dist/components/layout/section-stack/index.js.map +1 -0
  360. package/dist/components/layout/sidebar/index.cjs +16 -0
  361. package/dist/components/layout/sidebar/index.cjs.map +1 -0
  362. package/dist/components/layout/sidebar/index.d.cts +7 -0
  363. package/dist/components/layout/sidebar/index.d.ts +7 -0
  364. package/dist/components/layout/sidebar/index.js +16 -0
  365. package/dist/components/layout/sidebar/index.js.map +1 -0
  366. package/dist/components/layout/sidebar/sidebar.css +21 -0
  367. package/dist/components/layout/stack/index.cjs +30 -0
  368. package/dist/components/layout/stack/index.cjs.map +1 -0
  369. package/dist/components/layout/stack/index.d.cts +31 -0
  370. package/dist/components/layout/stack/index.d.ts +31 -0
  371. package/dist/components/layout/stack/index.js +30 -0
  372. package/dist/components/layout/stack/index.js.map +1 -0
  373. package/dist/components/layout/stack/stack.css +303 -0
  374. package/dist/components/navigation/accordion/accordion.css +97 -0
  375. package/dist/components/navigation/accordion/index.cjs +107 -0
  376. package/dist/components/navigation/accordion/index.cjs.map +1 -0
  377. package/dist/components/navigation/accordion/index.d.cts +48 -0
  378. package/dist/components/navigation/accordion/index.d.ts +48 -0
  379. package/dist/components/navigation/accordion/index.js +107 -0
  380. package/dist/components/navigation/accordion/index.js.map +1 -0
  381. package/dist/components/navigation/carousel/carousel.css +283 -0
  382. package/dist/components/navigation/carousel/controller.cjs +46 -0
  383. package/dist/components/navigation/carousel/controller.cjs.map +1 -0
  384. package/dist/components/navigation/carousel/controller.d.cts +16 -0
  385. package/dist/components/navigation/carousel/controller.d.ts +16 -0
  386. package/dist/components/navigation/carousel/controller.js +45 -0
  387. package/dist/components/navigation/carousel/controller.js.map +1 -0
  388. package/dist/components/navigation/carousel/index.cjs +494 -0
  389. package/dist/components/navigation/carousel/index.cjs.map +1 -0
  390. package/dist/components/navigation/carousel/index.d.cts +27 -0
  391. package/dist/components/navigation/carousel/index.d.ts +27 -0
  392. package/dist/components/navigation/carousel/index.js +494 -0
  393. package/dist/components/navigation/carousel/index.js.map +1 -0
  394. package/dist/components/navigation/link/index.cjs +40 -0
  395. package/dist/components/navigation/link/index.cjs.map +1 -0
  396. package/dist/components/navigation/link/index.d.cts +3 -0
  397. package/dist/components/navigation/link/index.d.ts +3 -0
  398. package/dist/components/navigation/link/index.js +40 -0
  399. package/dist/components/navigation/link/index.js.map +1 -0
  400. package/dist/components/navigation/link/link.css +31 -0
  401. package/dist/components/navigation/link/types.d.cts +12 -0
  402. package/dist/components/navigation/link/types.d.ts +12 -0
  403. package/dist/components/navigation/tabs/index.cjs +111 -0
  404. package/dist/components/navigation/tabs/index.cjs.map +1 -0
  405. package/dist/components/navigation/tabs/index.d.cts +30 -0
  406. package/dist/components/navigation/tabs/index.d.ts +30 -0
  407. package/dist/components/navigation/tabs/index.js +110 -0
  408. package/dist/components/navigation/tabs/index.js.map +1 -0
  409. package/dist/components/navigation/tabs/tabs.css +216 -0
  410. package/dist/components/navigation/tree-view/index.cjs +455 -0
  411. package/dist/components/navigation/tree-view/index.cjs.map +1 -0
  412. package/dist/components/navigation/tree-view/index.d.cts +96 -0
  413. package/dist/components/navigation/tree-view/index.d.ts +96 -0
  414. package/dist/components/navigation/tree-view/index.js +455 -0
  415. package/dist/components/navigation/tree-view/index.js.map +1 -0
  416. package/dist/components/navigation/tree-view/tree-view.css +258 -0
  417. package/dist/components/overlays/backdrop/backdrop.css +10 -0
  418. package/dist/components/overlays/backdrop/index.cjs +70 -0
  419. package/dist/components/overlays/backdrop/index.cjs.map +1 -0
  420. package/dist/components/overlays/backdrop/index.d.cts +12 -0
  421. package/dist/components/overlays/backdrop/index.d.ts +12 -0
  422. package/dist/components/overlays/backdrop/index.js +70 -0
  423. package/dist/components/overlays/backdrop/index.js.map +1 -0
  424. package/dist/components/overlays/command/command.css +154 -0
  425. package/dist/components/overlays/command/command.types.d.cts +36 -0
  426. package/dist/components/overlays/command/command.types.d.ts +36 -0
  427. package/dist/components/overlays/command/command.utils.cjs +39 -0
  428. package/dist/components/overlays/command/command.utils.cjs.map +1 -0
  429. package/dist/components/overlays/command/command.utils.js +35 -0
  430. package/dist/components/overlays/command/command.utils.js.map +1 -0
  431. package/dist/components/overlays/command/index.cjs +274 -0
  432. package/dist/components/overlays/command/index.cjs.map +1 -0
  433. package/dist/components/overlays/command/index.d.cts +4 -0
  434. package/dist/components/overlays/command/index.d.ts +4 -0
  435. package/dist/components/overlays/command/index.js +273 -0
  436. package/dist/components/overlays/command/index.js.map +1 -0
  437. package/dist/components/overlays/dialog/dialog.css +121 -0
  438. package/dist/components/overlays/dialog/index.cjs +80 -0
  439. package/dist/components/overlays/dialog/index.cjs.map +1 -0
  440. package/dist/components/overlays/dialog/index.d.cts +35 -0
  441. package/dist/components/overlays/dialog/index.d.ts +35 -0
  442. package/dist/components/overlays/dialog/index.js +80 -0
  443. package/dist/components/overlays/dialog/index.js.map +1 -0
  444. package/dist/components/overlays/drawer/drawer.css +133 -0
  445. package/dist/components/overlays/drawer/index.cjs +90 -0
  446. package/dist/components/overlays/drawer/index.cjs.map +1 -0
  447. package/dist/components/overlays/drawer/index.d.cts +11 -0
  448. package/dist/components/overlays/drawer/index.d.ts +11 -0
  449. package/dist/components/overlays/drawer/index.js +90 -0
  450. package/dist/components/overlays/drawer/index.js.map +1 -0
  451. package/dist/components/overlays/drawer/use-resize-bar.cjs +152 -0
  452. package/dist/components/overlays/drawer/use-resize-bar.cjs.map +1 -0
  453. package/dist/components/overlays/drawer/use-resize-bar.js +152 -0
  454. package/dist/components/overlays/drawer/use-resize-bar.js.map +1 -0
  455. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs +132 -0
  456. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs.map +1 -0
  457. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.d.cts +3 -0
  458. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.d.ts +3 -0
  459. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js +132 -0
  460. package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js.map +1 -0
  461. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.cjs +136 -0
  462. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.cjs.map +1 -0
  463. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.d.cts +7 -0
  464. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.d.ts +7 -0
  465. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.js +132 -0
  466. package/dist/components/overlays/dropdown-menu/dropdown-menu-items.js.map +1 -0
  467. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.cjs +76 -0
  468. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.cjs.map +1 -0
  469. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.d.cts +4 -0
  470. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.d.ts +4 -0
  471. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.js +75 -0
  472. package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.js.map +1 -0
  473. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.cjs +96 -0
  474. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.cjs.map +1 -0
  475. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.d.cts +3 -0
  476. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.d.ts +3 -0
  477. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.js +96 -0
  478. package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.js.map +1 -0
  479. package/dist/components/overlays/dropdown-menu/dropdown-menu.cjs +111 -0
  480. package/dist/components/overlays/dropdown-menu/dropdown-menu.cjs.map +1 -0
  481. package/dist/components/overlays/dropdown-menu/dropdown-menu.context.cjs +21 -0
  482. package/dist/components/overlays/dropdown-menu/dropdown-menu.context.cjs.map +1 -0
  483. package/dist/components/overlays/dropdown-menu/dropdown-menu.context.js +18 -0
  484. package/dist/components/overlays/dropdown-menu/dropdown-menu.context.js.map +1 -0
  485. package/dist/components/overlays/dropdown-menu/dropdown-menu.css +127 -0
  486. package/dist/components/overlays/dropdown-menu/dropdown-menu.d.cts +3 -0
  487. package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts +3 -0
  488. package/dist/components/overlays/dropdown-menu/dropdown-menu.js +111 -0
  489. package/dist/components/overlays/dropdown-menu/dropdown-menu.js.map +1 -0
  490. package/dist/components/overlays/dropdown-menu/dropdown-menu.types.d.cts +66 -0
  491. package/dist/components/overlays/dropdown-menu/dropdown-menu.types.d.ts +66 -0
  492. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs +44 -0
  493. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs.map +1 -0
  494. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js +39 -0
  495. package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js.map +1 -0
  496. package/dist/components/overlays/dropdown-menu/index.cjs +31 -0
  497. package/dist/components/overlays/dropdown-menu/index.cjs.map +1 -0
  498. package/dist/components/overlays/dropdown-menu/index.d.cts +19 -0
  499. package/dist/components/overlays/dropdown-menu/index.d.ts +19 -0
  500. package/dist/components/overlays/dropdown-menu/index.js +22 -0
  501. package/dist/components/overlays/dropdown-menu/index.js.map +1 -0
  502. package/dist/components/overlays/floating-position/calculate-position.cjs +94 -0
  503. package/dist/components/overlays/floating-position/calculate-position.cjs.map +1 -0
  504. package/dist/components/overlays/floating-position/calculate-position.js +89 -0
  505. package/dist/components/overlays/floating-position/calculate-position.js.map +1 -0
  506. package/dist/components/overlays/floating-position/use-floating-position.cjs +89 -0
  507. package/dist/components/overlays/floating-position/use-floating-position.cjs.map +1 -0
  508. package/dist/components/overlays/floating-position/use-floating-position.js +89 -0
  509. package/dist/components/overlays/floating-position/use-floating-position.js.map +1 -0
  510. package/dist/components/overlays/notification/index.cjs +142 -0
  511. package/dist/components/overlays/notification/index.cjs.map +1 -0
  512. package/dist/components/overlays/notification/index.d.cts +16 -0
  513. package/dist/components/overlays/notification/index.d.ts +16 -0
  514. package/dist/components/overlays/notification/index.js +139 -0
  515. package/dist/components/overlays/notification/index.js.map +1 -0
  516. package/dist/components/overlays/notification/notification-provider.cjs +69 -0
  517. package/dist/components/overlays/notification/notification-provider.cjs.map +1 -0
  518. package/dist/components/overlays/notification/notification-provider.d.cts +3 -0
  519. package/dist/components/overlays/notification/notification-provider.d.ts +3 -0
  520. package/dist/components/overlays/notification/notification-provider.js +68 -0
  521. package/dist/components/overlays/notification/notification-provider.js.map +1 -0
  522. package/dist/components/overlays/notification/notification.css +172 -0
  523. package/dist/components/overlays/notification/notification.types.d.cts +41 -0
  524. package/dist/components/overlays/notification/notification.types.d.ts +41 -0
  525. package/dist/components/overlays/notification/notification.utils.cjs +23 -0
  526. package/dist/components/overlays/notification/notification.utils.cjs.map +1 -0
  527. package/dist/components/overlays/notification/notification.utils.js +22 -0
  528. package/dist/components/overlays/notification/notification.utils.js.map +1 -0
  529. package/dist/components/overlays/notification/use-notification.cjs +12 -0
  530. package/dist/components/overlays/notification/use-notification.cjs.map +1 -0
  531. package/dist/components/overlays/notification/use-notification.d.cts +3 -0
  532. package/dist/components/overlays/notification/use-notification.d.ts +3 -0
  533. package/dist/components/overlays/notification/use-notification.js +12 -0
  534. package/dist/components/overlays/notification/use-notification.js.map +1 -0
  535. package/dist/components/overlays/overlay-stack/index.cjs +195 -0
  536. package/dist/components/overlays/overlay-stack/index.cjs.map +1 -0
  537. package/dist/components/overlays/overlay-stack/index.js +193 -0
  538. package/dist/components/overlays/overlay-stack/index.js.map +1 -0
  539. package/dist/components/overlays/popout/index.cjs +196 -0
  540. package/dist/components/overlays/popout/index.cjs.map +1 -0
  541. package/dist/components/overlays/popout/index.d.cts +26 -0
  542. package/dist/components/overlays/popout/index.d.ts +26 -0
  543. package/dist/components/overlays/popout/index.js +195 -0
  544. package/dist/components/overlays/popout/index.js.map +1 -0
  545. package/dist/components/overlays/popout/popout.css +15 -0
  546. package/dist/components/overlays/popover/index.cjs +163 -0
  547. package/dist/components/overlays/popover/index.cjs.map +1 -0
  548. package/dist/components/overlays/popover/index.d.cts +28 -0
  549. package/dist/components/overlays/popover/index.d.ts +28 -0
  550. package/dist/components/overlays/popover/index.js +163 -0
  551. package/dist/components/overlays/popover/index.js.map +1 -0
  552. package/dist/components/overlays/popover/popover.css +56 -0
  553. package/dist/components/overlays/portal/index.cjs +33 -0
  554. package/dist/components/overlays/portal/index.cjs.map +1 -0
  555. package/dist/components/overlays/portal/index.d.cts +15 -0
  556. package/dist/components/overlays/portal/index.d.ts +15 -0
  557. package/dist/components/overlays/portal/index.js +33 -0
  558. package/dist/components/overlays/portal/index.js.map +1 -0
  559. package/dist/components/overlays/portal/target.cjs +17 -0
  560. package/dist/components/overlays/portal/target.cjs.map +1 -0
  561. package/dist/components/overlays/portal/target.css +3 -0
  562. package/dist/components/overlays/portal/target.d.cts +7 -0
  563. package/dist/components/overlays/portal/target.d.ts +7 -0
  564. package/dist/components/overlays/portal/target.js +17 -0
  565. package/dist/components/overlays/portal/target.js.map +1 -0
  566. package/dist/components/overlays/tooltip/index.cjs +71 -0
  567. package/dist/components/overlays/tooltip/index.cjs.map +1 -0
  568. package/dist/components/overlays/tooltip/index.d.cts +24 -0
  569. package/dist/components/overlays/tooltip/index.d.ts +24 -0
  570. package/dist/components/overlays/tooltip/index.js +71 -0
  571. package/dist/components/overlays/tooltip/index.js.map +1 -0
  572. package/dist/components/overlays/tooltip/tooltip.css +67 -0
  573. package/dist/components/typography/heading.cjs +14 -0
  574. package/dist/components/typography/heading.cjs.map +1 -0
  575. package/dist/components/typography/heading.d.cts +11 -0
  576. package/dist/components/typography/heading.d.ts +11 -0
  577. package/dist/components/typography/heading.js +14 -0
  578. package/dist/components/typography/heading.js.map +1 -0
  579. package/dist/components/typography/text.cjs +14 -0
  580. package/dist/components/typography/text.cjs.map +1 -0
  581. package/dist/components/typography/text.d.cts +12 -0
  582. package/dist/components/typography/text.d.ts +12 -0
  583. package/dist/components/typography/text.js +14 -0
  584. package/dist/components/typography/text.js.map +1 -0
  585. package/dist/components/utilities/preview/highlight.cjs +79 -0
  586. package/dist/components/utilities/preview/highlight.cjs.map +1 -0
  587. package/dist/components/utilities/preview/highlight.js +79 -0
  588. package/dist/components/utilities/preview/highlight.js.map +1 -0
  589. package/dist/components/utilities/preview/index.cjs +391 -0
  590. package/dist/components/utilities/preview/index.cjs.map +1 -0
  591. package/dist/components/utilities/preview/index.d.cts +20 -0
  592. package/dist/components/utilities/preview/index.d.ts +20 -0
  593. package/dist/components/utilities/preview/index.js +391 -0
  594. package/dist/components/utilities/preview/index.js.map +1 -0
  595. package/dist/components/utilities/preview/preview.css +268 -0
  596. package/dist/components/utilities/scroll-lock/index.cjs +124 -0
  597. package/dist/components/utilities/scroll-lock/index.cjs.map +1 -0
  598. package/dist/components/utilities/scroll-lock/index.d.cts +6 -0
  599. package/dist/components/utilities/scroll-lock/index.d.ts +6 -0
  600. package/dist/components/utilities/scroll-lock/index.js +124 -0
  601. package/dist/components/utilities/scroll-lock/index.js.map +1 -0
  602. package/dist/components/utilities/transition/index.cjs +171 -0
  603. package/dist/components/utilities/transition/index.cjs.map +1 -0
  604. package/dist/components/utilities/transition/index.d.cts +27 -0
  605. package/dist/components/utilities/transition/index.d.ts +27 -0
  606. package/dist/components/utilities/transition/index.js +171 -0
  607. package/dist/components/utilities/transition/index.js.map +1 -0
  608. package/dist/components/utilities/transition/transition.css +130 -0
  609. package/dist/index.cjs +159 -0
  610. package/dist/index.d.cts +86 -0
  611. package/dist/index.d.ts +86 -0
  612. package/dist/index.js +70 -0
  613. package/package.json +65 -4
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ import "./slider.css";
3
+ import { cn } from "@puzzle-ui/core";
4
+ import { useId, useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/components/forms/slider/index.tsx
7
+ const getPrecision = (value) => {
8
+ const [coefficient, exponent = "0"] = String(value).toLowerCase().split("e");
9
+ const decimals = coefficient.split(".")[1]?.length ?? 0;
10
+ return Math.min(12, Math.max(0, decimals - Number(exponent)));
11
+ };
12
+ const normalizeSliderValue = (value, min, max, step) => {
13
+ if (max <= min) return min;
14
+ const boundedValue = Math.min(max, Math.max(min, value));
15
+ if (step === "any") return boundedValue;
16
+ const factor = 10 ** Math.max(getPrecision(min), getPrecision(step));
17
+ const steppedValue = min + Math.round((boundedValue - min) / step) * step;
18
+ return Math.min(max, Math.max(min, Math.round(steppedValue * factor) / factor));
19
+ };
20
+ const Slider = ({ value, defaultValue, onChange, min = 0, max = 100, step = 1, size = "md", marks, showValue = false, formatValue, className, id, ref, disabled = false, style, "aria-invalid": ariaInvalid, "aria-valuetext": ariaValueText, ...inputProps }) => {
21
+ const generatedId = useId();
22
+ const inputId = id ?? generatedId;
23
+ const resolvedMin = Number.isFinite(min) ? min : 0;
24
+ const resolvedMax = Math.max(resolvedMin, Number.isFinite(max) ? max : 100);
25
+ const resolvedStep = step === "any" ? "any" : Number.isFinite(step) && step > 0 ? step : 1;
26
+ const isControlled = value !== void 0;
27
+ const [internalValue, setInternalValue] = useState(() => normalizeSliderValue(defaultValue ?? (resolvedMin + resolvedMax) / 2, resolvedMin, resolvedMax, resolvedStep));
28
+ const currentValue = normalizeSliderValue(isControlled ? value : internalValue, resolvedMin, resolvedMax, resolvedStep);
29
+ const progress = resolvedMax > resolvedMin ? (currentValue - resolvedMin) / (resolvedMax - resolvedMin) * 100 : 0;
30
+ const formattedValue = formatValue?.(currentValue);
31
+ const isInvalid = ariaInvalid === true || ariaInvalid === "true";
32
+ const resolvedMarks = (marks ?? []).filter((mark) => Number.isFinite(mark.value) && mark.value >= resolvedMin && mark.value <= resolvedMax).slice().sort((a, b) => a.value - b.value);
33
+ const hasMarkLabels = resolvedMarks.some((mark) => mark.label != null);
34
+ const handleChange = (event) => {
35
+ const nextValue = normalizeSliderValue(event.currentTarget.valueAsNumber, resolvedMin, resolvedMax, resolvedStep);
36
+ if (!isControlled) setInternalValue(nextValue);
37
+ onChange?.(nextValue);
38
+ };
39
+ return /* @__PURE__ */ jsxs("div", {
40
+ className: cn("puzzle-slider", className),
41
+ "data-size": size,
42
+ "data-disabled": disabled || void 0,
43
+ "data-invalid": isInvalid || void 0,
44
+ children: [
45
+ showValue && /* @__PURE__ */ jsx("output", {
46
+ htmlFor: inputId,
47
+ className: "puzzle-slider__value",
48
+ children: formattedValue ?? currentValue
49
+ }),
50
+ /* @__PURE__ */ jsx("input", {
51
+ ...inputProps,
52
+ ref,
53
+ id: inputId,
54
+ className: "puzzle-slider__input",
55
+ type: "range",
56
+ min: resolvedMin,
57
+ max: resolvedMax,
58
+ step: resolvedStep,
59
+ value: currentValue,
60
+ disabled,
61
+ "aria-invalid": ariaInvalid,
62
+ "aria-valuetext": ariaValueText ?? formattedValue,
63
+ style: {
64
+ ...style,
65
+ "--puzzle-slider-progress": `${progress}%`
66
+ },
67
+ onChange: handleChange
68
+ }),
69
+ resolvedMarks.length > 0 && /* @__PURE__ */ jsx("div", {
70
+ className: "puzzle-slider__marks",
71
+ "data-has-labels": hasMarkLabels || void 0,
72
+ children: resolvedMarks.map((mark, index) => {
73
+ const position = resolvedMax > resolvedMin ? (mark.value - resolvedMin) / (resolvedMax - resolvedMin) * 100 : 0;
74
+ return /* @__PURE__ */ jsxs("span", {
75
+ className: "puzzle-slider__mark",
76
+ "data-edge": index === 0 ? "start" : index === resolvedMarks.length - 1 ? "end" : void 0,
77
+ style: { insetInlineStart: `${position}%` },
78
+ children: [/* @__PURE__ */ jsx("span", {
79
+ className: "puzzle-slider__mark-tick",
80
+ "aria-hidden": "true"
81
+ }), mark.label != null && /* @__PURE__ */ jsx("span", {
82
+ className: "puzzle-slider__mark-label",
83
+ children: mark.label
84
+ })]
85
+ }, `${mark.value}-${index}`);
86
+ })
87
+ })
88
+ ]
89
+ });
90
+ };
91
+ export { Slider };
92
+
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/forms/slider/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useId,\n useState,\n type ChangeEvent,\n type ComponentPropsWithRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport \"./slider.css\";\n\ntype SliderSize = \"sm\" | \"md\" | \"lg\";\n\ntype SliderMark = {\n /** Numeric position of the mark. */\n value: number;\n\n /** Optional visible label below the mark. */\n label?: ReactNode;\n};\n\ntype SliderProps = Omit<\n ComponentPropsWithRef<\"input\">,\n | \"type\"\n | \"value\"\n | \"defaultValue\"\n | \"onChange\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"size\"\n | \"className\"\n> & {\n /** Controlled numeric value. */\n value?: number;\n\n /** Initial value for uncontrolled usage. Defaults to the range midpoint. */\n defaultValue?: number;\n\n /** Called whenever the selected value changes. */\n onChange?: (value: number) => void;\n\n /** Minimum selectable value. Defaults to 0. */\n min?: number;\n\n /** Maximum selectable value. Defaults to 100. */\n max?: number;\n\n /** Allowed increment. Use \"any\" to disable step rounding. */\n step?: number | \"any\";\n\n /** Visual size of the slider. */\n size?: SliderSize;\n\n /** Optional marks displayed below the track. */\n marks?: readonly SliderMark[];\n\n /** Displays the current value above the slider. */\n showValue?: boolean;\n\n /**\n * Formats the visible value and supplies aria-valuetext.\n * An explicitly supplied aria-valuetext takes precedence.\n */\n formatValue?: (value: number) => string;\n\n /** Class applied to the outer slider element. */\n className?: string;\n};\n\nconst getPrecision = (value: number) => {\n const [coefficient, exponent = \"0\"] = String(value).toLowerCase().split(\"e\");\n\n const decimals = coefficient.split(\".\")[1]?.length ?? 0;\n\n return Math.min(12, Math.max(0, decimals - Number(exponent)));\n};\n\nconst normalizeSliderValue = (\n value: number,\n min: number,\n max: number,\n step: number | \"any\",\n) => {\n if (max <= min) {\n return min;\n }\n\n const boundedValue = Math.min(max, Math.max(min, value));\n\n if (step === \"any\") {\n return boundedValue;\n }\n\n const precision = Math.max(getPrecision(min), getPrecision(step));\n const factor = 10 ** precision;\n\n const steppedValue = min + Math.round((boundedValue - min) / step) * step;\n\n return Math.min(\n max,\n Math.max(min, Math.round(steppedValue * factor) / factor),\n );\n};\n\nconst Slider = ({\n value,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n size = \"md\",\n marks,\n showValue = false,\n formatValue,\n className,\n id,\n ref,\n disabled = false,\n style,\n \"aria-invalid\": ariaInvalid,\n \"aria-valuetext\": ariaValueText,\n ...inputProps\n}: SliderProps) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n\n const resolvedMin = Number.isFinite(min) ? min : 0;\n\n const requestedMax = Number.isFinite(max) ? max : 100;\n const resolvedMax = Math.max(resolvedMin, requestedMax);\n\n const resolvedStep =\n step === \"any\" ? \"any\" : Number.isFinite(step) && step > 0 ? step : 1;\n\n const isControlled = value !== undefined;\n\n const [internalValue, setInternalValue] = useState(() =>\n normalizeSliderValue(\n defaultValue ?? (resolvedMin + resolvedMax) / 2,\n resolvedMin,\n resolvedMax,\n resolvedStep,\n ),\n );\n\n const currentValue = normalizeSliderValue(\n isControlled ? value : internalValue,\n resolvedMin,\n resolvedMax,\n resolvedStep,\n );\n\n const progress =\n resolvedMax > resolvedMin\n ? ((currentValue - resolvedMin) / (resolvedMax - resolvedMin)) * 100\n : 0;\n\n const formattedValue = formatValue?.(currentValue);\n\n const isInvalid = ariaInvalid === true || ariaInvalid === \"true\";\n\n const resolvedMarks = (marks ?? [])\n .filter(\n (mark) =>\n Number.isFinite(mark.value) &&\n mark.value >= resolvedMin &&\n mark.value <= resolvedMax,\n )\n .slice()\n .sort((a, b) => a.value - b.value);\n\n const hasMarkLabels = resolvedMarks.some((mark) => mark.label != null);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = normalizeSliderValue(\n event.currentTarget.valueAsNumber,\n resolvedMin,\n resolvedMax,\n resolvedStep,\n );\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n };\n\n return (\n <div\n className={cn(\"puzzle-slider\", className)}\n data-size={size}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n >\n {showValue && (\n <output htmlFor={inputId} className=\"puzzle-slider__value\">\n {formattedValue ?? currentValue}\n </output>\n )}\n\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n className=\"puzzle-slider__input\"\n type=\"range\"\n min={resolvedMin}\n max={resolvedMax}\n step={resolvedStep}\n value={currentValue}\n disabled={disabled}\n aria-invalid={ariaInvalid}\n aria-valuetext={ariaValueText ?? formattedValue}\n style={\n {\n ...style,\n \"--puzzle-slider-progress\": `${progress}%`,\n } as CSSProperties\n }\n onChange={handleChange}\n />\n\n {resolvedMarks.length > 0 && (\n <div\n className=\"puzzle-slider__marks\"\n data-has-labels={hasMarkLabels || undefined}\n >\n {resolvedMarks.map((mark, index) => {\n const position =\n resolvedMax > resolvedMin\n ? ((mark.value - resolvedMin) / (resolvedMax - resolvedMin)) *\n 100\n : 0;\n\n return (\n <span\n key={`${mark.value}-${index}`}\n className=\"puzzle-slider__mark\"\n data-edge={\n index === 0\n ? \"start\"\n : index === resolvedMarks.length - 1\n ? \"end\"\n : undefined\n }\n style={{\n insetInlineStart: `${position}%`,\n }}\n >\n <span className=\"puzzle-slider__mark-tick\" aria-hidden=\"true\" />\n\n {mark.label != null && (\n <span className=\"puzzle-slider__mark-label\">\n {mark.label}\n </span>\n )}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nexport { Slider, type SliderProps, type SliderMark, type SliderSize };\n"],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ .puzzle-slider {
2
+ --puzzle-slider-thumb-size: 1.125rem;
3
+ --puzzle-slider-track-height: .375rem;
4
+ --puzzle-slider-fill: var(--puzzle-color-primary);
5
+ gap: var(--puzzle-space-1, .25rem);
6
+ width: 100%;
7
+ min-width: 0;
8
+ color: var(--puzzle-color-text);
9
+ font-family: var(--puzzle-font-family-body, inherit);
10
+ flex-direction: column;
11
+ display: flex;
12
+ }
13
+
14
+ .puzzle-slider[data-size="sm"] {
15
+ --puzzle-slider-thumb-size: .875rem;
16
+ --puzzle-slider-track-height: .25rem;
17
+ }
18
+
19
+ .puzzle-slider[data-size="md"] {
20
+ --puzzle-slider-thumb-size: 1.125rem;
21
+ --puzzle-slider-track-height: .375rem;
22
+ }
23
+
24
+ .puzzle-slider[data-size="lg"] {
25
+ --puzzle-slider-thumb-size: 1.375rem;
26
+ --puzzle-slider-track-height: .5rem;
27
+ }
28
+
29
+ .puzzle-slider__value {
30
+ color: var(--puzzle-color-text);
31
+ font-size: var(--puzzle-font-size-sm, .875rem);
32
+ font-weight: var(--puzzle-font-weight-medium, 500);
33
+ font-variant-numeric: tabular-nums;
34
+ line-height: var(--puzzle-font-line-height-normal, 1.5);
35
+ align-self: flex-end;
36
+ }
37
+
38
+ .puzzle-slider__input {
39
+ -webkit-appearance: none;
40
+ appearance: none;
41
+ cursor: pointer;
42
+ touch-action: pan-y;
43
+ -webkit-tap-highlight-color: transparent;
44
+ background: none;
45
+ border: 0;
46
+ width: 100%;
47
+ min-width: 0;
48
+ height: 2rem;
49
+ margin: 0;
50
+ padding: 0;
51
+ display: block;
52
+ }
53
+
54
+ .puzzle-slider__input::-webkit-slider-runnable-track {
55
+ width: 100%;
56
+ height: var(--puzzle-slider-track-height);
57
+ background: linear-gradient(to right,
58
+ var(--puzzle-slider-fill) 0,
59
+ var(--puzzle-slider-fill) var(--puzzle-slider-progress, 50%),
60
+ var(--puzzle-color-border) var(--puzzle-slider-progress, 50%),
61
+ var(--puzzle-color-border) 100%);
62
+ border-radius: 9999px;
63
+ }
64
+
65
+ .puzzle-slider__input::-webkit-slider-thumb {
66
+ -webkit-appearance: none;
67
+ appearance: none;
68
+ box-sizing: border-box;
69
+ width: var(--puzzle-slider-thumb-size);
70
+ height: var(--puzzle-slider-thumb-size);
71
+ margin-top: calc((var(--puzzle-slider-track-height) - var(--puzzle-slider-thumb-size)) / 2);
72
+ border: 2px solid var(--puzzle-slider-fill);
73
+ background: var(--puzzle-color-surface);
74
+ transition: border-color var(--puzzle-duration-fast, .15s) ease,
75
+ box-shadow var(--puzzle-duration-fast, .15s) ease,
76
+ background-color var(--puzzle-duration-fast, .15s) ease;
77
+ border-radius: 50%;
78
+ box-shadow: 0 1px 3px #0000001f;
79
+ }
80
+
81
+ .puzzle-slider__input::-moz-range-track {
82
+ height: var(--puzzle-slider-track-height);
83
+ background: var(--puzzle-color-border);
84
+ border-radius: 9999px;
85
+ }
86
+
87
+ .puzzle-slider__input::-moz-range-progress {
88
+ height: var(--puzzle-slider-track-height);
89
+ background: var(--puzzle-slider-fill);
90
+ border-radius: 9999px;
91
+ }
92
+
93
+ .puzzle-slider__input::-moz-range-thumb {
94
+ box-sizing: border-box;
95
+ width: var(--puzzle-slider-thumb-size);
96
+ height: var(--puzzle-slider-thumb-size);
97
+ border: 2px solid var(--puzzle-slider-fill);
98
+ background: var(--puzzle-color-surface);
99
+ transition: border-color var(--puzzle-duration-fast, .15s) ease,
100
+ box-shadow var(--puzzle-duration-fast, .15s) ease,
101
+ background-color var(--puzzle-duration-fast, .15s) ease;
102
+ border-radius: 50%;
103
+ box-shadow: 0 1px 3px #0000001f;
104
+ }
105
+
106
+ :dir(rtl) .puzzle-slider__input::-webkit-slider-runnable-track {
107
+ background: linear-gradient(to left,
108
+ var(--puzzle-slider-fill) 0,
109
+ var(--puzzle-slider-fill) var(--puzzle-slider-progress, 50%),
110
+ var(--puzzle-color-border) var(--puzzle-slider-progress, 50%),
111
+ var(--puzzle-color-border) 100%);
112
+ }
113
+
114
+ .puzzle-slider__input:hover:not(:disabled)::-webkit-slider-thumb, .puzzle-slider__input:hover:not(:disabled)::-moz-range-thumb {
115
+ border-color: var(--puzzle-color-primary);
116
+ }
117
+
118
+ .puzzle-slider__input:focus-visible::-webkit-slider-thumb, .puzzle-slider__input:focus-visible::-moz-range-thumb {
119
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--puzzle-slider-fill), transparent 78%);
120
+ }
121
+
122
+ .puzzle-slider__marks {
123
+ height: .375rem;
124
+ margin-inline: calc(var(--puzzle-slider-thumb-size) / 2);
125
+ position: relative;
126
+ }
127
+
128
+ .puzzle-slider__marks[data-has-labels="true"] {
129
+ height: 1.5rem;
130
+ }
131
+
132
+ .puzzle-slider__mark {
133
+ align-items: center;
134
+ gap: var(--puzzle-space-1, .25rem);
135
+ flex-direction: column;
136
+ display: flex;
137
+ position: absolute;
138
+ top: 0;
139
+ transform: translateX(-50%);
140
+ }
141
+
142
+ .puzzle-slider__mark[data-edge="start"] {
143
+ transform: translateX(0);
144
+ }
145
+
146
+ .puzzle-slider__mark[data-edge="end"], :dir(rtl) .puzzle-slider__mark[data-edge="start"] {
147
+ transform: translateX(-100%);
148
+ }
149
+
150
+ :dir(rtl) .puzzle-slider__mark[data-edge="end"] {
151
+ transform: translateX(0);
152
+ }
153
+
154
+ .puzzle-slider__mark-tick {
155
+ background: var(--puzzle-color-border-strong, var(--puzzle-color-border));
156
+ flex: none;
157
+ width: 1px;
158
+ height: .375rem;
159
+ display: block;
160
+ }
161
+
162
+ .puzzle-slider__mark-label {
163
+ color: var(--puzzle-color-text-muted);
164
+ font-size: var(--puzzle-font-size-xs, .75rem);
165
+ line-height: var(--puzzle-font-line-height-normal, 1.5);
166
+ white-space: nowrap;
167
+ }
168
+
169
+ .puzzle-slider[data-disabled="true"] {
170
+ opacity: .55;
171
+ cursor: not-allowed;
172
+ }
173
+
174
+ .puzzle-slider__input:disabled {
175
+ cursor: not-allowed;
176
+ }
177
+
178
+ .puzzle-slider[data-invalid="true"] {
179
+ --puzzle-slider-fill: var(--puzzle-color-danger);
180
+ }
181
+
182
+ @media (forced-colors: active) {
183
+ .puzzle-slider__input:focus-visible {
184
+ outline-offset: 3px;
185
+ outline: 2px solid highlight;
186
+ }
187
+
188
+ .puzzle-slider__input::-webkit-slider-thumb, .puzzle-slider__input::-moz-range-thumb {
189
+ background: canvas;
190
+ border-color: buttontext;
191
+ }
192
+
193
+ .puzzle-slider__mark-tick {
194
+ background: buttontext;
195
+ }
196
+ }
197
+
198
+ @media (prefers-reduced-motion: reduce) {
199
+ .puzzle-slider__input::-webkit-slider-thumb, .puzzle-slider__input::-moz-range-thumb {
200
+ transition: none;
201
+ }
202
+ }
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ ;/* empty css */
3
+ let _puzzle_ui_core = require("@puzzle-ui/core");
4
+ let react = require("react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ let _puzzle_ui_hooks = require("@puzzle-ui/hooks");
7
+ // src/components/forms/stepper/index.tsx
8
+ const StepperStep = (_props) => null;
9
+ const isStepperStep = (child) => (0, react.isValidElement)(child) && child.type === StepperStep;
10
+ const StepperRoot = ({ activeStep, activeStepId, defaultActiveStep = 0, defaultActiveStepId, onStepChange, onStepIdChange, orientation = "horizontal", clickable = false, linear = true, children, className, ...rootProps }) => {
11
+ const [uncontrolledActiveStep, setUncontrolledActiveStep] = (0, react.useState)(defaultActiveStep);
12
+ const [uncontrolledActiveStepId, setUncontrolledActiveStepId] = (0, react.useState)(defaultActiveStepId);
13
+ const orientations = (0, _puzzle_ui_core.resolveResponsiveValue)(orientation);
14
+ const steps = react.Children.toArray(children).filter(isStepperStep);
15
+ const isIdSelection = activeStepId !== void 0 || defaultActiveStepId !== void 0;
16
+ const requestedActiveStepId = activeStepId ?? uncontrolledActiveStepId;
17
+ if (isIdSelection) {
18
+ const stepIds = /* @__PURE__ */ new Set();
19
+ for (const step of steps) {
20
+ const id = step.props.id;
21
+ if (id === void 0) throw new Error("Stepper ID-based selection requires an id on every step.");
22
+ const key = `${typeof id}:${id}`;
23
+ if (stepIds.has(key)) throw new Error("Stepper step IDs must be unique.");
24
+ stepIds.add(key);
25
+ }
26
+ }
27
+ const requestedActiveStep = activeStep ?? uncontrolledActiveStep;
28
+ const requestedActiveStepIndex = isIdSelection ? steps.findIndex((step) => step.props.id === requestedActiveStepId) : void 0;
29
+ if (isIdSelection && steps.length > 0 && requestedActiveStepIndex === -1) throw new Error("Stepper activeStepId must match an available step ID.");
30
+ const currentActiveStep = isIdSelection ? requestedActiveStepIndex ?? -1 : steps.length === 0 ? -1 : Number.isFinite(requestedActiveStep) ? Math.min(steps.length - 1, Math.max(0, Math.trunc(requestedActiveStep))) : 0;
31
+ const direction = rootProps.dir === "rtl" ? "rtl" : "ltr";
32
+ const focusItems = steps.map((step, index) => {
33
+ const selectable = clickable && !step.props.disabled && (!linear || index <= currentActiveStep);
34
+ return {
35
+ id: step.props.id === void 0 ? `index:${index}` : `${typeof step.props.id}:${step.props.id}`,
36
+ disabled: !selectable
37
+ };
38
+ });
39
+ const activeFocusId = currentActiveStep >= 0 ? focusItems[currentActiveStep]?.id : void 0;
40
+ const rovingFocus = (0, _puzzle_ui_hooks.useRovingFocus)({
41
+ items: focusItems,
42
+ orientation: "both",
43
+ dir: direction,
44
+ initialActiveId: activeFocusId
45
+ });
46
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ol", {
47
+ ...rootProps,
48
+ className: (0, _puzzle_ui_core.cn)("puzzle-stepper", className),
49
+ "data-orientation-mobile": orientations.mobile,
50
+ "data-orientation-tablet": orientations.tablet,
51
+ "data-orientation-desktop": orientations.desktop,
52
+ children: steps.map((step, index) => {
53
+ const { id, label, description, icon, completed: completedProp, error, disabled = false, optional, className: stepClassName } = step.props;
54
+ const state = error ? "error" : completedProp ?? index < currentActiveStep ? "completed" : index === currentActiveStep ? "active" : "upcoming";
55
+ const selectable = !disabled && (!linear || index <= currentActiveStep);
56
+ const focusId = id === void 0 ? `index:${index}` : `${typeof id}:${id}`;
57
+ const handleClick = () => {
58
+ if (!selectable || index === currentActiveStep) return;
59
+ if (isIdSelection) {
60
+ if (activeStepId === void 0) setUncontrolledActiveStepId(id);
61
+ } else if (activeStep === void 0) setUncontrolledActiveStep(index);
62
+ onStepChange?.(index);
63
+ if (isIdSelection && id !== void 0) onStepIdChange?.(id);
64
+ };
65
+ const content = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
66
+ className: "puzzle-stepper__indicator",
67
+ "data-has-icon": icon != null ? "true" : "false",
68
+ "aria-hidden": "true",
69
+ children: icon ?? (state === "completed" || state === "error" ? null : index + 1)
70
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
71
+ className: "puzzle-stepper__label",
72
+ children: [
73
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
74
+ className: "puzzle-stepper__label-text",
75
+ children: label
76
+ }),
77
+ description != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
78
+ className: "puzzle-stepper__description",
79
+ children: description
80
+ }),
81
+ optional != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
82
+ className: "puzzle-stepper__optional",
83
+ children: optional
84
+ })
85
+ ]
86
+ })] });
87
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
88
+ className: (0, _puzzle_ui_core.cn)("puzzle-stepper__item", stepClassName),
89
+ "data-state": state,
90
+ "data-disabled": disabled || clickable && !selectable ? "true" : void 0,
91
+ "aria-current": index === currentActiveStep ? "step" : void 0,
92
+ children: clickable ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
93
+ type: "button",
94
+ className: "puzzle-stepper__step",
95
+ disabled: !selectable,
96
+ ref: rovingFocus.getItemRef(focusId),
97
+ tabIndex: rovingFocus.getItemTabIndex(focusId, !selectable),
98
+ onFocus: () => rovingFocus.onItemFocus(focusId),
99
+ onKeyDown: (event) => rovingFocus.onItemKeyDown(event, focusId),
100
+ onClick: handleClick,
101
+ children: content
102
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
103
+ className: "puzzle-stepper__step",
104
+ children: content
105
+ })
106
+ }, id === void 0 ? step.key ?? index : `${typeof id}:${id}`);
107
+ })
108
+ });
109
+ };
110
+ const Stepper = Object.assign(StepperRoot, { Step: StepperStep });
111
+ exports.Stepper = Stepper;
112
+
113
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["isValidElement","useState","resolveResponsiveValue","Children","useRovingFocus","cn"],"sources":["../../../../src/components/forms/stepper/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n cn,\n resolveResponsiveValue,\n type ResponsiveValue,\n} from \"@puzzle-ui/core\";\nimport { useRovingFocus } from \"@puzzle-ui/hooks\";\nimport {\n Children,\n isValidElement,\n useState,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport \"./stepper.css\";\n\ntype StepperOrientation = \"horizontal\" | \"vertical\";\n\ntype StepperStepProps = {\n /** Stable identifier, useful when steps are reordered. */\n id?: string | number;\n\n /** Visible label of the step. */\n label: ReactNode;\n\n /** Optional supporting text below the label. */\n description?: ReactNode;\n\n /** Custom indicator content. */\n icon?: ReactNode;\n\n /** Overrides the automatically calculated completed state. */\n completed?: boolean;\n\n /** Displays the step as an error. */\n error?: boolean;\n\n /** Prevents navigation to this step. */\n disabled?: boolean;\n\n /** Optional content displayed below the label. */\n optional?: ReactNode;\n\n /** Class applied to the step item. */\n className?: string;\n};\n\ntype StepperProps = Omit<ComponentPropsWithoutRef<\"ol\">, \"children\"> & {\n /** Active step index. Values are clamped to available steps. Defaults to 0. */\n activeStep?: number;\n\n /** Active step ID. Enables controlled ID-based selection. */\n activeStepId?: string | number;\n\n /** Initial active step for uncontrolled usage. Defaults to 0. */\n defaultActiveStep?: number;\n\n /** Initial active step ID for uncontrolled ID-based selection. */\n defaultActiveStepId?: string | number;\n\n /** Called when the active step changes. */\n onStepChange?: (step: number) => void;\n\n /** Called when an ID-based active step changes. */\n onStepIdChange?: (stepId: string | number) => void;\n\n /** Layout direction, optionally responsive. */\n orientation?: ResponsiveValue<StepperOrientation>;\n\n /** Allows users to select steps. Defaults to false. */\n clickable?: boolean;\n\n /** Prevents selecting steps ahead of the active step. Defaults to true. */\n linear?: boolean;\n\n children: ReactNode;\n};\n\nconst StepperStep = (_props: StepperStepProps) => null;\n\ntype StepperStepElement = ReactElement<StepperStepProps, typeof StepperStep>;\n\nconst isStepperStep = (child: ReactNode): child is StepperStepElement =>\n isValidElement<StepperStepProps>(child) && child.type === StepperStep;\n\nconst StepperRoot = ({\n activeStep,\n activeStepId,\n defaultActiveStep = 0,\n defaultActiveStepId,\n onStepChange,\n onStepIdChange,\n orientation = \"horizontal\",\n clickable = false,\n linear = true,\n children,\n className,\n ...rootProps\n}: StepperProps) => {\n const [uncontrolledActiveStep, setUncontrolledActiveStep] =\n useState(defaultActiveStep);\n const [uncontrolledActiveStepId, setUncontrolledActiveStepId] =\n useState(defaultActiveStepId);\n\n const orientations = resolveResponsiveValue(orientation);\n const steps = Children.toArray(children).filter(isStepperStep);\n const isIdSelection =\n activeStepId !== undefined || defaultActiveStepId !== undefined;\n const requestedActiveStepId = activeStepId ?? uncontrolledActiveStepId;\n\n if (isIdSelection) {\n const stepIds = new Set<string>();\n\n for (const step of steps) {\n const id = step.props.id;\n\n if (id === undefined) {\n throw new Error(\n \"Stepper ID-based selection requires an id on every step.\",\n );\n }\n\n const key = `${typeof id}:${id}`;\n\n if (stepIds.has(key)) {\n throw new Error(\"Stepper step IDs must be unique.\");\n }\n\n stepIds.add(key);\n }\n }\n\n const requestedActiveStep = activeStep ?? uncontrolledActiveStep;\n const requestedActiveStepIndex = isIdSelection\n ? steps.findIndex((step) => step.props.id === requestedActiveStepId)\n : undefined;\n\n if (\n isIdSelection &&\n steps.length > 0 &&\n requestedActiveStepIndex === -1\n ) {\n throw new Error(\"Stepper activeStepId must match an available step ID.\");\n }\n\n const currentActiveStep = isIdSelection\n ? (requestedActiveStepIndex ?? -1)\n : steps.length === 0\n ? -1\n : Number.isFinite(requestedActiveStep)\n ? Math.min(\n steps.length - 1,\n Math.max(0, Math.trunc(requestedActiveStep)),\n )\n : 0;\n const direction = rootProps.dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n const focusItems = steps.map((step, index) => {\n const selectable =\n clickable &&\n !step.props.disabled &&\n (!linear || index <= currentActiveStep);\n\n return {\n id:\n step.props.id === undefined\n ? `index:${index}`\n : `${typeof step.props.id}:${step.props.id}`,\n disabled: !selectable,\n };\n });\n\n const activeFocusId =\n currentActiveStep >= 0\n ? focusItems[currentActiveStep]?.id\n : undefined;\n const rovingFocus = useRovingFocus<HTMLButtonElement>({\n items: focusItems,\n orientation: \"both\",\n dir: direction,\n initialActiveId: activeFocusId,\n });\n\n return (\n <ol\n {...rootProps}\n className={cn(\"puzzle-stepper\", className)}\n data-orientation-mobile={orientations.mobile}\n data-orientation-tablet={orientations.tablet}\n data-orientation-desktop={orientations.desktop}\n >\n {steps.map((step, index) => {\n const {\n id,\n label,\n description,\n icon,\n completed: completedProp,\n error,\n disabled = false,\n optional,\n className: stepClassName,\n } = step.props;\n\n const completed = completedProp ?? index < currentActiveStep;\n\n const state = error\n ? \"error\"\n : completed\n ? \"completed\"\n : index === currentActiveStep\n ? \"active\"\n : \"upcoming\";\n\n const selectable = !disabled && (!linear || index <= currentActiveStep);\n const focusId =\n id === undefined ? `index:${index}` : `${typeof id}:${id}`;\n\n const handleClick = () => {\n if (!selectable || index === currentActiveStep) {\n return;\n }\n\n if (isIdSelection) {\n if (activeStepId === undefined) {\n setUncontrolledActiveStepId(id);\n }\n } else if (activeStep === undefined) {\n setUncontrolledActiveStep(index);\n }\n\n onStepChange?.(index);\n if (isIdSelection && id !== undefined) {\n onStepIdChange?.(id);\n }\n };\n\n const content = (\n <>\n <span\n className=\"puzzle-stepper__indicator\"\n data-has-icon={icon != null ? \"true\" : \"false\"}\n aria-hidden=\"true\"\n >\n {icon ??\n (state === \"completed\" || state === \"error\" ? null : index + 1)}\n </span>\n\n <span className=\"puzzle-stepper__label\">\n <span className=\"puzzle-stepper__label-text\">{label}</span>\n\n {description != null && (\n <span className=\"puzzle-stepper__description\">\n {description}\n </span>\n )}\n\n {optional != null && (\n <span className=\"puzzle-stepper__optional\">{optional}</span>\n )}\n </span>\n </>\n );\n\n return (\n <li\n key={\n id === undefined ? (step.key ?? index) : `${typeof id}:${id}`\n }\n className={cn(\"puzzle-stepper__item\", stepClassName)}\n data-state={state}\n data-disabled={\n disabled || (clickable && !selectable) ? \"true\" : undefined\n }\n aria-current={index === currentActiveStep ? \"step\" : undefined}\n >\n {clickable ? (\n <button\n type=\"button\"\n className=\"puzzle-stepper__step\"\n disabled={!selectable}\n ref={rovingFocus.getItemRef(focusId)}\n tabIndex={rovingFocus.getItemTabIndex(focusId, !selectable)}\n onFocus={() => rovingFocus.onItemFocus(focusId)}\n onKeyDown={(event) =>\n rovingFocus.onItemKeyDown(event, focusId)\n }\n onClick={handleClick}\n >\n {content}\n </button>\n ) : (\n <div className=\"puzzle-stepper__step\">{content}</div>\n )}\n </li>\n );\n })}\n </ol>\n );\n};\n\nconst Stepper = Object.assign(StepperRoot, {\n Step: StepperStep,\n});\n\nexport {\n Stepper,\n type StepperProps,\n type StepperStepProps,\n type StepperOrientation,\n};\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ import { ResponsiveValue } from "@puzzle-ui/core";
3
+ type StepperOrientation = "horizontal" | "vertical";
4
+ type StepperStepProps = {
5
+ /** Stable identifier, useful when steps are reordered. */
6
+ id?: string | number;
7
+ /** Visible label of the step. */
8
+ label: ReactNode;
9
+ /** Optional supporting text below the label. */
10
+ description?: ReactNode;
11
+ /** Custom indicator content. */
12
+ icon?: ReactNode;
13
+ /** Overrides the automatically calculated completed state. */
14
+ completed?: boolean;
15
+ /** Displays the step as an error. */
16
+ error?: boolean;
17
+ /** Prevents navigation to this step. */
18
+ disabled?: boolean;
19
+ /** Optional content displayed below the label. */
20
+ optional?: ReactNode;
21
+ /** Class applied to the step item. */
22
+ className?: string;
23
+ };
24
+ type StepperProps = Omit<ComponentPropsWithoutRef<"ol">, "children"> & {
25
+ /** Active step index. Values are clamped to available steps. Defaults to 0. */
26
+ activeStep?: number;
27
+ /** Active step ID. Enables controlled ID-based selection. */
28
+ activeStepId?: string | number;
29
+ /** Initial active step for uncontrolled usage. Defaults to 0. */
30
+ defaultActiveStep?: number;
31
+ /** Initial active step ID for uncontrolled ID-based selection. */
32
+ defaultActiveStepId?: string | number;
33
+ /** Called when the active step changes. */
34
+ onStepChange?: (step: number) => void;
35
+ /** Called when an ID-based active step changes. */
36
+ onStepIdChange?: (stepId: string | number) => void;
37
+ /** Layout direction, optionally responsive. */
38
+ orientation?: ResponsiveValue<StepperOrientation>;
39
+ /** Allows users to select steps. Defaults to false. */
40
+ clickable?: boolean;
41
+ /** Prevents selecting steps ahead of the active step. Defaults to true. */
42
+ linear?: boolean;
43
+ children: ReactNode;
44
+ };
45
+ declare const Stepper: (({ activeStep, activeStepId, defaultActiveStep, defaultActiveStepId, onStepChange, onStepIdChange, orientation, clickable, linear, children, className, ...rootProps }: StepperProps) => import("react").JSX.Element) & {
46
+ Step: (_props: StepperStepProps) => null;
47
+ };
48
+ export { Stepper, type StepperOrientation, type StepperProps, type StepperStepProps };
@@ -0,0 +1,48 @@
1
+ import { ResponsiveValue } from "@puzzle-ui/core";
2
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
3
+ type StepperOrientation = "horizontal" | "vertical";
4
+ type StepperStepProps = {
5
+ /** Stable identifier, useful when steps are reordered. */
6
+ id?: string | number;
7
+ /** Visible label of the step. */
8
+ label: ReactNode;
9
+ /** Optional supporting text below the label. */
10
+ description?: ReactNode;
11
+ /** Custom indicator content. */
12
+ icon?: ReactNode;
13
+ /** Overrides the automatically calculated completed state. */
14
+ completed?: boolean;
15
+ /** Displays the step as an error. */
16
+ error?: boolean;
17
+ /** Prevents navigation to this step. */
18
+ disabled?: boolean;
19
+ /** Optional content displayed below the label. */
20
+ optional?: ReactNode;
21
+ /** Class applied to the step item. */
22
+ className?: string;
23
+ };
24
+ type StepperProps = Omit<ComponentPropsWithoutRef<"ol">, "children"> & {
25
+ /** Active step index. Values are clamped to available steps. Defaults to 0. */
26
+ activeStep?: number;
27
+ /** Active step ID. Enables controlled ID-based selection. */
28
+ activeStepId?: string | number;
29
+ /** Initial active step for uncontrolled usage. Defaults to 0. */
30
+ defaultActiveStep?: number;
31
+ /** Initial active step ID for uncontrolled ID-based selection. */
32
+ defaultActiveStepId?: string | number;
33
+ /** Called when the active step changes. */
34
+ onStepChange?: (step: number) => void;
35
+ /** Called when an ID-based active step changes. */
36
+ onStepIdChange?: (stepId: string | number) => void;
37
+ /** Layout direction, optionally responsive. */
38
+ orientation?: ResponsiveValue<StepperOrientation>;
39
+ /** Allows users to select steps. Defaults to false. */
40
+ clickable?: boolean;
41
+ /** Prevents selecting steps ahead of the active step. Defaults to true. */
42
+ linear?: boolean;
43
+ children: ReactNode;
44
+ };
45
+ declare const Stepper: (({ activeStep, activeStepId, defaultActiveStep, defaultActiveStepId, onStepChange, onStepIdChange, orientation, clickable, linear, children, className, ...rootProps }: StepperProps) => import("react").JSX.Element) & {
46
+ Step: (_props: StepperStepProps) => null;
47
+ };
48
+ export { Stepper, type StepperOrientation, type StepperProps, type StepperStepProps };