@servicetitan/anvil2 1.49.5 → 1.49.6

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 (150) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{Breadcrumbs-DjR-2OEH.js → Breadcrumbs-Y6IaMoi5.js} +2 -2
  3. package/dist/{Breadcrumbs-DjR-2OEH.js.map → Breadcrumbs-Y6IaMoi5.js.map} +1 -1
  4. package/dist/Breadcrumbs.js +1 -1
  5. package/dist/{Calendar-BP6r1sP9.js → Calendar-B5Ednjem.js} +2 -2
  6. package/dist/{Calendar-BP6r1sP9.js.map → Calendar-B5Ednjem.js.map} +1 -1
  7. package/dist/{Calendar-CLSm88D2.js → Calendar-Ce08LvdP.js} +2 -2
  8. package/dist/{Calendar-CLSm88D2.js.map → Calendar-Ce08LvdP.js.map} +1 -1
  9. package/dist/Calendar.js +2 -2
  10. package/dist/{Checkbox-PkAk1Saq.js → Checkbox-ByaZv8wu.js} +2 -2
  11. package/dist/{Checkbox-PkAk1Saq.js.map → Checkbox-ByaZv8wu.js.map} +1 -1
  12. package/dist/{Checkbox-DwuDx-t4.js → Checkbox-nE-_tWmc.js} +2 -2
  13. package/dist/{Checkbox-DwuDx-t4.js.map → Checkbox-nE-_tWmc.js.map} +1 -1
  14. package/dist/Checkbox.js +2 -2
  15. package/dist/{Chip-X2EwdZ97.js → Chip-UqdorCE2.js} +23 -17
  16. package/dist/Chip-UqdorCE2.js.map +1 -0
  17. package/dist/Chip.js +1 -1
  18. package/dist/{Combobox-DNCq-jkq.js → Combobox-Dy4IZDg1.js} +4 -4
  19. package/dist/{Combobox-DNCq-jkq.js.map → Combobox-Dy4IZDg1.js.map} +1 -1
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DataTable-BIhmpU0v.js → DataTable-D6MmOQF2.js} +5 -5
  22. package/dist/{DataTable-BIhmpU0v.js.map → DataTable-D6MmOQF2.js.map} +1 -1
  23. package/dist/{DateField-DsGHTMZ1.js → DateField-BxS9LZG7.js} +4 -4
  24. package/dist/{DateField-DsGHTMZ1.js.map → DateField-BxS9LZG7.js.map} +1 -1
  25. package/dist/DateField.js +1 -1
  26. package/dist/{DateFieldRange-Ct979nxF.js → DateFieldRange-BdDiHUfv.js} +4 -4
  27. package/dist/{DateFieldRange-Ct979nxF.js.map → DateFieldRange-BdDiHUfv.js.map} +1 -1
  28. package/dist/DateFieldRange.js +1 -1
  29. package/dist/{DateFieldSingle-frMHnRSg.js → DateFieldSingle-CuQO3LH9.js} +4 -4
  30. package/dist/{DateFieldSingle-frMHnRSg.js.map → DateFieldSingle-CuQO3LH9.js.map} +1 -1
  31. package/dist/DateFieldSingle.js +1 -1
  32. package/dist/{DateFieldYearless-po9ieLod.js → DateFieldYearless-2YhZmNYg.js} +2 -2
  33. package/dist/{DateFieldYearless-po9ieLod.js.map → DateFieldYearless-2YhZmNYg.js.map} +1 -1
  34. package/dist/DateFieldYearless.js +1 -1
  35. package/dist/{DateFieldYearlessRange-Dy8a8O1n.js → DateFieldYearlessRange-CgCmvHLs.js} +2 -2
  36. package/dist/{DateFieldYearlessRange-Dy8a8O1n.js.map → DateFieldYearlessRange-CgCmvHLs.js.map} +1 -1
  37. package/dist/DateFieldYearlessRange.js +1 -1
  38. package/dist/{DaysOfTheWeek-2_k3T4n4.js → DaysOfTheWeek-DlIka9b_.js} +3 -3
  39. package/dist/{DaysOfTheWeek-2_k3T4n4.js.map → DaysOfTheWeek-DlIka9b_.js.map} +1 -1
  40. package/dist/DaysOfTheWeek.js +1 -1
  41. package/dist/{Dialog-BT7a5KNT.js → Dialog-DSwvbfdW.js} +2 -2
  42. package/dist/{Dialog-BT7a5KNT.js.map → Dialog-DSwvbfdW.js.map} +1 -1
  43. package/dist/Dialog.js +1 -1
  44. package/dist/{Drawer-scQFylHI.js → Drawer-CGYcEj6d.js} +2 -2
  45. package/dist/{Drawer-scQFylHI.js.map → Drawer-CGYcEj6d.js.map} +1 -1
  46. package/dist/Drawer.js +1 -1
  47. package/dist/{FieldLabel-BIStrC2x.js → FieldLabel-jqlQ1Ldh.js} +2 -2
  48. package/dist/{FieldLabel-BIStrC2x.js.map → FieldLabel-jqlQ1Ldh.js.map} +1 -1
  49. package/dist/FieldLabel.js +1 -1
  50. package/dist/{InputMask-A5LDdyxL.js → InputMask-DaN_Adz6.js} +2 -2
  51. package/dist/{InputMask-A5LDdyxL.js.map → InputMask-DaN_Adz6.js.map} +1 -1
  52. package/dist/InputMask.js +1 -1
  53. package/dist/{Link-DuYh7Xl2.js → Link-DqZxs0kQ.js} +13 -4
  54. package/dist/Link-DqZxs0kQ.js.map +1 -0
  55. package/dist/Link.css +27 -19
  56. package/dist/Link.js +1 -1
  57. package/dist/Link.module-CjeOl2NH.js +14 -0
  58. package/dist/Link.module-CjeOl2NH.js.map +1 -0
  59. package/dist/{LinkButton-pIUNATNE.js → LinkButton-jb2Gc3hC.js} +5 -2
  60. package/dist/LinkButton-jb2Gc3hC.js.map +1 -0
  61. package/dist/LinkButton.js +1 -1
  62. package/dist/{ListView-5cRssdYI.js → ListView-B1I7Ii3g.js} +2 -2
  63. package/dist/{ListView-5cRssdYI.js.map → ListView-B1I7Ii3g.js.map} +1 -1
  64. package/dist/ListView.js +1 -1
  65. package/dist/{NumberField-BUFymKV3.js → NumberField-BdK4U9mW.js} +2 -2
  66. package/dist/{NumberField-BUFymKV3.js.map → NumberField-BdK4U9mW.js.map} +1 -1
  67. package/dist/NumberField.js +1 -1
  68. package/dist/{Page-Dgpz2WD7.js → Page-C-yMjgoO.js} +5 -5
  69. package/dist/{Page-Dgpz2WD7.js.map → Page-C-yMjgoO.js.map} +1 -1
  70. package/dist/Page.js +1 -1
  71. package/dist/{ProgressBar-R_UjSR4o.js → ProgressBar-CufkbVu5.js} +2 -2
  72. package/dist/{ProgressBar-R_UjSR4o.js.map → ProgressBar-CufkbVu5.js.map} +1 -1
  73. package/dist/ProgressBar.js +1 -1
  74. package/dist/{Radio-CLR1m8N9.js → Radio-BeBG7Ksw.js} +2 -2
  75. package/dist/{Radio-CLR1m8N9.js.map → Radio-BeBG7Ksw.js.map} +1 -1
  76. package/dist/Radio.js +2 -2
  77. package/dist/{RadioGroup-m46C69uO.js → RadioGroup-BAjpkCjp.js} +2 -2
  78. package/dist/{RadioGroup-m46C69uO.js.map → RadioGroup-BAjpkCjp.js.map} +1 -1
  79. package/dist/{SearchField-DrgNbG3I.js → SearchField-D6bICv4b.js} +36 -7
  80. package/dist/SearchField-D6bICv4b.js.map +1 -0
  81. package/dist/SearchField.css +13 -8
  82. package/dist/SearchField.js +1 -1
  83. package/dist/{SelectCard-DViLgRGh.js → SelectCard-DDN7qqHv.js} +3 -3
  84. package/dist/{SelectCard-DViLgRGh.js.map → SelectCard-DDN7qqHv.js.map} +1 -1
  85. package/dist/SelectCard.js +1 -1
  86. package/dist/SelectField.js +1 -1
  87. package/dist/{SelectFieldSync-DF05HvD4.js → SelectFieldSync-DQm3_D0v.js} +132 -19
  88. package/dist/SelectFieldSync-DQm3_D0v.js.map +1 -0
  89. package/dist/{SelectTrigger-BSzOoRsu.js → SelectTrigger-CNEhRluU.js} +2 -2
  90. package/dist/{SelectTrigger-BSzOoRsu.js.map → SelectTrigger-CNEhRluU.js.map} +1 -1
  91. package/dist/SelectTrigger.js +1 -1
  92. package/dist/{SelectTriggerBase-CfmRIFRs.js → SelectTriggerBase-Cv6hGsrC.js} +4 -4
  93. package/dist/{SelectTriggerBase-CfmRIFRs.js.map → SelectTriggerBase-Cv6hGsrC.js.map} +1 -1
  94. package/dist/SelectTriggerBase.css +59 -59
  95. package/dist/SelectTriggerBase.module-Ce49lamD.js +35 -0
  96. package/dist/SelectTriggerBase.module-Ce49lamD.js.map +1 -0
  97. package/dist/Table.js +1 -1
  98. package/dist/{TextField-D29fTRGR.js → TextField--y8q4R2H.js} +2 -2
  99. package/dist/{TextField-D29fTRGR.js.map → TextField--y8q4R2H.js.map} +1 -1
  100. package/dist/{TextField-B08U4_rt.js → TextField-aMwSN1iP.js} +2 -2
  101. package/dist/{TextField-B08U4_rt.js.map → TextField-aMwSN1iP.js.map} +1 -1
  102. package/dist/TextField.js +1 -1
  103. package/dist/{Textarea-Dl4w2-t0.js → Textarea-D1zwX2h6.js} +2 -2
  104. package/dist/{Textarea-Dl4w2-t0.js.map → Textarea-D1zwX2h6.js.map} +1 -1
  105. package/dist/Textarea.js +1 -1
  106. package/dist/{TimeField-Dpi3fMsn.js → TimeField-BHxXbOfe.js} +2 -2
  107. package/dist/{TimeField-Dpi3fMsn.js.map → TimeField-BHxXbOfe.js.map} +1 -1
  108. package/dist/TimeField.js +1 -1
  109. package/dist/Toast.js +2 -2
  110. package/dist/{Toaster-CRNOANCk.js → Toaster-CRp3nf4U.js} +2 -2
  111. package/dist/{Toaster-CRNOANCk.js.map → Toaster-CRp3nf4U.js.map} +1 -1
  112. package/dist/{Toaster-B0ogInIl.js → Toaster-qPt6zb6F.js} +2 -2
  113. package/dist/{Toaster-B0ogInIl.js.map → Toaster-qPt6zb6F.js.map} +1 -1
  114. package/dist/{Toolbar-CPldWSNJ.js → Toolbar-XJrmS4v4.js} +12 -12
  115. package/dist/{Toolbar-CPldWSNJ.js.map → Toolbar-XJrmS4v4.js.map} +1 -1
  116. package/dist/Toolbar.js +1 -1
  117. package/dist/{Tooltip-BbfLb3pI.js → Tooltip-CBy7srE2.js} +2 -2
  118. package/dist/Tooltip-CBy7srE2.js.map +1 -0
  119. package/dist/Tooltip.js +1 -1
  120. package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +14 -3
  121. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +12 -1
  122. package/dist/beta/components/SelectField/internal/useCombo.d.ts +2 -1
  123. package/dist/beta/components/SelectField/types.d.ts +43 -0
  124. package/dist/beta.js +5 -5
  125. package/dist/components/Chip/Chip.d.ts +2 -1
  126. package/dist/components/Chip/internal/Chip.d.ts +2 -1
  127. package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
  128. package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
  129. package/dist/components/Link/internal/Link.d.ts +21 -2
  130. package/dist/components/Link/useLinkStyles.d.ts +1 -1
  131. package/dist/components/LinkButton/LinkButton.d.ts +13 -1
  132. package/dist/components/SearchField/SearchField.d.ts +6 -3
  133. package/dist/components/Stepper/Stepper.d.ts +1 -1
  134. package/dist/components/Stepper/StepperStep.d.ts +1 -1
  135. package/dist/components/Tab/Tab.d.ts +1 -1
  136. package/dist/components/Tab/TabButton.d.ts +1 -1
  137. package/dist/index.js +34 -34
  138. package/dist/{utils-CeT0omsG.js → utils-C-hkPwMi.js} +2 -2
  139. package/dist/{utils-CeT0omsG.js.map → utils-C-hkPwMi.js.map} +1 -1
  140. package/package.json +1 -1
  141. package/dist/Chip-X2EwdZ97.js.map +0 -1
  142. package/dist/Link-DuYh7Xl2.js.map +0 -1
  143. package/dist/Link.module-Cf17JWod.js +0 -12
  144. package/dist/Link.module-Cf17JWod.js.map +0 -1
  145. package/dist/LinkButton-pIUNATNE.js.map +0 -1
  146. package/dist/SearchField-DrgNbG3I.js.map +0 -1
  147. package/dist/SelectFieldSync-DF05HvD4.js.map +0 -1
  148. package/dist/SelectTriggerBase.module-DUhQNr6j.js +0 -33
  149. package/dist/SelectTriggerBase.module-DUhQNr6j.js.map +0 -1
  150. package/dist/Tooltip-BbfLb3pI.js.map +0 -1
