diff --git a/changes/49276-secondary-subdued-button-styles b/changes/49276-secondary-subdued-button-styles new file mode 100644 index 0000000000..a37b2bfb35 --- /dev/null +++ b/changes/49276-secondary-subdued-button-styles @@ -0,0 +1 @@ +- Updated button styles across the Fleet UI to use the new bordered secondary and subdued button variants. diff --git a/frontend/components/ActionsDropdown/ActionsDropdown.tsx b/frontend/components/ActionsDropdown/ActionsDropdown.tsx index 5acd15e0be..6b88c40d1c 100644 --- a/frontend/components/ActionsDropdown/ActionsDropdown.tsx +++ b/frontend/components/ActionsDropdown/ActionsDropdown.tsx @@ -29,7 +29,9 @@ interface IActionsDropdownProps { className?: string; menuAlign?: "right" | "left" | "default"; menuPlacement?: "top" | "bottom" | "auto"; - variant?: "button" | "brand-button" | "small-button"; + /** Mirrors Fleet's Primary/Secondary/Subdued button styles — see #35329. + * Default: "subdued" */ + variant?: "primary" | "secondary" | "subdued"; buttonLabel?: string; } @@ -37,6 +39,10 @@ const getOptionBackgroundColor = (state: { isFocused: boolean }) => { return state.isFocused ? COLORS["ui-fleet-black-5"] : "transparent"; }; +const getControlBackgroundColor = (variant: string | undefined) => { + return variant === "secondary" ? COLORS["ui-off-white"] : "initial"; +}; + const getLeftMenuAlign = (menuAlign: "right" | "left" | "default") => { switch (menuAlign) { case "right": @@ -63,13 +69,15 @@ const CustomDropdownIndicator = ( props: DropdownIndicatorProps ) => { const { isFocused, selectProps } = props; - const variant = (selectProps as { variant?: "button" }).variant; + const variant = (selectProps as { + variant?: "primary" | "secondary" | "subdued"; + }).variant; const color = isFocused || selectProps.menuIsOpen || - variant === "button" || - variant === "small-button" + variant === "subdued" || + variant === "secondary" ? "ui-fleet-black-75" : "core-fleet-black"; @@ -78,6 +86,7 @@ const CustomDropdownIndicator = ( @@ -90,6 +99,7 @@ const CustomOption: React.FC> = (props) => { const optionContent = (
{ const dropdownClassnames = classnames(baseClass, className); // Portal the menu only when rendered inside a TableContainer's data-table // block, where .data-table__wrapper's overflow-x: auto would otherwise clip - // the menu vertically. The brand-button variant nulls out react-select's + // the menu vertically. The primary variant nulls out react-select's // Control, and MenuPortal bails when controlElement is missing — so don't - // use brand-button inside a table cell. + // use primary inside a table cell. const { insideTable } = useContext(TableLayoutContext); - // Used for brand Action button + // Used for the primary Action button const [menuIsOpen, setMenuIsOpen] = useState(false); const selectRef = useRef>(null); const wrapperRef = useRef(null); + // react-select's hidden input always matches :focus-visible, even on a + // mouse click (browsers treat text inputs specially), so CSS alone can't + // tell a Tab-focus apart from a click. Track the last input method + // ourselves — same approach as UserMenu.tsx — so the focus ring only + // shows up for keyboard tabbing. + const [isKeyboardFocus, setIsKeyboardFocus] = useState(false); + + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === "Tab") { + setIsKeyboardFocus(true); + } + }; + + const handleMouseDown = () => { + setIsKeyboardFocus(false); + }; + + document.addEventListener("keydown", handleKeyDown); + document.addEventListener("mousedown", handleMouseDown); + + return () => { + document.removeEventListener("keydown", handleKeyDown); + document.removeEventListener("mousedown", handleMouseDown); + }; + }, []); + // Close on outside click useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -164,11 +201,11 @@ const ActionsDropdown = ({ }; }, [menuIsOpen]); - const isBrandButton = variant === "brand-button"; + const isPrimary = variant === "primary"; // CustomControl rerenders on state change, preventing arrow animation - // Render brand button outside of CustomControl instead - const renderBrandButton = () => ( + // Render primary button outside of CustomControl instead + const renderPrimaryButton = () => (
); diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx index bda605dabf..e10190809d 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/CancelActivityModal/CancelActivityModal.tsx @@ -75,9 +75,6 @@ const CancelActivityModal = ({ > Cancel activity - ); diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/ClearPasscodeModal/ClearPasscodeModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/ClearPasscodeModal/ClearPasscodeModal.tsx index a8f2adea5b..d0ead016a9 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/ClearPasscodeModal/ClearPasscodeModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/ClearPasscodeModal/ClearPasscodeModal.tsx @@ -103,7 +103,7 @@ const ClearPasscodeModal = ({ > Clear passcode - diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/ConfirmRunScriptModal/ConfirmRunScriptModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/ConfirmRunScriptModal/ConfirmRunScriptModal.tsx index c4441e249a..671a6df12b 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/ConfirmRunScriptModal/ConfirmRunScriptModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/ConfirmRunScriptModal/ConfirmRunScriptModal.tsx @@ -45,7 +45,7 @@ const ConfirmRunScriptModal = ({ > Run - diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/LockModal/LockModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/LockModal/LockModal.tsx index 11df2ea8fd..3286836d18 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/LockModal/LockModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/LockModal/LockModal.tsx @@ -165,7 +165,7 @@ const LockModal = ({ > Lock - diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/ManagedAccountModal/ManagedAccountModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/ManagedAccountModal/ManagedAccountModal.tsx index 21830bc7ed..29eb4ecc75 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/ManagedAccountModal/ManagedAccountModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/ManagedAccountModal/ManagedAccountModal.tsx @@ -115,7 +115,7 @@ const ManagedAccountModal = ({ {canRotatePassword && ( - diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/UnlockModal/UnlockModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/UnlockModal/UnlockModal.tsx index ef1bd09db6..0313c15874 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/UnlockModal/UnlockModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/UnlockModal/UnlockModal.tsx @@ -118,7 +118,7 @@ const UnlockModal = ({ > Unlock - diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/WipeModal/WipeModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/WipeModal/WipeModal.tsx index dcdf4e5bca..83c7eba793 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/WipeModal/WipeModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/WipeModal/WipeModal.tsx @@ -107,7 +107,7 @@ const WipeModal = ({ > Wipe - diff --git a/frontend/pages/hosts/details/HostQueryReport/HQRTable/HQRTable.tsx b/frontend/pages/hosts/details/HostQueryReport/HQRTable/HQRTable.tsx index 311f8a1c9d..b91cf57440 100644 --- a/frontend/pages/hosts/details/HostQueryReport/HQRTable/HQRTable.tsx +++ b/frontend/pages/hosts/details/HostQueryReport/HQRTable/HQRTable.tsx @@ -109,20 +109,22 @@ const HQRTable = ({ diff --git a/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx b/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx index 386b667720..f89103b720 100644 --- a/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx +++ b/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx @@ -16,7 +16,6 @@ import { import Button from "components/buttons/Button"; import BackButton from "components/BackButton"; -import Icon from "components/Icon"; import MainContent from "components/MainContent"; import ShowQueryModal from "components/modals/ShowQueryModal"; import Spinner from "components/Spinner"; @@ -125,16 +124,11 @@ const HostQueryReport = ({
{!hqrError &&

{hostName}

}
diff --git a/frontend/pages/hosts/details/HostReportsTab/HostReportCard.tsx b/frontend/pages/hosts/details/HostReportsTab/HostReportCard.tsx index 39d1fc09c6..d5f323600d 100644 --- a/frontend/pages/hosts/details/HostReportsTab/HostReportCard.tsx +++ b/frontend/pages/hosts/details/HostReportsTab/HostReportCard.tsx @@ -152,7 +152,7 @@ const HostReportCard = ({ > ); @@ -60,11 +60,11 @@ const RotateButton = ({ isRotating, onClick }: IRotateButtonProps) => { ); diff --git a/frontend/pages/hosts/details/cards/Certificates/CertificatesTable/CertificatesTableConfig.tsx b/frontend/pages/hosts/details/cards/Certificates/CertificatesTable/CertificatesTableConfig.tsx index d2172f62cb..6fef1f416c 100644 --- a/frontend/pages/hosts/details/cards/Certificates/CertificatesTable/CertificatesTableConfig.tsx +++ b/frontend/pages/hosts/details/cards/Certificates/CertificatesTable/CertificatesTableConfig.tsx @@ -104,7 +104,6 @@ const generateTableConfig = (): IHostCertificatesTableConfig[] => { className="view-cert-details" noLink rowHover - excludeChevron customText="View details" /> ); diff --git a/frontend/pages/hosts/details/cards/HostHeader/HostHeader.tsx b/frontend/pages/hosts/details/cards/HostHeader/HostHeader.tsx index 30c02692ba..5a62b2edab 100644 --- a/frontend/pages/hosts/details/cards/HostHeader/HostHeader.tsx +++ b/frontend/pages/hosts/details/cards/HostHeader/HostHeader.tsx @@ -54,7 +54,7 @@ const RefetchButton = ({ className={classNames} disabled={isDisabled || isFetching} onClick={onRefetchHost} - variant="inverse" + variant="secondary" > {buttonText} diff --git a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx index d0e00c90d0..2801ab7e30 100644 --- a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx +++ b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostInstallerActionCell/HostInstallerActionCell.tsx @@ -188,7 +188,7 @@ export const HostInstallerActionButton = ({ position="top" > - )} {renderHostSoftware()} {selectedSoftwareUpdates && ( diff --git a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTable.tsx b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTable.tsx index 9d6d60e96f..0f6576a14f 100644 --- a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTable.tsx +++ b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTable.tsx @@ -18,6 +18,7 @@ import { ITableQueryData } from "components/TableContainer/TableContainer"; import { CustomOptionType } from "components/forms/fields/DropdownWrapper/DropdownWrapper"; import Button from "components/buttons/Button"; +import Icon from "components/Icon"; import EmptySoftwareTable from "pages/SoftwarePage/components/tables/EmptySoftwareTable"; import TableCount from "components/TableContainer/TableCount"; import EmptyState from "components/EmptyState"; @@ -193,22 +194,34 @@ const HostSoftwareLibraryTable = ({ const renderCustomControls = () => { return ( -
- ) => - newValue && - handleCustomFilterDropdownChange( - newValue.value as IHostSWLibraryDropdownFilterVal - ) - } - variant="table-filter" - isDisabled={isTrulyEmpty} - /> -
+ <> +
+ ) => + newValue && + handleCustomFilterDropdownChange( + newValue.value as IHostSWLibraryDropdownFilterVal + ) + } + variant="table-filter" + isDisabled={isTrulyEmpty} + /> +
+ {canAddSoftware && !isTrulyEmpty && ( + + )} + ); }; diff --git a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx index 58a3df9ea5..e438f31f05 100644 --- a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx +++ b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/HostSoftwareLibraryTableConfig.tsx @@ -208,7 +208,13 @@ export const generateHostSWLibraryTableHeaders = ({ }, }, { - Header: "Actions", + Header: "", + // Deliberately not "actions" — that class name collides with a + // shared, unrelated `td.actions__cell` rule in DataTable/_styles.scss + // (text-align: right; max-width: 99px) built for a small "..." dropdown + // pattern elsewhere in the app, which squished these Install/Uninstall + // buttons and right-aligned them. + id: "installer-actions", accessor: (originalRow) => originalRow.ui_status, disableSortBy: true, Cell: (cellProps: IActionCellProps) => { diff --git a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/_styles.scss b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/_styles.scss index 87be32845b..209512355b 100644 --- a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/_styles.scss +++ b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/HostSoftwareLibraryTable/_styles.scss @@ -1,9 +1,42 @@ .host-sw-library-table { + // TableContainer always renders its filter/customControl slot before the + // search box, with no prop to place something after it. `display: contents` + // unwraps the two intermediate flex containers so the dropdown, search box, + // and "Add software" button become direct siblings under `__header`, which + // lets `order` put "Add software" after the search box like the design + // calls for. + .table-container__header { + justify-content: flex-start; + } + + .table-container__header-left { + display: contents; + } + + .controls { + display: contents; + } + + .table-container__results-count { + order: 1; + } + &__filter-controls { width: 230px; + order: 2; + // Pushes the dropdown/search/button group to the right, restoring the + // separation from the item count that `justify-content: flex-start` + // above removed (count and this group used to be split apart by the + // default `justify-content: space-between`). + margin-left: auto; } .table-container__search { width: 315px; + order: 3; + } + + &__add-software-button { + order: 4; } } diff --git a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/_styles.scss b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/_styles.scss index 9de6a9a599..0b6da6c78f 100644 --- a/frontend/pages/hosts/details/cards/HostSoftwareLibrary/_styles.scss +++ b/frontend/pages/hosts/details/cards/HostSoftwareLibrary/_styles.scss @@ -38,7 +38,7 @@ &__item-actions { display: flex; flex-direction: row; - gap: $pad-medium; + gap: $pad-small; align-items: center; } @@ -71,6 +71,12 @@ .data-table-block { .data-table__table { + thead { + .installer-actions__header { + border-left: none; + } + } + tbody { tr { .name__cell { @@ -85,7 +91,7 @@ } } - .Actions__cell { + .installer-actions__cell { display: flex; // Undoes vertical click margin found on table container tooltips diff --git a/frontend/pages/hosts/details/cards/HostSummary/BootstrapPackageIndicator/BootstrapPackageIndicator.tsx b/frontend/pages/hosts/details/cards/HostSummary/BootstrapPackageIndicator/BootstrapPackageIndicator.tsx index c50ca8cfcd..37ab0177f0 100644 --- a/frontend/pages/hosts/details/cards/HostSummary/BootstrapPackageIndicator/BootstrapPackageIndicator.tsx +++ b/frontend/pages/hosts/details/cards/HostSummary/BootstrapPackageIndicator/BootstrapPackageIndicator.tsx @@ -66,7 +66,7 @@ const BootstrapPackageIndicator = ({ ) : ( )} diff --git a/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx b/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx index ab4c9ff056..0a6a61a38b 100644 --- a/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx +++ b/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx @@ -143,7 +143,7 @@ const HostQueries = ({
{canAddQuery && ( - diff --git a/frontend/pages/hosts/details/cards/Queries/ReportUpdatedCell/ReportUpdatedCell.tsx b/frontend/pages/hosts/details/cards/Queries/ReportUpdatedCell/ReportUpdatedCell.tsx index 9ec3bf5b10..ad3971473e 100644 --- a/frontend/pages/hosts/details/cards/Queries/ReportUpdatedCell/ReportUpdatedCell.tsx +++ b/frontend/pages/hosts/details/cards/Queries/ReportUpdatedCell/ReportUpdatedCell.tsx @@ -115,7 +115,7 @@ const ReportUpdatedCell = ({ {should_link_to_hqr && hostId && queryId && ( // parent row has same onClick functionality but link here is required for keyboard accessibility -
diff --git a/frontend/pages/hosts/details/cards/Software/SelfService/components/SoftwareUpdateModal/SoftwareUpdateModal.tsx b/frontend/pages/hosts/details/cards/Software/SelfService/components/SoftwareUpdateModal/SoftwareUpdateModal.tsx index a50e20ffa6..6bbfeac447 100644 --- a/frontend/pages/hosts/details/cards/Software/SelfService/components/SoftwareUpdateModal/SoftwareUpdateModal.tsx +++ b/frontend/pages/hosts/details/cards/Software/SelfService/components/SoftwareUpdateModal/SoftwareUpdateModal.tsx @@ -130,7 +130,7 @@ const SoftwareUpdateModal = ({ ) : ( <> - - diff --git a/frontend/pages/hosts/details/cards/Software/SelfService/components/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx b/frontend/pages/hosts/details/cards/Software/SelfService/components/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx index 2b6dd0be0f..5102de94b7 100644 --- a/frontend/pages/hosts/details/cards/Software/SelfService/components/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx +++ b/frontend/pages/hosts/details/cards/Software/SelfService/components/UpdatesCard/UpdateSoftwareItem/UpdateSoftwareItem.tsx @@ -124,7 +124,7 @@ const InstallerStatus = ({ @@ -84,12 +84,12 @@ const User = ({ {canWriteEndUser && ( )} diff --git a/frontend/pages/hosts/details/cards/Vitals/Vitals.tsx b/frontend/pages/hosts/details/cards/Vitals/Vitals.tsx index 6895245ff7..4376a44009 100644 --- a/frontend/pages/hosts/details/cards/Vitals/Vitals.tsx +++ b/frontend/pages/hosts/details/cards/Vitals/Vitals.tsx @@ -643,7 +643,7 @@ const Vitals = ({ {vital.name} - diff --git a/frontend/pages/hosts/details/modals/LocationModal/LocationModal.tsx b/frontend/pages/hosts/details/modals/LocationModal/LocationModal.tsx index 749b5dde38..81b94e7b2d 100644 --- a/frontend/pages/hosts/details/modals/LocationModal/LocationModal.tsx +++ b/frontend/pages/hosts/details/modals/LocationModal/LocationModal.tsx @@ -171,7 +171,7 @@ const LocationModal = ({ - @@ -709,7 +709,7 @@ const NewLabelPage = ({ onClick={() => { router.goBack(); }} - variant="inverse" + variant="secondary" disabled={isUpdating} > Cancel diff --git a/frontend/pages/labels/components/DynamicLabelForm/DynamicLabelForm.tsx b/frontend/pages/labels/components/DynamicLabelForm/DynamicLabelForm.tsx index 7f5c57d211..5547e8bd39 100644 --- a/frontend/pages/labels/components/DynamicLabelForm/DynamicLabelForm.tsx +++ b/frontend/pages/labels/components/DynamicLabelForm/DynamicLabelForm.tsx @@ -84,7 +84,7 @@ const DynamicLabelForm = ({ } return ( - diff --git a/frontend/pages/labels/components/LabelForm/LabelForm.tsx b/frontend/pages/labels/components/LabelForm/LabelForm.tsx index cc5efea3e9..241133d08f 100644 --- a/frontend/pages/labels/components/LabelForm/LabelForm.tsx +++ b/frontend/pages/labels/components/LabelForm/LabelForm.tsx @@ -183,7 +183,7 @@ const LabelForm = ({ )} /> - diff --git a/frontend/pages/labels/components/ManualLabelForm/LabelHostTargetTableConfig.tsx b/frontend/pages/labels/components/ManualLabelForm/LabelHostTargetTableConfig.tsx index 15687afb6a..dd20c67aed 100644 --- a/frontend/pages/labels/components/ManualLabelForm/LabelHostTargetTableConfig.tsx +++ b/frontend/pages/labels/components/ManualLabelForm/LabelHostTargetTableConfig.tsx @@ -26,7 +26,7 @@ export const generateTableHeaders = ( Cell: (cellProps: ITableStringCellProps) => ( diff --git a/frontend/pages/packs/EditPackPage/components/PackQueryEditorModal/PackQueryEditorModal.tsx b/frontend/pages/packs/EditPackPage/components/PackQueryEditorModal/PackQueryEditorModal.tsx index dd0f3d1192..519a2f5b89 100644 --- a/frontend/pages/packs/EditPackPage/components/PackQueryEditorModal/PackQueryEditorModal.tsx +++ b/frontend/pages/packs/EditPackPage/components/PackQueryEditorModal/PackQueryEditorModal.tsx @@ -252,7 +252,7 @@ const PackQueryEditorModal = ({ > {editQuery?.name ? "Save" : "Add query"} - diff --git a/frontend/pages/packs/EditPackPage/components/RemovePackQueryModal/RemovePackQueryModal.tsx b/frontend/pages/packs/EditPackPage/components/RemovePackQueryModal/RemovePackQueryModal.tsx index 545291cdab..918dcea469 100644 --- a/frontend/pages/packs/EditPackPage/components/RemovePackQueryModal/RemovePackQueryModal.tsx +++ b/frontend/pages/packs/EditPackPage/components/RemovePackQueryModal/RemovePackQueryModal.tsx @@ -43,7 +43,7 @@ const RemovePackQueryModal = ({ > Remove - diff --git a/frontend/pages/packs/ManagePacksPage/components/DeletePackModal/DeletePackModal.tsx b/frontend/pages/packs/ManagePacksPage/components/DeletePackModal/DeletePackModal.tsx index 8f87bdec14..8e68bd758b 100644 --- a/frontend/pages/packs/ManagePacksPage/components/DeletePackModal/DeletePackModal.tsx +++ b/frontend/pages/packs/ManagePacksPage/components/DeletePackModal/DeletePackModal.tsx @@ -35,7 +35,7 @@ const DeletePackModal = ({ > Delete - diff --git a/frontend/pages/packs/ManagePacksPage/components/PacksTable/PacksTable.tsx b/frontend/pages/packs/ManagePacksPage/components/PacksTable/PacksTable.tsx index 2d6ce5258c..0889ff1f8f 100644 --- a/frontend/pages/packs/ManagePacksPage/components/PacksTable/PacksTable.tsx +++ b/frontend/pages/packs/ManagePacksPage/components/PacksTable/PacksTable.tsx @@ -88,14 +88,14 @@ const PacksTable = ({ name: "enable", onClick: onEnablePackClick, buttonText: "Enable", - variant: "inverse", + variant: "secondary", iconSvg: "check", }, { name: "disable", onClick: onDisablePackClick, buttonText: "Disable", - variant: "inverse", + variant: "secondary", iconSvg: "disable", }, ]; @@ -123,7 +123,7 @@ const PacksTable = ({ name: "delete pack", buttonText: "Delete", iconSvg: "trash", - variant: "inverse", + variant: "secondary", onClick: onDeletePackClick, }} renderCount={renderPackCount} diff --git a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/AutomationsModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/AutomationsModal.tsx index 0507ead721..bcc933592b 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/AutomationsModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/AutomationsModal.tsx @@ -251,7 +251,7 @@ const AutomationsModal = ({ <> - diff --git a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/CalendarEventsModal/CalendarEventsModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/CalendarEventsModal/CalendarEventsModal.tsx index 247af5332e..463fbf0665 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/CalendarEventsModal/CalendarEventsModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/CalendarEventsModal/CalendarEventsModal.tsx @@ -195,6 +195,7 @@ const CalendarEventsModal = forwardRef< showText="Example payload" caretPosition="after" onClick={() => setShowExamplePayload(!showExamplePayload)} + variant="secondary" /> {showExamplePayload && renderExamplePayload()} diff --git a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/OtherWorkflowsModal/OtherWorkflowsModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/OtherWorkflowsModal/OtherWorkflowsModal.tsx index 5fe021aa3d..4cf2c27c48 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/OtherWorkflowsModal/OtherWorkflowsModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/AutomationsModal/components/OtherWorkflowsModal/OtherWorkflowsModal.tsx @@ -269,6 +269,7 @@ const OtherWorkflowsModal = forwardRef< showText="Show example ticket" caretPosition="after" onClick={() => setShowExampleTicket(!showExampleTicket)} + variant="secondary" /> {showExampleTicket && ( setShowExamplePayload(!showExamplePayload)} + variant="secondary" /> {showExamplePayload && } diff --git a/frontend/pages/policies/ManagePoliciesPage/components/DeletePoliciesModal/DeletePoliciesModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/DeletePoliciesModal/DeletePoliciesModal.tsx index fb0f5b1150..b82f4633c3 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/DeletePoliciesModal/DeletePoliciesModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/DeletePoliciesModal/DeletePoliciesModal.tsx @@ -36,7 +36,7 @@ const DeletePoliciesModal = ({ > Delete - diff --git a/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/ManageAutomationsModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/ManageAutomationsModal.tsx index 2951ba18a9..b929fca2d0 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/ManageAutomationsModal.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/ManageAutomationsModal.tsx @@ -139,7 +139,7 @@ const ManageAutomationsModal = ({ - diff --git a/frontend/pages/policies/ManagePoliciesPage/components/PoliciesPaginatedList/PoliciesPaginatedList.tsx b/frontend/pages/policies/ManagePoliciesPage/components/PoliciesPaginatedList/PoliciesPaginatedList.tsx index c6f6500358..96c5db2fd4 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/PoliciesPaginatedList/PoliciesPaginatedList.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/PoliciesPaginatedList/PoliciesPaginatedList.tsx @@ -323,7 +323,7 @@ function PoliciesPaginatedList( )} /> - diff --git a/frontend/pages/policies/ManagePoliciesPage/components/PoliciesTable/PoliciesTable.tsx b/frontend/pages/policies/ManagePoliciesPage/components/PoliciesTable/PoliciesTable.tsx index bea62a7246..bd66c50d35 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/PoliciesTable/PoliciesTable.tsx +++ b/frontend/pages/policies/ManagePoliciesPage/components/PoliciesTable/PoliciesTable.tsx @@ -240,7 +240,7 @@ const PoliciesTable = ({ name: "delete policy", buttonText: "Delete", iconSvg: "trash", - variant: "inverse", + variant: "secondary", onClick: onDeletePoliciesClick, }} emptyComponent={() => ( diff --git a/frontend/pages/policies/components/PatchAutomationCta/PatchAutomationCta.tsx b/frontend/pages/policies/components/PatchAutomationCta/PatchAutomationCta.tsx index 1b494c754e..909569221a 100644 --- a/frontend/pages/policies/components/PatchAutomationCta/PatchAutomationCta.tsx +++ b/frontend/pages/policies/components/PatchAutomationCta/PatchAutomationCta.tsx @@ -53,7 +53,7 @@ const PatchAutomationCta = ({ renderChildren={(disableChildren) => ( {canRunPolicy && ( {onResetPolicy && ( diff --git a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTableConfig.tsx b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTableConfig.tsx index 0ffd59af3d..e11bcb18c5 100644 --- a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTableConfig.tsx +++ b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTableConfig.tsx @@ -94,7 +94,7 @@ const generateColumnConfigs = ( return ( - diff --git a/frontend/pages/policies/edit/components/PolicyErrorsTable/PolicyErrorsTable.tsx b/frontend/pages/policies/edit/components/PolicyErrorsTable/PolicyErrorsTable.tsx index 92ca0c8597..e5b82c78e3 100644 --- a/frontend/pages/policies/edit/components/PolicyErrorsTable/PolicyErrorsTable.tsx +++ b/frontend/pages/policies/edit/components/PolicyErrorsTable/PolicyErrorsTable.tsx @@ -41,7 +41,7 @@ const PolicyErrorsTable = ({ name: "delete policy", buttonText: "Delete", iconSvg: "trash", - variant: "inverse", + variant: "secondary", }} emptyComponent={() => } onQueryChange={noop} diff --git a/frontend/pages/policies/edit/components/PolicyForm/PolicyForm.tsx b/frontend/pages/policies/edit/components/PolicyForm/PolicyForm.tsx index b2329ee9f5..07fd52d86a 100644 --- a/frontend/pages/policies/edit/components/PolicyForm/PolicyForm.tsx +++ b/frontend/pages/policies/edit/components/PolicyForm/PolicyForm.tsx @@ -490,7 +490,7 @@ const PolicyForm = ({ return (
{showOpenSchemaActionText && ( - diff --git a/frontend/pages/policies/edit/components/PolicyResults/PolicyResults.tsx b/frontend/pages/policies/edit/components/PolicyResults/PolicyResults.tsx index 762364795f..49241bd402 100644 --- a/frontend/pages/policies/edit/components/PolicyResults/PolicyResults.tsx +++ b/frontend/pages/policies/edit/components/PolicyResults/PolicyResults.tsx @@ -113,7 +113,7 @@ const PolicyResults = ({ diff --git a/frontend/pages/queries/ManageQueriesPage/components/DeleteQueryModal/DeleteQueryModal.tsx b/frontend/pages/queries/ManageQueriesPage/components/DeleteQueryModal/DeleteQueryModal.tsx index 7d8e8011ca..fa3a1af5ef 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/DeleteQueryModal/DeleteQueryModal.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/DeleteQueryModal/DeleteQueryModal.tsx @@ -35,7 +35,7 @@ const DeleteQueryModal = ({ > Delete -
diff --git a/frontend/pages/queries/ManageQueriesPage/components/ManageQueryAutomationsModal/ManageQueryAutomationsModal.tsx b/frontend/pages/queries/ManageQueriesPage/components/ManageQueryAutomationsModal/ManageQueryAutomationsModal.tsx index ff53abe508..e57eb55ca8 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/ManageQueryAutomationsModal/ManageQueryAutomationsModal.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/ManageQueryAutomationsModal/ManageQueryAutomationsModal.tsx @@ -226,7 +226,7 @@ const ManageQueryAutomationsModal = ({ )} /> - diff --git a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx index fa841e05cf..9d23485766 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx @@ -298,7 +298,7 @@ const QueriesTable = ({ name: "delete reports", buttonText: "Delete", iconSvg: "trash", - variant: "inverse", + variant: "secondary", onClick: onDeleteQueryClick, }} emptyComponent={() => } diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx index 0067cecf20..53c6ee7d1b 100644 --- a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx @@ -265,7 +265,7 @@ const QueryDetailsPage = ({ @@ -283,7 +283,7 @@ const QueryDetailsPage = ({
diff --git a/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/ConfirmSaveChangesModal.tsx b/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/ConfirmSaveChangesModal.tsx index e45bcd1a4b..85acd59790 100644 --- a/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/ConfirmSaveChangesModal.tsx +++ b/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/ConfirmSaveChangesModal.tsx @@ -36,7 +36,7 @@ const ConfirmSaveChangesModal = ({ > Save - diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx index 46c3d550ad..815602a2c9 100644 --- a/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx +++ b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx @@ -54,10 +54,9 @@ const DiscardDataOption = ({ e.preventDefault(); setForceEditDiscardData(true); }} - variant="text-icon" + variant="subdued" size="small" className={`${baseClass}__edit-anyway`} - iconStroke > <> Edit anyway diff --git a/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx index 14aef22bff..6b98d0fabe 100644 --- a/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx +++ b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx @@ -435,7 +435,7 @@ const EditQueryForm = ({ } return ( - - diff --git a/frontend/pages/queries/edit/components/SaveNewQueryModal/SaveNewQueryModal.tsx b/frontend/pages/queries/edit/components/SaveNewQueryModal/SaveNewQueryModal.tsx index 3f4ab2daac..692e163974 100644 --- a/frontend/pages/queries/edit/components/SaveNewQueryModal/SaveNewQueryModal.tsx +++ b/frontend/pages/queries/edit/components/SaveNewQueryModal/SaveNewQueryModal.tsx @@ -340,6 +340,7 @@ const SaveNewQueryModal = ({ showText="Advanced options" caretPosition="after" onClick={toggleAdvancedOptions} + variant="secondary" /> {showAdvancedOptions && ( <> @@ -381,7 +382,7 @@ const SaveNewQueryModal = ({ > Save - diff --git a/frontend/styles/global/_global.scss b/frontend/styles/global/_global.scss index 0240c478bf..a0e40b1ef9 100644 --- a/frontend/styles/global/_global.scss +++ b/frontend/styles/global/_global.scss @@ -149,7 +149,7 @@ form, } // Override button width to auto unless icon-only or wide buttons which has fixed widths - .button:not(.button--icon):not(.button--icon__small):not(.button__wide) { + .button:not(.button--icon):not(.button--icon__small):not(.button__wide):not(.button--icon-only) { width: auto; } @@ -325,7 +325,9 @@ body.dark-mode .site-nav-item:not(.dup-org-logo):hover { body.dark-mode .card .button--inverse:hover, body.dark-mode .card .button--inverse-alert:hover, body.dark-mode .card .button--text-icon:hover, -body.dark-mode .card .button--icon:hover { +body.dark-mode .card .button--icon:hover, +body.dark-mode .card .button--secondary:hover, +body.dark-mode .card .button--subdued:hover { background-color: $core-fleet-white; } @@ -334,7 +336,9 @@ body.dark-mode .card .button--icon:hover { body.dark-mode .modal__modal_container .button--inverse:hover, body.dark-mode .modal__modal_container .button--inverse-alert:hover, body.dark-mode .modal__modal_container .button--text-icon:hover, -body.dark-mode .modal__modal_container .button--icon:hover { +body.dark-mode .modal__modal_container .button--icon:hover, +body.dark-mode .modal__modal_container .button--secondary:hover, +body.dark-mode .modal__modal_container .button--subdued:hover { background-color: $ui-fleet-black-5; } diff --git a/frontend/styles/var/colors.scss b/frontend/styles/var/colors.scss index f5be7f7326..11618e583a 100644 --- a/frontend/styles/var/colors.scss +++ b/frontend/styles/var/colors.scss @@ -106,10 +106,6 @@ --core-fleet-black-overlay-40: rgba(25, 33, 71, 0.4); --core-fleet-black-overlay-05: rgba(25, 33, 71, 0.05); --loading-overlay: rgba(255, 255, 255, 0.8); - - // Dropdown menu outline — transparent in light mode (drop-shadow alone is - // enough); a 1px gray ring in dark mode where the shadow disappears. - --dropdown-menu-outline: transparent; } // --------------------------------------------------------------------------- @@ -213,8 +209,6 @@ body.dark-mode { --core-fleet-black-overlay-40: rgba(0, 0, 0, 0.6); --core-fleet-black-overlay-05: rgba(226, 228, 234, 0.06); --loading-overlay: rgba(24, 26, 31, 0.8); - - --dropdown-menu-outline: var(--ui-fleet-black-10); } // ============================================================================= diff --git a/frontend/styles/var/mixins.scss b/frontend/styles/var/mixins.scss index 7b4e661a53..bc834af172 100644 --- a/frontend/styles/var/mixins.scss +++ b/frontend/styles/var/mixins.scss @@ -182,30 +182,6 @@ $max-width: 2560px; max-width: $max-width; } -@mixin bordered-icon-button { - display: flex; - align-items: center; - justify-content: center; - width: 36px; - height: 36px; - border: 1px solid $ui-fleet-black-10; - border-radius: $border-radius; - background-color: $core-fleet-white; - cursor: pointer; - padding: 0; - color: $core-fleet-black; - transition: border-color 100ms; - - &:hover:not(:disabled) { - border-color: $ui-fleet-black-75-over; - } - - &:focus-visible { - outline: 2px solid $ui-fleet-black-75-down; - outline-offset: 1px; - } -} - @mixin color-contrasted-sections { .section { display: flex; @@ -261,6 +237,12 @@ $max-width: 2560px; gap: $pad-medium; } +@mixin flex-column-8px-gap { + display: flex; + flex-direction: column; + gap: $pad-small; +} + @mixin vertical-form-layout { @include flex-column-24px-gap; }