@shoplflow/base 0.32.19 → 0.32.20

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/index.cjs CHANGED
@@ -11,8 +11,8 @@ var Scrollbars = require('react-custom-scrollbars-2');
11
11
  var react = require('@floating-ui/react');
12
12
  var reactDom = require('@floating-ui/react-dom');
13
13
  var ShoplAssets = require('@shoplflow/shopl-assets');
14
- var HadaAssets = require('@shoplflow/hada-assets');
15
14
  var core = require('@floating-ui/core');
15
+ var HadaAssets = require('@shoplflow/hada-assets');
16
16
  var DatePicker2 = require('react-datepicker');
17
17
  require('react-datepicker/dist/react-datepicker.css');
18
18
  var SimpleBarReact = require('simplebar-react');
@@ -1811,12 +1811,19 @@ exports.IconButtonStyleVariants = {
1811
1811
  SOLID: "SOLID",
1812
1812
  GHOST: "GHOST"
1813
1813
  };
1814
+ var getPopoverContentStyle = () => {
1815
+ return react$1.css`
1816
+ min-width: 112px;
1817
+ padding: 4px;
1818
+ box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.12);
1819
+ border-radius: 8px;
1820
+ background-color: ${exports.colorTokens.neutral0};
1821
+ `;
1822
+ };
1823
+
1824
+ // src/components/Buttons/DropdownButton/DropdownButton.styled.ts
1814
1825
  var StyledPopoverContentWrapper = styled6__default.default.div`
1815
- min-width: 112px;
1816
- padding: 4px;
1817
- box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.12);
1818
- border-radius: 8px;
1819
- background-color: ${exports.colorTokens.neutral0};
1826
+ ${getPopoverContentStyle()}
1820
1827
  `;
