@puzzle-ui/ui 0.4.0 → 0.5.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 (163) hide show
  1. package/README.md +61 -77
  2. package/dist/components/actions/button/button.css +5 -2
  3. package/dist/components/actions/button-group/button-group.css +16 -17
  4. package/dist/components/data-display/badge/badge.css +15 -2
  5. package/dist/components/data-display/badge/index.cjs +13 -2
  6. package/dist/components/data-display/badge/index.cjs.map +1 -1
  7. package/dist/components/data-display/badge/index.d.cts +7 -2
  8. package/dist/components/data-display/badge/index.d.ts +7 -2
  9. package/dist/components/data-display/badge/index.js +13 -2
  10. package/dist/components/data-display/badge/index.js.map +1 -1
  11. package/dist/components/data-display/rating/index.cjs +84 -0
  12. package/dist/components/data-display/rating/index.cjs.map +1 -0
  13. package/dist/components/data-display/rating/index.d.cts +3 -0
  14. package/dist/components/data-display/rating/index.d.ts +3 -0
  15. package/dist/components/data-display/rating/index.js +84 -0
  16. package/dist/components/data-display/rating/index.js.map +1 -0
  17. package/dist/components/data-display/rating/rating.css +72 -0
  18. package/dist/components/data-display/rating/rating.types.d.cts +15 -0
  19. package/dist/components/data-display/rating/rating.types.d.ts +15 -0
  20. package/dist/components/data-display/rating/rating.utils.cjs +27 -0
  21. package/dist/components/data-display/rating/rating.utils.cjs.map +1 -0
  22. package/dist/components/data-display/rating/rating.utils.js +25 -0
  23. package/dist/components/data-display/rating/rating.utils.js.map +1 -0
  24. package/dist/components/forms/checkbox/checkbox.css +2 -10
  25. package/dist/components/forms/input-group/input-group.d.cts +4 -2
  26. package/dist/components/forms/input-group/input-group.d.ts +4 -2
  27. package/dist/components/forms/radio-group/index.d.cts +2 -1
  28. package/dist/components/forms/radio-group/index.d.ts +2 -1
  29. package/dist/components/forms/stepper/index.d.cts +4 -2
  30. package/dist/components/forms/stepper/index.d.ts +4 -2
  31. package/dist/components/forms/time-picker/index.cjs +108 -0
  32. package/dist/components/forms/time-picker/index.cjs.map +1 -0
  33. package/dist/components/forms/time-picker/index.d.cts +3 -0
  34. package/dist/components/forms/time-picker/index.d.ts +3 -0
  35. package/dist/components/forms/time-picker/index.js +108 -0
  36. package/dist/components/forms/time-picker/index.js.map +1 -0
  37. package/dist/components/forms/time-picker/time-picker.css +166 -0
  38. package/dist/components/forms/time-picker/time-picker.types.d.cts +34 -0
  39. package/dist/components/forms/time-picker/time-picker.types.d.ts +34 -0
  40. package/dist/components/forms/time-picker/time-picker.utils.cjs +25 -0
  41. package/dist/components/forms/time-picker/time-picker.utils.cjs.map +1 -0
  42. package/dist/components/forms/time-picker/time-picker.utils.js +24 -0
  43. package/dist/components/forms/time-picker/time-picker.utils.js.map +1 -0
  44. package/dist/components/forms/token-input/index.cjs +189 -0
  45. package/dist/components/forms/token-input/index.cjs.map +1 -0
  46. package/dist/components/forms/token-input/index.d.cts +3 -0
  47. package/dist/components/forms/token-input/index.d.ts +3 -0
  48. package/dist/components/forms/token-input/index.js +189 -0
  49. package/dist/components/forms/token-input/index.js.map +1 -0
  50. package/dist/components/forms/token-input/token-input.css +145 -0
  51. package/dist/components/forms/token-input/token-input.types.d.cts +48 -0
  52. package/dist/components/forms/token-input/token-input.types.d.ts +48 -0
  53. package/dist/components/forms/token-input/token-input.utils.cjs +30 -0
  54. package/dist/components/forms/token-input/token-input.utils.cjs.map +1 -0
  55. package/dist/components/forms/token-input/token-input.utils.js +24 -0
  56. package/dist/components/forms/token-input/token-input.utils.js.map +1 -0
  57. package/dist/components/layout/aspect-ratio/aspect-ratio.css +14 -0
  58. package/dist/components/layout/aspect-ratio/aspect-ratio.utils.cjs +11 -0
  59. package/dist/components/layout/aspect-ratio/aspect-ratio.utils.cjs.map +1 -0
  60. package/dist/components/layout/aspect-ratio/aspect-ratio.utils.js +11 -0
  61. package/dist/components/layout/aspect-ratio/aspect-ratio.utils.js.map +1 -0
  62. package/dist/components/layout/aspect-ratio/index.cjs +16 -0
  63. package/dist/components/layout/aspect-ratio/index.cjs.map +1 -0
  64. package/dist/components/layout/aspect-ratio/index.d.cts +11 -0
  65. package/dist/components/layout/aspect-ratio/index.d.ts +11 -0
  66. package/dist/components/layout/aspect-ratio/index.js +16 -0
  67. package/dist/components/layout/aspect-ratio/index.js.map +1 -0
  68. package/dist/components/layout/container/container.css +1 -0
  69. package/dist/components/layout/page-layout/page-layout.css +1 -0
  70. package/dist/components/layout/scroll-area/index.cjs +27 -0
  71. package/dist/components/layout/scroll-area/index.cjs.map +1 -0
  72. package/dist/components/layout/scroll-area/index.d.cts +15 -0
  73. package/dist/components/layout/scroll-area/index.d.ts +15 -0
  74. package/dist/components/layout/scroll-area/index.js +27 -0
  75. package/dist/components/layout/scroll-area/index.js.map +1 -0
  76. package/dist/components/layout/scroll-area/scroll-area.css +25 -0
  77. package/dist/components/layout/scroll-area/scroll-area.utils.cjs +8 -0
  78. package/dist/components/layout/scroll-area/scroll-area.utils.cjs.map +1 -0
  79. package/dist/components/layout/scroll-area/scroll-area.utils.d.cts +2 -0
  80. package/dist/components/layout/scroll-area/scroll-area.utils.d.ts +2 -0
  81. package/dist/components/layout/scroll-area/scroll-area.utils.js +8 -0
  82. package/dist/components/layout/scroll-area/scroll-area.utils.js.map +1 -0
  83. package/dist/components/layout/section/index.cjs +10 -4
  84. package/dist/components/layout/section/index.cjs.map +1 -1
  85. package/dist/components/layout/section/index.d.cts +1 -1
  86. package/dist/components/layout/section/index.d.ts +1 -1
  87. package/dist/components/layout/section/index.js +11 -5
  88. package/dist/components/layout/section/index.js.map +1 -1
  89. package/dist/components/layout/section/section.css +9 -3
  90. package/dist/components/layout/section/types.d.cts +5 -5
  91. package/dist/components/layout/section/types.d.ts +5 -5
  92. package/dist/components/layout/separator/index.cjs +18 -0
  93. package/dist/components/layout/separator/index.cjs.map +1 -0
  94. package/dist/components/layout/separator/index.d.cts +17 -0
  95. package/dist/components/layout/separator/index.d.ts +17 -0
  96. package/dist/components/layout/separator/index.js +18 -0
  97. package/dist/components/layout/separator/index.js.map +1 -0
  98. package/dist/components/layout/separator/separator.css +15 -0
  99. package/dist/components/layout/separator/separator.utils.cjs +11 -0
  100. package/dist/components/layout/separator/separator.utils.cjs.map +1 -0
  101. package/dist/components/layout/separator/separator.utils.d.cts +2 -0
  102. package/dist/components/layout/separator/separator.utils.d.ts +2 -0
  103. package/dist/components/layout/separator/separator.utils.js +11 -0
  104. package/dist/components/layout/separator/separator.utils.js.map +1 -0
  105. package/dist/components/layout/stack/index.cjs +18 -2
  106. package/dist/components/layout/stack/index.cjs.map +1 -1
  107. package/dist/components/layout/stack/index.d.cts +8 -6
  108. package/dist/components/layout/stack/index.d.ts +8 -6
  109. package/dist/components/layout/stack/index.js +18 -2
  110. package/dist/components/layout/stack/index.js.map +1 -1
  111. package/dist/components/layout/stack/stack.css +118 -138
  112. package/dist/components/navigation/carousel/index.cjs +4 -1
  113. package/dist/components/navigation/carousel/index.cjs.map +1 -1
  114. package/dist/components/navigation/carousel/index.js +4 -1
  115. package/dist/components/navigation/carousel/index.js.map +1 -1
  116. package/dist/components/navigation/tabs/index.d.cts +3 -2
  117. package/dist/components/navigation/tabs/index.d.ts +3 -2
  118. package/dist/components/navigation/tree-view/index.cjs +1 -1
  119. package/dist/components/navigation/tree-view/index.cjs.map +1 -1
  120. package/dist/components/navigation/tree-view/index.d.cts +5 -1
  121. package/dist/components/navigation/tree-view/index.d.ts +5 -1
  122. package/dist/components/navigation/tree-view/index.js +1 -1
  123. package/dist/components/navigation/tree-view/index.js.map +1 -1
  124. package/dist/components/navigation/tree-view/tree-view.css +5 -3
  125. package/dist/components/overlays/context-menu/context-menu.css +151 -0
  126. package/dist/components/overlays/context-menu/context-menu.types.d.cts +69 -0
  127. package/dist/components/overlays/context-menu/context-menu.types.d.ts +69 -0
  128. package/dist/components/overlays/context-menu/context-menu.utils.cjs +46 -0
  129. package/dist/components/overlays/context-menu/context-menu.utils.cjs.map +1 -0
  130. package/dist/components/overlays/context-menu/context-menu.utils.js +40 -0
  131. package/dist/components/overlays/context-menu/context-menu.utils.js.map +1 -0
  132. package/dist/components/overlays/context-menu/index.cjs +830 -0
  133. package/dist/components/overlays/context-menu/index.cjs.map +1 -0
  134. package/dist/components/overlays/context-menu/index.d.cts +42 -0
  135. package/dist/components/overlays/context-menu/index.d.ts +42 -0
  136. package/dist/components/overlays/context-menu/index.js +818 -0
  137. package/dist/components/overlays/context-menu/index.js.map +1 -0
  138. package/dist/components/typography/heading.cjs +6 -2
  139. package/dist/components/typography/heading.cjs.map +1 -1
  140. package/dist/components/typography/heading.d.cts +3 -2
  141. package/dist/components/typography/heading.d.ts +3 -2
  142. package/dist/components/typography/heading.js +6 -2
  143. package/dist/components/typography/heading.js.map +1 -1
  144. package/dist/components/typography/text.cjs +6 -2
  145. package/dist/components/typography/text.cjs.map +1 -1
  146. package/dist/components/typography/text.d.cts +3 -2
  147. package/dist/components/typography/text.d.ts +3 -2
  148. package/dist/components/typography/text.js +6 -2
  149. package/dist/components/typography/text.js.map +1 -1
  150. package/dist/components/utilities/preview/index.cjs +88 -20
  151. package/dist/components/utilities/preview/index.cjs.map +1 -1
  152. package/dist/components/utilities/preview/index.d.cts +6 -2
  153. package/dist/components/utilities/preview/index.d.ts +6 -2
  154. package/dist/components/utilities/preview/index.js +88 -20
  155. package/dist/components/utilities/preview/index.js.map +1 -1
  156. package/dist/components/utilities/preview/preview.css +26 -11
  157. package/dist/components/utilities/transition/index.d.cts +1 -1
  158. package/dist/components/utilities/transition/index.d.ts +1 -1
  159. package/dist/index.cjs +123 -97
  160. package/dist/index.d.cts +15 -2
  161. package/dist/index.d.ts +15 -2
  162. package/dist/index.js +8 -1
  163. package/package.json +11 -6
