@cascivo/react 1.1.0 → 1.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 (306) hide show
  1. package/dist/accordion/accordion.js +1 -1
  2. package/dist/action-sheet/action-sheet.js +1 -1
  3. package/dist/alert/alert.js +1 -1
  4. package/dist/alert-dialog/alert-dialog.js +1 -1
  5. package/dist/app-shell/app-shell.css +1 -1
  6. package/dist/app-shell/app-shell.js +1 -1
  7. package/dist/app-shell/app-shell.module.js +1 -1
  8. package/dist/aspect-ratio/aspect-ratio.js +1 -1
  9. package/dist/avatar/avatar.js +1 -1
  10. package/dist/avatar-group/avatar-group.js +1 -1
  11. package/dist/badge/badge.js +1 -1
  12. package/dist/blockquote/blockquote.js +1 -1
  13. package/dist/bottom-sheet/bottom-sheet.js +1 -1
  14. package/dist/brand/logo/logo.js +1 -1
  15. package/dist/breadcrumb/breadcrumb.js +1 -1
  16. package/dist/button/button.css +1 -1
  17. package/dist/button/button.module.js +1 -1
  18. package/dist/button-group/button-group.js +1 -1
  19. package/dist/calendar/calendar-date.js +1 -1
  20. package/dist/calendar/calendar.js +1 -1
  21. package/dist/card/card.js +1 -1
  22. package/dist/carousel/carousel.js +1 -1
  23. package/dist/chat-bubble/chat-bubble.js +1 -1
  24. package/dist/code/code.js +1 -1
  25. package/dist/code-snippet/code-snippet.js +2 -2
  26. package/dist/code-snippet/highlight.js +1 -1
  27. package/dist/collapsible/collapsible.js +1 -1
  28. package/dist/color-picker/color-picker.js +1 -1
  29. package/dist/color-picker/color.js +1 -1
  30. package/dist/combobox/combobox.js +1 -1
  31. package/dist/combobox/list-nav.js +1 -1
  32. package/dist/combobox/option-list.js +1 -1
  33. package/dist/command-menu/command-menu.js +1 -1
  34. package/dist/comparison/comparison.js +1 -1
  35. package/dist/contained-list/contained-list.js +1 -1
  36. package/dist/context-menu/context-menu.js +1 -1
  37. package/dist/data-list/data-list.js +1 -1
  38. package/dist/data-table/column-filter.js +1 -1
  39. package/dist/data-table/column-layout.js +1 -1
  40. package/dist/data-table/data-table.js +1 -1
  41. package/dist/data-table/grid-keys.js +1 -1
  42. package/dist/data-table/row-group.js +1 -1
  43. package/dist/data-table/row-search.js +1 -1
  44. package/dist/data-table/row-sort.js +1 -1
  45. package/dist/data-table/to-csv.js +2 -2
  46. package/dist/data-table/virtual-window.js +1 -1
  47. package/dist/date-picker/date-picker.js +1 -1
  48. package/dist/date-picker/parse-date.js +1 -1
  49. package/dist/date-range-picker/date-range-picker.js +1 -1
  50. package/dist/dock/dock.js +1 -1
  51. package/dist/drawer/drawer.js +1 -1
  52. package/dist/dropdown/dropdown.js +1 -1
  53. package/dist/editable/editable.js +1 -1
  54. package/dist/empty-state/empty-state.js +1 -1
  55. package/dist/fab/fab.js +1 -1
  56. package/dist/field/field.js +1 -1
  57. package/dist/file-uploader/file-uploader.js +1 -1
  58. package/dist/filter/filter.js +1 -1
  59. package/dist/form/form.js +1 -1
  60. package/dist/header/header.js +1 -1
  61. package/dist/header-panel/header-panel.js +1 -1
  62. package/dist/heading/heading.js +1 -1
  63. package/dist/hover-card/hover-card.js +1 -1
  64. package/dist/image/image.js +1 -1
  65. package/dist/index.d.ts +749 -13
  66. package/dist/indicator/indicator.js +1 -1
  67. package/dist/infinite-scroll/infinite-scroll.js +1 -1
  68. package/dist/inline-loading/inline-loading.js +1 -1
  69. package/dist/input-group/input-group.js +1 -1
  70. package/dist/item/item.js +1 -1
  71. package/dist/join/join.js +1 -1
  72. package/dist/kbd/kbd.js +1 -1
  73. package/dist/label/label.js +1 -1
  74. package/dist/large-title-header/large-title-header.js +1 -1
  75. package/dist/layouts/src/auto-grid/auto-grid.js +1 -1
  76. package/dist/layouts/src/center/center.js +1 -1
  77. package/dist/layouts/src/columns/columns.js +1 -1
  78. package/dist/layouts/src/flex/flex.css +1 -1
  79. package/dist/layouts/src/flex/flex.js +1 -1
  80. package/dist/layouts/src/flex/flex.module.js +1 -1
  81. package/dist/layouts/src/grid/grid.js +1 -1
  82. package/dist/layouts/src/page-header/page-header.js +1 -1
  83. package/dist/layouts/src/spacer/spacer.js +1 -1
  84. package/dist/list/list.js +1 -1
  85. package/dist/log-viewer/log-viewer.css +1 -1
  86. package/dist/log-viewer/log-viewer.js +2 -2
  87. package/dist/log-viewer/log-viewer.module.js +1 -1
  88. package/dist/menu/menu.js +1 -1
  89. package/dist/menu-button/menu-button.js +1 -1
  90. package/dist/menubar/menubar.js +1 -1
  91. package/dist/modal/modal.js +1 -1
  92. package/dist/multi-select/list-nav.js +1 -1
  93. package/dist/multi-select/multi-select.js +1 -1
  94. package/dist/multi-select/option-list.js +1 -1
  95. package/dist/navigation-menu/navigation-menu.js +1 -1
  96. package/dist/node/accordion/accordion.js +1 -1
  97. package/dist/node/action-sheet/action-sheet.js +1 -1
  98. package/dist/node/alert/alert.js +1 -1
  99. package/dist/node/alert-dialog/alert-dialog.js +1 -1
  100. package/dist/node/app-shell/app-shell.js +1 -1
  101. package/dist/node/app-shell/app-shell.module.js +1 -1
  102. package/dist/node/aspect-ratio/aspect-ratio.js +1 -1
  103. package/dist/node/avatar/avatar.js +1 -1
  104. package/dist/node/avatar-group/avatar-group.js +1 -1
  105. package/dist/node/badge/badge.js +1 -1
  106. package/dist/node/blockquote/blockquote.js +1 -1
  107. package/dist/node/bottom-sheet/bottom-sheet.js +1 -1
  108. package/dist/node/brand/logo/logo.js +1 -1
  109. package/dist/node/breadcrumb/breadcrumb.js +1 -1
  110. package/dist/node/button/button.module.js +1 -1
  111. package/dist/node/button-group/button-group.js +1 -1
  112. package/dist/node/calendar/calendar-date.js +1 -1
  113. package/dist/node/calendar/calendar.js +1 -1
  114. package/dist/node/card/card.js +1 -1
  115. package/dist/node/carousel/carousel.js +1 -1
  116. package/dist/node/chat-bubble/chat-bubble.js +1 -1
  117. package/dist/node/code/code.js +1 -1
  118. package/dist/node/code-snippet/code-snippet.js +2 -2
  119. package/dist/node/code-snippet/highlight.js +1 -1
  120. package/dist/node/collapsible/collapsible.js +1 -1
  121. package/dist/node/color-picker/color-picker.js +1 -1
  122. package/dist/node/color-picker/color.js +1 -1
  123. package/dist/node/combobox/combobox.js +1 -1
  124. package/dist/node/combobox/list-nav.js +1 -1
  125. package/dist/node/combobox/option-list.js +1 -1
  126. package/dist/node/command-menu/command-menu.js +1 -1
  127. package/dist/node/comparison/comparison.js +1 -1
  128. package/dist/node/contained-list/contained-list.js +1 -1
  129. package/dist/node/context-menu/context-menu.js +1 -1
  130. package/dist/node/data-list/data-list.js +1 -1
  131. package/dist/node/data-table/column-filter.js +1 -1
  132. package/dist/node/data-table/column-layout.js +1 -1
  133. package/dist/node/data-table/data-table.js +1 -1
  134. package/dist/node/data-table/grid-keys.js +1 -1
  135. package/dist/node/data-table/row-group.js +1 -1
  136. package/dist/node/data-table/row-search.js +1 -1
  137. package/dist/node/data-table/row-sort.js +1 -1
  138. package/dist/node/data-table/to-csv.js +2 -2
  139. package/dist/node/data-table/virtual-window.js +1 -1
  140. package/dist/node/date-picker/date-picker.js +1 -1
  141. package/dist/node/date-picker/parse-date.js +1 -1
  142. package/dist/node/date-range-picker/date-range-picker.js +1 -1
  143. package/dist/node/dock/dock.js +1 -1
  144. package/dist/node/drawer/drawer.js +1 -1
  145. package/dist/node/dropdown/dropdown.js +1 -1
  146. package/dist/node/editable/editable.js +1 -1
  147. package/dist/node/empty-state/empty-state.js +1 -1
  148. package/dist/node/fab/fab.js +1 -1
  149. package/dist/node/field/field.js +1 -1
  150. package/dist/node/file-uploader/file-uploader.js +1 -1
  151. package/dist/node/filter/filter.js +1 -1
  152. package/dist/node/form/form.js +1 -1
  153. package/dist/node/header/header.js +1 -1
  154. package/dist/node/header-panel/header-panel.js +1 -1
  155. package/dist/node/heading/heading.js +1 -1
  156. package/dist/node/hover-card/hover-card.js +1 -1
  157. package/dist/node/image/image.js +1 -1
  158. package/dist/node/indicator/indicator.js +1 -1
  159. package/dist/node/infinite-scroll/infinite-scroll.js +1 -1
  160. package/dist/node/inline-loading/inline-loading.js +1 -1
  161. package/dist/node/input-group/input-group.js +1 -1
  162. package/dist/node/item/item.js +1 -1
  163. package/dist/node/join/join.js +1 -1
  164. package/dist/node/kbd/kbd.js +1 -1
  165. package/dist/node/label/label.js +1 -1
  166. package/dist/node/large-title-header/large-title-header.js +1 -1
  167. package/dist/node/layouts/src/auto-grid/auto-grid.js +1 -1
  168. package/dist/node/layouts/src/center/center.js +1 -1
  169. package/dist/node/layouts/src/columns/columns.js +1 -1
  170. package/dist/node/layouts/src/flex/flex.js +1 -1
  171. package/dist/node/layouts/src/flex/flex.module.js +1 -1
  172. package/dist/node/layouts/src/grid/grid.js +1 -1
  173. package/dist/node/layouts/src/page-header/page-header.js +1 -1
  174. package/dist/node/layouts/src/spacer/spacer.js +1 -1
  175. package/dist/node/list/list.js +1 -1
  176. package/dist/node/log-viewer/log-viewer.js +2 -2
  177. package/dist/node/log-viewer/log-viewer.module.js +1 -1
  178. package/dist/node/menu/menu.js +1 -1
  179. package/dist/node/menu-button/menu-button.js +1 -1
  180. package/dist/node/menubar/menubar.js +1 -1
  181. package/dist/node/modal/modal.js +1 -1
  182. package/dist/node/multi-select/list-nav.js +1 -1
  183. package/dist/node/multi-select/multi-select.js +1 -1
  184. package/dist/node/multi-select/option-list.js +1 -1
  185. package/dist/node/navigation-menu/navigation-menu.js +1 -1
  186. package/dist/node/notification/notification.js +1 -1
  187. package/dist/node/number-input/number-input.js +1 -1
  188. package/dist/node/otp-input/otp-input.js +1 -1
  189. package/dist/node/overflow-menu/overflow-menu.js +1 -1
  190. package/dist/node/pagination/pagination.js +1 -1
  191. package/dist/node/password-input/password-input.js +1 -1
  192. package/dist/node/popover/popover.js +1 -1
  193. package/dist/node/popover/use-popover.js +1 -1
  194. package/dist/node/progress/progress.js +1 -1
  195. package/dist/node/progress-bar/progress-bar.js +1 -1
  196. package/dist/node/progress-circle/progress-circle.js +1 -1
  197. package/dist/node/progress-indicator/progress-indicator.js +1 -1
  198. package/dist/node/prose/prose.js +1 -1
  199. package/dist/node/pull-to-refresh/pull-to-refresh.js +1 -1
  200. package/dist/node/qr-code/encode.js +1 -1
  201. package/dist/node/qr-code/qr-code.js +1 -1
  202. package/dist/node/radial-progress/radial-progress.js +1 -1
  203. package/dist/node/radio/radio.js +1 -1
  204. package/dist/node/radio-card/radio-card.js +1 -1
  205. package/dist/node/rating-group/rating-group.js +1 -1
  206. package/dist/node/react/src/index.js +1 -1
  207. package/dist/node/relative-time/relative-time.js +1 -1
  208. package/dist/node/reorder-list/reorder-list.js +1 -1
  209. package/dist/node/resizable/resizable.js +1 -1
  210. package/dist/node/scroll-area/scroll-area.js +1 -1
  211. package/dist/node/search/search.js +1 -1
  212. package/dist/node/segmented-control/segmented-control.js +1 -1
  213. package/dist/node/separator/separator.js +1 -1
  214. package/dist/node/sheet/sheet.js +1 -1
  215. package/dist/node/shell-header/shell-header.js +1 -1
  216. package/dist/node/side-nav/side-nav.js +1 -1
  217. package/dist/node/side-nav/side-nav.module.js +1 -1
  218. package/dist/node/skeleton/skeleton.js +1 -1
  219. package/dist/node/skip-nav/skip-nav.js +1 -1
  220. package/dist/node/spinner/spinner.js +1 -1
  221. package/dist/node/stack/stack.js +1 -1
  222. package/dist/node/stat/stat.js +1 -1
  223. package/dist/node/status/status.js +1 -1
  224. package/dist/node/steps/steps.js +1 -1
  225. package/dist/node/structured-list/structured-list.js +1 -1
  226. package/dist/node/swap/swap.js +1 -1
  227. package/dist/node/swipe-item/swipe-item.js +1 -1
  228. package/dist/node/switcher/switcher.js +1 -1
  229. package/dist/node/tabs/tabs.js +1 -1
  230. package/dist/node/tag/tag.js +1 -1
  231. package/dist/node/tags-input/tags-input.js +1 -1
  232. package/dist/node/text/text.js +1 -1
  233. package/dist/node/tile/tile.js +1 -1
  234. package/dist/node/timeline/timeline.js +1 -1
  235. package/dist/node/toast/toast.js +1 -1
  236. package/dist/node/toc/toc.js +1 -1
  237. package/dist/node/toc/use-toc-from-region.js +1 -1
  238. package/dist/node/toggle-group/toggle-group.js +1 -1
  239. package/dist/node/toggletip/toggletip.js +1 -1
  240. package/dist/node/tooltip/tooltip.js +1 -1
  241. package/dist/node/tree-view/tree-view.js +1 -1
  242. package/dist/node/user/user.js +1 -1
  243. package/dist/node/virtual-list/virtual-list.js +1 -1
  244. package/dist/node/wheel-picker/wheel-picker.js +1 -1
  245. package/dist/notification/notification.js +1 -1
  246. package/dist/number-input/number-input.js +1 -1
  247. package/dist/otp-input/otp-input.js +1 -1
  248. package/dist/overflow-menu/overflow-menu.js +1 -1
  249. package/dist/pagination/pagination.js +1 -1
  250. package/dist/password-input/password-input.js +1 -1
  251. package/dist/popover/popover.js +1 -1
  252. package/dist/popover/use-popover.js +1 -1
  253. package/dist/progress/progress.js +1 -1
  254. package/dist/progress-bar/progress-bar.js +1 -1
  255. package/dist/progress-circle/progress-circle.js +1 -1
  256. package/dist/progress-indicator/progress-indicator.js +1 -1
  257. package/dist/prose/prose.js +1 -1
  258. package/dist/pull-to-refresh/pull-to-refresh.js +1 -1
  259. package/dist/qr-code/encode.js +1 -1
  260. package/dist/qr-code/qr-code.js +1 -1
  261. package/dist/radial-progress/radial-progress.js +1 -1
  262. package/dist/radio/radio.js +1 -1
  263. package/dist/radio-card/radio-card.js +1 -1
  264. package/dist/rating-group/rating-group.js +1 -1
  265. package/dist/react/src/index.js +1 -1
  266. package/dist/relative-time/relative-time.js +1 -1
  267. package/dist/reorder-list/reorder-list.js +1 -1
  268. package/dist/resizable/resizable.js +1 -1
  269. package/dist/scroll-area/scroll-area.js +1 -1
  270. package/dist/search/search.js +1 -1
  271. package/dist/segmented-control/segmented-control.js +1 -1
  272. package/dist/separator/separator.js +1 -1
  273. package/dist/sheet/sheet.js +1 -1
  274. package/dist/shell-header/shell-header.js +1 -1
  275. package/dist/side-nav/side-nav.css +1 -1
  276. package/dist/side-nav/side-nav.js +1 -1
  277. package/dist/side-nav/side-nav.module.js +1 -1
  278. package/dist/skeleton/skeleton.js +1 -1
  279. package/dist/skip-nav/skip-nav.js +1 -1
  280. package/dist/spinner/spinner.js +1 -1
  281. package/dist/stack/stack.js +1 -1
  282. package/dist/stat/stat.js +1 -1
  283. package/dist/status/status.js +1 -1
  284. package/dist/steps/steps.js +1 -1
  285. package/dist/structured-list/structured-list.js +1 -1
  286. package/dist/styles.css +10 -6
  287. package/dist/swap/swap.js +1 -1
  288. package/dist/swipe-item/swipe-item.js +1 -1
  289. package/dist/switcher/switcher.js +1 -1
  290. package/dist/tabs/tabs.js +1 -1
  291. package/dist/tag/tag.js +1 -1
  292. package/dist/tags-input/tags-input.js +1 -1
  293. package/dist/text/text.js +1 -1
  294. package/dist/tile/tile.js +1 -1
  295. package/dist/timeline/timeline.js +1 -1
  296. package/dist/toast/toast.js +1 -1
  297. package/dist/toc/toc.js +1 -1
  298. package/dist/toc/use-toc-from-region.js +1 -1
  299. package/dist/toggle-group/toggle-group.js +1 -1
  300. package/dist/toggletip/toggletip.js +1 -1
  301. package/dist/tooltip/tooltip.js +1 -1
  302. package/dist/tree-view/tree-view.js +1 -1
  303. package/dist/user/user.js +1 -1
  304. package/dist/virtual-list/virtual-list.js +1 -1
  305. package/dist/wheel-picker/wheel-picker.js +1 -1
  306. package/package.json +4 -4
