pixelize-design-library 2.4.2-beta.3 → 2.4.2-beta.5
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/dist/Components/Accordion/Accordion.js +2 -2
- package/dist/Components/Button/Button.styles.js +4 -3
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +5 -5
- package/dist/Components/Common/fieldStyles.js +1 -1
- package/dist/Components/CopyButton/CopyButton.js +1 -1
- package/dist/Components/CustomModulesTable/EditModuleModal.js +1 -1
- package/dist/Components/DatePicker/CalendarPanel.js +1 -1
- package/dist/Components/DatePicker/RangeDatePicker.js +1 -1
- package/dist/Components/DatePicker/SingleDatePicker.js +1 -1
- package/dist/Components/DatePicker/TimeOnlyPicker.js +1 -1
- package/dist/Components/Dropdown/DropDown.js +3 -13
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +1 -1
- package/dist/Components/FilePreview/FilePreview.js +1 -1
- package/dist/Components/FilterSidebar/FilterSidebar.js +2 -2
- package/dist/Components/Input/TextInput.styles.js +5 -1
- package/dist/Components/KanbanBoard/KanbanBoard.js +5 -45
- package/dist/Components/LimitReachedModal/LimitReachedModal.js +4 -5
- package/dist/Components/MultiSelect/MultiSelect.js +1 -1
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +2 -2
- package/dist/Components/PinInput/PinInput.js +1 -1
- package/dist/Components/PlanPill/PlanPill.js +5 -5
- package/dist/Components/PlanPill/planPillGradient.d.ts +2 -14
- package/dist/Components/PlanPill/planPillGradient.js +3 -15
- package/dist/Components/ProductCard/ProductPrice.js +1 -1
- package/dist/Components/ProfileCard/ProfileCard.js +1 -1
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +1 -1
- package/dist/Components/Reorder/Reorder.js +1 -1
- package/dist/Components/ScrollbarBox/ScrollbarBox.d.ts +13 -0
- package/dist/Components/ScrollbarBox/ScrollbarBox.js +11 -0
- package/dist/Components/SearchSelect/SearchSelect.js +3 -3
- package/dist/Components/Select/Select.styles.js +1 -1
- package/dist/Components/SelectSearch/SelectSearch.js +3 -3
- package/dist/Components/SelectV2/SelectV2.js +3 -10
- package/dist/Components/StageProgress/StageProgress.js +2 -9
- package/dist/Components/Table/Table.js +7 -20
- package/dist/Components/Table/components/TableBody.js +1 -1
- package/dist/Components/Table/components/TableHeader.js +1 -1
- package/dist/Components/Table/filters/ActiveFilters.js +2 -18
- package/dist/Components/Table/settings/ManageColumns.js +2 -16
- package/dist/Components/Table/settings/TableSettings.js +4 -10
- package/dist/Components/Timeline/Timeline.js +2 -2
- package/dist/Components/Toaster/Toaster.js +1 -1
- package/dist/Components/UpgradeButton/UpgradeButton.js +3 -3
- package/dist/Constants/Sidebar.js +3 -2
- package/dist/Theme/chakra/Menu.styles.d.ts +1 -0
- package/dist/Theme/chakra/Menu.styles.js +3 -0
- package/dist/Theme/chakra/componentStyles.d.ts +1 -0
- package/dist/Theme/chakra/createBrandTheme.js +3 -16
- package/dist/Theme/tokens/builders/gradientInk.d.ts +22 -0
- package/dist/Theme/tokens/builders/gradientInk.js +28 -0
- package/dist/Theme/tokens/builders/index.d.ts +2 -0
- package/dist/Theme/tokens/builders/index.js +2 -0
- package/dist/Theme/tokens/builders/outlineRung.d.ts +5 -0
- package/dist/Theme/tokens/builders/outlineRung.js +19 -0
- package/dist/Theme/tokens/builders/scrollbar.d.ts +12 -0
- package/dist/Theme/tokens/builders/scrollbar.js +57 -0
- package/dist/Theme/tokens/builders/surfaceRungs.d.ts +2 -0
- package/dist/Theme/tokens/builders/surfaceRungs.js +7 -2
- package/dist/esm/Components/Accordion/Accordion.js +2 -2
- package/dist/esm/Components/Button/Button.styles.js +5 -4
- package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +5 -5
- package/dist/esm/Components/Common/fieldStyles.js +1 -1
- package/dist/esm/Components/CopyButton/CopyButton.js +1 -1
- package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +1 -1
- package/dist/esm/Components/DatePicker/CalendarPanel.js +1 -1
- package/dist/esm/Components/DatePicker/RangeDatePicker.js +1 -1
- package/dist/esm/Components/DatePicker/SingleDatePicker.js +1 -1
- package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +1 -1
- package/dist/esm/Components/Dropdown/DropDown.js +3 -13
- package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +1 -1
- package/dist/esm/Components/FilePreview/FilePreview.js +1 -1
- package/dist/esm/Components/FilterSidebar/FilterSidebar.js +2 -2
- package/dist/esm/Components/Input/TextInput.styles.js +5 -1
- package/dist/esm/Components/KanbanBoard/KanbanBoard.js +5 -45
- package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +4 -5
- package/dist/esm/Components/MultiSelect/MultiSelect.js +1 -1
- package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +2 -2
- package/dist/esm/Components/PinInput/PinInput.js +1 -1
- package/dist/esm/Components/PlanPill/PlanPill.js +6 -6
- package/dist/esm/Components/PlanPill/planPillGradient.js +3 -15
- package/dist/esm/Components/ProductCard/ProductPrice.js +1 -1
- package/dist/esm/Components/ProfileCard/ProfileCard.js +1 -1
- package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +1 -1
- package/dist/esm/Components/Reorder/Reorder.js +1 -1
- package/dist/esm/Components/ScrollbarBox/ScrollbarBox.js +9 -0
- package/dist/esm/Components/SearchSelect/SearchSelect.js +3 -3
- package/dist/esm/Components/Select/Select.styles.js +1 -1
- package/dist/esm/Components/SelectSearch/SelectSearch.js +3 -3
- package/dist/esm/Components/SelectV2/SelectV2.js +3 -10
- package/dist/esm/Components/StageProgress/StageProgress.js +2 -9
- package/dist/esm/Components/Table/Table.js +7 -20
- package/dist/esm/Components/Table/components/TableBody.js +1 -1
- package/dist/esm/Components/Table/components/TableHeader.js +1 -1
- package/dist/esm/Components/Table/filters/ActiveFilters.js +2 -18
- package/dist/esm/Components/Table/settings/ManageColumns.js +2 -16
- package/dist/esm/Components/Table/settings/TableSettings.js +4 -10
- package/dist/esm/Components/Timeline/Timeline.js +2 -2
- package/dist/esm/Components/Toaster/Toaster.js +1 -1
- package/dist/esm/Components/UpgradeButton/UpgradeButton.js +3 -3
- package/dist/esm/Constants/Sidebar.js +3 -2
- package/dist/esm/Theme/chakra/Menu.styles.js +3 -0
- package/dist/esm/Theme/chakra/createBrandTheme.js +3 -16
- package/dist/esm/Theme/tokens/builders/gradientInk.js +22 -0
- package/dist/esm/Theme/tokens/builders/index.js +2 -0
- package/dist/esm/Theme/tokens/builders/outlineRung.js +18 -0
- package/dist/esm/Theme/tokens/builders/scrollbar.js +52 -0
- package/dist/esm/Theme/tokens/builders/surfaceRungs.js +7 -2
- package/dist/esm/index.js +4 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +13 -3
- package/package.json +1 -1
|
@@ -10,13 +10,13 @@ const accordionColors_1 = require("./accordionColors");
|
|
|
10
10
|
const Accordion = ({ allowMultiple, allowToggle, index, onChange, reduceMotion, items, ...rest }) => {
|
|
11
11
|
const { colors } = (0, useCustomTheme_1.useCustomTheme)();
|
|
12
12
|
const isDark = (0, accentText_1.isDarkCanvas)(colors.backgroundColor.main);
|
|
13
|
-
const border = colors.boxborder[
|
|
13
|
+
const border = colors.boxborder[200];
|
|
14
14
|
const headingColor = colors.text[800];
|
|
15
15
|
const bodyColor = colors.text[600];
|
|
16
16
|
const { expandedBg, softHover } = (0, react_1.useMemo)(() => (0, accordionColors_1.getAccordionHoverColors)(colors, isDark), [colors, isDark]);
|
|
17
17
|
return ((0, jsx_runtime_1.jsx)(react_2.Accordion, { allowMultiple: allowMultiple, allowToggle: allowToggle, index: index, onChange: onChange, reduceMotion: reduceMotion, ...rest, children: items.map((item, idx) => {
|
|
18
18
|
var _a;
|
|
19
|
-
return ((0, jsx_runtime_1.jsx)(react_2.AccordionItem, { border: `0.063rem solid ${border}`, borderRadius: "xl", bg: colors.background[50], mb: 3, overflow: "hidden", transition: "border-color 0.15s ease, box-shadow 0.15s ease", _last: { mb: 0 }, _hover: { borderColor: colors.boxborder[
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(react_2.AccordionItem, { border: `0.063rem solid ${border}`, borderRadius: "xl", bg: colors.background[50], mb: 3, overflow: "hidden", transition: "border-color 0.15s ease, box-shadow 0.15s ease", _last: { mb: 0 }, _hover: { borderColor: colors.boxborder[200] }, ...item.itemProps, sx: (_a = item.customStyles) === null || _a === void 0 ? void 0 : _a.itemStyle, children: ({ isExpanded }) => {
|
|
20
20
|
var _a, _b, _c;
|
|
21
21
|
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { children: (0, jsx_runtime_1.jsxs)(react_2.AccordionButton, { px: 4, py: 3, gap: 3, fontSize: "0.875rem", fontWeight: 600, color: headingColor, bg: isExpanded ? expandedBg : "transparent", transition: "background 0.15s ease", _hover: { bg: isExpanded ? expandedBg : softHover }, _focusVisible: {
|
|
22
22
|
boxShadow: "none",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Button = void 0;
|
|
4
4
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
5
|
+
const gradientInk_1 = require("../../Theme/tokens/builders/gradientInk");
|
|
5
6
|
/**
|
|
6
7
|
* Outline/ghost/link text sits ON the canvas, so it needs a rung that stays readable there —
|
|
7
8
|
* `[500]` is pinned dark enough to carry a white label on the solid variant and measures only
|
|
@@ -141,11 +142,11 @@ exports.Button = {
|
|
|
141
142
|
// Theme-based two-tone gradient: each theme defines its own `gradient` {from,to} pair.
|
|
142
143
|
// Ignores colorScheme; hover/active shift brightness so it works for any pair.
|
|
143
144
|
gradient: ({ theme }) => {
|
|
144
|
-
const g = theme.colors.gradient;
|
|
145
|
-
const bg =
|
|
145
|
+
const g = (0, gradientInk_1.resolveGradient)(theme.colors.gradient, theme.colors.white, theme.colors.black);
|
|
146
|
+
const bg = (0, gradientInk_1.gradientCss)(g);
|
|
146
147
|
return {
|
|
147
148
|
bgImage: bg,
|
|
148
|
-
color:
|
|
149
|
+
color: g.ink,
|
|
149
150
|
border: "none",
|
|
150
151
|
_hover: {
|
|
151
152
|
bgImage: bg,
|
|
@@ -5,7 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const react_2 = require("@chakra-ui/react");
|
|
7
7
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
8
|
-
const
|
|
8
|
+
const gradientInk_1 = require("../../Theme/tokens/builders/gradientInk");
|
|
9
9
|
const color_1 = require("../../Theme/tokens/builders/color");
|
|
10
10
|
const rafThrottle_1 = require("../../Utils/rafThrottle");
|
|
11
11
|
function ButtonGroupIcon({ leftIcon, rightIcon, onLeftIconClick, onRightIconClick, buttonText, onButtonClick, onButtongroupClick, size, variant, color, buttonGroupStyle, buttonGroupLeftIconStyle, buttonGroupRightIconStyle, buttonStyle, onBlurLeftIcon, onBlurRightIcon, dropdownOptions, // New prop for dropdown options
|
|
@@ -49,9 +49,9 @@ rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, left
|
|
|
49
49
|
// keep the segments transparent (so it doesn't restart per button/icon), with a
|
|
50
50
|
// translucent-white hover overlay for per-segment feedback.
|
|
51
51
|
const isGradient = variant === "gradient";
|
|
52
|
-
const gradientStops = theme.colors.gradient;
|
|
53
|
-
const gradientBg =
|
|
54
|
-
const gradientInk =
|
|
52
|
+
const gradientStops = (0, gradientInk_1.resolveGradient)(theme.colors.gradient, theme.colors.white, theme.colors.black);
|
|
53
|
+
const gradientBg = (0, gradientInk_1.gradientCss)(gradientStops);
|
|
54
|
+
const gradientInk = gradientStops.ink;
|
|
55
55
|
const whiteRgb = (0, color_1.hexToRgb)(theme.colors.white);
|
|
56
56
|
const whiteOverlay = (alpha) => `rgba(${whiteRgb.r}, ${whiteRgb.g}, ${whiteRgb.b}, ${alpha})`;
|
|
57
57
|
const gradientItemSx = isGradient
|
|
@@ -90,7 +90,7 @@ rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, left
|
|
|
90
90
|
mx: 0,
|
|
91
91
|
borderRadius: "none",
|
|
92
92
|
borderBottom: "1px solid",
|
|
93
|
-
borderColor: theme.colors.boxborder[
|
|
93
|
+
borderColor: theme.colors.boxborder[200],
|
|
94
94
|
}
|
|
95
95
|
: {}),
|
|
96
96
|
_hover: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
|
|
@@ -14,7 +14,7 @@ exports.FIELD_TRANSITION = "border-color 0.2s, box-shadow 0.2s";
|
|
|
14
14
|
const getFieldStateStyles = (theme, { error = false, focused = false } = {}) => {
|
|
15
15
|
// [800], not [500]: WCAG 1.4.11 needs >=3.0 for a control boundary against any named surface
|
|
16
16
|
// up to `muted` (lightest); [500] fails there, [800] clears all with margin.
|
|
17
|
-
const idleBorder = theme.colors.boxborder[
|
|
17
|
+
const idleBorder = theme.colors.boxborder[500];
|
|
18
18
|
const primary = theme.colors.primary[500];
|
|
19
19
|
const errorColor = theme.colors.semanticText.error;
|
|
20
20
|
const ringPrimary = theme.colors.boxShadow.primary;
|
|
@@ -39,7 +39,7 @@ const CopyButton = ({ value, variant = "icon", label = "Copy", copiedLabel = "Co
|
|
|
39
39
|
if (variant === "button") {
|
|
40
40
|
return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { as: "button", align: "center", gap: "6px", px: "12px", py: "6px", borderRadius: "lg", border: "1px solid",
|
|
41
41
|
// [800], not [500]: a real control boundary needs >=3:1 on every surface up to `muted`.
|
|
42
|
-
borderColor: copied ? success : theme.colors.boxborder[
|
|
42
|
+
borderColor: copied ? success : theme.colors.boxborder[500], bg: "transparent", color: copied ? success : theme.colors.gray[700], fontSize: "14px", fontWeight: 500, transition: "all 0.15s ease", _hover: { borderColor: accent, color: accent }, onClick: handleCopy, children: [copied ? (0, jsx_runtime_1.jsx)(lucide_react_1.Check, { size: iconSize }) : (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { size: iconSize }), (0, jsx_runtime_1.jsx)(react_2.Text, { children: copied ? copiedLabel : label })] }));
|
|
43
43
|
}
|
|
44
44
|
return ((0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: copied ? copiedLabel : tooltip, placement: "top", children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": tooltip, size: size, variant: "ghost", onClick: handleCopy, color: copied ? success : theme.colors.gray[500], _hover: { color: accent, bg: theme.colors.primary[50] }, icon: copied ? (0, jsx_runtime_1.jsx)(lucide_react_1.Check, { size: iconSize }) : (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { size: iconSize }) }) }));
|
|
45
45
|
};
|
|
@@ -19,6 +19,6 @@ const EditModuleModal = ({ isOpen, onClose, initialName, isLoading, onSubmit, la
|
|
|
19
19
|
// [200] is the decorative divider rung (~1.2:1, correct for the ModalHeader border
|
|
20
20
|
// above) — a real control's resting outline needs 1.4.11's 3:1, which is what every
|
|
21
21
|
// other input in this library (TextInput, NumberInput, DatePicker) reads from [800].
|
|
22
|
-
borderColor: colors.boxborder[
|
|
22
|
+
borderColor: colors.boxborder[500], mb: 5 }), (0, jsx_runtime_1.jsxs)(react_2.HStack, { justifyContent: "flex-end", spacing: 3, children: [(0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.cancel, onClick: onClose, variant: "outline", colorScheme: "gray", size: "sm" }), (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.update, onClick: () => onSubmit(name.trim()), colorScheme: "primary", size: "sm", isLoading: isLoading, isDisabled: !name.trim() })] })] })] })] }));
|
|
23
23
|
};
|
|
24
24
|
exports.default = EditModuleModal;
|
|
@@ -26,7 +26,7 @@ const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, tempDate
|
|
|
26
26
|
const hasRange = !!(rangeStart && rangeEnd && !isSameDay(rangeStart, rangeEnd));
|
|
27
27
|
const selectStyles = {
|
|
28
28
|
border: "1px solid",
|
|
29
|
-
// boxborder[500] is the control-outline rung the sibling pickers already use; boxborder[
|
|
29
|
+
// boxborder[500] is the control-outline rung the sibling pickers already use; boxborder[200]
|
|
30
30
|
// is decorative and measured 1.85:1 on the dark canvas — the select read as borderless.
|
|
31
31
|
borderColor: theme.colors.boxborder[500],
|
|
32
32
|
borderRadius: "md",
|
|
@@ -207,7 +207,7 @@ const RangeDatePicker = (props) => {
|
|
|
207
207
|
return;
|
|
208
208
|
}
|
|
209
209
|
setTempRangeEnd(setTimeFrom(endTimeBaseDate, t));
|
|
210
|
-
}, dateFormat: timePickerFormat, disabled: disabled || !tempRangeEnd, size: sizeKey }))] })] })), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: theme.colors.boxborder[
|
|
210
|
+
}, dateFormat: timePickerFormat, disabled: disabled || !tempRangeEnd, size: sizeKey }))] })] })), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: theme.colors.boxborder[200], children: [(0, jsx_runtime_1.jsx)(Button_1.default, { size: "sm", variant: "ghost", colorScheme: "gray", onClick: handleClear, children: "Clear" }), (0, jsx_runtime_1.jsx)(Button_1.default, { size: "sm", variant: "gradient", onClick: requestClose, children: "Apply" })] })] }) })] }), error && errorMessage && (0, jsx_runtime_1.jsx)(ErrorMessage_1.default, { errorMessage: errorMessage }), helperText && !error && (0, jsx_runtime_1.jsx)(HelperText_1.default, { helperText: helperText })] }));
|
|
211
211
|
};
|
|
212
212
|
exports.RangeDatePicker = RangeDatePicker;
|
|
213
213
|
exports.default = exports.RangeDatePicker;
|
|
@@ -970,7 +970,7 @@ const SingleDatePicker = (props) => {
|
|
|
970
970
|
setTempDate(updatedDate);
|
|
971
971
|
setInputValue((0, date_fns_1.format)(updatedDate, resolvedDateFormat));
|
|
972
972
|
setIsTyping(false);
|
|
973
|
-
}, disabled: disabled })) })), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: theme.colors.boxborder[
|
|
973
|
+
}, disabled: disabled })) })), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: theme.colors.boxborder[200], children: [(0, jsx_runtime_1.jsx)(Button_1.default, { size: "sm", variant: "ghost", colorScheme: "gray", onClick: () => {
|
|
974
974
|
setTempDate(null);
|
|
975
975
|
requestClose(null);
|
|
976
976
|
}, children: "Clear" }), (0, jsx_runtime_1.jsx)(Button_1.default, { size: "sm", variant: "gradient", onClick: () => requestClose(), children: "Apply" })] })] }) })] }), error && errorMessage && (0, jsx_runtime_1.jsx)(ErrorMessage_1.default, { errorMessage: errorMessage }), helperText && !error && (0, jsx_runtime_1.jsx)(HelperText_1.default, { helperText: helperText })] }));
|
|
@@ -79,7 +79,7 @@ const TimeOnlyPicker = (props) => {
|
|
|
79
79
|
onOpen();
|
|
80
80
|
}, error: error, size: sizeKey }) }) }) }), (0, jsx_runtime_1.jsx)(react_2.PopoverContent, { width: "auto", p: 4, ref: popoverRef, boxShadow: "lg", bg: theme.colors.background[50], children: (0, jsx_runtime_1.jsxs)(react_2.PopoverBody, { children: [(0, jsx_runtime_1.jsx)(TimePicker_1.default, { date: resolvedTempDate, dateFormat: dateFormat, onChange: (updatedDate) => {
|
|
81
81
|
handleTimePickerChange(updatedDate);
|
|
82
|
-
} }), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 4, pt: 4, borderTop: "1px solid", borderColor: theme.colors.boxborder[
|
|
82
|
+
} }), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 4, pt: 4, borderTop: "1px solid", borderColor: theme.colors.boxborder[200], children: [(0, jsx_runtime_1.jsx)(react_2.Button, { size: "sm", variant: "ghost", onClick: handleClear, children: "Clear" }), (0, jsx_runtime_1.jsx)(react_2.Button, { size: "sm", colorScheme: "primary", onClick: handleOk, children: "OK" })] })] }) })] }), error && errorMessage && (0, jsx_runtime_1.jsx)(ErrorMessage_1.default, { errorMessage: errorMessage }), helperText && !error && (0, jsx_runtime_1.jsx)(HelperText_1.default, { helperText: helperText })] }));
|
|
83
83
|
};
|
|
84
84
|
exports.TimeOnlyPicker = TimeOnlyPicker;
|
|
85
85
|
exports.default = exports.TimeOnlyPicker;
|
|
@@ -5,6 +5,7 @@ const react_1 = require("react");
|
|
|
5
5
|
const react_2 = require("@chakra-ui/react");
|
|
6
6
|
const framer_motion_1 = require("framer-motion");
|
|
7
7
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
8
|
+
const scrollbar_1 = require("../../Theme/tokens/builders/scrollbar");
|
|
8
9
|
const lucide_react_1 = require("lucide-react");
|
|
9
10
|
const rafThrottle_1 = require("../../Utils/rafThrottle");
|
|
10
11
|
const MotionBox = (0, framer_motion_1.motion)((0, react_1.forwardRef)((props, ref) => ((0, jsx_runtime_1.jsx)(react_2.Box, { ref: ref, ...props }))));
|
|
@@ -213,18 +214,7 @@ const Dropdown = (0, react_1.forwardRef)(({ dropDownButtonStyle, ButtonText, opt
|
|
|
213
214
|
};
|
|
214
215
|
const DropdownContentRender = () => {
|
|
215
216
|
var _a;
|
|
216
|
-
return ((0, jsx_runtime_1.jsx)(react_2.List, { id: menuId, role: "menu", onKeyDown: handleMenuKeyDown, bg: theme.colors.background[50], border: `0.063rem solid ${theme.colors.boxborder[200]}`, borderRadius: "xl", boxShadow: (_a = theme.shadows) === null || _a === void 0 ? void 0 : _a.lg, py: 1.5, mt: "0.375rem", minWidth: s.minW, maxH: "18rem", overflowY: "auto", overflowX: "hidden", sx: {
|
|
217
|
-
scrollbarWidth: "thin",
|
|
218
|
-
scrollbarColor: `${theme.colors.gray[300]} transparent`,
|
|
219
|
-
"&::-webkit-scrollbar": { width: "6px" },
|
|
220
|
-
"&::-webkit-scrollbar-thumb": {
|
|
221
|
-
background: theme.colors.gray[300],
|
|
222
|
-
borderRadius: "base",
|
|
223
|
-
},
|
|
224
|
-
"&::-webkit-scrollbar-thumb:hover": {
|
|
225
|
-
background: theme.colors.gray[400],
|
|
226
|
-
},
|
|
227
|
-
}, style: ListStyle, children: options.map((option, index) => ((0, jsx_runtime_1.jsxs)(react_2.ListItem, { ref: (node) => {
|
|
217
|
+
return ((0, jsx_runtime_1.jsx)(react_2.List, { id: menuId, role: "menu", onKeyDown: handleMenuKeyDown, bg: theme.colors.background[50], border: `0.063rem solid ${theme.colors.boxborder[200]}`, borderRadius: "xl", boxShadow: (_a = theme.shadows) === null || _a === void 0 ? void 0 : _a.lg, py: 1.5, mt: "0.375rem", minWidth: s.minW, maxH: "18rem", overflowY: "auto", overflowX: "hidden", sx: (0, scrollbar_1.scrollbarStyles)(theme.colors, "overlay"), style: ListStyle, children: options.map((option, index) => ((0, jsx_runtime_1.jsxs)(react_2.ListItem, { ref: (node) => {
|
|
228
218
|
itemRefs.current[index] = node;
|
|
229
219
|
}, role: "menuitem", tabIndex: index === activeIndex ? 0 : -1, onClick: () => {
|
|
230
220
|
handleListItemClick(option.id, option.label);
|
|
@@ -236,7 +226,7 @@ const Dropdown = (0, react_1.forwardRef)(({ dropDownButtonStyle, ButtonText, opt
|
|
|
236
226
|
bg: theme.colors.primary.opacity[8],
|
|
237
227
|
color: theme.colors.accentText,
|
|
238
228
|
}, borderBottom: divider
|
|
239
|
-
? `0.063rem solid ${theme.colors.boxborder[
|
|
229
|
+
? `0.063rem solid ${theme.colors.boxborder[200]}`
|
|
240
230
|
: undefined, sx: { "&:last-child": { borderBottom: "none" } }, style: ItemStyle, fontWeight: 500, children: [(option === null || option === void 0 ? void 0 : option.image) && ((0, jsx_runtime_1.jsx)(react_2.Box, { as: option.image, boxSize: s.img, flexShrink: 0, color: theme.colors.textMuted, style: ImageStyle })), (0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", fontSize: s.fontSize, isTruncated: true,
|
|
241
231
|
// fontWeight={400}
|
|
242
232
|
style: LabelStyle, children: option.label })] }, option.id))) }));
|
|
@@ -11,7 +11,7 @@ function VerifyEmailOtp({ resendMail, onChange, onComplete, placeholder = "", pi
|
|
|
11
11
|
// [800], not [300]: WCAG 1.4.11 needs >=3.0 for a control boundary against any
|
|
12
12
|
// named surface up to `muted` (lightest); [300] fails there, [800] clears all
|
|
13
13
|
// with margin.
|
|
14
|
-
borderColor: theme.colors.boxborder[
|
|
14
|
+
borderColor: theme.colors.boxborder[500], backgroundColor: theme.colors.background[200], _focus: {
|
|
15
15
|
borderColor: theme.colors.primary[500],
|
|
16
16
|
boxShadow: `0 0 0 0.063rem ${theme.colors.primary[500]}`,
|
|
17
17
|
} }, index))) }) }), (0, jsx_runtime_1.jsx)(react_1.Flex, { justify: "center", children: (0, jsx_runtime_1.jsxs)(react_1.Text, { fontSize: "sm", color: theme.colors.gray[600], children: ["Didn\u2019t receive the code?", " ", (0, jsx_runtime_1.jsx)(react_1.Button, { variant: "link", color: theme.colors.accentText, fontWeight: "semibold", onClick: resendMail, children: "Resend Code" })] }) })] }));
|
|
@@ -70,7 +70,7 @@ const FilePreview = ({ isOpen, onClose, fileUrl, fileName, fileType, hideDownloa
|
|
|
70
70
|
, {
|
|
71
71
|
// Chakra's default Modal drives its bg off `--modal-bg`, which flips to
|
|
72
72
|
// `colors.gray.700` under `_dark` — a light grey in our derived dark palettes.
|
|
73
|
-
bg: theme.colors.background[50], borderRadius: "2xl", overflow: "hidden", initial: { opacity: 0, scale: 0.96, y: 8 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.2, ease: "easeOut" }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", justify: "space-between", px: 4, py: 3, borderBottom: "1px solid", borderColor: theme.colors.boxborder[
|
|
73
|
+
bg: theme.colors.background[50], borderRadius: "2xl", overflow: "hidden", initial: { opacity: 0, scale: 0.96, y: 8 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.2, ease: "easeOut" }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", justify: "space-between", px: 4, py: 3, borderBottom: "1px solid", borderColor: theme.colors.boxborder[200], children: [(0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: fileName || "File", placement: "bottom", children: (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", fontWeight: 600, maxW: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: fileName || "Preview" }) }), (0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 1, children: [kind === "image" && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: "Zoom out", placement: "bottom", children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Zoom out", size: "sm", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Minus, { size: 16 }), onClick: () => setZoom((z) => Math.max(0.25, z - 0.25)) }) }), (0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: "Zoom in", placement: "bottom", children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Zoom in", size: "sm", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { size: 16 }), onClick: () => setZoom((z) => Math.min(4, z + 0.25)) }) }), (0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: "Rotate", placement: "bottom", children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Rotate", size: "sm", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.RotateCw, { size: 16 }), onClick: () => setRotation((r) => (r + 90) % 360) }) })] })), !hideDownload && ((0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: "Download", placement: "bottom", children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Download", size: "sm", variant: "ghost", color: theme.colors.semanticText.success, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Download, { size: 18 }), onClick: () => downloadFile(fileUrl, fileName) }) })), (0, jsx_runtime_1.jsx)(react_2.ModalCloseButton, { position: "static" })] })] }), (0, jsx_runtime_1.jsx)(react_2.ModalBody, { p: 5, children: renderBody() })] })] }));
|
|
74
74
|
};
|
|
75
75
|
exports.FilePreview = FilePreview;
|
|
76
76
|
/** Thumbnail with a hover "preview" affordance that opens {@link FilePreview}. */
|
|
@@ -175,10 +175,10 @@ panelPadding = 3, clearAllButton = true, onClearAllHandler,
|
|
|
175
175
|
const starColor = (0, accentText_1.accentTextOnCanvas)(theme.colors.orange, isRowSelected ? theme.colors.red[50] : theme.colors.background[50]);
|
|
176
176
|
return Array.from({ length: 5 }, (_, i) => ((0, jsx_runtime_1.jsx)(react_2.Box, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Star, { size: 16, color: starColor, fill: i < r ? starColor : "none" }) }, `star-${r}-${i}`)));
|
|
177
177
|
})() }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", color: theme.colors.text[500], children: "& Up" })] }) }, `rating-${r}`))) })) : null, section.searchable && ((0, jsx_runtime_1.jsx)(react_2.Input, { size: "xs", h: "26px", fontSize: "xs", placeholder: `Search ${section.label}...`, borderRadius: "md", bg: theme.colors.gray[50], border: "1px solid",
|
|
178
|
-
// boxborder[
|
|
178
|
+
// boxborder[500], not raw gray[200]: WCAG 1.4.11 needs >=3.0 for a control
|
|
179
179
|
// boundary against any named surface up to `muted` (lightest); gray[200] fails
|
|
180
180
|
// there in dark mode.
|
|
181
|
-
borderColor: theme.colors.boxborder[
|
|
181
|
+
borderColor: theme.colors.boxborder[500], _focus: { borderColor: theme.colors.red[400], boxShadow: "none" }, value: searchTerms[section.id] || "", onChange: (e) => {
|
|
182
182
|
const v = e.target.value;
|
|
183
183
|
setSearchTerms((prev) => ({ ...prev, [section.id]: v }));
|
|
184
184
|
if (v)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Input = void 0;
|
|
4
|
+
const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
|
|
5
|
+
const surfaceRungs_1 = require("../../Theme/tokens/builders/surfaceRungs");
|
|
4
6
|
exports.Input = {
|
|
5
7
|
baseStyle: {
|
|
6
8
|
field: {
|
|
@@ -51,8 +53,10 @@ exports.Input = {
|
|
|
51
53
|
bg: theme.colors.gray[50],
|
|
52
54
|
border: "0.063rem solid",
|
|
53
55
|
borderColor,
|
|
56
|
+
// `textMuted` is body copy, so a hint read as a filled value (6.59:1).
|
|
57
|
+
// Settled against the field's own bg to just clear of AA.
|
|
54
58
|
_placeholder: {
|
|
55
|
-
color: theme.colors.
|
|
59
|
+
color: (0, outlineRung_1.softenToContrast)(theme.colors.placeholder[500], theme.colors.gray[50], surfaceRungs_1.PLACEHOLDER_TEXT),
|
|
56
60
|
},
|
|
57
61
|
_hover: {
|
|
58
62
|
borderColor: primary,
|
|
@@ -43,6 +43,7 @@ const dnd_1 = require("@hello-pangea/dnd");
|
|
|
43
43
|
const lucide_react_1 = require("lucide-react");
|
|
44
44
|
const react_window_1 = require("react-window");
|
|
45
45
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
46
|
+
const scrollbar_1 = require("../../Theme/tokens/builders/scrollbar");
|
|
46
47
|
const usePreferences_1 = require("../../Hooks/usePreferences");
|
|
47
48
|
const AccountCard_1 = __importDefault(require("./AccountCard"));
|
|
48
49
|
const HeaderActions_1 = __importDefault(require("../Header/HeaderActions"));
|
|
@@ -402,37 +403,15 @@ const KanbanBoard = ({ data, customColumns, customizeColumn, onDrag, onDelete, o
|
|
|
402
403
|
: colors.boxborder[200]}`, transition: "background 0.15s ease, border-color 0.15s ease, width 0.2s ease", display: "flex", flexDirection: "column", flexShrink: 0, overflow: isColCollapsed ? "visible" : "hidden", height: `${containerHeight - 60}px`, onMouseEnter: () => setHoveredColumn(colId), onMouseLeave: () => setHoveredColumn(null), children: [isColCollapsed ? ((0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", align: "stretch", flex: "1", width: "100%", minH: 0, overflow: "visible", position: "relative", children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { as: "header", direction: "column", align: "center", flexShrink: 0, width: "100%", py: 3, px: 1, gap: 3, borderTop: "0.25rem solid", borderTopColor: (_a = column.color) !== null && _a !== void 0 ? _a : colors.primary[500], bg: colors.background[100], position: "relative", zIndex: 1, children: [enableColumnReorder && columnDragHandleProps ? ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", flexShrink: 0, cursor: "grab", ...columnDragHandleProps, children: (0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.GripVertical, size: 14, color: colors.textMuted }) })) : null, enableColumnCollapse && ((0, jsx_runtime_1.jsx)(react_2.Flex, { flexShrink: 0, w: "100%", justify: "center", bg: colors.background[100], position: "relative", zIndex: 3, children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Expand column", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { size: 14 }), variant: "ghost", size: "xs", minW: "1.5rem", h: "1.75rem", onClick: () => toggleColumnCollapsed(colId) }) })), (0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", fontWeight: "700", fontSize: "0.75rem", color: colors.text[700], sx: {
|
|
403
404
|
writingMode: "vertical-rl",
|
|
404
405
|
textOrientation: "mixed",
|
|
405
|
-
}, maxH: `${Math.max(120, containerHeight - 200)}px`, overflow: "hidden", lineHeight: "1.2", title: column.title, children: column.title }), (0, jsx_runtime_1.jsx)(react_2.Badge, { minW: "1.25rem", h: "1.25rem", borderRadius: "full", border: "1px solid", borderColor: colors.boxborder[200], display: "flex", backgroundColor: colors.background[100], alignItems: "center", justifyContent: "center", color: colors.text[900], fontWeight: 600, fontSize: "10px", children: (_b = column === null || column === void 0 ? void 0 : column.items) === null || _b === void 0 ? void 0 : _b.length })] }), column.customNode ? ((0, jsx_runtime_1.jsx)(react_2.Box, { flexShrink: 0, minH: COLLAPSED_CUSTOM_NODE_TOP_RESERVE, w: "100%", bg: colors.background[100], "aria-hidden": true })) : null, column.customNode ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "section", "aria-label": "Column summary", flex: "1", minH: 0, w: "100%", overflow: "visible", py: 2, display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "flex-start", bg: colors.background[100], position: "relative", zIndex: 2, children: (0, jsx_runtime_1.jsx)(react_2.Box, { position: "relative", transform: "rotate(90deg)", transformOrigin: "center center", marginTop: '1rem', children: (0, jsx_runtime_1.jsx)(react_2.VStack, { align: "stretch", spacing: 1, minW: "max-content", fontSize: "xs", color: colors.text[600], children: column.customNode() }) }) })) : ((0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1", minH: 0 }))] })) : ((0, jsx_runtime_1.jsxs)(react_2.Flex, { width: "100%", h: !isColCollapsed && !!((_c = column.customNode) === null || _c === void 0 ? void 0 : _c.call(column)) ? "auto" : "2.75rem", align: !isColCollapsed && !!((_d = column.customNode) === null || _d === void 0 ? void 0 : _d.call(column)) ? "flex-start" : "center", px: 3, py: 2, flexShrink: 0, justifyContent: "space-between", position: "relative", gap: 2, borderBottom: `0.063rem solid ${colors.boxborder[
|
|
406
|
+
}, maxH: `${Math.max(120, containerHeight - 200)}px`, overflow: "hidden", lineHeight: "1.2", title: column.title, children: column.title }), (0, jsx_runtime_1.jsx)(react_2.Badge, { minW: "1.25rem", h: "1.25rem", borderRadius: "full", border: "1px solid", borderColor: colors.boxborder[200], display: "flex", backgroundColor: colors.background[100], alignItems: "center", justifyContent: "center", color: colors.text[900], fontWeight: 600, fontSize: "10px", children: (_b = column === null || column === void 0 ? void 0 : column.items) === null || _b === void 0 ? void 0 : _b.length })] }), column.customNode ? ((0, jsx_runtime_1.jsx)(react_2.Box, { flexShrink: 0, minH: COLLAPSED_CUSTOM_NODE_TOP_RESERVE, w: "100%", bg: colors.background[100], "aria-hidden": true })) : null, column.customNode ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "section", "aria-label": "Column summary", flex: "1", minH: 0, w: "100%", overflow: "visible", py: 2, display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "flex-start", bg: colors.background[100], position: "relative", zIndex: 2, children: (0, jsx_runtime_1.jsx)(react_2.Box, { position: "relative", transform: "rotate(90deg)", transformOrigin: "center center", marginTop: '1rem', children: (0, jsx_runtime_1.jsx)(react_2.VStack, { align: "stretch", spacing: 1, minW: "max-content", fontSize: "xs", color: colors.text[600], children: column.customNode() }) }) })) : ((0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1", minH: 0 }))] })) : ((0, jsx_runtime_1.jsxs)(react_2.Flex, { width: "100%", h: !isColCollapsed && !!((_c = column.customNode) === null || _c === void 0 ? void 0 : _c.call(column)) ? "auto" : "2.75rem", align: !isColCollapsed && !!((_d = column.customNode) === null || _d === void 0 ? void 0 : _d.call(column)) ? "flex-start" : "center", px: 3, py: 2, flexShrink: 0, justifyContent: "space-between", position: "relative", gap: 2, borderBottom: `0.063rem solid ${colors.boxborder[200]}`, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", gap: 1, minW: 0, flex: "1", children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, minW: 0, children: [(0, jsx_runtime_1.jsx)(react_2.Box, { boxSize: "0.625rem", borderRadius: "full", bg: (_e = column.color) !== null && _e !== void 0 ? _e : colors.primary[500], flexShrink: 0 }), enableColumnReorder && columnDragHandleProps ? ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", flexShrink: 0, cursor: "grab", ...columnDragHandleProps, children: (0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.GripVertical, size: 14, color: colors.textMuted }) })) : null, (0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", fontWeight: "600", fontSize: "0.875rem", color: colors.text[700], noOfLines: 1, minW: 0, children: (0, jsx_runtime_1.jsx)(OverflowTooltipText_1.default, { placement: "top", children: column.title }) })] }), column.customNode ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "section", "aria-label": "Column summary", width: "100%", flexShrink: 0, fontSize: "xs", color: colors.text[600], children: (_f = column.customNode) === null || _f === void 0 ? void 0 : _f.call(column) })) : null] }), (0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", alignItems: "center", gap: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Badge, { minW: "1.5rem", h: "1.5rem", px: 2, borderRadius: "full", backgroundColor: colors.gray[100], display: "flex", alignItems: "center", justifyContent: "center", color: colors.text[700], fontWeight: 600, fontSize: "0.625rem", children: (_g = column === null || column === void 0 ? void 0 : column.items) === null || _g === void 0 ? void 0 : _g.length }), enableColumnCollapse && ((0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Collapse column", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { size: 14 }), variant: "ghost", size: "xs", minW: "1.5rem", h: "1.75rem", flexShrink: 0, onClick: () => toggleColumnCollapsed(colId) })), canDelete &&
|
|
406
407
|
hoveredColumn === colId &&
|
|
407
408
|
column.items.length > 0 && ((0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.Trash2, size: 16, cursor: "pointer", color: colors.text[600], _hover: { color: colors.semanticText.error }, onClick: () => handleColumnDelete(colId), transition: "color 0.2s ease", flexShrink: 0 })), !(canDelete &&
|
|
408
409
|
hoveredColumn === colId &&
|
|
409
410
|
column.items.length > 0) && (0, jsx_runtime_1.jsx)(react_2.Box, { width: "16px", height: "16px", flexShrink: 0 })] })] })), !isColCollapsed && ((0, jsx_runtime_1.jsxs)(react_2.Box, { px: 2, flex: "1", overflowY: "auto", width: "100%", sx: {
|
|
411
|
+
...(0, scrollbar_1.scrollbarStyles)(colors),
|
|
410
412
|
overflowY: "auto",
|
|
411
413
|
overflowX: "hidden",
|
|
412
|
-
|
|
413
|
-
scrollbarColor: `${colors.gray[300]} transparent`,
|
|
414
|
-
"&::-webkit-scrollbar": {
|
|
415
|
-
width: "6px !important",
|
|
416
|
-
height: "6px !important",
|
|
417
|
-
},
|
|
418
|
-
"&::-webkit-scrollbar-track": {
|
|
419
|
-
background: colors.gray[100],
|
|
420
|
-
borderRadius: "base",
|
|
421
|
-
marginTop: "4px",
|
|
422
|
-
marginBottom: "4px",
|
|
423
|
-
},
|
|
424
|
-
"&::-webkit-scrollbar-thumb": {
|
|
425
|
-
background: colors.gray[300],
|
|
426
|
-
borderRadius: "base",
|
|
427
|
-
border: "1px solid",
|
|
428
|
-
borderColor: colors.gray[100],
|
|
429
|
-
},
|
|
430
|
-
"&::-webkit-scrollbar-thumb:hover": {
|
|
431
|
-
background: colors.gray[400],
|
|
432
|
-
},
|
|
433
|
-
"&": {
|
|
434
|
-
scrollbarGutter: "stable both-edges",
|
|
435
|
-
},
|
|
414
|
+
"&": { scrollbarGutter: "stable both-edges" },
|
|
436
415
|
cursor: canDrag ? "grab" : "not-allowed",
|
|
437
416
|
}, children: [(noItems === null || noItems === void 0 ? void 0 : noItems.isVisible) && column.items.length === 0 && ((0, jsx_runtime_1.jsx)(NoItemsTemplate, { column: column, noItems: noItems, colors: colors })), virtualization ? ((0, jsx_runtime_1.jsx)(react_window_1.VariableSizeList, { ref: (el) => {
|
|
438
417
|
if (el)
|
|
@@ -447,26 +426,7 @@ const KanbanBoard = ({ data, customColumns, customizeColumn, onDrag, onDelete, o
|
|
|
447
426
|
return null;
|
|
448
427
|
const showAddColumn = Boolean(customizeColumn === null || customizeColumn === void 0 ? void 0 : customizeColumn.isVisible);
|
|
449
428
|
const hasAnyColumns = Object.keys(columns).length > 0;
|
|
450
|
-
const flexScrollSx =
|
|
451
|
-
"&::-webkit-scrollbar": {
|
|
452
|
-
height: "6px",
|
|
453
|
-
},
|
|
454
|
-
"&::-webkit-scrollbar-track": {
|
|
455
|
-
background: colors.gray[100],
|
|
456
|
-
borderRadius: "base",
|
|
457
|
-
margin: "0 4px",
|
|
458
|
-
},
|
|
459
|
-
"&::-webkit-scrollbar-thumb": {
|
|
460
|
-
background: colors.gray[400],
|
|
461
|
-
borderRadius: "base",
|
|
462
|
-
border: `1px solid ${colors.gray[100]}`,
|
|
463
|
-
},
|
|
464
|
-
"&::-webkit-scrollbar-thumb:hover": {
|
|
465
|
-
background: colors.gray[500],
|
|
466
|
-
},
|
|
467
|
-
scrollbarWidth: "thin",
|
|
468
|
-
scrollbarColor: `${colors.gray[400]} ${colors.gray[100]}`,
|
|
469
|
-
};
|
|
429
|
+
const flexScrollSx = (0, scrollbar_1.scrollbarStyles)(colors);
|
|
470
430
|
const addColumnBox = !isBoardLoading && showAddColumn && hasAnyColumns && ((0, jsx_runtime_1.jsx)(react_2.Box, { width: columnWidth, borderRadius: "lg", border: `0.125rem dashed ${colors.boxborder[500]}`, bg: colors.background[100], flexShrink: 0, height: `${containerHeight - 60}px`, display: "flex", alignItems: "center", justifyContent: "center", cursor: "pointer", _hover: { borderColor: colors.primary[500] }, onClick: () => { var _a; return (_a = customizeColumn === null || customizeColumn === void 0 ? void 0 : customizeColumn.onAddColumn) === null || _a === void 0 ? void 0 : _a.call(customizeColumn); }, children: (0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", align: "center", gap: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.Plus, size: 20, color: colors.text[700] }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", color: colors.text[600], children: (customizeColumn === null || customizeColumn === void 0 ? void 0 : customizeColumn.buttonText) || "Add column" })] }) }));
|
|
471
431
|
const columnsList = Object.entries(columns).map(([colId, column], colIndex) => {
|
|
472
432
|
const isColCollapsed = enableColumnCollapse && Boolean(collapsedColumns[colId]);
|
|
@@ -9,7 +9,7 @@ const lucide_react_1 = require("lucide-react");
|
|
|
9
9
|
const Button_1 = __importDefault(require("../Button/Button"));
|
|
10
10
|
const UpgradeButton_1 = __importDefault(require("../UpgradeButton/UpgradeButton"));
|
|
11
11
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
12
|
-
const
|
|
12
|
+
const gradientInk_1 = require("../../Theme/tokens/builders/gradientInk");
|
|
13
13
|
const limitReachedCopy_1 = require("./limitReachedCopy");
|
|
14
14
|
const KIND_ICON = {
|
|
15
15
|
record: lucide_react_1.Crown,
|
|
@@ -24,10 +24,9 @@ const LimitReachedModal = ({ isOpen, onClose, kind, limit = null, used = null, c
|
|
|
24
24
|
const copy = (0, limitReachedCopy_1.resolveLimitCopy)(kind, canManageBilling);
|
|
25
25
|
const usage = (0, limitReachedCopy_1.formatLimitUsage)(kind, used, limit);
|
|
26
26
|
const KindIcon = KIND_ICON[kind];
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const ink = (0, accentText_1.onGradient)(gradient.from, gradient.to, colors.white, colors.black);
|
|
27
|
+
// Header banner uses the brand gradient so it reads correctly across all 9 brands.
|
|
28
|
+
const gradient = (0, gradientInk_1.resolveGradient)(colors.gradient, colors.white, colors.black);
|
|
29
|
+
const ink = gradient.ink;
|
|
31
30
|
return ((0, jsx_runtime_1.jsxs)(react_1.Modal, { isOpen: isOpen, onClose: onClose, isCentered: true, size: "lg", motionPreset: "slideInBottom", children: [(0, jsx_runtime_1.jsx)(react_1.ModalOverlay, { backdropFilter: "blur(5px)" }), (0, jsx_runtime_1.jsxs)(react_1.ModalContent, { borderRadius: "xl", overflow: "hidden", boxShadow: "2xl", mx: 4, children: [(0, jsx_runtime_1.jsxs)(react_1.Box, { bgGradient: `linear(to-r, ${gradient.from}, ${gradient.to})`, color: ink, children: [(0, jsx_runtime_1.jsx)(react_1.ModalHeader, { pb: 4, children: (0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", children: [(0, jsx_runtime_1.jsx)(react_1.Icon, { as: KindIcon, boxSize: "24px", mr: "12px" }), (0, jsx_runtime_1.jsx)(react_1.Text, { fontSize: "xl", fontWeight: "bold", children: title !== null && title !== void 0 ? title : copy.title })] }) }), (0, jsx_runtime_1.jsx)(react_1.ModalCloseButton, { "aria-label": "Dismiss", color: ink, _hover: { opacity: 0.7 } })] }), (0, jsx_runtime_1.jsxs)(react_1.ModalBody, { py: 6, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { textAlign: "center", fontSize: "md", fontWeight: 600, color: colors.text[700], children: message !== null && message !== void 0 ? message : copy.message }), usage && ((0, jsx_runtime_1.jsx)(react_1.Text, { textAlign: "center", fontSize: "sm", color: colors.textMuted, mt: 2, children: usage })), features && features.length > 0 && ((0, jsx_runtime_1.jsx)(react_1.List, { spacing: 2, mt: 5, children: features.map((feature) => ((0, jsx_runtime_1.jsxs)(react_1.ListItem, { display: "flex", alignItems: "center", fontSize: "sm", color: colors.text[600], children: [(0, jsx_runtime_1.jsx)(react_1.ListIcon, { as: lucide_react_1.CheckCircle, color: colors.semanticText.success }), feature] }, feature))) }))] }), (0, jsx_runtime_1.jsx)(react_1.Divider, {}), (0, jsx_runtime_1.jsx)(react_1.ModalFooter, { children: (0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 3, children: [(0, jsx_runtime_1.jsx)(Button_1.default, { label: canManageBilling ? "Maybe later" : "Close", variant: "outline", colorScheme: "gray", size: "md", onClick: onClose }), canManageBilling && ((0, jsx_runtime_1.jsx)(UpgradeButton_1.default, { label: "Upgrade plan", size: "md", onClick: () => onUpgrade === null || onUpgrade === void 0 ? void 0 : onUpgrade() }))] }) })] })] }));
|
|
32
31
|
};
|
|
33
32
|
exports.default = LimitReachedModal;
|
|
@@ -61,7 +61,7 @@ function MultiSelect({ value, onValueChange, width = "100%", label = "label", is
|
|
|
61
61
|
// surface up to `muted` (lightest); [500] fails there, [800] clears all with margin.
|
|
62
62
|
borderColor: error || localError
|
|
63
63
|
? theme.colors.semanticText.error
|
|
64
|
-
: theme.colors.boxborder[
|
|
64
|
+
: theme.colors.boxborder[500], borderRadius: "lg", bg: theme.colors.gray[50], minH: s.minH, transition: "border-color 0.2s, box-shadow 0.2s", _focusWithin: {
|
|
65
65
|
borderColor: error || localError
|
|
66
66
|
? theme.colors.semanticText.error
|
|
67
67
|
: theme.colors.primary[500],
|
|
@@ -65,11 +65,11 @@ const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSear
|
|
|
65
65
|
focusOption(filtered.length - 1);
|
|
66
66
|
}
|
|
67
67
|
}, [activeIndex, filtered.length, focusOption]);
|
|
68
|
-
// boxborder[
|
|
68
|
+
// boxborder[500], not raw gray[200]: this styles a real `<button>` (Flex as="button" below),
|
|
69
69
|
// so its border is a control boundary — WCAG 1.4.11 needs >=3.0 against any named surface up
|
|
70
70
|
// to `muted` (lightest); gray[200] fails there in dark mode.
|
|
71
71
|
const triggerStyles = triggerVariant === "outline"
|
|
72
|
-
? { border: "1px solid", borderColor: theme.colors.boxborder[
|
|
72
|
+
? { border: "1px solid", borderColor: theme.colors.boxborder[500], bg: theme.colors.background[50] }
|
|
73
73
|
: triggerVariant === "subtle"
|
|
74
74
|
? { bg: theme.colors.gray[50] }
|
|
75
75
|
: { bg: "transparent" };
|
|
@@ -11,7 +11,7 @@ function PinInputs({ otp, mask, defaultValue, placeholder, manageFocus, errorBor
|
|
|
11
11
|
// [800], not [300]/[700]: WCAG 1.4.11 needs >=3.0 for a control boundary, measured
|
|
12
12
|
// against the parent surface — up to `muted` (lightest). [700] fails there (2.41-2.72);
|
|
13
13
|
// [800] clears all named surfaces with margin (3.44-3.90).
|
|
14
|
-
borderColor: theme.colors.boxborder[
|
|
14
|
+
borderColor: theme.colors.boxborder[500], _focus: {
|
|
15
15
|
borderColor: theme.colors.primary[500],
|
|
16
16
|
boxShadow: `0 0 0 0.063rem ${theme.colors.primary[500]}`,
|
|
17
17
|
} }, index))) }) })] }));
|
|
@@ -4,7 +4,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
4
4
|
const react_1 = require("@chakra-ui/react");
|
|
5
5
|
const lucide_react_1 = require("lucide-react");
|
|
6
6
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
7
|
-
const
|
|
7
|
+
const gradientInk_1 = require("../../Theme/tokens/builders/gradientInk");
|
|
8
8
|
const planPillGradient_1 = require("./planPillGradient");
|
|
9
9
|
const TONE_ICON = {
|
|
10
10
|
normal: lucide_react_1.Sparkles,
|
|
@@ -15,15 +15,15 @@ const PlanPill = ({ label, mobileLabel, status, tone = "normal", icon, gradient,
|
|
|
15
15
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
16
16
|
const c = theme.colors;
|
|
17
17
|
const toneGradient = {
|
|
18
|
-
normal:
|
|
18
|
+
normal: c.gradient,
|
|
19
19
|
warning: (0, planPillGradient_1.statusGradient)(c.semantic.warning),
|
|
20
20
|
danger: (0, planPillGradient_1.statusGradient)(c.semantic.error),
|
|
21
21
|
};
|
|
22
|
-
const resolved = (0,
|
|
23
|
-
const ink =
|
|
22
|
+
const resolved = (0, gradientInk_1.resolveGradient)(gradient !== null && gradient !== void 0 ? gradient : toneGradient[tone], c.white, c.black);
|
|
23
|
+
const ink = resolved.ink;
|
|
24
24
|
const Icon = icon === undefined ? TONE_ICON[tone] : icon;
|
|
25
25
|
const hasMobile = !!mobileLabel && mobileLabel !== label;
|
|
26
|
-
return ((0, jsx_runtime_1.jsxs)(react_1.Box, { as: "button", type: "button", "aria-label": ariaLabel || (status ? `${label} — ${status}` : label), onClick: onClick, display: "inline-flex", alignItems: "center", gap: "7px", pl: "12px", pr: status ? "5px" : "12px", py: "3px", bgImage:
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Box, { as: "button", type: "button", "aria-label": ariaLabel || (status ? `${label} — ${status}` : label), onClick: onClick, display: "inline-flex", alignItems: "center", gap: "7px", pl: "12px", pr: status ? "5px" : "12px", py: "3px", bgImage: (0, gradientInk_1.gradientCss)(resolved), color: ink, borderRadius: "full", whiteSpace: "nowrap", cursor: "pointer", transition: "transform 0.2s ease, box-shadow 0.2s ease", _hover: {
|
|
27
27
|
transform: "translateY(-1px)",
|
|
28
28
|
boxShadow: `0 6px 18px ${resolved.from}59`,
|
|
29
29
|
}, _focusVisible: {
|
|
@@ -5,20 +5,8 @@ export type Gradient = {
|
|
|
5
5
|
};
|
|
6
6
|
export declare const STATUS_INK = "#ffffff";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* not
|
|
10
|
-
*
|
|
11
|
-
* Its tone carries meaning (normal / warning / danger), and a brand gradient can
|
|
12
|
-
* collide with that: rosewood's `#c74962 → #ea0727` is red, so a healthy plan
|
|
13
|
-
* rendered as if it had expired. Greyscale brands failed the other way, sinking
|
|
14
|
-
* the badge into the header chrome.
|
|
15
|
-
*
|
|
16
|
-
* One accent for both color modes is deliberate: a lighter dark-mode variant was
|
|
17
|
-
* tried and flipped `onGradient`'s ink to black, which read as a washed-out candy
|
|
18
|
-
* pill on dark chrome. These stops keep white ink in both modes, so the badge looks
|
|
19
|
-
* like the same component everywhere. Verified at AA (>= 4.5:1) on both stops.
|
|
20
|
-
*
|
|
21
|
-
* Consumers who genuinely want another colour still pass `gradient`.
|
|
8
|
+
* Opt-in accent for consumers who want a fixed badge colour instead of the brand `gradient`.
|
|
9
|
+
* One hue, like every brand gradient — a second hue reads as a status change, not a style.
|
|
22
10
|
*/
|
|
23
11
|
export declare const ACCENT_GRADIENT: Gradient;
|
|
24
12
|
/**
|
|
@@ -5,22 +5,10 @@ const statusTone_1 = require("../../Theme/tokens/builders/statusTone");
|
|
|
5
5
|
const color_1 = require("../../Theme/tokens/builders/color");
|
|
6
6
|
exports.STATUS_INK = "#ffffff";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* not
|
|
10
|
-
*
|
|
11
|
-
* Its tone carries meaning (normal / warning / danger), and a brand gradient can
|
|
12
|
-
* collide with that: rosewood's `#c74962 → #ea0727` is red, so a healthy plan
|
|
13
|
-
* rendered as if it had expired. Greyscale brands failed the other way, sinking
|
|
14
|
-
* the badge into the header chrome.
|
|
15
|
-
*
|
|
16
|
-
* One accent for both color modes is deliberate: a lighter dark-mode variant was
|
|
17
|
-
* tried and flipped `onGradient`'s ink to black, which read as a washed-out candy
|
|
18
|
-
* pill on dark chrome. These stops keep white ink in both modes, so the badge looks
|
|
19
|
-
* like the same component everywhere. Verified at AA (>= 4.5:1) on both stops.
|
|
20
|
-
*
|
|
21
|
-
* Consumers who genuinely want another colour still pass `gradient`.
|
|
8
|
+
* Opt-in accent for consumers who want a fixed badge colour instead of the brand `gradient`.
|
|
9
|
+
* One hue, like every brand gradient — a second hue reads as a status change, not a style.
|
|
22
10
|
*/
|
|
23
|
-
exports.ACCENT_GRADIENT = { from: "#
|
|
11
|
+
exports.ACCENT_GRADIENT = { from: "#8b3fc8", to: "#762d9d" };
|
|
24
12
|
/**
|
|
25
13
|
* Sinks both stops until WHITE ink clears AA, keeping each stop's hue. Any mid-tone gradient —
|
|
26
14
|
* a brand `gradient` token, a status scale — otherwise flips `onGradient` to black ink, so the
|
|
@@ -109,7 +109,7 @@ const ProductPrice = ({ options, size, onSelect, rightSlot }) => {
|
|
|
109
109
|
}, templateColumns: { base: '1fr auto', md: '1fr auto' },
|
|
110
110
|
// columnGap={{ base: 2, md: 3 }}
|
|
111
111
|
// rowGap={{ base: 1.5, md: 2 }}
|
|
112
|
-
alignItems: "center", children: [(0, jsx_runtime_1.jsx)(react_2.HStack, { gridColumn: 1, gridRow: 1, spacing: 2, align: "center", minW: 0, mb: 0, children: (0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1", minW: 0, children: (0, jsx_runtime_1.jsx)(OverflowTooltipText_1.default, { placement: "top", maxWidth: "100%", fontSize: { base: "xs", md: "sm" }, fontWeight: "medium", whiteSpace: "nowrap", children: option.label }) }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { gridColumn: 1, gridRow: 2, mt: 0, textAlign: "left", children: (0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 2, align: "center", children: [option.offer > 0 && ((0, jsx_runtime_1.jsx)(react_2.Badge, { bg: theme.colors.green[100], color: (0, accentText_1.accentTextOnCanvas)(theme.colors.green, theme.colors.green[100]), borderRadius: "md", px: { base: 0, md: 0.5 }, py: { base: 0, md: 0.25 }, fontWeight: "bold", fontSize: "10px", flexShrink: 0, children: isMobile ? `${option.offer}%` : `${option.offer}% OFF` })), (0, jsx_runtime_1.jsxs)(react_2.Text, { fontSize: "sm", fontWeight: "bold", color: (0, accentText_1.accentTextOnCanvas)(theme.colors.red, isSelected ? theme.colors.red[50] : theme.colors.background[50]), whiteSpace: "nowrap", children: ["\u20B9", discounted] }), option.offer > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Text, { fontSize: "xs", color: theme.colors.textMuted, textDecoration: "line-through", whiteSpace: "nowrap", children: ["\u20B9", option.price] }))] }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { gridColumn: 2, gridRow: 1, ml: { base: 0, md: 0 }, justifySelf: "end", w: { base: "0.625rem", md: "0.75rem" }, h: { base: "0.625rem", md: "0.75rem" }, minW: { base: "0.625rem", md: "0.75rem" }, borderRadius: "full", border: "0.125rem solid", borderColor: isSelected ? theme.colors.red[500] : theme.colors.boxborder[
|
|
112
|
+
alignItems: "center", children: [(0, jsx_runtime_1.jsx)(react_2.HStack, { gridColumn: 1, gridRow: 1, spacing: 2, align: "center", minW: 0, mb: 0, children: (0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1", minW: 0, children: (0, jsx_runtime_1.jsx)(OverflowTooltipText_1.default, { placement: "top", maxWidth: "100%", fontSize: { base: "xs", md: "sm" }, fontWeight: "medium", whiteSpace: "nowrap", children: option.label }) }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { gridColumn: 1, gridRow: 2, mt: 0, textAlign: "left", children: (0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 2, align: "center", children: [option.offer > 0 && ((0, jsx_runtime_1.jsx)(react_2.Badge, { bg: theme.colors.green[100], color: (0, accentText_1.accentTextOnCanvas)(theme.colors.green, theme.colors.green[100]), borderRadius: "md", px: { base: 0, md: 0.5 }, py: { base: 0, md: 0.25 }, fontWeight: "bold", fontSize: "10px", flexShrink: 0, children: isMobile ? `${option.offer}%` : `${option.offer}% OFF` })), (0, jsx_runtime_1.jsxs)(react_2.Text, { fontSize: "sm", fontWeight: "bold", color: (0, accentText_1.accentTextOnCanvas)(theme.colors.red, isSelected ? theme.colors.red[50] : theme.colors.background[50]), whiteSpace: "nowrap", children: ["\u20B9", discounted] }), option.offer > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Text, { fontSize: "xs", color: theme.colors.textMuted, textDecoration: "line-through", whiteSpace: "nowrap", children: ["\u20B9", option.price] }))] }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { gridColumn: 2, gridRow: 1, ml: { base: 0, md: 0 }, justifySelf: "end", w: { base: "0.625rem", md: "0.75rem" }, h: { base: "0.625rem", md: "0.75rem" }, minW: { base: "0.625rem", md: "0.75rem" }, borderRadius: "full", border: "0.125rem solid", borderColor: isSelected ? theme.colors.red[500] : theme.colors.boxborder[500], bg: theme.colors.background[50], display: "flex", alignItems: "center", justifyContent: "center", boxShadow: "none", children: isSelected && ((0, jsx_runtime_1.jsx)(react_2.Box, { w: { base: "0.25rem", md: "0.3125rem" }, h: { base: "0.25rem", md: "0.3125rem" }, bg: theme.colors.red[500], borderRadius: "full" })) })] }, option.var_id));
|
|
113
113
|
}) }) })), (0, jsx_runtime_1.jsxs)(react_2.Flex, { mt: 2, w: "full", gap: 3, direction: { base: "column", md: "row" }, align: { base: "flex-start", md: "center" }, justify: { base: "flex-start", md: rightSlot ? "space-between" : "flex-start" }, children: [(0, jsx_runtime_1.jsxs)(react_2.Box, { display: "flex", alignItems: "center", fontSize: cfg.price, gap: 2, minW: 0, children: [selected.offer > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Text, { color: theme.colors.textMuted, textDecoration: "line-through", children: ["\u20B9", selected.price] })), (0, jsx_runtime_1.jsxs)(react_2.Text, { color: (0, accentText_1.accentTextOnCanvas)(theme.colors.red, theme.colors.backgroundColor.main), fontWeight: "semibold", children: ["\u20B9", getDiscountedPrice(selected)] })] }), rightSlot && ((0, jsx_runtime_1.jsx)(react_2.Box, { flexShrink: 0, mt: { base: 2, md: 0 }, children: rightSlot }))] })] }));
|
|
114
114
|
};
|
|
115
115
|
exports.default = ProductPrice;
|
|
@@ -23,7 +23,7 @@ const ProfileCardFooter = ({ children, }) => {
|
|
|
23
23
|
exports.ProfileCardFooter = ProfileCardFooter;
|
|
24
24
|
function ProfileCard({ maxW, align, variant, direction, justify, children, size, color, overflow, dividercolor, dividersize = "0.5px", dividervariant = "solid", CardStyle, CardHeaderStyle, CardBodyStyle, borderTopColor, borderLeftColor, }) {
|
|
25
25
|
const { colors } = (0, useCustomTheme_1.useCustomTheme)();
|
|
26
|
-
const resolvedDividerColor = dividercolor !== null && dividercolor !== void 0 ? dividercolor : colors.border[
|
|
26
|
+
const resolvedDividerColor = dividercolor !== null && dividercolor !== void 0 ? dividercolor : colors.border[200];
|
|
27
27
|
const accentBorder = `2px solid ${colors.primary[500]}`;
|
|
28
28
|
const isReactElement = (child) => {
|
|
29
29
|
return child !== null && typeof child === "object" && "type" in child;
|
|
@@ -38,7 +38,7 @@ function ProfilePhotoViewer({ photoUrl, onPhotoChange, imageWidth = "100px", ima
|
|
|
38
38
|
// [800], not [300]: the edit IconButton's border is a control boundary — WCAG 1.4.11 needs
|
|
39
39
|
// >=3.0 against any named surface up to `muted` (lightest); [300] fails there, [800] clears
|
|
40
40
|
// all with margin.
|
|
41
|
-
const border = c.boxborder[
|
|
41
|
+
const border = c.boxborder[500];
|
|
42
42
|
// Shared modern frame for whichever media we render (photo / pdf / fallback).
|
|
43
43
|
const mediaFrame = {
|
|
44
44
|
boxSize: imageWidth,
|
|
@@ -17,7 +17,7 @@ const ReorderList = ({ label = "", items, onReorder, showRemoveIcon = false, onR
|
|
|
17
17
|
};
|
|
18
18
|
return ((0, jsx_runtime_1.jsxs)(react_1.Box, { borderWidth: "0.063rem", borderRadius: "md", px: 3, py: 2, bg: colors.background[50], children: [(0, jsx_runtime_1.jsxs)(react_1.Box, { display: "flex", alignItems: "center", gap: 2, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.BetweenHorizonalStart, {}), (0, jsx_runtime_1.jsx)(react_1.Text, { fontFamily: "open-sans, sans-serif", fontWeight: 600, fontSize: 14, lineHeight: "100%", letterSpacing: "4%", textTransform: "uppercase", py: 4, children: label })] }), (0, jsx_runtime_1.jsx)(react_1.Divider, {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(dnd_1.DragDropContext, { onDragEnd: handleDragEnd, children: (0, jsx_runtime_1.jsx)(dnd_1.Droppable, { droppableId: "item-list", direction: "horizontal", children: (provided) => ((0, jsx_runtime_1.jsxs)(react_1.HStack, { ref: provided.innerRef, ...provided.droppableProps, spacing: 4, overflowX: "auto", children: [items.map((item, index) => ((0, jsx_runtime_1.jsx)(dnd_1.Draggable, { draggableId: item.id, index: index, children: (provided) => {
|
|
19
19
|
var _a;
|
|
20
|
-
return ((0, jsx_runtime_1.jsxs)(react_1.Box, { ref: provided.innerRef, ...provided.draggableProps, ...provided.dragHandleProps, position: "relative", border: "0.063rem solid", borderColor: colors.boxborder[
|
|
20
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Box, { ref: provided.innerRef, ...provided.draggableProps, ...provided.dragHandleProps, position: "relative", border: "0.063rem solid", borderColor: colors.boxborder[200], borderRadius: "md", overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(react_1.Image, { src: item.previewUrl, alt: (_a = item.name) !== null && _a !== void 0 ? _a : `item-${index}`, boxSize: "7.5rem", objectFit: "cover" }), (0, jsx_runtime_1.jsx)(react_1.IconButton, { icon: (0, jsx_runtime_1.jsx)(lucide_react_1.GripVertical, { size: 16, color: colors.textMuted }), "aria-label": "Drag", size: "sm", position: "absolute", top: 1, left: 1, variant: "ghost" }), (0, jsx_runtime_1.jsx)(react_1.Badge, { position: "absolute", colorScheme: "gray", variant: "solid", bottom: 1, right: 1, children: index + 1 }), showRemoveIcon && ((0, jsx_runtime_1.jsx)(react_1.IconButton, { icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 16, color: colors.semanticText.error }), "aria-label": "Remove", size: "sm", position: "absolute", top: 1, right: 1, variant: "ghost", onClick: () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(item.id) }))] }));
|
|
21
21
|
} }, item.id))), provided.placeholder] })) }) })] }));
|
|
22
22
|
};
|
|
23
23
|
exports.default = ReorderList;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { ScrollbarVariant } from "../../Theme/tokens/builders/scrollbar";
|
|
3
|
+
export interface ScrollbarBoxProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
height?: string;
|
|
6
|
+
maxHeight?: string;
|
|
7
|
+
overflowX?: string;
|
|
8
|
+
overflowY?: string;
|
|
9
|
+
variant?: ScrollbarVariant;
|
|
10
|
+
scrollContainerRef?: React.Ref<HTMLDivElement> | null;
|
|
11
|
+
}
|
|
12
|
+
declare const ScrollbarBox: React.FC<ScrollbarBoxProps>;
|
|
13
|
+
export default ScrollbarBox;
|