@nurix/ui-component-library 1.1.7-stage.138 → 1.1.7-stage.140

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.
package/dist/index.js CHANGED
@@ -9880,7 +9880,13 @@ var TagBadge = React20.forwardRef(
9880
9880
  } : void 0
9881
9881
  }
9882
9882
  ),
9883
- isSelected && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.Check, { className: "size-3 shrink-0 text-border-token-brand ml-auto" })
9883
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
9884
+ import_lucide_react5.Check,
9885
+ {
9886
+ className: "size-3 shrink-0 text-fg-black ml-auto",
9887
+ strokeWidth: 1
9888
+ }
9889
+ )
9884
9890
  ]
9885
9891
  },
9886
9892
  option.value
@@ -15259,13 +15265,17 @@ function CompoundFilterSelect({
15259
15265
  const { theme } = useTheme();
15260
15266
  const themeClass = theme === "dark" ? "dark" : "light";
15261
15267
  const [open, setOpen] = React40.useState(false);
15262
- const container = React40.useMemo(
15263
- () => {
15264
- var _a5;
15265
- return typeof document !== "undefined" ? (_a5 = document.querySelector(".lego-land")) != null ? _a5 : void 0 : void 0;
15266
- },
15267
- []
15268
+ const sentinelRef = React40.useRef(null);
15269
+ const [container, setContainer] = React40.useState(
15270
+ void 0
15268
15271
  );
15272
+ React40.useEffect(() => {
15273
+ var _a5, _b5;
15274
+ const el = (_a5 = sentinelRef.current) == null ? void 0 : _a5.closest(".lego-land");
15275
+ setContainer(
15276
+ el != null ? el : typeof document !== "undefined" ? (_b5 = document.querySelector(".lego-land")) != null ? _b5 : void 0 : void 0
15277
+ );
15278
+ }, []);
15269
15279
  const selectedOption = options.find((opt) => opt.value === value);
15270
15280
  const effectiveLeadingIcon = leadingIcon != null ? leadingIcon : selectedOption == null ? void 0 : selectedOption.icon;
15271
15281
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
@@ -15284,6 +15294,7 @@ function CompoundFilterSelect({
15284
15294
  ),
15285
15295
  ...props,
15286
15296
  children: [
15297
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { ref: sentinelRef, style: { display: "contents" }, "aria-hidden": "true" }),
15287
15298
  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(DropdownMenuPrimitive4.Root, { open, onOpenChange: setOpen, children: [
15288
15299
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropdownMenuPrimitive4.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
15289
15300
  "button",
@@ -15332,12 +15343,17 @@ function CompoundFilterSelect({
15332
15343
  className: cn(
15333
15344
  "bg-token-white flex flex-col gap-1 p-1 rounded-[12px] shadow-sm min-w-[160px]",
15334
15345
  "relative z-50 font-sans outline-none",
15346
+ // Cap height + scroll: with many options (e.g. a country
15347
+ // code list) the menu would otherwise overflow the viewport
15348
+ // and be impossible to reach the bottom items.
15349
+ "max-h-[var(--radix-dropdown-menu-content-available-height,300px)] overflow-y-auto",
15335
15350
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
15336
15351
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
15337
15352
  ),
15338
15353
  side: "bottom",
15339
15354
  align: "start",
15340
15355
  sideOffset: 6,
15356
+ collisionPadding: 8,
15341
15357
  children: options.map((opt) => {
15342
15358
  const isSelected = opt.value === value;
15343
15359
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
package/dist/index.mjs CHANGED
@@ -9759,7 +9759,13 @@ var TagBadge = React20.forwardRef(
9759
9759
  } : void 0
9760
9760
  }
9761
9761
  ),
9762
- isSelected && /* @__PURE__ */ jsx18(Check2, { className: "size-3 shrink-0 text-border-token-brand ml-auto" })
9762
+ isSelected && /* @__PURE__ */ jsx18(
9763
+ Check2,
9764
+ {
9765
+ className: "size-3 shrink-0 text-fg-black ml-auto",
9766
+ strokeWidth: 1
9767
+ }
9768
+ )
9763
9769
  ]
9764
9770
  },
9765
9771
  option.value
@@ -15154,13 +15160,17 @@ function CompoundFilterSelect({
15154
15160
  const { theme } = useTheme();
15155
15161
  const themeClass = theme === "dark" ? "dark" : "light";
15156
15162
  const [open, setOpen] = React40.useState(false);
15157
- const container = React40.useMemo(
15158
- () => {
15159
- var _a5;
15160
- return typeof document !== "undefined" ? (_a5 = document.querySelector(".lego-land")) != null ? _a5 : void 0 : void 0;
15161
- },
15162
- []
15163
+ const sentinelRef = React40.useRef(null);
15164
+ const [container, setContainer] = React40.useState(
15165
+ void 0
15163
15166
  );
15167
+ React40.useEffect(() => {
15168
+ var _a5, _b5;
15169
+ const el = (_a5 = sentinelRef.current) == null ? void 0 : _a5.closest(".lego-land");
15170
+ setContainer(
15171
+ el != null ? el : typeof document !== "undefined" ? (_b5 = document.querySelector(".lego-land")) != null ? _b5 : void 0 : void 0
15172
+ );
15173
+ }, []);
15164
15174
  const selectedOption = options.find((opt) => opt.value === value);
15165
15175
  const effectiveLeadingIcon = leadingIcon != null ? leadingIcon : selectedOption == null ? void 0 : selectedOption.icon;
15166
15176
  return /* @__PURE__ */ jsxs27(
@@ -15179,6 +15189,7 @@ function CompoundFilterSelect({
15179
15189
  ),
15180
15190
  ...props,
15181
15191
  children: [
15192
+ /* @__PURE__ */ jsx36("span", { ref: sentinelRef, style: { display: "contents" }, "aria-hidden": "true" }),
15182
15193
  /* @__PURE__ */ jsxs27(DropdownMenuPrimitive4.Root, { open, onOpenChange: setOpen, children: [
15183
15194
  /* @__PURE__ */ jsx36(DropdownMenuPrimitive4.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs27(
15184
15195
  "button",
@@ -15227,12 +15238,17 @@ function CompoundFilterSelect({
15227
15238
  className: cn(
15228
15239
  "bg-token-white flex flex-col gap-1 p-1 rounded-[12px] shadow-sm min-w-[160px]",
15229
15240
  "relative z-50 font-sans outline-none",
15241
+ // Cap height + scroll: with many options (e.g. a country
15242
+ // code list) the menu would otherwise overflow the viewport
15243
+ // and be impossible to reach the bottom items.
15244
+ "max-h-[var(--radix-dropdown-menu-content-available-height,300px)] overflow-y-auto",
15230
15245
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
15231
15246
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
15232
15247
  ),
15233
15248
  side: "bottom",
15234
15249
  align: "start",
15235
15250
  sideOffset: 6,
15251
+ collisionPadding: 8,
15236
15252
  children: options.map((opt) => {
15237
15253
  const isSelected = opt.value === value;
15238
15254
  return /* @__PURE__ */ jsxs27(
@@ -16167,7 +16183,7 @@ var MONACO_OPTIONS_DIALOG = {
16167
16183
 
16168
16184
  // src/json-editor/useJsonEditor.tsx
16169
16185
  var import_ajv = __toESM(require_ajv());
16170
- import { useCallback as useCallback12, useEffect as useEffect13, useId, useRef as useRef9, useState as useState19 } from "react";
16186
+ import { useCallback as useCallback12, useEffect as useEffect14, useId, useRef as useRef10, useState as useState19 } from "react";
16171
16187
 
16172
16188
  // src/json-editor/useJsonEditorErrorStore.ts
16173
16189
  var state = {
@@ -16223,16 +16239,16 @@ function useJsonEditor({
16223
16239
  const editorKey = useId();
16224
16240
  const registerError = useJsonEditorErrorStore((s) => s.registerError);
16225
16241
  const clearError = useJsonEditorErrorStore((s) => s.clearError);
16226
- const editorRef = useRef9(null);
16227
- const monacoRef = useRef9(null);
16228
- const expandedEditorRef = useRef9(null);
16242
+ const editorRef = useRef10(null);
16243
+ const monacoRef = useRef10(null);
16244
+ const expandedEditorRef = useRef10(null);
16229
16245
  const [errors, setErrors] = useState19([]);
16230
16246
  const [copied, setCopied] = useState19(false);
16231
16247
  const [monacoReady, setMonacoReady] = useState19(false);
16232
16248
  const resolvedNodeId = nodeId != null ? nodeId : `_unbound_${editorKey}`;
16233
- const resolvedNodeIdRef = useRef9(resolvedNodeId);
16249
+ const resolvedNodeIdRef = useRef10(resolvedNodeId);
16234
16250
  resolvedNodeIdRef.current = resolvedNodeId;
16235
- useEffect13(
16251
+ useEffect14(
16236
16252
  () => () => {
16237
16253
  clearError(resolvedNodeIdRef.current, editorKey);
16238
16254
  },
@@ -16357,7 +16373,7 @@ function useJsonEditor({
16357
16373
  },
16358
16374
  [normalizeInput, onChange, validateJson]
16359
16375
  );
16360
- useEffect13(() => {
16376
+ useEffect14(() => {
16361
16377
  const normalized = normalizeInput(value);
16362
16378
  if (normalized !== value) onChange(normalized);
16363
16379
  validateJson(normalized);
package/dist/styles.css CHANGED
@@ -646,6 +646,9 @@
646
646
  .lego-land .max-h-\[507px\] {
647
647
  max-height: 507px;
648
648
  }
649
+ .lego-land .max-h-\[var\(--radix-dropdown-menu-content-available-height\,300px\)\] {
650
+ max-height: var(--radix-dropdown-menu-content-available-height,300px);
651
+ }
649
652
  .lego-land .min-h-0 {
650
653
  min-height: calc(var(--spacing) * 0);
651
654
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/ui-component-library",
3
- "version": "1.1.7-stage.138",
3
+ "version": "1.1.7-stage.140",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",