@salt-ds/date-components 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @salt-ds/date-components
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 8687aa7: `@salt-ds/date-components` is now stable.
8
+
9
+ **Breaking change:** the React `Context` objects backing the date components are no longer part of the public API of `@salt-ds/date-components`. The following symbols have been removed from the package entry point:
10
+
11
+ - `LocalizationProviderContext` (the context value; the type alias of the same name remains exported)
12
+ - `SingleDateSelectionContext`
13
+ - `DateRangeSelectionContext`
14
+
15
+ Consumers should read context state through the provided hooks and configure providers through the exported `Provider` components instead:
16
+
17
+ - Use `useLocalization()` with `<LocalizationProvider>` in place of `LocalizationProviderContext`.
18
+ - Use `useDatePickerContext({ selectionVariant })` with `<DatePicker>` in place of `SingleDateSelectionContext` / `DateRangeSelectionContext`.
19
+
20
+ The value types (`LocalizationProviderValue`, `SingleDatePickerState`, `RangeDatePickerState`, `DatePickerState`) remain exported for typing.
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [9729a10]
25
+ - Updated dependencies [52daa64]
26
+ - Updated dependencies [ed2779c]
27
+ - Updated dependencies [07e4d5d]
28
+ - Updated dependencies [8687aa7]
29
+ - @salt-ds/core@1.64.0
30
+ - @salt-ds/date-adapters@1.0.0
31
+
3
32
  ## 0.1.0
4
33
 
5
34
  ### Minor Changes
@@ -640,4 +640,4 @@
640
640
  box-sizing: border-box;
641
641
  }
642
642
 
643
- /* src/061d89c7-ecd7-4bab-b499-835787f26fa6.css */
643
+ /* src/4d9309d5-31f3-4a09-9290-4cbee36a500b.css */
package/dist-cjs/index.js CHANGED
@@ -42,8 +42,6 @@ exports.DateInputSingle = DateInputSingle.DateInputSingle;
42
42
  exports.DatePicker = DatePicker.DatePicker;
43
43
  exports.DatePickerMain = DatePicker.DatePickerMain;
44
44
  exports.DatePickerActions = DatePickerActions.DatePickerActions;
45
- exports.DateRangeSelectionContext = DatePickerContext.DateRangeSelectionContext;
46
- exports.SingleDateSelectionContext = DatePickerContext.SingleDateSelectionContext;
47
45
  exports.useDatePickerContext = DatePickerContext.useDatePickerContext;
48
46
  exports.DatePickerHelperText = DatePickerHelperText.DatePickerHelperText;
49
47
  exports.DATE_PICKER_OVERLAY_ANNOUNCER_TARGET = DatePickerOverlay.DATE_PICKER_OVERLAY_ANNOUNCER_TARGET;
@@ -58,6 +56,5 @@ exports.DatePickerSingleGridPanel = DatePickerSingleGridPanel.DatePickerSingleGr
58
56
  exports.DatePickerSingleInput = DatePickerSingleInput.DatePickerSingleInput;
59
57
  exports.DatePickerTrigger = DatePickerTrigger.DatePickerTrigger;
60
58
  exports.LocalizationProvider = LocalizationProvider.LocalizationProvider;
61
- exports.LocalizationProviderContext = LocalizationProvider.LocalizationProviderContext;
62
59
  exports.useLocalization = LocalizationProvider.useLocalization;
63
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -46,6 +46,5 @@ const useLocalization = () => {
46
46
  };
47
47
 
48
48
  exports.LocalizationProvider = LocalizationProvider;
49
- exports.LocalizationProviderContext = LocalizationProviderContext;
50
49
  exports.useLocalization = useLocalization;
