@os-legal/ui 0.1.13 → 0.1.14

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
@@ -123,7 +123,7 @@ __export(index_exports, {
123
123
  ModalHeader: () => ModalHeader,
124
124
  NavBar: () => NavBar,
125
125
  NewDiscussionButton: () => NewDiscussionButton,
126
- Node: () => Node,
126
+ Node: () => Node2,
127
127
  PageHeader: () => PageHeader,
128
128
  Pane: () => Pane,
129
129
  PanelAction: () => PanelAction,
@@ -6248,6 +6248,7 @@ function DropdownInner({
6248
6248
  searchable = false,
6249
6249
  onSearchChange,
6250
6250
  searchDebounceMs = 300,
6251
+ iconSize,
6251
6252
  fluid = false,
6252
6253
  upward = false,
6253
6254
  align = "left",
@@ -6255,6 +6256,8 @@ function DropdownInner({
6255
6256
  renderOption,
6256
6257
  renderTag,
6257
6258
  renderEmpty,
6259
+ wrapDescriptions = false,
6260
+ showDescriptionInTrigger = false,
6258
6261
  maxMenuHeight = 300,
6259
6262
  className = "",
6260
6263
  style,
@@ -6262,6 +6265,7 @@ function DropdownInner({
6262
6265
  "aria-labelledby": ariaLabelledBy,
6263
6266
  onOpen,
6264
6267
  onClose,
6268
+ onBlur,
6265
6269
  children
6266
6270
  }, ref) {
6267
6271
  const generatedId = (0, import_react20.useId)();
@@ -6573,9 +6577,13 @@ function DropdownInner({
6573
6577
  };
6574
6578
  const selectedOpt = getSelectedOption();
6575
6579
  const hasValue = mode === "multiselect" ? (currentValue || []).length > 0 : currentValue != null;
6576
- const renderIcon = (icon) => {
6580
+ const renderIcon = (icon, size) => {
6581
+ const sizeStyle = size ? { "--oc-dropdown-icon-size": `${size}px` } : void 0;
6577
6582
  if (typeof icon === "string") {
6578
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: icon, alt: "", className: "oc-dropdown__option-icon-img" });
6583
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: icon, alt: "", className: "oc-dropdown__option-icon-img", style: sizeStyle });
6584
+ }
6585
+ if (size) {
6586
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: sizeStyle, children: icon });
6579
6587
  }
6580
6588
  return icon;
6581
6589
  };
@@ -6606,8 +6614,11 @@ function DropdownInner({
6606
6614
  }
6607
6615
  if (mode === "select" && selectedOpt && !Array.isArray(selectedOpt)) {
6608
6616
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "oc-dropdown__trigger-content", children: [
6609
- selectedOpt.icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__trigger-icon", children: renderIcon(selectedOpt.icon) }),
6610
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__value", children: selectedOpt.label })
6617
+ selectedOpt.icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__trigger-icon", children: renderIcon(selectedOpt.icon, selectedOpt.iconSize ?? iconSize) }),
6618
+ showDescriptionInTrigger && selectedOpt.description ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "oc-dropdown__trigger-value-group", children: [
6619
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__value", children: selectedOpt.label }),
6620
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__trigger-description", children: selectedOpt.description })
6621
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__value", children: selectedOpt.label })
6611
6622
  ] });
6612
6623
  }
6613
6624
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "oc-dropdown__trigger-content", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__placeholder", children: placeholder }) });
@@ -6743,7 +6754,7 @@ function DropdownInner({
6743
6754
  onMouseEnter: () => !opt.disabled && setFocusedIndex(index),
6744
6755
  "data-oc-dropdown-index": index,
6745
6756
  children: [
6746
- opt.icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__option-icon", children: renderIcon(opt.icon) }),
6757
+ opt.icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__option-icon", children: renderIcon(opt.icon, opt.iconSize ?? iconSize) }),
6747
6758
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "oc-dropdown__option-content", children: [
6748
6759
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__option-label", children: opt.label }),
6749
6760
  opt.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "oc-dropdown__option-description", children: opt.description })
@@ -6829,12 +6840,23 @@ function DropdownInner({
6829
6840
  itemCounterRef.current = 0;
6830
6841
  }
6831
6842
  }, [isOpen, mode]);
6843
+ const handleFocusOut = (0, import_react20.useCallback)(
6844
+ (e) => {
6845
+ if (!onBlur) return;
6846
+ if (containerRef.current && e.relatedTarget instanceof Node && containerRef.current.contains(e.relatedTarget)) {
6847
+ return;
6848
+ }
6849
+ onBlur(e);
6850
+ },
6851
+ [onBlur]
6852
+ );
6832
6853
  const rootClasses = [
6833
6854
  "oc-dropdown",
6834
6855
  `oc-dropdown--${mode}`,
6835
6856
  fluid && "oc-dropdown--fluid",
6836
6857
  isOpen && "oc-dropdown--open",
6837
6858
  disabled && "oc-dropdown--disabled",
6859
+ wrapDescriptions && "oc-dropdown--wrap-descriptions",
6838
6860
  className
6839
6861
  ].filter(Boolean).join(" ");
6840
6862
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
@@ -6851,6 +6873,7 @@ function DropdownInner({
6851
6873
  className: rootClasses,
6852
6874
  style,
6853
6875
  onKeyDown: mode === "menu" ? handleMenuKeyDown : handleKeyDown,
6876
+ onBlur: handleFocusOut,
6854
6877
  children: [
6855
6878
  renderTriggerElement(),
6856
6879
  renderMenu()
@@ -6886,7 +6909,7 @@ var dropdownStyles = `
6886
6909
  align-items: center;
6887
6910
  justify-content: space-between;
6888
6911
  gap: var(--oc-spacing-sm);
6889
- min-height: 38px;
6912
+ min-height: 44px;
6890
6913
  padding: 6px 12px;
6891
6914
  background: var(--oc-bg-surface);
6892
6915
  border: 1px solid var(--oc-border-default);
@@ -6962,8 +6985,15 @@ var dropdownStyles = `
6962
6985
  }
6963
6986
 
6964
6987
  .oc-dropdown__trigger-icon svg {
6965
- width: 16px;
6966
- height: 16px;
6988
+ width: var(--oc-dropdown-icon-size, 16px);
6989
+ height: var(--oc-dropdown-icon-size, 16px);
6990
+ }
6991
+
6992
+ .oc-dropdown__trigger-icon .oc-dropdown__option-icon-img {
6993
+ width: var(--oc-dropdown-icon-size, 16px);
6994
+ height: var(--oc-dropdown-icon-size, 16px);
6995
+ object-fit: contain;
6996
+ border-radius: 2px;
6967
6997
  }
6968
6998
 
6969
6999
  .oc-dropdown__value {
@@ -6974,6 +7004,22 @@ var dropdownStyles = `
6974
7004
  color: var(--oc-fg-primary);
6975
7005
  }
6976
7006
 
7007
+ .oc-dropdown__trigger-value-group {
7008
+ display: flex;
7009
+ flex-direction: column;
7010
+ flex: 1;
7011
+ min-width: 0;
7012
+ }
7013
+
7014
+ .oc-dropdown__trigger-description {
7015
+ font-size: var(--oc-font-size-xs);
7016
+ color: var(--oc-fg-secondary);
7017
+ line-height: var(--oc-line-height-normal);
7018
+ white-space: nowrap;
7019
+ overflow: hidden;
7020
+ text-overflow: ellipsis;
7021
+ }
7022
+
6977
7023
  .oc-dropdown__placeholder {
6978
7024
  flex: 1;
6979
7025
  white-space: nowrap;
@@ -7140,6 +7186,7 @@ var dropdownStyles = `
7140
7186
  display: flex;
7141
7187
  align-items: center;
7142
7188
  gap: var(--oc-spacing-sm);
7189
+ min-height: 44px;
7143
7190
  padding: 10px 14px;
7144
7191
  border-bottom: 1px solid var(--oc-border-default);
7145
7192
  }
@@ -7218,6 +7265,7 @@ var dropdownStyles = `
7218
7265
  display: flex;
7219
7266
  align-items: center;
7220
7267
  gap: var(--oc-spacing-sm);
7268
+ min-height: 44px;
7221
7269
  padding: 10px 14px;
7222
7270
  font-size: var(--oc-font-size-sm);
7223
7271
  color: var(--oc-fg-primary);
@@ -7261,13 +7309,13 @@ var dropdownStyles = `
7261
7309
  }
7262
7310
 
7263
7311
  .oc-dropdown__option-icon svg {
7264
- width: 16px;
7265
- height: 16px;
7312
+ width: var(--oc-dropdown-icon-size, 16px);
7313
+ height: var(--oc-dropdown-icon-size, 16px);
7266
7314
  }
7267
7315
 
7268
7316
  .oc-dropdown__option-icon-img {
7269
- width: 16px;
7270
- height: 16px;
7317
+ width: var(--oc-dropdown-icon-size, 16px);
7318
+ height: var(--oc-dropdown-icon-size, 16px);
7271
7319
  object-fit: contain;
7272
7320
  border-radius: 2px;
7273
7321
  }
@@ -7295,6 +7343,12 @@ var dropdownStyles = `
7295
7343
  text-overflow: ellipsis;
7296
7344
  }
7297
7345
 
7346
+ .oc-dropdown--wrap-descriptions .oc-dropdown__option-description {
7347
+ white-space: normal;
7348
+ overflow: visible;
7349
+ text-overflow: clip;
7350
+ }
7351
+
7298
7352
  .oc-dropdown__option--selected .oc-dropdown__option-description {
7299
7353
  color: var(--oc-accent);
7300
7354
  opacity: 0.7;
@@ -7314,6 +7368,7 @@ var dropdownStyles = `
7314
7368
  display: flex;
7315
7369
  align-items: center;
7316
7370
  gap: var(--oc-spacing-sm);
7371
+ min-height: 44px;
7317
7372
  padding: 10px 14px;
7318
7373
  font-size: var(--oc-font-size-sm);
7319
7374
  color: var(--oc-fg-primary);
@@ -7348,8 +7403,8 @@ var dropdownStyles = `
7348
7403
  }
7349
7404
 
7350
7405
  .oc-dropdown__item-icon svg {
7351
- width: 16px;
7352
- height: 16px;
7406
+ width: var(--oc-dropdown-icon-size, 16px);
7407
+ height: var(--oc-dropdown-icon-size, 16px);
7353
7408
  }
7354
7409
 
7355
7410
  .oc-dropdown__item-label {
@@ -7407,8 +7462,13 @@ var dropdownStyles = `
7407
7462
  /* \u2500\u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7408
7463
 
7409
7464
  @media (max-width: 600px) {
7465
+ /* 16px minimum prevents iOS Safari auto-zoom on focus */
7410
7466
  .oc-dropdown__trigger {
7411
- min-height: 44px;
7467
+ font-size: 16px;
7468
+ }
7469
+
7470
+ .oc-dropdown__search-input {
7471
+ font-size: 16px;
7412
7472
  }
7413
7473
 
7414
7474
  .oc-dropdown--fluid .oc-dropdown__menu {
@@ -7416,6 +7476,18 @@ var dropdownStyles = `
7416
7476
  right: 0;
7417
7477
  }
7418
7478
  }
7479
+
7480
+ /* \u2500\u2500\u2500 Coarse pointer (touch) feedback \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7481
+
7482
+ @media (pointer: coarse) {
7483
+ .oc-dropdown__option:active:not(.oc-dropdown__option--disabled) {
7484
+ background: rgba(15, 118, 110, 0.12);
7485
+ }
7486
+
7487
+ .oc-dropdown__item:active:not(.oc-dropdown__item--disabled) {
7488
+ background: rgba(15, 118, 110, 0.12);
7489
+ }
7490
+ }
7419
7491
  `;
7420
7492
 
7421
7493
  // src/Checkbox/Checkbox.tsx
@@ -18654,7 +18726,7 @@ var dataGridStyles = `
18654
18726
  // src/Node/Node.tsx
18655
18727
  var import_react52 = require("react");
18656
18728
  var import_jsx_runtime52 = require("react/jsx-runtime");
18657
- var Node = (0, import_react52.forwardRef)(
18729
+ var Node2 = (0, import_react52.forwardRef)(
18658
18730
  ({
18659
18731
  size = "sm",
18660
18732
  variant = "default",
@@ -18679,7 +18751,7 @@ var Node = (0, import_react52.forwardRef)(
18679
18751
  ] });
18680
18752
  }
18681
18753
  );
18682
- Node.displayName = "Node";
18754
+ Node2.displayName = "Node";
18683
18755
 
18684
18756
  // src/Node/Node.styles.ts
18685
18757
  var nodeStyles = `
@@ -19041,7 +19113,7 @@ var RelationshipBadge = (0, import_react54.forwardRef)(
19041
19113
  ...props,
19042
19114
  children: [
19043
19115
  /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
19044
- Node,
19116
+ Node2,
19045
19117
  {
19046
19118
  size: size === "sm" ? "xs" : "sm",
19047
19119
  variant: active ? "active" : "muted",
@@ -19182,7 +19254,7 @@ var RelationshipPill = (0, import_react55.forwardRef)(
19182
19254
  ...props,
19183
19255
  children: [
19184
19256
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19185
- Node,
19257
+ Node2,
19186
19258
  {
19187
19259
  size: "xs",
19188
19260
  variant: active ? "active" : "default"
package/dist/index.mjs CHANGED
@@ -5987,6 +5987,7 @@ function DropdownInner({
5987
5987
  searchable = false,
5988
5988
  onSearchChange,
5989
5989
  searchDebounceMs = 300,
5990
+ iconSize,
5990
5991
  fluid = false,
5991
5992
  upward = false,
5992
5993
  align = "left",
@@ -5994,6 +5995,8 @@ function DropdownInner({
5994
5995
  renderOption,
5995
5996
  renderTag,
5996
5997
  renderEmpty,
5998
+ wrapDescriptions = false,
5999
+ showDescriptionInTrigger = false,
5997
6000
  maxMenuHeight = 300,
5998
6001
  className = "",
5999
6002
  style,
@@ -6001,6 +6004,7 @@ function DropdownInner({
6001
6004
  "aria-labelledby": ariaLabelledBy,
6002
6005
  onOpen,
6003
6006
  onClose,
6007
+ onBlur,
6004
6008
  children
6005
6009
  }, ref) {
6006
6010
  const generatedId = useId4();
@@ -6312,9 +6316,13 @@ function DropdownInner({
6312
6316
  };
6313
6317
  const selectedOpt = getSelectedOption();
6314
6318
  const hasValue = mode === "multiselect" ? (currentValue || []).length > 0 : currentValue != null;
6315
- const renderIcon = (icon) => {
6319
+ const renderIcon = (icon, size) => {
6320
+ const sizeStyle = size ? { "--oc-dropdown-icon-size": `${size}px` } : void 0;
6316
6321
  if (typeof icon === "string") {
6317
- return /* @__PURE__ */ jsx20("img", { src: icon, alt: "", className: "oc-dropdown__option-icon-img" });
6322
+ return /* @__PURE__ */ jsx20("img", { src: icon, alt: "", className: "oc-dropdown__option-icon-img", style: sizeStyle });
6323
+ }
6324
+ if (size) {
6325
+ return /* @__PURE__ */ jsx20("span", { style: sizeStyle, children: icon });
6318
6326
  }
6319
6327
  return icon;
6320
6328
  };
@@ -6345,8 +6353,11 @@ function DropdownInner({
6345
6353
  }
6346
6354
  if (mode === "select" && selectedOpt && !Array.isArray(selectedOpt)) {
6347
6355
  return /* @__PURE__ */ jsxs17("div", { className: "oc-dropdown__trigger-content", children: [
6348
- selectedOpt.icon && /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__trigger-icon", children: renderIcon(selectedOpt.icon) }),
6349
- /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__value", children: selectedOpt.label })
6356
+ selectedOpt.icon && /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__trigger-icon", children: renderIcon(selectedOpt.icon, selectedOpt.iconSize ?? iconSize) }),
6357
+ showDescriptionInTrigger && selectedOpt.description ? /* @__PURE__ */ jsxs17("div", { className: "oc-dropdown__trigger-value-group", children: [
6358
+ /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__value", children: selectedOpt.label }),
6359
+ /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__trigger-description", children: selectedOpt.description })
6360
+ ] }) : /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__value", children: selectedOpt.label })
6350
6361
  ] });
6351
6362
  }
6352
6363
  return /* @__PURE__ */ jsx20("div", { className: "oc-dropdown__trigger-content", children: /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__placeholder", children: placeholder }) });
@@ -6482,7 +6493,7 @@ function DropdownInner({
6482
6493
  onMouseEnter: () => !opt.disabled && setFocusedIndex(index),
6483
6494
  "data-oc-dropdown-index": index,
6484
6495
  children: [
6485
- opt.icon && /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__option-icon", children: renderIcon(opt.icon) }),
6496
+ opt.icon && /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__option-icon", children: renderIcon(opt.icon, opt.iconSize ?? iconSize) }),
6486
6497
  /* @__PURE__ */ jsxs17("div", { className: "oc-dropdown__option-content", children: [
6487
6498
  /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__option-label", children: opt.label }),
6488
6499
  opt.description && /* @__PURE__ */ jsx20("span", { className: "oc-dropdown__option-description", children: opt.description })
@@ -6568,12 +6579,23 @@ function DropdownInner({
6568
6579
  itemCounterRef.current = 0;
6569
6580
  }
6570
6581
  }, [isOpen, mode]);
6582
+ const handleFocusOut = useCallback7(
6583
+ (e) => {
6584
+ if (!onBlur) return;
6585
+ if (containerRef.current && e.relatedTarget instanceof Node && containerRef.current.contains(e.relatedTarget)) {
6586
+ return;
6587
+ }
6588
+ onBlur(e);
6589
+ },
6590
+ [onBlur]
6591
+ );
6571
6592
  const rootClasses = [
6572
6593
  "oc-dropdown",
6573
6594
  `oc-dropdown--${mode}`,
6574
6595
  fluid && "oc-dropdown--fluid",
6575
6596
  isOpen && "oc-dropdown--open",
6576
6597
  disabled && "oc-dropdown--disabled",
6598
+ wrapDescriptions && "oc-dropdown--wrap-descriptions",
6577
6599
  className
6578
6600
  ].filter(Boolean).join(" ");
6579
6601
  return /* @__PURE__ */ jsxs17(
@@ -6590,6 +6612,7 @@ function DropdownInner({
6590
6612
  className: rootClasses,
6591
6613
  style,
6592
6614
  onKeyDown: mode === "menu" ? handleMenuKeyDown : handleKeyDown,
6615
+ onBlur: handleFocusOut,
6593
6616
  children: [
6594
6617
  renderTriggerElement(),
6595
6618
  renderMenu()
@@ -6625,7 +6648,7 @@ var dropdownStyles = `
6625
6648
  align-items: center;
6626
6649
  justify-content: space-between;
6627
6650
  gap: var(--oc-spacing-sm);
6628
- min-height: 38px;
6651
+ min-height: 44px;
6629
6652
  padding: 6px 12px;
6630
6653
  background: var(--oc-bg-surface);
6631
6654
  border: 1px solid var(--oc-border-default);
@@ -6701,8 +6724,15 @@ var dropdownStyles = `
6701
6724
  }
6702
6725
 
6703
6726
  .oc-dropdown__trigger-icon svg {
6704
- width: 16px;
6705
- height: 16px;
6727
+ width: var(--oc-dropdown-icon-size, 16px);
6728
+ height: var(--oc-dropdown-icon-size, 16px);
6729
+ }
6730
+
6731
+ .oc-dropdown__trigger-icon .oc-dropdown__option-icon-img {
6732
+ width: var(--oc-dropdown-icon-size, 16px);
6733
+ height: var(--oc-dropdown-icon-size, 16px);
6734
+ object-fit: contain;
6735
+ border-radius: 2px;
6706
6736
  }
6707
6737
 
6708
6738
  .oc-dropdown__value {
@@ -6713,6 +6743,22 @@ var dropdownStyles = `
6713
6743
  color: var(--oc-fg-primary);
6714
6744
  }
6715
6745
 
6746
+ .oc-dropdown__trigger-value-group {
6747
+ display: flex;
6748
+ flex-direction: column;
6749
+ flex: 1;
6750
+ min-width: 0;
6751
+ }
6752
+
6753
+ .oc-dropdown__trigger-description {
6754
+ font-size: var(--oc-font-size-xs);
6755
+ color: var(--oc-fg-secondary);
6756
+ line-height: var(--oc-line-height-normal);
6757
+ white-space: nowrap;
6758
+ overflow: hidden;
6759
+ text-overflow: ellipsis;
6760
+ }
6761
+
6716
6762
  .oc-dropdown__placeholder {
6717
6763
  flex: 1;
6718
6764
  white-space: nowrap;
@@ -6879,6 +6925,7 @@ var dropdownStyles = `
6879
6925
  display: flex;
6880
6926
  align-items: center;
6881
6927
  gap: var(--oc-spacing-sm);
6928
+ min-height: 44px;
6882
6929
  padding: 10px 14px;
6883
6930
  border-bottom: 1px solid var(--oc-border-default);
6884
6931
  }
@@ -6957,6 +7004,7 @@ var dropdownStyles = `
6957
7004
  display: flex;
6958
7005
  align-items: center;
6959
7006
  gap: var(--oc-spacing-sm);
7007
+ min-height: 44px;
6960
7008
  padding: 10px 14px;
6961
7009
  font-size: var(--oc-font-size-sm);
6962
7010
  color: var(--oc-fg-primary);
@@ -7000,13 +7048,13 @@ var dropdownStyles = `
7000
7048
  }
7001
7049
 
7002
7050
  .oc-dropdown__option-icon svg {
7003
- width: 16px;
7004
- height: 16px;
7051
+ width: var(--oc-dropdown-icon-size, 16px);
7052
+ height: var(--oc-dropdown-icon-size, 16px);
7005
7053
  }
7006
7054
 
7007
7055
  .oc-dropdown__option-icon-img {
7008
- width: 16px;
7009
- height: 16px;
7056
+ width: var(--oc-dropdown-icon-size, 16px);
7057
+ height: var(--oc-dropdown-icon-size, 16px);
7010
7058
  object-fit: contain;
7011
7059
  border-radius: 2px;
7012
7060
  }
@@ -7034,6 +7082,12 @@ var dropdownStyles = `
7034
7082
  text-overflow: ellipsis;
7035
7083
  }
7036
7084
 
7085
+ .oc-dropdown--wrap-descriptions .oc-dropdown__option-description {
7086
+ white-space: normal;
7087
+ overflow: visible;
7088
+ text-overflow: clip;
7089
+ }
7090
+
7037
7091
  .oc-dropdown__option--selected .oc-dropdown__option-description {
7038
7092
  color: var(--oc-accent);
7039
7093
  opacity: 0.7;
@@ -7053,6 +7107,7 @@ var dropdownStyles = `
7053
7107
  display: flex;
7054
7108
  align-items: center;
7055
7109
  gap: var(--oc-spacing-sm);
7110
+ min-height: 44px;
7056
7111
  padding: 10px 14px;
7057
7112
  font-size: var(--oc-font-size-sm);
7058
7113
  color: var(--oc-fg-primary);
@@ -7087,8 +7142,8 @@ var dropdownStyles = `
7087
7142
  }
7088
7143
 
7089
7144
  .oc-dropdown__item-icon svg {
7090
- width: 16px;
7091
- height: 16px;
7145
+ width: var(--oc-dropdown-icon-size, 16px);
7146
+ height: var(--oc-dropdown-icon-size, 16px);
7092
7147
  }
7093
7148
 
7094
7149
  .oc-dropdown__item-label {
@@ -7146,8 +7201,13 @@ var dropdownStyles = `
7146
7201
  /* \u2500\u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7147
7202
 
7148
7203
  @media (max-width: 600px) {
7204
+ /* 16px minimum prevents iOS Safari auto-zoom on focus */
7149
7205
  .oc-dropdown__trigger {
7150
- min-height: 44px;
7206
+ font-size: 16px;
7207
+ }
7208
+
7209
+ .oc-dropdown__search-input {
7210
+ font-size: 16px;
7151
7211
  }
7152
7212
 
7153
7213
  .oc-dropdown--fluid .oc-dropdown__menu {
@@ -7155,6 +7215,18 @@ var dropdownStyles = `
7155
7215
  right: 0;
7156
7216
  }
7157
7217
  }
7218
+
7219
+ /* \u2500\u2500\u2500 Coarse pointer (touch) feedback \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
7220
+
7221
+ @media (pointer: coarse) {
7222
+ .oc-dropdown__option:active:not(.oc-dropdown__option--disabled) {
7223
+ background: rgba(15, 118, 110, 0.12);
7224
+ }
7225
+
7226
+ .oc-dropdown__item:active:not(.oc-dropdown__item--disabled) {
7227
+ background: rgba(15, 118, 110, 0.12);
7228
+ }
7229
+ }
7158
7230
  `;
7159
7231
 
7160
7232
  // src/Checkbox/Checkbox.tsx
@@ -18399,7 +18471,7 @@ var dataGridStyles = `
18399
18471
  // src/Node/Node.tsx
18400
18472
  import { forwardRef as forwardRef52 } from "react";
18401
18473
  import { jsx as jsx52, jsxs as jsxs48 } from "react/jsx-runtime";
18402
- var Node = forwardRef52(
18474
+ var Node2 = forwardRef52(
18403
18475
  ({
18404
18476
  size = "sm",
18405
18477
  variant = "default",
@@ -18424,7 +18496,7 @@ var Node = forwardRef52(
18424
18496
  ] });
18425
18497
  }
18426
18498
  );
18427
- Node.displayName = "Node";
18499
+ Node2.displayName = "Node";
18428
18500
 
18429
18501
  // src/Node/Node.styles.ts
18430
18502
  var nodeStyles = `
@@ -18786,7 +18858,7 @@ var RelationshipBadge = forwardRef54(
18786
18858
  ...props,
18787
18859
  children: [
18788
18860
  /* @__PURE__ */ jsx54(
18789
- Node,
18861
+ Node2,
18790
18862
  {
18791
18863
  size: size === "sm" ? "xs" : "sm",
18792
18864
  variant: active ? "active" : "muted",
@@ -18927,7 +18999,7 @@ var RelationshipPill = forwardRef55(
18927
18999
  ...props,
18928
19000
  children: [
18929
19001
  /* @__PURE__ */ jsx55(
18930
- Node,
19002
+ Node2,
18931
19003
  {
18932
19004
  size: "xs",
18933
19005
  variant: active ? "active" : "default"
@@ -20630,7 +20702,7 @@ export {
20630
20702
  ModalHeader,
20631
20703
  NavBar,
20632
20704
  NewDiscussionButton,
20633
- Node,
20705
+ Node2 as Node,
20634
20706
  PageHeader,
20635
20707
  Pane,
20636
20708
  PanelAction,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@os-legal/ui",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "React component library for OpenContracts design system",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",