pixelize-design-library 2.4.2-beta.62 → 2.4.2-beta.64
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/CHANGELOG.md +122 -2
- package/COMPONENT-GOTCHAS.md +51 -9
- package/DESIGN-GUIDE.md +13 -5
- package/dist/Components/Button/Button.styles.js +58 -23
- package/dist/Components/Card/CardProps.d.ts +2 -2
- package/dist/Components/ConfirmDialog/ConfirmDialog.js +2 -1
- package/dist/Components/CustomModulesTable/CustomModulesTable.js +6 -4
- package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -1
- package/dist/Components/DatePicker/RangeDatePicker.js +2 -1
- package/dist/Components/DatePicker/SingleDatePicker.js +2 -1
- package/dist/Components/DatePicker/TimeOnlyPicker.js +2 -1
- package/dist/Components/DatePicker/dayStates.js +2 -1
- package/dist/Components/Drawer/Drawer.js +2 -1
- package/dist/Components/Dropdown/DropDown.js +4 -10
- package/dist/Components/FilePreview/FilePreview.js +2 -1
- package/dist/Components/FileUpload/FileUpload.js +9 -2
- package/dist/Components/FileUploader/FileUploader.js +4 -0
- package/dist/Components/FileUploader/FileUploaderProps.d.ts +1 -1
- package/dist/Components/FilterSidebar/FilterSidebar.js +7 -4
- package/dist/Components/Input/TextInput.styles.js +10 -6
- package/dist/Components/KanbanBoard/AccountCard.js +4 -2
- package/dist/Components/KanbanBoard/KanbanBoard.js +6 -5
- package/dist/Components/NavigationBar/NavigationBar.js +5 -3
- package/dist/Components/Notification/Notification.js +4 -3
- package/dist/Components/NotificationBell/NotificationPanel.js +4 -3
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +2 -4
- package/dist/Components/OrganizationDetails/CreateOrgModal.js +2 -1
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +5 -3
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +12 -7
- package/dist/Components/ScrollToTop/ScrollToTop.js +4 -3
- package/dist/Components/SearchSelect/SearchSelect.js +44 -35
- package/dist/Components/SearchSelect/searchSelectNav.d.ts +13 -0
- package/dist/Components/SearchSelect/searchSelectNav.js +40 -0
- package/dist/Components/Select/SelectPopup.js +3 -4
- package/dist/Components/Select/optionRowInk.d.ts +12 -0
- package/dist/Components/Select/optionRowInk.js +10 -1
- package/dist/Components/SelectSearch/SelectSearch.js +3 -11
- package/dist/Components/SettingRow/SettingRow.js +2 -1
- package/dist/Components/SettingRow/SettingsSection.js +2 -1
- package/dist/Components/SideBar/SecondaryBar.js +4 -3
- package/dist/Components/SideBar/SideBar.js +16 -13
- package/dist/Components/SideBar/SideBarProps.d.ts +1 -1
- package/dist/Components/SideBar/components/MenuItemBox.js +7 -4
- package/dist/Components/SideBar/components/MenuPopoverContent.js +2 -1
- package/dist/Components/SideBar/components/OtherApps.js +2 -1
- package/dist/Components/SideBar/components/PinnedSection.js +7 -4
- package/dist/Components/SideBar/sidebarMotion.d.ts +2 -0
- package/dist/Components/SideBar/sidebarMotion.js +6 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.js +6 -4
- package/dist/Components/StageProgress/StageItem.js +5 -2
- package/dist/Components/StageProgress/StepperStage.js +2 -2
- package/dist/Components/StatCard/StatCard.js +2 -1
- package/dist/Components/Table/Table.js +9 -4
- package/dist/Components/Table/TableProps.d.ts +1 -1
- package/dist/Components/Table/components/TableActions.js +3 -2
- package/dist/Components/Table/components/TableBody.js +9 -1
- package/dist/Components/Table/components/TableHeader.js +7 -2
- package/dist/Components/Table/components/TableLoading.d.ts +4 -1
- package/dist/Components/Table/components/TableLoading.js +6 -5
- package/dist/Components/Table/filters/CompactSelect.js +3 -11
- package/dist/Components/Table/settings/TableSettings.js +7 -2
- package/dist/Components/Table/variants/TableVariantContext.d.ts +1 -1
- package/dist/Components/Table/variants/TableVariantContext.js +3 -3
- package/dist/Components/Table/variants/classic.js +3 -2
- package/dist/Components/Timeline/Timeline.js +11 -4
- package/dist/Components/Toaster/Toaster.js +19 -8
- package/dist/Components/Toggle/TableToggle.js +5 -2
- package/dist/Components/UserDetails/AddUserModal.js +2 -1
- package/dist/Components/UserDetails/ChangeRoleModal.js +2 -1
- package/dist/Components/UserDetails/UserDetails.js +3 -1
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +4 -0
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -2
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +25 -18
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +38 -2
- package/dist/Theme/chakra/Card.styles.d.ts +7 -1
- package/dist/Theme/chakra/Card.styles.js +4 -1
- package/dist/Theme/chakra/Menu.styles.d.ts +11 -5
- package/dist/Theme/chakra/Menu.styles.js +10 -0
- package/dist/Theme/chakra/Popover.styles.d.ts +2 -11
- package/dist/Theme/chakra/Popover.styles.js +2 -0
- package/dist/Theme/chakra/common.web.d.ts +4 -0
- package/dist/Theme/chakra/componentStyles.d.ts +19 -3
- package/dist/Theme/chakra/componentStyles.js +12 -8
- package/dist/Theme/chakra/motion.d.ts +1 -0
- package/dist/Theme/chakra/motion.js +2 -1
- package/dist/Theme/chakra/overlay.styles.d.ts +5 -0
- package/dist/Theme/chakra/overlay.styles.js +4 -1
- package/dist/Theme/themeProps.d.ts +4 -0
- package/dist/Theme/tokens/brands/index.d.ts +1 -0
- package/dist/Theme/tokens/brands/index.js +17 -1
- package/dist/Theme/tokens/brands/radiant/palette.light.js +15 -0
- package/dist/Theme/tokens/brands/rosewood/palette.light.js +10 -10
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +7 -29
- package/dist/Theme/tokens/brands/zinc/palette.dark.js +3 -35
- package/dist/Theme/tokens/builders/accentText.d.ts +2 -0
- package/dist/Theme/tokens/builders/accentText.js +7 -1
- package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +6 -1
- package/dist/Theme/tokens/builders/buildDarkPalette.js +37 -8
- package/dist/Theme/tokens/builders/filledSurface.d.ts +5 -1
- package/dist/Theme/tokens/builders/filledSurface.js +17 -4
- package/dist/Theme/tokens/builders/mutedText.d.ts +1 -1
- package/dist/Theme/tokens/builders/mutedText.js +13 -3
- package/dist/Theme/tokens/builders/planeStep.d.ts +5 -0
- package/dist/Theme/tokens/builders/planeStep.js +21 -0
- package/dist/Theme/tokens/builders/planes.d.ts +4 -0
- package/dist/Theme/tokens/builders/planes.js +33 -0
- package/dist/Theme/tokens/builders/skeletonShimmer.d.ts +9 -0
- package/dist/Theme/tokens/builders/skeletonShimmer.js +25 -0
- package/dist/Theme/tokens/builders/surfaceRaised.d.ts +3 -1
- package/dist/Theme/tokens/builders/surfaceRaised.js +18 -8
- package/dist/Theme/tokens/builders/surfaceRungs.js +3 -1
- package/dist/Theme/tokens/primitives/index.d.ts +2 -2
- package/dist/Theme/tokens/primitives/index.js +4 -1
- package/dist/Theme/tokens/primitives/motion.d.ts +1 -0
- package/dist/Theme/tokens/primitives/motion.js +2 -1
- package/dist/Theme/tokens/primitives/shadows.d.ts +16 -0
- package/dist/Theme/tokens/primitives/shadows.js +56 -6
- package/dist/Theme/tokens/primitives/typography.js +1 -1
- package/dist/Utils/table.js +2 -2
- package/dist/esm/Components/Button/Button.styles.js +62 -27
- package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +2 -1
- package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +6 -4
- package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +2 -1
- package/dist/esm/Components/DatePicker/RangeDatePicker.js +2 -1
- package/dist/esm/Components/DatePicker/SingleDatePicker.js +2 -1
- package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +2 -1
- package/dist/esm/Components/DatePicker/dayStates.js +2 -1
- package/dist/esm/Components/Drawer/Drawer.js +2 -1
- package/dist/esm/Components/Dropdown/DropDown.js +4 -10
- package/dist/esm/Components/FilePreview/FilePreview.js +3 -2
- package/dist/esm/Components/FileUpload/FileUpload.js +10 -3
- package/dist/esm/Components/FileUploader/FileUploader.js +4 -0
- package/dist/esm/Components/FilterSidebar/FilterSidebar.js +7 -4
- package/dist/esm/Components/Input/TextInput.styles.js +10 -6
- package/dist/esm/Components/KanbanBoard/AccountCard.js +4 -2
- package/dist/esm/Components/KanbanBoard/KanbanBoard.js +6 -5
- package/dist/esm/Components/NavigationBar/NavigationBar.js +5 -3
- package/dist/esm/Components/Notification/Notification.js +4 -3
- package/dist/esm/Components/NotificationBell/NotificationPanel.js +4 -3
- package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +2 -4
- package/dist/esm/Components/OrganizationDetails/CreateOrgModal.js +2 -1
- package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +5 -3
- package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +13 -8
- package/dist/esm/Components/ScrollToTop/ScrollToTop.js +5 -4
- package/dist/esm/Components/SearchSelect/SearchSelect.js +46 -37
- package/dist/esm/Components/SearchSelect/searchSelectNav.js +32 -0
- package/dist/esm/Components/Select/SelectPopup.js +4 -5
- package/dist/esm/Components/Select/optionRowInk.js +7 -0
- package/dist/esm/Components/SelectSearch/SelectSearch.js +4 -12
- package/dist/esm/Components/SettingRow/SettingRow.js +2 -1
- package/dist/esm/Components/SettingRow/SettingsSection.js +2 -1
- package/dist/esm/Components/SideBar/SecondaryBar.js +4 -3
- package/dist/esm/Components/SideBar/SideBar.js +17 -14
- package/dist/esm/Components/SideBar/components/MenuItemBox.js +7 -4
- package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +2 -1
- package/dist/esm/Components/SideBar/components/OtherApps.js +2 -1
- package/dist/esm/Components/SideBar/components/PinnedSection.js +7 -4
- package/dist/esm/Components/SideBar/sidebarMotion.js +3 -0
- package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +6 -4
- package/dist/esm/Components/StageProgress/StageItem.js +5 -2
- package/dist/esm/Components/StageProgress/StepperStage.js +2 -2
- package/dist/esm/Components/StatCard/StatCard.js +2 -1
- package/dist/esm/Components/Table/Table.js +12 -7
- package/dist/esm/Components/Table/components/TableActions.js +3 -2
- package/dist/esm/Components/Table/components/TableBody.js +10 -2
- package/dist/esm/Components/Table/components/TableHeader.js +9 -4
- package/dist/esm/Components/Table/components/TableLoading.js +5 -4
- package/dist/esm/Components/Table/filters/CompactSelect.js +4 -12
- package/dist/esm/Components/Table/settings/TableSettings.js +8 -3
- package/dist/esm/Components/Table/variants/TableVariantContext.js +3 -3
- package/dist/esm/Components/Table/variants/classic.js +3 -2
- package/dist/esm/Components/Timeline/Timeline.js +11 -4
- package/dist/esm/Components/Toaster/Toaster.js +20 -9
- package/dist/esm/Components/Toggle/TableToggle.js +5 -2
- package/dist/esm/Components/UserDetails/AddUserModal.js +2 -1
- package/dist/esm/Components/UserDetails/ChangeRoleModal.js +2 -1
- package/dist/esm/Components/UserDetails/UserDetails.js +3 -1
- package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +4 -0
- package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +26 -19
- package/dist/esm/Theme/chakra/Card.styles.js +4 -1
- package/dist/esm/Theme/chakra/Menu.styles.js +10 -0
- package/dist/esm/Theme/chakra/Popover.styles.js +2 -0
- package/dist/esm/Theme/chakra/componentStyles.js +12 -8
- package/dist/esm/Theme/chakra/motion.js +1 -0
- package/dist/esm/Theme/chakra/overlay.styles.js +3 -0
- package/dist/esm/Theme/tokens/brands/index.js +16 -0
- package/dist/esm/Theme/tokens/brands/radiant/palette.light.js +15 -0
- package/dist/esm/Theme/tokens/brands/rosewood/palette.light.js +10 -10
- package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +3 -35
- package/dist/esm/Theme/tokens/builders/accentText.js +5 -0
- package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +38 -9
- package/dist/esm/Theme/tokens/builders/filledSurface.js +18 -5
- package/dist/esm/Theme/tokens/builders/mutedText.js +12 -2
- package/dist/esm/Theme/tokens/builders/planeStep.js +14 -0
- package/dist/esm/Theme/tokens/builders/planes.js +28 -0
- package/dist/esm/Theme/tokens/builders/skeletonShimmer.js +21 -0
- package/dist/esm/Theme/tokens/builders/surfaceRaised.js +16 -7
- package/dist/esm/Theme/tokens/builders/surfaceRungs.js +3 -1
- package/dist/esm/Theme/tokens/primitives/index.js +1 -1
- package/dist/esm/Theme/tokens/primitives/motion.js +1 -0
- package/dist/esm/Theme/tokens/primitives/shadows.js +54 -5
- package/dist/esm/Theme/tokens/primitives/typography.js +1 -1
- package/dist/esm/Utils/table.js +2 -2
- package/dist/esm/index.js +4 -3
- package/dist/index.d.ts +5 -4
- package/dist/index.js +15 -6
- package/package.json +1 -1
|
@@ -44,6 +44,7 @@ const lucide_react_1 = require("lucide-react");
|
|
|
44
44
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
45
45
|
const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
|
|
46
46
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
47
|
+
const planeStep_1 = require("../../Theme/tokens/builders/planeStep");
|
|
47
48
|
const rowStates_1 = require("../../Theme/tokens/builders/rowStates");
|
|
48
49
|
const focusRing_styles_1 = require("../../Theme/chakra/focusRing.styles");
|
|
49
50
|
const EmptyState_1 = __importDefault(require("../EmptyState/EmptyState"));
|
|
@@ -98,6 +99,7 @@ const UserDetails = ({ users, selectedUser, selectedUserId, roleOptions = [], ca
|
|
|
98
99
|
const [actionUserId, setActionUserId] = (0, react_1.useState)(null);
|
|
99
100
|
const border = colors.boxborder[200];
|
|
100
101
|
const surface = colors.background[50];
|
|
102
|
+
const detailTile = (0, planeStep_1.bandOn)(colors.primary[50], surface);
|
|
101
103
|
const rowBackgrounds = (0, react_1.useMemo)(() => (0, rowStates_1.listRowBackgrounds)(colors), [colors]);
|
|
102
104
|
const muted = colors.textMuted;
|
|
103
105
|
const heading = colors.text[900];
|
|
@@ -138,7 +140,7 @@ const UserDetails = ({ users, selectedUser, selectedUserId, roleOptions = [], ca
|
|
|
138
140
|
const Icon = (_a = detail.icon) !== null && _a !== void 0 ? _a : lucide_react_1.UserRound;
|
|
139
141
|
return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { gap: 3, px: 3, py: 2.5, _hover: {
|
|
140
142
|
bg: (0, outlineRung_1.resolveHoverTint)(colors.gray[50], surface),
|
|
141
|
-
}, alignItems: "center", transition: "background 0.15s ease", children: [(0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "30px", bg:
|
|
143
|
+
}, alignItems: "center", transition: "background 0.15s ease", children: [(0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "30px", bg: detailTile, borderRadius: "lg", color: (0, accentText_1.accentTextOnCanvas)(colors.primary, detailTile), flexShrink: 0, children: (0, jsx_runtime_1.jsx)(Icon, { size: 15 }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { minWidth: "110px", children: (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", fontWeight: 600, color: muted, children: detail.label }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { flex: 1, children: (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", color: heading, fontWeight: 500, children: detail.value }) })] }), index < selectedUser.details.length - 1 && ((0, jsx_runtime_1.jsx)(react_2.Divider, { borderColor: border }))] }, index));
|
|
142
144
|
}) })] })] })) : ((0, jsx_runtime_1.jsx)(EmptyState_1.default, { icon: lucide_react_1.UserRound, title: labels.selectTeamMember, description: labels.noUserSelected, minH: "300px" })) })] }), (0, jsx_runtime_1.jsx)(AddUserModal_1.default, { isOpen: isAddUserOpen, onClose: onAddUserClose, roleOptions: roleOptions, isLoading: isAddUserLoading, onSubmit: async (values) => {
|
|
143
145
|
await (onAddUserSubmit === null || onAddUserSubmit === void 0 ? void 0 : onAddUserSubmit(values));
|
|
144
146
|
onAddUserClose();
|
|
@@ -21,7 +21,11 @@ function WorkspaceTrayPreview({ children, preview, enabled = true, openDelayMs =
|
|
|
21
21
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
22
22
|
const openTimer = (0, react_1.useRef)(null);
|
|
23
23
|
const closeTimer = (0, react_1.useRef)(null);
|
|
24
|
+
const openRef = (0, react_1.useRef)(false);
|
|
24
25
|
const setOpenState = (0, react_1.useCallback)((next) => {
|
|
26
|
+
if (openRef.current === next)
|
|
27
|
+
return;
|
|
28
|
+
openRef.current = next;
|
|
25
29
|
setOpen(next);
|
|
26
30
|
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(next);
|
|
27
31
|
}, [onOpenChange]);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { WorkspaceTrayProps, WorkspaceWindowProps } from "./WorkspaceWindowProps";
|
|
2
|
-
export default function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, testId, }: WorkspaceWindowProps): import("react/jsx-runtime").JSX.Element | null;
|
|
3
|
-
export declare function WorkspaceTray({ items, onRestore, onClose, testId, renderItem, }: WorkspaceTrayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
2
|
+
export default function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, labels, finalFocusRef, testId, }: WorkspaceWindowProps): import("react/jsx-runtime").JSX.Element | null;
|
|
3
|
+
export declare function WorkspaceTray({ items, onRestore, onClose, testId, placement, offset, closeLabel, dirtyLabel, label, renderItem, }: WorkspaceTrayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -12,7 +12,7 @@ const lucide_react_1 = require("lucide-react");
|
|
|
12
12
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
13
13
|
const zIndices_1 = __importDefault(require("../../Theme/tokens/primitives/zIndices"));
|
|
14
14
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
15
|
-
// NOTE: no maximize/restore toggle (removed by product decision)
|
|
15
|
+
// NOTE: no maximize/restore toggle (removed by product decision); onMedium/onMaximize stay as deprecated no-ops.
|
|
16
16
|
const WINDOW_SIZE = { maxW: "88rem", h: "92vh" };
|
|
17
17
|
const WindowTitle = ({ testId, color, children }) => {
|
|
18
18
|
const { headerId, setHeaderMounted } = (0, react_1.useModalContext)();
|
|
@@ -23,7 +23,8 @@ const WindowTitle = ({ testId, color, children }) => {
|
|
|
23
23
|
return ((0, jsx_runtime_1.jsx)(react_1.Text, { id: headerId, fontSize: "sm", fontWeight: 600, color: color, noOfLines: 1, "data-testid": `${testId}-title`, children: children }));
|
|
24
24
|
};
|
|
25
25
|
// Presentational floating "workspace window" (Jira-style dialog), headless — the parent owns window state.
|
|
26
|
-
function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, testId = "workspace-window", }) {
|
|
26
|
+
function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, labels, finalFocusRef, testId = "workspace-window", }) {
|
|
27
|
+
var _a, _b, _c;
|
|
27
28
|
// Must run before the early return: a minimized render would otherwise skip the hook
|
|
28
29
|
// and change hook order when the window reopens.
|
|
29
30
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
@@ -33,28 +34,34 @@ function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFu
|
|
|
33
34
|
return ((0, jsx_runtime_1.jsxs)(react_1.Modal, { isOpen: true, onClose: () => onClose === null || onClose === void 0 ? void 0 : onClose(), size: "full", isCentered: true, scrollBehavior: "inside",
|
|
34
35
|
// Don't discard unsaved work on an accidental overlay click / Esc — the
|
|
35
36
|
// parent decides via the explicit Close control.
|
|
36
|
-
closeOnOverlayClick: false, closeOnEsc: false, children: [(0, jsx_runtime_1.jsx)(react_1.ModalOverlay, { backdropFilter: "blur(3px)" }), (0, jsx_runtime_1.jsx)(react_1.ModalContent, { bg: "transparent", boxShadow: "none", m: 0, display: "flex", alignItems: "center", justifyContent: "center",
|
|
37
|
+
closeOnOverlayClick: false, closeOnEsc: false, finalFocusRef: finalFocusRef, children: [(0, jsx_runtime_1.jsx)(react_1.ModalOverlay, { backdropFilter: "blur(3px)" }), (0, jsx_runtime_1.jsx)(react_1.ModalContent, { bg: "transparent", boxShadow: "none", m: 0, display: "flex", alignItems: "center", justifyContent: "center",
|
|
37
38
|
// NOTE: size="full" blocks Chakra's own closeOnOverlayClick — detect the outside click ourselves instead.
|
|
38
39
|
onMouseDown: (e) => {
|
|
39
40
|
if (e.target === e.currentTarget)
|
|
40
41
|
onOverlayClick === null || onOverlayClick === void 0 ? void 0 : onOverlayClick();
|
|
41
|
-
}, "data-testid": `${testId}-backdrop`, children: (0, jsx_runtime_1.jsxs)(react_1.Box, { bg: theme.colors.surfaceRaised, borderRadius: "xl", boxShadow: "2xl", overflow: "hidden", w: "100%", maxW: size.maxW, h: size.h, display: "flex", flexDirection: "column", "data-testid": testId, "data-window-state": state, children: [(0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", justify: "space-between", px: 3, py: 2, borderBottomWidth: "1px", borderColor: theme.colors.boxborder[200], bg: theme.colors.background[100], flexShrink: 0, children: [(0, jsx_runtime_1.jsx)(WindowTitle, { testId: testId, color: theme.colors.text[700], children: title }), (0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 1, children: [headerActions, onOpenFullPage ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": "Open full page", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ExternalLink, { size: 14 }), onClick: onOpenFullPage, "data-testid": `${testId}-fullpage` })) : null, onMinimize ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": "Minimize", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Minus, { size: 15 }), onClick: onMinimize, "data-testid": `${testId}-minimize` })) : null, onClose ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": "Close", size: "xs", variant: "ghost", colorScheme: "red", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 15 }), onClick: onClose, "data-testid": `${testId}-close` })) : null] })] }), (0, jsx_runtime_1.jsx)(react_1.Box, { flex: "1", overflow: "auto", px: { base: 3, md: 5 }, py: 4, children: children })] }) })] }));
|
|
42
|
+
}, "data-testid": `${testId}-backdrop`, children: (0, jsx_runtime_1.jsxs)(react_1.Box, { bg: theme.colors.surfaceRaised, borderRadius: "xl", boxShadow: "2xl", overflow: "hidden", w: "100%", maxW: size.maxW, h: size.h, display: "flex", flexDirection: "column", "data-testid": testId, "data-window-state": state, children: [(0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", justify: "space-between", px: 3, py: 2, borderBottomWidth: "1px", borderColor: theme.colors.boxborder[200], bg: theme.colors.background[100], flexShrink: 0, children: [(0, jsx_runtime_1.jsx)(WindowTitle, { testId: testId, color: theme.colors.text[700], children: title }), (0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 1, children: [headerActions, onOpenFullPage ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_a = labels === null || labels === void 0 ? void 0 : labels.openFullPage) !== null && _a !== void 0 ? _a : "Open full page", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ExternalLink, { size: 14 }), onClick: onOpenFullPage, "data-testid": `${testId}-fullpage` })) : null, onMinimize ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_b = labels === null || labels === void 0 ? void 0 : labels.minimize) !== null && _b !== void 0 ? _b : "Minimize", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Minus, { size: 15 }), onClick: onMinimize, "data-testid": `${testId}-minimize` })) : null, onClose ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_c = labels === null || labels === void 0 ? void 0 : labels.close) !== null && _c !== void 0 ? _c : "Close", size: "xs", variant: "ghost", colorScheme: "red", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 15 }), onClick: onClose, "data-testid": `${testId}-close` })) : null] })] }), (0, jsx_runtime_1.jsx)(react_1.Box, { flex: "1", overflow: "auto", px: { base: 3, md: 5 }, py: 4, children: children })] }) })] }));
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const cssLength = (value) => (typeof value === "number" ? `${value}px` : value);
|
|
45
|
+
// Portalled above modal overlays; aria-live keeps Chakra's modal aria-hidden off it, data-no-focus-lock keeps the focus trap off it.
|
|
46
|
+
function WorkspaceTray({ items, onRestore, onClose, testId = "workspace-tray", placement = "bottom-end", offset, closeLabel, dirtyLabel = "Unsaved changes", label = "Minimized windows", renderItem, }) {
|
|
47
|
+
var _a, _b;
|
|
45
48
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
46
49
|
if (!items.length)
|
|
47
50
|
return null;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
const atEnd = placement === "bottom-end";
|
|
52
|
+
const inset = {
|
|
53
|
+
bottom: cssLength((_a = offset === null || offset === void 0 ? void 0 : offset.y) !== null && _a !== void 0 ? _a : "1rem"),
|
|
54
|
+
[atEnd ? "right" : "left"]: cssLength((_b = offset === null || offset === void 0 ? void 0 : offset.x) !== null && _b !== void 0 ? _b : "1rem"),
|
|
55
|
+
};
|
|
56
|
+
const ink = (0, accentText_1.accentTextOnCanvas)(theme.colors.primary, theme.colors.primary[100]);
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)(react_1.Portal, { children: (0, jsx_runtime_1.jsx)(react_1.Flex, { role: "region", "aria-label": label, "aria-live": "polite", "data-no-focus-lock": "true", position: "fixed", ...inset, zIndex: zIndices_1.default.modal + 1, direction: atEnd ? "row-reverse" : "row", wrap: "wrap-reverse", justify: "flex-start", gap: 2, maxW: { base: "calc(100vw - 2rem)", md: "36rem" }, "data-testid": testId, children: items.map((item) => {
|
|
58
|
+
const api = {
|
|
59
|
+
restore: () => onRestore === null || onRestore === void 0 ? void 0 : onRestore(item.id),
|
|
60
|
+
close: () => onClose === null || onClose === void 0 ? void 0 : onClose(item.id),
|
|
61
|
+
};
|
|
62
|
+
if (renderItem) {
|
|
63
|
+
return (0, jsx_runtime_1.jsx)(react_1.Box, { children: renderItem(item, api) }, item.id);
|
|
64
|
+
}
|
|
65
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 1, pl: 3, pr: 1, py: 1, borderRadius: "full", bg: theme.colors.primary[100], color: ink, boxShadow: "md", borderWidth: "1px", borderColor: theme.colors.primary[200], "data-testid": `${testId}-pill`, children: [item.isDirty ? ((0, jsx_runtime_1.jsx)(react_1.Box, { role: "img", "aria-label": dirtyLabel, boxSize: "0.5rem", borderRadius: "full", bg: "currentColor", flexShrink: 0, "data-testid": `${testId}-dirty` })) : null, (0, jsx_runtime_1.jsxs)(react_1.Box, { as: "button", type: "button", fontSize: "sm", onClick: api.restore, "data-testid": `${testId}-restore`, maxW: "16rem", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: [item.title, item.subtitle ? ((0, jsx_runtime_1.jsx)(react_1.Box, { as: "span", fontWeight: 400, ml: 1.5, children: item.subtitle })) : null] }), onClose ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": closeLabel ? closeLabel(item) : "Close", size: "xs", variant: "ghost", borderRadius: "full", minW: "auto", h: "auto", p: 1, color: "inherit", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 13 }), onClick: api.close, "data-testid": `${testId}-close` })) : null] }, item.id));
|
|
66
|
+
}) }) }));
|
|
60
67
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
1
|
+
import type { ReactNode, RefObject } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* Window state for a WorkspaceWindow.
|
|
4
4
|
* - "medium": default centered dialog (Jira-style)
|
|
@@ -6,6 +6,15 @@ import type { ReactNode } from "react";
|
|
|
6
6
|
* - "minimized": collapsed to a tray pill (rendered by WorkspaceTray, not the window)
|
|
7
7
|
*/
|
|
8
8
|
export type WorkspaceWindowState = "medium" | "maximized" | "minimized";
|
|
9
|
+
/** Accessible names of the window's icon controls; omitted keys keep the English default. */
|
|
10
|
+
export interface WorkspaceWindowLabels {
|
|
11
|
+
/** Default "Minimize". */
|
|
12
|
+
minimize?: string;
|
|
13
|
+
/** Default "Close". */
|
|
14
|
+
close?: string;
|
|
15
|
+
/** Default "Open full page". */
|
|
16
|
+
openFullPage?: string;
|
|
17
|
+
}
|
|
9
18
|
/** Props for one WorkspaceWindow instance; minimized windows render separately via WorkspaceTrayProps below. */
|
|
10
19
|
export interface WorkspaceWindowProps {
|
|
11
20
|
/** Title shown in the window's control bar. */
|
|
@@ -29,6 +38,13 @@ export interface WorkspaceWindowProps {
|
|
|
29
38
|
* itself (e.g. minimize-on-backdrop-click) via this callback.
|
|
30
39
|
*/
|
|
31
40
|
onOverlayClick?: () => void;
|
|
41
|
+
/** Translated names for the Minimize, Close and Open full page buttons. */
|
|
42
|
+
labels?: WorkspaceWindowLabels;
|
|
43
|
+
/**
|
|
44
|
+
* Where focus lands when the window closes or minimizes. Without it focus returns to whatever opened the
|
|
45
|
+
* window, which is gone once it was restored from the tray; point it at a stable element (e.g. the page's main region).
|
|
46
|
+
*/
|
|
47
|
+
finalFocusRef?: RefObject<HTMLElement>;
|
|
32
48
|
/** Extra controls rendered in the control bar, left of the window buttons. */
|
|
33
49
|
headerActions?: ReactNode;
|
|
34
50
|
/** data-testid for the window container. */
|
|
@@ -38,14 +54,34 @@ export interface WorkspaceWindowProps {
|
|
|
38
54
|
export interface WorkspaceTrayItem {
|
|
39
55
|
id: string;
|
|
40
56
|
title: ReactNode;
|
|
57
|
+
/** Shows an unsaved-changes dot on the built-in pill; named for screen readers by the tray's `dirtyLabel`. */
|
|
58
|
+
isDirty?: boolean;
|
|
59
|
+
/** Secondary text after the title on the built-in pill, e.g. a record type or id. */
|
|
60
|
+
subtitle?: ReactNode;
|
|
41
61
|
}
|
|
42
|
-
/** Props for the
|
|
62
|
+
/** Props for the cluster of minimized-window pills; renders nothing when items is empty. */
|
|
43
63
|
export interface WorkspaceTrayProps {
|
|
44
64
|
/** Minimized items rendered as restore pills along the bottom. */
|
|
45
65
|
items: WorkspaceTrayItem[];
|
|
46
66
|
onRestore?: (id: string) => void;
|
|
47
67
|
onClose?: (id: string) => void;
|
|
48
68
|
testId?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Which bottom corner the tray sits in. Default "bottom-end". The tray is portalled above modals and stays
|
|
71
|
+
* reachable while a modal is open.
|
|
72
|
+
*/
|
|
73
|
+
placement?: "bottom-end" | "bottom-start";
|
|
74
|
+
/** Distance from the viewport edges, to clear a sticky bar. Numbers are px, strings any CSS length. Default 1rem each. */
|
|
75
|
+
offset?: {
|
|
76
|
+
x?: number | string;
|
|
77
|
+
y?: number | string;
|
|
78
|
+
};
|
|
79
|
+
/** Accessible name for each pill's close button. Default "Close"; pass one that names the item for non-English or per-window labels. */
|
|
80
|
+
closeLabel?: (item: WorkspaceTrayItem) => string;
|
|
81
|
+
/** Accessible name of the unsaved dot on a pill with `isDirty`. Default "Unsaved changes". */
|
|
82
|
+
dirtyLabel?: string;
|
|
83
|
+
/** Accessible name of the tray region. Default "Minimized windows". */
|
|
84
|
+
label?: string;
|
|
49
85
|
/**
|
|
50
86
|
* Full override for a single item's pill markup — e.g. to wrap it in an
|
|
51
87
|
* app-specific hover preview, or to show extra state (a dirty dot) the
|
|
@@ -67,10 +67,16 @@ export declare const Card: {
|
|
|
67
67
|
[$shadow.variable]: string;
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
+
elevated: {
|
|
71
|
+
container: {
|
|
72
|
+
[$border.variable]: string;
|
|
73
|
+
[$shadow.variable]: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
70
76
|
} | undefined;
|
|
71
77
|
defaultProps?: {
|
|
72
78
|
size?: "sm" | "md" | "lg" | undefined;
|
|
73
|
-
variant?: "outline" | undefined;
|
|
79
|
+
variant?: "elevated" | "outline" | undefined;
|
|
74
80
|
colorScheme?: string | undefined;
|
|
75
81
|
} | undefined;
|
|
76
82
|
parts: ("header" | "container" | "body" | "footer")[];
|
|
@@ -39,10 +39,13 @@ const variants = {
|
|
|
39
39
|
outline: definePartsStyle({
|
|
40
40
|
container: { [$border.variable]: "1px", [$shadow.variable]: "none" },
|
|
41
41
|
}),
|
|
42
|
+
elevated: definePartsStyle({
|
|
43
|
+
container: { [$border.variable]: "0", [$shadow.variable]: "shadows.card" },
|
|
44
|
+
}),
|
|
42
45
|
};
|
|
43
46
|
exports.Card = defineMultiStyleConfig({
|
|
44
47
|
baseStyle,
|
|
45
48
|
sizes,
|
|
46
49
|
variants,
|
|
47
|
-
defaultProps: { variant: "
|
|
50
|
+
defaultProps: { variant: "elevated", size: "md" },
|
|
48
51
|
});
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { StyleFunctionProps } from "@chakra-ui/react";
|
|
2
|
-
declare const $bg: {
|
|
3
|
-
variable: string;
|
|
4
|
-
reference: string;
|
|
5
|
-
};
|
|
6
2
|
declare const $itemBg: {
|
|
7
3
|
variable: string;
|
|
8
4
|
reference: string;
|
|
@@ -10,7 +6,8 @@ declare const $itemBg: {
|
|
|
10
6
|
export declare const Menu: {
|
|
11
7
|
baseStyle?: (({ theme }: StyleFunctionProps) => {
|
|
12
8
|
list: {
|
|
13
|
-
|
|
9
|
+
borderRadius: "xl";
|
|
10
|
+
boxShadow: "md";
|
|
14
11
|
bg: string;
|
|
15
12
|
color: string;
|
|
16
13
|
borderWidth: string;
|
|
@@ -18,10 +15,12 @@ export declare const Menu: {
|
|
|
18
15
|
borderColor: string;
|
|
19
16
|
};
|
|
20
17
|
item: {
|
|
18
|
+
color: string;
|
|
21
19
|
minH: string;
|
|
22
20
|
px: string;
|
|
23
21
|
py: string;
|
|
24
22
|
mx: string;
|
|
23
|
+
width: string;
|
|
25
24
|
fontSize: string;
|
|
26
25
|
borderRadius: "md";
|
|
27
26
|
bg: string;
|
|
@@ -41,6 +40,13 @@ export declare const Menu: {
|
|
|
41
40
|
[$itemBg.variable]: string;
|
|
42
41
|
bg: string;
|
|
43
42
|
};
|
|
43
|
+
"&[aria-checked=true]": {
|
|
44
|
+
color: string;
|
|
45
|
+
fontWeight: number;
|
|
46
|
+
"& .chakra-menu__icon-wrapper": {
|
|
47
|
+
color: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
44
50
|
};
|
|
45
51
|
}) | undefined;
|
|
46
52
|
sizes?: {
|
|
@@ -4,8 +4,10 @@ exports.Menu = void 0;
|
|
|
4
4
|
const react_1 = require("@chakra-ui/react");
|
|
5
5
|
const anatomy_1 = require("@chakra-ui/anatomy");
|
|
6
6
|
const rowStates_1 = require("../tokens/builders/rowStates");
|
|
7
|
+
const optionRowInk_1 = require("../../Components/Select/optionRowInk");
|
|
7
8
|
const optionRowSizes_1 = require("../tokens/primitives/optionRowSizes");
|
|
8
9
|
const paletteFromTheme_1 = require("./paletteFromTheme");
|
|
10
|
+
const overlay_styles_1 = require("./overlay.styles");
|
|
9
11
|
const itemRowSpec = optionRowSizes_1.OPTION_ROW_SIZES.sm;
|
|
10
12
|
const { defineMultiStyleConfig, definePartsStyle } = (0, react_1.createMultiStyleConfigHelpers)(anatomy_1.menuAnatomy.keys);
|
|
11
13
|
const $bg = (0, react_1.cssVar)("menu-bg");
|
|
@@ -24,12 +26,15 @@ const baseStyle = definePartsStyle(({ theme }) => {
|
|
|
24
26
|
borderWidth: "1px",
|
|
25
27
|
borderStyle: "solid",
|
|
26
28
|
borderColor: colors.boxborder[200],
|
|
29
|
+
...overlay_styles_1.POPUP_SURFACE,
|
|
27
30
|
},
|
|
28
31
|
item: {
|
|
32
|
+
color: (0, optionRowInk_1.optionRowInk)(colors, false),
|
|
29
33
|
minH: itemRowSpec.minH,
|
|
30
34
|
px: itemRowSpec.px,
|
|
31
35
|
py: itemRowSpec.py,
|
|
32
36
|
mx: itemRowSpec.mx,
|
|
37
|
+
width: `calc(100% - 2 * ${itemRowSpec.mx})`,
|
|
33
38
|
fontSize: itemRowSpec.fontSize,
|
|
34
39
|
borderRadius: optionRowSizes_1.OPTION_ROW_RADIUS,
|
|
35
40
|
bg: "transparent",
|
|
@@ -37,6 +42,11 @@ const baseStyle = definePartsStyle(({ theme }) => {
|
|
|
37
42
|
_hover: { [$itemBg.variable]: hoverBg, bg: $itemBg.reference },
|
|
38
43
|
_active: { [$itemBg.variable]: activeBg, bg: $itemBg.reference },
|
|
39
44
|
_expanded: { [$itemBg.variable]: hoverBg, bg: $itemBg.reference },
|
|
45
|
+
"&[aria-checked=true]": {
|
|
46
|
+
color: (0, optionRowInk_1.optionRowInk)(colors, true),
|
|
47
|
+
fontWeight: (0, optionRowInk_1.optionRowWeight)(true),
|
|
48
|
+
"& .chakra-menu__icon-wrapper": { color: colors.accentText },
|
|
49
|
+
},
|
|
40
50
|
},
|
|
41
51
|
};
|
|
42
52
|
});
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import type { StyleFunctionProps } from "@chakra-ui/react";
|
|
2
|
-
declare const $popperBg: {
|
|
3
|
-
variable: string;
|
|
4
|
-
reference: string;
|
|
5
|
-
};
|
|
6
|
-
declare const $arrowShadowColor: {
|
|
7
|
-
variable: string;
|
|
8
|
-
reference: string;
|
|
9
|
-
};
|
|
10
2
|
export declare const Popover: {
|
|
11
3
|
baseStyle?: (({ theme }: StyleFunctionProps) => {
|
|
12
4
|
content: {
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
borderRadius: "xl";
|
|
6
|
+
boxShadow: "md";
|
|
15
7
|
bg: string;
|
|
16
8
|
color: string;
|
|
17
9
|
borderWidth: string;
|
|
@@ -36,4 +28,3 @@ export declare const Popover: {
|
|
|
36
28
|
} | undefined;
|
|
37
29
|
parts: ("header" | "content" | "body" | "footer" | "closeButton" | "popper" | "arrow")[];
|
|
38
30
|
};
|
|
39
|
-
export {};
|
|
@@ -4,6 +4,7 @@ exports.Popover = void 0;
|
|
|
4
4
|
const react_1 = require("@chakra-ui/react");
|
|
5
5
|
const anatomy_1 = require("@chakra-ui/anatomy");
|
|
6
6
|
const paletteFromTheme_1 = require("./paletteFromTheme");
|
|
7
|
+
const overlay_styles_1 = require("./overlay.styles");
|
|
7
8
|
const { defineMultiStyleConfig, definePartsStyle } = (0, react_1.createMultiStyleConfigHelpers)(anatomy_1.popoverAnatomy.keys);
|
|
8
9
|
const $popperBg = (0, react_1.cssVar)("popper-bg");
|
|
9
10
|
const $arrowShadowColor = (0, react_1.cssVar)("popper-arrow-shadow-color");
|
|
@@ -19,6 +20,7 @@ const baseStyle = definePartsStyle(({ theme }) => {
|
|
|
19
20
|
borderWidth: "1px",
|
|
20
21
|
borderStyle: "solid",
|
|
21
22
|
borderColor: colors.boxborder[200],
|
|
23
|
+
...overlay_styles_1.POPUP_SURFACE,
|
|
22
24
|
},
|
|
23
25
|
};
|
|
24
26
|
});
|
|
@@ -94,10 +94,15 @@ export declare const componentStyles: {
|
|
|
94
94
|
[x: string]: string;
|
|
95
95
|
};
|
|
96
96
|
};
|
|
97
|
+
elevated: {
|
|
98
|
+
container: {
|
|
99
|
+
[x: string]: string;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
97
102
|
} | undefined;
|
|
98
103
|
defaultProps?: {
|
|
99
104
|
size?: "sm" | "md" | "lg" | undefined;
|
|
100
|
-
variant?: "outline" | undefined;
|
|
105
|
+
variant?: "elevated" | "outline" | undefined;
|
|
101
106
|
colorScheme?: string | undefined;
|
|
102
107
|
} | undefined;
|
|
103
108
|
parts: ("header" | "container" | "body" | "footer")[];
|
|
@@ -168,7 +173,8 @@ export declare const componentStyles: {
|
|
|
168
173
|
Menu: {
|
|
169
174
|
baseStyle?: (({ theme }: StyleFunctionProps) => {
|
|
170
175
|
list: {
|
|
171
|
-
|
|
176
|
+
borderRadius: "xl";
|
|
177
|
+
boxShadow: "md";
|
|
172
178
|
bg: string;
|
|
173
179
|
color: string;
|
|
174
180
|
borderWidth: string;
|
|
@@ -176,10 +182,12 @@ export declare const componentStyles: {
|
|
|
176
182
|
borderColor: string;
|
|
177
183
|
};
|
|
178
184
|
item: {
|
|
185
|
+
color: string;
|
|
179
186
|
minH: string;
|
|
180
187
|
px: string;
|
|
181
188
|
py: string;
|
|
182
189
|
mx: string;
|
|
190
|
+
width: string;
|
|
183
191
|
fontSize: string;
|
|
184
192
|
borderRadius: "md";
|
|
185
193
|
bg: string;
|
|
@@ -199,6 +207,13 @@ export declare const componentStyles: {
|
|
|
199
207
|
[x: string]: string;
|
|
200
208
|
bg: string;
|
|
201
209
|
};
|
|
210
|
+
"&[aria-checked=true]": {
|
|
211
|
+
color: string;
|
|
212
|
+
fontWeight: number;
|
|
213
|
+
"& .chakra-menu__icon-wrapper": {
|
|
214
|
+
color: string;
|
|
215
|
+
};
|
|
216
|
+
};
|
|
202
217
|
};
|
|
203
218
|
}) | undefined;
|
|
204
219
|
sizes?: {
|
|
@@ -284,7 +299,8 @@ export declare const componentStyles: {
|
|
|
284
299
|
Popover: {
|
|
285
300
|
baseStyle?: (({ theme }: StyleFunctionProps) => {
|
|
286
301
|
content: {
|
|
287
|
-
|
|
302
|
+
borderRadius: "xl";
|
|
303
|
+
boxShadow: "md";
|
|
288
304
|
bg: string;
|
|
289
305
|
color: string;
|
|
290
306
|
borderWidth: string;
|
|
@@ -15,6 +15,7 @@ const accentText_1 = require("../tokens/builders/accentText");
|
|
|
15
15
|
const filledSurface_1 = require("../tokens/builders/filledSurface");
|
|
16
16
|
const outlineRung_1 = require("../tokens/builders/outlineRung");
|
|
17
17
|
const tone_1 = require("../tokens/builders/tone");
|
|
18
|
+
const skeletonShimmer_1 = require("../tokens/builders/skeletonShimmer");
|
|
18
19
|
const tooltipSurface_1 = require("../tokens/builders/tooltipSurface");
|
|
19
20
|
const Drawer_styles_1 = require("./Drawer.styles");
|
|
20
21
|
const Menu_styles_1 = require("./Menu.styles");
|
|
@@ -25,7 +26,7 @@ const Card_styles_1 = require("./Card.styles");
|
|
|
25
26
|
// NOTE: guards untethemed scales (blackAlpha/whiteAlpha) whose rgba() rungs would throw in hexToRgb.
|
|
26
27
|
const isHexColor = (color) => typeof color === "string" && /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(color);
|
|
27
28
|
const solidFillStyle = (palette, swatch) => {
|
|
28
|
-
const rung = (0, filledSurface_1.solidFillRung)(swatch, palette.white);
|
|
29
|
+
const rung = (0, filledSurface_1.solidFillRung)(swatch, palette.white, palette.backgroundColor.main);
|
|
29
30
|
const bg = swatch[rung];
|
|
30
31
|
return {
|
|
31
32
|
bg,
|
|
@@ -145,19 +146,22 @@ const $skeletonStart = (0, react_1.cssVar)("skeleton-start-color");
|
|
|
145
146
|
const $skeletonEnd = (0, react_1.cssVar)("skeleton-end-color");
|
|
146
147
|
// NOTE: fixes Chakra's Skeleton hardcoding gray.100/.400 via `_dark` (dead here) — an explicit startColor/endColor prop still wins.
|
|
147
148
|
const Skeleton = {
|
|
148
|
-
baseStyle: ({ theme }) =>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
baseStyle: ({ theme }) => {
|
|
150
|
+
const shimmer = (0, skeletonShimmer_1.skeletonShimmer)((0, paletteFromTheme_1.paletteOf)(theme));
|
|
151
|
+
return {
|
|
152
|
+
[$skeletonStart.variable]: shimmer.start,
|
|
153
|
+
[$skeletonEnd.variable]: shimmer.end,
|
|
154
|
+
background: $skeletonStart.reference,
|
|
155
|
+
borderColor: $skeletonEnd.reference,
|
|
156
|
+
};
|
|
157
|
+
},
|
|
154
158
|
};
|
|
155
159
|
// NOTE: uses Chakra's own shorthand style keys (bg/w/h/pos) + !important — extendTheme deep-merges by key, so mismatched keys let Chakra's stock value win.
|
|
156
160
|
const Radio = {
|
|
157
161
|
baseStyle: ({ theme, colorScheme }) => {
|
|
158
162
|
const palette = (0, paletteFromTheme_1.paletteOf)(theme);
|
|
159
163
|
const swatch = (0, paletteFromTheme_1.scaleFor)(palette, colorScheme);
|
|
160
|
-
const fill = swatch[(0, filledSurface_1.solidFillRung)(swatch, palette.white)];
|
|
164
|
+
const fill = swatch[(0, filledSurface_1.solidFillRung)(swatch, palette.white, palette.backgroundColor.main)];
|
|
161
165
|
const dot = (0, filledSurface_1.labelOnFill)(fill, palette.white, palette.black);
|
|
162
166
|
const hoverFill = (0, outlineRung_1.resolveHoverTint)(fill, fill);
|
|
163
167
|
return {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SystemStyleObject } from "@chakra-ui/react";
|
|
2
2
|
export declare const REDUCED_MOTION_QUERY = "@media (prefers-reduced-motion: reduce)";
|
|
3
|
+
export declare const MOTION_OK_QUERY = "@media (prefers-reduced-motion: no-preference)";
|
|
3
4
|
export declare const usePrefersReducedMotion: () => boolean;
|
|
4
5
|
/** Spread into `sx`: drops transitions and animations when the user asks for less motion. */
|
|
5
6
|
export declare const reducedMotionSx: (overrides?: SystemStyleObject) => SystemStyleObject;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reducedMotionGlobalStyles = exports.REDUCED_MOTION_SELECTOR = exports.MOTION_KEEP_CLASS = exports.reducedMotionSx = exports.usePrefersReducedMotion = exports.REDUCED_MOTION_QUERY = void 0;
|
|
3
|
+
exports.reducedMotionGlobalStyles = exports.REDUCED_MOTION_SELECTOR = exports.MOTION_KEEP_CLASS = exports.reducedMotionSx = exports.usePrefersReducedMotion = exports.MOTION_OK_QUERY = exports.REDUCED_MOTION_QUERY = void 0;
|
|
4
4
|
const useMatchMedia_1 = require("../../Hooks/useMatchMedia");
|
|
5
5
|
exports.REDUCED_MOTION_QUERY = "@media (prefers-reduced-motion: reduce)";
|
|
6
|
+
exports.MOTION_OK_QUERY = "@media (prefers-reduced-motion: no-preference)";
|
|
6
7
|
const MEDIA = "(prefers-reduced-motion: reduce)";
|
|
7
8
|
const usePrefersReducedMotion = () => (0, useMatchMedia_1.useMatchMedia)(MEDIA, false);
|
|
8
9
|
exports.usePrefersReducedMotion = usePrefersReducedMotion;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { PaletteProps } from "../tokens/types";
|
|
2
2
|
export declare const OVERLAY_BLUR = "blur(4px)";
|
|
3
|
+
/** Radius and elevation every anchored popup shares: menus, popovers, selects, dropdowns. */
|
|
4
|
+
export declare const POPUP_SURFACE: {
|
|
5
|
+
readonly borderRadius: "xl";
|
|
6
|
+
readonly boxShadow: "md";
|
|
7
|
+
};
|
|
3
8
|
/** The one Modal/Drawer backdrop; reuse it for any custom full-screen scrim. */
|
|
4
9
|
export declare const overlayScrimStyles: (colors: Pick<PaletteProps, "black">) => {
|
|
5
10
|
bg: string;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dialogPartStyles = exports.overlayScrimStyles = exports.OVERLAY_BLUR = void 0;
|
|
3
|
+
exports.dialogPartStyles = exports.overlayScrimStyles = exports.POPUP_SURFACE = exports.OVERLAY_BLUR = void 0;
|
|
4
4
|
const scrim_1 = require("../tokens/builders/scrim");
|
|
5
5
|
const surfaceRaised_1 = require("../tokens/builders/surfaceRaised");
|
|
6
|
+
const radii_1 = require("../tokens/primitives/radii");
|
|
6
7
|
exports.OVERLAY_BLUR = "blur(4px)";
|
|
8
|
+
/** Radius and elevation every anchored popup shares: menus, popovers, selects, dropdowns. */
|
|
9
|
+
exports.POPUP_SURFACE = { borderRadius: radii_1.RADIUS_ROLE.float, boxShadow: "md" };
|
|
7
10
|
/** The one Modal/Drawer backdrop; reuse it for any custom full-screen scrim. */
|
|
8
11
|
const overlayScrimStyles = (colors) => ({
|
|
9
12
|
bg: (0, scrim_1.overlayScrim)(colors),
|
|
@@ -17,6 +17,7 @@ import rosewoodDark from "./rosewood/palette.dark";
|
|
|
17
17
|
import storefrontDark from "./storefront/palette.dark";
|
|
18
18
|
import zincDark from "./zinc/palette.dark";
|
|
19
19
|
import type { BrandPaletteSource, PaletteProps, ResolvedColorMode, ThemeName } from "../types";
|
|
20
|
+
export declare const LIGHT_CANVAS_STEP = 1.09;
|
|
20
21
|
/** Derived, never hand-written: a copied hex goes stale the moment a canvas moves. */
|
|
21
22
|
export declare const finalizeLightPalette: (source: BrandPaletteSource) => PaletteProps;
|
|
22
23
|
export { lavender, meadow, radiant, skyline, slate, emerald, rosewood, storefront, zinc };
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.themeNames = exports.palettes = exports.darkPalettes = exports.lightPalettes = exports.zincDark = exports.storefrontDark = exports.rosewoodDark = exports.emeraldDark = exports.slateDark = exports.skylineDark = exports.radiantDark = exports.meadowDark = exports.lavenderDark = exports.zinc = exports.storefront = exports.rosewood = exports.emerald = exports.slate = exports.skyline = exports.radiant = exports.meadow = exports.lavender = exports.finalizeLightPalette = void 0;
|
|
6
|
+
exports.themeNames = exports.palettes = exports.darkPalettes = exports.lightPalettes = exports.zincDark = exports.storefrontDark = exports.rosewoodDark = exports.emeraldDark = exports.slateDark = exports.skylineDark = exports.radiantDark = exports.meadowDark = exports.lavenderDark = exports.zinc = exports.storefront = exports.rosewood = exports.emerald = exports.slate = exports.skyline = exports.radiant = exports.meadow = exports.lavender = exports.finalizeLightPalette = exports.LIGHT_CANVAS_STEP = void 0;
|
|
7
7
|
const palette_light_1 = __importDefault(require("./lavender/palette.light"));
|
|
8
8
|
exports.lavender = palette_light_1.default;
|
|
9
9
|
const palette_light_2 = __importDefault(require("./meadow/palette.light"));
|
|
@@ -51,9 +51,25 @@ const surfaceRungs_1 = require("../builders/surfaceRungs");
|
|
|
51
51
|
const surfaceRaised_1 = require("../builders/surfaceRaised");
|
|
52
52
|
const star_1 = require("../builders/star");
|
|
53
53
|
const lazy_1 = require("../builders/lazy");
|
|
54
|
+
const color_1 = require("../builders/color");
|
|
55
|
+
exports.LIGHT_CANVAS_STEP = 1.09;
|
|
56
|
+
const CANVAS_MIX_STEP = 0.0025;
|
|
57
|
+
const CANVAS_MIX_MAX = 0.5;
|
|
58
|
+
const lightCanvas = (canvas, card, ink) => {
|
|
59
|
+
for (let weight = 0; weight < CANVAS_MIX_MAX; weight += CANVAS_MIX_STEP) {
|
|
60
|
+
const next = (0, color_1.mix)(canvas, ink, weight);
|
|
61
|
+
if ((0, color_1.contrastRatio)(next, card) >= exports.LIGHT_CANVAS_STEP)
|
|
62
|
+
return next;
|
|
63
|
+
}
|
|
64
|
+
return (0, color_1.mix)(canvas, ink, CANVAS_MIX_MAX);
|
|
65
|
+
};
|
|
54
66
|
/** Derived, never hand-written: a copied hex goes stale the moment a canvas moves. */
|
|
55
67
|
const finalizeLightPalette = (source) => ({
|
|
56
68
|
...source,
|
|
69
|
+
backgroundColor: {
|
|
70
|
+
...source.backgroundColor,
|
|
71
|
+
base: lightCanvas(source.backgroundColor.base, source.background[50], source.text[900]),
|
|
72
|
+
},
|
|
57
73
|
sidebar: (0, sidebarAccent_1.withSidebarTokens)(source),
|
|
58
74
|
accentText: (0, accentText_1.pickAccentText)(source.primary, source.backgroundColor.main),
|
|
59
75
|
textMuted: (0, mutedText_1.buildMutedText)(source.text, source.backgroundColor.main),
|
|
@@ -17,8 +17,22 @@ const primary = {
|
|
|
17
17
|
900: "#531a14",
|
|
18
18
|
opacity: (0, buildBrandTokens_1.buildPrimaryOpacity)(PRIMARY_500),
|
|
19
19
|
};
|
|
20
|
+
const danger = {
|
|
21
|
+
50: "#fcedf3",
|
|
22
|
+
100: "#f5c5db",
|
|
23
|
+
200: "#f1a9ca",
|
|
24
|
+
300: "#ec82b4",
|
|
25
|
+
400: "#ea69a7",
|
|
26
|
+
500: "#e74494",
|
|
27
|
+
600: "#d23e87",
|
|
28
|
+
700: "#a43069",
|
|
29
|
+
800: "#7f2651",
|
|
30
|
+
900: "#611c3e",
|
|
31
|
+
};
|
|
20
32
|
const palette = {
|
|
21
33
|
...neutrals_1.neutralTokens,
|
|
34
|
+
red: danger,
|
|
35
|
+
semantic: { ...neutrals_1.neutralTokens.semantic, error: danger },
|
|
22
36
|
...(0, brandInk_1.buildBrandInk)(PRIMARY_500),
|
|
23
37
|
// NOTE: stops retuned so white gradient-button text clears AA at both ends — original let it drop to 4.37/2.15.
|
|
24
38
|
gradient: { from: "#cd4733", to: "#a36807" }, // terracotta red → amber
|
|
@@ -120,6 +134,7 @@ const palette = {
|
|
|
120
134
|
boxShadow: {
|
|
121
135
|
primary: (0, buildBrandTokens_1.buildPrimaryShadowTint)(PRIMARY_500),
|
|
122
136
|
...neutrals_1.sharedBoxShadow,
|
|
137
|
+
error: `${danger[500]}47`,
|
|
123
138
|
},
|
|
124
139
|
};
|
|
125
140
|
exports.default = palette;
|