@iress-oss/ids-components 6.0.0-alpha.17 → 6.0.0-alpha.19

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 (39) hide show
  1. package/dist/components/Badge/Badge.d.ts +2 -6
  2. package/dist/components/Badge/Badge.js +27 -40
  3. package/dist/components/Badge/Badge.styles.d.ts +1 -17
  4. package/dist/components/Badge/Badge.styles.js +5 -24
  5. package/dist/components/Card/Card.styles.js +2 -0
  6. package/dist/components/Checkbox/Checkbox.styles.js +2 -0
  7. package/dist/components/Expander/Expander.styles.js +2 -0
  8. package/dist/components/Input/Input.styles.d.ts +3 -0
  9. package/dist/components/Input/Input.styles.js +5 -0
  10. package/dist/components/Modal/Modal.styles.js +4 -2
  11. package/dist/components/Panel/Panel.styles.js +2 -0
  12. package/dist/components/Popover/Popover.styles.js +2 -0
  13. package/dist/components/Progress/Progress.js +1 -1
  14. package/dist/components/Progress/Progress.styles.js +2 -0
  15. package/dist/components/Radio/Radio.styles.js +2 -0
  16. package/dist/components/RichSelect/RichSelect.styles.js +2 -0
  17. package/dist/components/RichSelect/SelectBody/SelectBody.styles.js +2 -0
  18. package/dist/components/RichSelect/SelectMenu/SelectMenu.styles.js +2 -0
  19. package/dist/components/RichSelect/SelectSearchInput/SelectSearchInput.styles.js +2 -0
  20. package/dist/components/RichSelect/SelectTags/SelectTags.styles.js +2 -0
  21. package/dist/components/Select/Select.styles.js +4 -2
  22. package/dist/components/Slideout/Slideout.styles.js +2 -0
  23. package/dist/components/Slideout/hooks/usePushElement.js +1 -1
  24. package/dist/components/Slider/Slider.styles.js +2 -0
  25. package/dist/components/Spinner/Spinner.styles.js +6 -4
  26. package/dist/components/TabSet/Tab/Tab.js +98 -84
  27. package/dist/components/TabSet/Tab/Tab.styles.d.ts +3 -0
  28. package/dist/components/TabSet/Tab/Tab.styles.js +5 -2
  29. package/dist/components/TabSet/TabSet.js +84 -66
  30. package/dist/components/TabSet/TabSet.styles.d.ts +30 -1
  31. package/dist/components/TabSet/TabSet.styles.js +77 -16
  32. package/dist/components/Tag/Tag.styles.d.ts +6 -0
  33. package/dist/components/Tag/Tag.styles.js +10 -2
  34. package/dist/components/Toggle/Toggle.styles.js +2 -0
  35. package/dist/components/Tooltip/Tooltip.styles.js +4 -2
  36. package/dist/{index-Bm5rQqn5.js → index-0AvnPY9d.js} +15 -15
  37. package/dist/patterns/Shadow/Shadow.js +184 -139
  38. package/dist/style.css +1 -1
  39. package/package.json +2 -2
