@strapi/design-system 1.6.1 → 1.6.3

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 (107) hide show
  1. package/dist/Accordion/Accordion.cjs +5 -5
  2. package/dist/Accordion/Accordion.js +24 -22
  3. package/dist/Avatar/Avatar.cjs +5 -16
  4. package/dist/Avatar/Avatar.js +44 -48
  5. package/dist/BaseRadio/BaseRadio.cjs +2 -2
  6. package/dist/BaseRadio/BaseRadio.js +25 -23
  7. package/dist/Box/Box.cjs +1 -1
  8. package/dist/Box/Box.js +36 -33
  9. package/dist/Card/Card.cjs +1 -1
  10. package/dist/Card/Card.js +1 -1
  11. package/dist/Card/CardHeader.cjs +1 -2
  12. package/dist/Card/CardHeader.js +1 -1
  13. package/dist/Card/CardTimer.cjs +1 -5
  14. package/dist/Card/CardTimer.js +14 -20
  15. package/dist/CarouselInput/CarouselInput.cjs +1 -1
  16. package/dist/CarouselInput/CarouselInput.js +9 -9
  17. package/dist/Checkbox/Checkbox.cjs +2 -2
  18. package/dist/Checkbox/Checkbox.js +16 -16
  19. package/dist/Combobox/Combobox.cjs +1 -1
  20. package/dist/Combobox/Combobox.js +139 -139
  21. package/dist/Combobox/ComboboxList.cjs +1 -1
  22. package/dist/Combobox/ComboboxList.js +5 -12
  23. package/dist/DateTimePicker/DateTimePicker.cjs +1 -1
  24. package/dist/DateTimePicker/DateTimePicker.js +71 -71
  25. package/dist/Dialog/Dialog.cjs +4 -7
  26. package/dist/Dialog/Dialog.js +30 -29
  27. package/dist/Field/Field.cjs +1 -1
  28. package/dist/Field/Field.js +7 -7
  29. package/dist/Field/FieldHint.cjs +1 -1
  30. package/dist/Field/FieldHint.js +4 -4
  31. package/dist/JSONInput/JSONInput.cjs +1 -1
  32. package/dist/JSONInput/JSONInput.js +45 -42
  33. package/dist/JSONInput/JSONInputContainer.cjs +5 -2
  34. package/dist/JSONInput/JSONInputContainer.js +6 -3
  35. package/dist/Layout/HeaderLayout.cjs +3 -8
  36. package/dist/Layout/HeaderLayout.js +38 -38
  37. package/dist/Main/SkipToContent.cjs +1 -2
  38. package/dist/Main/SkipToContent.js +1 -1
  39. package/dist/MainNav/MainNav.cjs +1 -6
  40. package/dist/MainNav/MainNav.js +15 -15
  41. package/dist/MainNav/NavFooter.cjs +1 -3
  42. package/dist/MainNav/NavFooter.js +3 -4
  43. package/dist/ModalLayout/ModalLayout.cjs +3 -9
  44. package/dist/ModalLayout/ModalLayout.js +24 -23
  45. package/dist/NumberInput/NumberInput.cjs +1 -1
  46. package/dist/NumberInput/NumberInput.js +18 -18
  47. package/dist/Popover/Popover.cjs +3 -3
  48. package/dist/Popover/Popover.js +112 -103
  49. package/dist/Popover/index.cjs +1 -1
  50. package/dist/Popover/index.js +9 -3
  51. package/dist/Select/Option.cjs +3 -7
  52. package/dist/Select/Option.js +6 -6
  53. package/dist/Select/Select.cjs +2 -2
  54. package/dist/Select/Select.js +58 -58
  55. package/dist/Select/SelectTags.cjs +1 -3
  56. package/dist/Select/SelectTags.js +4 -4
  57. package/dist/Select/SingleSelect.cjs +82 -0
  58. package/dist/Select/SingleSelect.js +285 -0
  59. package/dist/SimpleMenu/SimpleMenu.cjs +1 -1
  60. package/dist/SimpleMenu/SimpleMenu.js +10 -10
  61. package/dist/Stack/Stack.cjs +5 -5
  62. package/dist/Stack/Stack.js +7 -6
  63. package/dist/SubNav/SubNavHeader.cjs +1 -1
  64. package/dist/SubNav/SubNavHeader.js +15 -15
  65. package/dist/SubNav/SubNavLinkSection.cjs +2 -2
  66. package/dist/SubNav/SubNavLinkSection.js +6 -6
  67. package/dist/SubNav/SubNavSection.cjs +1 -1
  68. package/dist/SubNav/SubNavSection.js +12 -12
  69. package/dist/Table/Table.cjs +1 -3
  70. package/dist/Table/Table.js +2 -3
  71. package/dist/Tabs/TabGroup.cjs +1 -1
  72. package/dist/Tabs/TabGroup.js +11 -11
  73. package/dist/TextInput/TextInput.cjs +1 -1
  74. package/dist/TextInput/TextInput.js +24 -24
  75. package/dist/Textarea/Textarea.cjs +1 -1
  76. package/dist/Textarea/Textarea.js +1 -1
  77. package/dist/TimePicker/TimePicker.cjs +2 -2
  78. package/dist/TimePicker/TimePicker.js +2 -2
  79. package/dist/ToggleCheckbox/ToggleCheckbox.cjs +6 -6
  80. package/dist/ToggleCheckbox/ToggleCheckbox.js +45 -43
  81. package/dist/ToggleInput/ToggleInput.cjs +1 -1
  82. package/dist/ToggleInput/ToggleInput.js +10 -10
  83. package/dist/Tooltip/Tooltip.cjs +2 -3
  84. package/dist/Tooltip/Tooltip.js +18 -18
  85. package/dist/helpers/deprecations.cjs +1 -0
  86. package/dist/helpers/deprecations.js +13 -0
  87. package/dist/helpers/useId.cjs +1 -1
  88. package/dist/helpers/useId.js +11 -4
  89. package/dist/hooks/useIntersection.cjs +1 -0
  90. package/dist/hooks/useIntersection.js +23 -0
  91. package/dist/index.cjs +1 -1
  92. package/dist/index.js +136 -134
  93. package/dist/v2/MainNav/MainNav.cjs +1 -6
  94. package/dist/v2/MainNav/MainNav.js +15 -15
  95. package/dist/v2/MainNav/NavFooter.cjs +1 -3
  96. package/dist/v2/MainNav/NavFooter.js +3 -4
  97. package/dist/v2/SimpleMenu/SimpleMenu.cjs +1 -1
  98. package/dist/v2/SimpleMenu/SimpleMenu.js +12 -12
  99. package/dist/v2/SubNav/SubNavHeader.cjs +1 -1
  100. package/dist/v2/SubNav/SubNavHeader.js +15 -15
  101. package/dist/v2/SubNav/SubNavLinkSection.cjs +4 -4
  102. package/dist/v2/SubNav/SubNavLinkSection.js +8 -8
  103. package/dist/v2/SubNav/SubNavSection.cjs +1 -1
  104. package/dist/v2/SubNav/SubNavSection.js +4 -4
  105. package/package.json +3 -4
  106. package/dist/helpers/genId.cjs +0 -1
  107. package/dist/helpers/genId.js +0 -5
