@1771technologies/lytenyte-pro 0.0.39

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 (168) hide show
  1. package/LICENSE +15 -0
  2. package/dist/DialogPortalContext-C2WZTqJ3.js +47 -0
  3. package/dist/InternalBackdrop-Dm9czgoC.js +6746 -0
  4. package/dist/MenuRoot-9n64jNWP.js +724 -0
  5. package/dist/anchor-context-B9sGQdR5.js +35 -0
  6. package/dist/arrow-down-icon-B-3ldODD.js +27 -0
  7. package/dist/arrow-svg-evmXDI_J.js +29 -0
  8. package/dist/column-manager.js +1241 -0
  9. package/dist/cross-icon-CEMLAlFX.js +20 -0
  10. package/dist/dialog.js +506 -0
  11. package/dist/filter-manager.js +1056 -0
  12. package/dist/getPseudoElementBounds-BSHt6WYm.js +26 -0
  13. package/dist/grid-container.js +18 -0
  14. package/dist/icons.js +512 -0
  15. package/dist/index.js +3730 -0
  16. package/dist/lytenyte-pro.css +1948 -0
  17. package/dist/manage-columns-icon-D4CElo5H.js +146 -0
  18. package/dist/menu.js +1639 -0
  19. package/dist/pill-C4Jhdf8E.js +985 -0
  20. package/dist/pill-manager.js +674 -0
  21. package/dist/plus-icon-ToqW5CC-.js +15 -0
  22. package/dist/popover.js +770 -0
  23. package/dist/row-group-icon-BOOju5Vu.js +205 -0
  24. package/dist/search-icon-CcG1lqsn.js +86 -0
  25. package/dist/select-C6xOZZLq.js +2231 -0
  26. package/dist/sort-manager.js +298 -0
  27. package/dist/tickmark-icon-CoogRMoO.js +51 -0
  28. package/dist/types/cell-selection/cell-selection-containers.d.ts +3 -0
  29. package/dist/types/cell-selection/cell-selection-driver.d.ts +1 -0
  30. package/dist/types/cell-selection/cell-style-row.d.ts +8 -0
  31. package/dist/types/column-manager/column-manager-drag-box-controls.d.ts +1 -0
  32. package/dist/types/column-manager/column-manager-drag-box-expander.d.ts +1 -0
  33. package/dist/types/column-manager/column-manager-drag-box-label.d.ts +5 -0
  34. package/dist/types/column-manager/column-manager-drag-box.d.ts +13 -0
  35. package/dist/types/column-manager/column-manager-drag-placeholder.d.ts +5 -0
  36. package/dist/types/column-manager/column-manager-drop-zone.d.ts +10 -0
  37. package/dist/types/column-manager/column-manager-impl.d.ts +36 -0
  38. package/dist/types/column-manager/column-manager-pill.d.ts +4 -0
  39. package/dist/types/column-manager/column-manager-pivot-mode-toggle.d.ts +1 -0
  40. package/dist/types/column-manager/column-manager-search.d.ts +1 -0
  41. package/dist/types/column-manager/column-manager-state.d.ts +8 -0
  42. package/dist/types/column-manager/column-manager-tree-item.d.ts +6 -0
  43. package/dist/types/column-manager/column-manager-tree.d.ts +11 -0
  44. package/dist/types/column-manager/column-manager-types.d.ts +1 -0
  45. package/dist/types/column-manager/column-manager.d.ts +1 -0
  46. package/dist/types/column-manager/column-mananger-context.d.ts +12 -0
  47. package/dist/types/column-manager/utils/all-leafs.d.ts +3 -0
  48. package/dist/types/column-manager/utils/can-hide-item.d.ts +3 -0
  49. package/dist/types/column-manager/utils/handle-item-hide.d.ts +3 -0
  50. package/dist/types/components-internal/button/button.d.ts +9 -0
  51. package/dist/types/components-internal/grid-frame/grid-frame.d.ts +11 -0
  52. package/dist/types/components-internal/radio/radio.d.ts +5 -0
  53. package/dist/types/components-internal/separator/separator.d.ts +8 -0
  54. package/dist/types/components-internal/toggle/toggle.d.ts +7 -0
  55. package/dist/types/dialog/dialog-driver.d.ts +1 -0
  56. package/dist/types/dialog/dialog-impl.d.ts +6 -0
  57. package/dist/types/dialog/dialog.d.ts +8 -0
  58. package/dist/types/dialog/use-dialog-class.d.ts +1 -0
  59. package/dist/types/external.d.ts +2 -0
  60. package/dist/types/filter-manager/combined-to-flat.d.ts +3 -0
  61. package/dist/types/filter-manager/components/apply-filter-button.d.ts +1 -0
  62. package/dist/types/filter-manager/components/clear-filter-button.d.ts +1 -0
  63. package/dist/types/filter-manager/components/flatten-tree-items.d.ts +4 -0
  64. package/dist/types/filter-manager/components/get-child-values.d.ts +2 -0
  65. package/dist/types/filter-manager/components/in-filter-container.d.ts +1 -0
  66. package/dist/types/filter-manager/components/in-filter-error.d.ts +5 -0
  67. package/dist/types/filter-manager/components/in-filter-loading.d.ts +1 -0
  68. package/dist/types/filter-manager/components/in-filter-root.d.ts +11 -0
  69. package/dist/types/filter-manager/components/in-filter-tree.d.ts +15 -0
  70. package/dist/types/filter-manager/components/simple-filter-additional-switch.d.ts +1 -0
  71. package/dist/types/filter-manager/components/simple-filter-operator/date-operator.d.ts +1 -0
  72. package/dist/types/filter-manager/components/simple-filter-operator/number-operator.d.ts +1 -0
  73. package/dist/types/filter-manager/components/simple-filter-operator/simple-filter-operator.d.ts +1 -0
  74. package/dist/types/filter-manager/components/simple-filter-operator/text-operator.d.ts +1 -0
  75. package/dist/types/filter-manager/components/simple-filter-root.d.ts +9 -0
  76. package/dist/types/filter-manager/components/simple-filter-value/date-value.d.ts +1 -0
  77. package/dist/types/filter-manager/components/simple-filter-value/number-value.d.ts +1 -0
  78. package/dist/types/filter-manager/components/simple-filter-value/simple-filter-value.d.ts +1 -0
  79. package/dist/types/filter-manager/components/simple-filter-value/text-value.d.ts +1 -0
  80. package/dist/types/filter-manager/components/use-date-filter-callbacks.d.ts +9 -0
  81. package/dist/types/filter-manager/components/use-in-filter-item-loader.d.ts +7 -0
  82. package/dist/types/filter-manager/components/use-number-filter-callbacks.d.ts +8 -0
  83. package/dist/types/filter-manager/components/use-text-filter-callbacks.d.ts +8 -0
  84. package/dist/types/filter-manager/filter-manager-impl.d.ts +27 -0
  85. package/dist/types/filter-manager/filter-manager.d.ts +1 -0
  86. package/dist/types/filter-manager/filter-state-context.d.ts +16 -0
  87. package/dist/types/filter-manager/flat-to-combined.d.ts +3 -0
  88. package/dist/types/filter-manager/flatten-combined-filter.d.ts +3 -0
  89. package/dist/types/filter-manager/is-filter-complete.d.ts +2 -0
  90. package/dist/types/filter-manager/types.d.ts +15 -0
  91. package/dist/types/filter-manager/use-in-filter.d.ts +5 -0
  92. package/dist/types/filter-manager/use-simple-filters.d.ts +8 -0
  93. package/dist/types/grid-container/grid-container-impl.d.ts +6 -0
  94. package/dist/types/grid-container/grid-container.d.ts +2 -0
  95. package/dist/types/icons.d.ts +1 -0
  96. package/dist/types/index.d.ts +7 -0
  97. package/dist/types/license.d.ts +12 -0
  98. package/dist/types/list-view/list-view-context.d.ts +21 -0
  99. package/dist/types/list-view/list-view.d.ts +26 -0
  100. package/dist/types/lytenyte-pro.d.ts +7 -0
  101. package/dist/types/menu/arrow-svg.d.ts +1 -0
  102. package/dist/types/menu/column-menu/column-menu-driver.d.ts +4 -0
  103. package/dist/types/menu/context-menu/context-menu-driver.d.ts +1 -0
  104. package/dist/types/menu/context-menu/use-context-menu-listener.d.ts +6 -0
  105. package/dist/types/menu/menu-impl.d.ts +17 -0
  106. package/dist/types/menu/menu.d.ts +18 -0
  107. package/dist/types/menu/use-menu-class-name.d.ts +1 -0
  108. package/dist/types/overlay/load-error-overlay.d.ts +1 -0
  109. package/dist/types/overlay/loading-overlay.d.ts +1 -0
  110. package/dist/types/overlay/no-data-overlay.d.ts +1 -0
  111. package/dist/types/overlay/overlay-driver.d.ts +1 -0
  112. package/dist/types/pill/pill.d.ts +5 -0
  113. package/dist/types/pill-manager/pill-manager-agg-menu.d.ts +7 -0
  114. package/dist/types/pill-manager/pill-manager-controls.d.ts +9 -0
  115. package/dist/types/pill-manager/pill-manager-drag-placeholder.d.ts +5 -0
  116. package/dist/types/pill-manager/pill-manager-expander.d.ts +1 -0
  117. package/dist/types/pill-manager/pill-manager-impl.d.ts +49 -0
  118. package/dist/types/pill-manager/pill-manager-pill.d.ts +4 -0
  119. package/dist/types/pill-manager/pill-manager-pills/pill-manager-pills.d.ts +2 -0
  120. package/dist/types/pill-manager/pill-manager-pills/use-aggregation-source.d.ts +2 -0
  121. package/dist/types/pill-manager/pill-manager-pills/use-column-pivot-source.d.ts +2 -0
  122. package/dist/types/pill-manager/pill-manager-pills/use-column-source.d.ts +2 -0
  123. package/dist/types/pill-manager/pill-manager-pills/use-measures-source.d.ts +2 -0
  124. package/dist/types/pill-manager/pill-manager-pills/use-row-groups-source.d.ts +2 -0
  125. package/dist/types/pill-manager/pill-manager-pills/utils.d.ts +3 -0
  126. package/dist/types/pill-manager/pill-manager-row-label.d.ts +22 -0
  127. package/dist/types/pill-manager/pill-manager-row.d.ts +12 -0
  128. package/dist/types/pill-manager/pill-manager-rows.d.ts +1 -0
  129. package/dist/types/pill-manager/pill-manager-separator.d.ts +1 -0
  130. package/dist/types/pill-manager/pill-manager-types.d.ts +36 -0
  131. package/dist/types/pill-manager/pill-manager.d.ts +1 -0
  132. package/dist/types/popover/anchor-context.d.ts +6 -0
  133. package/dist/types/popover/popover-driver.d.ts +1 -0
  134. package/dist/types/popover/popover-impl.d.ts +8 -0
  135. package/dist/types/popover/popover.d.ts +10 -0
  136. package/dist/types/popover/use-popover-class.d.ts +1 -0
  137. package/dist/types/select/select.d.ts +17 -0
  138. package/dist/types/sort-manager/sort-adder.d.ts +4 -0
  139. package/dist/types/sort-manager/sort-apply.d.ts +1 -0
  140. package/dist/types/sort-manager/sort-cancel.d.ts +1 -0
  141. package/dist/types/sort-manager/sort-clear.d.ts +1 -0
  142. package/dist/types/sort-manager/sort-column-select.d.ts +5 -0
  143. package/dist/types/sort-manager/sort-direction-select.d.ts +5 -0
  144. package/dist/types/sort-manager/sort-items-to-sort-model.d.ts +3 -0
  145. package/dist/types/sort-manager/sort-manager-container.d.ts +53 -0
  146. package/dist/types/sort-manager/sort-manager-context.d.ts +4 -0
  147. package/dist/types/sort-manager/sort-manager-impl.d.ts +30 -0
  148. package/dist/types/sort-manager/sort-manager.d.ts +1 -0
  149. package/dist/types/sort-manager/sort-model-to-sort-items.d.ts +4 -0
  150. package/dist/types/sort-manager/sort-remove.d.ts +4 -0
  151. package/dist/types/sort-manager/sort-sort-select.d.ts +5 -0
  152. package/dist/types/sort-manager/use-sort-state.d.ts +8 -0
  153. package/dist/types/sort-manager/use-sortable-column-items.d.ts +9 -0
  154. package/dist/types/types.d.ts +1 -0
  155. package/dist/types/use-client-data-source.d.ts +6 -0
  156. package/dist/types/use-edge-scroll.d.ts +7 -0
  157. package/dist/types/use-grid.d.ts +6 -0
  158. package/dist/types/use-lytenyte.d.ts +10 -0
  159. package/dist/types/use-tree-data-source.d.ts +3 -0
  160. package/dist/types/watermark.d.ts +3 -0
  161. package/dist/types.js +1 -0
  162. package/dist/use-grid-DKvzGZWc.js +916 -0
  163. package/dist/useAnchorPositioning-Cm44rb7y.js +252 -0
  164. package/dist/useBaseUiId-J66PFGv_.js +48 -0
  165. package/dist/useButton-Cy7tjZ__.js +183 -0
  166. package/dist/useCompositeListItem-I14CpQPi.js +51 -0
  167. package/dist/useScrollLock-D6h5lZYs.js +515 -0
  168. package/package.json +96 -0