1821
1828
  var StyledArrowIcon = styled6__default.default(framerMotion.motion.div)`
1822
1829
  display: flex;
@@ -2425,11 +2432,10 @@ var DropdownButton = (_a) => {
2425
2432
  _styleVar = "SOLID";
2426
2433
  color = "coolgray50";
2427
2434
  }
2428
- return /* @__PURE__ */ jsxRuntime.jsx(exports.DropdownButtonContext.Provider, { value: { isOpen, setIsOpen }, children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Popper, { placement, offset: 4, children: [
2435
+ return /* @__PURE__ */ jsxRuntime.jsx(exports.DropdownButtonContext.Provider, { value: { isOpen, setIsOpen }, "data-shoplflow": "DropdownButton", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Popper, { placement, offset: 4, middlewares: [core.shift({ crossAxis: true, padding: 4 })], children: [
2429
2436
  /* @__PURE__ */ jsxRuntime.jsx(exports.Popper.Trigger, { isOpen, className: _className, children: /* @__PURE__ */ jsxRuntime.jsx(
2430
2437
  exports.Button,
2431
2438
  __spreadProps(__spreadValues({
2432
- "data-shoplflow": "DropdownButton",
2433
2439
  className: _className,
2434
2440
  sizeVar,
2435
2441
  styleVar: _styleVar,
@@ -2479,6 +2485,209 @@ exports.DropdownButtonStyleVariants = {
2479
2485
  PRIMARY: "PRIMARY",
2480
2486
  SECONDARY: "SECONDARY"
2481
2487
  };
2488
+ var getStyleByStyleVar3 = (styleVar, color, disabled) => {
2489
+ switch (styleVar) {
2490
+ case "PRIMARY":
2491
+ return react$1.css`
2492
+ border: 1px solid ${exports.colorTokens.primary400};
2493
+ background-color: ${exports.colorTokens.primary300};
2494
+ :hover {
2495
+ background-color: ${!disabled && exports.colorTokens.primary400};
2496
+ }
2497
+ `;
2498
+ case "SECONDARY":
2499
+ return react$1.css`
2500
+ border: 1px solid ${exports.colorTokens.neutral350};
2501
+ background-color: ${exports.colorTokens.neutral0};
2502
+ :hover {
2503
+ background-color: ${!disabled && exports.colorTokens.neutral100};
2504
+ }
2505
+ `;
2506
+ default:
2507
+ return react$1.css`
2508
+ border: 1px solid ${exports.colorTokens.primary400};
2509
+ background-color: ${exports.colorTokens.primary300};
2510
+ `;
2511
+ }
2512
+ };
2513
+ var getStyleBySizeVar3 = (sizeVar) => {
2514
+ switch (sizeVar) {
2515
+ case "M":
2516
+ return react$1.css`
2517
+ min-width: 72px;
2518
+ min-height: 40px;
2519
+ `;
2520
+ case "S":
2521
+ return react$1.css`
2522
+ min-width: 54px;
2523
+ min-height: 32px;
2524
+ `;
2525
+ default:
2526
+ return react$1.css`
2527
+ min-width: 72px;
2528
+ min-height: 40px;
2529
+ `;
2530
+ }
2531
+ };
2532
+ var StyledPopoverContentWrapper2 = styled6__default.default.div`
2533
+ ${getPopoverContentStyle()}
2534
+ `;
2535
+ var StyledArrowIcon2 = styled6__default.default(framerMotion.motion.div)`
2536
+ display: flex;
2537
+ justify-content: center;
2538
+ align-items: center;
2539
+ flex-shrink: 0;
2540
+ `;
2541
+ var SplitButtonDivider = styled6__default.default.div`
2542
+ height: ${({ sizeVar }) => sizeVar === "M" ? "38px" : "30px"};
2543
+ width: 1px;
2544
+ background-color: ${({ styleVar }) => styleVar === "PRIMARY" ? exports.colorTokens.shopl400 : exports.colorTokens.neutral350};
2545
+ `;
2546
+ var StyledSplitButton = styled6__default.default.button`
2547
+ display: flex;
2548
+ align-items: center;
2549
+ justify-content: center;
2550
+ height: fit-content;
2551
+ width: fit-content;
2552
+ gap: 8px;
2553
+ padding: 0 12px;
2554
+ border-radius: 6px;
2555
+ cursor: pointer;
2556
+ ${({ styleVar, color, disabled }) => getStyleByStyleVar3(styleVar, color, disabled)};
2557
+ ${({ sizeVar }) => getStyleBySizeVar3(sizeVar)};
2558
+ ${({ disabled }) => getDisabledStyle(disabled)}
2559
+ `;
2560
+ exports.SplitButtonContext = React3.createContext(null);
2561
+ exports.useSplitButtonContext = () => {
2562
+ const context = React3.useContext(exports.SplitButtonContext);
2563
+ if (!context) {
2564
+ throw new Error("SplitButtonContext must be used within a SplitButton component");
2565
+ }
2566
+ return context;
2567
+ };
2568
+ var SplitButtonMenu = (_a) => {
2569
+ var _b = _a, { onClick, children } = _b, rest = __objRest(_b, ["onClick", "children"]);
2570
+ const { setIsOpen } = exports.useSplitButtonContext();
2571
+ return /* @__PURE__ */ jsxRuntime.jsx(
2572
+ exports.Menu,
2573
+ __spreadProps(__spreadValues({
2574
+ onClick: (event) => {
2575
+ event.stopPropagation();
2576
+ event.preventDefault();
2577
+ onClick == null ? void 0 : onClick(event);
2578
+ setIsOpen(false);
2579
+ }
2580
+ }, rest), {
2581
+ children
2582
+ })
2583
+ );
2584
+ };
2585
+ var SplitButton = (_a) => {
2586
+ var _b = _a, {
2587
+ children,
2588
+ color,
2589
+ onClick,
2590
+ disabled,
2591
+ placement = "bottom-start",
2592
+ floatingZIndex,
2593
+ leftSource,
2594
+ rightSource,
2595
+ styleVar = "PRIMARY",
2596
+ sizeVar = "M",
2597
+ lineClamp = 1,
2598
+ text
2599
+ } = _b, rest = __objRest(_b, [
2600
+ "children",
2601
+ "color",
2602
+ "onClick",
2603
+ "disabled",
2604
+ "placement",
2605
+ "floatingZIndex",
2606
+ "leftSource",
2607
+ "rightSource",
2608
+ "styleVar",
2609
+ "sizeVar",
2610
+ "lineClamp",
2611
+ "text"
2612
+ ]);
2613
+ const selector = React3.useRef(`shoplflow-${crypto.randomUUID()}-split-button`).current;
2614
+ const [isOpen, setIsOpen] = utils.useOutsideClick({
2615
+ selector: `.${selector}`,
2616
+ useOutsideScroll: true
2617
+ });
2618
+ return /* @__PURE__ */ jsxRuntime.jsx(exports.SplitButtonContext.Provider, { value: { isOpen, setIsOpen }, children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Popper, { placement, offset: 4, middlewares: [core.shift({ crossAxis: true, padding: 4 })], children: [
2619
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Popper.Trigger, { isOpen, className: selector, children: /* @__PURE__ */ jsxRuntime.jsxs(
2620
+ StyledSplitButton,
2621
+ __spreadProps(__spreadValues({
2622
+ "data-shoplflow": "SplitButton",
2623
+ color,
2624
+ styleVar,
2625
+ sizeVar,
2626
+ disabled
2627
+ }, rest), {
2628
+ onClick: (event) => {
2629
+ event.stopPropagation();
2630
+ event.preventDefault();
2631
+ if (disabled) {
2632
+ return;
2633
+ }
2634
+ onClick == null ? void 0 : onClick(event);
2635
+ setIsOpen((prev) => !prev);
2636
+ },
2637
+ children: [
2638
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack.Horizontal, { spacing: "spacing04", align: "center", children: [
2639
+ leftSource,
2640
+ /* @__PURE__ */ jsxRuntime.jsx(
2641
+ exports.Text,
2642
+ {
2643
+ lineClamp,
2644
+ whiteSpace: "nowrap",
2645
+ wordBreak: "keep-all",
2646
+ color: styleVar === "PRIMARY" ? "neutral0" : "neutral700",
2647
+ typography: sizeVar === "M" ? "body1_400" : "body2_400",
2648
+ children: text
2649
+ }
2650
+ ),
2651
+ rightSource
2652
+ ] }),
2653
+ /* @__PURE__ */ jsxRuntime.jsx(SplitButtonDivider, { sizeVar, styleVar }),
2654
+ /* @__PURE__ */ jsxRuntime.jsx(
2655
+ StyledArrowIcon2,
2656
+ {
2657
+ animate: {
2658
+ rotate: isOpen ? 180 : 0
2659
+ },
2660
+ transition: {
2661
+ duration: 0.2
2662
+ },
2663
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2664
+ exports.Icon,
2665
+ {
2666
+ iconSource: ShoplAssets.DownArrowSolidXsmallIcon,
2667
+ color: styleVar === "PRIMARY" ? "neutral0" : "neutral600",
2668
+ sizeVar: "XS"
2669
+ }
2670
+ )
2671
+ }
2672
+ )
2673
+ ]
2674
+ })
2675
+ ) }),
2676
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Popper.Portal, { zIndex: floatingZIndex, children: /* @__PURE__ */ jsxRuntime.jsx(StyledPopoverContentWrapper2, { children }) })
2677
+ ] }) });
2678
+ };
2679
+ SplitButton.Menu = SplitButtonMenu;
2680
+ exports.SplitButton = SplitButton;
2681
+
2682
+ // src/components/Buttons/SplitButton/SplitButton.types.ts
2683
+ exports.SplitButtonSizeVariants = {
2684
+ S: "S",
2685
+ M: "M"
2686
+ };
2687
+ exports.SplitButtonStyleVariants = {
2688
+ PRIMARY: "PRIMARY",
2689
+ SECONDARY: "SECONDARY"
2690
+ };
2482
2691
  var informationStyle = react$1.css`
