pih-appointment-widget 0.0.36 → 0.0.38

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/App.js CHANGED
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "AppointmentPage", {
9
9
  return _AppointmentPage.default;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ICD10Assistant", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ICD10Assistant.default;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "PIH_APPOINTMENT_WIDGET_CLASS", {
13
19
  enumerable: true,
14
20
  get: function () {
@@ -19,6 +25,7 @@ exports.default = void 0;
19
25
  var _react = _interopRequireDefault(require("react"));
20
26
  var _reactDom = _interopRequireDefault(require("react-dom"));
21
27
  var _AppointmentPage = _interopRequireWildcard(require("./components/AppointmentPage.js"));
28
+ var _ICD10Assistant = _interopRequireDefault(require("./components/ICD10Assistant.jsx"));
22
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
23
30
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
31
  let bookingWidgetInstance = null;
@@ -42,7 +49,7 @@ const BookingSDK = {
42
49
  const PopupWrapper = () => {
43
50
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AppointmentPage.default, {
44
51
  config: config
45
- }));
52
+ }), config.showIcdAssistant && /*#__PURE__*/_react.default.createElement(_ICD10Assistant.default, null));
46
53
  };
47
54
  _reactDom.default.render(/*#__PURE__*/_react.default.createElement(PopupWrapper, null), bookingWidgetInstance);
