@vygruppen/spor-react 12.7.0 → 12.8.0

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
@@ -13,11 +13,12 @@ var lu = require('react-icons/lu');
13
13
  var reactStately = require('react-stately');
14
14
  var date = require('@internationalized/date');
15
15
  var awesomePhonenumber = require('awesome-phonenumber');
16
- var tokens23 = require('@vygruppen/spor-design-tokens');
17
16
  var react$1 = require('@emotion/react');
17
+ var tokens23 = require('@vygruppen/spor-design-tokens');
18
18
  var tokens4 = require('@vygruppen/spor-design-tokens/raw-tokens');
19
19
  var anatomy = require('@ark-ui/react/anatomy');
20
20
  var popover = require('@ark-ui/react/popover');
21
+ var collapsible = require('@ark-ui/react/collapsible');
21
22
 
22
23
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
24
 
@@ -626,38 +627,12 @@ var texts2 = createTexts({
626
627
  sv: "Laddar\u2026"
627
628
  }
628
629
  });
629
- var groupRecipe = react.defineRecipe({
630
- className: "spor-group",
631
- base: {
632
- fontSize: "lg"
633
- },
634
- variants: {
635
- disabled: {
636
- true: {
637
- "& > *": {
638
- pointerEvents: "none",
639
- backgroundColor: "surface.disabled",
640
- color: "text.disabled"
641
- }
642
- }
643
- }
644
- }
645
- });
646
- var Group = react.chakra(react.Group, groupRecipe);
647
630
  var ButtonGroup = React28.forwardRef(
648
631
  (props, ref) => {
649
- const { children, disabled, grow, attached, ...rest } = props;
650
- return /* @__PURE__ */ jsxRuntime.jsx(
651
- Group,
652
- {
653
- ...rest,
654
- ref,
655
- attached,
656
- grow,
657
- disabled,
658
- children
659
- }
660
- );
632
+ const recipe = react.useRecipe({ key: "buttonGroup" });
633
+ const [recipeProps, restProps] = recipe.splitVariantProps(props);
634
+ const styles = recipe(recipeProps);
635
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Group, { ...restProps, ref, css: styles });
661
636
  }
662
637
  );
663
638
  ButtonGroup.displayName = "ButtonGroup";
@@ -1419,7 +1394,7 @@ var Field3 = React28__namespace.forwardRef(
1419
1394
  } = props;
1420
1395
  const recipe = react.useSlotRecipe({ key: "field" });
1421
1396
  const styles = recipe();
