@uniformdev/design-system 20.9.1-alpha.3 → 20.11.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/esm/index.js CHANGED
@@ -6484,7 +6484,7 @@ var ChipContainer = css45`
6484
6484
  `;
6485
6485
  var ChipText = css45`
6486
6486
  align-self: center;
6487
- line-height: 1;
6487
+ line-height: 1.1;
6488
6488
  text-wrap: nowrap;
6489
6489
  `;
6490
6490
  var ChipIcon = css45`
@@ -7640,7 +7640,7 @@ var DragHandle = forwardRef15(
7640
7640
 
7641
7641
  // src/components/Drawer/Drawer.tsx
7642
7642
  import { CgChevronRight } from "@react-icons/all-files/cg/CgChevronRight";
7643
- import React15, { createContext as createContext4, useContext as useContext4, useEffect as useEffect5, useRef as useRef5, useState as useState8 } from "react";
7643
+ import React15, { createContext as createContext4, useContext as useContext4, useEffect as useEffect5, useRef as useRef4, useState as useState8 } from "react";
7644
7644
  import { createPortal } from "react-dom";
7645
7645
 
7646
7646
  // src/components/Drawer/Drawer.styles.ts
@@ -7751,7 +7751,7 @@ var drawerWrapperOverlayStyles = css54`
7751
7751
  `;
7752
7752
 
7753
7753
  // src/components/Drawer/DrawerProvider.tsx
7754
- import { createContext as createContext3, useCallback as useCallback5, useContext as useContext3, useRef as useRef4, useState as useState7 } from "react";
7754
+ import { createContext as createContext3, useCallback as useCallback5, useContext as useContext3, useId, useState as useState7 } from "react";
7755
7755
  import { jsx as jsx67 } from "@emotion/react/jsx-runtime";
7756
7756
  var DrawerContext = createContext3({
7757
7757
  providerId: "",
@@ -7770,7 +7770,7 @@ function renderDrawerId(drawer) {
7770
7770
  }
7771
7771
  var DrawerProvider = ({ children }) => {
7772
7772
  const [drawersRegistry, setDrawersRegistry] = useState7([]);
7773
- const providerId = useRef4(crypto.randomUUID());
7773
+ const providerId = useId();
7774
7774
  const [drawerTakeoverStackId, setDrawerTakeoverStackId] = useState7(void 0);
7775
7775
  useShortcut({
7776
7776
  handler: () => {
@@ -7852,7 +7852,7 @@ var DrawerProvider = ({ children }) => {
7852
7852
  drawersRegistry,
7853
7853
  registerDrawer,
7854
7854
  unregisterDrawer,
7855
- providerId: providerId.current,
7855
+ providerId,
7856
7856
  drawerTakeoverStackId,
7857
7857
  registerTakeoverStackId,
7858
7858
  unregisterTakeoverStackId
@@ -7891,7 +7891,7 @@ var Drawer = React15.forwardRef(
7891
7891
  const { stackId: inheritedStackId } = useCurrentDrawer();
7892
7892
  const { drawerTakeoverStackId } = useDrawer();
7893
7893
  const drawerRendererProps = { width: drawerProps.width, minWidth, maxWidth, position, leftAligned };
7894
- const resolvedStickyStackIdRef = useRef5((_a = drawerTakeoverStackId != null ? drawerTakeoverStackId : drawerProps.stackId) != null ? _a : inheritedStackId);
7894
+ const resolvedStickyStackIdRef = useRef4((_a = drawerTakeoverStackId != null ? drawerTakeoverStackId : drawerProps.stackId) != null ? _a : inheritedStackId);
7895
7895
  return resolvedStickyStackIdRef.current ? /* @__PURE__ */ jsx68(DrawerInner, { ref, ...drawerProps, stackId: resolvedStickyStackIdRef.current }) : /* @__PURE__ */ jsxs43(DrawerProvider, { children: [
7896
7896
  /* @__PURE__ */ jsx68(DrawerInner, { ref, ...drawerProps }),
7897
7897
  /* @__PURE__ */ jsx68(DrawerRenderer, { stackId: defaultSackId, ...drawerRendererProps })
@@ -7912,7 +7912,7 @@ var DrawerInner = ({
7912
7912
  testId = "side-dialog"
7913
7913
  }) => {
7914
7914
  const { registerDrawer, unregisterDrawer, providerId } = useDrawer();
7915
- const closeButtonRef = useRef5(null);
7915
+ const closeButtonRef = useRef4(null);
7916
7916
  const [rendererElement, setRendererElement] = useState8(null);
7917
7917
  useEffect5(() => {
7918
7918
  registerDrawer({
@@ -8864,21 +8864,28 @@ import { forwardRef as forwardRef17 } from "react";
8864
8864
  // src/components/Tiles/styles/Tile.styles.ts
8865
8865
  import { css as css63 } from "@emotion/react";
8866
8866
  var tileBorderSize = "1px";
8867
+ var tileBorderRadius = "var(--rounded-2xl)";
8868
+ var tileBorderColor = "var(--gray-300)";
8867
8869
  var Tile = css63`
8868
8870
  background: var(--white);
8869
8871
  cursor: pointer;