51
50
  //# sourceMappingURL=LocalizationProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizationProvider.js","sources":["../src/localization-provider/LocalizationProvider.tsx"],"sourcesContent":["import type {\n DateFrameworkType,\n SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { createContext, useContext, useMemo } from \"react\";\n\nconst MIN_DATE = \"1900-01-01T00:00:00.000\";\nconst MAX_DATE = \"2099-12-31T00:00:00.000\";\n\nexport interface LocalizationProviderValue<\n TDate extends DateFrameworkType = DateFrameworkType,\n> {\n defaultDates: {\n minDate: TDate;\n maxDate: TDate;\n };\n dateAdapter: SaltDateAdapter<TDate>;\n}\n\n/**\n * Props for the LocalizationProvider component.\n *\n * @template TDate - The type of the date object used in the provider.\n * @template TLocale - The type of the locale, defaulting to string.\n */\nexport interface LocalizationProviderProps<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = string,\n> {\n /**\n * The child components to be rendered within the provider.\n */\n children?: React.ReactNode;\n\n /**\n * The instance of the date library being used.\n */\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n instance?: any;\n\n /**\n * The date adapter class, which provides methods for date manipulation and formatting.\n * This should be a constructor for a class implementing the SaltDateAdapter interface.\n */\n DateAdapter: new (\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n ...args: any\n ) => SaltDateAdapter<TDate, TLocale>;\n\n /**\n * The locale to be used for date formatting and manipulation.\n */\n locale?: TLocale;\n\n /**\n * The minimum date allowed for all date selections.\n * Defaults to January 1, 1900.\n */\n minDate?: TDate;\n\n /**\n * The maximum date allowed for all date selections.\n * Defaults to December 31, 2099.\n */\n maxDate?: TDate;\n}\n\nexport type LocalizationProviderContext<\n TDate extends DateFrameworkType = DateFrameworkType,\n> = {\n [K in keyof LocalizationProviderValue<TDate>]:\n | LocalizationProviderValue<TDate>[K]\n | null;\n};\n\nexport const LocalizationProviderContext =\n // biome-ignore lint/suspicious/noExplicitAny: date frameworl\n createContext<LocalizationProviderValue<any> | null>(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n LocalizationProviderContext.displayName = \"LocalizationProviderContext\";\n}\n\nexport const LocalizationProvider = function LocalizationProvider<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = undefined,\n>(props: LocalizationProviderProps<TDate, TLocale>) {\n const { children, DateAdapter, instance, locale, minDate, maxDate } = props;\n\n const dateAdapter = useMemo(() => {\n return new DateAdapter({\n locale,\n instance,\n });\n }, [DateAdapter, instance, locale]);\n\n const defaultDates: LocalizationProviderValue<TDate>[\"defaultDates\"] =\n useMemo(\n () => ({\n minDate: minDate || dateAdapter.date(MIN_DATE),\n maxDate: maxDate || dateAdapter.date(MAX_DATE),\n }),\n [dateAdapter, minDate, maxDate],\n );\n\n const contextValue: LocalizationProviderValue<TDate> = useMemo(() => {\n return {\n dateAdapter,\n defaultDates,\n };\n }, [dateAdapter, defaultDates]);\n\n return (\n <LocalizationProviderContext.Provider value={contextValue}>\n {children}\n </LocalizationProviderContext.Provider>\n );\n};\n\n/**\n * Custom hook to access the localization context.\n *\n * This hook provides access to the localization settings and utilities\n * within the `LocalizationProviderContext`. It should be used within a\n * component that is a descendant of `LocalizationProviderContext.Provider`.\n *\n * @template TDate - The type of the date object used in the localization context.\n *\n * @returns The localization provider value, which includes date manipulation and formatting utilities.\n *\n * @throws Will throw an error if the hook is used outside of a `LocalizationProviderContext.Provider`.\n */\nexport const useLocalization = <\n TDate extends DateFrameworkType = DateFrameworkType,\n>(): LocalizationProviderValue<TDate> => {\n const localization = useContext(LocalizationProviderContext);\n if (!localization) {\n throw new Error(\n \"useLocalization should be called inside LocalizationProviderContext.Provider\",\n );\n }\n return localization;\n};\n"],"names":["createContext","LocalizationProvider","useMemo","useContext"],"mappings":";;;;;AAMA,MAAM,QAAA,GAAW,yBAAA;AACjB,MAAM,QAAA,GAAW,yBAAA;AAoEV,MAAM,2BAAA;AAAA;AAAA,EAEXA,oBAAqD,IAAI;AAAA;AAE3D,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,2BAAA,CAA4B,WAAA,GAAc,6BAAA;AAC5C;AAEO,MAAM,oBAAA,GAAuB,SAASC,qBAAAA,CAG3C,KAAA,EAAkD;AAClD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,MAAA,EAAQ,OAAA,EAAS,SAAQ,GAAI,KAAA;AAEtE,EAAA,MAAM,WAAA,GAAcC,cAAQ,MAAM;AAChC,IAAA,OAAO,IAAI,WAAA,CAAY;AAAA,MACrB,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AAElC,EAAA,MAAM,YAAA,GACJA,aAAA;AAAA,IACE,OAAO;AAAA,MACL,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC7C,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ;AAAA,KAC/C,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO;AAAA,GAChC;AAEF,EAAA,MAAM,YAAA,GAAiDA,cAAQ,MAAM;AACnE,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAE9B,EAAA,sCACG,2BAAA,CAA4B,QAAA,EAA5B,EAAqC,KAAA,EAAO,cAC1C,QAAA,EACH,CAAA;AAEJ;AAeO,MAAM,kBAAkB,MAEU;AACvC,EAAA,MAAM,YAAA,GAAeC,iBAAW,2BAA2B,CAAA;AAC3D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;;;;;;"}
