@vertz/ui-primitives 0.2.20 → 0.2.22

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 (105) hide show
  1. package/dist/shared/{chunk-bew4bjgf.js → chunk-07yzsaaw.js} +5 -5
  2. package/dist/shared/{chunk-yr9yzpvq.js → chunk-279bzynx.js} +83 -58
  3. package/dist/shared/{chunk-sqs8kyb2.js → chunk-27xs9apd.js} +5 -5
  4. package/dist/shared/{chunk-dpsgb1xw.js → chunk-2db2dnp3.js} +6 -2
  5. package/dist/shared/{chunk-8ak7vdk1.js → chunk-2k8gxzdf.js} +5 -5
  6. package/dist/shared/{chunk-t1vkvsz2.js → chunk-3rp73gkd.js} +5 -5
  7. package/dist/shared/{chunk-7ffg0caj.js → chunk-4rf1m34c.js} +8 -6
  8. package/dist/shared/{chunk-gkddsbmh.js → chunk-56reyd5r.js} +22 -31
  9. package/dist/shared/{chunk-jctqs9m4.js → chunk-7867pr13.js} +36 -12
  10. package/dist/shared/{chunk-n9nwx58j.js → chunk-7bxsf80c.js} +4 -4
  11. package/dist/shared/{chunk-7krvqrwq.js → chunk-8qtexw5s.js} +36 -14
  12. package/dist/shared/{chunk-m1ptgp1s.js → chunk-9ezgd78r.js} +7 -7
  13. package/dist/shared/{chunk-kg27s15c.js → chunk-ajpj10z0.js} +5 -5
  14. package/dist/shared/{chunk-tfyg0qrp.js → chunk-c46v0fsw.js} +6 -6
  15. package/dist/shared/{chunk-96d9nr7y.js → chunk-dhyr0s9n.js} +1 -1
  16. package/dist/shared/{chunk-avxcmmk6.js → chunk-e4mm5e59.js} +7 -7
  17. package/dist/shared/{chunk-gt0wth9h.js → chunk-fqa5bwn1.js} +3 -3
  18. package/dist/shared/{chunk-x0we8gcy.js → chunk-g8hnc95b.js} +5 -5
  19. package/dist/shared/chunk-j2tdpxgc.js +185 -0
  20. package/dist/shared/{chunk-x2hz98qn.js → chunk-jda3v59q.js} +2 -2
  21. package/dist/shared/{chunk-18y8gfk0.js → chunk-k8nabsxm.js} +115 -93
  22. package/dist/shared/{chunk-j4cm8avr.js → chunk-kcnq15je.js} +5 -5
  23. package/dist/shared/{chunk-4da5zksy.js → chunk-mqs4qq0b.js} +2 -2
  24. package/dist/shared/{chunk-9hj9p7s2.js → chunk-myq79qew.js} +37 -31
  25. package/dist/shared/{chunk-ppcv3ehd.js → chunk-pg2yjn8f.js} +15 -12
  26. package/dist/shared/{chunk-hr9hx58m.js → chunk-rb53v045.js} +4 -4
  27. package/dist/shared/{chunk-ttsyf6ma.js → chunk-s6a2yph8.js} +5 -5
  28. package/dist/shared/{chunk-vvjyx7fe.js → chunk-vevfhpc9.js} +1 -1
  29. package/dist/shared/{chunk-4085nbdq.js → chunk-vhx3sqw6.js} +5 -5
  30. package/dist/shared/{chunk-34yfm2b0.js → chunk-w318par6.js} +106 -84
  31. package/dist/shared/chunk-w9dag6ce.js +237 -0
  32. package/dist/shared/{chunk-g9qvd20g.js → chunk-wcdq7bew.js} +3 -3
  33. package/dist/shared/{chunk-rnjm61t0.js → chunk-z0gwkzgp.js} +3 -3
  34. package/dist/shared/{chunk-jz0s6srh.js → chunk-z850et33.js} +1 -1
  35. package/dist/shared/{chunk-7kpsyjd7.js → chunk-zyfc6cx3.js} +4 -4
  36. package/dist/src/accordion/accordion.d.ts +2 -0
  37. package/dist/src/accordion/accordion.js +1 -5
  38. package/dist/src/alert-dialog/alert-dialog.d.ts +7 -7
  39. package/dist/src/alert-dialog/alert-dialog.js +1 -4
  40. package/dist/src/badge/badge.d.ts +2 -0
  41. package/dist/src/badge/badge.js +1 -3
  42. package/dist/src/button/button.d.ts +2 -0
  43. package/dist/src/button/button.js +1 -3
  44. package/dist/src/calendar/calendar.d.ts +9 -6
  45. package/dist/src/calendar/calendar.js +1 -2
  46. package/dist/src/carousel/carousel.d.ts +2 -0
  47. package/dist/src/carousel/carousel.js +1 -4
  48. package/dist/src/checkbox/checkbox.d.ts +2 -0
  49. package/dist/src/checkbox/checkbox.js +1 -4
  50. package/dist/src/collapsible/collapsible.d.ts +2 -0
  51. package/dist/src/collapsible/collapsible.js +1 -4
  52. package/dist/src/combobox/combobox.d.ts +2 -0
  53. package/dist/src/combobox/combobox.js +1 -5
  54. package/dist/src/command/command.d.ts +2 -0
  55. package/dist/src/command/command.js +1 -5
  56. package/dist/src/context-menu/context-menu.d.ts +2 -0
  57. package/dist/src/context-menu/context-menu.js +1 -7
  58. package/dist/src/date-picker/date-picker.d.ts +6 -6
  59. package/dist/src/date-picker/date-picker.js +1 -10
  60. package/dist/src/dialog/dialog.d.ts +3 -0
  61. package/dist/src/dialog/dialog.js +1 -6
  62. package/dist/src/dropdown-menu/dropdown-menu.d.ts +3 -0
  63. package/dist/src/dropdown-menu/dropdown-menu.js +1 -8
  64. package/dist/src/hover-card/hover-card.d.ts +2 -0
  65. package/dist/src/hover-card/hover-card.js +1 -6
  66. package/dist/src/index.d.ts +906 -34
  67. package/dist/src/index.js +5183 -39
  68. package/dist/src/menu/menu.d.ts +3 -0
  69. package/dist/src/menu/menu.js +1 -7
  70. package/dist/src/menubar/menubar.d.ts +2 -0
  71. package/dist/src/menubar/menubar.js +1 -8
  72. package/dist/src/navigation-menu/navigation-menu.d.ts +7 -5
  73. package/dist/src/navigation-menu/navigation-menu.js +1 -6
  74. package/dist/src/popover/popover.d.ts +2 -0
  75. package/dist/src/popover/popover.js +1 -8
  76. package/dist/src/progress/progress.d.ts +4 -2
  77. package/dist/src/progress/progress.js +1 -4
  78. package/dist/src/radio/radio.d.ts +9 -3
  79. package/dist/src/radio/radio.js +1 -6
  80. package/dist/src/resizable-panel/resizable-panel.d.ts +2 -0
  81. package/dist/src/resizable-panel/resizable-panel.js +1 -4
  82. package/dist/src/scroll-area/scroll-area.d.ts +2 -0
  83. package/dist/src/scroll-area/scroll-area.js +1 -2
  84. package/dist/src/select/select.d.ts +2 -0
  85. package/dist/src/select/select.js +1 -7
  86. package/dist/src/sheet/sheet.js +1 -5
  87. package/dist/src/slider/slider.d.ts +2 -0
  88. package/dist/src/slider/slider.js +1 -5
  89. package/dist/src/switch/switch.d.ts +2 -0
  90. package/dist/src/switch/switch.js +1 -4
  91. package/dist/src/tabs/tabs.d.ts +7 -4
  92. package/dist/src/tabs/tabs.js +1 -6
  93. package/dist/src/toast/toast.d.ts +2 -0
  94. package/dist/src/toast/toast.js +1 -4
  95. package/dist/src/toggle/toggle.d.ts +2 -0
  96. package/dist/src/toggle/toggle.js +1 -4
  97. package/dist/src/toggle-group/toggle-group.d.ts +2 -0
  98. package/dist/src/toggle-group/toggle-group.js +1 -5
  99. package/dist/src/tooltip/tooltip.d.ts +3 -1
  100. package/dist/src/tooltip/tooltip.js +1 -6
  101. package/dist/src/utils.d.ts +62 -2
  102. package/dist/src/utils.js +50 -3
  103. package/package.json +4 -6
  104. package/dist/shared/chunk-8nk0ya7a.js +0 -163
  105. package/dist/shared/chunk-8tvzqry6.js +0 -218