@@ -1 +1 @@
1
- "use client";import e from"./toast.module.js";import{useRef as t}from"react";import{createMachine as n,signal as r,useMachine as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";var f=5e3,p=160,m=0,h=r([]);function g(e){h.value=[...h.value,{id:m++,...e}]}function _(e){h.value=h.value.filter(t=>t.id!==e)}function v({children:t}){o();let n=h.value.slice(-3);return d(l,{children:[t,u(`div`,{className:e.viewport,role:`region`,"aria-label":c(s.toast.region),children:n.map(e=>u(b,{toast:e,onDismiss:()=>_(e.id)},e.id))})]})}var y=n({initial:`visible`,states:{visible:{on:{DISMISS:`dismissing`}},dismissing:{on:{END:`gone`}}}});function b({toast:n,onDismiss:r}){o();let[l,m]=i(y),h=t(r);h.current=r;let g=n.duration??f,_=n.variant===`destructive`;return a(()=>{let e=l.value;if(e===`visible`){let e=setTimeout(()=>m(`DISMISS`),g);return()=>clearTimeout(e)}if(e===`dismissing`){let e=setTimeout(()=>h.current(),p);return()=>clearTimeout(e)}}),d(`div`,{role:_?`alert`:`status`,"aria-live":_?`assertive`:`polite`,"data-variant":n.variant??`default`,"data-state":l.value,className:e.toast,children:[d(`div`,{className:e.body,children:[u(`div`,{className:e.title,children:n.title}),n.description&&u(`div`,{className:e.description,children:n.description})]}),u(`button`,{type:`button`,className:e.close,"aria-label":c(s.toast.dismiss),onClick:()=>m(`DISMISS`),children:`✕`})]})}function x(){return{toast:g}}function S(){h.value=[]}export{v as ToastProvider,S as dismissAllToasts,x as useToast};
1
+ "use client";import e from"./toast.module.js";import{useRef as t}from"react";import{createMachine as n,signal as r,useMachine as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";var f=5e3,p=160,m=0,h=r([]);function enqueue(e){h.value=[...h.value,{id:m++,...e}]}function dequeue(e){h.value=h.value.filter(t=>t.id!==e)}function ToastProvider({children:t}){o();let n=h.value.slice(-3);return d(l,{children:[t,u(`div`,{className:e.viewport,role:`region`,"aria-label":c(s.toast.region),children:n.map(e=>u(ToastItem,{toast:e,onDismiss:()=>dequeue(e.id)},e.id))})]})}var g=n({initial:`visible`,states:{visible:{on:{DISMISS:`dismissing`}},dismissing:{on:{END:`gone`}}}});function ToastItem({toast:n,onDismiss:r}){o();let[l,m]=i(g),h=t(r);h.current=r;let _=n.duration??f,v=n.variant===`destructive`;return a(()=>{let e=l.value;if(e===`visible`){let e=setTimeout(()=>m(`DISMISS`),_);return()=>clearTimeout(e)}if(e===`dismissing`){let e=setTimeout(()=>h.current(),p);return()=>clearTimeout(e)}}),d(`div`,{role:v?`alert`:`status`,"aria-live":v?`assertive`:`polite`,"data-variant":n.variant??`default`,"data-state":l.value,className:e.toast,children:[d(`div`,{className:e.body,children:[u(`div`,{className:e.title,children:n.title}),n.description&&u(`div`,{className:e.description,children:n.description})]}),u(`button`,{type:`button`,className:e.close,"aria-label":c(s.toast.dismiss),onClick:()=>m(`DISMISS`),children:`✕`})]})}function useToast(){return{toast:enqueue}}function dismissAllToasts(){h.value=[]}export{ToastProvider,dismissAllToasts,useToast};
package/dist/toc/toc.js CHANGED
@@ -1 +1 @@
1
- "use client";import e from"./toc.module.js";import{useRef as t}from"react";import{cn as n,useControllableSignal as r,useSignalEffect as i,useSignals as a}from"@cascivo/core";import{builtin as o,t as s}from"@cascivo/i18n";import{jsx as c}from"react/jsx-runtime";function l({items:l,activeId:u,onActiveChange:d,labels:f,className:p}){a();let m=u!==void 0,[h]=r({value:u,defaultValue:l[0]?.id??``}),g=t(d);return g.current=d,i(()=>{if(m||typeof document>`u`||typeof IntersectionObserver>`u`)return;let e=l.map(e=>document.getElementById(e.id)).filter(e=>e!==null);if(e.length===0)return;let t=new Set,n=new IntersectionObserver(e=>{for(let n of e)n.isIntersecting?t.add(n.target.id):t.delete(n.target.id);let n=l.find(e=>t.has(e.id));n&&n.id!==h.value&&(h.value=n.id,g.current?.(n.id))},{rootMargin:`0px 0px -70% 0px`,threshold:0});for(let t of e)n.observe(t);return()=>n.disconnect()}),c(`nav`,{"aria-label":f?.nav??s(o.toc.nav),className:n(e.toc,p),children:c(`ol`,{children:l.map(e=>c(`li`,{style:{"--toc-level":e.level??2},children:c(`a`,{href:`#${e.id}`,"aria-current":e.id===h.value?`location`:void 0,children:e.label})},e.id))})})}export{l as Toc};
1
+ "use client";import e from"./toc.module.js";import{useRef as t}from"react";import{cn as n,useControllableSignal as r,useSignalEffect as i,useSignals as a}from"@cascivo/core";import{builtin as o,t as s}from"@cascivo/i18n";import{jsx as c}from"react/jsx-runtime";function Toc({items:l,activeId:u,onActiveChange:d,labels:f,className:p}){a();let m=u!==void 0,[h]=r({value:u,defaultValue:l[0]?.id??``}),g=t(d);return g.current=d,i(()=>{if(m||typeof document>`u`||typeof IntersectionObserver>`u`)return;let e=l.map(e=>document.getElementById(e.id)).filter(e=>e!==null);if(e.length===0)return;let t=new Set,n=new IntersectionObserver(e=>{for(let n of e)n.isIntersecting?t.add(n.target.id):t.delete(n.target.id);let n=l.find(e=>t.has(e.id));n&&n.id!==h.value&&(h.value=n.id,g.current?.(n.id))},{rootMargin:`0px 0px -70% 0px`,threshold:0});for(let t of e)n.observe(t);return()=>n.disconnect()}),c(`nav`,{"aria-label":f?.nav??s(o.toc.nav),className:n(e.toc,p),children:c(`ol`,{children:l.map(e=>c(`li`,{style:{"--toc-level":e.level??2},children:c(`a`,{href:`#${e.id}`,"aria-current":e.id===h.value?`location`:void 0,children:e.label})},e.id))})})}export{Toc};
@@ -1 +1 @@
1
- "use client";import{useSignal as e,useSignalEffect as t,useSignals as n}from"@cascivo/core";function r(r,i={}){n();let a=i.selector??`h2, h3, h4`,o=e([]);return t(()=>{let e=r.current;e&&(o.value=Array.from(e.querySelectorAll(a)).filter(e=>e.id!==``).map(e=>({id:e.id,label:e.textContent?.trim()??``,level:Number(e.tagName.slice(1))||2})))}),o}export{r as useTocFromRegion};
1
+ "use client";import{useSignal as e,useSignalEffect as t,useSignals as n}from"@cascivo/core";function useTocFromRegion(r,i={}){n();let a=i.selector??`h2, h3, h4`,o=e([]);return t(()=>{let e=r.current;e&&(o.value=Array.from(e.querySelectorAll(a)).filter(e=>e.id!==``).map(e=>({id:e.id,label:e.textContent?.trim()??``,level:Number(e.tagName.slice(1))||2})))}),o}export{useTocFromRegion};
@@ -1 +1 @@
1
- "use client";import e from"./toggle-group.module.js";import{forwardRef as t}from"react";import{cn as n,useControllableSignal as r,useRovingFocus as i,useSignals as a}from"@cascivo/core";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e,t){return Array.isArray(e)?e.includes(t):e===t}var l=t(function({type:t,value:l,defaultValue:u,onValueChange:d,items:f,orientation:p=`horizontal`,size:m=`md`,disabled:h=!1,className:g,..._},v){a();let[y,b]=r({value:l,defaultValue:u??(t===`multiple`?[]:``),onChange:d}),x=i({orientation:p,loop:!0}),S=e=>{let n=y.value;if(t===`multiple`){let t=Array.isArray(n)?n:[];b(t.includes(e)?t.filter(t=>t!==e):[...t,e])}else b(n===e?``:e)};return o(`div`,{role:t===`single`?`radiogroup`:`group`,"data-orientation":p,"data-size":m,className:n(e.toggleGroup,g),ref:v,..._,children:f.map((n,r)=>{let i=c(y.value,n.value),a=h||n.disabled,{ref:l,...u}=x.getItemProps(r);return s(`button`,{type:`button`,...t===`single`?{role:`radio`,"aria-checked":i}:{"aria-pressed":i},...u,ref:l,"data-state":i?`on`:`off`,disabled:a,"aria-label":n.icon&&!n.label?n.value:void 0,className:e.item,onClick:()=>S(n.value),children:[n.icon,n.label&&o(`span`,{children:n.label})]},n.value)})})});export{l as ToggleGroup};
1
+ "use client";import e from"./toggle-group.module.js";import{forwardRef as t}from"react";import{cn as n,useControllableSignal as r,useRovingFocus as i,useSignals as a}from"@cascivo/core";import{jsx as o,jsxs as s}from"react/jsx-runtime";function isSelected(e,t){return Array.isArray(e)?e.includes(t):e===t}var c=t(function({type:t,value:c,defaultValue:l,onValueChange:u,items:d,orientation:f=`horizontal`,size:p=`md`,disabled:m=!1,className:h,...g},_){a();let[v,y]=r({value:c,defaultValue:l??(t===`multiple`?[]:``),onChange:u}),b=i({orientation:f,loop:!0}),toggle=e=>{let n=v.value;if(t===`multiple`){let t=Array.isArray(n)?n:[];y(t.includes(e)?t.filter(t=>t!==e):[...t,e])}else y(n===e?``:e)};return o(`div`,{role:t===`single`?`radiogroup`:`group`,"data-orientation":f,"data-size":p,className:n(e.toggleGroup,h),ref:_,...g,children:d.map((n,r)=>{let i=isSelected(v.value,n.value),a=m||n.disabled,{ref:c,...l}=b.getItemProps(r);return s(`button`,{type:`button`,...t===`single`?{role:`radio`,"aria-checked":i}:{"aria-pressed":i},...l,ref:c,"data-state":i?`on`:`off`,disabled:a,"aria-label":n.icon&&!n.label?n.value:void 0,className:e.item,onClick:()=>toggle(n.value),children:[n.icon,n.label&&o(`span`,{children:n.label})]},n.value)})})});export{c as ToggleGroup};
@@ -1 +1 @@
1
- "use client";import e from"./toggletip.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,cn as i,useAnchorPosition as a,useControllableSignal as o,useSignals as s}from"@cascivo/core";import{builtin as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f({trigger:f,children:p,placement:m=`top`,defaultOpen:h=!1,open:g,onOpenChange:_,labels:v,className:y}){s();let[b,x]=o({...g!==void 0&&{value:g},defaultValue:h,..._&&{onChange:_}}),S=n(null),C=n(null),w=t(),{anchorStyle:T,floatingStyle:E}=a({anchorRef:S,floatingRef:C,placement:m,enabled:b});return d(`span`,{className:i(e.root,y),children:[u(`button`,{ref:S,type:`button`,className:e.trigger,"aria-expanded":b.value,"aria-controls":w,"aria-label":v?.label??l(c.toggletip.label),style:T,onClick:()=>x(!b.value),children:f}),b.value?u(r,{onDismiss:()=>x(!1),children:u(`div`,{ref:C,id:w,role:`status`,"data-state":`open`,"data-placement":m,className:e.bubble,style:E,children:p})}):null]})}export{f as Toggletip};
1
+ "use client";import e from"./toggletip.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,cn as i,useAnchorPosition as a,useControllableSignal as o,useSignals as s}from"@cascivo/core";import{builtin as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function Toggletip({trigger:f,children:p,placement:m=`top`,defaultOpen:h=!1,open:g,onOpenChange:_,labels:v,className:y}){s();let[b,x]=o({...g!==void 0&&{value:g},defaultValue:h,..._&&{onChange:_}}),S=n(null),C=n(null),w=t(),{anchorStyle:T,floatingStyle:E}=a({anchorRef:S,floatingRef:C,placement:m,enabled:b});return d(`span`,{className:i(e.root,y),children:[u(`button`,{ref:S,type:`button`,className:e.trigger,"aria-expanded":b.value,"aria-controls":w,"aria-label":v?.label??l(c.toggletip.label),style:T,onClick:()=>x(!b.value),children:f}),b.value?u(r,{onDismiss:()=>x(!1),children:u(`div`,{ref:C,id:w,role:`status`,"data-state":`open`,"data-placement":m,className:e.bubble,style:E,children:p})}):null]})}export{Toggletip};
@@ -1 +1 @@
1
- "use client";import e from"./tooltip.module.js";import{cloneElement as t,useRef as n}from"react";import{createMachine as r,useId as i,useMachine as a,useSignalEffect as o,useSignals as s}from"@cascivo/core";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=r({initial:`hidden`,states:{hidden:{on:{SHOW:`visible`}},visible:{on:{HIDE:`hidden`}}}});function d({content:r,placement:d=`top`,children:f,delay:p=200}){s();let[m,h]=a(u),g=i(`cascivo-tooltip`),_=i(`cascivo-anchor`),v=n(void 0),y=n(null),b=m.value===`visible`,x=()=>{clearTimeout(v.current),v.current=setTimeout(()=>h(`SHOW`),p)},S=()=>{clearTimeout(v.current),h(`HIDE`)};o(()=>()=>clearTimeout(v.current)),o(()=>{m.value===`visible`?y.current?.showPopover():y.current?.hidePopover()});let C=f,w=C.props,T={id:_,style:{anchorName:`--tooltip-${_}`},onMouseEnter:e=>{w.onMouseEnter?.(e),x()},onMouseLeave:e=>{w.onMouseLeave?.(e),S()},onFocus:e=>{w.onFocus?.(e),x()},onBlur:e=>{w.onBlur?.(e),S()},"aria-describedby":b?g:w[`aria-describedby`]};return l(`span`,{className:e.root,children:[t(C,T),c(`span`,{ref:y,popover:`manual`,role:`tooltip`,id:g,"data-placement":d,"data-state":b?`visible`:`hidden`,"data-anchor":`--tooltip-${_}`,className:e.tooltip,children:r})]})}export{d as Tooltip};
1
+ "use client";import e from"./tooltip.module.js";import{cloneElement as t,useRef as n}from"react";import{createMachine as r,useId as i,useMachine as a,useSignalEffect as o,useSignals as s}from"@cascivo/core";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=r({initial:`hidden`,states:{hidden:{on:{SHOW:`visible`}},visible:{on:{HIDE:`hidden`}}}});function Tooltip({content:r,placement:d=`top`,children:f,delay:p=200}){s();let[m,h]=a(u),g=i(`cascivo-tooltip`),_=i(`cascivo-anchor`),v=n(void 0),y=n(null),b=m.value===`visible`,show=()=>{clearTimeout(v.current),v.current=setTimeout(()=>h(`SHOW`),p)},hide=()=>{clearTimeout(v.current),h(`HIDE`)};o(()=>()=>clearTimeout(v.current)),o(()=>{m.value===`visible`?y.current?.showPopover():y.current?.hidePopover()});let x=f,S=x.props,C={id:_,style:{anchorName:`--tooltip-${_}`},onMouseEnter:e=>{S.onMouseEnter?.(e),show()},onMouseLeave:e=>{S.onMouseLeave?.(e),hide()},onFocus:e=>{S.onFocus?.(e),show()},onBlur:e=>{S.onBlur?.(e),hide()},"aria-describedby":b?g:S[`aria-describedby`]};return l(`span`,{className:e.root,children:[t(x,C),c(`span`,{ref:y,popover:`manual`,role:`tooltip`,id:g,"data-placement":d,"data-state":b?`visible`:`hidden`,"data-anchor":`--tooltip-${_}`,className:e.tooltip,children:r})]})}export{Tooltip};
@@ -1 +1 @@
1
- "use client";import e from"./tree-view.module.js";import{useRef as t}from"react";import{cn as n,useControllableSignal as r,useId as i,useSignal as a,useSignals as o,useTypeahead as s}from"@cascivo/core";import{builtin as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e,t){let n=[],r=(e,i,a)=>{for(let o of e){let e=!!o.children&&o.children.length>0,s=t.has(o.id);n.push({id:o.id,level:i,parentId:a,hasChildren:e,expanded:s}),e&&s&&r(o.children,i+1,o.id)}};return r(e,1,null),n}function p(e){return e===void 0?[]:Array.isArray(e)?e:e===``?[]:[e]}function m({items:i,selectionMode:c=`single`,selected:l,defaultSelected:d,onSelectChange:m,onValueChange:_,expanded:v,defaultExpanded:y,onExpandedChange:b,className:x,"aria-label":S,ariaLabel:C,label:w}){o();let[T,E]=r({value:v,defaultValue:y??[],onChange:b}),[D,O]=r({value:l,defaultValue:d??(c===`multi`?[]:``),onChange:e=>{_?.(e),m?.(e)}}),k=a(null),A=t(new Map),j=new Set(T.value),M=f(i,j),N=new Map(M.map((e,t)=>[e.id,t])),P=p(D.value),F=new Set(P),I=((...e)=>{for(let t of e)if(t&&N.has(t))return t;return M[0]?.id??null})(k.value,P[0]),L=e=>E([...e]),R=e=>{if(j.has(e))return;let t=new Set(j);t.add(e),L(t)},z=e=>{if(!j.has(e))return;let t=new Set(j);t.delete(e),L(t)},B=e=>{k.value=e,A.current.get(e)?.focus()},V=(e,t)=>{let n=h(i,j);for(let r=e+t;r>=0&&r<M.length;r+=t){let e=M[r];if(e&&!n.get(e.id)?.disabled)return e}},H=e=>e===`start`?V(-1,1):V(M.length,-1),U=e=>{if(!h(i,j).get(e)?.disabled)if(c===`multi`){let t=new Set(F);t.has(e)?t.delete(e):t.add(e),O([...t])}else O(e)},W=e=>e.textValue===void 0?typeof e.label==`string`?e.label:null:e.textValue,G=s({onMatch:e=>{let t=k.peek(),n=t===null?-1:N.get(t)??-1,r=h(i,j),a=[...M.slice(n+1),...M.slice(0,n+1)].find(t=>{let n=r.get(t.id);if(!n||n.disabled)return!1;let i=W(n);return i!==null&&i.toLowerCase().startsWith(e)});a&&B(a.id)}}),K=(e,t)=>{let n=N.get(t.id);if(n===void 0)return;let{hasChildren:r,level:i,parentId:a,expanded:o}=M[n];switch(e.key){case`ArrowDown`:{e.preventDefault();let t=V(n,1);t&&B(t.id);break}case`ArrowUp`:{e.preventDefault();let t=V(n,-1);t&&B(t.id);break}case`ArrowRight`:if(e.preventDefault(),r&&!o)R(t.id);else if(r&&o){let e=M[n+1];e&&e.level>i&&B(e.id)}break;case`ArrowLeft`:e.preventDefault(),r&&o?z(t.id):a&&B(a);break;case`Home`:{e.preventDefault();let t=H(`start`);t&&B(t.id);break}case`End`:{e.preventDefault();let t=H(`end`);t&&B(t.id);break}case`*`:{e.preventDefault();let t=new Set(j);for(let e of M)e.level===i&&e.parentId===a&&e.hasChildren&&t.add(e.id);L(t);break}case`Enter`:case` `:if(e.preventDefault(),t.disabled)break;r&&(o?z:R)(t.id),U(t.id);break;default:G.onKeyDown(e);break}},q=(e,t,n,r)=>{let i=!!e.children&&e.children.length>0,a=j.has(e.id),o=F.has(e.id),s=I===e.id,c=e.disabled??!1,l=e.children?.length??0;return u(g,{node:e,level:t,posInSet:n,setSize:r,hasChildren:i,isExpanded:a,isSelected:o,isTabbable:s,isDisabled:c,itemRefs:A,onFocusNode:()=>k.value=e.id,onKeyDown:t=>K(t,e),onActivate:()=>{c||(B(e.id),i&&(a?z:R)(e.id),U(e.id))},children:i&&a&&e.children.map((e,n)=>q(e,t+1,n+1,l))},e.id)};return u(`ul`,{role:`tree`,"aria-multiselectable":c===`multi`||void 0,"aria-label":C??S??w,className:n(e.tree,x),children:i.map((e,t)=>q(e,1,t+1,i.length))})}function h(e,t){let n=new Map,r=e=>{for(let i of e)n.set(i.id,i),i.children&&i.children.length>0&&t.has(i.id)&&r(i.children)};return r(e),n}function g({node:t,level:n,posInSet:r,setSize:a,hasChildren:o,isExpanded:s,isSelected:c,isTabbable:l,isDisabled:f,itemRefs:p,onFocusNode:m,onKeyDown:h,onActivate:g,children:_}){let v=i(`cascivo-tree-${t.id}`);return d(`li`,{role:`treeitem`,"aria-labelledby":v,"aria-level":n,"aria-posinset":r,"aria-setsize":a,"aria-selected":c,"aria-expanded":o?s:void 0,"aria-disabled":f||void 0,"data-disabled":f||void 0,tabIndex:l?0:-1,"data-selected":c||void 0,"data-state":o?s?`open`:`closed`:void 0,style:{"--cascivo-tree-level":n},className:e.item,ref:e=>{e?p.current.set(t.id,e):p.current.delete(t.id)},onFocus:e=>{e.target===e.currentTarget&&m()},onKeyDown:h,onClick:e=>{e.stopPropagation(),g()},children:[d(`span`,{className:e.row,children:[o?u(`span`,{className:e.twisty,"aria-hidden":`true`,"data-state":s?`open`:`closed`}):u(`span`,{className:e.twistySpacer,"aria-hidden":`true`}),t.icon&&u(`span`,{className:e.icon,"aria-hidden":`true`,children:t.icon}),u(`span`,{id:v,className:e.label,children:t.label})]}),o&&u(`div`,{role:`presentation`,className:e.groupWrap,"data-state":s?`open`:`closed`,children:u(`ul`,{role:`group`,className:e.group,children:_})})]})}var _={loading:()=>l(c.treeView.loading),expand:()=>l(c.treeView.expand),collapse:()=>l(c.treeView.collapse)};export{m as TreeView,_ as treeViewMessages};
1
+ "use client";import e from"./tree-view.module.js";import{useRef as t}from"react";import{cn as n,useControllableSignal as r,useId as i,useSignal as a,useSignals as o,useTypeahead as s}from"@cascivo/core";import{builtin as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function flattenVisible(e,t){let n=[],walk=(e,r,i)=>{for(let a of e){let e=!!a.children&&a.children.length>0,o=t.has(a.id);n.push({id:a.id,level:r,parentId:i,hasChildren:e,expanded:o}),e&&o&&walk(a.children,r+1,a.id)}};return walk(e,1,null),n}function toSelectionArray(e){return e===void 0?[]:Array.isArray(e)?e:e===``?[]:[e]}function TreeView({items:i,selectionMode:c=`single`,selected:l,defaultSelected:d,onSelectChange:f,onValueChange:p,expanded:m,defaultExpanded:h,onExpandedChange:g,className:_,"aria-label":v,ariaLabel:y,label:b}){o();let[x,S]=r({value:m,defaultValue:h??[],onChange:g}),[C,w]=r({value:l,defaultValue:d??(c===`multi`?[]:``),onChange:e=>{p?.(e),f?.(e)}}),T=a(null),E=t(new Map),D=new Set(x.value),O=flattenVisible(i,D),k=new Map(O.map((e,t)=>[e.id,t])),A=toSelectionArray(C.value),j=new Set(A),M=((...e)=>{for(let t of e)if(t&&k.has(t))return t;return O[0]?.id??null})(T.value,A[0]),commitExpanded=e=>S([...e]),expand=e=>{if(D.has(e))return;let t=new Set(D);t.add(e),commitExpanded(t)},collapse=e=>{if(!D.has(e))return;let t=new Set(D);t.delete(e),commitExpanded(t)},focusNode=e=>{T.value=e,E.current.get(e)?.focus()},step=(e,t)=>{let n=collectVisibleNodes(i,D);for(let r=e+t;r>=0&&r<O.length;r+=t){let e=O[r];if(e&&!n.get(e.id)?.disabled)return e}},edge=e=>e===`start`?step(-1,1):step(O.length,-1),select=e=>{if(!collectVisibleNodes(i,D).get(e)?.disabled)if(c===`multi`){let t=new Set(j);t.has(e)?t.delete(e):t.add(e),w([...t])}else w(e)},nodeText=e=>e.textValue===void 0?typeof e.label==`string`?e.label:null:e.textValue,N=s({onMatch:e=>{let t=T.peek(),n=t===null?-1:k.get(t)??-1,r=collectVisibleNodes(i,D),a=[...O.slice(n+1),...O.slice(0,n+1)].find(t=>{let n=r.get(t.id);if(!n||n.disabled)return!1;let i=nodeText(n);return i!==null&&i.toLowerCase().startsWith(e)});a&&focusNode(a.id)}}),handleKeyDown=(e,t)=>{let n=k.get(t.id);if(n===void 0)return;let{hasChildren:r,level:i,parentId:a,expanded:o}=O[n];switch(e.key){case`ArrowDown`:{e.preventDefault();let t=step(n,1);t&&focusNode(t.id);break}case`ArrowUp`:{e.preventDefault();let t=step(n,-1);t&&focusNode(t.id);break}case`ArrowRight`:if(e.preventDefault(),r&&!o)expand(t.id);else if(r&&o){let e=O[n+1];e&&e.level>i&&focusNode(e.id)}break;case`ArrowLeft`:e.preventDefault(),r&&o?collapse(t.id):a&&focusNode(a);break;case`Home`:{e.preventDefault();let t=edge(`start`);t&&focusNode(t.id);break}case`End`:{e.preventDefault();let t=edge(`end`);t&&focusNode(t.id);break}case`*`:{e.preventDefault();let t=new Set(D);for(let e of O)e.level===i&&e.parentId===a&&e.hasChildren&&t.add(e.id);commitExpanded(t);break}case`Enter`:case` `:if(e.preventDefault(),t.disabled)break;r&&(o?collapse:expand)(t.id),select(t.id);break;default:N.onKeyDown(e);break}},renderNode=(e,t,n,r)=>{let i=!!e.children&&e.children.length>0,a=D.has(e.id),o=j.has(e.id),s=M===e.id,c=e.disabled??!1,l=e.children?.length??0;return u(TreeItem,{node:e,level:t,posInSet:n,setSize:r,hasChildren:i,isExpanded:a,isSelected:o,isTabbable:s,isDisabled:c,itemRefs:E,onFocusNode:()=>T.value=e.id,onKeyDown:t=>handleKeyDown(t,e),onActivate:()=>{c||(focusNode(e.id),i&&(a?collapse:expand)(e.id),select(e.id))},children:i&&a&&e.children.map((e,n)=>renderNode(e,t+1,n+1,l))},e.id)};return u(`ul`,{role:`tree`,"aria-multiselectable":c===`multi`||void 0,"aria-label":y??v??b,className:n(e.tree,_),children:i.map((e,t)=>renderNode(e,1,t+1,i.length))})}function collectVisibleNodes(e,t){let n=new Map,walk=e=>{for(let r of e)n.set(r.id,r),r.children&&r.children.length>0&&t.has(r.id)&&walk(r.children)};return walk(e),n}function TreeItem({node:t,level:n,posInSet:r,setSize:a,hasChildren:o,isExpanded:s,isSelected:c,isTabbable:l,isDisabled:f,itemRefs:p,onFocusNode:m,onKeyDown:h,onActivate:g,children:_}){let v=i(`cascivo-tree-${t.id}`);return d(`li`,{role:`treeitem`,"aria-labelledby":v,"aria-level":n,"aria-posinset":r,"aria-setsize":a,"aria-selected":c,"aria-expanded":o?s:void 0,"aria-disabled":f||void 0,"data-disabled":f||void 0,tabIndex:l?0:-1,"data-selected":c||void 0,"data-state":o?s?`open`:`closed`:void 0,style:{"--cascivo-tree-level":n},className:e.item,ref:e=>{e?p.current.set(t.id,e):p.current.delete(t.id)},onFocus:e=>{e.target===e.currentTarget&&m()},onKeyDown:h,onClick:e=>{e.stopPropagation(),g()},children:[d(`span`,{className:e.row,children:[o?u(`span`,{className:e.twisty,"aria-hidden":`true`,"data-state":s?`open`:`closed`}):u(`span`,{className:e.twistySpacer,"aria-hidden":`true`}),t.icon&&u(`span`,{className:e.icon,"aria-hidden":`true`,children:t.icon}),u(`span`,{id:v,className:e.label,children:t.label})]}),o&&u(`div`,{role:`presentation`,className:e.groupWrap,"data-state":s?`open`:`closed`,children:u(`ul`,{role:`group`,className:e.group,children:_})})]})}var f={loading:()=>l(c.treeView.loading),expand:()=>l(c.treeView.expand),collapse:()=>l(c.treeView.collapse)};export{TreeView,f as treeViewMessages};
package/dist/user/user.js CHANGED
@@ -1 +1 @@
1
- import{Avatar as e}from"../avatar/avatar.js";import t from"./user.module.js";import{cn as n}from"@cascivo/core/pure";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({name:a,description:o,avatarProps:s,className:c,children:l,...u}){let d=typeof a==`string`&&s?.name===void 0&&s?.fallback===void 0?{name:a}:{};return i(`div`,{role:`group`,className:n(t.user,c),...u,children:[r(e,{...d,...s}),i(`span`,{className:t.text,children:[r(`span`,{className:t.name,children:a}),o!=null&&r(`span`,{className:t.description,children:o})]}),l!=null&&r(`span`,{className:t.action,children:l})]})}export{a as User};
1
+ import{Avatar as e}from"../avatar/avatar.js";import t from"./user.module.js";import{cn as n}from"@cascivo/core/pure";import{jsx as r,jsxs as i}from"react/jsx-runtime";function User({name:a,description:o,avatarProps:s,className:c,children:l,...u}){let d=typeof a==`string`&&s?.name===void 0&&s?.fallback===void 0?{name:a}:{};return i(`div`,{role:`group`,className:n(t.user,c),...u,children:[r(e,{...d,...s}),i(`span`,{className:t.text,children:[r(`span`,{className:t.name,children:a}),o!=null&&r(`span`,{className:t.description,children:o})]}),l!=null&&r(`span`,{className:t.action,children:l})]})}export{User};
@@ -1 +1 @@
1
- "use client";import e from"./virtual-list.module.js";import{cn as t,useSignal as n,useSignals as r}from"@cascivo/core";import{jsx as i}from"react/jsx-runtime";function a({items:a,itemHeight:o,height:s,renderItem:c,overscan:l=3,ariaLabel:u,label:d,className:f}){r();let p=n(0),m=Math.ceil(s/o),h=Math.floor(p.value/o),g=Math.max(0,h-l),_=Math.min(a.length,h+m+l),v=a.slice(g,_),y=e=>{p.value=e.currentTarget.scrollTop},b={blockSize:`${s}px`};return i(`div`,{className:t(e.viewport,f),style:b,onScroll:y,role:`list`,"aria-label":u??d,tabIndex:0,children:i(`div`,{className:e.canvas,style:{blockSize:`${a.length*o}px`},children:v.map((t,n)=>{let r=g+n;return i(`div`,{role:`listitem`,"aria-setsize":a.length,"aria-posinset":r+1,className:e.row,style:{blockSize:`${o}px`,transform:`translateY(${r*o}px)`},children:c(t,r)},r)})})})}export{a as VirtualList};
1
+ "use client";import e from"./virtual-list.module.js";import{cn as t,useSignal as n,useSignals as r}from"@cascivo/core";import{jsx as i}from"react/jsx-runtime";function VirtualList({items:a,itemHeight:o,height:s,renderItem:c,overscan:l=3,ariaLabel:u,label:d,className:f}){r();let p=n(0),m=Math.ceil(s/o),h=Math.floor(p.value/o),g=Math.max(0,h-l),_=Math.min(a.length,h+m+l),v=a.slice(g,_),onScroll=e=>{p.value=e.currentTarget.scrollTop},y={blockSize:`${s}px`};return i(`div`,{className:t(e.viewport,f),style:y,onScroll,role:`list`,"aria-label":u??d,tabIndex:0,children:i(`div`,{className:e.canvas,style:{blockSize:`${a.length*o}px`},children:v.map((t,n)=>{let r=g+n;return i(`div`,{role:`listitem`,"aria-setsize":a.length,"aria-posinset":r+1,className:e.row,style:{blockSize:`${o}px`,transform:`translateY(${r*o}px)`},children:c(t,r)},r)})})})}export{VirtualList};
@@ -1 +1 @@
1
- "use client";import e from"./wheel-picker.module.js";import{useRef as t}from"react";import{cn as n,useEffectPropSignal as r,useId as i,useSignalEffect as a}from"@cascivo/core";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c=120;function l({options:l,value:u,onValueChange:d,visibleCount:f=5,itemHeight:p=36,ariaLabel:m,label:h,className:g}){let _=t(null),v=i(),y=Math.max(0,l.findIndex(e=>e.value===u)),b=t(l);b.current=l;let x=t(d);x.current=d;let S=t(p);S.current=p;let C=t(u);C.current=u;let w=(e,t)=>{let n=_.current;n&&n.scrollTo({top:e*S.current,behavior:t?`smooth`:`instant`})},T=r(u);a(()=>{let e=T.value,t=b.current.findIndex(t=>t.value===e);t>=0&&w(t,!1)}),a(()=>{let e=_.current;if(!e)return;let t,n=()=>{clearTimeout(t),t=setTimeout(()=>{let t=Math.round(e.scrollTop/S.current),n=b.current[t];n&&n.value!==C.current&&x.current(n.value)},c)};return e.addEventListener(`scroll`,n,{passive:!0}),()=>{clearTimeout(t),e.removeEventListener(`scroll`,n)}});let E=e=>{let t=Math.max(0,Math.min(l.length-1,e)),n=l[t];!n||n.value===u||(d(n.value),w(t,!0))},D=e=>{let t={ArrowDown:y+1,ArrowUp:y-1,Home:0,End:l.length-1,PageDown:y+f,PageUp:y-f}[e.key];t!==void 0&&(e.preventDefault(),E(t))},O=(f-1)/2*p,k={"--_item-height":`${p}px`,"--_pad":`${O}px`,"--_column-height":`${f*p}px`};return s(`div`,{className:n(e.root,g),style:k,children:[o(`div`,{ref:_,role:`listbox`,tabIndex:0,"aria-label":m??h,"aria-activedescendant":`${v}-${y}`,className:e.column,onKeyDown:D,children:l.map((t,n)=>o(`div`,{id:`${v}-${n}`,role:`option`,"aria-selected":n===y,className:e.option,children:t.label},t.value))}),o(`div`,{"aria-hidden":`true`,className:e.band})]})}export{l as WheelPicker};
1
+ "use client";import e from"./wheel-picker.module.js";import{useRef as t}from"react";import{cn as n,useEffectPropSignal as r,useId as i,useSignalEffect as a}from"@cascivo/core";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c=120;function WheelPicker({options:l,value:u,onValueChange:d,visibleCount:f=5,itemHeight:p=36,ariaLabel:m,label:h,className:g}){let _=t(null),v=i(),y=Math.max(0,l.findIndex(e=>e.value===u)),b=t(l);b.current=l;let x=t(d);x.current=d;let S=t(p);S.current=p;let C=t(u);C.current=u;let scrollToIndex=(e,t)=>{let n=_.current;n&&n.scrollTo({top:e*S.current,behavior:t?`smooth`:`instant`})},w=r(u);a(()=>{let e=w.value,t=b.current.findIndex(t=>t.value===e);t>=0&&scrollToIndex(t,!1)}),a(()=>{let e=_.current;if(!e)return;let t,onScroll=()=>{clearTimeout(t),t=setTimeout(()=>{let t=Math.round(e.scrollTop/S.current),n=b.current[t];n&&n.value!==C.current&&x.current(n.value)},c)};return e.addEventListener(`scroll`,onScroll,{passive:!0}),()=>{clearTimeout(t),e.removeEventListener(`scroll`,onScroll)}});let select=e=>{let t=Math.max(0,Math.min(l.length-1,e)),n=l[t];!n||n.value===u||(d(n.value),scrollToIndex(t,!0))},onKeyDown=e=>{let t={ArrowDown:y+1,ArrowUp:y-1,Home:0,End:l.length-1,PageDown:y+f,PageUp:y-f}[e.key];t!==void 0&&(e.preventDefault(),select(t))},T=(f-1)/2*p,E={"--_item-height":`${p}px`,"--_pad":`${T}px`,"--_column-height":`${f*p}px`};return s(`div`,{className:n(e.root,g),style:E,children:[o(`div`,{ref:_,role:`listbox`,tabIndex:0,"aria-label":m??h,"aria-activedescendant":`${v}-${y}`,className:e.column,onKeyDown,children:l.map((t,n)=>o(`div`,{id:`${v}-${n}`,role:`option`,"aria-selected":n===y,className:e.option,children:t.label},t.value))}),o(`div`,{"aria-hidden":`true`,className:e.band})]})}export{WheelPicker};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cascivo/react",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "private": false,
5
5
  "description": "Prebuilt cascivo design system components — use without copying source. @cascivo/themes installs with it; pair with @cascivo/charts (data-viz) and @cascivo/icons. Docs offline: npx @cascivo/docs",
6
6
  "keywords": [
@@ -51,9 +51,9 @@
51
51
  "provenance": true
52
52
  },
53
53
  "dependencies": {
54
- "@cascivo/core": "^1.1.0",
55
- "@cascivo/i18n": "^1.1.0",
56
- "@cascivo/themes": "^1.0.0"
54
+ "@cascivo/i18n": "^1.2.0",
55
+ "@cascivo/themes": "^1.0.0",
56
+ "@cascivo/core": "^1.2.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@testing-library/jest-dom": "^6.9.1",