1
+ {"version":3,"file":"LocalizationProvider.js","sources":["../src/localization-provider/LocalizationProvider.tsx"],"sourcesContent":["import type {\n DateFrameworkType,\n SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { createContext, useContext, useMemo } from \"react\";\n\nconst MIN_DATE = \"1900-01-01T00:00:00.000\";\nconst MAX_DATE = \"2099-12-31T00:00:00.000\";\n\nexport interface LocalizationProviderValue<\n TDate extends DateFrameworkType = DateFrameworkType,\n> {\n defaultDates: {\n minDate: TDate;\n maxDate: TDate;\n };\n dateAdapter: SaltDateAdapter<TDate>;\n}\n\n/**\n * Props for the LocalizationProvider component.\n *\n * @template TDate - The type of the date object used in the provider.\n * @template TLocale - The type of the locale, defaulting to string.\n */\nexport interface LocalizationProviderProps<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = string,\n> {\n /**\n * The child components to be rendered within the provider.\n */\n children?: React.ReactNode;\n\n /**\n * The instance of the date library being used.\n */\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n instance?: any;\n\n /**\n * The date adapter class, which provides methods for date manipulation and formatting.\n * This should be a constructor for a class implementing the SaltDateAdapter interface.\n */\n DateAdapter: new (\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n ...args: any\n ) => SaltDateAdapter<TDate, TLocale>;\n\n /**\n * The locale to be used for date formatting and manipulation.\n */\n locale?: TLocale;\n\n /**\n * The minimum date allowed for all date selections.\n * Defaults to January 1, 1900.\n */\n minDate?: TDate;\n\n /**\n * The maximum date allowed for all date selections.\n * Defaults to December 31, 2099.\n */\n maxDate?: TDate;\n}\n\nexport type LocalizationProviderContext<\n TDate extends DateFrameworkType = DateFrameworkType,\n> = {\n [K in keyof LocalizationProviderValue<TDate>]:\n | LocalizationProviderValue<TDate>[K]\n | null;\n};\n\n// Internal: consumers should use `useLocalization` or `<LocalizationProvider>`.\nconst LocalizationProviderContext =\n // biome-ignore lint/suspicious/noExplicitAny: date frameworl\n createContext<LocalizationProviderValue<any> | null>(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n LocalizationProviderContext.displayName = \"LocalizationProviderContext\";\n}\n\nexport const LocalizationProvider = function LocalizationProvider<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = undefined,\n>(props: LocalizationProviderProps<TDate, TLocale>) {\n const { children, DateAdapter, instance, locale, minDate, maxDate } = props;\n\n const dateAdapter = useMemo(() => {\n return new DateAdapter({\n locale,\n instance,\n });\n }, [DateAdapter, instance, locale]);\n\n const defaultDates: LocalizationProviderValue<TDate>[\"defaultDates\"] =\n useMemo(\n () => ({\n minDate: minDate || dateAdapter.date(MIN_DATE),\n maxDate: maxDate || dateAdapter.date(MAX_DATE),\n }),\n [dateAdapter, minDate, maxDate],\n );\n\n const contextValue: LocalizationProviderValue<TDate> = useMemo(() => {\n return {\n dateAdapter,\n defaultDates,\n };\n }, [dateAdapter, defaultDates]);\n\n return (\n <LocalizationProviderContext.Provider value={contextValue}>\n {children}\n </LocalizationProviderContext.Provider>\n );\n};\n\n/**\n * Custom hook to access the localization context.\n *\n * This hook provides access to the localization settings and utilities\n * within the `LocalizationProviderContext`. It should be used within a\n * component that is a descendant of `LocalizationProviderContext.Provider`.\n *\n * @template TDate - The type of the date object used in the localization context.\n *\n * @returns The localization provider value, which includes date manipulation and formatting utilities.\n *\n * @throws Will throw an error if the hook is used outside of a `LocalizationProviderContext.Provider`.\n */\nexport const useLocalization = <\n TDate extends DateFrameworkType = DateFrameworkType,\n>(): LocalizationProviderValue<TDate> => {\n const localization = useContext(LocalizationProviderContext);\n if (!localization) {\n throw new Error(\n \"useLocalization should be called inside LocalizationProviderContext.Provider\",\n );\n }\n return localization;\n};\n"],"names":["createContext","LocalizationProvider","useMemo","useContext"],"mappings":";;;;;AAMA,MAAM,QAAA,GAAW,yBAAA;AACjB,MAAM,QAAA,GAAW,yBAAA;AAqEjB,MAAM,2BAAA;AAAA;AAAA,EAEJA,oBAAqD,IAAI;AAAA,CAAA;AAE3D,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,2BAAA,CAA4B,WAAA,GAAc,6BAAA;AAC5C;AAEO,MAAM,oBAAA,GAAuB,SAASC,qBAAAA,CAG3C,KAAA,EAAkD;AAClD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,MAAA,EAAQ,OAAA,EAAS,SAAQ,GAAI,KAAA;AAEtE,EAAA,MAAM,WAAA,GAAcC,cAAQ,MAAM;AAChC,IAAA,OAAO,IAAI,WAAA,CAAY;AAAA,MACrB,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AAElC,EAAA,MAAM,YAAA,GACJA,aAAA;AAAA,IACE,OAAO;AAAA,MACL,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC7C,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ;AAAA,KAC/C,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO;AAAA,GAChC;AAEF,EAAA,MAAM,YAAA,GAAiDA,cAAQ,MAAM;AACnE,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAE9B,EAAA,sCACG,2BAAA,CAA4B,QAAA,EAA5B,EAAqC,KAAA,EAAO,cAC1C,QAAA,EACH,CAAA;AAEJ;AAeO,MAAM,kBAAkB,MAEU;AACvC,EAAA,MAAM,YAAA,GAAeC,iBAAW,2BAA2B,CAAA;AAC3D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;;;;;"}
package/dist-es/index.js CHANGED
@@ -10,7 +10,7 @@ export { DateInputRange, DateParserField } from './date-input/DateInputRange.js'
10
10
  export { DateInputSingle } from './date-input/DateInputSingle.js';
