@octanejs/radix 0.1.32 → 0.1.33

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 (60) hide show
  1. package/dist/cjs/AccessibleIcon.cjs +56 -0
  2. package/dist/cjs/Accordion.cjs +272 -0
  3. package/dist/cjs/AlertDialog.cjs +144 -0
  4. package/dist/cjs/Arrow.cjs +43 -0
  5. package/dist/cjs/AspectRatio.cjs +56 -0
  6. package/dist/cjs/Avatar.cjs +150 -0
  7. package/dist/cjs/Checkbox.cjs +281 -0
  8. package/dist/cjs/Collapsible.cjs +176 -0
  9. package/dist/cjs/ContextMenu.cjs +315 -0
  10. package/dist/cjs/Dialog.cjs +291 -0
  11. package/dist/cjs/DismissableLayer.cjs +382 -0
  12. package/dist/cjs/DropdownMenu.cjs +296 -0
  13. package/dist/cjs/FocusScope.cjs +257 -0
  14. package/dist/cjs/Form.cjs +537 -0
  15. package/dist/cjs/HoverCard.cjs +309 -0
  16. package/dist/cjs/Label.cjs +42 -0
  17. package/dist/cjs/Menu.cjs +925 -0
  18. package/dist/cjs/Menubar.cjs +475 -0
  19. package/dist/cjs/NavigationMenu.cjs +942 -0
  20. package/dist/cjs/OneTimePasswordField.cjs +729 -0
  21. package/dist/cjs/PasswordToggleField.cjs +377 -0
  22. package/dist/cjs/Popover.cjs +340 -0
  23. package/dist/cjs/Popper.cjs +368 -0
  24. package/dist/cjs/Portal.cjs +40 -0
  25. package/dist/cjs/Presence.cjs +183 -0
  26. package/dist/cjs/Primitive.cjs +63 -0
  27. package/dist/cjs/Progress.cjs +111 -0
  28. package/dist/cjs/Radio.cjs +240 -0
  29. package/dist/cjs/RadioGroup.cjs +216 -0
  30. package/dist/cjs/RovingFocusGroup.cjs +253 -0
  31. package/dist/cjs/ScrollArea.cjs +828 -0
  32. package/dist/cjs/Select.cjs +1429 -0
  33. package/dist/cjs/Separator.cjs +51 -0
  34. package/dist/cjs/Slider.cjs +634 -0
  35. package/dist/cjs/Slot.cjs +97 -0
  36. package/dist/cjs/Switch.cjs +253 -0
  37. package/dist/cjs/Tabs.cjs +195 -0
  38. package/dist/cjs/Toast.cjs +733 -0
  39. package/dist/cjs/Toggle.cjs +54 -0
  40. package/dist/cjs/ToggleGroup.cjs +174 -0
  41. package/dist/cjs/Toolbar.cjs +165 -0
  42. package/dist/cjs/Tooltip.cjs +628 -0
  43. package/dist/cjs/VisuallyHidden.cjs +52 -0
  44. package/dist/cjs/collection.cjs +95 -0
  45. package/dist/cjs/compose-event-handlers.cjs +35 -0
  46. package/dist/cjs/compose-refs.cjs +68 -0
  47. package/dist/cjs/context.cjs +96 -0
  48. package/dist/cjs/direction.cjs +41 -0
  49. package/dist/cjs/focus-guards.cjs +76 -0
  50. package/dist/cjs/index.cjs +174 -0
  51. package/dist/cjs/internal.cjs +51 -0
  52. package/dist/cjs/scroll-lock.cjs +67 -0
  53. package/dist/cjs/use-callback-ref.cjs +47 -0
  54. package/dist/cjs/use-effect-event.cjs +52 -0
  55. package/dist/cjs/use-is-hydrated.cjs +43 -0
  56. package/dist/cjs/use-previous.cjs +47 -0
  57. package/dist/cjs/use-size.cjs +69 -0
  58. package/dist/cjs/useControllableState.cjs +80 -0
  59. package/dist/cjs/useId.cjs +36 -0
  60. package/package.json +14 -7
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var Popover_exports = {};
30
+ __export(Popover_exports, {
31
+ Anchor: () => Anchor,
32
+ Arrow: () => Arrow,
33
+ Close: () => Close,
34
+ Content: () => Content,
35
+ Popover: () => Root,
36
+ PopoverAnchor: () => Anchor,
37
+ PopoverTrigger: () => Trigger,
38
+ Portal: () => Portal,
39
+ Root: () => Root,
40
+ Trigger: () => Trigger,
41
+ createPopoverScope: () => createPopoverScope
42
+ });
43
+ module.exports = __toCommonJS(Popover_exports);
44
+ var import_octane = require("octane");
45
+ var import_aria_hidden = require("aria-hidden");
46
+ var import_compose_event_handlers = require("./compose-event-handlers.cjs");
47
+ var import_compose_refs = require("./compose-refs.cjs");
48
+ var import_context = require("./context.cjs");
49
+ var import_DismissableLayer = require("./DismissableLayer.cjs");
50
+ var import_FocusScope = require("./FocusScope.cjs");
51
+ var import_focus_guards = require("./focus-guards.cjs");
52
+ var import_internal = require("./internal.cjs");
53
+ var PopperPrimitive = __toESM(require("./Popper.cjs"), 1);
54
+ var import_Popper = require("./Popper.cjs");
55
+ var import_Portal = require("./Portal.cjs");
56
+ var import_Presence = require("./Presence.cjs");
57
+ var import_Primitive = require("./Primitive.cjs");
58
+ var import_scroll_lock = require("./scroll-lock.cjs");
59
+ var import_useControllableState = require("./useControllableState.cjs");
60
+ var import_useId = require("./useId.cjs");
61
+ const POPOVER_NAME = "Popover";
62
+ const [createPopoverContext, createPopoverScope] = (0, import_context.createContextScope)(POPOVER_NAME, [
63
+ import_Popper.createPopperScope
64
+ ]);
65
+ const usePopperScope = (0, import_Popper.createPopperScope)();
66
+ const [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);
67
+ function Root(props) {
68
+ const slot = (0, import_internal.S)("Popover.Root");
69
+ const {
70
+ __scopePopover,
71
+ children,
72
+ open: openProp,
73
+ defaultOpen,
74
+ onOpenChange,
75
+ modal = false
76
+ } = props ?? {};
77
+ const popperScope = usePopperScope(__scopePopover, (0, import_internal.subSlot)(slot, "popper"));
78
+ const triggerRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "trigger"));
79
+ const [hasCustomAnchor, setHasCustomAnchor] = (0, import_octane.useState)(false, (0, import_internal.subSlot)(slot, "anchor"));
80
+ const [open, setOpen] = (0, import_useControllableState.useControllableState)(
81
+ { prop: openProp, defaultProp: defaultOpen ?? false, onChange: onOpenChange },
82
+ (0, import_internal.subSlot)(slot, "open")
83
+ );
84
+ return (0, import_octane.createElement)(PopperPrimitive.Root, {
85
+ ...popperScope,
86
+ children: (0, import_octane.createElement)(PopoverProvider, {
87
+ scope: __scopePopover,
88
+ contentId: (0, import_useId.useId)((0, import_internal.subSlot)(slot, "contentId")),
89
+ triggerRef,
90
+ open,
91
+ onOpenChange: setOpen,
92
+ onOpenToggle: (0, import_octane.useCallback)(
93
+ () => setOpen((prevOpen) => !prevOpen),
94
+ [setOpen],
95
+ (0, import_internal.subSlot)(slot, "toggle")
96
+ ),
97
+ hasCustomAnchor,
98
+ onCustomAnchorAdd: (0, import_octane.useCallback)(() => setHasCustomAnchor(true), [], (0, import_internal.subSlot)(slot, "add")),
99
+ onCustomAnchorRemove: (0, import_octane.useCallback)(
100
+ () => setHasCustomAnchor(false),
101
+ [],
102
+ (0, import_internal.subSlot)(slot, "remove")
103
+ ),
104
+ modal,
105
+ children
106
+ })
107
+ });
108
+ }
109
+ function Anchor(props) {
110
+ const slot = (0, import_internal.S)("Popover.Anchor");
111
+ const { __scopePopover, ...anchorProps } = props ?? {};
112
+ const context = usePopoverContext("PopoverAnchor", __scopePopover);
113
+ const popperScope = usePopperScope(__scopePopover, (0, import_internal.subSlot)(slot, "popper"));
114
+ const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
115
+ (0, import_octane.useEffect)(
116
+ () => {
117
+ onCustomAnchorAdd();
118
+ return () => onCustomAnchorRemove();
119
+ },
120
+ [onCustomAnchorAdd, onCustomAnchorRemove],
121
+ (0, import_internal.subSlot)(slot, "e:custom")
122
+ );
123
+ return (0, import_octane.createElement)(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps });
124
+ }
125
+ function Trigger(props) {
126
+ const slot = (0, import_internal.S)("Popover.Trigger");
127
+ const { __scopePopover, ref: forwardedRef, ...triggerProps } = props ?? {};
128
+ const context = usePopoverContext("PopoverTrigger", __scopePopover);
129
+ const popperScope = usePopperScope(__scopePopover, (0, import_internal.subSlot)(slot, "popper"));
130
+ const composedTriggerRef = (0, import_compose_refs.useComposedRefs)(
131
+ forwardedRef,
132
+ context.triggerRef,
133
+ (0, import_internal.subSlot)(slot, "refs")
134
+ );
135
+ const trigger = (0, import_octane.createElement)(import_Primitive.Primitive.button, {
136
+ type: "button",
137
+ "aria-haspopup": "dialog",
138
+ "aria-expanded": context.open,
139
+ "aria-controls": context.open ? context.contentId : void 0,
140
+ "data-state": getState(context.open),
141
+ ...triggerProps,
142
+ ref: composedTriggerRef,
143
+ onClick: (0, import_compose_event_handlers.composeEventHandlers)(props?.onClick, context.onOpenToggle)
144
+ });
145
+ return context.hasCustomAnchor ? trigger : (0, import_octane.createElement)(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });
146
+ }
147
+ const [PortalProvider, usePortalContext] = createPopoverContext(
148
+ "PopoverPortal",
149
+ { forceMount: void 0 }
150
+ );
151
+ function Portal(props) {
152
+ const { __scopePopover, forceMount, children, container } = props ?? {};
153
+ const context = usePopoverContext("PopoverPortal", __scopePopover);
154
+ return (0, import_octane.createElement)(PortalProvider, {
155
+ scope: __scopePopover,
156
+ forceMount,
157
+ children: (0, import_octane.createElement)(import_Presence.Presence, {
158
+ present: forceMount || context.open,
159
+ children: (0, import_octane.createElement)(import_Portal.Portal, {
160
+ asChild: typeof children !== "function",
161
+ container,
162
+ children
163
+ })
164
+ })
165
+ });
166
+ }
167
+ function Content(props) {
168
+ const portalContext = usePortalContext("PopoverContent", props?.__scopePopover);
169
+ const { forceMount = portalContext.forceMount, ...contentProps } = props ?? {};
170
+ const context = usePopoverContext("PopoverContent", props?.__scopePopover);
171
+ return (0, import_octane.createElement)(import_Presence.Presence, {
172
+ present: forceMount || context.open,
173
+ children: context.modal ? (0, import_octane.createElement)(ContentModal, contentProps) : (0, import_octane.createElement)(ContentNonModal, contentProps)
174
+ });
175
+ }
176
+ function ContentModal(props) {
177
+ const slot = (0, import_internal.S)("Popover.ContentModal");
178
+ const { ref: forwardedRef, ...rest } = props;
179
+ const context = usePopoverContext("PopoverContent", props.__scopePopover);
180
+ const contentRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "ref"));
181
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentRef, (0, import_internal.subSlot)(slot, "refs"));
182
+ const isRightClickOutsideRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "rightClick"));
183
+ (0, import_octane.useEffect)(
184
+ () => {
185
+ const content = contentRef.current;
186
+ if (content) return (0, import_aria_hidden.hideOthers)(content);
187
+ },
188
+ [],
189
+ (0, import_internal.subSlot)(slot, "e:hide")
190
+ );
191
+ (0, import_scroll_lock.useScrollLock)(true, (0, import_internal.subSlot)(slot, "lock"));
192
+ return (0, import_octane.createElement)(ContentImpl, {
193
+ ...rest,
194
+ __scopePopover: props.__scopePopover,
195
+ ref: composedRefs,
196
+ // We make sure we're not trapping once it's been closed
197
+ // (closed !== unmounted when animating out).
198
+ trapFocus: context.open,
199
+ disableOutsidePointerEvents: true,
200
+ onCloseAutoFocus: (0, import_compose_event_handlers.composeEventHandlers)(props.onCloseAutoFocus, (event) => {
201
+ event.preventDefault();
202
+ if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();
203
+ }),
204
+ onPointerDownOutside: (0, import_compose_event_handlers.composeEventHandlers)(
205
+ props.onPointerDownOutside,
206
+ (event) => {
207
+ const originalEvent = event.detail.originalEvent;
208
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
209
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
210
+ isRightClickOutsideRef.current = isRightClick;
211
+ },
212
+ { checkForDefaultPrevented: false }
213
+ ),
214
+ // When focus is trapped, a `focusout` event may still happen —
215
+ // make sure we don't trigger our `onDismiss` in such case.
216
+ onFocusOutside: (0, import_compose_event_handlers.composeEventHandlers)(
217
+ props.onFocusOutside,
218
+ (event) => event.preventDefault(),
219
+ { checkForDefaultPrevented: false }
220
+ )
221
+ });
222
+ }
223
+ function ContentNonModal(props) {
224
+ const slot = (0, import_internal.S)("Popover.ContentNonModal");
225
+ const context = usePopoverContext("PopoverContent", props.__scopePopover);
226
+ const hasInteractedOutsideRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "interacted"));
227
+ const hasPointerDownOutsideRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "pointer"));
228
+ return (0, import_octane.createElement)(ContentImpl, {
229
+ ...props,
230
+ trapFocus: false,
231
+ disableOutsidePointerEvents: false,
232
+ onCloseAutoFocus: (event) => {
233
+ props.onCloseAutoFocus?.(event);
234
+ if (!event.defaultPrevented) {
235
+ if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
236
+ event.preventDefault();
237
+ }
238
+ hasInteractedOutsideRef.current = false;
239
+ hasPointerDownOutsideRef.current = false;
240
+ },
241
+ onInteractOutside: (event) => {
242
+ props.onInteractOutside?.(event);
243
+ if (!event.defaultPrevented) {
244
+ hasInteractedOutsideRef.current = true;
245
+ if (event.detail.originalEvent.type === "pointerdown") {
246
+ hasPointerDownOutsideRef.current = true;
247
+ }
248
+ }
249
+ const target = event.target;
250
+ const targetIsTrigger = context.triggerRef.current?.contains(target);
251
+ if (targetIsTrigger) event.preventDefault();
252
+ if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) {
253
+ event.preventDefault();
254
+ }
255
+ }
256
+ });
257
+ }
258
+ function ContentImpl(props) {
259
+ const slot = (0, import_internal.S)("Popover.ContentImpl");
260
+ const {
261
+ __scopePopover,
262
+ trapFocus,
263
+ onOpenAutoFocus,
264
+ onCloseAutoFocus,
265
+ disableOutsidePointerEvents,
266
+ onEscapeKeyDown,
267
+ onPointerDownOutside,
268
+ onFocusOutside,
269
+ onInteractOutside,
270
+ ...contentProps
271
+ } = props;
272
+ const context = usePopoverContext("PopoverContent", __scopePopover);
273
+ const popperScope = usePopperScope(__scopePopover, (0, import_internal.subSlot)(slot, "popper"));
274
+ (0, import_focus_guards.useFocusGuards)((0, import_internal.subSlot)(slot, "guards"));
275
+ return (0, import_octane.createElement)(import_FocusScope.FocusScope, {
276
+ asChild: true,
277
+ loop: true,
278
+ trapped: trapFocus,
279
+ onMountAutoFocus: onOpenAutoFocus,
280
+ onUnmountAutoFocus: onCloseAutoFocus,
281
+ children: (0, import_octane.createElement)(import_DismissableLayer.DismissableLayer, {
282
+ asChild: true,
283
+ disableOutsidePointerEvents,
284
+ onInteractOutside,
285
+ onEscapeKeyDown,
286
+ onPointerDownOutside,
287
+ onFocusOutside,
288
+ onDismiss: () => context.onOpenChange(false),
289
+ deferPointerDownOutside: true,
290
+ children: (0, import_octane.createElement)(PopperPrimitive.Content, {
291
+ "data-state": getState(context.open),
292
+ role: "dialog",
293
+ id: context.contentId,
294
+ ...popperScope,
295
+ ...contentProps,
296
+ style: {
297
+ ...contentProps.style,
298
+ // re-namespace exposed content custom properties
299
+ "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
300
+ "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
301
+ "--radix-popover-content-available-height": "var(--radix-popper-available-height)",
302
+ "--radix-popover-trigger-width": "var(--radix-popper-anchor-width)",
303
+ "--radix-popover-trigger-height": "var(--radix-popper-anchor-height)"
304
+ }
305
+ })
306
+ })
307
+ });
308
+ }
309
+ function Close(props) {
310
+ const { __scopePopover, ...closeProps } = props ?? {};
311
+ const context = usePopoverContext("PopoverClose", __scopePopover);
312
+ return (0, import_octane.createElement)(import_Primitive.Primitive.button, {
313
+ type: "button",
314
+ ...closeProps,
315
+ onClick: (0, import_compose_event_handlers.composeEventHandlers)(props?.onClick, () => context.onOpenChange(false))
316
+ });
317
+ }
318
+ function Arrow(props) {
319
+ const slot = (0, import_internal.S)("Popover.Arrow");
320
+ const { __scopePopover, ...arrowProps } = props ?? {};
321
+ const popperScope = usePopperScope(__scopePopover, (0, import_internal.subSlot)(slot, "popper"));
322
+ return (0, import_octane.createElement)(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps });
323
+ }
324
+ function getState(open) {
325
+ return open ? "open" : "closed";
326
+ }
327
+ // Annotate the CommonJS export names for ESM import in node:
328
+ 0 && (module.exports = {
329
+ Anchor,
330
+ Arrow,
331
+ Close,
332
+ Content,
333
+ Popover,
334
+ PopoverAnchor,
335
+ PopoverTrigger,
336
+ Portal,
337
+ Root,
338
+ Trigger,
339
+ createPopoverScope
340
+ });