8870
- border: ${tileBorderSize} solid var(--gray-300);
8871
- display: grid;
8872
+ border: ${tileBorderSize} solid var(--tile-border-color, ${tileBorderColor});
8873
+ display: flex;
8874
+ flex-direction: column;
8872
8875
  padding: var(--spacing-base);
8873
- place-items: center;
8874
- place-content: center;
8876
+ align-items: center;
8877
+ justify-content: center;
8875
8878
  gap: var(--spacing-sm);
8876
- transition: background-color var(--duration-fast) var(--timing-ease-out);
8877
- min-height: 128px;
8879
+ border-radius: var(--tile-border-radius, ${tileBorderRadius});
8880
+ transition:
8881
+ background-color var(--duration-fast) var(--timing-ease-out),
8882
+ border-color var(--duration-fast) var(--timing-ease-out);
8878
8883
 
8879
8884
  &:hover,
8880
8885
  &:focus {
8881
8886
  background: var(--gray-50);
8887
+ border-color: var(--tile-border-color-hover, var(--accent-dark));
8888
+ z-index: 1;
8882
8889
  }
8883
8890
 
8884
8891
  &[aria-disabled='true'],
@@ -8894,27 +8901,55 @@ var TileIsSelected = css63`
8894
8901
  border: calc(${tileBorderSize} + 1px) solid var(--primary-action-active);
8895
8902
  z-index: 1; // Used to elevate active state border over other Tile borders
8896
8903
  `;
8904
+ var TileHorizontal = css63`
8905
+ flex-direction: row;
8906
+ justify-content: flex-start;
8907
+ `;
8897
8908
 
8898
8909
  // src/components/Tiles/LinkTile.tsx
8899
8910
  import { jsx as jsx83 } from "@emotion/react/jsx-runtime";
