@servicetitan/anvil2 3.0.8 → 3.0.9

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 (71) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/Combobox.js +1 -1
  3. package/dist/{DataTable-Dwhwvm6R.js → DataTable-FG0Kjx0d.js} +1163 -402
  4. package/dist/DataTable-FG0Kjx0d.js.map +1 -0
  5. package/dist/DataTable.css +301 -233
  6. package/dist/{Divider-CxtTyw8_.js → Divider-Dz27DFuE.js} +17 -17
  7. package/dist/{Divider-CxtTyw8_.js.map → Divider-Dz27DFuE.js.map} +1 -1
  8. package/dist/Divider.css +21 -24
  9. package/dist/Divider.js +1 -1
  10. package/dist/Dnd.js +2 -2
  11. package/dist/{DndHandleButton-CHTOYRlq.js → DndHandleButton-BW9xLWQm.js} +2 -4
  12. package/dist/DndHandleButton-BW9xLWQm.js.map +1 -0
  13. package/dist/DndSort.js +2 -2
  14. package/dist/{FilterBar-CXGsoWw5.js → FilterBar-B3c_VGDk.js} +2 -2
  15. package/dist/{FilterBar-CXGsoWw5.js.map → FilterBar-B3c_VGDk.js.map} +1 -1
  16. package/dist/FilterBar.js +1 -1
  17. package/dist/MultiSelectField.js +1 -1
  18. package/dist/{MultiSelectFieldSync-CIuy3aRD.js → MultiSelectFieldSync-CzHj9Qvy.js} +3 -3
  19. package/dist/{MultiSelectFieldSync-CIuy3aRD.js.map → MultiSelectFieldSync-CzHj9Qvy.js.map} +1 -1
  20. package/dist/MultiSelectMenu.js +1 -1
  21. package/dist/{MultiSelectMenuSync-Drz8SEk9.js → MultiSelectMenuSync-BGcrYjby.js} +3 -3
  22. package/dist/{MultiSelectMenuSync-Drz8SEk9.js.map → MultiSelectMenuSync-BGcrYjby.js.map} +1 -1
  23. package/dist/{RichTextEditor-CoPXdaWI.js → RichTextEditor-FSWAVmTe.js} +4 -4
  24. package/dist/{RichTextEditor-CoPXdaWI.js.map → RichTextEditor-FSWAVmTe.js.map} +1 -1
  25. package/dist/RichTextEditor.js +1 -1
  26. package/dist/{SavedFiltersButton-DzJijqHz.js → SavedFiltersButton-Cr829guv.js} +4 -4
  27. package/dist/{SavedFiltersButton-DzJijqHz.js.map → SavedFiltersButton-Cr829guv.js.map} +1 -1
  28. package/dist/SavedFiltersButton.js +1 -1
  29. package/dist/SelectField.js +1 -1
  30. package/dist/{SelectFieldSync-DlGiJ-Iy.js → SelectFieldSync-C65VFWGm.js} +3 -3
  31. package/dist/{SelectFieldSync-DlGiJ-Iy.js.map → SelectFieldSync-C65VFWGm.js.map} +1 -1
  32. package/dist/SelectMenu.js +1 -1
  33. package/dist/{SelectMenuSync-CAweNjRL.js → SelectMenuSync-CF49L12-.js} +3 -3
  34. package/dist/{SelectMenuSync-CAweNjRL.js.map → SelectMenuSync-CF49L12-.js.map} +1 -1
  35. package/dist/{SelectOptions-BGCap9fZ.js → SelectOptions-C7skDFj2.js} +2 -2
  36. package/dist/{SelectOptions-BGCap9fZ.js.map → SelectOptions-C7skDFj2.js.map} +1 -1
  37. package/dist/Table.js +1 -1
  38. package/dist/beta.js +8 -8
  39. package/dist/drag_indicator-BRHAPLSJ.js +6 -0
  40. package/dist/drag_indicator-BRHAPLSJ.js.map +1 -0
  41. package/dist/{filter-state-DyMDjdRS.js → filter-state-CE8t3-Q7.js} +7 -7
  42. package/dist/filter-state-CE8t3-Q7.js.map +1 -0
  43. package/dist/{index-CukEaIHB.js → index-CKdC7x1S.js} +2 -2
  44. package/dist/{index-CukEaIHB.js.map → index-CKdC7x1S.js.map} +1 -1
  45. package/dist/{index-fSKD4ey4.js → index-DN_iqxhF.js} +2 -2
  46. package/dist/{index-fSKD4ey4.js.map → index-DN_iqxhF.js.map} +1 -1
  47. package/dist/index.js +3 -3
  48. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +4 -25
  49. package/dist/src/beta/components/Table/DataTable/internal/DataTableBody.d.ts +2 -19
  50. package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +12 -13
  51. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.d.ts +13 -0
  52. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.d.ts +7 -0
  53. package/dist/src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.d.ts +1 -0
  54. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +8 -6
  55. package/dist/src/beta/components/Table/createColumnHelper.d.ts +4 -2
  56. package/dist/src/beta/components/Table/formatters/htmlFormatter.d.ts +4 -2
  57. package/dist/src/beta/components/Table/formatters/htmlToMarkdown.d.ts +5 -2
  58. package/dist/src/beta/components/Table/formatters/markdownFormatter.d.ts +3 -2
  59. package/dist/src/beta/components/Table/types.d.ts +47 -30
  60. package/dist/src/internal/components/Surface/Surface.d.ts +4 -0
  61. package/dist/src/internal/components/Surface/surfaceGeometry.d.ts +31 -0
  62. package/dist/{syncFilterUtils-DZqeVWTS.js → syncFilterUtils-CgHB-l6A.js} +2 -2
  63. package/dist/{syncFilterUtils-DZqeVWTS.js.map → syncFilterUtils-CgHB-l6A.js.map} +1 -1
  64. package/dist/{useInfiniteCombobox-C6TDFfds.js → useInfiniteCombobox-BqJm-CdN.js} +2 -2
  65. package/dist/{useInfiniteCombobox-C6TDFfds.js.map → useInfiniteCombobox-BqJm-CdN.js.map} +1 -1
  66. package/dist/{useToggleSelection-Bn7h-gGD.js → useToggleSelection-BGc5OiZF.js} +2 -2
  67. package/dist/{useToggleSelection-Bn7h-gGD.js.map → useToggleSelection-BGc5OiZF.js.map} +1 -1
  68. package/package.json +1 -1
  69. package/dist/DataTable-Dwhwvm6R.js.map +0 -1
  70. package/dist/DndHandleButton-CHTOYRlq.js.map +0 -1
  71. package/dist/filter-state-DyMDjdRS.js.map +0 -1