package/dist/index.js CHANGED
@@ -5,57 +5,57 @@ export { A as Announcement } from './Announcement-BPwFNhYe.js';
5
5
  export { A as Avatar } from './Avatar-DeEV-v-b.js';
6
6
  export { A as AvatarGroup } from './Avatar-gtxslf5v.js';
7
7
  export { B as Badge } from './Badge-DY5xJkqi.js';
8
- export { B as Breadcrumbs, a as BreadcrumbsElement, b as BreadcrumbsLink } from './Breadcrumbs-DjR-2OEH.js';
8
+ export { B as Breadcrumbs, a as BreadcrumbsElement, b as BreadcrumbsLink } from './Breadcrumbs-Y6IaMoi5.js';
9
9
  import { B as Button } from './Button-92_FKAyV.js';
10
10
  export { B as ButtonCompound } from './ButtonCompound-COdSELhh.js';
11
11
  import { B as ButtonLink } from './ButtonLink-C0zR7Wnb.js';
12
12
  import { B as ButtonToggle } from './ButtonToggle--sKvhBoA.js';
13
- export { a as Calendar, g as CalendarMonth, f as CalendarMonthButton, e as CalendarNext, b as CalendarNow, d as CalendarPrev, c as CalendarYearButton } from './Calendar-BP6r1sP9.js';
13
+ export { a as Calendar, g as CalendarMonth, f as CalendarMonthButton, e as CalendarNext, b as CalendarNow, d as CalendarPrev, c as CalendarYearButton } from './Calendar-B5Ednjem.js';
14
14
  export { C as Card } from './Card-Ch3sMUo5.js';
15
- export { C as Checkbox } from './Checkbox-PkAk1Saq.js';
16
- export { C as CheckboxGroup } from './Checkbox-DwuDx-t4.js';
17
- export { C as Chip } from './Chip-X2EwdZ97.js';
18
- export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger } from './Combobox-DNCq-jkq.js';
15
+ export { C as Checkbox } from './Checkbox-ByaZv8wu.js';
16
+ export { C as CheckboxGroup } from './Checkbox-nE-_tWmc.js';
17
+ export { C as Chip } from './Chip-UqdorCE2.js';
18
+ export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger } from './Combobox-Dy4IZDg1.js';
19
19
  export { u as useInfiniteCombobox } from './useInfiniteCombobox-WcRgC9p6.js';
20
- export { D as DateField } from './DateField-DsGHTMZ1.js';
21
- export { D as DateFieldRange } from './DateFieldRange-Ct979nxF.js';
22
- export { D as DateFieldSingle } from './DateFieldSingle-frMHnRSg.js';
23
- export { D as DateFieldYearless } from './DateFieldYearless-po9ieLod.js';
24
- export { D as DateFieldYearlessRange } from './DateFieldYearlessRange-Dy8a8O1n.js';
25
- export { D as DaysOfTheWeek } from './DaysOfTheWeek-2_k3T4n4.js';
20
+ export { D as DateField } from './DateField-BxS9LZG7.js';
21
+ export { D as DateFieldRange } from './DateFieldRange-BdDiHUfv.js';
22
+ export { D as DateFieldSingle } from './DateFieldSingle-CuQO3LH9.js';
23
+ export { D as DateFieldYearless } from './DateFieldYearless-2YhZmNYg.js';
24
+ export { D as DateFieldYearlessRange } from './DateFieldYearlessRange-CgCmvHLs.js';
25
+ export { D as DaysOfTheWeek } from './DaysOfTheWeek-DlIka9b_.js';
26
26
  export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-CkaKTRvc.js';
27
- export { D as Dialog, a as DialogContent, b as DialogFooter, c as DialogHeader } from './Dialog-BT7a5KNT.js';
27
+ export { D as Dialog, a as DialogContent, b as DialogFooter, c as DialogHeader } from './Dialog-DSwvbfdW.js';
28
28
  export { D as DialogCancelButton } from './DialogCancelButton-sTEfx5kf.js';
29
29
  export { D as Divider } from './Divider-Olv8yWXD.js';
30
30
  export { D as Dnd } from './index-ByS9WvPk.js';
31
- export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-scQFylHI.js';
31
+ export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-CGYcEj6d.js';
32
32
  export { E as EditCard } from './EditCard-Ds1UXJIS.js';
33
- export { F as FieldLabel } from './FieldLabel-BIStrC2x.js';
33
+ export { F as FieldLabel } from './FieldLabel-jqlQ1Ldh.js';
34
34
  export { F as FieldMessage } from './FieldMessage-DWONT3dr.js';
35
35
  import { F as Flex } from './Flex-CjPHUTeq.js';
36
36
  export { G as Grid } from './Grid-DW2cAuHi.js';
37
37
  import { I as Icon } from './Icon-BSuTVNaa.js';
38
- export { I as InputMask } from './InputMask-A5LDdyxL.js';
38
+ export { I as InputMask } from './InputMask-DaN_Adz6.js';
39
39
  export { L as Layout, a as LayoutElement, b as LayoutItem } from './Layout-CUUb2PVr.js';
40
- export { L as Link, u as useLinkStyles } from './Link-DuYh7Xl2.js';
41
- export { L as LinkButton } from './LinkButton-pIUNATNE.js';
40
+ export { L as Link, u as useLinkStyles } from './Link-DqZxs0kQ.js';
41
+ export { L as LinkButton } from './LinkButton-jb2Gc3hC.js';
42
42
  import { L as Listbox } from './Listbox-C-n4IVVj.js';
43
43
  export { a as ListboxOption, b as ListboxOptionGroup } from './Listbox-C-n4IVVj.js';
44
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-5cRssdYI.js';
44
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-B1I7Ii3g.js';
45
45
  export { M as Menu, a as MenuItem } from './Menu-Cn2JJe1Y.js';
46
- export { N as NumberField } from './NumberField-BUFymKV3.js';
46
+ export { N as NumberField } from './NumberField-BdK4U9mW.js';
47
47
  export { Overflow, OverflowText } from './Overflow.js';
48
- export { P as Page } from './Page-Dgpz2WD7.js';
48
+ export { P as Page } from './Page-C-yMjgoO.js';
49
49
  export { P as Pagination } from './Pagination-CnF6yBr5.js';
50
50
  import { P as Popover } from './Popover-CcMDyKTj.js';
51
51
  export { a as PopoverButton, b as PopoverClose, c as PopoverContent, d as PopoverTrigger } from './Popover-CcMDyKTj.js';
52
- export { P as ProgressBar } from './ProgressBar-R_UjSR4o.js';
53
- export { R as Radio } from './Radio-CLR1m8N9.js';
54
- export { R as RadioGroup } from './RadioGroup-m46C69uO.js';
55
- export { S as SearchField } from './SearchField-DrgNbG3I.js';
52
+ export { P as ProgressBar } from './ProgressBar-CufkbVu5.js';
53
+ export { R as Radio } from './Radio-BeBG7Ksw.js';
54
+ export { R as RadioGroup } from './RadioGroup-BAjpkCjp.js';
55
+ export { S as SearchField } from './SearchField-D6bICv4b.js';
56
56
  export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-DK1cwC7A.js';
57
- export { S as SelectCard, a as SelectCardElement, b as SelectCardGroup } from './SelectCard-DViLgRGh.js';
58
- export { S as SelectTrigger } from './SelectTrigger-BSzOoRsu.js';
57
+ export { S as SelectCard, a as SelectCardElement, b as SelectCardGroup } from './SelectCard-DDN7qqHv.js';
58
+ export { S as SelectTrigger } from './SelectTrigger-CNEhRluU.js';
59
59
  export { S as SideNav, b as SideNavCollapsible, c as SideNavGroup, a as SideNavLink } from './SideNav-B1sH17Uc.js';
60
60
  export { Skeleton, SkeletonCircle, SkeletonPill, SkeletonRectangle, SkeletonText } from './Skeleton.js';
61
61
  export { S as Spinner } from './Spinner-xEFwsq8_.js';
