@heymantle/litho 0.0.10 → 0.0.12

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 (91) hide show
  1. package/dist/cjs/components/Banner.js +6 -1
  2. package/dist/cjs/components/Button.js +33 -4
  3. package/dist/cjs/components/ButtonGroup.js +19 -4
  4. package/dist/cjs/components/Card.js +39 -3
  5. package/dist/cjs/components/ChoiceList.js +3 -2
  6. package/dist/cjs/components/Code.js +227 -0
  7. package/dist/cjs/components/Filters.js +1 -1
  8. package/dist/cjs/components/Frame.js +2 -2
  9. package/dist/cjs/components/Layout.js +16 -4
  10. package/dist/cjs/components/Link.js +35 -4
  11. package/dist/cjs/components/Modal.js +4 -0
  12. package/dist/cjs/components/Page.js +5 -2
  13. package/dist/cjs/components/Pane.js +669 -84
  14. package/dist/cjs/components/ResourceList.js +2 -2
  15. package/dist/cjs/components/TabNavigation.js +300 -0
  16. package/dist/cjs/components/TextField.js +3 -0
  17. package/dist/cjs/components/Tip.js +3 -0
  18. package/dist/cjs/components/Tooltip.js +12 -13
  19. package/dist/cjs/index.js +4 -0
  20. package/dist/cjs/stories/Pane.stories.js +352 -3
  21. package/dist/cjs/utilities/useBodyScrollLock.js +63 -0
  22. package/dist/cjs/utilities/useKeyboardAction.js +19 -0
  23. package/dist/cjs/utilities/useLocalStorage.js +126 -0
  24. package/dist/cjs/utilities/useMobile.js +92 -0
  25. package/dist/cjs/utilities/usePaneState.js +340 -0
  26. package/dist/cjs/utilities/useTabStorage.js +325 -0
  27. package/dist/esm/components/Banner.js +7 -2
  28. package/dist/esm/components/Button.js +33 -4
  29. package/dist/esm/components/ButtonGroup.js +19 -4
  30. package/dist/esm/components/Card.js +39 -3
  31. package/dist/esm/components/ChoiceList.js +3 -2
  32. package/dist/esm/components/Code.js +212 -0
  33. package/dist/esm/components/Filters.js +2 -2
  34. package/dist/esm/components/Frame.js +2 -2
  35. package/dist/esm/components/Layout.js +16 -4
  36. package/dist/esm/components/Link.js +31 -5
  37. package/dist/esm/components/Modal.js +4 -0
  38. package/dist/esm/components/Page.js +5 -2
  39. package/dist/esm/components/Pane.js +619 -83
  40. package/dist/esm/components/ResourceList.js +2 -2
  41. package/dist/esm/components/TabNavigation.js +285 -0
  42. package/dist/esm/components/TextField.js +4 -1
  43. package/dist/esm/components/Tip.js +4 -1
  44. package/dist/esm/components/Tooltip.js +12 -13
  45. package/dist/esm/index.js +1 -0
  46. package/dist/esm/stories/Pane.stories.js +346 -3
  47. package/dist/esm/utilities/useBodyScrollLock.js +53 -0
  48. package/dist/esm/utilities/useKeyboardAction.js +25 -0
  49. package/dist/esm/utilities/useLocalStorage.js +115 -0
  50. package/dist/esm/utilities/useMobile.js +79 -0
  51. package/dist/esm/utilities/usePaneState.js +334 -0
  52. package/dist/esm/utilities/useTabStorage.js +311 -0
  53. package/dist/types/components/Banner.d.ts.map +1 -1
  54. package/dist/types/components/Button.d.ts +2 -2
  55. package/dist/types/components/Button.d.ts.map +1 -1
  56. package/dist/types/components/ButtonGroup.d.ts.map +1 -1
  57. package/dist/types/components/Card.d.ts +34 -1
  58. package/dist/types/components/Card.d.ts.map +1 -1
  59. package/dist/types/components/Code.d.ts +28 -0
  60. package/dist/types/components/Code.d.ts.map +1 -0
  61. package/dist/types/components/Filters.d.ts.map +1 -1
  62. package/dist/types/components/Layout.d.ts +2 -0
  63. package/dist/types/components/Layout.d.ts.map +1 -1
  64. package/dist/types/components/Link.d.ts +4 -0
  65. package/dist/types/components/Link.d.ts.map +1 -1
  66. package/dist/types/components/Modal.d.ts +2 -0
  67. package/dist/types/components/Modal.d.ts.map +1 -1
  68. package/dist/types/components/Page.d.ts.map +1 -1
  69. package/dist/types/components/Pane.d.ts +2 -0
  70. package/dist/types/components/Pane.d.ts.map +1 -1
  71. package/dist/types/components/TabNavigation.d.ts +3 -0
  72. package/dist/types/components/TabNavigation.d.ts.map +1 -0
  73. package/dist/types/components/TextField.d.ts.map +1 -1
  74. package/dist/types/components/Tip.d.ts.map +1 -1
  75. package/dist/types/components/Tooltip.d.ts +2 -0
  76. package/dist/types/components/Tooltip.d.ts.map +1 -1
  77. package/dist/types/index.d.ts +1 -0
  78. package/dist/types/utilities/useBodyScrollLock.d.ts +12 -0
  79. package/dist/types/utilities/useBodyScrollLock.d.ts.map +1 -0
  80. package/dist/types/utilities/useKeyboardAction.d.ts +2 -0
  81. package/dist/types/utilities/useKeyboardAction.d.ts.map +1 -0
  82. package/dist/types/utilities/useLocalStorage.d.ts +13 -0
  83. package/dist/types/utilities/useLocalStorage.d.ts.map +1 -0
  84. package/dist/types/utilities/useMobile.d.ts +9 -0
  85. package/dist/types/utilities/useMobile.d.ts.map +1 -0
  86. package/dist/types/utilities/usePaneState.d.ts +2 -0
  87. package/dist/types/utilities/usePaneState.d.ts.map +1 -0
  88. package/dist/types/utilities/useTabStorage.d.ts +8 -0
  89. package/dist/types/utilities/useTabStorage.d.ts.map +1 -0
  90. package/index.css +77 -6
  91. package/package.json +1 -1