@@ -3,26 +3,26 @@ import { forwardRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
4
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
5
5
 
6
- import './Divider.css';const container = "_container_143tz_1";
7
- const divider = "_divider_143tz_20";
8
- const content = "_content_143tz_38";
9
- const vertical = "_vertical_143tz_93";
6
+ import './Divider.css';const container = "_container_8f0xc_1";
7
+ const divider = "_divider_8f0xc_20";
8
+ const content = "_content_8f0xc_38";
9
+ const vertical = "_vertical_8f0xc_96";
10
10
  const styles = {
11
11
  container: container,
12
12
  divider: divider,
13
13
  content: content,
14
- "spacing-0": "_spacing-0_143tz_48",
15
- "spacing-half": "_spacing-half_143tz_52",
16
- "spacing-1": "_spacing-1_143tz_56",
17
- "spacing-2": "_spacing-2_143tz_57",
18
- "spacing-3": "_spacing-3_143tz_61",
19
- "spacing-4": "_spacing-4_143tz_65",
20
- "spacing-5": "_spacing-5_143tz_69",
21
- "spacing-6": "_spacing-6_143tz_73",
22
- "spacing-8": "_spacing-8_143tz_77",
23
- "spacing-12": "_spacing-12_143tz_81",
24
- "align-start": "_align-start_143tz_85",
25
- "align-end": "_align-end_143tz_89",
14
+ "spacing-0": "_spacing-0_8f0xc_48",
15
+ "spacing-half": "_spacing-half_8f0xc_52",
16
+ "spacing-1": "_spacing-1_8f0xc_56",
17
+ "spacing-2": "_spacing-2_8f0xc_60",
18
+ "spacing-3": "_spacing-3_8f0xc_64",
19
+ "spacing-4": "_spacing-4_8f0xc_68",
20
+ "spacing-5": "_spacing-5_8f0xc_72",
21
+ "spacing-6": "_spacing-6_8f0xc_76",
22
+ "spacing-8": "_spacing-8_8f0xc_80",
23
+ "spacing-12": "_spacing-12_8f0xc_84",
24
+ "align-start": "_align-start_8f0xc_88",
25
+ "align-end": "_align-end_8f0xc_92",
26
26
  vertical: vertical
27
27
  };
28
28
 
@@ -86,4 +86,4 @@ const Divider = forwardRef(
86
86
  Divider.displayName = "Divider";
87
87
 
88
88
  export { Divider as D };
89
- //# sourceMappingURL=Divider-CxtTyw8_.js.map
89
+ //# sourceMappingURL=Divider-Dz27DFuE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Divider-CxtTyw8_.js","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, CSSProperties, forwardRef } from \"react\";\nimport classnames from \"classnames\";\nimport styles from \"./Divider.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Divider component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends LayoutUtilProps\n */\nexport type DividerProps = ComponentPropsWithoutRef<\"span\"> &\n LayoutUtilProps & {\n /**\n * Controls the alignment of content within the divider.\n * @default center\n */\n alignContent?: \"start\" | \"center\" | \"end\";\n /**\n * Controls the spacing around the divider.\n * @default \"0\"\n */\n spacing?:\n | \"0\"\n | \"half\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"8\"\n | \"12\"\n | 0\n | 0.5\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 12;\n /**\n * When true, renders the divider vertically instead of horizontally.\n * @default false\n */\n vertical?: boolean;\n };\n\n/**\n * Divider component for creating visual separators between content sections.\n *\n * Features:\n * - Horizontal and vertical divider orientations\n * - Optional content display within the divider\n * - Three content alignment options (start, center, end)\n * - Configurable spacing with predefined size tokens\n * - Supports layout utilities for positioning and spacing\n * - Flexible content placement with automatic line positioning\n * - Responsive design that adapts to container width\n *\n * @example\n * <Divider spacing=\"2\" alignContent=\"center\">\n * <b>Section Title</b>\n * </Divider>\n */\nexport const Divider = forwardRef<HTMLSpanElement, DividerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { alignContent, ...restOfLayoutStyles } =\n layoutStyles as CSSProperties;\n const {\n children,\n className,\n spacing = \"0\",\n vertical = false,\n style,\n ...rest\n } = componentProps;\n const ContainerClasses = classnames(styles[\"container\"], className, {\n [styles[`spacing-${spacing === 0.5 ? \"half\" : spacing}`]]: spacing,\n [styles[\"vertical\"]]: vertical,\n [styles[\"align-start\"]]: alignContent === \"start\",\n [styles[\"align-end\"]]: alignContent === \"end\",\n });\n\n const contentOrdering = () => {\n if (children) {\n if (alignContent === \"start\") {\n return (\n <>\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n if (alignContent === \"end\") {\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n </>\n );\n }\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n return <hr className={styles[\"divider\"]} />;\n };\n\n const styleCombined = {\n ...style,\n ...restOfLayoutStyles,\n };\n\n return (\n <span\n data-anv=\"divider\"\n ref={ref}\n style={styleCombined}\n {...rest}\n className={ContainerClasses}\n >\n {contentOrdering()}\n </span>\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n"],"names":["classnames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEO,MAAM,OAAA,GAAU,UAAA;AAAA,EACrB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,YAAA,EAAc,GAAG,kBAAA,EAAmB,GAC1C,YAAA;AACF,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA,GAAU,GAAA;AAAA,MACV,QAAA,GAAW,KAAA;AAAA,MACX,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AACJ,IAAA,MAAM,gBAAA,GAAmBA,EAAA,CAAW,MAAA,CAAO,WAAW,GAAG,SAAA,EAAW;AAAA,MAClE,CAAC,OAAO,CAAA,QAAA,EAAW,OAAA,KAAY,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,CAAC,GAAG,OAAA;AAAA,MAC3D,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,QAAA;AAAA,MACtB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,YAAA,KAAiB,OAAA;AAAA,MAC1C,CAAC,MAAA,CAAO,WAAW,CAAC,GAAG,YAAA,KAAiB;AAAA,KACzC,CAAA;AAED,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,4BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,WAAA,EACpC,CAAA;AAAA,QAEJ;AACA,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,gCACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS;AAAA,WAAA,EAChD,CAAA;AAAA,QAEJ;AACA,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,8BACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,0BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,SAAA,EACpC,CAAA;AAAA,MAEJ;AACA,MAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAS,SAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA,eAAA;AAAgB;AAAA,KACnB;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;;"}
1
+ {"version":3,"file":"Divider-Dz27DFuE.js","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, CSSProperties, forwardRef } from \"react\";\nimport classnames from \"classnames\";\nimport styles from \"./Divider.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Divider component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends LayoutUtilProps\n */\nexport type DividerProps = ComponentPropsWithoutRef<\"span\"> &\n LayoutUtilProps & {\n /**\n * Controls the alignment of content within the divider.\n * @default center\n */\n alignContent?: \"start\" | \"center\" | \"end\";\n /**\n * Controls the spacing around the divider.\n * @default \"0\"\n */\n spacing?:\n | \"0\"\n | \"half\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"8\"\n | \"12\"\n | 0\n | 0.5\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 8\n | 12;\n /**\n * When true, renders the divider vertically instead of horizontally.\n * @default false\n */\n vertical?: boolean;\n };\n\n/**\n * Divider component for creating visual separators between content sections.\n *\n * Features:\n * - Horizontal and vertical divider orientations\n * - Optional content display within the divider\n * - Three content alignment options (start, center, end)\n * - Configurable spacing with predefined size tokens\n * - Supports layout utilities for positioning and spacing\n * - Flexible content placement with automatic line positioning\n * - Responsive design that adapts to container width\n *\n * @example\n * <Divider spacing=\"2\" alignContent=\"center\">\n * <b>Section Title</b>\n * </Divider>\n */\nexport const Divider = forwardRef<HTMLSpanElement, DividerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { alignContent, ...restOfLayoutStyles } =\n layoutStyles as CSSProperties;\n const {\n children,\n className,\n spacing = \"0\",\n vertical = false,\n style,\n ...rest\n } = componentProps;\n const ContainerClasses = classnames(styles[\"container\"], className, {\n [styles[`spacing-${spacing === 0.5 ? \"half\" : spacing}`]]: spacing,\n [styles[\"vertical\"]]: vertical,\n [styles[\"align-start\"]]: alignContent === \"start\",\n [styles[\"align-end\"]]: alignContent === \"end\",\n });\n\n const contentOrdering = () => {\n if (children) {\n if (alignContent === \"start\") {\n return (\n <>\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n if (alignContent === \"end\") {\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n </>\n );\n }\n return (\n <>\n <hr className={styles[\"divider\"]} />\n <span className={styles[\"content\"]}>{children}</span>\n <hr className={styles[\"divider\"]} />\n </>\n );\n }\n return <hr className={styles[\"divider\"]} />;\n };\n\n const styleCombined = {\n ...style,\n ...restOfLayoutStyles,\n };\n\n return (\n <span\n data-anv=\"divider\"\n ref={ref}\n style={styleCombined}\n {...rest}\n className={ContainerClasses}\n >\n {contentOrdering()}\n </span>\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n"],"names":["classnames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEO,MAAM,OAAA,GAAU,UAAA;AAAA,EACrB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,YAAA,EAAc,GAAG,kBAAA,EAAmB,GAC1C,YAAA;AACF,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA,GAAU,GAAA;AAAA,MACV,QAAA,GAAW,KAAA;AAAA,MACX,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AACJ,IAAA,MAAM,gBAAA,GAAmBA,EAAA,CAAW,MAAA,CAAO,WAAW,GAAG,SAAA,EAAW;AAAA,MAClE,CAAC,OAAO,CAAA,QAAA,EAAW,OAAA,KAAY,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,CAAC,GAAG,OAAA;AAAA,MAC3D,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,QAAA;AAAA,MACtB,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,YAAA,KAAiB,OAAA;AAAA,MAC1C,CAAC,MAAA,CAAO,WAAW,CAAC,GAAG,YAAA,KAAiB;AAAA,KACzC,CAAA;AAED,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,4BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,WAAA,EACpC,CAAA;AAAA,QAEJ;AACA,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,gCACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS;AAAA,WAAA,EAChD,CAAA;AAAA,QAEJ;AACA,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,8BACjC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAS,GAAI,QAAA,EAAS,CAAA;AAAA,0BAC9C,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,SAAA,EACpC,CAAA;AAAA,MAEJ;AACA,MAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAS,SAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACN,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA,eAAA;AAAgB;AAAA,KACnB;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;;"}
package/dist/Divider.css CHANGED
@@ -1,4 +1,4 @@
1
- .anvil2 {._container_143tz_1 {
1
+ .anvil2 {._container_8f0xc_1 {
2
2
  --a2-mod-divider-border-color: var(--a2-divider-border-color, var(--a2-border-color-subdued, light-dark(var(--a2-color-neutral-80, #e6e6e6), var(--a2-color-neutral-700, #404040))));
3
3
  --a2-mod-divider-spacing: 0;
4
4
  font-family: var(--a2-font-family-base, "Nunito Sans", sans-serif);
@@ -17,7 +17,7 @@
17
17
  width: -webkit-fill-available;
18
18
  width: -moz-available;
19
19
  width: stretch;
20
- }._divider_143tz_20 {
20
+ }._divider_8f0xc_20 {
21
21
  font-family: var(--a2-font-family-base, "Nunito Sans", sans-serif);
22
22
  font-size: 100%;
23
23
  color: inherit;
@@ -35,7 +35,7 @@
35
35
  width: var(--a2-mod-divider-width, -webkit-fill-available);
36
36
  width: var(--a2-mod-divider-width, -moz-available);
37
37
  width: var(--a2-mod-divider-width, stretch);
38
- }._content_143tz_38 {
38
+ }._content_8f0xc_38 {
39
39
  background-color: inherit;
40
40
  display: inline-flex;
41
41
  font-size: var(--a2-typography-label-size-large, var(--a2-font-size-400, 1rem));
@@ -43,51 +43,48 @@
43
43
  padding-block: var(--a2-size-2, 0.5rem);
44
44
  padding-inline: var(--a2-mod-divider-content-padding-start, var(--a2-size-2, 0.5rem)) var(--a2-mod-divider-content-padding-end, var(--a2-size-2, 0.5rem));
45
45
  z-index: 1;
46
- }._spacing-0_143tz_48 {
46
+ }._spacing-0_8f0xc_48 {
47
47
  --a2-mod-divider-spacing: 0;
48
- }._spacing-half_143tz_52 {
48
+ }._spacing-half_8f0xc_52 {
49
+ --a2-mod-divider-spacing: var(--a2-size-half, 0.125rem);
50
+ }._spacing-1_8f0xc_56 {
49
51
  --a2-mod-divider-spacing: var(--a2-size-1, 0.25rem);
50
- }._spacing-1_143tz_56,
51
- ._spacing-2_143tz_57 {
52
+ }._spacing-2_8f0xc_60 {
52
53
  --a2-mod-divider-spacing: var(--a2-size-2, 0.5rem);
53
- }._spacing-3_143tz_61 {
54
+ }._spacing-3_8f0xc_64 {
54
55
  --a2-mod-divider-spacing: var(--a2-size-3, 0.75rem);
55
- }._spacing-4_143tz_65 {
56
+ }._spacing-4_8f0xc_68 {
56
57
  --a2-mod-divider-spacing: var(--a2-size-4, 1rem);
57
- }._spacing-5_143tz_69 {
58
+ }._spacing-5_8f0xc_72 {
58
59
  --a2-mod-divider-spacing: var(--a2-size-5, 1.25rem);
59
- }._spacing-6_143tz_73 {
60
+ }._spacing-6_8f0xc_76 {
60
61
  --a2-mod-divider-spacing: var(--a2-size-6, 1.5rem);
61
- }._spacing-8_143tz_77 {
62
+ }._spacing-8_8f0xc_80 {
62
63
  --a2-mod-divider-spacing: var(--a2-size-8, 2rem);
63
- }._spacing-12_143tz_81 {
64
+ }._spacing-12_8f0xc_84 {
64
65
  --a2-mod-divider-spacing: var(--a2-size-12, 3rem);
65
- }._align-start_143tz_85 {
66
+ }._align-start_8f0xc_88 {
66
67
  --a2-mod-divider-content-padding-start: 0;
67
- }._align-end_143tz_89 {
68
+ }._align-end_8f0xc_92 {
68
69
  --a2-mod-divider-content-padding-end: 0;
69
- }._container_143tz_1:not(._vertical_143tz_93) {
70
+ }._container_8f0xc_1:not(._vertical_8f0xc_96) {
70
71
  align-items: center;
71
72
  padding-block: var(--a2-mod-divider-spacing);
72
- }._container_143tz_1:not(._vertical_143tz_93) ._divider_143tz_20 {
73
+ }._container_8f0xc_1:not(._vertical_8f0xc_96) ._divider_8f0xc_20 {
73
74
  border-block-start: var(--a2-size-quarter, 0.0625rem) solid var(--a2-mod-divider-border-color);
74
- }._vertical_143tz_93 {
75
+ }._vertical_8f0xc_96 {
75
76
  flex-direction: column;
76
77
  padding-inline: var(--a2-mod-divider-spacing);
77
78
  width: var(--a2-size-quarter, 0.0625rem);
78
- }._vertical_143tz_93 ._divider_143tz_20 {
79
+ }._vertical_8f0xc_96 ._divider_8f0xc_20 {
79
80
  --a2-mod-divider-height: 100%;
80
81
  --a2-mod-divider-width: var(--a2-size-quarter, 0.0625rem);
81
82
  border-inline-start: var(--a2-size-quarter, 0.0625rem) solid var(--a2-mod-divider-border-color);
82
- }._vertical_143tz_93 ._content_143tz_38 {
83
+ }._vertical_8f0xc_96 ._content_8f0xc_38 {
83
84
  padding-block: var(--a2-mod-divider-content-padding-start, var(--a2-size-2, 0.5rem)) var(--a2-mod-divider-content-padding-end, var(--a2-size-2, 0.5rem));
84
85
  padding-inline: var(--a2-size-2, 0.5rem);
85
86
  transform: translateX(-50%);
86
87
  width: -moz-fit-content;
87
88
  width: fit-content;
88
- }._vertical_143tz_93._spacing-half_143tz_52 {
89
- --a2-mod-divider-spacing: var(--a2-size-half, 0.125rem);
90
- }._vertical_143tz_93._spacing-1_143tz_56 {
91
- --a2-mod-divider-spacing: var(--a2-size-1, 0.25rem);
92
89
  }
93
90
  }
package/dist/Divider.js CHANGED
@@ -1,2 +1,2 @@
1
- export { D as Divider, D as default } from './Divider-CxtTyw8_.js';
1
+ export { D as Divider, D as default } from './Divider-Dz27DFuE.js';
2
2
  //# sourceMappingURL=Divider.js.map
package/dist/Dnd.js CHANGED
@@ -1,3 +1,3 @@
1
- import './DndHandleButton-CHTOYRlq.js';
2
- export { D as Dnd } from './index-CukEaIHB.js';
1
+ import './DndHandleButton-BW9xLWQm.js';
2
+ export { D as Dnd } from './index-CKdC7x1S.js';
3
3
  //# sourceMappingURL=Dnd.js.map
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { B as ButtonCompound } from './ButtonCompound-BQb2gfAl.js';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
- import * as React from 'react';
5
4
  import { forwardRef } from 'react';
6
5
  import { I as Icon } from './Icon-feeG7gXA.js';
6
+ import { S as SvgDragIndicator } from './drag_indicator-BRHAPLSJ.js';
7
7
 
8
8
  import './DndHandleButton.css';const handle = "_handle_1e7c4_2";
9
9
  const active = "_active_1e7c4_25";
@@ -13,8 +13,6 @@ const handleStyles = {
13
13
  active: active
14
14
  };
15
15
 
16
- const SvgDragIndicator = (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: "M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }));
17
-
18
16
  function DndHandle({ className }) {
19
17
  const handleClasses = cx(handleStyles.handle, className);
20
18
  return /* @__PURE__ */ jsx(Icon, { svg: SvgDragIndicator, className: handleClasses, role: "presentation" });
@@ -40,4 +38,4 @@ const DndHandleButton = forwardRef(({ isActive = false, className, ...props }, r
40
38
  DndHandleButton.displayName = "DndHandleButton";
41
39
 
42
40
  export { DndHandleButton as D, DndHandle as a };
43
- //# sourceMappingURL=DndHandleButton-CHTOYRlq.js.map
41
+ //# sourceMappingURL=DndHandleButton-BW9xLWQm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DndHandleButton-BW9xLWQm.js","sources":["../src/components/Dnd/DndHandle.tsx","../src/components/Dnd/DndHandleButton.tsx"],"sourcesContent":["import { Icon } from \"../Icon\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport styles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DndHandle component\n */\nexport type DndHandleProps = {\n /**\n * Additional CSS class names to apply to the drag handle.\n */\n className?: string;\n};\n\n/**\n * A reusable drag handle icon component for drag and drop interactions.\n *\n * Features:\n * - Standardized drag indicator icon\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className prop\n * - Consistent visual appearance across applications\n * - Lightweight and performant\n * - Supports all standard HTML element props\n *\n * @example\n * <DndHandle className=\"custom-drag-handle\" />\n */\nexport function DndHandle({ className }: { className?: string }) {\n const handleClasses = cx(styles.handle, className);\n return (\n <Icon svg={DragIndicator} className={handleClasses} role=\"presentation\" />\n );\n}\n","import { ButtonCompound } from \"../ButtonCompound\";\nimport handleStyles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { DndHandle } from \"./DndHandle\";\n\n/**\n * Props for the DndHandleButton component\n * @extends React.ComponentPropsWithoutRef<typeof ButtonCompound>\n */\nexport interface DndHandleButtonProps\n extends React.ComponentPropsWithoutRef<typeof ButtonCompound> {\n /**\n * Indicates whether the handle is currently being dragged.\n * @default false\n */\n isActive?: boolean;\n}\n\n/**\n * A reusable drag handle button component for drag and drop functionality.\n *\n * Features:\n * - Interactive button with drag handle icon\n * - Visual feedback for active drag state\n * - Accessible with proper ARIA attributes (defaults to \"Drag handle\")\n * - Extends ButtonCompound functionality\n * - Customizable styling through className prop\n * - Supports all standard button props\n * - Consistent visual appearance across applications\n *\n * @example\n * <DndHandleButton\n * isActive={isDragging}\n * aria-label=\"Drag task item\"\n * className=\"custom-handle-button\"\n * onClick={handleClick}\n * />\n */\nexport const DndHandleButton = forwardRef<\n HTMLButtonElement,\n DndHandleButtonProps\n>(({ isActive = false, className, ...props }, ref) => {\n const handleButtonClasses = cx(className, handleStyles[\"handle-button\"], {\n [handleStyles[\"active\"]]: isActive,\n });\n\n return (\n <ButtonCompound\n ref={ref}\n className={handleButtonClasses}\n type=\"button\"\n shape=\"rounded\"\n aria-label=\"Drag handle\"\n {...props}\n >\n <DndHandle />\n </ButtonCompound>\n );\n});\n\nDndHandleButton.displayName = \"DndHandleButton\";\n"],"names":["styles","DragIndicator"],"mappings":";;;;;;;;;;;;;;;AA6BO,SAAS,SAAA,CAAU,EAAE,SAAA,EAAU,EAA2B;AAC/D,EAAA,MAAM,aAAA,GAAgB,EAAA,CAAGA,YAAA,CAAO,MAAA,EAAQ,SAAS,CAAA;AACjD,EAAA,2BACG,IAAA,EAAA,EAAK,GAAA,EAAKC,kBAAe,SAAA,EAAW,aAAA,EAAe,MAAK,cAAA,EAAe,CAAA;AAE5E;;ACKO,MAAM,eAAA,GAAkB,UAAA,CAG7B,CAAC,EAAE,QAAA,GAAW,OAAO,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpD,EAAA,MAAM,mBAAA,GAAsB,EAAA,CAAG,SAAA,EAAW,YAAA,CAAa,eAAe,CAAA,EAAG;AAAA,IACvE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,GAC3B,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,mBAAA;AAAA,MACX,IAAA,EAAK,QAAA;AAAA,MACL,KAAA,EAAM,SAAA;AAAA,MACN,YAAA,EAAW,aAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA,GACb;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;;;;"}
package/dist/DndSort.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import React__default, { useLayoutEffect, useEffect, useRef, useMemo, useCallback, useState, memo, useReducer, createContext, useContext, forwardRef, cloneElement } from 'react';
3
3
  import { unstable_batchedUpdates, createPortal } from 'react-dom';
4
- import { s as styles, a as DndSortLine, D as Dnd } from './index-CukEaIHB.js';
4
+ import { s as styles, a as DndSortLine, D as Dnd } from './index-CKdC7x1S.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { D as DrawerContext } from './DrawerContext-BSpnzXVZ.js';
7
7
  import { D as DialogContext } from './DialogContext-DBgtApl9.js';
8
8
  import { B as ButtonCompound } from './ButtonCompound-BQb2gfAl.js';
9
9
  import { C as Card } from './Card-fBqg853U.js';
10
- import { D as DndHandleButton, a as DndHandle } from './DndHandleButton-CHTOYRlq.js';
10
+ import { D as DndHandleButton, a as DndHandle } from './DndHandleButton-BW9xLWQm.js';
11
11
  import { F as Flex } from './Flex-_orhvoxS.js';
12
12
  import { s as sizeToToken } from './useLayoutPropsUtil-CB_zHDbW.js';
13
13
 
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { useState, useEffect, useContext, useRef, useCallback, useMemo, forwardRef } from 'react';
4
4
  import { S as SvgClose } from './close-DZj38AEh.js';
5
- import { F as FilterGroupContext, g as getActiveFilters, h as hasFilterSelectionChanged, c as cloneFiltersWithItemRefs, u as updateSingleFilter, a as checkActiveFilters, b as getAdapter, s as styles, D as DateListDialog, r as resetFilters, p as preserveFilterState, d as FilterItemWrapper } from './filter-state-DyMDjdRS.js';
5
+ import { F as FilterGroupContext, g as getActiveFilters, h as hasFilterSelectionChanged, c as cloneFiltersWithItemRefs, u as updateSingleFilter, a as checkActiveFilters, b as getAdapter, s as styles, D as DateListDialog, r as resetFilters, p as preserveFilterState, d as FilterItemWrapper } from './filter-state-CE8t3-Q7.js';
6
6
  import { B as Button } from './Button-C_V2xQAs.js';
7
7
  import { F as Flex } from './Flex-_orhvoxS.js';
8
8
  import { B as ButtonToggle } from './ButtonToggle-jnDMPSyK.js';
@@ -410,4 +410,4 @@ const FilterBar = forwardRef(
410
410
  FilterBar.displayName = "FilterBar";
411
411
 
412
412
  export { FilterBar as F };
413
- //# sourceMappingURL=FilterBar-CXGsoWw5.js.map
413
+ //# sourceMappingURL=FilterBar-B3c_VGDk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar-CXGsoWw5.js","sources":["../src/internal/hooks/useContainerQuery/useContainerQuery.ts","../../hammer-icon/mdi/round/tune.svg","../src/beta/components/FilterBar/FilterDrawer.tsx","../src/beta/components/FilterBar/FilterBar.tsx"],"sourcesContent":["import { useEffect, useState, RefObject } from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\n\n/**\n * Return type for the useContainerQuery hook\n */\nexport type ContainerQueryReturnProps = {\n /**\n * The breakpoint name\n */\n name: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n /**\n * Minimum width for this breakpoint\n */\n min: number | undefined;\n /**\n * Maximum width for this breakpoint\n */\n max: number | undefined;\n /**\n * Current container width\n */\n containerWidth: number;\n /**\n * Current container height\n */\n containerHeight: number;\n};\n\n/**\n * Determines if the current container width matches a specific breakpoint\n * @param containerWidth - The container width\n * @param name - The breakpoint name\n * @param min - Minimum width for this breakpoint\n * @param max - Maximum width for this breakpoint\n * @returns Breakpoint information if matched, undefined otherwise\n */\nfunction containerBreakpoint(\n containerWidth: number,\n name: ContainerQueryReturnProps[\"name\"],\n min?: number,\n max?: number,\n): ContainerQueryReturnProps | undefined {\n if (\n (min == null || containerWidth >= min) &&\n (max == null || containerWidth < max)\n ) {\n return {\n name,\n min,\n max,\n containerWidth,\n containerHeight: 0, // Will be updated with actual height\n } as const;\n }\n return undefined;\n}\n\n/**\n * Determines the current breakpoint based on container width and hammer-token breakpoint values.\n *\n * Features:\n * - Validates that all required hammer-token breakpoint values are available\n * - Uses cascade logic to determine the appropriate breakpoint\n * - Returns the first matching breakpoint in order of preference\n * - Handles edge cases where breakpoint values are missing\n * - Uses container dimensions for accurate measurements\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n *\n * @param containerWidth - The width of the container element\n * @param containerHeight - The height of the container element\n * @returns Current breakpoint information or undefined if breakpoint values are unavailable\n */\nconst getContainerBreakpoint = (\n containerWidth: number,\n containerHeight: number,\n) => {\n if (!core.primitive?.BreakpointSm) return;\n if (!core.primitive?.BreakpointMd) return;\n if (!core.primitive?.BreakpointLg) return;\n if (!core.primitive?.BreakpointXl) return;\n if (!core.primitive?.BreakpointXxl) return;\n\n const sm = parseInt(core.primitive?.BreakpointSm.value);\n const md = parseInt(core.primitive?.BreakpointMd.value);\n const lg = parseInt(core.primitive?.BreakpointLg.value);\n const xl = parseInt(core.primitive?.BreakpointXl.value);\n const xxl = parseInt(core.primitive?.BreakpointXxl.value);\n\n const result =\n containerBreakpoint(containerWidth, \"xs\", undefined, sm) ??\n containerBreakpoint(containerWidth, \"sm\", sm, md) ??\n containerBreakpoint(containerWidth, \"md\", md, lg) ??\n containerBreakpoint(containerWidth, \"lg\", lg, xl) ??\n containerBreakpoint(containerWidth, \"xl\", xl, xxl) ??\n containerBreakpoint(containerWidth, \"xxl\", xxl, undefined);\n\n return result ? { ...result, containerHeight } : undefined;\n};\n\n/**\n * Custom hook for detecting current breakpoint based on container dimensions.\n *\n * Features:\n * - Detects current breakpoint based on container width instead of viewport width\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n * - Provides container dimensions information\n * - Uses hammer-token breakpoint values for consistency\n * - Listens for container resize events using ResizeObserver\n * - Supports optional disable functionality\n * - Uses container element dimensions for accurate measurements\n *\n * @param containerRef - React ref to the container element to observe\n * @param props - Optional configuration object\n * @param props.disable - Whether to disable the hook\n * @returns Current breakpoint information or undefined if disabled\n */\nexport const useContainerQuery = (\n containerRef: RefObject<HTMLElement>,\n props?: { disable?: boolean },\n) => {\n const [size, setSize] = useState<ContainerQueryReturnProps | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (props?.disable || !containerRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n const breakpoint = getContainerBreakpoint(width, height);\n setSize(breakpoint);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n // Set initial size\n const rect = containerRef.current.getBoundingClientRect();\n setSize(getContainerBreakpoint(rect.width, rect.height));\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [containerRef, props?.disable]);\n\n if (props?.disable) return undefined;\n return size;\n};\n","import * as React from \"react\";\nconst SvgTune = (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: \"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1zM3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1zm10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1zM7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1zm14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1zm-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1z\" }));\nexport default SvgTune;\n","import {\n useContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n useRef,\n} from \"react\";\nimport IconTune from \"@servicetitan/hammer-icon/mdi/round/tune.svg\";\nimport IconClose from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport {\n DateListFilter,\n DateListLibraryOptionId,\n Filter,\n} from \"./internal/types\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { Flex } from \"../../../components/Flex\";\nimport {\n checkActiveFilters,\n getActiveFilters,\n resetFilters,\n updateSingleFilter,\n cloneFiltersWithItemRefs,\n hasFilterSelectionChanged,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { DateListDialog } from \"./FilterDateList\";\nimport ButtonToggle from \"../../../components/ButtonToggle\";\nimport Chip from \"../../../components/Chip\";\nimport Drawer from \"../../../components/Drawer\";\nimport Button from \"../../../components/Button\";\n\nimport { useToolbarSize } from \"../Toolbar/internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * FilterDrawer component provides a drawer interface for filter selection.\n * Always operates in controlled mode with batch updates.\n * Built into FilterGroup for batch editing of drawer-only and below-breakpoint filters.\n *\n * Features:\n * - Shows all available filters in a side panel\n * - Maintains separate draft state for all filters\n * - Updates filters only when Apply is clicked\n * - Provides Clear All functionality\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Integrates with FilterGroup context for state management\n * - Handles date and date range filters with appropriate input components\n */\nexport const FilterDrawer = () => {\n const [open, setOpen] = useState(false);\n\n // Get filter context from parent\n const {\n filters,\n updateFilter,\n onFilterChange,\n drawerOnlyFilters,\n showInlineFilters,\n } = useContext(FilterGroupContext);\n const toolbarSize = useToolbarSize();\n\n // Local draft state for filters within the drawer\n const [draftFilters, setDraftFilters] = useState<Filter[]>(filters);\n\n // Open dialog for a dateList library option (On…/Before…/After…/Custom Range…).\n const [dateListDialogState, setDateListDialogState] = useState<{\n filterId: string;\n libraryId: DateListLibraryOptionId;\n } | null>(null);\n\n // Filters not reachable from the toolbar: when inline filters are shown,\n // only drawer-only filters qualify; otherwise every filter qualifies.\n const filtersNotInToolbar = showInlineFilters ? drawerOnlyFilters : filters;\n\n const activeFiltersCount = getActiveFilters(filtersNotInToolbar).length;\n\n // Track previous state to detect when to sync draft\n const prevOpenRef = useRef(open);\n const prevFiltersRef = useRef<Filter[]>(filters);\n\n /**\n * Reset draft filters when drawer opens and sync when filter selections change while open\n * Ensures drawer always shows current filter state\n */\n useEffect(() => {\n const justOpened = open && !prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (open) {\n // Sync draft state if:\n // 1. Drawer just opened, OR\n // 2. Any filter selection value changed while already open (race condition fix)\n // Don't sync when only items arrays change (preserves selections during search)\n const anySelectionChanged = prevFiltersRef.current.some(\n (prevFilter, index) => {\n const newFilter = filters[index];\n return newFilter && hasFilterSelectionChanged(prevFilter, newFilter);\n },\n );\n\n const shouldSync = justOpened || anySelectionChanged;\n\n if (shouldSync) {\n setDraftFilters(cloneFiltersWithItemRefs(filters));\n }\n\n prevFiltersRef.current = filters;\n }\n }, [open, filters]);\n\n /**\n * Handles changing a draft filter value\n * Updates only the draft state, not the actual filters\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n */\n const handleDraftChange = useCallback((filterId: string, value: unknown) => {\n setDraftFilters((draft) => updateSingleFilter(draft, filterId, value));\n }, []);\n\n /**\n * Clears all draft filters in the drawer\n * Does not affect the actual filters until Apply is clicked\n */\n const clearDraftFilters = () => {\n setDraftFilters(resetFilters(draftFilters));\n };\n\n const hasActiveDraftFilters = checkActiveFilters(draftFilters);\n\n const requestDateListDialog = useCallback(\n (filterId: string, libraryId: DateListLibraryOptionId) => {\n setDateListDialogState({ filterId, libraryId });\n },\n [],\n );\n\n const filterForm = useMemo(\n () =>\n draftFilters.map((draftFilter) => {\n const originalFilter = filters.find((f) => f.id === draftFilter.id);\n if (!originalFilter) return null;\n\n return getAdapter(draftFilter).renderDrawer({\n originalFilter,\n draftFilter,\n onDraftChange: handleDraftChange,\n requestDateListDialog,\n });\n }),\n [draftFilters, filters, handleDraftChange, requestDateListDialog],\n );\n\n const applyFiltering = () => {\n draftFilters.forEach((draftFilter) => {\n const value = getAdapter(draftFilter).getValue(draftFilter);\n updateFilter(draftFilter.id, value, false);\n });\n\n onFilterChange?.(draftFilters);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setOpen(false);\n };\n\n const hasHiddenActiveFilters = activeFiltersCount > 0;\n\n const triggerClasses = cx(\n styles[\"filter-button-trigger\"],\n styles[\"filter-drawer-trigger\"],\n {\n [styles[\"filter-drawer-trigger--chipped\"]]: hasHiddenActiveFilters,\n },\n );\n\n const dateListDialogTarget = dateListDialogState\n ? draftFilters.find(\n (f): f is DateListFilter =>\n f.id === dateListDialogState.filterId && f.type === \"dateList\",\n )\n : undefined;\n const dateListDialogSelected = dateListDialogTarget?.selectedOption;\n const dateListDialogInitialValue =\n dateListDialogSelected &&\n dateListDialogSelected.id === dateListDialogState?.libraryId &&\n dateListDialogSelected.value !== null\n ? dateListDialogSelected.value\n : undefined;\n\n return (\n <>\n <ButtonToggle\n data-anv=\"filter-group-drawer-trigger\"\n icon={{ before: IconTune }}\n onClick={() => setOpen(true)}\n className={triggerClasses}\n checked={open}\n size={toolbarSize}\n >\n Filters\n {hasHiddenActiveFilters && (\n <Chip\n size=\"small\"\n color=\"#0265DC\"\n label={activeFiltersCount.toString()}\n />\n )}\n </ButtonToggle>\n\n <Drawer\n data-anv=\"filter-group-drawer\"\n data-testid=\"filter-group-drawer\"\n open={open}\n onClose={() => setOpen(false)}\n >\n <Drawer.Content>\n <Flex direction=\"column\" gap={6} grow={1}>\n {filterForm}\n </Flex>\n </Drawer.Content>\n\n <Drawer.Footer>\n <Flex\n justifyContent={\n hasActiveDraftFilters ? \"space-between\" : \"flex-end\"\n }\n grow={1}\n >\n {hasActiveDraftFilters && (\n <Button\n appearance=\"ghost\"\n icon={{ before: IconClose }}\n onClick={clearDraftFilters}\n >\n Clear All Filters\n </Button>\n )}\n\n <Flex gap=\"3\">\n <Button onClick={handleCancel}>Cancel</Button>\n <Button appearance=\"primary\" onClick={applyFiltering}>\n Apply\n </Button>\n </Flex>\n </Flex>\n </Drawer.Footer>\n </Drawer>\n <DateListDialog\n libraryId={dateListDialogState?.libraryId ?? null}\n parentFilterId={dateListDialogState?.filterId ?? \"\"}\n initialValue={dateListDialogInitialValue}\n mode={dateListDialogTarget?.mode}\n dialogCtaLabel=\"Save\"\n onCommit={(option) => {\n if (dateListDialogState) {\n handleDraftChange(dateListDialogState.filterId, option);\n }\n setDateListDialogState(null);\n }}\n onCancel={() => setDateListDialogState(null)}\n />\n </>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport CloseIcon from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { Filter } from \"./internal/types\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport Button from \"../../../components/Button\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { useContainerQuery, useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n checkActiveFilters,\n resetFilters,\n updateSingleFilter,\n hasFilterSelectionChanged,\n preserveFilterState,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { FilterDrawer } from \"./FilterDrawer\";\nimport { ToolbarContext } from \"../Toolbar/internal/ToolbarContext\";\nimport { ToolbarSize } from \"../Toolbar/types\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"../Toolbar/internal/utils/accessibility\";\nimport { Flex } from \"../../../components/Flex\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props for the FilterBar component\n *\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type FilterBarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Array of filter objects */\n filters: Filter[];\n /** Description of the content this filter bar is associated with, used for accessibility */\n associatedContent: string;\n /** Callback function when filters change */\n onFilterChange: (filters: Filter[]) => void;\n /** Whether the filters submission is controlled via an apply button */\n controlledFiltering?: boolean;\n /**\n * Size of filter controls\n * @default xsmall\n */\n size?: ToolbarSize;\n /**\n * When true, filters stay inline at every container width instead of\n * collapsing to drawer-only mode at narrow widths.\n * @default false\n */\n disableCollapse?: boolean;\n };\n\n/**\n * FilterBar component for displaying a standalone group of filters with toggles and a clear button.\n *\n * Features:\n * - Standalone component with `role=\"toolbar\"` and keyboard navigation\n * - Renders filter toggles and popovers for all filter types\n * - Supports controlled and uncontrolled filtering\n * - Integrates with FilterDrawer for batch filter editing of drawer-only filters\n * - Provides a clear all filters button\n * - Shares filter state via context for child components\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Preserves filter state when filter configuration changes\n * - Responsive: collapses to drawer-only mode below 640px; opt out via `disableCollapse`\n * - Always wraps; never collapses items into an overflow menu\n * - Can be composed alongside Toolbar as a sibling using Flex layout\n *\n * @example\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * controlledFiltering={true}\n * />\n *\n * @example\n * // With Toolbar as sibling\n * <Flex alignItems=\"center\" justifyContent=\"space-between\">\n * <Toolbar associatedContent=\"invoice actions\">\n * <Toolbar.Button icon={SaveIcon} aria-label=\"Save\" />\n * </Toolbar>\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * />\n * </Flex>\n */\nexport const FilterBar = forwardRef<HTMLDivElement, FilterBarProps>(\n function FilterBarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n filters: initialFilters,\n onFilterChange,\n controlledFiltering = false,\n associatedContent,\n size = \"xsmall\",\n disableCollapse = false,\n className,\n style,\n onKeyDown,\n ...rest\n } = componentProps;\n\n const [filters, setFilters] = useState<Filter[]>(initialFilters);\n const filterBarRef = useRef<HTMLDivElement>(null);\n const containerQuery = useContainerQuery(filterBarRef);\n\n const showInlineFilters =\n disableCollapse || !!(containerQuery && containerQuery.name !== \"xs\");\n\n // Update filters when props change\n useEffect(() => {\n setFilters((prevFilters) => {\n const existingFiltersMap = new Map(prevFilters.map((f) => [f.id, f]));\n\n return initialFilters.map((newFilter: Filter) => {\n const existingFilter = existingFiltersMap.get(newFilter.id);\n\n if (!existingFilter) {\n return newFilter;\n }\n\n if (!hasFilterSelectionChanged(existingFilter, newFilter)) {\n return preserveFilterState(newFilter, existingFilter);\n }\n\n return newFilter;\n });\n });\n }, [initialFilters]);\n\n /**\n * Updates filter state when a filter is changed\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n * @param submit - Whether to submit the filter change\n */\n const updateFilter = useCallback(\n (filterId: string, value: unknown, submit: boolean) => {\n setFilters((prevFilters) => {\n const updatedFilters = updateSingleFilter(\n prevFilters,\n filterId,\n value,\n );\n\n if (submit) {\n onFilterChange?.(updatedFilters);\n }\n\n return updatedFilters;\n });\n },\n [onFilterChange],\n );\n\n /**\n * Clears all active filters\n */\n const clearAllFilters = () => {\n const resetAllFilters = resetFilters(filters);\n setFilters(resetAllFilters);\n onFilterChange?.(resetAllFilters);\n\n requestAnimationFrame(() => {\n if (filterBarRef.current) {\n const firstFocusable = filterBarRef.current.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ) as HTMLElement;\n\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n });\n };\n\n const hasActiveFilters = checkActiveFilters(filters);\n\n const { inlineFilters, drawerOnlyFilters } = useMemo(() => {\n const inline: Filter[] = [];\n const drawer: Filter[] = [];\n for (const f of filters) {\n (f.drawerOnly ? drawer : inline).push(f);\n }\n return { inlineFilters: inline, drawerOnlyFilters: drawer };\n }, [filters]);\n\n // The drawer (and its trigger) only exists when at least one filter is\n // unreachable from the toolbar — either because the container is too\n // narrow to show inline filters or the filter is configured as drawer-only.\n const shouldShowDrawer = !showInlineFilters || drawerOnlyFilters.length > 0;\n\n const filterGroupControls = inlineFilters.map((filter) =>\n getAdapter(filter).renderBarControl({\n filter,\n updateFilter,\n controlledFiltering,\n }),\n );\n\n // Provide ToolbarContext so filter sub-components read size from FilterBar.\n // overflow is omitted — it's optional and defaults to wrap behavior.\n const toolbarContextValue = useMemo(\n () => ({\n overflowItems: [],\n addItem: () => {},\n removeItem: () => {},\n toolbarRef: filterBarRef,\n size,\n }),\n [size],\n );\n\n const filterGroupContextValue = useMemo(\n () => ({\n filterGroupRef: filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n }),\n [\n filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n ],\n );\n\n // Initialize tabindex values for keyboard navigation\n useEffect(() => {\n if (filterBarRef.current) {\n updateToolbarItemsTabIndex(filterBarRef.current);\n }\n }, [filters]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (filterBarRef.current) {\n handleToolbarKeyDown(event, filterBarRef.current);\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ToolbarContext.Provider value={toolbarContextValue}>\n <FilterGroupContext.Provider value={filterGroupContextValue}>\n <Flex\n ref={useMergeRefs([filterBarRef, ref])}\n role=\"toolbar\"\n aria-label={`Filters for ${associatedContent}. Use arrow keys to navigate through filter controls.`}\n aria-orientation=\"horizontal\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n className={className}\n style={styleCombined}\n data-anv=\"filter-bar\"\n {...rest}\n >\n <Flex\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n grow={1}\n data-anv=\"toolbar-content\"\n >\n {showInlineFilters && filterGroupControls}\n {shouldShowDrawer && <FilterDrawer />}\n\n {showInlineFilters && hasActiveFilters && (\n <FilterItemWrapper>\n <Button\n appearance=\"ghost\"\n size={size}\n className={styles[\"filter-button-trigger\"]}\n icon={{\n before: CloseIcon,\n }}\n onClick={clearAllFilters}\n >\n Clear Filters\n </Button>\n </FilterItemWrapper>\n )}\n </Flex>\n </Flex>\n </FilterGroupContext.Provider>\n </ToolbarContext.Provider>\n );\n },\n);\n\nFilterBar.displayName = \"FilterBar\";\n"],"names":["core.primitive?.BreakpointSm","core.primitive?.BreakpointMd","core.primitive?.BreakpointLg","core.primitive?.BreakpointXl","core.primitive?.BreakpointXxl","IconTune","IconClose","CloseIcon"],"mappings":"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"}
1
+ {"version":3,"file":"FilterBar-B3c_VGDk.js","sources":["../src/internal/hooks/useContainerQuery/useContainerQuery.ts","../../hammer-icon/mdi/round/tune.svg","../src/beta/components/FilterBar/FilterDrawer.tsx","../src/beta/components/FilterBar/FilterBar.tsx"],"sourcesContent":["import { useEffect, useState, RefObject } from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\n\n/**\n * Return type for the useContainerQuery hook\n */\nexport type ContainerQueryReturnProps = {\n /**\n * The breakpoint name\n */\n name: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n /**\n * Minimum width for this breakpoint\n */\n min: number | undefined;\n /**\n * Maximum width for this breakpoint\n */\n max: number | undefined;\n /**\n * Current container width\n */\n containerWidth: number;\n /**\n * Current container height\n */\n containerHeight: number;\n};\n\n/**\n * Determines if the current container width matches a specific breakpoint\n * @param containerWidth - The container width\n * @param name - The breakpoint name\n * @param min - Minimum width for this breakpoint\n * @param max - Maximum width for this breakpoint\n * @returns Breakpoint information if matched, undefined otherwise\n */\nfunction containerBreakpoint(\n containerWidth: number,\n name: ContainerQueryReturnProps[\"name\"],\n min?: number,\n max?: number,\n): ContainerQueryReturnProps | undefined {\n if (\n (min == null || containerWidth >= min) &&\n (max == null || containerWidth < max)\n ) {\n return {\n name,\n min,\n max,\n containerWidth,\n containerHeight: 0, // Will be updated with actual height\n } as const;\n }\n return undefined;\n}\n\n/**\n * Determines the current breakpoint based on container width and hammer-token breakpoint values.\n *\n * Features:\n * - Validates that all required hammer-token breakpoint values are available\n * - Uses cascade logic to determine the appropriate breakpoint\n * - Returns the first matching breakpoint in order of preference\n * - Handles edge cases where breakpoint values are missing\n * - Uses container dimensions for accurate measurements\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n *\n * @param containerWidth - The width of the container element\n * @param containerHeight - The height of the container element\n * @returns Current breakpoint information or undefined if breakpoint values are unavailable\n */\nconst getContainerBreakpoint = (\n containerWidth: number,\n containerHeight: number,\n) => {\n if (!core.primitive?.BreakpointSm) return;\n if (!core.primitive?.BreakpointMd) return;\n if (!core.primitive?.BreakpointLg) return;\n if (!core.primitive?.BreakpointXl) return;\n if (!core.primitive?.BreakpointXxl) return;\n\n const sm = parseInt(core.primitive?.BreakpointSm.value);\n const md = parseInt(core.primitive?.BreakpointMd.value);\n const lg = parseInt(core.primitive?.BreakpointLg.value);\n const xl = parseInt(core.primitive?.BreakpointXl.value);\n const xxl = parseInt(core.primitive?.BreakpointXxl.value);\n\n const result =\n containerBreakpoint(containerWidth, \"xs\", undefined, sm) ??\n containerBreakpoint(containerWidth, \"sm\", sm, md) ??\n containerBreakpoint(containerWidth, \"md\", md, lg) ??\n containerBreakpoint(containerWidth, \"lg\", lg, xl) ??\n containerBreakpoint(containerWidth, \"xl\", xl, xxl) ??\n containerBreakpoint(containerWidth, \"xxl\", xxl, undefined);\n\n return result ? { ...result, containerHeight } : undefined;\n};\n\n/**\n * Custom hook for detecting current breakpoint based on container dimensions.\n *\n * Features:\n * - Detects current breakpoint based on container width instead of viewport width\n * - Supports all standard breakpoints (xs, sm, md, lg, xl, xxl)\n * - Provides container dimensions information\n * - Uses hammer-token breakpoint values for consistency\n * - Listens for container resize events using ResizeObserver\n * - Supports optional disable functionality\n * - Uses container element dimensions for accurate measurements\n *\n * @param containerRef - React ref to the container element to observe\n * @param props - Optional configuration object\n * @param props.disable - Whether to disable the hook\n * @returns Current breakpoint information or undefined if disabled\n */\nexport const useContainerQuery = (\n containerRef: RefObject<HTMLElement>,\n props?: { disable?: boolean },\n) => {\n const [size, setSize] = useState<ContainerQueryReturnProps | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (props?.disable || !containerRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n const breakpoint = getContainerBreakpoint(width, height);\n setSize(breakpoint);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n // Set initial size\n const rect = containerRef.current.getBoundingClientRect();\n setSize(getContainerBreakpoint(rect.width, rect.height));\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [containerRef, props?.disable]);\n\n if (props?.disable) return undefined;\n return size;\n};\n","import * as React from \"react\";\nconst SvgTune = (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: \"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1zM3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1zm10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1zM7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1zm14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1zm-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1z\" }));\nexport default SvgTune;\n","import {\n useContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n useRef,\n} from \"react\";\nimport IconTune from \"@servicetitan/hammer-icon/mdi/round/tune.svg\";\nimport IconClose from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport {\n DateListFilter,\n DateListLibraryOptionId,\n Filter,\n} from \"./internal/types\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { Flex } from \"../../../components/Flex\";\nimport {\n checkActiveFilters,\n getActiveFilters,\n resetFilters,\n updateSingleFilter,\n cloneFiltersWithItemRefs,\n hasFilterSelectionChanged,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { DateListDialog } from \"./FilterDateList\";\nimport ButtonToggle from \"../../../components/ButtonToggle\";\nimport Chip from \"../../../components/Chip\";\nimport Drawer from \"../../../components/Drawer\";\nimport Button from \"../../../components/Button\";\n\nimport { useToolbarSize } from \"../Toolbar/internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * FilterDrawer component provides a drawer interface for filter selection.\n * Always operates in controlled mode with batch updates.\n * Built into FilterGroup for batch editing of drawer-only and below-breakpoint filters.\n *\n * Features:\n * - Shows all available filters in a side panel\n * - Maintains separate draft state for all filters\n * - Updates filters only when Apply is clicked\n * - Provides Clear All functionality\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Integrates with FilterGroup context for state management\n * - Handles date and date range filters with appropriate input components\n */\nexport const FilterDrawer = () => {\n const [open, setOpen] = useState(false);\n\n // Get filter context from parent\n const {\n filters,\n updateFilter,\n onFilterChange,\n drawerOnlyFilters,\n showInlineFilters,\n } = useContext(FilterGroupContext);\n const toolbarSize = useToolbarSize();\n\n // Local draft state for filters within the drawer\n const [draftFilters, setDraftFilters] = useState<Filter[]>(filters);\n\n // Open dialog for a dateList library option (On…/Before…/After…/Custom Range…).\n const [dateListDialogState, setDateListDialogState] = useState<{\n filterId: string;\n libraryId: DateListLibraryOptionId;\n } | null>(null);\n\n // Filters not reachable from the toolbar: when inline filters are shown,\n // only drawer-only filters qualify; otherwise every filter qualifies.\n const filtersNotInToolbar = showInlineFilters ? drawerOnlyFilters : filters;\n\n const activeFiltersCount = getActiveFilters(filtersNotInToolbar).length;\n\n // Track previous state to detect when to sync draft\n const prevOpenRef = useRef(open);\n const prevFiltersRef = useRef<Filter[]>(filters);\n\n /**\n * Reset draft filters when drawer opens and sync when filter selections change while open\n * Ensures drawer always shows current filter state\n */\n useEffect(() => {\n const justOpened = open && !prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (open) {\n // Sync draft state if:\n // 1. Drawer just opened, OR\n // 2. Any filter selection value changed while already open (race condition fix)\n // Don't sync when only items arrays change (preserves selections during search)\n const anySelectionChanged = prevFiltersRef.current.some(\n (prevFilter, index) => {\n const newFilter = filters[index];\n return newFilter && hasFilterSelectionChanged(prevFilter, newFilter);\n },\n );\n\n const shouldSync = justOpened || anySelectionChanged;\n\n if (shouldSync) {\n setDraftFilters(cloneFiltersWithItemRefs(filters));\n }\n\n prevFiltersRef.current = filters;\n }\n }, [open, filters]);\n\n /**\n * Handles changing a draft filter value\n * Updates only the draft state, not the actual filters\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n */\n const handleDraftChange = useCallback((filterId: string, value: unknown) => {\n setDraftFilters((draft) => updateSingleFilter(draft, filterId, value));\n }, []);\n\n /**\n * Clears all draft filters in the drawer\n * Does not affect the actual filters until Apply is clicked\n */\n const clearDraftFilters = () => {\n setDraftFilters(resetFilters(draftFilters));\n };\n\n const hasActiveDraftFilters = checkActiveFilters(draftFilters);\n\n const requestDateListDialog = useCallback(\n (filterId: string, libraryId: DateListLibraryOptionId) => {\n setDateListDialogState({ filterId, libraryId });\n },\n [],\n );\n\n const filterForm = useMemo(\n () =>\n draftFilters.map((draftFilter) => {\n const originalFilter = filters.find((f) => f.id === draftFilter.id);\n if (!originalFilter) return null;\n\n return getAdapter(draftFilter).renderDrawer({\n originalFilter,\n draftFilter,\n onDraftChange: handleDraftChange,\n requestDateListDialog,\n });\n }),\n [draftFilters, filters, handleDraftChange, requestDateListDialog],\n );\n\n const applyFiltering = () => {\n draftFilters.forEach((draftFilter) => {\n const value = getAdapter(draftFilter).getValue(draftFilter);\n updateFilter(draftFilter.id, value, false);\n });\n\n onFilterChange?.(draftFilters);\n setOpen(false);\n };\n\n const handleCancel = () => {\n setOpen(false);\n };\n\n const hasHiddenActiveFilters = activeFiltersCount > 0;\n\n const triggerClasses = cx(\n styles[\"filter-button-trigger\"],\n styles[\"filter-drawer-trigger\"],\n {\n [styles[\"filter-drawer-trigger--chipped\"]]: hasHiddenActiveFilters,\n },\n );\n\n const dateListDialogTarget = dateListDialogState\n ? draftFilters.find(\n (f): f is DateListFilter =>\n f.id === dateListDialogState.filterId && f.type === \"dateList\",\n )\n : undefined;\n const dateListDialogSelected = dateListDialogTarget?.selectedOption;\n const dateListDialogInitialValue =\n dateListDialogSelected &&\n dateListDialogSelected.id === dateListDialogState?.libraryId &&\n dateListDialogSelected.value !== null\n ? dateListDialogSelected.value\n : undefined;\n\n return (\n <>\n <ButtonToggle\n data-anv=\"filter-group-drawer-trigger\"\n icon={{ before: IconTune }}\n onClick={() => setOpen(true)}\n className={triggerClasses}\n checked={open}\n size={toolbarSize}\n >\n Filters\n {hasHiddenActiveFilters && (\n <Chip\n size=\"small\"\n color=\"#0265DC\"\n label={activeFiltersCount.toString()}\n />\n )}\n </ButtonToggle>\n\n <Drawer\n data-anv=\"filter-group-drawer\"\n data-testid=\"filter-group-drawer\"\n open={open}\n onClose={() => setOpen(false)}\n >\n <Drawer.Content>\n <Flex direction=\"column\" gap={6} grow={1}>\n {filterForm}\n </Flex>\n </Drawer.Content>\n\n <Drawer.Footer>\n <Flex\n justifyContent={\n hasActiveDraftFilters ? \"space-between\" : \"flex-end\"\n }\n grow={1}\n >\n {hasActiveDraftFilters && (\n <Button\n appearance=\"ghost\"\n icon={{ before: IconClose }}\n onClick={clearDraftFilters}\n >\n Clear All Filters\n </Button>\n )}\n\n <Flex gap=\"3\">\n <Button onClick={handleCancel}>Cancel</Button>\n <Button appearance=\"primary\" onClick={applyFiltering}>\n Apply\n </Button>\n </Flex>\n </Flex>\n </Drawer.Footer>\n </Drawer>\n <DateListDialog\n libraryId={dateListDialogState?.libraryId ?? null}\n parentFilterId={dateListDialogState?.filterId ?? \"\"}\n initialValue={dateListDialogInitialValue}\n mode={dateListDialogTarget?.mode}\n dialogCtaLabel=\"Save\"\n onCommit={(option) => {\n if (dateListDialogState) {\n handleDraftChange(dateListDialogState.filterId, option);\n }\n setDateListDialogState(null);\n }}\n onCancel={() => setDateListDialogState(null)}\n />\n </>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport CloseIcon from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport { Filter } from \"./internal/types\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport Button from \"../../../components/Button\";\nimport { LayoutUtilProps } from \"../../../types\";\nimport { useContainerQuery, useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n checkActiveFilters,\n resetFilters,\n updateSingleFilter,\n hasFilterSelectionChanged,\n preserveFilterState,\n} from \"./internal/utils/filter-state\";\nimport { getAdapter } from \"./internal/adapters\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { FilterDrawer } from \"./FilterDrawer\";\nimport { ToolbarContext } from \"../Toolbar/internal/ToolbarContext\";\nimport { ToolbarSize } from \"../Toolbar/types\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"../Toolbar/internal/utils/accessibility\";\nimport { Flex } from \"../../../components/Flex\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props for the FilterBar component\n *\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type FilterBarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Array of filter objects */\n filters: Filter[];\n /** Description of the content this filter bar is associated with, used for accessibility */\n associatedContent: string;\n /** Callback function when filters change */\n onFilterChange: (filters: Filter[]) => void;\n /** Whether the filters submission is controlled via an apply button */\n controlledFiltering?: boolean;\n /**\n * Size of filter controls\n * @default xsmall\n */\n size?: ToolbarSize;\n /**\n * When true, filters stay inline at every container width instead of\n * collapsing to drawer-only mode at narrow widths.\n * @default false\n */\n disableCollapse?: boolean;\n };\n\n/**\n * FilterBar component for displaying a standalone group of filters with toggles and a clear button.\n *\n * Features:\n * - Standalone component with `role=\"toolbar\"` and keyboard navigation\n * - Renders filter toggles and popovers for all filter types\n * - Supports controlled and uncontrolled filtering\n * - Integrates with FilterDrawer for batch filter editing of drawer-only filters\n * - Provides a clear all filters button\n * - Shares filter state via context for child components\n * - Supports boolean, custom, single-select, multi-select, date, and date range filter types\n * - Preserves filter state when filter configuration changes\n * - Responsive: collapses to drawer-only mode below 640px; opt out via `disableCollapse`\n * - Always wraps; never collapses items into an overflow menu\n * - Can be composed alongside Toolbar as a sibling using Flex layout\n *\n * @example\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * controlledFiltering={true}\n * />\n *\n * @example\n * // With Toolbar as sibling\n * <Flex alignItems=\"center\" justifyContent=\"space-between\">\n * <Toolbar associatedContent=\"invoice actions\">\n * <Toolbar.Button icon={SaveIcon} aria-label=\"Save\" />\n * </Toolbar>\n * <FilterBar\n * associatedContent=\"invoices\"\n * filters={filters}\n * onFilterChange={handleFilter}\n * />\n * </Flex>\n */\nexport const FilterBar = forwardRef<HTMLDivElement, FilterBarProps>(\n function FilterBarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n filters: initialFilters,\n onFilterChange,\n controlledFiltering = false,\n associatedContent,\n size = \"xsmall\",\n disableCollapse = false,\n className,\n style,\n onKeyDown,\n ...rest\n } = componentProps;\n\n const [filters, setFilters] = useState<Filter[]>(initialFilters);\n const filterBarRef = useRef<HTMLDivElement>(null);\n const containerQuery = useContainerQuery(filterBarRef);\n\n const showInlineFilters =\n disableCollapse || !!(containerQuery && containerQuery.name !== \"xs\");\n\n // Update filters when props change\n useEffect(() => {\n setFilters((prevFilters) => {\n const existingFiltersMap = new Map(prevFilters.map((f) => [f.id, f]));\n\n return initialFilters.map((newFilter: Filter) => {\n const existingFilter = existingFiltersMap.get(newFilter.id);\n\n if (!existingFilter) {\n return newFilter;\n }\n\n if (!hasFilterSelectionChanged(existingFilter, newFilter)) {\n return preserveFilterState(newFilter, existingFilter);\n }\n\n return newFilter;\n });\n });\n }, [initialFilters]);\n\n /**\n * Updates filter state when a filter is changed\n *\n * @param filterId - ID of the filter to update\n * @param value - New value for the filter\n * @param submit - Whether to submit the filter change\n */\n const updateFilter = useCallback(\n (filterId: string, value: unknown, submit: boolean) => {\n setFilters((prevFilters) => {\n const updatedFilters = updateSingleFilter(\n prevFilters,\n filterId,\n value,\n );\n\n if (submit) {\n onFilterChange?.(updatedFilters);\n }\n\n return updatedFilters;\n });\n },\n [onFilterChange],\n );\n\n /**\n * Clears all active filters\n */\n const clearAllFilters = () => {\n const resetAllFilters = resetFilters(filters);\n setFilters(resetAllFilters);\n onFilterChange?.(resetAllFilters);\n\n requestAnimationFrame(() => {\n if (filterBarRef.current) {\n const firstFocusable = filterBarRef.current.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ) as HTMLElement;\n\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n });\n };\n\n const hasActiveFilters = checkActiveFilters(filters);\n\n const { inlineFilters, drawerOnlyFilters } = useMemo(() => {\n const inline: Filter[] = [];\n const drawer: Filter[] = [];\n for (const f of filters) {\n (f.drawerOnly ? drawer : inline).push(f);\n }\n return { inlineFilters: inline, drawerOnlyFilters: drawer };\n }, [filters]);\n\n // The drawer (and its trigger) only exists when at least one filter is\n // unreachable from the toolbar — either because the container is too\n // narrow to show inline filters or the filter is configured as drawer-only.\n const shouldShowDrawer = !showInlineFilters || drawerOnlyFilters.length > 0;\n\n const filterGroupControls = inlineFilters.map((filter) =>\n getAdapter(filter).renderBarControl({\n filter,\n updateFilter,\n controlledFiltering,\n }),\n );\n\n // Provide ToolbarContext so filter sub-components read size from FilterBar.\n // overflow is omitted — it's optional and defaults to wrap behavior.\n const toolbarContextValue = useMemo(\n () => ({\n overflowItems: [],\n addItem: () => {},\n removeItem: () => {},\n toolbarRef: filterBarRef,\n size,\n }),\n [size],\n );\n\n const filterGroupContextValue = useMemo(\n () => ({\n filterGroupRef: filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n }),\n [\n filterBarRef,\n filters,\n updateFilter,\n onFilterChange,\n controlledFiltering,\n associatedContent,\n showInlineFilters,\n drawerOnlyFilters,\n ],\n );\n\n // Initialize tabindex values for keyboard navigation\n useEffect(() => {\n if (filterBarRef.current) {\n updateToolbarItemsTabIndex(filterBarRef.current);\n }\n }, [filters]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (filterBarRef.current) {\n handleToolbarKeyDown(event, filterBarRef.current);\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ToolbarContext.Provider value={toolbarContextValue}>\n <FilterGroupContext.Provider value={filterGroupContextValue}>\n <Flex\n ref={useMergeRefs([filterBarRef, ref])}\n role=\"toolbar\"\n aria-label={`Filters for ${associatedContent}. Use arrow keys to navigate through filter controls.`}\n aria-orientation=\"horizontal\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n className={className}\n style={styleCombined}\n data-anv=\"filter-bar\"\n {...rest}\n >\n <Flex\n alignItems=\"center\"\n gap={1}\n wrap=\"wrap\"\n grow={1}\n data-anv=\"toolbar-content\"\n >\n {showInlineFilters && filterGroupControls}\n {shouldShowDrawer && <FilterDrawer />}\n\n {showInlineFilters && hasActiveFilters && (\n <FilterItemWrapper>\n <Button\n appearance=\"ghost\"\n size={size}\n className={styles[\"filter-button-trigger\"]}\n icon={{\n before: CloseIcon,\n }}\n onClick={clearAllFilters}\n >\n Clear Filters\n </Button>\n </FilterItemWrapper>\n )}\n </Flex>\n </Flex>\n </FilterGroupContext.Provider>\n </ToolbarContext.Provider>\n );\n },\n);\n\nFilterBar.displayName = \"FilterBar\";\n"],"names":["core.primitive?.BreakpointSm","core.primitive?.BreakpointMd","core.primitive?.BreakpointLg","core.primitive?.BreakpointXl","core.primitive?.BreakpointXxl","IconTune","IconClose","CloseIcon"],"mappings":"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"}
package/dist/FilterBar.js CHANGED
@@ -1,2 +1,2 @@
1
- export { F as FilterBar, F as default } from './FilterBar-CXGsoWw5.js';
1
+ export { F as FilterBar, F as default } from './FilterBar-B3c_VGDk.js';
2
2
  //# sourceMappingURL=FilterBar.js.map
@@ -1,2 +1,2 @@
1
- export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-CIuy3aRD.js';
1
+ export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-CzHj9Qvy.js';
2
2
  //# sourceMappingURL=MultiSelectField.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useRef, useState, useMemo, useEffect, forwardRef, useId, useCallback } from 'react';
3
3
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
4
- import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner } from './useToggleSelection-Bn7h-gGD.js';
4
+ import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner } from './useToggleSelection-BGc5OiZF.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { B as Button } from './Button-C_V2xQAs.js';
7
7
  import { C as Chip } from './Chip-CyMNyEPR.js';
@@ -13,7 +13,7 @@ import { u as useChipLayout } from './useChipLayout-BWZfKDgd.js';
13
13
  import { S as SelectFieldLabel } from './SelectFieldLabel-vemffdmu.js';
14
14
  import { s as styles$1 } from './SelectTriggerBase.module-DsPvTQE7.js';
15
15
  import { u as useDownshiftEnvironment, a as useCombobox, b as useSelect } from './downshift.esm-xtSnQp44.js';
16
- import { a as useProcessedOptions, b as buildSelectItems, c as useDebouncedCallback, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-DZqeVWTS.js';
16
+ import { a as useProcessedOptions, b as buildSelectItems, c as useDebouncedCallback, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-CgHB-l6A.js';
17
17
  import { O as OptionsDialog, a as OptionsPopover } from './useAdaptiveView-CeYKH0Me.js';
18
18
  import { F as FieldMessage } from './FieldMessage-mTGdycSA.js';
19
19
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
@@ -1597,4 +1597,4 @@ const MultiSelectFieldSync = (props) => {
1597
1597
  };
1598
1598
 
1599
1599
  export { MultiSelectField as M, MultiSelectFieldSync as a };
1600
- //# sourceMappingURL=MultiSelectFieldSync-CIuy3aRD.js.map
1600
+ //# sourceMappingURL=MultiSelectFieldSync-CzHj9Qvy.js.map