@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,176 @@
1
+ "use client";
2
+ import { getImageBlurDataURL, getImageDimensions, getImageSourceUrl, hasImageSource, resolveImageRadius } from "./image.utils.js";
3
+ import { useImageState } from "./use-image-state.js";
4
+ import "./image.css";
5
+ import { cn } from "@puzzle-ui/core";
6
+ import { createElement, useCallback, useEffect, useRef } from "react";
7
+ import { useThemeComponents } from "@puzzle-ui/theme/components-context";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { preload } from "react-dom";
10
+ // src/components/data-display/image/index.tsx
11
+ const Image = ({ src, alt, width, height, fit = "cover", position = "center", aspectRatio, fill = false, radius, fallbackSrc, fallback, loadingPlaceholder, placeholder = "empty", blurDataURL, sources, component, componentProps, quality, preload: preload$1 = false, unoptimized, className, style, containerClassName, containerStyle, loading, fetchPriority, decoding, srcSet, sizes, crossOrigin, referrerPolicy, ref, onLoad, onError, ...rest }) => {
12
+ const configuredImage = useThemeComponents()?.image;
13
+ const Component = component ?? configuredImage ?? "img";
14
+ const isNativeImage = Component === "img";
15
+ const { activeSource, usingFallback, status, markLoaded, markError } = useImageState(src, fallbackSrc);
16
+ const hasActiveSource = hasImageSource(activeSource);
17
+ const sourceUrl = getImageSourceUrl(activeSource);
18
+ const sourceDimensions = getImageDimensions(activeSource);
19
+ const resolvedWidth = width ?? sourceDimensions?.width;
20
+ const resolvedHeight = height ?? sourceDimensions?.height;
21
+ const resolvedBlurDataURL = blurDataURL ?? getImageBlurDataURL(activeSource);
22
+ const imageRef = useRef(null);
23
+ /**
24
+ * Assigns the image element to both the internal and external refs.
25
+ */
26
+ const setImageRef = useCallback((node) => {
27
+ imageRef.current = node;
28
+ if (typeof ref === "function") ref(node);
29
+ else if (ref) ref.current = node;
30
+ }, [ref]);
31
+ /**
32
+ * Handles successful image loading.
33
+ */
34
+ const handleLoad = useCallback((event) => {
35
+ markLoaded();
36
+ onLoad?.(event);
37
+ }, [markLoaded, onLoad]);
38
+ /**
39
+ * Handles image loading failures.
40
+ */
41
+ const handleError = useCallback((event) => {
42
+ markError();
43
+ onError?.(event);
44
+ }, [markError, onError]);
45
+ /**
46
+ * Handles images that were loaded before React attached its listeners.
47
+ *
48
+ * This is particularly useful for cached images during hydration.
49
+ */
50
+ useEffect(() => {
51
+ const image = imageRef.current;
52
+ if (!image || !image.complete) return;
53
+ if (image.naturalWidth > 0) markLoaded();
54
+ }, [activeSource, markLoaded]);
55
+ /**
56
+ * Preloads native images using React DOM.
57
+ *
58
+ * Framework image components handle their own preload behavior.
59
+ */
60
+ if (preload$1 && isNativeImage && sourceUrl) preload(sourceUrl, {
61
+ as: "image",
62
+ crossOrigin,
63
+ fetchPriority: fetchPriority ?? "high",
64
+ imageSrcSet: srcSet,
65
+ imageSizes: sizes,
66
+ referrerPolicy
67
+ });
68
+ const mediaStyle = {
69
+ ...fill || aspectRatio ? {
70
+ width: "100%",
71
+ height: "100%"
72
+ } : {},
73
+ ...fill ? {
74
+ position: "absolute",
75
+ inset: 0
76
+ } : {},
77
+ objectFit: fit,
78
+ objectPosition: position,
79
+ ...style
80
+ };
81
+ const wrapperStyle = {
82
+ ...aspectRatio ? {
83
+ aspectRatio,
84
+ width: "100%"
85
+ } : {},
86
+ ...fill ? {
87
+ position: "relative",
88
+ display: "block",
89
+ width: "100%",
90
+ ...aspectRatio ? {} : { height: "100%" }
91
+ } : {},
92
+ ...radius ? { borderRadius: resolveImageRadius(radius) } : {},
93
+ ...containerStyle
94
+ };
95
+ const isLoading = hasActiveSource && status === "loading";
96
+ const shouldShowFallback = fallback !== void 0 && (!hasActiveSource || status === "error");
97
+ if (!hasActiveSource && !shouldShowFallback) return null;
98
+ const renderedSource = isNativeImage ? sourceUrl : activeSource;
99
+ /**
100
+ * Framework-specific props are only forwarded to custom components.
101
+ * This prevents invalid attributes from leaking onto native img tags.
102
+ */
103
+ const imageElement = createElement(Component, {
104
+ ...!isNativeImage ? componentProps : {},
105
+ ...rest,
106
+ key: usingFallback ? "fallback" : "source",
107
+ ref: setImageRef,
108
+ src: renderedSource,
109
+ alt,
110
+ width: resolvedWidth,
111
+ height: resolvedHeight,
112
+ loading,
113
+ fetchPriority,
114
+ decoding,
115
+ crossOrigin,
116
+ referrerPolicy,
117
+ srcSet,
118
+ sizes,
119
+ className: cn("puzzle-image__media", className),
120
+ style: mediaStyle,
121
+ onLoad: handleLoad,
122
+ onError: handleError,
123
+ ...fill && !isNativeImage ? { fill: true } : {},
124
+ ...preload$1 && !isNativeImage ? { preload: true } : {},
125
+ ...quality !== void 0 && !isNativeImage ? { quality } : {},
126
+ ...unoptimized !== void 0 && !isNativeImage ? { unoptimized } : {},
127
+ ...!isNativeImage && placeholder === "blur" && resolvedBlurDataURL ? {
128
+ placeholder: "blur",
129
+ blurDataURL: resolvedBlurDataURL
130
+ } : {}
131
+ });
132
+ /**
133
+ * Picture sources allow art direction and responsive source selection.
134
+ */
135
+ const media = sources?.length ? /* @__PURE__ */ jsxs("picture", {
136
+ className: "puzzle-image__picture",
137
+ children: [sources.map((source, index) => /* @__PURE__ */ jsx("source", {
138
+ srcSet: source.srcSet,
139
+ media: source.media,
140
+ type: source.type,
141
+ sizes: source.sizes
142
+ }, `${source.srcSet}-${index}`)), imageElement]
143
+ }) : imageElement;
144
+ const showLoadingPlaceholder = isLoading && loadingPlaceholder !== void 0;
145
+ const showBlurPlaceholder = isLoading && !loadingPlaceholder && isNativeImage && placeholder === "blur" && Boolean(resolvedBlurDataURL);
146
+ return /* @__PURE__ */ jsxs("div", {
147
+ className: cn("puzzle-image", containerClassName),
148
+ style: wrapperStyle,
149
+ "data-status": hasActiveSource ? status : "empty",
150
+ "data-image-fill": fill ? "true" : void 0,
151
+ "data-image-ratio": aspectRatio ? "true" : void 0,
152
+ children: [
153
+ showBlurPlaceholder ? /* @__PURE__ */ jsx("img", {
154
+ className: "puzzle-image__blur",
155
+ src: resolvedBlurDataURL,
156
+ alt: "",
157
+ "aria-hidden": "true"
158
+ }) : null,
159
+ showLoadingPlaceholder ? /* @__PURE__ */ jsx("div", {
160
+ className: "puzzle-image__placeholder",
161
+ "aria-hidden": "true",
162
+ children: loadingPlaceholder
163
+ }) : null,
164
+ shouldShowFallback ? /* @__PURE__ */ jsx("div", {
165
+ className: "puzzle-image__fallback",
166
+ role: alt ? "img" : void 0,
167
+ "aria-label": alt || void 0,
168
+ "aria-hidden": alt ? void 0 : true,
169
+ children: fallback
170
+ }) : media
171
+ ]
172
+ });
173
+ };
174
+ export { Image };
175
+
176
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["preload"],"sources":["../../../../src/components/data-display/image/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createElement,\n useCallback,\n useEffect,\n useRef,\n type CSSProperties,\n type ElementType,\n type RefCallback,\n} from \"react\";\n\nimport { preload as preloadImage } from \"react-dom\";\n\nimport { cn } from \"@puzzle-ui/core\";\nimport { useThemeComponents } from \"@puzzle-ui/theme/components-context\";\n\nimport type { ImageProps } from \"./image.types\";\n\nimport {\n getImageBlurDataURL,\n getImageDimensions,\n getImageSourceUrl,\n hasImageSource,\n resolveImageRadius,\n} from \"./image.utils\";\n\nimport { useImageState } from \"./use-image-state\";\n\nimport \"./image.css\";\n\nconst Image = ({\n src,\n alt,\n width,\n height,\n fit = \"cover\",\n position = \"center\",\n aspectRatio,\n fill = false,\n radius,\n fallbackSrc,\n fallback,\n loadingPlaceholder,\n placeholder = \"empty\",\n blurDataURL,\n sources,\n component,\n componentProps,\n quality,\n preload = false,\n unoptimized,\n className,\n style,\n containerClassName,\n containerStyle,\n loading,\n fetchPriority,\n decoding,\n srcSet,\n sizes,\n crossOrigin,\n referrerPolicy,\n ref,\n onLoad,\n onError,\n ...rest\n}: ImageProps) => {\n const configuredImage = useThemeComponents()?.image;\n\n const Component: ElementType = component ?? configuredImage ?? \"img\";\n\n const isNativeImage = Component === \"img\";\n\n const { activeSource, usingFallback, status, markLoaded, markError } =\n useImageState(src, fallbackSrc);\n\n const hasActiveSource = hasImageSource(activeSource);\n\n const sourceUrl = getImageSourceUrl(activeSource);\n\n const sourceDimensions = getImageDimensions(activeSource);\n\n const resolvedWidth = width ?? sourceDimensions?.width;\n const resolvedHeight = height ?? sourceDimensions?.height;\n\n const resolvedBlurDataURL = blurDataURL ?? getImageBlurDataURL(activeSource);\n\n const imageRef = useRef<HTMLImageElement | null>(null);\n\n /**\n * Assigns the image element to both the internal and external refs.\n */\n const setImageRef = useCallback<RefCallback<HTMLImageElement>>(\n (node) => {\n imageRef.current = node;\n\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n /**\n * Handles successful image loading.\n */\n const handleLoad: NonNullable<ImageProps[\"onLoad\"]> = useCallback(\n (event) => {\n markLoaded();\n onLoad?.(event);\n },\n [markLoaded, onLoad],\n );\n\n /**\n * Handles image loading failures.\n */\n const handleError: NonNullable<ImageProps[\"onError\"]> = useCallback(\n (event) => {\n markError();\n onError?.(event);\n },\n [markError, onError],\n );\n\n /**\n * Handles images that were loaded before React attached its listeners.\n *\n * This is particularly useful for cached images during hydration.\n */\n useEffect(() => {\n const image = imageRef.current;\n\n if (!image || !image.complete) {\n return;\n }\n\n if (image.naturalWidth > 0) {\n markLoaded();\n }\n }, [activeSource, markLoaded]);\n\n /**\n * Preloads native images using React DOM.\n *\n * Framework image components handle their own preload behavior.\n */\n if (preload && isNativeImage && sourceUrl) {\n preloadImage(sourceUrl, {\n as: \"image\",\n crossOrigin,\n fetchPriority: fetchPriority ?? \"high\",\n imageSrcSet: srcSet,\n imageSizes: sizes,\n referrerPolicy,\n });\n }\n\n const mediaStyle: CSSProperties = {\n ...(fill || aspectRatio\n ? {\n width: \"100%\",\n height: \"100%\",\n }\n : {}),\n ...(fill\n ? {\n position: \"absolute\",\n inset: 0,\n }\n : {}),\n objectFit: fit,\n objectPosition: position,\n ...style,\n };\n\n const wrapperStyle: CSSProperties = {\n ...(aspectRatio\n ? {\n aspectRatio,\n width: \"100%\",\n }\n : {}),\n ...(fill\n ? {\n position: \"relative\",\n display: \"block\",\n width: \"100%\",\n ...(aspectRatio ? {} : { height: \"100%\" }),\n }\n : {}),\n ...(radius\n ? {\n borderRadius: resolveImageRadius(radius),\n }\n : {}),\n ...containerStyle,\n };\n\n const isLoading = hasActiveSource && status === \"loading\";\n\n const shouldShowFallback =\n fallback !== undefined && (!hasActiveSource || status === \"error\");\n\n if (!hasActiveSource && !shouldShowFallback) {\n return null;\n }\n\n const renderedSource = isNativeImage ? sourceUrl : activeSource;\n\n /**\n * Framework-specific props are only forwarded to custom components.\n * This prevents invalid attributes from leaking onto native img tags.\n */\n const imageElement = createElement(Component, {\n ...(!isNativeImage ? componentProps : {}),\n ...rest,\n key: usingFallback ? \"fallback\" : \"source\",\n ref: setImageRef,\n src: renderedSource,\n alt,\n width: resolvedWidth,\n height: resolvedHeight,\n loading,\n fetchPriority,\n decoding,\n crossOrigin,\n referrerPolicy,\n srcSet,\n sizes,\n className: cn(\"puzzle-image__media\", className),\n style: mediaStyle,\n onLoad: handleLoad,\n onError: handleError,\n ...(fill && !isNativeImage ? { fill: true } : {}),\n ...(preload && !isNativeImage ? { preload: true } : {}),\n ...(quality !== undefined && !isNativeImage ? { quality } : {}),\n ...(unoptimized !== undefined && !isNativeImage ? { unoptimized } : {}),\n ...(!isNativeImage && placeholder === \"blur\" && resolvedBlurDataURL\n ? {\n placeholder: \"blur\",\n blurDataURL: resolvedBlurDataURL,\n }\n : {}),\n } as never);\n\n /**\n * Picture sources allow art direction and responsive source selection.\n */\n const media = sources?.length ? (\n <picture className=\"puzzle-image__picture\">\n {sources.map((source, index) => (\n <source\n key={`${source.srcSet}-${index}`}\n srcSet={source.srcSet}\n media={source.media}\n type={source.type}\n sizes={source.sizes}\n />\n ))}\n {imageElement}\n </picture>\n ) : (\n imageElement\n );\n\n const showLoadingPlaceholder = isLoading && loadingPlaceholder !== undefined;\n\n const showBlurPlaceholder =\n isLoading &&\n !loadingPlaceholder &&\n isNativeImage &&\n placeholder === \"blur\" &&\n Boolean(resolvedBlurDataURL);\n\n return (\n <div\n className={cn(\"puzzle-image\", containerClassName)}\n style={wrapperStyle}\n data-status={hasActiveSource ? status : \"empty\"}\n data-image-fill={fill ? \"true\" : undefined}\n data-image-ratio={aspectRatio ? \"true\" : undefined}\n >\n {showBlurPlaceholder ? (\n <img\n className=\"puzzle-image__blur\"\n src={resolvedBlurDataURL}\n alt=\"\"\n aria-hidden=\"true\"\n />\n ) : null}\n\n {showLoadingPlaceholder ? (\n <div className=\"puzzle-image__placeholder\" aria-hidden=\"true\">\n {loadingPlaceholder}\n </div>\n ) : null}\n\n {shouldShowFallback ? (\n <div\n className=\"puzzle-image__fallback\"\n role={alt ? \"img\" : undefined}\n aria-label={alt || undefined}\n aria-hidden={alt ? undefined : true}\n >\n {fallback}\n </div>\n ) : (\n media\n )}\n </div>\n );\n};\n\nexport { Image, type ImageProps };\n\nexport type {\n ImageSource,\n ImageSourceData,\n ImageSourceSet,\n ImageFit,\n ImageRadius,\n ImagePlaceholder,\n} from \"./image.types\";\n"],"mappings":";;;;;;;;;;AA+BA,MAAM,SAAS,EACb,KACA,KACA,OACA,QACA,MAAM,SACN,WAAW,UACX,aACA,OAAO,OACP,QACA,aACA,UACA,oBACA,cAAc,SACd,aACA,SACA,WACA,gBACA,SACA,SAAA,YAAU,OACV,aACA,WACA,OACA,oBACA,gBACA,SACA,eACA,UACA,QACA,OACA,aACA,gBACA,KACA,QACA,SACA,GAAG,WACa;CAChB,MAAM,kBAAkB,mBAAmB,CAAC,EAAE;CAE9C,MAAM,YAAyB,aAAa,mBAAmB;CAE/D,MAAM,gBAAgB,cAAc;CAEpC,MAAM,EAAE,cAAc,eAAe,QAAQ,YAAY,cACvD,cAAc,KAAK,WAAW;CAEhC,MAAM,kBAAkB,eAAe,YAAY;CAEnD,MAAM,YAAY,kBAAkB,YAAY;CAEhD,MAAM,mBAAmB,mBAAmB,YAAY;CAExD,MAAM,gBAAgB,SAAS,kBAAkB;CACjD,MAAM,iBAAiB,UAAU,kBAAkB;CAEnD,MAAM,sBAAsB,eAAe,oBAAoB,YAAY;CAE3E,MAAM,WAAW,OAAgC,IAAI;;;;CAKrD,MAAM,cAAc,aACjB,SAAS;EACR,SAAS,UAAU;EAEnB,IAAI,OAAO,QAAQ,YACjB,IAAI,IAAI;OACH,IAAI,KACT,IAAI,UAAU;CAElB,GACA,CAAC,GAAG,CACN;;;;CAKA,MAAM,aAAgD,aACnD,UAAU;EACT,WAAW;EACX,SAAS,KAAK;CAChB,GACA,CAAC,YAAY,MAAM,CACrB;;;;CAKA,MAAM,cAAkD,aACrD,UAAU;EACT,UAAU;EACV,UAAU,KAAK;CACjB,GACA,CAAC,WAAW,OAAO,CACrB;;;;;;CAOA,gBAAgB;EACd,MAAM,QAAQ,SAAS;EAEvB,IAAI,CAAC,SAAS,CAAC,MAAM,UACnB;EAGF,IAAI,MAAM,eAAe,GACvB,WAAW;CAEf,GAAG,CAAC,cAAc,UAAU,CAAC;;;;;;CAO7B,IAAIA,aAAW,iBAAiB,WAC9B,QAAa,WAAW;EACtB,IAAI;EACJ;EACA,eAAe,iBAAiB;EAChC,aAAa;EACb,YAAY;EACZ;CACF,CAAC;CAGH,MAAM,aAA4B;EAChC,GAAI,QAAQ,cACR;GACE,OAAO;GACP,QAAQ;EACV,IACA,CAAC;EACL,GAAI,OACA;GACE,UAAU;GACV,OAAO;EACT,IACA,CAAC;EACL,WAAW;EACX,gBAAgB;EAChB,GAAG;CACL;CAEA,MAAM,eAA8B;EAClC,GAAI,cACA;GACE;GACA,OAAO;EACT,IACA,CAAC;EACL,GAAI,OACA;GACE,UAAU;GACV,SAAS;GACT,OAAO;GACP,GAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,OAAO;EAC1C,IACA,CAAC;EACL,GAAI,SACA,EACE,cAAc,mBAAmB,MAAM,EACzC,IACA,CAAC;EACL,GAAG;CACL;CAEA,MAAM,YAAY,mBAAmB,WAAW;CAEhD,MAAM,qBACJ,aAAa,KAAA,MAAc,CAAC,mBAAmB,WAAW;CAE5D,IAAI,CAAC,mBAAmB,CAAC,oBACvB,OAAO;CAGT,MAAM,iBAAiB,gBAAgB,YAAY;;;;;CAMnD,MAAM,eAAe,cAAc,WAAW;EAC5C,GAAI,CAAC,gBAAgB,iBAAiB,CAAC;EACvC,GAAG;EACH,KAAK,gBAAgB,aAAa;EAClC,KAAK;EACL,KAAK;EACL;EACA,OAAO;EACP,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW,GAAG,uBAAuB,SAAS;EAC9C,OAAO;EACP,QAAQ;EACR,SAAS;EACT,GAAI,QAAQ,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;EAC/C,GAAIA,aAAW,CAAC,gBAAgB,EAAE,SAAS,KAAK,IAAI,CAAC;EACrD,GAAI,YAAY,KAAA,KAAa,CAAC,gBAAgB,EAAE,QAAQ,IAAI,CAAC;EAC7D,GAAI,gBAAgB,KAAA,KAAa,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC;EACrE,GAAI,CAAC,iBAAiB,gBAAgB,UAAU,sBAC5C;GACE,aAAa;GACb,aAAa;EACf,IACA,CAAC;CACP,CAAU;;;;CAKV,MAAM,QAAQ,SAAS,SACrB,qBAAC,WAAD;EAAS,WAAU;EAAnB,UAAA,CACG,QAAQ,KAAK,QAAQ,UACpB,oBAAC,UAAD;GAEE,QAAQ,OAAO;GACf,OAAO,OAAO;GACd,MAAM,OAAO;GACb,OAAO,OAAO;EACf,GALM,GAAG,OAAO,OAAO,GAAG,OAK1B,CACF,GACA,YACM;CAET,CAAA,IAAA;CAGF,MAAM,yBAAyB,aAAa,uBAAuB,KAAA;CAEnE,MAAM,sBACJ,aACA,CAAC,sBACD,iBACA,gBAAgB,UAChB,QAAQ,mBAAmB;CAE7B,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,gBAAgB,kBAAkB;EAChD,OAAO;EACP,eAAa,kBAAkB,SAAS;EACxC,mBAAiB,OAAO,SAAS,KAAA;EACjC,oBAAkB,cAAc,SAAS,KAAA;EAL3C,UAAA;GAOG,sBACC,oBAAC,OAAD;IACE,WAAU;IACV,KAAK;IACL,KAAI;IACJ,eAAY;GACb,CAAA,IACC;GAEH,yBACC,oBAAC,OAAD;IAAK,WAAU;IAA4B,eAAY;IACpD,UAAA;GACE,CAAA,IACH;GAEH,qBACC,oBAAC,OAAD;IACE,WAAU;IACV,MAAM,MAAM,QAAQ,KAAA;IACpB,cAAY,OAAO,KAAA;IACnB,eAAa,MAAM,KAAA,IAAY;IAE9B,UAAA;GACE,CAAA,IAEL;EAEC;;AAET"}
@@ -0,0 +1,54 @@
1
+ const require_image_utils = require("./image.utils.cjs");
2
+ let react = require("react");
3
+ // src/components/data-display/image/use-image-state.ts
4
+ const createImageState = (source, fallbackSource) => {
5
+ return {
6
+ source,
7
+ fallbackSource,
8
+ usingFallback: !require_image_utils.hasImageSource(source) && require_image_utils.hasImageSource(fallbackSource),
9
+ status: "loading"
10
+ };
11
+ };
12
+ const useImageState = (source, fallbackSource) => {
13
+ const [state, setState] = (0, react.useState)(() => createImageState(source, fallbackSource));
14
+ const isCurrentSource = Object.is(state.source, source) && Object.is(state.fallbackSource, fallbackSource);
15
+ const usingFallback = isCurrentSource ? state.usingFallback : !require_image_utils.hasImageSource(source) && require_image_utils.hasImageSource(fallbackSource);
16
+ const status = isCurrentSource ? state.status : "loading";
17
+ return {
18
+ activeSource: usingFallback ? fallbackSource : source,
19
+ usingFallback,
20
+ status,
21
+ markLoaded: (0, react.useCallback)(() => {
22
+ setState({
23
+ source,
24
+ fallbackSource,
25
+ usingFallback,
26
+ status: "loaded"
27
+ });
28
+ }, [
29
+ source,
30
+ fallbackSource,
31
+ usingFallback
32
+ ]),
33
+ markError: (0, react.useCallback)(() => {
34
+ setState((current) => {
35
+ const currentUsesFallback = Object.is(current.source, source) && Object.is(current.fallbackSource, fallbackSource) ? current.usingFallback : !require_image_utils.hasImageSource(source) && require_image_utils.hasImageSource(fallbackSource);
36
+ if (!currentUsesFallback && require_image_utils.hasImageSource(fallbackSource)) return {
37
+ source,
38
+ fallbackSource,
39
+ usingFallback: true,
40
+ status: "loading"
41
+ };
42
+ return {
43
+ source,
44
+ fallbackSource,
45
+ usingFallback: currentUsesFallback,
46
+ status: "error"
47
+ };
48
+ });
49
+ }, [source, fallbackSource])
50
+ };
51
+ };
52
+ exports.useImageState = useImageState;
53
+
54
+ //# sourceMappingURL=use-image-state.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-image-state.cjs","names":["hasImageSource","useState","useCallback"],"sources":["../../../../src/components/data-display/image/use-image-state.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nimport type { ImageSource } from \"./image.types\";\nimport { hasImageSource } from \"./image.utils\";\n\ntype ImageStatus = \"loading\" | \"loaded\" | \"error\";\n\ntype ImageState = {\n source: ImageSource | null | undefined;\n fallbackSource: ImageSource | null | undefined;\n usingFallback: boolean;\n status: ImageStatus;\n};\n\nconst createImageState = (\n source: ImageSource | null | undefined,\n fallbackSource: ImageSource | null | undefined,\n): ImageState => {\n const usingFallback =\n !hasImageSource(source) && hasImageSource(fallbackSource);\n\n return {\n source,\n fallbackSource,\n usingFallback,\n status: \"loading\",\n };\n};\n\nconst useImageState = (\n source: ImageSource | null | undefined,\n fallbackSource: ImageSource | null | undefined,\n) => {\n const [state, setState] = useState<ImageState>(() =>\n createImageState(source, fallbackSource),\n );\n\n const isCurrentSource =\n Object.is(state.source, source) &&\n Object.is(state.fallbackSource, fallbackSource);\n\n const usingFallback = isCurrentSource\n ? state.usingFallback\n : !hasImageSource(source) && hasImageSource(fallbackSource);\n\n const status: ImageStatus = isCurrentSource ? state.status : \"loading\";\n\n const activeSource = usingFallback ? fallbackSource : source;\n\n /**\n * Marks the currently rendered source as successfully loaded.\n */\n const markLoaded = useCallback(() => {\n setState({\n source,\n fallbackSource,\n usingFallback,\n status: \"loaded\",\n });\n }, [source, fallbackSource, usingFallback]);\n\n /**\n * Switches to the fallback source or marks the image as failed.\n */\n const markError = useCallback(() => {\n setState((current) => {\n const currentIsValid =\n Object.is(current.source, source) &&\n Object.is(current.fallbackSource, fallbackSource);\n\n const currentUsesFallback = currentIsValid\n ? current.usingFallback\n : !hasImageSource(source) && hasImageSource(fallbackSource);\n\n if (!currentUsesFallback && hasImageSource(fallbackSource)) {\n return {\n source,\n fallbackSource,\n usingFallback: true,\n status: \"loading\",\n };\n }\n\n return {\n source,\n fallbackSource,\n usingFallback: currentUsesFallback,\n status: \"error\",\n };\n });\n }, [source, fallbackSource]);\n\n return {\n activeSource,\n usingFallback,\n status,\n markLoaded,\n markError,\n };\n};\n\nexport { useImageState };\nexport type { ImageStatus };\n"],"mappings":";;;AAcA,MAAM,oBACJ,QACA,mBACe;CAIf,OAAO;EACL;EACA;EACA,eALA,CAACA,oBAAAA,eAAe,MAAM,KAAKA,oBAAAA,eAAe,cAAc;EAMxD,QAAQ;CACV;AACF;AAEA,MAAM,iBACJ,QACA,mBACG;CACH,MAAM,CAAC,OAAO,aAAA,GAAYC,MAAAA,SAAAA,OACxB,iBAAiB,QAAQ,cAAc,CACzC;CAEA,MAAM,kBACJ,OAAO,GAAG,MAAM,QAAQ,MAAM,KAC9B,OAAO,GAAG,MAAM,gBAAgB,cAAc;CAEhD,MAAM,gBAAgB,kBAClB,MAAM,gBACN,CAACD,oBAAAA,eAAe,MAAM,KAAKA,oBAAAA,eAAe,cAAc;CAE5D,MAAM,SAAsB,kBAAkB,MAAM,SAAS;CA+C7D,OAAO;EACL,cA9CmB,gBAAgB,iBAAiB;EA+CpD;EACA;EACA,aAAA,GA5CiBE,MAAAA,YAAAA,OAAkB;GACnC,SAAS;IACP;IACA;IACA;IACA,QAAQ;GACV,CAAC;EACH,GAAG;GAAC;GAAQ;GAAgB;EAAa,CAqC9B;EACT,YAAA,GAjCgBA,MAAAA,YAAAA,OAAkB;GAClC,UAAU,YAAY;IAKpB,MAAM,sBAHJ,OAAO,GAAG,QAAQ,QAAQ,MAAM,KAChC,OAAO,GAAG,QAAQ,gBAAgB,cAAc,IAG9C,QAAQ,gBACR,CAACF,oBAAAA,eAAe,MAAM,KAAKA,oBAAAA,eAAe,cAAc;IAE5D,IAAI,CAAC,uBAAuBA,oBAAAA,eAAe,cAAc,GACvD,OAAO;KACL;KACA;KACA,eAAe;KACf,QAAQ;IACV;IAGF,OAAO;KACL;KACA;KACA,eAAe;KACf,QAAQ;IACV;GACF,CAAC;EACH,GAAG,CAAC,QAAQ,cAAc,CAOhB;CACV;AACF"}
@@ -0,0 +1,54 @@
1
+ import { hasImageSource } from "./image.utils.js";
2
+ import { useCallback, useState } from "react";
3
+ // src/components/data-display/image/use-image-state.ts
4
+ const createImageState = (source, fallbackSource) => {
5
+ return {
6
+ source,
7
+ fallbackSource,
8
+ usingFallback: !hasImageSource(source) && hasImageSource(fallbackSource),
9
+ status: "loading"
10
+ };
11
+ };
12
+ const useImageState = (source, fallbackSource) => {
13
+ const [state, setState] = useState(() => createImageState(source, fallbackSource));
14
+ const isCurrentSource = Object.is(state.source, source) && Object.is(state.fallbackSource, fallbackSource);
15
+ const usingFallback = isCurrentSource ? state.usingFallback : !hasImageSource(source) && hasImageSource(fallbackSource);
16
+ const status = isCurrentSource ? state.status : "loading";
17
+ return {
18
+ activeSource: usingFallback ? fallbackSource : source,
19
+ usingFallback,
20
+ status,
21
+ markLoaded: useCallback(() => {
22
+ setState({
23
+ source,
24
+ fallbackSource,
25
+ usingFallback,
26
+ status: "loaded"
27
+ });
28
+ }, [
29
+ source,
30
+ fallbackSource,
31
+ usingFallback
32
+ ]),
33
+ markError: useCallback(() => {
34
+ setState((current) => {
35
+ const currentUsesFallback = Object.is(current.source, source) && Object.is(current.fallbackSource, fallbackSource) ? current.usingFallback : !hasImageSource(source) && hasImageSource(fallbackSource);
36
+ if (!currentUsesFallback && hasImageSource(fallbackSource)) return {
37
+ source,
38
+ fallbackSource,
39
+ usingFallback: true,
40
+ status: "loading"
41
+ };
42
+ return {
43
+ source,
44
+ fallbackSource,
45
+ usingFallback: currentUsesFallback,
46
+ status: "error"
47
+ };
48
+ });
49
+ }, [source, fallbackSource])
50
+ };
51
+ };
52
+ export { useImageState };
53
+
54
+ //# sourceMappingURL=use-image-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-image-state.js","names":[],"sources":["../../../../src/components/data-display/image/use-image-state.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nimport type { ImageSource } from \"./image.types\";\nimport { hasImageSource } from \"./image.utils\";\n\ntype ImageStatus = \"loading\" | \"loaded\" | \"error\";\n\ntype ImageState = {\n source: ImageSource | null | undefined;\n fallbackSource: ImageSource | null | undefined;\n usingFallback: boolean;\n status: ImageStatus;\n};\n\nconst createImageState = (\n source: ImageSource | null | undefined,\n fallbackSource: ImageSource | null | undefined,\n): ImageState => {\n const usingFallback =\n !hasImageSource(source) && hasImageSource(fallbackSource);\n\n return {\n source,\n fallbackSource,\n usingFallback,\n status: \"loading\",\n };\n};\n\nconst useImageState = (\n source: ImageSource | null | undefined,\n fallbackSource: ImageSource | null | undefined,\n) => {\n const [state, setState] = useState<ImageState>(() =>\n createImageState(source, fallbackSource),\n );\n\n const isCurrentSource =\n Object.is(state.source, source) &&\n Object.is(state.fallbackSource, fallbackSource);\n\n const usingFallback = isCurrentSource\n ? state.usingFallback\n : !hasImageSource(source) && hasImageSource(fallbackSource);\n\n const status: ImageStatus = isCurrentSource ? state.status : \"loading\";\n\n const activeSource = usingFallback ? fallbackSource : source;\n\n /**\n * Marks the currently rendered source as successfully loaded.\n */\n const markLoaded = useCallback(() => {\n setState({\n source,\n fallbackSource,\n usingFallback,\n status: \"loaded\",\n });\n }, [source, fallbackSource, usingFallback]);\n\n /**\n * Switches to the fallback source or marks the image as failed.\n */\n const markError = useCallback(() => {\n setState((current) => {\n const currentIsValid =\n Object.is(current.source, source) &&\n Object.is(current.fallbackSource, fallbackSource);\n\n const currentUsesFallback = currentIsValid\n ? current.usingFallback\n : !hasImageSource(source) && hasImageSource(fallbackSource);\n\n if (!currentUsesFallback && hasImageSource(fallbackSource)) {\n return {\n source,\n fallbackSource,\n usingFallback: true,\n status: \"loading\",\n };\n }\n\n return {\n source,\n fallbackSource,\n usingFallback: currentUsesFallback,\n status: \"error\",\n };\n });\n }, [source, fallbackSource]);\n\n return {\n activeSource,\n usingFallback,\n status,\n markLoaded,\n markError,\n };\n};\n\nexport { useImageState };\nexport type { ImageStatus };\n"],"mappings":";;;AAcA,MAAM,oBACJ,QACA,mBACe;CAIf,OAAO;EACL;EACA;EACA,eALA,CAAC,eAAe,MAAM,KAAK,eAAe,cAAc;EAMxD,QAAQ;CACV;AACF;AAEA,MAAM,iBACJ,QACA,mBACG;CACH,MAAM,CAAC,OAAO,YAAY,eACxB,iBAAiB,QAAQ,cAAc,CACzC;CAEA,MAAM,kBACJ,OAAO,GAAG,MAAM,QAAQ,MAAM,KAC9B,OAAO,GAAG,MAAM,gBAAgB,cAAc;CAEhD,MAAM,gBAAgB,kBAClB,MAAM,gBACN,CAAC,eAAe,MAAM,KAAK,eAAe,cAAc;CAE5D,MAAM,SAAsB,kBAAkB,MAAM,SAAS;CA+C7D,OAAO;EACL,cA9CmB,gBAAgB,iBAAiB;EA+CpD;EACA;EACA,YA5CiB,kBAAkB;GACnC,SAAS;IACP;IACA;IACA;IACA,QAAQ;GACV,CAAC;EACH,GAAG;GAAC;GAAQ;GAAgB;EAAa,CAqC9B;EACT,WAjCgB,kBAAkB;GAClC,UAAU,YAAY;IAKpB,MAAM,sBAHJ,OAAO,GAAG,QAAQ,QAAQ,MAAM,KAChC,OAAO,GAAG,QAAQ,gBAAgB,cAAc,IAG9C,QAAQ,gBACR,CAAC,eAAe,MAAM,KAAK,eAAe,cAAc;IAE5D,IAAI,CAAC,uBAAuB,eAAe,cAAc,GACvD,OAAO;KACL;KACA;KACA,eAAe;KACf,QAAQ;IACV;IAGF,OAAO;KACL;KACA;KACA,eAAe;KACf,QAAQ;IACV;GACF,CAAC;EACH,GAAG,CAAC,QAAQ,cAAc,CAOhB;CACV;AACF"}
@@ -0,0 +1,16 @@
1
+ ;/* empty css */
2
+ let _puzzle_ui_core = require("@puzzle-ui/core");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ // src/components/data-display/paper/index.tsx
5
+ const Paper = ({ as, elevation = 1, children, className, ...rest }) => {
6
+ const Component = as || "div";
7
+ const classes = (0, _puzzle_ui_core.cn)("puzzle-paper", `elevation-${elevation}`, className);
8
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
9
+ className: classes,
10
+ ...rest,
11
+ children
12
+ });
13
+ };
14
+ exports.Paper = Paper;
15
+
16
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["cn"],"sources":["../../../../src/components/data-display/paper/index.tsx"],"sourcesContent":["import { cn } from \"@puzzle-ui/core\";\nimport type { ComponentPropsWithRef, ElementType } from \"react\";\nimport \"./paper.css\";\n\ntype PaperOwnProps<C extends ElementType> = {\n as?: C;\n elevation?: 1 | 2 | 3 | 4 | 6 | 8 | 12 | 16 | 24;\n};\n\ntype PaperProps<C extends ElementType> = PaperOwnProps<C> &\n Omit<ComponentPropsWithRef<C>, keyof PaperOwnProps<C>>;\n\nconst Paper = <C extends ElementType = \"div\">({\n as,\n elevation = 1,\n children,\n className,\n ...rest\n}: PaperProps<C>) => {\n const Component = as || \"div\";\n const classes = cn(\"puzzle-paper\", `elevation-${elevation}`, className);\n return (\n <Component className={classes} {...rest}>\n {children}\n </Component>\n );\n};\n\nexport { Paper, type PaperProps };\n"],"mappings":";;;;AAYA,MAAM,SAAwC,EAC5C,IACA,YAAY,GACZ,UACA,WACA,GAAG,WACgB;CACnB,MAAM,YAAY,MAAM;CACxB,MAAM,WAAA,GAAUA,gBAAAA,GAAAA,CAAG,gBAAgB,aAAa,aAAa,SAAS;CACtE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EAAW,WAAW;EAAS,GAAI;EAChC;CACQ,CAAA;AAEf"}
@@ -0,0 +1,8 @@
1
+ import { ComponentPropsWithRef, ElementType } from "react";
2
+ type PaperOwnProps<C extends ElementType> = {
3
+ as?: C;
4
+ elevation?: 1 | 2 | 3 | 4 | 6 | 8 | 12 | 16 | 24;
5
+ };
6
+ type PaperProps<C extends ElementType> = PaperOwnProps<C> & Omit<ComponentPropsWithRef<C>, keyof PaperOwnProps<C>>;
7
+ declare const Paper: <C extends ElementType = "div">({ as, elevation, children, className, ...rest }: PaperProps<C>) => import("react").JSX.Element;
8
+ export { Paper, type PaperProps };
@@ -0,0 +1,8 @@
1
+ import { ComponentPropsWithRef, ElementType } from "react";
2
+ type PaperOwnProps<C extends ElementType> = {
3
+ as?: C;
4
+ elevation?: 1 | 2 | 3 | 4 | 6 | 8 | 12 | 16 | 24;
5
+ };
6
+ type PaperProps<C extends ElementType> = PaperOwnProps<C> & Omit<ComponentPropsWithRef<C>, keyof PaperOwnProps<C>>;
7
+ declare const Paper: <C extends ElementType = "div">({ as, elevation, children, className, ...rest }: PaperProps<C>) => import("react").JSX.Element;
8
+ export { Paper, type PaperProps };
@@ -0,0 +1,16 @@
1
+ import "./paper.css";
2
+ import { cn } from "@puzzle-ui/core";
3
+ import { jsx } from "react/jsx-runtime";
4
+ // src/components/data-display/paper/index.tsx
5
+ const Paper = ({ as, elevation = 1, children, className, ...rest }) => {
6
+ const Component = as || "div";
7
+ const classes = cn("puzzle-paper", `elevation-${elevation}`, className);
8
+ return /* @__PURE__ */ jsx(Component, {
9
+ className: classes,
10
+ ...rest,
11
+ children
12
+ });
13
+ };
14
+ export { Paper };
15
+
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/data-display/paper/index.tsx"],"sourcesContent":["import { cn } from \"@puzzle-ui/core\";\nimport type { ComponentPropsWithRef, ElementType } from \"react\";\nimport \"./paper.css\";\n\ntype PaperOwnProps<C extends ElementType> = {\n as?: C;\n elevation?: 1 | 2 | 3 | 4 | 6 | 8 | 12 | 16 | 24;\n};\n\ntype PaperProps<C extends ElementType> = PaperOwnProps<C> &\n Omit<ComponentPropsWithRef<C>, keyof PaperOwnProps<C>>;\n\nconst Paper = <C extends ElementType = \"div\">({\n as,\n elevation = 1,\n children,\n className,\n ...rest\n}: PaperProps<C>) => {\n const Component = as || \"div\";\n const classes = cn(\"puzzle-paper\", `elevation-${elevation}`, className);\n return (\n <Component className={classes} {...rest}>\n {children}\n </Component>\n );\n};\n\nexport { Paper, type PaperProps };\n"],"mappings":";;;;AAYA,MAAM,SAAwC,EAC5C,IACA,YAAY,GACZ,UACA,WACA,GAAG,WACgB;CACnB,MAAM,YAAY,MAAM;CACxB,MAAM,UAAU,GAAG,gBAAgB,aAAa,aAAa,SAAS;CACtE,OACE,oBAAC,WAAD;EAAW,WAAW;EAAS,GAAI;EAChC;CACQ,CAAA;AAEf"}
@@ -0,0 +1,40 @@
1
+ .puzzle-paper {
2
+ background: var(--puzzle-color-surface, #fff);
3
+ border-radius: var(--puzzle-radius-md, .5rem);
4
+ }
5
+
6
+ .puzzle-paper.elevation-1 {
7
+ box-shadow: var(--puzzle-elevation-1);
8
+ }
9
+
10
+ .puzzle-paper.elevation-2 {
11
+ box-shadow: var(--puzzle-elevation-2);
12
+ }
13
+
14
+ .puzzle-paper.elevation-3 {
15
+ box-shadow: var(--puzzle-elevation-3);
16
+ }
17
+
18
+ .puzzle-paper.elevation-4 {
19
+ box-shadow: var(--puzzle-elevation-4);
20
+ }
21
+
22
+ .puzzle-paper.elevation-6 {
23
+ box-shadow: var(--puzzle-elevation-6);
24
+ }
25
+
26
+ .puzzle-paper.elevation-8 {
27
+ box-shadow: var(--puzzle-elevation-8);
28
+ }
29
+
30
+ .puzzle-paper.elevation-12 {
31
+ box-shadow: var(--puzzle-elevation-12);
32
+ }
33
+
34
+ .puzzle-paper.elevation-16 {
35
+ box-shadow: var(--puzzle-elevation-16);
36
+ }
37
+
38
+ .puzzle-paper.elevation-24 {
39
+ box-shadow: var(--puzzle-elevation-24);
40
+ }
@@ -0,0 +1,75 @@
1
+ ;/* empty css */
2
+ const require_utils = require("./utils.cjs");
3
+ let _puzzle_ui_core = require("@puzzle-ui/core");
4
+ require("react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ // src/components/data-display/progress/circular-progress.tsx
7
+ const getDimension = (size) => {
8
+ switch (size) {
9
+ case "sm": return 24 + 2 * getStrokeWidth(size);
10
+ case "md": return 44 + 2 * getStrokeWidth(size);
11
+ case "lg": return 64 + 2 * getStrokeWidth(size);
12
+ }
13
+ };
14
+ const getHalfDimension = (size) => {
15
+ return .5 * getDimension(size) - getStrokeWidth(size);
16
+ };
17
+ const getStrokeWidth = (size) => {
18
+ switch (size) {
19
+ case "sm": return 2;
20
+ case "md": return 3.6;
21
+ case "lg": return 4;
22
+ }
23
+ };
24
+ const getCenter = (size) => {
25
+ switch (size) {
26
+ case "sm": return 12 + getStrokeWidth(size);
27
+ case "md": return 22 + getStrokeWidth(size);
28
+ case "lg": return 32 + getStrokeWidth(size);
29
+ }
30
+ };
31
+ const getStrokeDasharray = (size) => {
32
+ switch (size) {
33
+ case "sm": return 84;
34
+ case "md": return 128;
35
+ case "lg": return 192;
36
+ }
37
+ };
38
+ const CircularProgress = ({ color, className, "aria-label": ariaLabel = "Loading...", value: rawValue, size = "md", showTrack = true, ...props }) => {
39
+ const value = require_utils.normalizeProgressValue(rawValue);
40
+ const classes = (0, _puzzle_ui_core.cn)("puzzle-circular-progress", value === void 0 && "puzzle-circular-progress-indeterminate", className);
41
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
42
+ ...props,
43
+ ...require_utils.getProgressAriaProps(value),
44
+ className: classes,
45
+ "aria-label": ariaLabel,
46
+ color: color ?? "var(--puzzle-color-primary)",
47
+ width: getDimension(size),
48
+ height: getDimension(size),
49
+ viewBox: `0 0 ${getDimension(size)} ${getDimension(size)}`,
50
+ children: [showTrack && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
51
+ className: "puzzle-circular-progress-track",
52
+ cx: getCenter(size),
53
+ cy: getCenter(size),
54
+ r: getHalfDimension(size),
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: getStrokeWidth(size),
58
+ "aria-hidden": "true"
59
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
60
+ className: "puzzle-circular-progress-circle",
61
+ cx: getCenter(size),
62
+ cy: getCenter(size),
63
+ r: getHalfDimension(size),
64
+ fill: "none",
65
+ stroke: "currentColor",
66
+ strokeWidth: getStrokeWidth(size),
67
+ strokeLinecap: "round",
68
+ strokeDasharray: getStrokeDasharray(size),
69
+ style: { strokeDashoffset: value !== void 0 ? `${getStrokeDasharray(size) - value / 100 * getStrokeDasharray(size)}px` : "32px" }
70
+ })]
71
+ });
72
+ };
73
+ exports.CircularProgress = CircularProgress;
74
+
75
+ //# sourceMappingURL=circular-progress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circular-progress.cjs","names":["normalizeProgressValue","cn","getProgressAriaProps"],"sources":["../../../../src/components/data-display/progress/circular-progress.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from \"react\";\nimport \"./circular-progress.css\";\nimport { cn } from \"@puzzle-ui/core\";\nimport type { ProgressProps } from \"./types\";\nimport { getProgressAriaProps, normalizeProgressValue } from \"./utils\";\n\ntype CircularProgressSize = \"sm\" | \"md\" | \"lg\";\n\ntype CircularProgressOwnProps = ProgressProps & {\n size?: CircularProgressSize;\n};\n\ntype CircularProgressProps = CircularProgressOwnProps &\n Omit<ComponentPropsWithRef<\"svg\">, keyof CircularProgressOwnProps>;\n\nconst getDimension = (size: CircularProgressSize) => {\n switch (size) {\n case \"sm\":\n return 24 + 2 * getStrokeWidth(size);\n case \"md\":\n return 44 + 2 * getStrokeWidth(size);\n case \"lg\":\n return 64 + 2 * getStrokeWidth(size);\n }\n};\n\nconst getHalfDimension = (size: CircularProgressSize) => {\n return 0.5 * getDimension(size) - getStrokeWidth(size);\n};\n\nconst getStrokeWidth = (size: CircularProgressSize) => {\n switch (size) {\n case \"sm\":\n return 2;\n case \"md\":\n return 3.6;\n case \"lg\":\n return 4;\n }\n};\n\nconst getCenter = (size: CircularProgressSize) => {\n switch (size) {\n case \"sm\":\n return 12 + getStrokeWidth(size);\n case \"md\":\n return 22 + getStrokeWidth(size);\n case \"lg\":\n return 32 + getStrokeWidth(size);\n }\n};\n\nconst getStrokeDasharray = (size: CircularProgressSize) => {\n switch (size) {\n case \"sm\":\n return 84;\n case \"md\":\n return 128;\n case \"lg\":\n return 192;\n }\n};\n\nconst CircularProgress = ({\n color,\n className,\n \"aria-label\": ariaLabel = \"Loading...\",\n value: rawValue,\n size = \"md\",\n showTrack = true,\n ...props\n}: CircularProgressProps) => {\n const value = normalizeProgressValue(rawValue);\n const classes = cn(\n \"puzzle-circular-progress\",\n value === undefined && \"puzzle-circular-progress-indeterminate\",\n className,\n );\n return (\n <svg\n {...props}\n {...getProgressAriaProps(value)}\n className={classes}\n aria-label={ariaLabel}\n color={color ?? \"var(--puzzle-color-primary)\"}\n width={getDimension(size)}\n height={getDimension(size)}\n viewBox={`0 0 ${getDimension(size)} ${getDimension(size)}`}\n >\n {showTrack && (\n <circle\n className=\"puzzle-circular-progress-track\"\n cx={getCenter(size)}\n cy={getCenter(size)}\n r={getHalfDimension(size)}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={getStrokeWidth(size)}\n aria-hidden=\"true\"\n />\n )}\n <circle\n className=\"puzzle-circular-progress-circle\"\n cx={getCenter(size)}\n cy={getCenter(size)}\n r={getHalfDimension(size)}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={getStrokeWidth(size)}\n strokeLinecap=\"round\"\n strokeDasharray={getStrokeDasharray(size)}\n style={{\n strokeDashoffset:\n value !== undefined\n ? `${getStrokeDasharray(size) - (value / 100) * getStrokeDasharray(size)}px`\n : \"32px\",\n }}\n />\n </svg>\n );\n};\n\nexport {\n CircularProgress,\n type CircularProgressProps,\n type CircularProgressSize,\n};\n"],"mappings":";;;;;;AAeA,MAAM,gBAAgB,SAA+B;CACnD,QAAQ,MAAR;EACE,KAAK,MACH,OAAO,KAAK,IAAI,eAAe,IAAI;EACrC,KAAK,MACH,OAAO,KAAK,IAAI,eAAe,IAAI;EACrC,KAAK,MACH,OAAO,KAAK,IAAI,eAAe,IAAI;CACvC;AACF;AAEA,MAAM,oBAAoB,SAA+B;CACvD,OAAO,KAAM,aAAa,IAAI,IAAI,eAAe,IAAI;AACvD;AAEA,MAAM,kBAAkB,SAA+B;CACrD,QAAQ,MAAR;EACE,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;CACX;AACF;AAEA,MAAM,aAAa,SAA+B;CAChD,QAAQ,MAAR;EACE,KAAK,MACH,OAAO,KAAK,eAAe,IAAI;EACjC,KAAK,MACH,OAAO,KAAK,eAAe,IAAI;EACjC,KAAK,MACH,OAAO,KAAK,eAAe,IAAI;CACnC;AACF;AAEA,MAAM,sBAAsB,SAA+B;CACzD,QAAQ,MAAR;EACE,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;CACX;AACF;AAEA,MAAM,oBAAoB,EACxB,OACA,WACA,cAAc,YAAY,cAC1B,OAAO,UACP,OAAO,MACP,YAAY,MACZ,GAAG,YACwB;CAC3B,MAAM,QAAQA,cAAAA,uBAAuB,QAAQ;CAC7C,MAAM,WAAA,GAAUC,gBAAAA,GAAAA,CACd,4BACA,UAAU,KAAA,KAAa,0CACvB,SACF;CACA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EACE,GAAI;EACJ,GAAIC,cAAAA,qBAAqB,KAAK;EAC9B,WAAW;EACX,cAAY;EACZ,OAAO,SAAS;EAChB,OAAO,aAAa,IAAI;EACxB,QAAQ,aAAa,IAAI;EACzB,SAAS,OAAO,aAAa,IAAI,EAAE,GAAG,aAAa,IAAI;EARzD,UAAA,CAUG,aACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;GACE,WAAU;GACV,IAAI,UAAU,IAAI;GAClB,IAAI,UAAU,IAAI;GAClB,GAAG,iBAAiB,IAAI;GACxB,MAAK;GACL,QAAO;GACP,aAAa,eAAe,IAAI;GAChC,eAAY;EACb,CAAA,GAEH,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;GACE,WAAU;GACV,IAAI,UAAU,IAAI;GAClB,IAAI,UAAU,IAAI;GAClB,GAAG,iBAAiB,IAAI;GACxB,MAAK;GACL,QAAO;GACP,aAAa,eAAe,IAAI;GAChC,eAAc;GACd,iBAAiB,mBAAmB,IAAI;GACxC,OAAO,EACL,kBACE,UAAU,KAAA,IACN,GAAG,mBAAmB,IAAI,IAAK,QAAQ,MAAO,mBAAmB,IAAI,EAAE,MACvE,OACR;EACD,CAAA,CACE;;AAET"}
@@ -0,0 +1,21 @@
1
+ .puzzle-circular-progress {
2
+ transform: rotate(-90deg);
3
+ }
4
+
5
+ .puzzle-circular-progress-indeterminate {
6
+ animation: 1s cubic-bezier(.5, 0, .5, 1) infinite puzzle-circular-progress-rotate;
7
+ }
8
+
9
+ .puzzle-circular-progress-track {
10
+ stroke: color-mix(in srgb, currentColor, transparent 80%);
11
+ }
12
+
13
+ @keyframes puzzle-circular-progress-rotate {
14
+ 0% {
15
+ transform: rotate(0);
16
+ }
17
+
18
+ 100% {
19
+ transform: rotate(360deg);
20
+ }
21
+ }
@@ -0,0 +1,9 @@
1
+ import { ProgressProps } from "./types.cjs";
2
+ import { ComponentPropsWithRef } from "react";
3
+ type CircularProgressSize = "sm" | "md" | "lg";
4
+ type CircularProgressOwnProps = ProgressProps & {
5
+ size?: CircularProgressSize;
6
+ };
7
+ type CircularProgressProps = CircularProgressOwnProps & Omit<ComponentPropsWithRef<"svg">, keyof CircularProgressOwnProps>;
8
+ declare const CircularProgress: ({ color, className, "aria-label": ariaLabel, value: rawValue, size, showTrack, ...props }: CircularProgressProps) => import("react").JSX.Element;
9
+ export { CircularProgress, type CircularProgressProps, type CircularProgressSize };
@@ -0,0 +1,9 @@
1
+ import { ProgressProps } from "./types.js";
2
+ import { ComponentPropsWithRef } from "react";
3
+ type CircularProgressSize = "sm" | "md" | "lg";
4
+ type CircularProgressOwnProps = ProgressProps & {
5
+ size?: CircularProgressSize;
6
+ };
7
+ type CircularProgressProps = CircularProgressOwnProps & Omit<ComponentPropsWithRef<"svg">, keyof CircularProgressOwnProps>;
8
+ declare const CircularProgress: ({ color, className, "aria-label": ariaLabel, value: rawValue, size, showTrack, ...props }: CircularProgressProps) => import("react").JSX.Element;
9
+ export { CircularProgress, type CircularProgressProps, type CircularProgressSize };
@@ -0,0 +1,75 @@
1
+ import "./circular-progress.css";
2
+ import { getProgressAriaProps, normalizeProgressValue } from "./utils.js";
3
+ import { cn } from "@puzzle-ui/core";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/components/data-display/progress/circular-progress.tsx
7
+ const getDimension = (size) => {
8
+ switch (size) {
9
+ case "sm": return 24 + 2 * getStrokeWidth(size);
10
+ case "md": return 44 + 2 * getStrokeWidth(size);
11
+ case "lg": return 64 + 2 * getStrokeWidth(size);
12
+ }
13
+ };
14
+ const getHalfDimension = (size) => {
15
+ return .5 * getDimension(size) - getStrokeWidth(size);
16
+ };
17
+ const getStrokeWidth = (size) => {
18
+ switch (size) {
19
+ case "sm": return 2;
20
+ case "md": return 3.6;
21
+ case "lg": return 4;
22
+ }
23
+ };
24
+ const getCenter = (size) => {
25
+ switch (size) {
26
+ case "sm": return 12 + getStrokeWidth(size);
27
+ case "md": return 22 + getStrokeWidth(size);
28
+ case "lg": return 32 + getStrokeWidth(size);
29
+ }
30
+ };
31
+ const getStrokeDasharray = (size) => {
32
+ switch (size) {
33
+ case "sm": return 84;
34
+ case "md": return 128;
35
+ case "lg": return 192;
36
+ }
37
+ };
38
+ const CircularProgress = ({ color, className, "aria-label": ariaLabel = "Loading...", value: rawValue, size = "md", showTrack = true, ...props }) => {
39
+ const value = normalizeProgressValue(rawValue);
40
+ const classes = cn("puzzle-circular-progress", value === void 0 && "puzzle-circular-progress-indeterminate", className);
41
+ return /* @__PURE__ */ jsxs("svg", {
42
+ ...props,
43
+ ...getProgressAriaProps(value),
44
+ className: classes,
45
+ "aria-label": ariaLabel,
46
+ color: color ?? "var(--puzzle-color-primary)",
47
+ width: getDimension(size),
48
+ height: getDimension(size),
49
+ viewBox: `0 0 ${getDimension(size)} ${getDimension(size)}`,
50
+ children: [showTrack && /* @__PURE__ */ jsx("circle", {
51
+ className: "puzzle-circular-progress-track",
52
+ cx: getCenter(size),
53
+ cy: getCenter(size),
54
+ r: getHalfDimension(size),
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: getStrokeWidth(size),
58
+ "aria-hidden": "true"
59
+ }), /* @__PURE__ */ jsx("circle", {
60
+ className: "puzzle-circular-progress-circle",
61
+ cx: getCenter(size),
62
+ cy: getCenter(size),
63
+ r: getHalfDimension(size),
64
+ fill: "none",
65
+ stroke: "currentColor",
66
+ strokeWidth: getStrokeWidth(size),
67
+ strokeLinecap: "round",
68
+ strokeDasharray: getStrokeDasharray(size),
69
+ style: { strokeDashoffset: value !== void 0 ? `${getStrokeDasharray(size) - value / 100 * getStrokeDasharray(size)}px` : "32px" }
70
+ })]
71
+ });
72
+ };
73
+ export { CircularProgress };
74
+
75
+ //# sourceMappingURL=circular-progress.js.map