@@ -1,3 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react"),s=require("prop-types"),a=require("styled-components"),l=require("../../Box/Box.cjs"),t=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},n=t(r),u=t(s),c=t(a),d=c.default(l.Box)`
2
- position: relative;
3
- `,o=({children:e})=>n.default.createElement(d,null,e);o.displayName="NavFooter";o.propTypes={children:u.default.node.isRequired};exports.NavFooter=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react"),a=require("prop-types"),s=require("../../Box/Box.cjs"),o=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},u=o(r),c=o(a),t=({children:e})=>u.default.createElement(s.Box,{position:"relative"},e);t.displayName="NavFooter";t.propTypes={children:c.default.node.isRequired};exports.NavFooter=t;
@@ -1,10 +1,9 @@
1
1
  import r from "react";
2
2
  import t from "prop-types";
3
- import i from "styled-components";
4
3
  import { Box as p } from "../../Box/Box.js";
5
- const m = i(p)`
6
- position: relative;
7
- `, e = ({ children: o }) => /* @__PURE__ */ r.createElement(m, null, o);
4
+ const e = ({ children: o }) => /* @__PURE__ */ r.createElement(p, {
5
+ position: "relative"
6
+ }, o);
8
7
  e.displayName = "NavFooter";
9
8
  e.propTypes = {
10
9
  children: t.node.isRequired
@@ -30,4 +30,4 @@
30
30
  }
31
31
  `,ne=y.default(M.Button)`
32
32
  padding: ${({theme:e})=>`${e.spaces[1]} ${e.spaces[3]}`};
33
- `,I=({as:e,children:i,onClick:E,isFocused:c,isLink:h,isExternal:b,...x})=>{const d=a.useRef();a.useEffect(()=>{c&&d.current&&d.current.focus()},[c]);const l={tabIndex:c?0:-1,ref:d,role:"menuitem",...x},v=r=>{(r.key===u.KeyboardKeys.SPACE||r.key===u.KeyboardKeys.ENTER)&&E()};return h?o.default.createElement(Z,{as:e,...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i))):b?o.default.createElement(ee,{isExternal:!0,...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i))):o.default.createElement(Y,{onKeyDown:v,onMouseDown:E,type:"button",...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i)))};I.defaultProps={as:void 0,onClick(){},isExternal:!1,isFocused:!1,isLink:!1};I.propTypes={as:t.default.elementType,children:t.default.node.isRequired,isExternal:t.default.bool,isFocused:t.default.bool,isLink:t.default.bool,onClick:t.default.func};const m=({label:e,children:i,id:E,as:c,onOpen:h=()=>{},onClose:b=()=>{},size:x,popoverPlacement:d,onReachEnd:l,...v})=>{const r=a.useRef(),B=X.useId("simplemenu",E),K=a.useRef(!1),[f,p]=a.useState(!1),[P,R]=a.useState(0),g=a.Children.toArray(i),w=x==="S"?ne:M.Button,_=c||w,O=!!l&&typeof l=="function";a.useEffect(()=>{if(["string","number"].includes(typeof e)){const n=g.findIndex(s=>s.props.children===e);n!==-1&&R(n)}},[e]);const S=D.useCallbackRef(h),L=D.useCallbackRef(b);a.useEffect(()=>{K?.current?f?S():L():K.current=!0},[K,f,S,L]),a.useEffect(()=>{o.default.isValidElement(e)&&P===-1&&r.current.focus()},[e,P]);const $=n=>{f&&(n.key===u.KeyboardKeys.ESCAPE&&(n.stopPropagation(),p(!1),r.current.focus()),n.key===u.KeyboardKeys.DOWN&&R(s=>s===g.length-1?0:s+1),n.key===u.KeyboardKeys.UP&&R(s=>s===0?g.length-1:s-1))},F=n=>{(n.key===u.KeyboardKeys.ENTER||n.key===u.KeyboardKeys.SPACE)&&p(s=>!s)},A=n=>{n.preventDefault(),n.currentTarget.contains(n.relatedTarget)||p(!1)},N=n=>{n.preventDefault(),p(s=>!s)},V=()=>{O&&l()},W=g.map((n,s)=>o.default.createElement(J.Flex,{as:"li",key:s,justifyContent:"center",role:"menuitem"},a.cloneElement(n,{onClick(){n.props.onClick(),p(!1),r.current.focus()},isFocused:P===s})));return o.default.createElement("div",{onKeyDown:$},o.default.createElement(_,{label:o.default.isValidElement(e)?null:e,"aria-haspopup":!0,"aria-expanded":f,"aria-controls":B,onKeyDown:F,onMouseDown:N,ref:r,type:"button",variant:"ghost",endIcon:o.default.createElement(te,null,o.default.createElement(H.CarretDown,{"aria-hidden":!0})),...v},e),f&&o.default.createElement(j.Popover,{onBlur:A,placement:d,source:r,onReachEnd:V,intersectionId:O?`popover-${B}`:void 0,spacing:4},o.default.createElement(k.Box,{role:"menu",as:"ul",padding:1,id:B},W)))};m.defaultProps={as:void 0};m.displayName="SimpleMenu";m.defaultProps={id:void 0,onClose(){},onOpen(){},onReachEnd:void 0,popoverPlacement:"bottom-start",size:"M"};m.propTypes={as:t.default.any,children:t.default.oneOfType([t.default.arrayOf(t.default.node),t.default.node]).isRequired,id:t.default.string,label:t.default.oneOfType([t.default.string,t.default.number,t.default.element]).isRequired,onClose:t.default.func,onOpen:t.default.func,onReachEnd:t.default.func,popoverPlacement:t.default.oneOf(j.POPOVER_PLACEMENTS),size:t.default.oneOf(["S","M"])};exports.MenuItem=I;exports.SimpleMenu=m;
33
+ `,I=({as:e,children:i,onClick:E,isFocused:c,isLink:h,isExternal:b,...x})=>{const d=a.useRef();a.useEffect(()=>{c&&d.current&&d.current.focus()},[c]);const l={tabIndex:c?0:-1,ref:d,role:"menuitem",...x},v=r=>{(r.key===u.KeyboardKeys.SPACE||r.key===u.KeyboardKeys.ENTER)&&E()};return h?o.default.createElement(Z,{as:e,...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i))):b?o.default.createElement(ee,{isExternal:!0,...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i))):o.default.createElement(Y,{onKeyDown:v,onMouseDown:E,type:"button",...l},o.default.createElement(k.Box,{padding:2},o.default.createElement(C.Typography,null,i)))};I.defaultProps={as:void 0,onClick(){},isExternal:!1,isFocused:!1,isLink:!1};I.propTypes={as:t.default.elementType,children:t.default.node.isRequired,isExternal:t.default.bool,isFocused:t.default.bool,isLink:t.default.bool,onClick:t.default.func};const m=({label:e,children:i,id:E,as:c,onOpen:h=()=>{},onClose:b=()=>{},size:x,popoverPlacement:d,onReachEnd:l,...v})=>{const r=a.useRef(),B=X.useId(E),K=a.useRef(!1),[f,p]=a.useState(!1),[P,R]=a.useState(0),g=a.Children.toArray(i),w=x==="S"?ne:M.Button,_=c||w,O=!!l&&typeof l=="function";a.useEffect(()=>{if(["string","number"].includes(typeof e)){const n=g.findIndex(s=>s.props.children===e);n!==-1&&R(n)}},[e]);const S=D.useCallbackRef(h),L=D.useCallbackRef(b);a.useEffect(()=>{K?.current?f?S():L():K.current=!0},[K,f,S,L]),a.useEffect(()=>{o.default.isValidElement(e)&&P===-1&&r.current.focus()},[e,P]);const $=n=>{f&&(n.key===u.KeyboardKeys.ESCAPE&&(n.stopPropagation(),p(!1),r.current.focus()),n.key===u.KeyboardKeys.DOWN&&R(s=>s===g.length-1?0:s+1),n.key===u.KeyboardKeys.UP&&R(s=>s===0?g.length-1:s-1))},F=n=>{(n.key===u.KeyboardKeys.ENTER||n.key===u.KeyboardKeys.SPACE)&&p(s=>!s)},A=n=>{n.preventDefault(),n.currentTarget.contains(n.relatedTarget)||p(!1)},N=n=>{n.preventDefault(),p(s=>!s)},V=()=>{O&&l()},W=g.map((n,s)=>o.default.createElement(J.Flex,{as:"li",key:s,justifyContent:"center",role:"menuitem"},a.cloneElement(n,{onClick(){n.props.onClick(),p(!1),r.current.focus()},isFocused:P===s})));return o.default.createElement("div",{onKeyDown:$},o.default.createElement(_,{label:o.default.isValidElement(e)?null:e,"aria-haspopup":!0,"aria-expanded":f,"aria-controls":B,onKeyDown:F,onMouseDown:N,ref:r,type:"button",variant:"ghost",endIcon:o.default.createElement(te,null,o.default.createElement(H.CarretDown,{"aria-hidden":!0})),...v},e),f&&o.default.createElement(j.Popover,{onBlur:A,placement:d,source:r,onReachEnd:V,intersectionId:O?`popover-${B}`:void 0,spacing:4},o.default.createElement(k.Box,{role:"menu",as:"ul",padding:1,id:B},W)))};m.defaultProps={as:void 0};m.displayName="SimpleMenu";m.defaultProps={id:void 0,onClose(){},onOpen(){},onReachEnd:void 0,popoverPlacement:"bottom-start",size:"M"};m.propTypes={as:t.default.any,children:t.default.oneOfType([t.default.arrayOf(t.default.node),t.default.node]).isRequired,id:t.default.string,label:t.default.oneOfType([t.default.string,t.default.number,t.default.element]).isRequired,onClose:t.default.func,onOpen:t.default.func,onReachEnd:t.default.func,popoverPlacement:t.default.oneOf(j.POPOVER_PLACEMENTS),size:t.default.oneOf(["S","M"])};exports.MenuItem=I;exports.SimpleMenu=m;
@@ -1,6 +1,6 @@
1
1
  import t, { useRef as b, useEffect as E, useState as B, Children as z, cloneElement as j } from "react";
2
2
  import e from "prop-types";
3
- import f from "styled-components";
3
+ import m from "styled-components";
4
4
  import { useCallbackRef as L } from "@radix-ui/react-use-callback-ref";
5
5
  import { CarretDown as H } from "@strapi/icons";
6
6
  import { Link as U } from "../Link/Link.js";
@@ -13,16 +13,16 @@ import { POPOVER_PLACEMENTS as Q, Popover as X } from "../../Popover/Popover.js"
13
13
  import { getOptionStyle as T } from "./utils.js";
14
14
  import { useId as Y } from "../../helpers/useId.js";
15
15
  import { KeyboardKeys as a } from "../../helpers/keyboardKeys.js";
16
- const Z = f.button`
16
+ const Z = m.button`
17
17
  border: none;
18
18
  padding: 0;
19
19
  background: transparent;
20
20
  cursor: pointer;
21
21
  ${T}
22
- `, ee = f(J)`
22
+ `, ee = m(J)`
23
23
  text-decoration: none;
24
24
  ${T}
25
- `, ne = f(U)`
25
+ `, ne = m(U)`
26
26
  &:focus-visible {
27
27
  /* Removes Link focus-visible after properties and reset to global outline */
28
28
  outline: 2px solid ${({ theme: o }) => o.colors.primary600};
@@ -36,14 +36,14 @@ const Z = f.button`
36
36
  fill: currentColor;
