@krak-stack/registry 0.1.33 → 0.1.35

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 (43) hide show
  1. package/dist/components/ui/code-block.d.ts +1 -1
  2. package/dist/components/ui/code-block.js +6 -2
  3. package/dist/components/ui/copy-button.d.ts +1 -1
  4. package/dist/components/ui/copy-button.js +3 -1
  5. package/dist/components/ui/data-table.js +21 -12
  6. package/dist/components/ui/editing-locale-switcher.d.ts +1 -1
  7. package/dist/components/ui/editing-locale-switcher.js +8 -2
  8. package/dist/components/ui/effect-form.js +51 -35
  9. package/dist/components/ui/error-component.d.ts +1 -1
  10. package/dist/components/ui/error-component.js +6 -2
  11. package/dist/components/ui/file-picker.d.ts +1 -1
  12. package/dist/components/ui/file-picker.js +3 -1
  13. package/dist/components/ui/form.d.ts +12 -12
  14. package/dist/components/ui/form.js +25 -13
  15. package/dist/components/ui/google-map.d.ts +1 -1
  16. package/dist/components/ui/google-map.js +3 -1
  17. package/dist/components/ui/icon-input.d.ts +1 -1
  18. package/dist/components/ui/icon-input.js +9 -3
  19. package/dist/components/ui/krakstack-provider.d.ts +9 -0
  20. package/dist/components/ui/krakstack-provider.js +28 -0
  21. package/dist/components/ui/loading.d.ts +1 -1
  22. package/dist/components/ui/loading.js +3 -1
  23. package/dist/components/ui/locale-switcher.d.ts +2 -2
  24. package/dist/components/ui/locale-switcher.js +8 -2
  25. package/dist/components/ui/pagination.d.ts +1 -1
  26. package/dist/components/ui/pagination.js +3 -1
  27. package/dist/components/ui/search-menu.d.ts +1 -1
  28. package/dist/components/ui/search-menu.js +3 -1
  29. package/dist/components/ui/theme-switcher.d.ts +1 -1
  30. package/dist/components/ui/theme-switcher.js +3 -1
  31. package/dist/components/ui/virtualized-combobox.js +6 -2
  32. package/dist/lib/docs.js +10 -4
  33. package/dist/lib/docs.server.js +5 -0
  34. package/dist/lib/documentation-toolkit.js +5 -0
  35. package/dist/services/agent/client/index.js +10 -4
  36. package/dist/services/agent/client/widget.d.ts +1 -1
  37. package/dist/services/notification/client/index.js +5 -2
  38. package/dist/services/notification/client/notification-menu.d.ts +2 -2
  39. package/dist/services/notification/public.js +5 -2
  40. package/dist/services/opentelemetry/api.js +11 -2
  41. package/dist/services/opentelemetry/browser.d.ts +15 -7
  42. package/dist/services/opentelemetry/browser.js +62 -13
  43. package/package.json +5 -1
@@ -110,7 +110,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
110
110
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
111
111
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
112
112
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
113
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
113
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
114
114
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
115
115
  filePickerMessages?: FilePickerMessageTranslations;
116
116
  locale?: string;
@@ -122,7 +122,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
122
122
  locale?: string;
123
123
  messages?: FormMessageTranslations;
124
124
  }) => JSX.Element;
125
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
125
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
126
126
  filePickerMessages?: FilePickerMessageTranslations;
127
127
  label: string;
128
128
  locale?: string;
@@ -167,7 +167,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
167
167
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
168
168
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
169
169
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
170
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
170
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
171
171
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
172
172
  filePickerMessages?: FilePickerMessageTranslations;
173
173
  locale?: string;
@@ -179,7 +179,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
179
179
  locale?: string;
180
180
  messages?: FormMessageTranslations;
181
181
  }) => JSX.Element;
182
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
182
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
183
183
  filePickerMessages?: FilePickerMessageTranslations;
184
184
  label: string;
185
185
  locale?: string;
@@ -225,7 +225,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
225
225
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
226
226
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
227
227
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
228
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
228
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
229
229
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
230
230
  filePickerMessages?: FilePickerMessageTranslations;