48
55
  },
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.IMG = exports.ICON = void 0;
7
+ var _icdIcon = _interopRequireDefault(require("./icdIcon.png"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ // ─── Image assets ─────────────────────────────────────────────────────────────
10
+
11
+ const IMG = exports.IMG = {
12
+ /** Main ICD-10 Assistant branding icon (floating button + panel header) */
13
+ icdIcon: _icdIcon.default
14
+ };
15
+
16
+ // ─── Emoji / text icons ───────────────────────────────────────────────────────
17
+ const ICON = exports.ICON = {
18
+ /** Reason / tip indicator on result cards */
19
+ reason: "💡",
20
+ /** Search history chip prefix */
21
+ history: "🕐",
22
+ /** Footer medical disclaimer */
23
+ medical: "⚕️",
24
+ /** Coding note (currently commented out) */
25
+ codingNote: "📋",
26
+ /** Copy success checkmark */
27
+ copied: "✓",
28
+ /** Copy action */
29
+ copy: "⎘"
30
+ };
@@ -7,6 +7,7 @@ exports.default = ICD10Assistant;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _icdService = require("../services/icdService");
9
9
  var _useClipboard = require("../hooks/useClipboard");
10
+ var _icdIcons = require("../assets/icons/icdIcons");
10
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
12
  /**
12
13
  * ICD10Assistant.jsx
@@ -162,7 +163,7 @@ function ResultCard(_ref3) {
162
163
  lineHeight: 1.5,
163
164
  paddingLeft: 2
164
165
  }
165
- }, "\uD83D\uDCA1 ", match.reason));
166
+ }, _icdIcons.ICON.reason, " ", match.reason));
166
167
  }
167
168
 
168
169
  // ─── History Chip ─────────────────────────────────────────────────────────────
@@ -191,7 +192,7 @@ function HistoryChip(_ref4) {
191
192
  },
192
193
  onMouseEnter: e => e.currentTarget.style.borderColor = C.primary,
193
194
  onMouseLeave: e => e.currentTarget.style.borderColor = C.border
194
- }, "\uD83D\uDD50 ", item.query);
195
+ }, _icdIcons.ICON.history, " ", item.query);
195
196
  }
196
197
 
197
198
  // ─── Mode Toggle (tab bar) ──────────────────────────────────────────────────
@@ -230,7 +231,7 @@ function ModeToggle(_ref5) {
230
231
  gap: 2,
231
232
  marginTop: 10
232
233
  }
233
- }, tab("nlm", "Quick Lookup", "🔎"), tab("ai", "AI Suggest", "🤖"));
234
+ }, tab("nlm", "Quick Lookup", ""), tab("ai", "AI Suggest", ""));
234
235
  }
235
236
 
236
237
  // ─── NLM Lookup Panel ────────────────────────────────────────────────────────
@@ -319,11 +320,15 @@ function NLMLookupPanel(_ref6) {
319
320
  alignItems: "center",
320
321
  gap: 10
321
322
  }
322
- }, /*#__PURE__*/_react.default.createElement("span", {
323
+ }, /*#__PURE__*/_react.default.createElement("img", {
324
+ src: _icdIcons.IMG.icdIcon,
325
+ alt: "ICD-10",
323
326
  style: {
324
- fontSize: 22
327
+ width: 32,
328
+ height: 32,
329
+ objectFit: "contain"
325
330
  }
326
- }, "\uD83E\uDE7A"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
331
+ }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
327
332
  style: {
328
333
  color: C.white,
329
334
  fontWeight: 700,
@@ -382,13 +387,77 @@ function NLMLookupPanel(_ref6) {
382
387
  },
383
388
  onFocus: e => e.target.style.borderColor = C.primary,
384
389
  onBlur: e => e.target.style.borderColor = C.border
385
- }), status && /*#__PURE__*/_react.default.createElement("p", {
390
+ }), /*#__PURE__*/_react.default.createElement("p", {
391
+ style: {
392
+ margin: 0,
393
+ fontSize: 11,
394
+ color: "#aaa",
395
+ lineHeight: 1.6,
396
+ borderLeft: "3px solid ".concat(C.border),
397
+ paddingLeft: 8
398
+ }
399
+ }, /*#__PURE__*/_react.default.createElement("strong", null, "Note:"), " Use short, specific keywords for better results, or try", " ", /*#__PURE__*/_react.default.createElement("button", {
400
+ onClick: () => onModeChange("ai"),
401
+ style: {
402
+ background: "none",
403
+ border: "none",
404
+ padding: 0,
405
+ color: C.primary,
406
+ fontWeight: 700,
407
+ fontSize: 11,
408
+ cursor: "pointer",
409
+ textDecoration: "underline",
410
+ fontFamily: FONT
411
+ }
412
+ }, "AI Suggest"), " ", "for broader symptom-based recommendations."), status && results.length > 0 && /*#__PURE__*/_react.default.createElement("p", {
386
413
  style: {
387
414
  margin: 0,
388
415
  fontSize: 12,
389
416
  color: C.muted
390
417
  }
391
- }, status), /*#__PURE__*/_react.default.createElement("div", {
418
+ }, status), status === "No matching codes found." && results.length === 0 && /*#__PURE__*/_react.default.createElement("div", {
419
+ style: {
420
+ background: C.warnLight,
421
+ border: "1px solid #fcd34d",
422
+ borderRadius: 10,
423
+ padding: "14px 16px",
424
+ display: "flex",
425
+ gap: 10,
426
+ alignItems: "flex-start"
427
+ }
428
+ }, /*#__PURE__*/_react.default.createElement("span", {
429
+ style: {
430
+ fontSize: 18,
431
+ flexShrink: 0
432
+ }
433
+ }, "\uD83D\uDD0D"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", {
434
+ style: {
435
+ margin: "0 0 4px",
436
+ fontSize: 13,
437
+ fontWeight: 700,
438
+ color: C.warn
439
+ }
440
+ }, "No results found"), /*#__PURE__*/_react.default.createElement("p", {
441
+ style: {
442
+ margin: 0,
443
+ fontSize: 12,
444
+ color: C.warn,
445
+ lineHeight: 1.6
446
+ }
447
+ }, "We couldn't find a match. Try using more accurate keywords or switch to", " ", /*#__PURE__*/_react.default.createElement("button", {
448
+ onClick: () => onModeChange("ai"),
449
+ style: {
450
+ background: "none",
451
+ border: "none",
452
+ padding: 0,
453
+ color: C.primary,
454
+ fontWeight: 700,
455
+ fontSize: 12,
456
+ cursor: "pointer",
457
+ textDecoration: "underline",
458
+ fontFamily: FONT
459
+ }
460
+ }, "AI Suggest"), " ", "for better results."))), /*#__PURE__*/_react.default.createElement("div", {
392
461
  style: {
393
462
  display: "flex",
394
463
  flexDirection: "column",
@@ -446,7 +515,7 @@ function NLMLookupPanel(_ref6) {
446
515
  color: "#aaa",
447
516
  textAlign: "center"
448
517
  }
449
- }, "\u2695\uFE0F For reference only. Always verify codes with a certified medical coder."));
518
+ }, _icdIcons.ICON.medical, " For reference only. Always verify codes with a certified medical coder."));
450
519
  }