@@ -4,20 +4,22 @@ type StackDirection = "row" | "col";
4
4
  type ResponsiveDirection = ResponsiveValue<StackDirection>;
5
5
  type StackMainAlignment = "start" | "center" | "end" | "stretch" | "around" | "between" | "evenly";
6
6
  type StackCrossAlignment = "start" | "center" | "end" | "stretch";
7
+ type ResponsiveMainAlignment = ResponsiveValue<StackMainAlignment>;
8
+ type ResponsiveCrossAlignment = ResponsiveValue<StackCrossAlignment>;
7
9
  type StackRowProps = {
8
10
  direction: "row";
9
- alignH?: StackMainAlignment;
10
- alignV?: StackCrossAlignment;
11
+ alignH?: ResponsiveMainAlignment;
12
+ alignV?: ResponsiveCrossAlignment;
11
13
  };
12
14
  type StackColProps = {
13
15
  direction?: "col";
14
- alignH?: StackCrossAlignment;
15
- alignV?: StackMainAlignment;
16
+ alignH?: ResponsiveCrossAlignment;
17
+ alignV?: ResponsiveMainAlignment;
16
18
  };
17
19
  type StackResponsiveProps = {
18
20
  direction: ResponsiveDirection;
19
- alignH?: StackMainAlignment;
20
- alignV?: StackMainAlignment;
21
+ alignH?: ResponsiveMainAlignment;
22
+ alignV?: ResponsiveMainAlignment;
21
23
  };