11
11
  export { DatePicker, DatePickerMain } from './date-picker/DatePicker.js';
12
12
  export { DatePickerActions } from './date-picker/DatePickerActions.js';
13
- export { DateRangeSelectionContext, SingleDateSelectionContext, useDatePickerContext } from './date-picker/DatePickerContext.js';
13
+ export { useDatePickerContext } from './date-picker/DatePickerContext.js';
14
14
  export { DatePickerHelperText } from './date-picker/DatePickerHelperText.js';
15
15
  export { DATE_PICKER_OVERLAY_ANNOUNCER_TARGET, DatePickerOverlay } from './date-picker/DatePickerOverlay.js';
16
16
  export { DatePickerOverlayProvider, useDatePickerOverlay } from './date-picker/DatePickerOverlayProvider.js';
@@ -20,5 +20,5 @@ export { DatePickerRangePanel } from './date-picker/DatePickerRangePanel.js';
20
20
  export { DatePickerSingleGridPanel } from './date-picker/DatePickerSingleGridPanel.js';
21
21
  export { DatePickerSingleInput } from './date-picker/DatePickerSingleInput.js';
22
22
  export { DatePickerTrigger } from './date-picker/DatePickerTrigger.js';
23
- export { LocalizationProvider, LocalizationProviderContext, useLocalization } from './localization-provider/LocalizationProvider.js';
23
+ export { LocalizationProvider, useLocalization } from './localization-provider/LocalizationProvider.js';
24
24
  //# sourceMappingURL=index.js.map
@@ -43,5 +43,5 @@ const useLocalization = () => {
43
43
  return localization;
44
44
  };
45
45
 