1422
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { gap: "2", ref, ...rest, children: [
1397
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { gap: "2", ref, width: "100%", ...rest, children: [
1423
1398
  /* @__PURE__ */ jsxRuntime.jsxs(
1424
1399
  react.Field.Root,
1425
1400
  {
@@ -2366,7 +2341,7 @@ var DialogContent = React28__namespace.forwardRef((props, ref) => {
2366
2341
  });
2367
2342
  DialogContent.displayName = "DialogContent";
2368
2343
  var DialogCloseTrigger = React28__namespace.forwardRef(function DialogCloseTrigger2(props, ref) {
2369
- return /* @__PURE__ */ jsxRuntime.jsx(react.Dialog.CloseTrigger, { ref, ...props, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { size: "md" }) });
2344
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Dialog.CloseTrigger, { ref, position: "absolute", ...props, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { size: "md" }) });
2370
2345
  });
2371
2346
  var DialogRoot = react.Dialog.Root;
2372
2347
  var DialogFooter = react.Dialog.Footer;
@@ -2467,51 +2442,12 @@ var texts12 = createTexts({
2467
2442
  sv: "St\xE4ng"
2468
2443
  }
2469
2444
  });
2470
- var attachedInputsRecipe = react.defineRecipe({
2471
- base: {
2472
- display: "flex",
2473
- gap: "0.1rem",
2474
- width: "100%",
2475
- "& select": {
2476
- borderEndRadius: 0
2477
- }
2478
- },
2479
- variants: {
2480
- orientation: {
2481
- horizontal: {
2482
- flexDirection: "row",
2483
- "& > *:first-of-type:not(:last-of-type) [data-attachable]": {
2484
- borderEndRadius: 0
2485
- },
2486
- "& > *:not(:first-of-type):not(:last-of-type) [data-attachable]": {
2487
- borderRadius: 0
2488
- },
2489
- "& > *:not(:first-of-type):last-of-type [data-attachable]": {
2490
- borderStartRadius: 0
2491
- }
2492
- },
2493
- vertical: {
2494
- flexDirection: "column",
2495
- "& > *:first-of-type:not(:last-of-type) [data-attachable]": {
2496
- borderBottomRadius: 0
2497
- },
2498
- "& > *:not(:first-of-type):not(:last-of-type) [data-attachable]": {
2499
- borderRadius: 0
2500
- },
2501
- "& > *:not(:first-of-type):last-of-type [data-attachable]": {
2502
- borderTopRadius: 0
2503
- }
2504
- }
2505
- }
2506
- },
2507
- defaultVariants: {
2508
- orientation: "horizontal"
2509
- }
2510
- });
2511
- var StyledGroup = react.chakra(react.Group, attachedInputsRecipe);
2512
2445
  var AttachedInputs = React28.forwardRef(
2513
2446
  (props, ref) => {
2514
- return /* @__PURE__ */ jsxRuntime.jsx(StyledGroup, { ref, attached: true, ...props });
2447
+ const recipe = react.useRecipe({ key: "attachedInputs" });
2448
+ const [recipeProps, restProps] = recipe.splitVariantProps(props);
2449
+ const styles = recipe(recipeProps);
2450
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Group, { ref, css: styles, attached: true, ...restProps });
2515
2451
  }
2516
2452
  );
2517
2453
  AttachedInputs.displayName = "AttachedInputs";
@@ -2662,10 +2598,10 @@ var Combobox = (props) => {
2662
2598
  loading,
2663
2599
  leftIcon,
2664
2600
  rightIcon,
2665
- borderBottomLeftRadius = "sm",
2666
- borderBottomRightRadius = "sm",
2667
- borderTopLeftRadius = "sm",
2668
- borderTopRightRadius = "sm",
2601
+ borderBottomLeftRadius,
2602
+ borderBottomRightRadius,
2603
+ borderTopLeftRadius,
2604
+ borderTopRightRadius,
2669
2605
  marginBottom,
2670
2606
  marginTop,
2671
2607
  marginX,
@@ -2764,7 +2700,8 @@ var Combobox = (props) => {
2764
2700
  }
2765
2701
  }
2766
2702
  ) : rightIcon,
2767
- placeholder: ""
2703
+ placeholder: "",
2704
+ "data-attachable": true
2768
2705
  }
2769
2706
  ),
2770
2707
  /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", "data-trigger": "multiselect" }),
@@ -2833,90 +2770,6 @@ var FieldsetLegend = react.Fieldset.Legend;
2833
2770
  var FieldsetContent = react.Fieldset.Content;
2834
2771
  var FieldsetHelperText = react.Fieldset.HelperText;
2835
2772
  var FieldsetErrorText = react.Fieldset.ErrorText;