22
24
  type StackOwnProps<C extends ElementType> = {
23
25
  as?: C;
@@ -3,7 +3,7 @@ import { BREAKPOINTS, cn } from "@puzzle-ui/core";
3
3
  import { Children, Fragment, cloneElement, createElement, isValidElement } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  // src/components/layout/stack/index.tsx
6
- const Stack = ({ as: Component = "div", direction = "col", alignH, alignV, wrap = "nowrap", gap = "md", divider, reverse = false, children, className, ...props }) => {
6
+ const Stack = ({ as: Component = "div", direction = "col", alignH, alignV, wrap = "wrap", gap = "md", divider, reverse = false, children, className, ...props }) => {
7
7
  const directions = typeof direction === "string" ? { mobile: direction } : {
8
8
  ...direction,
9
9
  mobile: direction.mobile ?? "col"
@@ -13,7 +13,23 @@ const Stack = ({ as: Component = "div", direction = "col", alignH, alignV, wrap
13
13
  return value ? [`direction-${breakpoint}-${value}`] : [];
14
14
  });
15
15
  const hasAlignment = alignH !== void 0 || alignV !== void 0;
16
- const classes = cn("puzzle-stack", ...directionClasses, reverse && "reverse", wrap, `gap-${gap}`, alignH && `align-h-${alignH}`, alignV && `align-v-${alignV}`, hasAlignment && "has-alignment", className);
16
+ const responsiveAlignH = typeof alignH === "string" ? { mobile: alignH } : {
17
+ ...alignH,
18
+ mobile: alignH?.mobile ?? "start"
19
+ };
20
+ const responsiveAlignV = typeof alignV === "string" ? { mobile: alignV } : {
21
+ ...alignV,
22
+ mobile: alignV?.mobile ?? "start"
23
+ };
24
+ const responsiveAlignHClasses = BREAKPOINTS.flatMap((breakpoint) => {
25
+ const value = responsiveAlignH[breakpoint];
26
+ return value ? [`align-h-${breakpoint}-${value}`] : [];
27
+ });
28
+ const responsiveAlignVClasses = BREAKPOINTS.flatMap((breakpoint) => {
29
+ const value = responsiveAlignV[breakpoint];
30
+ return value ? [`align-v-${breakpoint}-${value}`] : [];
31
+ });
32
+ const classes = cn("puzzle-stack", ...directionClasses, reverse && "reverse", wrap, `gap-${gap}`, ...responsiveAlignHClasses, ...responsiveAlignVClasses, hasAlignment && "has-alignment", className);
17
33
  const childrenWithDividers = divider ? Children.toArray(children).flatMap((child, index, arr) => {
18
34
  if (index === arr.length - 1) return [child];
19
35
  const dividerKey = `stack-divider-${isValidElement(child) ? child.key : index}`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/layout/stack/index.tsx"],"sourcesContent":["import { BREAKPOINTS, cn } from \"@puzzle-ui/core\";\nimport {\n Children,\n cloneElement,\n createElement,\n Fragment,\n isValidElement,\n type ComponentPropsWithRef,\n type ElementType,\n type ReactNode,\n} from \"react\";\nimport type { ResponsiveValue } from \"@puzzle-ui/core\";\nimport \"./stack.css\";\n\ntype StackDirection = \"row\" | \"col\";\ntype ResponsiveDirection = ResponsiveValue<StackDirection>;\n\ntype StackMainAlignment =\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"around\"\n | \"between\"\n | \"evenly\";\n\ntype StackCrossAlignment = \"start\" | \"center\" | \"end\" | \"stretch\";\n\ntype StackRowProps = {\n direction: \"row\";\n alignH?: StackMainAlignment;\n alignV?: StackCrossAlignment;\n};\n\ntype StackColProps = {\n direction?: \"col\";\n alignH?: StackCrossAlignment;\n alignV?: StackMainAlignment;\n};\n\ntype StackResponsiveProps = {\n direction: ResponsiveDirection;\n alignH?: StackMainAlignment;\n alignV?: StackMainAlignment;\n};\n\ntype StackOwnProps<C extends ElementType> = {\n as?: C;\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n gap?: \"0\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n divider?: ReactNode;\n reverse?: boolean;\n} & (StackRowProps | StackColProps | StackResponsiveProps);\n\ntype StackProps<C extends ElementType = \"div\"> = StackOwnProps<C> &\n Omit<ComponentPropsWithRef<C>, keyof StackOwnProps<C> | \"as\">;\n\nconst Stack = ({\n as: Component = \"div\",\n direction = \"col\",\n alignH,\n alignV,\n wrap = \"nowrap\",\n gap = \"md\",\n divider,\n reverse = false,\n children,\n className,\n ...props\n}: StackProps<ElementType>) => {\n const directions: ResponsiveDirection =\n typeof direction === \"string\"\n ? { mobile: direction }\n : {\n ...direction,\n mobile: direction.mobile ?? \"col\",\n };\n\n const directionClasses = BREAKPOINTS.flatMap((breakpoint) => {\n const value = directions[breakpoint];\n\n return value ? [`direction-${breakpoint}-${value}`] : [];\n });\n\n const hasAlignment = alignH !== undefined || alignV !== undefined;\n\n const classes = cn(\n \"puzzle-stack\",\n ...directionClasses,\n reverse && \"reverse\",\n wrap,\n `gap-${gap}`,\n alignH && `align-h-${alignH}`,\n alignV && `align-v-${alignV}`,\n hasAlignment && \"has-alignment\",\n className,\n );\n\n const childrenWithDividers = divider\n ? Children.toArray(children).flatMap((child, index, arr) => {\n if (index === arr.length - 1) {\n return [child];\n }\n\n // Children keep the keys assigned by Children.toArray; only dividers get new ones.\n const dividerKey = `stack-divider-${isValidElement(child) ? child.key : index}`;\n const clonedDivider = isValidElement(divider)\n ? cloneElement(divider, { key: dividerKey })\n : createElement(Fragment, { key: dividerKey }, divider);\n\n return [child, clonedDivider];\n })\n : children;\n\n return (\n <Component className={classes} {...props}>\n {childrenWithDividers}\n </Component>\n );\n};\n\nexport {\n Stack,\n type StackProps,\n type ResponsiveDirection,\n type StackMainAlignment,\n type StackCrossAlignment,\n};\n"],"mappings":";;;;;AAyDA,MAAM,SAAS,EACb,IAAI,YAAY,OAChB,YAAY,OACZ,QACA,QACA,OAAO,UACP,MAAM,MACN,SACA,UAAU,OACV,UACA,WACA,GAAG,YAC0B;CAC7B,MAAM,aACJ,OAAO,cAAc,WACjB,EAAE,QAAQ,UAAU,IACpB;EACE,GAAG;EACH,QAAQ,UAAU,UAAU;CAC9B;CAEN,MAAM,mBAAmB,YAAY,SAAS,eAAe;EAC3D,MAAM,QAAQ,WAAW;EAEzB,OAAO,QAAQ,CAAC,aAAa,WAAW,GAAG,OAAO,IAAI,CAAC;CACzD,CAAC;CAED,MAAM,eAAe,WAAW,KAAA,KAAa,WAAW,KAAA;CAExD,MAAM,UAAU,GACd,gBACA,GAAG,kBACH,WAAW,WACX,MACA,OAAO,OACP,UAAU,WAAW,UACrB,UAAU,WAAW,UACrB,gBAAgB,iBAChB,SACF;CAEA,MAAM,uBAAuB,UACzB,SAAS,QAAQ,QAAQ,CAAC,CAAC,SAAS,OAAO,OAAO,QAAQ;EACxD,IAAI,UAAU,IAAI,SAAS,GACzB,OAAO,CAAC,KAAK;EAIf,MAAM,aAAa,iBAAiB,eAAe,KAAK,IAAI,MAAM,MAAM;EAKxE,OAAO,CAAC,OAJc,eAAe,OAAO,IACxC,aAAa,SAAS,EAAE,KAAK,WAAW,CAAC,IACzC,cAAc,UAAU,EAAE,KAAK,WAAW,GAAG,OAAO,CAE5B;CAC9B,CAAC,IACD;CAEJ,OACE,oBAAC,WAAD;EAAW,WAAW;EAAS,GAAI;EAChC,UAAA;CACQ,CAAA;AAEf"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/layout/stack/index.tsx"],"sourcesContent":["import { BREAKPOINTS, cn } from \"@puzzle-ui/core\";\nimport {\n Children,\n cloneElement,\n createElement,\n Fragment,\n isValidElement,\n type ComponentPropsWithRef,\n type ElementType,\n type ReactNode,\n} from \"react\";\nimport type { ResponsiveConfig, ResponsiveValue } from \"@puzzle-ui/core\";\nimport \"./stack.css\";\n\ntype StackDirection = \"row\" | \"col\";\ntype ResponsiveDirection = ResponsiveValue<StackDirection>;\n\ntype StackMainAlignment =\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"around\"\n | \"between\"\n | \"evenly\";\n\ntype StackCrossAlignment = \"start\" | \"center\" | \"end\" | \"stretch\";\n\ntype ResponsiveMainAlignment = ResponsiveValue<StackMainAlignment>;\ntype ResponsiveCrossAlignment = ResponsiveValue<StackCrossAlignment>;\n\ntype StackRowProps = {\n direction: \"row\";\n alignH?: ResponsiveMainAlignment;\n alignV?: ResponsiveCrossAlignment;\n};\n\ntype StackColProps = {\n direction?: \"col\";\n alignH?: ResponsiveCrossAlignment;\n alignV?: ResponsiveMainAlignment;\n};\n\ntype StackResponsiveProps = {\n direction: ResponsiveDirection;\n alignH?: ResponsiveMainAlignment;\n alignV?: ResponsiveMainAlignment;\n};\n\ntype StackOwnProps<C extends ElementType> = {\n as?: C;\n wrap?: \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n gap?: \"0\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n divider?: ReactNode;\n reverse?: boolean;\n} & (StackRowProps | StackColProps | StackResponsiveProps);\n\ntype StackProps<C extends ElementType = \"div\"> = StackOwnProps<C> &\n Omit<ComponentPropsWithRef<C>, keyof StackOwnProps<C> | \"as\">;\n\nconst Stack = ({\n as: Component = \"div\",\n direction = \"col\",\n alignH,\n alignV,\n wrap = \"wrap\",\n gap = \"md\",\n divider,\n reverse = false,\n children,\n className,\n ...props\n}: StackProps<ElementType>) => {\n const directions: ResponsiveConfig<StackDirection> =\n typeof direction === \"string\"\n ? { mobile: direction }\n : {\n ...direction,\n mobile: direction.mobile ?? \"col\",\n };\n\n const directionClasses = BREAKPOINTS.flatMap((breakpoint) => {\n const value = directions[breakpoint];\n\n return value ? [`direction-${breakpoint}-${value}`] : [];\n });\n\n const hasAlignment = alignH !== undefined || alignV !== undefined;\n\n const responsiveAlignH: ResponsiveConfig<StackMainAlignment> =\n typeof alignH === \"string\"\n ? { mobile: alignH }\n : { ...alignH, mobile: alignH?.mobile ?? \"start\" };\n const responsiveAlignV: ResponsiveConfig<StackMainAlignment> =\n typeof alignV === \"string\"\n ? { mobile: alignV }\n : { ...alignV, mobile: alignV?.mobile ?? \"start\" };\n const responsiveAlignHClasses = BREAKPOINTS.flatMap((breakpoint) => {\n const value = responsiveAlignH[breakpoint];\n\n return value ? [`align-h-${breakpoint}-${value}`] : [];\n });\n\n const responsiveAlignVClasses = BREAKPOINTS.flatMap((breakpoint) => {\n const value = responsiveAlignV[breakpoint];\n\n return value ? [`align-v-${breakpoint}-${value}`] : [];\n });\n\n const classes = cn(\n \"puzzle-stack\",\n ...directionClasses,\n reverse && \"reverse\",\n wrap,\n `gap-${gap}`,\n ...responsiveAlignHClasses,\n ...responsiveAlignVClasses,\n hasAlignment && \"has-alignment\",\n className,\n );\n\n const childrenWithDividers = divider\n ? Children.toArray(children).flatMap((child, index, arr) => {\n if (index === arr.length - 1) {\n return [child];\n }\n\n // Children keep the keys assigned by Children.toArray; only dividers get new ones.\n const dividerKey = `stack-divider-${isValidElement(child) ? child.key : index}`;\n const clonedDivider = isValidElement(divider)\n ? cloneElement(divider, { key: dividerKey })\n : createElement(Fragment, { key: dividerKey }, divider);\n\n return [child, clonedDivider];\n })\n : children;\n\n return (\n <Component className={classes} {...props}>\n {childrenWithDividers}\n </Component>\n );\n};\n\nexport {\n Stack,\n type StackProps,\n type ResponsiveDirection,\n type StackMainAlignment,\n type StackCrossAlignment,\n};\n"],"mappings":";;;;;AA4DA,MAAM,SAAS,EACb,IAAI,YAAY,OAChB,YAAY,OACZ,QACA,QACA,OAAO,QACP,MAAM,MACN,SACA,UAAU,OACV,UACA,WACA,GAAG,YAC0B;CAC7B,MAAM,aACJ,OAAO,cAAc,WACjB,EAAE,QAAQ,UAAU,IACpB;EACE,GAAG;EACH,QAAQ,UAAU,UAAU;CAC9B;CAEN,MAAM,mBAAmB,YAAY,SAAS,eAAe;EAC3D,MAAM,QAAQ,WAAW;EAEzB,OAAO,QAAQ,CAAC,aAAa,WAAW,GAAG,OAAO,IAAI,CAAC;CACzD,CAAC;CAED,MAAM,eAAe,WAAW,KAAA,KAAa,WAAW,KAAA;CAExD,MAAM,mBACJ,OAAO,WAAW,WACd,EAAE,QAAQ,OAAO,IACjB;EAAE,GAAG;EAAQ,QAAQ,QAAQ,UAAU;CAAQ;CACrD,MAAM,mBACJ,OAAO,WAAW,WACd,EAAE,QAAQ,OAAO,IACjB;EAAE,GAAG;EAAQ,QAAQ,QAAQ,UAAU;CAAQ;CACrD,MAAM,0BAA0B,YAAY,SAAS,eAAe;EAClE,MAAM,QAAQ,iBAAiB;EAE/B,OAAO,QAAQ,CAAC,WAAW,WAAW,GAAG,OAAO,IAAI,CAAC;CACvD,CAAC;CAED,MAAM,0BAA0B,YAAY,SAAS,eAAe;EAClE,MAAM,QAAQ,iBAAiB;EAE/B,OAAO,QAAQ,CAAC,WAAW,WAAW,GAAG,OAAO,IAAI,CAAC;CACvD,CAAC;CAED,MAAM,UAAU,GACd,gBACA,GAAG,kBACH,WAAW,WACX,MACA,OAAO,OACP,GAAG,yBACH,GAAG,yBACH,gBAAgB,iBAChB,SACF;CAEA,MAAM,uBAAuB,UACzB,SAAS,QAAQ,QAAQ,CAAC,CAAC,SAAS,OAAO,OAAO,QAAQ;EACxD,IAAI,UAAU,IAAI,SAAS,GACzB,OAAO,CAAC,KAAK;EAIf,MAAM,aAAa,iBAAiB,eAAe,KAAK,IAAI,MAAM,MAAM;EAKxE,OAAO,CAAC,OAJc,eAAe,OAAO,IACxC,aAAa,SAAS,EAAE,KAAK,WAAW,CAAC,IACzC,cAAc,UAAU,EAAE,KAAK,WAAW,GAAG,OAAO,CAE5B;CAC9B,CAAC,IACD;CAEJ,OACE,oBAAC,WAAD;EAAW,WAAW;EAAS,GAAI;EAChC,UAAA;CACQ,CAAA;AAEf"}
@@ -1,10 +1,19 @@
1
1
  .puzzle-stack {
2
+ --stack-align-h: flex-start;
3
+ --stack-align-v: flex-start;
4
+ --stack-main-alignment: var(--stack-align-v);
5
+ --stack-cross-alignment: var(--stack-align-h);
2
6
  gap: var(--puzzle-space-4, 1rem);
3
7
  justify-content: flex-start;
4
8
  align-items: stretch;
5
9
  display: flex;
6
10
  }
7
11
 
12
+ .puzzle-stack.has-alignment {
13
+ justify-content: var(--stack-main-alignment);
14
+ align-items: var(--stack-cross-alignment);
15
+ }
16
+
8
17
  .puzzle-stack.nowrap {
9
18
  flex-wrap: nowrap;
10
19
  }
@@ -30,18 +39,20 @@
30
39
  }
31
40
 
32
41
  .puzzle-stack.gap-md {
33
- gap: var(--puzzle-space-3, .75rem);
42
+ gap: var(--puzzle-space-4, 1rem);
34
43
  }
35
44
 
36
45
  .puzzle-stack.gap-lg {
37
- gap: var(--puzzle-space-4, 1rem);
46
+ gap: var(--puzzle-space-8, 2rem);
38
47
  }
39
48
 
40
49
  .puzzle-stack.gap-xl {
41
- gap: var(--puzzle-space-5, 1.25rem);
50
+ gap: var(--puzzle-space-16, 4rem);
42
51
  }
43
52
 
44
53
  .puzzle-stack.direction-mobile-row {
54
+ --stack-main-alignment: var(--stack-align-h);
55
+ --stack-cross-alignment: var(--stack-align-v);
45
56
  flex-direction: row;
46
57
  }
47
58
 
@@ -50,6 +61,8 @@
50
61
  }
51
62
 
52
63
  .puzzle-stack.direction-mobile-col {
64
+ --stack-main-alignment: var(--stack-align-v);
65
+ --stack-cross-alignment: var(--stack-align-h);
53
66
  flex-direction: column;
54
67
  }
55
68
 
@@ -57,52 +70,66 @@
57
70
  flex-direction: column-reverse;
58
71
  }