2483
2692
  background: ${exports.colorTokens.neutral100};
2484
2693
  & > span {
@@ -3839,22 +4048,32 @@ var Tooltip = (_a) => {
3839
4048
  }
3840
4049
  onOpenChange == null ? void 0 : onOpenChange(false);
3841
4050
  }, [open, onOpenChange]);
3842
- return /* @__PURE__ */ jsxRuntime.jsxs(exports.Popper, __spreadProps(__spreadValues({ offset: offset4, placement, middlewares: [core.flip(), core.shift({ padding: 5 })] }, popperProps), { children: [
3843
- /* @__PURE__ */ jsxRuntime.jsx(
3844
- exports.Popper.Trigger,
3845
- {
3846
- ref: triggerRef,
3847
- isOpen: isOpen || open,
3848
- onMouseOver: showHandler,
3849
- onMouseLeave: hideHandler,
3850
- onFocus: showHandler,
3851
- onBlur: hideHandler,
3852
- style: { display: "flex", alignItems: "center", justifyContent: "center" },
3853
- children: trigger
3854
- }
3855
- ),
3856
- /* @__PURE__ */ jsxRuntime.jsx(exports.Popper.Portal, { ref: portalRef, children: popper })
3857
- ] }));
4051
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4052
+ exports.Popper,
4053
+ __spreadProps(__spreadValues({
4054
+ offset: offset4,
4055
+ placement,
4056
+ middlewares: [core.flip(), core.shift({ padding: 5 })],
4057
+ "data-shoplflow": "Tooltip"
4058
+ }, popperProps), {
4059
+ children: [
4060
+ /* @__PURE__ */ jsxRuntime.jsx(
4061
+ exports.Popper.Trigger,
4062
+ {
4063
+ ref: triggerRef,
4064
+ isOpen: isOpen || open,
4065
+ onMouseOver: showHandler,
4066
+ onMouseLeave: hideHandler,
4067
+ onFocus: showHandler,
4068
+ onBlur: hideHandler,
4069
+ style: { display: "flex", alignItems: "center", justifyContent: "center" },
4070
+ children: trigger
4071
+ }
4072
+ ),
4073
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Popper.Portal, { ref: portalRef, children: popper })
4074
+ ]
4075
+ })
4076
+ );
3858
4077
  };
3859
4078
  Tooltip.Content = TooltipContent;
3860
4079
  exports.Tooltip = Tooltip;