@mieweb/ui 0.6.1-dev.172 → 0.6.1-dev.174

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.cjs CHANGED
@@ -38,7 +38,7 @@ var chunk74NOFB34_cjs = require('./chunk-74NOFB34.cjs');
38
38
  var chunkFZQAF3WA_cjs = require('./chunk-FZQAF3WA.cjs');
39
39
  var chunk6RV7HQ4U_cjs = require('./chunk-6RV7HQ4U.cjs');
40
40
  var chunkUL3PQ7HL_cjs = require('./chunk-UL3PQ7HL.cjs');
41
- var chunk3Q2VWPML_cjs = require('./chunk-3Q2VWPML.cjs');
41
+ var chunk5INNPOZZ_cjs = require('./chunk-5INNPOZZ.cjs');
42
42
  var chunkS7JQ3FV5_cjs = require('./chunk-S7JQ3FV5.cjs');
43
43
  var chunkGOKC4CCZ_cjs = require('./chunk-GOKC4CCZ.cjs');
44
44
  require('./chunk-GLXTVCHN.cjs');
@@ -60,12 +60,12 @@ var chunkFQ3UCZUX_cjs = require('./chunk-FQ3UCZUX.cjs');
60
60
  require('./chunk-VBWRH4UW.cjs');
61
61
  var chunkBWYYA3LQ_cjs = require('./chunk-BWYYA3LQ.cjs');
62
62
  var chunkRI56YPED_cjs = require('./chunk-RI56YPED.cjs');
63
- var chunk3YRDZBW6_cjs = require('./chunk-3YRDZBW6.cjs');
63
+ var chunkQPOTSLY6_cjs = require('./chunk-QPOTSLY6.cjs');
64
64
  var chunkU3ABLVYH_cjs = require('./chunk-U3ABLVYH.cjs');
65
65
  var chunkRH43XBNV_cjs = require('./chunk-RH43XBNV.cjs');
66
66
  var chunkXP6HELVG_cjs = require('./chunk-XP6HELVG.cjs');
67
67
  var chunkUOOH356R_cjs = require('./chunk-UOOH356R.cjs');
68
- var chunkFRT6RQND_cjs = require('./chunk-FRT6RQND.cjs');
68
+ var chunkYWHSQH7S_cjs = require('./chunk-YWHSQH7S.cjs');
69
69
  var chunkZHBANUBI_cjs = require('./chunk-ZHBANUBI.cjs');
70
70
  var chunkJC6Y3LGF_cjs = require('./chunk-JC6Y3LGF.cjs');
71
71
  var chunkKJPOFUF5_cjs = require('./chunk-KJPOFUF5.cjs');
@@ -280,7 +280,7 @@ function AddContactModal({
280
280
  }
281
281
  ),