@@ -168,10 +168,15 @@ var STATUS_STYLES = {
168
168
  }),
169
169
  !icon && !spinner && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
170
170
  children: [
171
+ status === "insight" && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
172
+ source: _polarisicons.MagicMajor,
173
+ color: statusColors.icon
174
+ }),
171
175
  ![
172
176
  "warning",
173
177
  "attention",
174
- "success"
178
+ "success",
179
+ "insight"
175
180
  ].includes(status) && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
176
181
  source: _polarisicons.CircleInformationMajor,
177
182
  color: statusColors.icon
@@ -488,6 +488,23 @@ var styles = (0, _tailwindvariants.tv)({
488
488
  highlight: true,
489
489
  loading: true,
490
490
  class: "bg-btn-highlight-disabled text-btn-highlight-disabled-fg"
491
+ },
492
+ // Insight buttons
493
+ {
494
+ insight: true,
495
+ disabled: false,
496
+ loading: false,
497
+ class: "bg-btn-insight hover:bg-btn-insight-low active:bg-btn-insight-lower text-btn-insight-fg hover:text-btn-insight-fg-alt border-btn-insight-border hover:border-btn-insight-border-low active:border-btn-insight-border-low\n dark:outline-hidden dark:border-transparent dark:shadow-btn-dark dark:border-t-tint-alt-6 dark:hover:border-t-tint-alt-7 dark:active:border-t-tint-alt-8"
498
+ },
499
+ {
500
+ primary: true,
501
+ disabled: true,
502
+ class: "bg-btn-primary-disabled text-btn-primary-disabled-fg"
503
+ },
504
+ {
505
+ primary: true,
506
+ loading: true,
507
+ class: "bg-btn-primary-disabled text-btn-primary-disabled-fg"
491
508
  }
492
509
  ],
493
510
  defaultVariants: {
@@ -496,7 +513,8 @@ var styles = (0, _tailwindvariants.tv)({
496
513
  insideButtonGroup: false,
497
514
  shadow: false,
498
515
  darkMode: false,
499
- bordered: false
516
+ bordered: false,
517
+ insight: false
500
518
  }
501
519
  });