@@ -1,42 +1,42 @@
1
- import { jsxs as E, Fragment as M, jsx as u } from "react/jsx-runtime";
2
- import { forwardRef as L, useRef as N, useContext as D, useImperativeHandle as R, useLayoutEffect as $, useCallback as S, useMemo as j } from "react";
3
- import { idsLogger as F } from "../../../helpers/utility/idsLogger.js";
4
- import { useIdIfNeeded as H } from "../../../hooks/useIdIfNeeded.js";
5
- import { createPortal as K } from "react-dom";
6
- import { s as q } from "../../../factory-CsinCTPr.js";
7
- import { tab as G } from "./Tab.styles.js";
8
- import { c as U } from "../../../cx-DN21T1EH.js";
9
- import { a as W } from "../../../floating-ui.react-BlU6Nz_4.js";
10
- import { focusableElements as Y } from "../../../helpers/dom/focusableElements.js";
11
- import { GlobalCSSClass as z } from "../../../enums.js";
12
- import { TabSetContext as B } from "../TabSetProvider.js";
13
- const J = (a, e, s, i) => {
14
- const t = a.querySelector("[id]"), r = t?.getAttribute("id");
15
- t?.removeAttribute("id"), a.removeAttribute("tabindex"), a.removeAttribute("data-active"), a.removeAttribute("aria-selected"), s.ref?.(e), e.tabIndex = i ? 0 : -1, i ? e.setAttribute("data-active", "") : e.removeAttribute("data-active"), r && e.setAttribute("id", r), e.setAttribute("aria-selected", String(i));
16
- }, h = ({
17
- activate: a,
1
+ import { jsxs as L, Fragment as N, jsx as u } from "react/jsx-runtime";
2
+ import { forwardRef as D, useRef as S, useContext as R, useImperativeHandle as $, useLayoutEffect as j, useEffect as F, useCallback as C, useMemo as H } from "react";
3
+ import { idsLogger as K } from "../../../helpers/utility/idsLogger.js";
4
+ import { useIdIfNeeded as q } from "../../../hooks/useIdIfNeeded.js";
5
+ import { createPortal as G } from "react-dom";
6
+ import { s as U } from "../../../factory-CsinCTPr.js";
7
+ import { tab as V } from "./Tab.styles.js";
8
+ import { c as W } from "../../../cx-DN21T1EH.js";
9
+ import { a as Y } from "../../../floating-ui.react-BlU6Nz_4.js";
10
+ import { focusableElements as z } from "../../../helpers/dom/focusableElements.js";
11
+ import { GlobalCSSClass as B } from "../../../enums.js";
12
+ import { TabSetContext as J } from "../TabSetProvider.js";
13
+ const O = (n, e, c, a) => {
14
+ const t = n.querySelector("[id]"), r = t?.getAttribute("id");
15
+ t?.removeAttribute("id"), n.removeAttribute("tabindex"), n.removeAttribute("data-active"), n.removeAttribute("aria-selected"), c.ref?.(e), e.tabIndex = a ? 0 : -1, a ? e.setAttribute("data-active", "") : e.removeAttribute("data-active"), r && e.setAttribute("id", r), e.setAttribute("aria-selected", String(a));
16
+ }, k = ({
17
+ activate: n,
18
18
  children: e,
19
- selected: s,
20
- ...i
19
+ selected: c,
20
+ ...a
21
21
  }) => /* @__PURE__ */ u(
22
- W,
22
+ Y,
23
23
  {
24
24
  render: (t) => /* @__PURE__ */ u(
25
25
  "div",
26
26
  {
27
- ...i,
27
+ ...a,
28
28
  ...t,
29
- "aria-selected": s,
30
- onClick: () => a(),
31
- onKeyDown: (r) => ["Space", "Enter"].includes(r.key) && a(),
29
+ "aria-selected": c,
30
+ onClick: () => n(),
31
+ onKeyDown: (r) => ["Space", "Enter"].includes(r.key) && n(),
32
32
  ref: (r) => {
33
33
  if (!r) return;
34
- const m = Y(r)[0];
35
- m && J(
34
+ const l = z(r)[0];
35
+ l && O(
36
36
  r,
37
- m,
37
+ l,
38
38
  t,
39
- s
39
+ c
40
40
  );
41
41
  },
42
42
  children: e
@@ -44,105 +44,119 @@ const J = (a, e, s, i) => {
44
44
  )
45
45
  }
46
46
  );
47
- h.displayName = "TabInsideTabSet";
48
- const O = ({
49
- active: a,
47
+ k.displayName = "TabInsideTabSet";
48
+ const P = ({
49
+ active: n,
50
50
  children: e,
51
- className: s,
52
- "data-testid": i,
51
+ className: c,
52
+ "data-testid": a,
53
53
  href: t,
54
54
  label: r,
55
- type: m = "button",
55
+ type: l = "button",
56
56
  value: v,
57
- ...b
58
- }, C) => {
59
- const d = H({ id: b.id }), c = N(null), n = D(B), { register: A, unregister: g, setHover: p } = n ?? {}, { onMouseEnter: y, onMouseLeave: T } = b;
60
- R(C, () => c.current), $(() => {
61
- const o = c.current;
62
- if (o)
63
- return A?.(o, v), () => g?.(o);
57
+ ...f
58
+ }, x) => {
59
+ const d = q({ id: f.id }), s = S(null), o = R(J), { register: A, unregister: g, setHover: p } = o ?? {}, { onMouseEnter: w, onMouseLeave: y } = f, I = S(!0);
60
+ $(x, () => s.current), j(() => {
61
+ const i = s.current;
62
+ if (i)
63
+ return A?.(i, v), () => g?.(i);
64
64
  }, [A, g, v]);
65
- const f = n ? n.isActive(c.current) : a, w = U(
66
- s,
67
- G({ active: f, insideTabSet: !!n }),
68
- z.Tab
69
- ), x = S(
70
- (o) => {
71
- y?.(o), p?.(o.currentTarget);
65
+ const m = o ? o.isActive(s.current) : n;
66
+ F(() => {
67
+ if (m && s.current && o) {
68
+ if (I.current) {
69
+ I.current = !1;
70
+ return;
71
+ }
72
+ s.current.scrollIntoView?.({
73
+ behavior: "smooth",
74
+ block: "nearest",
75
+ inline: "center"
76
+ });
77
+ }
78
+ }, [m, o]);
79
+ const T = W(
80
+ c,
81
+ V({ active: m, insideTabSet: !!o }),
82
+ B.Tab
83
+ ), E = C(
84
+ (i) => {
85
+ w?.(i), p?.(i.currentTarget);
72
86
  },
73
- [y, p]
74
- ), k = S(
75
- (o) => {
76
- T?.(o), p?.();
87
+ [w, p]
88
+ ), M = C(
89
+ (i) => {
90
+ y?.(i), p?.();
77
91
  },
78
- [T, p]
79
- ), I = j(
80
- () => q(t ? "a" : "button"),
92
+ [y, p]
93
+ ), h = H(
94
+ () => U(t ? "a" : "button"),
81
95
  [t]
82
96
  );
83
- if (e && t && F(
97
+ if (e && t && K(
84
98
  "IressTab: You should not use `children` with `href` prop, as the `children` will be seen before the page navigates."
85
- ), n) {
86
- const o = e && f;
87
- return /* @__PURE__ */ E(M, { children: [
99
+ ), o) {
100
+ const i = e && m;
101
+ return /* @__PURE__ */ L(N, { children: [
88
102
  /* @__PURE__ */ u(
89
- h,
103
+ k,
90
104
  {
91
- activate: () => n.activate(c.current),
92
- selected: f,
105
+ activate: () => o.activate(s.current),
106
+ selected: m,
93
107
  children: /* @__PURE__ */ u(
94
- I,
108
+ h,
95
109
  {
96
- className: w,
110
+ className: T,
97
111
  "aria-controls": e ? `${d}--panel` : void 0,
98
112
  role: "tab",
99
- "data-testid": i,
100
- ...b,
113
+ "data-testid": a,
114
+ ...f,
101
115
  href: t,
102
116
  id: d,
103
- onMouseEnter: x,
104
- onMouseLeave: k,
105
- ref: c,
106
- type: m,
117
+ onMouseEnter: E,
118
+ onMouseLeave: M,
119
+ ref: s,
120
+ type: l,
107
121
  children: r
108
122
  }
109
123
  )
110
124
  }
111
125
  ),
112
- n.panel && K(
126
+ o.panel && G(
113
127
  /* @__PURE__ */ u(
114
128
  "div",
115
129
  {
116
130
  "aria-labelledby": d,
117
131
  id: `${d}--panel`,
118
132
  role: "tabpanel",
119
- onKeyDown: (l) => {
120
- (l.key === "ArrowLeft" || l.key === "ArrowRight" || l.key === "ArrowUp" || l.key === "ArrowDown") && l.stopPropagation();
133
+ onKeyDown: (b) => {
134
+ (b.key === "ArrowLeft" || b.key === "ArrowRight" || b.key === "ArrowUp" || b.key === "ArrowDown") && b.stopPropagation();
121
135
  },
122
- hidden: !o,
136
+ hidden: !i,
123
137
  children: e
124
138
  }
125
139
  ),
126
- n.panel,
140
+ o.panel,
127
141
  `${d}--panel`
128
142
  )
129
143
  ] });
130
144
  }
131
145
  return /* @__PURE__ */ u(
132
- I,
146
+ h,
133
147
  {
134
- className: w,
135
- "data-testid": i,
136
- ...b,
148
+ className: T,
149
+ "data-testid": a,
150
+ ...f,
137
151
  href: t,
138
152
  id: d,
139
- ref: c,
140
- type: m,
153
+ ref: s,
154
+ type: l,
141
155
  children: r
142
156
  }
143
157
  );
144
- }, P = L(O);
145
- P.displayName = "IressTab";
158
+ }, Q = D(P);
159
+ Q.displayName = "IressTab";
146
160
  export {
147
- P as IressTab
161
+ Q as IressTab
148
162
  };
@@ -12,6 +12,9 @@ export declare const tab: import('../../../styled-system/types').RecipeRuntimeFn
12
12
  _hover: {
13
13
  bg: "[none]";
14
14
  };
15
+ _focusVisible: {
16
+ layerStyle: "elevation.focusCompact";
17
+ };
15
18
  };
16
19
  };
17
20
  }>;
@@ -1,5 +1,5 @@
1
1
  import { c as t } from "../../../cva-DtPMccE9.js";
2
- const e = t({
2
+ const o = t({
3
3
  base: {
4
4
  alignItems: "center",
5
5
  borderBottom: "[2px solid transparent]",
@@ -39,11 +39,14 @@ const e = t({
39
39
  borderBottomWidth: "0px",
40
40
  _hover: {
41
41
  bg: "[none]"
42
+ },
43
+ _focusVisible: {
44
+ layerStyle: "elevation.focusCompact"
42
45
  }
43
46
  }
44
47
  }
45
48
  }
46
49
  });
47
50
  export {
48
- e as tab
51
+ o as tab
49
52
  };
@@ -1,96 +1,114 @@
1
- import { jsx as e, jsxs as p, Fragment as N } from "react/jsx-runtime";
2
- import { C as T } from "../../floating-ui.react-BlU6Nz_4.js";
3
- import { propagateTestid as y } from "../../helpers/utility/propagateTestid.js";
4
- import { TabSetProvider as C, TabSetContext as v } from "./TabSetProvider.js";
5
- import { useState as u, useContext as h, useEffect as x, useRef as I } from "react";
6
- import { s as m } from "../../factory-CsinCTPr.js";
7
- import { tabSet as $ } from "./TabSet.styles.js";
8
- import { c as n } from "../../cx-DN21T1EH.js";
9
- import { GlobalCSSClass as g } from "../../enums.js";
10
- const j = (r) => {
11
- const a = I({}), s = h(v);
12
- let t;
1
+ import { jsx as t, jsxs as m, Fragment as j } from "react/jsx-runtime";
2
+ import { C as q } from "../../floating-ui.react-BlU6Nz_4.js";
3
+ import { propagateTestid as z } from "../../helpers/utility/propagateTestid.js";
4
+ import { TabSetProvider as H, TabSetContext as C } from "./TabSetProvider.js";
5
+ import { useState as n, useRef as O, useEffect as u, useContext as W } from "react";
6
+ import { s as v } from "../../factory-CsinCTPr.js";
7
+ import { tabSet as R } from "./TabSet.styles.js";
8
+ import { c as p } from "../../cx-DN21T1EH.js";
9
+ import { GlobalCSSClass as k } from "../../enums.js";
10
+ const A = (r) => {
11
+ const a = O({}), s = W(C);
12
+ let e;
13
13
  if (s?.hover) {
14
- const { offsetLeft: c, scrollWidth: o } = s.hover;
15
- t = {
14
+ const { offsetLeft: i, scrollWidth: l } = s.hover;
15
+ e = {
16
16
  opacity: 1,
17
- left: `${c}px`,
18
- width: `${o}px`
17
+ left: `${i}px`,
18
+ width: `${l}px`
19
19
  };
20
20
  } else
21
- t = {
21
+ e = {
22
22
  // eslint-disable-next-line react-hooks/refs -- we want to persist the previous style
23
23
  ...a.current,
24
24
  opacity: 0
25
25
  };
26
- return x(() => {
27
- s?.hover && (a.current = t);
28
- }, [s?.hover, t]), /* @__PURE__ */ e("div", { ...r, style: t });
29
- }, w = (r) => {
30
- const [a, s] = u({}), t = h(v);
31
- return x(() => {
32
- const c = setTimeout(() => {
33
- if (t?.active) {
34
- const { offsetLeft: o, scrollWidth: l } = t.active;
26
+ return u(() => {
27
+ s?.hover && (a.current = e);
28
+ }, [s?.hover, e]), /* @__PURE__ */ t("div", { ...r, style: e });
29
+ }, F = (r) => {
30
+ const [a, s] = n({}), e = W(C);
31
+ return u(() => {
32
+ const i = setTimeout(() => {
33
+ if (e?.active) {
34
+ const { offsetLeft: l, scrollWidth: d } = e.active;
35
35
  s({
36
- left: `${o}px`,
37
- width: `${l}px`
36
+ left: `${l}px`,
37
+ width: `${d}px`
38
38
  });
39
39
  }
40
40
  }, 150);
41
- return () => clearTimeout(c);
42
- }, [t?.active]), /* @__PURE__ */ e("div", { ...r, style: a });
43
- }, L = ({
41
+ return () => clearTimeout(i);
42
+ }, [e?.active]), /* @__PURE__ */ t("div", { ...r, style: a });
43
+ }, G = ({
44
44
  children: r,
45
45
  className: a,
46
46
  defaultSelected: s,
47
- layout: t = "top-left",
48
- onChange: c,
49
- panelStyle: o,
50
- selected: l,
51
- tabHolderStyle: d,
52
- ...f
47
+ layout: e = "top-left",
48
+ onChange: i,
49
+ panelStyle: l,
50
+ selected: d,
51
+ tabHolderStyle: h,
52
+ ...w
53
53
  }) => {
54
- const [S, b] = u(null), i = $({ layout: t });
55
- return /* @__PURE__ */ e(
56
- C,
54
+ const [$, g] = n(null), [S, b] = n(!1), [N, x] = n(!1), f = O(null), o = R({ layout: e, overflowStart: S, overflowEnd: N });
55
+ return u(() => {
56
+ const c = () => {
57
+ const T = f.current?.querySelector('[role="tablist"]');
58
+ if (T) {
59
+ const { scrollWidth: y, clientWidth: I, scrollLeft: L } = T;
60
+ y > I ? (b(L > 1), x(L < y - I - 1)) : (b(!1), x(!1));
61
+ }
62
+ };
63
+ c();
64
+ const E = f.current?.querySelector('[role="tablist"]');
65
+ return E?.addEventListener("scroll", c), window.addEventListener("resize", c), () => {
66
+ E?.removeEventListener("scroll", c), window.removeEventListener("resize", c);
67
+ };
68
+ }, [r]), /* @__PURE__ */ t(
69
+ H,
57
70
  {
58
71
  defaultSelected: s,
59
- onChange: c,
60
- panel: S,
61
- selected: l,
62
- children: /* @__PURE__ */ e(
63
- m.div,
72
+ onChange: i,
73
+ panel: $,
74
+ selected: d,
75
+ children: /* @__PURE__ */ t(
76
+ v.div,
64
77
  {
65
- className: n(a, i.root, g.TabSet),
66
- ...f,
67
- children: r && /* @__PURE__ */ p(N, { children: [
68
- /* @__PURE__ */ p(
69
- m.div,
78
+ className: p(a, o.root, k.TabSet),
79
+ ...w,
80
+ children: r && /* @__PURE__ */ m(j, { children: [
81
+ /* @__PURE__ */ m(
82
+ v.div,
70
83
  {
71
- ...d,
72
- className: n(i.listHolder, d?.className),
84
+ ...h,
85
+ ref: f,
86
+ className: p(o.listHolder, h?.className),
73
87
  children: [
74
- /* @__PURE__ */ e(w, { className: i.activeIndicator }),
75
- /* @__PURE__ */ e(j, { className: i.hoverIndicator }),
76
- /* @__PURE__ */ e(
77
- T,
88
+ S && /* @__PURE__ */ t("div", { className: o.overflowStartIndicator }),
89
+ N && /* @__PURE__ */ t("div", { className: o.overflowEndIndicator }),
90
+ /* @__PURE__ */ m(
91
+ q,
78
92
  {
79
- render: /* @__PURE__ */ e("div", { className: i.list, role: "tablist" }),
93
+ render: /* @__PURE__ */ t("div", { className: o.list, role: "tablist" }),
80
94
  loop: !1,
81
- children: r
95
+ children: [
96
+ /* @__PURE__ */ t(F, { className: o.activeIndicator }),
97
+ /* @__PURE__ */ t(A, { className: o.hoverIndicator }),
98
+ r
99
+ ]
82
100
  }
83
101
  )
84
102
  ]
85
103
  }
86
104
  ),
87
- /* @__PURE__ */ e(
88
- m.div,
105
+ /* @__PURE__ */ t(
106
+ v.div,
89
107
  {
90
- ...o,
91
- className: n(i.panel, o?.className),
92
- "data-testid": o?.["data-testid"] ?? y(f["data-testid"], "panel"),
93
- ref: b
108
+ ...l,
109
+ className: p(o.panel, l?.className),
110
+ "data-testid": l?.["data-testid"] ?? z(w["data-testid"], "panel"),
111
+ ref: g
94
112
  }
95
113
  )
96
114
  ] })
@@ -99,7 +117,7 @@ const j = (r) => {
99
117
  }
100
118
  );
101
119
  };
102
- L.displayName = "IressTabSet";
120
+ G.displayName = "IressTabSet";
103
121
  export {
104
- L as IressTabSet
122
+ G as IressTabSet
105
123
  };
@@ -1,4 +1,4 @@
1
- export declare const tabSet: import('../../styled-system/types').SlotRecipeRuntimeFn<"list" | "root" | "panel" | "hoverIndicator" | "listHolder" | "activeIndicator", {
1
+ export declare const tabSet: import('../../styled-system/types').SlotRecipeRuntimeFn<"list" | "root" | "panel" | "hoverIndicator" | "listHolder" | "activeIndicator" | "overflowEndIndicator" | "overflowStartIndicator", {
2
2
  layout: {
3
3
  'top-left': {
4
4
  list: {
@@ -22,4 +22,33 @@ export declare const tabSet: import('../../styled-system/types').SlotRecipeRunti
22
22
  };
23
23
  };
24
24
  };
25
+ overflowEnd: {
26
+ true: {
27
+ overflowEndIndicator: {
28
+ layerStyle: "elevation.overflow";
29
+ position: "absolute";
30
+ top: "spacing.0";
31
+ bottom: "spacing.1";
32
+ right: "spacing.0";
33
+ width: "input.4";
34
+ pointerEvents: "[none]";
35
+ maskImage: "[linear-gradient(to right, transparent 30%, black 100%)]";
36
+ };
37
+ };
38
+ };
39
+ overflowStart: {
40
+ true: {
41
+ overflowStartIndicator: {
42
+ layerStyle: "elevation.overflow";
43
+ position: "absolute";
44
+ top: "spacing.0";
45
+ bottom: "spacing.1";
46
+ left: "spacing.0";
47
+ width: "input.4";
48
+ pointerEvents: "[none]";
49
+ maskImage: "[linear-gradient(to right, transparent 30%, black 100%)]";
50
+ transform: "[rotate(180deg)]";
51
+ };
52
+ };
53
+ };
25
54
  }>;
@@ -6,26 +6,43 @@ const e = t({
6
6
  "listHolder",
7
7
  "panel",
8
8
  "activeIndicator",
9
- "hoverIndicator"
9
+ "hoverIndicator",
10
+ "overflowEndIndicator",
11
+ "overflowStartIndicator"
10
12
  ],
11
13
  base: {
12
14
  root: {
15
+ // Performance: CSS containment (no paint to allow overflow)
16
+ contain: "layout style",
13
17
  bg: "colour.neutral.10",
14
18
  borderRadius: "radius.system.layout"
15
19
  },
16
- list: {
17
- display: "flex",
18
- flexWrap: "wrap",
19
- borderBottom: "divider",
20
- "& > :has(.ids-badge)": {
21
- mr: "spacing.4"
20
+ listHolder: {
21
+ position: "relative",
22
+ overflowX: "clip",
23
+ overflowY: "visible",
24
+ pt: "spacing.2",
25
+ _after: {
26
+ content: '""',
27
+ position: "absolute",
28
+ bottom: "spacing.1",
29
+ left: "spacing.0",
30
+ right: "spacing.0",
31
+ borderBottom: "divider",
32
+ pointerEvents: "none"
22
33
  }
23
34
  },
24
- listHolder: {
35
+ list: {
36
+ display: "flex",
37
+ flexWrap: "nowrap",
38
+ scrollable: "x",
39
+ overflowY: "visible",
40
+ scrollSnapType: "[x proximity]",
25
41
  position: "relative"
26
42
  },
27
43
  panel: {
28
44
  pt: "md",
45
+ textStyle: "typography.body.md",
29
46
  _focusVisible: {
30
47
  layerStyle: "elevation.focus",
31
48
  outline: "[none]"
@@ -33,20 +50,35 @@ const e = t({
33
50
  },
34
51
  activeIndicator: {
35
52
  position: "absolute",
36
- bottom: "[0]",
53
+ top: "spacing.1",
54
+ bottom: "spacing.1",
37
55
  left: "[0]",
38
- height: "[2px]",
39
- bg: "colour.primary.text",
40
- transition: "all"
56
+ bg: "colour.neutral.20",
57
+ transition: "all",
58
+ borderRadius: "radius.075",
59
+ borderBottomRadius: "none",
60
+ pointerEvents: "none",
61
+ _after: {
62
+ content: '""',
63
+ position: "absolute",
64
+ bottom: "spacing.0",
65
+ left: "spacing.0",
66
+ right: "spacing.0",
67
+ height: "[2px]",
68
+ bg: "colour.primary.text",
69
+ transition: "all",
70
+ zIndex: "[2]"
71
+ }
41
72
  },
42
73
  hoverIndicator: {
43
74
  position: "absolute",
44
- top: "spacing.2",
45
- bottom: "spacing.2",
75
+ top: "spacing.1",
76
+ bottom: "spacing.1",
46
77
  left: "[0]",
47
- bg: "colour.neutral.20",
78
+ bg: "colour.primary.surfaceHover",
48
79
  transition: "all",
49
- borderRadius: "radius.system.button",
80
+ borderRadius: "radius.075",
81
+ borderBottomRadius: "none",
50
82
  pointerEvents: "none"
51
83
  }
52
84
  },
@@ -73,6 +105,35 @@ const e = t({
73
105
  left: "[100%]"
74
106
  }
75
107
  }
108
+ },
109
+ overflowEnd: {
110
+ true: {
111
+ overflowEndIndicator: {
112
+ layerStyle: "elevation.overflow",
113
+ position: "absolute",
114
+ top: "spacing.0",
115
+ bottom: "spacing.1",
116
+ right: "spacing.0",
117
+ width: "input.4",
118
+ pointerEvents: "[none]",
119
+ maskImage: "[linear-gradient(to right, transparent 30%, black 100%)]"
120
+ }
121
+ }
122
+ },
123
+ overflowStart: {
124
+ true: {
125
+ overflowStartIndicator: {
126
+ layerStyle: "elevation.overflow",
127
+ position: "absolute",
128
+ top: "spacing.0",
129
+ bottom: "spacing.1",
130
+ left: "spacing.0",
131
+ width: "input.4",
132
+ pointerEvents: "[none]",
133
+ maskImage: "[linear-gradient(to right, transparent 30%, black 100%)]",
134
+ transform: "[rotate(180deg)]"
135
+ }
136
+ }
76
137
  }
77
138
  },
78
139
  defaultVariants: {
@@ -20,6 +20,12 @@ export declare const tag: import('../../styled-system/types').SlotRecipeRuntimeF
20
20
  _active: {
21
21
  boxShadow: "color-mix(in srgb, {colors.colour.primary.surface}, transparent 60%) 0px 0px 0px 3px";
22
22
  };
23
+ _focus: {
24
+ outline: "[none]";
25
+ };
26
+ _focusVisible: {
27
+ layerStyle: "elevation.focus";
28
+ };
23
29
  };
24
30
  };
25
31
  };