@@ -64,18 +64,18 @@ export { S as Stepper, a as StepperFinalPanel, b as StepperList, c as StepperNex
64
64
  export { S as Switch } from './Switch-BXDPs2mD.js';
65
65
  export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-6UavokJJ.js';
66
66
  export { T as Text } from './Text-kPA-VzsB.js';
67
- export { T as Textarea } from './Textarea-Dl4w2-t0.js';
68
- export { T as TextField } from './TextField-D29fTRGR.js';
69
- export { T as TimeField } from './TimeField-Dpi3fMsn.js';
70
- export { T as Toaster } from './Toaster-CRNOANCk.js';
71
- export { t as toast } from './Toaster-B0ogInIl.js';
67
+ export { T as Textarea } from './Textarea-D1zwX2h6.js';
68
+ export { T as TextField } from './TextField--y8q4R2H.js';
69
+ export { T as TimeField } from './TimeField-BHxXbOfe.js';
70
+ export { T as Toaster } from './Toaster-CRp3nf4U.js';
71
+ export { t as toast } from './Toaster-qPt6zb6F.js';
72
72
  import { jsx, jsxs } from 'react/jsx-runtime';
73
73
  import { useContext, createContext, useId, useRef, useCallback, useEffect, forwardRef, useState, useMemo } from 'react';
74
74
  import { c as cx } from './index-tZvMCc77.js';
75
75
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-BlIWftBb.js';
76
76
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
77
- import { T as Tooltip } from './Tooltip-BbfLb3pI.js';
78
- export { a as TooltipContent, b as TooltipTrigger } from './Tooltip-BbfLb3pI.js';
77
+ import { T as Tooltip } from './Tooltip-CBy7srE2.js';
78
+ export { a as TooltipContent, b as TooltipTrigger } from './Tooltip-CBy7srE2.js';
79
79
  export { u as useAccessibleColor } from './useAccessibleColor-BYKjkGRg.js';
80
80
  export { u as useBreakpoint } from './useBreakpoint-BGCsBhQ7.js';
81
81
  export { u as usePrefersColorScheme } from './usePrefersColorScheme-_hT7dK7_.js';
@@ -1,4 +1,4 @@
1
- import { D as DateTime } from './Calendar-BP6r1sP9.js';
1
+ import { D as DateTime } from './Calendar-B5Ednjem.js';
2
2
 
3
3
  const DateModeToFormatMap = {
4
4
  "mm/dd/yyyy": "MM/dd/yyyy",
@@ -47,4 +47,4 @@ function validateDate({
47
47
  }
48
48
 
49
49
  export { DateModeToPlaceholderMap as D, DateModeToFormatMap as a, convertStringToDate as c, validateDate as v };
50
- //# sourceMappingURL=utils-CeT0omsG.js.map
50
+ //# sourceMappingURL=utils-C-hkPwMi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-CeT0omsG.js","sources":["../src/components/DateFieldSingle/internal/constants.ts","../src/components/DateFieldSingle/internal/utils.ts"],"sourcesContent":["import { DateMode } from \"../types\";\n\nexport const DateModeToFormatMap: Record<DateMode, string> = {\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"yyyy/mm/dd\": \"yyyy/MM/dd\",\n};\n\nexport const DateModeToPlaceholderMap: Record<DateMode, string> = {\n \"dd/mm/yyyy\": \"__/__/____\",\n \"mm/dd/yyyy\": \"__/__/____\",\n \"yyyy/mm/dd\": \"____/__/__\",\n};\n","import { DateTime } from \"luxon\";\n\nexport function convertStringToDate(\n v: string | null | undefined,\n): DateTime | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n const date = DateTime.fromISO(v, { setZone: true, zone: \"utc\" }).startOf(\n \"day\",\n );\n if (date.isValid) {\n return date;\n }\n return null;\n}\nexport function validateDate({\n date,\n constraints,\n}: {\n date: DateTime | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n };\n}) {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!date) {\n return required ? false : true;\n }\n if (unavailable?.dates?.some((d) => d.equals(date))) {\n return false;\n }\n if (unavailable?.daysOfWeek?.includes(date.weekday)) {\n return false;\n }\n if (minDate && date < minDate) {\n return false;\n }\n if (maxDate && date > maxDate) {\n return false;\n }\n return true;\n}\n"],"names":[],"mappings":";;AAEO,MAAM,mBAAA,GAAgD;AAAA,EAC3D,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;AAEO,MAAM,wBAAA,GAAqD;AAAA,EAChE,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;;ACVO,SAAS,oBACd,CAAA,EAC6B;AAC7B,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAA,EAAM;AACjC,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,CAAA,EAAG,EAAE,SAAS,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,OAAA;AAAA,IAC/D;AAAA,GACF;AACA,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AACO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,EAWG;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,SAAQ,GAAI,WAAA;AACpD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,WAAW,KAAA,GAAQ,IAAA;AAAA,EAC5B;AACA,EAAA,IAAI,WAAA,EAAa,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAA,EAAa,UAAA,EAAY,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;;;;"}
1
+ {"version":3,"file":"utils-C-hkPwMi.js","sources":["../src/components/DateFieldSingle/internal/constants.ts","../src/components/DateFieldSingle/internal/utils.ts"],"sourcesContent":["import { DateMode } from \"../types\";\n\nexport const DateModeToFormatMap: Record<DateMode, string> = {\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"yyyy/mm/dd\": \"yyyy/MM/dd\",\n};\n\nexport const DateModeToPlaceholderMap: Record<DateMode, string> = {\n \"dd/mm/yyyy\": \"__/__/____\",\n \"mm/dd/yyyy\": \"__/__/____\",\n \"yyyy/mm/dd\": \"____/__/__\",\n};\n","import { DateTime } from \"luxon\";\n\nexport function convertStringToDate(\n v: string | null | undefined,\n): DateTime | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n const date = DateTime.fromISO(v, { setZone: true, zone: \"utc\" }).startOf(\n \"day\",\n );\n if (date.isValid) {\n return date;\n }\n return null;\n}\nexport function validateDate({\n date,\n constraints,\n}: {\n date: DateTime | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n };\n}) {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!date) {\n return required ? false : true;\n }\n if (unavailable?.dates?.some((d) => d.equals(date))) {\n return false;\n }\n if (unavailable?.daysOfWeek?.includes(date.weekday)) {\n return false;\n }\n if (minDate && date < minDate) {\n return false;\n }\n if (maxDate && date > maxDate) {\n return false;\n }\n return true;\n}\n"],"names":[],"mappings":";;AAEO,MAAM,mBAAA,GAAgD;AAAA,EAC3D,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;AAEO,MAAM,wBAAA,GAAqD;AAAA,EAChE,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc;AAChB;;ACVO,SAAS,oBACd,CAAA,EAC6B;AAC7B,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAA,EAAM;AACjC,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,CAAA,EAAG,EAAE,SAAS,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,OAAA;AAAA,IAC/D;AAAA,GACF;AACA,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AACO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,EAWG;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,SAAQ,GAAI,WAAA;AACpD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,WAAW,KAAA,GAAQ,IAAA;AAAA,EAC5B;AACA,EAAA,IAAI,WAAA,EAAa,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAA,EAAa,UAAA,EAAY,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,IAAW,OAAO,OAAA,EAAS;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/anvil2",
3
- "version": "1.49.5",
3
+ "version": "1.49.6",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chip-X2EwdZ97.js","sources":["../src/components/Chip/internal/Chip.tsx","../src/components/Chip/Chip.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n useContext,\n useRef,\n useLayoutEffect,\n useState,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport tinycolor from \"tinycolor2\";\n\nimport { Avatar, AvatarProps } from \"../../Avatar/internal/Avatar\";\nimport { useAccessibleColor, usePrefersColorScheme } from \"../../../hooks\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\n\nimport styles from \"../Chip.module.scss\";\nimport { Icon } from \"../../Icon\";\nimport { LayoutUtilProps, Size } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { ThemeProviderContext } from \"../../../providers/ThemeProvider/internal/ThemeProviderContext\";\n\n/**\n * Props for the Chip component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type ChipProps = Omit<ComponentPropsWithoutRef<\"span\">, \"prefix\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The text that displays in the chip.\n */\n label: string;\n /**\n * The size of the chip\n * @default medium\n */\n size?: Extract<Size, \"small\" | \"medium\">;\n\n /**\n * Color of the Chip\n */\n color?: string;\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: (\n e?: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n ) => void;\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: (\n e: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n ) => void;\n /**\n * Wraps text when it overflows\n */\n textWrap?: boolean;\n /**\n * Content displayed in the chip, before the text.\n */\n prefix?: ReactNode;\n\n /**\n * Image URL to display in an avatar before the chip text.\n */\n avatar?: AvatarProps[\"image\"];\n };\n\n/**\n * Chip component for displaying compact information or tags.\n *\n * Features:\n * - Configurable sizes (small, medium)\n * - Custom color support with automatic contrast calculation\n * - Optional click handler for interactive chips\n * - Optional close button for removable chips\n * - Text wrapping support for long labels\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation (Enter to click, Delete/Backspace to close)\n * - Theme-aware color adaptation\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <Chip\n * label=\"JavaScript\"\n * color=\"#f7df1e\"\n * onClose={(e) => console.log('Chip removed')}\n * onClick={(e) => console.log('Chip clicked')}\n * />\n */\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n color,\n onClose,\n onClick,\n label,\n style,\n textWrap,\n prefix,\n avatar,\n size = \"medium\",\n tabIndex,\n ...rest\n } = componentProps;\n\n const innerRef = useRef<HTMLSpanElement>(null);\n const [lines, setLines] = useState(1);\n\n useLayoutEffect(() => {\n const element = innerRef.current;\n\n const observer = new ResizeObserver(() => {\n if (element) {\n const textNode = element.childNodes[0];\n if (textNode && textNode.textContent) {\n const range = document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n setLines(range.getClientRects().length);\n }\n }\n });\n\n if (element) {\n observer.observe(element);\n }\n\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n }, []);\n\n /*\n * @TODO: below to be updated with localization\n * removeTextIndex is for when removeText comes after the label depending on the language\n */\n const removeText = \", removeable\";\n const newLabel = `${label}${onClose ? removeText : \"\"}`;\n\n const ChipClassNames = cx(styles[\"chip\"], className, {\n [styles[\"size-small\"]]: size === \"small\",\n [styles[\"has-close\"]]: !!onClose,\n [styles[\"text-wrap\"]]: textWrap,\n });\n\n const AvatarClassNames = cx(styles[\"avatar\"], {\n [styles[\"multiline\"]]: textWrap && lines > 1,\n });\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const { mode: sysMode } = usePrefersColorScheme();\n const mode = themeMode ?? sysMode;\n\n const { foreground, background, border } = useAccessibleColor(color, mode);\n\n const bgObj = tinycolor(background);\n\n const styleWithColor = {\n \"--int-bg-color\": color && background,\n \"--int-font-color\": color && foreground,\n \"--int-border-color\": color && border,\n \"--int-close-background-color\": color\n ? bgObj.isDark()\n ? bgObj.lighten(15).toHexString()\n : bgObj.darken(15).toHexString()\n : \"#14141429\",\n ...style,\n ...layoutStyles,\n };\n\n const onKeyUpHandler = (e: KeyboardEvent<HTMLSpanElement>) => {\n switch (e.code) {\n case \"Delete\":\n case \"Backspace\":\n onClose?.(e);\n break;\n\n case \"Enter\":\n onClick?.(e);\n break;\n\n default:\n break;\n }\n };\n\n return (\n <span\n className={ChipClassNames}\n style={styleWithColor}\n data-anv=\"chip\"\n role={onClick ? \"button\" : undefined}\n {...(onClick || onClose ? { [\"aria-label\"]: newLabel } : {})}\n {...rest}\n ref={ref}\n onClick={onClick}\n onKeyUp={onKeyUpHandler}\n tabIndex={onClick || onClose ? 0 : tabIndex}\n >\n {avatar != null ? (\n <span className={AvatarClassNames}>\n <Avatar\n className={styles.avatarInner}\n name={label}\n color={color}\n image={avatar}\n size={size === \"small\" ? \"xsmall\" : \"small\"}\n />\n </span>\n ) : null}\n\n {prefix != null ? <span className={styles.prefix}>{prefix}</span> : null}\n\n <span className={styles.inner} ref={innerRef}>\n {label}\n </span>\n\n {!!onClose && (\n <span\n aria-hidden\n aria-label=\"remove button\"\n className={styles[\"close\"]}\n onClick={(e) => {\n e.stopPropagation();\n onClose(e);\n }}\n >\n <Icon aria-hidden svg={Close} size={size} />\n </span>\n )}\n </span>\n );\n});\n\nChip.displayName = \"Chip\";\n","import { ChipProps as CoreChipProps, Chip as CoreChip } from \"./internal/Chip\";\nimport { Icon as CoreIcon, IconProps as CoreIconProps } from \"../Icon\";\nimport { AvatarProps as CoreAvatarProps } from \"../Avatar/internal/Avatar\";\n\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\n\n/**\n * Props for the Chip component\n * @property {string} label - The text that displays in the chip\n * @property {\"small\" | \"medium\"} [size] - The size of the chip\n * @property {string} [color] - Color of the Chip\n * @property {(e?: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>) => void} [onClick] - Callback for when the Chip is clicked\n * @property {(e: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>) => void} [onClose] - Called when the component is closed\n * @property {boolean} [textWrap] - Wraps text when it overflows\n * @property {Svg} [icon] - Icon displayed in the chip, before the text.\n * @property {string} [avatar] - Image URL to display in an avatar before the chip text.\n * @extends CoreChipProps\n * @extends DataTrackingId\n */\nexport type ChipProps = DistributiveOmit<CoreChipProps, \"prefix\" | \"avatar\"> &\n DataTrackingId &\n (\n | { icon?: CoreIconProps[\"svg\"]; avatar?: never }\n | { icon?: never; avatar?: CoreAvatarProps[\"image\"] }\n );\n\n/**\n * Chip component for displaying compact information or tags.\n *\n * Features:\n * - Configurable sizes (small, medium)\n * - Custom color support with automatic contrast calculation\n * - Optional click handler for interactive chips\n * - Optional close button for removable chips\n * - Text wrapping support for long labels\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation (Enter to click, Delete/Backspace to close)\n * - Theme-aware color adaptation\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Chip\n * label=\"JavaScript\"\n * color=\"#f7df1e\"\n * onClose={(e) => console.log('Chip removed')}\n * onClick={(e) => console.log('Chip clicked')}\n * />\n */\nexport const Chip = forwardRef(\n ({ icon, ...props }: ChipProps, ref: Ref<HTMLSpanElement>) => {\n const data = {\n label: props.label,\n size: props.size,\n color: props.color,\n };\n\n const trackingId = useTrackingId({\n name: \"Chip\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n icon != null ? (\n <CoreIcon svg={icon} color=\"var(--int-font-color)\" size={props.size} />\n ) : null;\n\n return (\n <CoreChip\n ref={ref}\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n },\n);\nChip.displayName = CoreChip.displayName;\n"],"names":["Chip","Close","CoreIcon","CoreChip"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Link-DuYh7Xl2.js","sources":["../../hammer-icon/mdi/round/open_in_new.svg","../src/components/Link/internal/LinkHeadless.tsx","../src/components/Link/useLinkStyles.ts","../src/components/Link/internal/Link.tsx","../src/components/Link/Link.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgOpenInNew = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 19H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h5c.55 0 1-.45 1-1s-.45-1-1-1H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55-.45 1-1 1zM14 4c0 .55.45 1 1 1h2.59l-9.13 9.13a.996.996 0 1 0 1.41 1.41L19 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1z\" }));\nexport default SvgOpenInNew;\n","import { forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nimport styles from \"./Link.module.scss\";\nimport { Icon } from \"../../Icon\";\nimport OpenInNew from \"@servicetitan/hammer-icon/mdi/round/open_in_new.svg\";\n\n/**\n * Props for the LinkHeadless component.\n * @extends ComponentPropsWithoutRef<\"a\">\n */\nexport type LinkHeadlessProps = ComponentPropsWithoutRef<\"a\">;\n\n/**\n * Headless link component for creating accessible hyperlinks.\n *\n * Features:\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n *\n * @example\n * <LinkHeadless href=\"/dashboard\">\n * Go to Dashboard\n * </LinkHeadless>\n *\n * @example\n * <LinkHeadless href=\"https://example.com\" target=\"_blank\">\n * External Documentation\n * </LinkHeadless>\n *\n */\nexport const LinkHeadless = forwardRef<HTMLAnchorElement, LinkHeadlessProps>(\n ({ children, ...props }, ref) => {\n return (\n <a\n rel=\"noopener noreferrer\"\n data-anv=\"link-headless\"\n ref={ref}\n {...props}\n >\n {children}\n {props.target === \"_blank\" && (\n <Icon className={styles[\"open-in-new\"]} inherit svg={OpenInNew} />\n )}\n </a>\n );\n },\n);\n\nLinkHeadless.displayName = \"LinkHeadless\";\n","import cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../types\";\nimport { LinkProps } from \"./Link\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./internal/Link.module.scss\";\n\n/**\n * Props for the useLinkStyles hook.\n * @extends LayoutUtilProps\n */\nexport type UseLinkStylesProps = LayoutUtilProps &\n Pick<LinkProps, \"className\" | \"appearance\" | \"quiet\" | \"style\">;\n\n/**\n * Hook for generating link styles and class names.\n *\n * @param props - The link style properties\n * @returns Object containing linkClassNames and styleCombined\n */\nexport const useLinkStyles = (props: UseLinkStylesProps) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, appearance = \"primary\", quiet, style } = componentProps;\n\n const linkClassNames = cx([styles[\"link\"]], className, {\n [styles[\"quiet\"]]: quiet,\n [styles[\"secondary\"]]: appearance === \"secondary\",\n });\n\n const styleCombined = Object.assign({}, style, layoutStyles);\n\n return { linkClassNames, styleCombined };\n};\n","import { forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nimport { LayoutUtilProps } from \"../../../types\";\n\nimport { LinkHeadless } from \"./LinkHeadless\";\n\nimport { useLinkStyles } from \"../useLinkStyles\";\n\n/**\n * Props for the Link component.\n * @extends ComponentPropsWithoutRef<\"a\">\n * @extends LayoutUtilProps\n */\nexport type LinkProps = ComponentPropsWithoutRef<\"a\"> &\n LayoutUtilProps &\n (\n | {\n /**\n * The visual appearance of the link.\n * @default \"primary\"\n */\n appearance?: \"primary\";\n /** Whether the link should have a quieter, less prominent appearance */\n quiet?: boolean;\n }\n | {\n /** The visual appearance of the link. Secondary appearance cannot be quiet. */\n appearance: \"secondary\";\n quiet?: false;\n }\n );\n\n/**\n * Link component for creating accessible, styled hyperlinks.\n *\n * Features:\n * - Two visual appearances: primary (default) and secondary\n * - Quiet mode for less prominent styling\n * - Automatic external link icon for target=\"_blank\" links\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n * - Full accessibility support with proper focus management\n * - Supports layout utilities for positioning and spacing\n * - Flexible content support for text and other elements\n * - Responsive design with consistent typography\n * - Hover and focus states with proper visual feedback\n * - Screen reader support for external link announcements\n *\n * @example\n * <Link href=\"/dashboard\" appearance=\"primary\">\n * Go to Dashboard\n * </Link>\n *\n * @example\n * <Link href=\"https://example.com\" target=\"_blank\" quiet>\n * External Documentation\n * </Link>\n *\n * @example\n * <Link href=\"/settings\" appearance=\"secondary\">\n * Settings\n * </Link>\n *\n * @example\n * <Link href=\"/profile\" gap=\"2\" alignItems=\"center\">\n * <Avatar name=\"John Doe\" size=\"small\" />\n * View Profile\n * </Link>\n */\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n const { appearance, className, quiet, style, children, ...rest } = props;\n const { linkClassNames, styleCombined } = useLinkStyles({\n appearance,\n className,\n quiet,\n style,\n });\n\n return (\n <LinkHeadless\n className={linkClassNames}\n data-anv=\"link\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </LinkHeadless>\n );\n});\n\nLink.displayName = \"Link\";\n","import { Ref, forwardRef } from \"react\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { LinkProps as BaseLinkProps, Link as BaseLink } from \"./internal/Link\";\n\n/**\n * Props for the Link component.\n * @extends Omit<BaseLinkProps, \"href\">\n * @extends DataTrackingId\n */\nexport type LinkProps = DistributiveOmit<BaseLinkProps, \"href\"> &\n DataTrackingId &\n (\n | {\n pathname?: never;\n search?: never;\n href?: BaseLinkProps[\"href\"];\n }\n | {\n pathname: string;\n search?: string;\n href?: never;\n }\n | {\n pathname?: never;\n search?: never;\n href?: never;\n }\n );\n\n/**\n * Link component for creating accessible, styled hyperlinks with tracking support.\n *\n * Features:\n * - Two visual appearances: primary (default) and secondary\n * - Quiet mode for less prominent styling\n * - Automatic external link icon for target=\"_blank\" links\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n * - Full accessibility support with proper focus management\n * - Supports layout utilities for positioning and spacing\n * - Flexible content support for text and other elements\n * - Responsive design with consistent typography\n * - Hover and focus states with proper visual feedback\n * - Screen reader support for external link announcements\n * - Automatic tracking ID generation for analytics\n * - Client-side navigation support with pathname and search params\n * - History API integration for single-page application navigation\n *\n * @example\n * <Link href=\"/dashboard\" appearance=\"primary\">\n * Go to Dashboard\n * </Link>\n *\n * @example\n * <Link pathname=\"/settings\" search=\"?tab=profile\">\n * Profile Settings\n * </Link>\n *\n * @example\n * <Link href=\"https://example.com\" target=\"_blank\" quiet>\n * External Documentation\n * </Link>\n *\n * @example\n * <Link href=\"/profile\" gap=\"2\" alignItems=\"center\">\n * <Avatar name=\"John Doe\" size=\"small\" />\n * View Profile\n * </Link>\n */\nexport const Link = forwardRef(\n (props: LinkProps, ref: Ref<HTMLAnchorElement>) => {\n const { onClick, pathname, children, search, ...rest } = props;\n const data = {\n appearance: props.appearance,\n quiet: props.quiet,\n children: childrenToString(children),\n };\n\n const handleClick = (\n ...args: Parameters<NonNullable<LinkProps[\"onClick\"]>>\n ) => {\n if (pathname) {\n const to = pathname + (search ?? \"\");\n args[0].preventDefault();\n history.pushState(null, \"\", to);\n onClick?.(...args);\n } else {\n onClick?.(...args);\n }\n };\n\n const trackingId = useTrackingId({\n name: \"Link\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n return (\n <BaseLink\n onClick={handleClick}\n ref={ref}\n data-tracking-id={trackingId}\n {...rest}\n >\n {children}\n </BaseLink>\n );\n },\n);\n\nLink.displayName = BaseLink.displayName;\n"],"names":["styles","OpenInNew","Link","BaseLink"],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import './Link.css';const link = "_link_4o01j_2";
2
- const secondary = "_secondary_4o01j_43";
3
- const quiet = "_quiet_4o01j_52";
4
- const linkStyles = {
5
- link: link,
6
- "open-in-new": "_open-in-new_4o01j_27",
7
- secondary: secondary,
8
- quiet: quiet
9
- };
10
-
11
- export { linkStyles as l };
12
- //# sourceMappingURL=Link.module-Cf17JWod.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Link.module-Cf17JWod.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkButton-pIUNATNE.js","sources":["../src/components/LinkButton/LinkButton.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport styles from \"./LinkButton.module.scss\";\nimport linkStyles from \"../Link/internal/Link.module.scss\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Link component.\n * @extends CoreLinkButtonProps\n * @extends DataTrackingId\n */\nexport type LinkButtonProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"type\" | \"disabled\"\n> &\n LayoutUtilProps &\n (\n | {\n /**\n * The visual appearance of the LinkButton.\n * @default \"primary\"\n */\n appearance?: \"primary\";\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Only available when appearance is \"primary\".\n */\n quiet?: boolean;\n }\n | {\n /**\n * The visual appearance of the LinkButton. Secondary appearance cannot be quiet.\n */\n appearance: \"secondary\";\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Must be false when appearance is \"secondary\".\n */\n quiet?: false;\n }\n ) &\n DataTrackingId;\n\nexport const LinkButton = forwardRef(\n (props: LinkButtonProps, ref: Ref<HTMLButtonElement>) => {\n const data = {\n appearance: props.appearance,\n quiet: props.quiet,\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Link\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n appearance = \"primary\",\n quiet,\n style,\n ...rest\n } = componentProps;\n\n const linkClassNames = cx(\n [linkStyles[\"link\"]],\n styles[\"link-button\"],\n className,\n {\n [linkStyles[\"quiet\"]]: quiet,\n [linkStyles[\"secondary\"]]: appearance === \"secondary\",\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n className={linkClassNames}\n data-anv=\"link-button\"\n ref={ref}\n style={styleCombined}\n data-tracking-id={trackingId}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nLinkButton.displayName = \"LinkButton\";\n"],"names":[],"mappings":";;;;;;;;;;;;AA+CO,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,OAAwB,GAAA,KAAgC;AACvD,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ;AAAA,KAC3C;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,MAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,GAAa,SAAA;AAAA,MACb,KAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,cAAA,GAAiB,EAAA;AAAA,MACrB,CAAC,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,MACnB,OAAO,aAAa,CAAA;AAAA,MACpB,SAAA;AAAA,MACA;AAAA,QACE,CAAC,UAAA,CAAW,OAAO,CAAC,GAAG,KAAA;AAAA,QACvB,CAAC,UAAA,CAAW,WAAW,CAAC,GAAG,UAAA,KAAe;AAAA;AAC5C,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,UAAA,EAAS,aAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACP,kBAAA,EAAkB,UAAA;AAAA,QACjB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchField-DrgNbG3I.js","sources":["../../hammer-icon/mdi/round/search.svg","../src/components/SearchField/SearchField.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" }));\nexport default SvgSearch;\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n useId,\n useRef,\n ChangeEvent,\n useState,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport textfieldStyles from \"../TextField/TextField.module.scss\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Search from \"@servicetitan/hammer-icon/mdi/round/search.svg\";\nimport styles from \"./SearchField.module.scss\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { SrOnly } from \"../SrOnly\";\nimport { Icon } from \"../Icon\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps, Size } from \"../../types\";\n\n/**\n * Props for the SearchField component\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"prefix\" | \"required\" | \"children\">\n * @extends LayoutUtilProps\n */\nexport type SearchFieldProps = Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"prefix\" | \"required\" | \"children\"\n> &\n LayoutUtilProps & {\n /**\n * Size of the search field\n * @default \"medium\"\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /**\n * Whether the search field is disabled\n * @default false\n */\n disabled?: boolean;\n /**\n * Callback when the clear button is clicked\n */\n onClear?: () => void;\n } & DataTrackingId;\n\n/**\n * SearchField component for text input with search functionality.\n *\n * Features:\n * - Search icon prefix for visual clarity\n * - Clear button that appears when input has value\n * - Multiple size variants (small, medium, large)\n * - Controlled and uncontrolled modes\n * - Disabled and read-only states\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Automatic value detection for clear button visibility\n * - Search-specific input type and autocomplete settings\n * - Screen reader support with placeholder announcements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <SearchField\n * placeholder=\"Search users...\"\n * onChange={(e) => setSearchTerm(e.target.value)}\n * onClear={() => setSearchTerm(\"\")}\n * />\n *\n * @example\n * <SearchField\n * size=\"large\"\n * value={searchValue}\n * onChange={(e) => setSearchValue(e.target.value)}\n * disabled={isLoading}\n * />\n */\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>(\n function SearchField(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n size,\n onChange,\n onClear,\n id: idProp,\n disabled,\n style,\n value,\n placeholder = \"Search...\",\n autoComplete = \"off\",\n ...rest\n } = componentProps;\n\n const [hasValue, setHasValue] = useState(\n rest.defaultValue || value ? true : false,\n );\n const placeholderUid = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value) {\n setHasValue(true);\n } else {\n setHasValue(false);\n }\n onChange?.(e);\n };\n\n useEffect(() => {\n if (typeof value === \"undefined\") return;\n if (value === \"\" || !value) {\n setHasValue(false);\n } else {\n setHasValue(true);\n }\n }, [value]);\n\n const handleClear = () => {\n if (!inputRef.current) return;\n if (disabled || rest.readOnly) return;\n onClear?.();\n if (value) {\n return;\n }\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n nativeInputValueSetter?.call(inputRef.current, \"\");\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n setHasValue(false);\n };\n\n const data = {\n value: props.value,\n defaultValue: props.defaultValue,\n disabled: props.disabled,\n readOnly: props.readOnly,\n size: props.size,\n };\n\n const trackingId = useTrackingId({\n name: \"SearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <div\n className={cx(\n textfieldStyles[\"textfield\"],\n styles[\"searchfield\"],\n className,\n )}\n data-anv=\"SearchField\"\n style={styleCombined}\n >\n <div\n className={cx(\n textfieldStyles[\"input-wrapper\"],\n styles[\"input-wrapper\"],\n {\n [textfieldStyles[\"small\"]]: size === \"small\",\n [textfieldStyles[\"large\"]]: size === \"large\",\n },\n )}\n role=\"presentation\"\n onClick={() => inputRef.current?.focus()}\n >\n <div aria-hidden className={textfieldStyles[\"prefix\"]}>\n <Icon aria-label=\"search\" svg={Search} />\n </div>\n <input\n className={cx(textfieldStyles[\"input\"])}\n ref={useMergeRefs([ref, inputRef])}\n onChange={handleOnChange}\n placeholder={placeholder}\n value={value}\n type=\"search\"\n autoComplete={autoComplete}\n disabled={disabled}\n aria-labelledby={placeholderUid}\n data-tracking-id={trackingId}\n {...rest}\n />\n <Icon\n aria-label=\"cancel\"\n svg={Close}\n role=\"button\"\n onClick={handleClear}\n className={styles[\"clear\"]}\n aria-disabled={disabled}\n style={{\n visibility: hasValue ? \"visible\" : \"hidden\",\n }}\n />\n </div>\n <SrOnly id={placeholderUid}>{placeholder}</SrOnly>\n </div>\n );\n },\n);\n"],"names":["SearchField","textfieldStyles","Search","Close"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectFieldSync-DF05HvD4.js","sources":["../src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.ts","../src/beta/components/SelectField/internal/SelectFieldListItem.tsx","../src/beta/components/SelectField/internal/InView.tsx","../src/beta/components/SelectField/internal/SelectFieldList.tsx","../src/beta/components/SelectField/internal/SelectFieldInput.tsx","../src/beta/components/SelectField/internal/SelectFieldLabel.tsx","../src/internal/hooks/useDebouncedCallback/useDebouncedCallback.ts","../src/beta/components/SelectField/internal/useCombo.tsx","../src/beta/components/SelectField/internal/FieldPopover/FieldPopover.tsx","../src/beta/hooks/useAdaptiveView.tsx","../src/beta/components/SelectField/internal/FieldDialog/FieldDialog.tsx","../src/beta/components/SelectField/SelectField.tsx","../src/beta/components/SelectField/SelectFieldSync.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n SelectFieldOption,\n SelectFieldPageLazyResult,\n SelectFieldOffsetLazyResult,\n SelectFieldGroupLazyResult,\n SelectFieldPropsLazyPage,\n SelectFieldPropsLazyOffset,\n SelectFieldPropsLazyGroup,\n SelectFieldPropsEager,\n} from \"../../../beta/components/SelectField/types\";\n\nexport const DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_CACHE_MAX_SIZE = 15;\n\n/**\n * Configuration for caching search results in useSelectFieldLoading.\n * When enabled, the full accumulated state (options, pagination cursor, hasMore)\n * is cached per search value, allowing instant restoration when returning to\n * a previous search.\n */\nexport type CacheConfig = {\n /**\n * Whether caching is enabled. Defaults to true.\n */\n enabled?: boolean;\n /**\n * Maximum number of search values to cache before clearing.\n * Defaults to 15.\n */\n maxSize?: number;\n};\n\n/**\n * The full state cached per search value, including accumulated options,\n * pagination cursor, and hasMore flag.\n */\ntype CachedSearchState = {\n options: SelectFieldOption[];\n hasMore: boolean;\n previousPage: number;\n previousOffset: number;\n previousGroup: string | number | null;\n};\n\ntype UseSelectFieldLoadingConfigLazyPage = Pick<\n SelectFieldPropsLazyPage,\n \"lazy\" | \"loadOptions\"\n> & {\n pageSize: number;\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigLazyOffset = Pick<\n SelectFieldPropsLazyOffset,\n \"lazy\" | \"loadOptions\"\n> & {\n limit: number;\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigLazyGroup = Pick<\n SelectFieldPropsLazyGroup,\n \"lazy\" | \"loadOptions\"\n> & {\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigEager = Pick<\n SelectFieldPropsEager,\n \"lazy\" | \"loadOptions\"\n> & {\n cache?: CacheConfig;\n};\n\nexport type UseSelectFieldLoadingConfig =\n | UseSelectFieldLoadingConfigLazyPage\n | UseSelectFieldLoadingConfigLazyOffset\n | UseSelectFieldLoadingConfigLazyGroup\n | UseSelectFieldLoadingConfigEager;\n\nexport type UseSelectFieldLoadingReturn = {\n /**\n * Current loaded options array\n */\n options: SelectFieldOption[];\n /**\n * Boolean indicating initial load in progress\n */\n loading: boolean;\n /**\n * Boolean indicating load more in progress\n */\n loadingMore: boolean;\n /**\n * Boolean indicating if more options are available\n */\n hasMore: boolean;\n /**\n * Function to load options. When initial is true, replaces options and sets loading state.\n * When initial is false or undefined, appends options and sets loadingMore state.\n * @param searchValue - The search value to load options for\n * @param options - Optional configuration\n * @param options.initial - Whether this is an initial load (replaces options) or continuation (appends options)\n */\n loadOptions: (\n searchValue: string,\n options?: { initial?: boolean },\n ) => Promise<void>;\n /**\n * Function to load more options (for pagination). Appends to existing options.\n * @param searchValue - The search value to load more options for\n */\n loadMore: (searchValue: string) => Promise<void>;\n /**\n * Function to reset all state to initial values\n */\n reset: () => void;\n /**\n * Function to clear the search results cache\n */\n clearCache: () => void;\n};\n\n/**\n * Custom hook for managing SelectField option loading state and logic.\n *\n * Features:\n * - Manages option loading state (loading, loadingMore, hasMore)\n * - Supports eager loading and three lazy loading modes (page, offset, group)\n * - Handles pagination state tracking for lazy loading\n * - Provides methods to load options (initial or continuation) and load more\n * - Automatically manages option replacement vs appending based on load type\n * - Tracks pagination state (page, offset, group) for lazy loading modes\n * - Provides reset functionality to clear all state\n *\n * @param config - Configuration object containing lazy mode, loadOptions function, and pagination settings\n * @returns Object containing options, loading states, and load functions\n *\n * @example\n * const { options, loading, loadingMore, hasMore, loadOptions, loadMore } = useSelectFieldLoading({\n * lazy: \"page\",\n * loadOptions: async (searchValue, page, pageSize) => {\n * const result = await fetchOptions(searchValue, page, pageSize);\n * return { options: result.items, hasMore: result.hasMore };\n * },\n * pageSize: 10\n * });\n */\nexport function useSelectFieldLoading(\n config: UseSelectFieldLoadingConfig,\n): UseSelectFieldLoadingReturn {\n const { lazy, loadOptions: loadOptionsProp, cache: cacheConfig } = config;\n\n // Cache configuration\n const cacheEnabled = cacheConfig?.enabled !== false;\n const cacheMaxSize = cacheConfig?.maxSize ?? DEFAULT_CACHE_MAX_SIZE;\n\n const [options, setOptions] = useState<SelectFieldOption[]>([]);\n const [hasMoreToLoad, setHasMoreToLoad] = useState(false);\n const [previousGroup, setPreviousGroup] = useState<string | number | null>(\n null,\n );\n const [previousPage, setPreviousPage] = useState<number>(0);\n const [previousOffset, setPreviousOffset] = useState<number>(0);\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n\n // Cache state: stores full accumulated state per search value\n const [stateCache, setStateCache] = useState<Map<string, CachedSearchState>>(\n () => new Map(),\n );\n // Track the current search value to know which cache entry to update on loadMore\n const currentSearchValueRef = useRef<string>(\"\");\n\n const appendOptions = useCallback((newOptions: SelectFieldOption[]) => {\n setOptions((prevOptions) => prevOptions.concat(newOptions));\n }, []);\n\n const pageSize =\n lazy === \"page\"\n ? (config as UseSelectFieldLoadingConfigLazyPage).pageSize\n : DEFAULT_PAGE_SIZE;\n const limit =\n lazy === \"offset\"\n ? (config as UseSelectFieldLoadingConfigLazyOffset).limit\n : DEFAULT_PAGE_SIZE;\n\n // Helper to restore state from cache\n const restoreFromCache = useCallback((cached: CachedSearchState) => {\n setOptions(cached.options);\n setHasMoreToLoad(cached.hasMore);\n setPreviousPage(cached.previousPage);\n setPreviousOffset(cached.previousOffset);\n setPreviousGroup(cached.previousGroup);\n }, []);\n\n // Sync current state to cache whenever options or pagination state changes.\n // This effect runs after React has batched all state updates from loadOptions/loadMore,\n // ensuring we cache the complete, up-to-date state.\n useEffect(() => {\n if (!cacheEnabled) return;\n const searchValue = currentSearchValueRef.current;\n // Only cache if we have options (empty string \"\" is a valid search value)\n if (options.length === 0) return;\n\n setStateCache((prev) => {\n // Clear cache if we've reached max size\n if (prev.size >= cacheMaxSize) {\n prev.clear();\n }\n\n prev.set(searchValue, {\n options,\n hasMore: hasMoreToLoad,\n previousPage,\n previousOffset,\n previousGroup,\n });\n return new Map(prev);\n });\n }, [\n cacheEnabled,\n cacheMaxSize,\n options,\n hasMoreToLoad,\n previousPage,\n previousOffset,\n previousGroup,\n ]);\n\n const loadOptions = useCallback(\n async (\n searchValue: string,\n options?: { initial?: boolean },\n ): Promise<void> => {\n const isInitial = !!options?.initial;\n\n // On initial load, check cache first\n if (isInitial && cacheEnabled) {\n const cached = stateCache.get(searchValue);\n if (cached) {\n // Restore full state from cache - no API call needed\n currentSearchValueRef.current = searchValue;\n restoreFromCache(cached);\n return;\n }\n }\n\n // Track current search value for cache updates on loadMore\n if (isInitial) {\n currentSearchValueRef.current = searchValue;\n }\n\n (isInitial ? setLoading : setLoadingMore)(true);\n\n try {\n if (!lazy) {\n const result = await loadOptionsProp(searchValue);\n const resolved = Array.isArray(result) ? result : await result;\n (isInitial ? setOptions : appendOptions)(resolved);\n } else {\n let result:\n | SelectFieldPageLazyResult\n | SelectFieldOffsetLazyResult\n | SelectFieldGroupLazyResult;\n\n if (lazy === \"page\") {\n const page = isInitial ? 0 : previousPage;\n result = await loadOptionsProp(searchValue, page, pageSize);\n setPreviousPage(isInitial ? 1 : page + 1);\n } else if (lazy === \"offset\") {\n const offset = isInitial ? 0 : previousOffset;\n result = await loadOptionsProp(searchValue, offset, limit);\n setPreviousOffset(isInitial ? limit : offset + limit);\n } else if (lazy === \"group\") {\n const group = isInitial ? null : previousGroup;\n result = await loadOptionsProp(searchValue, group);\n setPreviousGroup(\n result.options[result.options.length - 1]?.group ?? null,\n );\n } else {\n throw new Error(\n `Invalid lazy mode: ${lazy}. Expected 'page', 'offset', or 'group'.`,\n );\n }\n\n setHasMoreToLoad(result.hasMore ?? false);\n (isInitial ? setOptions : appendOptions)(result.options);\n }\n } finally {\n (isInitial ? setLoading : setLoadingMore)(false);\n }\n },\n [\n lazy,\n pageSize,\n limit,\n loadOptionsProp,\n appendOptions,\n previousPage,\n previousOffset,\n previousGroup,\n cacheEnabled,\n stateCache,\n restoreFromCache,\n ],\n );\n\n const loadMore = useCallback(\n async (searchValue: string): Promise<void> => {\n await loadOptions(searchValue, { initial: false });\n },\n [loadOptions],\n );\n\n const reset = useCallback(() => {\n setOptions([]);\n setHasMoreToLoad(false);\n setPreviousGroup(null);\n setPreviousPage(0);\n setPreviousOffset(0);\n setLoading(false);\n setLoadingMore(false);\n }, []);\n\n const clearCache = useCallback(() => {\n setStateCache(new Map());\n }, []);\n\n return {\n options,\n loading,\n loadingMore,\n hasMore: hasMoreToLoad,\n loadOptions,\n loadMore,\n reset,\n clearCache,\n };\n}\n","import { UseComboboxPropGetters } from \"downshift\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { SelectFieldDownshiftItem } from \"../types\";\nimport Icon from \"../../../../components/Icon\";\nimport styles from \"./SelectFieldListItem.module.scss\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport cx from \"classnames\";\nimport { useMemo } from \"react\";\nimport Text from \"../../../../components/Text\";\n\ntype GetItemProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getItemProps\"];\n\nexport type SelectFieldListItemProps = {\n item: SelectFieldDownshiftItem;\n index: number;\n highlighted: boolean;\n disabled: boolean;\n getItemProps: GetItemProps;\n selectionType: \"single\" | \"multiple\";\n checked: boolean | \"indeterminate\";\n};\n\nexport const SelectFieldListItem = ({\n item,\n index,\n highlighted,\n disabled,\n getItemProps,\n selectionType,\n checked,\n}: SelectFieldListItemProps) => {\n const checkbox = useMemo(() => {\n if (checked === \"indeterminate\")\n return {\n icon: CheckboxIndeterminate,\n class: styles[\"indeterminate\"],\n };\n if (checked) return { icon: CheckboxChecked, class: styles[\"checked\"] };\n return { icon: CheckboxOutline, class: styles[\"unchecked\"] };\n }, [checked]);\n\n return (\n <li\n key={item.id}\n {...getItemProps({\n item,\n index,\n className: cx(styles[\"select-field-list-item\"], {\n [styles.highlighted]: highlighted,\n [styles.selected]: checked,\n [styles.disabled]: disabled,\n [styles.single]: selectionType === \"single\",\n [styles.multiple]: selectionType === \"multiple\",\n }),\n })}\n >\n {selectionType === \"multiple\" && (\n <div aria-hidden>\n <Icon\n size=\"large\"\n svg={checkbox.icon}\n className={cx(styles[\"checkbox\"], checkbox.class)}\n />\n </div>\n )}\n <Flex grow={1} shrink={1} direction=\"column\" gap=\"1\">\n <Text size=\"medium\">\n {item.original.content?.title ?? item.original.label}\n </Text>\n {item.original.content?.description && (\n <Text size=\"small\">{item.original.content?.description}</Text>\n )}\n </Flex>\n {selectionType === \"single\" && checked && (\n <Icon\n size=\"medium\"\n svg={Check}\n className={cx(styles[\"checkbox\"], styles[\"checked\"])}\n />\n )}\n </li>\n );\n};\n","import { ReactNode } from \"react\";\nimport { useIntersectionObserver } from \"../../../../internal/hooks\";\n\n/**\n * Props for the InView component\n * @property {ReactNode} children - The content to render inside the visibility-tracked container\n * @property {(isVisible: boolean) => void} [onVisibilityChange] - Callback fired when visibility changes\n */\ntype InViewProps = {\n /**\n * The content to render inside the visibility-tracked container\n */\n children?: ReactNode;\n /**\n * Callback fired when the element's visibility in the viewport changes\n */\n onVisibilityChange?: (isVisible: boolean) => void;\n /**\n * The root margin for the intersection observer\n */\n rootMargin?: string;\n};\n\n/**\n * Internal component that detects when its content is visible in the viewport.\n *\n * Features:\n * - Uses Intersection Observer API for efficient visibility detection\n * - Fires callback when visibility state changes\n * - Handles browser compatibility gracefully\n * - Automatically cleans up observer on unmount\n *\n * @param props - Component props\n * @returns Wrapped children with visibility detection\n */\nexport const InView = ({\n children,\n onVisibilityChange,\n rootMargin,\n}: InViewProps) => {\n const { ref } = useIntersectionObserver({\n onChange: (isIntersecting) => {\n onVisibilityChange?.(isIntersecting);\n },\n rootMargin,\n });\n\n return <div ref={ref}>{children}</div>;\n};\n","import { SelectFieldDownshiftItem, SelectFieldOption } from \"../types\";\nimport { UseComboboxPropGetters } from \"downshift\";\nimport Spinner from \"../../../../components/Spinner\";\nimport Button from \"../../../../components/Button\";\nimport styles from \"./SelectFieldList.module.scss\";\nimport cx from \"classnames\";\nimport { CSSProperties } from \"react\";\nimport { SelectFieldListItem } from \"./SelectFieldListItem\";\nimport { InView } from \"./InView\";\nimport { Text } from \"../../../../components/Text\";\nimport { SrOnly } from \"../../../../components\";\n\ntype GetMenuProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getMenuProps\"];\ntype GetItemProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getItemProps\"];\n\nexport type SelectFieldListProps = {\n isOpen: boolean;\n items: SelectFieldDownshiftItem[];\n getMenuProps: GetMenuProps;\n getItemProps: GetItemProps;\n highlightedIndex: number;\n selectedOption: SelectFieldOption | null;\n hasMore: boolean;\n onLoadMore: () => void;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n};\nexport const SelectFieldList = ({\n isOpen,\n items,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedOption,\n hasMore,\n onLoadMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n disabled,\n className,\n style,\n}: SelectFieldListProps) => {\n const handleLoaderVisibilityChange = (visible: boolean) => {\n if (visible && !disableAutoLoadMore) {\n onLoadMore();\n }\n };\n\n return (\n <div\n {...getMenuProps({\n className: cx(styles[\"scroller\"], className),\n style,\n })}\n >\n <ul className={cx(styles[\"select-field-list\"])}>\n {isOpen && (\n <>\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Spinner size=\"medium\" />\n </div>\n ) : items.length > 0 ? (\n items.map((item, index) => (\n <SelectFieldListItem\n key={item.id}\n item={item}\n index={index}\n getItemProps={getItemProps}\n selectionType=\"single\"\n checked={selectedOption?.id === item.original.id}\n highlighted={highlightedIndex === index}\n disabled={disabled ?? false}\n />\n ))\n ) : (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n )}\n </>\n )}\n </ul>\n {loadingMore ? (\n <div className={styles[\"load-more\"]}>\n <Spinner size=\"small\" />\n <SrOnly>Loading more...</SrOnly>\n </div>\n ) : hasMore && !loading ? (\n <InView\n onVisibilityChange={handleLoaderVisibilityChange}\n rootMargin=\"0px 0px -100px 0px\"\n >\n <div className={styles[\"load-more\"]}>\n <Button appearance=\"secondary\" size=\"small\" onClick={onLoadMore}>\n Load more\n </Button>\n </div>\n </InView>\n ) : null}\n </div>\n );\n};\n\nSelectFieldList.displayName = \"SelectFieldList\";\n","import styles from \"../../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport cx from \"classnames\";\nimport { PassThroughProps, Size } from \"../../../../types\";\nimport { Button } from \"../../../../components/Button\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { RefObject } from \"react\";\n\n/**\n * Props for the SelectFieldInput component\n * @property {string} [placeholder] - Placeholder text displayed when input is empty\n * @property {Extract<Size, \"small\" | \"medium\" | \"large\">} [size] - Size variant of the input\n * @property {boolean} [disableClearButton] - Hides the clear button when true\n * @property {boolean} [disableToggleButton] - Hides the toggle button when true\n * @property {boolean} [disabled] - Disables the input and toggle button when true\n * @property {() => void} [onClear] - Callback fired when the clear button is clicked\n * @property {string} [id] - HTML id attribute for the input element\n * @property {string} [popoverTarget] - Target identifier for popover association\n * @property {RefObject<HTMLDivElement>} [inputWrapperRef] - Ref for the input wrapper div element\n * @property {PassThroughProps<\"div\">} [htmlInputWrapperProps] - Additional props passed to the wrapper div\n * @property {PassThroughProps<\"input\">} [inputProps] - Additional props passed to the input element\n * @property {PassThroughProps<\"button\">} [toggleButtonProps] - Additional props passed to the toggle button\n */\nexport type SelectFieldInputProps = {\n placeholder?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n disableClearButton?: boolean;\n disableToggleButton?: boolean;\n disabled?: boolean;\n onClear?: () => void;\n id?: string;\n popoverTarget?: string;\n inputWrapperRef?: RefObject<HTMLDivElement>;\n htmlInputWrapperProps?: PassThroughProps<\"div\">;\n inputProps?: PassThroughProps<\"input\">;\n toggleButtonProps?: PassThroughProps<\"button\">;\n};\n\n/**\n * Internal input component for the SelectField that provides the text input and action buttons.\n *\n * Features:\n * - Text input for filtering and displaying selected values\n * - Optional clear button for removing the current selection\n * - Optional toggle button for opening/closing the dropdown menu\n * - Supports multiple size variants (small, medium, large)\n * - Fully accessible with proper ARIA labels on buttons\n * - Supports pass-through props for customization of internal elements\n *\n * @example\n * <SelectFieldInput\n * placeholder=\"Search...\"\n * size=\"medium\"\n * onClear={() => handleClear()}\n * />\n */\nexport const SelectFieldInput = ({\n placeholder,\n size,\n disableClearButton,\n disableToggleButton,\n disabled,\n onClear,\n id,\n inputWrapperRef,\n htmlInputWrapperProps,\n inputProps,\n toggleButtonProps,\n}: SelectFieldInputProps) => {\n const inputWrapperClassNames = cx(styles[\"input-wrapper\"], {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: disableClearButton,\n });\n\n return (\n <div\n ref={inputWrapperRef}\n {...htmlInputWrapperProps}\n className={cx(inputWrapperClassNames, htmlInputWrapperProps?.className)}\n >\n <input\n id={id}\n placeholder={placeholder}\n {...inputProps}\n className={cx(styles[\"input\"], inputProps?.className)}\n />\n <div className={styles[\"buttons-wrapper\"]}>\n {disableClearButton ? null : (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n icon={Close}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n className={styles[\"close-button\"]}\n onClick={() => {\n onClear?.();\n }}\n />\n </div>\n )}\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n icon={Chevron_Right}\n aria-label=\"toggle menu\"\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n {...toggleButtonProps}\n className={cx(\n styles[\"toggle-button\"],\n toggleButtonProps?.className,\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nSelectFieldInput.displayName = \"SelectFieldInput\";\n","import { UseComboboxPropGetters } from \"downshift\";\nimport { SelectFieldDownshiftItem } from \"../types\";\nimport { FieldLabel } from \"../../../../components/FieldLabel\";\n\ntype GetLabelProps =\n UseComboboxPropGetters<SelectFieldDownshiftItem>[\"getLabelProps\"];\n\n/**\n * Props for the SelectFieldLabel component\n * @property {string} label - The text content to display as the label\n * @property {GetLabelProps} getLabelProps - Downshift getter function that returns accessibility props for the label\n */\nexport type SelectFieldLabelProps = {\n label: string;\n getLabelProps: GetLabelProps;\n};\n\n/**\n * Internal label component for the SelectField that renders an accessible label element.\n *\n * Features:\n * - Renders a FieldLabel with proper accessibility attributes from Downshift\n * - Automatically associates the label with the combobox input\n * - Supports screen readers with proper labeling\n *\n * @example\n * <SelectFieldLabel\n * label=\"Select an option\"\n * getLabelProps={getLabelProps}\n * />\n */\nexport const SelectFieldLabel = ({\n label,\n getLabelProps,\n}: SelectFieldLabelProps) => {\n return <FieldLabel {...getLabelProps()}>{label}</FieldLabel>;\n};\n","import { useRef, useEffect, useCallback } from \"react\";\n\n/**\n * Custom hook for creating a debounced version of a callback function.\n *\n * Features:\n * - Delays callback execution until after a specified delay period\n * - Cancels previous pending calls when a new one is made\n * - Maintains stable function reference (only changes when delay changes)\n * - Always uses the latest callback via ref (avoids stale closures)\n * - Properly cleans up timeouts on unmount and delay changes\n * - Supports async callbacks\n * - Type-safe with generics\n *\n * @param callback - The function to debounce\n * @param delay - Delay in milliseconds before executing the callback\n * @returns Debounced version of the callback with the same signature\n *\n * @example\n * const debouncedSearch = useDebouncedCallback(\n * (searchTerm: string) => {\n * performSearch(searchTerm);\n * },\n * 300\n * );\n *\n * // Later in event handler:\n * debouncedSearch(inputValue);\n */\n//eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useDebouncedCallback<T extends (...args: any[]) => any>(\n callback: T,\n delay: number = 300,\n): T {\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const callbackRef = useRef(callback);\n\n // Update callback ref when it changes to always use the latest version\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n // Cleanup timeout on unmount and when delay changes\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n }, [delay]);\n\n const debouncedCallback = useCallback(\n ((...args: Parameters<T>) => {\n // Cancel any pending call\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Schedule new call\n timeoutRef.current = setTimeout(() => {\n callbackRef.current(...args);\n timeoutRef.current = null;\n }, delay);\n }) as T,\n [delay],\n );\n\n return debouncedCallback;\n}\n","import {\n useCombobox,\n UseComboboxProps,\n UseComboboxState,\n UseComboboxStateChangeOptions,\n} from \"downshift\";\nimport { SelectFieldDownshiftItem, SelectFieldOption } from \"../types\";\nimport { useMemo } from \"react\";\n\nexport type UseComboOptions = {\n // An array of currently loaded options\n options: SelectFieldOption[];\n pinnedOptions?: unknown;\n selectAll?: {\n label: string;\n onClick: () => void;\n };\n selectedOption: SelectFieldOption | null;\n onSelectedOptionChange: (option: SelectFieldOption | null) => void;\n displayAs: \"popover\" | \"dialog\";\n disableHighlightOnOpen?: boolean;\n} & Pick<\n UseComboboxProps<SelectFieldDownshiftItem>,\n \"onInputValueChange\" | \"onIsOpenChange\"\n>;\n\n/**\n * The purpose of useCombo is to provide an abstraction over the downshift combobox hook.\n */\nexport const useCombo = ({\n options,\n pinnedOptions,\n selectAll,\n selectedOption,\n onSelectedOptionChange,\n onInputValueChange,\n onIsOpenChange,\n displayAs = \"popover\",\n disableHighlightOnOpen = false,\n}: UseComboOptions) => {\n // Options are not 1:1 with the items we pass to downshift.\n // We may choose to insert, remove, or modify them before passing them down.\n // Anything which can be accessed via arrow keys should be included here.\n const downshiftItems = useMemo(() => {\n const items: SelectFieldDownshiftItem[] = options.map(\n mapOptionToDownshiftItem,\n );\n\n // Add the pinned options to the top of the list if they are provided\n if (pinnedOptions) {\n // TODO: Implement pinned options\n }\n\n // Add the select all option to the top of the list if it is provided\n if (selectAll) {\n items.unshift({\n id: \"select-all\",\n type: \"select-all\",\n original: { id: \"select-all\", label: selectAll.label ?? \"Select All\" },\n });\n }\n\n return items;\n }, [options, pinnedOptions, selectAll]);\n\n const selectedDownshiftItem = useMemo(() => {\n return selectedOption ? mapOptionToDownshiftItem(selectedOption) : null;\n }, [selectedOption]);\n\n const {\n isOpen,\n highlightedIndex,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n inputValue,\n closeMenu,\n openMenu,\n setHighlightedIndex,\n } = useCombobox({\n selectedItem: selectedDownshiftItem,\n onSelectedItemChange: ({\n selectedItem: si,\n }: {\n selectedItem: SelectFieldDownshiftItem;\n }) => {\n if (si && si.type === \"option\") {\n onSelectedOptionChange(si.original);\n } else {\n onSelectedOptionChange(null);\n }\n },\n onInputValueChange,\n onIsOpenChange: (changes) => {\n onIsOpenChange?.(changes);\n if (changes.isOpen && !disableHighlightOnOpen) {\n const selectedItemIndex = downshiftItems.findIndex(\n (item) => item.id === selectedDownshiftItem?.id,\n );\n setHighlightedIndex(selectedItemIndex);\n }\n },\n items: downshiftItems,\n itemToString(item: SelectFieldDownshiftItem | null) {\n return item?.original.label ?? \"\";\n },\n stateReducer: (state, actionAndChanges) =>\n stateReducer(state, actionAndChanges, displayAs),\n });\n\n return {\n inputValue,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n highlightedIndex,\n isOpen,\n downshiftItems,\n closeMenu,\n openMenu,\n };\n};\n\nfunction mapOptionToDownshiftItem(\n option: SelectFieldOption,\n): SelectFieldDownshiftItem {\n return {\n id: option.id,\n type: \"option\",\n original: option,\n };\n}\n\nfunction stateReducer(\n state: UseComboboxState<SelectFieldDownshiftItem>,\n actionAndChanges: UseComboboxStateChangeOptions<SelectFieldDownshiftItem>,\n displayAs: \"popover\" | \"dialog\",\n) {\n const { type, changes } = actionAndChanges;\n // this prevents the menu from being closed when the user selects an item with 'Enter' or mouse\n switch (type) {\n case useCombobox.stateChangeTypes.InputBlur:\n // keep the dialog open if the user blurs the input while the dialog is open\n if (displayAs === \"dialog\" && state.isOpen) {\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputKeyDownEscape:\n case useCombobox.stateChangeTypes.FunctionCloseMenu:\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputClick:\n if (displayAs === \"dialog\" && state.isOpen) {\n // keep the dialog open if the user clicks the input while the dialog is open\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return changes;\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return changes;\n default:\n return changes; // otherwise business as usual.\n }\n}\n","import { ReactNode, RefObject, useCallback, useEffect, useRef } from \"react\";\n\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n size,\n} from \"@floating-ui/react\";\n\nimport styles from \"./FieldPopover.module.scss\";\n\nexport type FieldPopoverProps = {\n id: string;\n children: ReactNode;\n referenceElement: RefObject<HTMLElement>;\n open: boolean;\n};\n\nexport const FieldPopover = (props: FieldPopoverProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { id, children, referenceElement, open } = props;\n\n useEffect(() => {\n if (open) {\n ref.current?.showPopover();\n } else {\n ref.current?.hidePopover();\n }\n }, [open]);\n\n const updatePosition = useCallback(async () => {\n if (!ref.current || !referenceElement.current) return;\n const position = await computePosition(\n referenceElement.current,\n ref.current,\n {\n placement: \"bottom-start\",\n middleware: [\n offset(8),\n autoPlacement({\n allowedPlacements: [\"bottom-start\", \"top-start\"],\n padding: 8,\n }),\n size({\n padding: 8,\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${Math.max(0, availableHeight)}px`,\n });\n },\n }),\n ],\n },\n );\n ref.current.style.left = `${position.x}px`;\n ref.current.style.top = `${position.y}px`;\n }, [ref, referenceElement]);\n\n useEffect(() => {\n if (!ref.current || !referenceElement.current || !open) return;\n const cleanup = autoUpdate(\n referenceElement.current,\n ref.current,\n updatePosition,\n );\n return () => {\n cleanup();\n };\n }, [referenceElement, ref, updatePosition, open]);\n\n return (\n <div ref={ref} id={id} className={styles[\"field-popover\"]} popover=\"manual\">\n {children}\n </div>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useBreakpoint } from \"../../hooks\";\n\n/**\n * The type of view to render based on device characteristics.\n */\nexport type AdaptiveView = \"mobile\" | \"desktop\";\n\n/**\n * Return type for the useAdaptiveView hook.\n */\nexport interface UseAdaptiveViewReturn {\n /**\n * The current adaptive view type.\n */\n view: AdaptiveView;\n /**\n * True when the device should use mobile-optimized UI (Dialog).\n */\n isMobile: boolean;\n /**\n * True when the device should use desktop-optimized UI (Popover).\n */\n isDesktop: boolean;\n}\n\n/**\n * Detects whether the primary pointer is coarse (touch) using CSS media query.\n * Returns false during SSR or when matchMedia is unavailable.\n */\nfunction detectCoarsePointer(): boolean {\n if (typeof window === \"undefined\" || !window.matchMedia) {\n return false;\n }\n return window.matchMedia(\"(pointer: coarse)\").matches;\n}\n\n/**\n * Custom hook for detecting whether to use mobile or desktop UI patterns.\n *\n * This hook determines the optimal UI pattern (e.g., Dialog vs Popover) by combining:\n * - Screen size via useBreakpoint (viewport width)\n * - Pointer precision via CSS media query (pointer: coarse)\n *\n * A device is considered \"mobile\" when it has both:\n * - A small screen (below md breakpoint, < 768px)\n * - A coarse pointer (touch-primary input)\n *\n * This approach correctly identifies:\n * - Mobile phones → mobile view (Dialog)\n * - iPads/tablets → desktop view (Popover) due to larger screens\n * - Touch laptops → desktop view (Popover) due to fine pointer primary\n * - Desktop → desktop view (Popover)\n *\n * @returns Object containing view type and boolean flags for mobile/desktop\n *\n * @example\n * const { isMobile } = useAdaptiveView();\n *\n * return isMobile ? (\n * <Dialog>{children}</Dialog>\n * ) : (\n * <Popover>{children}</Popover>\n * );\n */\nexport function useAdaptiveView(): UseAdaptiveViewReturn {\n const breakpoint = useBreakpoint();\n const [hasCoarsePointer, setHasCoarsePointer] = useState(detectCoarsePointer);\n\n useEffect(() => {\n setHasCoarsePointer(detectCoarsePointer());\n\n // Listen for pointer capability changes (e.g., connecting/disconnecting a mouse)\n const mediaQuery = window.matchMedia(\"(pointer: coarse)\");\n const handleChange = (e: MediaQueryListEvent) => {\n setHasCoarsePointer(e.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, []);\n\n const isSmallScreen = !breakpoint?.md;\n const isMobile = isSmallScreen && hasCoarsePointer;\n\n return {\n view: isMobile ? \"mobile\" : \"desktop\",\n isMobile,\n isDesktop: !isMobile,\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport { DialogCancelButton, Flex, Text } from \"../../../../..\";\nimport styles from \"./FieldDialog.module.scss\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { DialogContext } from \"../../../../../components/Dialog/internal/DialogContext\";\nimport { useDialogScrollLock } from \"../../../../../internal\";\n\nexport const FieldDialog = ({\n id,\n isOpen,\n onClose,\n field,\n children,\n title,\n}: {\n id: string;\n isOpen: boolean;\n onClose: () => void;\n title: string;\n field: React.ReactNode;\n children: React.ReactNode;\n}) => {\n const elRef = useRef<HTMLDialogElement>(null);\n const visualViewportHeightRef = useRef<HTMLDivElement>(null);\n\n useDialogScrollLock({\n open: isOpen,\n id,\n enableScrollChaining: false,\n elementRef: elRef,\n });\n\n useEffect(() => {\n if (isOpen) {\n elRef.current?.showModal();\n } else {\n elRef.current?.close();\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (isOpen) {\n const handleResize = () => {\n if (!visualViewportHeightRef.current) return;\n visualViewportHeightRef.current.style.height = `${window.visualViewport?.height ?? 0}px`;\n visualViewportHeightRef.current.style.maxHeight = `${window.visualViewport?.height ?? 0}px`;\n };\n window.visualViewport?.addEventListener(\"resize\", handleResize);\n return () => {\n window.visualViewport?.removeEventListener(\"resize\", handleResize);\n };\n }\n }, [isOpen]);\n\n return (\n <dialog\n ref={elRef}\n id={id}\n data-anv=\"field-dialog\"\n className={styles[\"field-dialog\"]}\n onKeyDown={(e) => {\n if (e.code === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n }}\n >\n <div\n className={styles[\"field-dialog-visual-viewport-height\"]}\n ref={visualViewportHeightRef}\n >\n <Flex direction=\"row\" className={styles[\"header\"]}>\n <Text variant=\"headline\" el=\"h1\">\n {title}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogContext.Provider value={{ close: onClose }}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </DialogContext.Provider>\n </span>\n </Flex>\n <Flex direction=\"column\" className={styles[\"field\"]}>\n {field}\n </Flex>\n <Flex direction=\"column\" className={styles[\"content\"]}>\n {children}\n </Flex>\n </div>\n </dialog>\n );\n};\n","import { SelectFieldHandle, SelectFieldProps } from \"./types\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n useId,\n useRef,\n} from \"react\";\nimport { SelectFieldList } from \"./internal/SelectFieldList\";\nimport { SelectFieldInput } from \"./internal/SelectFieldInput\";\nimport { SelectFieldLabel } from \"./internal/SelectFieldLabel\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks/useLayoutPropsUtil\";\nimport { useDebouncedCallback } from \"../../../internal/hooks/useDebouncedCallback\";\nimport {\n useSelectFieldLoading,\n DEFAULT_PAGE_SIZE,\n} from \"../../../internal/hooks/useSelectFieldLoading\";\nimport styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport { useCombo } from \"./internal/useCombo\";\nimport { FieldPopover } from \"./internal/FieldPopover/FieldPopover\";\nimport { useAdaptiveView } from \"../../hooks/useAdaptiveView\";\nimport { FieldDialog } from \"./internal/FieldDialog/FieldDialog\";\n\nexport const SelectField = forwardRef<SelectFieldHandle, SelectFieldProps>(\n (propsWithLayout, ref) => {\n const { layoutStyles, componentProps: componentProps } =\n useLayoutPropsUtil(propsWithLayout);\n const [initialLoadPerformed, setInitialLoadPerformed] = useState(false);\n\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const {\n id: idProp,\n value: selectedOption,\n initialLoad: initialLoadProp = \"auto\",\n displayMenuAs: displayMenuAsProp = \"auto\",\n lazy,\n loadOptions: loadOptionsProp,\n label,\n placeholder,\n disableClearButton: disableClearButtonProp = false,\n debounceMs = 200,\n onSelectedOptionChange,\n cache,\n size,\n } = componentProps;\n const autoId = useId();\n const id = idProp ?? autoId;\n\n const { isMobile } = useAdaptiveView();\n const displayAs =\n displayMenuAsProp === \"auto\"\n ? isMobile\n ? \"dialog\"\n : \"popover\"\n : displayMenuAsProp;\n\n const initialLoad =\n initialLoadProp === \"auto\" ? \"immediate\" : initialLoadProp;\n\n const pageSize =\n lazy === \"page\" && \"lazyOptions\" in componentProps\n ? (componentProps.lazyOptions?.pageSize ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n const limit =\n lazy === \"offset\" && \"lazyOptions\" in componentProps\n ? (componentProps.lazyOptions?.limit ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n\n const loadingHookConfig = useMemo(() => {\n const cacheConfig = {\n enabled: cache?.enabled,\n maxSize: cache?.maxSize,\n };\n if (lazy === \"page\")\n return {\n lazy: \"page\" as const,\n loadOptions: loadOptionsProp,\n pageSize,\n cache: cacheConfig,\n };\n if (lazy === \"offset\")\n return {\n lazy: \"offset\" as const,\n loadOptions: loadOptionsProp,\n limit,\n cache: cacheConfig,\n };\n if (lazy === \"group\")\n return {\n lazy: \"group\" as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n return {\n lazy: false as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n }, [\n lazy,\n loadOptionsProp,\n pageSize,\n limit,\n cache?.enabled,\n cache?.maxSize,\n ]);\n\n const {\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n clearCache,\n } = useSelectFieldLoading(loadingHookConfig);\n\n useImperativeHandle(ref, () => ({ clearCache }), [clearCache]);\n\n const debouncedOptionLoader = useDebouncedCallback((inputValue: string) => {\n loadOptions(selectedOption?.label === inputValue ? \"\" : inputValue, {\n initial: true,\n });\n }, debounceMs);\n\n const adjustInputValueForSelectedOption = useCallback(\n (inputValue: string) => {\n if (selectedOption?.label === inputValue) {\n return \"\";\n } else {\n return inputValue;\n }\n },\n [selectedOption?.label],\n );\n\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n highlightedIndex,\n getItemProps,\n inputValue,\n downshiftItems,\n closeMenu,\n } = useCombo({\n displayAs,\n options,\n pinnedOptions: [],\n selectedOption,\n onSelectedOptionChange: (selectedOption) => {\n onSelectedOptionChange(selectedOption);\n },\n async onIsOpenChange(changes) {\n if (initialLoad === \"open\" && !initialLoadPerformed && changes.isOpen) {\n await loadOptions(adjustInputValueForSelectedOption(inputValue), {\n initial: true,\n });\n setInitialLoadPerformed(true);\n }\n },\n onInputValueChange: ({ inputValue: iv }) => {\n debouncedOptionLoader(iv);\n },\n });\n\n useEffect(() => {\n const performInitialLoad = async () => {\n if (initialLoad === \"immediate\" && !initialLoadPerformed) {\n await loadOptions(adjustInputValueForSelectedOption(inputValue), {\n initial: true,\n });\n setInitialLoadPerformed(true);\n }\n };\n performInitialLoad();\n }, [\n loadOptions,\n initialLoadPerformed,\n initialLoad,\n inputValue,\n adjustInputValueForSelectedOption,\n ]);\n\n const handleLoadMore = async () => {\n await loadMore(adjustInputValueForSelectedOption(inputValue));\n };\n\n const disableClearButton = disableClearButtonProp || !selectedOption;\n\n if (displayAs === \"dialog\") {\n return (\n <div className={styles[\"search-field\"]} style={{ ...layoutStyles }}>\n <SelectFieldLabel label={label} getLabelProps={getLabelProps} />\n <SelectFieldInput\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n toggleButtonProps={getToggleButtonProps()}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n inputProps={getInputProps()}\n size={size}\n />\n <FieldDialog\n id={`${id}-dialog`}\n isOpen={isOpen}\n onClose={closeMenu}\n title={label}\n field={\n <SelectFieldInput\n inputProps={getInputProps()}\n disableToggleButton\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-dialog-input`}\n inputWrapperRef={inputWrapperRef}\n size=\"medium\" // always \"medium\" for the dialog\n />\n }\n >\n <SelectFieldList\n isOpen // always \"open\" = always show the list in the dialog\n items={downshiftItems}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n style={{\n paddingInline: 24,\n paddingBlockEnd: 24,\n }}\n />\n </FieldDialog>\n </div>\n );\n }\n\n return (\n <div className={styles[\"search-field\"]} style={{ ...layoutStyles }}>\n <SelectFieldLabel label={label} getLabelProps={getLabelProps} />\n <SelectFieldInput\n inputProps={getInputProps({\n popovertarget: `${id}-popover`,\n })}\n toggleButtonProps={getToggleButtonProps()}\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n popoverTarget={`${id}-popover`}\n inputWrapperRef={inputWrapperRef}\n size={size}\n />\n\n <FieldPopover\n id={`${id}-popover`}\n referenceElement={inputWrapperRef}\n open={isOpen && displayAs === \"popover\"}\n >\n <SelectFieldList\n isOpen={isOpen}\n items={downshiftItems}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n style={{\n padding: 8,\n }}\n />\n </FieldPopover>\n </div>\n );\n },\n);\n\nSelectField.displayName = \"SelectField\";\n","import { matchSorter, MatchSorterOptions } from \"match-sorter\";\nimport { SelectField } from \"./SelectField\";\nimport { SelectFieldProps, SelectFieldOption } from \"./types\";\n\nexport type SelectFieldSyncProps = Omit<\n SelectFieldProps,\n \"loadOptions\" | \"lazy\" | \"debounceMs\" | \"cache\" | \"initialLoad\"\n> & {\n /**\n * The options to display in the select field.\n */\n options: SelectFieldOption[];\n /**\n * The filter to use to filter the options.\n * Can be a function to filter the options, or a MatchSorterOptions object to customize the default filtering.\n *\n * @example\n * <SelectFieldSync\n * options={options}\n * filter={(options, searchValue) => {\n * return options.filter((option) => {\n * return option.label?.toLowerCase().includes(searchValue.toLowerCase());\n * });\n * }}\n * />\n *\n * @example\n * <SelectFieldSync\n * options={options}\n * filter={{ keys: [\"label\"] }}\n * />\n */\n filter?:\n | ((\n options: SelectFieldOption[],\n searchValue: string,\n ) => SelectFieldOption[])\n | MatchSorterOptions;\n};\n\nconst defaultFilter = (options: SelectFieldOption[], searchValue: string) => {\n return matchSorter(options, searchValue, {\n keys: [\"label\", \"searchText\"],\n });\n};\n\n/**\n * SelectFieldSync is a simplified version of SelectField that is used to display a list of options in a select field.\n *\n * Features:\n * - Accepts `options` instead of `loadOptions` and `lazy`.\n * - Performs client-side filtering of the options.\n * - Optionally accepts a function to filter the options, or a MatchSorterOptions object to customize the default filtering.\n * - Supports all the other props of SelectField.\n */\nexport const SelectFieldSync = (props: SelectFieldSyncProps) => {\n const { options, filter: filterProp = defaultFilter, ...rest } = props;\n\n const filter =\n typeof filterProp === \"function\"\n ? filterProp\n : (options: SelectFieldOption[], searchValue: string) =>\n matchSorter<SelectFieldOption>(\n options,\n searchValue,\n filterProp as MatchSorterOptions<SelectFieldOption>,\n );\n\n return (\n <SelectField\n lazy={false}\n loadOptions={(searchValue) => filter(options, searchValue)}\n debounceMs={0}\n {...rest}\n />\n );\n};\n"],"names":["options","CheckboxIndeterminate","styles","CheckboxChecked","CheckboxOutline","Check","Close","Chevron_Right","inputValue","selectedOption"],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import './SelectTriggerBase.css';const input = "_input_dwq5b_27";
2
- const prefix = "_prefix_dwq5b_55";
3
- const suffix = "_suffix_dwq5b_56";
4
- const select = "_select_dwq5b_76";
5
- const chip = "_chip_dwq5b_172";
6
- const small = "_small_dwq5b_210";
7
- const large = "_large_dwq5b_213";
8
- const error = "_error_dwq5b_231";
9
- const styles = {
10
- "search-field": "_search-field_dwq5b_2",
11
- "buttons-wrapper": "_buttons-wrapper_dwq5b_13",
12
- input: input,
13
- "input-wrapper": "_input-wrapper_dwq5b_28",
14
- "toggle-button-wrapper": "_toggle-button-wrapper_dwq5b_41",
15
- "close-button-wrapper": "_close-button-wrapper_dwq5b_42",
16
- prefix: prefix,
17
- suffix: suffix,
18
- select: select,
19
- "no-clear-button": "_no-clear-button_dwq5b_90",
20
- "input-flex": "_input-flex_dwq5b_93",
21
- "fake-placeholder": "_fake-placeholder_dwq5b_121",
22
- "close-button": "_close-button_dwq5b_42",
23
- "toggle-button": "_toggle-button_dwq5b_41",
24
- "prefix-wrapper": "_prefix-wrapper_dwq5b_154",
25
- "rows-wrapper": "_rows-wrapper_dwq5b_162",
26
- "chip-wrapper": "_chip-wrapper_dwq5b_172",
27
- chip: chip,
28
- small: small,
29
- large: large,
30
- error: error};
31
-
32
- export { styles as s };
33
- //# sourceMappingURL=SelectTriggerBase.module-DUhQNr6j.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectTriggerBase.module-DUhQNr6j.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}