@smg-automotive/components 25.10.0-migrate-topListingBadge-component.1 → 25.10.0-migrate-discrete-slider.1

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.
Files changed (69) hide show
  1. package/dist/bin/cli +106 -18
  2. package/dist/cjs/components/discreteSlider/index.d.ts +14 -0
  3. package/dist/cjs/components/discreteSlider/index.d.ts.map +1 -0
  4. package/dist/cjs/components/filterPatterns/dialog/OpenFilterButton.d.ts +12 -4
  5. package/dist/cjs/components/filterPatterns/dialog/OpenFilterButton.d.ts.map +1 -1
  6. package/dist/cjs/components/filterPatterns/dialog/index.d.ts.map +1 -1
  7. package/dist/cjs/components/filterPatterns/dialog/props.d.ts +7 -2
  8. package/dist/cjs/components/filterPatterns/dialog/props.d.ts.map +1 -1
  9. package/dist/cjs/components/formControlSection/index.d.ts +11 -0
  10. package/dist/cjs/components/formControlSection/index.d.ts.map +1 -0
  11. package/dist/cjs/components/index.d.ts +3 -0
  12. package/dist/cjs/components/index.d.ts.map +1 -1
  13. package/dist/cjs/components/menu/index.d.ts +21 -0
  14. package/dist/cjs/components/menu/index.d.ts.map +1 -0
  15. package/dist/cjs/index.js +212 -0
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/themes/shared/index.d.ts +2 -0
  18. package/dist/cjs/themes/shared/index.d.ts.map +1 -1
  19. package/dist/cjs/themes/shared/slotRecipes/index.d.ts +2 -0
  20. package/dist/cjs/themes/shared/slotRecipes/index.d.ts.map +1 -1
  21. package/dist/cjs/themes/shared/slotRecipes/menu.d.ts +2 -0
  22. package/dist/cjs/themes/shared/slotRecipes/menu.d.ts.map +1 -0
  23. package/dist/cjs/themes/shared/slotRecipes/slider.d.ts +2 -0
  24. package/dist/cjs/themes/shared/slotRecipes/slider.d.ts.map +1 -0
  25. package/dist/esm/components/discreteSlider/index.d.ts +14 -0
  26. package/dist/esm/components/discreteSlider/index.d.ts.map +1 -0
  27. package/dist/esm/components/discreteSlider/index.js +46 -0
  28. package/dist/esm/components/discreteSlider/index.js.map +1 -0
  29. package/dist/esm/components/filterPatterns/dialog/OpenFilterButton.d.ts +12 -4
  30. package/dist/esm/components/filterPatterns/dialog/OpenFilterButton.d.ts.map +1 -1
  31. package/dist/esm/components/filterPatterns/dialog/index.d.ts.map +1 -1
  32. package/dist/esm/components/filterPatterns/dialog/props.d.ts +7 -2
  33. package/dist/esm/components/filterPatterns/dialog/props.d.ts.map +1 -1
  34. package/dist/esm/components/formControlSection/index.d.ts +11 -0
  35. package/dist/esm/components/formControlSection/index.d.ts.map +1 -0
  36. package/dist/esm/components/formControlSection/index.js +190 -0
  37. package/dist/esm/components/formControlSection/index.js.map +1 -0
  38. package/dist/esm/components/index.d.ts +3 -0
  39. package/dist/esm/components/index.d.ts.map +1 -1
  40. package/dist/esm/components/menu/index.d.ts +21 -0
  41. package/dist/esm/components/menu/index.d.ts.map +1 -0
  42. package/dist/esm/components/menu/index.js +193 -0
  43. package/dist/esm/components/menu/index.js.map +1 -0
  44. package/dist/esm/components/themeProvider/index.js +2 -0
  45. package/dist/esm/components/themeProvider/index.js.map +1 -1
  46. package/dist/esm/components/tooltip/index.js +25 -0
  47. package/dist/esm/components/tooltip/index.js.map +1 -0
  48. package/dist/esm/index.js +5 -0
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/themes/shared/index.d.ts +2 -0
  51. package/dist/esm/themes/shared/index.d.ts.map +1 -1
  52. package/dist/esm/themes/shared/slotRecipes/index.d.ts +2 -0
  53. package/dist/esm/themes/shared/slotRecipes/index.d.ts.map +1 -1
  54. package/dist/esm/themes/shared/slotRecipes/index.js +4 -0
  55. package/dist/esm/themes/shared/slotRecipes/index.js.map +1 -1
  56. package/dist/esm/themes/shared/slotRecipes/menu.d.ts +2 -0
  57. package/dist/esm/themes/shared/slotRecipes/menu.d.ts.map +1 -0
  58. package/dist/esm/themes/shared/slotRecipes/menu.js +64 -0
  59. package/dist/esm/themes/shared/slotRecipes/menu.js.map +1 -0
  60. package/dist/esm/themes/shared/slotRecipes/slider.d.ts +2 -0
  61. package/dist/esm/themes/shared/slotRecipes/slider.d.ts.map +1 -0
  62. package/dist/esm/themes/shared/slotRecipes/slider.js +54 -0
  63. package/dist/esm/themes/shared/slotRecipes/slider.js.map +1 -0
  64. package/dist/index.d.ts +45 -5
  65. package/package.json +4 -5
  66. package/dist/cjs/components/topListingBadge/index.d.ts +0 -7
  67. package/dist/cjs/components/topListingBadge/index.d.ts.map +0 -1
  68. package/dist/esm/components/topListingBadge/index.d.ts +0 -7
  69. package/dist/esm/components/topListingBadge/index.d.ts.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -805,6 +805,56 @@ var switchRecipe = react$1.defineSlotRecipe({
805
805
  },
806
806
  });
