@abumble/design-system 0.0.26 → 0.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ActionsPopover/ActionsPopover.d.ts +15 -0
- package/dist/components/ActionsPopover/ActionsPopover.d.ts.map +1 -0
- package/dist/components/ActionsPopover/index.d.ts +2 -0
- package/dist/components/ActionsPopover/index.d.ts.map +1 -0
- package/dist/components/ActionsPopover.js +46 -0
- package/dist/components/ActionsPopover.js.map +1 -0
- package/dist/components/BackLink/BackLink.d.ts +21 -0
- package/dist/components/BackLink/BackLink.d.ts.map +1 -0
- package/dist/components/BackLink/index.d.ts +2 -0
- package/dist/components/BackLink/index.d.ts.map +1 -0
- package/dist/components/BackLink.js +5 -0
- package/dist/components/BackLink.js.map +1 -0
- package/dist/components/Badge/Badge.d.ts +7 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge.js +39 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/BannerHeader/BannerHeader.d.ts +38 -0
- package/dist/components/BannerHeader/BannerHeader.d.ts.map +1 -0
- package/dist/components/BannerHeader/index.d.ts +2 -0
- package/dist/components/BannerHeader/index.d.ts.map +1 -0
- package/dist/components/BannerHeader.js +41 -0
- package/dist/components/BannerHeader.js.map +1 -0
- package/dist/components/Breadcrumb.js +7 -100
- package/dist/components/Breadcrumb.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox.js +38 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/ConfirmDeleteDialog/ConfirmDeleteDialog.d.ts +11 -0
- package/dist/components/ConfirmDeleteDialog/ConfirmDeleteDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDeleteDialog/index.d.ts +2 -0
- package/dist/components/ConfirmDeleteDialog/index.d.ts.map +1 -0
- package/dist/components/ConfirmDeleteDialog.js +34 -0
- package/dist/components/ConfirmDeleteDialog.js.map +1 -0
- package/dist/components/DelayedLoadingFallback/DelayedLoadingFallback.d.ts +17 -0
- package/dist/components/DelayedLoadingFallback/DelayedLoadingFallback.d.ts.map +1 -0
- package/dist/components/DelayedLoadingFallback/index.d.ts +2 -0
- package/dist/components/DelayedLoadingFallback/index.d.ts.map +1 -0
- package/dist/components/DelayedLoadingFallback.js +15 -0
- package/dist/components/DelayedLoadingFallback.js.map +1 -0
- package/dist/components/Dialog/Dialog.d.ts +45 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/index.d.ts +2 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog.js +17 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/FieldsTable/FieldsTable.d.ts +12 -0
- package/dist/components/FieldsTable/FieldsTable.d.ts.map +1 -0
- package/dist/components/FieldsTable/index.d.ts +2 -0
- package/dist/components/FieldsTable/index.d.ts.map +1 -0
- package/dist/components/FieldsTable.js +42 -0
- package/dist/components/FieldsTable.js.map +1 -0
- package/dist/components/Label/Label.d.ts +4 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Label.js +24 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/PageHeader/PageHeader.d.ts +12 -0
- package/dist/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/components/PageHeader/index.d.ts +2 -0
- package/dist/components/PageHeader/index.d.ts.map +1 -0
- package/dist/components/PageHeader.js +6 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/Popover.js +5 -43
- package/dist/components/Popover.js.map +1 -1
- package/dist/components/Select/Select.d.ts +6 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select.js +27 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Table/Table.d.ts +10 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Table.js +125 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +3 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea.js +23 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/Toaster/Toaster.d.ts +7 -0
- package/dist/components/Toaster/Toaster.d.ts.map +1 -0
- package/dist/components/Toaster/index.d.ts +2 -0
- package/dist/components/Toaster/index.d.ts.map +1 -0
- package/dist/components/Toaster.js +26 -0
- package/dist/components/Toaster.js.map +1 -0
- package/dist/hooks/use-delayed-loading/index.d.ts +2 -0
- package/dist/hooks/use-delayed-loading/index.d.ts.map +1 -0
- package/dist/hooks/use-delayed-loading/use-delayed-loading.d.ts +7 -0
- package/dist/hooks/use-delayed-loading/use-delayed-loading.d.ts.map +1 -0
- package/dist/hooks/use-delayed-loading.js +5 -0
- package/dist/hooks/use-delayed-loading.js.map +1 -0
- package/dist/shared/BackLink.js +30 -0
- package/dist/shared/BackLink.js.map +1 -0
- package/dist/shared/Breadcrumb.js +104 -0
- package/dist/shared/Breadcrumb.js.map +1 -0
- package/dist/shared/Dialog.js +225 -0
- package/dist/shared/Dialog.js.map +1 -0
- package/dist/shared/PageHeader.js +59 -0
- package/dist/shared/PageHeader.js.map +1 -0
- package/dist/shared/Popover.js +46 -0
- package/dist/shared/Popover.js.map +1 -0
- package/dist/shared/use-delayed-loading.js +16 -0
- package/dist/shared/use-delayed-loading.js.map +1 -0
- package/package.json +68 -1
- package/src/styles.css +9 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ActionItem {
|
|
2
|
+
label: string;
|
|
3
|
+
icon?: React.ReactNode;
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
variant?: 'default' | 'destructive';
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ActionsPopoverProps {
|
|
9
|
+
label?: string;
|
|
10
|
+
items: ActionItem[];
|
|
11
|
+
/** Pass true to add stopPropagation on the trigger (e.g. inside table rows). */
|
|
12
|
+
stopTriggerPropagation?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function ActionsPopover({ label, items, stopTriggerPropagation, }: ActionsPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=ActionsPopover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsPopover.d.ts","sourceRoot":"","sources":["../../../src/components/ActionsPopover/ActionsPopover.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,wBAAgB,cAAc,CAAC,EAC9B,KAAiB,EACjB,KAAK,EACL,sBAA8B,GAC9B,EAAE,mBAAmB,2CA8CrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ActionsPopover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,GACf,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsxs as a, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { useState as p } from "react";
|
|
3
|
+
import { MoreVertical as d } from "lucide-react";
|
|
4
|
+
import { B as o } from "../shared/Button.js";
|
|
5
|
+
import { P as f, c as m, b as u } from "../shared/Popover.js";
|
|
6
|
+
function C({
|
|
7
|
+
label: r = "Actions",
|
|
8
|
+
items: i,
|
|
9
|
+
stopTriggerPropagation: l = !1
|
|
10
|
+
}) {
|
|
11
|
+
const [n, t] = p(!1);
|
|
12
|
+
return /* @__PURE__ */ a(f, { open: n, onOpenChange: t, children: [
|
|
13
|
+
/* @__PURE__ */ s(m, { asChild: !0, children: /* @__PURE__ */ s(
|
|
14
|
+
o,
|
|
15
|
+
{
|
|
16
|
+
type: "button",
|
|
17
|
+
variant: "ghost",
|
|
18
|
+
size: "icon",
|
|
19
|
+
className: "size-8 shrink-0",
|
|
20
|
+
"aria-label": r,
|
|
21
|
+
onClick: l ? (e) => e.stopPropagation() : void 0,
|
|
22
|
+
children: /* @__PURE__ */ s(d, { className: "size-4" })
|
|
23
|
+
}
|
|
24
|
+
) }),
|
|
25
|
+
/* @__PURE__ */ s(u, { align: "end", className: "w-40 p-0 mt-1", children: /* @__PURE__ */ s("ul", { className: "flex flex-col gap-0.5 p-1.5", children: i.map((e, c) => /* @__PURE__ */ s("li", { children: /* @__PURE__ */ a(
|
|
26
|
+
o,
|
|
27
|
+
{
|
|
28
|
+
variant: "ghost",
|
|
29
|
+
size: "sm",
|
|
30
|
+
className: e.variant === "destructive" ? "w-full justify-start gap-2 text-destructive hover:text-destructive" : "w-full justify-start gap-2",
|
|
31
|
+
onClick: () => {
|
|
32
|
+
t(!1), e.onClick();
|
|
33
|
+
},
|
|
34
|
+
disabled: e.disabled,
|
|
35
|
+
children: [
|
|
36
|
+
e.icon,
|
|
37
|
+
e.label
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
) }, c)) }) })
|
|
41
|
+
] });
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
C as ActionsPopover
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=ActionsPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsPopover.js","sources":["../../src/components/ActionsPopover/ActionsPopover.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { MoreVertical } from 'lucide-react'\nimport { Button } from '@/components/Button/Button'\nimport {\n\tPopover,\n\tPopoverContent,\n\tPopoverTrigger,\n} from '@/components/Popover/Popover'\n\nexport interface ActionItem {\n\tlabel: string\n\ticon?: React.ReactNode\n\tonClick: () => void\n\tvariant?: 'default' | 'destructive'\n\tdisabled?: boolean\n}\n\nexport interface ActionsPopoverProps {\n\tlabel?: string\n\titems: ActionItem[]\n\t/** Pass true to add stopPropagation on the trigger (e.g. inside table rows). */\n\tstopTriggerPropagation?: boolean\n}\n\nexport function ActionsPopover({\n\tlabel = 'Actions',\n\titems,\n\tstopTriggerPropagation = false,\n}: ActionsPopoverProps) {\n\tconst [open, setOpen] = useState(false)\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\tclassName=\"size-8 shrink-0\"\n\t\t\t\t\taria-label={label}\n\t\t\t\t\tonClick={\n\t\t\t\t\t\tstopTriggerPropagation ? (e) => e.stopPropagation() : undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<MoreVertical className=\"size-4\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent align=\"end\" className=\"w-40 p-0 mt-1\">\n\t\t\t\t<ul className=\"flex flex-col gap-0.5 p-1.5\">\n\t\t\t\t\t{items.map((item, index) => (\n\t\t\t\t\t\t<li key={index}>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\titem.variant === 'destructive'\n\t\t\t\t\t\t\t\t\t\t? 'w-full justify-start gap-2 text-destructive hover:text-destructive'\n\t\t\t\t\t\t\t\t\t\t: 'w-full justify-start gap-2'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetOpen(false)\n\t\t\t\t\t\t\t\t\titem.onClick()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.icon}\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t)\n}\n"],"names":["ActionsPopover","label","items","stopTriggerPropagation","open","setOpen","useState","jsxs","Popover","jsx","PopoverTrigger","Button","MoreVertical","PopoverContent","item","index"],"mappings":";;;;;AA0BO,SAASA,EAAe;AAAA,EAC9B,OAAAC,IAAQ;AAAA,EACR,OAAAC;AAAA,EACA,wBAAAC,IAAyB;AAC1B,GAAwB;AACvB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK;AAEtC,SACC,gBAAAC,EAACC,GAAA,EAAQ,MAAAJ,GAAY,cAAcC,GAClC,UAAA;AAAA,IAAA,gBAAAI,EAACC,GAAA,EAAe,SAAO,IACtB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAYV;AAAA,QACZ,SACCE,IAAyB,CAAC,MAAM,EAAE,oBAAoB;AAAA,QAGvD,UAAA,gBAAAM,EAACG,GAAA,EAAa,WAAU,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA,GAEnC;AAAA,sBACCC,GAAA,EAAe,OAAM,OAAM,WAAU,iBACrC,UAAA,gBAAAJ,EAAC,MAAA,EAAG,WAAU,+BACZ,YAAM,IAAI,CAACK,GAAMC,wBAChB,MAAA,EACA,UAAA,gBAAAR;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WACCG,EAAK,YAAY,gBACd,uEACA;AAAA,QAEJ,SAAS,MAAM;AACd,UAAAT,EAAQ,EAAK,GACbS,EAAK,QAAA;AAAA,QACN;AAAA,QACA,UAAUA,EAAK;AAAA,QAEd,UAAA;AAAA,UAAAA,EAAK;AAAA,UACLA,EAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,KAhBCC,CAkBT,CACA,EAAA,CACF,EAAA,CACD;AAAA,EAAA,GACD;AAEF;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface BackLinkProps extends React.ComponentProps<'a'> {
|
|
2
|
+
/** Link text, e.g. "Back to properties". */
|
|
3
|
+
label: string;
|
|
4
|
+
/** If true, renders the provided child element as the link. Use with router Link components. */
|
|
5
|
+
asChild?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Back link with chevron icon. Router-agnostic via asChild pattern.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // With TanStack Router:
|
|
12
|
+
* <BackLink asChild label="Back to properties">
|
|
13
|
+
* <Link to=".." replace />
|
|
14
|
+
* </BackLink>
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Plain link:
|
|
18
|
+
* <BackLink href="/properties" label="Back to properties" />
|
|
19
|
+
*/
|
|
20
|
+
export declare function BackLink({ label, asChild, className, ...props }: BackLinkProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=BackLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackLink.d.ts","sourceRoot":"","sources":["../../../src/components/BackLink/BackLink.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;IAC/D,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,EACxB,KAAK,EACL,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACR,EAAE,aAAa,2CAgBf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BackLink/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackLink.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VariantProps } from 'class-variance-authority';
|
|
2
|
+
declare const badgeVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "success" | "warning" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
export declare function Badge({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof badgeVariants>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAA,MAAM,aAAa;;8EAoBlB,CAAA;AAED,wBAAgB,KAAK,CAAC,EACrB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,2CAQlE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { c as n } from "../shared/utils.js";
|
|
3
|
+
import { cva as o } from "class-variance-authority";
|
|
4
|
+
const d = o(
|
|
5
|
+
"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: "border-transparent bg-primary text-primary-foreground",
|
|
10
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground",
|
|
11
|
+
success: "border-transparent bg-green-600 text-white dark:bg-green-700 dark:text-white",
|
|
12
|
+
warning: "border-transparent bg-amber-500 text-white dark:bg-amber-600 dark:text-white",
|
|
13
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground",
|
|
14
|
+
outline: "text-foreground border-border"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
variant: "default"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
function g({
|
|
23
|
+
className: r,
|
|
24
|
+
variant: e,
|
|
25
|
+
...t
|
|
26
|
+
}) {
|
|
27
|
+
return /* @__PURE__ */ a(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
"data-slot": "badge",
|
|
31
|
+
className: n(d({ variant: e }), r),
|
|
32
|
+
...t
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
g as Badge
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../src/components/Badge/Badge.tsx"],"sourcesContent":["import { cn } from '@/utils'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst badgeVariants = cva(\n\t'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'border-transparent bg-primary text-primary-foreground',\n\t\t\t\tsecondary: 'border-transparent bg-secondary text-secondary-foreground',\n\t\t\t\tsuccess:\n\t\t\t\t\t'border-transparent bg-green-600 text-white dark:bg-green-700 dark:text-white',\n\t\t\t\twarning:\n\t\t\t\t\t'border-transparent bg-amber-500 text-white dark:bg-amber-600 dark:text-white',\n\t\t\t\tdestructive:\n\t\t\t\t\t'border-transparent bg-destructive text-destructive-foreground',\n\t\t\t\toutline: 'text-foreground border-border',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t},\n\t},\n)\n\nexport function Badge({\n\tclassName,\n\tvariant,\n\t...props\n}: React.ComponentProps<'div'> & VariantProps<typeof badgeVariants>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"badge\"\n\t\t\tclassName={cn(badgeVariants({ variant }), className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":["badgeVariants","cva","Badge","className","variant","props","jsx","cn"],"mappings":";;;AAIA,MAAMA,IAAgBC;AAAA,EACrB;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SACC;AAAA,QACD,SACC;AAAA,QACD,aACC;AAAA,QACD,SAAS;AAAA,MAAA;AAAA,IACV;AAAA,IAED,iBAAiB;AAAA,MAChB,SAAS;AAAA,IAAA;AAAA,EACV;AAEF;AAEO,SAASC,EAAM;AAAA,EACrB,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACJ,GAAqE;AACpE,SACC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface BreadcrumbItemType {
|
|
3
|
+
label: string;
|
|
4
|
+
to?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface BannerBackLinkOptions {
|
|
7
|
+
/** Target path. Defaults to ".." (parent route). */
|
|
8
|
+
to?: string;
|
|
9
|
+
/** Link text, e.g. "Back to properties". */
|
|
10
|
+
label: string;
|
|
11
|
+
}
|
|
12
|
+
export interface BannerHeaderProps {
|
|
13
|
+
title: React.ReactNode;
|
|
14
|
+
description: React.ReactNode;
|
|
15
|
+
/** Single back link (chevron + label) above title. Defaults to relative ".." when to is omitted. */
|
|
16
|
+
backLink?: BannerBackLinkOptions;
|
|
17
|
+
/** Parent breadcrumb items (does not include current page). Shows as compact nav above title. */
|
|
18
|
+
breadcrumbItems?: BreadcrumbItemType[];
|
|
19
|
+
/** Optional actions (e.g. triple-dot menu) shown at the top-right of the banner. */
|
|
20
|
+
actions?: React.ReactNode;
|
|
21
|
+
/** Optional router link component (e.g. TanStack Link). Used for breadcrumb links and back link. Defaults to 'a'. */
|
|
22
|
+
linkComponent?: React.ElementType;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Banner header with title, description, and optional back link or breadcrumbs.
|
|
26
|
+
* Router-agnostic via linkComponent prop.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // With TanStack Router:
|
|
30
|
+
* <BannerHeader
|
|
31
|
+
* linkComponent={Link}
|
|
32
|
+
* title="Property Details"
|
|
33
|
+
* description="View and edit property information"
|
|
34
|
+
* backLink={{ label: "Back to properties" }}
|
|
35
|
+
* />
|
|
36
|
+
*/
|
|
37
|
+
export declare function BannerHeader({ title, description, backLink, breadcrumbItems, actions, linkComponent: LinkComp, }: BannerHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
//# sourceMappingURL=BannerHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerHeader.d.ts","sourceRoot":"","sources":["../../../src/components/BannerHeader/BannerHeader.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,qBAAqB;IACrC,oDAAoD;IACpD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,iGAAiG;IACjG,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACtC,oFAAoF;IACpF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,qHAAqH;IACrH,aAAa,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,OAAO,EACP,aAAa,EAAE,QAAc,GAC7B,EAAE,iBAAiB,2CAuDnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BannerHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC1B,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as e, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { B as u, d as h, f as p, b as f, c as x } from "../shared/Breadcrumb.js";
|
|
3
|
+
import * as g from "react";
|
|
4
|
+
import { B as v } from "../shared/BackLink.js";
|
|
5
|
+
import { P as B, a as N } from "../shared/PageHeader.js";
|
|
6
|
+
function P({
|
|
7
|
+
title: m,
|
|
8
|
+
description: c,
|
|
9
|
+
backLink: l,
|
|
10
|
+
breadcrumbItems: s,
|
|
11
|
+
actions: d,
|
|
12
|
+
linkComponent: n = "a"
|
|
13
|
+
}) {
|
|
14
|
+
const o = s != null && s.length > 0;
|
|
15
|
+
let t = null;
|
|
16
|
+
return l != null ? t = /* @__PURE__ */ e("div", { className: "", children: /* @__PURE__ */ e(v, { asChild: !0, label: l.label, children: /* @__PURE__ */ e(n, { to: l.to ?? "..", replace: !0 }) }) }) : o && (t = /* @__PURE__ */ e(u, { className: "", children: /* @__PURE__ */ e(h, { className: "text-sm", children: s.map((a, i) => /* @__PURE__ */ r(g.Fragment, { children: [
|
|
17
|
+
i > 0 && /* @__PURE__ */ e(p, {}),
|
|
18
|
+
/* @__PURE__ */ e(f, { children: a.to != null ? /* @__PURE__ */ e(x, { asChild: !0, children: /* @__PURE__ */ e(
|
|
19
|
+
n,
|
|
20
|
+
{
|
|
21
|
+
to: a.to,
|
|
22
|
+
className: "text-muted-foreground hover:text-foreground",
|
|
23
|
+
children: a.label
|
|
24
|
+
}
|
|
25
|
+
) }) : /* @__PURE__ */ e("span", { className: "text-muted-foreground", children: a.label }) })
|
|
26
|
+
] }, i)) }) })), /* @__PURE__ */ r("div", { className: "relative -mx-4 -mt-4 overflow-hidden md:-mx-6 md:-mt-6", children: [
|
|
27
|
+
/* @__PURE__ */ e("div", { className: "image-background absolute inset-0 opacity-10" }),
|
|
28
|
+
/* @__PURE__ */ r("div", { className: "relative flex items-start justify-between gap-4 px-4 py-8 md:px-6 md:pt-12", children: [
|
|
29
|
+
/* @__PURE__ */ r("div", { className: "min-w-0 flex-1 space-y-1.5", children: [
|
|
30
|
+
t,
|
|
31
|
+
/* @__PURE__ */ e(B, { children: m }),
|
|
32
|
+
/* @__PURE__ */ e(N, { children: c })
|
|
33
|
+
] }),
|
|
34
|
+
d != null ? /* @__PURE__ */ e("div", { className: "shrink-0 pt-0.5", children: d }) : null
|
|
35
|
+
] })
|
|
36
|
+
] });
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
P as BannerHeader
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=BannerHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerHeader.js","sources":["../../src/components/BannerHeader/BannerHeader.tsx"],"sourcesContent":["import {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from '@/components/Breadcrumb/Breadcrumb'\nimport * as React from 'react'\nimport { BackLink } from '@/components/BackLink/BackLink'\nimport { PageDescription, PageHeader } from '@/components/PageHeader/PageHeader'\n\nexport interface BreadcrumbItemType {\n\tlabel: string\n\tto?: string\n}\n\nexport interface BannerBackLinkOptions {\n\t/** Target path. Defaults to \"..\" (parent route). */\n\tto?: string\n\t/** Link text, e.g. \"Back to properties\". */\n\tlabel: string\n}\n\nexport interface BannerHeaderProps {\n\ttitle: React.ReactNode\n\tdescription: React.ReactNode\n\t/** Single back link (chevron + label) above title. Defaults to relative \"..\" when to is omitted. */\n\tbackLink?: BannerBackLinkOptions\n\t/** Parent breadcrumb items (does not include current page). Shows as compact nav above title. */\n\tbreadcrumbItems?: BreadcrumbItemType[]\n\t/** Optional actions (e.g. triple-dot menu) shown at the top-right of the banner. */\n\tactions?: React.ReactNode\n\t/** Optional router link component (e.g. TanStack Link). Used for breadcrumb links and back link. Defaults to 'a'. */\n\tlinkComponent?: React.ElementType\n}\n\n/**\n * Banner header with title, description, and optional back link or breadcrumbs.\n * Router-agnostic via linkComponent prop.\n *\n * @example\n * // With TanStack Router:\n * <BannerHeader\n * linkComponent={Link}\n * title=\"Property Details\"\n * description=\"View and edit property information\"\n * backLink={{ label: \"Back to properties\" }}\n * />\n */\nexport function BannerHeader({\n\ttitle,\n\tdescription,\n\tbackLink,\n\tbreadcrumbItems,\n\tactions,\n\tlinkComponent: LinkComp = 'a',\n}: BannerHeaderProps) {\n\tconst hasBreadcrumbs = breadcrumbItems != null && breadcrumbItems.length > 0\n\n\tlet linkItem = null\n\tif (backLink != null) {\n\t\tlinkItem = (\n\t\t\t<div className=\"\">\n\t\t\t\t<BackLink asChild label={backLink.label}>\n\t\t\t\t\t<LinkComp to={backLink.to ?? '..'} replace />\n\t\t\t\t</BackLink>\n\t\t\t</div>\n\t\t)\n\t} else if (hasBreadcrumbs) {\n\t\tlinkItem = (\n\t\t\t<Breadcrumb className=\"\">\n\t\t\t\t<BreadcrumbList className=\"text-sm\">\n\t\t\t\t\t{breadcrumbItems.map((item, i) => (\n\t\t\t\t\t\t<React.Fragment key={i}>\n\t\t\t\t\t\t\t{i > 0 && <BreadcrumbSeparator />}\n\t\t\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t\t\t{item.to != null ? (\n\t\t\t\t\t\t\t\t\t<BreadcrumbLink asChild>\n\t\t\t\t\t\t\t\t\t\t<LinkComp\n\t\t\t\t\t\t\t\t\t\t\tto={item.to}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t</LinkComp>\n\t\t\t\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{item.label}</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className=\"relative -mx-4 -mt-4 overflow-hidden md:-mx-6 md:-mt-6\">\n\t\t\t<div className=\"image-background absolute inset-0 opacity-10\" />\n\t\t\t<div className=\"relative flex items-start justify-between gap-4 px-4 py-8 md:px-6 md:pt-12\">\n\t\t\t\t<div className=\"min-w-0 flex-1 space-y-1.5\">\n\t\t\t\t\t{linkItem}\n\t\t\t\t\t<PageHeader>{title}</PageHeader>\n\t\t\t\t\t<PageDescription>{description}</PageDescription>\n\t\t\t\t</div>\n\t\t\t\t{actions != null ? (\n\t\t\t\t\t<div className=\"shrink-0 pt-0.5\">{actions}</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],"names":["BannerHeader","title","description","backLink","breadcrumbItems","actions","LinkComp","hasBreadcrumbs","linkItem","jsx","BackLink","Breadcrumb","BreadcrumbList","item","jsxs","React","BreadcrumbSeparator","BreadcrumbItem","BreadcrumbLink","PageHeader","PageDescription"],"mappings":";;;;;AAiDO,SAASA,EAAa;AAAA,EAC5B,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAeC,IAAW;AAC3B,GAAsB;AACrB,QAAMC,IAAiBH,KAAmB,QAAQA,EAAgB,SAAS;AAE3E,MAAII,IAAW;AACf,SAAIL,KAAY,OACfK,IACC,gBAAAC,EAAC,SAAI,WAAU,IACd,4BAACC,GAAA,EAAS,SAAO,IAAC,OAAOP,EAAS,OACjC,UAAA,gBAAAM,EAACH,GAAA,EAAS,IAAIH,EAAS,MAAM,MAAM,SAAO,IAAC,GAC5C,EAAA,CACD,IAESI,MACVC,sBACEG,GAAA,EAAW,WAAU,IACrB,UAAA,gBAAAF,EAACG,KAAe,WAAU,WACxB,UAAAR,EAAgB,IAAI,CAACS,GAAM,MAC3B,gBAAAC,EAACC,EAAM,UAAN,EACC,UAAA;AAAA,IAAA,IAAI,uBAAMC,GAAA,CAAA,CAAoB;AAAA,IAC/B,gBAAAP,EAACQ,KACC,UAAAJ,EAAK,MAAM,OACX,gBAAAJ,EAACS,GAAA,EAAe,SAAO,IACtB,UAAA,gBAAAT;AAAA,MAACH;AAAA,MAAA;AAAA,QACA,IAAIO,EAAK;AAAA,QACT,WAAU;AAAA,QAET,UAAAA,EAAK;AAAA,MAAA;AAAA,IAAA,GAER,IAEA,gBAAAJ,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAI,EAAK,OAAM,EAAA,CAEtD;AAAA,EAAA,EAAA,GAfoB,CAgBrB,CACA,EAAA,CACF,GACD,IAKD,gBAAAC,EAAC,OAAA,EAAI,WAAU,0DACd,UAAA;AAAA,IAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,+CAAA,CAA+C;AAAA,IAC9D,gBAAAK,EAAC,OAAA,EAAI,WAAU,8EACd,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,QAAAN;AAAA,QACD,gBAAAC,EAACU,KAAY,UAAAlB,EAAA,CAAM;AAAA,QACnB,gBAAAQ,EAACW,KAAiB,UAAAlB,EAAA,CAAY;AAAA,MAAA,GAC/B;AAAA,MACCG,KAAW,OACX,gBAAAI,EAAC,SAAI,WAAU,mBAAmB,aAAQ,IACvC;AAAA,IAAA,EAAA,CACL;AAAA,EAAA,GACD;AAEF;"}
|
|
@@ -1,104 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Slot as s } from "@radix-ui/react-slot";
|
|
3
|
-
import { MoreHorizontal as i, ChevronRight as l } from "lucide-react";
|
|
4
|
-
import "react";
|
|
5
|
-
import { c as t } from "../shared/utils.js";
|
|
6
|
-
function f({ ...r }) {
|
|
7
|
-
return /* @__PURE__ */ a("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...r });
|
|
8
|
-
}
|
|
9
|
-
function g({ className: r, ...e }) {
|
|
10
|
-
return /* @__PURE__ */ a(
|
|
11
|
-
"ol",
|
|
12
|
-
{
|
|
13
|
-
"data-slot": "breadcrumb-list",
|
|
14
|
-
className: t(
|
|
15
|
-
"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
|
|
16
|
-
r
|
|
17
|
-
),
|
|
18
|
-
...e
|
|
19
|
-
}
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
function x({ className: r, ...e }) {
|
|
23
|
-
return /* @__PURE__ */ a(
|
|
24
|
-
"li",
|
|
25
|
-
{
|
|
26
|
-
"data-slot": "breadcrumb-item",
|
|
27
|
-
className: t("inline-flex items-center gap-1.5", r),
|
|
28
|
-
...e
|
|
29
|
-
}
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
function h({
|
|
33
|
-
asChild: r,
|
|
34
|
-
className: e,
|
|
35
|
-
...n
|
|
36
|
-
}) {
|
|
37
|
-
return /* @__PURE__ */ a(
|
|
38
|
-
r ? s : "a",
|
|
39
|
-
{
|
|
40
|
-
"data-slot": "breadcrumb-link",
|
|
41
|
-
className: t("hover:text-foreground transition-colors", e),
|
|
42
|
-
...n
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
function N({ className: r, ...e }) {
|
|
47
|
-
return /* @__PURE__ */ a(
|
|
48
|
-
"span",
|
|
49
|
-
{
|
|
50
|
-
"data-slot": "breadcrumb-page",
|
|
51
|
-
role: "link",
|
|
52
|
-
"aria-disabled": "true",
|
|
53
|
-
"aria-current": "page",
|
|
54
|
-
className: t("text-foreground font-normal", r),
|
|
55
|
-
...e
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
function B({
|
|
60
|
-
children: r,
|
|
61
|
-
className: e,
|
|
62
|
-
...n
|
|
63
|
-
}) {
|
|
64
|
-
return /* @__PURE__ */ a(
|
|
65
|
-
"li",
|
|
66
|
-
{
|
|
67
|
-
"data-slot": "breadcrumb-separator",
|
|
68
|
-
role: "presentation",
|
|
69
|
-
"aria-hidden": "true",
|
|
70
|
-
className: t("[&>svg]:size-3.5", e),
|
|
71
|
-
...n,
|
|
72
|
-
children: r ?? /* @__PURE__ */ a(l, {})
|
|
73
|
-
}
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
function k({
|
|
77
|
-
className: r,
|
|
78
|
-
...e
|
|
79
|
-
}) {
|
|
80
|
-
return /* @__PURE__ */ o(
|
|
81
|
-
"span",
|
|
82
|
-
{
|
|
83
|
-
"data-slot": "breadcrumb-ellipsis",
|
|
84
|
-
role: "presentation",
|
|
85
|
-
"aria-hidden": "true",
|
|
86
|
-
className: t("flex size-9 items-center justify-center", r),
|
|
87
|
-
...e,
|
|
88
|
-
children: [
|
|
89
|
-
/* @__PURE__ */ a(i, { className: "size-4" }),
|
|
90
|
-
/* @__PURE__ */ a("span", { className: "sr-only", children: "More" })
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
);
|
|
94
|
-
}
|
|
1
|
+
import { B as e, a as s, b as m, c as b, d as c, e as d, f as B } from "../shared/Breadcrumb.js";
|
|
95
2
|
export {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
3
|
+
e as Breadcrumb,
|
|
4
|
+
s as BreadcrumbEllipsis,
|
|
5
|
+
m as BreadcrumbItem,
|
|
6
|
+
b as BreadcrumbLink,
|
|
7
|
+
c as BreadcrumbList,
|
|
8
|
+
d as BreadcrumbPage,
|
|
102
9
|
B as BreadcrumbSeparator
|
|
103
10
|
};
|
|
104
11
|
//# sourceMappingURL=Breadcrumb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","sources":[
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
3
|
+
export declare function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAA;AAI7D,wBAAgB,QAAQ,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,2CAuBrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { CheckIcon as o } from "lucide-react";
|
|
4
|
+
import * as r from "@radix-ui/react-checkbox";
|
|
5
|
+
import { c as a } from "../shared/utils.js";
|
|
6
|
+
function b({
|
|
7
|
+
className: c,
|
|
8
|
+
...i
|
|
9
|
+
}) {
|
|
10
|
+
return /* @__PURE__ */ e(
|
|
11
|
+
r.Root,
|
|
12
|
+
{
|
|
13
|
+
"data-slot": "checkbox",
|
|
14
|
+
className: a(
|
|
15
|
+
"peer size-4 shrink-0 rounded border transition-shadow outline-none",
|
|
16
|
+
"bg-[var(--checkbox-unchecked-bg)] border-[var(--checkbox-unchecked-border)]",
|
|
17
|
+
"data-[state=checked]:bg-[var(--checkbox-checked)] data-[state=checked]:text-[var(--checkbox-checked-foreground)] data-[state=checked]:border-[var(--checkbox-checked)]",
|
|
18
|
+
"focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:border-ring",
|
|
19
|
+
"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
|
|
20
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
21
|
+
c
|
|
22
|
+
),
|
|
23
|
+
...i,
|
|
24
|
+
children: /* @__PURE__ */ e(
|
|
25
|
+
r.Indicator,
|
|
26
|
+
{
|
|
27
|
+
"data-slot": "checkbox-indicator",
|
|
28
|
+
className: "grid place-content-center text-current transition-none",
|
|
29
|
+
children: /* @__PURE__ */ e(o, { className: "size-3.5" })
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
b as Checkbox
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { CheckIcon } from 'lucide-react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n\nimport { cn } from '@/utils'\n\nexport function Checkbox({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n\treturn (\n\t\t<CheckboxPrimitive.Root\n\t\t\tdata-slot=\"checkbox\"\n\t\t\tclassName={cn(\n\t\t\t\t'peer size-4 shrink-0 rounded border transition-shadow outline-none',\n\t\t\t\t'bg-[var(--checkbox-unchecked-bg)] border-[var(--checkbox-unchecked-border)]',\n\t\t\t\t'data-[state=checked]:bg-[var(--checkbox-checked)] data-[state=checked]:text-[var(--checkbox-checked-foreground)] data-[state=checked]:border-[var(--checkbox-checked)]',\n\t\t\t\t'focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:border-ring',\n\t\t\t\t'aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40',\n\t\t\t\t'disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<CheckboxPrimitive.Indicator\n\t\t\t\tdata-slot=\"checkbox-indicator\"\n\t\t\t\tclassName=\"grid place-content-center text-current transition-none\"\n\t\t\t>\n\t\t\t\t<CheckIcon className=\"size-3.5\" />\n\t\t\t</CheckboxPrimitive.Indicator>\n\t\t</CheckboxPrimitive.Root>\n\t)\n}\n"],"names":["Checkbox","className","props","jsx","CheckboxPrimitive","cn","CheckIcon"],"mappings":";;;;;AAQO,SAASA,EAAS;AAAA,EACxB,WAAAC;AAAA,EACA,GAAGC;AACJ,GAAwD;AACvD,SACC,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACA,aAAU;AAAA,MACV,WAAWC;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAJ;AAAA,MAAA;AAAA,MAEA,GAAGC;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACA,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA,gBAAAD,EAACG,GAAA,EAAU,WAAU,WAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IACjC;AAAA,EAAA;AAGH;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
export interface ConfirmDeleteDialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
title: string;
|
|
6
|
+
description: React.ReactNode;
|
|
7
|
+
onConfirm: () => void;
|
|
8
|
+
isPending?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function ConfirmDeleteDialog({ open, onOpenChange, title, description, onConfirm, isPending, }: ConfirmDeleteDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ConfirmDeleteDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDeleteDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ConfirmDeleteDialog/ConfirmDeleteDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,mBAAmB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAiB,GACjB,EAAE,wBAAwB,2CAuB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConfirmDeleteDialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,KAAK,wBAAwB,GAC7B,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import { B as t } from "../shared/Button.js";
|
|
3
|
+
import { D as c, b as d, e as D, h, c as f, d as u } from "../shared/Dialog.js";
|
|
4
|
+
function p({
|
|
5
|
+
open: r,
|
|
6
|
+
onOpenChange: l,
|
|
7
|
+
title: a,
|
|
8
|
+
description: n,
|
|
9
|
+
onConfirm: s,
|
|
10
|
+
isPending: o = !1
|
|
11
|
+
}) {
|
|
12
|
+
return /* @__PURE__ */ e(c, { open: r, onOpenChange: l, children: /* @__PURE__ */ i(d, { showCloseButton: !0, children: [
|
|
13
|
+
/* @__PURE__ */ i(D, { children: [
|
|
14
|
+
/* @__PURE__ */ e(h, { children: a }),
|
|
15
|
+
/* @__PURE__ */ e(f, { children: n })
|
|
16
|
+
] }),
|
|
17
|
+
/* @__PURE__ */ i(u, { showCloseButton: !1, children: [
|
|
18
|
+
/* @__PURE__ */ e(t, { variant: "outline", onClick: () => l(!1), children: "Cancel" }),
|
|
19
|
+
/* @__PURE__ */ e(
|
|
20
|
+
t,
|
|
21
|
+
{
|
|
22
|
+
variant: "destructive",
|
|
23
|
+
onClick: s,
|
|
24
|
+
disabled: o,
|
|
25
|
+
children: o ? "Deleting…" : "Delete"
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
] })
|
|
29
|
+
] }) });
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
p as ConfirmDeleteDialog
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=ConfirmDeleteDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDeleteDialog.js","sources":["../../src/components/ConfirmDeleteDialog/ConfirmDeleteDialog.tsx"],"sourcesContent":["'use client'\n\nimport { Button } from '@/components/Button/Button'\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n} from '@/components/Dialog/Dialog'\nimport type * as React from 'react'\n\nexport interface ConfirmDeleteDialogProps {\n\topen: boolean\n\tonOpenChange: (open: boolean) => void\n\ttitle: string\n\tdescription: React.ReactNode\n\tonConfirm: () => void\n\tisPending?: boolean\n}\n\nexport function ConfirmDeleteDialog({\n\topen,\n\tonOpenChange,\n\ttitle,\n\tdescription,\n\tonConfirm,\n\tisPending = false,\n}: ConfirmDeleteDialogProps) {\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent showCloseButton={true}>\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t\t<DialogDescription>{description}</DialogDescription>\n\t\t\t\t</DialogHeader>\n\t\t\t\t<DialogFooter showCloseButton={false}>\n\t\t\t\t\t<Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"destructive\"\n\t\t\t\t\t\tonClick={onConfirm}\n\t\t\t\t\t\tdisabled={isPending}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isPending ? 'Deleting…' : 'Delete'}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t)\n}\n"],"names":["ConfirmDeleteDialog","open","onOpenChange","title","description","onConfirm","isPending","Dialog","jsxs","DialogContent","DialogHeader","jsx","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":";;;AAsBO,SAASA,EAAoB;AAAA,EACnC,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AACb,GAA6B;AAC5B,2BACEC,GAAA,EAAO,MAAAN,GAAY,cAAAC,GACnB,UAAA,gBAAAM,EAACC,GAAA,EAAc,iBAAiB,IAC/B,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAC,EAACC,KAAa,UAAAT,EAAA,CAAM;AAAA,MACpB,gBAAAQ,EAACE,KAAmB,UAAAT,EAAA,CAAY;AAAA,IAAA,GACjC;AAAA,IACA,gBAAAI,EAACM,GAAA,EAAa,iBAAiB,IAC9B,UAAA;AAAA,MAAA,gBAAAH,EAACI,GAAA,EAAO,SAAQ,WAAU,SAAS,MAAMb,EAAa,EAAK,GAAG,UAAA,SAAA,CAE9D;AAAA,MACA,gBAAAS;AAAA,QAACI;AAAA,QAAA;AAAA,UACA,SAAQ;AAAA,UACR,SAASV;AAAA,UACT,UAAUC;AAAA,UAET,cAAY,cAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAC5B,EAAA,CACD;AAAA,EAAA,EAAA,CACD,EAAA,CACD;AAEF;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface DelayedLoadingFallbackProps {
|
|
3
|
+
/** When true, shows fallback after delay (or nothing during delay). */
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
/** Delay in ms before showing fallback. Default: 250ms. */
|
|
6
|
+
delayMs?: number;
|
|
7
|
+
/** Shown after delay while loading (e.g. skeleton or spinner). */
|
|
8
|
+
fallback: ReactNode;
|
|
9
|
+
/** Shown when not loading. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Avoids flashing loading UI on fast loads: shows nothing for the first delayMs,
|
|
14
|
+
* then fallback; when loading ends, shows children immediately.
|
|
15
|
+
*/
|
|
16
|
+
export declare function DelayedLoadingFallback({ isLoading, delayMs, fallback, children, }: DelayedLoadingFallbackProps): import("react/jsx-runtime").JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=DelayedLoadingFallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DelayedLoadingFallback.d.ts","sourceRoot":"","sources":["../../../src/components/DelayedLoadingFallback/DelayedLoadingFallback.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,WAAW,2BAA2B;IAC3C,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAA;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACtC,SAAS,EACT,OAAa,EACb,QAAQ,EACR,QAAQ,GACR,EAAE,2BAA2B,kDAM7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DelayedLoadingFallback/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,KAAK,2BAA2B,GAChC,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as e, Fragment as a } from "react/jsx-runtime";
|
|
2
|
+
import { u } from "../shared/use-delayed-loading.js";
|
|
3
|
+
function m({
|
|
4
|
+
isLoading: r,
|
|
5
|
+
delayMs: l = 250,
|
|
6
|
+
fallback: n,
|
|
7
|
+
children: o
|
|
8
|
+
}) {
|
|
9
|
+
const t = u(r, l);
|
|
10
|
+
return r ? t ? /* @__PURE__ */ e(a, { children: n }) : null : /* @__PURE__ */ e(a, { children: o });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
m as DelayedLoadingFallback
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=DelayedLoadingFallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DelayedLoadingFallback.js","sources":["../../src/components/DelayedLoadingFallback/DelayedLoadingFallback.tsx"],"sourcesContent":["'use client'\n\nimport type { ReactNode } from 'react'\nimport { useDelayedLoading } from '@/hooks/use-delayed-loading/use-delayed-loading'\n\nexport interface DelayedLoadingFallbackProps {\n\t/** When true, shows fallback after delay (or nothing during delay). */\n\tisLoading: boolean\n\t/** Delay in ms before showing fallback. Default: 250ms. */\n\tdelayMs?: number\n\t/** Shown after delay while loading (e.g. skeleton or spinner). */\n\tfallback: ReactNode\n\t/** Shown when not loading. */\n\tchildren: ReactNode\n}\n\n/**\n * Avoids flashing loading UI on fast loads: shows nothing for the first delayMs,\n * then fallback; when loading ends, shows children immediately.\n */\nexport function DelayedLoadingFallback({\n\tisLoading,\n\tdelayMs = 250,\n\tfallback,\n\tchildren,\n}: DelayedLoadingFallbackProps) {\n\tconst showFallback = useDelayedLoading(isLoading, delayMs)\n\tif (isLoading) {\n\t\treturn showFallback ? <>{fallback}</> : null\n\t}\n\treturn <>{children}</>\n}\n"],"names":["DelayedLoadingFallback","isLoading","delayMs","fallback","children","showFallback","useDelayedLoading","jsx","Fragment"],"mappings":";;AAoBO,SAASA,EAAuB;AAAA,EACtC,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,UAAAC;AACD,GAAgC;AAC/B,QAAMC,IAAeC,EAAkBL,GAAWC,CAAO;AACzD,SAAID,IACII,IAAe,gBAAAE,EAAAC,GAAA,EAAG,UAAAL,EAAA,CAAS,IAAM,8BAE/B,UAAAC,GAAS;AACpB;"}
|