@akira-io/ui 1.1.1 → 1.3.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.
Files changed (57) hide show
  1. package/dist/blocks.d.ts +6 -6
  2. package/dist/blocks.js +17 -18
  3. package/dist/blocks.js.map +1 -1
  4. package/dist/{chunk-CFDDAFPJ.js → chunk-7LBWPBVE.js} +29 -15
  5. package/dist/chunk-7LBWPBVE.js.map +1 -0
  6. package/dist/{chunk-ODYCBCKS.js → chunk-I5UZAJB4.js} +7 -6
  7. package/dist/chunk-I5UZAJB4.js.map +1 -0
  8. package/dist/{chunk-RPCL7VFQ.js → chunk-IE6VWUSB.js} +9 -5
  9. package/dist/chunk-IE6VWUSB.js.map +1 -0
  10. package/dist/{chunk-2WIIRDHT.js → chunk-MCMBS2SB.js} +4 -4
  11. package/dist/{chunk-2WIIRDHT.js.map → chunk-MCMBS2SB.js.map} +1 -1
  12. package/dist/{chunk-4SOQAVUP.js → chunk-NA33PNQO.js} +46 -28
  13. package/dist/chunk-NA33PNQO.js.map +1 -0
  14. package/dist/{chunk-YOVY3KT6.js → chunk-NGMG2UWX.js} +3 -3
  15. package/dist/{chunk-YOVY3KT6.js.map → chunk-NGMG2UWX.js.map} +1 -1
  16. package/dist/{chunk-T2INZOCM.js → chunk-O5DZTX7D.js} +3 -3
  17. package/dist/{chunk-T2INZOCM.js.map → chunk-O5DZTX7D.js.map} +1 -1
  18. package/dist/{chunk-QHZWW55M.js → chunk-PSJGAZIS.js} +24 -16
  19. package/dist/chunk-PSJGAZIS.js.map +1 -0
  20. package/dist/{chunk-5AJFQ6C4.js → chunk-QNF4LJVT.js} +2 -2
  21. package/dist/chunk-QNF4LJVT.js.map +1 -0
  22. package/dist/{chunk-FWQFB37J.js → chunk-SBLZ6T3D.js} +3 -3
  23. package/dist/{chunk-FWQFB37J.js.map → chunk-SBLZ6T3D.js.map} +1 -1
  24. package/dist/chunk-UTSTTTH5.js +48 -0
  25. package/dist/chunk-UTSTTTH5.js.map +1 -0
  26. package/dist/code.js +3 -3
  27. package/dist/{context-YWbxMH0C.d.ts → context-OwSoVEri.d.ts} +32 -3
  28. package/dist/editor.js +4 -5
  29. package/dist/editor.js.map +1 -1
  30. package/dist/{password-input-DcXX7SG9.d.ts → field-DWm5NXeV.d.ts} +1 -13
  31. package/dist/index.d.ts +15 -23
  32. package/dist/index.js +38 -30
  33. package/dist/index.js.map +1 -1
  34. package/dist/inertia.js +6 -7
  35. package/dist/inertia.js.map +1 -1
  36. package/dist/{button-Bj6My68b.d.ts → input-Dxnsxi-f.d.ts} +4 -1
  37. package/dist/{language-Dgjr9bm3.d.ts → language-Cv_N_53L.d.ts} +5 -2
  38. package/dist/locales/pt.d.ts +5 -5
  39. package/dist/locales/pt.js +7 -1
  40. package/dist/locales/pt.js.map +1 -1
  41. package/dist/shells.d.ts +2 -3
  42. package/dist/shells.js +6 -7
  43. package/dist/shells.js.map +1 -1
  44. package/dist/{sidebar-DqkFRUxQ.d.ts → sidebar-Bp6Q46j-.d.ts} +1 -2
  45. package/package.json +1 -1
  46. package/theme.css +6 -3
  47. package/dist/chunk-4SOQAVUP.js.map +0 -1
  48. package/dist/chunk-5AJFQ6C4.js.map +0 -1
  49. package/dist/chunk-CFDDAFPJ.js.map +0 -1
  50. package/dist/chunk-ODYCBCKS.js.map +0 -1
  51. package/dist/chunk-QHZWW55M.js.map +0 -1
  52. package/dist/chunk-RPCL7VFQ.js.map +0 -1
  53. package/dist/chunk-TGF54WAO.js +0 -29
  54. package/dist/chunk-TGF54WAO.js.map +0 -1
  55. package/dist/chunk-XZCC6MTE.js +0 -26
  56. package/dist/chunk-XZCC6MTE.js.map +0 -1
  57. package/dist/input-Dpi7pXeR.d.ts +0 -6
package/dist/inertia.js CHANGED
@@ -1,11 +1,10 @@
1
- import { TourProvider } from './chunk-YOVY3KT6.js';
2
- import './chunk-5AJFQ6C4.js';
3
- import { AppSidebar, AppSidebarHeader, Breadcrumbs, NavMain, SettingsLayout } from './chunk-4SOQAVUP.js';
4
- import './chunk-QHZWW55M.js';
1
+ import { TourProvider } from './chunk-NGMG2UWX.js';
2
+ import './chunk-QNF4LJVT.js';
3
+ import { AppSidebar, AppSidebarHeader, Breadcrumbs, NavMain, SettingsLayout } from './chunk-NA33PNQO.js';
4
+ import './chunk-PSJGAZIS.js';
5
5
  import './chunk-L2H5GIF7.js';
6
- import './chunk-TGF54WAO.js';
7
- import './chunk-XZCC6MTE.js';
8
- import './chunk-ODYCBCKS.js';
6
+ import './chunk-UTSTTTH5.js';
7
+ import './chunk-I5UZAJB4.js';
9
8
  import { Link, usePage, router } from '@inertiajs/react';
10
9
  import { createElement, useState, useRef, useCallback, useEffect } from 'react';
