@servicetitan/anvil2 2.9.1 → 2.9.2

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 (154) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiMark-DR-w6Nbm.js → AiMark-DhgDh95y.js} +2 -2
  3. package/dist/{AiMark-DR-w6Nbm.js.map → AiMark-DhgDh95y.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-Dj61Bq8h.js → Alert-DffLPz0l.js} +2 -2
  6. package/dist/{Alert-Dj61Bq8h.js.map → Alert-DffLPz0l.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Breadcrumbs-ojgYVZwe.js → Breadcrumbs-CkPZHJGM.js} +2 -2
  9. package/dist/{Breadcrumbs-ojgYVZwe.js.map → Breadcrumbs-CkPZHJGM.js.map} +1 -1
  10. package/dist/Breadcrumbs.js +1 -1
  11. package/dist/{Calendar-Dxl9QnfP.js → Calendar-0DG2so95.js} +2 -2
  12. package/dist/{Calendar-Dxl9QnfP.js.map → Calendar-0DG2so95.js.map} +1 -1
  13. package/dist/{Calendar-Cka4unyi.js → Calendar-CaWPwtb3.js} +2 -2
  14. package/dist/{Calendar-Cka4unyi.js.map → Calendar-CaWPwtb3.js.map} +1 -1
  15. package/dist/Calendar.js +2 -2
  16. package/dist/{Checkbox-B-XTVPbX.js → Checkbox-B1I1OfZU.js} +3 -3
  17. package/dist/{Checkbox-B-XTVPbX.js.map → Checkbox-B1I1OfZU.js.map} +1 -1
  18. package/dist/{Checkbox-Cw1-KFvq.js → Checkbox-CTR7JfWk.js} +2 -2
  19. package/dist/{Checkbox-Cw1-KFvq.js.map → Checkbox-CTR7JfWk.js.map} +1 -1
  20. package/dist/Checkbox.js +1 -1
  21. package/dist/{Chip-Ce0WGKAc.js → Chip-lIWu8uXb.js} +2 -2
  22. package/dist/{Chip-Ce0WGKAc.js.map → Chip-lIWu8uXb.js.map} +1 -1
  23. package/dist/Chip.js +1 -1
  24. package/dist/{Combobox-CNQUROyr.js → Combobox-Dt3AnO9Z.js} +4 -4
  25. package/dist/{Combobox-CNQUROyr.js.map → Combobox-Dt3AnO9Z.js.map} +1 -1
  26. package/dist/Combobox.js +1 -1
  27. package/dist/{DataTable-JRxu2yTP.js → DataTable-bMoIuYBK.js} +7 -7
  28. package/dist/{DataTable-JRxu2yTP.js.map → DataTable-bMoIuYBK.js.map} +1 -1
  29. package/dist/{DateFieldRange-D2hnF50O.js → DateFieldRange-B_D6v-F7.js} +4 -4
  30. package/dist/{DateFieldRange-D2hnF50O.js.map → DateFieldRange-B_D6v-F7.js.map} +1 -1
  31. package/dist/DateFieldRange.js +1 -1
  32. package/dist/{DateFieldSingle-BuaB7RDr.js → DateFieldSingle-D_Ve0E6q.js} +4 -4
  33. package/dist/{DateFieldSingle-BuaB7RDr.js.map → DateFieldSingle-D_Ve0E6q.js.map} +1 -1
  34. package/dist/DateFieldSingle.js +1 -1
  35. package/dist/{DateFieldYearless-DLeMEutt.js → DateFieldYearless-Bg7OLIsT.js} +4 -4
  36. package/dist/{DateFieldYearless-DLeMEutt.js.map → DateFieldYearless-Bg7OLIsT.js.map} +1 -1
  37. package/dist/DateFieldYearless.js +1 -1
  38. package/dist/{DateFieldYearlessRange-BfPuYKKC.js → DateFieldYearlessRange-C40uUmLK.js} +3 -3
  39. package/dist/{DateFieldYearlessRange-BfPuYKKC.js.map → DateFieldYearlessRange-C40uUmLK.js.map} +1 -1
  40. package/dist/DateFieldYearlessRange.js +1 -1
  41. package/dist/{DaysOfTheWeek-BW1T8sTU.js → DaysOfTheWeek-2a8Ukq59.js} +2 -2
  42. package/dist/{DaysOfTheWeek-BW1T8sTU.js.map → DaysOfTheWeek-2a8Ukq59.js.map} +1 -1
  43. package/dist/DaysOfTheWeek.js +1 -1
  44. package/dist/{Dialog-Cewu2pd_.js → Dialog-zxpNOCDS.js} +4 -4
  45. package/dist/{Dialog-Cewu2pd_.js.map → Dialog-zxpNOCDS.js.map} +1 -1
  46. package/dist/Dialog.js +1 -1
  47. package/dist/{Drawer-Cb5asXWf.js → Drawer-DkCcE434.js} +4 -4
  48. package/dist/{Drawer-Cb5asXWf.js.map → Drawer-DkCcE434.js.map} +1 -1
  49. package/dist/Drawer.js +1 -1
  50. package/dist/DrillDown.js +1 -1
  51. package/dist/{EditCard-DlJE3LXN.js → EditCard-BKHmnbKP.js} +2 -2
  52. package/dist/{EditCard-DlJE3LXN.js.map → EditCard-BKHmnbKP.js.map} +1 -1
  53. package/dist/EditCard.js +1 -1
  54. package/dist/{FieldLabel-HO2VP-4B.js → FieldLabel-M5v4-PAV.js} +2 -2
  55. package/dist/{FieldLabel-HO2VP-4B.js.map → FieldLabel-M5v4-PAV.js.map} +1 -1
  56. package/dist/FieldLabel.js +1 -1
  57. package/dist/{InputMask-CLLTehFI.js → InputMask-PVCfJodz.js} +3 -3
  58. package/dist/{InputMask-CLLTehFI.js.map → InputMask-PVCfJodz.js.map} +1 -1
  59. package/dist/InputMask.js +1 -1
  60. package/dist/{ListView-CPi-qG2w.js → ListView-DT32FdKH.js} +2 -2
  61. package/dist/{ListView-CPi-qG2w.js.map → ListView-DT32FdKH.js.map} +1 -1
  62. package/dist/ListView.js +1 -1
  63. package/dist/{Listbox-Bp4hqIpH.js → Listbox-BR0HTJaM.js} +2 -2
  64. package/dist/{Listbox-Bp4hqIpH.js.map → Listbox-BR0HTJaM.js.map} +1 -1
  65. package/dist/Listbox.js +1 -1
  66. package/dist/MultiSelectField.js +1 -1
  67. package/dist/{MultiSelectFieldSync-ChZCW4M9.js → MultiSelectFieldSync-fV2O5J0N.js} +5 -5
  68. package/dist/{MultiSelectFieldSync-ChZCW4M9.js.map → MultiSelectFieldSync-fV2O5J0N.js.map} +1 -1
  69. package/dist/MultiSelectMenu.js +1 -1
  70. package/dist/{MultiSelectMenuSync-7C1wW4oO.js → MultiSelectMenuSync-BViWKlX1.js} +3 -3
  71. package/dist/{MultiSelectMenuSync-7C1wW4oO.js.map → MultiSelectMenuSync-BViWKlX1.js.map} +1 -1
  72. package/dist/{NumberField-CZSTHBeO.js → NumberField-BxWTjbmF.js} +3 -3
  73. package/dist/{NumberField-CZSTHBeO.js.map → NumberField-BxWTjbmF.js.map} +1 -1
  74. package/dist/NumberField.js +1 -1
  75. package/dist/{Page-BHdvTlfE.js → Page-DFjOwTzH.js} +8 -8
  76. package/dist/{Page-BHdvTlfE.js.map → Page-DFjOwTzH.js.map} +1 -1
  77. package/dist/Page.js +1 -1
  78. package/dist/{Pagination-B5jqHYG3.js → Pagination-B9pdkp_V.js} +2 -2
  79. package/dist/{Pagination-B5jqHYG3.js.map → Pagination-B9pdkp_V.js.map} +1 -1
  80. package/dist/Pagination.js +1 -1
  81. package/dist/{Popover-BbqTZw-1.js → Popover-CfG1IJP6.js} +2 -2
  82. package/dist/{Popover-BbqTZw-1.js.map → Popover-CfG1IJP6.js.map} +1 -1
  83. package/dist/Popover.js +1 -1
  84. package/dist/{ProgressBar-CZcxkdX6.js → ProgressBar-CFKKuXeN.js} +2 -2
  85. package/dist/{ProgressBar-CZcxkdX6.js.map → ProgressBar-CFKKuXeN.js.map} +1 -1
  86. package/dist/ProgressBar.js +1 -1
  87. package/dist/{Radio-BFr8AdHc.js → Radio-CeVjHOXe.js} +2 -2
  88. package/dist/{Radio-BFr8AdHc.js.map → Radio-CeVjHOXe.js.map} +1 -1
  89. package/dist/{Radio-DJZVMCv0.js → Radio-Dda5sh2r.js} +3 -3
  90. package/dist/{Radio-DJZVMCv0.js.map → Radio-Dda5sh2r.js.map} +1 -1
  91. package/dist/Radio.js +1 -1
  92. package/dist/{SelectCard-DVcWJRbX.js → SelectCard-COJn0wT6.js} +3 -3
  93. package/dist/{SelectCard-DVcWJRbX.js.map → SelectCard-COJn0wT6.js.map} +1 -1
  94. package/dist/SelectCard.js +1 -1
  95. package/dist/SelectField.js +1 -1
  96. package/dist/{SelectFieldLabel-kEBS8L4l.js → SelectFieldLabel-ChEvk0uS.js} +2 -2
  97. package/dist/{SelectFieldLabel-kEBS8L4l.js.map → SelectFieldLabel-ChEvk0uS.js.map} +1 -1
  98. package/dist/{SelectFieldSync-o1Cp9UYC.js → SelectFieldSync-CDIRIYv2.js} +4 -4
  99. package/dist/{SelectFieldSync-o1Cp9UYC.js.map → SelectFieldSync-CDIRIYv2.js.map} +1 -1
  100. package/dist/SelectMenu.js +1 -1
  101. package/dist/{SelectMenuSync-DXrwecFt.js → SelectMenuSync-DkQrikHz.js} +3 -3
  102. package/dist/{SelectMenuSync-DXrwecFt.js.map → SelectMenuSync-DkQrikHz.js.map} +1 -1
  103. package/dist/{SelectOptions-Dy2OWqxn.js → SelectOptions-BN1tCi7P.js} +2 -2
  104. package/dist/{SelectOptions-Dy2OWqxn.js.map → SelectOptions-BN1tCi7P.js.map} +1 -1
  105. package/dist/{SelectTrigger-DhKYzEAr.js → SelectTrigger-LZUtpAFW.js} +2 -2
  106. package/dist/{SelectTrigger-DhKYzEAr.js.map → SelectTrigger-LZUtpAFW.js.map} +1 -1
  107. package/dist/SelectTrigger.js +1 -1
  108. package/dist/{SelectTriggerBase-Ni8WqeUx.js → SelectTriggerBase-qeFownmF.js} +3 -3
  109. package/dist/{SelectTriggerBase-Ni8WqeUx.js.map → SelectTriggerBase-qeFownmF.js.map} +1 -1
  110. package/dist/{Switch-C84MBChG.js → Switch-3u7oAQQV.js} +2 -2
  111. package/dist/{Switch-C84MBChG.js.map → Switch-3u7oAQQV.js.map} +1 -1
  112. package/dist/Switch.js +1 -1
  113. package/dist/Table.js +1 -1
  114. package/dist/{Text-WiS8UZkY.js → Text-DQ78JchQ.js} +2 -2
  115. package/dist/{Text-WiS8UZkY.js.map → Text-DQ78JchQ.js.map} +1 -1
  116. package/dist/Text.js +1 -1
  117. package/dist/{TextField-OznkTx4e.js → TextField-Bu5kAe9_.js} +2 -2
  118. package/dist/{TextField-OznkTx4e.js.map → TextField-Bu5kAe9_.js.map} +1 -1
  119. package/dist/{TextField-Bul_uln5.js → TextField-DHk1k3cf.js} +3 -3
  120. package/dist/{TextField-Bul_uln5.js.map → TextField-DHk1k3cf.js.map} +1 -1
  121. package/dist/TextField.js +1 -1
  122. package/dist/{Textarea-CCYLsJ1x.js → Textarea-CYv02rxW.js} +3 -3
  123. package/dist/{Textarea-CCYLsJ1x.js.map → Textarea-CYv02rxW.js.map} +1 -1
  124. package/dist/Textarea.js +1 -1
  125. package/dist/{TimeField-BPvPbD8H.js → TimeField-BYtP64Qx.js} +4 -4
  126. package/dist/{TimeField-BPvPbD8H.js.map → TimeField-BYtP64Qx.js.map} +1 -1
  127. package/dist/TimeField.js +1 -1
  128. package/dist/Toast.js +2 -2
  129. package/dist/{Toaster-DYJm06Vb.js → Toaster-BRjGoIQu.js} +3 -3
  130. package/dist/{Toaster-DYJm06Vb.js.map → Toaster-BRjGoIQu.js.map} +1 -1
  131. package/dist/{Toaster-CIaIvwH6.js → Toaster-DO83u5o3.js} +2 -2
  132. package/dist/{Toaster-CIaIvwH6.js.map → Toaster-DO83u5o3.js.map} +1 -1
  133. package/dist/{Toolbar-ByyI7SqG.js → Toolbar-Dsaufi65.js} +12 -12
  134. package/dist/{Toolbar-ByyI7SqG.js.map → Toolbar-Dsaufi65.js.map} +1 -1
  135. package/dist/Toolbar.js +1 -1
  136. package/dist/{YearlessDateInputWithPicker-C_twiQW5.js → YearlessDateInputWithPicker-CChqr1gR.js} +2 -2
  137. package/dist/{YearlessDateInputWithPicker-C_twiQW5.js.map → YearlessDateInputWithPicker-CChqr1gR.js.map} +1 -1
  138. package/dist/beta.js +9 -9
  139. package/dist/index.js +36 -36
  140. package/dist/{stripInlineMarkdown-Cg1qlNwL.js → stripInlineMarkdown-V3M_UxQ8.js} +2 -2
  141. package/dist/{stripInlineMarkdown-Cg1qlNwL.js.map → stripInlineMarkdown-V3M_UxQ8.js.map} +1 -1
  142. package/dist/{syncFilterUtils-UR5Vgqkh.js → syncFilterUtils-DtOBvzdr.js} +4 -4
  143. package/dist/{syncFilterUtils-UR5Vgqkh.js.map → syncFilterUtils-DtOBvzdr.js.map} +1 -1
  144. package/dist/token.js +1 -5
  145. package/dist/token.js.map +1 -1
  146. package/dist/{useDrilldown-D6VZNSCX.js → useDrilldown-CK9KzXvI.js} +3 -3
  147. package/dist/{useDrilldown-D6VZNSCX.js.map → useDrilldown-CK9KzXvI.js.map} +1 -1
  148. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  149. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  150. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  151. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  152. package/dist/{useToggleSelection-BBdrIVWs.js → useToggleSelection-BMXohj4f.js} +2 -2
  153. package/dist/{useToggleSelection-BBdrIVWs.js.map → useToggleSelection-BMXohj4f.js.map} +1 -1
  154. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-Dxl9QnfP.js';
