@akira-io/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,86 @@
1
+ import { TourProvider } from './chunk-UXL33CZ4.js';
2
+ import { AppSidebar, AppSidebarHeader, Breadcrumbs, NavMain, SettingsLayout } from './chunk-A2SIZOEA.js';
3
+ import './chunk-5MQWJVM2.js';
4
+ import './chunk-POE7OYET.js';
5
+ import { Link, usePage } from '@inertiajs/react';
6
+ import { createElement } from 'react';
7
+
8
+ // src/inertia-tour-progress.ts
9
+ function xsrfToken() {
10
+ const cookie = document.cookie.split("; ").find((entry) => entry.startsWith("XSRF-TOKEN="));
11
+ return cookie ? decodeURIComponent(cookie.slice("XSRF-TOKEN=".length)) : "";
12
+ }
13
+ function recordTourProgress(url, progress) {
14
+ void fetch(url, {
15
+ method: "POST",
16
+ credentials: "same-origin",
17
+ keepalive: true,
18
+ headers: {
19
+ "Content-Type": "application/json",
20
+ Accept: "application/json",
21
+ "X-Requested-With": "XMLHttpRequest",
22
+ "X-XSRF-TOKEN": xsrfToken()
23
+ },
24
+ body: JSON.stringify({
25
+ version: progress.version,
26
+ last_step: progress.lastStep,
27
+ outcome: progress.outcome
28
+ })
29
+ });
30
+ }
31
+
32
+ // src/inertia.ts
33
+ var InertiaLink = Link;
34
+ function useCurrentUrl() {
35
+ return usePage().url;
36
+ }
37
+ function AppSidebar2(props) {
38
+ return createElement(AppSidebar, {
39
+ ...props,
40
+ currentUrl: usePage().url,
41
+ linkComponent: InertiaLink
42
+ });
43
+ }
44
+ function AppSidebarHeader2(props) {
45
+ return createElement(AppSidebarHeader, {
46
+ ...props,
47
+ linkComponent: InertiaLink
48
+ });
49
+ }
50
+ function Breadcrumbs2(props) {
51
+ return createElement(Breadcrumbs, {
52
+ ...props,
53
+ linkComponent: InertiaLink
54
+ });
55
+ }
56
+ function NavMain2(props) {
57
+ return createElement(NavMain, {
58
+ ...props,
59
+ currentUrl: usePage().url,
60
+ linkComponent: InertiaLink
61
+ });
62
+ }
63
+ function SettingsLayout2(props) {
64
+ return createElement(SettingsLayout, {
65
+ ...props,
66
+ currentPath: usePage().url,
67
+ linkComponent: InertiaLink
68
+ });
69
+ }
70
+ function InertiaTourProvider({
71
+ children,
72
+ progressUrl,
73
+ labels
74
+ }) {
75
+ const seen = usePage().props.tours ?? {};
76
+ return createElement(TourProvider, {
77
+ seen,
78
+ labels,
79
+ children,
80
+ onProgress: (progress) => recordTourProgress(progressUrl(progress.tour), progress)
81
+ });
82
+ }
83
+
84
+ export { AppSidebar2 as AppSidebar, AppSidebarHeader2 as AppSidebarHeader, Breadcrumbs2 as Breadcrumbs, InertiaLink, InertiaTourProvider, NavMain2 as NavMain, SettingsLayout2 as SettingsLayout, useCurrentUrl };
85
+ //# sourceMappingURL=inertia.js.map
86
+ //# sourceMappingURL=inertia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/inertia-tour-progress.ts","../src/inertia.ts"],"names":["AppSidebar","AppSidebarHeader","Breadcrumbs","NavMain","SettingsLayout"],"mappings":";;;;;;;;AAEO,SAAS,SAAA,GAAoB;AAChC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,MAAA,CACnB,KAAA,CAAM,IAAI,CAAA,CACV,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,UAAA,CAAW,aAAa,CAAC,CAAA;AAEpD,EAAA,OAAO,SAAS,kBAAA,CAAmB,MAAA,CAAO,MAAM,aAAA,CAAc,MAAM,CAAC,CAAA,GAAI,EAAA;AAC7E;AAEO,SAAS,kBAAA,CAAmB,KAAa,QAAA,EAA8B;AAC1E,EAAA,KAAK,MAAM,GAAA,EAAK;AAAA,IACZ,MAAA,EAAQ,MAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,OAAA,EAAS;AAAA,MACL,cAAA,EAAgB,kBAAA;AAAA,MAChB,MAAA,EAAQ,kBAAA;AAAA,MACR,kBAAA,EAAoB,gBAAA;AAAA,MACpB,gBAAgB,SAAA;AAAU,KAC9B;AAAA,IACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,MACjB,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,WAAW,QAAA,CAAS,QAAA;AAAA,MACpB,SAAS,QAAA,CAAS;AAAA,KACrB;AAAA,GACJ,CAAA;AACL;;;ACCO,IAAM,WAAA,GAAc;AAEpB,SAAS,aAAA,GAAwB;AACpC,EAAA,OAAO,SAAQ,CAAE,GAAA;AACrB;AAEO,SAASA,YAAW,KAAA,EAUV;AACb,EAAA,OAAO,cAAc,UAAA,EAAgB;AAAA,IACjC,GAAG,KAAA;AAAA,IACH,UAAA,EAAY,SAAQ,CAAE,GAAA;AAAA,IACtB,aAAA,EAAe;AAAA,GAClB,CAAA;AACL;AAEO,SAASC,kBAAiB,KAAA,EAIhB;AACb,EAAA,OAAO,cAAc,gBAAA,EAAsB;AAAA,IACvC,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GAClB,CAAA;AACL;AAEO,SAASC,aAAY,KAAA,EAEX;AACb,EAAA,OAAO,cAAc,WAAA,EAAiB;AAAA,IAClC,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,GAClB,CAAA;AACL;AAEO,SAASC,SAAQ,KAAA,EAGP;AACb,EAAA,OAAO,cAAc,OAAA,EAAa;AAAA,IAC9B,GAAG,KAAA;AAAA,IACH,UAAA,EAAY,SAAQ,CAAE,GAAA;AAAA,IACtB,aAAA,EAAe;AAAA,GAClB,CAAA;AACL;AAEO,SAASC,gBACZ,KAAA,EAMY;AACZ,EAAA,OAAO,cAAc,cAAA,EAAoB;AAAA,IACrC,GAAG,KAAA;AAAA,IACH,WAAA,EAAa,SAAQ,CAAE,GAAA;AAAA,IACvB,aAAA,EAAe;AAAA,GAClB,CAAA;AACL;AAEO,SAAS,mBAAA,CAAoB;AAAA,EAChC,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACJ,CAAA,EAGkB;AACd,EAAA,MAAM,IAAA,GAAQ,OAAA,EAAQ,CAAE,KAAA,CAAM,SAAS,EAAC;AAExC,EAAA,OAAO,cAAc,YAAA,EAAkB;AAAA,IACnC,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA,EAAY,CAAC,QAAA,KACT,kBAAA,CAAmB,YAAY,QAAA,CAAS,IAAI,GAAG,QAAQ;AAAA,GAC9D,CAAA;AACL","file":"inertia.js","sourcesContent":["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, 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 { 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 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 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}): 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"]}
@@ -0,0 +1,14 @@
1
+ declare const elevatedSurface = "ring-1 ring-surface-ring backdrop-blur-2xl backdrop-saturate-150 rounded-3xl border-0 shadow-(--glass-elevation)";
2
+ declare const recessedSurface = "rounded-2xl border-0 bg-surface-recessed text-foreground shadow-none ring-0 backdrop-blur-none";
3
+ declare const nestedRadius = "rounded-2xl";
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
+ declare const nestedEdgeToEdge = "nested-surface:rounded-none";
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";
8
+ declare const menuHighlight = "outline-hidden focus:bg-accent focus:text-accent-foreground";
9
+ interface SurfaceProps {
10
+ inset?: boolean;
11
+ }
12
+ declare function surface(inset?: boolean | null): string;
13
+
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 };
@@ -0,0 +1,21 @@
1
+ import { m as CommandPaletteLabels, a as DateFilterLabels, b as DateFilterOption } from '../types-cOieac8G.js';
2
+ import { d as TourLabels } from '../types-u1qfmJQi.js';
3
+ import { a as ComboboxLabels, d as ConfirmDialogLabels, e as DataTableFacetedFilterLabels, g as DataTableLabels, k as DateRangeFilterLabels } from '../date-range-filter-QEa8fhUM.js';
4
+ import 'react';
5
+ import 'lucide-react';
6
+ import '@tanstack/react-table';
7
+ import '../types-Cno1_Ijx.js';
8
+
9
+ declare const dataTableLabelsPt: DataTableLabels;
10
+ declare const dateRangeFilterLabelsPt: DateRangeFilterLabels;
11
+ declare const comboboxLabelsPt: ComboboxLabels;
12
+ declare const confirmDialogLabelsPt: ConfirmDialogLabels;
13
+ declare const dataTableFacetedFilterLabelsPt: DataTableFacetedFilterLabels;
14
+ declare const commandPaletteLabelsPt: CommandPaletteLabels;
15
+ declare const tourLabelsPt: TourLabels;
16
+ declare const dateFilterPresetsPt: DateFilterOption[];
17
+ declare const dateFilterOperatorsPt: DateFilterOption[];
18
+ declare const dateFilterUnitsPt: DateFilterOption[];
19
+ declare const dateFilterLabelsPt: DateFilterLabels;
20
+
21
+ export { comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, dateRangeFilterLabelsPt, tourLabelsPt };
@@ -0,0 +1,79 @@
1
+ // src/locales/pt.ts
2
+ var dataTableLabelsPt = {
3
+ searchPlaceholder: "Pesquisar...",
4
+ emptyLabel: "Sem registos.",
5
+ createLabel: "Novo",
6
+ clearFiltersLabel: "Limpar filtros",
7
+ paginationLabel: (page, pages) => `P\xE1gina ${page} de ${pages}`,
8
+ noOptionsLabel: "Sem op\xE7\xF5es.",
9
+ totalLabel: (total) => `${total.toLocaleString("pt-PT")} registos`
10
+ };
11
+ var dateRangeFilterLabelsPt = {
12
+ emptyLabel: "Per\xEDodo",
13
+ dateFormat: "dd/MM/yy"
14
+ };
15
+ var comboboxLabelsPt = {
16
+ placeholder: "Seleccione uma op\xE7\xE3o",
17
+ searchPlaceholder: "Pesquisar...",
18
+ emptyText: "Sem resultados."
19
+ };
20
+ var confirmDialogLabelsPt = {
21
+ title: "Confirmar A\xE7\xE3o",
22
+ description: "Tem a certeza que pretende continuar? Esta a\xE7\xE3o n\xE3o pode ser desfeita.",
23
+ confirmText: "Confirmar",
24
+ cancelText: "Cancelar"
25
+ };
26
+ var dataTableFacetedFilterLabelsPt = {
27
+ noOptionsLabel: "Sem op\xE7\xF5es."
28
+ };
29
+ var commandPaletteLabelsPt = {
30
+ placeholder: "Pesquisar...",
31
+ noResultsLabel: "Nenhum resultado encontrado"
32
+ };
33
+ var tourLabelsPt = {
34
+ next: "Seguinte",
35
+ previous: "Anterior",
36
+ done: "Concluir",
37
+ progress: "{{current}} de {{total}}"
38
+ };
39
+ var dateFilterPresetsPt = [
40
+ { value: "today", label: "Hoje" },
41
+ { value: "yesterday", label: "Ontem" },
42
+ { value: "previous_week", label: "Semana anterior" },
43
+ { value: "previous_7_days", label: "\xDAltimos 7 dias" },
44
+ { value: "previous_30_days", label: "\xDAltimos 30 dias" },
45
+ { value: "previous_month", label: "M\xEAs anterior" },
46
+ { value: "previous_3_months", label: "\xDAltimos 3 meses" },
47
+ { value: "previous_12_months", label: "\xDAltimos 12 meses" }
48
+ ];
49
+ var dateFilterOperatorsPt = [
50
+ { value: "between", label: "Entre" },
51
+ { value: "before", label: "Antes de" },
52
+ { value: "on", label: "Em" },
53
+ { value: "after", label: "Depois de" }
54
+ ];
55
+ var dateFilterUnitsPt = [
56
+ { value: "day", label: "dias" },
57
+ { value: "week", label: "semanas" },
58
+ { value: "month", label: "meses" },
59
+ { value: "quarter", label: "trimestres" },
60
+ { value: "year", label: "anos" }
61
+ ];
62
+ var dateFilterLabelsPt = {
63
+ all: "Todo o per\xEDodo",
64
+ fixed: "Intervalo fixo...",
65
+ relative: "Intervalo relativo...",
66
+ relativeTitle: "Intervalo relativo",
67
+ apply: "Aplicar filtro",
68
+ back: "Voltar",
69
+ latest: "\xDAltimos",
70
+ ago: "h\xE1",
71
+ includeCurrent: "Incluir per\xEDodo atual",
72
+ startingAgo: "A come\xE7ar h\xE1",
73
+ removeOffset: "Remover deslocamento",
74
+ fallback: "Data"
75
+ };
76
+
77
+ export { comboboxLabelsPt, commandPaletteLabelsPt, confirmDialogLabelsPt, dataTableFacetedFilterLabelsPt, dataTableLabelsPt, dateFilterLabelsPt, dateFilterOperatorsPt, dateFilterPresetsPt, dateFilterUnitsPt, dateRangeFilterLabelsPt, tourLabelsPt };
78
+ //# sourceMappingURL=pt.js.map
79
+ //# sourceMappingURL=pt.js.map
@@ -0,0 +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 {\n DateFilterLabels,\n DateFilterOption,\n} from '@/blocks/date-filter/types';\nimport type { TourLabels } from '@/blocks/tour/types';\nimport type { ComboboxLabels } from '@/components/ui/combobox';\nimport type { ConfirmDialogLabels } from '@/components/ui/confirm-dialog';\nimport type { DataTableLabels } from '@/components/ui/data-table';\nimport type { DataTableFacetedFilterLabels } from '@/components/ui/data-table-faceted-filter';\nimport type { DateRangeFilterLabels } from '@/components/ui/date-range-filter';\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 dateRangeFilterLabelsPt: DateRangeFilterLabels = {\n emptyLabel: 'Período',\n dateFormat: 'dd/MM/yy',\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 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"]}
@@ -0,0 +1,121 @@
1
+ import { U as UrlLike, N as NavGroup, a as NavItem, S as SharedUser, L as LinkComponent, B as BreadcrumbItem } from './types-Cno1_Ijx.js';
2
+ export { I as IconComponent, b as LinkProps } from './types-Cno1_Ijx.js';
3
+ import * as React from 'react';
4
+ import { ReactNode, ComponentPropsWithoutRef, PropsWithChildren } from 'react';
5
+ import { d as SidebarGroup } from './sidebar-BDhG9SUU.js';
6
+ import 'class-variance-authority/types';
7
+ import 'class-variance-authority';
8
+ import '@radix-ui/react-separator';
9
+ import '@radix-ui/react-tooltip';
10
+
11
+ declare function hrefToString(href: UrlLike): string;
12
+
13
+ type Appearance = 'light' | 'dark' | 'system';
14
+ declare function initializeTheme(): void;
15
+ declare function useAppearance(): {
16
+ readonly appearance: Appearance;
17
+ readonly updateAppearance: (mode: Appearance) => void;
18
+ };
19
+
20
+ declare function useInitials(): (fullName: string) => string;
21
+
22
+ declare function useIsMobile(): boolean;
23
+
24
+ interface AppContentProps extends React.ComponentProps<'main'> {
25
+ variant?: 'header' | 'sidebar';
26
+ }
27
+ declare function AppContent({ variant, children, ...props }: AppContentProps): React.JSX.Element;
28
+
29
+ interface AppShellProps {
30
+ children: React.ReactNode;
31
+ variant?: 'header' | 'sidebar';
32
+ open?: boolean;
33
+ onOpenChange?: (open: boolean) => void;
34
+ defaultOpen?: boolean;
35
+ }
36
+ declare function AppShell({ children, variant, open, onOpenChange, defaultOpen, }: AppShellProps): React.JSX.Element;
37
+
38
+ interface AppSidebarProps {
39
+ logo: ReactNode;
40
+ logoHref: UrlLike;
41
+ groups: NavGroup[];
42
+ footerItems?: NavItem[];
43
+ user: SharedUser;
44
+ settingsHref: UrlLike;
45
+ logoutHref: UrlLike;
46
+ currentUrl?: string;
47
+ linkComponent?: LinkComponent;
48
+ onSettingsClick?: () => void;
49
+ onLogout?: () => void;
50
+ }
51
+ declare function AppSidebar({ logo, logoHref, groups, footerItems, user, settingsHref, logoutHref, currentUrl, linkComponent, onSettingsClick, onLogout, }: AppSidebarProps): React.JSX.Element;
52
+
53
+ interface AppSidebarHeaderProps {
54
+ breadcrumbs?: BreadcrumbItem[];
55
+ linkComponent?: LinkComponent;
56
+ onSearchClick?: () => void;
57
+ searchLabel?: string;
58
+ }
59
+ declare function AppSidebarHeader({ breadcrumbs, linkComponent, onSearchClick, searchLabel, }: AppSidebarHeaderProps): React.JSX.Element;
60
+
61
+ declare function Breadcrumbs({ breadcrumbs, linkComponent, }: {
62
+ breadcrumbs: BreadcrumbItem[];
63
+ linkComponent?: LinkComponent;
64
+ }): React.JSX.Element | null;
65
+
66
+ declare function Heading({ title, description, }: {
67
+ title: string;
68
+ description?: string;
69
+ }): React.JSX.Element;
70
+
71
+ declare function NavFooter({ items, className, ...props }: ComponentPropsWithoutRef<typeof SidebarGroup> & {
72
+ items: NavItem[];
73
+ }): React.JSX.Element;
74
+
75
+ declare function NavMain({ items, label, currentUrl, linkComponent, collapsible, defaultOpen, }: {
76
+ items: NavItem[];
77
+ label?: string;
78
+ currentUrl?: string;
79
+ linkComponent?: LinkComponent;
80
+ collapsible?: boolean;
81
+ defaultOpen?: boolean;
82
+ }): React.JSX.Element;
83
+
84
+ interface NavUserProps {
85
+ user: SharedUser;
86
+ settingsHref: UrlLike;
87
+ logoutHref: UrlLike;
88
+ linkComponent?: LinkComponent;
89
+ onSettingsClick?: () => void;
90
+ onLogout?: () => void;
91
+ }
92
+ declare function NavUser({ user, settingsHref, logoutHref, linkComponent, onSettingsClick, onLogout, }: NavUserProps): React.JSX.Element;
93
+
94
+ interface SettingsLayoutProps {
95
+ items: NavItem[];
96
+ linkComponent?: LinkComponent;
97
+ currentPath?: string;
98
+ title?: string;
99
+ description?: string;
100
+ wide?: boolean;
101
+ }
102
+ declare function SettingsLayout({ items, linkComponent, currentPath, title, description, wide, children, }: PropsWithChildren<SettingsLayoutProps>): React.JSX.Element;
103
+
104
+ declare function UserInfo({ user, showEmail, }: {
105
+ user: SharedUser;
106
+ showEmail?: boolean;
107
+ }): React.JSX.Element;
108
+
109
+ interface UserMenuContentProps {
110
+ user: SharedUser;
111
+ settingsHref: UrlLike;
112
+ logoutHref: UrlLike;
113
+ linkComponent?: LinkComponent;
114
+ onSettingsClick?: () => void;
115
+ onLogout?: () => void;
116
+ settingsLabel?: string;
117
+ logoutLabel?: string;
118
+ }
119
+ declare function UserMenuContent({ user, settingsHref, logoutHref, linkComponent, onSettingsClick, onLogout, settingsLabel, logoutLabel, }: UserMenuContentProps): React.JSX.Element;
120
+
121
+ export { AppContent, AppShell, AppSidebar, AppSidebarHeader, type Appearance, BreadcrumbItem, Breadcrumbs, Heading, LinkComponent, NavFooter, NavGroup, NavItem, NavMain, NavUser, SettingsLayout, type SettingsLayoutProps, SharedUser, UrlLike, UserInfo, UserMenuContent, hrefToString, initializeTheme, useAppearance, useInitials, useIsMobile };
package/dist/shells.js ADDED
@@ -0,0 +1,101 @@
1
+ export { AppSidebar, AppSidebarHeader, Breadcrumbs, Heading, NavFooter, NavMain, NavUser, SettingsLayout, UserInfo, UserMenuContent, hrefToString, useInitials } from './chunk-A2SIZOEA.js';
2
+ import { SidebarInset, SidebarProvider } from './chunk-5MQWJVM2.js';
3
+ export { useIsMobile } from './chunk-5MQWJVM2.js';
4
+ import './chunk-POE7OYET.js';
5
+ import { useState, useCallback, useEffect } from 'react';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ var prefersDark = () => {
9
+ if (typeof window === "undefined") {
10
+ return false;
11
+ }
12
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
13
+ };
14
+ var setCookie = (name, value, days = 365) => {
15
+ if (typeof document === "undefined") {
16
+ return;
17
+ }
18
+ const maxAge = days * 24 * 60 * 60;
19
+ document.cookie = `${name}=${value};path=/;max-age=${maxAge};SameSite=Lax`;
20
+ };
21
+ var applyTheme = (appearance) => {
22
+ const isDark = appearance === "dark" || appearance === "system" && prefersDark();
23
+ document.documentElement.classList.toggle("dark", isDark);
24
+ document.documentElement.style.colorScheme = isDark ? "dark" : "light";
25
+ };
26
+ var mediaQuery = () => {
27
+ if (typeof window === "undefined") {
28
+ return null;
29
+ }
30
+ return window.matchMedia("(prefers-color-scheme: dark)");
31
+ };
32
+ var handleSystemThemeChange = () => {
33
+ const currentAppearance = localStorage.getItem("appearance");
34
+ applyTheme(currentAppearance || "system");
35
+ };
36
+ function initializeTheme() {
37
+ const savedAppearance = localStorage.getItem("appearance") || "system";
38
+ applyTheme(savedAppearance);
39
+ mediaQuery()?.addEventListener("change", handleSystemThemeChange);
40
+ }
41
+ function useAppearance() {
42
+ const [appearance, setAppearance] = useState("system");
43
+ const updateAppearance = useCallback((mode) => {
44
+ setAppearance(mode);
45
+ localStorage.setItem("appearance", mode);
46
+ setCookie("appearance", mode);
47
+ applyTheme(mode);
48
+ }, []);
49
+ useEffect(() => {
50
+ const savedAppearance = localStorage.getItem(
51
+ "appearance"
52
+ );
53
+ updateAppearance(savedAppearance || "system");
54
+ return () => mediaQuery()?.removeEventListener(
55
+ "change",
56
+ handleSystemThemeChange
57
+ );
58
+ }, [updateAppearance]);
59
+ return { appearance, updateAppearance };
60
+ }
61
+ function AppContent({
62
+ variant = "header",
63
+ children,
64
+ ...props
65
+ }) {
66
+ if (variant === "sidebar") {
67
+ return /* @__PURE__ */ jsx(SidebarInset, { ...props, children });
68
+ }
69
+ return /* @__PURE__ */ jsx(
70
+ "main",
71
+ {
72
+ className: "max-w-7xl gap-4 rounded-xl mx-auto flex h-full w-full flex-1 flex-col",
73
+ ...props,
74
+ children
75
+ }
76
+ );
77
+ }
78
+ function AppShell({
79
+ children,
80
+ variant = "header",
81
+ open,
82
+ onOpenChange,
83
+ defaultOpen = true
84
+ }) {
85
+ if (variant === "header") {
86
+ return /* @__PURE__ */ jsx("div", { className: "flex min-h-screen w-full flex-col", children });
87
+ }
88
+ return /* @__PURE__ */ jsx(
89
+ SidebarProvider,
90
+ {
91
+ open,
92
+ onOpenChange,
93
+ defaultOpen,
94
+ children
95
+ }
96
+ );
97
+ }
98
+
99
+ export { AppContent, AppShell, initializeTheme, useAppearance };
100
+ //# sourceMappingURL=shells.js.map
101
+ //# sourceMappingURL=shells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-appearance.tsx","../src/shells/app-content.tsx","../src/shells/app-shell.tsx"],"names":["jsx"],"mappings":"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","file":"shells.js","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nexport type Appearance = 'light' | 'dark' | 'system';\n\nconst prefersDark = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n};\n\nconst setCookie = (name: string, value: string, days = 365) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const maxAge = days * 24 * 60 * 60;\n document.cookie = `${name}=${value};path=/;max-age=${maxAge};SameSite=Lax`;\n};\n\nconst applyTheme = (appearance: Appearance) => {\n const isDark =\n appearance === 'dark' || (appearance === 'system' && prefersDark());\n\n document.documentElement.classList.toggle('dark', isDark);\n document.documentElement.style.colorScheme = isDark ? 'dark' : 'light';\n};\n\nconst mediaQuery = () => {\n if (typeof window === 'undefined') {\n return null;\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)');\n};\n\nconst handleSystemThemeChange = () => {\n const currentAppearance = localStorage.getItem('appearance') as Appearance;\n applyTheme(currentAppearance || 'system');\n};\n\nexport function initializeTheme() {\n const savedAppearance =\n (localStorage.getItem('appearance') as Appearance) || 'system';\n\n applyTheme(savedAppearance);\n\n mediaQuery()?.addEventListener('change', handleSystemThemeChange);\n}\n\nexport function useAppearance() {\n const [appearance, setAppearance] = useState<Appearance>('system');\n\n const updateAppearance = useCallback((mode: Appearance) => {\n setAppearance(mode);\n\n localStorage.setItem('appearance', mode);\n setCookie('appearance', mode);\n applyTheme(mode);\n }, []);\n\n useEffect(() => {\n const savedAppearance = localStorage.getItem(\n 'appearance',\n ) as Appearance | null;\n updateAppearance(savedAppearance || 'system');\n\n return () =>\n mediaQuery()?.removeEventListener(\n 'change',\n handleSystemThemeChange,\n );\n }, [updateAppearance]);\n\n return { appearance, updateAppearance } as const;\n}\n","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"]}
@@ -0,0 +1,88 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import * as React from 'react';
4
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
5
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
6
+
7
+ declare const buttonVariants: (props?: ({
8
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
9
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
12
+ asChild?: boolean;
13
+ }): React.JSX.Element;
14
+
15
+ declare function Input({ className, type, ...props }: React.ComponentProps<'input'>): React.JSX.Element;
16
+
17
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): React.JSX.Element;
18
+
19
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
20
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
21
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
22
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
23
+
24
+ type SidebarContext = {
25
+ state: 'expanded' | 'collapsed';
26
+ open: boolean;
27
+ setOpen: (open: boolean) => void;
28
+ openMobile: boolean;
29
+ setOpenMobile: (open: boolean) => void;
30
+ isMobile: boolean;
31
+ toggleSidebar: () => void;
32
+ };
33
+ declare const SidebarContext: React.Context<SidebarContext | null>;
34
+ declare function useSidebar(): SidebarContext;
35
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<'div'> & {
36
+ defaultOpen?: boolean;
37
+ open?: boolean;
38
+ onOpenChange?: (open: boolean) => void;
39
+ }): React.JSX.Element;
40
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React.ComponentProps<'div'> & {
41
+ side?: 'left' | 'right';
42
+ variant?: 'sidebar' | 'floating' | 'inset';
43
+ collapsible?: 'offcanvas' | 'icon' | 'none';
44
+ }): React.JSX.Element;
45
+ declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
46
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<'button'>): React.JSX.Element;
47
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<'main'>): React.JSX.Element;
48
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): React.JSX.Element;
49
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
50
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
51
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
52
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
53
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
54
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<'div'> & {
55
+ asChild?: boolean;
56
+ }): React.JSX.Element;
57
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<'button'> & {
58
+ asChild?: boolean;
59
+ }): React.JSX.Element;
60
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
61
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>): React.JSX.Element;
62
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>): React.JSX.Element;
63
+ declare const sidebarMenuButtonVariants: (props?: ({
64
+ variant?: "default" | "outline" | null | undefined;
65
+ size?: "default" | "sm" | "lg" | null | undefined;
66
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
67
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<'button'> & {
68
+ asChild?: boolean;
69
+ isActive?: boolean;
70
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
71
+ } & VariantProps<typeof sidebarMenuButtonVariants>): React.JSX.Element;
72
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<'button'> & {
73
+ asChild?: boolean;
74
+ showOnHover?: boolean;
75
+ }): React.JSX.Element;
76
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
77
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<'div'> & {
78
+ showIcon?: boolean;
79
+ }): React.JSX.Element;
80
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>): React.JSX.Element;
81
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>): React.JSX.Element;
82
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<'a'> & {
83
+ asChild?: boolean;
84
+ size?: 'sm' | 'md';
85
+ isActive?: boolean;
86
+ }): React.JSX.Element;
87
+
88
+ export { buttonVariants as A, Button as B, useSidebar as C, Input as I, Separator as S, Tooltip as T, Sidebar as a, SidebarContent as b, SidebarFooter as c, SidebarGroup as d, SidebarGroupAction as e, SidebarGroupContent as f, SidebarGroupLabel as g, SidebarHeader as h, SidebarInput as i, SidebarInset as j, SidebarMenu as k, SidebarMenuAction as l, SidebarMenuBadge as m, SidebarMenuButton as n, SidebarMenuItem as o, SidebarMenuSkeleton as p, SidebarMenuSub as q, SidebarMenuSubButton as r, SidebarMenuSubItem as s, SidebarProvider as t, SidebarRail as u, SidebarSeparator as v, SidebarTrigger as w, TooltipContent as x, TooltipProvider as y, TooltipTrigger as z };
@@ -0,0 +1,40 @@
1
+ import { ComponentType, ReactNode, MouseEvent } from 'react';
2
+
3
+ type UrlLike = string | {
4
+ url: string;
5
+ method?: string;
6
+ };
7
+ type IconComponent = ComponentType<{
8
+ className?: string;
9
+ }>;
10
+ interface NavItem {
11
+ title: string;
12
+ href: UrlLike;
13
+ icon?: IconComponent | null;
14
+ isActive?: boolean;
15
+ }
16
+ interface BreadcrumbItem {
17
+ title: string;
18
+ href: UrlLike;
19
+ }
20
+ interface NavGroup {
21
+ label?: string;
22
+ items: NavItem[];
23
+ }
24
+ interface SharedUser {
25
+ name: string;
26
+ email: string;
27
+ avatar?: string;
28
+ }
29
+ interface LinkProps {
30
+ href: UrlLike;
31
+ children?: ReactNode;
32
+ className?: string;
33
+ prefetch?: boolean;
34
+ as?: string;
35
+ onClick?: (event: MouseEvent) => void;
36
+ [key: string]: unknown;
37
+ }
38
+ type LinkComponent = ComponentType<LinkProps>;
39
+
40
+ export type { BreadcrumbItem as B, IconComponent as I, LinkComponent as L, NavGroup as N, SharedUser as S, UrlLike as U, NavItem as a, LinkProps as b };