11
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inertia-table-filters.ts","../src/inertia-tour-progress.ts","../src/inertia.ts"],"names":["router","useTableFilters","AppSidebar","AppSidebarHeader","Breadcrumbs","NavMain","SettingsLayout"],"mappings":"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","file":"inertia.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type TableFilterValue = string | string[] | number | null | undefined;\n\nexport type TableFilterQuery = Record<string, string | string[]>;\n\nexport interface TableFiltersVisitOptions {\n data: TableFilterQuery;\n only?: string[];\n preserveState: boolean;\n preserveScroll: boolean;\n replace: boolean;\n onCancelToken: (token: { cancel: () => void }) => void;\n}\n\nexport interface TableFiltersRouter {\n visit: (url: string, options: TableFiltersVisitOptions) => void;\n}\n\nexport interface TableFiltersOptions {\n url: string;\n filters: Record<string, TableFilterValue>;\n only?: string[];\n searchKey?: string;\n pageKey?: string;\n debounce?: number;\n}\n\nexport interface TableFilters {\n search: string;\n setSearch: (value: string) => void;\n filterValues: Record<string, string[]>;\n setFilter: (key: string, values: string[]) => void;\n clearFilters: () => void;\n setPage: (pageIndex: number) => void;\n apply: (changes: Record<string, TableFilterValue>) => void;\n}\n\nexport type UseTableFilters = (options: TableFiltersOptions) => TableFilters;\n\nconst DEFAULT_DEBOUNCE = 300;\n\nexport function toQuery(\n filters: Record<string, TableFilterValue>,\n): TableFilterQuery {\n const query: TableFilterQuery = {};\n\n for (const [key, value] of Object.entries(filters)) {\n if (Array.isArray(value)) {\n const values = value.filter((entry) => entry !== '');\n\n if (values.length > 0) {\n query[key] = values;\n }\n\n continue;\n }\n\n if (value === null || value === undefined || value === '') {\n continue;\n }\n\n query[key] = String(value);\n }\n\n return query;\n}\n\nexport function toFilterValues(\n filters: Record<string, TableFilterValue>,\n exclude: string[] = [],\n): Record<string, string[]> {\n const values: Record<string, string[]> = {};\n\n for (const [key, value] of Object.entries(toQuery(filters))) {\n if (exclude.includes(key)) {\n continue;\n }\n\n values[key] = Array.isArray(value) ? value : [value];\n }\n\n return values;\n}\n\nexport function createTableFiltersHook(\n router: TableFiltersRouter,\n): UseTableFilters {\n return function useTableFilters({\n url,\n filters,\n only,\n searchKey = 'search',\n pageKey = 'page',\n debounce = DEFAULT_DEBOUNCE,\n }: TableFiltersOptions): TableFilters {\n const initialSearch = filters[searchKey];\n const [search, setSearchState] = useState(\n typeof initialSearch === 'string' ? initialSearch : '',\n );\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const pending = useRef<{ cancel: () => void } | null>(null);\n const state = useRef({ url, filters, only, searchKey, pageKey });\n\n state.current = { url, filters, only, searchKey, pageKey };\n\n const visit = useCallback(\n (changes: Record<string, TableFilterValue>) => {\n const current = state.current;\n\n pending.current?.cancel();\n\n router.visit(current.url, {\n data: toQuery({ ...current.filters, ...changes }),\n only: current.only,\n preserveState: true,\n preserveScroll: true,\n replace: true,\n onCancelToken: (token) => {\n pending.current = token;\n },\n });\n },\n [],\n );\n\n const cancelPendingSearch = useCallback(() => {\n if (timer.current !== null) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n }, []);\n\n useEffect(() => cancelPendingSearch, [cancelPendingSearch]);\n\n const setSearch = useCallback(\n (value: string) => {\n setSearchState(value);\n cancelPendingSearch();\n\n timer.current = setTimeout(() => {\n timer.current = null;\n visit({\n [state.current.searchKey]: value,\n [state.current.pageKey]: null,\n });\n }, debounce);\n },\n [cancelPendingSearch, debounce, visit],\n );\n\n const setFilter = useCallback(\n (key: string, values: string[]) => {\n cancelPendingSearch();\n visit({ [key]: values, [state.current.pageKey]: null });\n },\n [cancelPendingSearch, visit],\n );\n\n const clearFilters = useCallback(() => {\n cancelPendingSearch();\n setSearchState('');\n\n const current = state.current;\n const cleared = Object.fromEntries(\n Object.keys(current.filters).map((key) => [key, null]),\n );\n\n visit({ ...cleared, [current.pageKey]: null });\n }, [cancelPendingSearch, visit]);\n\n const setPage = useCallback(\n (pageIndex: number) => {\n visit({\n [state.current.pageKey]:\n pageIndex > 0 ? pageIndex + 1 : null,\n });\n },\n [visit],\n );\n\n const apply = useCallback(\n (changes: Record<string, TableFilterValue>) => {\n cancelPendingSearch();\n visit({ ...changes, [state.current.pageKey]: null });\n },\n [cancelPendingSearch, visit],\n );\n\n return {\n search,\n setSearch,\n filterValues: toFilterValues(filters, [searchKey, pageKey]),\n setFilter,\n clearFilters,\n setPage,\n apply,\n };\n };\n}\n","import type { TourProgress } from '@/blocks/tour';\n\nexport function xsrfToken(): string {\n const cookie = document.cookie\n .split('; ')\n .find((entry) => entry.startsWith('XSRF-TOKEN='));\n\n return cookie ? decodeURIComponent(cookie.slice('XSRF-TOKEN='.length)) : '';\n}\n\nexport function recordTourProgress(url: string, progress: TourProgress): void {\n void fetch(url, {\n method: 'POST',\n credentials: 'same-origin',\n keepalive: true,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': xsrfToken(),\n },\n body: JSON.stringify({\n version: progress.version,\n last_step: progress.lastStep,\n outcome: progress.outcome,\n }),\n });\n}\n","import { Link, router, usePage } from '@inertiajs/react';\nimport {\n createElement,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nimport {\n TourProvider as BaseTourProvider,\n type TourLabels,\n type TourProgress,\n} from '@/blocks/tour';\nimport {\n createTableFiltersHook,\n type TableFilters,\n type TableFiltersOptions,\n type TableFiltersRouter,\n type TableFilterValue,\n} from '@/inertia-table-filters';\nimport { recordTourProgress } from '@/inertia-tour-progress';\nimport { AppSidebar as BaseAppSidebar } from '@/shells/app-sidebar';\nimport { AppSidebarHeader as BaseAppSidebarHeader } from '@/shells/app-sidebar-header';\nimport { Breadcrumbs as BaseBreadcrumbs } from '@/shells/breadcrumbs';\nimport { NavMain as BaseNavMain } from '@/shells/nav-main';\nimport { SettingsLayout as BaseSettingsLayout } from '@/shells/settings-layout';\nimport type {\n BreadcrumbItem,\n LinkComponent,\n NavGroup,\n NavItem,\n SharedUser,\n UrlLike,\n} from '@/types';\n\nexport const InertiaLink = Link as unknown as LinkComponent;\n\nexport type {\n TableFilters,\n TableFiltersOptions,\n TableFiltersRouter,\n TableFilterValue,\n};\n\nexport const useTableFilters = createTableFiltersHook(router);\n\nexport function useCurrentUrl(): string {\n return usePage().url;\n}\n\nexport function AppSidebar(props: {\n logo: ReactNode;\n logoHref: UrlLike;\n groups: NavGroup[];\n footerItems?: NavItem[];\n user: SharedUser;\n settingsHref: UrlLike;\n logoutHref: UrlLike;\n collapsibleGroups?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n onSettingsClick?: () => void;\n onLogout?: () => void;\n}): ReactElement {\n return createElement(BaseAppSidebar, {\n ...props,\n currentUrl: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function AppSidebarHeader(props: {\n breadcrumbs?: BreadcrumbItem[];\n onSearchClick?: () => void;\n searchLabel?: string;\n}): ReactElement {\n return createElement(BaseAppSidebarHeader, {\n ...props,\n linkComponent: InertiaLink,\n });\n}\n\nexport function Breadcrumbs(props: {\n breadcrumbs: BreadcrumbItem[];\n}): ReactElement {\n return createElement(BaseBreadcrumbs, {\n ...props,\n linkComponent: InertiaLink,\n });\n}\n\nexport function NavMain(props: {\n items: NavItem[];\n label?: string;\n collapsible?: boolean;\n defaultOpen?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n}): ReactElement {\n return createElement(BaseNavMain, {\n ...props,\n currentUrl: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function SettingsLayout(\n props: PropsWithChildren<{\n items: NavItem[];\n title?: string;\n description?: string;\n wide?: boolean;\n }>,\n): ReactElement {\n return createElement(BaseSettingsLayout, {\n ...props,\n currentPath: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function InertiaTourProvider({\n children,\n progressUrl,\n labels,\n}: PropsWithChildren<{\n progressUrl: (tour: string) => string;\n labels?: Partial<TourLabels>;\n}>): ReactElement {\n const seen = (usePage().props.tours ?? {}) as Record<string, number>;\n\n return createElement(BaseTourProvider, {\n seen,\n labels,\n children,\n onProgress: (progress: TourProgress) =>\n recordTourProgress(progressUrl(progress.tour), progress),\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/inertia-table-filters.ts","../src/inertia-tour-progress.ts","../src/inertia.ts"],"names":["router","useTableFilters","AppSidebar","AppSidebarHeader","Breadcrumbs","NavMain","SettingsLayout"],"mappings":"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","file":"inertia.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type TableFilterValue = string | string[] | number | null | undefined;\n\nexport type TableFilterQuery = Record<string, string | string[]>;\n\nexport interface TableFiltersVisitOptions {\n data: TableFilterQuery;\n only?: string[];\n preserveState: boolean;\n preserveScroll: boolean;\n replace: boolean;\n onCancelToken: (token: { cancel: () => void }) => void;\n}\n\nexport interface TableFiltersRouter {\n visit: (url: string, options: TableFiltersVisitOptions) => void;\n}\n\nexport interface TableFiltersOptions {\n url: string;\n filters: Record<string, TableFilterValue>;\n only?: string[];\n searchKey?: string;\n pageKey?: string;\n debounce?: number;\n}\n\nexport interface TableFilters {\n search: string;\n setSearch: (value: string) => void;\n filterValues: Record<string, string[]>;\n setFilter: (key: string, values: string[]) => void;\n clearFilters: () => void;\n setPage: (pageIndex: number) => void;\n apply: (changes: Record<string, TableFilterValue>) => void;\n}\n\nexport type UseTableFilters = (options: TableFiltersOptions) => TableFilters;\n\nconst DEFAULT_DEBOUNCE = 300;\n\nexport function toQuery(\n filters: Record<string, TableFilterValue>,\n): TableFilterQuery {\n const query: TableFilterQuery = {};\n\n for (const [key, value] of Object.entries(filters)) {\n if (Array.isArray(value)) {\n const values = value.filter((entry) => entry !== '');\n\n if (values.length > 0) {\n query[key] = values;\n }\n\n continue;\n }\n\n if (value === null || value === undefined || value === '') {\n continue;\n }\n\n query[key] = String(value);\n }\n\n return query;\n}\n\nexport function toFilterValues(\n filters: Record<string, TableFilterValue>,\n exclude: string[] = [],\n): Record<string, string[]> {\n const values: Record<string, string[]> = {};\n\n for (const [key, value] of Object.entries(toQuery(filters))) {\n if (exclude.includes(key)) {\n continue;\n }\n\n values[key] = Array.isArray(value) ? value : [value];\n }\n\n return values;\n}\n\nexport function createTableFiltersHook(\n router: TableFiltersRouter,\n): UseTableFilters {\n return function useTableFilters({\n url,\n filters,\n only,\n searchKey = 'search',\n pageKey = 'page',\n debounce = DEFAULT_DEBOUNCE,\n }: TableFiltersOptions): TableFilters {\n const initialSearch = filters[searchKey];\n const [search, setSearchState] = useState(\n typeof initialSearch === 'string' ? initialSearch : '',\n );\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const pending = useRef<{ cancel: () => void } | null>(null);\n const state = useRef({ url, filters, only, searchKey, pageKey });\n\n state.current = { url, filters, only, searchKey, pageKey };\n\n const visit = useCallback(\n (changes: Record<string, TableFilterValue>) => {\n const current = state.current;\n\n pending.current?.cancel();\n\n router.visit(current.url, {\n data: toQuery({ ...current.filters, ...changes }),\n only: current.only,\n preserveState: true,\n preserveScroll: true,\n replace: true,\n onCancelToken: (token) => {\n pending.current = token;\n },\n });\n },\n [],\n );\n\n const cancelPendingSearch = useCallback(() => {\n if (timer.current !== null) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n }, []);\n\n useEffect(() => cancelPendingSearch, [cancelPendingSearch]);\n\n const setSearch = useCallback(\n (value: string) => {\n setSearchState(value);\n cancelPendingSearch();\n\n timer.current = setTimeout(() => {\n timer.current = null;\n visit({\n [state.current.searchKey]: value,\n [state.current.pageKey]: null,\n });\n }, debounce);\n },\n [cancelPendingSearch, debounce, visit],\n );\n\n const setFilter = useCallback(\n (key: string, values: string[]) => {\n cancelPendingSearch();\n visit({ [key]: values, [state.current.pageKey]: null });\n },\n [cancelPendingSearch, visit],\n );\n\n const clearFilters = useCallback(() => {\n cancelPendingSearch();\n setSearchState('');\n\n const current = state.current;\n const cleared = Object.fromEntries(\n Object.keys(current.filters).map((key) => [key, null]),\n );\n\n visit({ ...cleared, [current.pageKey]: null });\n }, [cancelPendingSearch, visit]);\n\n const setPage = useCallback(\n (pageIndex: number) => {\n visit({\n [state.current.pageKey]:\n pageIndex > 0 ? pageIndex + 1 : null,\n });\n },\n [visit],\n );\n\n const apply = useCallback(\n (changes: Record<string, TableFilterValue>) => {\n cancelPendingSearch();\n visit({ ...changes, [state.current.pageKey]: null });\n },\n [cancelPendingSearch, visit],\n );\n\n return {\n search,\n setSearch,\n filterValues: toFilterValues(filters, [searchKey, pageKey]),\n setFilter,\n clearFilters,\n setPage,\n apply,\n };\n };\n}\n","import type { TourProgress } from '@/blocks/tour';\n\nexport function xsrfToken(): string {\n const cookie = document.cookie\n .split('; ')\n .find((entry) => entry.startsWith('XSRF-TOKEN='));\n\n return cookie ? decodeURIComponent(cookie.slice('XSRF-TOKEN='.length)) : '';\n}\n\nexport function recordTourProgress(url: string, progress: TourProgress): void {\n void fetch(url, {\n method: 'POST',\n credentials: 'same-origin',\n keepalive: true,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': xsrfToken(),\n },\n body: JSON.stringify({\n version: progress.version,\n last_step: progress.lastStep,\n outcome: progress.outcome,\n }),\n });\n}\n","import { Link, router, usePage } from '@inertiajs/react';\nimport {\n createElement,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nimport {\n TourProvider as BaseTourProvider,\n type TourLabels,\n type TourProgress,\n} from '@/blocks/tour';\nimport {\n createTableFiltersHook,\n type TableFilters,\n type TableFiltersOptions,\n type TableFiltersRouter,\n type TableFilterValue,\n} from '@/inertia-table-filters';\nimport { recordTourProgress } from '@/inertia-tour-progress';\nimport { AppSidebar as BaseAppSidebar } from '@/shells/app-sidebar';\nimport { AppSidebarHeader as BaseAppSidebarHeader } from '@/shells/app-sidebar-header';\nimport { Breadcrumbs as BaseBreadcrumbs } from '@/shells/breadcrumbs';\nimport { NavMain as BaseNavMain } from '@/shells/nav-main';\nimport { SettingsLayout as BaseSettingsLayout } from '@/shells/settings-layout';\nimport type {\n BreadcrumbItem,\n LinkComponent,\n NavGroup,\n NavItem,\n SharedUser,\n UrlLike,\n} from '@/types';\n\nexport const InertiaLink = Link as unknown as LinkComponent;\n\nexport type {\n TableFilters,\n TableFiltersOptions,\n TableFiltersRouter,\n TableFilterValue,\n};\n\nexport const useTableFilters = createTableFiltersHook(router);\n\nexport function useCurrentUrl(): string {\n return usePage().url;\n}\n\nexport function AppSidebar(props: {\n logo: ReactNode;\n logoHref: UrlLike;\n groups: NavGroup[];\n footerItems?: NavItem[];\n user: SharedUser;\n settingsHref: UrlLike;\n logoutHref: UrlLike;\n collapsibleGroups?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n onSettingsClick?: () => void;\n onLogout?: () => void;\n}): ReactElement {\n return createElement(BaseAppSidebar, {\n ...props,\n currentUrl: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function AppSidebarHeader(props: {\n breadcrumbs?: BreadcrumbItem[];\n onSearchClick?: () => void;\n searchLabel?: string;\n}): ReactElement {\n return createElement(BaseAppSidebarHeader, {\n ...props,\n linkComponent: InertiaLink,\n });\n}\n\nexport function Breadcrumbs(props: {\n breadcrumbs: BreadcrumbItem[];\n}): ReactElement {\n return createElement(BaseBreadcrumbs, {\n ...props,\n linkComponent: InertiaLink,\n });\n}\n\nexport function NavMain(props: {\n items: NavItem[];\n label?: string;\n collapsible?: boolean;\n defaultOpen?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n}): ReactElement {\n return createElement(BaseNavMain, {\n ...props,\n currentUrl: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function SettingsLayout(\n props: PropsWithChildren<{\n items: NavItem[];\n title?: string;\n description?: string;\n wide?: boolean;\n }>,\n): ReactElement {\n return createElement(BaseSettingsLayout, {\n ...props,\n currentPath: usePage().url,\n linkComponent: InertiaLink,\n });\n}\n\nexport function InertiaTourProvider({\n children,\n progressUrl,\n labels,\n}: PropsWithChildren<{\n progressUrl: (tour: string) => string;\n labels?: Partial<TourLabels>;\n}>): ReactElement {\n const seen = (usePage().props.tours ?? {}) as Record<string, number>;\n\n return createElement(BaseTourProvider, {\n seen,\n labels,\n children,\n onProgress: (progress: TourProgress) =>\n recordTourProgress(progressUrl(progress.tour), progress),\n });\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import * as class_variance_authority_types from 'class-variance-authority/types';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  import * as React from 'react';
4
+ import { S as SlotNameProps } from './types-cmBL8zOc.js';
4
5
 
5
6
  declare const buttonVariants: (props?: ({
6
7
  variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
@@ -14,4 +15,6 @@ interface ButtonProps extends React.ComponentProps<'button'>, VariantProps<typeo
14
15
  }
15
16
  declare function Button({ className, variant, size, asChild, loading, loadingLabel, slotName, disabled, children, onClick, ...props }: ButtonProps): React.JSX.Element;
16
17
 
17
- export { Button as B, type ButtonProps as a, buttonVariants as b };
18
+ declare function Input({ className, type, slotName, ...props }: React.ComponentProps<'input'> & SlotNameProps): React.JSX.Element;
19
+
20
+ export { Button as B, Input as I, type ButtonProps as a, buttonVariants as b };
@@ -4,11 +4,14 @@ declare const nestedRadius = "rounded-2xl";
4
4
  declare const nestedSurfaceReset = "nested-surface:border-0 nested-surface:ring-0 nested-surface:bg-transparent nested-surface:shadow-none nested-surface:backdrop-blur-none";
5
5
  declare const nestedEdgeToEdge = "nested-surface:rounded-none";
6
6
  declare const controlFill = "bg-surface-control";
7
- declare const focusRing = "outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50";
7
+ declare const focusRing = "focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring";
8
8
  declare const menuHighlight = "outline-hidden focus:bg-accent focus:text-accent-foreground";
9
9
  interface SurfaceProps {
10
10
  inset?: boolean;
11
11
  }
12
+ interface FlatSurfaceProps extends SurfaceProps {
13
+ flat?: boolean;
14
+ }
12
15
  declare function surface(inset?: boolean | null): string;
13
16
 
14
- export { type SurfaceProps as S, nestedRadius as a, nestedSurfaceReset as b, controlFill as c, elevatedSurface as e, focusRing as f, menuHighlight as m, nestedEdgeToEdge as n, recessedSurface as r, surface as s };
17
+ export { type FlatSurfaceProps as F, type SurfaceProps as S, nestedRadius as a, nestedSurfaceReset as b, controlFill as c, elevatedSurface as e, focusRing as f, menuHighlight as m, nestedEdgeToEdge as n, recessedSurface as r, surface as s };
@@ -1,19 +1,19 @@
1
- import { E as AppearanceToggleLabels, I as ComboboxLabels, aj as CommandPaletteLabels, M as ConfirmDialogLabels, C as CopyButtonLabels, Q as DataTableFacetedFilterLabels, T as DataTableLabels, a as DateFilterLabels, b as DateFilterOption, Y as DatePickerLabels, $ as DateRangeFilterLabels, F as FloatingSheetLabels, v as UiLabels, a5 as SaveStatusLabels, q as SettingsLabels } from '../context-YWbxMH0C.js';
1
+ import { G as AlertLabels, J as AppearanceToggleLabels, M as ComboboxLabels, ar as CommandPaletteLabels, Q as ConfirmDialogLabels, C as CopyButtonLabels, W as DataTableFacetedFilterLabels, Y as DataTableLabels, a as DateFilterLabels, b as DateFilterOption, a0 as DatePickerLabels, a3 as DateRangeFilterLabels, F as FloatingSheetLabels, a7 as PasswordInputLabels, v as UiLabels, ab as SaveStatusLabels, q as SettingsLabels } from '../context-OwSoVEri.js';
2
2
  import { e as DangerZoneLabels, a as FormOverlayLabels, i as TwoFactorLabels } from '../types-B-eGPoFD.js';
3
3
  import { d as TourLabels } from '../types-u1qfmJQi.js';
4
4
  import { a as CodeBlockLabels, c as JsonViewerLabels } from '../json-viewer-BARA2RCW.js';
5
- import { f as FieldLabels, h as PasswordInputLabels } from '../password-input-DcXX7SG9.js';
5
+ import { f as FieldLabels } from '../field-DWm5NXeV.js';
6
6
  import 'react';
7
7
  import 'lucide-react';
8
8
  import '../types-cmBL8zOc.js';
9
9
  import '@tanstack/react-table';
10
- import '../button-Bj6My68b.js';
11
10
  import 'class-variance-authority/types';
12
11
  import 'class-variance-authority';
12
+ import '../input-Dxnsxi-f.js';
13
13
  import '@radix-ui/react-slot';
14
14
  import '@radix-ui/react-label';
15
- import '../input-Dpi7pXeR.js';
16
15
 
16
+ declare const alertLabelsPt: AlertLabels;
17
17
  declare const appearanceToggleLabelsPt: AppearanceToggleLabels;
18
18
  declare const dataTableLabelsPt: DataTableLabels;
19
19
  declare const floatingSheetLabelsPt: FloatingSheetLabels;
@@ -40,4 +40,4 @@ declare const codeBlockLabelsPt: CodeBlockLabels;
40
40
  declare const jsonViewerLabelsPt: JsonViewerLabels;
41
41
  declare const ptLabels: UiLabels;
42
42
 
43
- export { appearanceToggleLabelsPt, codeBlockLabelsPt, comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, copyButtonLabelsPt, dangerZoneLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, datePickerLabelsPt, dateRangeFilterLabelsPt, fieldLabelsPt, floatingSheetLabelsPt, formOverlayLabelsPt, jsonViewerLabelsPt, passwordInputLabelsPt, ptLabels, saveStatusLabelsPt, settingsLabelsPt, tourLabelsPt, twoFactorLabelsPt };
43
+ export { alertLabelsPt, appearanceToggleLabelsPt, codeBlockLabelsPt, comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, copyButtonLabelsPt, dangerZoneLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, datePickerLabelsPt, dateRangeFilterLabelsPt, fieldLabelsPt, floatingSheetLabelsPt, formOverlayLabelsPt, jsonViewerLabelsPt, passwordInputLabelsPt, ptLabels, saveStatusLabelsPt, settingsLabelsPt, tourLabelsPt, twoFactorLabelsPt };
@@ -1,4 +1,8 @@
1
1
  // src/locales/pt.ts
2
+ var alertLabelsPt = {
3
+ warningLabel: "Aviso",
4
+ infoLabel: "Informa\xE7\xE3o"
5
+ };
2
6
  var appearanceToggleLabelsPt = {
3
7
  groupLabel: "Apar\xEAncia",
4
8
  lightLabel: "Claro",
@@ -179,6 +183,7 @@ var jsonViewerLabelsPt = {
179
183
  entriesLabel: (count) => `${count} ${count === 1 ? "entrada" : "entradas"}`
180
184
  };
181
185
  var ptLabels = {
186
+ alert: alertLabelsPt,
182
187
  codeBlock: codeBlockLabelsPt,
183
188
  combobox: comboboxLabelsPt,
184
189
  commandPalette: commandPaletteLabelsPt,
@@ -195,11 +200,12 @@ var ptLabels = {
195
200
  dateRangeFilter: dateRangeFilterLabelsPt,
196
201
  floatingSheet: floatingSheetLabelsPt,
197
202
  jsonViewer: jsonViewerLabelsPt,
203
+ passwordInput: passwordInputLabelsPt,
198
204
  saveStatus: saveStatusLabelsPt,
199
205
  settings: settingsLabelsPt,
200
206
  tour: tourLabelsPt
201
207
  };
202
208
 
203
- export { appearanceToggleLabelsPt, codeBlockLabelsPt, comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, copyButtonLabelsPt, dangerZoneLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, datePickerLabelsPt, dateRangeFilterLabelsPt, fieldLabelsPt, floatingSheetLabelsPt, formOverlayLabelsPt, jsonViewerLabelsPt, passwordInputLabelsPt, ptLabels, saveStatusLabelsPt, settingsLabelsPt, tourLabelsPt, twoFactorLabelsPt };
209
+ export { alertLabelsPt, appearanceToggleLabelsPt, codeBlockLabelsPt, comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, copyButtonLabelsPt, dangerZoneLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, datePickerLabelsPt, dateRangeFilterLabelsPt, fieldLabelsPt, floatingSheetLabelsPt, formOverlayLabelsPt, jsonViewerLabelsPt, passwordInputLabelsPt, ptLabels, saveStatusLabelsPt, settingsLabelsPt, tourLabelsPt, twoFactorLabelsPt };
204
210
  //# sourceMappingURL=pt.js.map
205
211
  //# sourceMappingURL=pt.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/locales/pt.ts"],"names":[],"mappings":"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","file":"pt.js","sourcesContent":["import type { CommandPaletteLabels } from '@/blocks/command-palette';\nimport type { DangerZoneLabels } from '@/blocks/danger-zone';\nimport type {\n DateFilterLabels,\n DateFilterOption,\n} from '@/blocks/date-filter/types';\nimport type { FormOverlayLabels } from '@/blocks/form-overlay';\nimport type { SettingsLabels } from '@/blocks/settings-page';\nimport type { TourLabels } from '@/blocks/tour/types';\nimport type { TwoFactorLabels } from '@/blocks/two-factor/types';\nimport type { AppearanceToggleLabels } from '@/components/ui/appearance-toggle';\nimport type { CodeBlockLabels } from '@/components/ui/code-block';\nimport type { ComboboxLabels } from '@/components/ui/combobox';\nimport type { ConfirmDialogLabels } from '@/components/ui/confirm-dialog';\nimport type { CopyButtonLabels } from '@/components/ui/copy-button';\nimport type { DataTableLabels } from '@/components/ui/data-table';\nimport type { DataTableFacetedFilterLabels } from '@/components/ui/data-table-faceted-filter';\nimport type { DatePickerLabels } from '@/components/ui/date-picker';\nimport type { DateRangeFilterLabels } from '@/components/ui/date-range-filter';\nimport type { FieldLabels } from '@/components/ui/field';\nimport type { FloatingSheetLabels } from '@/components/ui/floating-sheet';\nimport type { JsonViewerLabels } from '@/components/ui/json-viewer';\nimport type { PasswordInputLabels } from '@/components/ui/password-input';\nimport type { SaveStatusLabels } from '@/components/ui/save-status';\nimport type { UiLabels } from '@/locales/context';\n\nexport const appearanceToggleLabelsPt: AppearanceToggleLabels = {\n groupLabel: 'Aparência',\n lightLabel: 'Claro',\n darkLabel: 'Escuro',\n systemLabel: 'Sistema',\n};\n\nexport const dataTableLabelsPt: DataTableLabels = {\n searchPlaceholder: 'Pesquisar...',\n emptyLabel: 'Sem registos.',\n createLabel: 'Novo',\n clearFiltersLabel: 'Limpar filtros',\n paginationLabel: (page, pages) => `Página ${page} de ${pages}`,\n noOptionsLabel: 'Sem opções.',\n totalLabel: (total) => `${total.toLocaleString('pt-PT')} registos`,\n};\n\nexport const floatingSheetLabelsPt: FloatingSheetLabels = {\n backLabel: 'Voltar',\n closeLabel: 'Fechar',\n};\n\nexport const formOverlayLabelsPt: FormOverlayLabels = {\n cancelLabel: 'Cancelar',\n saveLabel: 'Guardar',\n savingLabel: 'A guardar...',\n};\n\nexport const dateRangeFilterLabelsPt: DateRangeFilterLabels = {\n emptyLabel: 'Período',\n dateFormat: 'dd/MM/yy',\n};\n\nexport const datePickerLabelsPt: DatePickerLabels = {\n placeholder: 'Escolha uma data',\n dateFormat: 'dd/MM/yy',\n clearLabel: 'Limpar data',\n};\n\nexport const comboboxLabelsPt: ComboboxLabels = {\n placeholder: 'Seleccione uma opção',\n searchPlaceholder: 'Pesquisar...',\n emptyText: 'Sem resultados.',\n};\n\nexport const confirmDialogLabelsPt: ConfirmDialogLabels = {\n title: 'Confirmar Ação',\n description:\n 'Tem a certeza que pretende continuar? Esta ação não pode ser desfeita.',\n confirmText: 'Confirmar',\n cancelText: 'Cancelar',\n};\n\nexport const fieldLabelsPt: FieldLabels = {\n requiredLabel: 'Obrigatório',\n};\n\nexport const passwordInputLabelsPt: PasswordInputLabels = {\n showLabel: 'Mostrar palavra-passe',\n hideLabel: 'Ocultar palavra-passe',\n};\n\nexport const dataTableFacetedFilterLabelsPt: DataTableFacetedFilterLabels = {\n noOptionsLabel: 'Sem opções.',\n};\n\nexport const commandPaletteLabelsPt: CommandPaletteLabels = {\n placeholder: 'Pesquisar...',\n noResultsLabel: 'Nenhum resultado encontrado',\n};\n\nexport const tourLabelsPt: TourLabels = {\n next: 'Seguinte',\n previous: 'Anterior',\n done: 'Concluir',\n progress: '{{current}} de {{total}}',\n};\n\nexport const dateFilterPresetsPt: DateFilterOption[] = [\n { value: 'today', label: 'Hoje' },\n { value: 'yesterday', label: 'Ontem' },\n { value: 'previous_week', label: 'Semana anterior' },\n { value: 'previous_7_days', label: 'Últimos 7 dias' },\n { value: 'previous_30_days', label: 'Últimos 30 dias' },\n { value: 'previous_month', label: 'Mês anterior' },\n { value: 'previous_3_months', label: 'Últimos 3 meses' },\n { value: 'previous_12_months', label: 'Últimos 12 meses' },\n];\n\nexport const dateFilterOperatorsPt: DateFilterOption[] = [\n { value: 'between', label: 'Entre' },\n { value: 'before', label: 'Antes de' },\n { value: 'on', label: 'Em' },\n { value: 'after', label: 'Depois de' },\n];\n\nexport const dateFilterUnitsPt: DateFilterOption[] = [\n { value: 'day', label: 'dias' },\n { value: 'week', label: 'semanas' },\n { value: 'month', label: 'meses' },\n { value: 'quarter', label: 'trimestres' },\n { value: 'year', label: 'anos' },\n];\n\nexport const dateFilterLabelsPt: DateFilterLabels = {\n all: 'Todo o período',\n fixed: 'Intervalo fixo...',\n relative: 'Intervalo relativo...',\n relativeTitle: 'Intervalo relativo',\n apply: 'Aplicar filtro',\n back: 'Voltar',\n latest: 'Últimos',\n ago: 'há',\n includeCurrent: 'Incluir período atual',\n startingAgo: 'A começar há',\n removeOffset: 'Remover deslocamento',\n fallback: 'Data',\n};\n\nexport const settingsLabelsPt: SettingsLabels = {\n back: 'Voltar',\n};\n\nexport const saveStatusLabelsPt: SaveStatusLabels = {\n error: 'Não foi possível guardar as alterações',\n idle: 'As alterações são guardadas automaticamente',\n saved: 'Guardado',\n saving: 'A guardar',\n};\n\nexport const copyButtonLabelsPt: CopyButtonLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n};\n\nexport const twoFactorLabelsPt: TwoFactorLabels = {\n setupTitle: 'Autenticação de dois fatores',\n setupDescription:\n 'Acrescente um segundo passo ao seu início de sessão com uma aplicação autenticadora.',\n pendingLabel: 'A preparar a sua chave de configuração',\n scanTitle: 'Leia o código',\n scanDescription:\n 'Abra a aplicação autenticadora e leia o código abaixo para adicionar esta conta.',\n qrFallbackLabel: 'O código QR ainda não está disponível.',\n manualKeyLabel: 'Chave de configuração',\n manualKeyDescription:\n 'Introduza esta chave manualmente se a aplicação não conseguir ler o código.',\n manualKeyRevealLabel: 'Mostrar chave',\n manualKeyHideLabel: 'Ocultar chave',\n continueLabel: 'Continuar',\n confirmTitle: 'Confirme o código',\n confirmDescription:\n 'Introduza o código de seis dígitos apresentado na aplicação autenticadora.',\n codeLabel: 'Código de autenticação',\n recoveryCodeLabel: 'Código de recuperação',\n recoveryCodePlaceholder: 'Introduza um código de recuperação',\n useRecoveryCodeLabel: 'Usar um código de recuperação',\n useCodeLabel: 'Usar um código de autenticação',\n verifyLabel: 'Verificar',\n verifyingLabel: 'A verificar',\n errorFallbackLabel: 'Não resultou. Tente novamente.',\n cancelLabel: 'Cancelar',\n challengeTitle: 'Confirmação em dois passos',\n challengeDescription:\n 'Confirme o acesso à sua conta com o código da aplicação autenticadora.',\n recoveryTitle: 'Códigos de recuperação',\n recoveryDescription:\n 'Guarde estes códigos em lugar seguro. Cada um permite um início de sessão se perder o dispositivo.',\n recoveryWarning:\n 'São mostrados uma única vez e não podem ser lidos depois.',\n revealLabel: 'Mostrar códigos',\n hideLabel: 'Ocultar códigos',\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n copyFailedLabel:\n 'Não é possível copiar aqui. Selecione os códigos manualmente.',\n regenerateLabel: 'Gerar novos códigos',\n doneLabel: 'Concluir',\n disableLabel: 'Desativar autenticação de dois fatores',\n disableTitle: 'Desativar autenticação de dois fatores',\n disableDescription:\n 'A sua conta fica protegida apenas pela palavra-passe. Os códigos de recuperação deixam de funcionar.',\n disableConfirmLabel: 'Desativar',\n disableCancelLabel: 'Manter ativa',\n};\n\nexport const dangerZoneLabelsPt: DangerZoneLabels = {\n title: 'Zona de perigo',\n description: 'Estas ações são permanentes e não podem ser desfeitas.',\n actionLabel: 'Eliminar',\n confirmTitle: 'Confirmar Ação',\n confirmDescription:\n 'Tem a certeza que pretende continuar? Esta ação não pode ser desfeita.',\n confirmText: 'Confirmar',\n cancelText: 'Cancelar',\n requiredValueLabel: 'Escreva {{value}} para confirmar',\n};\n\nexport const codeBlockLabelsPt: CodeBlockLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n expandLabel: 'Expandir',\n collapseLabel: 'Recolher',\n};\n\nexport const jsonViewerLabelsPt: JsonViewerLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n expandLabel: 'Expandir',\n collapseLabel: 'Recolher',\n circularLabel: 'Referência circular',\n entriesLabel: (count) => `${count} ${count === 1 ? 'entrada' : 'entradas'}`,\n};\n\nexport const ptLabels: UiLabels = {\n codeBlock: codeBlockLabelsPt,\n combobox: comboboxLabelsPt,\n commandPalette: commandPaletteLabelsPt,\n confirmDialog: confirmDialogLabelsPt,\n appearanceToggle: appearanceToggleLabelsPt,\n copyButton: copyButtonLabelsPt,\n dataTable: dataTableLabelsPt,\n dataTableFacetedFilter: dataTableFacetedFilterLabelsPt,\n dateFilter: dateFilterLabelsPt,\n dateFilterOperators: dateFilterOperatorsPt,\n dateFilterPresets: dateFilterPresetsPt,\n dateFilterUnits: dateFilterUnitsPt,\n datePicker: datePickerLabelsPt,\n dateRangeFilter: dateRangeFilterLabelsPt,\n floatingSheet: floatingSheetLabelsPt,\n jsonViewer: jsonViewerLabelsPt,\n saveStatus: saveStatusLabelsPt,\n settings: settingsLabelsPt,\n tour: tourLabelsPt,\n};\n"]}
1
+ {"version":3,"sources":["../../src/locales/pt.ts"],"names":[],"mappings":"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","file":"pt.js","sourcesContent":["import type { CommandPaletteLabels } from '@/blocks/command-palette';\nimport type { DangerZoneLabels } from '@/blocks/danger-zone';\nimport type {\n DateFilterLabels,\n DateFilterOption,\n} from '@/blocks/date-filter/types';\nimport type { FormOverlayLabels } from '@/blocks/form-overlay';\nimport type { SettingsLabels } from '@/blocks/settings-page';\nimport type { TourLabels } from '@/blocks/tour/types';\nimport type { TwoFactorLabels } from '@/blocks/two-factor/types';\nimport type { AlertLabels } from '@/components/ui/alert';\nimport type { AppearanceToggleLabels } from '@/components/ui/appearance-toggle';\nimport type { CodeBlockLabels } from '@/components/ui/code-block';\nimport type { ComboboxLabels } from '@/components/ui/combobox';\nimport type { ConfirmDialogLabels } from '@/components/ui/confirm-dialog';\nimport type { CopyButtonLabels } from '@/components/ui/copy-button';\nimport type { DataTableLabels } from '@/components/ui/data-table';\nimport type { DataTableFacetedFilterLabels } from '@/components/ui/data-table-faceted-filter';\nimport type { DatePickerLabels } from '@/components/ui/date-picker';\nimport type { DateRangeFilterLabels } from '@/components/ui/date-range-filter';\nimport type { FieldLabels } from '@/components/ui/field';\nimport type { FloatingSheetLabels } from '@/components/ui/floating-sheet';\nimport type { JsonViewerLabels } from '@/components/ui/json-viewer';\nimport type { PasswordInputLabels } from '@/components/ui/password-input';\nimport type { SaveStatusLabels } from '@/components/ui/save-status';\nimport type { UiLabels } from '@/locales/context';\n\nexport const alertLabelsPt: AlertLabels = {\n warningLabel: 'Aviso',\n infoLabel: 'Informação',\n};\n\nexport const appearanceToggleLabelsPt: AppearanceToggleLabels = {\n groupLabel: 'Aparência',\n lightLabel: 'Claro',\n darkLabel: 'Escuro',\n systemLabel: 'Sistema',\n};\n\nexport const dataTableLabelsPt: DataTableLabels = {\n searchPlaceholder: 'Pesquisar...',\n emptyLabel: 'Sem registos.',\n createLabel: 'Novo',\n clearFiltersLabel: 'Limpar filtros',\n paginationLabel: (page, pages) => `Página ${page} de ${pages}`,\n noOptionsLabel: 'Sem opções.',\n totalLabel: (total) => `${total.toLocaleString('pt-PT')} registos`,\n};\n\nexport const floatingSheetLabelsPt: FloatingSheetLabels = {\n backLabel: 'Voltar',\n closeLabel: 'Fechar',\n};\n\nexport const formOverlayLabelsPt: FormOverlayLabels = {\n cancelLabel: 'Cancelar',\n saveLabel: 'Guardar',\n savingLabel: 'A guardar...',\n};\n\nexport const dateRangeFilterLabelsPt: DateRangeFilterLabels = {\n emptyLabel: 'Período',\n dateFormat: 'dd/MM/yy',\n};\n\nexport const datePickerLabelsPt: DatePickerLabels = {\n placeholder: 'Escolha uma data',\n dateFormat: 'dd/MM/yy',\n clearLabel: 'Limpar data',\n};\n\nexport const comboboxLabelsPt: ComboboxLabels = {\n placeholder: 'Seleccione uma opção',\n searchPlaceholder: 'Pesquisar...',\n emptyText: 'Sem resultados.',\n};\n\nexport const confirmDialogLabelsPt: ConfirmDialogLabels = {\n title: 'Confirmar Ação',\n description:\n 'Tem a certeza que pretende continuar? Esta ação não pode ser desfeita.',\n confirmText: 'Confirmar',\n cancelText: 'Cancelar',\n};\n\nexport const fieldLabelsPt: FieldLabels = {\n requiredLabel: 'Obrigatório',\n};\n\nexport const passwordInputLabelsPt: PasswordInputLabels = {\n showLabel: 'Mostrar palavra-passe',\n hideLabel: 'Ocultar palavra-passe',\n};\n\nexport const dataTableFacetedFilterLabelsPt: DataTableFacetedFilterLabels = {\n noOptionsLabel: 'Sem opções.',\n};\n\nexport const commandPaletteLabelsPt: CommandPaletteLabels = {\n placeholder: 'Pesquisar...',\n noResultsLabel: 'Nenhum resultado encontrado',\n};\n\nexport const tourLabelsPt: TourLabels = {\n next: 'Seguinte',\n previous: 'Anterior',\n done: 'Concluir',\n progress: '{{current}} de {{total}}',\n};\n\nexport const dateFilterPresetsPt: DateFilterOption[] = [\n { value: 'today', label: 'Hoje' },\n { value: 'yesterday', label: 'Ontem' },\n { value: 'previous_week', label: 'Semana anterior' },\n { value: 'previous_7_days', label: 'Últimos 7 dias' },\n { value: 'previous_30_days', label: 'Últimos 30 dias' },\n { value: 'previous_month', label: 'Mês anterior' },\n { value: 'previous_3_months', label: 'Últimos 3 meses' },\n { value: 'previous_12_months', label: 'Últimos 12 meses' },\n];\n\nexport const dateFilterOperatorsPt: DateFilterOption[] = [\n { value: 'between', label: 'Entre' },\n { value: 'before', label: 'Antes de' },\n { value: 'on', label: 'Em' },\n { value: 'after', label: 'Depois de' },\n];\n\nexport const dateFilterUnitsPt: DateFilterOption[] = [\n { value: 'day', label: 'dias' },\n { value: 'week', label: 'semanas' },\n { value: 'month', label: 'meses' },\n { value: 'quarter', label: 'trimestres' },\n { value: 'year', label: 'anos' },\n];\n\nexport const dateFilterLabelsPt: DateFilterLabels = {\n all: 'Todo o período',\n fixed: 'Intervalo fixo...',\n relative: 'Intervalo relativo...',\n relativeTitle: 'Intervalo relativo',\n apply: 'Aplicar filtro',\n back: 'Voltar',\n latest: 'Últimos',\n ago: 'há',\n includeCurrent: 'Incluir período atual',\n startingAgo: 'A começar há',\n removeOffset: 'Remover deslocamento',\n fallback: 'Data',\n};\n\nexport const settingsLabelsPt: SettingsLabels = {\n back: 'Voltar',\n};\n\nexport const saveStatusLabelsPt: SaveStatusLabels = {\n error: 'Não foi possível guardar as alterações',\n idle: 'As alterações são guardadas automaticamente',\n saved: 'Guardado',\n saving: 'A guardar',\n};\n\nexport const copyButtonLabelsPt: CopyButtonLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n};\n\nexport const twoFactorLabelsPt: TwoFactorLabels = {\n setupTitle: 'Autenticação de dois fatores',\n setupDescription:\n 'Acrescente um segundo passo ao seu início de sessão com uma aplicação autenticadora.',\n pendingLabel: 'A preparar a sua chave de configuração',\n scanTitle: 'Leia o código',\n scanDescription:\n 'Abra a aplicação autenticadora e leia o código abaixo para adicionar esta conta.',\n qrFallbackLabel: 'O código QR ainda não está disponível.',\n manualKeyLabel: 'Chave de configuração',\n manualKeyDescription:\n 'Introduza esta chave manualmente se a aplicação não conseguir ler o código.',\n manualKeyRevealLabel: 'Mostrar chave',\n manualKeyHideLabel: 'Ocultar chave',\n continueLabel: 'Continuar',\n confirmTitle: 'Confirme o código',\n confirmDescription:\n 'Introduza o código de seis dígitos apresentado na aplicação autenticadora.',\n codeLabel: 'Código de autenticação',\n recoveryCodeLabel: 'Código de recuperação',\n recoveryCodePlaceholder: 'Introduza um código de recuperação',\n useRecoveryCodeLabel: 'Usar um código de recuperação',\n useCodeLabel: 'Usar um código de autenticação',\n verifyLabel: 'Verificar',\n verifyingLabel: 'A verificar',\n errorFallbackLabel: 'Não resultou. Tente novamente.',\n cancelLabel: 'Cancelar',\n challengeTitle: 'Confirmação em dois passos',\n challengeDescription:\n 'Confirme o acesso à sua conta com o código da aplicação autenticadora.',\n recoveryTitle: 'Códigos de recuperação',\n recoveryDescription:\n 'Guarde estes códigos em lugar seguro. Cada um permite um início de sessão se perder o dispositivo.',\n recoveryWarning:\n 'São mostrados uma única vez e não podem ser lidos depois.',\n revealLabel: 'Mostrar códigos',\n hideLabel: 'Ocultar códigos',\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n copyFailedLabel:\n 'Não é possível copiar aqui. Selecione os códigos manualmente.',\n regenerateLabel: 'Gerar novos códigos',\n doneLabel: 'Concluir',\n disableLabel: 'Desativar autenticação de dois fatores',\n disableTitle: 'Desativar autenticação de dois fatores',\n disableDescription:\n 'A sua conta fica protegida apenas pela palavra-passe. Os códigos de recuperação deixam de funcionar.',\n disableConfirmLabel: 'Desativar',\n disableCancelLabel: 'Manter ativa',\n};\n\nexport const dangerZoneLabelsPt: DangerZoneLabels = {\n title: 'Zona de perigo',\n description: 'Estas ações são permanentes e não podem ser desfeitas.',\n actionLabel: 'Eliminar',\n confirmTitle: 'Confirmar Ação',\n confirmDescription:\n 'Tem a certeza que pretende continuar? Esta ação não pode ser desfeita.',\n confirmText: 'Confirmar',\n cancelText: 'Cancelar',\n requiredValueLabel: 'Escreva {{value}} para confirmar',\n};\n\nexport const codeBlockLabelsPt: CodeBlockLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n expandLabel: 'Expandir',\n collapseLabel: 'Recolher',\n};\n\nexport const jsonViewerLabelsPt: JsonViewerLabels = {\n copyLabel: 'Copiar',\n copiedLabel: 'Copiado',\n expandLabel: 'Expandir',\n collapseLabel: 'Recolher',\n circularLabel: 'Referência circular',\n entriesLabel: (count) => `${count} ${count === 1 ? 'entrada' : 'entradas'}`,\n};\n\nexport const ptLabels: UiLabels = {\n alert: alertLabelsPt,\n codeBlock: codeBlockLabelsPt,\n combobox: comboboxLabelsPt,\n commandPalette: commandPaletteLabelsPt,\n confirmDialog: confirmDialogLabelsPt,\n appearanceToggle: appearanceToggleLabelsPt,\n copyButton: copyButtonLabelsPt,\n dataTable: dataTableLabelsPt,\n dataTableFacetedFilter: dataTableFacetedFilterLabelsPt,\n dateFilter: dateFilterLabelsPt,\n dateFilterOperators: dateFilterOperatorsPt,\n dateFilterPresets: dateFilterPresetsPt,\n dateFilterUnits: dateFilterUnitsPt,\n datePicker: datePickerLabelsPt,\n dateRangeFilter: dateRangeFilterLabelsPt,\n floatingSheet: floatingSheetLabelsPt,\n jsonViewer: jsonViewerLabelsPt,\n passwordInput: passwordInputLabelsPt,\n saveStatus: saveStatusLabelsPt,\n settings: settingsLabelsPt,\n tour: tourLabelsPt,\n};\n"]}
package/dist/shells.d.ts CHANGED
@@ -2,13 +2,12 @@ import { U as UrlLike, N as NavGroup, b as NavItem, c as SharedUser, d as LinkCo
2
2
  export { C as Column, a as ColumnDef, F as FilterFn, I as IconComponent, e as LinkProps, L as LucideIcon, R as Row, T as TableInstance } from './types-cmBL8zOc.js';
3
3
  import * as React from 'react';
4
4
  import { ReactNode, ComponentPropsWithoutRef, PropsWithChildren } from 'react';
5
- import { d as SidebarGroup } from './sidebar-DqkFRUxQ.js';
5
+ import { d as SidebarGroup } from './sidebar-Bp6Q46j-.js';
6
6
  import '@tanstack/react-table';
7
7
  import 'lucide-react';
8
8
  import 'class-variance-authority/types';
9
9
  import 'class-variance-authority';
10
- import './button-Bj6My68b.js';
11
- import './input-Dpi7pXeR.js';
10
+ import './input-Dxnsxi-f.js';
12
11
  import '@radix-ui/react-separator';
13
12
  import '@radix-ui/react-tooltip';
14
13
 
package/dist/shells.js CHANGED
@@ -1,12 +1,11 @@
1
1
  export { initializeTheme, useAppearance } from './chunk-IQMRJXEO.js';
2
- import { Card } from './chunk-RPCL7VFQ.js';
3
- export { AppSidebar, AppSidebarHeader, Breadcrumbs, Heading, NavFooter, NavMain, NavUser, SIDEBAR_COLLAPSED_GROUPS_KEY, SettingsLayout, UserInfo, UserMenuContent, useCollapsedGroup, useInitials } from './chunk-4SOQAVUP.js';
4
- import { SidebarInset, SidebarProvider } from './chunk-QHZWW55M.js';
5
- export { useIsMobile } from './chunk-QHZWW55M.js';
2
+ import { Card } from './chunk-IE6VWUSB.js';
3
+ export { AppSidebar, AppSidebarHeader, Breadcrumbs, Heading, NavFooter, NavMain, NavUser, SIDEBAR_COLLAPSED_GROUPS_KEY, SettingsLayout, UserInfo, UserMenuContent, useCollapsedGroup, useInitials } from './chunk-NA33PNQO.js';
4
+ import { SidebarInset, SidebarProvider } from './chunk-PSJGAZIS.js';
5
+ export { useIsMobile } from './chunk-PSJGAZIS.js';
6
6
  export { hrefToString } from './chunk-L2H5GIF7.js';
7
- import './chunk-TGF54WAO.js';
8
- import './chunk-XZCC6MTE.js';
9
- import { cn } from './chunk-ODYCBCKS.js';
7
+ import './chunk-UTSTTTH5.js';
8
+ import { cn } from './chunk-I5UZAJB4.js';
10
9
  import { jsx, jsxs } from 'react/jsx-runtime';
11
10
 
12
11
  function AppContent({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shells/app-content.tsx","../src/shells/app-shell.tsx","../src/shells/auth-shell.tsx"],"names":["jsx"],"mappings":"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","file":"shells.js","sourcesContent":["import * as React from 'react';\n\nimport { SidebarInset } from '@/components/ui/sidebar';\n\ninterface AppContentProps extends React.ComponentProps<'main'> {\n variant?: 'header' | 'sidebar';\n}\n\nexport function AppContent({\n variant = 'header',\n children,\n ...props\n}: AppContentProps) {\n if (variant === 'sidebar') {\n return <SidebarInset {...props}>{children}</SidebarInset>;\n }\n\n return (\n <main\n className=\"max-w-7xl gap-4 rounded-xl mx-auto flex h-full w-full flex-1 flex-col\"\n {...props}\n >\n {children}\n </main>\n );\n}\n","import * as React from 'react';\n\nimport { SidebarProvider } from '@/components/ui/sidebar';\n\ninterface AppShellProps {\n children: React.ReactNode;\n variant?: 'header' | 'sidebar';\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n}\n\nexport function AppShell({\n children,\n variant = 'header',\n open,\n onOpenChange,\n defaultOpen = true,\n}: AppShellProps) {\n if (variant === 'header') {\n return (\n <div className=\"flex min-h-screen w-full flex-col\">{children}</div>\n );\n }\n\n return (\n <SidebarProvider\n open={open}\n onOpenChange={onOpenChange}\n defaultOpen={defaultOpen}\n >\n {children}\n </SidebarProvider>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type ReactNode } from 'react';\n\nexport type AuthArrangement = 'centred' | 'split';\n\nexport interface AuthShellProps {\n logo?: ReactNode;\n title: string;\n description?: string;\n arrangement?: AuthArrangement;\n panel?: ReactNode;\n panelDecorative?: boolean;\n footer?: ReactNode;\n appearanceControl?: ReactNode;\n surface?: boolean;\n children: ReactNode;\n className?: string;\n}\n\nexport function AuthShell({\n logo,\n title,\n description,\n arrangement = 'centred',\n panel,\n panelDecorative = true,\n footer,\n appearanceControl,\n surface = true,\n children,\n className,\n slotName = 'auth-shell',\n}: AuthShellProps & SlotNameProps) {\n const split = arrangement === 'split';\n\n const form = (\n <div\n data-slot=\"auth-shell-form\"\n className=\"gap-6 max-w-md flex w-full flex-col\"\n >\n {logo && (\n <div\n data-slot=\"auth-shell-logo\"\n className=\"flex justify-center\"\n >\n {logo}\n </div>\n )}\n\n <div data-slot=\"auth-shell-heading\" className=\"space-y-2\">\n <h1 className=\"text-xl font-bold tracking-tight text-foreground\">\n {title}\n </h1>\n {description && (\n <p className=\"text-sm font-medium text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n\n {surface ? (\n <Card className=\"p-6\">\n <div data-slot=\"auth-shell-body\">{children}</div>\n </Card>\n ) : (\n <div data-slot=\"auth-shell-body\">{children}</div>\n )}\n\n {footer && (\n <footer\n data-slot=\"auth-shell-footer\"\n className=\"gap-2 text-sm font-medium flex flex-wrap items-center justify-center text-muted-foreground\"\n >\n {footer}\n </footer>\n )}\n </div>\n );\n\n return (\n <div\n data-arrangement={arrangement}\n className={cn(\n 'relative flex min-h-screen w-full',\n split && 'lg:grid lg:grid-cols-2',\n className,\n )}\n data-slot={slotName}\n >\n {split && panel && (\n <aside\n data-slot=\"auth-shell-panel\"\n aria-hidden={panelDecorative || undefined}\n className=\"p-10 lg:flex hidden flex-col justify-between bg-primary text-primary-foreground\"\n >\n {panel}\n </aside>\n )}\n\n <main\n data-slot=\"auth-shell-main\"\n className=\"p-6 flex flex-1 items-center justify-center\"\n >\n {form}\n </main>\n\n {appearanceControl && (\n <div\n data-slot=\"auth-shell-appearance\"\n className=\"top-4 right-4 absolute\"\n >\n {appearanceControl}\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/shells/app-content.tsx","../src/shells/app-shell.tsx","../src/shells/auth-shell.tsx"],"names":["jsx"],"mappings":"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","file":"shells.js","sourcesContent":["import * as React from 'react';\n\nimport { SidebarInset } from '@/components/ui/sidebar';\n\ninterface AppContentProps extends React.ComponentProps<'main'> {\n variant?: 'header' | 'sidebar';\n}\n\nexport function AppContent({\n variant = 'header',\n children,\n ...props\n}: AppContentProps) {\n if (variant === 'sidebar') {\n return <SidebarInset {...props}>{children}</SidebarInset>;\n }\n\n return (\n <main\n className=\"max-w-7xl gap-4 rounded-xl mx-auto flex h-full w-full flex-1 flex-col\"\n {...props}\n >\n {children}\n </main>\n );\n}\n","import * as React from 'react';\n\nimport { SidebarProvider } from '@/components/ui/sidebar';\n\ninterface AppShellProps {\n children: React.ReactNode;\n variant?: 'header' | 'sidebar';\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n}\n\nexport function AppShell({\n children,\n variant = 'header',\n open,\n onOpenChange,\n defaultOpen = true,\n}: AppShellProps) {\n if (variant === 'header') {\n return (\n <div className=\"flex min-h-screen w-full flex-col\">{children}</div>\n );\n }\n\n return (\n <SidebarProvider\n open={open}\n onOpenChange={onOpenChange}\n defaultOpen={defaultOpen}\n >\n {children}\n </SidebarProvider>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type ReactNode } from 'react';\n\nexport type AuthArrangement = 'centred' | 'split';\n\nexport interface AuthShellProps {\n logo?: ReactNode;\n title: string;\n description?: string;\n arrangement?: AuthArrangement;\n panel?: ReactNode;\n panelDecorative?: boolean;\n footer?: ReactNode;\n appearanceControl?: ReactNode;\n surface?: boolean;\n children: ReactNode;\n className?: string;\n}\n\nexport function AuthShell({\n logo,\n title,\n description,\n arrangement = 'centred',\n panel,\n panelDecorative = true,\n footer,\n appearanceControl,\n surface = true,\n children,\n className,\n slotName = 'auth-shell',\n}: AuthShellProps & SlotNameProps) {\n const split = arrangement === 'split';\n\n const form = (\n <div\n data-slot=\"auth-shell-form\"\n className=\"gap-6 max-w-md flex w-full flex-col\"\n >\n {logo && (\n <div\n data-slot=\"auth-shell-logo\"\n className=\"flex justify-center\"\n >\n {logo}\n </div>\n )}\n\n <div data-slot=\"auth-shell-heading\" className=\"space-y-2\">\n <h1 className=\"text-xl font-bold tracking-tight text-foreground\">\n {title}\n </h1>\n {description && (\n <p className=\"text-sm font-medium text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n\n {surface ? (\n <Card className=\"p-6\">\n <div data-slot=\"auth-shell-body\">{children}</div>\n </Card>\n ) : (\n <div data-slot=\"auth-shell-body\">{children}</div>\n )}\n\n {footer && (\n <footer\n data-slot=\"auth-shell-footer\"\n className=\"gap-2 text-sm font-medium flex flex-wrap items-center justify-center text-muted-foreground\"\n >\n {footer}\n </footer>\n )}\n </div>\n );\n\n return (\n <div\n data-arrangement={arrangement}\n className={cn(\n 'relative flex min-h-screen w-full',\n split && 'lg:grid lg:grid-cols-2',\n className,\n )}\n data-slot={slotName}\n >\n {split && panel && (\n <aside\n data-slot=\"auth-shell-panel\"\n aria-hidden={panelDecorative || undefined}\n className=\"p-10 lg:flex hidden flex-col justify-between bg-primary text-primary-foreground\"\n >\n {panel}\n </aside>\n )}\n\n <main\n data-slot=\"auth-shell-main\"\n className=\"p-6 flex flex-1 items-center justify-center\"\n >\n {form}\n </main>\n\n {appearanceControl && (\n <div\n data-slot=\"auth-shell-appearance\"\n className=\"top-4 right-4 absolute\"\n >\n {appearanceControl}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import * as class_variance_authority_types from 'class-variance-authority/types';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  import * as React from 'react';
4
- import { B as Button } from './button-Bj6My68b.js';
5
- import { I as Input } from './input-Dpi7pXeR.js';
4
+ import { I as Input, B as Button } from './input-Dxnsxi-f.js';
6
5
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
7
6
  import { S as SlotNameProps } from './types-cmBL8zOc.js';
8
7
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akira-io/ui",
3
- "version": "1.1.1",
3
+ "version": "1.3.0",
4
4
  "description": "Open-source React component library: the full shadcn/ui set on an OKLCH design-token system with swappable brand palettes.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/theme.css CHANGED
@@ -70,12 +70,13 @@
70
70
  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
71
71
  --color-sidebar-accent: var(--sidebar-accent);
72
72
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
73
+ --color-sidebar-accent-hover: var(--sidebar-accent-hover);
73
74
  --color-sidebar-border: var(--sidebar-border);
74
75
  --color-sidebar-ring: var(--sidebar-ring);
75
76
  }
76
77
 
77
78
  :root {
78
- --background: oklch(1 0 0);
79
+ --background: oklch(0.978 0 0);
79
80
  --foreground: oklch(0.145 0 0);
80
81
  --card: oklch(1 0 0);
81
82
  --card-foreground: oklch(0.145 0 0);
@@ -89,7 +90,7 @@
89
90
  --muted-foreground: oklch(0.556 0 0);
90
91
  --accent: oklch(0.97 0 0);
91
92
  --accent-foreground: oklch(0.205 0 0);
92
- --destructive: oklch(0.577 0.245 27.325);
93
+ --destructive: oklch(0.565 0.245 27.325);
93
94
  --destructive-foreground: oklch(0.985 0 0);
94
95
  --success: oklch(0.508 0.118 165.612);
95
96
  --success-foreground: oklch(0.985 0 0);
@@ -114,12 +115,13 @@
114
115
  --input: oklch(0.922 0 0);
115
116
  --ring: var(--primary);
116
117
  --radius: 0.625rem;
117
- --sidebar: oklch(0.985 0 0);
118
+ --sidebar: oklch(0.935 0 0);
118
119
  --sidebar-foreground: oklch(0.145 0 0);
119
120
  --sidebar-primary: var(--primary);
120
121
  --sidebar-primary-foreground: var(--primary-foreground);
121
122
  --sidebar-accent: oklch(0.97 0 0);
122
123
  --sidebar-accent-foreground: oklch(0.205 0 0);
124
+ --sidebar-accent-hover: oklch(0.955 0 0);
123
125
  --sidebar-border: oklch(0.922 0 0);
124
126
  --sidebar-ring: oklch(0.87 0 0);
125
127
  }
@@ -168,6 +170,7 @@
168
170
  --sidebar-primary-foreground: var(--primary-foreground);
169
171
  --sidebar-accent: oklch(0.269 0 0);
170
172
  --sidebar-accent-foreground: oklch(0.985 0 0);
173
+ --sidebar-accent-hover: oklch(0.3 0 0);
171
174
  --sidebar-border: oklch(0.269 0 0);
172
175
  --sidebar-ring: oklch(0.439 0 0);
173
176
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-collapsed-groups.tsx","../src/hooks/use-initials.tsx","../src/shells/nav-footer.tsx","../src/shells/nav-main.tsx","../src/shells/user-info.tsx","../src/shells/user-menu-content.tsx","../src/shells/nav-user.tsx","../src/shells/app-sidebar.tsx","../src/shells/breadcrumbs.tsx","../src/shells/app-sidebar-header.tsx","../src/shells/heading.tsx","../src/shells/settings-layout.tsx"],"names":["useCallback","jsx","jsxs","Fragment","useState","useEffect"],"mappings":"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","file":"chunk-4SOQAVUP.js","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nexport const SIDEBAR_COLLAPSED_GROUPS_KEY = 'akira-ui:collapsed-nav-groups';\n\nfunction readCollapsedGroups(): string[] | null {\n if (typeof window === 'undefined') {\n return null;\n }\n\n try {\n const raw = window.localStorage.getItem(SIDEBAR_COLLAPSED_GROUPS_KEY);\n\n if (raw === null) {\n return null;\n }\n\n const parsed: unknown = JSON.parse(raw);\n\n return Array.isArray(parsed)\n ? parsed.filter(\n (entry): entry is string => typeof entry === 'string',\n )\n : null;\n } catch {\n return null;\n }\n}\n\nfunction writeCollapsedGroups(groups: string[]): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n window.localStorage.setItem(\n SIDEBAR_COLLAPSED_GROUPS_KEY,\n JSON.stringify(groups),\n );\n } catch {\n return;\n }\n}\n\nfunction withGroup(groups: string[], group: string, collapsed: boolean) {\n if (!collapsed) {\n return groups.filter((entry) => entry !== group);\n }\n\n return groups.includes(group) ? groups : [...groups, group];\n}\n\nexport interface CollapsedGroupsOptions {\n group: string;\n defaultOpen?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n}\n\nexport function useCollapsedGroup({\n group,\n defaultOpen = true,\n collapsedGroups,\n onCollapsedChange,\n}: CollapsedGroupsOptions) {\n const isControlled =\n collapsedGroups !== undefined && onCollapsedChange !== undefined;\n\n const [storedGroups, setStoredGroups] = useState<string[]>(() =>\n defaultOpen ? [] : [group],\n );\n\n useEffect(() => {\n if (isControlled) {\n return;\n }\n\n const persisted = readCollapsedGroups();\n\n if (persisted !== null) {\n setStoredGroups(persisted);\n }\n }, [isControlled]);\n\n const setOpen = useCallback(\n (open: boolean) => {\n if (isControlled) {\n onCollapsedChange(withGroup(collapsedGroups, group, !open));\n\n return;\n }\n\n const next = withGroup(\n readCollapsedGroups() ?? storedGroups,\n group,\n !open,\n );\n\n setStoredGroups(next);\n writeCollapsedGroups(next);\n },\n [collapsedGroups, group, isControlled, onCollapsedChange, storedGroups],\n );\n\n const source = isControlled ? collapsedGroups : storedGroups;\n\n return { open: !source.includes(group), setOpen };\n}\n","import { useCallback } from 'react';\n\nexport function useInitials() {\n return useCallback((fullName: string): string => {\n const names = fullName.trim().split(' ');\n\n if (names.length === 0) return '';\n if (names.length === 1) return names[0].charAt(0).toUpperCase();\n\n const firstInitial = names[0].charAt(0);\n const lastInitial = names[names.length - 1].charAt(0);\n\n return `${firstInitial}${lastInitial}`.toUpperCase();\n }, []);\n}\n","import { type ComponentPropsWithoutRef } from 'react';\n\nimport { Icon } from '@/components/ui/icon';\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from '@/components/ui/sidebar';\nimport { hrefToString } from '@/lib/href';\nimport type { NavItem } from '@/types';\n\nexport function NavFooter({\n items,\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof SidebarGroup> & {\n items: NavItem[];\n}) {\n return (\n <SidebarGroup\n {...props}\n className={`group-data-[collapsible=icon]:p-0 ${className || ''}`}\n >\n <SidebarGroupContent>\n <SidebarMenu>\n {items.map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <a\n href={hrefToString(item.href)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {item.icon && (\n <Icon\n iconNode={item.icon}\n className=\"h-5 w-5\"\n />\n )}\n <span>{item.title}</span>\n </a>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n );\n}\n","import { ChevronDown } from 'lucide-react';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport {\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from '@/components/ui/sidebar';\nimport { useCollapsedGroup } from '@/hooks/use-collapsed-groups';\nimport { hrefToString, resolveLink } from '@/lib/href';\nimport { cn } from '@/lib/utils';\nimport type { LinkComponent, NavItem } from '@/types';\n\nfunction isItemActive(item: NavItem, currentUrl: string): boolean {\n if (item.isActive !== undefined) {\n return item.isActive;\n }\n\n if (!currentUrl) {\n return false;\n }\n\n return currentUrl.startsWith(hrefToString(item.href));\n}\n\nexport interface NavMainProps {\n items: NavItem[];\n label?: string;\n currentUrl?: string;\n linkComponent?: LinkComponent;\n collapsible?: boolean;\n defaultOpen?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n}\n\nexport function NavMain({\n items = [],\n label = 'Platform',\n currentUrl = '',\n linkComponent,\n collapsible = false,\n defaultOpen = true,\n collapsedGroups,\n onCollapsedChange,\n}: NavMainProps) {\n const Link = resolveLink(linkComponent);\n const holdsCurrentRoute = items.some((item) =>\n isItemActive(item, currentUrl),\n );\n const { open, setOpen } = useCollapsedGroup({\n group: label,\n defaultOpen,\n collapsedGroups,\n onCollapsedChange,\n });\n const expanded = open || holdsCurrentRoute;\n\n const menu = (\n <SidebarMenu>\n {items.map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isItemActive(item, currentUrl)}\n tooltip={{ children: item.title }}\n >\n <Link href={item.href} prefetch>\n {item.icon && <item.icon />}\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n );\n\n if (!collapsible || !label) {\n return (\n <SidebarGroup className=\"px-2 py-0\">\n {label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n {menu}\n </SidebarGroup>\n );\n }\n\n return (\n <SidebarGroup className=\"px-2 py-0\">\n <Collapsible open={expanded} onOpenChange={setOpen}>\n <CollapsibleTrigger asChild>\n <SidebarGroupLabel className=\"w-full cursor-pointer justify-between\">\n {label}\n <ChevronDown\n className={cn(\n 'size-4 transition-transform',\n !expanded && '-rotate-90',\n )}\n />\n </SidebarGroupLabel>\n </CollapsibleTrigger>\n <CollapsibleContent>{menu}</CollapsibleContent>\n </Collapsible>\n </SidebarGroup>\n );\n}\n","import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';\nimport { useInitials } from '@/hooks/use-initials';\nimport type { SharedUser } from '@/types';\n\nexport function UserInfo({\n user,\n showEmail = false,\n}: {\n user: SharedUser;\n showEmail?: boolean;\n}) {\n const getInitials = useInitials();\n\n return (\n <>\n <Avatar className=\"h-8 w-8 overflow-hidden rounded-full\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-xl bg-muted text-foreground\">\n {getInitials(user.name)}\n </AvatarFallback>\n </Avatar>\n <div className=\"text-sm leading-tight grid flex-1 text-left\">\n <span className=\"font-medium truncate\">{user.name}</span>\n {showEmail && (\n <span className=\"text-xs truncate text-muted-foreground\">\n {user.email}\n </span>\n )}\n </div>\n </>\n );\n}\n","import { LogOut, Settings } from 'lucide-react';\n\nimport {\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from '@/components/ui/dropdown-menu';\nimport { resolveLink } from '@/lib/href';\nimport type { LinkComponent, SharedUser, UrlLike } from '@/types';\nimport { UserInfo } from './user-info';\n\ninterface UserMenuContentProps {\n user: SharedUser;\n settingsHref: UrlLike;\n logoutHref: UrlLike;\n linkComponent?: LinkComponent;\n onSettingsClick?: () => void;\n onLogout?: () => void;\n settingsLabel?: string;\n logoutLabel?: string;\n}\n\nexport function UserMenuContent({\n user,\n settingsHref,\n logoutHref,\n linkComponent,\n onSettingsClick,\n onLogout,\n settingsLabel = 'Settings',\n logoutLabel = 'Log out',\n}: UserMenuContentProps) {\n const Link = resolveLink(linkComponent);\n\n return (\n <>\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"gap-2 px-1 py-1.5 text-sm flex items-center text-left\">\n <UserInfo user={user} showEmail={true} />\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem asChild>\n <Link\n className=\"block w-full\"\n href={settingsHref}\n as=\"button\"\n prefetch\n onClick={onSettingsClick}\n >\n <Settings className=\"mr-2\" />\n {settingsLabel}\n </Link>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem asChild>\n <Link\n className=\"block w-full\"\n href={logoutHref}\n as=\"button\"\n onClick={onLogout}\n data-test=\"logout-button\"\n >\n <LogOut className=\"mr-2\" />\n {logoutLabel}\n </Link>\n </DropdownMenuItem>\n </>\n );\n}\n","import { ChevronsUpDown } from 'lucide-react';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from '@/components/ui/sidebar';\nimport { useIsMobile } from '@/hooks/use-mobile';\nimport type { LinkComponent, SharedUser, UrlLike } from '@/types';\nimport { UserInfo } from './user-info';\nimport { UserMenuContent } from './user-menu-content';\n\ninterface NavUserProps {\n user: SharedUser;\n settingsHref: UrlLike;\n logoutHref: UrlLike;\n linkComponent?: LinkComponent;\n onSettingsClick?: () => void;\n onLogout?: () => void;\n}\n\nexport function NavUser({\n user,\n settingsHref,\n logoutHref,\n linkComponent,\n onSettingsClick,\n onLogout,\n}: NavUserProps) {\n const { state } = useSidebar();\n const isMobile = useIsMobile();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent\"\n data-test=\"sidebar-menu-button\"\n >\n <UserInfo user={user} />\n <ChevronsUpDown className=\"size-4 ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"min-w-56 rounded-xl w-(--radix-dropdown-menu-trigger-width)\"\n align=\"end\"\n side={\n isMobile\n ? 'bottom'\n : state === 'collapsed'\n ? 'left'\n : 'bottom'\n }\n >\n <UserMenuContent\n user={user}\n settingsHref={settingsHref}\n logoutHref={logoutHref}\n linkComponent={linkComponent}\n onSettingsClick={onSettingsClick}\n onLogout={onLogout}\n />\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n","import { type ReactNode } from 'react';\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from '@/components/ui/sidebar';\nimport { hrefToString, resolveLink } from '@/lib/href';\nimport type {\n LinkComponent,\n NavGroup,\n NavItem,\n SharedUser,\n UrlLike,\n} from '@/types';\nimport { NavFooter } from './nav-footer';\nimport { NavMain } from './nav-main';\nimport { NavUser } from './nav-user';\n\nfunction mostSpecificActiveHref(\n groups: NavGroup[],\n currentUrl: string,\n): string {\n let best = '';\n for (const group of groups) {\n for (const item of group.items) {\n const href = hrefToString(item.href);\n const matches =\n currentUrl === href || currentUrl.startsWith(`${href}/`);\n if (matches && href.length > best.length) {\n best = href;\n }\n }\n }\n return best;\n}\n\ninterface AppSidebarProps {\n logo: ReactNode;\n logoHref: UrlLike;\n groups: NavGroup[];\n footerItems?: NavItem[];\n user: SharedUser;\n settingsHref: UrlLike;\n logoutHref: UrlLike;\n currentUrl?: string;\n linkComponent?: LinkComponent;\n collapsibleGroups?: boolean;\n collapsedGroups?: string[];\n onCollapsedChange?: (collapsedGroups: string[]) => void;\n onSettingsClick?: () => void;\n onLogout?: () => void;\n}\n\nexport function AppSidebar({\n logo,\n logoHref,\n groups,\n footerItems = [],\n user,\n settingsHref,\n logoutHref,\n currentUrl = '',\n linkComponent,\n collapsibleGroups = false,\n collapsedGroups,\n onCollapsedChange,\n onSettingsClick,\n onLogout,\n}: AppSidebarProps) {\n const Link = resolveLink(linkComponent);\n const activeHref = mostSpecificActiveHref(groups, currentUrl);\n const resolvedGroups = groups.map((group) => ({\n ...group,\n items: group.items.map((item) => ({\n ...item,\n isActive: hrefToString(item.href) === activeHref,\n })),\n }));\n\n return (\n <Sidebar collapsible=\"icon\" variant=\"inset\">\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton size=\"lg\" asChild>\n <Link href={logoHref} prefetch>\n {logo}\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n\n <SidebarContent>\n {resolvedGroups.map((group, index) => (\n <NavMain\n key={group.label ?? index}\n items={group.items}\n label={group.label ?? ''}\n currentUrl={currentUrl}\n linkComponent={linkComponent}\n collapsible={collapsibleGroups}\n collapsedGroups={collapsedGroups}\n onCollapsedChange={onCollapsedChange}\n />\n ))}\n </SidebarContent>\n\n <SidebarFooter>\n {footerItems.length > 0 && (\n <NavFooter items={footerItems} className=\"mt-auto\" />\n )}\n <NavUser\n user={user}\n settingsHref={settingsHref}\n logoutHref={logoutHref}\n linkComponent={linkComponent}\n onSettingsClick={onSettingsClick}\n onLogout={onLogout}\n />\n </SidebarFooter>\n </Sidebar>\n );\n}\n","import { Fragment } from 'react';\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '@/components/ui/breadcrumb';\nimport { resolveLink } from '@/lib/href';\nimport type {\n BreadcrumbItem as BreadcrumbItemType,\n LinkComponent,\n} from '@/types';\n\nexport function Breadcrumbs({\n breadcrumbs,\n linkComponent,\n}: {\n breadcrumbs: BreadcrumbItemType[];\n linkComponent?: LinkComponent;\n}) {\n const Link = resolveLink(linkComponent);\n\n if (breadcrumbs.length === 0) {\n return null;\n }\n\n return (\n <Breadcrumb>\n <BreadcrumbList>\n {breadcrumbs.map((item, index) => {\n const isLast = index === breadcrumbs.length - 1;\n return (\n <Fragment key={index}>\n <BreadcrumbItem>\n {isLast ? (\n <BreadcrumbPage>\n {item.title}\n </BreadcrumbPage>\n ) : (\n <BreadcrumbLink asChild>\n <Link href={item.href}>\n {item.title}\n </Link>\n </BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {!isLast && <BreadcrumbSeparator />}\n </Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n","import { Search } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport { SidebarTrigger } from '@/components/ui/sidebar';\nimport type {\n BreadcrumbItem as BreadcrumbItemType,\n LinkComponent,\n} from '@/types';\nimport { Breadcrumbs } from './breadcrumbs';\n\ninterface AppSidebarHeaderProps {\n breadcrumbs?: BreadcrumbItemType[];\n linkComponent?: LinkComponent;\n onSearchClick?: () => void;\n searchLabel?: string;\n}\n\nexport function AppSidebarHeader({\n breadcrumbs = [],\n linkComponent,\n onSearchClick,\n searchLabel = 'Search...',\n}: AppSidebarHeaderProps) {\n const [modifier, setModifier] = useState('Ctrl');\n\n useEffect(() => {\n const platform = navigator.userAgent;\n setModifier(/Mac|iPhone|iPad|iPod/.test(platform) ? '⌘' : 'Ctrl');\n }, []);\n\n return (\n <header className=\"h-16 gap-2 px-6 group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4 flex shrink-0 items-center border-b border-sidebar-border/50 transition-[width,height] ease-linear\">\n <div className=\"gap-2 flex items-center\">\n <SidebarTrigger className=\"-ml-1\" />\n <Breadcrumbs\n breadcrumbs={breadcrumbs}\n linkComponent={linkComponent}\n />\n </div>\n\n {onSearchClick && (\n <button\n type=\"button\"\n onClick={onSearchClick}\n className=\"h-9 w-56 gap-2 rounded-xl px-3 text-sm ml-auto flex items-center border border-border/60 bg-muted/30 text-muted-foreground transition-colors hover:bg-muted/50\"\n >\n <Search className=\"size-4\" />\n <span>{searchLabel}</span>\n <kbd className=\"gap-0.5 px-1.5 py-0.5 font-semibold rounded-xl ml-auto inline-flex items-center border border-border/60 bg-background font-sans text-[10px] text-muted-foreground\">\n <span>{modifier}</span>\n <span>K</span>\n </kbd>\n </button>\n )}\n </header>\n );\n}\n","export function Heading({\n title,\n description,\n}: {\n title: string;\n description?: string;\n}) {\n return (\n <div className=\"mb-8 space-y-0.5\">\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n );\n}\n","import { type PropsWithChildren } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { hrefToString, resolveLink } from '@/lib/href';\nimport { cn } from '@/lib/utils';\nimport type { LinkComponent, NavItem } from '@/types';\nimport { Heading } from './heading';\n\nexport interface SettingsLayoutProps {\n items: NavItem[];\n linkComponent?: LinkComponent;\n currentPath?: string;\n title?: string;\n description?: string;\n wide?: boolean;\n}\n\nexport function SettingsLayout({\n items,\n linkComponent,\n currentPath,\n title = 'Settings',\n description = 'Manage your profile and account settings',\n wide = false,\n children,\n}: PropsWithChildren<SettingsLayoutProps>) {\n const Link = resolveLink(linkComponent);\n const activePath =\n currentPath ??\n (typeof window === 'undefined' ? '' : window.location.pathname);\n\n return (\n <div className=\"px-4 py-6\">\n <Heading title={title} description={description} />\n\n <div className=\"lg:flex-row lg:space-x-12 flex flex-col\">\n <aside className=\"max-w-xl lg:w-48 w-full\">\n <nav className=\"space-y-1 space-x-0 flex flex-col\">\n {items.map((item, index) => {\n const href = hrefToString(item.href);\n return (\n <Button\n key={`${href}-${index}`}\n size=\"sm\"\n variant=\"ghost\"\n asChild\n className={cn('w-full justify-start', {\n 'bg-muted': activePath === href,\n })}\n >\n <Link href={item.href}>\n {item.icon && (\n <item.icon className=\"h-4 w-4\" />\n )}\n {item.title}\n </Link>\n </Button>\n );\n })}\n </nav>\n </aside>\n\n <Separator className=\"my-6 lg:hidden\" />\n\n <div\n className={cn(\n wide ? 'min-w-0 flex-1' : 'md:max-w-2xl flex-1',\n )}\n >\n <section\n className={cn(\n 'space-y-12',\n wide ? 'max-w-5xl' : 'max-w-xl',\n )}\n >\n {children}\n </section>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/locales/context.tsx"],"names":[],"mappings":";;;;AAgDA,IAAM,QAAkB,EAAC;AAEzB,IAAM,eAAA,GAAkB,cAAwB,KAAK,CAAA;AAE9C,SAAS,gBAAA,CAAiB;AAAA,EAC7B,MAAA;AAAA,EACA;AACJ,CAAA,EAGG;AACC,EAAA,2BACK,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,QAC5B,QAAA,EACL,CAAA;AAER;AAEO,SAAS,WAAA,GAAwB;AACpC,EAAA,OAAO,WAAW,eAAe,CAAA;AACrC;AAEA,SAAS,QAAQ,MAAA,EAAqD;AAClE,EAAA,IAAI,CAAC,MAAA,EAAQ;AACT,IAAA,OAAO,EAAC;AAAA,EACZ;AAEA,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACV,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,KAAU,MAAS;AAAA,GACpE;AACJ;AAEO,SAAS,WAAA,CACZ,OAAA,EACA,QAAA,EACA,SAAA,EACwB;AACxB,EAAA,MAAM,SAAS,WAAA,EAAY;AAE3B,EAAA,OAAO;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,IAC1B,GAAG,QAAQ,SAAS;AAAA,GACxB;AACJ","file":"chunk-5AJFQ6C4.js","sourcesContent":["import type { CommandPaletteLabels } from '@/blocks/command-palette';\nimport type {\n DateFilterLabels,\n DateFilterOption,\n} from '@/blocks/date-filter/types';\nimport type { SettingsLabels } from '@/blocks/settings-page';\nimport type { TourLabels } from '@/blocks/tour/types';\nimport type { AppearanceToggleLabels } from '@/components/ui/appearance-toggle';\nimport type { CodeBlockLabels } from '@/components/ui/code-block';\nimport type { ComboboxLabels } from '@/components/ui/combobox';\nimport type { ConfirmDialogLabels } from '@/components/ui/confirm-dialog';\nimport type { CopyButtonLabels } from '@/components/ui/copy-button';\nimport type { DataTableLabels } from '@/components/ui/data-table';\nimport type { DataTableFacetedFilterLabels } from '@/components/ui/data-table-faceted-filter';\nimport type { DatePickerLabels } from '@/components/ui/date-picker';\nimport type { DateRangeFilterLabels } from '@/components/ui/date-range-filter';\nimport type { FloatingSheetLabels } from '@/components/ui/floating-sheet-context';\nimport type { JsonViewerLabels } from '@/components/ui/json-viewer';\nimport type { SaveStatusLabels } from '@/components/ui/save-status';\nimport { createContext, useContext, type ReactNode } from 'react';\n\nexport interface UiLabelSections {\n appearanceToggle: AppearanceToggleLabels;\n codeBlock: CodeBlockLabels;\n combobox: ComboboxLabels;\n commandPalette: CommandPaletteLabels;\n confirmDialog: ConfirmDialogLabels;\n copyButton: CopyButtonLabels;\n dataTable: DataTableLabels;\n dataTableFacetedFilter: DataTableFacetedFilterLabels;\n dateFilter: DateFilterLabels;\n datePicker: DatePickerLabels;\n dateRangeFilter: DateRangeFilterLabels;\n floatingSheet: FloatingSheetLabels;\n jsonViewer: JsonViewerLabels;\n saveStatus: SaveStatusLabels;\n settings: SettingsLabels;\n tour: TourLabels;\n}\n\nexport type UiLabels = {\n [Section in keyof UiLabelSections]?: Partial<UiLabelSections[Section]>;\n} & {\n dateFilterPresets?: DateFilterOption[];\n dateFilterOperators?: DateFilterOption[];\n dateFilterUnits?: DateFilterOption[];\n};\n\nconst EMPTY: UiLabels = {};\n\nconst UiLocaleContext = createContext<UiLabels>(EMPTY);\n\nexport function UiLocaleProvider({\n labels,\n children,\n}: {\n labels: UiLabels;\n children: ReactNode;\n}) {\n return (\n <UiLocaleContext.Provider value={labels}>\n {children}\n </UiLocaleContext.Provider>\n );\n}\n\nexport function useUiLocale(): UiLabels {\n return useContext(UiLocaleContext);\n}\n\nfunction defined(source: object | undefined): Record<string, unknown> {\n if (!source) {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(source).filter(([, value]) => value !== undefined),\n );\n}\n\nexport function useUiLabels<Section extends keyof UiLabelSections>(\n section: Section,\n defaults: UiLabelSections[Section],\n overrides?: Partial<UiLabelSections[Section]>,\n): UiLabelSections[Section] {\n const locale = useUiLocale();\n\n return {\n ...defaults,\n ...defined(locale[section]),\n ...defined(overrides),\n } as UiLabelSections[Section];\n}\n"]}