@flanksource/clicky-ui 0.2.13 → 0.2.15

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 (466) hide show
  1. package/dist/chat.cjs +20 -0
  2. package/dist/chat.cjs.map +1 -0
  3. package/dist/chat.d.ts +2 -0
  4. package/dist/chat.d.ts.map +1 -0
  5. package/dist/chat.js +20 -0
  6. package/dist/chat.js.map +1 -0
  7. package/dist/components/Combobox.cjs +5 -3
  8. package/dist/components/Combobox.cjs.map +1 -1
  9. package/dist/components/Combobox.d.ts +2 -0
  10. package/dist/components/Combobox.d.ts.map +1 -1
  11. package/dist/components/Combobox.js +5 -3
  12. package/dist/components/Combobox.js.map +1 -1
  13. package/dist/components/DateTimePicker.cjs +3 -1
  14. package/dist/components/DateTimePicker.cjs.map +1 -1
  15. package/dist/components/DateTimePicker.d.ts +5 -1
  16. package/dist/components/DateTimePicker.d.ts.map +1 -1
  17. package/dist/components/DateTimePicker.js +3 -1
  18. package/dist/components/DateTimePicker.js.map +1 -1
  19. package/dist/components/FilterBar.cjs +8 -41
  20. package/dist/components/FilterBar.cjs.map +1 -1
  21. package/dist/components/FilterBar.d.ts +0 -2
  22. package/dist/components/FilterBar.d.ts.map +1 -1
  23. package/dist/components/FilterBar.js +3 -36
  24. package/dist/components/FilterBar.js.map +1 -1
  25. package/dist/components/FormatOptionsDropdown.cjs +2 -18
  26. package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
  27. package/dist/components/FormatOptionsDropdown.d.ts +1 -17
  28. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
  29. package/dist/components/FormatOptionsDropdown.js +1 -17
  30. package/dist/components/FormatOptionsDropdown.js.map +1 -1
  31. package/dist/components/JsonSchemaForm.cjs +128 -12
  32. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  33. package/dist/components/JsonSchemaForm.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  35. package/dist/components/JsonSchemaForm.js +131 -15
  36. package/dist/components/JsonSchemaForm.js.map +1 -1
  37. package/dist/components/SecretKeySelector.cjs +1 -2
  38. package/dist/components/SecretKeySelector.cjs.map +1 -1
  39. package/dist/components/SecretKeySelector.d.ts +5 -3
  40. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  41. package/dist/components/SecretKeySelector.js +2 -3
  42. package/dist/components/SecretKeySelector.js.map +1 -1
  43. package/dist/components/TreePickerField.cjs +137 -0
  44. package/dist/components/TreePickerField.cjs.map +1 -0
  45. package/dist/components/TreePickerField.d.ts +30 -0
  46. package/dist/components/TreePickerField.d.ts.map +1 -0
  47. package/dist/components/TreePickerField.js +137 -0
  48. package/dist/components/TreePickerField.js.map +1 -0
  49. package/dist/components/WorkloadPicker.cjs +6 -81
  50. package/dist/components/WorkloadPicker.cjs.map +1 -1
  51. package/dist/components/WorkloadPicker.d.ts +1 -20
  52. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  53. package/dist/components/WorkloadPicker.js +3 -78
  54. package/dist/components/WorkloadPicker.js.map +1 -1
  55. package/dist/components/button-variants.cjs +30 -0
  56. package/dist/components/button-variants.cjs.map +1 -0
  57. package/dist/components/button-variants.d.ts +5 -0
  58. package/dist/components/button-variants.d.ts.map +1 -0
  59. package/dist/components/button-variants.js +30 -0
  60. package/dist/components/button-variants.js.map +1 -0
  61. package/dist/components/button.cjs +11 -82
  62. package/dist/components/button.cjs.map +1 -1
  63. package/dist/components/button.d.ts +1 -5
  64. package/dist/components/button.d.ts.map +1 -1
  65. package/dist/components/button.js +5 -76
  66. package/dist/components/button.js.map +1 -1
  67. package/dist/components/filter-bar-utils.cjs +37 -0
  68. package/dist/components/filter-bar-utils.cjs.map +1 -0
  69. package/dist/components/filter-bar-utils.d.ts +4 -0
  70. package/dist/components/filter-bar-utils.d.ts.map +1 -0
  71. package/dist/components/filter-bar-utils.js +37 -0
  72. package/dist/components/filter-bar-utils.js.map +1 -0
  73. package/dist/components/format-options.cjs +20 -0
  74. package/dist/components/format-options.cjs.map +1 -0
  75. package/dist/components/format-options.d.ts +18 -0
  76. package/dist/components/format-options.d.ts.map +1 -0
  77. package/dist/components/format-options.js +20 -0
  78. package/dist/components/format-options.js.map +1 -0
  79. package/dist/components/json-schema-form-array.cjs +13 -17
  80. package/dist/components/json-schema-form-array.cjs.map +1 -1
  81. package/dist/components/json-schema-form-array.d.ts +1 -2
  82. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  83. package/dist/components/json-schema-form-array.js +3 -7
  84. package/dist/components/json-schema-form-array.js.map +1 -1
  85. package/dist/components/json-schema-form-fields.cjs +90 -232
  86. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  87. package/dist/components/json-schema-form-fields.d.ts +51 -6
  88. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-fields.js +82 -224
  90. package/dist/components/json-schema-form-fields.js.map +1 -1
  91. package/dist/components/json-schema-form-object.cjs +149 -0
  92. package/dist/components/json-schema-form-object.cjs.map +1 -0
  93. package/dist/components/json-schema-form-object.d.ts +10 -0
  94. package/dist/components/json-schema-form-object.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-object.js +149 -0
  96. package/dist/components/json-schema-form-object.js.map +1 -0
  97. package/dist/components/json-schema-form-preferences.cjs +41 -0
  98. package/dist/components/json-schema-form-preferences.cjs.map +1 -0
  99. package/dist/components/json-schema-form-preferences.d.ts +10 -0
  100. package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-preferences.js +41 -0
  102. package/dist/components/json-schema-form-preferences.js.map +1 -0
  103. package/dist/components/json-schema-form-render.cjs +43 -72
  104. package/dist/components/json-schema-form-render.cjs.map +1 -1
  105. package/dist/components/json-schema-form-render.d.ts +5 -33
  106. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-render.js +41 -70
  108. package/dist/components/json-schema-form-render.js.map +1 -1
  109. package/dist/components/json-schema-form-resolve.cjs +9 -1
  110. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  111. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-resolve.js +9 -1
  113. package/dist/components/json-schema-form-resolve.js.map +1 -1
  114. package/dist/components/json-schema-form-types.d.ts +58 -1
  115. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  116. package/dist/components/json-schema-form-utils.cjs +96 -0
  117. package/dist/components/json-schema-form-utils.cjs.map +1 -0
  118. package/dist/components/json-schema-form-utils.d.ts +17 -0
  119. package/dist/components/json-schema-form-utils.d.ts.map +1 -0
  120. package/dist/components/json-schema-form-utils.js +96 -0
  121. package/dist/components/json-schema-form-utils.js.map +1 -0
  122. package/dist/components/loading.cjs +109 -0
  123. package/dist/components/loading.cjs.map +1 -0
  124. package/dist/components/loading.d.ts +27 -0
  125. package/dist/components/loading.d.ts.map +1 -0
  126. package/dist/components/loading.js +109 -0
  127. package/dist/components/loading.js.map +1 -0
  128. package/dist/components/workload-picker-utils.cjs +88 -0
  129. package/dist/components/workload-picker-utils.cjs.map +1 -0
  130. package/dist/components/workload-picker-utils.d.ts +34 -0
  131. package/dist/components/workload-picker-utils.d.ts.map +1 -0
  132. package/dist/components/workload-picker-utils.js +88 -0
  133. package/dist/components/workload-picker-utils.js.map +1 -0
  134. package/dist/components.cjs +18 -6
  135. package/dist/components.cjs.map +1 -1
  136. package/dist/components.d.ts +10 -3
  137. package/dist/components.d.ts.map +1 -1
  138. package/dist/components.js +16 -4
  139. package/dist/components.js.map +1 -1
  140. package/dist/data/Badge.cjs +11 -91
  141. package/dist/data/Badge.cjs.map +1 -1
  142. package/dist/data/Badge.d.ts +1 -5
  143. package/dist/data/Badge.d.ts.map +1 -1
  144. package/dist/data/Badge.js +11 -91
  145. package/dist/data/Badge.js.map +1 -1
  146. package/dist/data/Clicky.cjs +4 -3
  147. package/dist/data/Clicky.cjs.map +1 -1
  148. package/dist/data/Clicky.d.ts.map +1 -1
  149. package/dist/data/Clicky.js +4 -3
  150. package/dist/data/Clicky.js.map +1 -1
  151. package/dist/data/DataTable.cjs +161 -156
  152. package/dist/data/DataTable.cjs.map +1 -1
  153. package/dist/data/DataTable.d.ts +25 -4
  154. package/dist/data/DataTable.d.ts.map +1 -1
  155. package/dist/data/DataTable.js +140 -135
  156. package/dist/data/DataTable.js.map +1 -1
  157. package/dist/data/FilterPill.cjs +3 -0
  158. package/dist/data/FilterPill.cjs.map +1 -1
  159. package/dist/data/FilterPill.d.ts.map +1 -1
  160. package/dist/data/FilterPill.js +3 -0
  161. package/dist/data/FilterPill.js.map +1 -1
  162. package/dist/data/Icon.cjs +7 -7
  163. package/dist/data/Icon.cjs.map +1 -1
  164. package/dist/data/Icon.js +7 -7
  165. package/dist/data/Icon.js.map +1 -1
  166. package/dist/data/LogDetails.cjs +5 -14
  167. package/dist/data/LogDetails.cjs.map +1 -1
  168. package/dist/data/LogDetails.d.ts +8 -4
  169. package/dist/data/LogDetails.d.ts.map +1 -1
  170. package/dist/data/LogDetails.js +4 -13
  171. package/dist/data/LogDetails.js.map +1 -1
  172. package/dist/data/LogsTable.cjs +6 -165
  173. package/dist/data/LogsTable.cjs.map +1 -1
  174. package/dist/data/LogsTable.d.ts +2 -15
  175. package/dist/data/LogsTable.d.ts.map +1 -1
  176. package/dist/data/LogsTable.js +6 -165
  177. package/dist/data/LogsTable.js.map +1 -1
  178. package/dist/data/TimeseriesCoreBars.cjs +8 -1
  179. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  180. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  181. package/dist/data/TimeseriesCoreBars.js +8 -1
  182. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  183. package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
  184. package/dist/data/TimeseriesPanel.axes.js.map +1 -1
  185. package/dist/data/TreeNode.cjs +13 -7
  186. package/dist/data/TreeNode.cjs.map +1 -1
  187. package/dist/data/TreeNode.d.ts.map +1 -1
  188. package/dist/data/TreeNode.js +13 -7
  189. package/dist/data/TreeNode.js.map +1 -1
  190. package/dist/data/badge-variants.cjs +85 -0
  191. package/dist/data/badge-variants.cjs.map +1 -0
  192. package/dist/data/badge-variants.d.ts +6 -0
  193. package/dist/data/badge-variants.d.ts.map +1 -0
  194. package/dist/data/badge-variants.js +85 -0
  195. package/dist/data/badge-variants.js.map +1 -0
  196. package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
  197. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
  198. package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
  199. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
  200. package/dist/data/cache-browser/CacheBrowser.js +59 -0
  201. package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
  202. package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
  203. package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
  204. package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
  205. package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
  206. package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
  207. package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
  208. package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
  209. package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
  210. package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
  211. package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
  212. package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
  213. package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
  214. package/dist/data/cache-browser/CacheTree.cjs +189 -0
  215. package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
  216. package/dist/data/cache-browser/CacheTree.d.ts +27 -0
  217. package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
  218. package/dist/data/cache-browser/CacheTree.js +189 -0
  219. package/dist/data/cache-browser/CacheTree.js.map +1 -0
  220. package/dist/data/cache-browser/CacheValue.cjs +86 -0
  221. package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
  222. package/dist/data/cache-browser/CacheValue.d.ts +11 -0
  223. package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
  224. package/dist/data/cache-browser/CacheValue.js +86 -0
  225. package/dist/data/cache-browser/CacheValue.js.map +1 -0
  226. package/dist/data/cache-browser/adapter.cjs +52 -0
  227. package/dist/data/cache-browser/adapter.cjs.map +1 -0
  228. package/dist/data/cache-browser/adapter.d.ts +48 -0
  229. package/dist/data/cache-browser/adapter.d.ts.map +1 -0
  230. package/dist/data/cache-browser/adapter.js +52 -0
  231. package/dist/data/cache-browser/adapter.js.map +1 -0
  232. package/dist/data/cache-browser/api.cjs +42 -0
  233. package/dist/data/cache-browser/api.cjs.map +1 -0
  234. package/dist/data/cache-browser/api.d.ts +33 -0
  235. package/dist/data/cache-browser/api.d.ts.map +1 -0
  236. package/dist/data/cache-browser/api.js +42 -0
  237. package/dist/data/cache-browser/api.js.map +1 -0
  238. package/dist/data/cache-browser/index.d.ts +9 -0
  239. package/dist/data/cache-browser/index.d.ts.map +1 -0
  240. package/dist/data/cache-browser/types.cjs +7 -0
  241. package/dist/data/cache-browser/types.cjs.map +1 -0
  242. package/dist/data/cache-browser/types.d.ts +78 -0
  243. package/dist/data/cache-browser/types.d.ts.map +1 -0
  244. package/dist/data/cache-browser/types.js +7 -0
  245. package/dist/data/cache-browser/types.js.map +1 -0
  246. package/dist/data/cells/TagList.cjs +4 -101
  247. package/dist/data/cells/TagList.cjs.map +1 -1
  248. package/dist/data/cells/TagList.d.ts +1 -49
  249. package/dist/data/cells/TagList.d.ts.map +1 -1
  250. package/dist/data/cells/TagList.js +3 -100
  251. package/dist/data/cells/TagList.js.map +1 -1
  252. package/dist/data/cells/Timestamp.cjs +3 -192
  253. package/dist/data/cells/Timestamp.cjs.map +1 -1
  254. package/dist/data/cells/Timestamp.d.ts +1 -50
  255. package/dist/data/cells/Timestamp.d.ts.map +1 -1
  256. package/dist/data/cells/Timestamp.js +2 -191
  257. package/dist/data/cells/Timestamp.js.map +1 -1
  258. package/dist/data/cells/tag-utils.cjs +103 -0
  259. package/dist/data/cells/tag-utils.cjs.map +1 -0
  260. package/dist/data/cells/tag-utils.d.ts +51 -0
  261. package/dist/data/cells/tag-utils.d.ts.map +1 -0
  262. package/dist/data/cells/tag-utils.js +103 -0
  263. package/dist/data/cells/tag-utils.js.map +1 -0
  264. package/dist/data/cells/timestamp-format.cjs +193 -0
  265. package/dist/data/cells/timestamp-format.cjs.map +1 -0
  266. package/dist/data/cells/timestamp-format.d.ts +51 -0
  267. package/dist/data/cells/timestamp-format.d.ts.map +1 -0
  268. package/dist/data/cells/timestamp-format.js +193 -0
  269. package/dist/data/cells/timestamp-format.js.map +1 -0
  270. package/dist/data/chat/Chat.cjs +48 -0
  271. package/dist/data/chat/Chat.cjs.map +1 -0
  272. package/dist/data/chat/Chat.d.ts +26 -0
  273. package/dist/data/chat/Chat.d.ts.map +1 -0
  274. package/dist/data/chat/Chat.fixtures.d.ts +6 -0
  275. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
  276. package/dist/data/chat/Chat.js +48 -0
  277. package/dist/data/chat/Chat.js.map +1 -0
  278. package/dist/data/chat/Conversation.cjs +34 -0
  279. package/dist/data/chat/Conversation.cjs.map +1 -0
  280. package/dist/data/chat/Conversation.d.ts +11 -0
  281. package/dist/data/chat/Conversation.d.ts.map +1 -0
  282. package/dist/data/chat/Conversation.js +34 -0
  283. package/dist/data/chat/Conversation.js.map +1 -0
  284. package/dist/data/chat/Message.cjs +44 -0
  285. package/dist/data/chat/Message.cjs.map +1 -0
  286. package/dist/data/chat/Message.d.ts +10 -0
  287. package/dist/data/chat/Message.d.ts.map +1 -0
  288. package/dist/data/chat/Message.js +44 -0
  289. package/dist/data/chat/Message.js.map +1 -0
  290. package/dist/data/chat/PromptInput.cjs +61 -0
  291. package/dist/data/chat/PromptInput.cjs.map +1 -0
  292. package/dist/data/chat/PromptInput.d.ts +16 -0
  293. package/dist/data/chat/PromptInput.d.ts.map +1 -0
  294. package/dist/data/chat/PromptInput.js +61 -0
  295. package/dist/data/chat/PromptInput.js.map +1 -0
  296. package/dist/data/chat/ToolCall.cjs +92 -0
  297. package/dist/data/chat/ToolCall.cjs.map +1 -0
  298. package/dist/data/chat/ToolCall.d.ts +14 -0
  299. package/dist/data/chat/ToolCall.d.ts.map +1 -0
  300. package/dist/data/chat/ToolCall.js +92 -0
  301. package/dist/data/chat/ToolCall.js.map +1 -0
  302. package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
  303. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
  304. package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
  305. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
  306. package/dist/data/chat/clickyOperationsToTools.js +73 -0
  307. package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
  308. package/dist/data/chat/index.d.ts +8 -0
  309. package/dist/data/chat/index.d.ts.map +1 -0
  310. package/dist/data/chat/types.cjs +18 -0
  311. package/dist/data/chat/types.cjs.map +1 -0
  312. package/dist/data/chat/types.d.ts +41 -0
  313. package/dist/data/chat/types.d.ts.map +1 -0
  314. package/dist/data/chat/types.js +18 -0
  315. package/dist/data/chat/types.js.map +1 -0
  316. package/dist/data/data-table-utils.cjs +55 -0
  317. package/dist/data/data-table-utils.cjs.map +1 -0
  318. package/dist/data/data-table-utils.d.ts +24 -0
  319. package/dist/data/data-table-utils.d.ts.map +1 -0
  320. package/dist/data/data-table-utils.js +55 -0
  321. package/dist/data/data-table-utils.js.map +1 -0
  322. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
  323. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  324. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  325. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
  326. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  327. package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
  328. package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
  329. package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
  330. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
  331. package/dist/data/diagnostics/GoroutineCard.js +2 -21
  332. package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
  333. package/dist/data/diagnostics/ThreadCard.cjs +3 -38
  334. package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
  335. package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
  336. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  337. package/dist/data/diagnostics/ThreadCard.js +2 -37
  338. package/dist/data/diagnostics/ThreadCard.js.map +1 -1
  339. package/dist/data/diagnostics/state-styles.cjs +59 -0
  340. package/dist/data/diagnostics/state-styles.cjs.map +1 -0
  341. package/dist/data/diagnostics/state-styles.d.ts +5 -0
  342. package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
  343. package/dist/data/diagnostics/state-styles.js +59 -0
  344. package/dist/data/diagnostics/state-styles.js.map +1 -0
  345. package/dist/data/logs-normalize.cjs +166 -0
  346. package/dist/data/logs-normalize.cjs.map +1 -0
  347. package/dist/data/logs-normalize.d.ts +16 -0
  348. package/dist/data/logs-normalize.d.ts.map +1 -0
  349. package/dist/data/logs-normalize.js +166 -0
  350. package/dist/data/logs-normalize.js.map +1 -0
  351. package/dist/data/task-status.cjs +19 -19
  352. package/dist/data/task-status.cjs.map +1 -1
  353. package/dist/data/task-status.js +19 -19
  354. package/dist/data/task-status.js.map +1 -1
  355. package/dist/data/version-info.cjs +3 -3
  356. package/dist/data/version-info.js +3 -3
  357. package/dist/data.cjs +43 -18
  358. package/dist/data.cjs.map +1 -1
  359. package/dist/data.d.ts +11 -5
  360. package/dist/data.d.ts.map +1 -1
  361. package/dist/data.js +30 -5
  362. package/dist/data.js.map +1 -1
  363. package/dist/hooks/density-provider.cjs +38 -0
  364. package/dist/hooks/density-provider.cjs.map +1 -0
  365. package/dist/hooks/density-provider.d.ts +20 -0
  366. package/dist/hooks/density-provider.d.ts.map +1 -0
  367. package/dist/hooks/density-provider.js +38 -0
  368. package/dist/hooks/density-provider.js.map +1 -0
  369. package/dist/hooks/theme-provider.cjs +43 -0
  370. package/dist/hooks/theme-provider.cjs.map +1 -0
  371. package/dist/hooks/theme-provider.d.ts +9 -0
  372. package/dist/hooks/theme-provider.d.ts.map +1 -0
  373. package/dist/hooks/theme-provider.js +43 -0
  374. package/dist/hooks/theme-provider.js.map +1 -0
  375. package/dist/hooks/use-density.cjs +8 -37
  376. package/dist/hooks/use-density.cjs.map +1 -1
  377. package/dist/hooks/use-density.d.ts +5 -20
  378. package/dist/hooks/use-density.d.ts.map +1 -1
  379. package/dist/hooks/use-density.js +9 -38
  380. package/dist/hooks/use-density.js.map +1 -1
  381. package/dist/hooks/use-theme.cjs +10 -43
  382. package/dist/hooks/use-theme.cjs.map +1 -1
  383. package/dist/hooks/use-theme.d.ts +6 -9
  384. package/dist/hooks/use-theme.d.ts.map +1 -1
  385. package/dist/hooks/use-theme.js +11 -44
  386. package/dist/hooks/use-theme.js.map +1 -1
  387. package/dist/hooks.cjs +5 -2
  388. package/dist/hooks.cjs.map +1 -1
  389. package/dist/hooks.d.ts +4 -2
  390. package/dist/hooks.d.ts.map +1 -1
  391. package/dist/hooks.js +5 -2
  392. package/dist/hooks.js.map +1 -1
  393. package/dist/icons/changeIconAliases.cjs +13 -13
  394. package/dist/icons/changeIconAliases.cjs.map +1 -1
  395. package/dist/icons/changeIconAliases.d.ts.map +1 -1
  396. package/dist/icons/changeIconAliases.js +13 -13
  397. package/dist/icons/changeIconAliases.js.map +1 -1
  398. package/dist/index.cjs +71 -30
  399. package/dist/index.cjs.map +1 -1
  400. package/dist/index.js +53 -12
  401. package/dist/index.js.map +1 -1
  402. package/dist/overlay/DropdownMenu.cjs +2 -0
  403. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  404. package/dist/overlay/DropdownMenu.d.ts +3 -1
  405. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  406. package/dist/overlay/DropdownMenu.js +2 -0
  407. package/dist/overlay/DropdownMenu.js.map +1 -1
  408. package/dist/overlay/Modal.cjs +11 -4
  409. package/dist/overlay/Modal.cjs.map +1 -1
  410. package/dist/overlay/Modal.d.ts +1 -1
  411. package/dist/overlay/Modal.d.ts.map +1 -1
  412. package/dist/overlay/Modal.js +11 -4
  413. package/dist/overlay/Modal.js.map +1 -1
  414. package/dist/overlay/modalStack.cjs +35 -0
  415. package/dist/overlay/modalStack.cjs.map +1 -0
  416. package/dist/overlay/modalStack.d.ts +13 -0
  417. package/dist/overlay/modalStack.d.ts.map +1 -0
  418. package/dist/overlay/modalStack.js +35 -0
  419. package/dist/overlay/modalStack.js.map +1 -0
  420. package/dist/rpc/AcceptPicker.cjs +2 -18
  421. package/dist/rpc/AcceptPicker.cjs.map +1 -1
  422. package/dist/rpc/AcceptPicker.d.ts +1 -41
  423. package/dist/rpc/AcceptPicker.d.ts.map +1 -1
  424. package/dist/rpc/AcceptPicker.js +2 -18
  425. package/dist/rpc/AcceptPicker.js.map +1 -1
  426. package/dist/rpc/CommandOutput.cjs +1 -1
  427. package/dist/rpc/CommandOutput.cjs.map +1 -1
  428. package/dist/rpc/CommandOutput.js +1 -1
  429. package/dist/rpc/CommandOutput.js.map +1 -1
  430. package/dist/rpc/EndpointList.cjs +1 -1
  431. package/dist/rpc/EndpointList.cjs.map +1 -1
  432. package/dist/rpc/EndpointList.js +1 -1
  433. package/dist/rpc/EndpointList.js.map +1 -1
  434. package/dist/rpc/OperationCatalog.cjs +23 -41
  435. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  436. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  437. package/dist/rpc/OperationCatalog.js +24 -42
  438. package/dist/rpc/OperationCatalog.js.map +1 -1
  439. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  440. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  441. package/dist/rpc/OperationCommandPage.js.map +1 -1
  442. package/dist/rpc/accept-options.cjs +20 -0
  443. package/dist/rpc/accept-options.cjs.map +1 -0
  444. package/dist/rpc/accept-options.d.ts +42 -0
  445. package/dist/rpc/accept-options.d.ts.map +1 -0
  446. package/dist/rpc/accept-options.js +20 -0
  447. package/dist/rpc/accept-options.js.map +1 -0
  448. package/dist/rpc/classify.cjs +15 -4
  449. package/dist/rpc/classify.cjs.map +1 -1
  450. package/dist/rpc/classify.d.ts.map +1 -1
  451. package/dist/rpc/classify.js +15 -4
  452. package/dist/rpc/classify.js.map +1 -1
  453. package/dist/rpc/clickyMetadata.cjs +13 -3
  454. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  455. package/dist/rpc/clickyMetadata.d.ts +2 -0
  456. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  457. package/dist/rpc/clickyMetadata.js +14 -4
  458. package/dist/rpc/clickyMetadata.js.map +1 -1
  459. package/dist/rpc.cjs +3 -2
  460. package/dist/rpc.cjs.map +1 -1
  461. package/dist/rpc.d.ts +2 -1
  462. package/dist/rpc.d.ts.map +1 -1
  463. package/dist/rpc.js +2 -1
  464. package/dist/rpc.js.map +1 -1
  465. package/dist/styles.css +1 -1
  466. package/package.json +16 -1
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ import { Density } from './use-density';
3
+ export type DensityProviderProps = {
4
+ children: ReactNode;
5
+ defaultDensity?: Density;
6
+ storageKey?: string;
7
+ };
8
+ export declare function DensityProvider({ children, defaultDensity, storageKey, }: DensityProviderProps): import("react/jsx-runtime").JSX.Element;
9
+ /**
10
+ * Provide a density value to descendants without owning the storage / setter.
11
+ * Useful when a component (e.g. DataTable) already manages density via its
12
+ * own state and just needs leaf cells like TagList to read the active value
13
+ * via {@link useDensityValue}. Calls to `setDensity` from descendants are
14
+ * ignored — the host component controls density externally.
15
+ */
16
+ export declare function DensityValueProvider({ density, children, }: {
17
+ density: Density;
18
+ children: ReactNode;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=density-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"density-provider.d.ts","sourceRoot":"","sources":["../../src/hooks/density-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAKL,KAAK,OAAO,EAEb,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAA8B,EAC9B,UAAgC,GACjC,EAAE,oBAAoB,2CAqBtB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAGA"}
@@ -0,0 +1,38 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback, useMemo } from "react";
3
+ import { readStoredDensity, applyDensity, DENSITY_STORAGE_KEY, DensityContext } from "./use-density.js";
4
+ function DensityProvider({
5
+ children,
6
+ defaultDensity = "comfortable",
7
+ storageKey = DENSITY_STORAGE_KEY
8
+ }) {
9
+ const [density, setDensityState] = useState(() => {
10
+ if (typeof window === "undefined") return defaultDensity;
11
+ return readStoredDensity() ?? defaultDensity;
12
+ });
13
+ useEffect(() => {
14
+ applyDensity(density);
15
+ if (typeof window !== "undefined") {
16
+ window.localStorage.setItem(storageKey, density);
17
+ }
18
+ }, [density, storageKey]);
19
+ const setDensity = useCallback((next) => setDensityState(next), []);
20
+ const value = useMemo(
21
+ () => ({ density, setDensity }),
22
+ [density, setDensity]
23
+ );
24
+ return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
25
+ }
26
+ function DensityValueProvider({
27
+ density,
28
+ children
29
+ }) {
30
+ const value = useMemo(() => ({ density, setDensity: () => {
31
+ } }), [density]);
32
+ return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
33
+ }
34
+ export {
35
+ DensityProvider,
36
+ DensityValueProvider
37
+ };
38
+ //# sourceMappingURL=density-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"density-provider.js","sources":["../../src/hooks/density-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n DENSITY_STORAGE_KEY,\n DensityContext,\n applyDensity,\n readStoredDensity,\n type Density,\n type DensityContextValue,\n} from \"./use-density\";\n\nexport type DensityProviderProps = {\n children: ReactNode;\n defaultDensity?: Density;\n storageKey?: string;\n};\n\nexport function DensityProvider({\n children,\n defaultDensity = \"comfortable\",\n storageKey = DENSITY_STORAGE_KEY,\n}: DensityProviderProps) {\n const [density, setDensityState] = useState<Density>(() => {\n if (typeof window === \"undefined\") return defaultDensity;\n return readStoredDensity() ?? defaultDensity;\n });\n\n useEffect(() => {\n applyDensity(density);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, density);\n }\n }, [density, storageKey]);\n\n const setDensity = useCallback((next: Density) => setDensityState(next), []);\n\n const value = useMemo<DensityContextValue>(\n () => ({ density, setDensity }),\n [density, setDensity],\n );\n\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\n/**\n * Provide a density value to descendants without owning the storage / setter.\n * Useful when a component (e.g. DataTable) already manages density via its\n * own state and just needs leaf cells like TagList to read the active value\n * via {@link useDensityValue}. Calls to `setDensity` from descendants are\n * ignored — the host component controls density externally.\n */\nexport function DensityValueProvider({\n density,\n children,\n}: {\n density: Density;\n children: ReactNode;\n}) {\n const value = useMemo<DensityContextValue>(() => ({ density, setDensity: () => {} }), [density]);\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n"],"names":[],"mappings":";;;AAgBO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,iBAAiB;AAAA,EACjB,aAAa;AACf,GAAyB;AACvB,QAAM,CAAC,SAAS,eAAe,IAAI,SAAkB,MAAM;AACzD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,uBAAuB;AAAA,EAChC,CAAC;AAED,YAAU,MAAM;AACd,iBAAa,OAAO;AACpB,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,aAAa,YAAY,CAAC,SAAkB,gBAAgB,IAAI,GAAG,EAAE;AAE3E,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,SAAS;IAClB,CAAC,SAAS,UAAU;AAAA,EAAA;AAGtB,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AASO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGG;AACD,QAAM,QAAQ,QAA6B,OAAO,EAAE,SAAS,YAAY,MAAM;AAAA,EAAC,EAAA,IAAM,CAAC,OAAO,CAAC;AAC/F,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const useTheme = require("./use-theme.cjs");
6
+ function ThemeProvider({
7
+ children,
8
+ defaultTheme = "system",
9
+ storageKey = useTheme.THEME_STORAGE_KEY
10
+ }) {
11
+ const [theme, setThemeState] = react.useState(() => {
12
+ if (typeof window === "undefined") return defaultTheme;
13
+ return useTheme.readStoredTheme() ?? defaultTheme;
14
+ });
15
+ const [resolvedTheme, setResolvedTheme] = react.useState(() => useTheme.resolveTheme(theme));
16
+ react.useEffect(() => {
17
+ const next = useTheme.resolveTheme(theme);
18
+ setResolvedTheme(next);
19
+ useTheme.applyTheme(next);
20
+ if (typeof window !== "undefined") {
21
+ window.localStorage.setItem(storageKey, theme);
22
+ }
23
+ }, [theme, storageKey]);
24
+ react.useEffect(() => {
25
+ if (theme !== "system" || typeof window === "undefined") return;
26
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
27
+ const onChange = () => {
28
+ const next = mq.matches ? "dark" : "light";
29
+ setResolvedTheme(next);
30
+ useTheme.applyTheme(next);
31
+ };
32
+ mq.addEventListener("change", onChange);
33
+ return () => mq.removeEventListener("change", onChange);
34
+ }, [theme]);
35
+ const setTheme = react.useCallback((next) => setThemeState(next), []);
36
+ const value = react.useMemo(
37
+ () => ({ theme, resolvedTheme, setTheme }),
38
+ [theme, resolvedTheme, setTheme]
39
+ );
40
+ return /* @__PURE__ */ jsxRuntime.jsx(useTheme.ThemeContext.Provider, { value, children });
41
+ }
42
+ exports.ThemeProvider = ThemeProvider;
43
+ //# sourceMappingURL=theme-provider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.cjs","sources":["../../src/hooks/theme-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n THEME_STORAGE_KEY,\n ThemeContext,\n applyTheme,\n readStoredTheme,\n resolveTheme,\n type ResolvedTheme,\n type Theme,\n type ThemeContextValue,\n} from \"./use-theme\";\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = THEME_STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return readStoredTheme() ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(theme));\n\n useEffect(() => {\n const next = resolveTheme(theme);\n setResolvedTheme(next);\n applyTheme(next);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, theme);\n }\n }, [theme, storageKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n const next: ResolvedTheme = mq.matches ? \"dark\" : \"light\";\n setResolvedTheme(next);\n applyTheme(next);\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n"],"names":["THEME_STORAGE_KEY","useState","readStoredTheme","resolveTheme","useEffect","applyTheme","useCallback","useMemo","jsx","ThemeContext"],"mappings":";;;;;AAkBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,EACf,aAAaA,SAAAA;AACf,GAAuB;AACrB,QAAM,CAAC,OAAO,aAAa,IAAIC,MAAAA,SAAgB,MAAM;AACnD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAOC,SAAAA,qBAAqB;AAAA,EAC9B,CAAC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAID,MAAAA,SAAwB,MAAME,SAAAA,aAAa,KAAK,CAAC;AAE3FC,QAAAA,UAAU,MAAM;AACd,UAAM,OAAOD,SAAAA,aAAa,KAAK;AAC/B,qBAAiB,IAAI;AACrBE,aAAAA,WAAW,IAAI;AACf,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtBD,QAAAA,UAAU,MAAM;AACd,QAAI,UAAU,YAAY,OAAO,WAAW,YAAa;AACzD,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM;AACrB,YAAM,OAAsB,GAAG,UAAU,SAAS;AAClD,uBAAiB,IAAI;AACrBC,eAAAA,WAAW,IAAI;AAAA,IACjB;AACA,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAWC,MAAAA,YAAY,CAAC,SAAgB,cAAc,IAAI,GAAG,EAAE;AAErE,QAAM,QAAQC,MAAAA;AAAAA,IACZ,OAAO,EAAE,OAAO,eAAe;IAC/B,CAAC,OAAO,eAAe,QAAQ;AAAA,EAAA;AAGjC,SAAOC,2BAAAA,IAACC,SAAAA,aAAa,UAAb,EAAsB,OAAe,SAAA,CAAS;AACxD;;"}
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { Theme } from './use-theme';
3
+ export type ThemeProviderProps = {
4
+ children: ReactNode;
5
+ defaultTheme?: Theme;
6
+ storageKey?: string;
7
+ };
8
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=theme-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/hooks/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAOL,KAAK,KAAK,EAEX,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAA8B,GAC/B,EAAE,kBAAkB,2CAoCpB"}
@@ -0,0 +1,43 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback, useMemo } from "react";
3
+ import { readStoredTheme, resolveTheme, applyTheme, THEME_STORAGE_KEY, ThemeContext } from "./use-theme.js";
4
+ function ThemeProvider({
5
+ children,
6
+ defaultTheme = "system",
7
+ storageKey = THEME_STORAGE_KEY
8
+ }) {
9
+ const [theme, setThemeState] = useState(() => {
10
+ if (typeof window === "undefined") return defaultTheme;
11
+ return readStoredTheme() ?? defaultTheme;
12
+ });
13
+ const [resolvedTheme, setResolvedTheme] = useState(() => resolveTheme(theme));
14
+ useEffect(() => {
15
+ const next = resolveTheme(theme);
16
+ setResolvedTheme(next);
17
+ applyTheme(next);
18
+ if (typeof window !== "undefined") {
19
+ window.localStorage.setItem(storageKey, theme);
20
+ }
21
+ }, [theme, storageKey]);
22
+ useEffect(() => {
23
+ if (theme !== "system" || typeof window === "undefined") return;
24
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
25
+ const onChange = () => {
26
+ const next = mq.matches ? "dark" : "light";
27
+ setResolvedTheme(next);
28
+ applyTheme(next);
29
+ };
30
+ mq.addEventListener("change", onChange);
31
+ return () => mq.removeEventListener("change", onChange);
32
+ }, [theme]);
33
+ const setTheme = useCallback((next) => setThemeState(next), []);
34
+ const value = useMemo(
35
+ () => ({ theme, resolvedTheme, setTheme }),
36
+ [theme, resolvedTheme, setTheme]
37
+ );
38
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
39
+ }
40
+ export {
41
+ ThemeProvider
42
+ };
43
+ //# sourceMappingURL=theme-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.js","sources":["../../src/hooks/theme-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n THEME_STORAGE_KEY,\n ThemeContext,\n applyTheme,\n readStoredTheme,\n resolveTheme,\n type ResolvedTheme,\n type Theme,\n type ThemeContextValue,\n} from \"./use-theme\";\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = THEME_STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return readStoredTheme() ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(theme));\n\n useEffect(() => {\n const next = resolveTheme(theme);\n setResolvedTheme(next);\n applyTheme(next);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, theme);\n }\n }, [theme, storageKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n const next: ResolvedTheme = mq.matches ? \"dark\" : \"light\";\n setResolvedTheme(next);\n applyTheme(next);\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AACf,GAAuB;AACrB,QAAM,CAAC,OAAO,aAAa,IAAI,SAAgB,MAAM;AACnD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,qBAAqB;AAAA,EAC9B,CAAC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,MAAM,aAAa,KAAK,CAAC;AAE3F,YAAU,MAAM;AACd,UAAM,OAAO,aAAa,KAAK;AAC/B,qBAAiB,IAAI;AACrB,eAAW,IAAI;AACf,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtB,YAAU,MAAM;AACd,QAAI,UAAU,YAAY,OAAO,WAAW,YAAa;AACzD,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM;AACrB,YAAM,OAAsB,GAAG,UAAU,SAAS;AAClD,uBAAiB,IAAI;AACrB,iBAAW,IAAI;AAAA,IACjB;AACA,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAW,YAAY,CAAC,SAAgB,cAAc,IAAI,GAAG,EAAE;AAErE,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,OAAO,eAAe;IAC/B,CAAC,OAAO,eAAe,QAAQ;AAAA,EAAA;AAGjC,SAAO,oBAAC,aAAa,UAAb,EAAsB,OAAe,SAAA,CAAS;AACxD;"}
@@ -1,54 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
3
  const react = require("react");