282
282
  /* @__PURE__ */ jsxRuntime.jsx(
283
- chunkFRT6RQND_cjs.Select,
283
+ chunkYWHSQH7S_cjs.Select,
284
284
  {
285
285
  id: "contact-sex",
286
286
  options: SEX_OPTIONS,
@@ -6773,8 +6773,8 @@ function ConcernRow({
6773
6773
  ]
6774
6774
  }
6775
6775
  ),
6776
- !readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunk3YRDZBW6_cjs.RowActionToolbar, { label: `Actions for ${current.text}`, align: "top", children: visibleActions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
6777
- chunk3YRDZBW6_cjs.RowIconButton,
6776
+ !readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkQPOTSLY6_cjs.RowActionToolbar, { label: `Actions for ${current.text}`, align: "top", children: visibleActions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
6777
+ chunkQPOTSLY6_cjs.RowIconButton,
6778
6778
  {
6779
6779
  label: ACTION_META[action].label,
6780
6780
  icon: ACTION_META[action].icon,
@@ -7203,13 +7203,13 @@ function OrderRow({
7203
7203
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7204
7204
  /* @__PURE__ */ jsxRuntime.jsx(OrderContent, { order }),
7205
7205
  interactive && /* @__PURE__ */ jsxRuntime.jsxs(
7206
- chunk3YRDZBW6_cjs.RowActionToolbar,
7206
+ chunkQPOTSLY6_cjs.RowActionToolbar,
7207
7207
  {
7208
7208
  label: `Actions for ${order.display}`,
7209
7209
  group: "order",
7210
7210
  children: [
7211
7211
  canEdit && /* @__PURE__ */ jsxRuntime.jsx(
7212
- chunk3YRDZBW6_cjs.RowIconButton,
7212
+ chunkQPOTSLY6_cjs.RowIconButton,
7213
7213
  {
7214
7214
  label: "Edit",
7215
7215
  icon: chunkUTYUT5YY_cjs.Pencil,
@@ -7277,7 +7277,7 @@ function OrderRow({
7277
7277
  }
7278
7278
  ),
7279
7279
  controls?.remove && /* @__PURE__ */ jsxRuntime.jsx(
7280
- chunk3YRDZBW6_cjs.RowIconButton,
7280
+ chunkQPOTSLY6_cjs.RowIconButton,
7281
7281
  {
7282
7282
  label: "Remove",
7283
7283
  icon: chunkUTYUT5YY_cjs.Trash2,
@@ -7445,7 +7445,7 @@ var Assessment = React10__namespace.forwardRef(
7445
7445
  null
7446
7446
  );
7447
7447
  const [announcement, setAnnouncement] = chunkYVPC65ZJ_cjs.useLiveAnnouncement();
7448
- const ambientCodeLookup = chunk3YRDZBW6_cjs.useCodeLookupConfig();
7448
+ const ambientCodeLookup = chunkQPOTSLY6_cjs.useCodeLookupConfig();
7449
7449
  const effectiveRenderOrderSearch = renderOrderSearch === false ? void 0 : renderOrderSearch ?? (ambientCodeLookup ? contextOrderSearch(ambientCodeLookup) : void 0);
7450
7450
  const concernById = React10__namespace.useMemo(
7451
7451
  () => new Map(concerns.map((c) => [c.concernId, c])),
@@ -7700,7 +7700,7 @@ var Assessment = React10__namespace.forwardRef(
7700
7700
  assertion.verificationStatus !== "confirmed" && /* @__PURE__ */ jsxRuntime.jsx(chunkEL2RSQTJ_cjs.Badge, { variant: "warning", size: "sm", children: assertion.verificationStatus }),
7701
7701
  /* @__PURE__ */ jsxRuntime.jsx(CodingChips, { coding: assertion.coding }),
7702
7702
  !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
7703
- chunk3YRDZBW6_cjs.RowActionToolbar,
7703
+ chunkQPOTSLY6_cjs.RowActionToolbar,
7704
7704
  {
7705
7705
  label: `Actions for ${assertion.text}`,
7706
7706
  align: "top",
@@ -7710,7 +7710,7 @@ var Assessment = React10__namespace.forwardRef(
7710
7710
  if (action === "add-order" && !onAddOrder && !onAction)
7711
7711
  return null;
7712
7712
  return /* @__PURE__ */ jsxRuntime.jsx(
7713
- chunk3YRDZBW6_cjs.RowIconButton,
7713
+ chunkQPOTSLY6_cjs.RowIconButton,
7714
7714
  {
7715
7715
  label: meta.label,
7716
7716
  icon: meta.icon,
@@ -10702,7 +10702,7 @@ function ConditionEditor({
10702
10702
  "data-testid": dataTestId
10703
10703
  }) {
10704
10704
  const prior = concern ? currentAssertion(concern) : void 0;
10705
- const ambientCodeLookup = chunk3YRDZBW6_cjs.useCodeLookupConfig();
10705
+ const ambientCodeLookup = chunkQPOTSLY6_cjs.useCodeLookupConfig();
10706
10706
  const effectiveRenderCodeSearch = renderCodeSearch === false ? void 0 : renderCodeSearch ?? (ambientCodeLookup ? contextConditionCodeSearch(ambientCodeLookup) : void 0);
10707
10707
  const [text, setText] = React10__namespace.useState("");
10708
10708
  const [coding, setCoding] = React10__namespace.useState([]);
@@ -10834,7 +10834,7 @@ function ConditionEditor({
10834
10834
  ),
10835
10835
  mode === "relate" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10836
10836
  /* @__PURE__ */ jsxRuntime.jsx(
10837
- chunkFRT6RQND_cjs.Select,
10837
+ chunkYWHSQH7S_cjs.Select,
10838
10838
  {
10839
10839
  label: "Relationship",
10840
10840
  options: RELATIONSHIP_OPTIONS,
@@ -10843,7 +10843,7 @@ function ConditionEditor({
10843
10843
  }
10844
10844
  ),
10845
10845
  /* @__PURE__ */ jsxRuntime.jsx(
10846
- chunkFRT6RQND_cjs.Select,
10846
+ chunkYWHSQH7S_cjs.Select,
10847
10847
  {
10848
10848
  label: "Related problem",
10849
10849
  placeholder: "Select a problem\u2026",
@@ -10945,7 +10945,7 @@ function ConditionEditor({
10945
10945
  coding.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-xs", children: "Optional \u2014 a name-only problem is valid. Codes can be added any time." }),
10946
10946
  coding.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
10947
10947
  /* @__PURE__ */ jsxRuntime.jsx(
10948
- chunkFRT6RQND_cjs.Select,
10948
+ chunkYWHSQH7S_cjs.Select,
10949
10949
  {
10950
10950
  "aria-label": `Coding system ${i + 1}`,
10951
10951
  options: CODING_SYSTEMS.map((s) => ({
@@ -11010,7 +11010,7 @@ function ConditionEditor({
11010
11010
  ] }, i))
11011
11011
  ] }),
11012
11012
  /* @__PURE__ */ jsxRuntime.jsx(
11013
- chunkFRT6RQND_cjs.Select,
11013
+ chunkYWHSQH7S_cjs.Select,
11014
11014
  {
11015
11015
  label: "Verification status",
11016
11016
  options: VERIFICATION_OPTIONS,
@@ -11695,7 +11695,7 @@ function CheckrIntegration({
11695
11695
  }
11696
11696
  ),
11697
11697
  /* @__PURE__ */ jsxRuntime.jsx(
11698
- chunkFRT6RQND_cjs.Select,
11698
+ chunkYWHSQH7S_cjs.Select,
11699
11699
  {
11700
11700
  label: packageLabel,
11701
11701
  options: packageOptions,
@@ -14083,7 +14083,7 @@ function CSVColumnCard({
14083
14083
  hasError && !column.ignored && "ring-warning-700/50 dark:ring-warning-400/50 ring-2"
14084
14084
  ),
14085
14085
  children: /* @__PURE__ */ jsxRuntime.jsx(
14086
- chunkFRT6RQND_cjs.Select,
14086
+ chunkYWHSQH7S_cjs.Select,
14087
14087
  {
14088
14088
  id: formatHtmlId(column.name),
14089
14089
  label: `Map ${column.name} to field`,
@@ -14112,7 +14112,7 @@ function CSVColumnCard({
14112
14112
  }
14113
14113
  ),
14114
14114
  /* @__PURE__ */ jsxRuntime.jsx(
14115
- chunkFRT6RQND_cjs.Select,
14115
+ chunkYWHSQH7S_cjs.Select,
14116
14116
  {
14117
14117
  id: formatHtmlId(column.name, column.mappedTo),
14118
14118
  label: `${column.name} sub-field`,
@@ -17373,7 +17373,7 @@ function ClaimProviderForm({
17373
17373
  }
17374
17374
  ),
17375
17375
  /* @__PURE__ */ jsxRuntime.jsx(
17376
- chunkFRT6RQND_cjs.Select,
17376
+ chunkYWHSQH7S_cjs.Select,
17377
17377
  {
17378
17378
  label: "Role at this Organization",
17379
17379
  value: formData.role,
@@ -17403,7 +17403,7 @@ function ClaimProviderForm({
17403
17403
  "data-slot": "claim-form-section",
17404
17404
  className: "space-y-4 border-t border-gray-200 pt-4 dark:border-gray-700",
17405
17405
  children: /* @__PURE__ */ jsxRuntime.jsx(
17406
- chunkFRT6RQND_cjs.Select,
17406
+ chunkYWHSQH7S_cjs.Select,
17407
17407
  {
17408
17408
  label: "Preferred Language",
17409
17409
  value: formData.preferredLanguage || "en",
@@ -17648,7 +17648,7 @@ function CreateInvoiceModal({
17648
17648
  }
17649
17649
  ),
17650
17650
  /* @__PURE__ */ jsxRuntime.jsx(
17651
- chunkFRT6RQND_cjs.Select,
17651
+ chunkYWHSQH7S_cjs.Select,
17652
17652
  {
17653
17653
  label: "Employer",
17654
17654
  options: employerOptions,
@@ -18339,7 +18339,7 @@ function EditUserRoleModal({
18339
18339
  )
18340
18340
  ] }) }),
18341
18341
  /* @__PURE__ */ jsxRuntime.jsx(
18342
- chunkFRT6RQND_cjs.Select,
18342
+ chunkYWHSQH7S_cjs.Select,
18343
18343
  {
18344
18344
  label: "Role",
18345
18345
  value: selectedRoleId,
@@ -18606,7 +18606,7 @@ function EmployeeForm({
18606
18606
  }
18607
18607
  ),
18608
18608
  /* @__PURE__ */ jsxRuntime.jsx(
18609
- chunkFRT6RQND_cjs.Select,
18609
+ chunkYWHSQH7S_cjs.Select,
18610
18610
  {
18611
18611
  label: selectDepartments,
18612
18612
  value: selectedDepartments[0] ?? "",
@@ -18721,7 +18721,7 @@ function EmployeeForm({
18721
18721
  }
18722
18722
  ) }),
18723
18723
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-32", children: /* @__PURE__ */ jsxRuntime.jsx(
18724
- chunkFRT6RQND_cjs.Select,
18724
+ chunkYWHSQH7S_cjs.Select,
18725
18725
  {
18726
18726
  label: index === 0 ? "Type" : void 0,
18727
18727
  "aria-label": index > 0 ? "Phone type" : void 0,
@@ -22745,7 +22745,7 @@ function InviteUserModal({
22745
22745
  }
22746
22746
  ),
22747
22747
  /* @__PURE__ */ jsxRuntime.jsx(
22748
- chunkFRT6RQND_cjs.Select,
22748
+ chunkYWHSQH7S_cjs.Select,
22749
22749
  {
22750
22750
  label: "Role",
22751
22751
  value: roleId,
@@ -26208,7 +26208,7 @@ var defaultOrderTabs = [
26208
26208
  { id: "rejected", label: "Rejected", statuses: ["rejected", "cancelled"] }
26209
26209
  ];
26210
26210
  function orderToMedication(order) {
26211
- const sig = order.detail ? chunk3YRDZBW6_cjs.parseSig(order.detail) : void 0;
26211
+ const sig = order.detail ? chunkQPOTSLY6_cjs.parseSig(order.detail) : void 0;
26212
26212
  return {
26213
26213
  id: order.orderId,
26214
26214
  name: order.display,
@@ -26216,7 +26216,7 @@ function orderToMedication(order) {
26216
26216
  status: "unreconciled",
26217
26217
  indication: order.indication,
26218
26218
  pharmacyNotes: order.notes,
26219
- ...chunk3YRDZBW6_cjs.labelToMedicationFields(order.display),
26219
+ ...chunkQPOTSLY6_cjs.labelToMedicationFields(order.display),
26220
26220
  ...sig && {
26221
26221
  route: sig.route,
26222
26222
  frequency: sig.frequency,
@@ -26287,7 +26287,7 @@ function BaseOrderEditor({
26287
26287
  onSave
26288
26288
  }) {
26289
26289
  const config = TYPE_CONFIG[type];
26290
- const ambientCodeLookup = chunk3YRDZBW6_cjs.useCodeLookupConfig();
26290
+ const ambientCodeLookup = chunkQPOTSLY6_cjs.useCodeLookupConfig();
26291
26291
  const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
26292
26292
  const [draft, setDraft] = React10__namespace.useState(
26293
26293
  () => order ?? {
@@ -26486,7 +26486,7 @@ function OrderEditor({
26486
26486
  display: ""
26487
26487
  };
26488
26488
  return /* @__PURE__ */ jsxRuntime.jsx(
26489
- chunk3YRDZBW6_cjs.MedicationEditor,
26489
+ chunkQPOTSLY6_cjs.MedicationEditor,
26490
26490
  {
26491
26491
  open,
26492
26492
  medication: order ? orderToMedication(order) : void 0,
@@ -29119,7 +29119,7 @@ function RelevanceControl({
29119
29119
  {
29120
29120
  role: "toolbar",
29121
29121
  "aria-label": `Relevance for ${labelPrefix}`,
29122
- onKeyDown: chunk3YRDZBW6_cjs.toolbarKeyNav,
29122
+ onKeyDown: chunkQPOTSLY6_cjs.toolbarKeyNav,
29123
29123
  className: "border-border flex shrink-0 items-center overflow-hidden rounded-md border",
29124
29124
  children: RELEVANCE_ORDER.map((relevance) => {
29125
29125
  const active = value === relevance;
@@ -34570,7 +34570,7 @@ function ReportDashboard({
34570
34570
  ] }),
34571
34571
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
34572
34572
  /* @__PURE__ */ jsxRuntime.jsx(
34573
- chunkFRT6RQND_cjs.Select,
34573
+ chunkYWHSQH7S_cjs.Select,
34574
34574
  {
34575
34575
  "aria-label": "Date range",
34576
34576
  options: Array.isArray(dateRangeOptions) && dateRangeOptions.every(
@@ -36770,7 +36770,7 @@ function ServiceGeneralSettings({
36770
36770
  }
36771
36771
  ),
36772
36772
  categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
36773
- chunkFRT6RQND_cjs.Select,
36773
+ chunkYWHSQH7S_cjs.Select,
36774
36774
  {
36775
36775
  label: "Category",
36776
36776
  value: categoryId || "",
@@ -37925,7 +37925,7 @@ function ServiceShippingSettings({
37925
37925
  "data-slot": "shipping-settings-content",
37926
37926
  children: [
37927
37927
  shippingMethods.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
37928
- chunkFRT6RQND_cjs.Select,
37928
+ chunkYWHSQH7S_cjs.Select,
37929
37929
  {
37930
37930
  label: "Shipping Method",
37931
37931
  value: selectedMethodId || "",
@@ -38007,7 +38007,7 @@ function ServiceShippingSettings({
38007
38007
  }
38008
38008
  ) }),
38009
38009
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-1", children: /* @__PURE__ */ jsxRuntime.jsx(
38010
- chunkFRT6RQND_cjs.Select,
38010
+ chunkYWHSQH7S_cjs.Select,
38011
38011
  {
38012
38012
  label: "State",
38013
38013
  value: address.state,
@@ -38135,7 +38135,7 @@ function SetupServiceModal({
38135
38135
  }
38136
38136
  ),
38137
38137
  showServicePicker && availableServices.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
38138
- chunkFRT6RQND_cjs.Select,
38138
+ chunkYWHSQH7S_cjs.Select,
38139
38139
  {
38140
38140
  label: "Select Service",
38141
38141
  value: formData.serviceId || "",
@@ -38183,7 +38183,7 @@ function SetupServiceModal({
38183
38183
  )
38184
38184
  ] }),
38185
38185
  categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
38186
- chunkFRT6RQND_cjs.Select,
38186
+ chunkYWHSQH7S_cjs.Select,
38187
38187
  {
38188
38188
  label: "Category",
38189
38189
  value: formData.categoryId || "",
@@ -42226,7 +42226,7 @@ function ReportTimeRange({
42226
42226
  className: chunkOR5DRJCW_cjs.cn("flex flex-wrap items-center gap-3", className),
42227
42227
  children: [
42228
42228
  /* @__PURE__ */ jsxRuntime.jsx(
42229
- chunkFRT6RQND_cjs.Select,
42229
+ chunkYWHSQH7S_cjs.Select,
42230
42230
  {
42231
42231
  "aria-label": "Time range",
42232
42232
  value: preset,
@@ -43136,23 +43136,23 @@ Object.defineProperty(exports, "FenceBlock", {
43136
43136
  });
43137
43137
  Object.defineProperty(exports, "FillerWordsModal", {
43138
43138
  enumerable: true,
43139
- get: function () { return chunk3Q2VWPML_cjs.FillerWordsModal; }
43139
+ get: function () { return chunk5INNPOZZ_cjs.FillerWordsModal; }
43140
43140
  });
43141
43141
  Object.defineProperty(exports, "MediaEditor", {
43142
43142
  enumerable: true,
43143
- get: function () { return chunk3Q2VWPML_cjs.MediaEditor; }
43143
+ get: function () { return chunk5INNPOZZ_cjs.MediaEditor; }
43144
43144
  });
43145
43145
  Object.defineProperty(exports, "SilenceSettingsModal", {
43146
43146
  enumerable: true,
43147
- get: function () { return chunk3Q2VWPML_cjs.SilenceSettingsModal; }
43147
+ get: function () { return chunk5INNPOZZ_cjs.SilenceSettingsModal; }
43148
43148
  });
43149
43149
  Object.defineProperty(exports, "SpeedMarkerMenu", {
43150
43150
  enumerable: true,
43151
- get: function () { return chunk3Q2VWPML_cjs.SpeedMarkerMenu; }
43151
+ get: function () { return chunk5INNPOZZ_cjs.SpeedMarkerMenu; }
43152
43152
  });
43153
43153
  Object.defineProperty(exports, "WordEditorModal", {
43154
43154
  enumerable: true,
43155
- get: function () { return chunk3Q2VWPML_cjs.WordEditorModal; }
43155
+ get: function () { return chunk5INNPOZZ_cjs.WordEditorModal; }
43156
43156
  });
43157
43157
  Object.defineProperty(exports, "PLAYBACK_SPEEDS", {
43158
43158
  enumerable: true,
@@ -43388,67 +43388,67 @@ Object.defineProperty(exports, "isApplicable", {
43388
43388
  });
43389
43389
  Object.defineProperty(exports, "ALLERGY_TYPE_LABELS", {
43390
43390
  enumerable: true,
43391
- get: function () { return chunk3YRDZBW6_cjs.ALLERGY_TYPE_LABELS; }
43391
+ get: function () { return chunkQPOTSLY6_cjs.ALLERGY_TYPE_LABELS; }
43392
43392
  });
43393
43393
  Object.defineProperty(exports, "AllergyList", {
43394
43394
  enumerable: true,
43395
- get: function () { return chunk3YRDZBW6_cjs.AllergyList; }
43395
+ get: function () { return chunkQPOTSLY6_cjs.AllergyList; }
43396
43396
  });
43397
43397
  Object.defineProperty(exports, "AllergyManager", {
43398
43398
  enumerable: true,
43399
- get: function () { return chunk3YRDZBW6_cjs.AllergyManager; }
43399
+ get: function () { return chunkQPOTSLY6_cjs.AllergyManager; }
43400
43400
  });
43401
43401
  Object.defineProperty(exports, "CodeLookupProvider", {
43402
43402
  enumerable: true,
43403
- get: function () { return chunk3YRDZBW6_cjs.CodeLookupProvider; }
43403
+ get: function () { return chunkQPOTSLY6_cjs.CodeLookupProvider; }
43404
43404
  });
43405
43405
  Object.defineProperty(exports, "MEDICATION_STATUS_LABELS", {
43406
43406
  enumerable: true,
43407
- get: function () { return chunk3YRDZBW6_cjs.MEDICATION_STATUS_LABELS; }
43407
+ get: function () { return chunkQPOTSLY6_cjs.MEDICATION_STATUS_LABELS; }
43408
43408
  });
43409
43409
  Object.defineProperty(exports, "MedicationEditor", {
43410
43410
  enumerable: true,
43411
- get: function () { return chunk3YRDZBW6_cjs.MedicationEditor; }
43411
+ get: function () { return chunkQPOTSLY6_cjs.MedicationEditor; }
43412
43412
  });
43413
43413
  Object.defineProperty(exports, "MedicationList", {
43414
43414
  enumerable: true,
43415
- get: function () { return chunk3YRDZBW6_cjs.MedicationList; }
43415
+ get: function () { return chunkQPOTSLY6_cjs.MedicationList; }
43416
43416
  });
43417
43417
  Object.defineProperty(exports, "MedicationReconciliation", {
43418
43418
  enumerable: true,
43419
- get: function () { return chunk3YRDZBW6_cjs.MedicationReconciliation; }
43419
+ get: function () { return chunkQPOTSLY6_cjs.MedicationReconciliation; }
43420
43420
  });
43421
43421
  Object.defineProperty(exports, "RowActionToolbar", {
43422
43422
  enumerable: true,
43423
- get: function () { return chunk3YRDZBW6_cjs.RowActionToolbar; }
43423
+ get: function () { return chunkQPOTSLY6_cjs.RowActionToolbar; }
43424
43424
  });
43425
43425
  Object.defineProperty(exports, "RowIconButton", {
43426
43426
  enumerable: true,
43427
- get: function () { return chunk3YRDZBW6_cjs.RowIconButton; }
43427
+ get: function () { return chunkQPOTSLY6_cjs.RowIconButton; }
43428
43428
  });
43429
43429
  Object.defineProperty(exports, "labelToMedicationFields", {
43430
43430
  enumerable: true,
43431
- get: function () { return chunk3YRDZBW6_cjs.labelToMedicationFields; }
43431
+ get: function () { return chunkQPOTSLY6_cjs.labelToMedicationFields; }
43432
43432
  });
43433
43433
  Object.defineProperty(exports, "lookupToMedicationFields", {
43434
43434
  enumerable: true,
43435
- get: function () { return chunk3YRDZBW6_cjs.lookupToMedicationFields; }
43435
+ get: function () { return chunkQPOTSLY6_cjs.lookupToMedicationFields; }
43436
43436
  });
43437
43437
  Object.defineProperty(exports, "parseMedicationLabel", {
43438
43438
  enumerable: true,
43439
- get: function () { return chunk3YRDZBW6_cjs.parseMedicationLabel; }
43439
+ get: function () { return chunkQPOTSLY6_cjs.parseMedicationLabel; }
43440
43440
  });
43441
43441
  Object.defineProperty(exports, "parseSig", {
43442
43442
  enumerable: true,
43443
- get: function () { return chunk3YRDZBW6_cjs.parseSig; }
43443
+ get: function () { return chunkQPOTSLY6_cjs.parseSig; }
43444
43444
  });
43445
43445
  Object.defineProperty(exports, "toolbarKeyNav", {
43446
43446
  enumerable: true,
43447
- get: function () { return chunk3YRDZBW6_cjs.toolbarKeyNav; }
43447
+ get: function () { return chunkQPOTSLY6_cjs.toolbarKeyNav; }
43448
43448
  });
43449
43449
  Object.defineProperty(exports, "useCodeLookupConfig", {
43450
43450
  enumerable: true,
43451
- get: function () { return chunk3YRDZBW6_cjs.useCodeLookupConfig; }
43451
+ get: function () { return chunkQPOTSLY6_cjs.useCodeLookupConfig; }
43452
43452
  });
43453
43453
  Object.defineProperty(exports, "Textarea", {
43454
43454
  enumerable: true,
@@ -43484,11 +43484,11 @@ Object.defineProperty(exports, "labelVariants", {
43484
43484
  });
43485
43485
  Object.defineProperty(exports, "Select", {
43486
43486
  enumerable: true,
43487
- get: function () { return chunkFRT6RQND_cjs.Select; }
43487
+ get: function () { return chunkYWHSQH7S_cjs.Select; }
43488
43488
  });
43489
43489
  Object.defineProperty(exports, "selectTriggerVariants", {
43490
43490
  enumerable: true,
43491
- get: function () { return chunkFRT6RQND_cjs.selectTriggerVariants; }
43491
+ get: function () { return chunkYWHSQH7S_cjs.selectTriggerVariants; }
43492
43492
  });
43493
43493
  Object.defineProperty(exports, "Card", {
43494
43494
  enumerable: true,
package/dist/index.js CHANGED
@@ -47,7 +47,7 @@ export { HtmlPreviewBlock } from './chunk-NCRYCG5G.js';
47
47
  export { MermaidBlock } from './chunk-WGC3KOP7.js';
48
48
  export { SurveyBlock } from './chunk-CPJIOOBM.js';
49
49
  export { FenceBlock } from './chunk-MHJMUKLA.js';
50
- export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-CH26CHPH.js';
50
+ export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-O6MBLWAI.js';
51
51
  export { PLAYBACK_SPEEDS } from './chunk-J7KWQJOB.js';
52
52
  export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-JBB25LFB.js';
53
53
  import './chunk-RISZWWEQ.js';
@@ -75,8 +75,8 @@ import './chunk-IQ4KQJAO.js';
75
75
  export { Breadcrumb, BreadcrumbSlash } from './chunk-HEH3QXOQ.js';
76
76
  import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
77
77
  export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
78
- import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-X763OLF2.js';
79
- export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-X763OLF2.js';
78
+ import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-DZIUSGUF.js';
79
+ export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-DZIUSGUF.js';
80
80
  import { Textarea } from './chunk-6LFG4JFF.js';
81
81
  export { Textarea, textareaVariants } from './chunk-6LFG4JFF.js';
82
82
  import { Tooltip } from './chunk-FZJBFJJR.js';
@@ -85,8 +85,8 @@ import { RadioGroup, Radio } from './chunk-EZKRAW2X.js';
85
85
  export { Radio, RadioGroup, radioVariants } from './chunk-EZKRAW2X.js';
86
86
  import { Label } from './chunk-DUPR6FEL.js';
87
87
  export { Label, labelVariants } from './chunk-DUPR6FEL.js';
88
- import { Select } from './chunk-R25H4N4Z.js';
89
- export { Select, selectTriggerVariants } from './chunk-R25H4N4Z.js';
88
+ import { Select } from './chunk-6Y727LPG.js';
89
+ export { Select, selectTriggerVariants } from './chunk-6Y727LPG.js';
90
90
  import { Card, CardHeader, CardContent, CardTitle } from './chunk-5BQE6BEL.js';
91
91
  export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-5BQE6BEL.js';
92
92
  import { DateInput } from './chunk-LIH3IZYK.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mieweb/ui",
3
- "version": "0.6.1-dev.172",
3
+ "version": "0.6.1-dev.174",
4
4
  "description": "A themeable, accessible React component library built with Tailwind CSS",
5
5
  "author": "Medical Informatics Engineering, Inc.",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Select/Select.tsx"],"names":["cva","React","useEscapeKey","jsxs","cn","jsx","createPortal"],"mappings":"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","file":"chunk-FRT6RQND.cjs","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { useEscapeKey } from '../../hooks/useEscapeKey';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectOption {\n /** Unique value for the option */\n value: string;\n /** Display label for the option */\n label: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n /** Optional group this option belongs to */\n group?: string;\n}\n\nexport interface SelectGroup {\n /** Group label */\n label: string;\n /** Options in this group */\n options: SelectOption[];\n}\n\n// ============================================================================\n// Variants\n// ============================================================================\n\nconst selectTriggerVariants = cva(\n [\n 'flex w-full items-center justify-between gap-2',\n 'border border-input rounded-lg',\n 'bg-background text-foreground',\n 'transition-colors duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-3 text-base',\n lg: 'h-12 px-4 text-lg',\n },\n hasError: {\n true: 'border-destructive focus:ring-destructive',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n hasError: false,\n },\n }\n);\n\n// ============================================================================\n// Select Component\n// ============================================================================\n\nexport interface SelectProps extends VariantProps<\n typeof selectTriggerVariants\n> {\n /** Array of options or groups */\n options: (SelectOption | SelectGroup)[];\n /** Controlled value */\n value?: string;\n /** Default value (uncontrolled) */\n defaultValue?: string;\n /** Callback when value changes */\n onValueChange?: (value: string) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Label for the select */\n label?: string;\n /** Hide the label visually */\n hideLabel?: boolean;\n /** Error message */\n error?: string;\n /** Helper text */\n helperText?: string;\n /** Enable search/filter */\n searchable?: boolean;\n /** Search placeholder */\n searchPlaceholder?: string;\n /** No results text */\n noResultsText?: string;\n /** Accessible label for the trigger (used when no `label` prop is provided) */\n 'aria-label'?: string;\n /** Additional class name */\n className?: string;\n /** ID for the select */\n id?: string;\n}\n\n/**\n * An accessible select/dropdown component with search support.\n *\n * @example\n * ```tsx\n * <Select\n * label=\"Country\"\n * placeholder=\"Select a country\"\n * options={[\n * { value: 'us', label: 'United States' },\n * { value: 'ca', label: 'Canada' },\n * { value: 'uk', label: 'United Kingdom' },\n * ]}\n * onValueChange={(value) => console.log(value)}\n * />\n * ```\n */\nfunction Select({\n options,\n value: controlledValue,\n defaultValue,\n onValueChange,\n placeholder = 'Select an option',\n disabled = false,\n label,\n hideLabel = false,\n error,\n helperText,\n size,\n hasError,\n 'aria-label': ariaLabel,\n searchable = false,\n searchPlaceholder = 'Search...',\n noResultsText = 'No results found',\n className,\n id,\n}: SelectProps) {\n const [isOpen, setIsOpen] = React.useState(false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(\n defaultValue || ''\n );\n const [searchQuery, setSearchQuery] = React.useState('');\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const generatedId = React.useId();\n const selectId = id || generatedId;\n const listboxId = `${selectId}-listbox`;\n const errorId = `${selectId}-error`;\n const helperId = `${selectId}-helper`;\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n // Flatten options for easy access\n const flatOptions = React.useMemo(() => {\n const result: SelectOption[] = [];\n for (const item of options) {\n if ('options' in item) {\n result.push(...item.options);\n } else {\n result.push(item);\n }\n }\n return result;\n }, [options]);\n\n // Filter options based on search query\n const filteredOptions = React.useMemo(() => {\n if (!searchQuery) return options;\n\n const query = searchQuery.toLowerCase();\n const result: (SelectOption | SelectGroup)[] = [];\n\n for (const item of options) {\n if ('options' in item) {\n const filteredGroupOptions = item.options.filter((opt) =>\n opt.label.toLowerCase().includes(query)\n );\n if (filteredGroupOptions.length > 0) {\n result.push({ ...item, options: filteredGroupOptions });\n }\n } else {\n if (item.label.toLowerCase().includes(query)) {\n result.push(item);\n }\n }\n }\n\n return result;\n }, [options, searchQuery]);\n\n // Get filtered flat options for keyboard navigation\n const filteredFlatOptions = React.useMemo(() => {\n const result: SelectOption[] = [];\n for (const item of filteredOptions) {\n if ('options' in item) {\n result.push(...item.options.filter((opt) => !opt.disabled));\n } else if (!item.disabled) {\n result.push(item);\n }\n }\n return result;\n }, [filteredOptions]);\n\n // Get selected option\n const selectedOption = flatOptions.find((opt) => opt.value === value);\n\n // Close dropdown on click outside (handles both container and portaled dropdown)\n React.useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n containerRef.current &&\n !containerRef.current.contains(target) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(target)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen]);\n\n useEscapeKey(() => {\n if (isOpen) {\n setIsOpen(false);\n triggerRef.current?.focus();\n }\n }, isOpen);\n\n // Track trigger position for portal dropdown\n const [dropdownStyle, setDropdownStyle] = React.useState<React.CSSProperties>(\n {}\n );\n\n const updateDropdownPosition = React.useCallback(() => {\n if (!triggerRef.current) return;\n const rect = triggerRef.current.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const isCondensed = document.body.classList.contains('condensed');\n const optionHeight = isCondensed ? 28 : 40;\n const estimatedDropdownHeight = Math.min(\n flatOptions.length * optionHeight + 16,\n 300\n );\n const openAbove =\n spaceBelow < estimatedDropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownStyle({\n position: 'fixed',\n ...(openAbove\n ? { bottom: window.innerHeight - rect.top + 4 }\n : { top: rect.bottom + 4 }),\n left: rect.left,\n width: rect.width,\n maxHeight: Math.max(\n Math.min(openAbove ? spaceAbove - 8 : spaceBelow - 8, 300),\n 0\n ),\n display: 'flex',\n flexDirection: 'column' as const,\n overflow: 'hidden',\n zIndex: 9999,\n });\n }, [flatOptions.length]);\n\n React.useEffect(() => {\n if (!isOpen) return;\n updateDropdownPosition();\n\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition);\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition);\n };\n }, [isOpen, updateDropdownPosition]);\n\n // Handle value change\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(newValue);\n }\n onValueChange?.(newValue);\n setIsOpen(false);\n setSearchQuery('');\n triggerRef.current?.focus();\n },\n [isControlled, onValueChange]\n );\n\n // Handle keyboard navigation\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else {\n setHighlightedIndex((prev) =>\n prev < filteredFlatOptions.length - 1 ? prev + 1 : 0\n );\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredFlatOptions.length - 1\n );\n }\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (isOpen && highlightedIndex >= 0) {\n handleValueChange(filteredFlatOptions[highlightedIndex].value);\n } else if (!isOpen) {\n setIsOpen(true);\n }\n break;\n case 'Home':\n e.preventDefault();\n setHighlightedIndex(0);\n break;\n case 'End':\n e.preventDefault();\n setHighlightedIndex(filteredFlatOptions.length - 1);\n break;\n }\n },\n [isOpen, highlightedIndex, filteredFlatOptions, handleValueChange]\n );\n\n // Focus search input when dropdown opens\n React.useEffect(() => {\n if (isOpen && searchable && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [isOpen, searchable]);\n\n // Reset highlighted index when search changes\n React.useEffect(() => {\n setHighlightedIndex(filteredFlatOptions.length > 0 ? 0 : -1);\n }, [searchQuery, filteredFlatOptions.length]);\n\n // Build aria-describedby\n const describedByIds = [\n error ? errorId : null,\n helperText && !error ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n data-slot=\"select-wrapper\"\n className={cn('flex flex-col gap-1.5', className)}\n >\n {label && (\n <label\n data-slot=\"select-label\"\n htmlFor={selectId}\n className={cn(\n 'text-foreground text-sm font-medium',\n hideLabel && 'sr-only'\n )}\n >\n {label}\n </label>\n )}\n\n <div ref={containerRef} className=\"relative\">\n {/* Trigger Button */}\n <button\n data-slot=\"select-trigger\"\n ref={triggerRef}\n id={selectId}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-invalid={hasError || !!error}\n aria-label={!label ? ariaLabel : undefined}\n aria-describedby={describedByIds || undefined}\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n className={cn(\n selectTriggerVariants({ size, hasError: hasError || !!error })\n )}\n >\n <span\n className={cn(\n 'truncate',\n !selectedOption && 'text-muted-foreground'\n )}\n >\n {selectedOption?.label || placeholder}\n </span>\n <ChevronDownIcon\n className={cn(\n 'text-muted-foreground h-4 w-4 shrink-0 transition-transform',\n isOpen && 'rotate-180'\n )}\n />\n </button>\n\n {/* Dropdown (portaled to body to avoid overflow clipping) */}\n {isOpen &&\n createPortal(\n <div\n data-slot=\"select-dropdown\"\n ref={dropdownRef}\n style={dropdownStyle}\n className={cn(\n 'border-border bg-card rounded-lg border shadow-lg',\n 'animate-in fade-in zoom-in-95 duration-100'\n )}\n >\n {/* Search Input */}\n {searchable && (\n <div\n data-slot=\"select-search\"\n className=\"border-border border-b p-2\"\n >\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={searchPlaceholder}\n className={cn(\n 'border-input bg-background w-full rounded-md border px-3 py-2 text-sm',\n 'placeholder:text-muted-foreground',\n 'focus:ring-ring focus:ring-2 focus:outline-none'\n )}\n aria-label=\"Search options\"\n />\n </div>\n )}\n\n {/* Options List */}\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-label={label || 'Options'}\n data-slot=\"select-listbox\"\n className=\"flex-1 overflow-auto p-1\"\n >\n {filteredFlatOptions.length === 0 ? (\n <li className=\"text-muted-foreground px-3 py-2 text-center text-sm\">\n {noResultsText}\n </li>\n ) : (\n filteredOptions.map((item) => {\n if ('options' in item) {\n // Render group\n return (\n <li key={`group-${item.label}`} role=\"presentation\">\n <div\n data-slot=\"select-group-label\"\n className=\"text-muted-foreground px-3 py-1.5 text-xs font-semibold tracking-wider uppercase\"\n >\n {item.label}\n </div>\n <ul role=\"group\" aria-label={item.label}>\n {item.options.map((option) => (\n <SelectOptionItem\n key={option.value}\n option={option}\n isSelected={option.value === value}\n isHighlighted={\n filteredFlatOptions[highlightedIndex]\n ?.value === option.value\n }\n onSelect={() => handleValueChange(option.value)}\n onMouseEnter={() => {\n const idx = filteredFlatOptions.findIndex(\n (o) => o.value === option.value\n );\n setHighlightedIndex(idx);\n }}\n />\n ))}\n </ul>\n </li>\n );\n }\n\n // Render single option\n return (\n <SelectOptionItem\n key={item.value}\n option={item}\n isSelected={item.value === value}\n isHighlighted={\n filteredFlatOptions[highlightedIndex]?.value ===\n item.value\n }\n onSelect={() => handleValueChange(item.value)}\n onMouseEnter={() => {\n const idx = filteredFlatOptions.findIndex(\n (o) => o.value === item.value\n );\n setHighlightedIndex(idx);\n }}\n />\n );\n })\n )}\n </ul>\n </div>,\n document.body\n )}\n </div>\n\n {/* Error Message */}\n {error && (\n <p\n id={errorId}\n data-slot=\"select-error\"\n className=\"text-destructive-700 dark:text-destructive-400 text-sm\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n\n {/* Helper Text */}\n {helperText && !error && (\n <p\n id={helperId}\n data-slot=\"select-helper\"\n className=\"text-muted-foreground text-sm\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n}\n\nSelect.displayName = 'Select';\n\n// ============================================================================\n// Select Option Item (Internal)\n// ============================================================================\n\ninterface SelectOptionItemProps {\n option: SelectOption;\n isSelected: boolean;\n isHighlighted: boolean;\n onSelect: () => void;\n onMouseEnter: () => void;\n}\n\nfunction SelectOptionItem({\n option,\n isSelected,\n isHighlighted,\n onSelect,\n onMouseEnter,\n}: SelectOptionItemProps) {\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (!option.disabled) {\n onSelect();\n }\n }\n };\n\n return (\n <li\n data-slot=\"select-option\"\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n data-highlighted={isHighlighted}\n data-disabled={option.disabled}\n tabIndex={isHighlighted ? 0 : -1}\n onClick={option.disabled ? undefined : onSelect}\n onKeyDown={handleKeyDown}\n onMouseEnter={option.disabled ? undefined : onMouseEnter}\n className={cn(\n 'flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm',\n 'transition-colors outline-none',\n isHighlighted && 'bg-muted',\n isSelected &&\n 'bg-primary-50 text-primary-900 dark:bg-primary-950 dark:text-primary-100',\n option.disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n <span className=\"flex-1 truncate\">{option.label}</span>\n {isSelected && (\n <CheckIcon className=\"text-primary-800 h-4 w-4 shrink-0\" />\n )}\n </li>\n );\n}\n\n// ============================================================================\n// Icons\n// ============================================================================\n\nfunction ChevronDownIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction CheckIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport { Select, selectTriggerVariants };\n"]}