231
231
  locale?: string;
@@ -237,7 +237,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
237
237
  locale?: string;
238
238
  messages?: FormMessageTranslations;
239
239
  }) => JSX.Element;
240
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
240
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
241
241
  filePickerMessages?: FilePickerMessageTranslations;
242
242
  label: string;
243
243
  locale?: string;
@@ -283,7 +283,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
283
283
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
284
284
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
285
285
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
286
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
286
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
287
287
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
288
288
  filePickerMessages?: FilePickerMessageTranslations;
289
289
  locale?: string;
@@ -295,7 +295,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
295
295
  locale?: string;
296
296
  messages?: FormMessageTranslations;
297
297
  }) => JSX.Element;
298
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
298
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
299
299
  filePickerMessages?: FilePickerMessageTranslations;
300
300
  label: string;
301
301
  locale?: string;
@@ -341,7 +341,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
341
341
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
342
342
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
343
343
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
344
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
344
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
345
345
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
346
346
  filePickerMessages?: FilePickerMessageTranslations;
347
347
  locale?: string;
@@ -353,7 +353,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
353
353
  locale?: string;
354
354
  messages?: FormMessageTranslations;
355
355
  }) => JSX.Element;
356
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
356
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
357
357
  filePickerMessages?: FilePickerMessageTranslations;
358
358
  label: string;
359
359
  locale?: string;
@@ -398,7 +398,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
398
398
  readonly MultiSelectField: (props: Omit<SelectFieldProps, "multiple">) => JSX.Element;
399
399
  readonly SearchableSelectField: <TData>({ description, label, multiple, ...props }: SearchableSelectFieldProps<TData>) => JSX.Element;
400
400
  readonly CheckboxField: (props: DefaultOptions) => JSX.Element;
