@crisp-ui-kit/crisp 0.5.0 → 0.7.1
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/README.md +14 -0
- package/dist/accordion.css +9 -1
- package/dist/appshell.css +12 -4
- package/dist/authshell.css +57 -0
- package/dist/authshell.d.ts +7 -0
- package/dist/avatargroup.css +2 -2
- package/dist/badge.css +4 -4
- package/dist/barchart.css +13 -5
- package/dist/board.css +9 -1
- package/dist/bulkbar.css +11 -3
- package/dist/button.css +15 -1
- package/dist/button.d.ts +2 -1
- package/dist/card.css +8 -0
- package/dist/checkbox.css +17 -1
- package/dist/cjs/components/accordion/accordion.js +69 -0
- package/dist/cjs/components/accordion/accordion.recipe.js +26 -0
- package/dist/cjs/components/accordion/index.js +7 -0
- package/dist/cjs/components/avatar/avatar.js +44 -0
- package/dist/cjs/components/avatar/avatar.recipe.js +42 -0
- package/dist/cjs/components/avatar/index.js +7 -0
- package/dist/cjs/components/avatargroup/avatargroup.js +52 -0
- package/dist/cjs/components/avatargroup/avatargroup.recipe.js +18 -0
- package/dist/cjs/components/avatargroup/index.js +7 -0
- package/dist/cjs/components/badge/badge.js +44 -0
- package/dist/cjs/components/badge/badge.recipe.js +68 -0
- package/dist/cjs/components/badge/index.js +7 -0
- package/dist/cjs/components/barchart/barchart.js +45 -0
- package/dist/cjs/components/barchart/barchart.recipe.js +34 -0
- package/dist/cjs/components/barchart/index.js +7 -0
- package/dist/cjs/components/breadcrumb/breadcrumb.js +53 -0
- package/dist/cjs/components/breadcrumb/breadcrumb.recipe.js +21 -0
- package/dist/cjs/components/breadcrumb/index.js +7 -0
- package/dist/cjs/components/bulkbar/bulkbar.js +53 -0
- package/dist/cjs/components/bulkbar/bulkbar.recipe.js +31 -0
- package/dist/cjs/components/bulkbar/index.js +8 -0
- package/dist/cjs/components/button/button.js +62 -0
- package/dist/cjs/components/button/button.recipe.js +58 -0
- package/dist/cjs/components/button/index.js +7 -0
- package/dist/cjs/components/callout/callout.js +25 -0
- package/dist/cjs/components/callout/callout.recipe.js +29 -0
- package/dist/cjs/components/callout/index.js +7 -0
- package/dist/cjs/components/card/card.js +54 -0
- package/dist/cjs/components/card/card.recipe.js +31 -0
- package/dist/cjs/components/card/index.js +10 -0
- package/dist/cjs/components/checkbox/checkbox.js +56 -0
- package/dist/cjs/components/checkbox/checkbox.recipe.js +34 -0
- package/dist/cjs/components/checkbox/index.js +7 -0
- package/dist/cjs/components/columncalc/columncalc.js +139 -0
- package/dist/cjs/components/columncalc/columncalc.recipe.js +33 -0
- package/dist/cjs/components/columncalc/index.js +10 -0
- package/dist/cjs/components/contextmenu/contextmenu.js +78 -0
- package/dist/cjs/components/contextmenu/contextmenu.recipe.js +24 -0
- package/dist/cjs/components/contextmenu/index.js +7 -0
- package/dist/cjs/components/datatable/datatable.js +508 -0
- package/dist/cjs/components/datatable/datatable.recipe.js +113 -0
- package/dist/cjs/components/datatable/index.js +7 -0
- package/dist/cjs/components/datepicker/datepicker.js +153 -0
- package/dist/cjs/components/datepicker/datepicker.recipe.js +190 -0
- package/dist/cjs/components/datepicker/index.js +19 -0
- package/dist/cjs/components/datepickerfield/datepickerfield.js +85 -0
- package/dist/cjs/components/datepickerfield/datepickerfield.recipe.js +44 -0
- package/dist/cjs/components/datepickerfield/index.js +7 -0
- package/dist/cjs/components/dialog/dialog.js +86 -0
- package/dist/cjs/components/dialog/dialog.recipe.js +35 -0
- package/dist/cjs/components/dialog/index.js +9 -0
- package/dist/cjs/components/divider/divider.js +10 -0
- package/dist/cjs/components/divider/divider.recipe.js +17 -0
- package/dist/cjs/components/divider/index.js +7 -0
- package/dist/cjs/components/donutchart/donutchart.js +41 -0
- package/dist/cjs/components/donutchart/donutchart.recipe.js +30 -0
- package/dist/cjs/components/donutchart/index.js +7 -0
- package/dist/cjs/components/drawer/drawer.js +80 -0
- package/dist/cjs/components/drawer/drawer.recipe.js +30 -0
- package/dist/cjs/components/drawer/index.js +9 -0
- package/dist/cjs/components/emptystate/emptystate.js +10 -0
- package/dist/cjs/components/emptystate/emptystate.recipe.js +34 -0
- package/dist/cjs/components/emptystate/index.js +7 -0
- package/dist/cjs/components/formfield/formfield.js +50 -0
- package/dist/cjs/components/formfield/formfield.recipe.js +22 -0
- package/dist/cjs/components/formfield/index.js +7 -0
- package/dist/cjs/components/input/index.js +7 -0
- package/dist/cjs/components/input/input.js +47 -0
- package/dist/cjs/components/input/input.recipe.js +59 -0
- package/dist/cjs/components/kbd/index.js +7 -0
- package/dist/cjs/components/kbd/kbd.js +44 -0
- package/dist/cjs/components/kbd/kbd.recipe.js +23 -0
- package/dist/cjs/components/linechart/index.js +7 -0
- package/dist/cjs/components/linechart/linechart.js +57 -0
- package/dist/cjs/components/linechart/linechart.recipe.js +35 -0
- package/dist/cjs/components/menu/index.js +14 -0
- package/dist/cjs/components/menu/menu-keyboard.js +117 -0
- package/dist/cjs/components/menu/menu.js +144 -0
- package/dist/cjs/components/menu/menu.recipe.js +54 -0
- package/dist/cjs/components/multiselect/index.js +7 -0
- package/dist/cjs/components/multiselect/multiselect.js +161 -0
- package/dist/cjs/components/multiselect/multiselect.recipe.js +71 -0
- package/dist/cjs/components/popover/index.js +7 -0
- package/dist/cjs/components/popover/popover.js +106 -0
- package/dist/cjs/components/popover/popover.recipe.js +21 -0
- package/dist/cjs/components/progress/index.js +7 -0
- package/dist/cjs/components/progress/progress.js +26 -0
- package/dist/cjs/components/progress/progress.recipe.js +20 -0
- package/dist/cjs/components/radiogroup/index.js +8 -0
- package/dist/cjs/components/radiogroup/radiogroup.js +83 -0
- package/dist/cjs/components/radiogroup/radiogroup.recipe.js +40 -0
- package/dist/cjs/components/resizablepanel/index.js +12 -0
- package/dist/cjs/components/resizablepanel/resizablepanel.js +176 -0
- package/dist/cjs/components/resizablepanel/resizablepanel.recipe.js +69 -0
- package/dist/cjs/components/segmented/index.js +7 -0
- package/dist/cjs/components/segmented/segmented.js +95 -0
- package/dist/cjs/components/segmented/segmented.recipe.js +23 -0
- package/dist/cjs/components/select/index.js +7 -0
- package/dist/cjs/components/select/select.js +180 -0
- package/dist/cjs/components/select/select.recipe.js +79 -0
- package/dist/cjs/components/skeleton/index.js +7 -0
- package/dist/cjs/components/skeleton/skeleton.js +13 -0
- package/dist/cjs/components/skeleton/skeleton.recipe.js +17 -0
- package/dist/cjs/components/spinner/index.js +7 -0
- package/dist/cjs/components/spinner/spinner.js +15 -0
- package/dist/cjs/components/spinner/spinner.recipe.js +16 -0
- package/dist/cjs/components/stagebar/index.js +7 -0
- package/dist/cjs/components/stagebar/stagebar.js +26 -0
- package/dist/cjs/components/stagebar/stagebar.recipe.js +17 -0
- package/dist/cjs/components/statcard/index.js +7 -0
- package/dist/cjs/components/statcard/statcard.js +15 -0
- package/dist/cjs/components/statcard/statcard.recipe.js +37 -0
- package/dist/cjs/components/switch/index.js +7 -0
- package/dist/cjs/components/switch/switch.js +58 -0
- package/dist/cjs/components/switch/switch.recipe.js +29 -0
- package/dist/cjs/components/table/index.js +14 -0
- package/dist/cjs/components/table/table.js +66 -0
- package/dist/cjs/components/table/table.recipe.js +43 -0
- package/dist/cjs/components/tabletoolbar/index.js +20 -0
- package/dist/cjs/components/tabletoolbar/tabletoolbar.chrome.js +84 -0
- package/dist/cjs/components/tabletoolbar/tabletoolbar.js +237 -0
- package/dist/cjs/components/tabletoolbar/tabletoolbar.recipe.js +26 -0
- package/dist/cjs/components/tabs/index.js +7 -0
- package/dist/cjs/components/tabs/tabs.js +106 -0
- package/dist/cjs/components/tabs/tabs.recipe.js +36 -0
- package/dist/cjs/components/textarea/index.js +7 -0
- package/dist/cjs/components/textarea/textarea.js +56 -0
- package/dist/cjs/components/textarea/textarea.recipe.js +46 -0
- package/dist/cjs/components/toast/index.js +8 -0
- package/dist/cjs/components/toast/toast.js +95 -0
- package/dist/cjs/components/toast/toast.recipe.js +31 -0
- package/dist/cjs/components/tooltip/index.js +7 -0
- package/dist/cjs/components/tooltip/tooltip.js +95 -0
- package/dist/cjs/components/tooltip/tooltip.recipe.js +16 -0
- package/dist/cjs/components/wheelpicker/index.js +7 -0
- package/dist/cjs/components/wheelpicker/wheelpicker.js +134 -0
- package/dist/cjs/components/wheelpicker/wheelpicker.recipe.js +95 -0
- package/dist/cjs/core/cx.js +8 -0
- package/dist/cjs/core/define.js +6 -0
- package/dist/cjs/core/index.js +11 -0
- package/dist/cjs/core/primitive.js +49 -0
- package/dist/cjs/core/resolve.js +44 -0
- package/dist/cjs/core/types.js +2 -0
- package/dist/cjs/index.js +92 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/product/appshell/appshell.js +104 -0
- package/dist/cjs/product/appshell/appshell.recipe.js +30 -0
- package/dist/cjs/product/appshell/index.js +7 -0
- package/dist/cjs/product/authshell/authshell.js +21 -0
- package/dist/cjs/product/authshell/authshell.recipe.js +67 -0
- package/dist/cjs/product/authshell/index.js +7 -0
- package/dist/cjs/product/board/board.js +78 -0
- package/dist/cjs/product/board/board.recipe.js +31 -0
- package/dist/cjs/product/board/index.js +7 -0
- package/dist/cjs/product/command/command.js +238 -0
- package/dist/cjs/product/command/command.recipe.js +47 -0
- package/dist/cjs/product/command/index.js +8 -0
- package/dist/cjs/product/entitycard/entitycard.js +14 -0
- package/dist/cjs/product/entitycard/entitycard.recipe.js +32 -0
- package/dist/cjs/product/entitycard/index.js +7 -0
- package/dist/cjs/product/flowcanvas/flowcanvas.js +121 -0
- package/dist/cjs/product/flowcanvas/flowcanvas.recipe.js +28 -0
- package/dist/cjs/product/flowcanvas/index.js +7 -0
- package/dist/cjs/product/inbox/inbox.js +16 -0
- package/dist/cjs/product/inbox/inbox.recipe.js +46 -0
- package/dist/cjs/product/inbox/index.js +7 -0
- package/dist/cjs/product/listpage/index.js +8 -0
- package/dist/cjs/product/listpage/listpage.js +25 -0
- package/dist/cjs/product/listpage/listpage.recipe.js +46 -0
- package/dist/cjs/product/navitem/index.js +5 -0
- package/dist/cjs/product/navitem/navitem.js +44 -0
- package/dist/cjs/product/navitem/navitem.recipe.js +36 -0
- package/dist/cjs/product/onboarding/index.js +7 -0
- package/dist/cjs/product/onboarding/onboarding.js +17 -0
- package/dist/cjs/product/onboarding/onboarding.recipe.js +44 -0
- package/dist/cjs/product/recordpage/index.js +7 -0
- package/dist/cjs/product/recordpage/recordpage.js +409 -0
- package/dist/cjs/product/recordpage/recordpage.recipe.js +162 -0
- package/dist/cjs/product/recordpanel/index.js +7 -0
- package/dist/cjs/product/recordpanel/recordpanel.js +83 -0
- package/dist/cjs/product/recordpanel/recordpanel.recipe.js +51 -0
- package/dist/cjs/product/recordstable/company-logos.js +29 -0
- package/dist/cjs/product/recordstable/index.js +10 -0
- package/dist/cjs/product/recordstable/recordstable.js +1092 -0
- package/dist/cjs/product/recordstable/recordstable.recipe.js +152 -0
- package/dist/cjs/product/recordstable/recordstable.tag.js +21 -0
- package/dist/cjs/product/richtext/index.js +7 -0
- package/dist/cjs/product/richtext/richtext.js +147 -0
- package/dist/cjs/product/richtext/richtext.recipe.js +43 -0
- package/dist/cjs/product/settingssection/index.js +7 -0
- package/dist/cjs/product/settingssection/settingssection.js +14 -0
- package/dist/cjs/product/settingssection/settingssection.recipe.js +23 -0
- package/dist/cjs/product/settingsshell/index.js +7 -0
- package/dist/cjs/product/settingsshell/settingsshell.js +59 -0
- package/dist/cjs/product/settingsshell/settingsshell.recipe.js +46 -0
- package/dist/cjs/product/sidebar/index.js +13 -0
- package/dist/cjs/product/sidebar/sidebar.js +148 -0
- package/dist/cjs/product/sidebar/sidebar.recipe.js +46 -0
- package/dist/cjs/product/tasklist/index.js +7 -0
- package/dist/cjs/product/tasklist/tasklist.js +19 -0
- package/dist/cjs/product/tasklist/tasklist.recipe.js +38 -0
- package/dist/cjs/product/trialbanner/index.js +7 -0
- package/dist/cjs/product/trialbanner/trialbanner.js +13 -0
- package/dist/cjs/product/trialbanner/trialbanner.recipe.js +32 -0
- package/dist/cjs/product/viewtoggle/index.js +7 -0
- package/dist/cjs/product/viewtoggle/viewtoggle.js +55 -0
- package/dist/cjs/product/viewtoggle/viewtoggle.recipe.js +27 -0
- package/dist/cjs/tokens/contract.js +21 -0
- package/dist/cjs/tokens/elevation.js +47 -0
- package/dist/cjs/tokens/index.js +18 -0
- package/dist/cjs/tokens/palette.js +63 -0
- package/dist/cjs/tokens/scale.js +70 -0
- package/dist/cjs/tokens/semantic.js +57 -0
- package/dist/columncalc.css +26 -0
- package/dist/columncalc.d.ts +7 -0
- package/dist/command.css +34 -1
- package/dist/contextmenu.css +10 -2
- package/dist/datatable.css +60 -14
- package/dist/datepicker.css +175 -19
- package/dist/datepicker.d.ts +2 -2
- package/dist/datepickerfield.css +27 -0
- package/dist/datepickerfield.d.ts +7 -0
- package/dist/dialog.css +10 -2
- package/dist/donutchart.css +8 -0
- package/dist/drawer.css +13 -5
- package/dist/entitycard.css +10 -2
- package/dist/esm/components/accordion/accordion.js +17 -16
- package/dist/esm/components/accordion/accordion.recipe.js +1 -1
- package/dist/esm/components/avatargroup/avatargroup.js +2 -2
- package/dist/esm/components/avatargroup/avatargroup.recipe.js +2 -2
- package/dist/esm/components/badge/badge.recipe.js +4 -4
- package/dist/esm/components/barchart/barchart.js +15 -2
- package/dist/esm/components/barchart/barchart.recipe.js +10 -5
- package/dist/esm/components/breadcrumb/breadcrumb.js +2 -2
- package/dist/esm/components/bulkbar/bulkbar.js +2 -2
- package/dist/esm/components/bulkbar/bulkbar.recipe.js +4 -4
- package/dist/esm/components/button/button.js +13 -2
- package/dist/esm/components/button/button.recipe.js +20 -4
- package/dist/esm/components/callout/callout.js +2 -2
- package/dist/esm/components/checkbox/checkbox.recipe.js +9 -1
- package/dist/esm/components/columncalc/columncalc.js +100 -0
- package/dist/esm/components/columncalc/columncalc.recipe.js +30 -0
- package/dist/esm/components/columncalc/index.js +1 -0
- package/dist/esm/components/contextmenu/contextmenu.recipe.js +4 -4
- package/dist/esm/components/datatable/datatable.js +276 -49
- package/dist/esm/components/datatable/datatable.recipe.js +54 -16
- package/dist/esm/components/datepicker/datepicker.js +104 -53
- package/dist/esm/components/datepicker/datepicker.recipe.js +180 -25
- package/dist/esm/components/datepicker/index.js +1 -1
- package/dist/esm/components/datepickerfield/datepickerfield.js +49 -0
- package/dist/esm/components/datepickerfield/datepickerfield.recipe.js +41 -0
- package/dist/esm/components/datepickerfield/index.js +2 -0
- package/dist/esm/components/dialog/dialog.js +2 -2
- package/dist/esm/components/dialog/dialog.recipe.js +4 -4
- package/dist/esm/components/divider/divider.js +2 -2
- package/dist/esm/components/donutchart/donutchart.js +2 -2
- package/dist/esm/components/drawer/drawer.js +2 -2
- package/dist/esm/components/drawer/drawer.recipe.js +6 -6
- package/dist/esm/components/emptystate/emptystate.js +2 -2
- package/dist/esm/components/formfield/formfield.js +2 -2
- package/dist/esm/components/input/input.js +6 -3
- package/dist/esm/components/input/input.recipe.js +38 -5
- package/dist/esm/components/linechart/linechart.js +15 -2
- package/dist/esm/components/linechart/linechart.recipe.js +10 -5
- package/dist/esm/components/menu/index.js +1 -0
- package/dist/esm/components/menu/menu-keyboard.js +80 -0
- package/dist/esm/components/menu/menu.js +27 -60
- package/dist/esm/components/menu/menu.recipe.js +5 -5
- package/dist/esm/components/multiselect/multiselect.js +10 -3
- package/dist/esm/components/multiselect/multiselect.recipe.js +8 -8
- package/dist/esm/components/popover/popover.js +2 -2
- package/dist/esm/components/popover/popover.recipe.js +2 -2
- package/dist/esm/components/progress/progress.js +3 -3
- package/dist/esm/components/radiogroup/radiogroup.js +2 -2
- package/dist/esm/components/radiogroup/radiogroup.recipe.js +1 -1
- package/dist/esm/components/resizablepanel/index.js +2 -0
- package/dist/esm/components/resizablepanel/resizablepanel.js +135 -0
- package/dist/esm/components/resizablepanel/resizablepanel.recipe.js +66 -0
- package/dist/esm/components/segmented/segmented.js +2 -2
- package/dist/esm/components/select/select.js +2 -2
- package/dist/esm/components/select/select.recipe.js +6 -6
- package/dist/esm/components/skeleton/skeleton.js +5 -2
- package/dist/esm/components/spinner/spinner.js +3 -2
- package/dist/esm/components/stagebar/stagebar.js +2 -2
- package/dist/esm/components/statcard/statcard.js +2 -2
- package/dist/esm/components/table/table.recipe.js +6 -6
- package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +3 -3
- package/dist/esm/components/tabletoolbar/tabletoolbar.js +21 -13
- package/dist/esm/components/tabs/tabs.js +2 -2
- package/dist/esm/components/tabs/tabs.recipe.js +4 -4
- package/dist/esm/components/textarea/textarea.js +5 -5
- package/dist/esm/components/textarea/textarea.recipe.js +16 -4
- package/dist/esm/components/toast/toast.js +4 -4
- package/dist/esm/components/toast/toast.recipe.js +2 -2
- package/dist/esm/components/tooltip/tooltip.js +21 -7
- package/dist/esm/components/wheelpicker/index.js +2 -0
- package/dist/esm/components/wheelpicker/wheelpicker.js +98 -0
- package/dist/esm/components/wheelpicker/wheelpicker.recipe.js +92 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/product/appshell/appshell.js +33 -9
- package/dist/esm/product/appshell/appshell.recipe.js +4 -4
- package/dist/esm/product/authshell/authshell.js +18 -0
- package/dist/esm/product/authshell/authshell.recipe.js +64 -0
- package/dist/esm/product/authshell/index.js +2 -0
- package/dist/esm/product/board/board.js +2 -2
- package/dist/esm/product/board/board.recipe.js +1 -1
- package/dist/esm/product/command/command.js +19 -6
- package/dist/esm/product/command/command.recipe.js +27 -2
- package/dist/esm/product/entitycard/entitycard.js +2 -2
- package/dist/esm/product/entitycard/entitycard.recipe.js +2 -2
- package/dist/esm/product/flowcanvas/flowcanvas.js +4 -4
- package/dist/esm/product/inbox/inbox.recipe.js +1 -1
- package/dist/esm/product/listpage/listpage.recipe.js +3 -3
- package/dist/esm/product/navitem/navitem.recipe.js +13 -1
- package/dist/esm/product/onboarding/onboarding.js +2 -2
- package/dist/esm/product/onboarding/onboarding.recipe.js +2 -2
- package/dist/esm/product/recordpage/recordpage.js +133 -47
- package/dist/esm/product/recordpage/recordpage.recipe.js +19 -17
- package/dist/esm/product/recordpanel/recordpanel.js +4 -4
- package/dist/esm/product/recordpanel/recordpanel.recipe.js +12 -16
- package/dist/esm/product/recordstable/recordstable.js +157 -66
- package/dist/esm/product/recordstable/recordstable.recipe.js +23 -23
- package/dist/esm/product/recordstable/recordstable.tag.js +18 -0
- package/dist/esm/product/richtext/richtext.js +3 -3
- package/dist/esm/product/richtext/richtext.recipe.js +3 -3
- package/dist/esm/product/settingssection/settingssection.js +2 -2
- package/dist/esm/product/settingsshell/settingsshell.js +2 -2
- package/dist/esm/product/settingsshell/settingsshell.recipe.js +7 -2
- package/dist/esm/product/sidebar/sidebar.js +2 -2
- package/dist/esm/product/sidebar/sidebar.recipe.js +27 -2
- package/dist/esm/product/tasklist/tasklist.js +4 -4
- package/dist/esm/product/trialbanner/trialbanner.js +2 -2
- package/dist/esm/product/trialbanner/trialbanner.recipe.js +2 -2
- package/dist/esm/product/viewtoggle/viewtoggle.js +10 -2
- package/dist/esm/product/viewtoggle/viewtoggle.recipe.js +1 -1
- package/dist/esm/tokens/elevation.js +44 -0
- package/dist/esm/tokens/index.js +1 -0
- package/dist/esm/tokens/palette.js +30 -0
- package/dist/esm/tokens/scale.js +7 -0
- package/dist/esm/tokens/semantic.js +24 -0
- package/dist/inbox.css +9 -1
- package/dist/input.css +32 -4
- package/dist/linechart.css +5 -5
- package/dist/listpage.css +11 -3
- package/dist/menu.css +11 -3
- package/dist/multiselect.css +14 -6
- package/dist/native/tokens.d.ts +16 -0
- package/dist/native/tokens.js +221 -0
- package/dist/navitem.css +21 -1
- package/dist/onboarding.css +10 -2
- package/dist/popover.css +8 -0
- package/dist/progress.css +8 -0
- package/dist/radiogroup.css +9 -1
- package/dist/recordpage.css +22 -12
- package/dist/recordpanel.css +25 -15
- package/dist/recordstable.css +37 -23
- package/dist/resizablepanel.css +53 -0
- package/dist/resizablepanel.d.ts +7 -0
- package/dist/richtext.css +11 -3
- package/dist/segmented.css +8 -0
- package/dist/select.css +12 -4
- package/dist/settingsshell.css +15 -2
- package/dist/sidebar.css +34 -1
- package/dist/skeleton.css +8 -0
- package/dist/spinner.css +8 -0
- package/dist/stagebar.css +8 -0
- package/dist/styles.css +2061 -1111
- package/dist/switch.css +8 -0
- package/dist/table.css +14 -6
- package/dist/tabletoolbar.css +8 -0
- package/dist/tabs.css +12 -4
- package/dist/tasklist.css +8 -0
- package/dist/textarea.css +23 -3
- package/dist/toast.css +10 -2
- package/dist/tokens.css +29 -0
- package/dist/tokens.json +217 -0
- package/dist/tooltip.css +8 -0
- package/dist/trialbanner.css +8 -0
- package/dist/types/components/accordion/accordion.d.ts +10 -8
- package/dist/types/components/avatargroup/avatargroup.d.ts +2 -2
- package/dist/types/components/barchart/barchart.d.ts +4 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/bulkbar/bulkbar.d.ts +4 -2
- package/dist/types/components/button/button.d.ts +8 -0
- package/dist/types/components/button/button.recipe.d.ts +12 -0
- package/dist/types/components/callout/callout.d.ts +2 -2
- package/dist/types/components/columncalc/columncalc.d.ts +49 -0
- package/dist/types/components/columncalc/columncalc.recipe.d.ts +3 -0
- package/dist/types/components/columncalc/index.d.ts +1 -0
- package/dist/types/components/datatable/datatable.d.ts +58 -3
- package/dist/types/components/datepicker/datepicker.d.ts +41 -18
- package/dist/types/components/datepicker/datepicker.recipe.d.ts +25 -2
- package/dist/types/components/datepicker/index.d.ts +1 -1
- package/dist/types/components/datepickerfield/datepickerfield.d.ts +35 -0
- package/dist/types/components/datepickerfield/datepickerfield.recipe.d.ts +5 -0
- package/dist/types/components/datepickerfield/index.d.ts +2 -0
- package/dist/types/components/dialog/dialog.d.ts +3 -1
- package/dist/types/components/divider/divider.d.ts +2 -2
- package/dist/types/components/donutchart/donutchart.d.ts +2 -2
- package/dist/types/components/drawer/drawer.d.ts +3 -1
- package/dist/types/components/emptystate/emptystate.d.ts +2 -2
- package/dist/types/components/formfield/formfield.d.ts +7 -4
- package/dist/types/components/input/input.d.ts +8 -2
- package/dist/types/components/linechart/linechart.d.ts +4 -2
- package/dist/types/components/menu/index.d.ts +1 -0
- package/dist/types/components/menu/menu-keyboard.d.ts +33 -0
- package/dist/types/components/menu/menu.d.ts +7 -1
- package/dist/types/components/multiselect/multiselect.d.ts +8 -4
- package/dist/types/components/popover/popover.d.ts +4 -1
- package/dist/types/components/progress/progress.d.ts +2 -2
- package/dist/types/components/radiogroup/radiogroup.d.ts +2 -2
- package/dist/types/components/resizablepanel/index.d.ts +2 -0
- package/dist/types/components/resizablepanel/resizablepanel.d.ts +75 -0
- package/dist/types/components/resizablepanel/resizablepanel.recipe.d.ts +3 -0
- package/dist/types/components/segmented/segmented.d.ts +2 -2
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/spinner/spinner.d.ts +2 -2
- package/dist/types/components/stagebar/stagebar.d.ts +2 -2
- package/dist/types/components/statcard/statcard.d.ts +2 -2
- package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +28 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/toast/toast.d.ts +7 -1
- package/dist/types/components/tooltip/tooltip.d.ts +8 -1
- package/dist/types/components/wheelpicker/index.d.ts +2 -0
- package/dist/types/components/wheelpicker/wheelpicker.d.ts +37 -0
- package/dist/types/components/wheelpicker/wheelpicker.recipe.d.ts +26 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/product/appshell/appshell.d.ts +16 -2
- package/dist/types/product/authshell/authshell.d.ts +28 -0
- package/dist/types/product/authshell/authshell.recipe.d.ts +3 -0
- package/dist/types/product/authshell/index.d.ts +2 -0
- package/dist/types/product/board/board.d.ts +2 -2
- package/dist/types/product/command/command.d.ts +25 -1
- package/dist/types/product/entitycard/entitycard.d.ts +2 -2
- package/dist/types/product/flowcanvas/flowcanvas.d.ts +9 -1
- package/dist/types/product/onboarding/onboarding.d.ts +7 -1
- package/dist/types/product/recordpage/recordpage.d.ts +65 -1
- package/dist/types/product/recordpanel/recordpanel.d.ts +8 -2
- package/dist/types/product/recordstable/recordstable.d.ts +90 -1
- package/dist/types/product/recordstable/recordstable.tag.d.ts +10 -0
- package/dist/types/product/richtext/richtext.d.ts +5 -1
- package/dist/types/product/settingssection/settingssection.d.ts +2 -2
- package/dist/types/product/settingsshell/settingsshell.d.ts +6 -2
- package/dist/types/product/sidebar/sidebar.d.ts +8 -0
- package/dist/types/product/tasklist/tasklist.d.ts +5 -1
- package/dist/types/product/trialbanner/trialbanner.d.ts +2 -2
- package/dist/types/product/viewtoggle/viewtoggle.d.ts +11 -5
- package/dist/types/tokens/contract.d.ts +14 -3
- package/dist/types/tokens/elevation.d.ts +44 -0
- package/dist/types/tokens/index.d.ts +1 -0
- package/dist/types/tokens/palette.d.ts +40 -0
- package/dist/types/tokens/scale.d.ts +7 -0
- package/dist/types/tokens/semantic.d.ts +19 -0
- package/dist/viewtoggle.css +9 -1
- package/dist/wheelpicker.css +68 -0
- package/dist/wheelpicker.d.ts +7 -0
- package/package.json +160 -68
|
@@ -14,6 +14,10 @@ declare const config: import("../..").RecipeConfig<{
|
|
|
14
14
|
text: string;
|
|
15
15
|
icon: string;
|
|
16
16
|
};
|
|
17
|
+
touchTarget: {
|
|
18
|
+
true: string;
|
|
19
|
+
false: string;
|
|
20
|
+
};
|
|
17
21
|
}>;
|
|
18
22
|
export declare const buttonRecipe: import("../..").RecipeFn<{
|
|
19
23
|
intent: {
|
|
@@ -31,6 +35,10 @@ export declare const buttonRecipe: import("../..").RecipeFn<{
|
|
|
31
35
|
text: string;
|
|
32
36
|
icon: string;
|
|
33
37
|
};
|
|
38
|
+
touchTarget: {
|
|
39
|
+
true: string;
|
|
40
|
+
false: string;
|
|
41
|
+
};
|
|
34
42
|
}> & {
|
|
35
43
|
config: import("../..").RecipeConfig<{
|
|
36
44
|
intent: {
|
|
@@ -48,6 +56,10 @@ export declare const buttonRecipe: import("../..").RecipeFn<{
|
|
|
48
56
|
text: string;
|
|
49
57
|
icon: string;
|
|
50
58
|
};
|
|
59
|
+
touchTarget: {
|
|
60
|
+
true: string;
|
|
61
|
+
false: string;
|
|
62
|
+
};
|
|
51
63
|
}>;
|
|
52
64
|
meta: {
|
|
53
65
|
primary: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
2
|
export type CalloutTone = "neutral" | "info" | "success" | "warning" | "danger";
|
|
3
|
-
export type CalloutProps = {
|
|
3
|
+
export type CalloutProps = Omit<React.ComponentPropsWithoutRef<"div">, "title"> & {
|
|
4
4
|
tone?: CalloutTone;
|
|
5
5
|
/** Leading icon; defaults to a tone-appropriate one (pass `null` for none). */
|
|
6
6
|
icon?: React.ReactNode;
|
|
@@ -14,7 +14,7 @@ export type CalloutProps = {
|
|
|
14
14
|
* An inline callout / banner — measured from Attio's info notices. `tone` tints
|
|
15
15
|
* the background and icon; pass a `title` and/or body `children`.
|
|
16
16
|
*/
|
|
17
|
-
export declare function Callout({ tone, icon, title, children, action, className, }: CalloutProps): React.JSX.Element;
|
|
17
|
+
export declare function Callout({ tone, icon, title, children, action, className, ...rest }: CalloutProps): React.JSX.Element;
|
|
18
18
|
export declare namespace Callout {
|
|
19
19
|
var displayName: string;
|
|
20
20
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Attio's column footer calculation. Measured from the live app: clicking a
|
|
4
|
+
* summary cell opens an "Aggregations" menu — 180px wide — whose contents
|
|
5
|
+
* depend on the column's type.
|
|
6
|
+
*
|
|
7
|
+
* Every column offers the four universal aggregations; numeric columns add
|
|
8
|
+
* four more plus "None" to clear:
|
|
9
|
+
*
|
|
10
|
+
* all types Count empty · Count filled · Percent empty · Percent filled
|
|
11
|
+
* numbers …plus Sum · Average · Min · Max
|
|
12
|
+
* both None
|
|
13
|
+
*
|
|
14
|
+
* Plugs into `DataTable`'s per-column `summary(rows)` slot.
|
|
15
|
+
*/
|
|
16
|
+
export type CalcOp = "none" | "countEmpty" | "countFilled" | "percentEmpty" | "percentFilled" | "sum" | "average" | "min" | "max";
|
|
17
|
+
/** The four Attio offers on every column, in its order. */
|
|
18
|
+
export declare const UNIVERSAL_CALCS: CalcOp[];
|
|
19
|
+
/** The four Attio adds for numeric columns, in its order. */
|
|
20
|
+
export declare const NUMERIC_CALCS: CalcOp[];
|
|
21
|
+
export declare const CALC_LABEL: Record<CalcOp, string>;
|
|
22
|
+
/** A value counts as empty when it is null/undefined, "" or an empty array. */
|
|
23
|
+
export declare function isEmptyValue(v: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Pure so the arithmetic is testable without rendering. Returns `null` for
|
|
26
|
+
* "none" and for numeric ops with no numbers to work on — a caller renders
|
|
27
|
+
* nothing rather than a misleading 0.
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeCalc(values: unknown[], op: CalcOp): number | null;
|
|
30
|
+
export type ColumnCalcProps<T> = Omit<React.ComponentPropsWithoutRef<"span">, "value" | "children"> & {
|
|
31
|
+
rows: T[];
|
|
32
|
+
/** Reads this column's value out of a row. */
|
|
33
|
+
value: (row: T) => unknown;
|
|
34
|
+
/** Numeric columns get Sum/Average/Min/Max, as in Attio. */
|
|
35
|
+
numeric?: boolean;
|
|
36
|
+
defaultOp?: CalcOp;
|
|
37
|
+
/** Controlled operation. */
|
|
38
|
+
op?: CalcOp;
|
|
39
|
+
onOpChange?: (op: CalcOp) => void;
|
|
40
|
+
/** Overrides the operation names shown in the menu and the cell. Partial —
|
|
41
|
+
* anything omitted keeps its English default from `CALC_LABEL`. */
|
|
42
|
+
opLabels?: Partial<Record<CalcOp, string>>;
|
|
43
|
+
/** Format the result; defaults to a grouped number, percentages with a %. */
|
|
44
|
+
format?: (n: number, op: CalcOp) => string;
|
|
45
|
+
/** Match the column's alignment — numeric columns right-align in Attio. */
|
|
46
|
+
align?: "left" | "right";
|
|
47
|
+
className?: string;
|
|
48
|
+
};
|
|
49
|
+
export declare function ColumnCalc<T>({ rows, value, numeric, defaultOp, op: opProp, onOpChange, format, align, opLabels, className, ...rest }: ColumnCalcProps<T>): React.JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CALC_LABEL, type CalcOp, ColumnCalc, type ColumnCalcProps, computeCalc, isEmptyValue, NUMERIC_CALCS, UNIVERSAL_CALCS, } from "./columncalc";
|
|
@@ -10,6 +10,9 @@ export type EntityValue = {
|
|
|
10
10
|
export type DataCellType = "text" | "entity" | "tags" | "status" | "date" | "number" | "currency";
|
|
11
11
|
export type DataTableColumn<T> = {
|
|
12
12
|
key: string;
|
|
13
|
+
/** Truncates with an ellipsis (matches Attio) when it's wider than the
|
|
14
|
+
* column. The full text stays in the DOM, so assistive tech and copy/paste
|
|
15
|
+
* get all of it; there is deliberately no `title` tooltip — see the recipe. */
|
|
13
16
|
header: React.ReactNode;
|
|
14
17
|
/** Built-in rich renderer: entity (avatar+name), tags (colour pills), status
|
|
15
18
|
* (dot), date, number, currency. Overridden by `render`. */
|
|
@@ -43,6 +46,10 @@ export type DataTableColumn<T> = {
|
|
|
43
46
|
format?: (value: unknown, row: T) => string;
|
|
44
47
|
/** Footer summary for this column (shown when any column supplies one). */
|
|
45
48
|
summary?: (rows: T[]) => React.ReactNode;
|
|
49
|
+
/** Opt this column out of the header menu's Hide/Move/Rename items. */
|
|
50
|
+
managed?: boolean;
|
|
51
|
+
/** Hidden from the grid but still listed in the column manager. */
|
|
52
|
+
hidden?: boolean;
|
|
46
53
|
};
|
|
47
54
|
export type SortState = {
|
|
48
55
|
key: string;
|
|
@@ -50,20 +57,63 @@ export type SortState = {
|
|
|
50
57
|
};
|
|
51
58
|
export type DataTableProps<T extends {
|
|
52
59
|
id: string;
|
|
53
|
-
}> = {
|
|
60
|
+
}> = Omit<React.ComponentPropsWithoutRef<"div">, "children" | "onSelect"> & {
|
|
54
61
|
columns: DataTableColumn<T>[];
|
|
55
62
|
data: T[];
|
|
56
63
|
/** Show a leading selection column with a select-all header checkbox. */
|
|
57
64
|
selectable?: boolean;
|
|
58
65
|
selectedIds?: string[];
|
|
59
66
|
onSelectionChange?: (ids: string[]) => void;
|
|
67
|
+
/** aria-label for the header's select-all checkbox (default "Select all
|
|
68
|
+
* rows"). Override for non-English UIs — the built-in string never reaches
|
|
69
|
+
* a translated screen otherwise. */
|
|
70
|
+
selectAllLabel?: string;
|
|
71
|
+
/** aria-label for each row's checkbox (default `Select row ${row.id}`).
|
|
72
|
+
* Takes the row so the label can read back a human identifier (a name,
|
|
73
|
+
* a code) instead of the raw id. */
|
|
74
|
+
selectRowLabel?: (row: T) => string;
|
|
60
75
|
/** Controlled sort (omit for self-managed; seed with `defaultSort`). */
|
|
61
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Active sort. Accepts a single sort or an ordered list — Attio sorts by
|
|
78
|
+
* several columns at once ("Sorted by Last interaction +1"), applying each
|
|
79
|
+
* in turn and falling through to the next on a tie.
|
|
80
|
+
*/
|
|
81
|
+
/**
|
|
82
|
+
* Show Attio's column header menu — Sort ascending/descending, Move
|
|
83
|
+
* left/right, Edit column label, Hide from view. Anything but sorting
|
|
84
|
+
* needs `onColumnsChange` (or leave it off and the table manages its own
|
|
85
|
+
* copy of the column list).
|
|
86
|
+
*/
|
|
87
|
+
columnMenu?: boolean;
|
|
88
|
+
/** Called with the next column list after a move, rename or hide. */
|
|
89
|
+
onColumnsChange?: (columns: DataTableColumn<T>[]) => void;
|
|
90
|
+
/** Group rows under a heading row, the way Attio groups a view. */
|
|
91
|
+
groupBy?: (row: T) => string;
|
|
92
|
+
/**
|
|
93
|
+
* Enables drag-to-reorder rows (a leading grip column). Called with the
|
|
94
|
+
* full row array in its new order. Ignored while a sort or `groupBy` is
|
|
95
|
+
* active — dragging a row would be instantly undone by the comparator, or
|
|
96
|
+
* is ambiguous across groups, so the grip isn't rendered at all in either
|
|
97
|
+
* case.
|
|
98
|
+
*/
|
|
99
|
+
onRowsReorder?: (rows: T[]) => void;
|
|
100
|
+
/** aria-label on each row's drag grip (default "Reorder row"). */
|
|
101
|
+
reorderRowLabel?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Render an error state in place of the rows. Uses the same measured
|
|
104
|
+
* `EmptyState variant="page"` surface as the zero-row state.
|
|
105
|
+
*/
|
|
106
|
+
error?: React.ReactNode;
|
|
107
|
+
sort?: SortState | SortState[] | null;
|
|
62
108
|
defaultSort?: SortState;
|
|
63
109
|
onSortChange?: (s: SortState | null) => void;
|
|
64
110
|
/** Show a search box that filters rows across filterable columns. */
|
|
65
111
|
filterable?: boolean;
|
|
66
112
|
searchPlaceholder?: string;
|
|
113
|
+
/** aria-label for the search input (default "Search table"). Independent
|
|
114
|
+
* of `searchPlaceholder`, which is visible text — this is the
|
|
115
|
+
* screen-reader-only label. */
|
|
116
|
+
searchLabel?: string;
|
|
67
117
|
/** Commit handler for inline edits. */
|
|
68
118
|
onEdit?: (id: string, key: string, value: string) => void;
|
|
69
119
|
/** Sticky the first column(s) with a horizontal scroll shadow (default true). */
|
|
@@ -85,13 +135,18 @@ export type DataTableProps<T extends {
|
|
|
85
135
|
empty?: React.ReactNode;
|
|
86
136
|
/** Show the "N of M" count on the right of the toolbar (default true). */
|
|
87
137
|
showCount?: boolean;
|
|
138
|
+
/** Renders the toolbar's row count (default: "N row(s)" / "N of M" in
|
|
139
|
+
* English). Takes the shown (filtered) and total row counts — override for
|
|
140
|
+
* non-English pluralisation, since "N row/rows" doesn't translate as a
|
|
141
|
+
* template. */
|
|
142
|
+
countLabel?: (shown: number, total: number) => React.ReactNode;
|
|
88
143
|
/** Extra toolbar content (e.g. buttons) on the right of the toolbar. */
|
|
89
144
|
toolbar?: React.ReactNode;
|
|
90
145
|
className?: string;
|
|
91
146
|
};
|
|
92
147
|
export declare function DataTable<T extends {
|
|
93
148
|
id: string;
|
|
94
|
-
}>({ columns, data, selectable, selectedIds, onSelectionChange, sort: sortProp, defaultSort, onSortChange, filterable, searchPlaceholder, onEdit, stickyFirst, avatarTone, surface, interactive, onRowClick, onAddRow, addRowLabel, empty, showCount, toolbar, className, }: DataTableProps<T>): React.JSX.Element;
|
|
149
|
+
}>({ columns: columnsProp, data, selectable, selectedIds, onSelectionChange, selectAllLabel, selectRowLabel, columnMenu, onColumnsChange, groupBy, onRowsReorder, error, sort: sortProp, defaultSort, onSortChange, filterable, searchPlaceholder, searchLabel, onEdit, stickyFirst, avatarTone, surface, interactive, onRowClick, onAddRow, addRowLabel, empty, showCount, countLabel, toolbar, className, reorderRowLabel, ...rest }: DataTableProps<T>): React.JSX.Element;
|
|
95
150
|
export declare namespace DataTable {
|
|
96
151
|
var displayName: string;
|
|
97
152
|
}
|
|
@@ -1,22 +1,45 @@
|
|
|
1
|
+
import { type DatePickerActions, type DatePickerCellState, type DatePickerMonthRange, type UseDatePickerProps } from "@seed-design/react-date-picker";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
export type DatePickerProps = {
|
|
3
|
-
/** Controlled value. Omit to let the picker manage it (see defaultValue). */
|
|
4
|
-
value?: Date | null;
|
|
5
|
-
defaultValue?: Date | null;
|
|
6
|
-
onChange?: (date: Date) => void;
|
|
7
|
-
placeholder?: string;
|
|
8
|
-
/** `default` = outlined trigger; `ghost` = transparent (for table cells). */
|
|
9
|
-
variant?: "default" | "ghost";
|
|
10
|
-
/** Formats the trigger label (default: e.g. "Jun 3, 2026"). */
|
|
11
|
-
format?: (date: Date) => string;
|
|
12
|
-
"aria-label"?: string;
|
|
13
|
-
className?: string;
|
|
14
|
-
};
|
|
15
3
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
4
|
+
* The calendar's behaviour — selection modes, constraints, roving focus, the
|
|
5
|
+
* live region, the year/month wheel — comes from `@seed-design/react-date-picker`,
|
|
6
|
+
* the headless engine seed-design publishes. crisp supplies the view and the
|
|
7
|
+
* measured styling, so the semantics are seed's by construction rather than by
|
|
8
|
+
* reimplementation, and upstream fixes arrive as a version bump.
|
|
18
9
|
*/
|
|
19
|
-
|
|
20
|
-
export
|
|
21
|
-
var displayName: string;
|
|
10
|
+
type RootProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "defaultValue" | "onChange" | "onValueChange">;
|
|
11
|
+
export interface DatePickerCellContentRenderProps extends DatePickerCellState {
|
|
22
12
|
}
|
|
13
|
+
type BehaviorProps = UseDatePickerProps extends infer P ? P extends UseDatePickerProps ? Omit<P, "visibleRange" | "monthRange"> : never : never;
|
|
14
|
+
type CellCustomization = {
|
|
15
|
+
/** Extra content under the date numeral. Prefer this. */
|
|
16
|
+
renderDateCellSupplement?: (props: DatePickerCellContentRenderProps) => React.ReactNode;
|
|
17
|
+
renderDateCellContent?: never;
|
|
18
|
+
} | {
|
|
19
|
+
/** Replaces the cell's content, keeping its a11y and interaction. */
|
|
20
|
+
renderDateCellContent?: (props: DatePickerCellContentRenderProps) => React.ReactNode;
|
|
21
|
+
renderDateCellSupplement?: never;
|
|
22
|
+
};
|
|
23
|
+
type SizeProps = {
|
|
24
|
+
height?: number | string;
|
|
25
|
+
minHeight?: number | string;
|
|
26
|
+
maxHeight?: number | string;
|
|
27
|
+
};
|
|
28
|
+
type SharedProps = BehaviorProps & RootProps & {
|
|
29
|
+
/** Receives `navigateToDate` (no focus move) and `focusDate`. */
|
|
30
|
+
actionsRef?: React.Ref<DatePickerActions>;
|
|
31
|
+
className?: string;
|
|
32
|
+
} & CellCustomization;
|
|
33
|
+
export type DatePickerProps = SharedProps;
|
|
34
|
+
export type TwoMonthDatePickerProps = SharedProps;
|
|
35
|
+
export type WeekDatePickerProps = SharedProps;
|
|
36
|
+
export type ContinuousDatePickerProps = SharedProps & SizeProps & {
|
|
37
|
+
/** Months the calendar can scroll through, inclusive of both ends. */
|
|
38
|
+
monthRange?: DatePickerMonthRange;
|
|
39
|
+
};
|
|
40
|
+
export declare const DatePicker: React.ForwardRefExoticComponent<SharedProps & React.RefAttributes<HTMLDivElement>>;
|
|
41
|
+
export declare const TwoMonthDatePicker: React.ForwardRefExoticComponent<SharedProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export declare const WeekDatePicker: React.ForwardRefExoticComponent<SharedProps & React.RefAttributes<HTMLDivElement>>;
|
|
43
|
+
export declare const ContinuousDatePicker: React.ForwardRefExoticComponent<ContinuousDatePickerProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
export type { DatePickerActions, DatePickerAriaLabels, DatePickerCell, DatePickerCellState, DatePickerConstraint, DatePickerConstraintContext, DatePickerDate, DatePickerMonth, DatePickerMonthRange, DatePickerMultipleProps, DatePickerRangeProps, DatePickerRangeValue, DatePickerSelectionMode, DatePickerSingleProps, DatePickerValue, DatePickerVisibleRange, DatePickerWeek, DatePickerYearMonth, } from "@seed-design/react-date-picker";
|
|
45
|
+
export { compareDates, dateKey, dateOnOrAfter, dateOnOrBefore, excludeDates, isSameDate, maxSelectionCount, rangeDayCountAtLeast, rangeDayCountAtMost, } from "@seed-design/react-date-picker";
|
|
@@ -1,3 +1,26 @@
|
|
|
1
|
-
declare const config: import("../..").RecipeConfig<{
|
|
2
|
-
|
|
1
|
+
declare const config: import("../..").RecipeConfig<{
|
|
2
|
+
visibleRange: {
|
|
3
|
+
month: string;
|
|
4
|
+
twoMonths: string;
|
|
5
|
+
week: string;
|
|
6
|
+
continuous: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
export declare const datepickerRecipe: import("../..").RecipeFn<{
|
|
10
|
+
visibleRange: {
|
|
11
|
+
month: string;
|
|
12
|
+
twoMonths: string;
|
|
13
|
+
week: string;
|
|
14
|
+
continuous: string;
|
|
15
|
+
};
|
|
16
|
+
}> & {
|
|
17
|
+
config: import("../..").RecipeConfig<{
|
|
18
|
+
visibleRange: {
|
|
19
|
+
month: string;
|
|
20
|
+
twoMonths: string;
|
|
21
|
+
week: string;
|
|
22
|
+
continuous: string;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
3
26
|
export default config;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DatePicker, type DatePickerProps } from "./datepicker";
|
|
1
|
+
export { ContinuousDatePicker, type ContinuousDatePickerProps, compareDates, DatePicker, type DatePickerActions, type DatePickerAriaLabels, type DatePickerCell, type DatePickerCellContentRenderProps, type DatePickerCellState, type DatePickerConstraint, type DatePickerConstraintContext, type DatePickerDate, type DatePickerMonth, type DatePickerMonthRange, type DatePickerMultipleProps, type DatePickerProps, type DatePickerRangeProps, type DatePickerRangeValue, type DatePickerSelectionMode, type DatePickerSingleProps, type DatePickerValue, type DatePickerVisibleRange, type DatePickerWeek, type DatePickerYearMonth, dateKey, dateOnOrAfter, dateOnOrBefore, excludeDates, isSameDate, maxSelectionCount, rangeDayCountAtLeast, rangeDayCountAtMost, TwoMonthDatePicker, type TwoMonthDatePickerProps, WeekDatePicker, type WeekDatePickerProps, } from "./datepicker";
|
|
2
2
|
export { datepickerRecipe } from "./datepicker.recipe";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type DatePickerProps } from "../datepicker";
|
|
3
|
+
export type DatePreset = {
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
/** Thunk, not a Date: "Tomorrow" must be computed when the chip is pressed,
|
|
6
|
+
* not when the picker rendered — a long-lived page would otherwise offer a
|
|
7
|
+
* stale date. */
|
|
8
|
+
date: () => Date;
|
|
9
|
+
};
|
|
10
|
+
export type DatePickerFieldProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "onChange"> & {
|
|
11
|
+
/** Controlled value. Omit to let the field manage it (see defaultValue). */
|
|
12
|
+
value?: Date | null;
|
|
13
|
+
defaultValue?: Date | null;
|
|
14
|
+
onChange?: (date: Date) => void;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
/** `default` = outlined trigger; `ghost` = transparent (for table cells). */
|
|
17
|
+
variant?: "default" | "ghost";
|
|
18
|
+
/** Formats the trigger label (default: e.g. "Jun 3, 2026"). */
|
|
19
|
+
format?: (date: Date) => string;
|
|
20
|
+
/** Quick-pick chips under the calendar. */
|
|
21
|
+
presets?: DatePreset[];
|
|
22
|
+
/** Forwarded to the calendar — constraints, locale, ariaLabels and the rest. */
|
|
23
|
+
calendarProps?: Omit<DatePickerProps, "value" | "defaultValue" | "onValueChange" | "selectionMode">;
|
|
24
|
+
"aria-label"?: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Attio's date field: a trigger showing the value, opening a calendar in a
|
|
29
|
+
* popover. This is what `DatePicker` used to be; `DatePicker` is now
|
|
30
|
+
* seed-design's bare calendar, and this composes it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function DatePickerField({ value, defaultValue, onChange, placeholder, variant, format, presets, calendarProps, "aria-label": ariaLabel, className, ...rest }: DatePickerFieldProps): React.JSX.Element;
|
|
33
|
+
export declare namespace DatePickerField {
|
|
34
|
+
var displayName: string;
|
|
35
|
+
}
|
|
@@ -10,6 +10,8 @@ export type DialogProps = {
|
|
|
10
10
|
/** Content width in px (clamped to 90vw). */
|
|
11
11
|
width?: number;
|
|
12
12
|
"aria-label"?: string;
|
|
13
|
+
/** aria-label on the close button (default "Close") — override for non-English UIs. */
|
|
14
|
+
closeLabel?: string;
|
|
13
15
|
children?: React.ReactNode;
|
|
14
16
|
};
|
|
15
17
|
/**
|
|
@@ -17,7 +19,7 @@ export type DialogProps = {
|
|
|
17
19
|
* Escape / outside-click dismissal) with the measured Attio modal surface.
|
|
18
20
|
* Compose the body with `DialogBody` and actions with `DialogFooter`.
|
|
19
21
|
*/
|
|
20
|
-
export declare function Dialog({ open, onOpenChange, title, icon, width, "aria-label": ariaLabel, children, }: DialogProps): React.JSX.Element | null;
|
|
22
|
+
export declare function Dialog({ open, onOpenChange, title, icon, width, "aria-label": ariaLabel, closeLabel, children, }: DialogProps): React.JSX.Element | null;
|
|
21
23
|
export declare namespace Dialog {
|
|
22
24
|
var displayName: string;
|
|
23
25
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export type DividerProps = {
|
|
1
|
+
export type DividerProps = React.ComponentPropsWithoutRef<"hr"> & {
|
|
2
2
|
orientation?: "horizontal" | "vertical";
|
|
3
3
|
className?: string;
|
|
4
4
|
};
|
|
5
5
|
/** A hairline separator over `borderSubtle`, horizontal or vertical. */
|
|
6
|
-
export declare function Divider({ orientation, className, }: DividerProps): import("react").JSX.Element;
|
|
6
|
+
export declare function Divider({ orientation, className, ...rest }: DividerProps): import("react").JSX.Element;
|
|
7
7
|
export declare namespace Divider {
|
|
8
8
|
var displayName: string;
|
|
9
9
|
}
|
|
@@ -4,7 +4,7 @@ export type DonutSlice = {
|
|
|
4
4
|
value: number;
|
|
5
5
|
color?: string;
|
|
6
6
|
};
|
|
7
|
-
export type DonutChartProps = {
|
|
7
|
+
export type DonutChartProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
8
8
|
data: DonutSlice[];
|
|
9
9
|
/** Ring diameter in px (default 120). */
|
|
10
10
|
size?: number;
|
|
@@ -26,7 +26,7 @@ export type DonutChartProps = {
|
|
|
26
26
|
* ring using the r=15.915 (circumference 100) trick so slices are percentages;
|
|
27
27
|
* a centred total and an optional legend. `role="img"` with a summary.
|
|
28
28
|
*/
|
|
29
|
-
export declare function DonutChart({ data, size, thickness, centerValue, centerCaption, legend, format, "aria-label": ariaLabel, className, }: DonutChartProps): React.JSX.Element;
|
|
29
|
+
export declare function DonutChart({ data, size, thickness, centerValue, centerCaption, legend, format, "aria-label": ariaLabel, className, ...rest }: DonutChartProps): React.JSX.Element;
|
|
30
30
|
export declare namespace DonutChart {
|
|
31
31
|
var displayName: string;
|
|
32
32
|
}
|
|
@@ -7,6 +7,8 @@ export type DrawerProps = {
|
|
|
7
7
|
title?: React.ReactNode;
|
|
8
8
|
icon?: React.ReactNode;
|
|
9
9
|
"aria-label"?: string;
|
|
10
|
+
/** aria-label on the close button (default "Close"). */
|
|
11
|
+
closeLabel?: string;
|
|
10
12
|
children?: React.ReactNode;
|
|
11
13
|
};
|
|
12
14
|
/**
|
|
@@ -14,7 +16,7 @@ export type DrawerProps = {
|
|
|
14
16
|
* Escape / outside-click dismissal) with a panel that slides in from the edge.
|
|
15
17
|
* Compose the body with `DrawerBody` and actions with `DrawerFooter`.
|
|
16
18
|
*/
|
|
17
|
-
export declare function Drawer({ open, onOpenChange, side, title, icon, "aria-label": ariaLabel, children, }: DrawerProps): React.JSX.Element | null;
|
|
19
|
+
export declare function Drawer({ open, onOpenChange, side, title, icon, "aria-label": ariaLabel, closeLabel, children, }: DrawerProps): React.JSX.Element | null;
|
|
18
20
|
export declare namespace Drawer {
|
|
19
21
|
var displayName: string;
|
|
20
22
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
|
-
export type EmptyStateProps = {
|
|
2
|
+
export type EmptyStateProps = Omit<React.ComponentPropsWithoutRef<"div">, "title"> & {
|
|
3
3
|
icon?: React.ReactNode;
|
|
4
4
|
title: React.ReactNode;
|
|
5
5
|
description?: React.ReactNode;
|
|
@@ -13,7 +13,7 @@ export type EmptyStateProps = {
|
|
|
13
13
|
className?: string;
|
|
14
14
|
};
|
|
15
15
|
/** A centred empty-state panel — icon, title, description, optional action. */
|
|
16
|
-
export declare function EmptyState({ icon, title, description, action, variant, className, }: EmptyStateProps): React.JSX.Element;
|
|
16
|
+
export declare function EmptyState({ icon, title, description, action, variant, className, ...rest }: EmptyStateProps): React.JSX.Element;
|
|
17
17
|
export declare namespace EmptyState {
|
|
18
18
|
var displayName: string;
|
|
19
19
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
export type FormFieldProps = {
|
|
2
|
+
export type FormFieldProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
3
3
|
label: React.ReactNode;
|
|
4
4
|
/** `id` of the control — wires the label's `htmlFor`. */
|
|
5
5
|
htmlFor?: string;
|
|
6
6
|
/** Marks the field required (red asterisk). */
|
|
7
7
|
required?: boolean;
|
|
8
|
-
/** Shows a muted
|
|
9
|
-
|
|
8
|
+
/** Shows a muted marker after the label when the field isn't required.
|
|
9
|
+
* `true` shows the default "(optional)" text; pass any node (e.g. a
|
|
10
|
+
* translated string) to show that instead — for non-English UIs, since
|
|
11
|
+
* the default text has no other override. */
|
|
12
|
+
optional?: boolean | React.ReactNode;
|
|
10
13
|
/** Helper text under the control. */
|
|
11
14
|
description?: React.ReactNode;
|
|
12
15
|
/** Error message under the control (replaces description, coloured danger). */
|
|
@@ -20,7 +23,7 @@ export type FormFieldProps = {
|
|
|
20
23
|
* above any control, with an optional description or error line below. When
|
|
21
24
|
* `error` is set, it replaces the description and gets `aria-describedby` wiring.
|
|
22
25
|
*/
|
|
23
|
-
export declare function FormField({ label, htmlFor, required, optional, description, error, children, className, }: FormFieldProps): React.JSX.Element;
|
|
26
|
+
export declare function FormField({ label, htmlFor, required, optional, description, error, children, className, ...rest }: FormFieldProps): React.JSX.Element;
|
|
24
27
|
export declare namespace FormField {
|
|
25
28
|
var displayName: string;
|
|
26
29
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { VariantProps } from "../../core";
|
|
3
3
|
import { inputRecipe } from "./input.recipe";
|
|
4
|
-
export type InputProps = Omit<React.ComponentPropsWithoutRef<"input">, "size"> & VariantProps<typeof inputRecipe
|
|
4
|
+
export type InputProps = Omit<React.ComponentPropsWithoutRef<"input">, "size"> & VariantProps<typeof inputRecipe> & {
|
|
5
|
+
/** Class for the wrapper that draws the field chrome and focus ring. */
|
|
6
|
+
className?: string;
|
|
7
|
+
};
|
|
5
8
|
export declare const Input: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "size"> & VariantProps<import("../..").RecipeFn<{
|
|
6
9
|
size: {
|
|
7
10
|
medium: string;
|
|
@@ -29,4 +32,7 @@ export declare const Input: React.ForwardRefExoticComponent<Omit<Omit<React.Deta
|
|
|
29
32
|
fontSize: string;
|
|
30
33
|
};
|
|
31
34
|
};
|
|
32
|
-
}> &
|
|
35
|
+
}> & {
|
|
36
|
+
/** Class for the wrapper that draws the field chrome and focus ring. */
|
|
37
|
+
className?: string;
|
|
38
|
+
} & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -3,7 +3,7 @@ export type LinePoint = {
|
|
|
3
3
|
label: string;
|
|
4
4
|
value: number;
|
|
5
5
|
};
|
|
6
|
-
export type LineChartProps = {
|
|
6
|
+
export type LineChartProps = Omit<React.ComponentPropsWithoutRef<"div">, "color"> & {
|
|
7
7
|
data: LinePoint[];
|
|
8
8
|
/** Overall height in px (default 240). */
|
|
9
9
|
height?: number;
|
|
@@ -19,6 +19,8 @@ export type LineChartProps = {
|
|
|
19
19
|
dots?: boolean;
|
|
20
20
|
/** Formats axis ticks and point values. */
|
|
21
21
|
format?: (n: number) => string;
|
|
22
|
+
/** Pins the value-axis gutter width in px, overriding the width auto-derived from the longest tick label. */
|
|
23
|
+
yAxisWidth?: number;
|
|
22
24
|
/** Category-axis title, shown centred below the labels. */
|
|
23
25
|
xAxisTitle?: React.ReactNode;
|
|
24
26
|
"aria-label"?: string;
|
|
@@ -29,7 +31,7 @@ export type LineChartProps = {
|
|
|
29
31
|
* A stretched SVG line/area (non-scaling stroke keeps it crisp) over dashed
|
|
30
32
|
* gridlines; dots are HTML so they stay round. `role="img"` with a summary.
|
|
31
33
|
*/
|
|
32
|
-
export declare function LineChart({ data, height, max, ticks, color, area, dots, format, xAxisTitle, "aria-label": ariaLabel, className, }: LineChartProps): React.JSX.Element;
|
|
34
|
+
export declare function LineChart({ data, height, max, ticks, color, area, dots, format, yAxisWidth, xAxisTitle, "aria-label": ariaLabel, className, ...rest }: LineChartProps): React.JSX.Element;
|
|
33
35
|
export declare namespace LineChart {
|
|
34
36
|
var displayName: string;
|
|
35
37
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { Menu, MenuCheckboxItem, type MenuCheckboxItemProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, } from "./menu";
|
|
2
2
|
export { menuRecipe } from "./menu.recipe";
|
|
3
|
+
export { MENU_ITEM_SELECTOR, type UseMenuKeyboardOptions, useMenuKeyboard, } from "./menu-keyboard";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The elements a `role="menu"` may own, minus the disabled ones. Kept here so
|
|
4
|
+
* every menu surface in crisp agrees on what counts as an item.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MENU_ITEM_SELECTOR: string;
|
|
7
|
+
export type UseMenuKeyboardOptions = {
|
|
8
|
+
/** Whether the menu surface is currently rendered. */
|
|
9
|
+
open: boolean;
|
|
10
|
+
/** Close it. Callers that have a trigger should restore focus to it here. */
|
|
11
|
+
close: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Close it WITHOUT moving focus, for Tab — the browser is already taking
|
|
14
|
+
* focus somewhere else, and yanking it back to the trigger first would send
|
|
15
|
+
* the user to the wrong place.
|
|
16
|
+
*/
|
|
17
|
+
dismiss?: () => void;
|
|
18
|
+
/** The element carrying `role="menu"`. */
|
|
19
|
+
contentRef: React.RefObject<HTMLElement | null>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The WAI-ARIA menu keyboard model: focus the first item on open, ↑/↓ to move
|
|
23
|
+
* (wrapping), Home/End to jump, printable characters for typeahead, Esc to
|
|
24
|
+
* close, Tab to dismiss. Returns the `onKeyDown` to put on the menu element.
|
|
25
|
+
*
|
|
26
|
+
* Extracted from `Menu` so the table surfaces, which build their own popovers
|
|
27
|
+
* against measured positions, get the identical model instead of a second
|
|
28
|
+
* partial one.
|
|
29
|
+
*/
|
|
30
|
+
export declare function useMenuKeyboard({ open, close, dismiss, contentRef, }: UseMenuKeyboardOptions): {
|
|
31
|
+
onKeyDown: (e: React.KeyboardEvent) => void;
|
|
32
|
+
items: () => HTMLElement[];
|
|
33
|
+
};
|
|
@@ -5,6 +5,12 @@ export type MenuProps = {
|
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
/** Align the menu to the start (left) or end (right) of the trigger. */
|
|
7
7
|
align?: "start" | "end";
|
|
8
|
+
/** Controlled open state. Omit to let Menu manage it (see defaultOpen). */
|
|
9
|
+
open?: boolean;
|
|
10
|
+
/** Initially open, when uncontrolled. */
|
|
11
|
+
defaultOpen?: boolean;
|
|
12
|
+
/** Fires with the next open state, controlled or not. */
|
|
13
|
+
onOpenChange?: (open: boolean) => void;
|
|
8
14
|
className?: string;
|
|
9
15
|
"aria-label"?: string;
|
|
10
16
|
};
|
|
@@ -15,7 +21,7 @@ export type MenuProps = {
|
|
|
15
21
|
* typeahead, Enter/Space select, Esc closes and returns focus to the trigger);
|
|
16
22
|
* closes on outside click. Flips up / right-aligns when space is tight.
|
|
17
23
|
*/
|
|
18
|
-
export declare function Menu({ trigger, children, align, className, "aria-label": ariaLabel, }: MenuProps): React.JSX.Element;
|
|
24
|
+
export declare function Menu({ trigger, children, align, open: openProp, defaultOpen, onOpenChange, className, "aria-label": ariaLabel, }: MenuProps): React.JSX.Element;
|
|
19
25
|
export declare namespace Menu {
|
|
20
26
|
var displayName: string;
|
|
21
27
|
}
|
|
@@ -5,10 +5,14 @@ export type MultiSelectOption = {
|
|
|
5
5
|
/** Chip colour tone; falls back to a deterministic pastel per value. */
|
|
6
6
|
tone?: string;
|
|
7
7
|
};
|
|
8
|
-
export type MultiSelectProps = {
|
|
8
|
+
export type MultiSelectProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "onChange"> & {
|
|
9
9
|
options: MultiSelectOption[];
|
|
10
|
-
value
|
|
11
|
-
|
|
10
|
+
/** Controlled value. Omit to let MultiSelect manage it (see defaultValue). */
|
|
11
|
+
value?: string[];
|
|
12
|
+
/** Initially selected values, when uncontrolled. */
|
|
13
|
+
defaultValue?: string[];
|
|
14
|
+
/** Fires with the next value on every toggle, controlled or not. */
|
|
15
|
+
onValueChange?: (value: string[]) => void;
|
|
12
16
|
placeholder?: string;
|
|
13
17
|
/** Show a filter field at the top of the list (default true). */
|
|
14
18
|
searchable?: boolean;
|
|
@@ -23,7 +27,7 @@ export type MultiSelectProps = {
|
|
|
23
27
|
* popover with a search field over rows of "[chip] … [checkbox]" that toggle on
|
|
24
28
|
* click (the menu stays open). Keyboard: ↑/↓ move, Enter toggles, Esc closes.
|
|
25
29
|
*/
|
|
26
|
-
export declare function MultiSelect({ options, value, onValueChange, placeholder, searchable, searchPlaceholder, disabled, className, "aria-label": ariaLabel, }: MultiSelectProps): React.JSX.Element;
|
|
30
|
+
export declare function MultiSelect({ options, value: valueProp, defaultValue, onValueChange, placeholder, searchable, searchPlaceholder, disabled, className, "aria-label": ariaLabel, ...rest }: MultiSelectProps): React.JSX.Element;
|
|
27
31
|
export declare namespace MultiSelect {
|
|
28
32
|
var displayName: string;
|
|
29
33
|
}
|
|
@@ -7,7 +7,10 @@ export type PopoverProps = {
|
|
|
7
7
|
/** Align the popover to the trigger's left (`start`) or right (`end`) edge. */
|
|
8
8
|
align?: "start" | "end";
|
|
9
9
|
/** Controlled open state. Omit to let the popover manage it. */
|
|
10
|
+
/** Controlled open state. Omit to let Popover manage it (see defaultOpen). */
|
|
10
11
|
open?: boolean;
|
|
12
|
+
/** Initially open, when uncontrolled. */
|
|
13
|
+
defaultOpen?: boolean;
|
|
11
14
|
onOpenChange?: (open: boolean) => void;
|
|
12
15
|
"aria-label"?: string;
|
|
13
16
|
className?: string;
|
|
@@ -17,7 +20,7 @@ export type PopoverProps = {
|
|
|
17
20
|
* content. Opens below the trigger (flipping up when there's no room),
|
|
18
21
|
* closes on outside pointer-down and Escape. Controlled or self-managed.
|
|
19
22
|
*/
|
|
20
|
-
export declare function Popover({ trigger, children, align, open: openProp, onOpenChange, "aria-label": ariaLabel, className, }: PopoverProps): React.JSX.Element;
|
|
23
|
+
export declare function Popover({ trigger, children, align, open: openProp, defaultOpen, onOpenChange, "aria-label": ariaLabel, className, }: PopoverProps): React.JSX.Element;
|
|
21
24
|
export declare namespace Popover {
|
|
22
25
|
var displayName: string;
|
|
23
26
|
}
|