@@ -4,29 +4,60 @@ import {
4
4
  import {
5
5
  Keys,
6
6
  isKey
7
- } from "./chunk-jctqs9m4.js";
7
+ } from "./chunk-7867pr13.js";
8
8
  import {
9
9
  setDataState,
10
10
  setDescribedBy,
11
11
  setHidden,
12
12
  setHiddenAnimated
13
- } from "./chunk-vvjyx7fe.js";
14
- import {
15
- applyAttrs
16
- } from "./chunk-dpsgb1xw.js";
13
+ } from "./chunk-vevfhpc9.js";
17
14
  import {
18
15
  uniqueId
19
16
  } from "./chunk-8y1jf6xr.js";
17
+ import {
18
+ applyAttrs
19
+ } from "./chunk-2db2dnp3.js";
20
20
 
21
21
  // src/tooltip/tooltip.tsx
22
22
  import { __element, __on } from "@vertz/ui/internals";
23
23
  import { signal } from "@vertz/ui";
24
+ function TooltipTrigger(show, hide) {
25
+ return (() => {
26
+ const __el0 = __element("span");
27
+ __on(__el0, "mouseenter", show);
28
+ __on(__el0, "mouseleave", hide);
29
+ __on(__el0, "focus", show);
30
+ __on(__el0, "blur", hide);
31
+ __on(__el0, "keydown", (event) => {
32
+ if (isKey(event, Keys.Escape)) {
33
+ hide();
34
+ }
35
+ });
36
+ return __el0;
37
+ })();
38
+ }
39
+ function TooltipContent(contentId) {
40
+ return (() => {
41
+ const __el0 = __element("div");
42
+ __el0.setAttribute("role", "tooltip");
43
+ {
44
+ const __v = contentId;
45
+ if (__v != null && __v !== false)
46
+ __el0.setAttribute("id", __v === true ? "" : __v);
47
+ }
48
+ __el0.setAttribute("aria-hidden", "true");
49
+ __el0.setAttribute("data-state", "closed");
50
+ __el0.setAttribute("style", "display: none");
51
+ return __el0;
52
+ })();
53
+ }
24
54
  function TooltipRoot(options = {}) {
25
55
  const { delay = 300, onOpenChange, positioning, ...attrs } = options;
26
56
  const contentId = uniqueId("tooltip");
27
57
  const state = { open: signal(false) };
28
58
  let showTimeout = null;
29
59
  let floatingCleanup = null;
60
+ const content = TooltipContent(contentId);
30
61
  function show() {
31
62
  if (showTimeout !== null)
32
63
  return;
@@ -58,33 +89,8 @@ function TooltipRoot(options = {}) {
58
89
  floatingCleanup = null;
59
90
  onOpenChange?.(false);
60
91
  }
61
- const trigger = (() => {
62
- const __el0 = __element("span");
63
- __on(__el0, "mouseenter", show);
64
- __on(__el0, "mouseleave", hide);
65
- __on(__el0, "focus", show);
66
- __on(__el0, "blur", hide);
67
- __on(__el0, "keydown", (event) => {
68
- if (isKey(event, Keys.Escape)) {
69
- hide();
70
- }
71
- });
72
- return __el0;
73
- })();
92
+ const trigger = TooltipTrigger(show, hide);
74
93
  setDescribedBy(trigger, contentId);
75
- const content = (() => {
76
- const __el1 = __element("div");
77
- __el1.setAttribute("role", "tooltip");
78
- {
79
- const __v = contentId;
80
- if (__v != null && __v !== false)
81
- __el1.setAttribute("id", __v === true ? "" : __v);
82
- }
83
- __el1.setAttribute("aria-hidden", "true");
84
- __el1.setAttribute("data-state", "closed");
85
- __el1.setAttribute("style", "display: none");
86
- return __el1;
87
- })();
88
94
  applyAttrs(trigger, attrs);
89
95
  return { trigger, content, state };
90
96
  }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  setDataState
3
- } from "./chunk-vvjyx7fe.js";
4
- import {
5
- applyAttrs
6
- } from "./chunk-dpsgb1xw.js";
3
+ } from "./chunk-vevfhpc9.js";
7
4
  import {
8
5
  uniqueId
9
6
  } from "./chunk-8y1jf6xr.js";