37
37
  }
38
38
  ${T}
39
- `, te = f.span`
39
+ `, te = m.span`
40
40
  display: flex;
41
41
  align-items: center;
42
42
  svg {
43
43
  height: 4px;
44
44
  width: 6px;
45
45
  }
46
- `, oe = f(K)`
46
+ `, oe = m(K)`
47
47
  padding: ${({ theme: o }) => `${o.spaces[1]} ${o.spaces[3]}`};
48
48
  `, $ = ({ as: o, children: l, onClick: d, isFocused: c, isLink: k, isExternal: v, ...C }) => {
49
49
  const p = b();
@@ -107,7 +107,7 @@ const h = ({
107
107
  onReachEnd: i,
108
108
  ...x
109
109
  }) => {
110
- const s = b(), P = Y("simplemenu", d), R = b(!1), [u, m] = B(!1), [D, I] = B(0), y = z.toArray(l), A = c || (C === "S" ? oe : K), S = !!i && typeof i == "function";
110
+ const s = b(), P = Y(d), R = b(!1), [u, f] = B(!1), [D, I] = B(0), y = z.toArray(l), A = c || (C === "S" ? oe : K), S = !!i && typeof i == "function";
111
111
  E(() => {
112
112
  if (["string", "number"].includes(typeof o)) {
113
113
  const n = y.findIndex((r) => r.props.children === o);
@@ -121,13 +121,13 @@ const h = ({
121
121
  t.isValidElement(o) && D === -1 && s.current.focus();
122
122
  }, [o, D]);
123
123
  const N = (n) => {
124
- u && (n.key === a.ESCAPE && (n.stopPropagation(), m(!1), s.current.focus()), n.key === a.DOWN && I((r) => r === y.length - 1 ? 0 : r + 1), n.key === a.UP && I((r) => r === 0 ? y.length - 1 : r - 1));
124
+ u && (n.key === a.ESCAPE && (n.stopPropagation(), f(!1), s.current.focus()), n.key === a.DOWN && I((r) => r === y.length - 1 ? 0 : r + 1), n.key === a.UP && I((r) => r === 0 ? y.length - 1 : r - 1));
125
125
  }, F = (n) => {
126
- (n.key === a.ENTER || n.key === a.SPACE) && m((r) => !r);
126
+ (n.key === a.ENTER || n.key === a.SPACE) && f((r) => !r);
127
127
  }, V = (n) => {
128
- n.preventDefault(), n.currentTarget.contains(n.relatedTarget) || m(!1);
128
+ n.preventDefault(), n.currentTarget.contains(n.relatedTarget) || f(!1);
129
129
  }, q = (n) => {
130
- n.preventDefault(), m((r) => !r);
130
+ n.preventDefault(), f((r) => !r);
131
131
  }, W = () => {
132
132
  S && i();
133
133
  }, _ = y.map((n, r) => /* @__PURE__ */ t.createElement(G, {
@@ -137,7 +137,7 @@ const h = ({
137
137
  role: "menuitem"
138
138
  }, j(n, {
139
139
  onClick() {
140
- n.props.onClick(), m(!1), s.current.focus();
140
+ n.props.onClick(), f(!1), s.current.focus();
141
141
  },
142
142
  isFocused: D === r
143
143
  })));
@@ -1,4 +1,4 @@
1
1
  "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),C=require("prop-types"),I=require("styled-components"),R=require("@strapi/icons"),_=require("../../Flex/Flex.cjs"),D=require("../../Typography/Typography.cjs"),P=require("../../IconButton/IconButton.cjs"),s=require("../../Box/Box.cjs"),F=require("../../Divider/Divider.cjs"),K=require("../../Searchbar/Searchbar.cjs"),L=require("../../Searchbar/SearchForm.cjs"),k=require("../../helpers/useId.cjs"),w=require("../../helpers/usePrevious.cjs"),O=require("../../helpers/keyboardKeys.cjs"),d=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},e=d(o),r=d(C),H=d(I),h=H.default(F.Divider)`