@@ -0,0 +1,252 @@
1
+ import * as React from "react";
2
+ import { a as useLatestRef, s as shift, l as limitShift, b as size, c as arrow, h as hide, g as getSide, d as useFloating, u as useEnhancedEffect, e as autoUpdate, f as getAlignment, o as offset, i as flip } from "./InternalBackdrop-Dm9czgoC.js";
3
+ const DirectionContext = /* @__PURE__ */ React.createContext(void 0);
4
+ if (process.env.NODE_ENV !== "production") {
5
+ DirectionContext.displayName = "DirectionContext";
6
+ }
7
+ function useDirection(optional = true) {
8
+ const context = React.useContext(DirectionContext);
9
+ if (context === void 0 && !optional) {
10
+ throw new Error("Base UI: DirectionContext is missing.");
11
+ }
12
+ return context?.direction ?? "ltr";
13
+ }
14
+ function getLogicalSide(sideParam, renderedSide, isRtl) {
15
+ const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end";
16
+ const logicalRight = isRtl ? "inline-start" : "inline-end";
17
+ const logicalLeft = isRtl ? "inline-end" : "inline-start";
18
+ return {
19
+ top: "top",
20
+ right: isLogicalSideParam ? logicalRight : "right",
21
+ bottom: "bottom",
22
+ left: isLogicalSideParam ? logicalLeft : "left"
23
+ }[renderedSide];
24
+ }
25
+ function useAnchorPositioning(params) {
26
+ const {
27
+ // Public parameters
28
+ anchor,
29
+ positionMethod = "absolute",
30
+ side: sideParam = "bottom",
31
+ sideOffset = 0,
32
+ align = "center",
33
+ alignOffset = 0,
34
+ collisionBoundary,
35
+ collisionPadding = 5,
36
+ sticky = false,
37
+ arrowPadding = 5,
38
+ // Private parameters
39
+ keepMounted = false,
40
+ floatingRootContext,
41
+ mounted,
42
+ trackAnchor = true,
43
+ nodeId
44
+ } = params;
45
+ const direction = useDirection();
46
+ const isRtl = direction === "rtl";
47
+ const side = {
48
+ top: "top",
49
+ right: "right",
50
+ bottom: "bottom",
51
+ left: "left",
52
+ "inline-end": isRtl ? "left" : "right",
53
+ "inline-start": isRtl ? "right" : "left"
54
+ }[sideParam];
55
+ const placement = align === "center" ? side : `${side}-${align}`;
56
+ const commonCollisionProps = {
57
+ boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary,
58
+ padding: collisionPadding
59
+ };
60
+ const arrowRef = React.useRef(null);
61
+ const sideOffsetRef = useLatestRef(sideOffset);
62
+ const alignOffsetRef = useLatestRef(alignOffset);
63
+ const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0;
64
+ const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0;
65
+ const middleware = [offset(({
66
+ rects,
67
+ placement: currentPlacement
68
+ }) => {
69
+ const data = {
70
+ side: getLogicalSide(sideParam, getSide(currentPlacement), isRtl),
71
+ align: getAlignment(currentPlacement) || "center",
72
+ anchor: {
73
+ width: rects.reference.width,
74
+ height: rects.reference.height
75
+ },
76
+ positioner: {
77
+ width: rects.floating.width,
78
+ height: rects.floating.height
79
+ }
80
+ };
81
+ const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current;
82
+ const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current;
83
+ return {
84
+ mainAxis: sideAxis,
85
+ crossAxis: alignAxis,
86
+ alignmentAxis: alignAxis
87
+ };
88
+ }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])];
89
+ const flipMiddleware = flip(commonCollisionProps);
90
+ const shiftMiddleware = shift({
91
+ ...commonCollisionProps,
92
+ crossAxis: sticky,
93
+ limiter: sticky ? void 0 : limitShift(() => {
94
+ if (!arrowRef.current) {
95
+ return {};
96
+ }
97
+ const {
98
+ height
99
+ } = arrowRef.current.getBoundingClientRect();
100
+ return {
101
+ offset: height / 2 + (typeof collisionPadding === "number" ? collisionPadding : 0)
102
+ };
103
+ })
104
+ });
105
+ if (align !== "center") {
106
+ middleware.push(flipMiddleware, shiftMiddleware);
107
+ } else {
108
+ middleware.push(shiftMiddleware, flipMiddleware);
109
+ }
110
+ middleware.push(size({
111
+ ...commonCollisionProps,
112
+ apply({
113
+ elements: {
114
+ floating
115
+ },
116
+ rects: {
117
+ reference
118
+ },
119
+ availableWidth,
120
+ availableHeight
121
+ }) {
122
+ Object.entries({
123
+ "--available-width": `${availableWidth}px`,
124
+ "--available-height": `${availableHeight}px`,
125
+ "--anchor-width": `${reference.width}px`,
126
+ "--anchor-height": `${reference.height}px`
127
+ }).forEach(([key, value]) => {
128
+ floating.style.setProperty(key, value);
129
+ });
130
+ }
131
+ }), arrow(() => ({
132
+ // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
133
+ // we'll create a fake element.
134
+ element: arrowRef.current || document.createElement("div"),
135
+ padding: arrowPadding
136
+ }), [arrowPadding]), hide(), {
137
+ name: "transformOrigin",
138
+ fn({
139
+ elements: elements2,
140
+ middlewareData: middlewareData2,
141
+ placement: renderedPlacement2
142
+ }) {
143
+ const currentRenderedSide = getSide(renderedPlacement2);
144
+ const arrowEl = arrowRef.current;
145
+ const arrowX = middlewareData2.arrow?.x ?? 0;
146
+ const arrowY = middlewareData2.arrow?.y ?? 0;
147
+ const arrowWidth = arrowEl?.clientWidth ?? 0;
148
+ const arrowHeight = arrowEl?.clientHeight ?? 0;
149
+ const transformX = arrowX + arrowWidth / 2;
150
+ const transformY = arrowY + arrowHeight / 2;
151
+ const transformOrigin = {
152
+ top: `${transformX}px calc(100% + ${sideOffset}px)`,
153
+ bottom: `${transformX}px ${-sideOffset}px`,
154
+ left: `calc(100% + ${sideOffset}px) ${transformY}px`,
155
+ right: `${-sideOffset}px ${transformY}px`
156
+ }[currentRenderedSide];
157
+ elements2.floating.style.setProperty("--transform-origin", transformOrigin);
158
+ return {};
159
+ }
160
+ });
161
+ let rootContext = floatingRootContext;
162
+ if (!mounted && floatingRootContext) {
163
+ rootContext = {
164
+ ...floatingRootContext,
165
+ elements: {
166
+ reference: null,
167
+ floating: null,
168
+ domReference: null
169
+ }
170
+ };
171
+ }
172
+ const autoUpdateOptions = React.useMemo(() => ({
173
+ elementResize: trackAnchor && typeof ResizeObserver !== "undefined",
174
+ layoutShift: trackAnchor && typeof IntersectionObserver !== "undefined"
175
+ }), [trackAnchor]);
176
+ const {
177
+ refs,
178
+ elements,
179
+ floatingStyles,
180
+ middlewareData,
181
+ update,
182
+ placement: renderedPlacement,
183
+ context,
184
+ isPositioned
185
+ } = useFloating({
186
+ rootContext,
187
+ placement,
188
+ middleware,
189
+ strategy: positionMethod,
190
+ whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions),
191
+ nodeId
192
+ });
193
+ const registeredPositionReferenceRef = React.useRef(null);
194
+ useEnhancedEffect(() => {
195
+ if (!mounted) {
196
+ return;
197
+ }
198
+ const resolvedAnchor = typeof anchor === "function" ? anchor() : anchor;
199
+ if (resolvedAnchor) {
200
+ const unwrappedElement = isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor;
201
+ refs.setPositionReference(unwrappedElement);
202
+ registeredPositionReferenceRef.current = unwrappedElement;
203
+ }
204
+ }, [mounted, refs, anchor]);
205
+ React.useEffect(() => {
206
+ if (!mounted) {
207
+ return;
208
+ }
209
+ if (typeof anchor === "function") {
210
+ return;
211
+ }
212
+ if (isRef(anchor) && anchor.current !== registeredPositionReferenceRef.current) {
213
+ refs.setPositionReference(anchor.current);
214
+ registeredPositionReferenceRef.current = anchor.current;
215
+ }
216
+ }, [mounted, refs, anchor]);
217
+ React.useEffect(() => {
218
+ if (keepMounted && mounted && elements.domReference && elements.floating) {
219
+ return autoUpdate(elements.domReference, elements.floating, update, autoUpdateOptions);
220
+ }
221
+ return void 0;
222
+ }, [keepMounted, mounted, elements, update, autoUpdateOptions]);
223
+ const renderedSide = getSide(renderedPlacement);
224
+ const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl);
225
+ const renderedAlign = getAlignment(renderedPlacement) || "center";
226
+ const anchorHidden = Boolean(middlewareData.hide?.referenceHidden);
227
+ const arrowStyles = React.useMemo(() => ({
228
+ position: "absolute",
229
+ top: middlewareData.arrow?.y,
230
+ left: middlewareData.arrow?.x
231
+ }), [middlewareData.arrow]);
232
+ const arrowUncentered = middlewareData.arrow?.centerOffset !== 0;
233
+ return React.useMemo(() => ({
234
+ positionerStyles: floatingStyles,
235
+ arrowStyles,
236
+ arrowRef,
237
+ arrowUncentered,
238
+ side: logicalRenderedSide,
239
+ align: renderedAlign,
240
+ anchorHidden,
241
+ refs,
242
+ context,
243
+ isPositioned
244
+ }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, anchorHidden, refs, context, isPositioned]);
245
+ }
246
+ function isRef(param) {
247
+ return param != null && "current" in param;
248
+ }
249
+ export {
250
+ useDirection as a,
251
+ useAnchorPositioning as u
252
+ };
@@ -0,0 +1,48 @@
1
+ import * as React from "react";
2
+ const STARTING_HOOK = {
3
+ "data-starting-style": ""
4
+ };
5
+ const ENDING_HOOK = {
6
+ "data-ending-style": ""
7
+ };
8
+ const transitionStatusMapping = {
9
+ transitionStatus(value) {
10
+ if (value === "starting") {
11
+ return STARTING_HOOK;
12
+ }
13
+ if (value === "ending") {
14
+ return ENDING_HOOK;
15
+ }
16
+ return null;
17
+ }
18
+ };
19
+ let globalId = 0;
20
+ function useGlobalId(idOverride, prefix = "mui") {
21
+ const [defaultId, setDefaultId] = React.useState(idOverride);
22
+ const id = idOverride || defaultId;
23
+ React.useEffect(() => {
24
+ if (defaultId == null) {
25
+ globalId += 1;
26
+ setDefaultId(`${prefix}-${globalId}`);
27
+ }
28
+ }, [defaultId, prefix]);
29
+ return id;
30
+ }
31
+ const safeReact = {
32
+ ...React
33
+ };
34
+ const maybeReactUseId = safeReact.useId;
35
+ function useId(idOverride, prefix) {
36
+ if (maybeReactUseId !== void 0) {
37
+ const reactId = maybeReactUseId();
38
+ return idOverride ?? `${prefix}-${reactId}`;
39
+ }
40
+ return useGlobalId(idOverride, prefix);
41
+ }
42
+ function useBaseUiId(idOverride) {
43
+ return useId(idOverride, "base-ui");
44
+ }
45
+ export {
46
+ transitionStatusMapping as t,
47
+ useBaseUiId as u
48
+ };
@@ -0,0 +1,183 @@
1
+ import * as React from "react";
2
+ import { u as useEnhancedEffect, j as useEventCallback, k as useForkRef, m as mergeProps, n as makeEventPreventable } from "./InternalBackdrop-Dm9czgoC.js";
3
+ let set;
4
+ if (process.env.NODE_ENV !== "production") {
5
+ set = /* @__PURE__ */ new Set();
6
+ }
7
+ function warn(...messages) {
8
+ if (process.env.NODE_ENV !== "production") {
9
+ const messageKey = messages.join(" ");
10
+ if (!set.has(messageKey)) {
11
+ set.add(messageKey);
12
+ console.warn(`Base UI: ${messageKey}`);
13
+ }
14
+ }
15
+ }
16
+ function useRootElementName(parameters) {
17
+ const {
18
+ rootElementName: rootElementNameProp = ""
19
+ } = parameters;
20
+ const [rootElementName, setRootElementName] = React.useState(rootElementNameProp.toUpperCase());
21
+ if (process.env.NODE_ENV !== "production") {
22
+ useEnhancedEffect(() => {
23
+ if (rootElementNameProp && rootElementName !== rootElementNameProp.toUpperCase()) {
24
+ warn(`useRootElementName expected the '${rootElementNameProp}' element, but a '${rootElementName.toLowerCase()}' was rendered instead`, "This may cause hydration issues in an SSR context, for example in a Next.js app");
25
+ }
26
+ }, [rootElementNameProp, rootElementName]);
27
+ }
28
+ const updateRootElementName = React.useCallback((element) => {
29
+ setRootElementName(element?.tagName ?? "");
30
+ }, []);
31
+ return {
32
+ rootElementName,
33
+ updateRootElementName
34
+ };
35
+ }
36
+ const CompositeRootContext = /* @__PURE__ */ React.createContext(void 0);
37
+ if (process.env.NODE_ENV !== "production") {
38
+ CompositeRootContext.displayName = "CompositeRootContext";
39
+ }
40
+ function useCompositeRootContext(optional = false) {
41
+ const context = React.useContext(CompositeRootContext);
42
+ if (context === void 0 && !optional) {
43
+ throw new Error("Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>.");
44
+ }
45
+ return context;
46
+ }
47
+ function useButton(parameters = {}) {
48
+ const {
49
+ buttonRef: externalRef,
50
+ disabled = false,
51
+ focusableWhenDisabled,
52
+ tabIndex,
53
+ type,
54
+ elementName: elementNameProp
55
+ } = parameters;
56
+ const buttonRef = React.useRef(null);
57
+ const {
58
+ rootElementName: elementName,
59
+ updateRootElementName
60
+ } = useRootElementName({
61
+ rootElementName: elementNameProp
62
+ });
63
+ const isCompositeItem = useCompositeRootContext(true) !== void 0;
64
+ const isNativeButton = useEventCallback(() => {
65
+ const element = buttonRef.current;
66
+ return elementName === "BUTTON" || elementName === "INPUT" && ["button", "submit", "reset"].includes(element?.type);
67
+ });
68
+ const isValidLink = useEventCallback(() => {
69
+ const element = buttonRef.current;
70
+ return Boolean(elementName === "A" && element?.href);
71
+ });
72
+ const mergedRef = useForkRef(updateRootElementName, externalRef, buttonRef);
73
+ const buttonProps = React.useMemo(() => {
74
+ const additionalProps = {};
75
+ if (tabIndex !== void 0 && !isCompositeItem) {
76
+ additionalProps.tabIndex = tabIndex;
77
+ }
78
+ if (elementName === "BUTTON" || elementName === "INPUT") {
79
+ if (focusableWhenDisabled || isCompositeItem) {
80
+ additionalProps["aria-disabled"] = disabled;
81
+ } else if (!isCompositeItem) {
82
+ additionalProps.disabled = disabled;
83
+ }
84
+ } else if (elementName !== "") {
85
+ if (elementName !== "A") {
86
+ additionalProps.role = "button";
87
+ if (!isCompositeItem) {
88
+ additionalProps.tabIndex = tabIndex ?? 0;
89
+ }
90
+ } else if (tabIndex && !isCompositeItem) {
91
+ additionalProps.tabIndex = tabIndex;
92
+ }
93
+ if (disabled) {
94
+ additionalProps["aria-disabled"] = disabled;
95
+ if (!isCompositeItem) {
96
+ additionalProps.tabIndex = focusableWhenDisabled ? tabIndex ?? 0 : -1;
97
+ }
98
+ }
99
+ }
100
+ return additionalProps;
101
+ }, [disabled, elementName, focusableWhenDisabled, isCompositeItem, tabIndex]);
102
+ useEnhancedEffect(() => {
103
+ const element = buttonRef.current;
104
+ if (!(element instanceof HTMLButtonElement)) {
105
+ return;
106
+ }
107
+ if (isCompositeItem && disabled && buttonProps.disabled === void 0 && element.disabled) {
108
+ element.disabled = false;
109
+ }
110
+ }, [disabled, buttonProps.disabled, isCompositeItem]);
111
+ const getButtonProps = React.useCallback((externalProps = {}) => {
112
+ const {
113
+ onClick: externalOnClick,
114
+ onMouseDown: externalOnMouseDown,
115
+ onKeyUp: externalOnKeyUp,
116
+ onKeyDown: externalOnKeyDown,
117
+ onPointerDown: externalOnPointerDown,
118
+ ...otherExternalProps
119
+ } = externalProps;
120
+ return mergeProps({
121
+ type,
122
+ onClick(event) {
123
+ if (disabled) {
124
+ event.preventDefault();
125
+ return;
126
+ }
127
+ externalOnClick?.(event);
128
+ },
129
+ onMouseDown(event) {
130
+ if (!disabled) {
131
+ externalOnMouseDown?.(event);
132
+ }
133
+ },
134
+ onKeyDown(event) {
135
+ if (
136
+ // allow Tabbing away from focusableWhenDisabled buttons
137
+ disabled && focusableWhenDisabled && event.key !== "Tab" || event.target === event.currentTarget && !isNativeButton() && event.key === " "
138
+ ) {
139
+ event.preventDefault();
140
+ }
141
+ if (!disabled) {
142
+ makeEventPreventable(event);
143
+ externalOnKeyDown?.(event);
144
+ }
145
+ if (event.baseUIHandlerPrevented) {
146
+ return;
147
+ }
148
+ if (event.target === event.currentTarget && !isNativeButton() && !isValidLink() && event.key === "Enter" && !disabled) {
149
+ externalOnClick?.(event);
150
+ event.preventDefault();
151
+ }
152
+ },
153
+ onKeyUp(event) {
154
+ if (!disabled) {
155
+ makeEventPreventable(event);
156
+ externalOnKeyUp?.(event);
157
+ }
158
+ if (event.baseUIHandlerPrevented) {
159
+ return;
160
+ }
161
+ if (event.target === event.currentTarget && !isNativeButton() && !disabled && event.key === " ") {
162
+ externalOnClick?.(event);
163
+ }
164
+ },
165
+ onPointerDown(event) {
166
+ if (disabled) {
167
+ event.preventDefault();
168
+ return;
169
+ }
170
+ externalOnPointerDown?.(event);
171
+ },
172
+ ref: mergedRef
173
+ }, buttonProps, otherExternalProps);
174
+ }, [buttonProps, disabled, focusableWhenDisabled, isNativeButton, isValidLink, mergedRef, type]);
175
+ return {
176
+ getButtonProps,
177
+ buttonRef: mergedRef
178
+ };
179
+ }
180
+ export {
181
+ useButton as u,
182
+ warn as w
183
+ };
@@ -0,0 +1,51 @@
1
+ import * as React from "react";
2
+ import { u as useEnhancedEffect } from "./InternalBackdrop-Dm9czgoC.js";
3
+ import { u as useCompositeListContext } from "./useScrollLock-D6h5lZYs.js";
4
+ function useCompositeListItem(params = {}) {
5
+ const {
6
+ label,
7
+ metadata
8
+ } = params;
9
+ const {
10
+ register,
11
+ unregister,
12
+ map,
13
+ elementsRef,
14
+ labelsRef
15
+ } = useCompositeListContext();
16
+ const [index, setIndex] = React.useState(null);
17
+ const componentRef = React.useRef(null);
18
+ const ref = React.useCallback((node) => {
19
+ componentRef.current = node;
20
+ if (index !== null) {
21
+ elementsRef.current[index] = node;
22
+ if (labelsRef) {
23
+ const isLabelDefined = label !== void 0;
24
+ labelsRef.current[index] = isLabelDefined ? label : node?.textContent ?? null;
25
+ }
26
+ }
27
+ }, [index, elementsRef, labelsRef, label]);
28
+ useEnhancedEffect(() => {
29
+ const node = componentRef.current;
30
+ if (node) {
31
+ register(node, metadata);
32
+ return () => {
33
+ unregister(node);
34
+ };
35
+ }
36
+ return void 0;
37
+ }, [register, unregister, metadata]);
38
+ useEnhancedEffect(() => {
39
+ const i = componentRef.current ? map.get(componentRef.current)?.index : null;
40
+ if (i != null) {
41
+ setIndex(i);
42
+ }
43
+ }, [map]);
44
+ return React.useMemo(() => ({
45
+ ref,
46
+ index: index == null ? -1 : index
47
+ }), [index, ref]);
48
+ }
49
+ export {
50
+ useCompositeListItem as u
51
+ };