@deriv-com/dds-marketing 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.llm/components/accordion.md +193 -0
- package/.llm/components/accordionitem.md +236 -0
- package/.llm/components/aspectratio.md +212 -0
- package/.llm/components/badge.md +231 -0
- package/.llm/components/bottomsheet.md +404 -0
- package/.llm/components/breadcrumb.md +197 -0
- package/.llm/components/breadcrumbitem.md +178 -0
- package/.llm/components/button.md +271 -0
- package/.llm/components/buttonicon.md +313 -0
- package/.llm/components/card.md +313 -0
- package/.llm/components/cardbody.md +409 -0
- package/.llm/components/cardbutton.md +259 -0
- package/.llm/components/checkbox.md +285 -0
- package/.llm/components/divider.md +230 -0
- package/.llm/components/dropdownmenu.md +453 -0
- package/.llm/components/filterchip.md +314 -0
- package/.llm/components/footer.md +408 -0
- package/.llm/components/footergroup.md +241 -0
- package/.llm/components/grid.md +659 -0
- package/.llm/components/icon.md +194 -0
- package/.llm/components/link.md +354 -0
- package/.llm/components/menuitem.md +218 -0
- package/.llm/components/navbar.md +458 -0
- package/.llm/components/navbaritem.md +238 -0
- package/.llm/components/navbarmenu.md +319 -0
- package/.llm/components/navbarmenugroup.md +184 -0
- package/.llm/components/navbarpanel.md +255 -0
- package/.llm/components/navbarswitcher.md +343 -0
- package/.llm/components/navbarswitcheroption.md +156 -0
- package/.llm/components/option.md +268 -0
- package/.llm/components/pagination.md +361 -0
- package/.llm/components/removablechip.md +247 -0
- package/.llm/components/row.md +381 -0
- package/.llm/components/scroller.md +470 -0
- package/.llm/components/searchinput.md +279 -0
- package/.llm/components/segmentedcontrol.md +358 -0
- package/.llm/components/segmentedcontrolitem.md +272 -0
- package/.llm/components/select.md +509 -0
- package/.llm/components/selectchip.md +334 -0
- package/.llm/components/spinner.md +222 -0
- package/.llm/components/stack.md +334 -0
- package/.llm/components/statusdot.md +205 -0
- package/.llm/components/subdomainnavbar.md +327 -0
- package/.llm/components/tab.md +291 -0
- package/.llm/components/table.md +660 -0
- package/.llm/components/tablebody.md +258 -0
- package/.llm/components/tablecell.md +248 -0
- package/.llm/components/tablehead.md +248 -0
- package/.llm/components/tableheadercell.md +298 -0
- package/.llm/components/tablerow.md +285 -0
- package/.llm/components/tablist.md +210 -0
- package/.llm/components/textarea.md +362 -0
- package/.llm/components/textinput.md +467 -0
- package/.llm/components/tooltip.md +267 -0
- package/.llm/components/typography.md +245 -0
- package/.llm/digest/accordion.md +43 -0
- package/.llm/digest/accordionitem.md +47 -0
- package/.llm/digest/aspectratio.md +47 -0
- package/.llm/digest/badge.md +45 -0
- package/.llm/digest/bottomsheet.md +69 -0
- package/.llm/digest/breadcrumb.md +38 -0
- package/.llm/digest/breadcrumbitem.md +43 -0
- package/.llm/digest/button.md +48 -0
- package/.llm/digest/buttonicon.md +61 -0
- package/.llm/digest/card.md +50 -0
- package/.llm/digest/cardbody.md +68 -0
- package/.llm/digest/cardbutton.md +49 -0
- package/.llm/digest/checkbox.md +63 -0
- package/.llm/digest/divider.md +52 -0
- package/.llm/digest/dropdownmenu.md +67 -0
- package/.llm/digest/filterchip.md +68 -0
- package/.llm/digest/footer.md +57 -0
- package/.llm/digest/footergroup.md +42 -0
- package/.llm/digest/grid.md +62 -0
- package/.llm/digest/icon.md +45 -0
- package/.llm/digest/link.md +59 -0
- package/.llm/digest/menuitem.md +46 -0
- package/.llm/digest/navbar.md +60 -0
- package/.llm/digest/navbaritem.md +54 -0
- package/.llm/digest/navbarmenu.md +54 -0
- package/.llm/digest/navbarmenugroup.md +40 -0
- package/.llm/digest/navbarpanel.md +53 -0
- package/.llm/digest/navbarswitcher.md +51 -0
- package/.llm/digest/navbarswitcheroption.md +37 -0
- package/.llm/digest/option.md +54 -0
- package/.llm/digest/pagination.md +71 -0
- package/.llm/digest/removablechip.md +51 -0
- package/.llm/digest/row.md +60 -0
- package/.llm/digest/scroller.md +59 -0
- package/.llm/digest/searchinput.md +56 -0
- package/.llm/digest/segmentedcontrol.md +59 -0
- package/.llm/digest/segmentedcontrolitem.md +59 -0
- package/.llm/digest/select.md +92 -0
- package/.llm/digest/selectchip.md +68 -0
- package/.llm/digest/spinner.md +52 -0
- package/.llm/digest/stack.md +56 -0
- package/.llm/digest/statusdot.md +46 -0
- package/.llm/digest/subdomainnavbar.md +54 -0
- package/.llm/digest/tab.md +60 -0
- package/.llm/digest/table.md +71 -0
- package/.llm/digest/tablebody.md +49 -0
- package/.llm/digest/tablecell.md +55 -0
- package/.llm/digest/tablehead.md +50 -0
- package/.llm/digest/tableheadercell.md +65 -0
- package/.llm/digest/tablerow.md +56 -0
- package/.llm/digest/tablist.md +46 -0
- package/.llm/digest/textarea.md +78 -0
- package/.llm/digest/textinput.md +95 -0
- package/.llm/digest/tooltip.md +58 -0
- package/.llm/digest/typography.md +59 -0
- package/.llm/index.md +86 -0
- package/.llm/rules.md +122 -0
- package/.llm/tokens.md +341 -0
- package/AGENTS.md +164 -0
- package/LICENSE +21 -0
- package/README.md +63 -15
- package/dist/components/core/accordion/Accordion.css +10 -0
- package/dist/components/core/accordion/Accordion.d.ts +20 -0
- package/dist/components/core/accordion/Accordion.js +69 -0
- package/dist/components/core/accordion/Accordion.types.d.ts +20 -0
- package/dist/components/core/accordion/Accordion.types.js +7 -0
- package/dist/components/core/accordion-item/AccordionItem.css +98 -0
- package/dist/components/core/accordion-item/AccordionItem.d.ts +44 -0
- package/dist/components/core/accordion-item/AccordionItem.js +63 -0
- package/dist/components/core/accordion-item/AccordionItem.types.d.ts +32 -0
- package/dist/components/core/accordion-item/AccordionItem.types.js +13 -0
- package/dist/components/core/accordion-item/accordion-item-impl.css +107 -0
- package/dist/components/core/badge/Badge.css +37 -0
- package/dist/components/core/badge/Badge.d.ts +37 -0
- package/dist/components/core/badge/Badge.js +40 -0
- package/dist/components/core/badge/Badge.types.d.ts +24 -0
- package/dist/components/core/badge/Badge.types.js +8 -0
- package/dist/components/core/badge/badge-impl.css +32 -0
- package/dist/components/core/bottom-sheet/BottomSheet.css +178 -0
- package/dist/components/core/bottom-sheet/BottomSheet.d.ts +22 -0
- package/dist/components/core/bottom-sheet/BottomSheet.js +359 -0
- package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +67 -0
- package/dist/components/core/bottom-sheet/BottomSheet.types.js +18 -0
- package/dist/components/core/bottom-sheet/bottom-sheet-impl.css +57 -0
- package/dist/components/core/breadcrumb/Breadcrumb.css +19 -0
- package/dist/components/core/breadcrumb/Breadcrumb.d.ts +16 -0
- package/dist/components/core/breadcrumb/Breadcrumb.js +22 -0
- package/dist/components/core/breadcrumb/Breadcrumb.types.d.ts +18 -0
- package/dist/components/core/breadcrumb/Breadcrumb.types.js +9 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.css +34 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.d.ts +12 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.js +15 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.d.ts +22 -0
- package/dist/components/core/breadcrumb-item/BreadcrumbItem.types.js +9 -0
- package/dist/components/core/button/Button.css +141 -0
- package/dist/components/core/button/Button.d.ts +25 -0
- package/dist/components/core/button/Button.js +28 -0
- package/dist/components/core/button/Button.types.d.ts +40 -0
- package/dist/components/core/button/Button.types.js +9 -0
- package/dist/components/core/button/button-impl.css +46 -0
- package/dist/components/core/button-icon/ButtonIcon.css +135 -0
- package/dist/components/core/button-icon/ButtonIcon.d.ts +34 -0
- package/dist/components/core/button-icon/ButtonIcon.js +117 -0
- package/dist/components/core/button-icon/ButtonIcon.types.d.ts +41 -0
- package/dist/components/core/button-icon/ButtonIcon.types.js +8 -0
- package/dist/components/core/card/Card.css +65 -0
- package/dist/components/core/card/Card.d.ts +24 -0
- package/dist/components/core/card/Card.js +26 -0
- package/dist/components/core/card/Card.types.d.ts +33 -0
- package/dist/components/core/card/Card.types.js +7 -0
- package/dist/components/core/card-body/CardBody.css +139 -0
- package/dist/components/core/card-body/CardBody.d.ts +62 -0
- package/dist/components/core/card-body/CardBody.js +97 -0
- package/dist/components/core/card-body/CardBody.types.d.ts +61 -0
- package/dist/components/core/card-body/CardBody.types.js +15 -0
- package/dist/components/core/card-body/card-body-impl.css +87 -0
- package/dist/components/core/card-button/CardButton.css +73 -0
- package/dist/components/core/card-button/CardButton.d.ts +27 -0
- package/dist/components/core/card-button/CardButton.js +37 -0
- package/dist/components/core/card-button/CardButton.types.d.ts +24 -0
- package/dist/components/core/card-button/CardButton.types.js +7 -0
- package/dist/components/core/card-button/card-button-impl.css +39 -0
- package/dist/components/core/checkbox/Checkbox.css +149 -0
- package/dist/components/core/checkbox/Checkbox.d.ts +21 -0
- package/dist/components/core/checkbox/Checkbox.js +97 -0
- package/dist/components/core/checkbox/Checkbox.types.d.ts +46 -0
- package/dist/components/core/checkbox/Checkbox.types.js +15 -0
- package/dist/components/core/checkbox/checkbox-impl.css +90 -0
- package/dist/components/core/divider/Divider.css +41 -0
- package/dist/components/core/divider/Divider.d.ts +46 -0
- package/dist/components/core/divider/Divider.js +51 -0
- package/dist/components/core/divider/Divider.types.d.ts +25 -0
- package/dist/components/core/divider/Divider.types.js +9 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.css +146 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.d.ts +22 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.js +309 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.types.d.ts +62 -0
- package/dist/components/core/dropdown-menu/DropdownMenu.types.js +12 -0
- package/dist/components/core/dropdown-menu/dropdown-menu-impl.css +70 -0
- package/dist/components/core/filter-chip/FilterChip.css +149 -0
- package/dist/components/core/filter-chip/FilterChip.d.ts +23 -0
- package/dist/components/core/filter-chip/FilterChip.js +37 -0
- package/dist/components/core/filter-chip/FilterChip.types.d.ts +53 -0
- package/dist/components/core/filter-chip/FilterChip.types.js +12 -0
- package/dist/components/core/footer/Footer.css +104 -0
- package/dist/components/core/footer/Footer.d.ts +43 -0
- package/dist/components/core/footer/Footer.js +53 -0
- package/dist/components/core/footer/Footer.types.d.ts +47 -0
- package/dist/components/core/footer/Footer.types.js +18 -0
- package/dist/components/core/footer/footer-impl.css +218 -0
- package/dist/components/core/footer-group/FooterGroup.css +90 -0
- package/dist/components/core/footer-group/FooterGroup.d.ts +32 -0
- package/dist/components/core/footer-group/FooterGroup.js +64 -0
- package/dist/components/core/footer-group/FooterGroup.types.d.ts +25 -0
- package/dist/components/core/footer-group/FooterGroup.types.js +12 -0
- package/dist/components/core/footer-group/footer-group-impl.css +78 -0
- package/dist/components/core/icon/Icon.css +40 -0
- package/dist/components/core/icon/Icon.d.ts +23 -0
- package/dist/components/core/icon/Icon.js +79 -0
- package/dist/components/core/icon/Icon.types.d.ts +24 -0
- package/dist/components/core/icon/Icon.types.js +7 -0
- package/dist/components/core/link/Link.css +89 -0
- package/dist/components/core/link/Link.d.ts +37 -0
- package/dist/components/core/link/Link.js +141 -0
- package/dist/components/core/link/Link.types.d.ts +41 -0
- package/dist/components/core/link/Link.types.js +9 -0
- package/dist/components/core/link/link-impl.css +168 -0
- package/dist/components/core/menu-item/MenuItem.css +70 -0
- package/dist/components/core/menu-item/MenuItem.d.ts +11 -0
- package/dist/components/core/menu-item/MenuItem.js +26 -0
- package/dist/components/core/menu-item/MenuItem.types.d.ts +28 -0
- package/dist/components/core/menu-item/MenuItem.types.js +9 -0
- package/dist/components/core/navbar/Navbar.css +135 -0
- package/dist/components/core/navbar/Navbar.d.ts +36 -0
- package/dist/components/core/navbar/Navbar.js +371 -0
- package/dist/components/core/navbar/Navbar.types.d.ts +49 -0
- package/dist/components/core/navbar/Navbar.types.js +17 -0
- package/dist/components/core/navbar/navbar-impl.css +590 -0
- package/dist/components/core/navbar-item/NavbarItem.css +75 -0
- package/dist/components/core/navbar-item/NavbarItem.d.ts +22 -0
- package/dist/components/core/navbar-item/NavbarItem.js +40 -0
- package/dist/components/core/navbar-item/NavbarItem.types.d.ts +34 -0
- package/dist/components/core/navbar-item/NavbarItem.types.js +10 -0
- package/dist/components/core/navbar-menu/NavbarMenu.css +128 -0
- package/dist/components/core/navbar-menu/NavbarMenu.d.ts +5 -0
- package/dist/components/core/navbar-menu/NavbarMenu.js +186 -0
- package/dist/components/core/navbar-menu/NavbarMenu.types.d.ts +45 -0
- package/dist/components/core/navbar-menu/NavbarMenu.types.js +12 -0
- package/dist/components/core/navbar-menu/navbar-menu-impl.css +186 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.css +26 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.d.ts +17 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.js +22 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.d.ts +14 -0
- package/dist/components/core/navbar-menu-group/NavbarMenuGroup.types.js +7 -0
- package/dist/components/core/navbar-panel/NavbarPanel.css +87 -0
- package/dist/components/core/navbar-panel/NavbarPanel.d.ts +34 -0
- package/dist/components/core/navbar-panel/NavbarPanel.js +46 -0
- package/dist/components/core/navbar-panel/NavbarPanel.types.d.ts +29 -0
- package/dist/components/core/navbar-panel/NavbarPanel.types.js +12 -0
- package/dist/components/core/navbar-panel/navbar-panel-impl.css +104 -0
- package/dist/components/core/navbar-panel/use-navbar-panel.d.ts +26 -0
- package/dist/components/core/navbar-panel/use-navbar-panel.js +135 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.css +117 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.d.ts +20 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.js +90 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.types.d.ts +46 -0
- package/dist/components/core/navbar-switcher/NavbarSwitcher.types.js +13 -0
- package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +179 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.css +39 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.d.ts +16 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.js +19 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.d.ts +18 -0
- package/dist/components/core/navbar-switcher-option/NavbarSwitcherOption.types.js +7 -0
- package/dist/components/core/option/Option.css +133 -0
- package/dist/components/core/option/Option.d.ts +25 -0
- package/dist/components/core/option/Option.js +31 -0
- package/dist/components/core/option/Option.types.d.ts +44 -0
- package/dist/components/core/option/Option.types.js +14 -0
- package/dist/components/core/pagination/Pagination.css +237 -0
- package/dist/components/core/pagination/Pagination.d.ts +30 -0
- package/dist/components/core/pagination/Pagination.js +406 -0
- package/dist/components/core/pagination/Pagination.types.d.ts +59 -0
- package/dist/components/core/pagination/Pagination.types.js +14 -0
- package/dist/components/core/pagination/pagination-impl.css +17 -0
- package/dist/components/core/removable-chip/RemovableChip.css +125 -0
- package/dist/components/core/removable-chip/RemovableChip.d.ts +25 -0
- package/dist/components/core/removable-chip/RemovableChip.js +36 -0
- package/dist/components/core/removable-chip/RemovableChip.types.d.ts +38 -0
- package/dist/components/core/removable-chip/RemovableChip.types.js +13 -0
- package/dist/components/core/search-input/SearchInput.css +205 -0
- package/dist/components/core/search-input/SearchInput.d.ts +5 -0
- package/dist/components/core/search-input/SearchInput.js +81 -0
- package/dist/components/core/search-input/SearchInput.types.d.ts +43 -0
- package/dist/components/core/search-input/SearchInput.types.js +13 -0
- package/dist/components/core/search-input/search-input-impl.css +20 -0
- package/dist/components/core/segmented-control/SegmentedControl.css +57 -0
- package/dist/components/core/segmented-control/SegmentedControl.d.ts +37 -0
- package/dist/components/core/segmented-control/SegmentedControl.js +269 -0
- package/dist/components/core/segmented-control/SegmentedControl.types.d.ts +38 -0
- package/dist/components/core/segmented-control/SegmentedControl.types.js +8 -0
- package/dist/components/core/segmented-control/segmented-control-impl.css +57 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.css +151 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.d.ts +50 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.js +101 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.types.d.ts +37 -0
- package/dist/components/core/segmented-control-item/SegmentedControlItem.types.js +10 -0
- package/dist/components/core/segmented-control-item/segmented-control-item-impl.css +69 -0
- package/dist/components/core/select/Select.css +400 -0
- package/dist/components/core/select/Select.d.ts +29 -0
- package/dist/components/core/select/Select.js +524 -0
- package/dist/components/core/select/Select.types.d.ts +96 -0
- package/dist/components/core/select/Select.types.js +26 -0
- package/dist/components/core/select/select-impl.css +114 -0
- package/dist/components/core/select-chip/SelectChip.css +155 -0
- package/dist/components/core/select-chip/SelectChip.d.ts +20 -0
- package/dist/components/core/select-chip/SelectChip.js +273 -0
- package/dist/components/core/select-chip/SelectChip.types.d.ts +56 -0
- package/dist/components/core/select-chip/SelectChip.types.js +14 -0
- package/dist/components/core/select-chip/select-chip-impl.css +38 -0
- package/dist/components/core/spinner/Spinner.css +76 -0
- package/dist/components/core/spinner/Spinner.d.ts +5 -0
- package/dist/components/core/spinner/Spinner.js +29 -0
- package/dist/components/core/spinner/Spinner.types.d.ts +37 -0
- package/dist/components/core/spinner/Spinner.types.js +10 -0
- package/dist/components/core/spinner/spinner-impl.css +27 -0
- package/dist/components/core/status-dot/StatusDot.css +43 -0
- package/dist/components/core/status-dot/StatusDot.d.ts +35 -0
- package/dist/components/core/status-dot/StatusDot.js +46 -0
- package/dist/components/core/status-dot/StatusDot.types.d.ts +29 -0
- package/dist/components/core/status-dot/StatusDot.types.js +7 -0
- package/dist/components/core/status-dot/status-dot-impl.css +42 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.css +89 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.d.ts +21 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.js +127 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.d.ts +43 -0
- package/dist/components/core/subdomain-navbar/SubdomainNavbar.types.js +13 -0
- package/dist/components/core/subdomain-navbar/subdomain-navbar-impl.css +147 -0
- package/dist/components/core/tab/Tab.css +113 -0
- package/dist/components/core/tab/Tab.d.ts +36 -0
- package/dist/components/core/tab/Tab.js +53 -0
- package/dist/components/core/tab/Tab.types.d.ts +42 -0
- package/dist/components/core/tab/Tab.types.js +13 -0
- package/dist/components/core/tab/tab-impl.css +49 -0
- package/dist/components/core/tab-list/TabList.css +40 -0
- package/dist/components/core/tab-list/TabList.d.ts +26 -0
- package/dist/components/core/tab-list/TabList.js +124 -0
- package/dist/components/core/tab-list/TabList.types.d.ts +20 -0
- package/dist/components/core/tab-list/TabList.types.js +7 -0
- package/dist/components/core/tab-list/tab-list-impl.css +56 -0
- package/dist/components/core/table/Table.css +40 -0
- package/dist/components/core/table/Table.d.ts +19 -0
- package/dist/components/core/table/Table.js +55 -0
- package/dist/components/core/table/Table.types.d.ts +59 -0
- package/dist/components/core/table/Table.types.js +9 -0
- package/dist/components/core/table/table-impl.css +75 -0
- package/dist/components/core/table/use-table-sort.d.ts +43 -0
- package/dist/components/core/table/use-table-sort.js +51 -0
- package/dist/components/core/table-body/TableBody.css +6 -0
- package/dist/components/core/table-body/TableBody.d.ts +12 -0
- package/dist/components/core/table-body/TableBody.js +26 -0
- package/dist/components/core/table-body/TableBody.types.d.ts +36 -0
- package/dist/components/core/table-body/TableBody.types.js +7 -0
- package/dist/components/core/table-cell/TableCell.css +76 -0
- package/dist/components/core/table-cell/TableCell.d.ts +21 -0
- package/dist/components/core/table-cell/TableCell.js +31 -0
- package/dist/components/core/table-cell/TableCell.types.d.ts +43 -0
- package/dist/components/core/table-cell/TableCell.types.js +7 -0
- package/dist/components/core/table-head/TableHead.css +6 -0
- package/dist/components/core/table-head/TableHead.d.ts +22 -0
- package/dist/components/core/table-head/TableHead.js +52 -0
- package/dist/components/core/table-head/TableHead.types.d.ts +39 -0
- package/dist/components/core/table-head/TableHead.types.js +7 -0
- package/dist/components/core/table-head/table-head-impl.css +51 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.css +126 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +21 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.js +34 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +56 -0
- package/dist/components/core/table-header-cell/TableHeaderCell.types.js +9 -0
- package/dist/components/core/table-header-cell/table-header-cell-impl.css +74 -0
- package/dist/components/core/table-row/TableRow.css +18 -0
- package/dist/components/core/table-row/TableRow.d.ts +17 -0
- package/dist/components/core/table-row/TableRow.js +32 -0
- package/dist/components/core/table-row/TableRow.types.d.ts +45 -0
- package/dist/components/core/table-row/TableRow.types.js +7 -0
- package/dist/components/core/table-row/table-row-impl.css +31 -0
- package/dist/components/core/text-area/TextArea.css +325 -0
- package/dist/components/core/text-area/TextArea.d.ts +13 -0
- package/dist/components/core/text-area/TextArea.js +133 -0
- package/dist/components/core/text-area/TextArea.types.d.ts +67 -0
- package/dist/components/core/text-area/TextArea.types.js +19 -0
- package/dist/components/core/text-area/text-area-impl.css +36 -0
- package/dist/components/core/text-input/TextInput.css +400 -0
- package/dist/components/core/text-input/TextInput.d.ts +5 -0
- package/dist/components/core/text-input/TextInput.js +130 -0
- package/dist/components/core/text-input/TextInput.types.d.ts +96 -0
- package/dist/components/core/text-input/TextInput.types.js +24 -0
- package/dist/components/core/text-input/text-input-impl.css +36 -0
- package/dist/components/core/tooltip/Tooltip.css +101 -0
- package/dist/components/core/tooltip/Tooltip.d.ts +51 -0
- package/dist/components/core/tooltip/Tooltip.js +87 -0
- package/dist/components/core/tooltip/Tooltip.types.d.ts +38 -0
- package/dist/components/core/tooltip/Tooltip.types.js +9 -0
- package/dist/components/core/tooltip/TooltipAnchor.d.ts +52 -0
- package/dist/components/core/tooltip/TooltipAnchor.js +69 -0
- package/dist/components/core/tooltip/tooltip-anchor.css +145 -0
- package/dist/components/core/tooltip/tooltip-impl.css +54 -0
- package/dist/components/core/tooltip/use-tooltip.d.ts +111 -0
- package/dist/components/core/tooltip/use-tooltip.js +189 -0
- package/dist/components/core/typography/Typography.css +96 -0
- package/dist/components/core/typography/Typography.d.ts +297 -0
- package/dist/components/core/typography/Typography.js +28 -0
- package/dist/components/core/typography/Typography.types.d.ts +40 -0
- package/dist/components/core/typography/Typography.types.js +7 -0
- package/dist/components/css-time.d.ts +20 -0
- package/dist/components/css-time.js +30 -0
- package/dist/components/given.d.ts +7 -0
- package/dist/components/given.js +9 -0
- package/dist/components/hover-open.d.ts +34 -0
- package/dist/components/hover-open.js +90 -0
- package/dist/components/index.d.ts +114 -1
- package/dist/components/index.js +115 -2
- package/dist/components/layout/aspect-ratio/AspectRatio.css +29 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.d.ts +24 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.js +26 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.types.d.ts +22 -0
- package/dist/components/layout/aspect-ratio/AspectRatio.types.js +7 -0
- package/dist/components/layout/aspect-ratio/aspect-ratio-impl.css +44 -0
- package/dist/components/layout/grid/Grid.css +76 -0
- package/dist/components/layout/grid/Grid.d.ts +31 -0
- package/dist/components/layout/grid/Grid.js +33 -0
- package/dist/components/layout/grid/Grid.types.d.ts +48 -0
- package/dist/components/layout/grid/Grid.types.js +7 -0
- package/dist/components/layout/grid/grid-impl.css +62 -0
- package/dist/components/layout/row/Row.css +85 -0
- package/dist/components/layout/row/Row.d.ts +32 -0
- package/dist/components/layout/row/Row.js +34 -0
- package/dist/components/layout/row/Row.types.d.ts +45 -0
- package/dist/components/layout/row/Row.types.js +7 -0
- package/dist/components/layout/scroller/Scroller.css +59 -0
- package/dist/components/layout/scroller/Scroller.d.ts +34 -0
- package/dist/components/layout/scroller/Scroller.js +36 -0
- package/dist/components/layout/scroller/Scroller.types.d.ts +38 -0
- package/dist/components/layout/scroller/Scroller.types.js +7 -0
- package/dist/components/layout/scroller/scroller-impl.css +45 -0
- package/dist/components/layout/stack/Stack.css +73 -0
- package/dist/components/layout/stack/Stack.d.ts +28 -0
- package/dist/components/layout/stack/Stack.js +30 -0
- package/dist/components/layout/stack/Stack.types.d.ts +41 -0
- package/dist/components/layout/stack/Stack.types.js +7 -0
- package/dist/components/visually-hidden.d.ts +22 -0
- package/dist/components/visually-hidden.js +31 -0
- package/dist/fonts/LICENSE-inter.txt +93 -0
- package/dist/fonts/LICENSE-red-hat-mono.txt +93 -0
- package/dist/fonts/fonts.css +111 -0
- package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-mono-latin-wght-normal.woff2 +0 -0
- package/dist/marketing.css +289 -241
- package/package.json +18 -4
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ArrowRightRegularIcon, ArrowRightSolidIcon, ArrowUpRightRegularIcon, ArrowUpRightSolidIcon, } from '@deriv-com/quill-icons-web';
|
|
4
|
+
import './Link.css';
|
|
5
|
+
import './link-impl.css';
|
|
6
|
+
import { Icon } from '../icon/Icon.js';
|
|
7
|
+
import { linkDefaults, linkParts } from './Link.types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Words in a sentence that go somewhere.
|
|
10
|
+
*
|
|
11
|
+
* An anchor with a real href, which is the whole component: cmd-click opens a
|
|
12
|
+
* tab, the status bar shows the destination before the press, the address can be
|
|
13
|
+
* copied, and a screen reader announces a link. `href` is required in the
|
|
14
|
+
* generated type for that reason — an anchor without one takes no focus and is
|
|
15
|
+
* announced as plain text, so the destination disappears for anyone not using a
|
|
16
|
+
* mouse.
|
|
17
|
+
*
|
|
18
|
+
* `display: inline`, unlike everything else pressable in this package. A link is
|
|
19
|
+
* part of a line and has to wrap with it; Button is `inline-flex` because it is
|
|
20
|
+
* a box the copy flows around, and a link behaving that way would leave a hole
|
|
21
|
+
* at the end of a line rather than breaking across two.
|
|
22
|
+
*
|
|
23
|
+
* The type is inherited rather than set, in the inline variant. A link in a body
|
|
24
|
+
* paragraph is body copy and a link in a caption is caption, which is the whole
|
|
25
|
+
* idea — only `standalone` binds a step, because a link on its own line has no
|
|
26
|
+
* sentence to take one from.
|
|
27
|
+
*
|
|
28
|
+
* `external` carries three things that belong together: the target, the rel, and
|
|
29
|
+
* the mark. The rel is not optional and not the consumer's job — leaving it to
|
|
30
|
+
* the call site is how a page hands `window.opener` to a site it does not
|
|
31
|
+
* control — and putting the glyph here is what makes every external link on the
|
|
32
|
+
* site carry the same one.
|
|
33
|
+
*
|
|
34
|
+
* There is no `loading` and no `disabled`, which is where this parts company
|
|
35
|
+
* with Product's Link and follows Marketing's Button instead. The browser owns a
|
|
36
|
+
* navigation in flight and shows it in the chrome; and an anchor cannot be
|
|
37
|
+
* honestly disabled, since dropping the href is the only thing that truly stops
|
|
38
|
+
* it and that costs the link role and the focus with it.
|
|
39
|
+
*/
|
|
40
|
+
export function Link({ variant = linkDefaults.variant, tone = linkDefaults.tone, href, external = linkDefaults.external, showIcon, iconLeading, children, ...rest }) {
|
|
41
|
+
/*
|
|
42
|
+
The trailing mark, and the component owns it. Which arrow it is follows the
|
|
43
|
+
destination rather than the call site: right for somewhere on this site,
|
|
44
|
+
up-right for somewhere off it. A page cannot pass one, because an external
|
|
45
|
+
link wearing a plain right arrow would be telling the reader their tab is
|
|
46
|
+
about to stay put — and that is the one thing this mark exists to say.
|
|
47
|
+
|
|
48
|
+
An external link is always marked — leaving the site is a fact about the
|
|
49
|
+
destination, not a flourish a page may decline. Everything else follows
|
|
50
|
+
`showIcon`, which reaches both variants and defaults to neither: unset, it
|
|
51
|
+
takes the answer the variant implies.
|
|
52
|
+
|
|
53
|
+
The weight follows the words the mark sits beside, which is the only place
|
|
54
|
+
an inline link and a standalone one disagree about a glyph.
|
|
55
|
+
|
|
56
|
+
A standalone link sets its label at font.label.md — semibold — and beside
|
|
57
|
+
that the regular cut's strokes read as a smudge rather than a direction, so
|
|
58
|
+
the arrow is solid. That is a deliberate exception to
|
|
59
|
+
`icon-solid-marks-selection`, which reserves the weight for a selected item:
|
|
60
|
+
this is not selection, and what earns it is legibility at sixteen pixels
|
|
61
|
+
against a heavier neighbour.
|
|
62
|
+
|
|
63
|
+
An inline link has no label of its own — it takes the paragraph's type, which
|
|
64
|
+
is body copy at the regular weight. A solid arrow there is heavier than every
|
|
65
|
+
word around it, so the exception does not apply and the regular cut is right.
|
|
66
|
+
The mark matches its neighbours either way; only the neighbours change.
|
|
67
|
+
*/
|
|
68
|
+
const inline = variant === 'inline';
|
|
69
|
+
/*
|
|
70
|
+
Unset follows the variant, which is the only sensible default and not one the
|
|
71
|
+
contract can hold: a contract declares one default per prop and this prop
|
|
72
|
+
wants three. Only a standalone link is marked unasked — it is alone on its
|
|
73
|
+
line with nothing else saying it goes anywhere. An inline one would put an
|
|
74
|
+
arrow after every linked word in a paragraph, and a list one would put a
|
|
75
|
+
column of them down a footer, where a mark on every row marks nothing.
|
|
76
|
+
*/
|
|
77
|
+
const marked = showIcon ?? variant !== 'inline';
|
|
78
|
+
/*
|
|
79
|
+
A list link's mark waits for the pointer. In a column, a mark on every row
|
|
80
|
+
marks nothing — but a column with no marks at all has no way of saying which
|
|
81
|
+
row is live, and its ink cannot change because the ink is the column's. So
|
|
82
|
+
the arrow is drawn and held at zero, and the pointer brings it in.
|
|
83
|
+
|
|
84
|
+
Not the external one, which stays. That mark is a fact about the destination
|
|
85
|
+
rather than an affordance, and it is what makes one row in a list of fifty
|
|
86
|
+
say something before anybody has touched it.
|
|
87
|
+
*/
|
|
88
|
+
const revealOnHover = variant === 'list' && !external;
|
|
89
|
+
/*
|
|
90
|
+
The mark takes the weight of the words beside it, which is a question only two
|
|
91
|
+
of the three variants can answer.
|
|
92
|
+
|
|
93
|
+
A standalone label is semibold, so its arrow is the solid cut — a regular one
|
|
94
|
+
beside it reads as a lighter object that happens to be nearby. An inline link
|
|
95
|
+
is body copy at the regular weight, where solid outweighs every word around
|
|
96
|
+
it. Both are decided here because both know their own type: the variant sets
|
|
97
|
+
it.
|
|
98
|
+
|
|
99
|
+
A list link does not. Its whole point is that it takes the ink and the
|
|
100
|
+
measure of the column it sits in — a footer sets one thing, a navigation
|
|
101
|
+
panel another — so this component cannot know whether the words beside the
|
|
102
|
+
mark are semibold or regular, and solid is the wrong guess in every column
|
|
103
|
+
that is not. Regular is the resting weight the package's own rule names from
|
|
104
|
+
sm through lg, and the one that costs nothing when it is wrong: it under-
|
|
105
|
+
rather than over-states, where the solid cut spends a weight that is supposed
|
|
106
|
+
to mean a selected item and nothing else.
|
|
107
|
+
*/
|
|
108
|
+
const light = inline || variant === 'list';
|
|
109
|
+
const trailing = external ? (light ? (_jsx(ArrowUpRightRegularIcon, {})) : (_jsx(ArrowUpRightSolidIcon, {}))) : marked ? (light ? (_jsx(ArrowRightRegularIcon, {})) : (_jsx(ArrowRightSolidIcon, {}))) : null;
|
|
110
|
+
return (_jsxs("a", { ...rest, className: linkParts.root, href: href, "data-variant": variant, "data-tone": tone,
|
|
111
|
+
// Together, always. The rel is what stops the opened page reaching back
|
|
112
|
+
// through window.opener to this one.
|
|
113
|
+
target: external ? '_blank' : undefined, rel: external ? 'noopener noreferrer' : undefined, children: [inline || iconLeading === undefined || iconLeading === null ? null : (_jsx("span", { className: linkParts['icon-leading'], children: _jsx(Icon, { size: "xs", children: iconLeading }) })), children, trailing === null ? null : (_jsx("span", { className: linkParts['icon-trailing'],
|
|
114
|
+
/*
|
|
115
|
+
Where the mark travels, handed to the stylesheet because the path is
|
|
116
|
+
the only thing that differs and it turns on `external`, which is not
|
|
117
|
+
a styling axis and cannot honestly become one.
|
|
118
|
+
|
|
119
|
+
25% of the sixteen-pixel glyph is the four pixels `motion.translate.hover`
|
|
120
|
+
already moves anything else that shifts under a pointer. The external
|
|
121
|
+
arrow points up and to the right, so it goes that way rather than
|
|
122
|
+
sliding across its own direction — 18% on each axis, which is the
|
|
123
|
+
same distance measured along the diagonal rather than four pixels twice.
|
|
124
|
+
*/
|
|
125
|
+
style: {
|
|
126
|
+
...(external
|
|
127
|
+
? { '--dds-link-arrow-travel': '18% -18%' }
|
|
128
|
+
: { '--dds-link-arrow-travel': '25% 0' }),
|
|
129
|
+
/*
|
|
130
|
+
A list link's mark rests displaced and at zero, and the pointer
|
|
131
|
+
brings it to where it belongs — the arrival and the nudge are the
|
|
132
|
+
same two declarations read in opposite directions. Leftward, along
|
|
133
|
+
the reading direction and along the arrow, so it reads as the mark
|
|
134
|
+
catching up with the words rather than as something dropped beside
|
|
135
|
+
them.
|
|
136
|
+
*/
|
|
137
|
+
...(revealOnHover
|
|
138
|
+
? { '--dds-link-arrow-rest-travel': '-60% 0', '--dds-link-arrow-rest': '0' }
|
|
139
|
+
: {}),
|
|
140
|
+
}, children: _jsx(Icon, { size: "xs", children: trailing }) }))] }));
|
|
141
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface LinkOwnProps {
|
|
3
|
+
/**
|
|
4
|
+
* `brand` — The default. The brand primary — the same coral the buttons are filled with — so a standalone link and a call to action are recognisably the same colour of intent, and a reader scanning for the way onward finds both.
|
|
5
|
+
|
|
6
|
+
It is 3.39:1 against the page, below the 4.5:1 that normal text is held to. This package already carries an unsigned waiver for that pairing on a button's label, and this is the second thing leaning on it. What makes it survivable is that it is never the only signal — a standalone link sits on its own line beside a mark — but the ink alone does not carry it, and if the waiver is ever refused this is the binding that moves. color.bg.brand-active is the same hue at 5.56:1 and is what it would move to.
|
|
7
|
+
* `inherit` — A standalone link on a ground that has already set its ink — a brand card, a dark band, a scrim over an image. There the brand ink is either invisible or wrong, and the mark is left to carry the link alone. It is the same argument CardBody makes for setting no colour in its regions.
|
|
8
|
+
*/
|
|
9
|
+
tone?: 'brand' | 'inherit';
|
|
10
|
+
/** The destination is off this site. Sets `target="_blank"` and `rel="noopener noreferrer"` together — the rel is not optional and not the consumer's job, which is how a page ends up handing `window.opener` to a site it does not control. It also fills the trailing slot with the box-and-arrow, so every external link on the site is marked the same way */
|
|
11
|
+
external?: boolean;
|
|
12
|
+
/** Always. An anchor without one is not a link: it takes no focus, is announced as plain text, and none of the browser's navigation affordances work — so there is no default that could stand in for one, and it is required for exactly that reason */
|
|
13
|
+
href: string;
|
|
14
|
+
/** Whether the link carries a mark after its words. It reaches both variants: a standalone link on its own line, and an inline one that wants the arrow inside a sentence.
|
|
15
|
+
|
|
16
|
+
Left unset it follows the variant, which is the only sensible default and is not one a contract can write: a standalone link is marked, because it is alone on its line with nothing else saying it goes anywhere, and an inline link is not, because an arrow after every linked word would interrupt every sentence carrying one. Set it either way to override that — false for a footer column, where a column of arrows is a column of noise; true for a sentence whose link is the thing being pointed at.
|
|
17
|
+
|
|
18
|
+
An external link draws its mark whether or not this is set, and draws a different one. */
|
|
19
|
+
showIcon?: boolean;
|
|
20
|
+
/** Allowed: text */
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
export type LinkProps = LinkOwnProps & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'variant' | 'tone' | 'external' | 'href' | 'iconLeading' | 'showIcon'> & ({
|
|
24
|
+
variant?: 'standalone' | 'list' | 'inline';
|
|
25
|
+
iconLeading?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
variant?: Exclude<'standalone' | 'list' | 'inline', 'inline'>;
|
|
28
|
+
iconLeading?: ReactNode;
|
|
29
|
+
});
|
|
30
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
31
|
+
export declare const linkParts: {
|
|
32
|
+
readonly root: "dds-link";
|
|
33
|
+
readonly 'icon-leading': "dds-link__icon-leading";
|
|
34
|
+
readonly 'icon-trailing': "dds-link__icon-trailing";
|
|
35
|
+
};
|
|
36
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
37
|
+
export declare const linkDefaults: {
|
|
38
|
+
readonly variant: "standalone";
|
|
39
|
+
readonly tone: "brand";
|
|
40
|
+
readonly external: false;
|
|
41
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED from link.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const linkParts = {
|
|
4
|
+
root: 'dds-link',
|
|
5
|
+
'icon-leading': 'dds-link__icon-leading',
|
|
6
|
+
'icon-trailing': 'dds-link__icon-trailing',
|
|
7
|
+
};
|
|
8
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
9
|
+
export const linkDefaults = { variant: 'standalone', tone: 'brand', external: false };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* `:where([data-dds-context="marketing"])` confines these rules without contributing
|
|
5
|
+
* specificity, so every override below still ties or beats exactly what it did
|
|
6
|
+
* before — several here are written a class deeper than they look in order to
|
|
7
|
+
* match generated CSS, and a scope that carried weight would break all of them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* Implementation CSS that the contract's staticCss cannot express. */
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* An inline link's mark scales with the sentence, and sits on its optical centre.
|
|
14
|
+
*
|
|
15
|
+
* Two problems with one cause. A standalone link sets its own type, so a sixteen-pixel glyph
|
|
16
|
+
* beside a sixteen-pixel label is right by construction — and it can be a flex line, which
|
|
17
|
+
* centres the mark exactly. An inline link can be neither: it takes whatever type the
|
|
18
|
+
* paragraph is, and it has to stay `display: inline` so it breaks across lines with the
|
|
19
|
+
* sentence it belongs to. A flex box does not wrap.
|
|
20
|
+
*
|
|
21
|
+
* So the glyph was a fixed sixteen inside copy of any size, which is undersized in a
|
|
22
|
+
* twenty-pixel line and oversized in a fourteen-pixel one — and `vertical-align` could not
|
|
23
|
+
* correct for it, because the error changed with the ratio between the two. Measured: the
|
|
24
|
+
* ink sat 1.36px low at fourteen, 1.41px at sixteen and 2.02px at twenty, and no single
|
|
25
|
+
* offset fixes three different ratios.
|
|
26
|
+
*
|
|
27
|
+
* An em-based box makes the mark track the copy the way everything else about this variant
|
|
28
|
+
* does. Once it does, one offset works everywhere, because everything is proportional.
|
|
29
|
+
*
|
|
30
|
+
* `1.1em` rather than `1em`, and the extra tenth is not padding. A Quill glyph fills about
|
|
31
|
+
* six tenths of its own box, so a one-em box put 9.60px of ink beside text whose capitals are
|
|
32
|
+
* 10.59px — a mark a tenth smaller than the letters it sits among, which is what reads as
|
|
33
|
+
* undersized. At 1.1em the ink is 10.56px against 10.59, and 13.20 against 13.23 at twenty:
|
|
34
|
+
* the arrow is the size of the capitals either side of it, which is the thing being matched.
|
|
35
|
+
*
|
|
36
|
+
* `-0.225em` is measured rather than reasoned. `middle` aligns a box to the baseline plus
|
|
37
|
+
* half the x-height, which is below the optical centre of cap-height text; this is the value
|
|
38
|
+
* that brings the ink's centre onto the text's, and it holds to within 0.2px at fourteen,
|
|
39
|
+
* sixteen and twenty. It moved with the box: at 1em the answer was -0.175em, and a taller
|
|
40
|
+
* box has to sit lower to keep the same ink in the same place — so the two numbers here are
|
|
41
|
+
* one decision and changing either alone breaks it.
|
|
42
|
+
*/
|
|
43
|
+
:where([data-dds-context="marketing"]) .dds-link[data-variant='inline'] .dds-link__icon-trailing {
|
|
44
|
+
block-size: 1.1em;
|
|
45
|
+
inline-size: 1.1em;
|
|
46
|
+
vertical-align: -0.225em;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* And the glyph fills that box rather than keeping the step Icon set on it. Three classes
|
|
51
|
+
* deep because Icon's own `[data-size]` rule is two, and an override that ties loses.
|
|
52
|
+
*/
|
|
53
|
+
:where([data-dds-context="marketing"]) .dds-link[data-variant='inline'] .dds-link__icon-trailing .dds-icon {
|
|
54
|
+
block-size: 100%;
|
|
55
|
+
inline-size: 100%;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* A link whose ink belongs to the ground gets its underline back under the pointer.
|
|
60
|
+
*
|
|
61
|
+
* A standalone link at `tone: inherit` — one on a brand card, a dark band, a scrim. It takes
|
|
62
|
+
* the colour around it, so the colour cannot change under the pointer, and
|
|
63
|
+
* `text-decoration-thickness` thickens a line that is not there. Without this it had no hover
|
|
64
|
+
* affordance at all.
|
|
65
|
+
*
|
|
66
|
+
* The list variant had the same hole and answers it differently, below: it has a mark to
|
|
67
|
+
* bring in, and a column of rows that underline one at a time reads as a table of contents
|
|
68
|
+
* being corrected.
|
|
69
|
+
*
|
|
70
|
+
* Product reaches the same conclusion from the other end: its standalone drops the underline
|
|
71
|
+
* except at `tone: inherit`, "because the link is the same colour as the text around it and
|
|
72
|
+
* the rule is the only thing left saying it is a link". It keeps the line at all times. These
|
|
73
|
+
* designs have no line at rest — a footer of fifty underlined rows is a wall — so it arrives
|
|
74
|
+
* with the pointer instead, which is the same argument applied to a denser page.
|
|
75
|
+
*
|
|
76
|
+
* Here rather than in the contract because `structure` carries no state: it says what a
|
|
77
|
+
* variant looks like, not what it looks like while a pointer is over it.
|
|
78
|
+
*/
|
|
79
|
+
:where([data-dds-context="marketing"]) .dds-link[data-variant='standalone'][data-tone='inherit']:hover {
|
|
80
|
+
text-decoration-line: underline;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* The mark moves a little way in the direction it is already pointing, and stays there.
|
|
85
|
+
*
|
|
86
|
+
* A transition rather than a keyframe animation, which is what the rest of this package
|
|
87
|
+
* does for a hover: ButtonIcon transitions its background and its outline over
|
|
88
|
+
* `motion.duration.normal` on `motion.easing.standard`, and there is no reason a mark
|
|
89
|
+
* should reach for a different mechanism to travel four pixels. What was here before was
|
|
90
|
+
* a two-curve `@keyframes` that sent the arrow out of its own box, faded it to nothing,
|
|
91
|
+
* and brought it back from the other side — a gesture with a beginning, a middle and an
|
|
92
|
+
* end, for a link.
|
|
93
|
+
*
|
|
94
|
+
* Losing the keyframes loses three things worth naming, all of them deliberate: the split
|
|
95
|
+
* `exit`/`enter` curves, which only exist because a round trip has two halves; the fade at
|
|
96
|
+
* the edges, which only exists because something was leaving; and the bespoke
|
|
97
|
+
* `prefers-reduced-motion` block, because the generated sheet already sets
|
|
98
|
+
* `transition: none` on `.dds-link *` and a transition is what this now is. The reduce
|
|
99
|
+
* block below is smaller than the one it replaces and covers more: it takes the
|
|
100
|
+
* displacement away as well as the tween, so a reader who asked for less movement gets
|
|
101
|
+
* none rather than an instant four-pixel jump.
|
|
102
|
+
*
|
|
103
|
+
* It travels along the arrow it is carrying. A right arrow goes right; the external one
|
|
104
|
+
* points up and to the right and goes that way, because a mark that slid sideways while
|
|
105
|
+
* pointing diagonally would be moving across its own direction. Both ends of that path
|
|
106
|
+
* arrive as custom properties the component sets — `external` is not a styling axis, and
|
|
107
|
+
* making it one to reach a rule would have the contract declare a difference the component
|
|
108
|
+
* does not have. TabList sets its indicator's travel the same way and for the same reason.
|
|
109
|
+
*
|
|
110
|
+
* Percentages rather than pixels, because the glyph is not always the same size: an inline
|
|
111
|
+
* link's mark is `1.1em` and tracks the paragraph, so a fixed nudge would be proportionally
|
|
112
|
+
* large in fourteen-pixel copy and small in twenty. 25% of a sixteen-pixel mark is 4px,
|
|
113
|
+
* which is the distance `motion.translate.hover` already moves anything else that shifts
|
|
114
|
+
* under a pointer.
|
|
115
|
+
*
|
|
116
|
+
* A list link's mark travels the other way, and that is the whole of its arrival. It rests
|
|
117
|
+
* displaced to the left and at zero opacity, and the pointer carries it to the same place
|
|
118
|
+
* every other hovered mark ends up — thirteen and a half pixels rather than four, because it
|
|
119
|
+
* starts further back. One mechanism, read in two directions, with nothing to keep in step. Opacity rather than rendering it on hover: the box
|
|
120
|
+
* is there either way, so the row does not change width when the pointer arrives and the
|
|
121
|
+
* column does not shift under it.
|
|
122
|
+
*/
|
|
123
|
+
/*
|
|
124
|
+
* The box fades; the glyph travels. Two elements because they are two different boxes, and
|
|
125
|
+
* only one of them is square.
|
|
126
|
+
*
|
|
127
|
+
* A percentage in `translate` resolves against the element's own border box — width for the
|
|
128
|
+
* inline axis, height for the block one. The mark's box is not square: it carries the gap
|
|
129
|
+
* between the words and the arrow as padding, so it measures twenty by sixteen around a
|
|
130
|
+
* sixteen-pixel glyph. Measured on that box, `25% 0` moved five pixels rather than four, and
|
|
131
|
+
* the external arrow's `18% -18%` came out as 3.6 across and 2.88 up — a travel at 39 degrees
|
|
132
|
+
* for a mark pointing at 45, which is the one thing the whole direction argument exists to
|
|
133
|
+
* avoid. On the glyph the same two numbers are four pixels, and 2.88 on both axes.
|
|
134
|
+
*/
|
|
135
|
+
:where([data-dds-context="marketing"]) .dds-link__icon-trailing {
|
|
136
|
+
opacity: var(--dds-link-arrow-rest, 1);
|
|
137
|
+
transition-property: opacity;
|
|
138
|
+
transition-duration: var(--motion-duration-normal);
|
|
139
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:where([data-dds-context="marketing"]) .dds-link:hover .dds-link__icon-trailing {
|
|
143
|
+
opacity: 1;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:where([data-dds-context="marketing"]) .dds-link__icon-trailing .dds-icon {
|
|
147
|
+
translate: var(--dds-link-arrow-rest-travel, 0 0);
|
|
148
|
+
transition-property: translate;
|
|
149
|
+
transition-duration: var(--motion-duration-normal);
|
|
150
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
:where([data-dds-context="marketing"]) .dds-link:hover .dds-link__icon-trailing .dds-icon {
|
|
154
|
+
translate: var(--dds-link-arrow-travel, 0 0);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/*
|
|
158
|
+
* Less movement means none of this, not a faster version of it. The generated sheet stops
|
|
159
|
+
* the tween; this stops the displacement, so the mark sits where it belongs at rest and
|
|
160
|
+
* stays there under the pointer. A list link's still appears — that is opacity, and a mark
|
|
161
|
+
* that never shows up is a row with no affordance at all.
|
|
162
|
+
*/
|
|
163
|
+
@media (prefers-reduced-motion: reduce) {
|
|
164
|
+
:where([data-dds-context="marketing"]) .dds-link__icon-trailing .dds-icon,
|
|
165
|
+
:where([data-dds-context="marketing"]) .dds-link:hover .dds-link__icon-trailing .dds-icon {
|
|
166
|
+
translate: none;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* GENERATED from menuitem.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-menuitem {
|
|
4
|
+
transition-property: background-color, color, opacity, outline-color, outline-width;
|
|
5
|
+
align-items: center;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
display: flex;
|
|
9
|
+
inline-size: 100%;
|
|
10
|
+
list-style: none;
|
|
11
|
+
outline-style: solid;
|
|
12
|
+
position: relative;
|
|
13
|
+
user-select: none;
|
|
14
|
+
border-radius: var(--radius-menu-item);
|
|
15
|
+
color: var(--color-fg-default);
|
|
16
|
+
gap: var(--space-gap-sm);
|
|
17
|
+
min-block-size: var(--size-target-min);
|
|
18
|
+
outline-width: var(--border-width-none);
|
|
19
|
+
padding-block: var(--space-inset-xs);
|
|
20
|
+
padding-inline: var(--space-inset-xs);
|
|
21
|
+
transition-duration: var(--motion-duration-fast);
|
|
22
|
+
transition-timing-function: var(--motion-easing-standard);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where([data-dds-context="marketing"]) .dds-menuitem .dds-menuitem__icon {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:where([data-dds-context="marketing"]) .dds-menuitem .dds-menuitem__label {
|
|
31
|
+
flex: auto;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
text-overflow: ellipsis;
|
|
34
|
+
white-space: nowrap;
|
|
35
|
+
font-family: var(--font-body-md-family);
|
|
36
|
+
font-size: var(--font-body-md-size);
|
|
37
|
+
font-weight: var(--font-body-md-weight);
|
|
38
|
+
line-height: var(--font-body-md-line-height);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:where([data-dds-context="marketing"]) .dds-menuitem:hover {
|
|
42
|
+
background-color: var(--color-bg-hover);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where([data-dds-context="marketing"]) .dds-menuitem:active {
|
|
46
|
+
background-color: var(--color-bg-active);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:where([data-dds-context="marketing"]) .dds-menuitem:focus-visible {
|
|
50
|
+
outline-color: var(--color-border-focus);
|
|
51
|
+
outline-width: var(--border-width-focus);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where([data-dds-context="marketing"]) .dds-menuitem[data-disabled="true"] {
|
|
55
|
+
color: var(--color-fg-disabled);
|
|
56
|
+
opacity: var(--opacity-disabled);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-dds-context="marketing"]) .dds-menuitem[data-size="sm"] .dds-menuitem__label {
|
|
60
|
+
font-family: var(--font-body-sm-family);
|
|
61
|
+
font-size: var(--font-body-sm-size);
|
|
62
|
+
font-weight: var(--font-body-sm-weight);
|
|
63
|
+
line-height: var(--font-body-sm-line-height);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@media (prefers-reduced-motion: reduce) {
|
|
67
|
+
:where([data-dds-context="marketing"]) .dds-menuitem,
|
|
68
|
+
:where([data-dds-context="marketing"]) .dds-menuitem * { transition: none; }
|
|
69
|
+
}
|
|
70
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './MenuItem.css';
|
|
2
|
+
import { type MenuItemProps } from './MenuItem.types.js';
|
|
3
|
+
export type { MenuItemProps };
|
|
4
|
+
/**
|
|
5
|
+
* One command in a menu.
|
|
6
|
+
*
|
|
7
|
+
* It renders the row and nothing around it. Focus, the arrow keys and shutting the menu are the
|
|
8
|
+
* menu's, and there is no menu here yet — so what this ships as is a row that looks right and,
|
|
9
|
+
* outside an element whose role is `menu`, announces wrong. DropdownMenu is what finishes it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function MenuItem({ size, disabled, icon, onSelect, children, ...rest }: MenuItemProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import './MenuItem.css';
|
|
4
|
+
import { Icon } from '../icon/Icon.js';
|
|
5
|
+
import { menuItemDefaults, menuItemParts } from './MenuItem.types.js';
|
|
6
|
+
/**
|
|
7
|
+
* One command in a menu.
|
|
8
|
+
*
|
|
9
|
+
* It renders the row and nothing around it. Focus, the arrow keys and shutting the menu are the
|
|
10
|
+
* menu's, and there is no menu here yet — so what this ships as is a row that looks right and,
|
|
11
|
+
* outside an element whose role is `menu`, announces wrong. DropdownMenu is what finishes it.
|
|
12
|
+
*/
|
|
13
|
+
export function MenuItem({ size = menuItemDefaults.size, disabled = menuItemDefaults.disabled, icon, onSelect, children, ...rest }) {
|
|
14
|
+
return (_jsxs("li", { className: menuItemParts.root, "data-size": size, "data-disabled": String(disabled), role: "menuitem", "aria-disabled": disabled || undefined,
|
|
15
|
+
// Focus is the menu's to move, and it moves it here: every row is reachable by arrow key and
|
|
16
|
+
// none of them is a tab stop, which is what the menu role promises.
|
|
17
|
+
tabIndex: -1, ...rest, onClick: (event) => {
|
|
18
|
+
rest.onClick?.(event);
|
|
19
|
+
if (disabled)
|
|
20
|
+
return;
|
|
21
|
+
onSelect?.();
|
|
22
|
+
}, children: [icon === undefined || icon === null ? null : (
|
|
23
|
+
// Decorative: the words beside it say the same thing, and a mark that had to be read would
|
|
24
|
+
// be a command whose name was a picture.
|
|
25
|
+
_jsx("span", { className: menuItemParts.icon, "aria-hidden": "true", children: _jsx(Icon, { size: size === 'sm' ? 'xs' : 'sm', children: icon }) })), _jsx("span", { className: menuItemParts.label, children: children })] }));
|
|
26
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { LiHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface MenuItemOwnProps {
|
|
3
|
+
/**
|
|
4
|
+
* `sm` — The row of a small menu — one opened from a navigation bar or a footer, where the trigger sits in a row of links
|
|
5
|
+
* `md` — The default, and the row of every other menu
|
|
6
|
+
*/
|
|
7
|
+
size?: 'sm' | 'md';
|
|
8
|
+
/** The command cannot be used from here — a language not published yet, a page beyond the set. It stays and recedes, because a menu whose rows come and go is a menu a reader cannot learn */
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
/** A mark before the words, for a set read by shape as much as by reading — a flag beside a language, a glyph beside a region. All of them or none: one row with a mark in a set without them reads as the important one */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** Always, and it is required for that reason — running something is the whole of what a command is, and this is the only way it does */
|
|
13
|
+
onSelect: () => void;
|
|
14
|
+
/** Allowed: text */
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
export type MenuItemProps = MenuItemOwnProps & Omit<LiHTMLAttributes<HTMLLIElement>, 'className' | 'size' | 'disabled' | 'icon' | 'onSelect'>;
|
|
18
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
19
|
+
export declare const menuItemParts: {
|
|
20
|
+
readonly root: "dds-menuitem";
|
|
21
|
+
readonly icon: "dds-menuitem__icon";
|
|
22
|
+
readonly label: "dds-menuitem__label";
|
|
23
|
+
};
|
|
24
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
25
|
+
export declare const menuItemDefaults: {
|
|
26
|
+
readonly size: "md";
|
|
27
|
+
readonly disabled: false;
|
|
28
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED from menu-item.contract.json. Do not edit.
|
|
2
|
+
/** The class each part carries. Apply these — do not retype them. */
|
|
3
|
+
export const menuItemParts = {
|
|
4
|
+
root: 'dds-menuitem',
|
|
5
|
+
icon: 'dds-menuitem__icon',
|
|
6
|
+
label: 'dds-menuitem__label',
|
|
7
|
+
};
|
|
8
|
+
/** Generated so defaults cannot drift from the contract. */
|
|
9
|
+
export const menuItemDefaults = { size: 'md', disabled: false };
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/* GENERATED from navbar.contract.json. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:where([data-dds-context="marketing"]) .dds-navbar {
|
|
4
|
+
align-items: center;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
display: flex;
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
inset-block-start: 0;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
position: sticky;
|
|
11
|
+
background-color: var(--color-bg-transparent);
|
|
12
|
+
color: var(--color-fg-default);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__inner {
|
|
16
|
+
align-items: center;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
container-type: inline-size;
|
|
19
|
+
display: flex;
|
|
20
|
+
inline-size: 100%;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
min-inline-size: 0;
|
|
23
|
+
position: relative;
|
|
24
|
+
gap: var(--space-gap-md);
|
|
25
|
+
min-block-size: var(--size-bar-height);
|
|
26
|
+
padding-block: var(--space-inset-xs);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__ground {
|
|
30
|
+
inset: 0;
|
|
31
|
+
position: absolute;
|
|
32
|
+
background-color: var(--color-bg-page);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__brand {
|
|
36
|
+
align-items: center;
|
|
37
|
+
box-sizing: border-box;
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-shrink: 0;
|
|
40
|
+
block-size: var(--icon-size-md);
|
|
41
|
+
border-radius: var(--radius-pill);
|
|
42
|
+
gap: var(--space-gap-sm);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__nav {
|
|
46
|
+
align-items: center;
|
|
47
|
+
display: flex;
|
|
48
|
+
position: relative;
|
|
49
|
+
gap: var(--space-gap-none);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__preferences {
|
|
53
|
+
align-items: center;
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-shrink: 0;
|
|
56
|
+
gap: var(--space-gap-xs);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__utilities {
|
|
60
|
+
align-items: center;
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-shrink: 0;
|
|
64
|
+
border-radius: var(--radius-pill);
|
|
65
|
+
gap: var(--space-gap-sm);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__compact-action {
|
|
69
|
+
align-items: center;
|
|
70
|
+
display: flex;
|
|
71
|
+
flex-shrink: 0;
|
|
72
|
+
gap: var(--space-gap-sm);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__trigger {
|
|
76
|
+
align-items: center;
|
|
77
|
+
appearance: none;
|
|
78
|
+
border-style: none;
|
|
79
|
+
color: inherit;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
display: inline-flex;
|
|
82
|
+
flex-shrink: 0;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
outline-style: solid;
|
|
85
|
+
padding: 0;
|
|
86
|
+
background-color: var(--color-bg-transparent);
|
|
87
|
+
border-radius: var(--radius-control-sm);
|
|
88
|
+
min-block-size: var(--size-target-min);
|
|
89
|
+
min-inline-size: var(--size-target-min);
|
|
90
|
+
outline-width: var(--border-width-none);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__panel-host {
|
|
94
|
+
display: contents;
|
|
95
|
+
color: var(--color-fg-default);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__cluster {
|
|
99
|
+
align-items: center;
|
|
100
|
+
display: flex;
|
|
101
|
+
position: relative;
|
|
102
|
+
background-color: var(--color-bg-surface-raised);
|
|
103
|
+
border-radius: var(--radius-pill);
|
|
104
|
+
box-shadow: var(--elevation-surface-floating);
|
|
105
|
+
gap: var(--space-gap-md);
|
|
106
|
+
min-block-size: var(--size-control-lg);
|
|
107
|
+
padding-block: var(--space-inset-2xs);
|
|
108
|
+
padding-inline: var(--space-inset-2xs);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__trigger:focus-visible {
|
|
112
|
+
outline-color: var(--color-border-focus);
|
|
113
|
+
outline-width: var(--border-width-focus);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
:where([data-dds-context="marketing"]) .dds-navbar .dds-navbar__ground[data-condensed="true"] {
|
|
117
|
+
box-shadow: var(--elevation-surface-sticky);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
:where([data-dds-context="marketing"]) .dds-navbar[data-tone="inverse"] {
|
|
121
|
+
color: var(--color-fg-on-strong);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
:where([data-dds-context="marketing"]) .dds-navbar[data-tone="inverse"] .dds-navbar__cluster {
|
|
125
|
+
background-color: var(--color-bg-surface-raised-inverse);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
:where([data-dds-context="marketing"]) .dds-navbar[data-tone="inverse"] .dds-navbar__ground {
|
|
129
|
+
background-color: var(--color-bg-strong);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:where([data-dds-context="marketing"]) .dds-navbar[data-tone="inverse"] .dds-navbar__trigger:focus-visible {
|
|
133
|
+
outline-color: var(--color-border-focus-inverse);
|
|
134
|
+
}
|
|
135
|
+
|