@alfadocs/ui-kit-debug 0.24.0 → 0.25.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/dist/_chunks/{card-CWzuTLYE.js → card-C353dU-H.js} +21 -13
- package/dist/_chunks/{card-CWzuTLYE.js.map → card-C353dU-H.js.map} +1 -1
- package/dist/_chunks/carousel.agent-DnPiqijR.js +1733 -0
- package/dist/_chunks/carousel.agent-DnPiqijR.js.map +1 -0
- package/dist/_chunks/{contact-card-DTQUMetD.js → contact-card-CjG7c-1q.js} +2 -2
- package/dist/_chunks/{contact-card-DTQUMetD.js.map → contact-card-CjG7c-1q.js.map} +1 -1
- package/dist/_chunks/description-list-Bsga4IW8.js +309 -0
- package/dist/_chunks/description-list-Bsga4IW8.js.map +1 -0
- package/dist/_chunks/{locale-picker-CYBhgSHR.js → locale-picker-BxEUUPW7.js} +212 -149
- package/dist/_chunks/locale-picker-BxEUUPW7.js.map +1 -0
- package/dist/_chunks/{timeline-Czeqr3HF.js → timeline-jmd7lfDf.js} +19 -12
- package/dist/_chunks/{timeline-Czeqr3HF.js.map → timeline-jmd7lfDf.js.map} +1 -1
- package/dist/_chunks/{workflow-map-712GL-8u.js → workflow-map-BR6txfFX.js} +2 -2
- package/dist/_chunks/{workflow-map-712GL-8u.js.map → workflow-map-BR6txfFX.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/carousel/carousel.d.ts +21 -0
- package/dist/components/carousel/carousel.d.ts.map +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/contact-card/index.js +1 -1
- package/dist/components/description-list/description-list.d.ts +40 -0
- package/dist/components/description-list/description-list.d.ts.map +1 -1
- package/dist/components/description-list/index.d.ts +1 -1
- package/dist/components/description-list/index.d.ts.map +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/header-settings/index.js +123 -96
- package/dist/components/header-settings/index.js.map +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timeline/timeline.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/index.js +6 -6
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/carousel.agent-CQPFfppK.js +0 -1696
- package/dist/_chunks/carousel.agent-CQPFfppK.js.map +0 -1
- package/dist/_chunks/description-list-y7Hk51KI.js +0 -191
- package/dist/_chunks/description-list-y7Hk51KI.js.map +0 -1
- package/dist/_chunks/locale-picker-CYBhgSHR.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale-picker-CYBhgSHR.js","sources":["../../src/i18n/locale-meta.ts","../../src/components/locale-picker/locale-picker.agent.ts","../../src/components/locale-picker/locale-picker.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Locale metadata registry. */\n/* */\n/* Single source of truth for human-facing locale information — native */\n/* name, English name, flag emoji, and writing direction. Consumed by */\n/* LocalePicker / HeaderSettings to render the language switcher. */\n/* */\n/* Keys must match `LOCALES_WITH_BUNDLES` from `./resources` 1:1; the */\n/* `locale-meta.test.ts` parity check fails the build if a code is */\n/* added to one and not the other. */\n/* */\n/* Flag emojis use the Regional Indicator pair convention — a few of */\n/* the codes are language tags rather than country tags (en, ar, hi); */\n/* the flag chosen is the \"default-region\" the kit ships marketing */\n/* surfaces in. Consumers that need a different region flag (e.g. */\n/* British vs. American English) can override via `LOCALE_META[code]`. */\n/* -------------------------------------------------------------------- */\n\nimport { LOCALES_WITH_BUNDLES } from './resources';\n\n/** Reading direction. Mirrors the shape of `hooks/use-locale.ts#LocaleDir`. */\nexport type LocaleDir = 'ltr' | 'rtl';\n\n/** IETF locale tag from the kit's bundled set. */\nexport type Locale = (typeof LOCALES_WITH_BUNDLES)[number];\n\nexport interface LocaleMetaEntry {\n /** IETF locale tag (matches the key in `LOCALES_WITH_BUNDLES`). */\n code: Locale;\n /** Endonym — the locale's name in its own language (\"Italiano\", \"العربية\"). */\n nativeName: string;\n /** Exonym — the locale's name in English (\"Italian\", \"Arabic\"). */\n englishName: string;\n /** Regional-indicator flag emoji. Default-region per the comment above. */\n flag: string;\n /** Reading direction. */\n dir: LocaleDir;\n}\n\n/**\n * Canonical metadata for every locale shipped in `LOCALES_WITH_BUNDLES`.\n * Order matches the bundled-locales array so iteration is stable.\n */\nexport const LOCALE_META: Record<Locale, LocaleMetaEntry> = {\n en: {\n code: 'en',\n nativeName: 'English',\n englishName: 'English',\n flag: '🇬🇧',\n dir: 'ltr',\n },\n it: {\n code: 'it',\n nativeName: 'Italiano',\n englishName: 'Italian',\n flag: '🇮🇹',\n dir: 'ltr',\n },\n de: {\n code: 'de',\n nativeName: 'Deutsch',\n englishName: 'German',\n flag: '🇩🇪',\n dir: 'ltr',\n },\n ar: {\n code: 'ar',\n nativeName: 'العربية',\n englishName: 'Arabic',\n flag: '🇸🇦',\n dir: 'rtl',\n },\n fr: {\n code: 'fr',\n nativeName: 'Français',\n englishName: 'French',\n flag: '🇫🇷',\n dir: 'ltr',\n },\n es: {\n code: 'es',\n nativeName: 'Español',\n englishName: 'Spanish',\n flag: '🇪🇸',\n dir: 'ltr',\n },\n pt: {\n code: 'pt',\n nativeName: 'Português',\n englishName: 'Portuguese',\n flag: '🇵🇹',\n dir: 'ltr',\n },\n nl: {\n code: 'nl',\n nativeName: 'Nederlands',\n englishName: 'Dutch',\n flag: '🇳🇱',\n dir: 'ltr',\n },\n ro: {\n code: 'ro',\n nativeName: 'Română',\n englishName: 'Romanian',\n flag: '🇷🇴',\n dir: 'ltr',\n },\n sq: {\n code: 'sq',\n nativeName: 'Shqip',\n englishName: 'Albanian',\n flag: '🇦🇱',\n dir: 'ltr',\n },\n tr: {\n code: 'tr',\n nativeName: 'Türkçe',\n englishName: 'Turkish',\n flag: '🇹🇷',\n dir: 'ltr',\n },\n pl: {\n code: 'pl',\n nativeName: 'Polski',\n englishName: 'Polish',\n flag: '🇵🇱',\n dir: 'ltr',\n },\n sv: {\n code: 'sv',\n nativeName: 'Svenska',\n englishName: 'Swedish',\n flag: '🇸🇪',\n dir: 'ltr',\n },\n ru: {\n code: 'ru',\n nativeName: 'Русский',\n englishName: 'Russian',\n flag: '🇷🇺',\n dir: 'ltr',\n },\n el: {\n code: 'el',\n nativeName: 'Ελληνικά',\n englishName: 'Greek',\n flag: '🇬🇷',\n dir: 'ltr',\n },\n ja: {\n code: 'ja',\n nativeName: '日本語',\n englishName: 'Japanese',\n flag: '🇯🇵',\n dir: 'ltr',\n },\n zh: {\n code: 'zh',\n nativeName: '中文',\n englishName: 'Chinese',\n flag: '🇨🇳',\n dir: 'ltr',\n },\n hi: {\n code: 'hi',\n nativeName: 'हिन्दी',\n englishName: 'Hindi',\n flag: '🇮🇳',\n dir: 'ltr',\n },\n};\n\n/**\n * Ordered list of locale metadata entries, derived directly from\n * `LOCALES_WITH_BUNDLES`. Use this for rendering pickers / menus — it\n * preserves the canonical kit ordering (canonical Italian first after\n * English source, then the supported set).\n */\nexport const LOCALE_LIST: readonly LocaleMetaEntry[] = LOCALES_WITH_BUNDLES.map(\n (code) => LOCALE_META[code],\n);\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — LocalePicker. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { LocalePickerHandle } from './locale-picker';\n\nexport const localePickerAgent: AgentAdapter<LocalePickerHandle> = {\n id: 'locale-picker',\n capabilities: ['view_change'],\n state: {},\n actions: {\n set_locale: {\n safety: 'write',\n argsType: '{ locale: string }',\n descriptionKey: 'ui.agent.localePicker.actions.setLocale',\n description: 'Switch the active locale to the given IETF tag.',\n invoke: (handle, args: { locale: string }) => {\n // The handle's own implementation gates against\n // `LOCALES_WITH_BUNDLES`, so a tag the kit doesn't ship is a\n // no-op rather than a runtime crash.\n handle.setLocale(args.locale);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'locale-picker',\n description: 'Marks the LocalePicker wrapper.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type Ref,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Check, Globe } from 'lucide-react';\nimport { Command, defaultFilter } from 'cmdk';\nimport { IconButton } from '../button/icon-button';\nimport { Popover } from '../popover/popover';\nimport { LOCALE_LIST, LOCALE_META, type Locale } from '../../i18n/locale-meta';\nimport { LOCALES_WITH_BUNDLES } from '../../i18n/config';\nimport { useLocale } from '../../hooks/use-locale';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { localePickerAgent } from './locale-picker.agent';\n\n/* ------------------------------------------------------------------ */\n/* Persistence + browser-locale detection */\n/* */\n/* The first mount of a LocalePicker after a fresh page load runs a */\n/* one-shot detection: if no locale has ever been persisted, read */\n/* navigator.language, normalise to the base tag (`it-IT` → `it`), */\n/* and adopt it if the kit ships a matching bundle. Fall back to */\n/* `en` if not. Result is persisted so a subsequent page load */\n/* respects the user choice without re-detecting. */\n/* */\n/* Module-level flag — the detection must fire once per app */\n/* lifecycle, not once per LocalePicker instance, since HeaderSettings */\n/* + a standalone picker can both be mounted simultaneously. */\n/* ------------------------------------------------------------------ */\n\nexport const LOCALE_STORAGE_KEY = 'alfadocs-ui.locale';\n\nlet detectionFired = false;\n\nfunction isSupportedLocale(value: unknown): value is Locale {\n return (\n typeof value === 'string' &&\n (LOCALES_WITH_BUNDLES as readonly string[]).includes(value)\n );\n}\n\nfunction safeReadStorage(key: string): string | null {\n if (typeof window === 'undefined') return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeWriteStorage(key: string, value: string): void {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* Storage can throw in private mode / when quota is exceeded — the\n in-memory state is the source of truth. Same silent-fail shape\n as use-theme.ts. */\n }\n}\n\nfunction detectBrowserLocale(): Locale {\n if (typeof navigator === 'undefined') return 'en';\n const raw = navigator.language;\n if (!raw) return 'en';\n const base = raw.toLowerCase().split('-')[0];\n return isSupportedLocale(base) ? base : 'en';\n}\n\nfunction applyDocumentAttrs(locale: Locale): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.lang = locale;\n root.dir = LOCALE_META[locale].dir;\n}\n\n/* ------------------------------------------------------------------ */\n/* Shared state hook */\n/* */\n/* Centralises the setLocale wrapper so both the standalone picker */\n/* and the inline `LocalePicker.SearchList` share one source of truth: */\n/* 1. delegate to `useLocale().setLocale` (the i18next change) */\n/* 2. set `document.documentElement.dir` + `lang` */\n/* 3. persist to localStorage at `alfadocs-ui.locale` */\n/* ------------------------------------------------------------------ */\n\ninterface LocalePickerState {\n locale: Locale;\n setLocale: (next: Locale) => void;\n}\n\nfunction useLocalePickerState(): LocalePickerState {\n const { locale: rawLocale, setLocale: setLocaleI18n } = useLocale();\n\n // Coerce the i18next-reported locale to the supported set so consumers\n // never see an un-bundled tag (e.g. when the host app pre-loads\n // `en-US` before the kit's resources land).\n const locale: Locale = isSupportedLocale(rawLocale) ? rawLocale : 'en';\n\n const setLocale = useCallback(\n (next: Locale) => {\n if (!isSupportedLocale(next)) return;\n void setLocaleI18n(next);\n applyDocumentAttrs(next);\n safeWriteStorage(LOCALE_STORAGE_KEY, next);\n },\n [setLocaleI18n],\n );\n\n // One-shot detection on first LocalePicker mount per app lifecycle.\n useEffect(() => {\n if (detectionFired) return;\n detectionFired = true;\n const stored = safeReadStorage(LOCALE_STORAGE_KEY);\n if (isSupportedLocale(stored)) {\n // User-chosen value persists — keep i18next + document in sync.\n if (stored !== rawLocale) void setLocaleI18n(stored);\n applyDocumentAttrs(stored);\n return;\n }\n const detected = detectBrowserLocale();\n void setLocaleI18n(detected);\n applyDocumentAttrs(detected);\n safeWriteStorage(LOCALE_STORAGE_KEY, detected);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional one-shot detection\n }, []);\n\n return { locale, setLocale };\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n variant: {\n icon: '',\n compact: '',\n },\n },\n defaultVariants: { variant: 'icon' },\n});\n\nconst compactTriggerClasses = [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:px-[var(--spacing-sm)]',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:bg-transparent ds:text-foreground',\n 'ds:hover:bg-muted',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n 'type-body-sm',\n].join(' ');\n\nconst popoverContentClasses = [\n 'ds:w-[18rem] ds:rounded-[var(--radius-md)]',\n 'ds:bg-background ds:text-foreground ds:border ds:border-border',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:overflow-hidden',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type LocalePickerVariant = 'icon' | 'compact';\n\nexport interface LocalePickerProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n variant?: LocalePickerVariant;\n /**\n * Controlled escape hatch — when omitted the picker reads/writes\n * `useLocale()` directly so a bare `<LocalePicker />` works with no\n * wiring. Pass both to opt into controlled mode.\n */\n value?: Locale;\n onValueChange?: (next: Locale) => void;\n /** Disable interaction (greys out the trigger). */\n disabled?: boolean;\n /** Mark as busy (kept open / focusable but read-only). */\n loading?: boolean;\n}\n\n/**\n * Curated imperative handle for agent / external automation. The\n * `setLocale` parameter is widened to `string` (rather than the\n * narrower `Locale`) so untyped agent inputs don't have to thread the\n * `LOCALES_WITH_BUNDLES` constraint at the call site — the\n * implementation validates internally and no-ops on an unsupported\n * tag.\n */\nexport interface LocalePickerHandle {\n setLocale: (next: string) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* LocalePicker.SearchList — the inline searchable list */\n/* */\n/* HeaderSettings renders this directly inside its DropdownMenu so the */\n/* same UX is reused without nesting another popover. Standalone the */\n/* root component renders this same widget inside a Popover. */\n/* ------------------------------------------------------------------ */\n\nexport interface LocalePickerSearchListProps {\n /** Active locale. Defaults to the shared store. */\n value?: Locale;\n /**\n * Fires after a successful selection. Defaults to the shared setter\n * (delegates to useLocale, persists, updates document.dir/lang).\n */\n onValueChange?: (next: Locale) => void;\n /** Optional id for the search input (axe `aria-labelledby` chain). */\n inputId?: string;\n /** Disable the input + list interactions. */\n disabled?: boolean;\n /** Mark as busy (read-only). */\n loading?: boolean;\n className?: string;\n}\n\nconst searchListVariants = cva('ds:flex ds:flex-col', {\n variants: {\n loading: {\n true: 'ds:opacity-60 ds:pointer-events-none',\n false: '',\n },\n },\n defaultVariants: { loading: false },\n});\n\nexport const LocalePickerSearchList = forwardRef<\n HTMLDivElement,\n LocalePickerSearchListProps\n>(\n (\n {\n value: valueProp,\n onValueChange,\n inputId: inputIdProp,\n disabled = false,\n loading = false,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const store = useLocalePickerState();\n const value = valueProp ?? store.locale;\n const generatedId = useId();\n const inputId = inputIdProp ?? `${generatedId}-search`;\n const [search, setSearch] = useState('');\n\n const handleSelect = useCallback(\n (code: string) => {\n if (!isSupportedLocale(code) || disabled || loading) return;\n if (onValueChange) {\n onValueChange(code);\n } else {\n store.setLocale(code);\n }\n },\n [disabled, loading, onValueChange, store],\n );\n\n return (\n <div\n ref={ref}\n className={[searchListVariants({ loading }), className]\n .filter(Boolean)\n .join(' ')}\n data-component=\"locale-picker-search-list\"\n >\n <Command\n label={t('navigation.localePicker.commandLabel')}\n // Defer to cmdk's defaultFilter — it ranks against both the\n // Item's `value` (the locale code) and `keywords` (the\n // native + English names), which is exactly the haystack we\n // want users to be able to match against. The Item's `value`\n // alone wouldn't surface \"jap\" → 日本語 because the code is\n // `ja`; the keyword \"Japanese\" handles that match.\n filter={defaultFilter}\n shouldFilter\n >\n <div\n className={[\n 'ds:flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:border-b ds:border-border ds:px-[var(--spacing-sm)]',\n 'ds:py-[var(--spacing-xs)]',\n ].join(' ')}\n >\n <Globe\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-muted-foreground ds:shrink-0\"\n />\n <Command.Input\n id={inputId}\n value={search}\n onValueChange={setSearch}\n placeholder={t('navigation.localePicker.searchPlaceholder')}\n aria-label={t('navigation.localePicker.searchLabel')}\n disabled={disabled || loading}\n className={[\n 'ds:flex-1 ds:bg-transparent ds:border-0 ds:outline-none',\n 'ds:placeholder:text-muted-foreground ds:text-foreground',\n 'type-body-sm',\n ].join(' ')}\n />\n </div>\n <Command.List\n className={[\n 'ds:max-h-[18rem] ds:overflow-y-auto',\n 'ds:p-[var(--spacing-xs)]',\n ].join(' ')}\n >\n <Command.Empty\n className={[\n 'ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]',\n 'type-body-sm ds:text-muted-foreground',\n ].join(' ')}\n >\n {t('navigation.localePicker.empty')}\n </Command.Empty>\n {LOCALE_LIST.map((entry) => {\n const isSelected = entry.code === value;\n return (\n <Command.Item\n key={entry.code}\n value={entry.code}\n keywords={[entry.nativeName, entry.englishName]}\n disabled={disabled || loading}\n onSelect={handleSelect}\n className={[\n 'ds:relative ds:flex ds:cursor-pointer ds:select-none',\n 'ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:text-foreground ds:outline-none',\n 'ds:data-[highlighted]:bg-muted',\n 'ds:aria-selected:bg-muted',\n 'ds:aria-disabled:opacity-50 ds:aria-disabled:cursor-not-allowed',\n ].join(' ')}\n aria-selected={isSelected || undefined}\n data-current={isSelected ? 'true' : undefined}\n // `lang` + `dir` on the row makes the native-name\n // glyphs paint with the correct script + direction\n // (essential for Arabic / Japanese / Chinese rows).\n lang={entry.code}\n dir={entry.dir}\n >\n <span aria-hidden=\"true\" className=\"ds:text-base ds:shrink-0\">\n {entry.flag}\n </span>\n <span className=\"ds:flex-1 ds:min-w-0 ds:truncate type-body-sm\">\n {entry.nativeName}\n </span>\n {isSelected ? (\n <Check\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-primary ds:shrink-0\"\n />\n ) : null}\n {isSelected ? (\n <span className=\"ds:sr-only\">\n {t('navigation.localePicker.currentSelection')}\n </span>\n ) : null}\n </Command.Item>\n );\n })}\n </Command.List>\n </Command>\n </div>\n );\n },\n);\nLocalePickerSearchList.displayName = 'LocalePicker.SearchList';\n\n/* ------------------------------------------------------------------ */\n/* LocalePicker root — icon + compact trigger variants */\n/* ------------------------------------------------------------------ */\n\ninterface VariantRenderProps {\n state: LocalePickerState;\n rest: HTMLAttributes<HTMLDivElement>;\n forwardedRef: Ref<HTMLDivElement>;\n className?: string;\n disabled: boolean;\n loading: boolean;\n}\n\nfunction IconTrigger({\n state,\n rest,\n forwardedRef,\n className,\n disabled,\n loading,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n const entry = LOCALE_META[state.locale];\n return (\n <div\n ref={forwardedRef}\n data-component=\"locale-picker\"\n data-component-id={rest.id}\n className={wrapperVariants({ variant: 'icon', className })}\n {...rest}\n >\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n disabled={disabled || loading}\n icon={\n <span className=\"ds:relative ds:inline-flex ds:items-center ds:justify-center\">\n <Globe aria-hidden className=\"ds:size-5\" />\n <span\n aria-hidden=\"true\"\n className={[\n 'ds:absolute ds:bottom-[-2px] ds:end-[-4px]',\n 'ds:text-[length:var(--font-size-xs)] ds:leading-none',\n 'ds:bg-background ds:rounded-full ds:px-0.5',\n ].join(' ')}\n >\n {entry.flag}\n </span>\n </span>\n }\n aria-label={t('navigation.localePicker.trigger', {\n locale: entry.nativeName,\n })}\n />\n </Popover.Trigger>\n <Popover.Content\n align=\"end\"\n sideOffset={8}\n className={popoverContentClasses}\n aria-label={t('navigation.localePicker.popupLabel')}\n >\n <LocalePickerSearchList\n value={state.locale}\n onValueChange={state.setLocale}\n disabled={disabled}\n loading={loading}\n />\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n}\n\nfunction CompactTrigger({\n state,\n rest,\n forwardedRef,\n className,\n disabled,\n loading,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n const entry = LOCALE_META[state.locale];\n return (\n <div\n ref={forwardedRef}\n data-component=\"locale-picker\"\n data-component-id={rest.id}\n className={wrapperVariants({ variant: 'compact', className })}\n {...rest}\n >\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n disabled={disabled || loading}\n className={compactTriggerClasses}\n aria-label={t('navigation.localePicker.trigger', {\n locale: entry.nativeName,\n })}\n >\n <Globe aria-hidden className=\"ds:size-4 ds:shrink-0\" />\n <span\n className=\"ds:flex-1 ds:truncate type-body-sm\"\n lang={entry.code}\n >\n {entry.nativeName}\n </span>\n </button>\n </Popover.Trigger>\n <Popover.Content\n align=\"end\"\n sideOffset={8}\n className={popoverContentClasses}\n aria-label={t('navigation.localePicker.popupLabel')}\n >\n <LocalePickerSearchList\n value={state.locale}\n onValueChange={state.setLocale}\n disabled={disabled}\n loading={loading}\n />\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n}\n\nconst LocalePickerRoot = forwardRef<HTMLDivElement, LocalePickerProps>(\n (props, ref) => {\n const {\n variant = 'icon',\n value,\n onValueChange,\n disabled = false,\n loading = false,\n className,\n id,\n ...rest\n } = props as LocalePickerProps & { id?: string };\n\n const store = useLocalePickerState();\n const resolvedLocale = value ?? store.locale;\n\n // Controlled overlay: when a consumer passes `onValueChange`, route\n // selections to them instead of the shared store. Document attrs +\n // localStorage are still updated so the picker behaves consistently\n // either way.\n const setLocale = useCallback(\n (next: Locale) => {\n if (!isSupportedLocale(next)) return;\n if (onValueChange) {\n onValueChange(next);\n applyDocumentAttrs(next);\n safeWriteStorage(LOCALE_STORAGE_KEY, next);\n return;\n }\n store.setLocale(next);\n },\n [onValueChange, store],\n );\n\n const state: LocalePickerState = useMemo(\n () => ({ locale: resolvedLocale, setLocale }),\n [resolvedLocale, setLocale],\n );\n\n const forwardedRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => forwardedRef.current as HTMLDivElement, []);\n\n const stateRef = useRef(state);\n stateRef.current = state;\n const agentHandle = useMemo<LocalePickerHandle>(\n () => ({\n setLocale: (next: string) => {\n if (isSupportedLocale(next)) {\n stateRef.current.setLocale(next);\n }\n },\n }),\n [],\n );\n useAgentRegistration(localePickerAgent, agentHandle, id);\n\n if (variant === 'compact') {\n return (\n <CompactTrigger\n state={state}\n rest={rest}\n forwardedRef={forwardedRef}\n className={className}\n disabled={disabled}\n loading={loading}\n />\n );\n }\n return (\n <IconTrigger\n state={state}\n rest={rest}\n forwardedRef={forwardedRef}\n className={className}\n disabled={disabled}\n loading={loading}\n />\n );\n },\n);\nLocalePickerRoot.displayName = 'LocalePicker';\n\nexport const LocalePicker = Object.assign(LocalePickerRoot, {\n SearchList: LocalePickerSearchList,\n});\n"],"names":["LOCALE_META","LOCALE_LIST","LOCALES_WITH_BUNDLES","code","localePickerAgent","handle","args","LOCALE_STORAGE_KEY","detectionFired","isSupportedLocale","value","safeReadStorage","key","safeWriteStorage","detectBrowserLocale","raw","base","applyDocumentAttrs","locale","root","useLocalePickerState","rawLocale","setLocaleI18n","useLocale","setLocale","useCallback","next","useEffect","stored","detected","wrapperVariants","cva","compactTriggerClasses","popoverContentClasses","searchListVariants","LocalePickerSearchList","forwardRef","valueProp","onValueChange","inputIdProp","disabled","loading","className","ref","t","useTranslation","store","generatedId","useId","inputId","search","setSearch","useState","handleSelect","jsx","jsxs","Command","defaultFilter","Globe","entry","isSelected","Check","IconTrigger","state","rest","forwardedRef","Popover","IconButton","CompactTrigger","LocalePickerRoot","props","variant","id","resolvedLocale","useMemo","useRef","useImperativeHandle","stateRef","agentHandle","useAgentRegistration","LocalePicker"],"mappings":"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"}
|