46
- export { LocalizationProvider, LocalizationProviderContext, useLocalization };
46
+ export { LocalizationProvider, useLocalization };
47
47
  //# sourceMappingURL=LocalizationProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizationProvider.js","sources":["../src/localization-provider/LocalizationProvider.tsx"],"sourcesContent":["import type {\n DateFrameworkType,\n SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { createContext, useContext, useMemo } from \"react\";\n\nconst MIN_DATE = \"1900-01-01T00:00:00.000\";\nconst MAX_DATE = \"2099-12-31T00:00:00.000\";\n\nexport interface LocalizationProviderValue<\n TDate extends DateFrameworkType = DateFrameworkType,\n> {\n defaultDates: {\n minDate: TDate;\n maxDate: TDate;\n };\n dateAdapter: SaltDateAdapter<TDate>;\n}\n\n/**\n * Props for the LocalizationProvider component.\n *\n * @template TDate - The type of the date object used in the provider.\n * @template TLocale - The type of the locale, defaulting to string.\n */\nexport interface LocalizationProviderProps<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = string,\n> {\n /**\n * The child components to be rendered within the provider.\n */\n children?: React.ReactNode;\n\n /**\n * The instance of the date library being used.\n */\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n instance?: any;\n\n /**\n * The date adapter class, which provides methods for date manipulation and formatting.\n * This should be a constructor for a class implementing the SaltDateAdapter interface.\n */\n DateAdapter: new (\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n ...args: any\n ) => SaltDateAdapter<TDate, TLocale>;\n\n /**\n * The locale to be used for date formatting and manipulation.\n */\n locale?: TLocale;\n\n /**\n * The minimum date allowed for all date selections.\n * Defaults to January 1, 1900.\n */\n minDate?: TDate;\n\n /**\n * The maximum date allowed for all date selections.\n * Defaults to December 31, 2099.\n */\n maxDate?: TDate;\n}\n\nexport type LocalizationProviderContext<\n TDate extends DateFrameworkType = DateFrameworkType,\n> = {\n [K in keyof LocalizationProviderValue<TDate>]:\n | LocalizationProviderValue<TDate>[K]\n | null;\n};\n\nexport const LocalizationProviderContext =\n // biome-ignore lint/suspicious/noExplicitAny: date frameworl\n createContext<LocalizationProviderValue<any> | null>(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n LocalizationProviderContext.displayName = \"LocalizationProviderContext\";\n}\n\nexport const LocalizationProvider = function LocalizationProvider<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = undefined,\n>(props: LocalizationProviderProps<TDate, TLocale>) {\n const { children, DateAdapter, instance, locale, minDate, maxDate } = props;\n\n const dateAdapter = useMemo(() => {\n return new DateAdapter({\n locale,\n instance,\n });\n }, [DateAdapter, instance, locale]);\n\n const defaultDates: LocalizationProviderValue<TDate>[\"defaultDates\"] =\n useMemo(\n () => ({\n minDate: minDate || dateAdapter.date(MIN_DATE),\n maxDate: maxDate || dateAdapter.date(MAX_DATE),\n }),\n [dateAdapter, minDate, maxDate],\n );\n\n const contextValue: LocalizationProviderValue<TDate> = useMemo(() => {\n return {\n dateAdapter,\n defaultDates,\n };\n }, [dateAdapter, defaultDates]);\n\n return (\n <LocalizationProviderContext.Provider value={contextValue}>\n {children}\n </LocalizationProviderContext.Provider>\n );\n};\n\n/**\n * Custom hook to access the localization context.\n *\n * This hook provides access to the localization settings and utilities\n * within the `LocalizationProviderContext`. It should be used within a\n * component that is a descendant of `LocalizationProviderContext.Provider`.\n *\n * @template TDate - The type of the date object used in the localization context.\n *\n * @returns The localization provider value, which includes date manipulation and formatting utilities.\n *\n * @throws Will throw an error if the hook is used outside of a `LocalizationProviderContext.Provider`.\n */\nexport const useLocalization = <\n TDate extends DateFrameworkType = DateFrameworkType,\n>(): LocalizationProviderValue<TDate> => {\n const localization = useContext(LocalizationProviderContext);\n if (!localization) {\n throw new Error(\n \"useLocalization should be called inside LocalizationProviderContext.Provider\",\n );\n }\n return localization;\n};\n"],"names":["LocalizationProvider"],"mappings":";;;AAMA,MAAM,QAAA,GAAW,yBAAA;AACjB,MAAM,QAAA,GAAW,yBAAA;AAoEV,MAAM,2BAAA;AAAA;AAAA,EAEX,cAAqD,IAAI;AAAA;AAE3D,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,2BAAA,CAA4B,WAAA,GAAc,6BAAA;AAC5C;AAEO,MAAM,oBAAA,GAAuB,SAASA,qBAAAA,CAG3C,KAAA,EAAkD;AAClD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,MAAA,EAAQ,OAAA,EAAS,SAAQ,GAAI,KAAA;AAEtE,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,OAAO,IAAI,WAAA,CAAY;AAAA,MACrB,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AAElC,EAAA,MAAM,YAAA,GACJ,OAAA;AAAA,IACE,OAAO;AAAA,MACL,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC7C,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ;AAAA,KAC/C,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO;AAAA,GAChC;AAEF,EAAA,MAAM,YAAA,GAAiD,QAAQ,MAAM;AACnE,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAE9B,EAAA,2BACG,2BAAA,CAA4B,QAAA,EAA5B,EAAqC,KAAA,EAAO,cAC1C,QAAA,EACH,CAAA;AAEJ;AAeO,MAAM,kBAAkB,MAEU;AACvC,EAAA,MAAM,YAAA,GAAe,WAAW,2BAA2B,CAAA;AAC3D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;;;;"}