2
+ import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-0DG2so95.js';
3
3
 
4
4
  const Calendar = (props) => {
5
5
  const { dateMetadata, onMonthView, ...stableProps } = props;
@@ -7,4 +7,4 @@ const Calendar = (props) => {
7
7
  };
8
8
 
9
9
  export { Calendar as C };
10
- //# sourceMappingURL=Calendar-Cka4unyi.js.map
10
+ //# sourceMappingURL=Calendar-CaWPwtb3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-Cka4unyi.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n CalendarProps as StableCalendarProps,\n} from \"../../../components\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport interface CalendarBetaProps {\n dateMetadata?: {\n date: string;\n context: string;\n }[];\n onMonthView?: ({ month, year }: { month: number; year: number }) => void;\n}\n\nexport const Calendar = (props: CalendarBetaProps & StableCalendarProps) => {\n const { dateMetadata, onMonthView, ...stableProps } = props;\n return (\n <CalendarBetaPropsContext.Provider value={{ dateMetadata, onMonthView }}>\n <StableCalendar {...stableProps} />\n </CalendarBetaPropsContext.Provider>\n );\n};\n"],"names":["StableCalendar"],"mappings":";;;AAcO,MAAM,QAAA,GAAW,CAAC,KAAA,KAAmD;AAC1E,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,GAAG,aAAY,GAAI,KAAA;AACtD,EAAA,uBACE,GAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,KAAA,EAAO,EAAE,YAAA,EAAc,WAAA,EAAY,EACpE,QAAA,kBAAA,GAAA,CAACA,UAAA,EAAA,EAAgB,GAAG,aAAa,CAAA,EACnC,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Calendar-CaWPwtb3.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n CalendarProps as StableCalendarProps,\n} from \"../../../components\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport interface CalendarBetaProps {\n dateMetadata?: {\n date: string;\n context: string;\n }[];\n onMonthView?: ({ month, year }: { month: number; year: number }) => void;\n}\n\nexport const Calendar = (props: CalendarBetaProps & StableCalendarProps) => {\n const { dateMetadata, onMonthView, ...stableProps } = props;\n return (\n <CalendarBetaPropsContext.Provider value={{ dateMetadata, onMonthView }}>\n <StableCalendar {...stableProps} />\n </CalendarBetaPropsContext.Provider>\n );\n};\n"],"names":["StableCalendar"],"mappings":";;;AAcO,MAAM,QAAA,GAAW,CAAC,KAAA,KAAmD;AAC1E,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,GAAG,aAAY,GAAI,KAAA;AACtD,EAAA,uBACE,GAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,KAAA,EAAO,EAAE,YAAA,EAAc,WAAA,EAAY,EACpE,QAAA,kBAAA,GAAA,CAACA,UAAA,EAAA,EAAgB,GAAG,aAAa,CAAA,EACnC,CAAA;AAEJ;;;;"}
package/dist/Calendar.js CHANGED
@@ -1,3 +1,3 @@
1
- export { C as Calendar, C as default } from './Calendar-Cka4unyi.js';
2
- export { u as useCalendarBetaProps } from './Calendar-Dxl9QnfP.js';
1
+ export { C as Calendar, C as default } from './Calendar-CaWPwtb3.js';
2
+ export { u as useCalendarBetaProps } from './Calendar-0DG2so95.js';
3
3
  //# sourceMappingURL=Calendar.js.map
@@ -2,10 +2,10 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { createContext, useContext, forwardRef, useId, useMemo } from 'react';
3
3
  import { c as checkboxStyles } from './Checkbox.module-EkRZO48Y.js';
4
4
  import { c as cx } from './index-De1g9FRV.js';
5
- import { F as FieldLabel } from './FieldLabel-HO2VP-4B.js';
5
+ import { F as FieldLabel } from './FieldLabel-M5v4-PAV.js';
6
6
  import { F as FieldMessage } from './FieldMessage-COHqUdj5.js';
7
7
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
8
- import { s as stripInlineMarkdown } from './stripInlineMarkdown-Cg1qlNwL.js';
8
+ import { s as stripInlineMarkdown } from './stripInlineMarkdown-V3M_UxQ8.js';
9
9
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
10
10
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
11
11
  import { I as Icon } from './Icon-DuIlne4x.js';
@@ -254,4 +254,4 @@ CheckboxElement.displayName = "Checkbox";
254
254
  const Checkbox = CheckboxElement;
255
255
 
256
256
  export { Checkbox as C, CheckboxGroup as a };
257
- //# sourceMappingURL=Checkbox-B-XTVPbX.js.map
257
+ //# sourceMappingURL=Checkbox-B1I1OfZU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox-B-XTVPbX.js","sources":["../src/components/Checkbox/internal/CheckboxGroupContext.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/internal/Checkbox.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Context value for CheckboxGroup\n * @property {boolean} hasError - Whether the group has an error state\n */\nexport type CheckboxGroupContextValue = {\n /**\n * Whether the checkbox group has an error state\n */\n hasError: boolean;\n};\n\n/**\n * Context for sharing state between CheckboxGroup and child Checkbox components\n */\nexport const CheckboxGroupContext = createContext<\n CheckboxGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access CheckboxGroup context from child Checkbox components\n * @returns CheckboxGroupContextValue if inside a CheckboxGroup, undefined otherwise\n */\nexport const useCheckboxGroupContext = () => {\n return useContext(CheckboxGroupContext);\n};\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactElement,\n useId,\n useMemo,\n} from \"react\";\nimport { stripInlineMarkdown, warnOnce } from \"../../internal/functions\";\nimport styles from \"./Checkbox.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport type { FieldLabelProps as FieldLabelElementProps } from \"../FieldLabel\";\nimport { FieldLabelProps as InternalFieldLabelProps } from \"../../internal/types\";\nimport { HelperProps } from \"../../internal/components\";\nimport FieldMessage, { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\n\n/**\n * Props for the CheckboxGroup component\n * @extends ComponentPropsWithoutRef<\"fieldset\">\n * @extends LayoutUtilProps\n * @extends Omit<InternalFieldLabelProps, \"labelProps\">\n */\nexport type CheckboxGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<InternalFieldLabelProps, \"labelProps\"> & {\n /**\n * required flag for label\n * @accessibility This does not enforce error when nothing is selected.\n * @default false\n */\n required?: boolean;\n\n // TODO(v4.0.0): type becomes string only\n /**\n * Legend for the fieldset.\n * Passing `ReactNode` is deprecated — use a plain string with inline markdown instead.\n */\n legend: string | ReactElement;\n\n /**\n * Additional props for the legend `FieldLabel` (for example `aiMark`, `className`).\n */\n legendProps?: Omit<FieldLabelElementProps, \"el\">;\n\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n /**\n * Description text to display below the field.\n */\n description?: HelperProps[\"description\"];\n /**\n * Hint text to display below the field.\n */\n hint?: HelperProps[\"hint\"];\n /**\n * When `true`, hides the visual label row. The sr-only `<legend>` always remains for screen readers.\n * @default false\n */\n hideLabel?: boolean;\n };\n\n/**\n * CheckboxGroup component for grouping related checkboxes together.\n *\n * Features:\n * - Groups multiple checkboxes with a common legend\n * - Supports required field indication\n * - Optional helper text and descriptions\n * - Full accessibility support with fieldset/legend\n * - Focus management for keyboard navigation\n * - Layout utility props for positioning and spacing\n * - Flexible layout direction (row/column)\n * - Screen reader support with hidden labels\n *\n * @example\n * <CheckboxGroup legend=\"Select your interests\" required>\n * <Checkbox label=\"Technology\" />\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * </CheckboxGroup>\n */\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n children,\n description,\n error,\n errorAriaLive: _errorAriaLive,\n hint,\n warning,\n hideLabel = false,\n legend,\n moreInfo,\n legendProps,\n onBlur,\n onFocus,\n required,\n style,\n ...rest\n } = componentProps;\n\n const checkboxGroupClassNames = cx(styles[\"checkbox-group\"], className);\n const helperUid = useId();\n const moreInfoUid = useId();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems:\n layoutStyles?.alignItems ??\n (layoutStyles?.flexDirection === \"row\" ? \"flex-start\" : undefined),\n };\n\n const labelClassNames = cx(styles[\"label\"], {\n [styles[\"direction-row\"]]: layoutStyles?.flexDirection === \"row\",\n });\n\n warnDeprecatedErrorUsage(\"CheckboxGroup\", error);\n\n // TODO(v4.0.0): remove once legend is string only\n if (typeof legend !== \"string\") {\n warnOnce(\n \"CheckboxGroup: Passing ReactNode to legend is deprecated. Use a plain string with inline markdown instead.\",\n );\n }\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const contextValue = useMemo(\n () => ({\n hasError: !!error,\n }),\n [error],\n );\n\n return (\n <fieldset\n role=\"group\"\n data-anv=\"checkbox-group\"\n className={checkboxGroupClassNames}\n ref={ref}\n style={styleCombined}\n onFocus={onFocus}\n onBlur={onBlur}\n {...rest}\n aria-describedby={ariaDescribedBy}\n >\n <legend className={styles[\"legend\"]}>\n {/* TODO(v4.0.0): remove typeof check — legend will always be string */}\n {typeof legend === \"string\" ? stripInlineMarkdown(legend) : legend}\n {required && \", required\"}\n </legend>\n {!hideLabel && (\n <div className={styles[\"label-row\"]}>\n <FieldLabel\n aria-hidden\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfo ? moreInfoUid : undefined}\n {...legendProps}\n className={cx(labelClassNames, legendProps?.className)}\n >\n {legend}\n </FieldLabel>\n </div>\n )}\n <CheckboxGroupContext.Provider value={contextValue}>\n <div\n className={styles[\"children\"]}\n style={{\n flexDirection: layoutStyles?.flexDirection,\n gap: layoutStyles?.gap,\n }}\n >\n {children}\n </div>\n </CheckboxGroupContext.Provider>\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n </fieldset>\n );\n});\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import {\n forwardRef,\n ChangeEvent,\n ComponentPropsWithoutRef,\n ReactElement,\n MouseEvent,\n useId,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Icon } from \"../../Icon\";\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\";\n\nimport styles from \"../Checkbox.module.scss\";\nimport { Svg, LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Helper, HelperProps } from \"../../../internal/components\";\nimport { CheckboxState } from \"../types\";\nimport { useCheckboxGroupContext } from \"./CheckboxGroupContext\";\n\nexport type { CheckboxState };\n\n/**\n * Props for the Checkbox component\n * @extends LayoutUtilProps\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\" | \"onClick\" | \"indeterminate\">\n */\nexport type CheckboxProps = LayoutUtilProps &\n Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"onChange\" | \"onClick\" | \"indeterminate\"\n > & {\n /**\n * Controlled state\n * @default false\n */\n checked?: boolean;\n\n /**\n * Uncontrolled state\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * Indeterminate state of the checkbox\n * @accessibility Applies aria-checked=\"mixed\"\n * @default false\n */\n indeterminate?: boolean;\n\n /**\n * Callback when checkbox is changed\n */\n onChange?: (\n e: ChangeEvent<HTMLInputElement>,\n state?: CheckboxState,\n ) => void;\n\n /**\n * Callback when checkbox is clicked\n */\n onClick?: (e?: MouseEvent<HTMLInputElement>, state?: CheckboxState) => void;\n\n /**\n * label for checkbox\n * @accessibility This should either be a string or have text content inside for accessibility\n */\n label?: string | ReactElement;\n\n /**\n * Error state for the checkbox\n * @accessibility Applies aria-invalid=\"true\"\n * @default false\n */\n error?: boolean;\n\n /**\n * Icon overrides\n */\n icons?: {\n checked?: Svg;\n indeterminate?: Svg;\n unchecked?: Svg;\n };\n\n description?: HelperProps[\"description\"];\n\n /**\n * When `true`, hides the checkbox for visual users.\n * @default false\n */\n hideCheckbox?: boolean;\n\n /**\n * Additional className applied to the label wrapper span\n */\n labelWrapperClassName?: string;\n };\n\nconst CheckboxElement = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n indeterminate,\n onChange,\n onClick,\n value,\n className,\n disabled,\n error,\n icons,\n checked: checkedProp,\n defaultChecked,\n label,\n style,\n required,\n description,\n hideCheckbox = false,\n labelWrapperClassName,\n ...rest\n } = componentProps;\n\n const groupContext = useCheckboxGroupContext();\n const {\n checked: checkedIcon = CheckboxChecked,\n indeterminate: indeterminateIcon = CheckboxIndeterminate,\n unchecked: uncheckedIcon = CheckboxOutline,\n } = { ...icons };\n\n const isControlled = typeof checkedProp !== \"undefined\";\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: checkedProp ?? e.target.checked });\n };\n\n const onClickHandler = (e: MouseEvent<HTMLInputElement>) => {\n onClick?.(e, {\n value,\n checked: checkedProp ?? (e.target as HTMLInputElement).checked,\n });\n };\n\n const helperUid = useId();\n\n // Combine local error state with group error state\n const hasError = error || groupContext?.hasError;\n\n const wrapperClassNames = cx(\n styles[\"wrapper\"],\n { [styles[\"focus\"]]: hideCheckbox },\n className,\n );\n\n const checkboxClassNames = cx(styles[\"checkbox\"], {\n [styles[\"error\"]]: hasError,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={wrapperClassNames}\n style={styleCombined}\n data-anv=\"checkbox\"\n >\n <label className={checkboxClassNames}>\n <input\n type=\"checkbox\"\n disabled={disabled}\n value={value}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n aria-checked={\n indeterminate ? \"mixed\" : (checkedProp ?? defaultChecked)\n }\n checked={isControlled ? checkedProp : undefined}\n defaultChecked={defaultChecked}\n aria-invalid={hasError}\n aria-describedby={description ? helperUid : undefined}\n ref={ref}\n {...rest}\n />\n\n <span\n className={cx(styles[\"icon-wrapper\"], {\n [styles[\"sr-only\"]]: hideCheckbox,\n })}\n aria-hidden\n >\n <Icon\n size=\"large\"\n svg={indeterminateIcon}\n className={styles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={checkedIcon}\n className={styles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={uncheckedIcon}\n className={styles[\"icon-unchecked\"]}\n />\n </span>\n\n <span\n className={cx(labelWrapperClassName, {\n [styles[\"focus-label\"]]: hideCheckbox,\n })}\n >\n {label}\n\n {required && (\n <span aria-hidden className={styles[\"required-asterisk\"]}>\n *\n </span>\n )}\n </span>\n </label>\n\n {description ? (\n <div className={styles[\"helper-wrapper\"]}>\n <Helper id={helperUid} description={description} />\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nCheckboxElement.displayName = \"Checkbox\";\n\n/**\n * Checkbox component for selecting one or more options from a list.\n *\n * Features:\n * - Controlled and uncontrolled state management\n * - Indeterminate state for partial selections\n * - Customizable icons for different states\n * - Error state with accessibility support\n * - Optional helper text and descriptions\n * - Hide checkbox option for visual-only interactions\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <Checkbox\n * label=\"Accept terms and conditions\"\n * onChange={(e, state) => console.log('Checked:', state.checked)}\n * required\n * />\n */\nexport const Checkbox = CheckboxElement;\n"],"names":["styles","CheckboxChecked","CheckboxIndeterminate","CheckboxOutline"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox-B1I1OfZU.js","sources":["../src/components/Checkbox/internal/CheckboxGroupContext.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/internal/Checkbox.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Context value for CheckboxGroup\n * @property {boolean} hasError - Whether the group has an error state\n */\nexport type CheckboxGroupContextValue = {\n /**\n * Whether the checkbox group has an error state\n */\n hasError: boolean;\n};\n\n/**\n * Context for sharing state between CheckboxGroup and child Checkbox components\n */\nexport const CheckboxGroupContext = createContext<\n CheckboxGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access CheckboxGroup context from child Checkbox components\n * @returns CheckboxGroupContextValue if inside a CheckboxGroup, undefined otherwise\n */\nexport const useCheckboxGroupContext = () => {\n return useContext(CheckboxGroupContext);\n};\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ReactElement,\n useId,\n useMemo,\n} from \"react\";\nimport { stripInlineMarkdown, warnOnce } from \"../../internal/functions\";\nimport styles from \"./Checkbox.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport type { FieldLabelProps as FieldLabelElementProps } from \"../FieldLabel\";\nimport { FieldLabelProps as InternalFieldLabelProps } from \"../../internal/types\";\nimport { HelperProps } from \"../../internal/components\";\nimport FieldMessage, { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\n\n/**\n * Props for the CheckboxGroup component\n * @extends ComponentPropsWithoutRef<\"fieldset\">\n * @extends LayoutUtilProps\n * @extends Omit<InternalFieldLabelProps, \"labelProps\">\n */\nexport type CheckboxGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<InternalFieldLabelProps, \"labelProps\"> & {\n /**\n * required flag for label\n * @accessibility This does not enforce error when nothing is selected.\n * @default false\n */\n required?: boolean;\n\n // TODO(v4.0.0): type becomes string only\n /**\n * Legend for the fieldset.\n * Passing `ReactNode` is deprecated — use a plain string with inline markdown instead.\n */\n legend: string | ReactElement;\n\n /**\n * Additional props for the legend `FieldLabel` (for example `aiMark`, `className`).\n */\n legendProps?: Omit<FieldLabelElementProps, \"el\">;\n\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n /**\n * Description text to display below the field.\n */\n description?: HelperProps[\"description\"];\n /**\n * Hint text to display below the field.\n */\n hint?: HelperProps[\"hint\"];\n /**\n * When `true`, hides the visual label row. The sr-only `<legend>` always remains for screen readers.\n * @default false\n */\n hideLabel?: boolean;\n };\n\n/**\n * CheckboxGroup component for grouping related checkboxes together.\n *\n * Features:\n * - Groups multiple checkboxes with a common legend\n * - Supports required field indication\n * - Optional helper text and descriptions\n * - Full accessibility support with fieldset/legend\n * - Focus management for keyboard navigation\n * - Layout utility props for positioning and spacing\n * - Flexible layout direction (row/column)\n * - Screen reader support with hidden labels\n *\n * @example\n * <CheckboxGroup legend=\"Select your interests\" required>\n * <Checkbox label=\"Technology\" />\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * </CheckboxGroup>\n */\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n children,\n description,\n error,\n errorAriaLive: _errorAriaLive,\n hint,\n warning,\n hideLabel = false,\n legend,\n moreInfo,\n legendProps,\n onBlur,\n onFocus,\n required,\n style,\n ...rest\n } = componentProps;\n\n const checkboxGroupClassNames = cx(styles[\"checkbox-group\"], className);\n const helperUid = useId();\n const moreInfoUid = useId();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems:\n layoutStyles?.alignItems ??\n (layoutStyles?.flexDirection === \"row\" ? \"flex-start\" : undefined),\n };\n\n const labelClassNames = cx(styles[\"label\"], {\n [styles[\"direction-row\"]]: layoutStyles?.flexDirection === \"row\",\n });\n\n warnDeprecatedErrorUsage(\"CheckboxGroup\", error);\n\n // TODO(v4.0.0): remove once legend is string only\n if (typeof legend !== \"string\") {\n warnOnce(\n \"CheckboxGroup: Passing ReactNode to legend is deprecated. Use a plain string with inline markdown instead.\",\n );\n }\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const contextValue = useMemo(\n () => ({\n hasError: !!error,\n }),\n [error],\n );\n\n return (\n <fieldset\n role=\"group\"\n data-anv=\"checkbox-group\"\n className={checkboxGroupClassNames}\n ref={ref}\n style={styleCombined}\n onFocus={onFocus}\n onBlur={onBlur}\n {...rest}\n aria-describedby={ariaDescribedBy}\n >\n <legend className={styles[\"legend\"]}>\n {/* TODO(v4.0.0): remove typeof check — legend will always be string */}\n {typeof legend === \"string\" ? stripInlineMarkdown(legend) : legend}\n {required && \", required\"}\n </legend>\n {!hideLabel && (\n <div className={styles[\"label-row\"]}>\n <FieldLabel\n aria-hidden\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfo ? moreInfoUid : undefined}\n {...legendProps}\n className={cx(labelClassNames, legendProps?.className)}\n >\n {legend}\n </FieldLabel>\n </div>\n )}\n <CheckboxGroupContext.Provider value={contextValue}>\n <div\n className={styles[\"children\"]}\n style={{\n flexDirection: layoutStyles?.flexDirection,\n gap: layoutStyles?.gap,\n }}\n >\n {children}\n </div>\n </CheckboxGroupContext.Provider>\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n </fieldset>\n );\n});\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import {\n forwardRef,\n ChangeEvent,\n ComponentPropsWithoutRef,\n ReactElement,\n MouseEvent,\n useId,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Icon } from \"../../Icon\";\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\";\n\nimport styles from \"../Checkbox.module.scss\";\nimport { Svg, LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Helper, HelperProps } from \"../../../internal/components\";\nimport { CheckboxState } from \"../types\";\nimport { useCheckboxGroupContext } from \"./CheckboxGroupContext\";\n\nexport type { CheckboxState };\n\n/**\n * Props for the Checkbox component\n * @extends LayoutUtilProps\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\" | \"onClick\" | \"indeterminate\">\n */\nexport type CheckboxProps = LayoutUtilProps &\n Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"onChange\" | \"onClick\" | \"indeterminate\"\n > & {\n /**\n * Controlled state\n * @default false\n */\n checked?: boolean;\n\n /**\n * Uncontrolled state\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * Indeterminate state of the checkbox\n * @accessibility Applies aria-checked=\"mixed\"\n * @default false\n */\n indeterminate?: boolean;\n\n /**\n * Callback when checkbox is changed\n */\n onChange?: (\n e: ChangeEvent<HTMLInputElement>,\n state?: CheckboxState,\n ) => void;\n\n /**\n * Callback when checkbox is clicked\n */\n onClick?: (e?: MouseEvent<HTMLInputElement>, state?: CheckboxState) => void;\n\n /**\n * label for checkbox\n * @accessibility This should either be a string or have text content inside for accessibility\n */\n label?: string | ReactElement;\n\n /**\n * Error state for the checkbox\n * @accessibility Applies aria-invalid=\"true\"\n * @default false\n */\n error?: boolean;\n\n /**\n * Icon overrides\n */\n icons?: {\n checked?: Svg;\n indeterminate?: Svg;\n unchecked?: Svg;\n };\n\n description?: HelperProps[\"description\"];\n\n /**\n * When `true`, hides the checkbox for visual users.\n * @default false\n */\n hideCheckbox?: boolean;\n\n /**\n * Additional className applied to the label wrapper span\n */\n labelWrapperClassName?: string;\n };\n\nconst CheckboxElement = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n indeterminate,\n onChange,\n onClick,\n value,\n className,\n disabled,\n error,\n icons,\n checked: checkedProp,\n defaultChecked,\n label,\n style,\n required,\n description,\n hideCheckbox = false,\n labelWrapperClassName,\n ...rest\n } = componentProps;\n\n const groupContext = useCheckboxGroupContext();\n const {\n checked: checkedIcon = CheckboxChecked,\n indeterminate: indeterminateIcon = CheckboxIndeterminate,\n unchecked: uncheckedIcon = CheckboxOutline,\n } = { ...icons };\n\n const isControlled = typeof checkedProp !== \"undefined\";\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: checkedProp ?? e.target.checked });\n };\n\n const onClickHandler = (e: MouseEvent<HTMLInputElement>) => {\n onClick?.(e, {\n value,\n checked: checkedProp ?? (e.target as HTMLInputElement).checked,\n });\n };\n\n const helperUid = useId();\n\n // Combine local error state with group error state\n const hasError = error || groupContext?.hasError;\n\n const wrapperClassNames = cx(\n styles[\"wrapper\"],\n { [styles[\"focus\"]]: hideCheckbox },\n className,\n );\n\n const checkboxClassNames = cx(styles[\"checkbox\"], {\n [styles[\"error\"]]: hasError,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n className={wrapperClassNames}\n style={styleCombined}\n data-anv=\"checkbox\"\n >\n <label className={checkboxClassNames}>\n <input\n type=\"checkbox\"\n disabled={disabled}\n value={value}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n aria-checked={\n indeterminate ? \"mixed\" : (checkedProp ?? defaultChecked)\n }\n checked={isControlled ? checkedProp : undefined}\n defaultChecked={defaultChecked}\n aria-invalid={hasError}\n aria-describedby={description ? helperUid : undefined}\n ref={ref}\n {...rest}\n />\n\n <span\n className={cx(styles[\"icon-wrapper\"], {\n [styles[\"sr-only\"]]: hideCheckbox,\n })}\n aria-hidden\n >\n <Icon\n size=\"large\"\n svg={indeterminateIcon}\n className={styles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={checkedIcon}\n className={styles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={uncheckedIcon}\n className={styles[\"icon-unchecked\"]}\n />\n </span>\n\n <span\n className={cx(labelWrapperClassName, {\n [styles[\"focus-label\"]]: hideCheckbox,\n })}\n >\n {label}\n\n {required && (\n <span aria-hidden className={styles[\"required-asterisk\"]}>\n *\n </span>\n )}\n </span>\n </label>\n\n {description ? (\n <div className={styles[\"helper-wrapper\"]}>\n <Helper id={helperUid} description={description} />\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nCheckboxElement.displayName = \"Checkbox\";\n\n/**\n * Checkbox component for selecting one or more options from a list.\n *\n * Features:\n * - Controlled and uncontrolled state management\n * - Indeterminate state for partial selections\n * - Customizable icons for different states\n * - Error state with accessibility support\n * - Optional helper text and descriptions\n * - Hide checkbox option for visual-only interactions\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <Checkbox\n * label=\"Accept terms and conditions\"\n * onChange={(e, state) => console.log('Checked:', state.checked)}\n * required\n * />\n */\nexport const Checkbox = CheckboxElement;\n"],"names":["styles","CheckboxChecked","CheckboxIndeterminate","CheckboxOutline"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
- import { C as Checkbox$1, a as CheckboxGroup } from './Checkbox-B-XTVPbX.js';
3
+ import { C as Checkbox$1, a as CheckboxGroup } from './Checkbox-B1I1OfZU.js';
4
4
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
5
5
  import { useTrackingId } from './useTrackingId.js';
6
6
 
@@ -49,4 +49,4 @@ const Checkbox = Object.assign(
49
49
  Checkbox.displayName = Checkbox$1.displayName;
50
50
 
51
51
  export { Checkbox as C };
52
- //# sourceMappingURL=Checkbox-Cw1-KFvq.js.map
52
+ //# sourceMappingURL=Checkbox-CTR7JfWk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox-Cw1-KFvq.js","sources":["../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n CheckboxProps as CoreCheckboxProps,\n Checkbox as CoreCheckbox,\n} from \"./internal/Checkbox\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\n\n/**\n * Props for the Checkbox component\n * @property {boolean} [checked] - Controlled state\n * @property {boolean} [defaultChecked] - Uncontrolled state\n * @property {boolean} [indeterminate] - Indeterminate state of the checkbox\n * @property {boolean} [error] - Error state for the checkbox\n * @property {string | ReactElement} [label] - Label for checkbox\n * @property {string} [description] - Helper text description\n * @property {Object} [icons] - Icon overrides for different states\n * @property {(e?: ChangeEvent<HTMLInputElement>, state?: CheckboxState) => void} [onChange] - Change callback\n * @property {(e?: MouseEvent<HTMLInputElement>, state?: CheckboxState) => void} [onClick] - Click callback\n * @extends Omit<CoreCheckboxProps, \"hideCheckbox\">\n * @extends DataTrackingId\n */\nexport type CheckboxProps = Omit<CoreCheckboxProps, \"hideCheckbox\"> &\n DataTrackingId;\n\n/**\n * Checkbox component for selecting one or more options from a list.\n *\n * Features:\n * - Controlled and uncontrolled state management\n * - Indeterminate state for partial selections\n * - Customizable icons for different states\n * - Error state with accessibility support\n * - Optional helper text and descriptions\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Checkbox\n * label=\"Accept terms and conditions\"\n * onChange={(e, state) => console.log('Checked:', state.checked)}\n * required\n * />\n */\nexport const Checkbox = Object.assign(\n forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner(props, ref) {\n const data = {\n label: childrenToString(props.label),\n ariaLabel: props[\"aria-label\"],\n ariaLabelledBy: props[\"aria-labelledby\"],\n value: props.value,\n };\n\n const trackingId = useTrackingId({\n name: \"Checkbox\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return (\n <CoreCheckbox ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n ),\n {\n /**\n * CheckboxGroup component for grouping related checkboxes together.\n *\n * Features:\n * - Groups multiple checkboxes with a common legend\n * - Supports required field indication\n * - Optional helper text and descriptions\n * - Full accessibility support with fieldset/legend\n * - Focus management for keyboard navigation\n * - Layout utility props for positioning and spacing\n * - Flexible layout direction (row/column)\n * - Screen reader support with hidden labels\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <CheckboxGroup legend=\"Select your interests\" required>\n * <Checkbox label=\"Technology\" />\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * </CheckboxGroup>\n */\n Group: CheckboxGroup,\n },\n);\nCheckbox.displayName = CoreCheckbox.displayName;\n"],"names":["CoreCheckbox"],"mappings":";;;;;;AAgDO,MAAM,WAAW,MAAA,CAAO,MAAA;AAAA,EAC7B,UAAA;AAAA,IACE,SAAS,aAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAAA,QACnC,SAAA,EAAW,MAAM,YAAY,CAAA;AAAA,QAC7B,cAAA,EAAgB,MAAM,iBAAiB,CAAA;AAAA,QACvC,OAAO,KAAA,CAAM;AAAA,OACf;AAEA,MAAA,MAAM,aAAa,aAAA,CAAc;AAAA,QAC/B,IAAA,EAAM,UAAA;AAAA,QACN,IAAA;AAAA,QACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,OACxC,CAAA;AACD,MAAA,2BACGA,UAAA,EAAA,EAAa,GAAA,EAAU,kBAAA,EAAkB,UAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,IAErE;AAAA,GACF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBE,KAAA,EAAO;AAAA;AAEX;AACA,QAAA,CAAS,cAAcA,UAAA,CAAa,WAAA;;;;"}
1
+ {"version":3,"file":"Checkbox-CTR7JfWk.js","sources":["../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n CheckboxProps as CoreCheckboxProps,\n Checkbox as CoreCheckbox,\n} from \"./internal/Checkbox\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\n\n/**\n * Props for the Checkbox component\n * @property {boolean} [checked] - Controlled state\n * @property {boolean} [defaultChecked] - Uncontrolled state\n * @property {boolean} [indeterminate] - Indeterminate state of the checkbox\n * @property {boolean} [error] - Error state for the checkbox\n * @property {string | ReactElement} [label] - Label for checkbox\n * @property {string} [description] - Helper text description\n * @property {Object} [icons] - Icon overrides for different states\n * @property {(e?: ChangeEvent<HTMLInputElement>, state?: CheckboxState) => void} [onChange] - Change callback\n * @property {(e?: MouseEvent<HTMLInputElement>, state?: CheckboxState) => void} [onClick] - Click callback\n * @extends Omit<CoreCheckboxProps, \"hideCheckbox\">\n * @extends DataTrackingId\n */\nexport type CheckboxProps = Omit<CoreCheckboxProps, \"hideCheckbox\"> &\n DataTrackingId;\n\n/**\n * Checkbox component for selecting one or more options from a list.\n *\n * Features:\n * - Controlled and uncontrolled state management\n * - Indeterminate state for partial selections\n * - Customizable icons for different states\n * - Error state with accessibility support\n * - Optional helper text and descriptions\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Checkbox\n * label=\"Accept terms and conditions\"\n * onChange={(e, state) => console.log('Checked:', state.checked)}\n * required\n * />\n */\nexport const Checkbox = Object.assign(\n forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner(props, ref) {\n const data = {\n label: childrenToString(props.label),\n ariaLabel: props[\"aria-label\"],\n ariaLabelledBy: props[\"aria-labelledby\"],\n value: props.value,\n };\n\n const trackingId = useTrackingId({\n name: \"Checkbox\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return (\n <CoreCheckbox ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n ),\n {\n /**\n * CheckboxGroup component for grouping related checkboxes together.\n *\n * Features:\n * - Groups multiple checkboxes with a common legend\n * - Supports required field indication\n * - Optional helper text and descriptions\n * - Full accessibility support with fieldset/legend\n * - Focus management for keyboard navigation\n * - Layout utility props for positioning and spacing\n * - Flexible layout direction (row/column)\n * - Screen reader support with hidden labels\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <CheckboxGroup legend=\"Select your interests\" required>\n * <Checkbox label=\"Technology\" />\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * </CheckboxGroup>\n */\n Group: CheckboxGroup,\n },\n);\nCheckbox.displayName = CoreCheckbox.displayName;\n"],"names":["CoreCheckbox"],"mappings":";;;;;;AAgDO,MAAM,WAAW,MAAA,CAAO,MAAA;AAAA,EAC7B,UAAA;AAAA,IACE,SAAS,aAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAAA,QACnC,SAAA,EAAW,MAAM,YAAY,CAAA;AAAA,QAC7B,cAAA,EAAgB,MAAM,iBAAiB,CAAA;AAAA,QACvC,OAAO,KAAA,CAAM;AAAA,OACf;AAEA,MAAA,MAAM,aAAa,aAAA,CAAc;AAAA,QAC/B,IAAA,EAAM,UAAA;AAAA,QACN,IAAA;AAAA,QACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,OACxC,CAAA;AACD,MAAA,2BACGA,UAAA,EAAA,EAAa,GAAA,EAAU,kBAAA,EAAkB,UAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,IAErE;AAAA,GACF;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBE,KAAA,EAAO;AAAA;AAEX;AACA,QAAA,CAAS,cAAcA,UAAA,CAAa,WAAA;;;;"}
package/dist/Checkbox.js CHANGED
@@ -1,2 +1,2 @@
1
- export { C as Checkbox, C as default } from './Checkbox-Cw1-KFvq.js';
1
+ export { C as Checkbox, C as default } from './Checkbox-CTR7JfWk.js';
2
2
  //# sourceMappingURL=Checkbox.js.map
@@ -9,7 +9,7 @@ import { S as SrOnly } from './SrOnly-eUpYGpAT.js';
9
9
  import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
10
10
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
11
11
  import { u as usePrefersColorScheme } from './usePrefersColorScheme-_hT7dK7_.js';
12
- import { A as AiMark } from './AiMark-DR-w6Nbm.js';
12
+ import { A as AiMark } from './AiMark-DhgDh95y.js';
13
13
  import { useTrackingId } from './useTrackingId.js';
14
14
 
15
15
  import './Chip.css';const chip = "_chip_zuxyu_2";
@@ -214,4 +214,4 @@ const Chip = forwardRef(
214
214
  Chip.displayName = Chip$1.displayName;
215
215
 
216
216
  export { Chip as C };
217
- //# sourceMappingURL=Chip-Ce0WGKAc.js.map
217
+ //# sourceMappingURL=Chip-lIWu8uXb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chip-Ce0WGKAc.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 useId,\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 { SrOnly } from \"../../SrOnly/SrOnly\";\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 ChipBaseProps = 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 * Color of the Chip\n */\n color?: string;\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 * Content displayed in the chip, after the text.\n */\n suffix?: ReactNode;\n };\n\ntype ChipClickHandler = (\n e?: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n) => void;\n\ntype ChipCloseHandler = (\n e: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n) => void;\n\ntype SmallChipHandlers =\n | {\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: ChipClickHandler;\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: never;\n }\n | {\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: ChipCloseHandler;\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: never;\n };\n\ntype SmallChipProps = ChipBaseProps & {\n /**\n * The size of the chip\n * @default medium\n */\n size: Extract<Size, \"small\">;\n} & SmallChipHandlers;\n\ntype MediumChipProps = ChipBaseProps & {\n /**\n * The size of the chip\n * @default medium\n */\n size?: Extract<Size, \"medium\">;\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: ChipClickHandler;\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: ChipCloseHandler;\n};\n\nexport type ChipProps = SmallChipProps | MediumChipProps;\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/Space to click, Delete/Backspace to close)\n * - Screen reader instructions for removal actions\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 suffix,\n avatar,\n size = \"medium\",\n tabIndex,\n ...rest\n } = componentProps;\n\n const innerRef = useRef<HTMLSpanElement>(null);\n const [isMultiline, setIsMultiline] = useState(false);\n const descriptionId = useId();\n\n useLayoutEffect(() => {\n const element = innerRef.current;\n\n const getSingleLineHeight = (element: HTMLSpanElement | null) => {\n if (avatar == null) return 0;\n if (!element) return 0;\n const computedStyle = getComputedStyle(element);\n const lineHeight = parseFloat(computedStyle.lineHeight);\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n return lineHeight + paddingTop + paddingBottom;\n };\n\n const singleLineHeight = getSingleLineHeight(element);\n\n const observer = new ResizeObserver(() => {\n if (element && avatar != null) {\n // If actual height is significantly larger than single line, we have multiple lines\n // Using 1.5 threshold to account for rounding\n setIsMultiline(element.clientHeight > singleLineHeight * 1.5);\n }\n });\n\n if (element) {\n observer.observe(element);\n }\n\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n }, [avatar]);\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 chip\";\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 && isMultiline,\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 case \"Space\":\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 {...(onClose ? { [\"aria-describedby\"]: descriptionId } : {})}\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 {suffix != null ? <span className={styles.suffix}>{suffix}</span> : null}\n\n {!!onClose && (\n <>\n <span\n aria-hidden\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 <SrOnly id={descriptionId}>\n Press Delete or Backspace to remove.\n </SrOnly>\n </>\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 { forwardRef, type Ref } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport { AiMarkBooleanProps } from \"../../types/ai-marks\";\nimport { AiMark } from \"../AiMark/AiMark\";\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 {boolean} [aiMark] - Whether to display an AI mark icon in 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 * @extends AiMarkBooleanProps\n */\nexport type ChipProps = DistributiveOmit<\n CoreChipProps,\n \"prefix\" | \"avatar\" | \"suffix\"\n> &\n DataTrackingId &\n AiMarkBooleanProps &\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 * - Optional AI mark icon to indicate AI-generated content\n * - Automatic AI mark type selection: gradient on default chips, inherited color on colored chips\n * - AI mark on clickable chips (hover/focus morph temporarily disabled; see @TODO in source)\n * - Text wrapping support for long labels\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation (Enter/Space to click, Delete/Backspace to close)\n * - Screen reader instructions for removal actions\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 *\n * @example\n * <Chip label=\"AI Generated\" aiMark />\n */\nexport const Chip = forwardRef(\n (\n {\n icon,\n aiMark,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n ...props\n }: ChipProps,\n ref: Ref<HTMLSpanElement>,\n ) => {\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 const aiMarkType = props.color ? \"default\" : \"gradient\";\n\n // @TODO Re-enable AI mark hover/focus morph for `aiMark` + `onClick` chips after publish.\n // Disabled: composed animation misaligned vs static asset / layout shift (see Chip AI Mark Fix 1 stash).\n const suffix = aiMark ? (\n <AiMark\n type={aiMarkType}\n size=\"small\"\n color={props.color ? \"var(--int-font-color)\" : undefined}\n />\n ) : undefined;\n\n const interactionProps = {\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n };\n\n return (\n <CoreChip\n ref={ref}\n data-tracking-id={trackingId}\n {...props}\n {...interactionProps}\n prefix={prefix}\n suffix={suffix}\n />\n );\n },\n);\nChip.displayName = CoreChip.displayName;\n"],"names":["Chip","element","Close","CoreIcon","CoreChip"],"mappings":"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"}
1
+ {"version":3,"file":"Chip-lIWu8uXb.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 useId,\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 { SrOnly } from \"../../SrOnly/SrOnly\";\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 ChipBaseProps = 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 * Color of the Chip\n */\n color?: string;\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 * Content displayed in the chip, after the text.\n */\n suffix?: ReactNode;\n };\n\ntype ChipClickHandler = (\n e?: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n) => void;\n\ntype ChipCloseHandler = (\n e: MouseEvent<HTMLSpanElement> | KeyboardEvent<HTMLSpanElement>,\n) => void;\n\ntype SmallChipHandlers =\n | {\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: ChipClickHandler;\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: never;\n }\n | {\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: ChipCloseHandler;\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: never;\n };\n\ntype SmallChipProps = ChipBaseProps & {\n /**\n * The size of the chip\n * @default medium\n */\n size: Extract<Size, \"small\">;\n} & SmallChipHandlers;\n\ntype MediumChipProps = ChipBaseProps & {\n /**\n * The size of the chip\n * @default medium\n */\n size?: Extract<Size, \"medium\">;\n /**\n * Callback for when the Chip is clicked\n *\n * @remarks\n * Adding this will make Chip focusable\n */\n onClick?: ChipClickHandler;\n /**\n * Called when the component is closed. If supplied, a close button will be rendered.\n * @returns void\n */\n onClose?: ChipCloseHandler;\n};\n\nexport type ChipProps = SmallChipProps | MediumChipProps;\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/Space to click, Delete/Backspace to close)\n * - Screen reader instructions for removal actions\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 suffix,\n avatar,\n size = \"medium\",\n tabIndex,\n ...rest\n } = componentProps;\n\n const innerRef = useRef<HTMLSpanElement>(null);\n const [isMultiline, setIsMultiline] = useState(false);\n const descriptionId = useId();\n\n useLayoutEffect(() => {\n const element = innerRef.current;\n\n const getSingleLineHeight = (element: HTMLSpanElement | null) => {\n if (avatar == null) return 0;\n if (!element) return 0;\n const computedStyle = getComputedStyle(element);\n const lineHeight = parseFloat(computedStyle.lineHeight);\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n return lineHeight + paddingTop + paddingBottom;\n };\n\n const singleLineHeight = getSingleLineHeight(element);\n\n const observer = new ResizeObserver(() => {\n if (element && avatar != null) {\n // If actual height is significantly larger than single line, we have multiple lines\n // Using 1.5 threshold to account for rounding\n setIsMultiline(element.clientHeight > singleLineHeight * 1.5);\n }\n });\n\n if (element) {\n observer.observe(element);\n }\n\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n }, [avatar]);\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 chip\";\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 && isMultiline,\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 case \"Space\":\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 {...(onClose ? { [\"aria-describedby\"]: descriptionId } : {})}\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 {suffix != null ? <span className={styles.suffix}>{suffix}</span> : null}\n\n {!!onClose && (\n <>\n <span\n aria-hidden\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 <SrOnly id={descriptionId}>\n Press Delete or Backspace to remove.\n </SrOnly>\n </>\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 { forwardRef, type Ref } from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport { AiMarkBooleanProps } from \"../../types/ai-marks\";\nimport { AiMark } from \"../AiMark/AiMark\";\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 {boolean} [aiMark] - Whether to display an AI mark icon in 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 * @extends AiMarkBooleanProps\n */\nexport type ChipProps = DistributiveOmit<\n CoreChipProps,\n \"prefix\" | \"avatar\" | \"suffix\"\n> &\n DataTrackingId &\n AiMarkBooleanProps &\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 * - Optional AI mark icon to indicate AI-generated content\n * - Automatic AI mark type selection: gradient on default chips, inherited color on colored chips\n * - AI mark on clickable chips (hover/focus morph temporarily disabled; see @TODO in source)\n * - Text wrapping support for long labels\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation (Enter/Space to click, Delete/Backspace to close)\n * - Screen reader instructions for removal actions\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 *\n * @example\n * <Chip label=\"AI Generated\" aiMark />\n */\nexport const Chip = forwardRef(\n (\n {\n icon,\n aiMark,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n ...props\n }: ChipProps,\n ref: Ref<HTMLSpanElement>,\n ) => {\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 const aiMarkType = props.color ? \"default\" : \"gradient\";\n\n // @TODO Re-enable AI mark hover/focus morph for `aiMark` + `onClick` chips after publish.\n // Disabled: composed animation misaligned vs static asset / layout shift (see Chip AI Mark Fix 1 stash).\n const suffix = aiMark ? (\n <AiMark\n type={aiMarkType}\n size=\"small\"\n color={props.color ? \"var(--int-font-color)\" : undefined}\n />\n ) : undefined;\n\n const interactionProps = {\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n };\n\n return (\n <CoreChip\n ref={ref}\n data-tracking-id={trackingId}\n {...props}\n {...interactionProps}\n prefix={prefix}\n suffix={suffix}\n />\n );\n },\n);\nChip.displayName = CoreChip.displayName;\n"],"names":["Chip","element","Close","CoreIcon","CoreChip"],"mappings":"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"}
package/dist/Chip.js CHANGED
@@ -1,2 +1,2 @@
1
- export { C as Chip, C as default } from './Chip-Ce0WGKAc.js';
1
+ export { C as Chip, C as default } from './Chip-lIWu8uXb.js';
2
2
  //# sourceMappingURL=Chip.js.map
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect } from 'react';
3
- import { P as Popover, u as usePopoverContext } from './Popover-BbqTZw-1.js';
4
- import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-Ni8WqeUx.js';
3
+ import { P as Popover, u as usePopoverContext } from './Popover-CfG1IJP6.js';
4
+ import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-qeFownmF.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { u as useDownshiftEnvironment, c as useMultipleSelection, b as useSelect, a as useCombobox$1 } from './downshift.esm-xtSnQp44.js';
7
7
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
8
8
  import { l as listboxStyles } from './Listbox.module-HAXMOKvC.js';
9
- import { T as Text } from './Text-WiS8UZkY.js';
9
+ import { T as Text } from './Text-DQ78JchQ.js';
10
10
  import { D as Divider } from './Divider-B1UoK8ho.js';
11
11
  import { F as Flex } from './Flex-WyyZm1bf.js';
12
12
  import { S as Spinner } from './Spinner-BqmcE2pb.js';
@@ -2485,4 +2485,4 @@ const Combobox = Object.assign(
2485
2485
  const ComboboxElement = Combobox;
2486
2486
 
2487
2487
  export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c };
2488
- //# sourceMappingURL=Combobox-CNQUROyr.js.map
2488
+ //# sourceMappingURL=Combobox-Dt3AnO9Z.js.map