7
+ import {
8
+ applyAttrs
9
+ } from "./chunk-2db2dnp3.js";
10
10
 
11
11
  // src/progress/progress.tsx
12
- import { __append, __element, __enterChildren, __exitChildren } from "@vertz/ui/internals";
12
+ import { __append, __element, __enterChildren, __exitChildren, __styleStr } from "@vertz/ui/internals";
13
13
  import { ref, signal } from "@vertz/ui";
14
14
  function dataStateFor(pct) {
15
15
  if (pct >= 100)
@@ -18,12 +18,8 @@ function dataStateFor(pct) {
18
18
  return "loading";
19
19
  return "idle";
20
20
  }
21
- function ProgressRoot(options = {}) {
22
- const { defaultValue = 0, min = 0, max = 100, ...attrs } = options;
23
- const state = { value: signal(defaultValue) };
24
- const indicatorRef = ref();
25
- const initialPct = (defaultValue - min) / (max - min) * 100;
26
- const root = (() => {
21
+ function ProgressBar(defaultValue, min, max, initialPct, indicatorRef) {
22
+ return (() => {
27
23
  const __el0 = __element("div");
28
24
  __el0.setAttribute("role", "progressbar");
29
25
  {
@@ -59,13 +55,20 @@ function ProgressRoot(options = {}) {
59
55
  {
60
56
  const __v = `width: ${initialPct}%`;
61
57
  if (__v != null && __v !== false)
62
- __el1.setAttribute("style", __v === true ? "" : __v);
58
+ __el1.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
63
59
  }
64
60
  return __el1;
65
61
  })());
66
62
  __exitChildren();
67
63
  return __el0;
68
64
  })();
65
+ }
66
+ function ProgressRoot(options = {}) {
67
+ const { defaultValue = 0, min = 0, max = 100, ...attrs } = options;
68
+ const state = { value: signal(defaultValue) };
69
+ const indicatorRef = ref();
70
+ const initialPct = (defaultValue - min) / (max - min) * 100;
71
+ const root = ProgressBar(defaultValue, min, max, initialPct, indicatorRef);
69
72
  const indicator = indicatorRef.current;
70
73
  applyAttrs(root, attrs);
71
74
  function setValue(val) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  Keys,
3
3
  isKey
4
- } from "./chunk-jctqs9m4.js";
5
- import {
6
- applyAttrs
7
- } from "./chunk-dpsgb1xw.js";
4
+ } from "./chunk-7867pr13.js";
8
5
  import {
9
6
  uniqueId
10
7
  } from "./chunk-8y1jf6xr.js";
8
+ import {
9
+ applyAttrs
10
+ } from "./chunk-2db2dnp3.js";
11
11
 
12
12
  // src/checkbox/checkbox.tsx
13
13
  import { computed, signal } from "@vertz/ui";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  Keys,
3
3
  isKey
4
- } from "./chunk-jctqs9m4.js";
4
+ } from "./chunk-7867pr13.js";
5
5
  import {
6
6
  setHidden
7
- } from "./chunk-vvjyx7fe.js";
8
- import {
9
- applyAttrs
10
- } from "./chunk-dpsgb1xw.js";
7
+ } from "./chunk-vevfhpc9.js";
11
8
  import {
12
9
  uniqueId
13
10
  } from "./chunk-8y1jf6xr.js";