451
520
 
452
521
  // ─── FloatingButton ───────────────────────────────────────────────────────────
@@ -486,11 +555,15 @@ function FloatingButton(_ref8) {
486
555
  e.currentTarget.style.transform = "translateY(0)";
487
556
  e.currentTarget.style.boxShadow = "0 4px 16px rgba(76,77,220,0.35)";
488
557
  }
489
- }, /*#__PURE__*/_react.default.createElement("span", {
558
+ }, /*#__PURE__*/_react.default.createElement("img", {
559
+ src: _icdIcons.IMG.icdIcon,
560
+ alt: "ICD-10",
490
561
  style: {
491
- fontSize: 18
562
+ width: 22,
563
+ height: 22,
564
+ objectFit: "contain"
492
565
  }
493
- }, "\uD83E\uDE7A"), "ICD-10 Assistant");
566
+ }), "ICD-10 Assistant");
494
567
  }
495
568
 
496
569
  // ─── Panel ────────────────────────────────────────────────────────────────────
@@ -553,11 +626,15 @@ function Panel(_ref9) {
553
626
  alignItems: "center",
554
627
  gap: 10
555
628
  }
556
- }, /*#__PURE__*/_react.default.createElement("span", {
629
+ }, /*#__PURE__*/_react.default.createElement("img", {
630
+ src: _icdIcons.IMG.icdIcon,
631
+ alt: "ICD-10",
557
632
  style: {
558
- fontSize: 22
633
+ width: 32,
634
+ height: 32,
635
+ objectFit: "contain"
559
636
  }
560
- }, "\uD83E\uDE7A"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
637
+ }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
561
638
  style: {
562
639
  color: C.white,
563
640
  fontWeight: 700,
@@ -655,7 +732,14 @@ function Panel(_ref9) {
655
732
  borderRadius: 3,
656
733
  fontFamily: "monospace"
657
734
  }
658
- }, "\u2318 Enter"), " to submit")), /*#__PURE__*/_react.default.createElement("div", {
735
+ }, "Enter"), " to submit \xB7 ", /*#__PURE__*/_react.default.createElement("kbd", {
736
+ style: {
737
+ background: "#f3f4f6",
738
+ padding: "1px 5px",
739
+ borderRadius: 3,
740
+ fontFamily: "monospace"
741
+ }
742
+ }, "Shift+Enter"), " for new line")), /*#__PURE__*/_react.default.createElement("div", {
659
743
  style: {
660
744
  display: "flex",
661
745
  gap: 8
@@ -680,7 +764,7 @@ function Panel(_ref9) {
680
764
  cursor: !query.trim() || loading ? "not-allowed" : "pointer",
681
765
  transition: "background 0.15s"
682
766
  }
683
- }, loading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Spinner, null), "Searching codes\u2026") : "🔍 Find ICD-10 Codes"), (query || result) && /*#__PURE__*/_react.default.createElement("button", {
767
+ }, loading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Spinner, null), "Searching codes\u2026") : "Find ICD-10 Codes"), (query || result) && /*#__PURE__*/_react.default.createElement("button", {
684
768
  onClick: onClear,
685
769
  style: {
686
770
  padding: "10px 14px",
@@ -787,7 +871,7 @@ function Panel(_ref9) {
787
871
  lineHeight: 1.5,
788
872
  textAlign: "center"
789
873
  }
790
- }, "\u2695\uFE0F For reference only. Always verify codes with a certified medical coder. Not a substitute for clinical judgment or official coding guidelines."));
874
+ }, _icdIcons.ICON.medical, " For reference only. Always verify codes with a certified medical coder. Not a substitute for clinical judgment or official coding guidelines."));
791
875
  }
792
876
 
793
877
  // ─── Main Component ────────────────────────────────────────────────────────────
@@ -849,7 +933,7 @@ function ICD10Assistant() {
849
933
  }
850
934
  }, [query, loading]);
851
935
  const handleKeyDown = (0, _react.useCallback)(e => {
852
- if ((e.ctrlKey || e.metaKey) && e.key === "Enter") {
936
+ if (e.key === "Enter" && !e.shiftKey) {
853
937
  e.preventDefault();
854
938
  handleSubmit();
855
939
  }