@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.
- package/dist/accordion/accordion.js +1 -1
- package/dist/action-sheet/action-sheet.js +1 -1
- package/dist/alert/alert.js +1 -1
- package/dist/alert-dialog/alert-dialog.js +1 -1
- package/dist/app-shell/app-shell.css +1 -1
- package/dist/app-shell/app-shell.js +1 -1
- package/dist/app-shell/app-shell.module.js +1 -1
- package/dist/aspect-ratio/aspect-ratio.js +1 -1
- package/dist/avatar/avatar.js +1 -1
- package/dist/avatar-group/avatar-group.js +1 -1
- package/dist/badge/badge.js +1 -1
- package/dist/blockquote/blockquote.js +1 -1
- package/dist/bottom-sheet/bottom-sheet.js +1 -1
- package/dist/brand/logo/logo.js +1 -1
- package/dist/breadcrumb/breadcrumb.js +1 -1
- package/dist/button/button.css +1 -1
- package/dist/button/button.module.js +1 -1
- package/dist/button-group/button-group.js +1 -1
- package/dist/calendar/calendar-date.js +1 -1
- package/dist/calendar/calendar.js +1 -1
- package/dist/card/card.js +1 -1
- package/dist/carousel/carousel.js +1 -1
- package/dist/chat-bubble/chat-bubble.js +1 -1
- package/dist/code/code.js +1 -1
- package/dist/code-snippet/code-snippet.js +2 -2
- package/dist/code-snippet/highlight.js +1 -1
- package/dist/collapsible/collapsible.js +1 -1
- package/dist/color-picker/color-picker.js +1 -1
- package/dist/color-picker/color.js +1 -1
- package/dist/combobox/combobox.js +1 -1
- package/dist/combobox/list-nav.js +1 -1
- package/dist/combobox/option-list.js +1 -1
- package/dist/command-menu/command-menu.js +1 -1
- package/dist/comparison/comparison.js +1 -1
- package/dist/contained-list/contained-list.js +1 -1
- package/dist/context-menu/context-menu.js +1 -1
- package/dist/data-list/data-list.js +1 -1
- package/dist/data-table/column-filter.js +1 -1
- package/dist/data-table/column-layout.js +1 -1
- package/dist/data-table/data-table.js +1 -1
- package/dist/data-table/grid-keys.js +1 -1
- package/dist/data-table/row-group.js +1 -1
- package/dist/data-table/row-search.js +1 -1
- package/dist/data-table/row-sort.js +1 -1
- package/dist/data-table/to-csv.js +2 -2
- package/dist/data-table/virtual-window.js +1 -1
- package/dist/date-picker/date-picker.js +1 -1
- package/dist/date-picker/parse-date.js +1 -1
- package/dist/date-range-picker/date-range-picker.js +1 -1
- package/dist/dock/dock.js +1 -1
- package/dist/drawer/drawer.js +1 -1
- package/dist/dropdown/dropdown.js +1 -1
- package/dist/editable/editable.js +1 -1
- package/dist/empty-state/empty-state.js +1 -1
- package/dist/fab/fab.js +1 -1
- package/dist/field/field.js +1 -1
- package/dist/file-uploader/file-uploader.js +1 -1
- package/dist/filter/filter.js +1 -1
- package/dist/form/form.js +1 -1
- package/dist/header/header.js +1 -1
- package/dist/header-panel/header-panel.js +1 -1
- package/dist/heading/heading.js +1 -1
- package/dist/hover-card/hover-card.js +1 -1
- package/dist/image/image.js +1 -1
- package/dist/index.d.ts +749 -13
- package/dist/indicator/indicator.js +1 -1
- package/dist/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/inline-loading/inline-loading.js +1 -1
- package/dist/input-group/input-group.js +1 -1
- package/dist/item/item.js +1 -1
- package/dist/join/join.js +1 -1
- package/dist/kbd/kbd.js +1 -1
- package/dist/label/label.js +1 -1
- package/dist/large-title-header/large-title-header.js +1 -1
- package/dist/layouts/src/auto-grid/auto-grid.js +1 -1
- package/dist/layouts/src/center/center.js +1 -1
- package/dist/layouts/src/columns/columns.js +1 -1
- package/dist/layouts/src/flex/flex.css +1 -1
- package/dist/layouts/src/flex/flex.js +1 -1
- package/dist/layouts/src/flex/flex.module.js +1 -1
- package/dist/layouts/src/grid/grid.js +1 -1
- package/dist/layouts/src/page-header/page-header.js +1 -1
- package/dist/layouts/src/spacer/spacer.js +1 -1
- package/dist/list/list.js +1 -1
- package/dist/log-viewer/log-viewer.css +1 -1
- package/dist/log-viewer/log-viewer.js +2 -2
- package/dist/log-viewer/log-viewer.module.js +1 -1
- package/dist/menu/menu.js +1 -1
- package/dist/menu-button/menu-button.js +1 -1
- package/dist/menubar/menubar.js +1 -1
- package/dist/modal/modal.js +1 -1
- package/dist/multi-select/list-nav.js +1 -1
- package/dist/multi-select/multi-select.js +1 -1
- package/dist/multi-select/option-list.js +1 -1
- package/dist/navigation-menu/navigation-menu.js +1 -1
- package/dist/node/accordion/accordion.js +1 -1
- package/dist/node/action-sheet/action-sheet.js +1 -1
- package/dist/node/alert/alert.js +1 -1
- package/dist/node/alert-dialog/alert-dialog.js +1 -1
- package/dist/node/app-shell/app-shell.js +1 -1
- package/dist/node/app-shell/app-shell.module.js +1 -1
- package/dist/node/aspect-ratio/aspect-ratio.js +1 -1
- package/dist/node/avatar/avatar.js +1 -1
- package/dist/node/avatar-group/avatar-group.js +1 -1
- package/dist/node/badge/badge.js +1 -1
- package/dist/node/blockquote/blockquote.js +1 -1
- package/dist/node/bottom-sheet/bottom-sheet.js +1 -1
- package/dist/node/brand/logo/logo.js +1 -1
- package/dist/node/breadcrumb/breadcrumb.js +1 -1
- package/dist/node/button/button.module.js +1 -1
- package/dist/node/button-group/button-group.js +1 -1
- package/dist/node/calendar/calendar-date.js +1 -1
- package/dist/node/calendar/calendar.js +1 -1
- package/dist/node/card/card.js +1 -1
- package/dist/node/carousel/carousel.js +1 -1
- package/dist/node/chat-bubble/chat-bubble.js +1 -1
- package/dist/node/code/code.js +1 -1
- package/dist/node/code-snippet/code-snippet.js +2 -2
- package/dist/node/code-snippet/highlight.js +1 -1
- package/dist/node/collapsible/collapsible.js +1 -1
- package/dist/node/color-picker/color-picker.js +1 -1
- package/dist/node/color-picker/color.js +1 -1
- package/dist/node/combobox/combobox.js +1 -1
- package/dist/node/combobox/list-nav.js +1 -1
- package/dist/node/combobox/option-list.js +1 -1
- package/dist/node/command-menu/command-menu.js +1 -1
- package/dist/node/comparison/comparison.js +1 -1
- package/dist/node/contained-list/contained-list.js +1 -1
- package/dist/node/context-menu/context-menu.js +1 -1
- package/dist/node/data-list/data-list.js +1 -1
- package/dist/node/data-table/column-filter.js +1 -1
- package/dist/node/data-table/column-layout.js +1 -1
- package/dist/node/data-table/data-table.js +1 -1
- package/dist/node/data-table/grid-keys.js +1 -1
- package/dist/node/data-table/row-group.js +1 -1
- package/dist/node/data-table/row-search.js +1 -1
- package/dist/node/data-table/row-sort.js +1 -1
- package/dist/node/data-table/to-csv.js +2 -2
- package/dist/node/data-table/virtual-window.js +1 -1
- package/dist/node/date-picker/date-picker.js +1 -1
- package/dist/node/date-picker/parse-date.js +1 -1
- package/dist/node/date-range-picker/date-range-picker.js +1 -1
- package/dist/node/dock/dock.js +1 -1
- package/dist/node/drawer/drawer.js +1 -1
- package/dist/node/dropdown/dropdown.js +1 -1
- package/dist/node/editable/editable.js +1 -1
- package/dist/node/empty-state/empty-state.js +1 -1
- package/dist/node/fab/fab.js +1 -1
- package/dist/node/field/field.js +1 -1
- package/dist/node/file-uploader/file-uploader.js +1 -1
- package/dist/node/filter/filter.js +1 -1
- package/dist/node/form/form.js +1 -1
- package/dist/node/header/header.js +1 -1
- package/dist/node/header-panel/header-panel.js +1 -1
- package/dist/node/heading/heading.js +1 -1
- package/dist/node/hover-card/hover-card.js +1 -1
- package/dist/node/image/image.js +1 -1
- package/dist/node/indicator/indicator.js +1 -1
- package/dist/node/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/node/inline-loading/inline-loading.js +1 -1
- package/dist/node/input-group/input-group.js +1 -1
- package/dist/node/item/item.js +1 -1
- package/dist/node/join/join.js +1 -1
- package/dist/node/kbd/kbd.js +1 -1
- package/dist/node/label/label.js +1 -1
- package/dist/node/large-title-header/large-title-header.js +1 -1
- package/dist/node/layouts/src/auto-grid/auto-grid.js +1 -1
- package/dist/node/layouts/src/center/center.js +1 -1
- package/dist/node/layouts/src/columns/columns.js +1 -1
- package/dist/node/layouts/src/flex/flex.js +1 -1
- package/dist/node/layouts/src/flex/flex.module.js +1 -1
- package/dist/node/layouts/src/grid/grid.js +1 -1
- package/dist/node/layouts/src/page-header/page-header.js +1 -1
- package/dist/node/layouts/src/spacer/spacer.js +1 -1
- package/dist/node/list/list.js +1 -1
- package/dist/node/log-viewer/log-viewer.js +2 -2
- package/dist/node/log-viewer/log-viewer.module.js +1 -1
- package/dist/node/menu/menu.js +1 -1
- package/dist/node/menu-button/menu-button.js +1 -1
- package/dist/node/menubar/menubar.js +1 -1
- package/dist/node/modal/modal.js +1 -1
- package/dist/node/multi-select/list-nav.js +1 -1
- package/dist/node/multi-select/multi-select.js +1 -1
- package/dist/node/multi-select/option-list.js +1 -1
- package/dist/node/navigation-menu/navigation-menu.js +1 -1
- package/dist/node/notification/notification.js +1 -1
- package/dist/node/number-input/number-input.js +1 -1
- package/dist/node/otp-input/otp-input.js +1 -1
- package/dist/node/overflow-menu/overflow-menu.js +1 -1
- package/dist/node/pagination/pagination.js +1 -1
- package/dist/node/password-input/password-input.js +1 -1
- package/dist/node/popover/popover.js +1 -1
- package/dist/node/popover/use-popover.js +1 -1
- package/dist/node/progress/progress.js +1 -1
- package/dist/node/progress-bar/progress-bar.js +1 -1
- package/dist/node/progress-circle/progress-circle.js +1 -1
- package/dist/node/progress-indicator/progress-indicator.js +1 -1
- package/dist/node/prose/prose.js +1 -1
- package/dist/node/pull-to-refresh/pull-to-refresh.js +1 -1
- package/dist/node/qr-code/encode.js +1 -1
- package/dist/node/qr-code/qr-code.js +1 -1
- package/dist/node/radial-progress/radial-progress.js +1 -1
- package/dist/node/radio/radio.js +1 -1
- package/dist/node/radio-card/radio-card.js +1 -1
- package/dist/node/rating-group/rating-group.js +1 -1
- package/dist/node/react/src/index.js +1 -1
- package/dist/node/relative-time/relative-time.js +1 -1
- package/dist/node/reorder-list/reorder-list.js +1 -1
- package/dist/node/resizable/resizable.js +1 -1
- package/dist/node/scroll-area/scroll-area.js +1 -1
- package/dist/node/search/search.js +1 -1
- package/dist/node/segmented-control/segmented-control.js +1 -1
- package/dist/node/separator/separator.js +1 -1
- package/dist/node/sheet/sheet.js +1 -1
- package/dist/node/shell-header/shell-header.js +1 -1
- package/dist/node/side-nav/side-nav.js +1 -1
- package/dist/node/side-nav/side-nav.module.js +1 -1
- package/dist/node/skeleton/skeleton.js +1 -1
- package/dist/node/skip-nav/skip-nav.js +1 -1
- package/dist/node/spinner/spinner.js +1 -1
- package/dist/node/stack/stack.js +1 -1
- package/dist/node/stat/stat.js +1 -1
- package/dist/node/status/status.js +1 -1
- package/dist/node/steps/steps.js +1 -1
- package/dist/node/structured-list/structured-list.js +1 -1
- package/dist/node/swap/swap.js +1 -1
- package/dist/node/swipe-item/swipe-item.js +1 -1
- package/dist/node/switcher/switcher.js +1 -1
- package/dist/node/tabs/tabs.js +1 -1
- package/dist/node/tag/tag.js +1 -1
- package/dist/node/tags-input/tags-input.js +1 -1
- package/dist/node/text/text.js +1 -1
- package/dist/node/tile/tile.js +1 -1
- package/dist/node/timeline/timeline.js +1 -1
- package/dist/node/toast/toast.js +1 -1
- package/dist/node/toc/toc.js +1 -1
- package/dist/node/toc/use-toc-from-region.js +1 -1
- package/dist/node/toggle-group/toggle-group.js +1 -1
- package/dist/node/toggletip/toggletip.js +1 -1
- package/dist/node/tooltip/tooltip.js +1 -1
- package/dist/node/tree-view/tree-view.js +1 -1
- package/dist/node/user/user.js +1 -1
- package/dist/node/virtual-list/virtual-list.js +1 -1
- package/dist/node/wheel-picker/wheel-picker.js +1 -1
- package/dist/notification/notification.js +1 -1
- package/dist/number-input/number-input.js +1 -1
- package/dist/otp-input/otp-input.js +1 -1
- package/dist/overflow-menu/overflow-menu.js +1 -1
- package/dist/pagination/pagination.js +1 -1
- package/dist/password-input/password-input.js +1 -1
- package/dist/popover/popover.js +1 -1
- package/dist/popover/use-popover.js +1 -1
- package/dist/progress/progress.js +1 -1
- package/dist/progress-bar/progress-bar.js +1 -1
- package/dist/progress-circle/progress-circle.js +1 -1
- package/dist/progress-indicator/progress-indicator.js +1 -1
- package/dist/prose/prose.js +1 -1
- package/dist/pull-to-refresh/pull-to-refresh.js +1 -1
- package/dist/qr-code/encode.js +1 -1
- package/dist/qr-code/qr-code.js +1 -1
- package/dist/radial-progress/radial-progress.js +1 -1
- package/dist/radio/radio.js +1 -1
- package/dist/radio-card/radio-card.js +1 -1
- package/dist/rating-group/rating-group.js +1 -1
- package/dist/react/src/index.js +1 -1
- package/dist/relative-time/relative-time.js +1 -1
- package/dist/reorder-list/reorder-list.js +1 -1
- package/dist/resizable/resizable.js +1 -1
- package/dist/scroll-area/scroll-area.js +1 -1
- package/dist/search/search.js +1 -1
- package/dist/segmented-control/segmented-control.js +1 -1
- package/dist/separator/separator.js +1 -1
- package/dist/sheet/sheet.js +1 -1
- package/dist/shell-header/shell-header.js +1 -1
- package/dist/side-nav/side-nav.css +1 -1
- package/dist/side-nav/side-nav.js +1 -1
- package/dist/side-nav/side-nav.module.js +1 -1
- package/dist/skeleton/skeleton.js +1 -1
- package/dist/skip-nav/skip-nav.js +1 -1
- package/dist/spinner/spinner.js +1 -1
- package/dist/stack/stack.js +1 -1
- package/dist/stat/stat.js +1 -1
- package/dist/status/status.js +1 -1
- package/dist/steps/steps.js +1 -1
- package/dist/structured-list/structured-list.js +1 -1
- package/dist/styles.css +10 -6
- package/dist/swap/swap.js +1 -1
- package/dist/swipe-item/swipe-item.js +1 -1
- package/dist/switcher/switcher.js +1 -1
- package/dist/tabs/tabs.js +1 -1
- package/dist/tag/tag.js +1 -1
- package/dist/tags-input/tags-input.js +1 -1
- package/dist/text/text.js +1 -1
- package/dist/tile/tile.js +1 -1
- package/dist/timeline/timeline.js +1 -1
- package/dist/toast/toast.js +1 -1
- package/dist/toc/toc.js +1 -1
- package/dist/toc/use-toc-from-region.js +1 -1
- package/dist/toggle-group/toggle-group.js +1 -1
- package/dist/toggletip/toggletip.js +1 -1
- package/dist/tooltip/tooltip.js +1 -1
- package/dist/tree-view/tree-view.js +1 -1
- package/dist/user/user.js +1 -1
- package/dist/virtual-list/virtual-list.js +1 -1
- package/dist/wheel-picker/wheel-picker.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function toISO(e){return`${String(e.getUTCFullYear()).padStart(4,`0`)}-${String(e.getUTCMonth()+1).padStart(2,`0`)}-${String(e.getUTCDate()).padStart(2,`0`)}`}function fromISO(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());return t?makeDate(Number(t[1]),Number(t[2]),Number(t[3])):null}function makeDate(e,t,n){if(t<1||t>12||n<1||n>31)return null;let r=new Date(Date.UTC(e,t-1,n));return r.getUTCMonth()!==t-1||r.getUTCDate()!==n?null:r}function isDayFirst(e){try{return new Intl.DateTimeFormat(e).formatToParts(new Date(Date.UTC(2026,0,2))).filter(e=>e.type===`day`||e.type===`month`).map(e=>e.type)[0]===`day`}catch{return!1}}function parseTypedDate(e,t,n){let r=e.trim();if(r===``)return null;let i=fromISO(r);if(i)return i;let a=r.split(/[/.\-\s]+/).filter(Boolean);if(a.length<2||a.length>3||!a.every(e=>/^\d{1,4}$/.test(e)))return null;let o=a.map(Number),s=isDayFirst(t),c,l,u;return o.length===2?([c,l]=s?[o[0],o[1]]:[o[1],o[0]],u=n??new Date().getFullYear()):([c,l]=s?[o[0],o[1]]:[o[1],o[0]],u=o[2],a[2].length<=2&&(u=2e3+u)),makeDate(u,l,c)}function formatDate(e,t,n){return new Intl.DateTimeFormat(t,n??{timeZone:`UTC`}).format(e)}function formatHint(e){try{return new Intl.DateTimeFormat(e,{timeZone:`UTC`}).formatToParts(new Date(Date.UTC(2026,10,22))).map(e=>e.type===`day`?`DD`:e.type===`month`?`MM`:e.type===`year`?`YYYY`:e.value).join(``)}catch{return`YYYY-MM-DD`}}export{formatDate,formatHint,fromISO,parseTypedDate,toISO};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Calendar as e}from"../calendar/calendar.js";import t from"./date-range-picker.module.js";import{useRef as n}from"react";import{batch as r,cn as i,useControllableSignal as a,useSignal as o,useSignalEffect as s,useSignals as
|
|
1
|
+
"use client";import{Calendar as e}from"../calendar/calendar.js";import t from"./date-range-picker.module.js";import{useRef as n}from"react";import{batch as r,cn as i,useControllableSignal as a,useSignal as o,useSignalEffect as s,useSignals as c}from"@cascivo/core";import{builtin as l,currentLocale as u,t as d}from"@cascivo/i18n";import{jsx as f,jsxs as p}from"react/jsx-runtime";function dayMs(e){return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}function sameDay(e,t){return!e||!t?!1:dayMs(e)===dayMs(t)}function addMonths(e,t,n){let r=new Date(Date.UTC(e,t+n,1));return{year:r.getUTCFullYear(),month:r.getUTCMonth()}}function DateRangePicker({value:m,defaultValue:h,onValueChange:g,min:_,max:v,disabled:y,presets:b,locale:x,placeholder:S,size:C=`md`,labels:w,className:T}){c();let E=x??u(),D=S??d(l.dateRangePicker.placeholder),O=w?.apply??d(l.dateRangePicker.apply),k=w?.clear??d(l.dateRangePicker.clear),A=w?.previousMonth??d(l.calendar.previousMonth),j=w?.nextMonth??d(l.calendar.nextMonth),[M,N]=a({value:m===void 0?void 0:m,defaultValue:h??null,onChange:e=>{e&&g?.(e)}}),P=o(!1),F=o(null),I=o(null),L=M.value?.start??h?.start??new Date,R=o(L.getUTCFullYear()),z=o(L.getUTCMonth()),B=n(null);s(()=>{if(!P.value)return;let handler=e=>{B.current&&!B.current.contains(e.target)&&(P.value=!1)};return document.addEventListener(`mousedown`,handler),()=>document.removeEventListener(`mousedown`,handler)});let openPanel=()=>{P.value=!0},closePanel=()=>{P.value=!1},advance=e=>{let t=addMonths(R.value,z.value,e);r(()=>{R.value=t.year,z.value=t.month})},handleDayClick=e=>{let t=F.value;if(t===null){F.value=e;return}if(sameDay(t,e)){r(()=>{F.value=null,I.value=null}),N(null);return}let n=dayMs(t)<=dayMs(e)?{start:t,end:e}:{start:e,end:t};r(()=>{F.value=null,I.value=null}),N(n)},applyPreset=e=>{r(()=>{F.value=null,I.value=null,R.value=e.range.start.getUTCFullYear(),z.value=e.range.start.getUTCMonth()}),N(e.range)},clear=()=>{r(()=>{F.value=null,I.value=null}),N(null)},V=F.value??M.value?.start??null,H=F.value?I.value??null:M.value?.end??null,U=V&&H?Math.min(dayMs(V),dayMs(H)):null,W=V&&H?Math.max(dayMs(V),dayMs(H)):null,isInRange=e=>{if(U===null||W===null)return!1;let t=dayMs(e);return t>U&&t<W},isRangeStart=e=>sameDay(e,V)||U!==null&&dayMs(e)===U,isRangeEnd=e=>sameDay(e,H)||W!==null&&dayMs(e)===W,G=new Intl.DateTimeFormat(E,{year:`numeric`,month:`short`,day:`numeric`}),K=M.value?`${G.format(M.value.start)} → ${G.format(M.value.end)}`:``,q=addMonths(R.value,z.value,1),J={locale:E,size:C,..._===void 0?{}:{min:_},...v===void 0?{}:{max:v},...y===void 0?{}:{disabled:y},hideNav:!0,isInRange,isRangeStart,isRangeEnd,onValueChange:handleDayClick,onDayHover:e=>{I.value=e},labels:{previousMonth:A,nextMonth:j}};return p(`div`,{ref:B,className:i(t.wrapper,T),"data-size":C,onKeyDown:e=>{e.key===`Escape`&&P.value&&(e.stopPropagation(),closePanel())},children:[p(`button`,{type:`button`,role:`combobox`,"aria-expanded":P.value,"aria-haspopup":`dialog`,"aria-label":w?.label??d(l.dateRangePicker.label),className:t.trigger,onClick:P.value?closePanel:openPanel,children:[f(`span`,{className:i(t.value,K?void 0:t.placeholder),children:K||D}),f(`span`,{className:t.icon,"aria-hidden":`true`,children:`📅`})]}),p(`div`,{role:`dialog`,className:t.panel,"data-state":P.value?`open`:`closed`,children:[b&&b.length>0&&f(`div`,{className:t.presets,children:b.map(e=>f(`button`,{type:`button`,className:t.preset,onClick:()=>applyPreset(e),children:e.label},e.id??e.label))}),p(`div`,{className:t.calendars,children:[f(`div`,{className:t.calNav,children:f(`button`,{type:`button`,className:t.navButton,"aria-label":A,onClick:()=>advance(-1),children:`‹`})}),f(e,{month:z.value,year:R.value,...J}),f(e,{month:q.month,year:q.year,...J}),f(`div`,{className:t.calNav,children:f(`button`,{type:`button`,className:t.navButton,"aria-label":j,onClick:()=>advance(1),children:`›`})})]}),p(`div`,{className:t.footer,children:[f(`button`,{type:`button`,className:t.clearBtn,onClick:clear,children:k}),f(`button`,{type:`button`,className:t.applyBtn,onClick:closePanel,children:O})]})]})]})}export{DateRangePicker};
|
package/dist/node/dock/dock.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./dock.module.js";import{getLinkComponent as t,useSignals as n}from"@cascivo/core";import{builtin as r,t as i}from"@cascivo/i18n";import{jsx as a,jsxs as o}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./dock.module.js";import{getLinkComponent as t,useSignals as n}from"@cascivo/core";import{builtin as r,t as i}from"@cascivo/i18n";import{jsx as a,jsxs as o}from"react/jsx-runtime";function Dock({items:s,activeIndex:c,className:l,ariaLabel:u,label:d}){return n(),a(`nav`,{"aria-label":u??d??i(r.dock.nav),className:[e.dock,l].filter(Boolean).join(` `),children:s.map((n,r)=>{let i=r===c;return o(n.href?t():`button`,{className:e.item,"data-active":i||void 0,"aria-current":i?`page`:void 0,...n.href?{href:n.href}:{},type:n.href?void 0:`button`,onClick:n.onClick,children:[a(`span`,{className:e.icon,"aria-hidden":`true`,children:n.icon}),a(`span`,{className:e.label,children:n.label})]},n.id??`${r}-${n.label}`)})})}export{Dock};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./drawer.module.js";import{useId as t}from"react";import{DismissableLayer as n,FocusScope as r,Portal as i,Presence as a,cn as o,useControllableSignal as s,useDraggable as c,useScrollLock as l,useSignals as u}from"@cascivo/core";import{builtin as d,t as f}from"@cascivo/i18n";import{jsx as p,jsxs as m}from"react/jsx-runtime";var h=80;function
|
|
1
|
+
"use client";import e from"./drawer.module.js";import{useId as t}from"react";import{DismissableLayer as n,FocusScope as r,Portal as i,Presence as a,cn as o,useControllableSignal as s,useDraggable as c,useScrollLock as l,useSignals as u}from"@cascivo/core";import{builtin as d,t as f}from"@cascivo/i18n";import{jsx as p,jsxs as m}from"react/jsx-runtime";var h=80;function Drawer({open:g,defaultOpen:_,onOpenChange:v,side:y=`end`,size:b,title:x,description:S,children:C,labels:w,className:T,swipeToDismiss:E=!1}){u();let[D,O]=s({value:g,defaultValue:_??!1,onChange:v});l(D);let k=y===`top`||y===`bottom`?`y`:`x`,{handleRef:A,offset:j,isDragging:M,reset:N}=c({isDisabled:!E,axis:k,onDragEnd:e=>{let t=k===`y`?e.y:e.x,n=y===`end`&&t>h||y===`start`&&t<-80||y===`bottom`&&t>h||y===`top`&&t<-80;N(),n&&O(!1)}}),P=t(),F=t(),I=w?.close??f(d.drawer.close),L={...b?{"--_drawer-size":b}:{},...E?{"--_drawer-drag-x":`${j.value.x}px`,"--_drawer-drag-y":`${j.value.y}px`}:{}};return p(i,{children:p(a,{present:D,children:p(`div`,{className:e.overlay,"data-side":y,children:p(n,{onDismiss:()=>O(!1),children:p(r,{trapped:!0,restoreFocus:!0,autoFocus:!0,children:m(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":x?P:void 0,"aria-describedby":S?F:void 0,"data-side":y,"data-dragging":E&&M.value?``:void 0,className:o(e.panel,T),style:L,children:[(x||S)&&m(`div`,{className:e.header,ref:E?A:void 0,children:[m(`div`,{className:e.heading,children:[x&&p(`h2`,{id:P,className:e.title,children:x}),S&&p(`p`,{id:F,className:e.description,children:S})]}),p(`button`,{type:`button`,"aria-label":I,onClick:()=>O(!1),className:e.close,children:p(`svg`,{"aria-hidden":`true`,viewBox:`0 0 16 16`,className:e.closeIcon,children:p(`path`,{d:`M4 4l8 8M12 4l-8 8`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})})]}),p(`div`,{className:e.body,"data-cascivo-drawer-body":``,children:C})]})})})})})})}export{Drawer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./dropdown.module.js";import{cloneElement as t,useRef as n}from"react";import{composeRefs as r,createMachine as i,focusElement as a,useEffectPropSignal as o,useMachine as s,useSignal as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{jsx as d,jsxs as f}from"react/jsx-runtime";var p=i({initial:`closed`,states:{closed:{on:{OPEN:`open`}},open:{on:{CLOSE:`closed`}}}});function
|
|
1
|
+
"use client";import e from"./dropdown.module.js";import{cloneElement as t,useRef as n}from"react";import{composeRefs as r,createMachine as i,focusElement as a,useEffectPropSignal as o,useMachine as s,useSignal as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{jsx as d,jsxs as f}from"react/jsx-runtime";var p=i({initial:`closed`,states:{closed:{on:{OPEN:`open`}},open:{on:{CLOSE:`closed`}}}});function isMenuItem(e){return!(`kind`in e)}function Dropdown({trigger:i,items:m,onSelect:h,placement:g=`bottom-start`,open:_,onOpenChange:v}){u();let[y,b]=s(p),x=n(null),S=n(null),C=n(null),w=n([]),T=c(-1),E=_!==void 0,D=E?_:y.value===`open`,O=o(D),k=m.map((e,t)=>({item:e,index:t})).filter(({item:e})=>isMenuItem(e)&&!e.disabled).map(({index:e})=>e),setOpen=e=>{E||b(e?`OPEN`:`CLOSE`),v?.(e)};l(()=>{let e=T.value;O.value&&e>=0&&w.current[e]?.focus()}),l(()=>{O.value?T.value=k[0]??-1:T.value=-1}),l(()=>{O.value?C.current?.showPopover():C.current?.hidePopover()}),l(()=>{let e=C.current;if(!e)return;let handleToggle=e=>{e.newState===`closed`&&setOpen(!1)};return e.addEventListener(`toggle`,handleToggle),()=>e.removeEventListener(`toggle`,handleToggle)});let selectAt=e=>{let t=m[e];!t||!isMenuItem(t)||t.disabled||(h?.(t.value),setOpen(!1),a(S.current))},moveActive=e=>{k.length!==0&&(T.value=k[(k.indexOf(T.value)+e+k.length)%k.length]??-1)},handleMenuKeyDown=e=>{switch(e.key){case`ArrowDown`:e.preventDefault(),moveActive(1);break;case`ArrowUp`:e.preventDefault(),moveActive(-1);break;case`Home`:e.preventDefault(),T.value=k[0]??-1;break;case`End`:e.preventDefault(),T.value=k[k.length-1]??-1;break;case`Escape`:e.preventDefault(),setOpen(!1),a(S.current);break;case`Enter`:case` `:e.preventDefault(),selectAt(T.value);break}},A=i,j=t(A,{ref:r(S,A.props.ref),onClick:e=>{A.props.onClick?.(e),setOpen(!D)},"aria-haspopup":`menu`,"aria-expanded":D});return f(`div`,{ref:x,className:e.root,children:[j,d(`div`,{ref:C,popover:`auto`,role:`menu`,"data-placement":g,"data-state":D?`open`:`closed`,className:e.menu,onKeyDown:handleMenuKeyDown,children:m.map((t,n)=>isMenuItem(t)?f(`button`,{type:`button`,role:`menuitem`,ref:e=>{w.current[n]=e},tabIndex:T.value===n?0:-1,disabled:t.disabled,className:e.item,onClick:()=>selectAt(n),children:[t.icon&&d(`span`,{className:e.icon,"aria-hidden":`true`,children:t.icon}),t.label]},t.value):d(`div`,{role:`separator`,className:e.separator},`sep-${n}`))})]})}export{Dropdown};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./editable.module.js";import{useRef as t}from"react";import{cn as n,useSignal as r,useSignals as i}from"@cascivo/core";import{jsx as a,jsxs as o}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./editable.module.js";import{useRef as t}from"react";import{cn as n,useSignal as r,useSignals as i}from"@cascivo/core";import{jsx as a,jsxs as o}from"react/jsx-runtime";function focusOnMount(e){e&&(e.focus(),e.select())}function Editable({value:s,onValueChange:c,placeholder:l,disabled:u=!1,submitOnBlur:d=!0,onCancel:f,className:p,id:m,"aria-label":h,"aria-labelledby":g,"aria-describedby":_,"aria-invalid":v,tabIndex:y,...b}){i();let x=r(!1),S=r(s),C=t(f);C.current=f;let w=t(c);w.current=c;let T={id:m,"aria-label":h,"aria-labelledby":g,"aria-describedby":_,"aria-invalid":v,tabIndex:y};x.value||(S.value=s);function confirm(){w.current(S.value),x.value=!1}function cancel(){S.value=s,x.value=!1,C.current?.()}return x.value?a(`div`,{className:n(e.wrapper,e.editing,p),...b,children:a(`input`,{ref:focusOnMount,className:e.input,...T,value:S.value,onChange:e=>{S.value=e.currentTarget.value},onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),confirm()):e.key===`Escape`&&(e.preventDefault(),cancel())},onBlur:()=>{d?confirm():cancel()}})}):a(`div`,{className:n(e.wrapper,p),"data-disabled":u?``:void 0,...b,children:o(`button`,{type:`button`,className:e.preview,...T,disabled:u,onClick:()=>{u||(x.value=!0)},children:[a(`span`,{className:e[`preview-text`],children:s||a(`span`,{className:e.placeholder,children:l})}),a(`span`,{className:e[`edit-icon`],"aria-hidden":`true`})]})})}export{Editable};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./empty-state.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./empty-state.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function EmptyState({icon:i,title:a,description:o,action:s,size:c=`md`,className:l,...u}){return r(`div`,{"data-size":c,className:t(e[`empty-state`],l),...u,children:[i&&n(`span`,{className:e.icon,"aria-hidden":`true`,children:i}),n(`h3`,{className:e.title,children:a}),o&&n(`p`,{className:e.description,children:o}),s&&n(`div`,{className:e.action,children:s})]})}export{EmptyState};
|
package/dist/node/fab/fab.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./fab.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,useControllableSignal as s,useRovingFocus as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{jsx as d,jsxs as f}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./fab.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,useControllableSignal as s,useRovingFocus as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{jsx as d,jsxs as f}from"react/jsx-runtime";function Fab({children:p,ariaLabel:m,label:h,onClick:g,actions:_,position:v=`bottom-end`,open:y,defaultOpen:b,onOpenChange:x,className:S}){u();let C=_!=null&&_.length>0,[w,T]=s({value:y,defaultValue:b??!1,onChange:x}),E=c({orientation:`vertical`,loop:!0}),D=n(null),O=n(null),k=t(),A=n(!1);l(()=>{let e=C&&w.value;e&&!A.current?O.current?.querySelector(`[role="menuitem"]:not([aria-disabled="true"])`)?.focus():!e&&A.current&&o(D.current),A.current=e});let selectAction=e=>{e.disabled||(e.onSelect(),T(!1))},j=d(`button`,{ref:D,type:`button`,"aria-label":h??m,className:e.fab,...C?{"aria-haspopup":`menu`,"aria-expanded":w.value,"aria-controls":k,"data-state":w.value?`open`:`closed`,onClick:()=>T(!w.value)}:{onClick:g},children:d(`span`,{className:e.icon,"aria-hidden":`true`,children:p})});return C?d(r,{onDismiss:()=>T(!1),escapeDismisses:w.value,disableOutsidePointer:!w.value,children:f(`div`,{className:a(e.root,S),"data-position":v,children:[d(i,{present:w,children:d(`menu`,{ref:O,id:k,role:`menu`,"aria-label":h??m,className:e.dial,children:_.map((t,n)=>{let r=E.getItemProps(n);return d(`li`,{role:`presentation`,className:e.dialItem,children:f(`button`,{ref:r.ref,type:`button`,role:`menuitem`,tabIndex:r.tabIndex,"aria-disabled":t.disabled||void 0,className:e.action,onKeyDown:r.onKeyDown,onFocus:r.onFocus,onClick:()=>selectAction(t),children:[d(`span`,{className:e.actionLabel,children:t.label}),d(`span`,{className:e.actionIcon,"aria-hidden":`true`,children:t.icon})]})},t.id??n)})})}),j]})}):d(`div`,{className:a(e.root,S),"data-position":v,children:j})}export{Fab};
|
package/dist/node/field/field.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Label as e}from"../label/label.js";import t from"./field.module.js";import{cn as n,useId as r}from"@cascivo/core/pure";import{Children as i,cloneElement as a,isValidElement as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";var l=new Set;function
|
|
1
|
+
import{Label as e}from"../label/label.js";import t from"./field.module.js";import{cn as n,useId as r}from"@cascivo/core/pure";import{Children as i,cloneElement as a,isValidElement as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";var l=new Set;function isDev(){return globalThis.process?.env?.NODE_ENV!==`production`}function warnIfDoubleLabel(e,t){if(!isDev()||e==null||t.props.label==null)return;let n=String(e);l.has(n)||(l.add(n),console.warn(`cascivo Field: both the Field and its child control define a \`label\` (${n}). Omit the child's \`label\` inside a Field — it renders a second <label> for the same control. The Field owns the label.`))}var u=new Set;function warnIfDoubleHint(e,t){if(!isDev()||e==null||t.props.hint==null)return;let n=String(e);u.has(n)||(u.add(n),console.warn(`cascivo Field: both the Field and its child control define supporting text (${n}). Omit the child's \`hint\` inside a Field — the Field owns it, and only the Field's is wired into aria-describedby.`))}function Field({label:l,description:u,hint:d,error:f,required:p=!1,disabled:m=!1,id:h,children:g,className:_}){let v=u??d,y=r(`cascade-field`),b=h??y,x=`${b}-description`,S=`${b}-error`,C=`${b}-label`,w=[v?x:null,f?S:null].filter(Boolean).join(` `)||void 0,T={id:b};l!=null&&(T[`aria-labelledby`]=C),w&&(T[`aria-describedby`]=w),f&&(T[`aria-invalid`]=!0),(m||g.props.disabled)&&(T.disabled=!0),o(g)&&(warnIfDoubleLabel(l,g),warnIfDoubleHint(v,g));let E=o(g)?a(i.only(g),T):g;return c(`div`,{className:n(t.field,_),"data-disabled":m?``:void 0,children:[l&&s(e,{id:C,htmlFor:b,required:p,disabled:m,children:l}),E,v&&s(`p`,{id:x,className:t.description,children:v}),f&&s(`p`,{id:S,role:`alert`,className:t.error,children:f})]})}export{Field};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Spinner as e}from"../spinner/spinner.js";import t from"./file-uploader.module.js";import{useRef as n}from"react";import{cn as r,useId as i,useSignal as a,useSignals as o}from"@cascivo/core";import{builtin as s,currentLocale as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import{Spinner as e}from"../spinner/spinner.js";import t from"./file-uploader.module.js";import{useRef as n}from"react";import{cn as r,useId as i,useSignal as a,useSignals as o}from"@cascivo/core";import{builtin as s,currentLocale as c,t as l}from"@cascivo/i18n";import{jsx as u,jsxs as d}from"react/jsx-runtime";function matchesAccept(e,t){let n=t.split(`,`).map(e=>e.trim()).filter(Boolean);return n.length===0?!0:n.some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t.toLowerCase()):t.endsWith(`/*`)?e.type.startsWith(t.slice(0,-1)):e.type===t)}function formatSize(e,t){let[n,r]=e>=1024*1024?[e/(1024*1024),`megabyte`]:e>=1024?[e/1024,`kilobyte`]:[e,`byte`];try{return new Intl.NumberFormat(t,{style:`unit`,unit:r,unitDisplay:`short`,maximumFractionDigits:r===`byte`?0:1}).format(n)}catch{return new Intl.NumberFormat(t,{maximumFractionDigits:r===`byte`?0:1}).format(n)}}function statusSummary(e,t,n,r){return e.some(e=>e.status===`error`)?r:e.some(e=>e.status===`uploading`)?t:n}function FileUploader({files:f=[],onFilesAdded:p,onRemove:m,multiple:h=!1,accept:g,maxSize:_,onRejected:v,label:y,ariaLabel:b,hint:x,labels:S,disabled:C=!1,className:w}){o();let T=c(),E=n(null),D=a(!1),O=y??S?.label??l(s.fileUploader.label),k=S?.drop??l(s.fileUploader.drop),A=S?.uploading??l(s.fileUploader.uploading),j=S?.complete??l(s.fileUploader.complete),M=S?.error??l(s.fileUploader.error),resolveRemove=e=>S?.remove?S.remove.replaceAll(`{name}`,e):l(s.fileUploader.remove,{name:e}),N=i(`cascivo-uploader`),P=`${N}-label`,F=`${N}-hint`,I=`${N}-status`,processFiles=e=>{if(!e||e.length===0)return;let t=h?Array.from(e):Array.from(e).slice(0,1),n=[],r=[],i=[];for(let e of t)g&&!matchesAccept(e,g)?r.push(e):_!==void 0&&e.size>_?i.push(e):n.push(e);r.length>0&&v?.(r,`type`),i.length>0&&v?.(i,`size`),n.length>0&&p?.(n)};return d(`div`,{className:r(t.uploader,w),children:[u(`span`,{id:P,className:t.label,children:O}),u(`input`,{ref:E,type:`file`,className:t.input,tabIndex:-1,"aria-labelledby":P,multiple:h,accept:g,disabled:C,onChange:e=>{processFiles(e.target.files),e.target.value=``}}),u(`button`,{type:`button`,className:t.zone,"data-state":D.value?`dragover`:`idle`,disabled:C,"aria-labelledby":b?void 0:P,"aria-label":b,"aria-describedby":x?F:void 0,onClick:()=>E.current?.click(),onDragEnter:e=>{e.preventDefault(),C||(D.value=!0)},onDragOver:e=>{e.preventDefault(),C||(e.dataTransfer.dropEffect=`copy`)},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||(D.value=!1)},onDrop:e=>{e.preventDefault(),D.value=!1,!C&&processFiles(e.dataTransfer.files)},children:u(`span`,{className:t.zoneText,children:k})}),x&&u(`span`,{id:F,className:t.hint,children:x}),u(`span`,{id:I,className:t.srOnly,role:`status`,"aria-live":`polite`,children:f.length>0?l(s.fileUploader.status,{count:f.length,state:statusSummary(f,A,j,M)}):``}),f.length>0&&u(`ul`,{className:t.list,children:f.map(n=>d(`li`,{className:t.file,"data-state":n.status,children:[d(`span`,{className:t.status,children:[n.status===`uploading`&&u(e,{size:`sm`,label:A}),n.status===`complete`&&u(`span`,{className:t[`glyph-complete`],role:`img`,"aria-label":j,children:`✓`}),n.status===`error`&&u(`span`,{className:t[`glyph-error`],role:`img`,"aria-label":M,children:`✕`})]}),u(`span`,{className:t.name,children:n.name}),n.size!==void 0&&u(`span`,{className:t.size,children:formatSize(n.size,T)}),u(`button`,{type:`button`,className:t.remove,"aria-label":resolveRemove(n.name),disabled:C,onClick:()=>m?.(n.id),children:`✕`}),n.status===`error`&&n.errorMessage&&u(`span`,{className:t[`error-message`],role:`alert`,children:n.errorMessage})]},n.id))})]})}export{FileUploader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./filter.module.js";import{useControllableSignal as t,useSignals as n}from"@cascivo/core";import{jsx as r}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./filter.module.js";import{useControllableSignal as t,useSignals as n}from"@cascivo/core";import{jsx as r}from"react/jsx-runtime";function Filter({options:i,value:a,defaultValue:o=[],onValueChange:s,multi:c=!1,multiple:l,variant:u=`pill`,className:d,ariaLabel:f,label:p,...m}){n();let h=l??c,[g,_]=t({value:a,defaultValue:o,onChange:s});function toggle(e){let t=g.value,n;n=h?t.includes(e)?t.filter(t=>t!==e):[...t,e]:t.includes(e)?[]:[e],_(n)}return r(`div`,{role:`group`,className:[e.filter,d].filter(Boolean).join(` `),"data-variant":u,"aria-label":m[`aria-label`]??f??p,...m,children:i.map(t=>r(`button`,{type:`button`,className:e.item,"data-selected":g.value.includes(t.value)||void 0,onClick:()=>toggle(t.value),"aria-pressed":g.value.includes(t.value),children:t.label},t.value))})}export{Filter};
|
package/dist/node/form/form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./form.module.js";import{batch as t,cn as n,signal as r,useSignal as i,useSignals as a}from"@cascivo/core";import{jsx as o}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./form.module.js";import{batch as t,cn as n,signal as r,useSignal as i,useSignals as a}from"@cascivo/core";import{jsx as o}from"react/jsx-runtime";function pathHead(e){let t=e[0];return t===void 0?``:String(typeof t==`string`||typeof t==`number`?t:t.key)}async function runSchema(e,t){let n=await e[`~standard`].validate(t);if(!(`issues`in n)||n.issues===void 0)return{};let r={};for(let e of n.issues){let t=e.path&&e.path.length>0?pathHead(e.path):``;t&&!(t in r)&&(r[t]=e.message)}return r}function createForm(e){let n=r({...e.initialValues}),i=r({}),a=r({}),o=r(!1),validateValues=async t=>{let n={};return e.schema&&(n=await runSchema(e.schema,t)),Object.keys(n).length===0&&e.validate&&(n=await e.validate(t)),n},s=0,setValue=(t,r)=>{if(n.value={...n.value,[t]:r},!e.validateOnChange)return;let a=++s;validateValues(n.value).then(e=>{if(a!==s)return;let n={...i.value},r=e[t];r===void 0?delete n[t]:n[t]=r,i.value=n})};return{values:n,errors:i,touched:a,submitting:o,setValue,field(e){return{get value(){return n.value[e]},onChange:t=>setValue(e,t),onBlur:()=>{a.value={...a.value,[e]:!0}},get error(){return i.value[e]}}},async submit(r){o.value=!0;try{let o=await validateValues(n.value),s=Object.fromEntries(Object.keys(e.initialValues).map(e=>[e,!0]));t(()=>{i.value=o,a.value=s}),Object.keys(o).length===0&&await r(n.value)}finally{o.value=!1}},reset(){t(()=>{n.value={...e.initialValues},i.value={},a.value={}})}}}function useForm(e){a();let t=i(null);return t.peek()===null&&(t.value=createForm(e)),t.peek()}function Form({form:t,onValid:r,children:i,className:a,...s}){return o(`form`,{noValidate:!0,className:n(e.form,a),onSubmit:e=>{e.preventDefault(),t.submit(r)},...s,children:i})}export{Form,createForm,useForm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./header.module.js";import{cn as t,getLinkComponent as n,useSignals as r}from"@cascivo/core";import{builtin as i,t as a}from"@cascivo/i18n";import{jsx as o,jsxs as s}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./header.module.js";import{cn as t,getLinkComponent as n,useSignals as r}from"@cascivo/core";import{builtin as i,t as a}from"@cascivo/i18n";import{jsx as o,jsxs as s}from"react/jsx-runtime";function Header({brand:c,links:l,actions:u,sticky:d=!1,labels:f,className:p,...m}){r();let h=n(),g=f?.nav??a(i.header.nav);return s(`header`,{role:`banner`,"data-sticky":d||void 0,className:t(e.header,p),...m,children:[c&&o(`div`,{className:e.brand,children:c}),l&&l.length>0&&o(`nav`,{"aria-label":g,className:e.nav,children:o(`ul`,{className:e.list,children:l.map((t,n)=>o(`li`,{children:o(h,{href:t.href,"aria-current":t.active?`page`:void 0,"data-state":t.active?`active`:void 0,className:e.link,children:t.label})},t.id??`${n}-${t.href}`))})}),o(`div`,{className:e.spacer}),u&&o(`div`,{className:e.actions,children:u})]})}export{Header};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./header-panel.module.js";import{useRef as t}from"react";import{cn as n,focusElement as r,useEffectPropSignal as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{jsx as l,jsxs as u}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./header-panel.module.js";import{useRef as t}from"react";import{cn as n,focusElement as r,useEffectPropSignal as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{jsx as l,jsxs as u}from"react/jsx-runtime";function HeaderPanel({open:d,onClose:f,label:p,children:m,labels:h,className:g}){o();let _=t(null),v=t(null),y=i(d),b=t(f);return b.current=f,a(()=>{let e=_.current;if(e)if(y.value){v.current=document.activeElement;try{e.showPopover()}catch{}e.focus()}else{try{e.hidePopover()}catch{}r(v.current),v.current=null}}),a(()=>{let e=_.current;if(!e)return;let handler=e=>{let t=`newState`in e?e.newState===`closed`:!0;y.peek()&&t&&b.current()};return e.addEventListener(`toggle`,handler),()=>e.removeEventListener(`toggle`,handler)}),u(`div`,{ref:_,popover:`auto`,role:`region`,"aria-label":p,tabIndex:-1,"data-state":d?`open`:`closed`,className:n(e.panel,g),children:[u(`div`,{className:e.header,children:[l(`span`,{className:e.title,children:p}),l(`button`,{type:`button`,"aria-label":h?.close??c(s.headerPanel.close),className:e.close,onClick:()=>b.current(),children:l(`svg`,{viewBox:`0 0 16 16`,width:`14`,height:`14`,"aria-hidden":`true`,children:l(`path`,{d:`M4 4l8 8M12 4l-8 8`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})})]}),l(`div`,{className:e.body,children:m})]})}export{HeaderPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./heading.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";var r={1:`2xl`,2:`xl`,3:`lg`,4:`md`,5:`sm`,6:`sm`};function
|
|
1
|
+
import e from"./heading.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";var r={1:`2xl`,2:`xl`,3:`lg`,4:`md`,5:`sm`,6:`sm`};function Heading({level:i=2,size:a,className:o,children:s,...c}){return n(`h${i}`,{"data-size":a??r[i],className:t(e.heading,o),...c,children:s})}export{Heading};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{usePopover as e}from"../popover/use-popover.js";import t from"./hover-card.module.js";import{createContext as n,useRef as r}from"react";import{useSignalEffect as i,useSignals as a}from"@cascivo/core";import{jsx as o}from"react/jsx-runtime";var s=n(null);function
|
|
1
|
+
"use client";import{usePopover as e}from"../popover/use-popover.js";import t from"./hover-card.module.js";import{createContext as n,useRef as r}from"react";import{useSignalEffect as i,useSignals as a}from"@cascivo/core";import{jsx as o}from"react/jsx-runtime";var s=n(null);function HoverCard({children:t,openDelay:n=300,closeDelay:a=100}){let c=e(),l=r(void 0),u=r(void 0),d=r(n);d.current=n;let f=r(a);f.current=a;let p={...c,open:()=>{clearTimeout(u.current),l.current=setTimeout(()=>{c.isOpen.value=!0},d.current)},close:()=>{clearTimeout(l.current),u.current=setTimeout(()=>{c.isOpen.value=!1},f.current)}};return i(()=>()=>{clearTimeout(l.current),clearTimeout(u.current)}),o(s.Provider,{value:p,children:t})}function HoverCardTriggerInner({ctx:e,children:n}){a();let{triggerRef:r,anchorName:i,open:s,close:c}=e;return o(`span`,{ref:r,style:{anchorName:i},onMouseEnter:s,onMouseLeave:c,onFocus:s,onBlur:c,className:t.trigger,children:n})}function HoverCardTrigger({children:e}){return o(s.Consumer,{children:t=>{if(!t)throw Error(`HoverCardTrigger must be inside <HoverCard>`);return o(HoverCardTriggerInner,{ctx:t,children:e})}})}function HoverCardContentInner({ctx:e,children:n,className:r}){a();let{popoverRef:i,anchorName:s,isOpen:c,open:l,close:u}=e;return o(`div`,{ref:i,popover:`auto`,role:`complementary`,"data-state":c.value?`open`:`closed`,style:{positionAnchor:s},onMouseEnter:l,onMouseLeave:u,className:[t.content,r].filter(Boolean).join(` `),children:n})}function HoverCardContent({children:e,className:t}){return o(s.Consumer,{children:n=>{if(!n)throw Error(`HoverCardContent must be inside <HoverCard>`);return o(HoverCardContentInner,{ctx:n,...t!==void 0&&{className:t},children:e})}})}export{HoverCard,HoverCardContent,HoverCardTrigger};
|
package/dist/node/image/image.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./image.module.js";import{cn as t,createMachine as n,useMachine as r,useSignals as i}from"@cascivo/core";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=n({initial:`loading`,states:{loading:{on:{LOADED:`loaded`,ERROR:`error`}},loaded:{},error:{}}});function
|
|
1
|
+
"use client";import e from"./image.module.js";import{cn as t,createMachine as n,useMachine as r,useSignals as i}from"@cascivo/core";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=n({initial:`loading`,states:{loading:{on:{LOADED:`loaded`,ERROR:`error`}},loaded:{},error:{}}});function Image({src:n,alt:c=``,fallbackSrc:l,width:u,height:d,radius:f=`md`,zoom:p=!1,removeWrapper:m=!1,isBlurred:h=!1,className:g,style:_,...v}){i();let[y,b]=r(s),x=y.value===`error`,S=x&&!l,C=x&&l?l:n,w={...u!==void 0&&{inlineSize:u},...d!==void 0&&{blockSize:d}};return m?a(`img`,{className:t(e.image,g),src:C,alt:c,onLoad:()=>b(`LOADED`),onError:()=>b(`ERROR`),style:{...w,..._},...v}):o(`span`,{"data-state":y.value,"data-radius":f,"data-zoom":p||void 0,"data-blurred":h||void 0,className:t(e.wrapper,g),style:{...w,..._},role:S?`img`:void 0,"aria-label":S?c:void 0,children:[y.value===`loading`&&a(`span`,{className:e.placeholder,"aria-hidden":`true`}),S?a(`span`,{className:e.fallback,"aria-hidden":`true`}):a(`img`,{className:e.image,src:C,alt:c,onLoad:()=>b(`LOADED`),onError:()=>b(`ERROR`),...v})]})}export{Image};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./indicator.module.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./indicator.module.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";function Indicator({children:r,overlay:i,placement:a=`top-end`,className:o}){return n(`div`,{className:[e.indicator,o].filter(Boolean).join(` `),"data-placement":a,children:[r,t(`div`,{className:e.overlay,"aria-hidden":!0,children:i})]})}export{Indicator};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Spinner as e}from"../spinner/spinner.js";import t from"./infinite-scroll.module.js";import{useRef as n}from"react";import{cn as r,useSignal as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{jsx as l,jsxs as u}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import{Spinner as e}from"../spinner/spinner.js";import t from"./infinite-scroll.module.js";import{useRef as n}from"react";import{cn as r,useSignal as i,useSignalEffect as a,useSignals as o}from"@cascivo/core";import{builtin as s,t as c}from"@cascivo/i18n";import{jsx as l,jsxs as u}from"react/jsx-runtime";function InfiniteScroll({onLoadMore:d,disabled:f=!1,rootMargin:p=`200px`,labels:m,className:h}){o();let g=n(null),_=i(!1),v=n(d);v.current=d;let y=n(f);y.current=f;let load=()=>{_.value||y.current||(_.value=!0,Promise.resolve(v.current()).then(()=>{_.value=!1},()=>{_.value=!1}))},b=n(load);return b.current=load,a(()=>{let e=g.current;if(!e||f||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&b.current()},{rootMargin:p});return t.observe(e),()=>t.disconnect()}),f?null:l(`div`,{ref:g,className:r(t.root,h),children:_.value?u(`span`,{className:t.status,role:`status`,children:[l(e,{size:`sm`,"aria-hidden":`true`}),m?.loading??c(s.infiniteScroll.loading)]}):l(`button`,{type:`button`,className:t.button,onClick:load,children:m?.loadMore??c(s.infiniteScroll.loadMore)})})}export{InfiniteScroll};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Spinner as e}from"../spinner/spinner.js";import t from"./inline-loading.module.js";import{cn as n}from"@cascivo/core/pure";import{builtin as r,t as i}from"@cascivo/i18n";import{jsx as a,jsxs as o}from"react/jsx-runtime";function
|
|
1
|
+
import{Spinner as e}from"../spinner/spinner.js";import t from"./inline-loading.module.js";import{cn as n}from"@cascivo/core/pure";import{builtin as r,t as i}from"@cascivo/i18n";import{jsx as a,jsxs as o}from"react/jsx-runtime";function defaultLabel(e,t){switch(e){case`active`:return t?.active??i(r.inlineLoading.active);case`finished`:return t?.finished??i(r.inlineLoading.finished);case`error`:return t?.error??i(r.inlineLoading.error);default:return``}}function StatusIcon({status:n}){return n===`active`?a(e,{size:`sm`,className:t.spinner}):n===`finished`?a(`svg`,{className:t.icon,viewBox:`0 0 16 16`,width:`16`,height:`16`,fill:`none`,"aria-hidden":`true`,children:a(`path`,{d:`M3.5 8.5l3 3 6-7`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})}):n===`error`?o(`svg`,{className:t.icon,viewBox:`0 0 16 16`,width:`16`,height:`16`,fill:`none`,"aria-hidden":`true`,children:[a(`path`,{d:`M8 4.5v4M8 11h.01`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`}),a(`circle`,{cx:`8`,cy:`8`,r:`6.25`,stroke:`currentColor`,strokeWidth:`1.5`})]}):null}function InlineLoading({status:e,label:r,labels:i,className:s,...c}){let l=r??defaultLabel(e,i);return o(`div`,{role:`status`,"aria-live":`polite`,"data-status":e,className:n(t[`inline-loading`],s),...c,children:[a(`span`,{className:t.indicator,"aria-hidden":`true`,children:a(StatusIcon,{status:e})}),l&&a(`span`,{className:t.label,children:l})]})}export{InlineLoading};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./input-group.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./input-group.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function InputGroupAddon({align:r=`inline-start`,children:i,className:a,...o}){return n(`span`,{className:t(e[`inline-addon`],a),"data-align":r,"aria-hidden":`true`,...o,children:i})}function InputGroup({prefix:i,suffix:a,children:o,className:s,...c}){return r(`div`,{className:t(e[`input-group`],s),"data-has-prefix":i?``:void 0,"data-has-suffix":a?``:void 0,...c,children:[i&&n(`span`,{className:e.addon,"data-position":`prefix`,children:i}),n(`span`,{className:e[`input-wrap`],children:o}),a&&n(`span`,{className:e.addon,"data-position":`suffix`,children:a})]})}export{InputGroup,InputGroupAddon};
|
package/dist/node/item/item.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./item.module.js";import{Slot as t,cn as n}from"@cascivo/core/pure";import{jsx as r}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./item.module.js";import{Slot as t,cn as n}from"@cascivo/core/pure";import{jsx as r}from"react/jsx-runtime";function Item({asChild:i=!1,variant:a=`default`,size:o=`md`,className:s,children:c,...l}){return r(i?t:`div`,{"data-variant":a,"data-size":o,className:n(e.item,s),...l,children:c})}function ItemMedia({className:t,children:i,...a}){return r(`div`,{className:n(e.media,t),...a,children:i})}function ItemContent({className:t,children:i,...a}){return r(`div`,{className:n(e.content,t),...a,children:i})}function ItemTitle({className:t,children:i,...a}){return r(`div`,{className:n(e.title,t),...a,children:i})}function ItemDescription({className:t,children:i,...a}){return r(`p`,{className:n(e.description,t),...a,children:i})}function ItemActions({className:t,children:i,...a}){return r(`div`,{className:n(e.actions,t),...a,children:i})}export{Item,ItemActions,ItemContent,ItemDescription,ItemMedia,ItemTitle};
|
package/dist/node/join/join.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./join.module.js";import{jsx as t}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./join.module.js";import{jsx as t}from"react/jsx-runtime";function Join({children:n,orientation:r=`horizontal`,className:i}){return t(`div`,{className:[e.join,i].filter(Boolean).join(` `),"data-orientation":r,children:n})}export{Join};
|
package/dist/node/kbd/kbd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./kbd.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./kbd.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function Kbd({size:r=`md`,className:i,children:a,...o}){return n(`kbd`,{"data-size":r,className:t(e.kbd,i),...o,children:a})}export{Kbd};
|
package/dist/node/label/label.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./label.module.js";import{Slot as t,cn as n}from"@cascivo/core/pure";import{builtin as r,t as i}from"@cascivo/i18n";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./label.module.js";import{Slot as t,cn as n}from"@cascivo/core/pure";import{builtin as r,t as i}from"@cascivo/i18n";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";function Label({asChild:c=!1,required:l=!1,disabled:u=!1,className:d,children:f,labels:p,...m}){let h=c?t:`label`,g=p?.required??i(r.label.required),_=l?s(a,{children:[o(`span`,{className:e.marker,"aria-hidden":`true`,children:`*`}),o(`span`,{className:e.srOnly,children:g})]}):null;return o(h,{"data-disabled":u?``:void 0,className:n(e.label,d),...m,children:_?s(a,{children:[f,_]}):f})}export{Label};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./large-title-header.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./large-title-header.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function LargeTitleHeader({title:i,children:a,leading:o,actions:s,level:c=1,collapseDistance:l=48,className:u}){let d=`h${c}`,f={"--_collapse":`${l}px`};return r(`div`,{className:t(e.root,u),style:f,children:[r(`div`,{className:e.bar,children:[n(`div`,{className:e.slot,children:o}),n(`span`,{"aria-hidden":`true`,className:e.compactTitle,children:i}),n(`div`,{className:t(e.slot,e.slotEnd),children:s})]}),n(d,{className:e.largeTitle,children:i}),a]})}export{LargeTitleHeader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./auto-grid.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./auto-grid.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function AutoGrid({min:r=`16rem`,gap:i=4,className:a,style:o,...s}){return n(`div`,{className:t(e[`auto-grid`],a),style:{"--_min":r,"--_gap":`var(--cascivo-space-${i})`,...o},...s})}export{AutoGrid};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./center.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./center.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function Center({maxWidth:r=`48rem`,className:i,style:a,...o}){return n(`div`,{className:t(e.center,i),style:{"--_center-max":r,...a},...o})}export{Center};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./columns.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./columns.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function Columns({count:r=2,gap:i=4,className:a,style:o,children:s,...c}){return n(`div`,{className:t(e[`columns-container`],a),style:{"--_cols":String(r),"--_gap":`var(--cascivo-space-${i})`,...o},...c,children:n(`div`,{className:e.columns,children:s})})}export{Columns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./flex.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./flex.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function Flex({direction:r=`vertical`,gap:i=4,align:a,justify:o,wrap:s=!1,className:c,style:l,...u}){return n(`div`,{className:t(e.flex,c),"data-direction":r,"data-wrap":s?``:void 0,style:{"--_flex-gap":`var(--cascivo-space-${i})`,...a?{alignItems:a===`start`||a===`end`?`flex-${a}`:a}:{},...o?{justifyContent:o===`between`?`space-between`:o===`start`||o===`end`?`flex-${o}`:o}:{},...l},...u})}function FlexItem({size:r=`auto`,basis:i,truncate:a=!1,className:o,style:s,...c}){return n(`div`,{className:t(e[`flex-item`],o),"data-size":r,"data-truncate":a?``:void 0,style:{...i===void 0?{}:{flexBasis:i},...s},...c})}export{Flex,FlexItem};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={flex:`
|
|
1
|
+
var e={flex:`_flex_39htm_2`,"flex-item":`_flex-item_39htm_19`};export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./grid.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./grid.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function isResponsive(e){return typeof e==`object`&&!!e}function responsiveVars(e,t){if(t===void 0)return{};if(!isResponsive(t))return{[e]:String(t)};let n={};t.base!==void 0&&(n[e]=String(t.base));for(let r of[`sm`,`md`,`lg`,`xl`]){let i=t[r];i!==void 0&&(n[`${e}-${r}`]=String(i))}return n}function Grid({cols:r=12,gap:i=4,align:a,justify:o,alignRows:s=!1,className:c,style:l,children:u,...d}){return n(`div`,{className:t(e[`grid-container`],c),style:{...responsiveVars(`--_grid-cols`,r),"--_grid-gap":`var(--cascivo-space-${i})`,...a?{"--_grid-align":a}:{},...o?{"--_grid-justify":o}:{},...l},...d,children:n(`div`,{className:e.grid,"data-responsive":isResponsive(r)?``:void 0,"data-align-rows":s?``:void 0,children:u})})}function GridItem({span:r,className:i,style:a,...o}){let s=r!==void 0&&isResponsive(r);return n(`div`,{className:t(e[`grid-item`],i),"data-responsive":s?``:void 0,style:{...responsiveVars(`--_span`,r),...a},...o})}export{Grid,GridItem};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./page-header.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./page-header.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n,jsxs as r}from"react/jsx-runtime";function PageHeader({title:i,description:a,breadcrumb:o,actions:s,className:c}){return r(`header`,{className:t(e.header,c),children:[o&&n(`div`,{className:e.breadcrumb,children:o}),r(`div`,{className:e.row,children:[n(`h1`,{className:e.title,children:i}),s&&n(`div`,{className:e.actions,children:s})]}),a&&n(`p`,{className:e.description,children:a})]})}export{PageHeader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./spacer.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./spacer.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function Spacer({size:r=4,className:i,style:a,...o}){return n(`div`,{role:`none`,className:t(e.spacer,i),style:{"--_spacer-size":`var(--cascivo-space-${r})`,...a},...o})}export{Spacer};
|
package/dist/node/list/list.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./list.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function
|
|
1
|
+
import e from"./list.module.js";import{cn as t}from"@cascivo/core/pure";import{jsx as n}from"react/jsx-runtime";function List({as:r=`ul`,marker:i,className:a,children:o,...s}){return n(r,{"data-marker":i??(r===`ol`?`decimal`:`disc`),className:t(e.list,a),...s,children:o})}function ListItem({className:r,children:i,...a}){return n(`li`,{className:t(e.item,r),...a,children:i})}export{List,ListItem};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import e from"./log-viewer.module.js";import{Fragment as t}from"react";import{VisuallyHidden as n,cn as r,useClipboard as i,useComputed as a,useControllableSignal as o,useResizeObserver as s,useSignal as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{builtin as d,t as f}from"@cascivo/i18n";import{
|
|
2
|
-
`)),children:I.value?D.copied:D.copy})]}),
|
|
1
|
+
"use client";import e from"./log-viewer.module.js";import{Fragment as t}from"react";import{VisuallyHidden as n,cn as r,useClipboard as i,useComputed as a,useControllableSignal as o,useResizeObserver as s,useSignal as c,useSignalEffect as l,useSignals as u}from"@cascivo/core";import{builtin as d,t as f}from"@cascivo/i18n";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";var g={30:`black`,31:`red`,32:`green`,33:`yellow`,34:`blue`,35:`magenta`,36:`cyan`,37:`white`,90:`bright-black`,91:`red`,92:`green`,93:`yellow`,94:`blue`,95:`magenta`,96:`cyan`,97:`white`};function parseAnsi(e){if(!e.includes(`\x1B[`))return[{text:e}];try{let t=[],n=/\[([0-9;]*)m/g,r=0,i,a=!1,o;for(;(o=n.exec(e))!==null;){o.index>r&&t.push({text:e.slice(r,o.index),color:i,bold:a});for(let e of o[1].split(`;`)){let t=Number(e||`0`);t===0?(i=void 0,a=!1):t===1?a=!0:t===22?a=!1:g[t]&&(i=g[t])}r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),color:i,bold:a}),t.length>0?t:[{text:e}]}catch{return[{text:e}]}}function highlight(e,t,n){if(!t)return e;let r=e.toLowerCase(),i=t.toLowerCase(),a=[],o=0,s=r.indexOf(i,o),c=0;for(;s!==-1;)s>o&&a.push(e.slice(o,s)),a.push(m(`mark`,{children:e.slice(s,s+i.length)},`${n}-${c++}`)),o=s+i.length,s=r.indexOf(i,o);return o<e.length&&a.push(e.slice(o)),a}function renderLine(t,n,r){let i=n?parseAnsi(t.text):[{text:t.text}];return h(p,{children:[t.timestamp!==void 0&&m(`span`,{className:e.timestamp,children:t.timestamp}),i.map((n,i)=>m(`span`,{"data-ansi":n.color,style:n.bold?{fontWeight:700}:void 0,className:n.color?e.ansi:void 0,children:highlight(n.text,r,`${String(t.id)}-${i}`)},i))]})}function LogViewer({lines:p,rowHeight:g=20,overscan:_=8,follow:v,onFollowChange:y,ansi:b=!1,search:x,maxHeight:S=`24rem`,timestampWidth:C=`6.5rem`,labels:w,className:T,...E}){u();let D={searchPlaceholder:w?.searchPlaceholder??f(d.logViewer.search),follow:w?.follow??f(d.logViewer.follow),paused:w?.paused??f(d.logViewer.paused),copy:w?.copy??f(d.logViewer.copy),copied:w?.copied??f(d.logViewer.copied),empty:w?.empty??f(d.logViewer.empty),label:f(d.logViewer.label)},O=c(Array.isArray(p)?p:[]);Array.isArray(p)&&(O.value=p);let k=Array.isArray(p)?O:p,{ref:A,size:j}=s(),M=c(0),[N,P]=o({value:v,defaultValue:!0,onChange:y}),F=c(x??``),{copied:I,copy:L}=i(),R=a(()=>{let e=k.value,t=e.length,n=j.value?.height??320,r=Math.max(0,t*g-n),i=N.value?r:M.value,a=Math.floor(i/g),o=Math.ceil(n/g)+_*2,s=Math.max(0,a-_),c=Math.min(t,s+o);return{total:t,start:s,end:c,rows:e.slice(s,c)}}),z=a(()=>{let e=F.value.trim().toLowerCase();if(!e)return 0;let t=0;for(let n of k.value)n.text.toLowerCase().includes(e)&&t++;return t});l(()=>{if(k.value,!N.value)return;let e=A.current;e&&(e.scrollTop=e.scrollHeight)});let onScroll=e=>{let t=e.currentTarget;M.value=t.scrollTop,P(t.scrollHeight-t.clientHeight-t.scrollTop<=g)},B=R.value,V=F.value.trim();return h(`div`,{className:r(e.root,T),style:{"--_timestamp-width":C},...E,children:[h(`div`,{className:e.toolbar,children:[m(`input`,{type:`search`,className:e.search,placeholder:D.searchPlaceholder,"aria-label":D.searchPlaceholder,value:F.value,onInput:e=>{F.value=e.currentTarget.value}}),V?m(`span`,{className:e.count,"aria-live":`polite`,children:f(d.logViewer.matches,{count:z.value})}):null,m(`span`,{className:e.spacer}),m(`button`,{type:`button`,className:e.toggle,"aria-pressed":N.value,onClick:()=>{let e=!N.value;if(P(e),e){let e=A.current;e&&(e.scrollTop=e.scrollHeight)}},children:N.value?D.follow:D.paused}),m(`button`,{type:`button`,className:e.copy,onClick:()=>void L(k.value.map(e=>e.text).join(`
|
|
2
|
+
`)),children:I.value?D.copied:D.copy})]}),m(`div`,{ref:A,className:e.scroll,role:`log`,"aria-live":`polite`,"aria-label":D.label,tabIndex:0,style:{maxBlockSize:S},onScroll,children:B.total===0?m(`div`,{className:e.empty,children:D.empty}):m(`div`,{className:e.sizer,style:{blockSize:B.total*g},children:B.rows.map((n,r)=>m(t,{children:m(`div`,{className:e.line,"data-level":n.level,style:{insetBlockStart:(B.start+r)*g,blockSize:g},children:renderLine(n,b,V)})},n.id))})}),m(n,{"aria-live":`polite`,children:f(d.logViewer.lines,{count:B.total})})]})}export{LogViewer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={root:`
|
|
1
|
+
var e={root:`_root_p7fwz_2`,toolbar:`_toolbar_p7fwz_11`,search:`_search_p7fwz_20`,count:`_count_p7fwz_33`,spacer:`_spacer_p7fwz_38`,toggle:`_toggle_p7fwz_42`,copy:`_copy_p7fwz_43`,scroll:`_scroll_p7fwz_81`,sizer:`_sizer_p7fwz_96`,line:`_line_p7fwz_101`,timestamp:`_timestamp_p7fwz_112`,ansi:`_ansi_p7fwz_137`,empty:`_empty_p7fwz_158`};export{e as default};
|
package/dist/node/menu/menu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{usePopover as e}from"../popover/use-popover.js";import t from"./menu.module.js";import{Children as n,createContext as r,isValidElement as i}from"react";import{useSignalEffect as a,useSignals as o,useTypeahead as s}from"@cascivo/core";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=r(null);function
|
|
1
|
+
"use client";import{usePopover as e}from"../popover/use-popover.js";import t from"./menu.module.js";import{Children as n,createContext as r,isValidElement as i}from"react";import{useSignalEffect as a,useSignals as o,useTypeahead as s}from"@cascivo/core";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=r(null);function MenuPanelInner({ctx:e,children:n}){o();let{popoverRef:r,anchorName:i,isOpen:l}=e,enabledItems=()=>{let e=r.current;return e?Array.from(e.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)):[]},focusItem=e=>{let t=enabledItems();t.length!==0&&t[e(t,t.indexOf(document.activeElement))]?.focus()},u=s({onMatch:e=>{enabledItems().find(t=>(t.textContent??``).trim().toLowerCase().startsWith(e))?.focus()}});return a(()=>{if(!l.value)return;let e=r.current;e&&e.querySelector(`[role="menuitem"]:not([aria-disabled="true"])`)?.focus()}),c(`div`,{ref:r,popover:`auto`,role:`menu`,"data-state":l.value?`open`:`closed`,style:{positionAnchor:i},className:t.panel,onKeyDown:e=>{switch(e.key){case`ArrowDown`:e.preventDefault(),focusItem((e,t)=>t<0?0:(t+1)%e.length);break;case`ArrowUp`:e.preventDefault(),focusItem((e,t)=>t<0?e.length-1:(t-1+e.length)%e.length);break;case`Home`:e.preventDefault(),focusItem(()=>0);break;case`End`:e.preventDefault(),focusItem(e=>e.length-1);break;default:u.onKeyDown(e)}},children:n})}function MenuPanel({children:e}){return c(u.Consumer,{children:t=>{if(!t)throw Error(`MenuPanel must be inside <Menu>`);return c(MenuPanelInner,{ctx:t,children:e})}})}function isDev(){return globalThis.process?.env?.NODE_ENV!==`production`}function Menu({children:t}){let r=e(),a=n.toArray(t),o=a.find(e=>i(e)&&e.type===MenuTrigger),s=a.filter(e=>e!==o);if(o===void 0&&isDev())throw Error(`<Menu> requires a <MenuTrigger> child. It is matched by component identity, so it may appear in any order — but it must be a direct child, not wrapped in a fragment or another component.`);return l(u.Provider,{value:r,children:[o,c(MenuPanel,{children:s})]})}function MenuTriggerInner({ctx:e,children:n,ariaLabel:r,"aria-label":i}){o();let{triggerRef:a,toggle:s,anchorName:l,isOpen:u}=e;return c(`button`,{ref:a,type:`button`,"aria-haspopup":`menu`,"aria-expanded":u.value,"aria-label":r??i,style:{anchorName:l},onClick:s,className:t.trigger,children:n})}function MenuTrigger({children:e,ariaLabel:t,"aria-label":n}){let r=t??n;return c(u.Consumer,{children:t=>{if(!t)throw Error(`MenuTrigger must be inside <Menu>`);return c(MenuTriggerInner,{ctx:t,...r!==void 0&&{ariaLabel:r},children:e})}})}function MenuItem({children:e,onSelect:n,disabled:r}){return c(u.Consumer,{children:i=>{if(!i)throw Error(`MenuItem must be inside <Menu>`);let{close:a}=i;function handleClick(){r||(n(),a())}function handleKeyDown(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),handleClick())}return c(`div`,{role:`menuitem`,tabIndex:r?-1:0,"aria-disabled":r,onClick:handleClick,onKeyDown:handleKeyDown,className:t.item,children:e})}})}function MenuSeparator(){return c(`div`,{role:`separator`,className:t.separator})}export{Menu,MenuItem,MenuSeparator,MenuTrigger};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./menu-button.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,cn as i,focusElement as a,useAnchorPosition as o,useSignal as s,useSignalEffect as c,useSignals as l}from"@cascivo/core";import{jsx as u,jsxs as d}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./menu-button.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,cn as i,focusElement as a,useAnchorPosition as o,useSignal as s,useSignalEffect as c,useSignals as l}from"@cascivo/core";import{jsx as u,jsxs as d}from"react/jsx-runtime";function focusItem(e,t){if(!e)return;let n=e.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`);n[t<0?n.length-1:t%n.length]?.focus()}function MenuButton({label:f,items:p,variant:m=`secondary`,size:h=`md`,disabled:g=!1,align:_=`start`,labels:v,className:y}){l();let b=s(!1),x=n(null),S=n(null),C=t(),{anchorStyle:w,floatingStyle:T}=o({anchorRef:x,floatingRef:S,placement:_===`end`?`bottom-end`:`bottom-start`,enabled:b});c(()=>{b.value&&focusItem(S.current,0)});function openMenu(e){g||(b.value=!0,queueMicrotask(()=>focusItem(S.current,e)))}function close(e){b.value=!1,e&&a(x.current)}function handleTriggerKeyDown(e){e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),openMenu(0)):e.key===`ArrowUp`&&(e.preventDefault(),openMenu(-1))}function handleItemKeyDown(e){if(e.key===`ArrowDown`){e.preventDefault();let t=e.currentTarget.nextElementSibling;t?t.focus():focusItem(S.current,0)}else if(e.key===`ArrowUp`){e.preventDefault();let t=e.currentTarget.previousElementSibling;t?t.focus():focusItem(S.current,-1)}else e.key===`Escape`?(e.preventDefault(),close(!0)):e.key===`Tab`&&close(!1)}function select(e){e.disabled||(e.onSelect?.(),close(!0))}return d(`div`,{className:i(e.root,y),children:[u(`button`,{ref:x,type:`button`,className:e.trigger,"data-variant":m,"data-size":h,disabled:g,"aria-haspopup":`menu`,"aria-expanded":b.value,"aria-controls":C,...v?.open!==void 0&&{"aria-label":v.open},style:w,onClick:()=>{b.value?close(!1):openMenu(0)},onKeyDown:handleTriggerKeyDown,children:f}),b.value?u(r,{onDismiss:()=>close(!0),children:u(`div`,{ref:S,id:C,role:`menu`,"data-state":`open`,"data-align":_,className:e.menu,style:T,children:p.map(t=>u(`div`,{role:`menuitem`,tabIndex:-1,"aria-disabled":t.disabled,className:e.item,onClick:()=>select(t),onKeyDown:e=>{e.key===`Enter`||e.key===` `?(e.preventDefault(),select(t)):handleItemKeyDown(e)},children:t.label},t.id))})}):null]})}export{MenuButton};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./menubar.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,useAnchorPosition as s,useRovingFocus as c,useSignal as l,useSignals as u}from"@cascivo/core";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./menubar.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,useAnchorPosition as s,useRovingFocus as c,useSignal as l,useSignals as u}from"@cascivo/core";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";function Menubar({menus:n,ariaLabel:r,"aria-label":i,className:o}){u();let s=t(),d=l(null),p=c({orientation:`horizontal`,loop:!0});return f(`div`,{role:`menubar`,"aria-label":r??i,className:a(e.menubar,o),children:n.map((e,t)=>f(MenubarTrigger,{menu:e,index:t,baseId:s,openId:d,itemProps:p.getItemProps(t)},e.id))})}function MenubarTrigger({menu:t,baseId:r,openId:a,itemProps:c}){u();let l=n(null),m=n(null),h=a.value===t.id,g=`${r}-menu-${t.id}`,{anchorStyle:_,floatingStyle:v}=s({anchorRef:l,floatingRef:m,placement:`bottom-start`,enabled:h}),focusFirstItem=()=>{(m.current?.querySelector(`[role="menuitem"]:not([aria-disabled="true"])`))?.focus()},handleKeyDown=e=>{c.onKeyDown(e),!e.defaultPrevented&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),a.value=t.id,requestAnimationFrame(focusFirstItem)):e.key===`Escape`&&(a.value=null))},{ref:y,onKeyDown:b,...x}=c;return p(d,{children:[f(`button`,{ref:e=>{l.current=e,y(e)},type:`button`,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":h,"aria-controls":g,"data-state":h?`open`:`closed`,className:e.trigger,style:_,onClick:()=>{a.value=h?null:t.id},onKeyDown:handleKeyDown,...x,children:t.label}),f(i,{present:h,children:f(MenubarPanel,{menu:t,menuId:g,floatingRef:m,floatingStyle:v,onClose:()=>{a.value=null,o(l.current)}})})]})}function MenubarPanel({menu:t,menuId:n,floatingRef:i,floatingStyle:a,onClose:o}){let handleItemKeyDown=e=>{let t=Array.from(i.current?.querySelectorAll(`[role="menuitem"]:not([aria-disabled="true"])`)??[]);if(t.length===0)return;let n=t.indexOf(e.currentTarget);e.key===`ArrowDown`?(e.preventDefault(),t[(n+1)%t.length]?.focus()):e.key===`ArrowUp`?(e.preventDefault(),t[(n-1+t.length)%t.length]?.focus()):e.key===`Home`?(e.preventDefault(),t[0]?.focus()):e.key===`End`&&(e.preventDefault(),t[t.length-1]?.focus())};return f(r,{onDismiss:o,children:f(`div`,{ref:i,id:n,role:`menu`,"aria-label":typeof t.label==`string`?t.label:void 0,className:e.panel,style:a,children:t.items.map(t=>f(`div`,{role:`menuitem`,tabIndex:-1,"aria-disabled":t.disabled,className:e.item,onClick:()=>{t.disabled||(t.onSelect?.(),o())},onKeyDown:e=>{t.disabled||(e.key===`Enter`||e.key===` `?(e.preventDefault(),t.onSelect?.(),o()):handleItemKeyDown(e))},children:t.label},t.id))})})}export{Menubar};
|
package/dist/node/modal/modal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./modal.module.js";import{useRef as t}from"react";import{cn as n,useDraggable as r,useEffectPropSignal as i,useId as a,useSignalEffect 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
|
|
1
|
+
"use client";import e from"./modal.module.js";import{useRef as t}from"react";import{cn as n,useDraggable as r,useEffectPropSignal as i,useId as a,useSignalEffect 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 Modal({open:f=!1,onClose:p,title:m,description:h,children:g,footer:_,className:v,size:y=`md`,draggable:b=!1}){s();let x=t(null),S=t(p);S.current=p;let C=a(`cascivo-modal-title`),w=a(`cascivo-modal-desc`),{handleRef:T,offset:E}=r({isDisabled:!b}),D=b?{"--modal-x":`${E.value.x}px`,"--modal-y":`${E.value.y}px`}:void 0,O=i(f);return o(()=>{let e=x.current;e&&(O.value?e.open||e.showModal():e.open&&e.close())}),o(()=>{let e=x.current;if(!e)return;let handler=()=>S.current?.();return e.addEventListener(`close`,handler),()=>e.removeEventListener(`close`,handler)}),u(`dialog`,{ref:x,"data-size":y,"data-draggable":b||void 0,className:n(e.dialog,v),style:D,onClick:e=>{e.target===x.current&&x.current?.close()},"aria-labelledby":m?C:void 0,"aria-describedby":h?w:void 0,children:d(`div`,{className:e.panel,children:[(m||p)&&d(`div`,{className:e.header,ref:b?e=>{T.current=e}:void 0,children:[m&&u(`h2`,{id:C,className:e.title,children:m}),p&&u(`button`,{type:`button`,className:e.close,onClick:()=>x.current?.close(),"aria-label":l(c.modal.close),children:`✕`})]}),h&&u(`p`,{id:w,className:e.description,children:h}),u(`div`,{className:e.body,"data-cascivo-modal-body":``,children:g}),_&&u(`div`,{className:e.footer,"data-cascivo-modal-footer":``,children:_})]})})}export{Modal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function enabledIndexes(e){let t=[];return e.forEach((e,n)=>{e.disabled||t.push(n)}),t}function moveActive(e,t,n){let r=enabledIndexes(n);if(r.length===0)return-1;let i=r.indexOf(e);return i===-1?t>0?r[0]:r[r.length-1]:r[(i+t+r.length)%r.length]}function firstActive(e){return enabledIndexes(e)[0]??-1}function lastActive(e){let t=enabledIndexes(e);return t[t.length-1]??-1}function pageActive(e,t,n){let r=enabledIndexes(n);if(r.length===0)return-1;let i=r.indexOf(e),a=i===-1?t>0?-1:r.length:i;return r[Math.min(Math.max(a+t*10,0),r.length-1)]}function clampActive(e,t){return e>=0&&e<t.length&&!t[e]?.disabled?e:firstActive(t)}export{clampActive,firstActive,lastActive,moveActive,pageActive};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{usePopover as e}from"../popover/use-popover.js";import{clampActive as t,firstActive as n,lastActive as r,moveActive as i,pageActive as a}from"./list-nav.js";import{filterOptions as o,groupOptions as ee,highlightSegments as te,isNewLabel as ne,orderByGroup as re}from"./option-list.js";import s from"./multi-select.module.js";import{useId as ie,useRef as c}from"react";import{cn as
|
|
1
|
+
"use client";import{usePopover as e}from"../popover/use-popover.js";import{clampActive as t,firstActive as n,lastActive as r,moveActive as i,pageActive as a}from"./list-nav.js";import{filterOptions as o,groupOptions as ee,highlightSegments as te,isNewLabel as ne,orderByGroup as re}from"./option-list.js";import s from"./multi-select.module.js";import{useId as ie,useRef as c}from"react";import{cn as l,focusElement as u,useControllableSignal as ae,useSignal as d,useSignalEffect as f,useSignals as oe}from"@cascivo/core";import{builtin as p,t as m}from"@cascivo/i18n";import{jsx as h,jsxs as g}from"react/jsx-runtime";function mergeDescribedBy(...e){return e.filter(Boolean).join(` `)||void 0}function MultiSelect({options:_,value:se,defaultValue:ce,onValueChange:le,placeholder:ue,label:v,ariaLabel:y,hint:b,error:x,display:S=`count`,disabled:C=!1,clearable:de=!1,selectAll:fe=!1,max:w,creatable:pe=!1,onCreate:me,loading:T=!1,onSearchChange:E,filter:D,searchable:O=!0,size:he=`md`,name:k,labels:A,className:ge,id:_e,"aria-labelledby":ve,"aria-describedby":ye,"aria-invalid":be,...xe}){oe();let j=e({placement:`bottom`}),M=ie(),N=_e??`${M}-trigger`,P=`${M}-listbox`,F=`${M}-panel`,Se=`${M}-search`,optionId=e=>`${M}-option-${e}`,I=d(``),L=d(-1),R=c(null),z=c(null),B=c(null),[V,Ce]=ae({value:se,defaultValue:ce??[],onChange:le}),H=j.isOpen.value,U=V.value,W=w!==void 0&&U.length>=w,G=I.value,K=re(o(_,O?G:``,D)),q=pe&&G.trim()!==``&&ne(_,G.trim()),J=q?K.length:-1,we=ee(K),Te=ue??A?.placeholder??m(p.multiSelect.placeholder),Y=A?.search??m(p.multiSelect.search),Ee=A?.noResults??m(p.multiSelect.noResults),De=A?.loading??m(p.multiSelect.loading),Oe=A?.label??v??y??m(p.multiSelect.label),ke=A?.clear??m(p.multiSelect.clear),Ae=A?.selectAll??m(p.multiSelect.selectAll),je=A?.clearAll??m(p.multiSelect.clearAll),removeLabel=e=>A?.remove?A.remove.replaceAll(`{label}`,e):m(p.multiSelect.remove,{label:e}),createLabel=e=>A?.create?A.create.replaceAll(`{label}`,e):m(p.multiSelect.create,{label:e}),Me=U.flatMap(e=>{let t=_.find(t=>t.value===e);return t?[t]:[{value:e,label:e}]}),X=U.length===0?Te:A?.selected?A.selected(U.length):m(p.multiSelect.selected,{count:String(U.length)}),Z=c(!1);f(()=>{if(j.isOpen.value){L.value=-1;let e=setTimeout(()=>u(O?z.current:R.current),0);return Z.current=!0,()=>clearTimeout(e)}I.value=``,Z.current&&(Z.current=!1,u(B.current))}),f(()=>{let e=L.value;if(!j.isOpen.value||e<0)return;let t=R.current?.querySelector(`#${CSS.escape(optionId(e))}`);t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`nearest`})});function commit(e){Ce(e)}function toggleOption(e){let t=V.value;if(t.includes(e)){commit(t.filter(t=>t!==e));return}w!==void 0&&t.length>=w||commit([...t,e])}function activate(e){if(e===J&&q){me?.(G.trim()),I.value=``,E?.(``);return}let t=K[e];t&&!t.disabled&&toggleOption(t.value)}function setActive(e){L.value=e}function handleKeyDown(e){let t=[...K.map(e=>({...e,disabled:e.disabled||W&&!U.includes(e.value)})),...q?[{value:``,label:G}]:[]];switch(e.key){case`ArrowDown`:e.preventDefault(),setActive(i(L.value,1,t));break;case`ArrowUp`:e.preventDefault(),setActive(i(L.value,-1,t));break;case`Home`:e.preventDefault(),setActive(n(t));break;case`End`:e.preventDefault(),setActive(r(t));break;case`PageDown`:e.preventDefault(),setActive(a(L.value,1,t));break;case`PageUp`:e.preventDefault(),setActive(a(L.value,-1,t));break;case`Enter`:L.value>=0&&(e.preventDefault(),activate(L.value));break;case` `:!O&&L.value>=0&&(e.preventDefault(),activate(L.value));break;case`Escape`:e.preventDefault(),e.stopPropagation(),j.close();break;case`Backspace`:S===`chips`&&G===``&&V.value.length>0&&(e.preventDefault(),commit(V.value.slice(0,-1)));break}}function handleTriggerKeyDown(e){C||(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),j.open())}let Q=_.filter(e=>!e.disabled).map(e=>e.value),$=Q.length>0&&Q.every(e=>U.includes(e)),Ne=mergeDescribedBy(x?`${M}-error`:b?`${M}-hint`:void 0,ye);function renderOption(e,t){let n=U.includes(e.value),r=e.disabled||W&&!n;return g(`div`,{id:optionId(t),role:`option`,"aria-selected":n,"aria-disabled":r||void 0,"data-active":t===L.value?``:void 0,"data-selected":n?``:void 0,"data-disabled":r?``:void 0,className:s.option,onMouseDown:e=>e.preventDefault(),onClick:()=>{r||toggleOption(e.value)},onMouseEnter:()=>{r||setActive(t)},children:[h(`span`,{className:s.checkbox,"aria-hidden":`true`}),h(`span`,{className:s[`option-label`],children:te(e.label,O?G:``).map((e,t)=>e.match?h(`mark`,{className:s.match,children:e.text},t):h(`span`,{children:e.text},t))})]},e.value)}return g(`div`,{className:l(s.wrapper,ge),"data-state":x?`error`:H?`open`:`closed`,"data-size":he,...xe,children:[v&&h(`label`,{className:s.label,htmlFor:N,children:v}),g(`div`,{className:s.field,"data-display":S,children:[S===`chips`&&Me.map(e=>g(`span`,{className:s.chip,children:[h(`span`,{className:s[`chip-label`],children:e.label}),h(`button`,{type:`button`,className:s[`chip-remove`],"aria-label":removeLabel(e.label),disabled:C,onClick:()=>commit(V.value.filter(t=>t!==e.value))})]},e.value)),g(`button`,{ref:e=>{B.current=e,j.triggerRef.current=e},id:N,type:`button`,className:s.trigger,"aria-haspopup":`listbox`,"aria-expanded":H,"aria-controls":F,"aria-labelledby":ve,"aria-label":y,"aria-invalid":x?!0:be,"aria-describedby":Ne,disabled:C,style:{anchorName:j.anchorName},onClick:()=>{C||j.toggle()},onKeyDown:handleTriggerKeyDown,children:[h(`span`,{className:s[`trigger-label`],"data-empty":U.length===0?``:void 0,children:S===`chips`&&U.length>0?h(`span`,{className:s[`sr-only`],children:X}):X}),h(`span`,{className:s.chevron,"aria-hidden":`true`})]}),de&&U.length>0&&!C&&h(`button`,{type:`button`,className:s.clear,"aria-label":ke,onClick:()=>commit([]),children:h(`span`,{className:s[`clear-glyph`],"aria-hidden":`true`})})]}),k!==void 0&&U.map(e=>h(`input`,{type:`hidden`,name:k,value:e},e)),g(`div`,{ref:j.popoverRef,id:F,popover:`auto`,className:s.panel,style:{positionAnchor:j.anchorName},tabIndex:-1,children:[O&&h(`div`,{className:s[`search-row`],children:h(`input`,{ref:z,id:Se,type:`text`,role:`combobox`,className:s.search,placeholder:Y,"aria-label":Y,"aria-expanded":H,"aria-controls":P,"aria-autocomplete":`list`,"aria-activedescendant":H&&L.value>=0?optionId(L.value):void 0,autoComplete:`off`,value:G,onChange:e=>{I.value=e.currentTarget.value,E?.(e.currentTarget.value),L.value=t(-1,o(_,e.currentTarget.value,D))},onKeyDown:handleKeyDown})}),fe&&Q.length>0&&h(`button`,{type:`button`,className:s[`select-all`],onMouseDown:e=>e.preventDefault(),onClick:()=>commit($?[]:w===void 0?Q:Q.slice(0,w)),children:$?je:Ae}),g(`div`,{ref:R,role:`listbox`,id:P,"aria-multiselectable":`true`,"aria-label":Oe,"aria-busy":T||void 0,"aria-activedescendant":!O&&H&&L.value>=0?optionId(L.value):void 0,tabIndex:O?-1:0,className:s.options,onKeyDown:O?void 0:handleKeyDown,children:[we.map(e=>e.label===void 0?e.entries.map(({option:e,index:t})=>renderOption(e,t)):g(`div`,{role:`group`,"aria-label":e.label,className:s.group,children:[h(`span`,{className:s[`group-label`],"aria-hidden":`true`,children:e.label}),e.entries.map(({option:e,index:t})=>renderOption(e,t))]},e.label)),q&&h(`div`,{id:optionId(J),role:`option`,"aria-selected":!1,"data-active":J===L.value?``:void 0,className:l(s.option,s.create),onMouseDown:e=>e.preventDefault(),onClick:()=>activate(J),onMouseEnter:()=>setActive(J),children:createLabel(G.trim())})]}),T?h(`div`,{className:s.status,role:`status`,children:De}):K.length===0&&!q?h(`div`,{className:s.status,role:`status`,children:Ee}):null]}),h(`span`,{className:s[`sr-only`],role:`status`,"aria-live":`polite`,children:H?m(p.multiSelect.selectionChanged,{count:String(U.length),total:String(_.length)}):``}),x&&h(`span`,{id:`${M}-error`,className:s.error,role:`alert`,children:x}),!x&&b&&h(`span`,{id:`${M}-hint`,className:s.hint,children:b})]})}export{MultiSelect};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function foldChar(e){return(e.normalize(`NFD`)[0]??e).toLowerCase()}function fold(e){return Array.from(e,foldChar)}function defaultMatch(e,t){let n=fold(t).join(``);return n===``?!0:fold(e.label).join(``).includes(n)||fold(e.value).join(``).includes(n)}function filterOptions(e,t,n){let r=n??defaultMatch;return t===``&&!n?e:e.filter(e=>r(e,t))}function highlightSegments(e,t){let n=fold(t).join(``);if(n===``)return[{text:e,match:!1}];let r=Array.from(e),i=fold(e).join(``).indexOf(n);if(i===-1)return[{text:e,match:!1}];let a=Array.from(t).length,o=[],s=r.slice(0,i).join(``),c=r.slice(i,i+a).join(``),l=r.slice(i+a).join(``);return s!==``&&o.push({text:s,match:!1}),o.push({text:c,match:!0}),l!==``&&o.push({text:l,match:!1}),o}function groupOptions(e){let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.group,a=n.get(i);a||(a={label:i,entries:[]},n.set(i,a),t.push(a)),a.entries.push({option:e,index:r})}),t.sort((e,t)=>Number(e.label!==void 0)-Number(t.label!==void 0))}function orderByGroup(e){return groupOptions(e).flatMap(e=>e.entries.map(e=>e.option))}function isNewLabel(e,t){let n=fold(t).join(``);return n===``?!1:!e.some(e=>fold(e.label).join(``)===n)}export{filterOptions,groupOptions,highlightSegments,isNewLabel,orderByGroup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import e from"./navigation-menu.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,getLinkComponent as s,useAnchorPosition as c,useRovingFocus as l,useSignal as u,useSignals as d}from"@cascivo/core";import{jsx as f,jsxs as p}from"react/jsx-runtime";function
|
|
1
|
+
"use client";import e from"./navigation-menu.module.js";import{useId as t,useRef as n}from"react";import{DismissableLayer as r,Presence as i,cn as a,focusElement as o,getLinkComponent as s,useAnchorPosition as c,useRovingFocus as l,useSignal as u,useSignals as d}from"@cascivo/core";import{jsx as f,jsxs as p}from"react/jsx-runtime";function NavigationMenu({items:n,"aria-label":r,ariaLabel:i,label:o,orientation:s=`horizontal`,className:c}){d();let p=t(),m=u(null),h=l({orientation:s,loop:!0});return f(`nav`,{"aria-label":i??r??o,className:a(e.nav,c),"data-orientation":s,children:f(`ul`,{role:`list`,className:e.list,children:n.map((e,t)=>f(NavigationMenuEntry,{item:e,baseId:p,openId:m,itemProps:h.getItemProps(t)},e.id))})})}function NavigationMenuEntry({item:t,baseId:r,openId:a,itemProps:l}){d();let u=n(null),m=n(null),h=t.content!=null,g=a.value===t.id,_=`${r}-panel-${t.id}`,{anchorStyle:v,floatingStyle:y}=c({anchorRef:u,floatingRef:m,placement:`bottom-start`,enabled:g}),{ref:b,onKeyDown:x,...S}=l;if(!h){let n=s();return f(`li`,{className:e.item,children:f(n,{ref:e=>b(e),href:t.href,className:e.link,onKeyDown:x,...S,children:t.label})})}return p(`li`,{className:e.item,children:[f(`button`,{ref:e=>{u.current=e,b(e)},type:`button`,"aria-expanded":g,"aria-controls":_,"data-state":g?`open`:`closed`,className:e.trigger,style:v,onClick:()=>{a.value=g?null:t.id},onKeyDown:e=>{x(e),!e.defaultPrevented&&e.key===`Escape`&&(a.value=null)},...S,children:t.label}),f(i,{present:g,children:f(NavigationMenuPanel,{panelId:_,floatingRef:m,floatingStyle:y,onClose:()=>{a.value=null,o(u.current)},children:t.content})})]})}function NavigationMenuPanel({panelId:t,floatingRef:n,floatingStyle:i,onClose:a,children:o}){return f(r,{onDismiss:a,children:f(`div`,{ref:n,id:t,className:e.panel,style:i,children:o})})}export{NavigationMenu};
|