401
- readonly FileField: ({ label, accept, filePickerMessages, locale, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
401
+ readonly FileField: ({ label, accept, filePickerMessages, locale: localeOverride, messages, onFileChange, required, }: Omit<DefaultOptions, "description"> & {
402
402
  accept: InputHTMLAttributes<HTMLInputElement>["accept"];
403
403
  filePickerMessages?: FilePickerMessageTranslations;
404
404
  locale?: string;
@@ -410,7 +410,7 @@ declare const useAppForm: <TFormData, TOnMount extends undefined | import("@tans
410
410
  locale?: string;
411
411
  messages?: FormMessageTranslations;
412
412
  }) => JSX.Element;
413
- readonly ImageField: ({ filePickerMessages, label, locale, messages, size, }: {
413
+ readonly ImageField: ({ filePickerMessages, label, locale: localeOverride, messages, size, }: {
414
414
  filePickerMessages?: FilePickerMessageTranslations;
415
415
  label: string;
416
416
  locale?: string;
@@ -451,6 +451,7 @@ function AttachmentGroup({ className, ...props }) {
451
451
  }
452
452
 
453
453
  // ../../src/components/ui/file-picker.tsx
454
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
454
455
  import { jsx as jsx7, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
455
456
  "use client";
456
457
  var messages = {
@@ -506,7 +507,7 @@ var FilePicker = ({
506
507
  id,
507
508
  image,
508
509
  invalid = false,
509
- locale = "en",
510
+ locale: localeOverride,
510
511
  messages: messages2,
511
512
  multiple = false,
512
513
  name,
@@ -517,6 +518,7 @@ var FilePicker = ({
517
518
  required,
518
519
  title
519
520
  }) => {
521
+ const locale = useKrakstackLocale(localeOverride);
520
522
  const labels = filePickerMessages(locale, messages2);
521
523
  const inputRef = useRef(null);
522
524
  const dragDepthRef = useRef(0);
@@ -951,6 +953,7 @@ function InputGroupInput({
951
953
  }
952
954
 
953
955
  // ../../src/components/ui/virtualized-combobox.tsx
956
+ import { useKrakstackLocale as useKrakstackLocale2 } from "@krak-stack/registry/krakstack-provider";
954
957
  import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
955
958
  "use client";
956
959
  var messages2 = {
@@ -1255,14 +1258,18 @@ var VirtualizedComboboxMultiple = (props) => {
1255
1258
  });
1256
1259
  };
1257
1260
  function VirtualizedCombobox(props) {
1261
+ const locale = useKrakstackLocale2(props.locale);
1258
1262
  return props.multiple ? /* @__PURE__ */ jsx12(VirtualizedComboboxMultiple, {
1259
- ...props
1263
+ ...props,
1264
+ locale
1260
1265
  }) : /* @__PURE__ */ jsx12(VirtualizedComboboxSingle, {
1261
- ...props
1266
+ ...props,
1267
+ locale
1262
1268
  });
1263
1269
  }
1264
1270
 
1265
1271
  // ../../src/components/ui/form.tsx
1272
+ import { useKrakstackLocale as useKrakstackLocale3 } from "@krak-stack/registry/krakstack-provider";
1266
1273
  import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
1267
1274
  var messages3 = {
1268
1275
  en: {
@@ -1301,6 +1308,7 @@ var formMessages = (locale = "en", translations) => ({
1301
1308
  ...translations?.[locale.split("-")[0] ?? locale],
1302
1309
  ...translations?.[locale]
1303
1310
  });
1311
+ var useFormMessages = (locale, translations) => formMessages(useKrakstackLocale3(locale), translations);
1304
1312
  var ErrorMessage = ({ text }) => {
1305
1313
  return /* @__PURE__ */ jsx13("em", {
1306
1314
  role: "alert",
@@ -1521,7 +1529,7 @@ var SelectField = ({
1521
1529
  });
1522
1530
  };
1523
1531
  var KeyValueField = (props) => {
1524
- const labels = formMessages(props.locale, props.messages);
1532
+ const labels = useFormMessages(props.locale, props.messages);
1525
1533
  const field = useFieldContext();
1526
1534
  const invalid = !field.state.meta.isValid;
1527
1535
  const keyValues = Object.entries(field.state.value ?? {});
@@ -1701,12 +1709,14 @@ var SearchableSelectField = ({
1701
1709
  multiple,
1702
1710
  ...props
1703
1711
  }) => {
1712
+ const locale = useKrakstackLocale3(props.locale);
1704
1713
  const field = useFieldContext();
1705
- const labels = virtualizedComboboxMessages(props.locale ?? "en", props.messages);
1714
+ const labels = virtualizedComboboxMessages(locale, props.messages);
1706
1715
  const invalid = !field.state.meta.isValid;
1707
1716
  const ariaLabel = Schema2.is(Schema2.String)(label) ? label : labels.search;
1708
1717
  const controlProps = {
1709
1718
  ...props,
1719
+ locale,
1710
1720
  ariaLabel,
1711
1721
  invalid,
1712
1722
  name: field.name
@@ -1737,11 +1747,12 @@ var FileField = ({
1737
1747
  label,
1738
1748
  accept,
1739
1749
  filePickerMessages: filePickerMessages2,
1740
- locale = "en",
1750
+ locale: localeOverride,
1741
1751
  messages: messages4,
1742
1752
  onFileChange,
1743
1753
  required = false
1744
1754
  }) => {
1755
+ const locale = useKrakstackLocale3(localeOverride);
1745
1756
  const labels = formMessages(locale, messages4);
1746
1757
  const field = useFieldContext();
1747
1758
  const invalid = !field.state.meta.isValid;
@@ -1790,10 +1801,11 @@ var FileField = ({
1790
1801
  var ImageField = ({
1791
1802
  filePickerMessages: filePickerMessages2,
1792
1803
  label,
1793
- locale = "en",
1804
+ locale: localeOverride,
1794
1805
  messages: messages4,
1795
1806
  size
1796
1807
  }) => {
1808
+ const locale = useKrakstackLocale3(localeOverride);
1797
1809
  const labels = formMessages(locale, messages4);
1798
1810
  const field = useFieldContext();
1799
1811
  const invalid = !field.state.meta.isValid;
@@ -1844,10 +1856,10 @@ var ImageField = ({
1844
1856
  });
1845
1857
  };
1846
1858
  var BlockNavigation = ({
1847
- locale = "en",
1859
+ locale,
1848
1860
  messages: messages4
1849
1861
  }) => {
1850
- const labels = formMessages(locale, messages4);
1862
+ const labels = useFormMessages(locale, messages4);
1851
1863
  const form = useFormContext();
1852
1864
  const shouldBlock = useStore(form.store, (formState) => formState.isDirty && !(formState.isSubmitting || formState.isSubmitted));
1853
1865
  return /* @__PURE__ */ jsx13(Block, {
@@ -1887,10 +1899,10 @@ var BlockNavigation = ({
1887
1899
  };
1888
1900
  var SubmitButton = ({
1889
1901
  children,
1890
- locale = "en",
1902
+ locale,
1891
1903
  messages: messages4
1892
1904
  }) => {
1893
- const labels = formMessages(locale, messages4);
1905
+ const labels = useFormMessages(locale, messages4);
1894
1906
  const form = useFormContext();
1895
1907
  return /* @__PURE__ */ jsx13(form.Subscribe, {
1896
1908
  selector: (formState) => [formState.isSubmitting],
@@ -1957,11 +1969,11 @@ var FieldWrapper = ({
1957
1969
  });
1958
1970
  };
1959
1971
  var RevertButton = ({
1960
- locale = "en",
1972
+ locale,
1961
1973
  messages: messages4,
1962
1974
  original
1963
1975
  }) => {
1964
- const labels = formMessages(locale, messages4);
1976
+ const labels = useFormMessages(locale, messages4);
1965
1977
  const field = useFieldContext();
1966
1978
  if (field.state.value !== original) {
1967
1979
  return /* @__PURE__ */ jsx13("div", {
@@ -96,5 +96,5 @@ export type GoogleMapsApi = {
96
96
  };
97
97
  };
98
98
  };
99
- export declare function GoogleMap({ apiKey, center, zoom, marker, radius, interactive, zoomControls, minZoom, maxZoom, className, messages: messageOverrides, locale, }: GoogleMapProps): import("react").JSX.Element;
99
+ export declare function GoogleMap({ apiKey, center, zoom, marker, radius, interactive, zoomControls, minZoom, maxZoom, className, messages: messageOverrides, locale: localeOverride, }: GoogleMapProps): import("react").JSX.Element;
100
100
  export {};
@@ -7,6 +7,7 @@ import { Schema } from "effect";
7
7
  import { cn } from "cn";
8
8
 
9
9
  // ../../src/components/ui/google-map.tsx
10
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
12
  var googleMapsScriptId = "krak-stack-google-maps-script";
12
13
  var googleMapsCallbackName = "__krakStackGoogleMapsInit";
@@ -107,8 +108,9 @@ function GoogleMap({
107
108
  maxZoom = 20,
108
109
  className,
109
110
  messages: messageOverrides,
110
- locale = "en"
111
+ locale: localeOverride
111
112
  }) {
113
+ const locale = useKrakstackLocale(localeOverride);
112
114
  const mapElementRef = useRef(null);
113
115
  const apiRef = useRef(null);
114
116
  const mapRef = useRef(null);
@@ -54,5 +54,5 @@ type IconInputProps = {
54
54
  onValueChange: (value: string) => void;
55
55
  value: string;
56
56
  };
57
- export declare function IconInput({ collection, disabled, id, locale, messages, onValueChange, value, }: IconInputProps): import("react").JSX.Element;
57
+ export declare function IconInput({ collection, disabled, id, locale: localeOverride, messages, onValueChange, value, }: IconInputProps): import("react").JSX.Element;
58
58
  export {};
@@ -130,6 +130,7 @@ function InputGroupInput({
130
130
  }
131
131
 
132
132
  // ../../src/components/ui/virtualized-combobox.tsx
133
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
133
134
  import { jsx as jsx4, jsxs } from "react/jsx-runtime";
134
135
  "use client";
135
136
  var messages = {
@@ -434,14 +435,18 @@ var VirtualizedComboboxMultiple = (props) => {
434
435
  });
435
436
  };
436
437
  function VirtualizedCombobox(props) {
438
+ const locale = useKrakstackLocale(props.locale);
437
439
  return props.multiple ? /* @__PURE__ */ jsx4(VirtualizedComboboxMultiple, {
438
- ...props
440
+ ...props,
441
+ locale
439
442
  }) : /* @__PURE__ */ jsx4(VirtualizedComboboxSingle, {
440
- ...props
443
+ ...props,
444
+ locale
441
445
  });
442
446
  }
443
447
 
444
448
  // ../../src/components/ui/icon-input.tsx
449
+ import { useKrakstackLocale as useKrakstackLocale2 } from "@krak-stack/registry/krakstack-provider";
445
450
  import { jsx as jsx5, jsxs as jsxs2, Fragment } from "react/jsx-runtime";
446
451
  var IconifySearchResponse = Schema.Struct({
447
452
  icons: Schema.Array(Schema.String)
@@ -490,11 +495,12 @@ function IconInput({
490
495
  collection = "lucide",
491
496
  disabled,
492
497
  id,
493
- locale = "en",
498
+ locale: localeOverride,
494
499
  messages: messages2,
495
500
  onValueChange,
496
501
  value
497
502
  }) {
503
+ const locale = useKrakstackLocale2(localeOverride);
498
504
  const [isOpen, setIsOpen] = useState(false);
499
505
  const [query, setQuery] = useState("");
500
506
  const deferredQuery = useDeferredValue(query);
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from "react";
2
+ export type KrakstackProviderProps = {
3
+ children: ReactNode;
4
+ locale: string;
5
+ locales?: readonly string[];
6
+ };
7
+ export declare const KrakstackProvider: ({ children, locale, locales, }: KrakstackProviderProps) => import("react").JSX.Element;
8
+ export declare const useKrakstackLocale: (locale?: string) => string;
9
+ export declare const useKrakstackLocales: (locales?: readonly string[]) => readonly string[];
@@ -0,0 +1,28 @@
1
+ // ../../src/components/ui/krakstack-provider.tsx
2
+ import { createContext, useContext } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ var KrakstackContext = createContext({
5
+ locale: "en",
6
+ locales: ["en"]
7
+ });
8
+ var KrakstackProvider = ({
9
+ children,
10
+ locale,
11
+ locales = [locale]
12
+ }) => /* @__PURE__ */ jsx(KrakstackContext.Provider, {
13
+ value: { locale, locales },
14
+ children
15
+ });
16
+ var useKrakstackLocale = (locale) => {
17
+ const context = useContext(KrakstackContext);
18
+ return locale ?? context.locale;
19
+ };
20
+ var useKrakstackLocales = (locales) => {
21
+ const context = useContext(KrakstackContext);
22
+ return locales ?? context.locales;
23
+ };
24
+ export {
25
+ KrakstackProvider,
26
+ useKrakstackLocale,
27
+ useKrakstackLocales
28
+ };
@@ -3,7 +3,7 @@ export type LoadingMessages = {
3
3
  loading: string;
4
4
  };
5
5
  export type LoadingMessageTranslations = Partial<Record<string, Partial<LoadingMessages>>>;
6
- export declare function Loading({ className, label, locale, messages, variant, }: {
6
+ export declare function Loading({ className, label, locale: localeOverride, messages, variant, }: {
7
7
  className?: string | undefined;
8
8
  label?: string | undefined;
9
9
  locale?: string | undefined;
@@ -5,6 +5,7 @@ import { Loader2 } from "lucide-react";
5
5
  import { cn } from "cn";
6
6
 
7
7
  // ../../src/components/ui/loading.tsx
8
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
  var labels = {
10
11
  en: {
@@ -18,10 +19,11 @@ var loadingLabel = (locale, messages) => messages?.[locale]?.loading ?? messages
18
19
  function Loading({
19
20
  className,
20
21
  label,
21
- locale = "en",
22
+ locale: localeOverride,
22
23
  messages,
23
24
  variant = "inline"
24
25
  }) {
26
+ const locale = useKrakstackLocale(localeOverride);
25
27
  return /* @__PURE__ */ jsxs("div", {
26
28
  className: cn("text-muted-foreground flex items-center justify-center gap-2 text-sm", variant === "centered" && "min-h-[50svh] w-full", className),
27
29
  children: [
@@ -2,10 +2,10 @@ export declare const locales: readonly ["en", "fr"];
2
2
  export type LocaleSwitcherMessages = Partial<Record<string, string>>;
3
3
  export type LocaleSwitcherMessageTranslations = Partial<Record<string, LocaleSwitcherMessages>>;
4
4
  type LocaleSwitcherProps = {
5
- locale: string;
5
+ locale?: string;
6
6
  locales?: readonly string[];
7
7
  messages?: LocaleSwitcherMessageTranslations;
8
8
  onLocaleChange: (locale: string) => void;
9
9
  };
10
- export declare const LocaleSwitcher: ({ locale, locales: localeOptions, messages, onLocaleChange, }: LocaleSwitcherProps) => import("react").JSX.Element;
10
+ export declare const LocaleSwitcher: ({ locale: localeOverride, locales: localeOverrides, messages, onLocaleChange, }: LocaleSwitcherProps) => import("react").JSX.Element;
11
11
  export {};
@@ -136,6 +136,10 @@ function DropdownMenuRadioItem({
136
136
  // ../../src/components/ui/locale-switcher.tsx
137
137
  import { Languages } from "lucide-react";
138
138
  import { Option, Schema } from "effect";
139
+ import {
140
+ useKrakstackLocale,
141
+ useKrakstackLocales
142
+ } from "@krak-stack/registry/krakstack-provider";
139
143
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
140
144
  var locales = ["en", "fr"];
141
145
  var messages = {
@@ -160,11 +164,13 @@ var localeMessages = (locale, translations) => {
160
164
  };
161
165
  };
162
166
  var LocaleSwitcher = ({
163
- locale,
164
- locales: localeOptions = locales,
167
+ locale: localeOverride,
168
+ locales: localeOverrides,
165
169
  messages: messages2,
166
170
  onLocaleChange
167
171
  }) => {
172
+ const locale = useKrakstackLocale(localeOverride);
173
+ const localeOptions = useKrakstackLocales(localeOverrides);
168
174
  const labels = localeMessages(locale, messages2);
169
175
  const LocaleSchema = Schema.String.check(Schema.makeFilter((value) => localeOptions.includes(value))).annotate({ identifier: "Locale" });
170
176
  return /* @__PURE__ */ jsxs2(DropdownMenu, {
@@ -42,4 +42,4 @@ export type PaginationProps = {
42
42
  showResults?: boolean | undefined;
43
43
  totalRows: number;
44
44
  };
45
- export declare function Pagination({ compact, locale, messages: messageOverrides, onPageChange, onPageSizeChange, page, pageCount, pageSize, pageSizes, selectedRows, showResults, totalRows, }: PaginationProps): import("react").JSX.Element;
45
+ export declare function Pagination({ compact, locale: localeOverride, messages: messageOverrides, onPageChange, onPageSizeChange, page, pageCount, pageSize, pageSizes, selectedRows, showResults, totalRows, }: PaginationProps): import("react").JSX.Element;
@@ -183,6 +183,7 @@ function SelectScrollDownButton({
183
183
  }
184
184
 
185
185
  // ../../src/components/ui/pagination.tsx
186
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
186
187
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
187
188
  var messages = {
188
189
  en: {
@@ -213,7 +214,7 @@ var paginationMessages = (locale = "en", translations) => ({
213
214
  });
214
215
  function Pagination({
215
216
  compact = false,
216
- locale = "en",
217
+ locale: localeOverride,
217
218
  messages: messageOverrides,
218
219
  onPageChange,
219
220
  onPageSizeChange,
@@ -225,6 +226,7 @@ function Pagination({
225
226
  showResults = true,
226
227
  totalRows
227
228
  }) {
229
+ const locale = useKrakstackLocale(localeOverride);
228
230
  const labels = paginationMessages(locale, messageOverrides);
229
231
  const pageSizeId = useId();
230
232
  const canGoBack = page > 0;
@@ -33,4 +33,4 @@ export type SearchMenuProps = {
33
33
  onQueryChange?: (query: string) => void;
34
34
  shouldFilter?: boolean;
35
35
  };
36
- export declare function SearchMenu({ groups, locale, title, description, placeholder, inputPlaceholder, emptyMessage, messages, shortcutLabel, className, open, onOpenChange, onSelect, query, onQueryChange, shouldFilter, }: SearchMenuProps): import("react").JSX.Element;
36
+ export declare function SearchMenu({ groups, locale: localeOverride, title, description, placeholder, inputPlaceholder, emptyMessage, messages, shortcutLabel, className, open, onOpenChange, onSelect, query, onQueryChange, shouldFilter, }: SearchMenuProps): import("react").JSX.Element;
@@ -253,6 +253,7 @@ function CommandShortcut({
253
253
  }
254
254
 
255
255
  // ../../src/components/ui/search-menu.tsx
256
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
256
257
  import { jsx as jsx4, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
257
258
  var messages = {
258
259
  en: {
@@ -277,7 +278,7 @@ var searchMenuMessages = (locale, translations) => ({
277
278
  });
278
279
  function SearchMenu({
279
280
  groups,
280
- locale = "en",
281
+ locale: localeOverride,
281
282
  title,
282
283
  description,
283
284
  placeholder,
@@ -293,6 +294,7 @@ function SearchMenu({
293
294
  onQueryChange,
294
295
  shouldFilter
295
296
  }) {
297
+ const locale = useKrakstackLocale(localeOverride);
296
298
  const labels = searchMenuMessages(locale, messages2);
297
299
  const resolvedTitle = title ?? labels.title;
298
300
  const resolvedDescription = description ?? labels.description;
@@ -27,5 +27,5 @@ type ThemeSwitcherProps = {
27
27
  };
28
28
  export declare const ThemeProvider: ({ children, initialTheme, scriptDisabled, }: ThemeProviderProps) => import("react").JSX.Element;
29
29
  export declare const useTheme: () => ThemeProviderState;
30
- export declare const ThemeSwitcher: ({ locale, messages, options, value, onChange, }: ThemeSwitcherProps) => import("react").JSX.Element;
30
+ export declare const ThemeSwitcher: ({ locale: localeOverride, messages, options, value, onChange, }: ThemeSwitcherProps) => import("react").JSX.Element;
31
31
  export {};
@@ -146,6 +146,7 @@ function DropdownMenuRadioItem({
146
146
  }
147
147
 
148
148
  // ../../src/components/ui/theme-switcher.tsx
149
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
149
150
  import { jsx as jsx3, jsxs as jsxs2, Fragment } from "react/jsx-runtime";
150
151
  var messages = {
151
152
  en: {
@@ -263,12 +264,13 @@ var useTheme = () => {
263
264
  return context;
264
265
  };
265
266
  var ThemeSwitcher = ({
266
- locale = "en",
267
+ locale: localeOverride,
267
268
  messages: messages2,
268
269
  options = themes,
269
270
  value,
270
271
  onChange
271
272
  }) => {
273
+ const locale = useKrakstackLocale(localeOverride);
272
274
  const labels = themeMessages(locale, messages2);
273
275
  return /* @__PURE__ */ jsxs2(DropdownMenu, {
274
276
  children: [
@@ -116,6 +116,7 @@ function InputGroupInput({
116
116
  }
117
117
 
118
118
  // ../../src/components/ui/virtualized-combobox.tsx
119
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
119
120
  import { jsx as jsx4, jsxs } from "react/jsx-runtime";
120
121
  "use client";
121
122
  var messages = {
@@ -420,10 +421,13 @@ var VirtualizedComboboxMultiple = (props) => {
420
421
  });
421
422
  };
422
423
  function VirtualizedCombobox(props) {
424
+ const locale = useKrakstackLocale(props.locale);
423
425
  return props.multiple ? /* @__PURE__ */ jsx4(VirtualizedComboboxMultiple, {
424
- ...props
426
+ ...props,
427
+ locale
425
428
  }) : /* @__PURE__ */ jsx4(VirtualizedComboboxSingle, {
426
- ...props
429
+ ...props,
430
+ locale
427
431
  });
428
432
  }
429
433
  export {
package/dist/lib/docs.js CHANGED
@@ -208,6 +208,7 @@ function Button({
208
208
  // ../../src/components/ui/copy-button.tsx
209
209
  import { Check, Copy, TriangleAlert } from "lucide-react";
210
210
  import { useEffect, useRef, useState } from "react";
211
+ import { useKrakstackLocale } from "@krak-stack/registry/krakstack-provider";
211
212
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
212
213
  var messages = {
213
214
  en: { copy: "Copy", copied: "Copied", copyFailed: "Copy failed" },
@@ -222,7 +223,7 @@ function CopyButton({
222
223
  value,
223
224
  valueDescription,
224
225
  copyVariant = "default",
225
- locale = "en",
226
+ locale: localeOverride,
226
227
  messages: messages2,
227
228
  onCopied,
228
229
  onCopyError,
@@ -232,6 +233,7 @@ function CopyButton({
232
233
  "aria-label": ariaLabel,
233
234
  ...props
234
235
  }) {
236
+ const locale = useKrakstackLocale(localeOverride);
235
237
  const [copyState, setCopyState] = useState("idle");
236
238
  const copyTimeout = useRef(undefined);
237
239
  const labels = copyButtonMessages(locale, messages2);
@@ -295,6 +297,7 @@ import { highlight } from "@tanstack/highlight";
295
297
  import { createThemeCss } from "@tanstack/highlight/theme";
296
298
  import { githubDarkTheme } from "@tanstack/highlight/themes/github-dark";
297
299
  import { githubLightTheme } from "@tanstack/highlight/themes/github-light";
300
+ import { useKrakstackLocale as useKrakstackLocale2 } from "@krak-stack/registry/krakstack-provider";
298
301
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
299
302
  var themeCss = `${createThemeCss({
300
303
  light: githubLightTheme,
@@ -334,9 +337,10 @@ var codeBlockMessages = (locale = "en", translations) => ({
334
337
  function CodeBlock({
335
338
  code,
336
339
  language = "text",
337
- locale = "en",
340
+ locale: localeOverride,
338
341
  messages: messages3
339
342
  }) {
343
+ const locale = useKrakstackLocale2(localeOverride);
340
344
  const normalizedLanguage = language.toLowerCase() || "text";
341
345
  const highlighted = highlight(code, { lang: normalizedLanguage });
342
346
  const labels = codeBlockMessages(locale, messages3);
@@ -377,7 +381,7 @@ var MarkdownContent = ({
377
381
  className,
378
382
  codeBlocks,
379
383
  html,
380
- locale = "en",
384
+ locale,
381
385
  messages: messages3
382
386
  }) => {
383
387
  const content = [];
@@ -640,6 +644,7 @@ function CommandShortcut({
640
644
  }
641
645
 
642
646
  // ../../src/components/ui/search-menu.tsx
647
+ import { useKrakstackLocale as useKrakstackLocale3 } from "@krak-stack/registry/krakstack-provider";
643
648
  import { jsx as jsx9, jsxs as jsxs6, Fragment as Fragment2 } from "react/jsx-runtime";
644
649
  var messages3 = {
645
650
  en: {
@@ -664,7 +669,7 @@ var searchMenuMessages = (locale, translations) => ({
664
669
  });
665
670
  function SearchMenu({
666
671
  groups,
667
- locale = "en",
672
+ locale: localeOverride,
668
673
  title,
669
674
  description,
670
675
  placeholder,
@@ -680,6 +685,7 @@ function SearchMenu({
680
685
  onQueryChange,
681
686
  shouldFilter
682
687
  }) {
688
+ const locale = useKrakstackLocale3(localeOverride);
683
689
  const labels = searchMenuMessages(locale, messages4);
684
690
  const resolvedTitle = title ?? labels.title;
685
691
  const resolvedDescription = description ?? labels.description;