11
+ import {
12
+ applyAttrs
13
+ } from "./chunk-2db2dnp3.js";
14
14
 
15
15
  // src/command/command.tsx
16
16
  import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
@@ -1,5 +1,5 @@
1
1
  // src/utils/aria.ts
2
- import { onAnimationsComplete } from "@vertz/ui/internals";
2
+ import { onAnimationsComplete } from "@vertz/ui";
3
3
  var hideGeneration = new WeakMap;
4
4
  function setExpanded(el, expanded) {
5
5
  el.setAttribute("aria-expanded", String(expanded));
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  Keys,
3
3
  isKey
4
- } from "./chunk-jctqs9m4.js";
4
+ } from "./chunk-7867pr13.js";
5
5
  import {
6
6
  setDataState,
7
7
  setExpanded,
8
8
  setHidden,
9
9
  setHiddenAnimated,
10
10
  setSelected
11
- } from "./chunk-vvjyx7fe.js";
12
- import {
13
- applyAttrs
14
- } from "./chunk-dpsgb1xw.js";
11
+ } from "./chunk-vevfhpc9.js";
15
12
  import {
16
13
  linkedIds
17
14
  } from "./chunk-8y1jf6xr.js";
15
+ import {
16
+ applyAttrs
17
+ } from "./chunk-2db2dnp3.js";
18
18
 
