@samline/drawer 2.0.3 → 2.0.4

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.
@@ -28778,11 +28778,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28778
28778
  fadeFromIndex: void 0
28779
28779
  };
28780
28780
  }
28781
- function VanillaNode({ value, dataAttribute }) {
28781
+ function VanillaNode({
28782
+ value,
28783
+ dataAttribute
28784
+ }) {
28782
28785
  const ref = import_react10.default.useRef(null);
28783
28786
  useSafeLayoutEffect(() => {
28784
28787
  const element = ref.current;
28785
- if (!element) return;
28788
+ if (!element) {
28789
+ return;
28790
+ }
28786
28791
  element.innerHTML = "";
28787
28792
  if (value instanceof HTMLElement) {
28788
28793
  element.appendChild(value);
@@ -28803,6 +28808,19 @@ function VanillaNode({ value, dataAttribute }) {
28803
28808
  }
28804
28809
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28805
28810
  }
28811
+ function readAccessibleTextFromRoot(root, elementId) {
28812
+ if (!root || !elementId) {
28813
+ return void 0;
28814
+ }
28815
+ const elements = Array.from(root.querySelectorAll("[id]"));
28816
+ for (const element of elements) {
28817
+ if (element instanceof HTMLElement && element.id === elementId) {
28818
+ const value = element.textContent?.trim();
28819
+ return value ? value : void 0;
28820
+ }
28821
+ }
28822
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28823
+ }
28806
28824
  function VanillaDrawerRenderer({
28807
28825
  options,
28808
28826
  open,
@@ -28831,16 +28849,43 @@ function VanillaDrawerRenderer({
28831
28849
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28832
28850
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28833
28851
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28852
+ const resolvedContent = import_react10.default.useMemo(() => {
28853
+ if (content instanceof HTMLElement) {
28854
+ return {
28855
+ value: content,
28856
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28857
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28858
+ };
28859
+ }
28860
+ if (typeof content === "function") {
28861
+ const result = content();
28862
+ return {
28863
+ value: result,
28864
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28865
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28866
+ };
28867
+ }
28868
+ return {
28869
+ value: content,
28870
+ proxyTitle: void 0,
28871
+ proxyDescription: void 0
28872
+ };
28873
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28874
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28875
+ const proxyDescription = resolvedContent.proxyDescription;
28876
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28877
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28878
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28834
28879
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28835
28880
  Drawer.Content,
28836
28881
  {
28837
28882
  className: contentClassName,
28838
- "aria-label": title == null ? ariaLabel : void 0,
28839
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28840
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28883
+ "aria-label": contentAriaLabel,
28884
+ "aria-labelledby": contentAriaLabelledBy,
28885
+ "aria-describedby": contentAriaDescribedBy
28841
28886
  },
28842
28887
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28843
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28888
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28844
28889
  )));
28845
28890
  }
28846
28891
 
@@ -28778,11 +28778,16 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
28778
28778
  fadeFromIndex: void 0
28779
28779
  };
28780
28780
  }
28781
- function VanillaNode({ value, dataAttribute }) {
28781
+ function VanillaNode({
28782
+ value,
28783
+ dataAttribute
28784
+ }) {
28782
28785
  const ref = import_react10.default.useRef(null);
28783
28786
  useSafeLayoutEffect(() => {
28784
28787
  const element = ref.current;
28785
- if (!element) return;
28788
+ if (!element) {
28789
+ return;
28790
+ }
28786
28791
  element.innerHTML = "";
28787
28792
  if (value instanceof HTMLElement) {
28788
28793
  element.appendChild(value);
@@ -28803,6 +28808,19 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
28803
28808
  }
28804
28809
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28805
28810
  }
28811
+ function readAccessibleTextFromRoot(root, elementId) {
28812
+ if (!root || !elementId) {
28813
+ return void 0;
28814
+ }
28815
+ const elements = Array.from(root.querySelectorAll("[id]"));
28816
+ for (const element of elements) {
28817
+ if (element instanceof HTMLElement && element.id === elementId) {
28818
+ const value = element.textContent?.trim();
28819
+ return value ? value : void 0;
28820
+ }
28821
+ }
28822
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28823
+ }
28806
28824
  function VanillaDrawerRenderer({
28807
28825
  options,
28808
28826
  open,
@@ -28831,16 +28849,43 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
28831
28849
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28832
28850
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28833
28851
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28852
+ const resolvedContent = import_react10.default.useMemo(() => {
28853
+ if (content instanceof HTMLElement) {
28854
+ return {
28855
+ value: content,
28856
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28857
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28858
+ };
28859
+ }
28860
+ if (typeof content === "function") {
28861
+ const result = content();
28862
+ return {
28863
+ value: result,
28864
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28865
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28866
+ };
28867
+ }
28868
+ return {
28869
+ value: content,
28870
+ proxyTitle: void 0,
28871
+ proxyDescription: void 0
28872
+ };
28873
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28874
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28875
+ const proxyDescription = resolvedContent.proxyDescription;
28876
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28877
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28878
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28834
28879
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28835
28880
  Drawer.Content,
28836
28881
  {
28837
28882
  className: contentClassName,
28838
- "aria-label": title == null ? ariaLabel : void 0,
28839
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28840
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28883
+ "aria-label": contentAriaLabel,
28884
+ "aria-labelledby": contentAriaLabelledBy,
28885
+ "aria-describedby": contentAriaDescribedBy
28841
28886
  },
28842
28887
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28843
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28888
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28844
28889
  )));
28845
28890
  }
28846
28891
 
@@ -28752,11 +28752,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28752
28752
  fadeFromIndex: void 0
28753
28753
  };
28754
28754
  }
28755
- function VanillaNode({ value, dataAttribute }) {
28755
+ function VanillaNode({
28756
+ value,
28757
+ dataAttribute
28758
+ }) {
28756
28759
  const ref = import_react10.default.useRef(null);
28757
28760
  useSafeLayoutEffect(() => {
28758
28761
  const element = ref.current;
28759
- if (!element) return;
28762
+ if (!element) {
28763
+ return;
28764
+ }
28760
28765
  element.innerHTML = "";
28761
28766
  if (value instanceof HTMLElement) {
28762
28767
  element.appendChild(value);
@@ -28777,6 +28782,19 @@ function VanillaNode({ value, dataAttribute }) {
28777
28782
  }
28778
28783
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28779
28784
  }
28785
+ function readAccessibleTextFromRoot(root, elementId) {
28786
+ if (!root || !elementId) {
28787
+ return void 0;
28788
+ }
28789
+ const elements = Array.from(root.querySelectorAll("[id]"));
28790
+ for (const element of elements) {
28791
+ if (element instanceof HTMLElement && element.id === elementId) {
28792
+ const value = element.textContent?.trim();
28793
+ return value ? value : void 0;
28794
+ }
28795
+ }
28796
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28797
+ }
28780
28798
  function VanillaDrawerRenderer({
28781
28799
  options,
28782
28800
  open,
@@ -28805,16 +28823,43 @@ function VanillaDrawerRenderer({
28805
28823
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28806
28824
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28807
28825
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28826
+ const resolvedContent = import_react10.default.useMemo(() => {
28827
+ if (content instanceof HTMLElement) {
28828
+ return {
28829
+ value: content,
28830
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28831
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28832
+ };
28833
+ }
28834
+ if (typeof content === "function") {
28835
+ const result = content();
28836
+ return {
28837
+ value: result,
28838
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28839
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28840
+ };
28841
+ }
28842
+ return {
28843
+ value: content,
28844
+ proxyTitle: void 0,
28845
+ proxyDescription: void 0
28846
+ };
28847
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28848
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28849
+ const proxyDescription = resolvedContent.proxyDescription;
28850
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28851
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28852
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28808
28853
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28809
28854
  Drawer.Content,
28810
28855
  {
28811
28856
  className: contentClassName,
28812
- "aria-label": title == null ? ariaLabel : void 0,
28813
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28814
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28857
+ "aria-label": contentAriaLabel,
28858
+ "aria-labelledby": contentAriaLabelledBy,
28859
+ "aria-describedby": contentAriaDescribedBy
28815
28860
  },
28816
28861
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28817
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28862
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28818
28863
  )));
28819
28864
  }
28820
28865
 
package/dist/index.js CHANGED
@@ -28777,11 +28777,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28777
28777
  fadeFromIndex: void 0
28778
28778
  };
28779
28779
  }
28780
- function VanillaNode({ value, dataAttribute }) {
28780
+ function VanillaNode({
28781
+ value,
28782
+ dataAttribute
28783
+ }) {
28781
28784
  const ref = import_react10.default.useRef(null);
28782
28785
  useSafeLayoutEffect(() => {
28783
28786
  const element = ref.current;
28784
- if (!element) return;
28787
+ if (!element) {
28788
+ return;
28789
+ }
28785
28790
  element.innerHTML = "";
28786
28791
  if (value instanceof HTMLElement) {
28787
28792
  element.appendChild(value);
@@ -28802,6 +28807,19 @@ function VanillaNode({ value, dataAttribute }) {
28802
28807
  }
28803
28808
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28804
28809
  }
28810
+ function readAccessibleTextFromRoot(root, elementId) {
28811
+ if (!root || !elementId) {
28812
+ return void 0;
28813
+ }
28814
+ const elements = Array.from(root.querySelectorAll("[id]"));
28815
+ for (const element of elements) {
28816
+ if (element instanceof HTMLElement && element.id === elementId) {
28817
+ const value = element.textContent?.trim();
28818
+ return value ? value : void 0;
28819
+ }
28820
+ }
28821
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28822
+ }
28805
28823
  function VanillaDrawerRenderer({
28806
28824
  options,
28807
28825
  open,
@@ -28830,16 +28848,43 @@ function VanillaDrawerRenderer({
28830
28848
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28831
28849
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28832
28850
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28851
+ const resolvedContent = import_react10.default.useMemo(() => {
28852
+ if (content instanceof HTMLElement) {
28853
+ return {
28854
+ value: content,
28855
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28856
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28857
+ };
28858
+ }
28859
+ if (typeof content === "function") {
28860
+ const result = content();
28861
+ return {
28862
+ value: result,
28863
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28864
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28865
+ };
28866
+ }
28867
+ return {
28868
+ value: content,
28869
+ proxyTitle: void 0,
28870
+ proxyDescription: void 0
28871
+ };
28872
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28873
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28874
+ const proxyDescription = resolvedContent.proxyDescription;
28875
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28876
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28877
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28833
28878
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28834
28879
  Drawer.Content,
28835
28880
  {
28836
28881
  className: contentClassName,
28837
- "aria-label": title == null ? ariaLabel : void 0,
28838
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28839
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28882
+ "aria-label": contentAriaLabel,
28883
+ "aria-labelledby": contentAriaLabelledBy,
28884
+ "aria-describedby": contentAriaDescribedBy
28840
28885
  },
28841
28886
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28842
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28887
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28843
28888
  )));
28844
28889
  }
28845
28890
 
package/dist/index.mjs CHANGED
@@ -28752,11 +28752,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28752
28752
  fadeFromIndex: void 0
28753
28753
  };
28754
28754
  }
28755
- function VanillaNode({ value, dataAttribute }) {
28755
+ function VanillaNode({
28756
+ value,
28757
+ dataAttribute
28758
+ }) {
28756
28759
  const ref = import_react10.default.useRef(null);
28757
28760
  useSafeLayoutEffect(() => {
28758
28761
  const element = ref.current;
28759
- if (!element) return;
28762
+ if (!element) {
28763
+ return;
28764
+ }
28760
28765
  element.innerHTML = "";
28761
28766
  if (value instanceof HTMLElement) {
28762
28767
  element.appendChild(value);
@@ -28777,6 +28782,19 @@ function VanillaNode({ value, dataAttribute }) {
28777
28782
  }
28778
28783
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28779
28784
  }
28785
+ function readAccessibleTextFromRoot(root, elementId) {
28786
+ if (!root || !elementId) {
28787
+ return void 0;
28788
+ }
28789
+ const elements = Array.from(root.querySelectorAll("[id]"));
28790
+ for (const element of elements) {
28791
+ if (element instanceof HTMLElement && element.id === elementId) {
28792
+ const value = element.textContent?.trim();
28793
+ return value ? value : void 0;
28794
+ }
28795
+ }
28796
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28797
+ }
28780
28798
  function VanillaDrawerRenderer({
28781
28799
  options,
28782
28800
  open,
@@ -28805,16 +28823,43 @@ function VanillaDrawerRenderer({
28805
28823
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28806
28824
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28807
28825
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28826
+ const resolvedContent = import_react10.default.useMemo(() => {
28827
+ if (content instanceof HTMLElement) {
28828
+ return {
28829
+ value: content,
28830
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28831
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28832
+ };
28833
+ }
28834
+ if (typeof content === "function") {
28835
+ const result = content();
28836
+ return {
28837
+ value: result,
28838
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28839
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28840
+ };
28841
+ }
28842
+ return {
28843
+ value: content,
28844
+ proxyTitle: void 0,
28845
+ proxyDescription: void 0
28846
+ };
28847
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28848
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28849
+ const proxyDescription = resolvedContent.proxyDescription;
28850
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28851
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28852
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28808
28853
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28809
28854
  Drawer.Content,
28810
28855
  {
28811
28856
  className: contentClassName,
28812
- "aria-label": title == null ? ariaLabel : void 0,
28813
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28814
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28857
+ "aria-label": contentAriaLabel,
28858
+ "aria-labelledby": contentAriaLabelledBy,
28859
+ "aria-describedby": contentAriaDescribedBy
28815
28860
  },
28816
28861
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28817
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28862
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28818
28863
  )));
28819
28864
  }
28820
28865
 
@@ -2254,7 +2254,9 @@ function VanillaNode({ value, dataAttribute }) {
2254
2254
  const ref = React__namespace.default.useRef(null);
2255
2255
  useSafeLayoutEffect(()=>{
2256
2256
  const element = ref.current;
2257
- if (!element) return;
2257
+ if (!element) {
2258
+ return;
2259
+ }
2258
2260
  element.innerHTML = '';
2259
2261
  if (value instanceof HTMLElement) {
2260
2262
  element.appendChild(value);
@@ -2282,11 +2284,60 @@ function VanillaNode({ value, dataAttribute }) {
2282
2284
  ref: ref
2283
2285
  });
2284
2286
  }
2287
+ function readAccessibleTextFromRoot(root, elementId) {
2288
+ var _root_textContent;
2289
+ if (!root || !elementId) {
2290
+ return undefined;
2291
+ }
2292
+ const elements = Array.from(root.querySelectorAll('[id]'));
2293
+ for (const element of elements){
2294
+ if (element instanceof HTMLElement && element.id === elementId) {
2295
+ var _element_textContent;
2296
+ const value = (_element_textContent = element.textContent) == null ? void 0 : _element_textContent.trim();
2297
+ return value ? value : undefined;
2298
+ }
2299
+ }
2300
+ return root.id === elementId ? ((_root_textContent = root.textContent) == null ? void 0 : _root_textContent.trim()) || undefined : undefined;
2301
+ }
2285
2302
  function VanillaDrawerRenderer({ options, open, onOpenChange, onDragChange, onReleaseChange }) {
2303
+ var _resolvedContent_proxyTitle;
2286
2304
  const { mountElement: _mountElement, triggerElement: _triggerElement, triggerText, showHandle, handleClassName, ariaLabel, ariaLabelledBy, ariaDescribedBy, title, titleVisuallyHidden, description, descriptionVisuallyHidden, content, overlayClassName, contentClassName, ...drawerOptions } = options;
2287
2305
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
2288
2306
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
2289
2307
  const shouldRenderVanillaContent = title != null || description != null || content != null;
2308
+ const resolvedContent = React__namespace.default.useMemo(()=>{
2309
+ if (content instanceof HTMLElement) {
2310
+ return {
2311
+ value: content,
2312
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : undefined,
2313
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : undefined
2314
+ };
2315
+ }
2316
+ if (typeof content === 'function') {
2317
+ const result = content();
2318
+ return {
2319
+ value: result,
2320
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : undefined,
2321
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : undefined
2322
+ };
2323
+ }
2324
+ return {
2325
+ value: content,
2326
+ proxyTitle: undefined,
2327
+ proxyDescription: undefined
2328
+ };
2329
+ }, [
2330
+ ariaDescribedBy,
2331
+ ariaLabelledBy,
2332
+ content,
2333
+ description,
2334
+ title
2335
+ ]);
2336
+ const proxyTitle = (_resolvedContent_proxyTitle = resolvedContent.proxyTitle) != null ? _resolvedContent_proxyTitle : title == null ? ariaLabel : undefined;
2337
+ const proxyDescription = resolvedContent.proxyDescription;
2338
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : undefined;
2339
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : undefined;
2340
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : undefined;
2290
2341
  return /*#__PURE__*/ React__namespace.default.createElement(Drawer.Root, rootProps, triggerText ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Trigger, {
2291
2342
  asChild: true
2292
2343
  }, /*#__PURE__*/ React__namespace.default.createElement("button", {
@@ -2296,25 +2347,30 @@ function VanillaDrawerRenderer({ options, open, onOpenChange, onDragChange, onRe
2296
2347
  className: overlayClassName
2297
2348
  }), /*#__PURE__*/ React__namespace.default.createElement(Drawer.Content, {
2298
2349
  className: contentClassName,
2299
- "aria-label": title == null ? ariaLabel : undefined,
2300
- "aria-labelledby": title == null ? ariaLabelledBy : undefined,
2301
- "aria-describedby": description == null ? ariaDescribedBy : undefined
2350
+ "aria-label": contentAriaLabel,
2351
+ "aria-labelledby": contentAriaLabelledBy,
2352
+ "aria-describedby": contentAriaDescribedBy
2302
2353
  }, shouldRenderHandle ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Handle, {
2303
2354
  className: handleClassName
2304
2355
  }) : null, shouldRenderVanillaContent ? /*#__PURE__*/ React__namespace.default.createElement("div", {
2305
2356
  "data-drawer-vanilla-node": ""
2306
- }, title != null ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Title, {
2357
+ }, proxyTitle ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Title, {
2358
+ style: VISUALLY_HIDDEN_STYLE
2359
+ }, proxyTitle) : null, title != null ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Title, {
2307
2360
  style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : undefined
2308
2361
  }, /*#__PURE__*/ React__namespace.default.createElement(VanillaNode, {
2309
2362
  value: title
2310
- })) : null, description != null ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Description, {
2363
+ })) : null, proxyDescription ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Description, {
2364
+ style: VISUALLY_HIDDEN_STYLE
2365
+ }, proxyDescription) : null, description != null ? /*#__PURE__*/ React__namespace.default.createElement(Drawer.Description, {
2311
2366
  style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : undefined
2312
2367
  }, /*#__PURE__*/ React__namespace.default.createElement(VanillaNode, {
2313
2368
  value: description
2314
- })) : null, /*#__PURE__*/ React__namespace.default.createElement(VanillaNode, {
2315
- value: content,
2316
- dataAttribute: "data-drawer-vanilla-body"
2317
- })) : null)));
2369
+ })) : null, /*#__PURE__*/ React__namespace.default.createElement("div", {
2370
+ "data-drawer-vanilla-body": ""
2371
+ }, /*#__PURE__*/ React__namespace.default.createElement(VanillaNode, {
2372
+ value: resolvedContent.value
2373
+ }))) : null)));
2318
2374
  }
2319
2375
 
2320
2376
  function canUseDOM$1() {
@@ -2232,7 +2232,9 @@ function VanillaNode({ value, dataAttribute }) {
2232
2232
  const ref = React__default.useRef(null);
2233
2233
  useSafeLayoutEffect(()=>{
2234
2234
  const element = ref.current;
2235
- if (!element) return;
2235
+ if (!element) {
2236
+ return;
2237
+ }
2236
2238
  element.innerHTML = '';
2237
2239
  if (value instanceof HTMLElement) {
2238
2240
  element.appendChild(value);
@@ -2260,11 +2262,60 @@ function VanillaNode({ value, dataAttribute }) {
2260
2262
  ref: ref
2261
2263
  });
2262
2264
  }
2265
+ function readAccessibleTextFromRoot(root, elementId) {
2266
+ var _root_textContent;
2267
+ if (!root || !elementId) {
2268
+ return undefined;
2269
+ }
2270
+ const elements = Array.from(root.querySelectorAll('[id]'));
2271
+ for (const element of elements){
2272
+ if (element instanceof HTMLElement && element.id === elementId) {
2273
+ var _element_textContent;
2274
+ const value = (_element_textContent = element.textContent) == null ? void 0 : _element_textContent.trim();
2275
+ return value ? value : undefined;
2276
+ }
2277
+ }
2278
+ return root.id === elementId ? ((_root_textContent = root.textContent) == null ? void 0 : _root_textContent.trim()) || undefined : undefined;
2279
+ }
2263
2280
  function VanillaDrawerRenderer({ options, open, onOpenChange, onDragChange, onReleaseChange }) {
2281
+ var _resolvedContent_proxyTitle;
2264
2282
  const { mountElement: _mountElement, triggerElement: _triggerElement, triggerText, showHandle, handleClassName, ariaLabel, ariaLabelledBy, ariaDescribedBy, title, titleVisuallyHidden, description, descriptionVisuallyHidden, content, overlayClassName, contentClassName, ...drawerOptions } = options;
2265
2283
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
2266
2284
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
2267
2285
  const shouldRenderVanillaContent = title != null || description != null || content != null;
2286
+ const resolvedContent = React__default.useMemo(()=>{
2287
+ if (content instanceof HTMLElement) {
2288
+ return {
2289
+ value: content,
2290
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : undefined,
2291
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : undefined
2292
+ };
2293
+ }
2294
+ if (typeof content === 'function') {
2295
+ const result = content();
2296
+ return {
2297
+ value: result,
2298
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : undefined,
2299
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : undefined
2300
+ };
2301
+ }
2302
+ return {
2303
+ value: content,
2304
+ proxyTitle: undefined,
2305
+ proxyDescription: undefined
2306
+ };
2307
+ }, [
2308
+ ariaDescribedBy,
2309
+ ariaLabelledBy,
2310
+ content,
2311
+ description,
2312
+ title
2313
+ ]);
2314
+ const proxyTitle = (_resolvedContent_proxyTitle = resolvedContent.proxyTitle) != null ? _resolvedContent_proxyTitle : title == null ? ariaLabel : undefined;
2315
+ const proxyDescription = resolvedContent.proxyDescription;
2316
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : undefined;
2317
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : undefined;
2318
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : undefined;
2268
2319
  return /*#__PURE__*/ React__default.createElement(Drawer.Root, rootProps, triggerText ? /*#__PURE__*/ React__default.createElement(Drawer.Trigger, {
2269
2320
  asChild: true
2270
2321
  }, /*#__PURE__*/ React__default.createElement("button", {
@@ -2274,25 +2325,30 @@ function VanillaDrawerRenderer({ options, open, onOpenChange, onDragChange, onRe
2274
2325
  className: overlayClassName
2275
2326
  }), /*#__PURE__*/ React__default.createElement(Drawer.Content, {
2276
2327
  className: contentClassName,
2277
- "aria-label": title == null ? ariaLabel : undefined,
2278
- "aria-labelledby": title == null ? ariaLabelledBy : undefined,
2279
- "aria-describedby": description == null ? ariaDescribedBy : undefined
2328
+ "aria-label": contentAriaLabel,
2329
+ "aria-labelledby": contentAriaLabelledBy,
2330
+ "aria-describedby": contentAriaDescribedBy
2280
2331
  }, shouldRenderHandle ? /*#__PURE__*/ React__default.createElement(Drawer.Handle, {
2281
2332
  className: handleClassName
2282
2333
  }) : null, shouldRenderVanillaContent ? /*#__PURE__*/ React__default.createElement("div", {
2283
2334
  "data-drawer-vanilla-node": ""
2284
- }, title != null ? /*#__PURE__*/ React__default.createElement(Drawer.Title, {
2335
+ }, proxyTitle ? /*#__PURE__*/ React__default.createElement(Drawer.Title, {
2336
+ style: VISUALLY_HIDDEN_STYLE
2337
+ }, proxyTitle) : null, title != null ? /*#__PURE__*/ React__default.createElement(Drawer.Title, {
2285
2338
  style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : undefined
2286
2339
  }, /*#__PURE__*/ React__default.createElement(VanillaNode, {
2287
2340
  value: title
2288
- })) : null, description != null ? /*#__PURE__*/ React__default.createElement(Drawer.Description, {
2341
+ })) : null, proxyDescription ? /*#__PURE__*/ React__default.createElement(Drawer.Description, {
2342
+ style: VISUALLY_HIDDEN_STYLE
2343
+ }, proxyDescription) : null, description != null ? /*#__PURE__*/ React__default.createElement(Drawer.Description, {
2289
2344
  style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : undefined
2290
2345
  }, /*#__PURE__*/ React__default.createElement(VanillaNode, {
2291
2346
  value: description
2292
- })) : null, /*#__PURE__*/ React__default.createElement(VanillaNode, {
2293
- value: content,
2294
- dataAttribute: "data-drawer-vanilla-body"
2295
- })) : null)));
2347
+ })) : null, /*#__PURE__*/ React__default.createElement("div", {
2348
+ "data-drawer-vanilla-body": ""
2349
+ }, /*#__PURE__*/ React__default.createElement(VanillaNode, {
2350
+ value: resolvedContent.value
2351
+ }))) : null)));
2296
2352
  }
2297
2353
 
2298
2354
  function canUseDOM$1() {
@@ -28780,11 +28780,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28780
28780
  fadeFromIndex: void 0
28781
28781
  };
28782
28782
  }
28783
- function VanillaNode({ value, dataAttribute }) {
28783
+ function VanillaNode({
28784
+ value,
28785
+ dataAttribute
28786
+ }) {
28784
28787
  const ref = import_react10.default.useRef(null);
28785
28788
  useSafeLayoutEffect(() => {
28786
28789
  const element = ref.current;
28787
- if (!element) return;
28790
+ if (!element) {
28791
+ return;
28792
+ }
28788
28793
  element.innerHTML = "";
28789
28794
  if (value instanceof HTMLElement) {
28790
28795
  element.appendChild(value);
@@ -28805,6 +28810,19 @@ function VanillaNode({ value, dataAttribute }) {
28805
28810
  }
28806
28811
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28807
28812
  }
28813
+ function readAccessibleTextFromRoot(root, elementId) {
28814
+ if (!root || !elementId) {
28815
+ return void 0;
28816
+ }
28817
+ const elements = Array.from(root.querySelectorAll("[id]"));
28818
+ for (const element of elements) {
28819
+ if (element instanceof HTMLElement && element.id === elementId) {
28820
+ const value = element.textContent?.trim();
28821
+ return value ? value : void 0;
28822
+ }
28823
+ }
28824
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28825
+ }
28808
28826
  function VanillaDrawerRenderer({
28809
28827
  options,
28810
28828
  open,
@@ -28833,16 +28851,43 @@ function VanillaDrawerRenderer({
28833
28851
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28834
28852
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28835
28853
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28854
+ const resolvedContent = import_react10.default.useMemo(() => {
28855
+ if (content instanceof HTMLElement) {
28856
+ return {
28857
+ value: content,
28858
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28859
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28860
+ };
28861
+ }
28862
+ if (typeof content === "function") {
28863
+ const result = content();
28864
+ return {
28865
+ value: result,
28866
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28867
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28868
+ };
28869
+ }
28870
+ return {
28871
+ value: content,
28872
+ proxyTitle: void 0,
28873
+ proxyDescription: void 0
28874
+ };
28875
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28876
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28877
+ const proxyDescription = resolvedContent.proxyDescription;
28878
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28879
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28880
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28836
28881
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28837
28882
  Drawer.Content,
28838
28883
  {
28839
28884
  className: contentClassName,
28840
- "aria-label": title == null ? ariaLabel : void 0,
28841
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28842
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28885
+ "aria-label": contentAriaLabel,
28886
+ "aria-labelledby": contentAriaLabelledBy,
28887
+ "aria-describedby": contentAriaDescribedBy
28843
28888
  },
28844
28889
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28845
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28890
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28846
28891
  )));
28847
28892
  }
28848
28893
 
@@ -28752,11 +28752,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28752
28752
  fadeFromIndex: void 0
28753
28753
  };
28754
28754
  }
28755
- function VanillaNode({ value, dataAttribute }) {
28755
+ function VanillaNode({
28756
+ value,
28757
+ dataAttribute
28758
+ }) {
28756
28759
  const ref = import_react10.default.useRef(null);
28757
28760
  useSafeLayoutEffect(() => {
28758
28761
  const element = ref.current;
28759
- if (!element) return;
28762
+ if (!element) {
28763
+ return;
28764
+ }
28760
28765
  element.innerHTML = "";
28761
28766
  if (value instanceof HTMLElement) {
28762
28767
  element.appendChild(value);
@@ -28777,6 +28782,19 @@ function VanillaNode({ value, dataAttribute }) {
28777
28782
  }
28778
28783
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28779
28784
  }
28785
+ function readAccessibleTextFromRoot(root, elementId) {
28786
+ if (!root || !elementId) {
28787
+ return void 0;
28788
+ }
28789
+ const elements = Array.from(root.querySelectorAll("[id]"));
28790
+ for (const element of elements) {
28791
+ if (element instanceof HTMLElement && element.id === elementId) {
28792
+ const value = element.textContent?.trim();
28793
+ return value ? value : void 0;
28794
+ }
28795
+ }
28796
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28797
+ }
28780
28798
  function VanillaDrawerRenderer({
28781
28799
  options,
28782
28800
  open,
@@ -28805,16 +28823,43 @@ function VanillaDrawerRenderer({
28805
28823
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28806
28824
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28807
28825
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28826
+ const resolvedContent = import_react10.default.useMemo(() => {
28827
+ if (content instanceof HTMLElement) {
28828
+ return {
28829
+ value: content,
28830
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28831
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28832
+ };
28833
+ }
28834
+ if (typeof content === "function") {
28835
+ const result = content();
28836
+ return {
28837
+ value: result,
28838
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28839
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28840
+ };
28841
+ }
28842
+ return {
28843
+ value: content,
28844
+ proxyTitle: void 0,
28845
+ proxyDescription: void 0
28846
+ };
28847
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28848
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28849
+ const proxyDescription = resolvedContent.proxyDescription;
28850
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28851
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28852
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28808
28853
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28809
28854
  Drawer.Content,
28810
28855
  {
28811
28856
  className: contentClassName,
28812
- "aria-label": title == null ? ariaLabel : void 0,
28813
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28814
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28857
+ "aria-label": contentAriaLabel,
28858
+ "aria-labelledby": contentAriaLabelledBy,
28859
+ "aria-describedby": contentAriaDescribedBy
28815
28860
  },
28816
28861
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28817
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28862
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28818
28863
  )));
28819
28864
  }
28820
28865
 
package/dist/vue/index.js CHANGED
@@ -28780,11 +28780,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28780
28780
  fadeFromIndex: void 0
28781
28781
  };
28782
28782
  }
28783
- function VanillaNode({ value, dataAttribute }) {
28783
+ function VanillaNode({
28784
+ value,
28785
+ dataAttribute
28786
+ }) {
28784
28787
  const ref = import_react10.default.useRef(null);
28785
28788
  useSafeLayoutEffect(() => {
28786
28789
  const element = ref.current;
28787
- if (!element) return;
28790
+ if (!element) {
28791
+ return;
28792
+ }
28788
28793
  element.innerHTML = "";
28789
28794
  if (value instanceof HTMLElement) {
28790
28795
  element.appendChild(value);
@@ -28805,6 +28810,19 @@ function VanillaNode({ value, dataAttribute }) {
28805
28810
  }
28806
28811
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28807
28812
  }
28813
+ function readAccessibleTextFromRoot(root, elementId) {
28814
+ if (!root || !elementId) {
28815
+ return void 0;
28816
+ }
28817
+ const elements = Array.from(root.querySelectorAll("[id]"));
28818
+ for (const element of elements) {
28819
+ if (element instanceof HTMLElement && element.id === elementId) {
28820
+ const value = element.textContent?.trim();
28821
+ return value ? value : void 0;
28822
+ }
28823
+ }
28824
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28825
+ }
28808
28826
  function VanillaDrawerRenderer({
28809
28827
  options,
28810
28828
  open,
@@ -28833,16 +28851,43 @@ function VanillaDrawerRenderer({
28833
28851
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28834
28852
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28835
28853
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28854
+ const resolvedContent = import_react10.default.useMemo(() => {
28855
+ if (content instanceof HTMLElement) {
28856
+ return {
28857
+ value: content,
28858
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28859
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28860
+ };
28861
+ }
28862
+ if (typeof content === "function") {
28863
+ const result = content();
28864
+ return {
28865
+ value: result,
28866
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28867
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28868
+ };
28869
+ }
28870
+ return {
28871
+ value: content,
28872
+ proxyTitle: void 0,
28873
+ proxyDescription: void 0
28874
+ };
28875
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28876
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28877
+ const proxyDescription = resolvedContent.proxyDescription;
28878
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28879
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28880
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28836
28881
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28837
28882
  Drawer.Content,
28838
28883
  {
28839
28884
  className: contentClassName,
28840
- "aria-label": title == null ? ariaLabel : void 0,
28841
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28842
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28885
+ "aria-label": contentAriaLabel,
28886
+ "aria-labelledby": contentAriaLabelledBy,
28887
+ "aria-describedby": contentAriaDescribedBy
28843
28888
  },
28844
28889
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28845
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28890
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28846
28891
  )));
28847
28892
  }
28848
28893
 
@@ -28755,11 +28755,16 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
28755
28755
  fadeFromIndex: void 0
28756
28756
  };
28757
28757
  }
28758
- function VanillaNode({ value, dataAttribute }) {
28758
+ function VanillaNode({
28759
+ value,
28760
+ dataAttribute
28761
+ }) {
28759
28762
  const ref = import_react10.default.useRef(null);
28760
28763
  useSafeLayoutEffect(() => {
28761
28764
  const element = ref.current;
28762
- if (!element) return;
28765
+ if (!element) {
28766
+ return;
28767
+ }
28763
28768
  element.innerHTML = "";
28764
28769
  if (value instanceof HTMLElement) {
28765
28770
  element.appendChild(value);
@@ -28780,6 +28785,19 @@ function VanillaNode({ value, dataAttribute }) {
28780
28785
  }
28781
28786
  return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
28782
28787
  }
28788
+ function readAccessibleTextFromRoot(root, elementId) {
28789
+ if (!root || !elementId) {
28790
+ return void 0;
28791
+ }
28792
+ const elements = Array.from(root.querySelectorAll("[id]"));
28793
+ for (const element of elements) {
28794
+ if (element instanceof HTMLElement && element.id === elementId) {
28795
+ const value = element.textContent?.trim();
28796
+ return value ? value : void 0;
28797
+ }
28798
+ }
28799
+ return root.id === elementId ? root.textContent?.trim() || void 0 : void 0;
28800
+ }
28783
28801
  function VanillaDrawerRenderer({
28784
28802
  options,
28785
28803
  open,
@@ -28808,16 +28826,43 @@ function VanillaDrawerRenderer({
28808
28826
  const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
28809
28827
  const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
28810
28828
  const shouldRenderVanillaContent = title != null || description != null || content != null;
28829
+ const resolvedContent = import_react10.default.useMemo(() => {
28830
+ if (content instanceof HTMLElement) {
28831
+ return {
28832
+ value: content,
28833
+ proxyTitle: title == null ? readAccessibleTextFromRoot(content, ariaLabelledBy) : void 0,
28834
+ proxyDescription: description == null ? readAccessibleTextFromRoot(content, ariaDescribedBy) : void 0
28835
+ };
28836
+ }
28837
+ if (typeof content === "function") {
28838
+ const result = content();
28839
+ return {
28840
+ value: result,
28841
+ proxyTitle: title == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaLabelledBy) : void 0,
28842
+ proxyDescription: description == null && result instanceof HTMLElement ? readAccessibleTextFromRoot(result, ariaDescribedBy) : void 0
28843
+ };
28844
+ }
28845
+ return {
28846
+ value: content,
28847
+ proxyTitle: void 0,
28848
+ proxyDescription: void 0
28849
+ };
28850
+ }, [ariaDescribedBy, ariaLabelledBy, content, description, title]);
28851
+ const proxyTitle = resolvedContent.proxyTitle ?? (title == null ? ariaLabel : void 0);
28852
+ const proxyDescription = resolvedContent.proxyDescription;
28853
+ const contentAriaLabel = title == null && !proxyTitle ? ariaLabel : void 0;
28854
+ const contentAriaLabelledBy = title == null && !proxyTitle ? ariaLabelledBy : void 0;
28855
+ const contentAriaDescribedBy = description == null && !proxyDescription ? ariaDescribedBy : void 0;
28811
28856
  return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
28812
28857
  Drawer.Content,
28813
28858
  {
28814
28859
  className: contentClassName,
28815
- "aria-label": title == null ? ariaLabel : void 0,
28816
- "aria-labelledby": title == null ? ariaLabelledBy : void 0,
28817
- "aria-describedby": description == null ? ariaDescribedBy : void 0
28860
+ "aria-label": contentAriaLabel,
28861
+ "aria-labelledby": contentAriaLabelledBy,
28862
+ "aria-describedby": contentAriaDescribedBy
28818
28863
  },
28819
28864
  shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
28820
- shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
28865
+ shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, proxyTitle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: VISUALLY_HIDDEN_STYLE }, proxyTitle) : null, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, proxyDescription ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: VISUALLY_HIDDEN_STYLE }, proxyDescription) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-body": "" }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: resolvedContent.value }))) : null
28821
28866
  )));
28822
28867
  }
28823
28868
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samline/drawer",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "A universal drawer package for React, Vue, Svelte, vanilla JS, and browser usage.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",