5
- const STORAGE_KEY = "clicky-ui-density";
4
+ const DENSITY_STORAGE_KEY = "clicky-ui-density";
6
5
  const DATA_ATTR = "data-density";
7
6
  const DensityContext = react.createContext(null);
8
- function readStored() {
7
+ function readStoredDensity() {
9
8
  if (typeof window === "undefined") return null;
10
- const raw = window.localStorage.getItem(STORAGE_KEY);
9
+ const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);
11
10
  return raw === "compact" || raw === "comfortable" || raw === "spacious" ? raw : null;
12
11
  }
13
- function apply(density) {
12
+ function applyDensity(density) {
14
13
  if (typeof document === "undefined") return;
15
14
  document.documentElement.setAttribute(DATA_ATTR, density);
16
15
  }
17
- function DensityProvider({
18
- children,
19
- defaultDensity = "comfortable",
20
- storageKey = STORAGE_KEY
21
- }) {
22
- const [density, setDensityState] = react.useState(() => {
23
- if (typeof window === "undefined") return defaultDensity;
24
- return readStored() ?? defaultDensity;
25
- });
26
- react.useEffect(() => {
27
- apply(density);
28
- if (typeof window !== "undefined") {
29
- window.localStorage.setItem(storageKey, density);
30
- }
31
- }, [density, storageKey]);
32
- const setDensity = react.useCallback((next) => setDensityState(next), []);
33
- const value = react.useMemo(
34
- () => ({ density, setDensity }),
35
- [density, setDensity]
36
- );
37
- return /* @__PURE__ */ jsxRuntime.jsx(DensityContext.Provider, { value, children });
38
- }
39
16
  function useDensity() {
40
17
  const ctx = react.useContext(DensityContext);
41
18
  if (!ctx) throw new Error("useDensity must be used inside <DensityProvider>");
42
19
  return ctx;
43
20
  }
44
- function DensityValueProvider({
45
- density,
46
- children
47
- }) {
48
- const value = react.useMemo(() => ({ density, setDensity: () => {
49
- } }), [density]);
50
- return /* @__PURE__ */ jsxRuntime.jsx(DensityContext.Provider, { value, children });
51
- }
52
21
  function useDensityValue() {
53
22
  const ctx = react.useContext(DensityContext);
54
23
  if (ctx) return ctx.density;
@@ -56,8 +25,10 @@ function useDensityValue() {
56
25
  const raw = document.documentElement.getAttribute("data-density");
57
26
  return raw === "compact" || raw === "spacious" ? raw : "comfortable";
58
27
  }
59
- exports.DensityProvider = DensityProvider;
60
- exports.DensityValueProvider = DensityValueProvider;
28
+ exports.DENSITY_STORAGE_KEY = DENSITY_STORAGE_KEY;
29
+ exports.DensityContext = DensityContext;
30
+ exports.applyDensity = applyDensity;
31
+ exports.readStoredDensity = readStoredDensity;
61
32
  exports.useDensity = useDensity;
62
33
  exports.useDensityValue = useDensityValue;
63
34
  //# sourceMappingURL=use-density.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-density.cjs","sources":["../../src/hooks/use-density.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\ntype DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nconst STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nconst DensityContext = createContext<DensityContextValue | null>(null);\n\nfunction readStored(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nfunction apply(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport type DensityProviderProps = {\n children: ReactNode;\n defaultDensity?: Density;\n storageKey?: string;\n};\n\nexport function DensityProvider({\n children,\n defaultDensity = \"comfortable\",\n storageKey = STORAGE_KEY,\n}: DensityProviderProps) {\n const [density, setDensityState] = useState<Density>(() => {\n if (typeof window === \"undefined\") return defaultDensity;\n return readStored() ?? defaultDensity;\n });\n\n useEffect(() => {\n apply(density);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, density);\n }\n }, [density, storageKey]);\n\n const setDensity = useCallback((next: Density) => setDensityState(next), []);\n\n const value = useMemo<DensityContextValue>(\n () => ({ density, setDensity }),\n [density, setDensity],\n );\n\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Provide a density value to descendants without owning the storage / setter.\n * Useful when a component (e.g. DataTable) already manages density via its\n * own state and just needs leaf cells like TagList to read the active value\n * via {@link useDensityValue}. Calls to `setDensity` from descendants are\n * ignored — the host component controls density externally.\n */\nexport function DensityValueProvider({\n density,\n children,\n}: {\n density: Density;\n children: ReactNode;\n}) {\n const value = useMemo<DensityContextValue>(() => ({ density, setDensity: () => {} }), [density]);\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":["createContext","useState","useEffect","useCallback","useMemo","jsx","useContext"],"mappings":";;;;AAiBA,MAAM,cAAc;AACpB,MAAM,YAAY;AAElB,MAAM,iBAAiBA,MAAAA,cAA0C,IAAI;AAErE,SAAS,aAA6B;AACpC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,WAAW;AACnD,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEA,SAAS,MAAM,SAAwB;AACrC,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAQO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,iBAAiB;AAAA,EACjB,aAAa;AACf,GAAyB;AACvB,QAAM,CAAC,SAAS,eAAe,IAAIC,MAAAA,SAAkB,MAAM;AACzD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,gBAAgB;AAAA,EACzB,CAAC;AAEDC,QAAAA,UAAU,MAAM;AACd,UAAM,OAAO;AACb,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,aAAaC,MAAAA,YAAY,CAAC,SAAkB,gBAAgB,IAAI,GAAG,EAAE;AAE3E,QAAM,QAAQC,MAAAA;AAAAA,IACZ,OAAO,EAAE,SAAS;IAClB,CAAC,SAAS,UAAU;AAAA,EAAA;AAGtB,SAAOC,2BAAAA,IAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAMC,MAAAA,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AASO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGG;AACD,QAAM,QAAQF,MAAAA,QAA6B,OAAO,EAAE,SAAS,YAAY,MAAM;AAAA,EAAC,EAAA,IAAM,CAAC,OAAO,CAAC;AAC/F,SAAOC,2BAAAA,IAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAMC,MAAAA,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;;;;;"}
1
+ {"version":3,"file":"use-density.cjs","sources":["../../src/hooks/use-density.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nexport const DENSITY_STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nexport const DensityContext = createContext<DensityContextValue | null>(null);\n\nexport function readStoredDensity(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nexport function applyDensity(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":["createContext","useContext"],"mappings":";;;AASO,MAAM,sBAAsB;AACnC,MAAM,YAAY;AAEX,MAAM,iBAAiBA,MAAAA,cAA0C,IAAI;AAErE,SAAS,oBAAoC;AAClD,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,mBAAmB;AAC3D,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEO,SAAS,aAAa,SAAwB;AACnD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAMC,MAAAA,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAMA,MAAAA,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;;;;;;;"}
@@ -1,27 +1,13 @@
1
- import { ReactNode } from 'react';
2
1
  export type Density = "compact" | "comfortable" | "spacious";
3
- type DensityContextValue = {
2
+ export type DensityContextValue = {
4
3
  density: Density;
5
4
  setDensity: (next: Density) => void;
6
5
  };
7
- export type DensityProviderProps = {
8
- children: ReactNode;
9
- defaultDensity?: Density;
10
- storageKey?: string;
11
- };
12
- export declare function DensityProvider({ children, defaultDensity, storageKey, }: DensityProviderProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare const DENSITY_STORAGE_KEY = "clicky-ui-density";
7
+ export declare const DensityContext: import('react').Context<DensityContextValue | null>;
8
+ export declare function readStoredDensity(): Density | null;
9
+ export declare function applyDensity(density: Density): void;
13
10
  export declare function useDensity(): DensityContextValue;
14
- /**
15
- * Provide a density value to descendants without owning the storage / setter.
16
- * Useful when a component (e.g. DataTable) already manages density via its
17
- * own state and just needs leaf cells like TagList to read the active value
18
- * via {@link useDensityValue}. Calls to `setDensity` from descendants are
19
- * ignored — the host component controls density externally.
20
- */
21
- export declare function DensityValueProvider({ density, children, }: {
22
- density: Density;
23
- children: ReactNode;
24
- }): import("react/jsx-runtime").JSX.Element;
25
11
  /**
26
12
  * Non-throwing density read. Returns the context value if a `<DensityProvider>`
27
13
  * is mounted, otherwise reads the current `data-density` attribute on
@@ -29,5 +15,4 @@ export declare function DensityValueProvider({ density, children, }: {
29
15
  * should respect density without requiring their host to mount a provider.
30
16
  */
31
17
  export declare function useDensityValue(): Density;
32
- export {};
33
18
  //# sourceMappingURL=use-density.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-density.d.ts","sourceRoot":"","sources":["../../src/hooks/use-density.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAE7D,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAkBF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAA8B,EAC9B,UAAwB,GACzB,EAAE,oBAAoB,2CAqBtB;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAIhD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAGA;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC"}
1
+ {"version":3,"file":"use-density.d.ts","sourceRoot":"","sources":["../../src/hooks/use-density.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAGvD,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAE9E,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,IAAI,CAIlD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGnD;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC"}
@@ -1,52 +1,21 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback, useMemo, useContext, createContext } from "react";
3
- const STORAGE_KEY = "clicky-ui-density";
1
+ import { useContext, createContext } from "react";
2
+ const DENSITY_STORAGE_KEY = "clicky-ui-density";
4
3
  const DATA_ATTR = "data-density";
5
4
  const DensityContext = createContext(null);
6
- function readStored() {
5
+ function readStoredDensity() {
7
6
  if (typeof window === "undefined") return null;
8
- const raw = window.localStorage.getItem(STORAGE_KEY);
7
+ const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);
9
8
  return raw === "compact" || raw === "comfortable" || raw === "spacious" ? raw : null;
10
9
  }
11
- function apply(density) {
10
+ function applyDensity(density) {
12
11
  if (typeof document === "undefined") return;
13
12
  document.documentElement.setAttribute(DATA_ATTR, density);
14
13
  }
15
- function DensityProvider({
16
- children,
17
- defaultDensity = "comfortable",
18
- storageKey = STORAGE_KEY
19
- }) {
20
- const [density, setDensityState] = useState(() => {
21
- if (typeof window === "undefined") return defaultDensity;
22
- return readStored() ?? defaultDensity;
23
- });
24
- useEffect(() => {
25
- apply(density);
26
- if (typeof window !== "undefined") {
27
- window.localStorage.setItem(storageKey, density);
28
- }
29
- }, [density, storageKey]);
30
- const setDensity = useCallback((next) => setDensityState(next), []);
31
- const value = useMemo(
32
- () => ({ density, setDensity }),
33
- [density, setDensity]
34
- );
35
- return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
36
- }
37
14
  function useDensity() {
38
15
  const ctx = useContext(DensityContext);
39
16
  if (!ctx) throw new Error("useDensity must be used inside <DensityProvider>");
40
17
  return ctx;
41
18
  }
42
- function DensityValueProvider({
43
- density,
44
- children
45
- }) {
46
- const value = useMemo(() => ({ density, setDensity: () => {
47
- } }), [density]);
48
- return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
49
- }
50
19
  function useDensityValue() {
51
20
  const ctx = useContext(DensityContext);
52
21
  if (ctx) return ctx.density;
@@ -55,8 +24,10 @@ function useDensityValue() {
55
24
  return raw === "compact" || raw === "spacious" ? raw : "comfortable";
56
25
  }
57
26
  export {
58
- DensityProvider,
59
- DensityValueProvider,
27
+ DENSITY_STORAGE_KEY,
28
+ DensityContext,
29
+ applyDensity,
30
+ readStoredDensity,
60
31
  useDensity,
61
32
  useDensityValue
62
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-density.js","sources":["../../src/hooks/use-density.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\ntype DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nconst STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nconst DensityContext = createContext<DensityContextValue | null>(null);\n\nfunction readStored(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nfunction apply(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport type DensityProviderProps = {\n children: ReactNode;\n defaultDensity?: Density;\n storageKey?: string;\n};\n\nexport function DensityProvider({\n children,\n defaultDensity = \"comfortable\",\n storageKey = STORAGE_KEY,\n}: DensityProviderProps) {\n const [density, setDensityState] = useState<Density>(() => {\n if (typeof window === \"undefined\") return defaultDensity;\n return readStored() ?? defaultDensity;\n });\n\n useEffect(() => {\n apply(density);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, density);\n }\n }, [density, storageKey]);\n\n const setDensity = useCallback((next: Density) => setDensityState(next), []);\n\n const value = useMemo<DensityContextValue>(\n () => ({ density, setDensity }),\n [density, setDensity],\n );\n\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Provide a density value to descendants without owning the storage / setter.\n * Useful when a component (e.g. DataTable) already manages density via its\n * own state and just needs leaf cells like TagList to read the active value\n * via {@link useDensityValue}. Calls to `setDensity` from descendants are\n * ignored — the host component controls density externally.\n */\nexport function DensityValueProvider({\n density,\n children,\n}: {\n density: Density;\n children: ReactNode;\n}) {\n const value = useMemo<DensityContextValue>(() => ({ density, setDensity: () => {} }), [density]);\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":[],"mappings":";;AAiBA,MAAM,cAAc;AACpB,MAAM,YAAY;AAElB,MAAM,iBAAiB,cAA0C,IAAI;AAErE,SAAS,aAA6B;AACpC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,WAAW;AACnD,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEA,SAAS,MAAM,SAAwB;AACrC,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAQO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,iBAAiB;AAAA,EACjB,aAAa;AACf,GAAyB;AACvB,QAAM,CAAC,SAAS,eAAe,IAAI,SAAkB,MAAM;AACzD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,gBAAgB;AAAA,EACzB,CAAC;AAED,YAAU,MAAM;AACd,UAAM,OAAO;AACb,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,aAAa,YAAY,CAAC,SAAkB,gBAAgB,IAAI,GAAG,EAAE;AAE3E,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,SAAS;IAClB,CAAC,SAAS,UAAU;AAAA,EAAA;AAGtB,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AASO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGG;AACD,QAAM,QAAQ,QAA6B,OAAO,EAAE,SAAS,YAAY,MAAM;AAAA,EAAC,EAAA,IAAM,CAAC,OAAO,CAAC;AAC/F,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;"}
1
+ {"version":3,"file":"use-density.js","sources":["../../src/hooks/use-density.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nexport const DENSITY_STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nexport const DensityContext = createContext<DensityContextValue | null>(null);\n\nexport function readStoredDensity(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nexport function applyDensity(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":[],"mappings":";AASO,MAAM,sBAAsB;AACnC,MAAM,YAAY;AAEX,MAAM,iBAAiB,cAA0C,IAAI;AAErE,SAAS,oBAAoC;AAClD,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,mBAAmB;AAC3D,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEO,SAAS,aAAa,SAAwB;AACnD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;"}
@@ -1,63 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
3
  const react = require("react");
5
- const STORAGE_KEY = "clicky-ui-theme";
4
+ const THEME_STORAGE_KEY = "clicky-ui-theme";
6
5
  const DATA_ATTR = "data-theme";
7
6
  const ThemeContext = react.createContext(null);
8
7
  function prefersDark() {
9
8
  if (typeof window === "undefined") return false;
10
9
  return window.matchMedia("(prefers-color-scheme: dark)").matches;
11
10
  }
12
- function readStored() {
11
+ function readStoredTheme() {
13
12
  if (typeof window === "undefined") return "system";
14
- const raw = window.localStorage.getItem(STORAGE_KEY);
13
+ const raw = window.localStorage.getItem(THEME_STORAGE_KEY);
15
14
  return raw === "light" || raw === "dark" || raw === "system" ? raw : "system";
16
15
  }
17
- function resolve(theme) {
16
+ function resolveTheme(theme) {
18
17
  if (theme === "system") return prefersDark() ? "dark" : "light";
19
18
  return theme;
20
19
  }
21
- function apply(resolved) {
20
+ function applyTheme(resolved) {
22
21
  if (typeof document === "undefined") return;
23
22
  document.documentElement.setAttribute(DATA_ATTR, resolved);
24
23
  }
25
- function ThemeProvider({
26
- children,
27
- defaultTheme = "system",
28
- storageKey = STORAGE_KEY
29
- }) {
30
- const [theme, setThemeState] = react.useState(() => {
31
- if (typeof window === "undefined") return defaultTheme;
32
- return readStored() ?? defaultTheme;
33
- });
34
- const [resolvedTheme, setResolvedTheme] = react.useState(() => resolve(theme));
35
- react.useEffect(() => {
36
- const next = resolve(theme);
37
- setResolvedTheme(next);
38
- apply(next);
39
- if (typeof window !== "undefined") {
40
- window.localStorage.setItem(storageKey, theme);
41
- }
42
- }, [theme, storageKey]);
43
- react.useEffect(() => {
44
- if (theme !== "system" || typeof window === "undefined") return;
45
- const mq = window.matchMedia("(prefers-color-scheme: dark)");
46
- const onChange = () => {
47
- const next = mq.matches ? "dark" : "light";
48
- setResolvedTheme(next);
49
- apply(next);
50
- };
51
- mq.addEventListener("change", onChange);
52
- return () => mq.removeEventListener("change", onChange);
53
- }, [theme]);
54
- const setTheme = react.useCallback((next) => setThemeState(next), []);
55
- const value = react.useMemo(
56
- () => ({ theme, resolvedTheme, setTheme }),
57
- [theme, resolvedTheme, setTheme]
58
- );
59
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value, children });
60
- }
61
24
  function useTheme() {
62
25
  const ctx = react.useContext(ThemeContext);
63
26
  if (!ctx) throw new Error("useTheme must be used inside <ThemeProvider>");
@@ -83,7 +46,11 @@ function useResolvedTheme(override) {
83
46
  if (ctx) return ctx.resolvedTheme;
84
47
  return systemResolved;
85
48
  }
86
- exports.ThemeProvider = ThemeProvider;
49
+ exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY;
50
+ exports.ThemeContext = ThemeContext;
51
+ exports.applyTheme = applyTheme;
52
+ exports.readStoredTheme = readStoredTheme;
53
+ exports.resolveTheme = resolveTheme;
87
54
  exports.useOptionalTheme = useOptionalTheme;
88
55
  exports.useResolvedTheme = useResolvedTheme;
89
56
  exports.useTheme = useTheme;
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme.cjs","sources":["../../src/hooks/use-theme.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\ntype ThemeContextValue = {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n setTheme: (next: Theme) => void;\n};\n\nconst STORAGE_KEY = \"clicky-ui-theme\";\nconst DATA_ATTR = \"data-theme\";\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nfunction prefersDark(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\nfunction readStored(): Theme {\n if (typeof window === \"undefined\") return \"system\";\n const raw = window.localStorage.getItem(STORAGE_KEY);\n return raw === \"light\" || raw === \"dark\" || raw === \"system\" ? raw : \"system\";\n}\n\nfunction resolve(theme: Theme): ResolvedTheme {\n if (theme === \"system\") return prefersDark() ? \"dark\" : \"light\";\n return theme;\n}\n\nfunction apply(resolved: ResolvedTheme): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, resolved);\n}\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return readStored() ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolve(theme));\n\n useEffect(() => {\n const next = resolve(theme);\n setResolvedTheme(next);\n apply(next);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, theme);\n }\n }, [theme, storageKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n const next: ResolvedTheme = mq.matches ? \"dark\" : \"light\";\n setResolvedTheme(next);\n apply(next);\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside <ThemeProvider>\");\n return ctx;\n}\n\nexport function useOptionalTheme(): ThemeContextValue | null {\n return useContext(ThemeContext);\n}\n\nexport function useResolvedTheme(override?: Theme): ResolvedTheme {\n const ctx = useOptionalTheme();\n const [systemResolved, setSystemResolved] = useState<ResolvedTheme>(() =>\n prefersDark() ? \"dark\" : \"light\",\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => setSystemResolved(mq.matches ? \"dark\" : \"light\");\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, []);\n\n if (override && override !== \"system\") return override;\n if (override === \"system\") return systemResolved;\n if (ctx) return ctx.resolvedTheme;\n return systemResolved;\n}\n"],"names":["createContext","useState","useEffect","useCallback","useMemo","jsx","useContext"],"mappings":";;;;AAmBA,MAAM,cAAc;AACpB,MAAM,YAAY;AAElB,MAAM,eAAeA,MAAAA,cAAwC,IAAI;AAEjE,SAAS,cAAuB;AAC9B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE;AAC3D;AAEA,SAAS,aAAoB;AAC3B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,WAAW;AACnD,SAAO,QAAQ,WAAW,QAAQ,UAAU,QAAQ,WAAW,MAAM;AACvE;AAEA,SAAS,QAAQ,OAA6B;AAC5C,MAAI,UAAU,SAAU,QAAO,YAAA,IAAgB,SAAS;AACxD,SAAO;AACT;AAEA,SAAS,MAAM,UAA+B;AAC5C,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,QAAQ;AAC3D;AAQO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AACf,GAAuB;AACrB,QAAM,CAAC,OAAO,aAAa,IAAIC,MAAAA,SAAgB,MAAM;AACnD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,gBAAgB;AAAA,EACzB,CAAC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAwB,MAAM,QAAQ,KAAK,CAAC;AAEtFC,QAAAA,UAAU,MAAM;AACd,UAAM,OAAO,QAAQ,KAAK;AAC1B,qBAAiB,IAAI;AACrB,UAAM,IAAI;AACV,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtBA,QAAAA,UAAU,MAAM;AACd,QAAI,UAAU,YAAY,OAAO,WAAW,YAAa;AACzD,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM;AACrB,YAAM,OAAsB,GAAG,UAAU,SAAS;AAClD,uBAAiB,IAAI;AACrB,YAAM,IAAI;AAAA,IACZ;AACA,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAWC,MAAAA,YAAY,CAAC,SAAgB,cAAc,IAAI,GAAG,EAAE;AAErE,QAAM,QAAQC,MAAAA;AAAAA,IACZ,OAAO,EAAE,OAAO,eAAe;IAC/B,CAAC,OAAO,eAAe,QAAQ;AAAA,EAAA;AAGjC,SAAOC,2BAAAA,IAAC,aAAa,UAAb,EAAsB,OAAe,SAAA,CAAS;AACxD;AAEO,SAAS,WAA8B;AAC5C,QAAM,MAAMC,MAAAA,WAAW,YAAY;AACnC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8CAA8C;AACxE,SAAO;AACT;AAEO,SAAS,mBAA6C;AAC3D,SAAOA,MAAAA,WAAW,YAAY;AAChC;AAEO,SAAS,iBAAiB,UAAiC;AAChE,QAAM,MAAM,iBAAA;AACZ,QAAM,CAAC,gBAAgB,iBAAiB,IAAIL,MAAAA;AAAAA,IAAwB,MAClE,YAAA,IAAgB,SAAS;AAAA,EAAA;AAG3BC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM,kBAAkB,GAAG,UAAU,SAAS,OAAO;AACtE,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAA,CAAE;AAEL,MAAI,YAAY,aAAa,SAAU,QAAO;AAC9C,MAAI,aAAa,SAAU,QAAO;AAClC,MAAI,YAAY,IAAI;AACpB,SAAO;AACT;;;;;"}
1
+ {"version":3,"file":"use-theme.cjs","sources":["../../src/hooks/use-theme.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState } from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\nexport type ThemeContextValue = {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n setTheme: (next: Theme) => void;\n};\n\nexport const THEME_STORAGE_KEY = \"clicky-ui-theme\";\nconst DATA_ATTR = \"data-theme\";\n\nexport const ThemeContext = createContext<ThemeContextValue | null>(null);\n\nfunction prefersDark(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\nexport function readStoredTheme(): Theme {\n if (typeof window === \"undefined\") return \"system\";\n const raw = window.localStorage.getItem(THEME_STORAGE_KEY);\n return raw === \"light\" || raw === \"dark\" || raw === \"system\" ? raw : \"system\";\n}\n\nexport function resolveTheme(theme: Theme): ResolvedTheme {\n if (theme === \"system\") return prefersDark() ? \"dark\" : \"light\";\n return theme;\n}\n\nexport function applyTheme(resolved: ResolvedTheme): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, resolved);\n}\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside <ThemeProvider>\");\n return ctx;\n}\n\nexport function useOptionalTheme(): ThemeContextValue | null {\n return useContext(ThemeContext);\n}\n\nexport function useResolvedTheme(override?: Theme): ResolvedTheme {\n const ctx = useOptionalTheme();\n const [systemResolved, setSystemResolved] = useState<ResolvedTheme>(() =>\n prefersDark() ? \"dark\" : \"light\",\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => setSystemResolved(mq.matches ? \"dark\" : \"light\");\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, []);\n\n if (override && override !== \"system\") return override;\n if (override === \"system\") return systemResolved;\n if (ctx) return ctx.resolvedTheme;\n return systemResolved;\n}\n"],"names":["createContext","useContext","useState","useEffect"],"mappings":";;;AAWO,MAAM,oBAAoB;AACjC,MAAM,YAAY;AAEX,MAAM,eAAeA,MAAAA,cAAwC,IAAI;AAExE,SAAS,cAAuB;AAC9B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE;AAC3D;AAEO,SAAS,kBAAyB;AACvC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,iBAAiB;AACzD,SAAO,QAAQ,WAAW,QAAQ,UAAU,QAAQ,WAAW,MAAM;AACvE;AAEO,SAAS,aAAa,OAA6B;AACxD,MAAI,UAAU,SAAU,QAAO,YAAA,IAAgB,SAAS;AACxD,SAAO;AACT;AAEO,SAAS,WAAW,UAA+B;AACxD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,QAAQ;AAC3D;AAEO,SAAS,WAA8B;AAC5C,QAAM,MAAMC,MAAAA,WAAW,YAAY;AACnC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8CAA8C;AACxE,SAAO;AACT;AAEO,SAAS,mBAA6C;AAC3D,SAAOA,MAAAA,WAAW,YAAY;AAChC;AAEO,SAAS,iBAAiB,UAAiC;AAChE,QAAM,MAAM,iBAAA;AACZ,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,MAAAA;AAAAA,IAAwB,MAClE,YAAA,IAAgB,SAAS;AAAA,EAAA;AAG3BC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM,kBAAkB,GAAG,UAAU,SAAS,OAAO;AACtE,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAA,CAAE;AAEL,MAAI,YAAY,aAAa,SAAU,QAAO;AAC9C,MAAI,aAAa,SAAU,QAAO;AAClC,MAAI,YAAY,IAAI;AACpB,SAAO;AACT;;;;;;;;;"}
@@ -1,19 +1,16 @@
1
- import { ReactNode } from 'react';
2
1
  export type Theme = "light" | "dark" | "system";
3
2
  export type ResolvedTheme = "light" | "dark";
4
- type ThemeContextValue = {
3
+ export type ThemeContextValue = {
5
4
  theme: Theme;
6
5
  resolvedTheme: ResolvedTheme;
7
6
  setTheme: (next: Theme) => void;
8
7
  };
9
- export type ThemeProviderProps = {
10
- children: ReactNode;
11
- defaultTheme?: Theme;
12
- storageKey?: string;
13
- };
14
- export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare const THEME_STORAGE_KEY = "clicky-ui-theme";
9
+ export declare const ThemeContext: import('react').Context<ThemeContextValue | null>;
10
+ export declare function readStoredTheme(): Theme;
11
+ export declare function resolveTheme(theme: Theme): ResolvedTheme;
12
+ export declare function applyTheme(resolved: ResolvedTheme): void;
15
13
  export declare function useTheme(): ThemeContextValue;
16
14
  export declare function useOptionalTheme(): ThemeContextValue | null;
17
15
  export declare function useResolvedTheme(override?: Theme): ResolvedTheme;
18
- export {};
19
16
  //# sourceMappingURL=use-theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AA4BF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAAwB,GACzB,EAAE,kBAAkB,2CAoCpB;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAED,wBAAgB,gBAAgB,IAAI,iBAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,aAAa,CAkBhE"}
1
+ {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAGnD,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAO1E,wBAAgB,eAAe,IAAI,KAAK,CAIvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAGxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGxD;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAED,wBAAgB,gBAAgB,IAAI,iBAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,aAAa,CAkBhE"}