2
2
  width: ${24/16}rem;
3
3
  background-color: ${({theme:t})=>t.colors.neutral200};
4
- `,i=({as:t,label:g,searchLabel:f,searchable:b,onChange:y,value:m,onClear:S,onSubmit:v,id:B})=>{const[n,l]=o.useState(!1),p=w.usePrevious(n),q=k.useId("subnav-searchbar-clear",B),c=o.useRef(),u=o.useRef();o.useEffect(()=>{n&&c.current&&c.current.focus(),p&&!n&&u.current&&u.current.focus()},[n,p]);const E=()=>{l(a=>!a)},j=a=>{S(a),c.current.focus()},T=a=>{a.relatedTarget?.id!==q&&l(!1)},x=a=>{a.key===O.KeyboardKeys.ESCAPE&&l(!1)};return n?e.default.createElement(s.Box,{paddingLeft:4,paddingTop:5,paddingBottom:2,paddingRight:4},e.default.createElement(L.SearchForm,null,e.default.createElement(K.Searchbar,{name:"searchbar",value:m,onChange:y,placeholder:"e.g: strapi-plugin-abcd",onKeyDown:x,ref:c,onBlur:T,onClear:j,onSubmit:v,clearLabel:"Clear",size:"S"},f)),e.default.createElement(s.Box,{paddingLeft:2,paddingTop:4},e.default.createElement(h,null))):e.default.createElement(s.Box,{paddingLeft:6,paddingTop:6,paddingBottom:2,paddingRight:4},e.default.createElement(_.Flex,{justifyContent:"space-between",alignItems:"flex-start"},e.default.createElement(D.Typography,{variant:"beta",as:t},g),b&&e.default.createElement(P.IconButton,{ref:u,onClick:E,label:f,icon:e.default.createElement(R.Search,null)})),e.default.createElement(s.Box,{paddingTop:4},e.default.createElement(h,null)))};i.defaultProps={as:"h2",searchable:!1,onChange(){},onClear(){},onSubmit(){},value:"",searchLabel:"",id:void 0};i.propTypes={as:r.default.string,id:r.default.string,label:r.default.string.isRequired,onChange:r.default.func,onClear:r.default.func,onSubmit:r.default.func,searchLabel:r.default.string,searchable:r.default.bool,value:r.default.string};exports.SubNavHeader=i;
4
+ `,i=({as:t,label:g,searchLabel:f,searchable:y,onChange:b,value:m,onClear:S,onSubmit:v,id:B})=>{const[n,l]=o.useState(!1),p=w.usePrevious(n),q=k.useId(B),c=o.useRef(),u=o.useRef();o.useEffect(()=>{n&&c.current&&c.current.focus(),p&&!n&&u.current&&u.current.focus()},[n,p]);const E=()=>{l(a=>!a)},j=a=>{S(a),c.current.focus()},T=a=>{a.relatedTarget?.id!==q&&l(!1)},x=a=>{a.key===O.KeyboardKeys.ESCAPE&&l(!1)};return n?e.default.createElement(s.Box,{paddingLeft:4,paddingTop:5,paddingBottom:2,paddingRight:4},e.default.createElement(L.SearchForm,null,e.default.createElement(K.Searchbar,{name:"searchbar",value:m,onChange:b,placeholder:"e.g: strapi-plugin-abcd",onKeyDown:x,ref:c,onBlur:T,onClear:j,onSubmit:v,clearLabel:"Clear",size:"S"},f)),e.default.createElement(s.Box,{paddingLeft:2,paddingTop:4},e.default.createElement(h,null))):e.default.createElement(s.Box,{paddingLeft:6,paddingTop:6,paddingBottom:2,paddingRight:4},e.default.createElement(_.Flex,{justifyContent:"space-between",alignItems:"flex-start"},e.default.createElement(D.Typography,{variant:"beta",as:t},g),y&&e.default.createElement(P.IconButton,{ref:u,onClick:E,label:f,icon:e.default.createElement(R.Search,null)})),e.default.createElement(s.Box,{paddingTop:4},e.default.createElement(h,null)))};i.defaultProps={as:"h2",searchable:!1,onChange(){},onClear(){},onSubmit(){},value:"",searchLabel:"",id:void 0};i.propTypes={as:r.default.string,id:r.default.string,label:r.default.string.isRequired,onChange:r.default.func,onClear:r.default.func,onSubmit:r.default.func,searchLabel:r.default.string,searchable:r.default.bool,value:r.default.string};exports.SubNavHeader=i;
@@ -15,21 +15,21 @@ import { KeyboardKeys as j } from "../../helpers/keyboardKeys.js";
15
15
  const d = x(k)`
16
16
  width: ${24 / 16}rem;
17
17
  background-color: ${({ theme: l }) => l.colors.neutral200};
18
- `, u = ({ as: l, label: f, searchLabel: s, searchable: g, onChange: h, value: b, onClear: E, onSubmit: S, id: y }) => {
19
- const [a, c] = L(!1), m = $(a), C = _("subnav-searchbar-clear", y), o = p(), i = p();
18
+ `, f = ({ as: l, label: u, searchLabel: s, searchable: g, onChange: h, value: b, onClear: E, onSubmit: S, id: y }) => {
19
+ const [o, i] = L(!1), m = $(o), C = _(y), a = p(), c = p();
20
20
  w(() => {
21
- a && o.current && o.current.focus(), m && !a && i.current && i.current.focus();
22
- }, [a, m]);
21
+ o && a.current && a.current.focus(), m && !o && c.current && c.current.focus();
22
+ }, [o, m]);
23
23
  const v = () => {
24
- c((t) => !t);
24
+ i((t) => !t);
25
25
  }, B = (t) => {
26
- E(t), o.current.focus();
26
+ E(t), a.current.focus();
27
27
  }, T = (t) => {
28
- t.relatedTarget?.id !== C && c(!1);
28
+ t.relatedTarget?.id !== C && i(!1);
29
29
  }, R = (t) => {
30
- t.key === j.ESCAPE && c(!1);
30
+ t.key === j.ESCAPE && i(!1);
31
31
  };
32
- return a ? /* @__PURE__ */ e.createElement(n, {
32
+ return o ? /* @__PURE__ */ e.createElement(n, {
33
33
  paddingLeft: 4,
34
34
  paddingTop: 5,
35
35
  paddingBottom: 2,
@@ -40,7 +40,7 @@ const d = x(k)`
40
40
  onChange: h,
41
41
  placeholder: "e.g: strapi-plugin-abcd",
42
42
  onKeyDown: R,
43
- ref: o,
43
+ ref: a,
44
44
  onBlur: T,
45
45
  onClear: B,
46
46
  onSubmit: S,
@@ -60,8 +60,8 @@ const d = x(k)`
60
60
  }, /* @__PURE__ */ e.createElement(K, {
61
61
  variant: "beta",
62
62
  as: l
63
- }, f), g && /* @__PURE__ */ e.createElement(P, {
64
- ref: i,
63
+ }, u), g && /* @__PURE__ */ e.createElement(P, {
64
+ ref: c,
65
65
  onClick: v,
66
66
  label: s,
67
67
  icon: /* @__PURE__ */ e.createElement(D, null)
@@ -69,7 +69,7 @@ const d = x(k)`
69
69
  paddingTop: 4
70
70
  }, /* @__PURE__ */ e.createElement(d, null)));
