@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,113 @@
1
+ "use client";
2
+ import "./stepper.css";
3
+ import { cn, resolveResponsiveValue } from "@puzzle-ui/core";
4
+ import { Children, isValidElement, useState } from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { useRovingFocus } from "@puzzle-ui/hooks";
7
+ // src/components/forms/stepper/index.tsx
8
+ const StepperStep = (_props) => null;
9
+ const isStepperStep = (child) => 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] = useState(defaultActiveStep);
12
+ const [uncontrolledActiveStepId, setUncontrolledActiveStepId] = useState(defaultActiveStepId);
13
+ const orientations = resolveResponsiveValue(orientation);
14
+ const steps = 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 = useRovingFocus({
41
+ items: focusItems,
42
+ orientation: "both",
43
+ dir: direction,
44
+ initialActiveId: activeFocusId
45
+ });
46
+ return /* @__PURE__ */ jsx("ol", {
47
+ ...rootProps,
48
+ className: 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__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ 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__ */ jsxs("span", {
71
+ className: "puzzle-stepper__label",
72
+ children: [
73
+ /* @__PURE__ */ jsx("span", {
74
+ className: "puzzle-stepper__label-text",
75
+ children: label
76
+ }),
77
+ description != null && /* @__PURE__ */ jsx("span", {
78
+ className: "puzzle-stepper__description",
79
+ children: description
80
+ }),
81
+ optional != null && /* @__PURE__ */ jsx("span", {
82
+ className: "puzzle-stepper__optional",
83
+ children: optional
84
+ })
85
+ ]
86
+ })] });
87
+ return /* @__PURE__ */ jsx("li", {
88
+ className: 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__ */ 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__ */ 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
+ export { Stepper };
112
+
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"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":";;;;;;;AAgFA,MAAM,eAAe,WAA6B;AAIlD,MAAM,iBAAiB,UACrB,eAAiC,KAAK,KAAK,MAAM,SAAS;AAE5D,MAAM,eAAe,EACnB,YACA,cACA,oBAAoB,GACpB,qBACA,cACA,gBACA,cAAc,cACd,YAAY,OACZ,SAAS,MACT,UACA,WACA,GAAG,gBACe;CAClB,MAAM,CAAC,wBAAwB,6BAC7B,SAAS,iBAAiB;CAC5B,MAAM,CAAC,0BAA0B,+BAC/B,SAAS,mBAAmB;CAE9B,MAAM,eAAe,uBAAuB,WAAW;CACvD,MAAM,QAAQ,SAAS,QAAQ,QAAQ,CAAC,CAAC,OAAO,aAAa;CAC7D,MAAM,gBACJ,iBAAiB,KAAA,KAAa,wBAAwB,KAAA;CACxD,MAAM,wBAAwB,gBAAgB;CAE9C,IAAI,eAAe;EACjB,MAAM,0BAAU,IAAI,IAAY;EAEhC,KAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,KAAK,KAAK,MAAM;GAEtB,IAAI,OAAO,KAAA,GACT,MAAM,IAAI,MACR,0DACF;GAGF,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;GAE5B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MAAM,kCAAkC;GAGpD,QAAQ,IAAI,GAAG;EACjB;CACF;CAEA,MAAM,sBAAsB,cAAc;CAC1C,MAAM,2BAA2B,gBAC7B,MAAM,WAAW,SAAS,KAAK,MAAM,OAAO,qBAAqB,IACjE,KAAA;CAEJ,IACE,iBACA,MAAM,SAAS,KACf,6BAA6B,IAE7B,MAAM,IAAI,MAAM,uDAAuD;CAGzE,MAAM,oBAAoB,gBACrB,4BAA4B,KAC7B,MAAM,WAAW,IACf,KACA,OAAO,SAAS,mBAAmB,IACjC,KAAK,IACH,MAAM,SAAS,GACf,KAAK,IAAI,GAAG,KAAK,MAAM,mBAAmB,CAAC,CAC7C,IACA;CACR,MAAM,YAAY,UAAU,QAAQ,QAAQ,QAAQ;CAEpD,MAAM,aAAa,MAAM,KAAK,MAAM,UAAU;EAC5C,MAAM,aACJ,aACA,CAAC,KAAK,MAAM,aACX,CAAC,UAAU,SAAS;EAEvB,OAAO;GACL,IACE,KAAK,MAAM,OAAO,KAAA,IACd,SAAS,UACT,GAAG,OAAO,KAAK,MAAM,GAAG,GAAG,KAAK,MAAM;GAC5C,UAAU,CAAC;EACb;CACF,CAAC;CAED,MAAM,gBACJ,qBAAqB,IACjB,WAAW,kBAAkB,EAAE,KAC/B,KAAA;CACN,MAAM,cAAc,eAAkC;EACpD,OAAO;EACP,aAAa;EACb,KAAK;EACL,iBAAiB;CACnB,CAAC;CAED,OACE,oBAAC,MAAD;EACE,GAAI;EACJ,WAAW,GAAG,kBAAkB,SAAS;EACzC,2BAAyB,aAAa;EACtC,2BAAyB,aAAa;EACtC,4BAA0B,aAAa;EAEtC,UAAA,MAAM,KAAK,MAAM,UAAU;GAC1B,MAAM,EACJ,IACA,OACA,aACA,MACA,WAAW,eACX,OACA,WAAW,OACX,UACA,WAAW,kBACT,KAAK;GAIT,MAAM,QAAQ,QACV,UAHc,iBAAiB,QAAQ,oBAKrC,cACA,UAAU,oBACR,WACA;GAER,MAAM,aAAa,CAAC,aAAa,CAAC,UAAU,SAAS;GACrD,MAAM,UACJ,OAAO,KAAA,IAAY,SAAS,UAAU,GAAG,OAAO,GAAG,GAAG;GAExD,MAAM,oBAAoB;IACxB,IAAI,CAAC,cAAc,UAAU,mBAC3B;IAGF,IAAI,eACE;SAAA,iBAAiB,KAAA,GACnB,4BAA4B,EAAE;IAAA,OAE3B,IAAI,eAAe,KAAA,GACxB,0BAA0B,KAAK;IAGjC,eAAe,KAAK;IACpB,IAAI,iBAAiB,OAAO,KAAA,GAC1B,iBAAiB,EAAE;GAEvB;GAEA,MAAM,UACJ,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IACE,WAAU;IACV,iBAAe,QAAQ,OAAO,SAAS;IACvC,eAAY;IAEX,UAAA,SACE,UAAU,eAAe,UAAU,UAAU,OAAO,QAAQ;GAC3D,CAAA,GAEN,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA;KACE,oBAAC,QAAD;MAAM,WAAU;MAA8B,UAAA;KAAY,CAAA;KAEzD,eAAe,QACd,oBAAC,QAAD;MAAM,WAAU;MACb,UAAA;KACG,CAAA;KAGP,YAAY,QACX,oBAAC,QAAD;MAAM,WAAU;MAA4B,UAAA;KAAe,CAAA;IAEzD;GACN,CAAA,CAAA,EAAA,CAAA;GAGJ,OACE,oBAAC,MAAD;IAIE,WAAW,GAAG,wBAAwB,aAAa;IACnD,cAAY;IACZ,iBACE,YAAa,aAAa,CAAC,aAAc,SAAS,KAAA;IAEpD,gBAAc,UAAU,oBAAoB,SAAS,KAAA;IAEpD,UAAA,YACC,oBAAC,UAAD;KACE,MAAK;KACL,WAAU;KACV,UAAU,CAAC;KACX,KAAK,YAAY,WAAW,OAAO;KACnC,UAAU,YAAY,gBAAgB,SAAS,CAAC,UAAU;KAC1D,eAAe,YAAY,YAAY,OAAO;KAC9C,YAAY,UACV,YAAY,cAAc,OAAO,OAAO;KAE1C,SAAS;KAER,UAAA;IACK,CAAA,IAER,oBAAC,OAAD;KAAK,WAAU;KAAwB,UAAA;IAAa,CAAA;GAEpD,GA3BA,OAAO,KAAA,IAAa,KAAK,OAAO,QAAS,GAAG,OAAO,GAAG,GAAG,IA2BzD;EAER,CAAC;CACC,CAAA;AAER;AAEA,MAAM,UAAU,OAAO,OAAO,aAAa,EACzC,MAAM,YACR,CAAC"}
@@ -0,0 +1,241 @@
1
+ .puzzle-stepper {
2
+ --puzzle-stepper-indicator-size: 2rem;
3
+ flex-direction: var(--puzzle-stepper-direction, row);
4
+ min-width: 0;
5
+ margin: 0;
6
+ padding: 0;
7
+ list-style: none;
8
+ display: flex;
9
+ }
10
+
11
+ .puzzle-stepper__item {
12
+ flex: var(--puzzle-stepper-item-flex, 1 1 0);
13
+ min-width: 0;
14
+ padding-block-end: var(--puzzle-stepper-item-padding, 0);
15
+ display: flex;
16
+ position: relative;
17
+ }
18
+
19
+ .puzzle-stepper__item:not(:last-child):after {
20
+ z-index: 0;
21
+ content: "";
22
+ background: var(--puzzle-color-border);
23
+ inline-size: var(--puzzle-stepper-connector-inline-size, auto);
24
+ block-size: var(--puzzle-stepper-connector-block-size, 2px);
25
+ position: absolute;
26
+ inset-block-start: var(--puzzle-stepper-connector-block-start, calc(var(--puzzle-stepper-indicator-size) / 2 - 1px));
27
+ inset-block-end: var(--puzzle-stepper-connector-block-end, auto);
28
+ inset-inline-start: var(--puzzle-stepper-connector-inline-start, calc(50% + var(--puzzle-stepper-indicator-size) / 2));
29
+ inset-inline-end: var(--puzzle-stepper-connector-inline-end, calc(-50% + var(--puzzle-stepper-indicator-size) / 2));
30
+ }
31
+
32
+ .puzzle-stepper__item[data-state="completed"]:after {
33
+ background: var(--puzzle-color-success);
34
+ }
35
+
36
+ .puzzle-stepper__step {
37
+ z-index: 1;
38
+ flex-direction: var(--puzzle-stepper-step-direction, column);
39
+ align-items: var(--puzzle-stepper-step-align, center);
40
+ gap: var(--puzzle-space-2, .5rem);
41
+ width: 100%;
42
+ min-width: 0;
43
+ color: inherit;
44
+ font: inherit;
45
+ text-align: var(--puzzle-stepper-step-text-align, center);
46
+ background: none;
47
+ border: 0;
48
+ padding: 0;
49
+ display: flex;
50
+ position: relative;
51
+ }
52
+
53
+ .puzzle-stepper__indicator {
54
+ flex: 0 0 var(--puzzle-stepper-indicator-size);
55
+ width: var(--puzzle-stepper-indicator-size);
56
+ height: var(--puzzle-stepper-indicator-size);
57
+ border: var(--puzzle-border-width, 1px) solid var(--puzzle-color-border-strong, var(--puzzle-color-border));
58
+ border-radius: var(--puzzle-radius-full, 9999px);
59
+ background: var(--puzzle-color-surface);
60
+ color: var(--puzzle-color-text-muted);
61
+ font-size: var(--puzzle-font-size-body2, .875rem);
62
+ font-weight: var(--puzzle-font-weight-medium, 500);
63
+ transition: background-color var(--puzzle-duration-fast, .15s) ease,
64
+ border-color var(--puzzle-duration-fast, .15s) ease,
65
+ color var(--puzzle-duration-fast, .15s) ease;
66
+ place-items: center;
67
+ line-height: 1;
68
+ display: grid;
69
+ }
70
+
71
+ .puzzle-stepper__item[data-state="active"] .puzzle-stepper__indicator {
72
+ border-color: var(--puzzle-color-primary);
73
+ background: var(--puzzle-color-primary);
74
+ color: var(--puzzle-color-primary-foreground);
75
+ }
76
+
77
+ .puzzle-stepper__item[data-state="completed"] .puzzle-stepper__indicator {
78
+ border-color: var(--puzzle-color-success);
79
+ background: var(--puzzle-color-success);
80
+ color: var(--puzzle-color-success-foreground);
81
+ }
82
+
83
+ .puzzle-stepper__item[data-state="error"] .puzzle-stepper__indicator {
84
+ border-color: var(--puzzle-color-danger);
85
+ background: var(--puzzle-color-danger);
86
+ color: var(--puzzle-color-danger-foreground);
87
+ }
88
+
89
+ .puzzle-stepper__item[data-state="completed"] .puzzle-stepper__indicator[data-has-icon="false"]:after {
90
+ content: "";
91
+ border-block-end: 2px solid;
92
+ border-inline-end: 2px solid;
93
+ width: .375rem;
94
+ height: .625rem;
95
+ transform: translateY(-.1rem) rotate(45deg);
96
+ }
97
+
98
+ .puzzle-stepper__item[data-state="error"] .puzzle-stepper__indicator[data-has-icon="false"]:after {
99
+ content: "!";
100
+ font-weight: 700;
101
+ }
102
+
103
+ .puzzle-stepper__label {
104
+ gap: var(--puzzle-space-1, .25rem);
105
+ flex-direction: column;
106
+ min-width: 0;
107
+ display: flex;
108
+ }
109
+
110
+ .puzzle-stepper__label-text {
111
+ color: var(--puzzle-color-text);
112
+ font-size: var(--puzzle-font-size-body2, .875rem);
113
+ font-weight: var(--puzzle-font-weight-medium, 500);
114
+ line-height: var(--puzzle-font-line-height-body2, 1.4);
115
+ }
116
+
117
+ .puzzle-stepper__item[data-state="active"] .puzzle-stepper__label-text {
118
+ font-weight: var(--puzzle-font-weight-semibold, 600);
119
+ }
120
+
121
+ .puzzle-stepper__item[data-state="upcoming"] .puzzle-stepper__label-text {
122
+ color: var(--puzzle-color-text-muted);
123
+ }
124
+
125
+ .puzzle-stepper__item[data-state="error"] .puzzle-stepper__label-text {
126
+ color: var(--puzzle-color-danger);
127
+ }
128
+
129
+ .puzzle-stepper__description, .puzzle-stepper__optional {
130
+ color: var(--puzzle-color-text-subtle);
131
+ font-size: var(--puzzle-font-size-caption, .75rem);
132
+ line-height: var(--puzzle-font-line-height-caption, 1.4);
133
+ }
134
+
135
+ .puzzle-stepper__item[data-disabled="true"] .puzzle-stepper__label {
136
+ opacity: .6;
137
+ }
138
+
139
+ button.puzzle-stepper__step {
140
+ cursor: pointer;
141
+ }
142
+
143
+ button.puzzle-stepper__step:disabled {
144
+ cursor: not-allowed;
145
+ opacity: .6;
146
+ }
147
+
148
+ button.puzzle-stepper__step:not(:disabled):hover .puzzle-stepper__label-text {
149
+ color: var(--puzzle-color-primary);
150
+ }
151
+
152
+ button.puzzle-stepper__step:focus-visible {
153
+ border-radius: var(--puzzle-radius-sm, .25rem);
154
+ outline: 2px solid var(--puzzle-color-ring);
155
+ outline-offset: 4px;
156
+ }
157
+
158
+ .puzzle-stepper[data-orientation-mobile="vertical"] {
159
+ --puzzle-stepper-direction: column;
160
+ --puzzle-stepper-item-flex: 0 0 auto;
161
+ --puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
162
+ --puzzle-stepper-step-direction: row;
163
+ --puzzle-stepper-step-align: flex-start;
164
+ --puzzle-stepper-step-text-align: start;
165
+ --puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
166
+ --puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
167
+ --puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
168
+ --puzzle-stepper-connector-inline-end: auto;
169
+ --puzzle-stepper-connector-inline-size: 2px;
170
+ --puzzle-stepper-connector-block-size: auto;
171
+ }
172
+
173
+ @media (width >= 768px) {
174
+ .puzzle-stepper:not([data-orientation-tablet="vertical"]) {
175
+ --puzzle-stepper-direction: initial;
176
+ --puzzle-stepper-item-flex: initial;
177
+ --puzzle-stepper-item-padding: initial;
178
+ --puzzle-stepper-step-direction: initial;
179
+ --puzzle-stepper-step-align: initial;
180
+ --puzzle-stepper-step-text-align: initial;
181
+ --puzzle-stepper-connector-block-start: initial;
182
+ --puzzle-stepper-connector-block-end: initial;
183
+ --puzzle-stepper-connector-inline-start: initial;
184
+ --puzzle-stepper-connector-inline-end: initial;
185
+ --puzzle-stepper-connector-inline-size: initial;
186
+ --puzzle-stepper-connector-block-size: initial;
187
+ }
188
+
189
+ .puzzle-stepper[data-orientation-tablet="vertical"] {
190
+ --puzzle-stepper-direction: column;
191
+ --puzzle-stepper-item-flex: 0 0 auto;
192
+ --puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
193
+ --puzzle-stepper-step-direction: row;
194
+ --puzzle-stepper-step-align: flex-start;
195
+ --puzzle-stepper-step-text-align: start;
196
+ --puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
197
+ --puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
198
+ --puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
199
+ --puzzle-stepper-connector-inline-end: auto;
200
+ --puzzle-stepper-connector-inline-size: 2px;
201
+ --puzzle-stepper-connector-block-size: auto;
202
+ }
203
+ }
204
+
205
+ @media (width >= 1024px) {
206
+ .puzzle-stepper:not([data-orientation-desktop="vertical"]) {
207
+ --puzzle-stepper-direction: initial;
208
+ --puzzle-stepper-item-flex: initial;
209
+ --puzzle-stepper-item-padding: initial;
210
+ --puzzle-stepper-step-direction: initial;
211
+ --puzzle-stepper-step-align: initial;
212
+ --puzzle-stepper-step-text-align: initial;
213
+ --puzzle-stepper-connector-block-start: initial;
214
+ --puzzle-stepper-connector-block-end: initial;
215
+ --puzzle-stepper-connector-inline-start: initial;
216
+ --puzzle-stepper-connector-inline-end: initial;
217
+ --puzzle-stepper-connector-inline-size: initial;
218
+ --puzzle-stepper-connector-block-size: initial;
219
+ }
220
+
221
+ .puzzle-stepper[data-orientation-desktop="vertical"] {
222
+ --puzzle-stepper-direction: column;
223
+ --puzzle-stepper-item-flex: 0 0 auto;
224
+ --puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
225
+ --puzzle-stepper-step-direction: row;
226
+ --puzzle-stepper-step-align: flex-start;
227
+ --puzzle-stepper-step-text-align: start;
228
+ --puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
229
+ --puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
230
+ --puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
231
+ --puzzle-stepper-connector-inline-end: auto;
232
+ --puzzle-stepper-connector-inline-size: 2px;
233
+ --puzzle-stepper-connector-block-size: auto;
234
+ }
235
+ }
236
+
237
+ @media (prefers-reduced-motion: reduce) {
238
+ .puzzle-stepper__indicator {
239
+ transition: none;
240
+ }
241
+ }
@@ -0,0 +1,45 @@
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
+ // src/components/forms/switch/index.tsx
7
+ const Switch = ({ size = "md", label, description, checked, defaultChecked, disabled = false, required = false, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }) => {
8
+ const generatedId = (0, react.useId)();
9
+ const inputId = id ?? (description != null ? generatedId : void 0);
10
+ const descriptionId = description != null ? `${inputId ?? generatedId}-description` : void 0;
11
+ const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
12
+ const classes = (0, _puzzle_ui_core.cn)("puzzle-switch", `puzzle-switch--${size}`, disabled && "puzzle-switch--disabled", className);
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
14
+ className: classes,
15
+ children: [
16
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
17
+ ...rest,
18
+ id: inputId,
19
+ className: "puzzle-switch__input",
20
+ type: "checkbox",
21
+ role: "switch",
22
+ ...checked !== void 0 ? { checked } : defaultChecked !== void 0 ? { defaultChecked } : {},
23
+ disabled,
24
+ required,
25
+ "aria-describedby": describedBy,
26
+ onChange
27
+ }),
28
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
29
+ className: "puzzle-switch__control",
30
+ "aria-hidden": "true"
31
+ }),
32
+ (label != null || description != null) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
33
+ className: (0, _puzzle_ui_core.cn)("puzzle-switch__content", label == null && "puzzle-switch__content--description-only"),
34
+ children: [label, description != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
35
+ id: descriptionId,
36
+ className: "puzzle-switch__description",
37
+ children: description
38
+ })]
39
+ })
40
+ ]
41
+ });
42
+ };
43
+ exports.Switch = Switch;
44
+
45
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["useId","cn"],"sources":["../../../../src/components/forms/switch/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport \"./switch.css\";\n\ntype SwitchSize = \"sm\" | \"md\";\n\ntype SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"children\" | \"onChange\"\n> & {\n size?: SwitchSize;\n label?: ReactNode;\n description?: ReactNode;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n className?: string;\n};\n\nconst Switch = ({\n size = \"md\",\n label,\n description,\n checked,\n defaultChecked,\n disabled = false,\n required = false,\n className,\n id,\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: SwitchProps) => {\n const generatedId = useId();\n\n const inputId = id ?? (description != null ? generatedId : undefined);\n const descriptionId =\n description != null ? `${inputId ?? generatedId}-description` : undefined;\n\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined;\n\n const classes = cn(\n \"puzzle-switch\",\n `puzzle-switch--${size}`,\n disabled && \"puzzle-switch--disabled\",\n className,\n );\n\n return (\n <label className={classes}>\n <input\n {...rest}\n id={inputId}\n className=\"puzzle-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n {...(checked !== undefined\n ? { checked }\n : defaultChecked !== undefined\n ? { defaultChecked }\n : {})}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n onChange={onChange}\n />\n\n <span className=\"puzzle-switch__control\" aria-hidden=\"true\" />\n\n {(label != null || description != null) && (\n <span\n className={cn(\n \"puzzle-switch__content\",\n label == null && \"puzzle-switch__content--description-only\",\n )}\n >\n {label}\n\n {description != null && (\n <span id={descriptionId} className=\"puzzle-switch__description\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n};\n\nexport { Switch, type SwitchProps, type SwitchSize };\n"],"mappings":";;;;;;AAsBA,MAAM,UAAU,EACd,OAAO,MACP,OACA,aACA,SACA,gBACA,WAAW,OACX,WAAW,OACX,WACA,IACA,UACA,oBAAoB,iBACpB,GAAG,WACc;CACjB,MAAM,eAAA,GAAcA,MAAAA,MAAAA,CAAM;CAE1B,MAAM,UAAU,OAAO,eAAe,OAAO,cAAc,KAAA;CAC3D,MAAM,gBACJ,eAAe,OAAO,GAAG,WAAW,YAAY,gBAAgB,KAAA;CAElE,MAAM,cACJ,CAAC,iBAAiB,aAAa,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAEhE,MAAM,WAAA,GAAUC,gBAAAA,GAAAA,CACd,iBACA,kBAAkB,QAClB,YAAY,2BACZ,SACF;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;EAAO,WAAW;EAAlB,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACJ,WAAU;IACV,MAAK;IACL,MAAK;IACL,GAAK,YAAY,KAAA,IACb,EAAE,QAAQ,IACV,mBAAmB,KAAA,IACjB,EAAE,eAAe,IACjB,CAAC;IACG;IACA;IACV,oBAAkB;IACR;GACX,CAAA;GAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAyB,eAAY;GAAQ,CAAA;IAE3D,SAAS,QAAQ,eAAe,SAChC,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;IACE,YAAA,GAAWA,gBAAAA,GAAAA,CACT,0BACA,SAAS,QAAQ,0CACnB;IAJF,UAAA,CAMG,OAEA,eAAe,QACd,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,IAAI;KAAe,WAAU;KAChC,UAAA;IACG,CAAA,CAEJ;;EAEH;;AAEX"}
@@ -0,0 +1,11 @@
1
+ import { ChangeEventHandler, InputHTMLAttributes, ReactNode } from "react";
2
+ type SwitchSize = "sm" | "md";
3
+ type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "size" | "children" | "onChange"> & {
4
+ size?: SwitchSize;
5
+ label?: ReactNode;
6
+ description?: ReactNode;
7
+ onChange?: ChangeEventHandler<HTMLInputElement>;
8
+ className?: string;
9
+ };
10
+ declare const Switch: ({ size, label, description, checked, defaultChecked, disabled, required, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }: SwitchProps) => import("react").JSX.Element;
11
+ export { Switch, type SwitchProps, type SwitchSize };
@@ -0,0 +1,11 @@
1
+ import { ChangeEventHandler, InputHTMLAttributes, ReactNode } from "react";
2
+ type SwitchSize = "sm" | "md";
3
+ type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "size" | "children" | "onChange"> & {
4
+ size?: SwitchSize;
5
+ label?: ReactNode;
6
+ description?: ReactNode;
7
+ onChange?: ChangeEventHandler<HTMLInputElement>;
8
+ className?: string;
9
+ };
10
+ declare const Switch: ({ size, label, description, checked, defaultChecked, disabled, required, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }: SwitchProps) => import("react").JSX.Element;
11
+ export { Switch, type SwitchProps, type SwitchSize };
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import "./switch.css";
3
+ import { cn } from "@puzzle-ui/core";
4
+ import { useId } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/components/forms/switch/index.tsx
7
+ const Switch = ({ size = "md", label, description, checked, defaultChecked, disabled = false, required = false, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }) => {
8
+ const generatedId = useId();
9
+ const inputId = id ?? (description != null ? generatedId : void 0);
10
+ const descriptionId = description != null ? `${inputId ?? generatedId}-description` : void 0;
11
+ const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
12
+ const classes = cn("puzzle-switch", `puzzle-switch--${size}`, disabled && "puzzle-switch--disabled", className);
13
+ return /* @__PURE__ */ jsxs("label", {
14
+ className: classes,
15
+ children: [
16
+ /* @__PURE__ */ jsx("input", {
17
+ ...rest,
18
+ id: inputId,
19
+ className: "puzzle-switch__input",
20
+ type: "checkbox",
21
+ role: "switch",
22
+ ...checked !== void 0 ? { checked } : defaultChecked !== void 0 ? { defaultChecked } : {},
23
+ disabled,
24
+ required,
25
+ "aria-describedby": describedBy,
26
+ onChange
27
+ }),
28
+ /* @__PURE__ */ jsx("span", {
29
+ className: "puzzle-switch__control",
30
+ "aria-hidden": "true"
31
+ }),
32
+ (label != null || description != null) && /* @__PURE__ */ jsxs("span", {
33
+ className: cn("puzzle-switch__content", label == null && "puzzle-switch__content--description-only"),
34
+ children: [label, description != null && /* @__PURE__ */ jsx("span", {
35
+ id: descriptionId,
36
+ className: "puzzle-switch__description",
37
+ children: description
38
+ })]
39
+ })
40
+ ]
41
+ });
42
+ };
43
+ export { Switch };
44
+
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/forms/switch/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport \"./switch.css\";\n\ntype SwitchSize = \"sm\" | \"md\";\n\ntype SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"children\" | \"onChange\"\n> & {\n size?: SwitchSize;\n label?: ReactNode;\n description?: ReactNode;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n className?: string;\n};\n\nconst Switch = ({\n size = \"md\",\n label,\n description,\n checked,\n defaultChecked,\n disabled = false,\n required = false,\n className,\n id,\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: SwitchProps) => {\n const generatedId = useId();\n\n const inputId = id ?? (description != null ? generatedId : undefined);\n const descriptionId =\n description != null ? `${inputId ?? generatedId}-description` : undefined;\n\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined;\n\n const classes = cn(\n \"puzzle-switch\",\n `puzzle-switch--${size}`,\n disabled && \"puzzle-switch--disabled\",\n className,\n );\n\n return (\n <label className={classes}>\n <input\n {...rest}\n id={inputId}\n className=\"puzzle-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n {...(checked !== undefined\n ? { checked }\n : defaultChecked !== undefined\n ? { defaultChecked }\n : {})}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n onChange={onChange}\n />\n\n <span className=\"puzzle-switch__control\" aria-hidden=\"true\" />\n\n {(label != null || description != null) && (\n <span\n className={cn(\n \"puzzle-switch__content\",\n label == null && \"puzzle-switch__content--description-only\",\n )}\n >\n {label}\n\n {description != null && (\n <span id={descriptionId} className=\"puzzle-switch__description\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n};\n\nexport { Switch, type SwitchProps, type SwitchSize };\n"],"mappings":";;;;;;AAsBA,MAAM,UAAU,EACd,OAAO,MACP,OACA,aACA,SACA,gBACA,WAAW,OACX,WAAW,OACX,WACA,IACA,UACA,oBAAoB,iBACpB,GAAG,WACc;CACjB,MAAM,cAAc,MAAM;CAE1B,MAAM,UAAU,OAAO,eAAe,OAAO,cAAc,KAAA;CAC3D,MAAM,gBACJ,eAAe,OAAO,GAAG,WAAW,YAAY,gBAAgB,KAAA;CAElE,MAAM,cACJ,CAAC,iBAAiB,aAAa,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAEhE,MAAM,UAAU,GACd,iBACA,kBAAkB,QAClB,YAAY,2BACZ,SACF;CAEA,OACE,qBAAC,SAAD;EAAO,WAAW;EAAlB,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACJ,WAAU;IACV,MAAK;IACL,MAAK;IACL,GAAK,YAAY,KAAA,IACb,EAAE,QAAQ,IACV,mBAAmB,KAAA,IACjB,EAAE,eAAe,IACjB,CAAC;IACG;IACA;IACV,oBAAkB;IACR;GACX,CAAA;GAED,oBAAC,QAAD;IAAM,WAAU;IAAyB,eAAY;GAAQ,CAAA;IAE3D,SAAS,QAAQ,eAAe,SAChC,qBAAC,QAAD;IACE,WAAW,GACT,0BACA,SAAS,QAAQ,0CACnB;IAJF,UAAA,CAMG,OAEA,eAAe,QACd,oBAAC,QAAD;KAAM,IAAI;KAAe,WAAU;KAChC,UAAA;IACG,CAAA,CAEJ;;EAEH;;AAEX"}
@@ -0,0 +1,142 @@
1
+ .puzzle-switch {
2
+ --puzzle-switch-width: 2.5rem;
3
+ --puzzle-switch-height: 1.375rem;
4
+ --puzzle-switch-thumb-size: 1rem;
5
+ align-items: center;
6
+ gap: var(--puzzle-space-3, .75rem);
7
+ width: fit-content;
8
+ color: var(--puzzle-color-text);
9
+ cursor: pointer;
10
+ user-select: none;
11
+ -webkit-tap-highlight-color: transparent;
12
+ display: inline-flex;
13
+ position: relative;
14
+ }
15
+
16
+ .puzzle-switch--sm {
17
+ --puzzle-switch-width: 2rem;
18
+ --puzzle-switch-height: 1.125rem;
19
+ --puzzle-switch-thumb-size: .75rem;
20
+ }
21
+
22
+ .puzzle-switch--disabled {
23
+ cursor: not-allowed;
24
+ opacity: .6;
25
+ }
26
+
27
+ .puzzle-switch__input {
28
+ clip: rect(0, 0, 0, 0);
29
+ clip-path: inset(50%);
30
+ white-space: nowrap;
31
+ border: 0;
32
+ width: 1px;
33
+ height: 1px;
34
+ margin: -1px;
35
+ padding: 0;
36
+ position: absolute;
37
+ overflow: hidden;
38
+ }
39
+
40
+ .puzzle-switch__control {
41
+ box-sizing: border-box;
42
+ width: var(--puzzle-switch-width);
43
+ height: var(--puzzle-switch-height);
44
+ border: 1px solid var(--puzzle-color-border-strong);
45
+ border-radius: var(--puzzle-radius-full, 9999px);
46
+ background-color: var(--puzzle-color-surface-sunken);
47
+ transition: background-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease),
48
+ border-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease);
49
+ flex: none;
50
+ align-items: center;
51
+ padding: 2px;
52
+ display: inline-flex;
53
+ position: relative;
54
+ }
55
+
56
+ .puzzle-switch__control:after {
57
+ width: var(--puzzle-switch-thumb-size);
58
+ height: var(--puzzle-switch-thumb-size);
59
+ background-color: var(--puzzle-color-surface);
60
+ content: "";
61
+ transition: transform var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease),
62
+ background-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease);
63
+ border-radius: 50%;
64
+ display: block;
65
+ box-shadow: 0 1px 2px #0000002e;
66
+ }
67
+
68
+ .puzzle-switch__input:checked + .puzzle-switch__control {
69
+ border-color: var(--puzzle-color-primary);
70
+ background-color: var(--puzzle-color-primary);
71
+ }
72
+
73
+ .puzzle-switch__input:checked + .puzzle-switch__control:after {
74
+ background-color: var(--puzzle-color-primary-foreground);
75
+ transform: translateX(calc(var(--puzzle-switch-width) - var(--puzzle-switch-thumb-size) - 6px));
76
+ }
77
+
78
+ .puzzle-switch__input:focus-visible + .puzzle-switch__control {
79
+ outline: 2px solid var(--puzzle-color-ring);
80
+ outline-offset: 2px;
81
+ }
82
+
83
+ .puzzle-switch__content {
84
+ min-width: 0;
85
+ color: var(--puzzle-color-text);
86
+ font-size: var(--puzzle-font-size-sm, .875rem);
87
+ font-weight: var(--puzzle-font-weight-medium, 500);
88
+ line-height: var(--puzzle-font-line-height-body2, 1.5);
89
+ flex-direction: column;
90
+ gap: .125rem;
91
+ display: flex;
92
+ }
93
+
94
+ .puzzle-switch__description, .puzzle-switch__content--description-only {
95
+ color: var(--puzzle-color-text-muted);
96
+ font-size: var(--puzzle-font-size-xs, .75rem);
97
+ font-weight: var(--puzzle-font-weight-normal, 400);
98
+ line-height: var(--puzzle-font-line-height-body2, 1.5);
99
+ }
100
+
101
+ @media (forced-colors: active) {
102
+ .puzzle-switch--disabled {
103
+ opacity: 1;
104
+ color: graytext;
105
+ }
106
+
107
+ .puzzle-switch--disabled .puzzle-switch__content, .puzzle-switch--disabled .puzzle-switch__description {
108
+ color: graytext;
109
+ }
110
+
111
+ .puzzle-switch__control {
112
+ background-color: canvas;
113
+ border-color: canvastext;
114
+ }
115
+
116
+ .puzzle-switch__control:after {
117
+ box-shadow: none;
118
+ background-color: canvastext;
119
+ }
120
+
121
+ .puzzle-switch__input:checked + .puzzle-switch__control {
122
+ background-color: highlight;
123
+ border-color: highlight;
124
+ }
125
+
126
+ .puzzle-switch__input:checked + .puzzle-switch__control:after {
127
+ background-color: highlighttext;
128
+ }
129
+
130
+ .puzzle-switch__input:disabled + .puzzle-switch__control, .puzzle-switch__input:disabled:checked + .puzzle-switch__control {
131
+ background-color: canvas;
132
+ border-color: graytext;
133
+ }
134
+
135
+ .puzzle-switch__input:disabled + .puzzle-switch__control:after {
136
+ background-color: graytext;
137
+ }
138
+
139
+ .puzzle-switch__input:focus-visible + .puzzle-switch__control {
140
+ outline-color: highlight;
141
+ }
142
+ }