1
+ {"version":3,"file":"LocalizationProvider.js","sources":["../src/localization-provider/LocalizationProvider.tsx"],"sourcesContent":["import type {\n DateFrameworkType,\n SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { createContext, useContext, useMemo } from \"react\";\n\nconst MIN_DATE = \"1900-01-01T00:00:00.000\";\nconst MAX_DATE = \"2099-12-31T00:00:00.000\";\n\nexport interface LocalizationProviderValue<\n TDate extends DateFrameworkType = DateFrameworkType,\n> {\n defaultDates: {\n minDate: TDate;\n maxDate: TDate;\n };\n dateAdapter: SaltDateAdapter<TDate>;\n}\n\n/**\n * Props for the LocalizationProvider component.\n *\n * @template TDate - The type of the date object used in the provider.\n * @template TLocale - The type of the locale, defaulting to string.\n */\nexport interface LocalizationProviderProps<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = string,\n> {\n /**\n * The child components to be rendered within the provider.\n */\n children?: React.ReactNode;\n\n /**\n * The instance of the date library being used.\n */\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n instance?: any;\n\n /**\n * The date adapter class, which provides methods for date manipulation and formatting.\n * This should be a constructor for a class implementing the SaltDateAdapter interface.\n */\n DateAdapter: new (\n // biome-ignore lint/suspicious/noExplicitAny: date framework\n ...args: any\n ) => SaltDateAdapter<TDate, TLocale>;\n\n /**\n * The locale to be used for date formatting and manipulation.\n */\n locale?: TLocale;\n\n /**\n * The minimum date allowed for all date selections.\n * Defaults to January 1, 1900.\n */\n minDate?: TDate;\n\n /**\n * The maximum date allowed for all date selections.\n * Defaults to December 31, 2099.\n */\n maxDate?: TDate;\n}\n\nexport type LocalizationProviderContext<\n TDate extends DateFrameworkType = DateFrameworkType,\n> = {\n [K in keyof LocalizationProviderValue<TDate>]:\n | LocalizationProviderValue<TDate>[K]\n | null;\n};\n\n// Internal: consumers should use `useLocalization` or `<LocalizationProvider>`.\nconst LocalizationProviderContext =\n // biome-ignore lint/suspicious/noExplicitAny: date frameworl\n createContext<LocalizationProviderValue<any> | null>(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n LocalizationProviderContext.displayName = \"LocalizationProviderContext\";\n}\n\nexport const LocalizationProvider = function LocalizationProvider<\n TDate extends DateFrameworkType = DateFrameworkType,\n TLocale = undefined,\n>(props: LocalizationProviderProps<TDate, TLocale>) {\n const { children, DateAdapter, instance, locale, minDate, maxDate } = props;\n\n const dateAdapter = useMemo(() => {\n return new DateAdapter({\n locale,\n instance,\n });\n }, [DateAdapter, instance, locale]);\n\n const defaultDates: LocalizationProviderValue<TDate>[\"defaultDates\"] =\n useMemo(\n () => ({\n minDate: minDate || dateAdapter.date(MIN_DATE),\n maxDate: maxDate || dateAdapter.date(MAX_DATE),\n }),\n [dateAdapter, minDate, maxDate],\n );\n\n const contextValue: LocalizationProviderValue<TDate> = useMemo(() => {\n return {\n dateAdapter,\n defaultDates,\n };\n }, [dateAdapter, defaultDates]);\n\n return (\n <LocalizationProviderContext.Provider value={contextValue}>\n {children}\n </LocalizationProviderContext.Provider>\n );\n};\n\n/**\n * Custom hook to access the localization context.\n *\n * This hook provides access to the localization settings and utilities\n * within the `LocalizationProviderContext`. It should be used within a\n * component that is a descendant of `LocalizationProviderContext.Provider`.\n *\n * @template TDate - The type of the date object used in the localization context.\n *\n * @returns The localization provider value, which includes date manipulation and formatting utilities.\n *\n * @throws Will throw an error if the hook is used outside of a `LocalizationProviderContext.Provider`.\n */\nexport const useLocalization = <\n TDate extends DateFrameworkType = DateFrameworkType,\n>(): LocalizationProviderValue<TDate> => {\n const localization = useContext(LocalizationProviderContext);\n if (!localization) {\n throw new Error(\n \"useLocalization should be called inside LocalizationProviderContext.Provider\",\n );\n }\n return localization;\n};\n"],"names":["LocalizationProvider"],"mappings":";;;AAMA,MAAM,QAAA,GAAW,yBAAA;AACjB,MAAM,QAAA,GAAW,yBAAA;AAqEjB,MAAM,2BAAA;AAAA;AAAA,EAEJ,cAAqD,IAAI;AAAA,CAAA;AAE3D,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,2BAAA,CAA4B,WAAA,GAAc,6BAAA;AAC5C;AAEO,MAAM,oBAAA,GAAuB,SAASA,qBAAAA,CAG3C,KAAA,EAAkD;AAClD,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,MAAA,EAAQ,OAAA,EAAS,SAAQ,GAAI,KAAA;AAEtE,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,OAAO,IAAI,WAAA,CAAY;AAAA,MACrB,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AAElC,EAAA,MAAM,YAAA,GACJ,OAAA;AAAA,IACE,OAAO;AAAA,MACL,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC7C,OAAA,EAAS,OAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ;AAAA,KAC/C,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO;AAAA,GAChC;AAEF,EAAA,MAAM,YAAA,GAAiD,QAAQ,MAAM;AACnE,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAE9B,EAAA,2BACG,2BAAA,CAA4B,QAAA,EAA5B,EAAqC,KAAA,EAAO,cAC1C,QAAA,EACH,CAAA;AAEJ;AAeO,MAAM,kBAAkB,MAEU;AACvC,EAAA,MAAM,YAAA,GAAe,WAAW,2BAA2B,CAAA;AAC3D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;;;;"}
@@ -1,6 +1,6 @@
1
1
  export * from "./DatePicker";