71
71
  };
72
- u.defaultProps = {
72
+ f.defaultProps = {
73
73
  as: "h2",
74
74
  searchable: !1,
75
75
  onChange() {
@@ -82,7 +82,7 @@ u.defaultProps = {
82
82
  searchLabel: "",
83
83
  id: void 0
84
84
  };
85
- u.propTypes = {
85
+ f.propTypes = {
86
86
  as: r.string,
87
87
  id: r.string,
88
88
  label: r.string.isRequired,
@@ -94,5 +94,5 @@ u.propTypes = {
94
94
  value: r.string
95
95
  };
96
96
  export {
97
- u as SubNavHeader
97
+ f as SubNavHeader
98
98
  };
@@ -1,19 +1,19 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),m=require("prop-types"),h=require("styled-components"),x=require("@strapi/icons"),l=require("../../Box/Box.cjs"),b=require("../../Flex/Flex.cjs"),S=require("../../Typography/Typography.cjs"),q=require("../../helpers/useId.cjs"),d=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},t=d(o),r=d(m),i=d(h),v=i.default(l.Box)`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),m=require("prop-types"),h=require("styled-components"),x=require("@strapi/icons"),l=require("../../Box/Box.cjs"),b=require("../../Flex/Flex.cjs"),S=require("../../Typography/Typography.cjs"),q=require("../../helpers/useId.cjs"),d=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},t=d(o),r=d(m),i=d(h),E=i.default(l.Box)`
2
2
  svg {
3
3
  height: ${4/16}rem;
4
4
  path {
5
5
  fill: ${({theme:e})=>e.colors.neutral700};
6
6
  }
7
7
  }
8
- `,E=i.default.button`
8
+ `,k=i.default.button`
9
9
  border: none;
10
10
  padding: 0;
11
11
  background: transparent;
12
12
  display: flex;
13
13
  align-items: center;
14
- `,k=i.default.div`
14
+ `,v=i.default.div`
15
15
  display: flex;
16
16
  align-items: center;
17
17
  width: ${12/16}rem;
18
18
  transform: rotateX(${({rotated:e})=>e?"0deg":"180deg"});
19
- `,s=({label:e,children:c,id:p})=>{const[n,f]=o.useState(!0),u=q.useId("subnav-list",p),g=()=>{f(a=>!a)};return t.default.createElement(l.Box,null,t.default.createElement(v,{paddingLeft:7,paddingTop:2,paddingBottom:2,paddingRight:4},t.default.createElement(b.Flex,{justifyContent:"space-between"},t.default.createElement(E,{onClick:g,"aria-expanded":n,"aria-controls":u},t.default.createElement(k,{rotated:n},t.default.createElement(x.CarretDown,{"aria-hidden":!0})),t.default.createElement(l.Box,{paddingLeft:2},t.default.createElement(S.Typography,{as:"span",fontWeight:"semiBold",textColor:"neutral800"},e))))),n&&t.default.createElement("ul",{id:u},o.Children.map(c,(a,y)=>t.default.createElement("li",{key:y},a))))};s.defaultProps={id:void 0};s.propTypes={children:r.default.node.isRequired,id:r.default.string,label:r.default.string.isRequired};exports.SubNavLinkSection=s;
19
+ `,s=({label:e,children:c,id:p})=>{const[n,f]=o.useState(!0),u=q.useId(p),g=()=>{f(a=>!a)};return t.default.createElement(l.Box,null,t.default.createElement(E,{paddingLeft:7,paddingTop:2,paddingBottom:2,paddingRight:4},t.default.createElement(b.Flex,{justifyContent:"space-between"},t.default.createElement(k,{onClick:g,"aria-expanded":n,"aria-controls":u},t.default.createElement(v,{rotated:n},t.default.createElement(x.CarretDown,{"aria-hidden":!0})),t.default.createElement(l.Box,{paddingLeft:2},t.default.createElement(S.Typography,{as:"span",fontWeight:"semiBold",textColor:"neutral800"},e))))),n&&t.default.createElement("ul",{id:u},o.Children.map(c,(a,y)=>t.default.createElement("li",{key:y},a))))};s.defaultProps={id:void 0};s.propTypes={children:r.default.node.isRequired,id:r.default.string,label:r.default.string.isRequired};exports.SubNavLinkSection=s;
@@ -4,8 +4,8 @@ import a from "styled-components";
4
4
  import { CarretDown as h } from "@strapi/icons";
5
5
  import { Box as i } from "../../Box/Box.js";
6
6
  import { Flex as E } from "../../Flex/Flex.js";
7
- import { Typography as b } from "../../Typography/Typography.js";
8
- import { useId as y } from "../../helpers/useId.js";
7
+ import { Typography as y } from "../../Typography/Typography.js";
8
+ import { useId as b } from "../../helpers/useId.js";
9
9
  const k = a(i)`
10
10
  svg {
11
11
  height: ${4 / 16}rem;
@@ -13,19 +13,19 @@ const k = a(i)`
13
13
  fill: ${({ theme: t }) => t.colors.neutral700};
14
14
  }
15
15
  }
16
- `, v = a.button`
16
+ `, x = a.button`
17
17
  border: none;
18
18
  padding: 0;
19
19
  background: transparent;
20
20
  display: flex;
21
21
  align-items: center;
22
- `, x = a.div`
22
+ `, S = a.div`
23
23
  display: flex;
24
24
  align-items: center;
25
25
  width: ${12 / 16}rem;
26
26
  transform: rotateX(${({ rotated: t }) => t ? "0deg" : "180deg"});
27
27
  `, l = ({ label: t, children: p, id: s }) => {
28
- const [r, m] = f(!0), d = y("subnav-list", s), c = () => {
28
+ const [r, m] = f(!0), d = b(s), c = () => {
29
29
  m((n) => !n);
30
30
  };
31
31
  return /* @__PURE__ */ e.createElement(i, null, /* @__PURE__ */ e.createElement(k, {
@@ -35,17 +35,17 @@ const k = a(i)`
35
35
  paddingRight: 4
36
36
  }, /* @__PURE__ */ e.createElement(E, {
37
37
  justifyContent: "space-between"
38
- }, /* @__PURE__ */ e.createElement(v, {
38
+ }, /* @__PURE__ */ e.createElement(x, {
39
39
  onClick: c,
40
40
  "aria-expanded": r,
41
41
  "aria-controls": d
42
- }, /* @__PURE__ */ e.createElement(x, {
42
+ }, /* @__PURE__ */ e.createElement(S, {
43
43
  rotated: r
44
44
  }, /* @__PURE__ */ e.createElement(h, {
45
45
  "aria-hidden": !0
46
46
  })), /* @__PURE__ */ e.createElement(i, {
47
47
  paddingLeft: 2
48
- }, /* @__PURE__ */ e.createElement(b, {
48
+ }, /* @__PURE__ */ e.createElement(y, {
49
49
  as: "span",
50
50
  fontWeight: "semiBold",
51
51
  textColor: "neutral800"
@@ -5,4 +5,4 @@
5
5
  fill: ${({theme:e})=>e.colors.neutral500};
6
6
  }
7
7
  }
8
- `,s=({collapsable:e,label:c,badgeLabel:l,children:p,id:f})=>{const[i,g]=n.useState(!0),d=B.useId("subnav-list",f),S=()=>{g(o=>!o)};return t.default.createElement(h.Stack,{spacing:1},t.default.createElement(_,{paddingLeft:6,paddingTop:2,paddingBottom:2,paddingRight:4},t.default.createElement(u.Box,{position:"relative",paddingRight:l?6:0},t.default.createElement(q.SubNavSectionLabel,{onClick:S,ariaExpanded:i,ariaControls:d,collapsable:e,label:c}),l&&t.default.createElement(y.Badge,{backgroundColor:"neutral150",textColor:"neutral600",position:"absolute",right:0,top:"50%",transform:"translateY(-50%)"},l))),(!e||i)&&t.default.createElement("ol",{id:d},n.Children.map(p,(o,b)=>t.default.createElement("li",{key:b},o))))};s.defaultProps={badgeLabel:null,collapsable:!1,id:void 0};s.propTypes={badgeLabel:a.default.string,children:a.default.node.isRequired,collapsable:a.default.bool,id:a.default.string,label:a.default.string.isRequired};exports.SubNavSection=s;
8
+ `,s=({collapsable:e,label:c,badgeLabel:o,children:p,id:f})=>{const[i,g]=n.useState(!0),d=B.useId(f),S=()=>{g(l=>!l)};return t.default.createElement(h.Stack,{spacing:1},t.default.createElement(_,{paddingLeft:6,paddingTop:2,paddingBottom:2,paddingRight:4},t.default.createElement(u.Box,{position:"relative",paddingRight:o?6:0},t.default.createElement(q.SubNavSectionLabel,{onClick:S,ariaExpanded:i,ariaControls:d,collapsable:e,label:c}),o&&t.default.createElement(y.Badge,{backgroundColor:"neutral150",textColor:"neutral600",position:"absolute",right:0,top:"50%",transform:"translateY(-50%)"},o))),(!e||i)&&t.default.createElement("ol",{id:d},n.Children.map(p,(l,b)=>t.default.createElement("li",{key:b},l))))};s.defaultProps={badgeLabel:null,collapsable:!1,id:void 0};s.propTypes={badgeLabel:a.default.string,children:a.default.node.isRequired,collapsable:a.default.bool,id:a.default.string,label:a.default.string.isRequired};exports.SubNavSection=s;
@@ -4,8 +4,8 @@ import h from "styled-components";
4
4
  import { Box as l } from "../../Box/Box.js";
5
5
  import { Badge as E } from "../../Badge/Badge.js";
6
6
  import { Stack as S } from "../../Stack/Stack.js";
7
- import { SubNavSectionLabel as v } from "./SubNavSectionLabel.js";
8
- import { useId as k } from "../../helpers/useId.js";
7
+ import { SubNavSectionLabel as k } from "./SubNavSectionLabel.js";
8
+ import { useId as v } from "../../helpers/useId.js";
9
9
  const C = h(l)`
10
10
  svg {
11
11
  height: ${4 / 16}rem;
@@ -14,7 +14,7 @@ const C = h(l)`
14
14
  }
15
15
  }
16
16
  `, p = ({ collapsable: r, label: s, badgeLabel: o, children: d, id: m }) => {
17
- const [a, c] = f(!0), n = k("subnav-list", m), u = () => {
17
+ const [a, c] = f(!0), n = v(m), u = () => {
18
18
  c((i) => !i);
19
19
  };
20
20
  return /* @__PURE__ */ e.createElement(S, {
@@ -27,7 +27,7 @@ const C = h(l)`
27
27
  }, /* @__PURE__ */ e.createElement(l, {
28
28
  position: "relative",
29
29
  paddingRight: o ? 6 : 0
30
- }, /* @__PURE__ */ e.createElement(v, {
30
+ }, /* @__PURE__ */ e.createElement(k, {
31
31
  onClick: u,
32
32
  ariaExpanded: a,
33
33
  ariaControls: n,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/design-system",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@juggle/resize-observer": "^3.4.0",
31
31
  "@playwright/test": "1.27.1",
32
- "@strapi/icons": "^1.6.1",
32
+ "@strapi/icons": "^1.6.3",
33
33
  "@swc/core": "^1.3.11",
34
34
  "@swc/jest": "^0.2.23",
35
35
  "@testing-library/jest-dom": "5.16.5",
@@ -58,7 +58,6 @@
58
58
  },
59
59
  "scripts": {
60
60
  "develop": "vite build --watch",
61
- "prebuild": "rimraf dist",
62
61
  "build": "yarn build:prod",
63
62
  "build:prod": "vite build",
64
63
  "generate:types": "tsc --noEmit false --emitDeclarationOnly --declarationDir dist",
@@ -74,5 +73,5 @@
74
73
  "@types/react": "17.0.2",
75
74
  "@types/react-dom": "17.0.2"
76
75
  },
77
- "gitHead": "d4148c932fc2b03cd2db769859f6b51b2d0738a4"
76
+ "gitHead": "475dab0bd887ffc86edd026365c78adad4ffbc36"
78
77
  }
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});let e=0;const t=()=>++e;exports.genId=t;
@@ -1,5 +0,0 @@
1
- let e = 0;
2
- const t = () => ++e;
3
- export {
4
- t as genId
5
- };