19
19
  // src/combobox/combobox.tsx
20
20
  import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
@@ -7,59 +7,25 @@ import {
7
7
  setExpanded,
8
8
  setHidden,
9
9
  setHiddenAnimated
10
- } from "./chunk-vvjyx7fe.js";
10
+ } from "./chunk-vevfhpc9.js";
11
11
  import {
12
12
  linkedIds
13
13
  } from "./chunk-8y1jf6xr.js";
14
14
 
15
15
  // src/alert-dialog/alert-dialog.tsx
16
- import { __element, __on } from "@vertz/ui/internals";
16
+ import { __element, __on, __styleStr } from "@vertz/ui/internals";
17
17
  import { signal } from "@vertz/ui";
18
- function AlertDialogRoot(options = {}) {
19
- const { defaultOpen = false, onOpenChange, onAction } = options;
20
- const ids = linkedIds("alertdialog");
21
- const titleId = `${ids.contentId}-title`;
22
- const descriptionId = `${ids.contentId}-description`;
23
- const state = { open: signal(defaultOpen) };
24
- let restoreFocus = null;
25
- let removeTrap = null;
26
- function show() {
27
- state.open.value = true;
28
- setExpanded(trigger, true);
29
- setHidden(overlay, false);
30
- setHidden(content, false);
31
- setDataState(trigger, "open");
32
- setDataState(overlay, "open");
33
- setDataState(content, "open");
34
- restoreFocus = saveFocus();
35
- removeTrap = trapFocus(content);
36
- queueMicrotask(() => cancel.focus());
37
- onOpenChange?.(true);
38
- }
39
- function hide() {
40
- state.open.value = false;
41
- setExpanded(trigger, false);
42
- setDataState(trigger, "closed");
43
- setDataState(overlay, "closed");
44
- setDataState(content, "closed");
45
- setHiddenAnimated(overlay, true);
46
- setHiddenAnimated(content, true);
47
- removeTrap?.();
48
- removeTrap = null;
49
- restoreFocus?.();
50
- restoreFocus = null;
51
- onOpenChange?.(false);
52
- }
53
- const trigger = (() => {
18
+ function AlertDialogTriggerEl(triggerId, contentId, defaultOpen, onClick) {
19
+ return (() => {
54
20
  const __el0 = __element("button");
55
21
  __el0.setAttribute("type", "button");
56
22
  {
57
- const __v = ids.triggerId;
23
+ const __v = triggerId;
58
24
  if (__v != null && __v !== false)
59
25
  __el0.setAttribute("id", __v === true ? "" : __v);
60
26
  }
61
27
  {
62
- const __v = ids.contentId;
28
+ const __v = contentId;
63
29
  if (__v != null && __v !== false)
64
30
  __el0.setAttribute("aria-controls", __v === true ? "" : __v);
65
31
  }
@@ -73,101 +39,157 @@ function AlertDialogRoot(options = {}) {
73
39
  if (__v != null && __v !== false)
74
40
  __el0.setAttribute("data-state", __v === true ? "" : __v);
75
41
  }
76
- __on(__el0, "click", () => {
77
- if (!state.open.peek())
78
- show();
79
- });
42
+ __on(__el0, "click", onClick);
80
43
  return __el0;
81
44
  })();
82
- const overlay = (() => {
83
- const __el1 = __element("div");
84
- __el1.setAttribute("data-alertdialog-overlay", "");
45
+ }
46
+ function AlertDialogOverlayEl(defaultOpen) {
47
+ return (() => {
48
+ const __el0 = __element("div");
49
+ __el0.setAttribute("data-alertdialog-overlay", "");
85
50
  {
86
51
  const __v = defaultOpen ? "false" : "true";
87
52
  if (__v != null && __v !== false)
88
- __el1.setAttribute("aria-hidden", __v === true ? "" : __v);
53
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
89
54
  }
90
55
  {
91
56
  const __v = defaultOpen ? "open" : "closed";
92
57
  if (__v != null && __v !== false)
93
- __el1.setAttribute("data-state", __v === true ? "" : __v);
58
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
94
59
  }
95
60
  {
96
61
  const __v = defaultOpen ? "" : "display: none";
97
62
  if (__v != null && __v !== false)
98
- __el1.setAttribute("style", __v === true ? "" : __v);
63
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
99
64
  }
100
- return __el1;
65
+ return __el0;
101
66
  })();
102
- const content = (() => {
103
- const __el2 = __element("div");
104
- __el2.setAttribute("role", "alertdialog");
67
+ }
68
+ function AlertDialogContentEl(contentId, titleId, descriptionId, defaultOpen) {
69
+ return (() => {
70
+ const __el0 = __element("div");
71
+ __el0.setAttribute("role", "alertdialog");
105
72
  {
106
- const __v = ids.contentId;
73
+ const __v = contentId;
107
74
  if (__v != null && __v !== false)
108
- __el2.setAttribute("id", __v === true ? "" : __v);
75
+ __el0.setAttribute("id", __v === true ? "" : __v);
109
76
  }
110
- __el2.setAttribute("aria-modal", "true");
77
+ __el0.setAttribute("aria-modal", "true");
111
78
  {
112
79
  const __v = titleId;
113
80
  if (__v != null && __v !== false)
114
- __el2.setAttribute("aria-labelledby", __v === true ? "" : __v);
81
+ __el0.setAttribute("aria-labelledby", __v === true ? "" : __v);
115
82
  }
116
83
  {
117
84
  const __v = descriptionId;
118
85
  if (__v != null && __v !== false)
119
- __el2.setAttribute("aria-describedby", __v === true ? "" : __v);
86
+ __el0.setAttribute("aria-describedby", __v === true ? "" : __v);
120
87
  }
121
88
  {
122
89
  const __v = defaultOpen ? "false" : "true";
123
90
  if (__v != null && __v !== false)
124
- __el2.setAttribute("aria-hidden", __v === true ? "" : __v);
91
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
125
92
  }
126
93
  {
127
94
  const __v = defaultOpen ? "open" : "closed";
128
95
  if (__v != null && __v !== false)
129
- __el2.setAttribute("data-state", __v === true ? "" : __v);
96
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
130
97
  }
131
98
  {
132
99
  const __v = defaultOpen ? "" : "display: none";
133
100
  if (__v != null && __v !== false)
134
- __el2.setAttribute("style", __v === true ? "" : __v);
101
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
135
102
  }
136
- return __el2;
103
+ return __el0;
137
104
  })();
138
- const title = (() => {
139
- const __el3 = __element("h2");
105
+ }
106
+ function AlertDialogTitleEl(titleId) {
107
+ return (() => {
108
+ const __el0 = __element("h2");
140
109
  {
141
110
  const __v = titleId;
142
111
  if (__v != null && __v !== false)
143
- __el3.setAttribute("id", __v === true ? "" : __v);
112
+ __el0.setAttribute("id", __v === true ? "" : __v);
144
113
  }
145
- return __el3;
114
+ return __el0;
146
115
  })();
147
- const description = (() => {
148
- const __el4 = __element("p");
116
+ }
117
+ function AlertDialogDescriptionEl(descriptionId) {
118
+ return (() => {
119
+ const __el0 = __element("p");
149
120
  {
150
121
  const __v = descriptionId;
151
122
  if (__v != null && __v !== false)
152
- __el4.setAttribute("id", __v === true ? "" : __v);
123
+ __el0.setAttribute("id", __v === true ? "" : __v);
153
124
  }
154
- return __el4;
125
+ return __el0;
155
126
  })();
156
- const cancel = (() => {
157
- const __el5 = __element("button");
158
- __el5.setAttribute("type", "button");
159
- __on(__el5, "click", () => hide());
160
- return __el5;
127
+ }
128
+ function AlertDialogCancelBtn(onClick) {
129
+ return (() => {
130
+ const __el0 = __element("button");
131
+ __el0.setAttribute("type", "button");
132
+ __on(__el0, "click", onClick);
133
+ return __el0;
161
134
  })();
162
- const action = (() => {
163
- const __el6 = __element("button");
164
- __el6.setAttribute("type", "button");
165
- __on(__el6, "click", () => {
166
- onAction?.();
167
- hide();
168
- });
169
- return __el6;
135
+ }
136
+ function AlertDialogActionBtn(onClick) {
137
+ return (() => {
138
+ const __el0 = __element("button");
139
+ __el0.setAttribute("type", "button");
140
+ __on(__el0, "click", onClick);
141
+ return __el0;
170
142
  })();
143
+ }
144
+ function AlertDialogRoot(options = {}) {
145
+ const { defaultOpen = false, onOpenChange, onAction } = options;
146
+ const ids = linkedIds("alertdialog");
147
+ const titleId = `${ids.contentId}-title`;
148
+ const descriptionId = `${ids.contentId}-description`;
149
+ const state = { open: signal(defaultOpen) };
150
+ let restoreFocus = null;
151
+ let removeTrap = null;
152
+ function show() {
153
+ if (state.open.peek())
154
+ return;
155
+ state.open.value = true;
156
+ setExpanded(trigger, true);
157
+ setHidden(overlay, false);
158
+ setHidden(content, false);
159
+ setDataState(trigger, "open");
160
+ setDataState(overlay, "open");
161
+ setDataState(content, "open");
162
+ restoreFocus = saveFocus();
163
+ removeTrap = trapFocus(content);
164
+ queueMicrotask(() => cancel.focus());
165
+ onOpenChange?.(true);
166
+ }
167
+ function hide() {
168
+ if (!state.open.peek())
169
+ return;
170
+ state.open.value = false;
171
+ setExpanded(trigger, false);
172
+ setDataState(trigger, "closed");
173
+ setDataState(overlay, "closed");
174
+ setDataState(content, "closed");
175
+ setHiddenAnimated(overlay, true);
176
+ setHiddenAnimated(content, true);
177
+ removeTrap?.();
178
+ removeTrap = null;
179
+ restoreFocus?.();
180
+ restoreFocus = null;
181
+ onOpenChange?.(false);
182
+ }
183
+ const trigger = AlertDialogTriggerEl(ids.triggerId, ids.contentId, defaultOpen, show);
184
+ const overlay = AlertDialogOverlayEl(defaultOpen);
185
+ const content = AlertDialogContentEl(ids.contentId, titleId, descriptionId, defaultOpen);
186
+ const title = AlertDialogTitleEl(titleId);
187
+ const description = AlertDialogDescriptionEl(descriptionId);
188
+ const cancel = AlertDialogCancelBtn(() => hide());
189
+ const action = AlertDialogActionBtn(() => {
190
+ onAction?.();
191
+ hide();
192
+ });
171
193
  if (defaultOpen) {
172
194
  restoreFocus = saveFocus();
173
195
  removeTrap = trapFocus(content);