59
72
 
60
- .puzzle-stack.direction-mobile-row.align-h-start, .puzzle-stack.direction-mobile-col.align-v-start {
61
- justify-content: flex-start;
73
+ .puzzle-stack.align-h-mobile-start {
74
+ --stack-align-h: flex-start;
62
75
  }
63
76
 
64
- .puzzle-stack.direction-mobile-row.align-h-center, .puzzle-stack.direction-mobile-col.align-v-center {
65
- justify-content: center;
77
+ .puzzle-stack.align-h-mobile-center {
78
+ --stack-align-h: center;
66
79
  }
67
80
 
68
- .puzzle-stack.direction-mobile-row.align-h-end, .puzzle-stack.direction-mobile-col.align-v-end {
69
- justify-content: flex-end;
81
+ .puzzle-stack.align-h-mobile-end {
82
+ --stack-align-h: flex-end;
70
83
  }
71
84
 
72
- .puzzle-stack.direction-mobile-row.align-h-stretch, .puzzle-stack.direction-mobile-col.align-v-stretch {
73
- justify-content: stretch;
85
+ .puzzle-stack.align-h-mobile-stretch {
86
+ --stack-align-h: stretch;
74
87
  }
75
88
 
76
- .puzzle-stack.direction-mobile-row.align-h-around, .puzzle-stack.direction-mobile-col.align-v-around {
77
- justify-content: space-around;
89
+ .puzzle-stack.align-h-mobile-around {
90
+ --stack-align-h: space-around;
78
91
  }
79
92
 
80
- .puzzle-stack.direction-mobile-row.align-h-between, .puzzle-stack.direction-mobile-col.align-v-between {
81
- justify-content: space-between;
93
+ .puzzle-stack.align-h-mobile-between {
94
+ --stack-align-h: space-between;
82
95
  }
83
96
 
84
- .puzzle-stack.direction-mobile-row.align-h-evenly, .puzzle-stack.direction-mobile-col.align-v-evenly {
85
- justify-content: space-evenly;
97
+ .puzzle-stack.align-h-mobile-evenly {
98
+ --stack-align-h: space-evenly;
86
99
  }
87
100
 
88
- .puzzle-stack.direction-mobile-row.align-v-start, .puzzle-stack.direction-mobile-col.align-h-start {
89
- align-items: flex-start;
101
+ .puzzle-stack.align-v-mobile-start {
102
+ --stack-align-v: flex-start;
90
103
  }
91
104
 
92
- .puzzle-stack.direction-mobile-row.align-v-center, .puzzle-stack.direction-mobile-col.align-h-center {
93
- align-items: center;
105
+ .puzzle-stack.align-v-mobile-center {
106
+ --stack-align-v: center;
94
107
  }
95
108
 
96
- .puzzle-stack.direction-mobile-row.align-v-end, .puzzle-stack.direction-mobile-col.align-h-end {
97
- align-items: flex-end;
109
+ .puzzle-stack.align-v-mobile-end {
110
+ --stack-align-v: flex-end;
98
111
  }
99
112
 
100
- .puzzle-stack.direction-mobile-row.align-v-stretch, .puzzle-stack.direction-mobile-col.align-h-stretch {
101
- align-items: stretch;
113
+ .puzzle-stack.align-v-mobile-stretch {
114
+ --stack-align-v: stretch;
115
+ }
116
+
117
+ .puzzle-stack.align-v-mobile-around {
118
+ --stack-align-v: space-around;
119
+ }
120
+
121
+ .puzzle-stack.align-v-mobile-between {
122
+ --stack-align-v: space-between;
123
+ }
124
+
125
+ .puzzle-stack.align-v-mobile-evenly {
126
+ --stack-align-v: space-evenly;
102
127
  }
103
128
 
104
129
  @media (width >= 768px) {
105
130
  .puzzle-stack.direction-tablet-row {
131
+ --stack-main-alignment: var(--stack-align-h);
132
+ --stack-cross-alignment: var(--stack-align-v);
106
133
  flex-direction: row;
107
134
  }
108
135
 
@@ -111,6 +138,8 @@
111
138
  }
112
139
 
113
140
  .puzzle-stack.direction-tablet-col {
141
+ --stack-main-alignment: var(--stack-align-v);
142
+ --stack-cross-alignment: var(--stack-align-h);
114
143
  flex-direction: column;
115
144
  }
116
145
 
@@ -118,58 +147,67 @@
118
147
  flex-direction: column-reverse;
119
148
  }
120
149
 
121
- .puzzle-stack.direction-tablet-row.has-alignment, .puzzle-stack.direction-tablet-col.has-alignment {
122
- justify-content: flex-start;
123
- align-items: stretch;
150
+ .puzzle-stack.align-h-tablet-start {
151
+ --stack-align-h: flex-start;
124
152
  }
125
153
 
126
- .puzzle-stack.direction-tablet-row.align-h-start, .puzzle-stack.direction-tablet-col.align-v-start {
127
- justify-content: flex-start;
154
+ .puzzle-stack.align-h-tablet-center {
155
+ --stack-align-h: center;
128
156
  }
129
157
 
130
- .puzzle-stack.direction-tablet-row.align-h-center, .puzzle-stack.direction-tablet-col.align-v-center {
131
- justify-content: center;
158
+ .puzzle-stack.align-h-tablet-end {
159
+ --stack-align-h: flex-end;
132
160
  }
133
161
 
134
- .puzzle-stack.direction-tablet-row.align-h-end, .puzzle-stack.direction-tablet-col.align-v-end {
135
- justify-content: flex-end;
162
+ .puzzle-stack.align-h-tablet-stretch {
163
+ --stack-align-h: stretch;
136
164
  }
137
165
 
138
- .puzzle-stack.direction-tablet-row.align-h-stretch, .puzzle-stack.direction-tablet-col.align-v-stretch {
139
- justify-content: stretch;
166
+ .puzzle-stack.align-h-tablet-around {
167
+ --stack-align-h: space-around;
140
168
  }
141
169
 
142
- .puzzle-stack.direction-tablet-row.align-h-around, .puzzle-stack.direction-tablet-col.align-v-around {
143
- justify-content: space-around;
170
+ .puzzle-stack.align-h-tablet-between {
171
+ --stack-align-h: space-between;
144
172
  }
145
173
 
146
- .puzzle-stack.direction-tablet-row.align-h-between, .puzzle-stack.direction-tablet-col.align-v-between {
147
- justify-content: space-between;
174
+ .puzzle-stack.align-h-tablet-evenly {
175
+ --stack-align-h: space-evenly;
148
176
  }
149
177
 
150
- .puzzle-stack.direction-tablet-row.align-h-evenly, .puzzle-stack.direction-tablet-col.align-v-evenly {
151
- justify-content: space-evenly;
178
+ .puzzle-stack.align-v-tablet-start {
179
+ --stack-align-v: flex-start;
152
180
  }
153
181
 
154
- .puzzle-stack.direction-tablet-row.align-v-start, .puzzle-stack.direction-tablet-col.align-h-start {
155
- align-items: flex-start;
182
+ .puzzle-stack.align-v-tablet-center {
183
+ --stack-align-v: center;
156
184
  }
157
185
 
158
- .puzzle-stack.direction-tablet-row.align-v-center, .puzzle-stack.direction-tablet-col.align-h-center {
159
- align-items: center;
186
+ .puzzle-stack.align-v-tablet-end {
187
+ --stack-align-v: flex-end;
160
188
  }
161
189
 
162
- .puzzle-stack.direction-tablet-row.align-v-end, .puzzle-stack.direction-tablet-col.align-h-end {
163
- align-items: flex-end;
190
+ .puzzle-stack.align-v-tablet-stretch {
191
+ --stack-align-v: stretch;
164
192
  }
165
193
 
166
- .puzzle-stack.direction-tablet-row.align-v-stretch, .puzzle-stack.direction-tablet-col.align-h-stretch {
167
- align-items: stretch;
194
+ .puzzle-stack.align-v-tablet-around {
195
+ --stack-align-v: space-around;
196
+ }
197
+
198
+ .puzzle-stack.align-v-tablet-between {
199
+ --stack-align-v: space-between;
200
+ }
201
+
202
+ .puzzle-stack.align-v-tablet-evenly {
203
+ --stack-align-v: space-evenly;
168
204
  }
169
205
  }
170
206
 
171
207
  @media (width >= 1024px) {
172
208
  .puzzle-stack.direction-desktop-row {
209
+ --stack-main-alignment: var(--stack-align-h);
210
+ --stack-cross-alignment: var(--stack-align-v);
173
211
  flex-direction: row;
174
212
  }
175
213
 
@@ -178,6 +216,8 @@
178
216
  }
179
217
 
180
218
  .puzzle-stack.direction-desktop-col {
219
+ --stack-main-alignment: var(--stack-align-v);
220
+ --stack-cross-alignment: var(--stack-align-h);
181
221
  flex-direction: column;
182
222
  }
183
223
 
@@ -185,119 +225,59 @@
185
225
  flex-direction: column-reverse;
186
226
  }
187
227
 
188
- .puzzle-stack.direction-desktop-row.has-alignment, .puzzle-stack.direction-desktop-col.has-alignment {
189
- justify-content: flex-start;
190
- align-items: stretch;
191
- }
192
-
193
- .puzzle-stack.direction-desktop-row.align-h-start, .puzzle-stack.direction-desktop-col.align-v-start {
194
- justify-content: flex-start;
195
- }
196
-
197
- .puzzle-stack.direction-desktop-row.align-h-center, .puzzle-stack.direction-desktop-col.align-v-center {
198
- justify-content: center;
199
- }
200
-
201
- .puzzle-stack.direction-desktop-row.align-h-end, .puzzle-stack.direction-desktop-col.align-v-end {
202
- justify-content: flex-end;
228
+ .puzzle-stack.align-h-desktop-start {
229
+ --stack-align-h: flex-start;
203
230
  }
204
231
 
205
- .puzzle-stack.direction-desktop-row.align-h-stretch, .puzzle-stack.direction-desktop-col.align-v-stretch {
206
- justify-content: stretch;
207
- }
208
-
209
- .puzzle-stack.direction-desktop-row.align-h-around, .puzzle-stack.direction-desktop-col.align-v-around {
210
- justify-content: space-around;
211
- }
212
-
213
- .puzzle-stack.direction-desktop-row.align-h-between, .puzzle-stack.direction-desktop-col.align-v-between {
214
- justify-content: space-between;
215
- }
216
-
217
- .puzzle-stack.direction-desktop-row.align-h-evenly, .puzzle-stack.direction-desktop-col.align-v-evenly {
218
- justify-content: space-evenly;
219
- }
220
-
221
- .puzzle-stack.direction-desktop-row.align-v-start, .puzzle-stack.direction-desktop-col.align-h-start {
222
- align-items: flex-start;
223
- }
224
-
225
- .puzzle-stack.direction-desktop-row.align-v-center, .puzzle-stack.direction-desktop-col.align-h-center {
226
- align-items: center;
227
- }
228
-
229
- .puzzle-stack.direction-desktop-row.align-v-end, .puzzle-stack.direction-desktop-col.align-h-end {
230
- align-items: flex-end;
231
- }
232
-
233
- .puzzle-stack.direction-desktop-row.align-v-stretch, .puzzle-stack.direction-desktop-col.align-h-stretch {
234
- align-items: stretch;
235
- }
236
- }
237
-
238
- @media (width >= 1440px) {
239
- .puzzle-stack.direction-hd-row {
240
- flex-direction: row;
241
- }
242
-
243
- .puzzle-stack.direction-hd-row.reverse {
244
- flex-direction: row-reverse;
245
- }
246
-
247
- .puzzle-stack.direction-hd-col {
248
- flex-direction: column;
249
- }
250
-
251
- .puzzle-stack.direction-hd-col.reverse {
252
- flex-direction: column-reverse;
232
+ .puzzle-stack.align-h-desktop-center {
233
+ --stack-align-h: center;
253
234
  }
254
235
 
255
- .puzzle-stack.direction-hd-row.has-alignment, .puzzle-stack.direction-hd-col.has-alignment {
256
- justify-content: flex-start;
257
- align-items: stretch;
236
+ .puzzle-stack.align-h-desktop-end {
237
+ --stack-align-h: flex-end;
258
238
  }
259
239
 
260
- .puzzle-stack.direction-hd-row.align-h-start, .puzzle-stack.direction-hd-col.align-v-start {
261
- justify-content: flex-start;
240
+ .puzzle-stack.align-h-desktop-stretch {
241
+ --stack-align-h: stretch;
262
242
  }
263
243
 
264
- .puzzle-stack.direction-hd-row.align-h-center, .puzzle-stack.direction-hd-col.align-v-center {
265
- justify-content: center;
244
+ .puzzle-stack.align-h-desktop-around {
245
+ --stack-align-h: space-around;
266
246
  }
267
247
 
268
- .puzzle-stack.direction-hd-row.align-h-end, .puzzle-stack.direction-hd-col.align-v-end {
269
- justify-content: flex-end;
248
+ .puzzle-stack.align-h-desktop-between {
249
+ --stack-align-h: space-between;
270
250
  }
271
251
 
272
- .puzzle-stack.direction-hd-row.align-h-stretch, .puzzle-stack.direction-hd-col.align-v-stretch {
273
- justify-content: stretch;
252
+ .puzzle-stack.align-h-desktop-evenly {
253
+ --stack-align-h: space-evenly;
274
254
  }
275
255
 
276
- .puzzle-stack.direction-hd-row.align-h-around, .puzzle-stack.direction-hd-col.align-v-around {
277
- justify-content: space-around;
256
+ .puzzle-stack.align-v-desktop-start {
257
+ --stack-align-v: flex-start;
278
258
  }
279
259
 
280
- .puzzle-stack.direction-hd-row.align-h-between, .puzzle-stack.direction-hd-col.align-v-between {
281
- justify-content: space-between;
260
+ .puzzle-stack.align-v-desktop-center {
261
+ --stack-align-v: center;
282
262
  }
283
263
 
284
- .puzzle-stack.direction-hd-row.align-h-evenly, .puzzle-stack.direction-hd-col.align-v-evenly {
285
- justify-content: space-evenly;
264
+ .puzzle-stack.align-v-desktop-end {
265
+ --stack-align-v: flex-end;
286
266
  }
287
267
 
288
- .puzzle-stack.direction-hd-row.align-v-start, .puzzle-stack.direction-hd-col.align-h-start {
289
- align-items: flex-start;
268
+ .puzzle-stack.align-v-desktop-stretch {
269
+ --stack-align-v: stretch;
290
270
  }
291
271
 
292
- .puzzle-stack.direction-hd-row.align-v-center, .puzzle-stack.direction-hd-col.align-h-center {
293
- align-items: center;
272
+ .puzzle-stack.align-v-desktop-around {
273
+ --stack-align-v: space-around;
294
274
  }
295
275
 
296
- .puzzle-stack.direction-hd-row.align-v-end, .puzzle-stack.direction-hd-col.align-h-end {
297
- align-items: flex-end;
276
+ .puzzle-stack.align-v-desktop-between {
277
+ --stack-align-v: space-between;
298
278
  }
299
279
 
300
- .puzzle-stack.direction-hd-row.align-v-stretch, .puzzle-stack.direction-hd-col.align-h-stretch {
301
- align-items: stretch;
280
+ .puzzle-stack.align-v-desktop-evenly {
281
+ --stack-align-v: space-evenly;
302
282
  }
303
283
  }
@@ -157,7 +157,10 @@ const Carousel = ({ renderItem, getItemKey, panelsPerView, itemWidth, gap = 0, c
157
157
  }, [
158
158
  items.length,
159
159
  itemOrderSignature,
160
- measureLayout
160
+ measureLayout,
161
+ gaps.mobile,
162
+ gaps.tablet,
163
+ gaps.desktop
161
164
  ]);
162
165
  /**
163
166
  * currentPanel is always an item index.