807
807
 
808
+ var sliderSlotRecipe = react$1.defineSlotRecipe({
809
+ className: 'chakra-slider',
810
+ slots: ['root', 'control', 'track', 'range', 'markerGroup', 'thumb'],
811
+ base: {
812
+ root: {
813
+ display: 'flex',
814
+ flexDirection: 'column',
815
+ fontSize: 'base',
816
+ '--slider-marker-inset': '4px',
817
+ '--slider-marker-track': '5px',
818
+ '--slider-thumb-border': '1px',
819
+ '--slider-thumb-boxShadow': '0 0 0 8px #2988E14D',
820
+ },
821
+ control: {
822
+ display: 'inline-flex',
823
+ },
824
+ track: {
825
+ flex: '1',
826
+ height: 'var(--slider-marker-track)',
827
+ bg: 'gray.300',
828
+ borderRadius: 'full',
829
+ },
830
+ range: {
831
+ height: 'var(--slider-marker-inset)',
832
+ bg: 'gray.800',
833
+ borderRadius: 'full',
834
+ },
835
+ markerGroup: {
836
+ position: 'absolute!',
837
+ top: '2xl',
838
+ insetInline: 'var(--slider-marker-inset)',
839
+ },
840
+ thumb: {
841
+ width: 'sm',
842
+ height: 'sm',
843
+ borderRadius: 'full',
844
+ borderWidth: 'var(--slider-thumb-border)',
845
+ borderColor: 'gray.400',
846
+ backgroundColor: 'white',
847
+ translate: '0 -40%',
848
+ _hover: {
849
+ cursor: 'pointer',
850
+ },
851
+ _active: {
852
+ boxShadow: 'var(--slider-thumb-boxShadow)',
853
+ },
854
+ },
855
+ },
856
+ });
857
+
808
858
  var simpleHeaderRecipe = react$1.defineSlotRecipe({
809
859
  className: 'chakra-simple-header',
810
860
  slots: ['header', 'mainContainer', 'title', 'iconWrapper'],
@@ -1383,6 +1433,66 @@ var numberInputRecipe = react$1.defineSlotRecipe({
1383
1433
  },
1384
1434
  });
1385
1435
 
1436
+ var maximumScrollbarWidth = 20;
1437
+ var content = react$1.defineStyle({
1438
+ '--max-width': "calc(100vw - ".concat(maximumScrollbarWidth, "px)"),
1439
+ bg: 'white',
1440
+ boxShadow: 'sm',
1441
+ color: 'inherit',
1442
+ minW: '4xl',
1443
+ maxW: 'var(--max-width)',
1444
+ py: 'xxs',
1445
+ zIndex: 'dropdown',
1446
+ borderRadius: 'sm',
1447
+ border: '1px',
1448
+ borderColor: 'gray.200',
1449
+ cursor: 'pointer',
1450
+ _focusVisible: {
1451
+ outline: 'none',
1452
+ },
1453
+ });
1454
+ var item = react$1.defineStyle({
1455
+ paddingY: 'md',
1456
+ paddingX: 'lg',
1457
+ cursor: 'pointer',
1458
+ _focus: {
1459
+ bg: 'gray.100',
1460
+ },
1461
+ _focusVisible: {
1462
+ outline: 'none',
1463
+ },
1464
+ _active: {
1465
+ bg: 'blue.100',
1466
+ },
1467
+ _expanded: {
1468
+ bg: 'gray.100',
1469
+ },
1470
+ _hover: {
1471
+ bg: 'gray.100',
1472
+ },
1473
+ _disabled: {
1474
+ opacity: '40',
1475
+ cursor: 'notAllowed',
1476
+ },
1477
+ });
1478
+ var trigger = react$1.defineStyle({
1479
+ display: 'inline-flex',
1480
+ padding: '0',
1481
+ cursor: 'pointer',
1482
+ _focusVisible: {
1483
+ outline: 'none',
1484
+ },
1485
+ });
1486
+ var menuRecipe = react$1.defineSlotRecipe({
1487
+ slots: ['content', 'item', 'trigger'],
1488
+ className: 'chakra-menu',
1489
+ base: {
1490
+ content: content,
1491
+ item: item,
1492
+ trigger: trigger,
1493
+ },
1494
+ });
1495
+
1386
1496
  var markedTextRecipe = react$1.defineSlotRecipe({
1387
1497
  className: 'chakra-marked-text',
1388
1498
  slots: ['container', 'text', 'mark'],
@@ -2214,7 +2324,9 @@ var slotRecipes = {
2214
2324
  popoverFilter: popoverFilterRecipe,
2215
2325
  numberInput: numberInputRecipe,
2216
2326
  radio: radioRecipe,
2327
+ slider: sliderSlotRecipe,
2217
2328
  pagination: paginationRecipe,
2329
+ menu: menuRecipe,
2218
2330
  };
2219
2331
 
2220
2332
  var textareaRecipe = react$1.defineRecipe({
@@ -6489,6 +6601,27 @@ var Chip = function (_a) {
6489
6601
  };
6490
6602
  Chip.displayName = 'Chip';
6491
6603
 
6604
+ var Menu = function (_a) {
6605
+ var title = _a.title, items = _a.items, _b = _a.fontWeightTitle, fontWeightTitle = _b === void 0 ? 'regular' : _b, _c = _a.offset, offset = _c === void 0 ? [8, 0] : _c, menuColor = _a.menuColor, _d = _a.showChevron, showChevron = _d === void 0 ? true : _d, icon = _a.icon, _e = _a.iconSpacing, iconSpacing = _e === void 0 ? 'sm' : _e, placement = _a.placement;
6606
+ var recipe = react$1.useSlotRecipe({ key: 'menu' });
6607
+ var styles = recipe();
6608
+ var _f = offset[0], mainAxis = _f === void 0 ? 0 : _f, _g = offset[1], crossAxis = _g === void 0 ? 0 : _g;
6609
+ return (React.createElement(react$1.Menu.Root, { positioning: { placement: placement, offset: { mainAxis: mainAxis, crossAxis: crossAxis } } },
6610
+ React.createElement(react$1.Menu.Context, null, function (_a) {
6611
+ var open = _a.open;
6612
+ return (React.createElement(react$1.Menu.Trigger, { css: styles.trigger, gap: iconSpacing, fontWeight: fontWeightTitle, color: open ? 'blue.700' : menuColor },
6613
+ icon,
6614
+ title,
6615
+ showChevron ? (React.createElement(ChevronDownSmallIcon, { transition: "transform", transform: open ? 'rotate(180deg)' : 'rotate(0deg)' })) : null));
6616
+ }),
6617
+ React.createElement(react$1.Portal, null,
6618
+ React.createElement(react$1.Menu.Positioner, null,
6619
+ React.createElement(react$1.Menu.Content, { css: styles.content }, items.map(function (_a) {
6620
+ var onClick = _a.onClick, text = _a.text, value = _a.value;
6621
+ return (React.createElement(react$1.Menu.Item, __assign({ key: "menuItem-".concat(value), value: value, onSelect: onClick, css: styles.item }, (menuColor && { color: menuColor })), text));
6622
+ }))))));
6623
+ };
6624
+
6492
6625
  var MobileOnlyAccordion = function (props) {
6493
6626
  var children = props.children, restProps = __rest(props, ["children"]);
6494
6627
  return React.createElement(Accordion, __assign({}, restProps), children);
@@ -7780,6 +7913,82 @@ var TopVehicleSharedBadge = function (_a) {
7780
7913
  aspectRatio ? (React.createElement(AspectRatio, { ratio: aspectRatio }, children)) : (children)));
7781
7914
  };
7782
7915
 
7916
+ var emptyItemOffset = 0;
7917
+ var firstItemOffset = 1;
7918
+ var getItemOffset = function (applyIndentation) {
7919
+ return applyIndentation ? firstItemOffset : emptyItemOffset;
7920
+ };
7921
+ var getSliderStepValue = function (marks, applyIndentation, value) {
7922
+ var selectedMarkIndex = marks.findIndex(function (mark) { return mark.value === value; });
7923
+ if (selectedMarkIndex < emptyItemOffset) {
7924
+ return getItemOffset(applyIndentation);
7925
+ }
7926
+ return selectedMarkIndex + getItemOffset(applyIndentation);
7927
+ };
7928
+ var getSliderMarks = function (marks, applyIndentation) {
7929
+ return marks.map(function (mark, index) { return (__assign(__assign({}, mark), { stepValue: index + getItemOffset(applyIndentation) })); });
7930
+ };
7931
+ var DiscreteSlider = function (_a) {
7932
+ var marks = _a.marks, _b = _a.applyIndentation, applyIndentation = _b === void 0 ? true : _b, onValueChanged = _a.onValueChanged, value = _a.value;
7933
+ var sliderStepValue = getSliderStepValue(marks, applyIndentation, value);
7934
+ var sliderMarks = getSliderMarks(marks, applyIndentation);
7935
+ var handleOnChange = function (newStepValue) {
7936
+ var _a;
7937
+ if (applyIndentation && newStepValue < firstItemOffset)
7938
+ return;
7939
+ var newSliderMark = (_a = sliderMarks.find(function (mark) { return mark.stepValue === newStepValue; })) === null || _a === void 0 ? void 0 : _a.value;
7940
+ onValueChanged(newSliderMark);
7941
+ };
7942
+ return (React.createElement(react$1.Slider.Root, { step: 1, max: sliderMarks.length - 1 + getItemOffset(applyIndentation), value: [sliderStepValue], onValueChange: function (details) { var _a; return handleOnChange((_a = details.value[0]) !== null && _a !== void 0 ? _a : sliderStepValue); } },
7943
+ React.createElement(react$1.Slider.Control, null,
7944
+ React.createElement(react$1.Slider.Track, null,
7945
+ React.createElement(react$1.Slider.Range, null)),
7946
+ React.createElement(react$1.Slider.Thumbs, null),
7947
+ React.createElement(react$1.Slider.MarkerGroup, null, sliderMarks.map(function (_a, index) {
7948
+ var stepValue = _a.stepValue, label = _a.label;
7949
+ return (React.createElement(react$1.Slider.Marker, { key: index, value: stepValue, style: {
7950
+ pointerEvents: 'all',
7951
+ fontWeight: sliderStepValue === stepValue ? 'bold' : 'normal',
7952
+ } }, label));
7953
+ })))));
7954
+ };
7955
+
7956
+ var Tooltip = function (_a) {
7957
+ var children = _a.children, _b = _a.placement, placement = _b === void 0 ? 'bottom' : _b, _c = _a.maxWidth, maxWidth = _c === void 0 ? '6xl' : _c, label = _a.label;
7958
+ var _d = React.useState(false), isOpen = _d[0], setIsOpen = _d[1];
7959
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7960
+ var childrenWithProps = React.cloneElement(children, {
7961
+ onMouseEnter: function () { return setIsOpen(true); },
7962
+ onMouseLeave: function () { return setIsOpen(false); },
7963
+ onClick: function () { return setIsOpen(true); },
7964
+ });
7965
+ return (React.createElement(react$1.TooltipRoot, { positioning: {
7966
+ placement: placement,
7967
+ }, open: isOpen },
7968
+ React.createElement(react$1.TooltipTrigger, { asChild: true }, childrenWithProps),
7969
+ React.createElement(react$1.TooltipPositioner, null,
7970
+ React.createElement(react$1.TooltipContent, { maxWidth: maxWidth },
7971
+ React.createElement(react$1.TooltipArrow, null,
7972
+ React.createElement(react$1.TooltipArrowTip, null)),
7973
+ label))));
7974
+ };
7975
+
7976
+ var FormControlSection = function (_a) {
7977
+ var children = _a.children, errorMessage = _a.errorMessage, id = _a.id, label = _a.label, hint = _a.hint, tooltip = _a.tooltip;
7978
+ var isInvalid = !!errorMessage;
7979
+ return (React.createElement(react$1.Field.Root, { id: id, invalid: isInvalid },
7980
+ React.createElement(react$1.Box, { border: "1px", borderRadius: "sm", borderColor: isInvalid ? 'red.500' : 'gray.400', padding: "2xl" },
7981
+ React.createElement(Flex, { flexDirection: "column" },
7982
+ React.createElement(react$1.Box, { mb: "lg" },
7983
+ React.createElement(Flex, { alignItems: "center" },
7984
+ label ? (React.createElement(Text, { color: "gray.900", textStyle: "heading4" }, label)) : null,
7985
+ tooltip ? (React.createElement(Tooltip, { label: tooltip },
7986
+ React.createElement(InformationIcon, { ml: "md" }))) : null),
7987
+ hint ? (React.createElement(Text, { color: "gray.900", textStyle: "body" }, hint)) : null),
7988
+ children)),
7989
+ React.createElement(react$1.Field.ErrorText, null, errorMessage)));
7990
+ };
7991
+
7783
7992
  Object.defineProperty(exports, "Box", {
7784
7993
  enumerable: true,
7785
7994
  get: function () { return react$1.Box; }
@@ -7882,6 +8091,7 @@ exports.DeleteIcon = DeleteIcon;
7882
8091
  exports.DevOverlay = DevOverlay;
7883
8092
  exports.Dialog = Dialog;
7884
8093
  exports.DigitalContractIcon = DigitalContractIcon;
8094
+ exports.DiscreteSlider = DiscreteSlider;
7885
8095
  exports.DocumentCheckIcon = DocumentCheckIcon;
7886
8096
  exports.DocumentIcon = DocumentIcon;
7887
8097
  exports.DoubleChevronDownIcon = DoubleChevronDownIcon;
@@ -7906,6 +8116,7 @@ exports.FlameIcon = FlameIcon;
7906
8116
  exports.FlashIcon = FlashIcon;
7907
8117
  exports.Flex = Flex;
7908
8118
  exports.Footer = Footer$1;
8119
+ exports.FormControlSection = FormControlSection;
7909
8120
  exports.ForwardIcon = ForwardIcon;
7910
8121
  exports.FullHeight = FullHeight;
7911
8122
  exports.GarageIcon = GarageIcon;
@@ -7947,6 +8158,7 @@ exports.LogoutIcon = LogoutIcon;
7947
8158
  exports.MagnifierIcon = MagnifierIcon;
7948
8159
  exports.MagnifierLargeIcon = MagnifierLargeIcon;
7949
8160
  exports.MarkedText = MarkedText;
8161
+ exports.Menu = Menu;
7950
8162
  exports.MessageIcon = MessageIcon;
7951
8163
  exports.MiniVanIcon = MiniVanIcon;
7952
8164
  exports.MinusIcon = MinusIcon;