@servicetitan/anvil2 3.13.6 → 3.13.7

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 (92) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{AnvilProvider-DcYAaAvs.js → AnvilProvider-D8msiELo.js} +12 -5
  3. package/dist/AnvilProvider-D8msiELo.js.map +1 -0
  4. package/dist/AnvilProvider.js +1 -1
  5. package/dist/{Avatar-D31JDNrs.js → Avatar-DZxHhMTP.js} +2 -4
  6. package/dist/Avatar-DZxHhMTP.js.map +1 -0
  7. package/dist/{Avatar-DXI-w1Vi.js → Avatar-DkWoRhJu.js} +2 -2
  8. package/dist/{Avatar-DXI-w1Vi.js.map → Avatar-DkWoRhJu.js.map} +1 -1
  9. package/dist/Avatar.js +2 -2
  10. package/dist/{Calendar-C1mgmbWt.js → Calendar-DV149Rqb.js} +2 -2
  11. package/dist/{Calendar-C1mgmbWt.js.map → Calendar-DV149Rqb.js.map} +1 -1
  12. package/dist/{Calendar-DnK6UwPE.js → Calendar-kSH8F7gx.js} +32 -40
  13. package/dist/Calendar-kSH8F7gx.js.map +1 -0
  14. package/dist/Calendar.css +50 -48
  15. package/dist/Calendar.js +2 -2
  16. package/dist/{Chip-AILbiVZ6.js → Chip-COkotNvt.js} +3 -5
  17. package/dist/Chip-COkotNvt.js.map +1 -0
  18. package/dist/Chip.js +1 -1
  19. package/dist/Combobox.js +1 -1
  20. package/dist/{DataTable-BE1YvSto.js → DataTable-D0YlJ7IA.js} +5 -7
  21. package/dist/{DataTable-BE1YvSto.js.map → DataTable-D0YlJ7IA.js.map} +1 -1
  22. package/dist/{DateFieldRange-VK82YRwV.js → DateFieldRange-B7-z7KXC.js} +2 -2
  23. package/dist/{DateFieldRange-VK82YRwV.js.map → DateFieldRange-B7-z7KXC.js.map} +1 -1
  24. package/dist/DateFieldRange.js +1 -1
  25. package/dist/{DateFieldSingle-BikPSISX.js → DateFieldSingle-B3aY-9vO.js} +2 -2
  26. package/dist/{DateFieldSingle-BikPSISX.js.map → DateFieldSingle-B3aY-9vO.js.map} +1 -1
  27. package/dist/DateFieldSingle.js +1 -1
  28. package/dist/{DateFieldYearless-DQIEBYKe.js → DateFieldYearless-BYwWvHXD.js} +2 -2
  29. package/dist/{DateFieldYearless-DQIEBYKe.js.map → DateFieldYearless-BYwWvHXD.js.map} +1 -1
  30. package/dist/DateFieldYearless.js +1 -1
  31. package/dist/{DateFieldYearlessRange-BpQqvD9U.js → DateFieldYearlessRange-cyDptr2S.js} +2 -2
  32. package/dist/{DateFieldYearlessRange-BpQqvD9U.js.map → DateFieldYearlessRange-cyDptr2S.js.map} +1 -1
  33. package/dist/DateFieldYearlessRange.js +1 -1
  34. package/dist/{FilterBar-XMZ-Q-aW.js → FilterBar-CrIPZKvL.js} +3 -3
  35. package/dist/{FilterBar-XMZ-Q-aW.js.map → FilterBar-CrIPZKvL.js.map} +1 -1
  36. package/dist/FilterBar.js +1 -1
  37. package/dist/MultiSelectField.js +1 -1
  38. package/dist/{MultiSelectFieldSync-C57Hms2z.js → MultiSelectFieldSync-gH-TQnq3.js} +5 -5
  39. package/dist/{MultiSelectFieldSync-C57Hms2z.js.map → MultiSelectFieldSync-gH-TQnq3.js.map} +1 -1
  40. package/dist/MultiSelectMenu.js +1 -1
  41. package/dist/{MultiSelectMenuSync-DxU1AtCL.js → MultiSelectMenuSync-QmhjWA05.js} +4 -4
  42. package/dist/{MultiSelectMenuSync-DxU1AtCL.js.map → MultiSelectMenuSync-QmhjWA05.js.map} +1 -1
  43. package/dist/{Page-CBmCe-YR.js → Page-D4RYSd8t.js} +2 -2
  44. package/dist/{Page-CBmCe-YR.js.map → Page-D4RYSd8t.js.map} +1 -1
  45. package/dist/Page.js +1 -1
  46. package/dist/{SavedFiltersButton-DFy_R8yv.js → SavedFiltersButton-D0J5KTsI.js} +4 -4
  47. package/dist/{SavedFiltersButton-DFy_R8yv.js.map → SavedFiltersButton-D0J5KTsI.js.map} +1 -1
  48. package/dist/SavedFiltersButton.js +1 -1
  49. package/dist/SelectField.js +1 -1
  50. package/dist/{SelectFieldSync-CLpTOgdr.js → SelectFieldSync-BjJN7FC3.js} +4 -4
  51. package/dist/{SelectFieldSync-CLpTOgdr.js.map → SelectFieldSync-BjJN7FC3.js.map} +1 -1
  52. package/dist/SelectMenu.js +1 -1
  53. package/dist/{SelectMenuSync-DqUIPJtu.js → SelectMenuSync-iZsNTote.js} +4 -4
  54. package/dist/{SelectMenuSync-DqUIPJtu.js.map → SelectMenuSync-iZsNTote.js.map} +1 -1
  55. package/dist/{SelectOptions-BkqBzRiG.js → SelectOptions-BeehD5VV.js} +2 -2
  56. package/dist/{SelectOptions-BkqBzRiG.js.map → SelectOptions-BeehD5VV.js.map} +1 -1
  57. package/dist/{SelectTrigger-DdIvzkNw.js → SelectTrigger-BQAVMm3E.js} +3 -3
  58. package/dist/{SelectTrigger-DdIvzkNw.js.map → SelectTrigger-BQAVMm3E.js.map} +1 -1
  59. package/dist/SelectTrigger.js +1 -1
  60. package/dist/{SelectTriggerBase-f2z0XQDf.js → SelectTriggerBase-BV-QNhII.js} +2 -2
  61. package/dist/{SelectTriggerBase-f2z0XQDf.js.map → SelectTriggerBase-BV-QNhII.js.map} +1 -1
  62. package/dist/Table.js +1 -1
  63. package/dist/TreeSelectField.js +1 -1
  64. package/dist/{TreeSelectFieldSync-nD0qctC8.js → TreeSelectFieldSync-CoWxg7tA.js} +4 -4
  65. package/dist/{TreeSelectFieldSync-nD0qctC8.js.map → TreeSelectFieldSync-CoWxg7tA.js.map} +1 -1
  66. package/dist/TreeSelectMenu.js +1 -1
  67. package/dist/{TreeSelectMenuSync-B8pwy4dA.js → TreeSelectMenuSync-CmJa0lyW.js} +3 -3
  68. package/dist/{TreeSelectMenuSync-B8pwy4dA.js.map → TreeSelectMenuSync-CmJa0lyW.js.map} +1 -1
  69. package/dist/{YearlessDateInputWithPicker-CuHWd_Vp.js → YearlessDateInputWithPicker-C0FwNBKR.js} +6 -4
  70. package/dist/YearlessDateInputWithPicker-C0FwNBKR.js.map +1 -0
  71. package/dist/beta.js +13 -13
  72. package/dist/{bulkActionTypes-cnslVUIT.js → bulkActionTypes-Ct2cwT7b.js} +2 -2
  73. package/dist/{bulkActionTypes-cnslVUIT.js.map → bulkActionTypes-Ct2cwT7b.js.map} +1 -1
  74. package/dist/{filter-state-B7lCzjsR.js → filter-state-lWKlYjeQ.js} +11 -11
  75. package/dist/{filter-state-B7lCzjsR.js.map → filter-state-lWKlYjeQ.js.map} +1 -1
  76. package/dist/index.js +15 -15
  77. package/dist/src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +2 -2
  78. package/dist/src/internal/testing/prefersColorScheme.d.ts +7 -0
  79. package/dist/{syncFilterUtils-CMH8ApTo.js → syncFilterUtils-CKXbRZG8.js} +2 -2
  80. package/dist/{syncFilterUtils-CMH8ApTo.js.map → syncFilterUtils-CKXbRZG8.js.map} +1 -1
  81. package/dist/{treeSync-8byHuYib.js → treeSync-ONC4TbTR.js} +2 -2
  82. package/dist/{treeSync-8byHuYib.js.map → treeSync-ONC4TbTR.js.map} +1 -1
  83. package/dist/{useInfiniteCombobox-BS7W8JkW.js → useInfiniteCombobox-DJoVEIk6.js} +3 -3
  84. package/dist/{useInfiniteCombobox-BS7W8JkW.js.map → useInfiniteCombobox-DJoVEIk6.js.map} +1 -1
  85. package/dist/{useInvalidateOnOptionsChange-BKKS9HXb.js → useInvalidateOnOptionsChange-C6tF7696.js} +3 -3
  86. package/dist/{useInvalidateOnOptionsChange-BKKS9HXb.js.map → useInvalidateOnOptionsChange-C6tF7696.js.map} +1 -1
  87. package/package.json +2 -2
  88. package/dist/AnvilProvider-DcYAaAvs.js.map +0 -1
  89. package/dist/Avatar-D31JDNrs.js.map +0 -1
  90. package/dist/Calendar-DnK6UwPE.js.map +0 -1
  91. package/dist/Chip-AILbiVZ6.js.map +0 -1
  92. package/dist/YearlessDateInputWithPicker-CuHWd_Vp.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @servicetitan/anvil2