2836
- var inputRecipe = react.defineRecipe({
2837
- base: {
2838
- appearance: "none",
2839
- width: "100%",
2840
- outline: "none",
2841
- border: 0,
2842
- borderRadius: "sm",
2843
- transitionProperty: "common",
2844
- transitionDuration: "fast",
2845
- color: "text",
2846
- position: "relative",
2847
- paddingX: 3,
2848
- paddingTop: 3,
2849
- height: 8,
2850
- fontSize: "mobile.md",
2851
- _disabled: {
2852
- backgroundColor: "surface.disabled",
2853
- outline: "1px solid",
2854
- outlineColor: "outline.disabled",
2855
- pointerEvents: "none"
2856
- },
2857
- _invalid: {
2858
- outline: "2px solid",
2859
- outlineColor: "outline.error",
2860
- _active: {
2861
- outline: "2px solid",
2862
- outlineColor: "outline.error"
2863
- },
2864
- _focus: {
2865
- outline: "2px solid",
2866
- outlineColor: "outline.error"
2867
- },
2868
- _hover: {
2869
- outline: "2px solid",
2870
- outlineColor: "core.outline"
2871
- }
2872
- }
2873
- },
2874
- variants: {
2875
- variant: {
2876
- core: {
2877
- backgroundColor: "transparent",
2878
- outline: "1px solid",
2879
- outlineColor: "core.outline",
2880
- _hover: {
2881
- outline: "2px solid",
2882
- outlineColor: "core.outline.hover",
2883
- _active: {
2884
- outline: "1px solid",
2885
- outlineColor: "outline.disabled",
2886
- backgroundColor: "core.surface.active"
2887
- }
2888
- },
2889
- _focus: {
2890
- outline: "2px solid",
2891
- outlineColor: "outline.focus"
2892
- }
2893
- },
2894
- floating: {
2895
- boxShadow: "sm",
2896
- bg: "floating.surface",
2897
- outline: "1px solid",
2898
- outlineColor: "floating.outline",
2899
- _hover: {
2900
- outline: "1px solid",
2901
- outlineColor: "floating.outline.hover"
2902
- },
2903
- _active: {
2904
- outline: "1px solid",
2905
- outlineColor: "floating.outline.active",
2906
- backgroundColor: "floating.surface.active"
2907
- },
2908
- focus: {
2909
- outline: "1px solid",
2910
- outlineColor: "outline.focus"
2911
- }
2912
- }
2913
- }
2914
- },
2915
- defaultVariants: {
2916
- variant: "core"
2917
- }
2918
- });
2919
- var StyledInput = react.chakra(react.Input, inputRecipe);
2920
2773
  var Input = React28.forwardRef(
2921
2774
  ({
2922
2775
  startElement,
@@ -2927,6 +2780,9 @@ var Input = React28.forwardRef(
2927
2780
  errorText,
2928
2781
  ...props
2929
2782
  }, ref) => {
2783
+ const recipe = react.useRecipe({ key: "input" });
2784
+ const [recipeProps, restProps] = recipe.splitVariantProps(props);
2785
+ const styles = recipe(recipeProps);
2930
2786
  return /* @__PURE__ */ jsxRuntime.jsxs(
2931
2787
  Field3,
2932
2788
  {
@@ -2944,7 +2800,7 @@ var Input = React28.forwardRef(
2944
2800
  children: [
2945
2801
  startElement && /* @__PURE__ */ jsxRuntime.jsx(react.InputElement, { pointerEvents: "none", paddingX: 2, children: startElement }),
2946
2802
  /* @__PURE__ */ jsxRuntime.jsx(
2947
- StyledInput,
2803
+ react.Input,
2948
2804
  {
2949
2805
  "data-attachable": true,
2950
2806
  ref,
@@ -2952,9 +2808,10 @@ var Input = React28.forwardRef(
2952
2808
  overflow: "hidden",
2953
2809
  paddingLeft: startElement ? "2.6rem" : void 0,
2954
2810
  paddingRight: endElement ? "2.6rem" : void 0,
2955
- ...props,
2811
+ ...restProps,
2956
2812
  className: `peer ${props.className}`,
2957
- placeholder: ""
2813
+ placeholder: "",
2814
+ css: styles
2958
2815
  }
2959
2816
  ),
2960
2817
  endElement && /* @__PURE__ */ jsxRuntime.jsx(react.InputElement, { placement: "end", paddingX: 2, children: endElement })
@@ -3418,7 +3275,7 @@ var CountryCodeSelect = React28.forwardRef((props, ref) => {
3418
3275
  collection: callingCodes,
3419
3276
  lazyMount: true,
3420
3277
  "aria-label": t(texts15.countryCode),
3421
- variant: "rightSideSquare",
3278
+ sideRadiusVariant: "rightSideSquare",
3422
3279
  children: callingCodes.items.map((code) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { as: "option", item: code, children: code.label }, code.label))
3423
3280
  }
3424
3281
  );
@@ -3790,97 +3647,12 @@ var Textarea = React28.forwardRef(
3790
3647
  }
3791
3648
  );
3792
3649
  Textarea.displayName = "Textarea";
3793
-
3794
- // src/util/slugify.tsx
3795
- function slugify(text, maxLength = 50) {
3796
- if (!text) {
3797
- return text;
3798
- }
3799
- if (Array.isArray(text)) {
3800
- text = text.join(" ");
3801
- }
3802
- if (maxLength < 1) {
3803
- throw new Error("The maxLength parameter must be a positive number");
3804
- }
3805
- return text.normalize("NFD").replaceAll(/[\u0300-\u036F]/g, "").replaceAll(/[\u00C6\u00E6]/g, "ae").replaceAll(/[\u00D8\u00F8]/g, "oe").replaceAll(/[\u00C5\u00E5]/g, "aa").toLowerCase().replaceAll(/\s+/g, "-").replaceAll(/[^\w-]+/g, "").replaceAll(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "").slice(0, Math.max(0, maxLength));
3806
- }
3807
-
3808
- // src/theme/recipes/pressable-card.ts
3809
- var pressableCardRecipe = react.defineRecipe({
3810
- base: {
3811
- appearance: "none",
3812
- border: "none",
3813
- overflow: "hidden",
3814
- fontSize: "inherit",
3815
- display: "block",
3816
- borderRadius: "md",
3817
- cursor: "pointer",
3818
- transitionProperty: "common",
3819
- transitionDuration: "fast",
3820
- _disabled: {
3821
- outline: "none",
3822
- pointerEvents: "none",
3823
- background: "surface.disabled",
3824
- color: "text.disabled"
3825
- }
3826
- },
3827
- variants: {
3828
- variant: {
3829
- floating: {
3830
- boxShadow: "0px 1px 3px 0px var(--shadow-color)",
3831
- shadowColor: "surface.disabled",
3832
- border: "sm",
3833
- borderColor: "floating.outline",
3834
- backgroundColor: "floating.surface",
3835
- _hover: {
3836
- boxShadow: "0px 2px 6px 0px var(--shadow-color)",
3837
- backgroundColor: "floating.surface.hover",
3838
- borderColor: "floating.outline.hover",
3839
- _active: {
3840
- boxShadow: "none",
3841
- backgroundColor: "floating.surface.active",
3842
- borderColor: "floating.outline.active"
3843
- }
3844
- }
3845
- },
3846
- core: {
3847
- outlineColor: "core.outline",
3848
- outlineWidth: tokens23__namespace.default.size.stroke.sm,
3849
- outlineStyle: "solid",
3850
- backgroundColor: "core.surface",
3851
- _hover: {
3852
- outlineColor: "core.outline.hover",
3853
- outlineWidth: tokens23__namespace.default.size.stroke.md,
3854
- outlineStyle: "solid",
3855
- _active: {
3856
- backgroundColor: "core.surface.active",
3857
- outlineWidth: tokens23__namespace.default.size.stroke.sm
3858
- }
3859
- }
3860
- },
3861
- accent: {
3862
- boxShadow: "0px 1px 3px 0px var(--shadow-color)",
3863
- shadowColor: "surface.disabled",
3864
- background: "alert.success.surface",
3865
- _hover: {
3866
- background: "alert.success.surface.hover",
3867
- boxShadow: "0px 2px 6px 0px var(--shadow-color)",
3868
- _active: {
3869
- background: "alert.success.surface.active",
3870
- boxShadow: "none"
3871
- }
3872
- }
3873
- }
3874
- }
3875
- },
3876
- defaultVariants: {
3877
- variant: "core"
3878
- }
3879
- });
3880
- var PressableCardButton = react.chakra("button", pressableCardRecipe);
3881
3650
  var PressableCard = React28.forwardRef(
3882
3651
  (props, ref) => {
3883
- return /* @__PURE__ */ jsxRuntime.jsx(PressableCardButton, { ...props, ref });
3652
+ const recipe = react.useRecipe({ key: "pressableCard" });
3653
+ const [recipeProps, restProps] = recipe.splitVariantProps(props);
3654
+ const styles = recipe(recipeProps);
3655
+ return /* @__PURE__ */ jsxRuntime.jsx(react.chakra.button, { ...restProps, css: styles, ref });
3884
3656
  }
3885
3657
  );
3886
3658
  PressableCard.displayName = "PressableCard";
@@ -3943,55 +3715,20 @@ var Separator = React28.forwardRef(
3943
3715
  }
3944
3716
  );
3945
3717
  Separator.displayName = "Separator";
3946
- var staticCardRecipe = react.defineRecipe({
3947
- base: {
3948
- borderRadius: "md"
3949
- },
3950
- variants: {
3951
- colorPalette: {
3952
- white: {
3953
- backgroundColor: "surface.color.neutral",
3954
- color: "text"
3955
- },
3956
- grey: {
3957
- backgroundColor: "surface.color.grey"
3958
- },
3959
- yellow: {
3960
- backgroundColor: "surface.color.cream"
3961
- },
3962
- darkYellow: {
3963
- backgroundColor: "surface.color.yellow"
3964
- },
3965
- red: {
3966
- backgroundColor: "surface.color.red"
3967
- },
3968
- green: {
3969
- backgroundColor: "surface.color.green"
3970
- },
3971
- blue: {
3972
- backgroundColor: "surface.color.blue"
3973
- },
3974
- orange: {
3975
- backgroundColor: "surface.color.orange"
3976
- }
3977
- }
3978
- },
3979
- defaultVariants: {
3980
- colorPalette: "white"
3981
- }
3982
- });
3983
- var StyledCardBox = react.chakra("div", staticCardRecipe);
3984
- var StaticCard = React28.forwardRef(
3985
- (props, ref) => {
3986
- return /* @__PURE__ */ jsxRuntime.jsx(StyledCardBox, { ...props, ref });
3987
- }
3988
- );
3989
- StaticCard.displayName = "StaticCard";
3990
- var icons = {
3991
- "local-train": {
3992
- sm: sporIconReact.TrainFill18Icon,
3993
- md: sporIconReact.TrainFill24Icon,
3994
- lg: sporIconReact.TrainFill30Icon
3718
+ var StaticCard = React28.forwardRef(
3719
+ (props, ref) => {
3720
+ const recipe = react.useRecipe({ key: "staticCard" });
3721
+ const [recipeProps, restProps] = recipe.splitVariantProps(props);
3722
+ const styles = recipe(recipeProps);
3723
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { css: styles, ...restProps, ref });
3724
+ }
3725
+ );
3726
+ StaticCard.displayName = "StaticCard";
3727
+ var icons = {
3728
+ "local-train": {
3729
+ sm: sporIconReact.TrainFill18Icon,
3730
+ md: sporIconReact.TrainFill24Icon,
3731
+ lg: sporIconReact.TrainFill30Icon
3995
3732
  },
3996
3733
  "region-train": {
3997
3734
  sm: sporIconReact.TrainFill18Icon,
@@ -5544,6 +5281,47 @@ var Table = React28.forwardRef((props, ref) => {
5544
5281
  );
5545
5282
  });
5546
5283
  Table.displayName = "Table";
5284
+ var attachedInputsRecipe = react.defineRecipe({
5285
+ base: {
5286
+ display: "flex",
5287
+ gap: "0.1rem",
5288
+ width: "100%",
5289
+ "& select": {
5290
+ borderEndRadius: 0
5291
+ }
5292
+ },
5293
+ variants: {
5294
+ orientation: {
5295
+ horizontal: {
5296
+ flexDirection: "row",
5297
+ "& > *:first-of-type:not(:last-of-type) [data-attachable]": {
5298
+ borderEndRadius: 0
5299
+ },
5300
+ "& > *:not(:first-of-type):not(:last-of-type) [data-attachable]": {
5301
+ borderRadius: 0
5302
+ },
5303
+ "& > *:not(:first-of-type):last-of-type [data-attachable]": {
5304
+ borderStartRadius: 0
5305
+ }
5306
+ },
5307
+ vertical: {
5308
+ flexDirection: "column",
5309
+ "& > *:first-of-type:not(:last-of-type) [data-attachable]": {
5310
+ borderBottomRadius: 0
5311
+ },
5312
+ "& > *:not(:first-of-type):not(:last-of-type) [data-attachable]": {
5313
+ borderRadius: 0
5314
+ },
5315
+ "& > *:not(:first-of-type):last-of-type [data-attachable]": {
5316
+ borderTopRadius: 0
5317
+ }
5318
+ }
5319
+ }
5320
+ },
5321
+ defaultVariants: {
5322
+ orientation: "horizontal"
5323
+ }
5324
+ });
5547
5325
  var buttonRecipe = react.defineRecipe({
5548
5326
  className: "spor-button",
5549
5327
  base: {
@@ -5707,6 +5485,106 @@ var closeButtonRecipe = react.defineRecipe({
5707
5485
  }
5708
5486
  }
5709
5487
  });
5488
+ var groupRecipe = react.defineRecipe({
5489
+ className: "spor-group",
5490
+ base: {
5491
+ fontSize: "lg"
5492
+ },
5493
+ variants: {
5494
+ disabled: {
5495
+ true: {
5496
+ "& > *": {
5497
+ pointerEvents: "none",
5498
+ backgroundColor: "surface.disabled",
5499
+ color: "text.disabled"
5500
+ }
5501
+ }
5502
+ }
5503
+ }
5504
+ });
5505
+ var inputRecipe = react.defineRecipe({
5506
+ base: {
5507
+ appearance: "none",
5508
+ width: "100%",
5509
+ outline: "none",
5510
+ border: 0,
5511
+ borderRadius: "sm",
5512
+ transitionProperty: "common",
5513
+ transitionDuration: "fast",
5514
+ color: "text",
5515
+ position: "relative",
5516
+ paddingX: 3,
5517
+ paddingTop: 3,
5518
+ height: 8,
5519
+ fontSize: "mobile.md",
5520
+ _disabled: {
5521
+ backgroundColor: "surface.disabled",
5522
+ outline: "1px solid",
5523
+ outlineColor: "outline.disabled",
5524
+ pointerEvents: "none"
5525
+ },
5526
+ _invalid: {
5527
+ outline: "2px solid",
5528
+ outlineColor: "outline.error",
5529
+ _active: {
5530
+ outline: "2px solid",
5531
+ outlineColor: "outline.error"
5532
+ },
5533
+ _focus: {
5534
+ outline: "2px solid",
5535
+ outlineColor: "outline.error"
5536
+ },
5537
+ _hover: {
5538
+ outline: "2px solid",
5539
+ outlineColor: "core.outline"
5540
+ }
5541
+ }
5542
+ },
5543
+ variants: {
5544
+ variant: {
5545
+ core: {
5546
+ backgroundColor: "transparent",
5547
+ outline: "1px solid",
5548
+ outlineColor: "core.outline",
5549
+ _hover: {
5550
+ outline: "2px solid",
5551
+ outlineColor: "core.outline.hover",
5552
+ _active: {
5553
+ outline: "1px solid",
5554
+ outlineColor: "outline.disabled",
5555
+ backgroundColor: "core.surface.active"
5556
+ }
5557
+ },
5558
+ _focus: {
5559
+ outline: "2px solid",
5560
+ outlineColor: "outline.focus"
5561
+ }
5562
+ },
5563
+ floating: {
5564
+ boxShadow: "sm",
5565
+ bg: "floating.surface",
5566
+ outline: "1px solid",
5567
+ outlineColor: "floating.outline",
5568
+ _hover: {
5569
+ outline: "1px solid",
5570
+ outlineColor: "floating.outline.hover"
5571
+ },
5572
+ _active: {
5573
+ outline: "1px solid",
5574
+ outlineColor: "floating.outline.active",
5575
+ backgroundColor: "floating.surface.active"
5576
+ },
5577
+ focus: {
5578
+ outline: "1px solid",
5579
+ outlineColor: "outline.focus"
5580
+ }
5581
+ }
5582
+ }
5583
+ },
5584
+ defaultVariants: {
5585
+ variant: "core"
5586
+ }
5587
+ });
5710
5588
  var linkRecipe = react.defineRecipe({
5711
5589
  base: {
5712
5590
  transitionProperty: "common",
@@ -5785,6 +5663,93 @@ var linkRecipe = react.defineRecipe({
5785
5663
  size: "sm"
5786
5664
  }
5787
5665
  });
5666
+
5667
+ // src/util/slugify.tsx
5668
+ function slugify(text, maxLength = 50) {
5669
+ if (!text) {
5670
+ return text;
5671
+ }
5672
+ if (Array.isArray(text)) {
5673
+ text = text.join(" ");
5674
+ }
5675
+ if (maxLength < 1) {
5676
+ throw new Error("The maxLength parameter must be a positive number");
5677
+ }
5678
+ return text.normalize("NFD").replaceAll(/[\u0300-\u036F]/g, "").replaceAll(/[\u00C6\u00E6]/g, "ae").replaceAll(/[\u00D8\u00F8]/g, "oe").replaceAll(/[\u00C5\u00E5]/g, "aa").toLowerCase().replaceAll(/\s+/g, "-").replaceAll(/[^\w-]+/g, "").replaceAll(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "").slice(0, Math.max(0, maxLength));
5679
+ }
5680
+
5681
+ // src/theme/recipes/pressable-card.ts
5682
+ var pressableCardRecipe = react.defineRecipe({
5683
+ base: {
5684
+ appearance: "none",
5685
+ border: "none",
5686
+ overflow: "hidden",
5687
+ fontSize: "inherit",
5688
+ display: "block",
5689
+ borderRadius: "md",
5690
+ cursor: "pointer",
5691
+ transitionProperty: "common",
5692
+ transitionDuration: "fast",
5693
+ _disabled: {
5694
+ outline: "none",
5695
+ pointerEvents: "none",
5696
+ background: "surface.disabled",
5697
+ color: "text.disabled"
5698
+ }
5699
+ },
5700
+ variants: {
5701
+ variant: {
5702
+ floating: {
5703
+ boxShadow: "0px 1px 3px 0px var(--shadow-color)",
5704
+ shadowColor: "surface.disabled",
5705
+ border: "sm",
5706
+ borderColor: "floating.outline",
5707
+ backgroundColor: "floating.surface",
5708
+ _hover: {
5709
+ boxShadow: "0px 2px 6px 0px var(--shadow-color)",
5710
+ backgroundColor: "floating.surface.hover",
5711
+ borderColor: "floating.outline.hover",
5712
+ _active: {
5713
+ boxShadow: "none",
5714
+ backgroundColor: "floating.surface.active",
5715
+ borderColor: "floating.outline.active"
5716
+ }
5717
+ }
5718
+ },
5719
+ core: {
5720
+ outlineColor: "core.outline",
5721
+ outlineWidth: tokens23__namespace.default.size.stroke.sm,
5722
+ outlineStyle: "solid",
5723
+ backgroundColor: "core.surface",
5724
+ _hover: {
5725
+ outlineColor: "core.outline.hover",
5726
+ outlineWidth: tokens23__namespace.default.size.stroke.md,
5727
+ outlineStyle: "solid",
5728
+ _active: {
5729
+ backgroundColor: "core.surface.active",
5730
+ outlineWidth: tokens23__namespace.default.size.stroke.sm
5731
+ }
5732
+ }
5733
+ },
5734
+ accent: {
5735
+ boxShadow: "0px 1px 3px 0px var(--shadow-color)",
5736
+ shadowColor: "surface.disabled",
5737
+ background: "alert.success.surface",
5738
+ _hover: {
5739
+ background: "alert.success.surface.hover",
5740
+ boxShadow: "0px 2px 6px 0px var(--shadow-color)",
5741
+ _active: {
5742
+ background: "alert.success.surface.active",
5743
+ boxShadow: "none"
5744
+ }
5745
+ }
5746
+ }
5747
+ }
5748
+ },
5749
+ defaultVariants: {
5750
+ variant: "core"
5751
+ }
5752
+ });
5788
5753
  var separatorRecipe = react.defineRecipe({
5789
5754
  className: "spor-separator",
5790
5755
  base: {
@@ -5918,6 +5883,43 @@ var skeletonRecipe = react.defineRecipe({
5918
5883
  }
5919
5884
  }
5920
5885
  });
5886
+ var staticCardRecipe = react.defineRecipe({
5887
+ base: {
5888
+ borderRadius: "md"
5889
+ },
5890
+ variants: {
5891
+ colorPalette: {
5892
+ white: {
5893
+ backgroundColor: "surface.color.neutral",
5894
+ color: "text"
5895
+ },
5896
+ grey: {
5897
+ backgroundColor: "surface.color.grey"
5898
+ },
5899
+ yellow: {
5900
+ backgroundColor: "surface.color.cream"
5901
+ },
5902
+ darkYellow: {
5903
+ backgroundColor: "surface.color.yellow"
5904
+ },
5905
+ red: {
5906
+ backgroundColor: "surface.color.red"
5907
+ },
5908
+ green: {
5909
+ backgroundColor: "surface.color.green"
5910
+ },
5911
+ blue: {
5912
+ backgroundColor: "surface.color.blue"
5913
+ },
5914
+ orange: {
5915
+ backgroundColor: "surface.color.orange"
5916
+ }
5917
+ }
5918
+ },
5919
+ defaultVariants: {
5920
+ colorPalette: "white"
5921
+ }
5922
+ });
5921
5923
  var _a2, _b;
5922
5924
  var textareaRecipe = react.defineRecipe({
5923
5925
  className: "spor-textarea",
@@ -5949,6 +5951,7 @@ var recipes = {
5949
5951
  attachedInputs: attachedInputsRecipe,
5950
5952
  badge: badgeRecipie,
5951
5953
  button: buttonRecipe,
5954
+ buttonGroup: groupRecipe,
5952
5955
  closeButton: closeButtonRecipe,
5953
5956
  code: codeRecipie,
5954
5957
  input: inputRecipe,
@@ -6952,6 +6955,23 @@ var choiceChipSlotRecipe = react.defineSlotRecipe({
6952
6955
  chipType: "choice"
6953
6956
  }
6954
6957
  });
6958
+ var collapsibleSlotRecipe = react.defineSlotRecipe({
6959
+ slots: collapsible.collapsibleAnatomy.keys(),
6960
+ className: "chakra-collapsible",
6961
+ base: {
6962
+ content: {
6963
+ overflow: "hidden",
6964
+ _open: {
6965
+ animationName: "expand-height, fade-in",
6966
+ animationDuration: "moderate"
6967
+ },
6968
+ _closed: {
6969
+ animationName: "collapse-height, fade-out",
6970
+ animationDuration: "moderate"
6971
+ }
6972
+ }
6973
+ }
6974
+ });
6955
6975
  var datePickerSlotRecipe = react.defineSlotRecipe({
6956
6976
  slots: datepickerAnatomy.keys(),
6957
6977
  className: "spor-datepicker",
@@ -9042,7 +9062,9 @@ var selectSlotRecipe = react.defineSlotRecipe({
9042
9062
  outline: "1px solid",
9043
9063
  outlineColor: "floating.outline"
9044
9064
  }
9045
- },
9065
+ }
9066
+ },
9067
+ sideRadiusVariant: {
9046
9068
  rightSideSquare: {
9047
9069
  control: {
9048
9070
  outline: "1px solid",
@@ -9739,7 +9761,8 @@ var slotRecipes = {
9739
9761
  tabs: tabsSlotRecipe,
9740
9762
  travelTag: travelTagSlotRecipe,
9741
9763
  toast: toastSlotRecipe,
9742
- checkboxCard: choiceChipSlotRecipe
9764
+ checkboxCard: choiceChipSlotRecipe,
9765
+ collapsible: collapsibleSlotRecipe
9743
9766
  };
9744
9767
  var animations = react.defineTokens.animations({
9745
9768
  spin: {