@crisp-ui-kit/crisp 0.2.0 → 0.7.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/README.md +20 -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/base.css +25 -0
- package/dist/board.css +9 -1
- package/dist/bulkbar.css +11 -3
- package/dist/button.css +16 -2
- 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 +180 -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 +11 -3
- package/dist/datatable.css +106 -0
- package/dist/datatable.d.ts +7 -0
- package/dist/datepicker.css +165 -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 +11 -3
- 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 +33 -0
- package/dist/esm/components/accordion/accordion.recipe.js +23 -0
- package/dist/esm/components/accordion/index.js +2 -0
- package/dist/esm/components/avatar/avatar.js +8 -0
- package/dist/esm/components/avatar/avatar.recipe.js +39 -0
- package/dist/esm/components/avatar/index.js +2 -0
- package/dist/esm/components/avatargroup/avatargroup.js +16 -0
- package/dist/esm/components/avatargroup/avatargroup.recipe.js +15 -0
- package/dist/esm/components/avatargroup/index.js +2 -0
- package/dist/esm/components/badge/badge.js +8 -0
- package/dist/esm/components/badge/badge.recipe.js +65 -0
- package/dist/esm/components/badge/index.js +2 -0
- package/dist/esm/components/barchart/barchart.js +42 -0
- package/dist/esm/components/barchart/barchart.recipe.js +31 -0
- package/dist/esm/components/barchart/index.js +2 -0
- package/dist/esm/components/breadcrumb/breadcrumb.js +17 -0
- package/dist/esm/components/breadcrumb/breadcrumb.recipe.js +18 -0
- package/dist/esm/components/breadcrumb/index.js +2 -0
- package/dist/esm/components/bulkbar/bulkbar.js +16 -0
- package/dist/esm/components/bulkbar/bulkbar.recipe.js +28 -0
- package/dist/esm/components/bulkbar/index.js +2 -0
- package/dist/esm/components/button/button.js +26 -0
- package/dist/esm/components/button/button.recipe.js +55 -0
- package/dist/esm/components/button/index.js +2 -0
- package/dist/esm/components/callout/callout.js +22 -0
- package/dist/esm/components/callout/callout.recipe.js +26 -0
- package/dist/esm/components/callout/index.js +2 -0
- package/dist/esm/components/card/card.js +15 -0
- package/dist/esm/components/card/card.recipe.js +28 -0
- package/dist/esm/components/card/index.js +2 -0
- package/dist/esm/components/checkbox/checkbox.js +20 -0
- package/dist/esm/components/checkbox/checkbox.recipe.js +31 -0
- package/dist/esm/components/checkbox/index.js +2 -0
- 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.js +42 -0
- package/dist/esm/components/contextmenu/contextmenu.recipe.js +21 -0
- package/dist/esm/components/contextmenu/index.js +2 -0
- package/dist/esm/components/datatable/datatable.js +472 -0
- package/dist/esm/components/datatable/datatable.recipe.js +110 -0
- package/dist/esm/components/datatable/index.js +2 -0
- package/dist/esm/components/datepicker/datepicker.js +108 -0
- package/dist/esm/components/datepicker/datepicker.recipe.js +177 -0
- package/dist/esm/components/datepicker/index.js +2 -0
- 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 +48 -0
- package/dist/esm/components/dialog/dialog.recipe.js +32 -0
- package/dist/esm/components/dialog/index.js +2 -0
- package/dist/esm/components/divider/divider.js +7 -0
- package/dist/esm/components/divider/divider.recipe.js +14 -0
- package/dist/esm/components/divider/index.js +2 -0
- package/dist/esm/components/donutchart/donutchart.js +38 -0
- package/dist/esm/components/donutchart/donutchart.recipe.js +27 -0
- package/dist/esm/components/donutchart/index.js +2 -0
- package/dist/esm/components/drawer/drawer.js +42 -0
- package/dist/esm/components/drawer/drawer.recipe.js +27 -0
- package/dist/esm/components/drawer/index.js +2 -0
- package/dist/esm/components/emptystate/emptystate.js +7 -0
- package/dist/esm/components/emptystate/emptystate.recipe.js +31 -0
- package/dist/esm/components/emptystate/index.js +2 -0
- package/dist/esm/components/formfield/formfield.js +14 -0
- package/dist/esm/components/formfield/formfield.recipe.js +19 -0
- package/dist/esm/components/formfield/index.js +2 -0
- package/dist/esm/components/input/index.js +2 -0
- package/dist/esm/components/input/input.js +11 -0
- package/dist/esm/components/input/input.recipe.js +56 -0
- package/dist/esm/components/kbd/index.js +2 -0
- package/dist/esm/components/kbd/kbd.js +8 -0
- package/dist/esm/components/kbd/kbd.recipe.js +20 -0
- package/dist/esm/components/linechart/index.js +2 -0
- package/dist/esm/components/linechart/linechart.js +54 -0
- package/dist/esm/components/linechart/linechart.recipe.js +32 -0
- package/dist/esm/components/menu/index.js +3 -0
- package/dist/esm/components/menu/menu-keyboard.js +80 -0
- package/dist/esm/components/menu/menu.js +104 -0
- package/dist/esm/components/menu/menu.recipe.js +51 -0
- package/dist/esm/components/multiselect/index.js +2 -0
- package/dist/esm/components/multiselect/multiselect.js +125 -0
- package/dist/esm/components/multiselect/multiselect.recipe.js +68 -0
- package/dist/esm/components/popover/index.js +2 -0
- package/dist/esm/components/popover/popover.js +70 -0
- package/dist/esm/components/popover/popover.recipe.js +18 -0
- package/dist/esm/components/progress/index.js +2 -0
- package/dist/esm/components/progress/progress.js +23 -0
- package/dist/esm/components/progress/progress.recipe.js +17 -0
- package/dist/esm/components/radiogroup/index.js +2 -0
- package/dist/esm/components/radiogroup/radiogroup.js +46 -0
- package/dist/esm/components/radiogroup/radiogroup.recipe.js +37 -0
- 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/index.js +2 -0
- package/dist/esm/components/segmented/segmented.js +59 -0
- package/dist/esm/components/segmented/segmented.recipe.js +20 -0
- package/dist/esm/components/select/index.js +2 -0
- package/dist/esm/components/select/select.js +144 -0
- package/dist/esm/components/select/select.recipe.js +76 -0
- package/dist/esm/components/skeleton/index.js +2 -0
- package/dist/esm/components/skeleton/skeleton.js +10 -0
- package/dist/esm/components/skeleton/skeleton.recipe.js +14 -0
- package/dist/esm/components/spinner/index.js +2 -0
- package/dist/esm/components/spinner/spinner.js +12 -0
- package/dist/esm/components/spinner/spinner.recipe.js +13 -0
- package/dist/esm/components/stagebar/index.js +2 -0
- package/dist/esm/components/stagebar/stagebar.js +23 -0
- package/dist/esm/components/stagebar/stagebar.recipe.js +14 -0
- package/dist/esm/components/statcard/index.js +2 -0
- package/dist/esm/components/statcard/statcard.js +12 -0
- package/dist/esm/components/statcard/statcard.recipe.js +34 -0
- package/dist/esm/components/switch/index.js +2 -0
- package/dist/esm/components/switch/switch.js +22 -0
- package/dist/esm/components/switch/switch.recipe.js +26 -0
- package/dist/esm/components/table/index.js +2 -0
- package/dist/esm/components/table/table.js +30 -0
- package/dist/esm/components/table/table.recipe.js +40 -0
- package/dist/esm/components/tabletoolbar/index.js +2 -0
- package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +79 -0
- package/dist/esm/components/tabletoolbar/tabletoolbar.js +199 -0
- package/dist/esm/components/tabletoolbar/tabletoolbar.recipe.js +23 -0
- package/dist/esm/components/tabs/index.js +2 -0
- package/dist/esm/components/tabs/tabs.js +70 -0
- package/dist/esm/components/tabs/tabs.recipe.js +33 -0
- package/dist/esm/components/textarea/index.js +2 -0
- package/dist/esm/components/textarea/textarea.js +20 -0
- package/dist/esm/components/textarea/textarea.recipe.js +43 -0
- package/dist/esm/components/toast/index.js +2 -0
- package/dist/esm/components/toast/toast.js +58 -0
- package/dist/esm/components/toast/toast.recipe.js +28 -0
- package/dist/esm/components/tooltip/index.js +2 -0
- package/dist/esm/components/tooltip/tooltip.js +59 -0
- package/dist/esm/components/tooltip/tooltip.recipe.js +13 -0
- 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/core/cx.js +1 -0
- package/dist/esm/core/define.js +3 -0
- package/dist/esm/core/index.js +4 -0
- package/dist/esm/core/primitive.js +13 -0
- package/dist/esm/core/resolve.js +41 -0
- package/dist/esm/core/types.js +1 -0
- package/dist/esm/index.js +76 -0
- package/dist/esm/product/appshell/appshell.js +68 -0
- package/dist/esm/product/appshell/appshell.recipe.js +27 -0
- package/dist/esm/product/appshell/index.js +2 -0
- 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 +42 -0
- package/dist/esm/product/board/board.recipe.js +28 -0
- package/dist/esm/product/board/index.js +2 -0
- package/dist/esm/product/command/command.js +201 -0
- package/dist/esm/product/command/command.recipe.js +44 -0
- package/dist/esm/product/command/index.js +2 -0
- package/dist/esm/product/entitycard/entitycard.js +11 -0
- package/dist/esm/product/entitycard/entitycard.recipe.js +29 -0
- package/dist/esm/product/entitycard/index.js +2 -0
- package/dist/esm/product/flowcanvas/flowcanvas.js +85 -0
- package/dist/esm/product/flowcanvas/flowcanvas.recipe.js +25 -0
- package/dist/esm/product/flowcanvas/index.js +2 -0
- package/dist/esm/product/inbox/inbox.js +13 -0
- package/dist/esm/product/inbox/inbox.recipe.js +43 -0
- package/dist/esm/product/inbox/index.js +2 -0
- package/dist/esm/product/listpage/index.js +2 -0
- package/dist/esm/product/listpage/listpage.js +21 -0
- package/dist/esm/product/listpage/listpage.recipe.js +43 -0
- package/dist/esm/product/navitem/index.js +1 -0
- package/dist/esm/product/navitem/navitem.js +8 -0
- package/dist/esm/product/navitem/navitem.recipe.js +33 -0
- package/dist/esm/product/onboarding/index.js +2 -0
- package/dist/esm/product/onboarding/onboarding.js +14 -0
- package/dist/esm/product/onboarding/onboarding.recipe.js +41 -0
- package/dist/esm/product/recordpage/index.js +2 -0
- package/dist/esm/product/recordpage/recordpage.js +372 -0
- package/dist/esm/product/recordpage/recordpage.recipe.js +159 -0
- package/dist/esm/product/recordpanel/index.js +2 -0
- package/dist/esm/product/recordpanel/recordpanel.js +47 -0
- package/dist/esm/product/recordpanel/recordpanel.recipe.js +48 -0
- package/dist/esm/product/recordstable/company-logos.js +26 -0
- package/dist/esm/product/recordstable/index.js +2 -0
- package/dist/esm/product/recordstable/recordstable.js +1054 -0
- package/dist/esm/product/recordstable/recordstable.recipe.js +149 -0
- package/dist/esm/product/recordstable/recordstable.tag.js +18 -0
- package/dist/esm/product/richtext/index.js +2 -0
- package/dist/esm/product/richtext/richtext.js +111 -0
- package/dist/esm/product/richtext/richtext.recipe.js +40 -0
- package/dist/esm/product/settingssection/index.js +2 -0
- package/dist/esm/product/settingssection/settingssection.js +11 -0
- package/dist/esm/product/settingssection/settingssection.recipe.js +20 -0
- package/dist/esm/product/settingsshell/index.js +2 -0
- package/dist/esm/product/settingsshell/settingsshell.js +23 -0
- package/dist/esm/product/settingsshell/settingsshell.recipe.js +43 -0
- package/dist/esm/product/sidebar/index.js +2 -0
- package/dist/esm/product/sidebar/sidebar.js +112 -0
- package/dist/esm/product/sidebar/sidebar.recipe.js +43 -0
- package/dist/esm/product/tasklist/index.js +2 -0
- package/dist/esm/product/tasklist/tasklist.js +16 -0
- package/dist/esm/product/tasklist/tasklist.recipe.js +35 -0
- package/dist/esm/product/trialbanner/index.js +2 -0
- package/dist/esm/product/trialbanner/trialbanner.js +10 -0
- package/dist/esm/product/trialbanner/trialbanner.recipe.js +29 -0
- package/dist/esm/product/viewtoggle/index.js +2 -0
- package/dist/esm/product/viewtoggle/viewtoggle.js +19 -0
- package/dist/esm/product/viewtoggle/viewtoggle.recipe.js +24 -0
- package/dist/esm/tokens/contract.js +18 -0
- package/dist/esm/tokens/elevation.js +44 -0
- package/dist/esm/tokens/index.js +5 -0
- package/dist/esm/tokens/palette.js +60 -0
- package/dist/esm/tokens/scale.js +67 -0
- package/dist/esm/tokens/semantic.js +54 -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 +13 -5
- package/dist/multiselect.css +17 -9
- 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 +9 -1
- package/dist/progress.css +8 -0
- package/dist/radiogroup.css +9 -1
- package/dist/recordpage.css +26 -16
- package/dist/recordpanel.css +25 -15
- package/dist/recordstable.css +41 -27
- 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 +22 -8
- package/dist/select.d.ts +2 -1
- 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/statcard.css +6 -0
- package/dist/statcard.d.ts +2 -2
- package/dist/styles.css +2134 -999
- package/dist/switch.css +8 -0
- package/dist/table.css +34 -0
- package/dist/table.d.ts +8 -0
- package/dist/tabletoolbar.css +78 -0
- package/dist/tabletoolbar.d.ts +7 -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 +53 -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 +153 -0
- package/dist/types/components/datatable/datatable.recipe.d.ts +3 -0
- package/dist/types/components/datatable/index.d.ts +2 -0
- 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 +4 -2
- package/dist/types/components/select/select.recipe.d.ts +12 -0
- 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 +7 -2
- package/dist/types/components/statcard/statcard.recipe.d.ts +12 -2
- package/dist/types/components/table/index.d.ts +2 -0
- package/dist/types/components/table/table.d.ts +53 -0
- package/dist/types/components/table/table.recipe.d.ts +21 -0
- package/dist/types/components/tabletoolbar/index.d.ts +2 -0
- package/dist/types/components/tabletoolbar/tabletoolbar.chrome.d.ts +2 -0
- package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +89 -0
- package/dist/types/components/tabletoolbar/tabletoolbar.recipe.d.ts +3 -0
- 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 +8 -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/company-logos.d.ts +1 -0
- package/dist/types/product/recordstable/recordstable.d.ts +131 -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/index.d.ts +1 -1
- package/dist/types/product/sidebar/sidebar.d.ts +93 -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 +26 -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 +88 -0
- package/dist/types/tokens/scale.d.ts +7 -0
- package/dist/types/tokens/semantic.d.ts +31 -0
- package/dist/viewtoggle.css +11 -3
- package/dist/wheelpicker.css +68 -0
- package/dist/wheelpicker.d.ts +7 -0
- package/package.json +351 -9
- package/dist/index.js +0 -9690
|
@@ -4,6 +4,10 @@ export type RichTextValue = {
|
|
|
4
4
|
html: string;
|
|
5
5
|
};
|
|
6
6
|
export type RichTextEditorProps = {
|
|
7
|
+
/** Accessible name for the title field. */
|
|
8
|
+
titleLabel?: string;
|
|
9
|
+
/** Accessible name for the body editor. */
|
|
10
|
+
bodyLabel?: string;
|
|
7
11
|
defaultTitle?: string;
|
|
8
12
|
/** Initial body HTML. */
|
|
9
13
|
defaultHtml?: string;
|
|
@@ -18,7 +22,7 @@ export type RichTextEditorProps = {
|
|
|
18
22
|
* that appears over a text selection. Built on contentEditable, dependency-free.
|
|
19
23
|
* Uncontrolled: seed with `defaultTitle`/`defaultHtml`, read via `onChange`.
|
|
20
24
|
*/
|
|
21
|
-
export declare function RichTextEditor({ defaultTitle, defaultHtml, titlePlaceholder, placeholder, onChange, className, }: RichTextEditorProps): React.JSX.Element;
|
|
25
|
+
export declare function RichTextEditor({ defaultTitle, defaultHtml, titlePlaceholder, placeholder, onChange, className, titleLabel, bodyLabel, }: RichTextEditorProps): React.JSX.Element;
|
|
22
26
|
export declare namespace RichTextEditor {
|
|
23
27
|
var displayName: string;
|
|
24
28
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
|
-
export type SettingsSectionProps = {
|
|
2
|
+
export type SettingsSectionProps = Omit<React.ComponentPropsWithoutRef<"section">, "title"> & {
|
|
3
3
|
title: React.ReactNode;
|
|
4
4
|
description?: React.ReactNode;
|
|
5
5
|
/** Trailing action on the title row (e.g. a Button). */
|
|
@@ -12,7 +12,7 @@ export type SettingsSectionProps = {
|
|
|
12
12
|
* subtitle and trailing action, then a gapped stack of rows (pair with
|
|
13
13
|
* FormField). Compose several inside a settings content pane.
|
|
14
14
|
*/
|
|
15
|
-
export declare function SettingsSection({ title, description, action, children, className, }: SettingsSectionProps): React.JSX.Element;
|
|
15
|
+
export declare function SettingsSection({ title, description, action, children, className, ...rest }: SettingsSectionProps): React.JSX.Element;
|
|
16
16
|
export declare namespace SettingsSection {
|
|
17
17
|
var displayName: string;
|
|
18
18
|
}
|
|
@@ -9,8 +9,12 @@ export type SettingsNavGroup = {
|
|
|
9
9
|
label?: React.ReactNode;
|
|
10
10
|
items: SettingsNavItem[];
|
|
11
11
|
};
|
|
12
|
-
export type SettingsShellProps = {
|
|
12
|
+
export type SettingsShellProps = Omit<React.ComponentPropsWithoutRef<"div">, "title" | "onSelect"> & {
|
|
13
13
|
/** Back-header title (default "Settings"). */
|
|
14
|
+
/** Accessible name for the settings nav. */
|
|
15
|
+
navLabel?: string;
|
|
16
|
+
/** Shown when the search matches nothing. */
|
|
17
|
+
emptyLabel?: React.ReactNode;
|
|
14
18
|
title?: React.ReactNode;
|
|
15
19
|
onBack?: () => void;
|
|
16
20
|
groups: SettingsNavGroup[];
|
|
@@ -28,7 +32,7 @@ export type SettingsShellProps = {
|
|
|
28
32
|
* search, grouped items) beside a scrolling content pane. The search filters the
|
|
29
33
|
* nav by label. Fills the height its container gives it.
|
|
30
34
|
*/
|
|
31
|
-
export declare function SettingsShell({ title, onBack, groups, activeItem, onSelect, searchable, searchPlaceholder, children, className, }: SettingsShellProps): React.JSX.Element;
|
|
35
|
+
export declare function SettingsShell({ title, onBack, groups, activeItem, onSelect, searchable, searchPlaceholder, children, className, navLabel, emptyLabel, ...rest }: SettingsShellProps): React.JSX.Element;
|
|
32
36
|
export declare namespace SettingsShell {
|
|
33
37
|
var displayName: string;
|
|
34
38
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Sidebar, type SidebarProps } from "./sidebar";
|
|
1
|
+
export { ATTIO_SIDEBAR_CHATS_SECTION, ATTIO_SIDEBAR_FOOTER, ATTIO_SIDEBAR_ITEMS, ATTIO_SIDEBAR_LISTS_SECTION, ATTIO_SIDEBAR_RECORDS_SECTION, ATTIO_SIDEBAR_WORKSPACE, Sidebar, type SidebarFooter, type SidebarListsSection, type SidebarNavItem, type SidebarProps, type SidebarRecordItem, type SidebarRecordsSection, type SidebarSection, type SidebarWorkspace, } from "./sidebar";
|
|
2
2
|
export { sidebarRecipe } from "./sidebar.recipe";
|
|
@@ -1,11 +1,104 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import type { AvatarProps } from "../../components/avatar";
|
|
3
|
+
type IconProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
/** A row in the main nav, or in a section's item list (Chats, etc). */
|
|
7
|
+
export type SidebarNavItem = {
|
|
8
|
+
label: string;
|
|
9
|
+
/** 16px icon component, rendered `<Icon />`. */
|
|
10
|
+
icon: React.ComponentType<IconProps>;
|
|
11
|
+
active?: boolean;
|
|
12
|
+
trailing?: React.ReactNode;
|
|
13
|
+
};
|
|
14
|
+
/** A row in the Records section — rendered as a tinted 20px glyph avatar. */
|
|
15
|
+
export type SidebarRecordItem = {
|
|
16
|
+
label: string;
|
|
17
|
+
tone: NonNullable<AvatarProps["tone"]>;
|
|
18
|
+
/** 12px glyph, rendered `<Glyph />` inside the tone avatar. */
|
|
19
|
+
glyph: React.ComponentType;
|
|
20
|
+
};
|
|
21
|
+
/** The workspace switcher at the top of the sidebar. */
|
|
22
|
+
export type SidebarWorkspace = {
|
|
23
|
+
name: string;
|
|
24
|
+
/** Avatar initial/letter. */
|
|
25
|
+
avatarLabel: string;
|
|
26
|
+
avatarTone?: NonNullable<AvatarProps["tone"]>;
|
|
27
|
+
};
|
|
28
|
+
/** A collapsible section built from nav-item rows (main nav shape is used, less the divider). */
|
|
29
|
+
export type SidebarSection = {
|
|
30
|
+
label: string;
|
|
31
|
+
items: SidebarNavItem[];
|
|
32
|
+
};
|
|
33
|
+
/** The Records section — same shape as SidebarSection but with glyph-avatar rows. */
|
|
34
|
+
export type SidebarRecordsSection = {
|
|
35
|
+
label: string;
|
|
36
|
+
items: SidebarRecordItem[];
|
|
37
|
+
};
|
|
38
|
+
/** The Lists section — has no item list of its own, just the "+ New list" affordance. */
|
|
39
|
+
export type SidebarListsSection = {
|
|
40
|
+
label: string;
|
|
41
|
+
newListLabel: string;
|
|
42
|
+
};
|
|
43
|
+
/** Footer copy: the onboarding pill, the invite row, and the trial banner. */
|
|
44
|
+
export type SidebarFooter = {
|
|
45
|
+
gettingStartedLabel: string;
|
|
46
|
+
inviteLabel: string;
|
|
47
|
+
trialText: string;
|
|
48
|
+
trialActionLabel: string;
|
|
49
|
+
};
|
|
2
50
|
export type SidebarProps = React.ComponentPropsWithoutRef<"nav"> & {
|
|
51
|
+
/** Label for the collapse control. */
|
|
52
|
+
collapseLabel?: string;
|
|
53
|
+
/** Label for the inbox quick-action. */
|
|
54
|
+
inboxLabel?: string;
|
|
3
55
|
asChild?: boolean;
|
|
4
56
|
/** Called when the collapse-panel button in the header is pressed. */
|
|
5
57
|
onToggleCollapse?: () => void;
|
|
58
|
+
/** Workspace switcher content. Defaults to the measured Attio workspace. */
|
|
59
|
+
workspace?: SidebarWorkspace;
|
|
60
|
+
/** Main nav rows (Home, Tasks, …). Defaults to the measured Attio nav. */
|
|
61
|
+
items?: SidebarNavItem[];
|
|
62
|
+
/** The Records section (label + glyph-avatar rows). */
|
|
63
|
+
recordsSection?: SidebarRecordsSection;
|
|
64
|
+
/** The Lists section (label + "new list" affordance label). */
|
|
65
|
+
listsSection?: SidebarListsSection;
|
|
66
|
+
/** The Chats section (label + nav-item rows). */
|
|
67
|
+
chatsSection?: SidebarSection;
|
|
68
|
+
/** Footer copy (onboarding pill, invite row, trial banner). */
|
|
69
|
+
footer?: SidebarFooter;
|
|
6
70
|
};
|
|
71
|
+
/** The measured Attio workspace switcher — the default `workspace` prop. */
|
|
72
|
+
export declare const ATTIO_SIDEBAR_WORKSPACE: SidebarWorkspace;
|
|
73
|
+
/** The measured Attio main nav — the default `items` prop. */
|
|
74
|
+
export declare const ATTIO_SIDEBAR_ITEMS: SidebarNavItem[];
|
|
75
|
+
/** The measured Attio Records section — the default `recordsSection` prop. */
|
|
76
|
+
export declare const ATTIO_SIDEBAR_RECORDS_SECTION: SidebarRecordsSection;
|
|
77
|
+
/** The measured Attio Lists section — the default `listsSection` prop. */
|
|
78
|
+
export declare const ATTIO_SIDEBAR_LISTS_SECTION: SidebarListsSection;
|
|
79
|
+
/** The measured Attio Chats section — the default `chatsSection` prop. */
|
|
80
|
+
export declare const ATTIO_SIDEBAR_CHATS_SECTION: SidebarSection;
|
|
81
|
+
/** The measured Attio footer copy — the default `footer` prop. */
|
|
82
|
+
export declare const ATTIO_SIDEBAR_FOOTER: SidebarFooter;
|
|
7
83
|
export declare const Sidebar: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
|
|
84
|
+
/** Label for the collapse control. */
|
|
85
|
+
collapseLabel?: string;
|
|
86
|
+
/** Label for the inbox quick-action. */
|
|
87
|
+
inboxLabel?: string;
|
|
8
88
|
asChild?: boolean;
|
|
9
89
|
/** Called when the collapse-panel button in the header is pressed. */
|
|
10
90
|
onToggleCollapse?: () => void;
|
|
91
|
+
/** Workspace switcher content. Defaults to the measured Attio workspace. */
|
|
92
|
+
workspace?: SidebarWorkspace;
|
|
93
|
+
/** Main nav rows (Home, Tasks, …). Defaults to the measured Attio nav. */
|
|
94
|
+
items?: SidebarNavItem[];
|
|
95
|
+
/** The Records section (label + glyph-avatar rows). */
|
|
96
|
+
recordsSection?: SidebarRecordsSection;
|
|
97
|
+
/** The Lists section (label + "new list" affordance label). */
|
|
98
|
+
listsSection?: SidebarListsSection;
|
|
99
|
+
/** The Chats section (label + nav-item rows). */
|
|
100
|
+
chatsSection?: SidebarSection;
|
|
101
|
+
/** Footer copy (onboarding pill, invite row, trial banner). */
|
|
102
|
+
footer?: SidebarFooter;
|
|
11
103
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
104
|
+
export {};
|
|
@@ -15,6 +15,10 @@ export type TaskGroup = {
|
|
|
15
15
|
tasks: Task[];
|
|
16
16
|
};
|
|
17
17
|
export type TaskListProps = {
|
|
18
|
+
/** Label for a task's checkbox while the task is open. */
|
|
19
|
+
completeLabel?: string;
|
|
20
|
+
/** Label for a task's checkbox once it is done. */
|
|
21
|
+
incompleteLabel?: string;
|
|
18
22
|
/** Flat list of tasks (use `groups` for grouped sections). */
|
|
19
23
|
tasks?: Task[];
|
|
20
24
|
/** Grouped sections, each with a header + count. */
|
|
@@ -30,7 +34,7 @@ export type TaskListProps = {
|
|
|
30
34
|
* count, then rows of a round complete-checkbox + title + trailing meta.
|
|
31
35
|
* Completed rows strike through; overdue dates go red.
|
|
32
36
|
*/
|
|
33
|
-
export declare function TaskList({ tasks, groups, onToggle, emptyLabel, className, }: TaskListProps): React.JSX.Element;
|
|
37
|
+
export declare function TaskList({ tasks, groups, onToggle, emptyLabel, className, completeLabel, incompleteLabel, }: TaskListProps): React.JSX.Element;
|
|
34
38
|
export declare namespace TaskList {
|
|
35
39
|
var displayName: string;
|
|
36
40
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as React from "react";
|
|
2
|
-
export type TrialBannerProps = {
|
|
2
|
+
export type TrialBannerProps = Omit<React.ComponentPropsWithoutRef<"div">, "children" | "title"> & {
|
|
3
3
|
/** Leading icon. */
|
|
4
4
|
icon?: React.ReactNode;
|
|
5
5
|
/** The message (children). */
|
|
@@ -15,7 +15,7 @@ export type TrialBannerProps = {
|
|
|
15
15
|
* A compact trial / upgrade banner — measured from Attio's sidebar footer.
|
|
16
16
|
* Icon + message + an optional small action pill (soft-glow outlined button).
|
|
17
17
|
*/
|
|
18
|
-
export declare function TrialBanner({ icon, children, action, onAction, tone, className, }: TrialBannerProps): React.JSX.Element;
|
|
18
|
+
export declare function TrialBanner({ icon, children, action, onAction, tone, className, ...rest }: TrialBannerProps): React.JSX.Element;
|
|
19
19
|
export declare namespace TrialBanner {
|
|
20
20
|
var displayName: string;
|
|
21
21
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from "react";
|
|
2
2
|
export type ViewToggleOption<T extends string = string> = {
|
|
3
3
|
value: T;
|
|
4
4
|
/** Icon shown in the tile. */
|
|
@@ -6,10 +6,16 @@ export type ViewToggleOption<T extends string = string> = {
|
|
|
6
6
|
/** Accessible label. */
|
|
7
7
|
label: string;
|
|
8
8
|
};
|
|
9
|
-
export type ViewToggleProps<T extends string = string> = {
|
|
9
|
+
export type ViewToggleProps<T extends string = string> = Omit<React.ComponentPropsWithoutRef<"div">, "onChange"> & {
|
|
10
10
|
options: ViewToggleOption<T>[];
|
|
11
|
-
value
|
|
12
|
-
|
|
11
|
+
/** Controlled value. Omit to let ViewToggle manage it (see defaultValue). */
|
|
12
|
+
value?: T;
|
|
13
|
+
/** Initially selected value, when uncontrolled. Defaults to the first option. */
|
|
14
|
+
defaultValue?: T;
|
|
15
|
+
/** Fires with the next value on every pick, controlled or not.
|
|
16
|
+
* Named `onChange` rather than the house `onValueChange` for historical
|
|
17
|
+
* reasons; renaming it would break consumers. */
|
|
18
|
+
onChange?: (value: T) => void;
|
|
13
19
|
"aria-label"?: string;
|
|
14
20
|
className?: string;
|
|
15
21
|
};
|
|
@@ -18,7 +24,7 @@ export type ViewToggleProps<T extends string = string> = {
|
|
|
18
24
|
* of icon tiles; the selected tile is raised. Use for view-mode switches (list ⇄
|
|
19
25
|
* grid) or any small mutually-exclusive icon choice.
|
|
20
26
|
*/
|
|
21
|
-
export declare function ViewToggle<T extends string = string>({ options, value, onChange, "aria-label": ariaLabel, className, }: ViewToggleProps<T>): React.JSX.Element;
|
|
27
|
+
export declare function ViewToggle<T extends string = string>({ options, value: valueProp, defaultValue, onChange, "aria-label": ariaLabel, className, ...rest }: ViewToggleProps<T>): React.JSX.Element;
|
|
22
28
|
export declare namespace ViewToggle {
|
|
23
29
|
var displayName: string;
|
|
24
30
|
}
|
|
@@ -4,24 +4,47 @@ export declare const contract: MapLeafNodes<{
|
|
|
4
4
|
bgBrandSolid: "brand600";
|
|
5
5
|
bgBrandSolidPressed: "brand700";
|
|
6
6
|
fgOnBrand: "white";
|
|
7
|
+
fgOnTone: "ink";
|
|
7
8
|
bgSurface: "gray00";
|
|
8
9
|
bgRaised: "gray50";
|
|
9
10
|
borderDefault: "line200";
|
|
10
11
|
borderSubtle: "line100";
|
|
12
|
+
ringNeutral: "ringNeutral";
|
|
13
|
+
bgTileActive: "tileActive";
|
|
14
|
+
shadowTileActive: "tileActiveShadow";
|
|
15
|
+
bgOverlayFrost: "overlayFrost";
|
|
16
|
+
shadowOverlay1: "shadowOverlay1";
|
|
17
|
+
shadowOverlay2: "shadowOverlay2";
|
|
18
|
+
shadowOverlay3: "shadowOverlay3";
|
|
19
|
+
bgPopover: "popoverBg";
|
|
20
|
+
ringPopover: "ringPopover";
|
|
21
|
+
shadowPopover1: "shadowPopover1";
|
|
22
|
+
shadowPopover2: "shadowPopover2";
|
|
23
|
+
shadowPopover3: "shadowPopover3";
|
|
11
24
|
fgPrimary: "gray900";
|
|
12
25
|
fgMuted: "gray400";
|
|
13
26
|
bgDanger: "red600";
|
|
27
|
+
bgDangerSolid: "red700";
|
|
28
|
+
strokeFieldFocus: "fieldFocus";
|
|
29
|
+
fgDisabled: "disabledFg";
|
|
30
|
+
bgNeutralWeak: "neutralWeak";
|
|
31
|
+
bgNeutralInverted: "neutralInverted";
|
|
32
|
+
fgOnNeutralInverted: "onNeutralInverted";
|
|
33
|
+
fgNeutralSubtle: "neutralSubtle";
|
|
34
|
+
fgNeutralMuted: "neutralMuted";
|
|
35
|
+
strokeFocusRing: "focusRing";
|
|
14
36
|
bgSuccess: "green600";
|
|
15
37
|
bgWarning: "amber600";
|
|
16
38
|
bgOrange: "orange600";
|
|
17
39
|
bgCyan: "cyan600";
|
|
18
40
|
bgPurple: "purple600";
|
|
19
41
|
bgSidebar: "graySidebar";
|
|
42
|
+
bgSubtle: "graySidebar";
|
|
20
43
|
}, `var(--${string})`> & {
|
|
21
44
|
space: Record<"0.5" | "1" | "1.5" | "2" | "2.5" | "3" | "4" | "5" | "6" | "8" | "px", `var(--${string})`>;
|
|
22
|
-
radius: Record<"2xl" | "full" | "lg" | "md" | "sm" | "xl", `var(--${string})`>;
|
|
23
|
-
size: Record<"header" | "icon" | "row" | "tableRow", `var(--${string})`>;
|
|
45
|
+
radius: Record<"2xl" | "chip" | "full" | "lg" | "md" | "sm" | "xl", `var(--${string})`>;
|
|
46
|
+
size: Record<"calendarCell" | "calendarPill" | "chip" | "header" | "icon" | "menuRow" | "row" | "tableHeader" | "tableRow", `var(--${string})`>;
|
|
24
47
|
font: Record<"sans", `var(--${string})`>;
|
|
25
48
|
text: Record<"lg" | "md" | "sm" | "xl" | "xs", `var(--${string})`>;
|
|
26
|
-
weight: Record<"medium" | "regular" | "semibold", `var(--${string})`>;
|
|
49
|
+
weight: Record<"bold" | "medium" | "regular" | "semibold", `var(--${string})`>;
|
|
27
50
|
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attio's measured elevation recipes, written **once**.
|
|
3
|
+
*
|
|
4
|
+
* The whole product runs on two elevation tiers plus one control shadow
|
|
5
|
+
* (measured live — see `docs/study/attio-panels.md` §4). Before this module each
|
|
6
|
+
* surface carried its own copy of the string: the tier-1 stack appeared in 9
|
|
7
|
+
* places, the control shadow in 12. Copies drift, and every drift was a real
|
|
8
|
+
* bug — `Drawer`/`RecordPanel` grew invented directional shadows, `BulkBar`'s
|
|
9
|
+
* copy used raw literals and so never darkened in dark mode (AUTHORING.md
|
|
10
|
+
* Lesson 30). Reference the constant; never re-type the value.
|
|
11
|
+
*/
|
|
12
|
+
export declare const elevation: {
|
|
13
|
+
/**
|
|
14
|
+
* Tier 1 — anything floating and *attached*: menus, popovers, dropdowns,
|
|
15
|
+
* hover-preview cards, the floating sidebar, the record peek, drawers, the
|
|
16
|
+
* bulk bar. Pairs with a 10–12px radius and, for panels, an 8px gutter.
|
|
17
|
+
*/
|
|
18
|
+
readonly floating: `inset 0 0 0 1px var(--${string}), 0 0 0 1px var(--${string}), 0 4px 8px -4px var(--${string}), 0 4px 12px -2px var(--${string})`;
|
|
19
|
+
/**
|
|
20
|
+
* Tier 2 — the modal frosted bezel (Dialog, Command). Sits on the
|
|
21
|
+
* `bgOverlayFrost` 60% + `blur(15px)` surface at radius 16, wrapping an inner
|
|
22
|
+
* card at radius 12. Attio dims nothing behind it; the blur does the work.
|
|
23
|
+
*/
|
|
24
|
+
readonly modal: `0 8px 28px -6px var(--${string}), 0 18px 88px -4px var(--${string}), 0 0 1px var(--${string})`;
|
|
25
|
+
/**
|
|
26
|
+
* The neutral/outlined control shadow — buttons, inputs, textareas, the
|
|
27
|
+
* sidebar search, record-page actions.
|
|
28
|
+
*
|
|
29
|
+
* The two raw values **are** the measured Attio value (Lessons 22 and 29) and
|
|
30
|
+
* must stay raw. `rgba(0,0,0,0.04)` equals `tileActiveShadow`'s light value by
|
|
31
|
+
* coincidence, not by meaning; tokenizing it would delete a measured layer in
|
|
32
|
+
* dark mode. Only the ring is theme-aware, via `ringNeutral`.
|
|
33
|
+
*/
|
|
34
|
+
readonly field: `inset 0 0 0 1px var(--${string}), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04)`;
|
|
35
|
+
/**
|
|
36
|
+
* The same control shadow **without** the theme-aware ring. Lesson 29 added
|
|
37
|
+
* the ring to the neutral-button family but deliberately left `trialbanner`
|
|
38
|
+
* and `viewtoggle` alone pending their own re-measurement — this constant
|
|
39
|
+
* exists so those surfaces share the value without silently acquiring a ring
|
|
40
|
+
* nobody measured for them.
|
|
41
|
+
*/
|
|
42
|
+
readonly fieldNoRing: `0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04)`;
|
|
43
|
+
};
|
|
44
|
+
export type ElevationKey = keyof typeof elevation;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { contract, type Theme } from "./contract";
|
|
2
|
+
export { type ElevationKey, elevation } from "./elevation";
|
|
2
3
|
export { palette } from "./palette";
|
|
3
4
|
export { type FontKey, font, type RadiusKey, radius, type SizeKey, type SpaceKey, size, space, type TextKey, text, type WeightKey, weight, } from "./scale";
|
|
4
5
|
export type { Tokens } from "./semantic";
|
|
@@ -7,6 +7,10 @@ export declare const palette: {
|
|
|
7
7
|
readonly light: "#ffffff";
|
|
8
8
|
readonly dark: "#ffffff";
|
|
9
9
|
};
|
|
10
|
+
readonly ink: {
|
|
11
|
+
readonly light: "#101112";
|
|
12
|
+
readonly dark: "#101112";
|
|
13
|
+
};
|
|
10
14
|
readonly gray50: {
|
|
11
15
|
readonly light: "#f4f4f5";
|
|
12
16
|
readonly dark: "#101112";
|
|
@@ -23,6 +27,54 @@ export declare const palette: {
|
|
|
23
27
|
readonly light: "#eeeff1";
|
|
24
28
|
readonly dark: "#1c1d1f";
|
|
25
29
|
};
|
|
30
|
+
readonly ringNeutral: {
|
|
31
|
+
readonly light: "transparent";
|
|
32
|
+
readonly dark: "#212224";
|
|
33
|
+
};
|
|
34
|
+
readonly tileActive: {
|
|
35
|
+
readonly light: "#ffffff";
|
|
36
|
+
readonly dark: "#101112";
|
|
37
|
+
};
|
|
38
|
+
readonly tileActiveShadow: {
|
|
39
|
+
readonly light: "rgba(0,0,0,0.04)";
|
|
40
|
+
readonly dark: "rgba(0,0,0,0)";
|
|
41
|
+
};
|
|
42
|
+
readonly overlayFrost: {
|
|
43
|
+
readonly light: "#ffffff";
|
|
44
|
+
readonly dark: "#1c1d1f";
|
|
45
|
+
};
|
|
46
|
+
readonly shadowOverlay1: {
|
|
47
|
+
readonly light: "rgba(28,40,64,0.12)";
|
|
48
|
+
readonly dark: "rgba(0,0,0,0.48)";
|
|
49
|
+
};
|
|
50
|
+
readonly shadowOverlay2: {
|
|
51
|
+
readonly light: "rgba(28,40,64,0.16)";
|
|
52
|
+
readonly dark: "rgba(0,0,0,0.64)";
|
|
53
|
+
};
|
|
54
|
+
readonly shadowOverlay3: {
|
|
55
|
+
readonly light: "rgba(28,40,64,0.16)";
|
|
56
|
+
readonly dark: "rgba(0,0,0,0)";
|
|
57
|
+
};
|
|
58
|
+
readonly popoverBg: {
|
|
59
|
+
readonly light: "#ffffff";
|
|
60
|
+
readonly dark: "#17181a";
|
|
61
|
+
};
|
|
62
|
+
readonly ringPopover: {
|
|
63
|
+
readonly light: "rgba(0,0,0,0)";
|
|
64
|
+
readonly dark: "#212224";
|
|
65
|
+
};
|
|
66
|
+
readonly shadowPopover1: {
|
|
67
|
+
readonly light: "rgba(28,40,64,0.04)";
|
|
68
|
+
readonly dark: "rgba(0,0,0,0.16)";
|
|
69
|
+
};
|
|
70
|
+
readonly shadowPopover2: {
|
|
71
|
+
readonly light: "rgba(28,40,64,0.12)";
|
|
72
|
+
readonly dark: "rgba(0,0,0,0.24)";
|
|
73
|
+
};
|
|
74
|
+
readonly shadowPopover3: {
|
|
75
|
+
readonly light: "rgba(24,41,75,0.16)";
|
|
76
|
+
readonly dark: "rgba(0,0,0,0.32)";
|
|
77
|
+
};
|
|
26
78
|
readonly gray400: {
|
|
27
79
|
readonly light: "#71717a";
|
|
28
80
|
readonly dark: "#9a9aa2";
|
|
@@ -39,6 +91,42 @@ export declare const palette: {
|
|
|
39
91
|
readonly light: "#e5484d";
|
|
40
92
|
readonly dark: "#ff5a5f";
|
|
41
93
|
};
|
|
94
|
+
readonly red700: {
|
|
95
|
+
readonly light: "#ba2525";
|
|
96
|
+
readonly dark: "#ba2525";
|
|
97
|
+
};
|
|
98
|
+
readonly fieldFocus: {
|
|
99
|
+
readonly light: "#1a1c20";
|
|
100
|
+
readonly dark: "#f3f4f5";
|
|
101
|
+
};
|
|
102
|
+
readonly disabledFg: {
|
|
103
|
+
readonly light: "#d1d3d8";
|
|
104
|
+
readonly dark: "#5b606a";
|
|
105
|
+
};
|
|
106
|
+
readonly neutralWeak: {
|
|
107
|
+
readonly light: "#f3f4f5";
|
|
108
|
+
readonly dark: "#1d2025";
|
|
109
|
+
};
|
|
110
|
+
readonly neutralInverted: {
|
|
111
|
+
readonly light: "#2a3038";
|
|
112
|
+
readonly dark: "#f3f4f5";
|
|
113
|
+
};
|
|
114
|
+
readonly onNeutralInverted: {
|
|
115
|
+
readonly light: "#ffffff";
|
|
116
|
+
readonly dark: "#16171b";
|
|
117
|
+
};
|
|
118
|
+
readonly neutralSubtle: {
|
|
119
|
+
readonly light: "#868b94";
|
|
120
|
+
readonly dark: "#b0b3ba";
|
|
121
|
+
};
|
|
122
|
+
readonly neutralMuted: {
|
|
123
|
+
readonly light: "#555d6d";
|
|
124
|
+
readonly dark: "#dcdee3";
|
|
125
|
+
};
|
|
126
|
+
readonly focusRing: {
|
|
127
|
+
readonly light: "#1e82eb";
|
|
128
|
+
readonly dark: "#5e98fe";
|
|
129
|
+
};
|
|
42
130
|
readonly green600: {
|
|
43
131
|
readonly light: "#1f9d57";
|
|
44
132
|
readonly dark: "#2ea968";
|
|
@@ -12,6 +12,7 @@ export declare const space: {
|
|
|
12
12
|
readonly "8": "32px";
|
|
13
13
|
};
|
|
14
14
|
export declare const radius: {
|
|
15
|
+
readonly chip: "7px";
|
|
15
16
|
readonly sm: "6px";
|
|
16
17
|
readonly md: "8px";
|
|
17
18
|
readonly lg: "9px";
|
|
@@ -21,9 +22,14 @@ export declare const radius: {
|
|
|
21
22
|
};
|
|
22
23
|
export declare const size: {
|
|
23
24
|
readonly icon: "16px";
|
|
25
|
+
readonly chip: "22px";
|
|
24
26
|
readonly row: "28px";
|
|
27
|
+
readonly menuRow: "32px";
|
|
25
28
|
readonly tableRow: "36px";
|
|
29
|
+
readonly tableHeader: "40px";
|
|
26
30
|
readonly header: "48px";
|
|
31
|
+
readonly calendarCell: "48px";
|
|
32
|
+
readonly calendarPill: "42px";
|
|
27
33
|
};
|
|
28
34
|
export declare const font: {
|
|
29
35
|
readonly sans: '"Inter", system-ui, -apple-system, "Segoe UI", sans-serif';
|
|
@@ -39,6 +45,7 @@ export declare const weight: {
|
|
|
39
45
|
readonly regular: "400";
|
|
40
46
|
readonly medium: "500";
|
|
41
47
|
readonly semibold: "600";
|
|
48
|
+
readonly bold: "700";
|
|
42
49
|
};
|
|
43
50
|
export type SpaceKey = keyof typeof space;
|
|
44
51
|
export type RadiusKey = keyof typeof radius;
|
|
@@ -2,18 +2,49 @@ export declare const semantic: {
|
|
|
2
2
|
bgBrandSolid: "brand600";
|
|
3
3
|
bgBrandSolidPressed: "brand700";
|
|
4
4
|
fgOnBrand: "white";
|
|
5
|
+
fgOnTone: "ink";
|
|
5
6
|
bgSurface: "gray00";
|
|
6
7
|
bgRaised: "gray50";
|
|
7
8
|
borderDefault: "line200";
|
|
8
9
|
borderSubtle: "line100";
|
|
10
|
+
ringNeutral: "ringNeutral";
|
|
11
|
+
bgTileActive: "tileActive";
|
|
12
|
+
shadowTileActive: "tileActiveShadow";
|
|
13
|
+
bgOverlayFrost: "overlayFrost";
|
|
14
|
+
shadowOverlay1: "shadowOverlay1";
|
|
15
|
+
shadowOverlay2: "shadowOverlay2";
|
|
16
|
+
shadowOverlay3: "shadowOverlay3";
|
|
17
|
+
bgPopover: "popoverBg";
|
|
18
|
+
ringPopover: "ringPopover";
|
|
19
|
+
shadowPopover1: "shadowPopover1";
|
|
20
|
+
shadowPopover2: "shadowPopover2";
|
|
21
|
+
shadowPopover3: "shadowPopover3";
|
|
9
22
|
fgPrimary: "gray900";
|
|
10
23
|
fgMuted: "gray400";
|
|
11
24
|
bgDanger: "red600";
|
|
25
|
+
/** Fill for a SOLID destructive control that carries white text. */
|
|
26
|
+
bgDangerSolid: "red700";
|
|
27
|
+
/** The 2px ring a text field shows while focused. */
|
|
28
|
+
strokeFieldFocus: "fieldFocus";
|
|
29
|
+
/** Unavailable/disabled content: unselected wheel rows, unpickable dates. */
|
|
30
|
+
fgDisabled: "disabledFg";
|
|
31
|
+
/** Weak neutral fill: the wheel's band, the calendar's today pill and range bridge. */
|
|
32
|
+
bgNeutralWeak: "neutralWeak";
|
|
33
|
+
/** The selected calendar day's fill, and the text on it. */
|
|
34
|
+
bgNeutralInverted: "neutralInverted";
|
|
35
|
+
fgOnNeutralInverted: "onNeutralInverted";
|
|
36
|
+
/** Weekday header row. */
|
|
37
|
+
fgNeutralSubtle: "neutralSubtle";
|
|
38
|
+
/** Date numerals. */
|
|
39
|
+
fgNeutralMuted: "neutralMuted";
|
|
40
|
+
/** Keyboard focus ring, for controls that show one inside themselves. */
|
|
41
|
+
strokeFocusRing: "focusRing";
|
|
12
42
|
bgSuccess: "green600";
|
|
13
43
|
bgWarning: "amber600";
|
|
14
44
|
bgOrange: "orange600";
|
|
15
45
|
bgCyan: "cyan600";
|
|
16
46
|
bgPurple: "purple600";
|
|
17
47
|
bgSidebar: "graySidebar";
|
|
48
|
+
bgSubtle: "graySidebar";
|
|
18
49
|
};
|
|
19
50
|
export type Tokens = typeof semantic;
|
package/dist/viewtoggle.css
CHANGED
|
@@ -5,9 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
& .viewtoggle-tile { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px;
|
|
7
7
|
padding: 0; margin: 0; border: none; border-radius: var(--radius-md); background: none; color: var(--fg-muted);
|
|
8
|
-
cursor: pointer; transition: background-color .12s, color .12s, box-shadow .12s; }
|
|
8
|
+
font-family: inherit; cursor: pointer; transition: background-color .12s, color .12s, box-shadow .12s; }
|
|
9
9
|
& .viewtoggle-tile:hover { color: var(--fg-primary); }
|
|
10
|
-
& .viewtoggle-tile[data-active] { background: var(--bg-
|
|
11
|
-
box-shadow: 0
|
|
10
|
+
& .viewtoggle-tile[data-active] { background: var(--bg-tile-active); color: var(--fg-primary);
|
|
11
|
+
box-shadow: 0 1px 2px -1px var(--shadow-tile-active); }
|
|
12
12
|
& .viewtoggle-tile:focus-visible { outline: 2px solid var(--bg-brand-solid); outline-offset: 1px; }
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
@media (prefers-reduced-motion: reduce) {
|
|
16
|
+
.viewtoggle, .viewtoggle * {
|
|
17
|
+
animation-duration: 0.01ms !important;
|
|
18
|
+
animation-iteration-count: 1 !important;
|
|
19
|
+
transition-duration: 0.01ms !important;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
.wheelpicker {
|
|
2
|
+
|
|
3
|
+
position: relative; box-sizing: border-box; width: 100%; overflow: hidden;
|
|
4
|
+
background: var(--bg-surface); font-family: var(--font-sans);
|
|
5
|
+
|
|
6
|
+
/* the band the selected row sits in; behind the items, never hit-tested */
|
|
7
|
+
& .wheelpicker-indicator {
|
|
8
|
+
position: absolute; z-index: 0; inset-inline: var(--space-4); top: 50%;
|
|
9
|
+
transform: translateY(-50%); border-radius: var(--radius-md);
|
|
10
|
+
background: var(--bg-neutral-weak); pointer-events: none;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* fades the rows furthest from the centre, so the column reads as a wheel
|
|
14
|
+
rather than a list. 40% of the viewport, capped, top and bottom. */
|
|
15
|
+
& .wheelpicker-fog {
|
|
16
|
+
position: relative; z-index: 1; height: 100%; overflow: hidden;
|
|
17
|
+
mask-image: linear-gradient(
|
|
18
|
+
to bottom,
|
|
19
|
+
transparent 0,
|
|
20
|
+
#000 var(--wheelpicker-fog),
|
|
21
|
+
#000 calc(100% - var(--wheelpicker-fog)),
|
|
22
|
+
transparent 100%
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
& .wheelpicker-columns { display: flex; width: 100%; height: 100%; justify-content: center; }
|
|
26
|
+
|
|
27
|
+
& .wheelpicker-column {
|
|
28
|
+
box-sizing: border-box; flex: 0 0 auto; width: max-content; height: 100%;
|
|
29
|
+
overflow-x: hidden; overflow-y: auto;
|
|
30
|
+
overscroll-behavior-y: contain; overscroll-behavior-x: none;
|
|
31
|
+
scroll-snap-type: y mandatory; touch-action: pan-y;
|
|
32
|
+
scrollbar-width: none; -ms-overflow-style: none; outline: none;
|
|
33
|
+
padding-block: var(--wheelpicker-offset);
|
|
34
|
+
}
|
|
35
|
+
& .wheelpicker-column::-webkit-scrollbar { display: none; }
|
|
36
|
+
|
|
37
|
+
& .wheelpicker-item {
|
|
38
|
+
display: flex; align-items: center; justify-content: center;
|
|
39
|
+
scroll-snap-align: center; user-select: none; white-space: nowrap;
|
|
40
|
+
padding-inline: var(--space-4); color: var(--fg-disabled);
|
|
41
|
+
background: none; border: none; font: inherit; cursor: pointer;
|
|
42
|
+
}
|
|
43
|
+
& .wheelpicker-item[data-selected] { color: var(--fg-primary); }
|
|
44
|
+
|
|
45
|
+
/* the ring is drawn on the SELECTED row, and only for keyboard focus:
|
|
46
|
+
a pointer user has just tapped the row they meant and does not need it */
|
|
47
|
+
& .wheelpicker-column:focus-visible .wheelpicker-item[data-selected] {
|
|
48
|
+
outline: 2px solid var(--stroke-focus-ring); outline-offset: -2px;
|
|
49
|
+
border-radius: var(--radius-md);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
.wheelpicker--size_small {
|
|
54
|
+
|
|
55
|
+
height: 180px; --wheelpicker-offset: 72px;
|
|
56
|
+
--wheelpicker-fog: min(40%, 108px);
|
|
57
|
+
& .wheelpicker-indicator { height: 36px; }
|
|
58
|
+
& .wheelpicker-item { height: 36px; min-height: 36px; font-size: 20px; line-height: 27px; }
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
.wheelpicker--size_medium {
|
|
62
|
+
|
|
63
|
+
height: 220px; --wheelpicker-offset: 88px;
|
|
64
|
+
--wheelpicker-fog: min(40%, 132px);
|
|
65
|
+
& .wheelpicker-indicator { height: 44px; }
|
|
66
|
+
& .wheelpicker-item { height: 44px; min-height: 44px; font-size: 26px; line-height: 35px; }
|
|
67
|
+
|
|
68
|
+
}
|