8900
8911
  var LinkTile2 = forwardRef17(
8901
- ({ children, ...props }, ref) => {
8912
+ ({ orientation = "vertical", children, ...props }, ref) => {
8902
8913
  if ("linkManagerComponent" in props) {
8903
8914
  const { linkManagerComponent: LinkManager, ...rest } = props;
8904
- return /* @__PURE__ */ jsx83(LinkManager, { css: [Tile, LinkTile], ref, ...rest, children });
8915
+ return /* @__PURE__ */ jsx83(
8916
+ LinkManager,
8917
+ {
8918
+ css: [
8919
+ Tile,
8920
+ LinkTile,
8921
+ orientation === "horizontal" ? TileHorizontal : void 0
8922
+ ],
8923
+ ref,
8924
+ ...rest,
8925
+ children
8926
+ }
8927
+ );
8905
8928
  }
8906
- return /* @__PURE__ */ jsx83("a", { ref, css: [Tile, LinkTile], ...props, children });
8929
+ return /* @__PURE__ */ jsx83(
8930
+ "a",
8931
+ {
8932
+ ref,
8933
+ css: [Tile, LinkTile, orientation === "horizontal" ? TileHorizontal : void 0],
8934
+ ...props,
8935
+ children
8936
+ }
8937
+ );
8907
8938
  }
8908
8939
  );
8909
8940
 
8910
8941
  // src/components/Tiles/Tile.tsx
8911
8942
  import { jsx as jsx84 } from "@emotion/react/jsx-runtime";
8912
- var Tile2 = ({ children, disabled: disabled2, isSelected, ...props }) => {
8943
+ var Tile2 = ({ children, disabled: disabled2, isSelected, orientation = "vertical", ...props }) => {
8913
8944
  return /* @__PURE__ */ jsx84(
8914
8945
  "button",
8915
8946
  {
8916
8947
  type: "button",
8917
- css: [Tile, isSelected ? TileIsSelected : void 0],
8948
+ css: [
8949
+ Tile,
8950
+ orientation === "horizontal" ? TileHorizontal : void 0,
8951
+ isSelected ? TileIsSelected : void 0
8952
+ ],
8918
8953
  disabled: disabled2,
8919
8954
  ...props,
8920
8955
  children
@@ -8929,17 +8964,46 @@ var TileContainerWrapper = (theme, padding) => css64`
8929
8964
  padding: ${padding != "none" ? `var(--spacing-${padding})` : "0"};
8930
8965
  `;
8931
8966
  var TileContainerInner = (gap, templateColumns) => css64`
8967
+ /* We remove the border radius from the tiles when used inside TileContainer */
8968
+ --tile-border-radius: 0;
8969
+ --tile-border-color: ${tileBorderColor};
8970
+ /* We don't want the tiles to change border color on hover, because of the border radius we have on the container-level */
8971
+ --tile-border-color-hover: ${tileBorderColor};
8972
+
8973
+ position: relative;
8932
8974
  display: grid;
8933
8975
  grid-template-columns: ${templateColumns};
8976
+ grid-auto-rows: 1fr;
8934
8977
  gap: var(--spacing-${gap});
8978
+ background-color: var(--gray-5);
8935
8979
  margin-top: ${tileBorderSize};
8936
8980
  margin-left: ${tileBorderSize};
8981
+ border-radius: ${tileBorderRadius};
8982
+ overflow: hidden;
8983
+
8984
+ /* This is used to create a border around the tiles */
8985
+ &::after {
8986
+ content: '';
8987
+ position: absolute;
8988
+ inset: 0;
8989
+ border-radius: ${tileBorderRadius};
8990
+ border: ${tileBorderSize} solid var(--tile-border-color);
8991
+ pointer-events: none;
8992
+ z-index: 1;
8993
+ }
8937
8994
 
8938
8995
  > * {
8939
8996
  margin-top: -${tileBorderSize};
8940
8997
  margin-left: -${tileBorderSize};
8941
8998
  }
8942
8999
  `;
9000
+ var TileContainerInnerWithoutGrouping = css64`
9001
+ overflow: visible;
9002
+
9003
+ &::after {
9004
+ display: none;
9005
+ }
9006
+ `;
8943
9007
 
8944
9008
  // src/components/Tiles/TileContainer.tsx
8945
9009
  import { jsx as jsx85 } from "@emotion/react/jsx-runtime";
@@ -8949,9 +9013,19 @@ var TileContainer = ({
8949
9013
  gap = "base",
8950
9014
  gridTemplateColumns = "repeat(auto-fill, minmax(13rem, 1fr))",
8951
9015
  children,
9016
+ withoutGrouping = false,
8952
9017
  ...props
8953
9018
  }) => {
8954
- return /* @__PURE__ */ jsx85("div", { css: TileContainerWrapper(bgColor, containerPadding), ...props, children: /* @__PURE__ */ jsx85("div", { css: TileContainerInner(gap, gridTemplateColumns), children }) });
9019
+ return /* @__PURE__ */ jsx85("div", { css: TileContainerWrapper(bgColor, containerPadding), ...props, children: /* @__PURE__ */ jsx85(
9020
+ "div",
9021
+ {
9022
+ css: [
9023
+ TileContainerInner(gap, gridTemplateColumns),
9024
+ withoutGrouping ? TileContainerInnerWithoutGrouping : void 0
9025
+ ],
9026
+ children
9027
+ }
9028
+ ) });
8955
9029
  };
8956
9030
 
8957
9031
  // src/components/Tiles/styles/TileText.styles.ts
@@ -9139,15 +9213,15 @@ import {
9139
9213
  verticalListSortingStrategy
9140
9214
  } from "@dnd-kit/sortable";
9141
9215
  import { CSS } from "@dnd-kit/utilities";
9142
- import { useCallback as useCallback7, useEffect as useEffect11, useMemo as useMemo5, useRef as useRef7, useState as useState11 } from "react";
9216
+ import { useCallback as useCallback7, useEffect as useEffect11, useMemo as useMemo5, useRef as useRef6, useState as useState11 } from "react";
9143
9217
 
9144
9218
  // src/utils/useDebouncedCallback.ts
9145
- import { useEffect as useEffect10, useMemo as useMemo4, useRef as useRef6 } from "react";
9219
+ import { useEffect as useEffect10, useMemo as useMemo4, useRef as useRef5 } from "react";
9146
9220
  function useDebouncedCallback(callback, deps, delay, maxWait = 0) {
9147
- const timeout = useRef6();
9148
- const waitTimeout = useRef6();
9149
- const cb = useRef6(callback);
9150
- const lastCall = useRef6();
9221
+ const timeout = useRef5();
9222
+ const waitTimeout = useRef5();
9223
+ const cb = useRef5(callback);
9224
+ const lastCall = useRef5();
9151
9225
  const clear = () => {
9152
9226
  if (timeout.current) {
9153
9227
  clearTimeout(timeout.current);
@@ -9229,8 +9303,8 @@ var KeyValueInput = ({
9229
9303
  onFocusChange
9230
9304
  }) => {
9231
9305
  const [isDragging, setIsDragging] = useState11(false);
9232
- const popoverStoresMap = useRef7({});
9233
- const lastRowFirstInputRef = useRef7(null);
9306
+ const popoverStoresMap = useRef6({});
9307
+ const lastRowFirstInputRef = useRef6(null);
9234
9308
  const sensors = useSensors(
9235
9309
  useSensor(PointerSensor),
9236
9310
  useSensor(KeyboardSensor, {
@@ -10168,7 +10242,7 @@ var LoadingIcon = ({ height, width, ...props }) => {
10168
10242
  // src/components/Modal/Modal.tsx
10169
10243
  import { PortalContext } from "@ariakit/react";
10170
10244
  import { CgClose as CgClose4 } from "@react-icons/all-files/cg/CgClose";
10171
- import React17, { useEffect as useEffect12, useRef as useRef8 } from "react";
10245
+ import React17, { useEffect as useEffect12, useRef as useRef7 } from "react";
10172
10246
 
10173
10247
  // src/components/Modal/Modal.styles.ts
10174
10248
  import { css as css75 } from "@emotion/react";
@@ -10272,8 +10346,8 @@ var Modal = React17.forwardRef(
10272
10346
  disableBodyScroll = false,
10273
10347
  ...modalProps
10274
10348
  }, ref) => {
10275
- const mouseDownInsideModal = useRef8(false);
10276
- const dialogRef = useRef8(null);
10349
+ const mouseDownInsideModal = useRef7(false);
10350
+ const dialogRef = useRef7(null);
10277
10351
  const size = {
10278
10352
  sm: modalSizeSmall,
10279
10353
  md: modalSizeMedium,
@@ -10715,7 +10789,7 @@ var ObjectGridItemCoverButton = ({
10715
10789
  };
10716
10790
 
10717
10791
  // src/components/Objects/ObjectGridItemHeading.tsx
10718
- import { useEffect as useEffect13, useRef as useRef9, useState as useState12 } from "react";
10792
+ import { useEffect as useEffect13, useRef as useRef8, useState as useState12 } from "react";
10719
10793
 
10720
10794
  // src/components/Objects/styles/ObjectGridItemHeading.styles.ts
10721
10795
  import { css as css79 } from "@emotion/react";
@@ -10742,7 +10816,7 @@ var ObjectGridItemHeading2 = ({
10742
10816
  ...props
10743
10817
  }) => {
10744
10818
  const [hasTruncation, setHasTruncation] = useState12(false);
10745
- const headingRef = useRef9(null);
10819
+ const headingRef = useRef8(null);
10746
10820
  const onStopPropagation = (e) => {
10747
10821
  e.stopPropagation();
10748
10822
  };
@@ -10881,7 +10955,7 @@ var ObjectListItemRightSlot = css81`
10881
10955
  gap: var(--spacing-sm);
10882
10956
  `;
10883
10957
  var ObjectListItemContainer = css81`
10884
- > [role='listitem'] {
10958
+ > [role='listitem']:not(:first-of-type) {
10885
10959
  border-top: 1px solid var(--gray-200);
10886
10960
  }
10887
10961
  `;
@@ -12612,7 +12686,7 @@ import {
12612
12686
  FOCUS_COMMAND,
12613
12687
  PASTE_COMMAND
12614
12688
  } from "lexical";
12615
- import { useCallback as useCallback8, useEffect as useEffect16, useRef as useRef10, useState as useState15 } from "react";
12689
+ import { useCallback as useCallback8, useEffect as useEffect16, useRef as useRef9, useState as useState15 } from "react";
12616
12690
 
12617
12691
  // src/components/ParameterInputs/rich-text/utils.ts
12618
12692
  import { $isAtNodeEnd } from "@lexical/selection";
@@ -12962,7 +13036,7 @@ function LinkNodePlugin({
12962
13036
  };
12963
13037
  const [editor] = useLexicalComposerContext3();
12964
13038
  const [linkPopoverState, setLinkPopoverState] = useState15();
12965
- const linkPopoverElRef = useRef10(null);
13039
+ const linkPopoverElRef = useRef9(null);
12966
13040
  const [isEditorFocused, setIsEditorFocused] = useState15(false);
12967
13041
  const [isLinkPopoverFocused, setIsLinkPopoverFocused] = useState15(false);
12968
13042
  useEffect16(() => {
@@ -13213,7 +13287,7 @@ import {
13213
13287
  OUTDENT_CONTENT_COMMAND,
13214
13288
  SELECTION_CHANGE_COMMAND
13215
13289
  } from "lexical";
13216
- import { useEffect as useEffect17, useRef as useRef11 } from "react";
13290
+ import { useEffect as useEffect17, useRef as useRef10 } from "react";
13217
13291
  function isIndentPermitted(maxDepth) {
13218
13292
  const selection = $getSelection2();
13219
13293
  if (!$isRangeSelection2(selection)) {
@@ -13268,7 +13342,7 @@ function $indentOverTab(selection) {
13268
13342
  }
13269
13343
  function ListIndentPlugin({ maxDepth }) {
13270
13344
  const [editor] = useLexicalComposerContext4();
13271
- const isInListItemNode = useRef11(false);
13345
+ const isInListItemNode = useRef10(false);
13272
13346
  useEffect17(() => {
13273
13347
  return editor.registerCommand(
13274
13348
  SELECTION_CHANGE_COMMAND,
@@ -13680,7 +13754,7 @@ import {
13680
13754
  } from "@lexical/table";
13681
13755
  import { calculateZoomLevel } from "@lexical/utils";
13682
13756
  import { $getNearestNodeFromDOMNode } from "lexical";
13683
- import { useCallback as useCallback10, useEffect as useEffect19, useMemo as useMemo6, useRef as useRef12, useState as useState17 } from "react";
13757
+ import { useCallback as useCallback10, useEffect as useEffect19, useMemo as useMemo6, useRef as useRef11, useState as useState17 } from "react";
13684
13758
  import { createPortal as createPortal3 } from "react-dom";
13685
13759
  import { Fragment as Fragment16, jsx as jsx125, jsxs as jsxs83 } from "@emotion/react/jsx-runtime";
13686
13760
  var MIN_ROW_HEIGHT = 33;
@@ -13707,10 +13781,10 @@ var fixedGetDOMCellFromTarget = (node) => {
13707
13781
  return null;
13708
13782
  };
13709
13783
  function TableCellResizer({ editor, positioningAnchorEl }) {
13710
- const targetRef = useRef12(null);
13711
- const resizerRef = useRef12(null);
13712
- const tableRectRef = useRef12(null);
13713
- const mouseStartPosRef = useRef12(null);
13784
+ const targetRef = useRef11(null);
13785
+ const resizerRef = useRef11(null);
13786
+ const tableRectRef = useRef11(null);
13787
+ const mouseStartPosRef = useRef11(null);
13714
13788
  const [mouseCurrentPos, updateMouseCurrentPos] = useState17(null);
13715
13789
  const [activeCell, updateActiveCell] = useState17(null);
13716
13790
  const [isMouseDown, updateIsMouseDown] = useState17(false);
@@ -15296,7 +15370,7 @@ var ProgressListItem = ({
15296
15370
  // src/components/SegmentedControl/SegmentedControl.tsx
15297
15371
  import { css as css101 } from "@emotion/react";
15298
15372
  import { CgCheck as CgCheck5 } from "@react-icons/all-files/cg/CgCheck";
15299
- import { useCallback as useCallback12, useEffect as useEffect24, useMemo as useMemo9, useRef as useRef13, useState as useState21 } from "react";
15373
+ import { useCallback as useCallback12, useEffect as useEffect24, useMemo as useMemo9, useRef as useRef12, useState as useState21 } from "react";
15300
15374
 
15301
15375
  // src/components/SegmentedControl/SegmentedControl.styles.ts
15302
15376
  import { css as css100 } from "@emotion/react";
@@ -15484,7 +15558,7 @@ var SegmentedControl = ({
15484
15558
  currentBackgroundColor = "white",
15485
15559
  ...props
15486
15560
  }) => {
15487
- const wrapperRef = useRef13(null);
15561
+ const wrapperRef = useRef12(null);
15488
15562
  const [isOverflowStartShadowVisible, setIsOverflowStartShadowVisible] = useState21(false);
15489
15563
  const [isOverflowEndShadowVisible, setIsOverflowEndShadowVisible] = useState21(false);
15490
15564
  const onOptionChange = useCallback12(
@@ -15638,7 +15712,7 @@ var Skeleton = ({
15638
15712
  );
15639
15713
 
15640
15714
  // src/components/Spinner/Spinner.tsx
15641
- import { useEffect as useEffect25, useRef as useRef14 } from "react";
15715
+ import { useEffect as useEffect25, useRef as useRef13 } from "react";
15642
15716
 
15643
15717
  // src/components/Spinner/Spinner.styles.ts
15644
15718
  import { css as css103 } from "@emotion/react";
@@ -16078,7 +16152,7 @@ var Spinner = ({
16078
16152
  label,
16079
16153
  isPaused
16080
16154
  }) => {
16081
- const ref = useRef14(null);
16155
+ const ref = useRef13(null);
16082
16156
  useEffect25(() => {
16083
16157
  var _a, _b, _c;
16084
16158
  (_c = ref.current) == null ? void 0 : _c.style.setProperty("--pyramid-size", ((_b = (_a = ref.current) == null ? void 0 : _a.clientWidth) != null ? _b : 200) / 6 + "px");
package/dist/index.d.mts CHANGED
@@ -3967,9 +3967,16 @@ type ParagraphProps = {
3967
3967
  */
3968
3968
  declare const Paragraph: ({ className, htmlContent, children, ...pAttributes }: ParagraphProps) => _emotion_react_jsx_runtime.JSX.Element;
3969
3969
 
3970
+ type LinkOrientation = {
3971
+ /**
3972
+ * The orientation of the tile icon and content
3973
+ * @default 'vertical'
3974
+ */
3975
+ orientation?: 'horizontal' | 'vertical';
3976
+ };
3970
3977
  type LinkTileProps = {
3971
3978
  children: ReactNode;
3972
- } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
3979
+ } & React.AnchorHTMLAttributes<HTMLAnchorElement> & LinkOrientation;
3973
3980
  type LinkTileWithRefProps = {
3974
3981
  children: ReactNode;
3975
3982
  linkManagerComponent: LinkManagerWithRefType;
@@ -3977,7 +3984,7 @@ type LinkTileWithRefProps = {
3977
3984
  href: string;
3978
3985
  passHref: true;
3979
3986
  legacyBehavior?: boolean;
3980
- } & React.RefAttributes<HTMLAnchorElement>;
3987
+ } & React.RefAttributes<HTMLAnchorElement> & LinkOrientation;
3981
3988
  declare const LinkTile: React$1.ForwardRefExoticComponent<(LinkTileProps | Omit<LinkTileWithRefProps, "ref">) & React$1.RefAttributes<HTMLAnchorElement>>;
3982
3989
 
3983
3990
  type ClassNameOptions = 'logo' | 'author';
@@ -3996,8 +4003,13 @@ type TileProps = {
3996
4003
  children: ReactNode;
3997
4004
  disabled?: boolean;
3998
4005
  isSelected?: boolean;
4006
+ /**
4007
+ * The orientation of the tile icon and content
4008
+ * @default 'vertical'
4009
+ */
4010
+ orientation?: 'horizontal' | 'vertical';
3999
4011
  } & HtmlHTMLAttributes<HTMLButtonElement>;
4000
- declare const Tile: ({ children, disabled, isSelected, ...props }: TileProps) => _emotion_react_jsx_runtime.JSX.Element;
4012
+ declare const Tile: ({ children, disabled, isSelected, orientation, ...props }: TileProps) => _emotion_react_jsx_runtime.JSX.Element;
4001
4013
 
4002
4014
  type TileContainerProps = React$1.HtmlHTMLAttributes<HTMLDivElement> & {
4003
4015
  /** sets the background colour of the outter container
@@ -4018,12 +4030,16 @@ type TileContainerProps = React$1.HtmlHTMLAttributes<HTMLDivElement> & {
4018
4030
  gap?: '0' | 'sm' | 'base' | 'md' | 'lg';
4019
4031
  /** sets react child elements */
4020
4032
  children: React$1.ReactNode;
4033
+ /** sets whether to group the tiles in a container without a contour or not
4034
+ * @default false
4035
+ */
4036
+ withoutGrouping?: boolean;
4021
4037
  };
4022
4038
  /**
4023
4039
  * Uniform Tile Container Component
4024
4040
  * @example <TileContainer><div>child content</div></TileContainer>
4025
4041
  */
4026
- declare const TileContainer: ({ bgColor, containerPadding, gap, gridTemplateColumns, children, ...props }: TileContainerProps) => _emotion_react_jsx_runtime.JSX.Element;
4042
+ declare const TileContainer: ({ bgColor, containerPadding, gap, gridTemplateColumns, children, withoutGrouping, ...props }: TileContainerProps) => _emotion_react_jsx_runtime.JSX.Element;
4027
4043
 
4028
4044
  type TileTitleProps = {
4029
4045
  as?: 'heading' | 'description';
package/dist/index.d.ts CHANGED
@@ -3967,9 +3967,16 @@ type ParagraphProps = {
3967
3967
  */
3968
3968
  declare const Paragraph: ({ className, htmlContent, children, ...pAttributes }: ParagraphProps) => _emotion_react_jsx_runtime.JSX.Element;
3969
3969
 
3970
+ type LinkOrientation = {
3971
+ /**
3972
+ * The orientation of the tile icon and content
3973
+ * @default 'vertical'
3974
+ */
3975
+ orientation?: 'horizontal' | 'vertical';
3976
+ };
3970
3977
  type LinkTileProps = {
3971
3978
  children: ReactNode;
3972
- } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
3979
+ } & React.AnchorHTMLAttributes<HTMLAnchorElement> & LinkOrientation;
3973
3980
  type LinkTileWithRefProps = {
3974
3981
  children: ReactNode;
3975
3982
  linkManagerComponent: LinkManagerWithRefType;
@@ -3977,7 +3984,7 @@ type LinkTileWithRefProps = {
3977
3984
  href: string;
3978
3985
  passHref: true;
3979
3986
  legacyBehavior?: boolean;
3980
- } & React.RefAttributes<HTMLAnchorElement>;
3987
+ } & React.RefAttributes<HTMLAnchorElement> & LinkOrientation;
3981
3988
  declare const LinkTile: React$1.ForwardRefExoticComponent<(LinkTileProps | Omit<LinkTileWithRefProps, "ref">) & React$1.RefAttributes<HTMLAnchorElement>>;
3982
3989
 
3983
3990
  type ClassNameOptions = 'logo' | 'author';
@@ -3996,8 +4003,13 @@ type TileProps = {
3996
4003
  children: ReactNode;
3997
4004
  disabled?: boolean;
3998
4005
  isSelected?: boolean;
4006
+ /**
4007
+ * The orientation of the tile icon and content
4008
+ * @default 'vertical'
4009
+ */
4010
+ orientation?: 'horizontal' | 'vertical';
3999
4011
  } & HtmlHTMLAttributes<HTMLButtonElement>;
4000
- declare const Tile: ({ children, disabled, isSelected, ...props }: TileProps) => _emotion_react_jsx_runtime.JSX.Element;
4012
+ declare const Tile: ({ children, disabled, isSelected, orientation, ...props }: TileProps) => _emotion_react_jsx_runtime.JSX.Element;
4001
4013
 
4002
4014
  type TileContainerProps = React$1.HtmlHTMLAttributes<HTMLDivElement> & {
4003
4015
  /** sets the background colour of the outter container
@@ -4018,12 +4030,16 @@ type TileContainerProps = React$1.HtmlHTMLAttributes<HTMLDivElement> & {
4018
4030
  gap?: '0' | 'sm' | 'base' | 'md' | 'lg';
4019
4031
  /** sets react child elements */
4020
4032
  children: React$1.ReactNode;
4033
+ /** sets whether to group the tiles in a container without a contour or not
4034
+ * @default false
4035
+ */
4036
+ withoutGrouping?: boolean;
4021
4037
  };
4022
4038
  /**
4023
4039
  * Uniform Tile Container Component
4024
4040
  * @example <TileContainer><div>child content</div></TileContainer>
4025
4041
  */
4026
- declare const TileContainer: ({ bgColor, containerPadding, gap, gridTemplateColumns, children, ...props }: TileContainerProps) => _emotion_react_jsx_runtime.JSX.Element;
4042
+ declare const TileContainer: ({ bgColor, containerPadding, gap, gridTemplateColumns, children, withoutGrouping, ...props }: TileContainerProps) => _emotion_react_jsx_runtime.JSX.Element;
4027
4043
 
4028
4044
  type TileTitleProps = {
4029
4045
  as?: 'heading' | 'description';
package/dist/index.js CHANGED
@@ -8256,7 +8256,7 @@ var ChipContainer = import_react67.css`
8256
8256
  `;
8257
8257
  var ChipText = import_react67.css`
8258
8258
  align-self: center;
8259
- line-height: 1;
8259
+ line-height: 1.1;
8260
8260
  text-wrap: nowrap;
8261
8261
  `;
8262
8262
  var ChipIcon = import_react67.css`
@@ -9559,7 +9559,7 @@ function renderDrawerId(drawer) {
9559
9559
  }
9560
9560
  var DrawerProvider = ({ children }) => {
9561
9561
  const [drawersRegistry, setDrawersRegistry] = (0, import_react81.useState)([]);
9562
- const providerId = (0, import_react81.useRef)(crypto.randomUUID());
9562
+ const providerId = (0, import_react81.useId)();
9563
9563
  const [drawerTakeoverStackId, setDrawerTakeoverStackId] = (0, import_react81.useState)(void 0);
9564
9564
  useShortcut({
9565
9565
  handler: () => {
@@ -9641,7 +9641,7 @@ var DrawerProvider = ({ children }) => {
9641
9641
  drawersRegistry,
9642
9642
  registerDrawer,
9643
9643
  unregisterDrawer,
9644
- providerId: providerId.current,
9644
+ providerId,
9645
9645
  drawerTakeoverStackId,
9646
9646
  registerTakeoverStackId,
9647
9647
  unregisterTakeoverStackId
@@ -10692,21 +10692,28 @@ var import_react97 = require("react");
10692
10692
  init_emotion_jsx_shim();
10693
10693
  var import_react96 = require("@emotion/react");
10694
10694
  var tileBorderSize = "1px";
10695
+ var tileBorderRadius = "var(--rounded-2xl)";
10696
+ var tileBorderColor = "var(--gray-300)";
10695
10697
  var Tile = import_react96.css`
10696
10698
  background: var(--white);
10697
10699
  cursor: pointer;
10698
- border: ${tileBorderSize} solid var(--gray-300);
10699
- display: grid;
10700
+ border: ${tileBorderSize} solid var(--tile-border-color, ${tileBorderColor});
10701
+ display: flex;
10702
+ flex-direction: column;
10700
10703
  padding: var(--spacing-base);
10701
- place-items: center;
10702
- place-content: center;
10704
+ align-items: center;
10705
+ justify-content: center;
10703
10706
  gap: var(--spacing-sm);
10704
- transition: background-color var(--duration-fast) var(--timing-ease-out);
10705
- min-height: 128px;
10707
+ border-radius: var(--tile-border-radius, ${tileBorderRadius});
10708
+ transition:
10709
+ background-color var(--duration-fast) var(--timing-ease-out),
10710
+ border-color var(--duration-fast) var(--timing-ease-out);
10706
10711
 
10707
10712
  &:hover,
10708
10713
  &:focus {
10709
10714
  background: var(--gray-50);
10715
+ border-color: var(--tile-border-color-hover, var(--accent-dark));
10716
+ z-index: 1;
10710
10717
  }
10711
10718
 
10712
10719
  &[aria-disabled='true'],
@@ -10722,28 +10729,56 @@ var TileIsSelected = import_react96.css`
10722
10729
  border: calc(${tileBorderSize} + 1px) solid var(--primary-action-active);
10723
10730
  z-index: 1; // Used to elevate active state border over other Tile borders
10724
10731
  `;
10732
+ var TileHorizontal = import_react96.css`
10733
+ flex-direction: row;
10734
+ justify-content: flex-start;
10735
+ `;
10725
10736
 
10726
10737
  // src/components/Tiles/LinkTile.tsx
10727
10738
  var import_jsx_runtime83 = require("@emotion/react/jsx-runtime");
10728
10739
  var LinkTile2 = (0, import_react97.forwardRef)(
10729
- ({ children, ...props }, ref) => {
10740
+ ({ orientation = "vertical", children, ...props }, ref) => {
10730
10741
  if ("linkManagerComponent" in props) {
10731
10742
  const { linkManagerComponent: LinkManager, ...rest } = props;
10732
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(LinkManager, { css: [Tile, LinkTile], ref, ...rest, children });
10743
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
10744
+ LinkManager,
10745
+ {
10746
+ css: [
10747
+ Tile,
10748
+ LinkTile,
10749
+ orientation === "horizontal" ? TileHorizontal : void 0
10750
+ ],
10751
+ ref,
10752
+ ...rest,
10753
+ children
10754
+ }
10755
+ );
10733
10756
  }
10734
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("a", { ref, css: [Tile, LinkTile], ...props, children });
10757
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
10758
+ "a",
10759
+ {
10760
+ ref,
10761
+ css: [Tile, LinkTile, orientation === "horizontal" ? TileHorizontal : void 0],
10762
+ ...props,
10763
+ children
10764
+ }
10765
+ );
10735
10766
  }
10736
10767
  );
10737
10768
 
10738
10769
  // src/components/Tiles/Tile.tsx
10739
10770
  init_emotion_jsx_shim();
10740
10771
  var import_jsx_runtime84 = require("@emotion/react/jsx-runtime");
10741
- var Tile2 = ({ children, disabled: disabled2, isSelected, ...props }) => {
10772
+ var Tile2 = ({ children, disabled: disabled2, isSelected, orientation = "vertical", ...props }) => {
10742
10773
  return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
10743
10774
  "button",
10744
10775
  {
10745
10776
  type: "button",
10746
- css: [Tile, isSelected ? TileIsSelected : void 0],
10777
+ css: [
10778
+ Tile,
10779
+ orientation === "horizontal" ? TileHorizontal : void 0,
10780
+ isSelected ? TileIsSelected : void 0
10781
+ ],
10747
10782
  disabled: disabled2,
10748
10783
  ...props,
10749
10784
  children
@@ -10762,17 +10797,46 @@ var TileContainerWrapper = (theme, padding) => import_react98.css`
10762
10797
  padding: ${padding != "none" ? `var(--spacing-${padding})` : "0"};
10763
10798
  `;
10764
10799
  var TileContainerInner = (gap, templateColumns) => import_react98.css`
10800
+ /* We remove the border radius from the tiles when used inside TileContainer */
10801
+ --tile-border-radius: 0;
10802
+ --tile-border-color: ${tileBorderColor};
10803
+ /* We don't want the tiles to change border color on hover, because of the border radius we have on the container-level */
10804
+ --tile-border-color-hover: ${tileBorderColor};
10805
+
10806
+ position: relative;
10765
10807
  display: grid;
10766
10808
  grid-template-columns: ${templateColumns};
10809
+ grid-auto-rows: 1fr;
10767
10810
  gap: var(--spacing-${gap});
10811
+ background-color: var(--gray-5);
10768
10812
  margin-top: ${tileBorderSize};
10769
10813
  margin-left: ${tileBorderSize};
10814
+ border-radius: ${tileBorderRadius};
10815
+ overflow: hidden;
10816
+
10817
+ /* This is used to create a border around the tiles */
10818
+ &::after {
10819
+ content: '';
10820
+ position: absolute;
10821
+ inset: 0;
10822
+ border-radius: ${tileBorderRadius};
10823
+ border: ${tileBorderSize} solid var(--tile-border-color);
10824
+ pointer-events: none;
10825
+ z-index: 1;
10826
+ }
10770
10827
 
10771
10828
  > * {
10772
10829
  margin-top: -${tileBorderSize};
10773
10830
  margin-left: -${tileBorderSize};
10774
10831
  }
10775
10832
  `;
10833
+ var TileContainerInnerWithoutGrouping = import_react98.css`
10834
+ overflow: visible;
10835
+
10836
+ &::after {
10837
+ display: none;
10838
+ }
10839
+ `;
10776
10840
 
10777
10841
  // src/components/Tiles/TileContainer.tsx
10778
10842
  var import_jsx_runtime85 = require("@emotion/react/jsx-runtime");
@@ -10782,9 +10846,19 @@ var TileContainer = ({
10782
10846
  gap = "base",
10783
10847
  gridTemplateColumns = "repeat(auto-fill, minmax(13rem, 1fr))",
10784
10848
  children,
10849
+ withoutGrouping = false,
10785
10850
  ...props
10786
10851
  }) => {
10787
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { css: TileContainerWrapper(bgColor, containerPadding), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { css: TileContainerInner(gap, gridTemplateColumns), children }) });
10852
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { css: TileContainerWrapper(bgColor, containerPadding), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
10853
+ "div",
10854
+ {
10855
+ css: [
10856
+ TileContainerInner(gap, gridTemplateColumns),
10857
+ withoutGrouping ? TileContainerInnerWithoutGrouping : void 0
10858
+ ],
10859
+ children
10860
+ }
10861
+ ) });
10788
10862
  };
10789
10863
 
10790
10864
  // src/components/Tiles/TileText.tsx
@@ -12755,7 +12829,7 @@ var ObjectListItemRightSlot = import_react123.css`
12755
12829
  gap: var(--spacing-sm);
12756
12830
  `;
12757
12831
  var ObjectListItemContainer = import_react123.css`
12758
- > [role='listitem'] {
12832
+ > [role='listitem']:not(:first-of-type) {
12759
12833
  border-top: 1px solid var(--gray-200);
12760
12834
  }
12761
12835
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/design-system",
3
- "version": "20.9.1-alpha.3+9f10f56702",
3
+ "version": "20.11.0",
4
4
  "description": "Uniform design system components",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "@storybook/theming": "^8.3.3",
27
27
  "@types/react": "18.3.11",
28
28
  "@types/react-dom": "18.3.1",
29
- "@uniformdev/canvas": "^20.9.1-alpha.3+9f10f56702",
30
- "@uniformdev/richtext": "^20.9.1-alpha.3+9f10f56702",
29
+ "@uniformdev/canvas": "^20.11.0",
30
+ "@uniformdev/richtext": "^20.11.0",
31
31
  "autoprefixer": "10.4.16",
32
32
  "hygen": "6.2.11",
33
33
  "postcss": "8.4.47",
@@ -68,8 +68,8 @@
68
68
  "zod-to-json-schema": "3.21.4"
69
69
  },
70
70
  "peerDependencies": {
71
- "react": ">=17 || 17 || 18",
72
- "react-dom": ">=17"
71
+ "react": ">=18",
72
+ "react-dom": ">=18"
73
73
  },
74
74
  "files": [
75
75
  "/dist"
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "9f10f5670229b812c73e7db447e82c2617687f3a"
80
+ "gitHead": "493d4a260f61ec89f043e67fa8948898ecb2f45e"
81
81
  }