502
520
  var contentStyles = (0, _tailwindvariants.tv)({
@@ -633,6 +651,10 @@ var textStyles = (0, _tailwindvariants.tv)({
633
651
  true: "",
634
652
  false: ""
635
653
  },
654
+ insight: {
655
+ true: "",
656
+ false: ""
657
+ },
636
658
  naked: {
637
659
  true: "",
638
660
  false: ""
@@ -663,6 +685,7 @@ var textStyles = (0, _tailwindvariants.tv)({
663
685
  plain: false,
664
686
  link: false,
665
687
  naked: false,
688
+ insight: false,
666
689
  class: "text-btn-secondary-fg"
667
690
  },
668
691
  {
@@ -801,7 +824,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
801
824
  * @param {boolean} [props.disclosureRight=false] - Whether to show the disclosure on the right.
802
825
  * @param {boolean} [props.plain=false] - Whether to show plain styling without background.
803
826
  * @param {boolean} [props.naked=false] - Whether to show the naked styling.
804
- * @param {"small" | "medium" | "large" | "stepper"} [props.size='medium'] - Size of the button ('small', 'medium', 'large', 'stepper').
827
+ * @param {"mini" | "small" | "medium" | "large" | "stepper"} [props.size='medium'] - Size of the button ('mini', 'small', 'medium', 'large', 'stepper').
805
828
  * @param {boolean} [props.fullWidth] - Whether the button should take full width.
806
829
  * @param {"left" | "center" | "right"} [props.align='center'] - Alignment of the button content ('left', 'center', 'right').
807
830
  * @param {string} [props.tooltip] - Tooltip to show when hovering over the button.
@@ -857,7 +880,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
857
880
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
858
881
  var darkMode = (0, _AppProvider.useDarkMode)().darkMode;
859
882
  var _useState = _sliced_to_array((0, _react.useState)(false), 2), showConnectedDisclosurePopover = _useState[0], setShowConnectedDisclosurePopover = _useState[1];
860
- var id = props.id, children = props.children, url = props.url, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, external = props.external, target = props.target, submit = props.submit, _props_loading = props.loading, loading = _props_loading === void 0 ? false : _props_loading, _props_pressed = props.pressed, pressed = _props_pressed === void 0 ? false : _props_pressed, accessibilityLabel = props.accessibilityLabel, role = props.role, ariaControls = props.ariaControls, ariaExpanded = props.ariaExpanded, ariaDescribedBy = props.ariaDescribedBy, ariaChecked = props.ariaChecked, icon = props.icon, _iconColor = props.iconColor, _props_iconSize = props.iconSize, iconSize = _props_iconSize === void 0 ? "default" : _props_iconSize, _props_bordered = props.bordered, bordered = _props_bordered === void 0 ? false : _props_bordered, _props_primary = props.primary, primary = _props_primary === void 0 ? false : _props_primary, _props_highlight = props.highlight, highlight = _props_highlight === void 0 ? false : _props_highlight, _props_link = props.link, link = _props_link === void 0 ? false : _props_link, _props_destructive = props.destructive, destructive = _props_destructive === void 0 ? false : _props_destructive, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_disclosureRight = props.disclosureRight, disclosureRight = _props_disclosureRight === void 0 ? false : _props_disclosureRight, _props_plain = props.plain, plain = _props_plain === void 0 ? false : _props_plain, _props_naked = props.naked, naked = _props_naked === void 0 ? false : _props_naked, _props_size = props.size, size = _props_size === void 0 ? "medium" : _props_size, fullWidth = props.fullWidth, _props_align = props.align, align = _props_align === void 0 ? "center" : _props_align, connectedDisclosure = props.connectedDisclosure, className = props.className, contentClassName = props.contentClassName, rounded = props.rounded, onClick = props.onClick, onMouseDown = props.onMouseDown, tooltip = props.tooltip, _props_tooltipAlignment = props.tooltipAlignment, tooltipAlignment = _props_tooltipAlignment === void 0 ? "right" : _props_tooltipAlignment, _props_tooltipPosition = props.tooltipPosition, tooltipPosition = _props_tooltipPosition === void 0 ? "above" : _props_tooltipPosition, _props_tooltipDisplay = props.tooltipDisplay, tooltipDisplay = _props_tooltipDisplay === void 0 ? "inline-block" : _props_tooltipDisplay, shadow = props.shadow, restProps = _object_without_properties(props, [
883
+ var id = props.id, children = props.children, url = props.url, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, external = props.external, target = props.target, submit = props.submit, _props_loading = props.loading, loading = _props_loading === void 0 ? false : _props_loading, _props_pressed = props.pressed, pressed = _props_pressed === void 0 ? false : _props_pressed, accessibilityLabel = props.accessibilityLabel, role = props.role, ariaControls = props.ariaControls, ariaExpanded = props.ariaExpanded, ariaDescribedBy = props.ariaDescribedBy, ariaChecked = props.ariaChecked, icon = props.icon, _iconColor = props.iconColor, _props_iconSize = props.iconSize, iconSize = _props_iconSize === void 0 ? "default" : _props_iconSize, _props_bordered = props.bordered, bordered = _props_bordered === void 0 ? false : _props_bordered, _props_primary = props.primary, primary = _props_primary === void 0 ? false : _props_primary, _props_highlight = props.highlight, highlight = _props_highlight === void 0 ? false : _props_highlight, _props_link = props.link, link = _props_link === void 0 ? false : _props_link, _props_destructive = props.destructive, destructive = _props_destructive === void 0 ? false : _props_destructive, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_disclosureRight = props.disclosureRight, disclosureRight = _props_disclosureRight === void 0 ? false : _props_disclosureRight, _props_insight = props.insight, insight = _props_insight === void 0 ? false : _props_insight, _props_plain = props.plain, plain = _props_plain === void 0 ? false : _props_plain, _props_naked = props.naked, naked = _props_naked === void 0 ? false : _props_naked, _props_size = props.size, size = _props_size === void 0 ? "medium" : _props_size, fullWidth = props.fullWidth, _props_align = props.align, align = _props_align === void 0 ? "center" : _props_align, connectedDisclosure = props.connectedDisclosure, className = props.className, contentClassName = props.contentClassName, rounded = props.rounded, onClick = props.onClick, onMouseDown = props.onMouseDown, tooltip = props.tooltip, _props_tooltipAlignment = props.tooltipAlignment, tooltipAlignment = _props_tooltipAlignment === void 0 ? "right" : _props_tooltipAlignment, _props_tooltipPosition = props.tooltipPosition, tooltipPosition = _props_tooltipPosition === void 0 ? "above" : _props_tooltipPosition, _props_tooltipDisplay = props.tooltipDisplay, tooltipDisplay = _props_tooltipDisplay === void 0 ? "inline-block" : _props_tooltipDisplay, shadow = props.shadow, restProps = _object_without_properties(props, [
861
884
  "id",
862
885
  "children",
863
886
  "url",
@@ -883,6 +906,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
883
906
  "destructive",
884
907
  "disclosure",
885
908
  "disclosureRight",
909
+ "insight",
886
910
  "plain",
887
911
  "naked",
888
912
  "size",
@@ -911,9 +935,10 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
911
935
  link: "btn-link".concat(base),
912
936
  destructive: "btn-destructive".concat(base),
913
937
  highlight: "btn-highlight".concat(base),
938
+ insight: "btn-insight".concat(base),
914
939
  default: "btn-secondary".concat(base)
915
940
  };
916
- var iconColor = iconColorMap[primary ? "primary" : plain ? "plain" : link ? "link" : destructive ? "destructive" : highlight ? "highlight" : "default"];
941
+ var iconColor = iconColorMap[primary ? "primary" : plain ? "plain" : link ? "link" : destructive ? "destructive" : highlight ? "highlight" : insight ? "insight" : "default"];
917
942
  var iconOnly = hasIcon && !hasChildren;
918
943
  var connectedDisclosureActions = (connectedDisclosure === null || connectedDisclosure === void 0 ? void 0 : connectedDisclosure.actions) || [];
919
944
  var showConnectedDisclosure = connectedDisclosure && connectedDisclosureActions.length > 0;
@@ -923,6 +948,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
923
948
  link: link,
924
949
  destructive: destructive,
925
950
  highlight: highlight,
951
+ insight: insight,
926
952
  insideButtonGroup: insideButtonGroup,
927
953
  loading: loading,
928
954
  disabled: disabled,
@@ -953,6 +979,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
953
979
  link: link,
954
980
  destructive: destructive,
955
981
  highlight: highlight,
982
+ insight: insight,
956
983
  pressed: pressed,
957
984
  loading: loading,
958
985
  disabled: disabled,
@@ -964,6 +991,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
964
991
  link: link,
965
992
  destructive: destructive,
966
993
  highlight: highlight,
994
+ insight: insight,
967
995
  loading: loading,
968
996
  disabled: disabled
969
997
  });
@@ -1047,6 +1075,7 @@ var connectedDisclosureStyles = (0, _tailwindvariants.tv)({
1047
1075
  link: link,
1048
1076
  destructive: destructive,
1049
1077
  highlight: highlight,
1078
+ insight: insight,
1050
1079
  icon: _polarisicons.CaretDownMinor,
1051
1080
  disclosureRight: true,
1052
1081
  iconColor: _iconColor,
@@ -145,14 +145,26 @@ var styles = (0, _tailwindvariants.tv)({
145
145
  variants: {
146
146
  segmented: {
147
147
  true: "Litho-ButtonGroup--Segmented",
148
- false: "gap-2"
148
+ false: ""
149
149
  },
150
150
  noWrap: {
151
151
  true: "flex-nowrap"
152
152
  },
153
153
  fullWidth: {
154
154
  true: "Litho-ButtonGroup--FullWidth"
155
+ },
156
+ gap: {
157
+ "0": "gap-0",
158
+ "1": "gap-1",
159
+ "2": "gap-2",
160
+ "3": "gap-3",
161
+ "4": "gap-4",
162
+ "5": "gap-5",
163
+ "6": "gap-6"
155
164
  }
165
+ },
166
+ defaultVariants: {
167
+ gap: "2"
156
168
  }
157
169
  });
158
170
  var ButtonGroupContext = /*#__PURE__*/ (0, _react.createContext)(false);
@@ -170,18 +182,21 @@ var ButtonGroupContext = /*#__PURE__*/ (0, _react.createContext)(false);
170
182
  * @returns {JSX.Element} The rendered ButtonGroup component.
171
183
  */ function ButtonGroup() {
172
184
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
173
- var children = props.children, _props_segmented = props.segmented, segmented = _props_segmented === void 0 ? false : _props_segmented, id = props.id, className = props.className, _props_fullWidth = props.fullWidth, fullWidth = _props_fullWidth === void 0 ? false : _props_fullWidth, _props_noWrap = props.noWrap, noWrap = _props_noWrap === void 0 ? false : _props_noWrap, restProps = _object_without_properties(props, [
185
+ var children = props.children, _props_segmented = props.segmented, segmented = _props_segmented === void 0 ? false : _props_segmented, id = props.id, className = props.className, _props_fullWidth = props.fullWidth, fullWidth = _props_fullWidth === void 0 ? false : _props_fullWidth, _props_noWrap = props.noWrap, noWrap = _props_noWrap === void 0 ? false : _props_noWrap, tmp = props.gap, _gap = tmp === void 0 ? "2" : tmp, restProps = _object_without_properties(props, [
174
186
  "children",
175
187
  "segmented",
176
188
  "id",
177
189
  "className",
178
190
  "fullWidth",
179
- "noWrap"
191
+ "noWrap",
192
+ "gap"
180
193
  ]);
194
+ var gap = segmented ? "0" : _gap;
181
195
  var classes = styles({
182
196
  segmented: segmented,
183
197
  noWrap: noWrap,
184
- fullWidth: fullWidth
198
+ fullWidth: fullWidth,
199
+ gap: gap
185
200
  });
186
201
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(ButtonGroupContext.Provider, {
187
202
  value: segmented,
@@ -429,7 +429,7 @@ var sectionBodyStyles = (0, _tailwindvariants.tv)({
429
429
  *
430
430
  * @returns {React.ReactElement} The rendered Section component.
431
431
  */ Card.Section = function(param) {
432
- var title = param.title, _param_titleVariant = param.titleVariant, titleVariant = _param_titleVariant === void 0 ? "headingSm" : _param_titleVariant, action = param.action, children = param.children, _param_padded = param.padded, padded = _param_padded === void 0 ? true : _param_padded, _param_paddedHalf = param.paddedHalf, paddedHalf = _param_paddedHalf === void 0 ? false : _param_paddedHalf, _param_isFirst = param.isFirst, isFirst = _param_isFirst === void 0 ? false : _param_isFirst, _param_cardHasHeader = param.cardHasHeader, cardHasHeader = _param_cardHasHeader === void 0 ? false : _param_cardHasHeader, _param_borderBottom = param.borderBottom, borderBottom = _param_borderBottom === void 0 ? true : _param_borderBottom, _param_borderTop = param.borderTop, borderTop = _param_borderTop === void 0 ? false : _param_borderTop, _param_subdued = param.subdued, subdued = _param_subdued === void 0 ? false : _param_subdued, _param_headerGap = param.headerGap, headerGap = _param_headerGap === void 0 ? "0" : _param_headerGap, _param_gap = param.gap, gap = _param_gap === void 0 ? "0" : _param_gap, icon = param.icon, tooltip = param.tooltip, description = param.description, accessory = param.accessory, _param_emptyState = param.emptyState, emptyState = _param_emptyState === void 0 ? {} : _param_emptyState, className = param.className;
432
+ var title = param.title, _param_titleVariant = param.titleVariant, titleVariant = _param_titleVariant === void 0 ? "headingSm" : _param_titleVariant, action = param.action, children = param.children, _param_padded = param.padded, padded = _param_padded === void 0 ? true : _param_padded, _param_paddedHalf = param.paddedHalf, paddedHalf = _param_paddedHalf === void 0 ? false : _param_paddedHalf, _param_isFirst = param.isFirst, isFirst = _param_isFirst === void 0 ? false : _param_isFirst, _param_cardHasHeader = param.cardHasHeader, cardHasHeader = _param_cardHasHeader === void 0 ? false : _param_cardHasHeader, _param_borderBottom = param.borderBottom, borderBottom = _param_borderBottom === void 0 ? true : _param_borderBottom, _param_borderTop = param.borderTop, borderTop = _param_borderTop === void 0 ? false : _param_borderTop, _param_subdued = param.subdued, subdued = _param_subdued === void 0 ? false : _param_subdued, _param_headerGap = param.headerGap, headerGap = _param_headerGap === void 0 ? "0" : _param_headerGap, _param_gap = param.gap, gap = _param_gap === void 0 ? "0" : _param_gap, icon = param.icon, tooltip = param.tooltip, description = param.description, accessory = param.accessory, _param_emptyState = param.emptyState, emptyState = _param_emptyState === void 0 ? {} : _param_emptyState, className = param.className, sectionBodyClassName = param.sectionBodyClassName;
433
433
  var showHeader = !!(title || action);
434
434
  var sectionClasses = sectionStyles({
435
435
  borderBottom: borderBottom,
@@ -499,7 +499,7 @@ var sectionBodyStyles = (0, _tailwindvariants.tv)({
499
499
  ]
500
500
  }),
501
501
  /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
502
- className: sectionBodyClasses,
502
+ className: "".concat(sectionBodyClasses).concat(sectionBodyClassName ? " ".concat(sectionBodyClassName) : ""),
503
503
  children: [
504
504
  emptyState.showIf && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
505
505
  className: paddedHalf ? "px-2 @md:px-2.5 pb-2" : !padded ? "px-4 @md:px-5 pb-4" : "",
@@ -516,7 +516,7 @@ var sectionBodyStyles = (0, _tailwindvariants.tv)({
516
516
  };
517
517
  Card.Section.displayName = "Card.Section";
518
518
  var clickableRowStyles = (0, _tailwindvariants.tv)({
519
- base: "Litho-Card__ClickableRow flex py-1.5 px-2.5 cursor-pointer rounded-md hover:bg-tint-2 active:bg-tint-3",
519
+ base: "Litho-Card__Row py-1.5 px-2.5 cursor-pointer rounded-md hover:bg-tint-2 active:bg-tint-3",
520
520
  variants: {
521
521
  disabled: {
522
522
  true: "opacity-50 cursor-not-allowed pointer-events-none"
@@ -551,4 +551,40 @@ var clickableRowStyles = (0, _tailwindvariants.tv)({
551
551
  });
552
552
  };
553
553
  Card.ClickableRow.displayName = "Card.ClickableRow";
554
+ Card.Rows = function(param) {
555
+ var children = param.children;
556
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
557
+ className: "px-1.5 pb-1.5 @md:pb-2 @md:px-2",
558
+ children: children
559
+ });
560
+ };
561
+ Card.Rows.displayName = "Card.Rows";
562
+ /**
563
+ * Row component for creating clickable rows inside the Card.
564
+ *
565
+ * @component
566
+ * @param {Object} props - Props for the Row component.
567
+ * @param {React.ReactNode} [props.children] - Child elements to render inside the row.
568
+ * @param {Function} [props.onClick] - Click handler for the row.
569
+ * @param {string} [props.id] - ID to apply to the row element.
570
+ * @param {string} [props.url] - URL to open when the row is clicked.
571
+ * @param {string} [props.className] - Additional classes to apply to the row.
572
+ * @param {boolean} [props.disabled=false] - Disables interaction with the row.
573
+ *
574
+ * @returns {React.ReactElement} The rendered Row component.
575
+ */ Card.Row = function(param) {
576
+ var children = param.children, onClick = param.onClick, id = param.id, url = param.url, _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, className = param.className;
577
+ var classes = clickableRowStyles({
578
+ disabled: disabled
579
+ });
580
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
581
+ id: id,
582
+ onClick: url ? function() {
583
+ return window.open(url, "_blank");
584
+ } : onClick,
585
+ className: "".concat(classes).concat(className ? " ".concat(className) : ""),
586
+ children: children
587
+ });
588
+ };
589
+ Card.Row.displayName = "Card.Row";
554
590
  var _default = Card;
@@ -15,7 +15,7 @@ var _Icon = /*#__PURE__*/ _interop_require_default(require("./Icon"));
15
15
  var _Label = /*#__PURE__*/ _interop_require_default(require("./Label"));
16
16
  var _RadioButton = /*#__PURE__*/ _interop_require_default(require("./RadioButton"));
17
17
  var _Text = /*#__PURE__*/ _interop_require_default(require("./Text"));
18
- var _VerticalStack = /*#__PURE__*/ _interop_require_default(require("./VerticalStack"));
18
+ var _Stack = /*#__PURE__*/ _interop_require_default(require("./Stack"));
19
19
  var _polarisicons = require("@shopify/polaris-icons");
20
20
  function _array_like_to_array(arr, len) {
21
21
  if (len == null || len > arr.length) len = arr.length;
@@ -99,7 +99,8 @@ var styles = (0, _tailwindvariants.tv)({
99
99
  tooltip: tooltip,
100
100
  children: title
101
101
  }),
102
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_VerticalStack.default, {
102
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_Stack.default, {
103
+ gap: "none",
103
104
  children: choices.map(function(choice, index) {
104
105
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
105
106
  children: [
@@ -0,0 +1,227 @@
1
+ "use client";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return _default;
10
+ }
11
+ });
12
+ var _jsxruntime = require("react/jsx-runtime");
13
+ var _react = require("react");
14
+ var _tailwindvariants = require("tailwind-variants");
15
+ var _polarisicons = require("@shopify/polaris-icons");
16
+ var _Button = /*#__PURE__*/ _interop_require_default(require("./Button"));
17
+ function _array_like_to_array(arr, len) {
18
+ if (len == null || len > arr.length) len = arr.length;
19
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
20
+ return arr2;
21
+ }
22
+ function _array_with_holes(arr) {
23
+ if (Array.isArray(arr)) return arr;
24
+ }
25
+ function _define_property(obj, key, value) {
26
+ if (key in obj) {
27
+ Object.defineProperty(obj, key, {
28
+ value: value,
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true
32
+ });
33
+ } else {
34
+ obj[key] = value;
35
+ }
36
+ return obj;
37
+ }
38
+ function _interop_require_default(obj) {
39
+ return obj && obj.__esModule ? obj : {
40
+ default: obj
41
+ };
42
+ }
43
+ function _iterable_to_array_limit(arr, i) {
44
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
45
+ if (_i == null) return;
46
+ var _arr = [];
47
+ var _n = true;
48
+ var _d = false;
49
+ var _s, _e;
50
+ try {
51
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
52
+ _arr.push(_s.value);
53
+ if (i && _arr.length === i) break;
54
+ }
55
+ } catch (err) {
56
+ _d = true;
57
+ _e = err;
58
+ } finally{
59
+ try {
60
+ if (!_n && _i["return"] != null) _i["return"]();
61
+ } finally{
62
+ if (_d) throw _e;
63
+ }
64
+ }
65
+ return _arr;
66
+ }
67
+ function _non_iterable_rest() {
68
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
69
+ }
70
+ function _object_spread(target) {
71
+ for(var i = 1; i < arguments.length; i++){
72
+ var source = arguments[i] != null ? arguments[i] : {};
73
+ var ownKeys = Object.keys(source);
74
+ if (typeof Object.getOwnPropertySymbols === "function") {
75
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
76
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
77
+ }));
78
+ }
79
+ ownKeys.forEach(function(key) {
80
+ _define_property(target, key, source[key]);
81
+ });
82
+ }
83
+ return target;
84
+ }
85
+ function ownKeys(object, enumerableOnly) {
86
+ var keys = Object.keys(object);
87
+ if (Object.getOwnPropertySymbols) {
88
+ var symbols = Object.getOwnPropertySymbols(object);
89
+ if (enumerableOnly) {
90
+ symbols = symbols.filter(function(sym) {
91
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
92
+ });
93
+ }
94
+ keys.push.apply(keys, symbols);
95
+ }
96
+ return keys;
97
+ }
98
+ function _object_spread_props(target, source) {
99
+ source = source != null ? source : {};
100
+ if (Object.getOwnPropertyDescriptors) {
101
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
102
+ } else {
103
+ ownKeys(Object(source)).forEach(function(key) {
104
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
105
+ });
106
+ }
107
+ return target;
108
+ }
109
+ function _object_without_properties(source, excluded) {
110
+ if (source == null) return {};
111
+ var target = _object_without_properties_loose(source, excluded);
112
+ var key, i;
113
+ if (Object.getOwnPropertySymbols) {
114
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
115
+ for(i = 0; i < sourceSymbolKeys.length; i++){
116
+ key = sourceSymbolKeys[i];
117
+ if (excluded.indexOf(key) >= 0) continue;
118
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
119
+ target[key] = source[key];
120
+ }
121
+ }
122
+ return target;
123
+ }
124
+ function _object_without_properties_loose(source, excluded) {
125
+ if (source == null) return {};
126
+ var target = {};
127
+ var sourceKeys = Object.keys(source);
128
+ var key, i;
129
+ for(i = 0; i < sourceKeys.length; i++){
130
+ key = sourceKeys[i];
131
+ if (excluded.indexOf(key) >= 0) continue;
132
+ target[key] = source[key];
133
+ }
134
+ return target;
135
+ }
136
+ function _sliced_to_array(arr, i) {
137
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
138
+ }
139
+ function _unsupported_iterable_to_array(o, minLen) {
140
+ if (!o) return;
141
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
142
+ var n = Object.prototype.toString.call(o).slice(8, -1);
143
+ if (n === "Object" && o.constructor) n = o.constructor.name;
144
+ if (n === "Map" || n === "Set") return Array.from(n);
145
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
146
+ }
147
+ var styles = (0, _tailwindvariants.tv)({
148
+ base: "Litho-Code p-2.5 bg-surface-normal shadow-inset rounded-md font-mono text-xs overflow-x-auto whitespace-pre"
149
+ });
150
+ var containerStyles = (0, _tailwindvariants.tv)({
151
+ base: "Litho-Code-container relative group"
152
+ });
153
+ /**
154
+ * A code component that renders code blocks with consistent styling.
155
+ *
156
+ * @param {Object} props - Properties to customize the code component.
157
+ * @param {string} [props.className] - Additional CSS class names.
158
+ * @param {Function} [props.onCopy] - Function to handle copy action.
159
+ * @param {React.ReactNode} props.children - The code content to be displayed.
160
+ * @returns {JSX.Element} Rendered code block with applied styles.
161
+ *
162
+ * @example
163
+ * <Code>
164
+ * {`const example = "code";`}
165
+ * </Code>
166
+ *
167
+ * @example
168
+ * <Code onCopy={() => {
169
+ * navigator.clipboard.writeText(children);
170
+ * }}>
171
+ * {`const example = "code";`}
172
+ * </Code>
173
+ */ function Code() {
174
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
175
+ var className = props.className, onCopy = props.onCopy, children = props.children, rest = _object_without_properties(props, [
176
+ "className",
177
+ "onCopy",
178
+ "children"
179
+ ]);
180
+ var _useState = _sliced_to_array((0, _react.useState)(false), 2), copied = _useState[0], setCopied = _useState[1];
181
+ var classes = styles();
182
+ var containerClasses = containerStyles();
183
+ var getTextContent = function(node) {
184
+ var _node_props;
185
+ if (typeof node === "string") {
186
+ return node;
187
+ }
188
+ if (typeof node === "number") {
189
+ return String(node);
190
+ }
191
+ if (Array.isArray(node)) {
192
+ return node.map(getTextContent).join("");
193
+ }
194
+ if (node === null || node === void 0 ? void 0 : (_node_props = node.props) === null || _node_props === void 0 ? void 0 : _node_props.children) {
195
+ return getTextContent(node.props.children);
196
+ }
197
+ return "";
198
+ };
199
+ var handleCopy = function() {
200
+ if (onCopy) {
201
+ onCopy();
202
+ setCopied(true);
203
+ setTimeout(function() {
204
+ setCopied(false);
205
+ }, 2000);
206
+ }
207
+ };
208
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
209
+ className: containerClasses,
210
+ children: [
211
+ onCopy && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
212
+ className: "absolute top-1 right-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200",
213
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.default, {
214
+ size: "small",
215
+ icon: copied ? _polarisicons.ClipboardCheckFilledMajor : _polarisicons.ClipboardMinor,
216
+ onClick: handleCopy,
217
+ tooltip: copied ? undefined : "Copy to clipboard"
218
+ })
219
+ }),
220
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("pre", _object_spread_props(_object_spread({}, rest), {
221
+ className: "".concat(classes).concat(className ? " ".concat(className) : ""),
222
+ children: children
223
+ }))
224
+ ]
225
+ });
226
+ }
227
+ var _default = Code;
@@ -179,7 +179,7 @@ function _unsupported_iterable_to_array(o, minLen) {
179
179
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
180
180
  }
181
181
  var styles = (0, _tailwindvariants.tv)({
182
- base: "Litho-Filters flex items-center",
182
+ base: "Litho-Filters flex items-center overflow-x-auto",
183
183
  variants: {
184
184
  showTextField: {
185
185
  true: "justify-between",
@@ -83,7 +83,7 @@ var frameStyles = (0, _tailwindvariants.tv)({
83
83
  base: "Litho-Frame bg-surface-normal",
84
84
  variants: {
85
85
  paneIsOpen: {
86
- true: "md:mr-[var(--litho-pane-width)]"
86
+ true: "mr-[var(--litho-pane-collapsed-width)] sm:mr-0 md:mr-[var(--litho-pane-width)]"
87
87
  }
88
88
  },
89
89
  defaultVariants: {
@@ -94,7 +94,7 @@ var frameHeaderStyles = (0, _tailwindvariants.tv)({
94
94
  base: "Litho-Frame-Header bg-surface-normal fixed left-0 right-0 top-0",
95
95
  variants: {
96
96
  paneIsOpen: {
97
- true: "md:mr-[var(--litho-pane-width)]"
97
+ true: "mr-[var(--litho-pane-width)] md:mr-[var(--litho-pane-width)]"
98
98
  }
99
99
  },
100
100
  defaultVariants: {
@@ -71,10 +71,14 @@ function _interop_require_wildcard(obj, nodeInterop) {
71
71
  }
72
72
  var LayoutContext = /*#__PURE__*/ (0, _react.createContext)();
73
73
  var styles = (0, _tailwindvariants.tv)({
74
- base: "Litho-Layout flex flex-col gap-4 w-full max-w-full",
74
+ base: "Litho-Layout flex gap-4 w-full max-w-full",
75
75
  variants: {
76
76
  hasSidebarSection: {
77
77
  true: ""
78
+ },
79
+ reverseOnMobile: {
80
+ true: "flex-col-reverse @lg:flex-row",
81
+ false: "flex-col"
78
82
  }
79
83
  },
80
84
  compoundVariants: [
@@ -87,11 +91,17 @@ var styles = (0, _tailwindvariants.tv)({
87
91
  hasSidebarSection: true,
88
92
  embedded: true,
89
93
  className: "@lg-embed:flex-row @lg-embed:items-start @lg-embed:gap-5"
94
+ },
95
+ {
96
+ reverseOnMobile: true,
97
+ embedded: true,
98
+ className: "@lg-embed:flex-row"
90
99
  }
91
100
  ],
92
101
  defaultVariants: {
93
102
  hasSidebarSection: false,
94
- embedded: false
103
+ embedded: false,
104
+ reverseOnMobile: false
95
105
  }
96
106
  });
97
107
  /**
@@ -103,11 +113,12 @@ var styles = (0, _tailwindvariants.tv)({
103
113
  *
104
114
  * @param {Object} props - Component props.
105
115
  * @param {React.ReactNode} props.children - The content to render inside the layout.
116
+ * @param {boolean} [props.reverseOnMobile] - If true, reverses the flex direction on mobile devices.
106
117
  * @returns {JSX.Element} The rendered layout component.
107
118
  */ function Layout() {
108
119
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
109
120
  var embedded = (0, _Frame.useFrame)().embedded;
110
- var children = props.children;
121
+ var children = props.children, reverseOnMobile = props.reverseOnMobile;
111
122
  var analyzeChildren = function(children) {
112
123
  var depth = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
113
124
  if (depth > 3) return {
@@ -153,7 +164,8 @@ var styles = (0, _tailwindvariants.tv)({
153
164
  var hasSidebarSection = sections.length > 0;
154
165
  var classes = styles({
155
166
  hasSidebarSection: hasSidebarSection,
156
- embedded: embedded
167
+ embedded: embedded,
168
+ reverseOnMobile: reverseOnMobile
157
169
  });
158
170
  var wrappedChildren = hasSection ? children : /*#__PURE__*/ (0, _jsxruntime.jsx)(Layout.Section, {
159
171
  children: children