2
2
  export * from "./DatePickerActions";
3
- export * from "./DatePickerContext";
3
+ export { type DatePickerState, type RangeDatePickerState, type SingleDatePickerState, type UseDatePickerContextProps, useDatePickerContext, } from "./DatePickerContext";
4
4
  export * from "./DatePickerHelperText";
5
5
  export * from "./DatePickerOverlay";
6
6
  export * from "./DatePickerOverlayProvider";
@@ -44,7 +44,6 @@ export interface LocalizationProviderProps<TDate extends DateFrameworkType = Dat
44
44
  export type LocalizationProviderContext<TDate extends DateFrameworkType = DateFrameworkType> = {
45
45
  [K in keyof LocalizationProviderValue<TDate>]: LocalizationProviderValue<TDate>[K] | null;
46
46
  };
47
- export declare const LocalizationProviderContext: import("react").Context<LocalizationProviderValue<any> | null>;
48
47
  export declare const LocalizationProvider: <TDate extends DateFrameworkType = DateFrameworkType, TLocale = undefined>(props: LocalizationProviderProps<TDate, TLocale>) => import("react/jsx-runtime").JSX.Element;
49
48
  /**
50
49
  * Custom hook to access the localization context.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salt-ds/date-components",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,8 +21,8 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "@floating-ui/react": "^0.26.28",
24
- "@salt-ds/core": "^1.60.0",
25
- "@salt-ds/date-adapters": "^0.1.0-alpha.7",
24
+ "@salt-ds/core": "^1.64.0",
25
+ "@salt-ds/date-adapters": "^1.0.0",
26
26
  "@salt-ds/icons": "^1.18.0",
27
27
  "@salt-ds/styles": "0.3.0",
28
28
  "@salt-ds/window": "0.1.1",