2
2
 
3
+ ## 3.13.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2923](https://github.com/servicetitan/hammer/pull/2923) [`97cec27`](https://github.com/servicetitan/hammer/commit/97cec27d0e7c15f568892036323379a9bd1c3948) Thanks [@jarizast](https://github.com/jarizast)! - [DateFieldYearless, DateFieldYearlessRange] Fix the first month or day click in the picker being discarded and closing the popover
8
+
9
+ - [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - [Chip] Fix custom colors defaulting to the system color scheme when theme mode is unset
10
+
11
+ - [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - [Avatar] Fix custom colors defaulting to the system color scheme when theme mode is unset
12
+
13
+ - [#2926](https://github.com/servicetitan/hammer/pull/2926) [`cfcb71d`](https://github.com/servicetitan/hammer/commit/cfcb71df3560e97daff448a4b6e7feeb320bc393) Thanks [@ericag1985](https://github.com/ericag1985)! - [Calendar] Fix bounded month navigation closing containing popovers
14
+
15
+ - [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** [DataTable] Fix empty-state artwork defaulting to the system color scheme when theme mode is unset
16
+
17
+ - [#2920](https://github.com/servicetitan/hammer/pull/2920) [`82dee43`](https://github.com/servicetitan/hammer/commit/82dee43b8c1ac2706c7e712c0ee67bab9365e751) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - [AnvilProvider] Fix `anvil2` body class being stripped by one MFE scope's unmount while another scope's `AnvilProvider` is still mounted
18
+
3
19
  ## 3.13.6
4
20
 
5
21
  ### Patch Changes
@@ -13,7 +13,13 @@ import './AnvilProvider.css';const AnvilProviderContext = createContext(
13
13
  );
14
14
  const TooltipLegacyGroupContext = createContext(null);
15
15
 
16
- let bodyScopeRefcount = 0;
16
+ const BODY_SCOPE_REFCOUNT_KEY = Symbol.for("ST_ANVIL2_BODY_SCOPE_REFCOUNT");
17
+ function getBodyScopeRefcount() {
18
+ return globalThis[BODY_SCOPE_REFCOUNT_KEY] ?? 0;
19
+ }
20
+ function setBodyScopeRefcount(n) {
21
+ globalThis[BODY_SCOPE_REFCOUNT_KEY] = n;
22
+ }
17
23
  const AnvilProvider = (props) => {
18
24
  const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
19
25
  const {
@@ -49,11 +55,12 @@ const AnvilProvider = (props) => {
49
55
  };
50
56
  const breakpoint = useBreakpoint();
51
57
  useEffect(() => {
52
- bodyScopeRefcount += 1;
58
+ setBodyScopeRefcount(getBodyScopeRefcount() + 1);
53
59
  document.body.classList.add("anvil2");
54
60
  return () => {
55
- bodyScopeRefcount = Math.max(0, bodyScopeRefcount - 1);
56
- if (bodyScopeRefcount === 0) {
61
+ const next = Math.max(0, getBodyScopeRefcount() - 1);
62
+ setBodyScopeRefcount(next);
63
+ if (next === 0) {
57
64
  document.body.classList.remove("anvil2");
58
65
  }
59
66
  };
@@ -87,4 +94,4 @@ const AnvilProvider = (props) => {
87
94
  };
88
95
 
89
96
  export { AnvilProvider as A, AnvilProviderContext as a };
90
- //# sourceMappingURL=AnvilProvider-DcYAaAvs.js.map
97
+ //# sourceMappingURL=AnvilProvider-D8msiELo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnvilProvider-D8msiELo.js","sources":["../src/providers/AnvilProvider/AnvilProviderContext.tsx","../src/providers/AnvilProvider/AnvilProvider.tsx"],"sourcesContent":["import type { ThemeProviderProps } from \"../ThemeProvider\";\nimport {\n type ComponentPropsWithoutRef,\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n} from \"react\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport type { ITranslations } from \"../LocalizationProvider/LocalizationProvider\";\nimport type { BreakpointReturnProps } from \"../../hooks/useBreakpoint\";\n\n/**\n * @deprecated No longer has any effect. Automatically loading these\n * stylesheets through a dynamic import broke CSS delivery when\n * `AnvilProvider` is shared between a host application and its\n * micro-frontends. Import the `@servicetitan/anvil2/assets/css-utils/*.css`\n * file(s) you need directly instead. See the CSS Utilities docs.\n */\nexport type CssUtilsOptions =\n | boolean\n | {\n spacing?: boolean;\n color?: boolean;\n border?: boolean;\n font?: boolean;\n };\n\nexport type AnvilProviderProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n children?: ReactNode;\n\n themeData?: {\n theme?: ThemeProviderProps[\"theme\"];\n mode?: ThemeProviderProps[\"mode\"];\n };\n\n localizationData?: {\n locale?: ITranslations[\"locale\"];\n dir?: ITranslations[\"dir\"];\n translations?: ITranslations[\"translations\"];\n };\n\n /**\n * @deprecated No longer has any effect. Import the\n * `@servicetitan/anvil2/assets/css-utils/*.css` file(s) you need\n * directly instead. See the CSS Utilities docs.\n */\n cssUtils?: CssUtilsOptions;\n } & {\n trackingIdData?: {\n scope?: string;\n optOut?: boolean;\n };\n };\n\nexport type AnvilProviderContextProps = {\n breakpoint?: BreakpointReturnProps;\n};\n\nexport const AnvilProviderContext = createContext<AnvilProviderContextProps>(\n {},\n);\n\nexport const TooltipLegacyGroupContext = createContext<{\n disableDelayGroup: Dispatch<SetStateAction<boolean>>;\n} | null>(null);\n\nexport const useTooltipLegacyGroup = () => {\n const context = useContext(TooltipLegacyGroupContext);\n\n if (context == null) {\n throw new Error(\n \"Tooltip components must be wrapped in <AnvilProvider /> or <TooltipGroupContext.Provider />\",\n );\n }\n\n return context;\n};\n","import \"@servicetitan/anvil-fonts/dist/css/anvil-fonts.css\";\nimport { ThemeProvider } from \"../ThemeProvider\";\nimport themeStyles from \"../ThemeProvider/ThemeProvider.module.scss\";\nimport { useMemo, useState, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport { useTranslations } from \"../LocalizationProvider/useTranslations\";\nimport { LocalizationContext } from \"../LocalizationProvider\";\nimport TrackingProvider from \"../TrackingProvider\";\nimport {\n AnvilProviderContext,\n type AnvilProviderProps,\n TooltipLegacyGroupContext,\n} from \"./AnvilProviderContext\";\n\n// Refcount of mounted AnvilProviders. Coordinates the body class so the last\n// unmount removes it, but a remount (e.g. story switch, hot reload) keeps it.\n//\n// Stored in the global Symbol registry so all module instances share the same\n// counter. The expose-loader used by the MFE framework re-executes module code\n// per MFE scope, giving each scope its own `let` binding. Without this, a\n// light-bundle MFE's AnvilProvider cleanup decrements its own counter to 0 and\n// strips the class while the host's AnvilProvider is still mounted.\nconst BODY_SCOPE_REFCOUNT_KEY = Symbol.for(\"ST_ANVIL2_BODY_SCOPE_REFCOUNT\");\nfunction getBodyScopeRefcount(): number {\n return (globalThis as Record<symbol, number>)[BODY_SCOPE_REFCOUNT_KEY] ?? 0;\n}\nfunction setBodyScopeRefcount(n: number): void {\n (globalThis as Record<symbol, number>)[BODY_SCOPE_REFCOUNT_KEY] = n;\n}\n\nexport const AnvilProvider = (props: AnvilProviderProps) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n themeData,\n localizationData,\n trackingIdData,\n // Deprecated, no-op: kept so existing callers still type-check. See\n // AnvilProviderProps.cssUtils for the replacement.\n cssUtils: _cssUtils,\n children,\n className,\n style,\n ...rest\n } = componentProps;\n\n const {\n locale = \"en\",\n dir = \"ltr\",\n translations = {},\n } = localizationData ?? {};\n\n const { scope = \"ST\", optOut } = trackingIdData ?? {};\n\n const classNameCombined = cx(\n className,\n \"anvil2\",\n [themeStyles[\"theme-core\"]],\n {\n [themeStyles[\"mode-dark\"]]: themeData?.mode === \"dark\",\n [themeStyles[\"mode-light\"]]: themeData?.mode === \"light\",\n },\n );\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const breakpoint = useBreakpoint();\n\n // Anvil1 takeover components (Modal/Dialog/Drawer) `createPortal` their\n // children into `document.body`, escaping AnvilProvider's `.anvil2` scope and\n // leaving descendant Anvil2 components without matching selectors. Mirroring\n // the class onto body lets those selectors match for portaled content while\n // leaving theme variables and typography resets on the local element.\n useEffect(() => {\n setBodyScopeRefcount(getBodyScopeRefcount() + 1);\n document.body.classList.add(\"anvil2\");\n return () => {\n const next = Math.max(0, getBodyScopeRefcount() - 1);\n setBodyScopeRefcount(next);\n if (next === 0) {\n document.body.classList.remove(\"anvil2\");\n }\n };\n }, []);\n\n const [disableDelayGroup, setDisableDelayGroup] = useState(false);\n\n const { translations: t } = useTranslations(translations);\n\n const localizationContextValue = useMemo(() => ({ locale, t }), [locale, t]);\n const tooltipLegacyGroupContextValue = useMemo(\n () => ({ disableDelayGroup: setDisableDelayGroup }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disableDelayGroup],\n );\n\n return (\n <AnvilProviderContext.Provider value={{ breakpoint }}>\n <ThemeProvider\n className={classNameCombined}\n style={styleCombined}\n theme={themeData?.theme}\n mode={themeData?.mode}\n dir={dir}\n {...rest}\n >\n <TooltipLegacyGroupContext.Provider\n value={tooltipLegacyGroupContextValue}\n >\n <LocalizationContext.Provider value={localizationContextValue}>\n <TrackingProvider scope={scope} optOut={optOut}>\n {children}\n </TrackingProvider>\n </LocalizationContext.Provider>\n </TooltipLegacyGroupContext.Provider>\n </ThemeProvider>\n </AnvilProviderContext.Provider>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { A as AnvilProvider, a as AnvilProviderContext, A as default } from './AnvilProvider-DcYAaAvs.js';
1
+ export { A as AnvilProvider, a as AnvilProviderContext, A as default } from './AnvilProvider-D8msiELo.js';
2
2
  //# sourceMappingURL=AnvilProvider.js.map
@@ -4,7 +4,6 @@ import { c as cx } from './index-De1g9FRV.js';
4
4
  import { u as useAccessibleColor, t as tinycolor } from './useAccessibleColor-BYKjkGRg.js';
5
5
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
6
6
  import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
7
- import { u as usePrefersColorScheme } from './usePrefersColorScheme-CwOF0TjZ.js';
8
7
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
9
8
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
10
9
 
@@ -74,8 +73,7 @@ const AvatarBase = forwardRef(
74
73
  [avatarBaseStyles["online"]]: status && status === "online"
75
74
  });
76
75
  const { mode: themeMode } = useContext(ThemeProviderContext);
77
- const { mode: sysMode } = usePrefersColorScheme();
78
- const mode = themeMode ?? sysMode;
76
+ const mode = themeMode ?? "light";
79
77
  const { foreground, background, border } = useAccessibleColor(color, mode);
80
78
  const styleWithColor = {
81
79
  "--a2-inline-avatar-background-color": color && background,
@@ -260,4 +258,4 @@ const Avatar = Object.assign(
260
258
  Avatar.displayName = "Avatar";
261
259
 
262
260
  export { AvatarGroup as A, Avatar as a };
263
- //# sourceMappingURL=Avatar-D31JDNrs.js.map
261
+ //# sourceMappingURL=Avatar-DZxHhMTP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar-DZxHhMTP.js","sources":["../src/internal/functions/getInitial.ts","../src/components/Avatar/internal/AvatarBase.tsx","../src/components/Avatar/AvatarGroup.tsx","../src/components/Avatar/internal/Avatar.tsx"],"sourcesContent":["/**\n * Extracts initials from a full name string.\n *\n * Features:\n * - Handles single names (returns first two characters)\n * - Handles multiple names (returns first and last name initials)\n * - Automatically capitalizes all initials\n * - Filters out empty strings and whitespace\n * - Handles edge cases like empty names and single characters\n * - Preserves proper capitalization rules\n * - Returns undefined for empty or falsy input\n *\n * @param name - The full name string to extract initials from\n * @returns The initials as a string, or undefined if name is empty\n */\nexport function getInitial(name: string) {\n if (!name) return undefined;\n\n const nameArray = name.split(\" \").filter(Boolean);\n\n if (nameArray.length > 1)\n return `${nameArray[0][0]?.toUpperCase()}${nameArray[\n nameArray.length - 1\n ][0].toUpperCase()}`;\n\n if (nameArray[0][1]) {\n return `${nameArray[0][0].toUpperCase()}${nameArray[0][1].toLowerCase()}`;\n }\n return `${nameArray[0][0].toUpperCase()}`;\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useRef,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport tinycolor from \"tinycolor2\";\n\nimport type { LayoutUtilProps, Size } from \"../../../types\";\nimport { SrOnly } from \"../../SrOnly\";\nimport { useAccessibleColor, useMergeRefs } from \"../../../hooks\";\n\nimport styles from \"./AvatarBase.module.scss\";\nimport { ThemeProviderContext } from \"../../../providers/ThemeProvider/internal/ThemeProviderContext\";\n\n/**\n * Props for the AvatarBase component\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type AvatarBaseProps = ComponentPropsWithoutRef<\"span\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * Full name\n * @accessibility This is used for alt text and Screenreader\n */\n name: string;\n /**\n * Custom color of the AvatarBase\n */\n color?: string;\n /**\n * Image source to be used for AvatarBase\n */\n image?: string;\n /**\n * Initials to display if no image is provided\n */\n initials?: string;\n /**\n * @default medium\n */\n size?: Extract<Size, \"xsmall\" | \"small\" | \"medium\" | \"large\">;\n /**\n * Online status of the AvatarBase\n */\n status?: \"online\" | \"offline\";\n };\n\n/**\n * Base Avatar component that handles the core avatar functionality.\n *\n * Features:\n * - Renders user avatars with images or initials\n * - Supports custom colors with accessible contrast\n * - Shows online/offline status indicator\n * - Handles image loading errors gracefully\n * - Supports light and dark themes\n * - Fully accessible with screen reader support\n *\n * @example\n * <AvatarBase name=\"John Doe\" size=\"medium\" status=\"online\" />\n */\nexport const AvatarBase = forwardRef<HTMLSpanElement, AvatarBaseProps>(\n (props, ref) => {\n const {\n className,\n color,\n status,\n name,\n image,\n initials,\n style,\n size,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLSpanElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const [hasImageErrored, setHasImageErrored] = useState(false);\n const avatarBaseClassNames = cx(styles[\"avatar-base\"], className, {\n [styles[`${size}`]]: size && size !== \"medium\",\n });\n const onlineIndicatorClassNames = cx(styles[\"indicator\"], {\n [styles[\"offline\"]]: !status || status === \"offline\",\n [styles[\"online\"]]: status && status === \"online\",\n });\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const mode = themeMode ?? \"light\";\n\n const { foreground, background, border } = useAccessibleColor(color, mode);\n\n const styleWithColor = {\n \"--a2-inline-avatar-background-color\": color && background,\n \"--a2-inline-avatar-font-color\": color && foreground,\n \"--a2-inline-avatar-border-color\": color && border,\n ...style,\n };\n\n const onlineIndicatorBorderColor = useMemo(() => {\n if (mode === \"dark\") {\n if (color) {\n return tinycolor(background).brighten(20).toHexString();\n }\n }\n return \"var(--a2-background-color-default)\";\n }, [color, mode, background]);\n\n const onlineIndicatorStyles = {\n \"--a2-inline-avatar-border-color\": onlineIndicatorBorderColor,\n } as React.CSSProperties;\n\n const onlineString = status;\n const srOnly = [name, onlineString].filter(Boolean).join(\" \");\n\n // if the image prop updates, also reset the error state for the new image\n useEffect(() => {\n if (image) {\n setHasImageErrored(false);\n }\n }, [image]);\n\n // if the image is already complete on our first render (likely due to SSR),\n // check the error state of the already complete image\n useEffect(() => {\n if (image && imgRef.current && imgRef.current.complete) {\n const img = new Image();\n const handleError = () => setHasImageErrored(true);\n\n img.addEventListener(\"error\", handleError);\n img.src = image;\n\n return () => {\n img.removeEventListener(\"error\", handleError);\n img.src = \"\";\n };\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <span\n className={avatarBaseClassNames}\n style={styleWithColor}\n data-anv=\"avatarBase\"\n {...rest}\n ref={useMergeRefs([elRef, ref])}\n >\n {image && !hasImageErrored ? (\n <img\n className={styles[\"img\"]}\n aria-hidden\n src={image}\n alt={name}\n onError={() => setHasImageErrored(true)}\n ref={imgRef}\n />\n ) : initials ? (\n <span className={styles[\"initial\"]} aria-hidden>\n {initials}\n </span>\n ) : (\n <span aria-hidden>?</span>\n )}\n\n {status && (\n <span\n aria-hidden\n className={onlineIndicatorClassNames}\n style={onlineIndicatorStyles}\n />\n )}\n\n <SrOnly>{srOnly}</SrOnly>\n </span>\n );\n },\n);\n\nAvatarBase.displayName = \"AvatarBase\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n Children,\n isValidElement,\n cloneElement,\n type CSSProperties,\n type ReactElement,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./AvatarGroup.module.scss\";\nimport avatarBaseStyles from \"./internal/AvatarBase.module.scss\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { AvatarBase } from \"./internal/AvatarBase\";\n\n/**\n * Props for the AvatarGroup component\n * @property {number} [max] - Maximum number of avatars to display before truncating\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type AvatarGroupProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"span\"> & {\n /**\n * Max child to show before truncating\n */\n max?: number;\n };\n\n/**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, max, style, children, ...rest } = componentProps;\n const childrenArr = Children.toArray(children);\n const inferredSize =\n (isValidElement(childrenArr[0]) && childrenArr[0].props.size) ?? \"medium\";\n const isOverflowing = max ? max < childrenArr.length : false;\n\n const overflowCount = max && childrenArr.length - max;\n\n const avatarGroupClassNames = cx(styles[\"avatar-group\"], className, {\n [styles[`${inferredSize}`]]: inferredSize,\n });\n\n const avatarBaseOverflowClassNames = cx(\n avatarBaseStyles[\"avatar-base-overflow\"],\n {\n [avatarBaseStyles[\"overflow-ten-plus\"]]:\n overflowCount && overflowCount > 9,\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n return (\n <span\n ref={ref}\n className={avatarGroupClassNames}\n style={styleCombined}\n data-anv=\"avatar-group\"\n {...rest}\n >\n {childrenArr.map((child, i) => {\n let childEl = child;\n if (isValidElement(child)) {\n const nIndex = childrenArr.length - i;\n const nStyle: CSSProperties = {\n ...child.props.style,\n zIndex: nIndex,\n };\n childEl = cloneElement(child as ReactElement, {\n style: nStyle,\n });\n }\n\n if (!max) return childEl;\n if (i < max) return childEl;\n return null;\n })}\n {isOverflowing && max && (\n <AvatarBase\n className={avatarBaseOverflowClassNames}\n name={`+${overflowCount}`}\n initials={`+${overflowCount}`}\n size={inferredSize}\n />\n )}\n </span>\n );\n },\n);\n\nAvatarGroup.displayName = \"AvatarGroup\";\n","import { type ComponentPropsWithoutRef, forwardRef, useMemo } from \"react\";\nimport { AvatarGroup } from \"../AvatarGroup\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { getInitial } from \"../../../internal/functions\";\n\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { AvatarBase, type AvatarBaseProps } from \"./AvatarBase\";\n\n/**\n * Props for the Avatar component\n * @property {string} name - Full name of the user. Used for alt text and screen reader announcements\n * @property {string} [color] - Custom color of the avatar. Should maintain sufficient contrast ratio for accessibility\n * @property {string} [image] - Image source to be used for avatar. Falls back to initials if image fails to load\n * @property {Extract<Size, \"small\" | \"medium\" | \"large\">} [size] - Size of the Avatar\n * @property {\"online\" | \"offline\"} [status] - Online status of the Avatar\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<AvatarBaseProps, \"initials\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type AvatarProps = ComponentPropsWithoutRef<\"span\"> &\n Omit<AvatarBaseProps, \"initials\"> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">;\n\n/**\n * Avatar component for displaying user avatars with initials or images.\n *\n * Features:\n * - Displays user initials when no image is provided\n * - Supports custom colors and sizes\n * - Shows online/offline status\n * - Fully accessible with screen reader support\n * - Automatic image fallback handling\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * <Avatar\n * name=\"John Doe\"\n * image=\"https://example.com/avatar.jpg\"\n * size=\"medium\"\n * status=\"online\"\n * />\n */\nexport const Avatar = Object.assign(\n forwardRef<HTMLSpanElement, AvatarProps>(function AvatarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { name, style, ...rest } = componentProps;\n\n const styleWithLayout = useMemo(() => {\n return {\n ...layoutStyles,\n ...style,\n };\n }, [layoutStyles, style]);\n\n const initials = getInitial(name);\n\n return (\n <AvatarBase\n style={styleWithLayout}\n data-anv=\"avatar\"\n name={name}\n ref={ref}\n initials={rest.size === \"small\" ? initials?.[0] : initials}\n {...rest}\n />\n );\n }),\n {\n /**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\n Group: AvatarGroup,\n },\n);\nAvatar.displayName = \"Avatar\";\n"],"names":["styles"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { a as Avatar$1, A as AvatarGroup } from './Avatar-D31JDNrs.js';
2
+ import { a as Avatar$1, A as AvatarGroup } from './Avatar-DZxHhMTP.js';
3
3
  import { forwardRef } from 'react';
4
4
 
5
5
  const Avatar = Object.assign(
@@ -32,4 +32,4 @@ const Avatar = Object.assign(
32
32
  Avatar.displayName = Avatar$1.displayName;
33
33
 
34
34
  export { Avatar as A };
35
- //# sourceMappingURL=Avatar-DXI-w1Vi.js.map
35
+ //# sourceMappingURL=Avatar-DkWoRhJu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar-DXI-w1Vi.js","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import {\n Avatar as CoreAvatar,\n type AvatarProps as CoreAvatarProps,\n} from \"./internal/Avatar\";\nimport { forwardRef } from \"react\";\nimport type { DistributiveOmit } from \"../../types\";\nimport { AvatarGroup } from \"./AvatarGroup\";\n\n/**\n * Props for the Avatar component\n * @property {string} name - Full name used for alt text and screen reader\n * @property {string} [color] - Custom color of the Avatar\n * @property {string} [image] - Image source to be used for Avatar\n * @property {\"small\" | \"medium\" | \"large\"} [size] - Size of the Avatar\n * @property {\"online\" | \"offline\"} [status] - Online status of the Avatar\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<AvatarBaseProps, \"initials\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n * @extends DataTrackingId\n */\nexport type AvatarProps = DistributiveOmit<CoreAvatarProps, \"size\"> & {\n size?: Extract<CoreAvatarProps[\"size\"], \"small\" | \"medium\" | \"large\">;\n};\n\n/**\n * Avatar component for displaying user avatars with initials or images.\n *\n * Features:\n * - Displays user initials when no image is provided\n * - Supports custom colors and sizes\n * - Shows online/offline status\n * - Fully accessible with screen reader support\n * - Automatic image fallback handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Avatar name=\"John Doe\" size=\"medium\" status=\"online\" />\n */\nexport const Avatar = Object.assign(\n forwardRef<HTMLSpanElement, AvatarProps>(function AvatarInner(props, ref) {\n return <CoreAvatar ref={ref} {...props} />;\n }),\n {\n /**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\n Group: AvatarGroup,\n },\n);\nAvatar.displayName = CoreAvatar.displayName;\n"],"names":["CoreAvatar"],"mappings":";;;;AAsCO,MAAM,SAAS,MAAA,CAAO,MAAA;AAAA,EAC3B,UAAA,CAAyC,SAAS,WAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AACxE,IAAA,uBAAO,GAAA,CAACA,QAAA,EAAA,EAAW,GAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC1C,CAAC,CAAA;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBE,KAAA,EAAO;AAAA;AAEX;AACA,MAAA,CAAO,cAAcA,QAAA,CAAW,WAAA;;;;"}
1
+ {"version":3,"file":"Avatar-DkWoRhJu.js","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import {\n Avatar as CoreAvatar,\n type AvatarProps as CoreAvatarProps,\n} from \"./internal/Avatar\";\nimport { forwardRef } from \"react\";\nimport type { DistributiveOmit } from \"../../types\";\nimport { AvatarGroup } from \"./AvatarGroup\";\n\n/**\n * Props for the Avatar component\n * @property {string} name - Full name used for alt text and screen reader\n * @property {string} [color] - Custom color of the Avatar\n * @property {string} [image] - Image source to be used for Avatar\n * @property {\"small\" | \"medium\" | \"large\"} [size] - Size of the Avatar\n * @property {\"online\" | \"offline\"} [status] - Online status of the Avatar\n * @extends ComponentPropsWithoutRef<\"span\">\n * @extends Omit<AvatarBaseProps, \"initials\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n * @extends DataTrackingId\n */\nexport type AvatarProps = DistributiveOmit<CoreAvatarProps, \"size\"> & {\n size?: Extract<CoreAvatarProps[\"size\"], \"small\" | \"medium\" | \"large\">;\n};\n\n/**\n * Avatar component for displaying user avatars with initials or images.\n *\n * Features:\n * - Displays user initials when no image is provided\n * - Supports custom colors and sizes\n * - Shows online/offline status\n * - Fully accessible with screen reader support\n * - Automatic image fallback handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Avatar name=\"John Doe\" size=\"medium\" status=\"online\" />\n */\nexport const Avatar = Object.assign(\n forwardRef<HTMLSpanElement, AvatarProps>(function AvatarInner(props, ref) {\n return <CoreAvatar ref={ref} {...props} />;\n }),\n {\n /**\n * AvatarGroup component for displaying multiple avatars in a group.\n *\n * Features:\n * - Displays multiple avatars in a stacked layout\n * - Handles overflow with a count indicator\n * - Maintains consistent sizing across all avatars\n * - Supports custom styling and layout\n * - Automatically adjusts z-index for proper stacking\n * - Fully accessible with screen reader support\n *\n * @example\n * <Avatar.Group max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Johnson\" />\n * <Avatar name=\"Alice Brown\" />\n * </Avatar.Group>\n */\n Group: AvatarGroup,\n },\n);\nAvatar.displayName = CoreAvatar.displayName;\n"],"names":["CoreAvatar"],"mappings":";;;;AAsCO,MAAM,SAAS,MAAA,CAAO,MAAA;AAAA,EAC3B,UAAA,CAAyC,SAAS,WAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AACxE,IAAA,uBAAO,GAAA,CAACA,QAAA,EAAA,EAAW,GAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC1C,CAAC,CAAA;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBE,KAAA,EAAO;AAAA;AAEX;AACA,MAAA,CAAO,cAAcA,QAAA,CAAW,WAAA;;;;"}
package/dist/Avatar.js CHANGED
@@ -1,3 +1,3 @@
1
- export { A as Avatar, A as default } from './Avatar-DXI-w1Vi.js';
2
- export { A as AvatarGroup } from './Avatar-D31JDNrs.js';
1
+ export { A as Avatar, A as default } from './Avatar-DkWoRhJu.js';
2
+ export { A as AvatarGroup } from './Avatar-DZxHhMTP.js';
3
3
  //# sourceMappingURL=Avatar.js.map
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-DnK6UwPE.js';
2
+ import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-kSH8F7gx.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-C1mgmbWt.js.map
10
+ //# sourceMappingURL=Calendar-DV149Rqb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-C1mgmbWt.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n type 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\n/**\n * Beta Calendar component — wraps the stable Calendar with per-date\n * annotations and month-view tracking, on top of its single/range date\n * selection.\n *\n * Features:\n * - All stable Calendar props and behavior (see `Calendar` in `components`)\n * - `dateMetadata` to annotate specific dates with contextual text (e.g.\n * \"3 available time slots\"), surfaced via `Calendar.Month`'s day pips\n * - `onMonthView` callback fired whenever the visible month/year changes\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * dateMetadata={[{ date: \"2024-01-20\", context: \"3 available slots\" }]}\n * onMonthView={({ month, year }) => console.log('Viewing:', month, year)}\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":";;;AAiCO,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-DV149Rqb.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n type 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\n/**\n * Beta Calendar component — wraps the stable Calendar with per-date\n * annotations and month-view tracking, on top of its single/range date\n * selection.\n *\n * Features:\n * - All stable Calendar props and behavior (see `Calendar` in `components`)\n * - `dateMetadata` to annotate specific dates with contextual text (e.g.\n * \"3 available time slots\"), surfaced via `Calendar.Month`'s day pips\n * - `onMonthView` callback fired whenever the visible month/year changes\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * dateMetadata={[{ date: \"2024-01-20\", context: \"3 available slots\" }]}\n * onMonthView={({ month, year }) => console.log('Viewing:', month, year)}\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":";;;AAiCO,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,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { D as DateTime, I as Info } from './luxon-wpz4A-OQ.js';
3
- import { createContext, useContext, forwardRef, useState, useEffect, useRef, useCallback, useMemo, useId } from 'react';
3
+ import { createContext, useContext, forwardRef, useRef, useCallback, useEffect, useState, useMemo, useId } from 'react';
4
4
  import { B as Button } from './Button-Dwh_Nd4l.js';
5
5
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
6
6
  import { S as SvgKeyboardArrowUp } from './keyboard_arrow_up-CxzK6LAl.js';
@@ -191,42 +191,42 @@ const CalendarYearButton = forwardRef((props, ref) => {
191
191
  });
192
192
  CalendarYearButton.displayName = "CalendarYearButton";
193
193
 
194
- const calendar = "_calendar_vutdc_1";
195
- const grid = "_grid_vutdc_18";
196
- const header = "_header_vutdc_23";
197
- const controller = "_controller_vutdc_46";
198
- const spacer = "_spacer_vutdc_59";
199
- const cell = "_cell_vutdc_74";
200
- const weekday = "_weekday_vutdc_119";
201
- const range = "_range_vutdc_162";
202
- const overflow = "_overflow_vutdc_168";
203
- const selected = "_selected_vutdc_172";
204
- const pip = "_pip_vutdc_254";
194
+ const calendar = "_calendar_uesx5_1";
195
+ const grid = "_grid_uesx5_18";
196
+ const header = "_header_uesx5_23";
197
+ const controller = "_controller_uesx5_46";
198
+ const spacer = "_spacer_uesx5_62";
199
+ const cell = "_cell_uesx5_77";
200
+ const weekday = "_weekday_uesx5_122";
201
+ const range = "_range_uesx5_165";
202
+ const overflow = "_overflow_uesx5_171";
203
+ const selected = "_selected_uesx5_175";
204
+ const pip = "_pip_uesx5_257";
205
205
  const styles$1 = {
206
206
  calendar: calendar,
207
207
  grid: grid,
208
208
  header: header,
209
209
  controller: controller,
210
- "controller-button": "_controller-button_vutdc_55",
210
+ "controller-button": "_controller-button_uesx5_55",
211
211
  spacer: spacer,
212
- "day-grid": "_day-grid_vutdc_63",
212
+ "day-grid": "_day-grid_uesx5_66",
213
213
  cell: cell,
214
214
  weekday: weekday,
215
- "month-selection": "_month-selection_vutdc_133",
216
- "selection-checkbox": "_selection-checkbox_vutdc_133",
217
- "selection-card": "_selection-card_vutdc_143",
218
- "year-selector": "_year-selector_vutdc_155",
219
- "range-first": "_range-first_vutdc_162",
220
- "range-last": "_range-last_vutdc_162",
215
+ "month-selection": "_month-selection_uesx5_136",
216
+ "selection-checkbox": "_selection-checkbox_uesx5_136",
217
+ "selection-card": "_selection-card_uesx5_146",
218
+ "year-selector": "_year-selector_uesx5_158",
219
+ "range-first": "_range-first_uesx5_165",
220
+ "range-last": "_range-last_uesx5_165",
221
221
  range: range,
222
222
  overflow: overflow,
223
223
  selected: selected,
224
- "is-unavailable": "_is-unavailable_vutdc_181",
225
- "hover-last": "_hover-last_vutdc_206",
226
- "has-metadata": "_has-metadata_vutdc_249",
224
+ "is-unavailable": "_is-unavailable_uesx5_184",
225
+ "hover-last": "_hover-last_uesx5_209",
226
+ "has-metadata": "_has-metadata_uesx5_252",
227
227
  pip: pip,
228
- "range-fill": "_range-fill_vutdc_267",
229
- "range-disabled": "_range-disabled_vutdc_278"
228
+ "range-fill": "_range-fill_uesx5_270",
229
+ "range-disabled": "_range-disabled_uesx5_281"
230
230
  };
231
231
 
232
232
  const CalendarPrev = forwardRef(
@@ -239,13 +239,9 @@ const CalendarPrev = forwardRef(
239
239
  setSelectedMonth,
240
240
  setSelectedYear
241
241
  } = useCalendar();
242
- const [disabled, setDisabled] = useState(false);
243
- useEffect(() => {
244
- setDisabled(
245
- minDate != null && focusedDate.minus({ month: 1 }).endOf("month") < minDate
246
- );
247
- }, [minDate, focusedDate]);
242
+ const isDisabled = minDate != null && focusedDate.minus({ month: 1 }).endOf("month") < minDate;
248
243
  const onClickHandler = (e) => {
244
+ if (isDisabled) return;
249
245
  onClick?.(e);
250
246
  const targetMonth = focusedDate.minus({ month: 1 }).endOf("month");
251
247
  const targetDate = focusedDate.minus({ month: 1 });
@@ -286,7 +282,7 @@ const CalendarPrev = forwardRef(
286
282
  "data-anv": "calendar-prev",
287
283
  "aria-label": "Previous Month",
288
284
  ...rest,
289
- disabled
285
+ "aria-disabled": isDisabled || void 0
290
286
  }
291
287
  );
292
288
  }
@@ -303,13 +299,9 @@ const CalendarNext = forwardRef(
303
299
  setSelectedMonth,
304
300
  setSelectedYear
305
301
  } = useCalendar();
306
- const [disabled, setDisabled] = useState(false);
307
- useEffect(() => {
308
- setDisabled(
309
- maxDate != null && focusedDate.plus({ month: 1 }).startOf("month") > maxDate
310
- );
311
- }, [maxDate, focusedDate]);
302
+ const isDisabled = maxDate != null && focusedDate.plus({ month: 1 }).startOf("month") > maxDate;
312
303
  const onClickHandler = (e) => {
304
+ if (isDisabled) return;
313
305
  onClick?.(e);
314
306
  const targetMonth = focusedDate.plus({ month: 1 }).startOf("month");
315
307
  const targetDate = focusedDate.plus({ month: 1 });
@@ -350,7 +342,7 @@ const CalendarNext = forwardRef(
350
342
  "data-anv": "calendar-next",
351
343
  ref,
352
344
  ...rest,
353
- disabled
345
+ "aria-disabled": isDisabled || void 0
354
346
  }
355
347
  );
356
348
  }
@@ -1834,4 +1826,4 @@ const Calendar = Object.assign(
1834
1826
  Calendar.displayName = "Calendar";
1835
1827
 
1836
1828
  export { CalendarBetaPropsContext as C, Calendar as a, CalendarNow as b, CalendarYearButton as c, CalendarPrev as d, CalendarNext as e, CalendarMonthButton as f, CalendarMonth as g, useCalendarBetaProps as u };
1837
- //# sourceMappingURL=Calendar-DnK6UwPE.js.map
1829
+ //# sourceMappingURL=Calendar-kSH8F7gx.js.map