@ciridae/ui 0.3.3 → 0.3.5

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 (140) hide show
  1. package/dist/assets/ciridae/brand-background-dark.webp +0 -0
  2. package/dist/assets/ciridae/brand-background-light.webp +0 -0
  3. package/dist/assets/ciridae/ciridae-black.svg +17 -0
  4. package/dist/assets/ciridae/ciridae-brand-assets.d.ts +25 -0
  5. package/dist/assets/ciridae/ciridae-brand-assets.js +25 -0
  6. package/dist/assets/ciridae/ciridae-icon-black.png +0 -0
  7. package/dist/assets/ciridae/ciridae-icon-white.png +0 -0
  8. package/dist/assets/ciridae/ciridae-ui-wordmark-black.png +0 -0
  9. package/dist/assets/ciridae/ciridae-ui-wordmark-white.png +0 -0
  10. package/dist/assets/ciridae/ciridae-white.svg +17 -0
  11. package/dist/assets/ciridae/ciridae-wordmark-black.png +0 -0
  12. package/dist/assets/ciridae/ciridae-wordmark-white.png +0 -0
  13. package/dist/assets/ciridae/favicon.ico +0 -0
  14. package/dist/assets/ciridae/logo-white.png +0 -0
  15. package/dist/assets/ciridae/sign-in-screenshot.png +0 -0
  16. package/dist/components/blocks/admin-users-table.d.ts +22 -0
  17. package/dist/components/blocks/admin-users-table.js +115 -0
  18. package/dist/components/blocks/comment-composer.d.ts +16 -0
  19. package/dist/components/blocks/comment-composer.js +113 -0
  20. package/dist/components/blocks/comment-item.d.ts +8 -0
  21. package/dist/components/blocks/comment-item.js +45 -0
  22. package/dist/components/blocks/comment-thread.d.ts +18 -0
  23. package/dist/components/blocks/comment-thread.js +30 -0
  24. package/dist/components/blocks/comment-types.d.ts +18 -0
  25. package/dist/components/blocks/comment-types.js +11 -0
  26. package/dist/components/blocks/feedback-center-comments.d.ts +12 -0
  27. package/dist/components/blocks/feedback-center-comments.js +11 -0
  28. package/dist/components/blocks/feedback-center-sheet-parts.d.ts +34 -0
  29. package/dist/components/blocks/feedback-center-sheet-parts.js +44 -0
  30. package/dist/components/blocks/feedback-center-sheet.d.ts +19 -0
  31. package/dist/components/blocks/feedback-center-sheet.js +46 -0
  32. package/dist/components/blocks/feedback-composer-parts.d.ts +16 -0
  33. package/dist/components/blocks/feedback-composer-parts.js +43 -0
  34. package/dist/components/blocks/feedback-composer-types.d.ts +11 -0
  35. package/dist/components/blocks/feedback-composer-types.js +1 -0
  36. package/dist/components/blocks/feedback-composer.d.ts +17 -0
  37. package/dist/components/blocks/feedback-composer.js +112 -0
  38. package/dist/components/blocks/feedback-date-format.d.ts +5 -0
  39. package/dist/components/blocks/feedback-date-format.js +11 -0
  40. package/dist/components/blocks/feedback-detail-sheet.d.ts +9 -0
  41. package/dist/components/blocks/feedback-detail-sheet.js +41 -0
  42. package/dist/components/blocks/feedback-metrics.d.ts +6 -0
  43. package/dist/components/blocks/feedback-metrics.js +15 -0
  44. package/dist/components/blocks/feedback-sheet.d.ts +8 -0
  45. package/dist/components/blocks/feedback-sheet.js +16 -0
  46. package/dist/components/blocks/feedback-status-badge.d.ts +6 -0
  47. package/dist/components/blocks/feedback-status-badge.js +14 -0
  48. package/dist/components/blocks/feedback-table-row.d.ts +6 -0
  49. package/dist/components/blocks/feedback-table-row.js +37 -0
  50. package/dist/components/blocks/feedback-table-sort.d.ts +11 -0
  51. package/dist/components/blocks/feedback-table-sort.js +81 -0
  52. package/dist/components/blocks/feedback-table.d.ts +16 -0
  53. package/dist/components/blocks/feedback-table.js +45 -0
  54. package/dist/components/blocks/feedback-tracking-types.d.ts +78 -0
  55. package/dist/components/blocks/feedback-tracking-types.js +36 -0
  56. package/dist/components/blocks/feedback-type-badge.d.ts +6 -0
  57. package/dist/components/blocks/feedback-type-badge.js +12 -0
  58. package/dist/components/blocks/feedback-user-detail.d.ts +10 -0
  59. package/dist/components/blocks/feedback-user-detail.js +57 -0
  60. package/dist/components/blocks/feedback-user-list.d.ts +9 -0
  61. package/dist/components/blocks/feedback-user-list.js +33 -0
  62. package/dist/components/blocks/invite-user-sheet.d.ts +20 -0
  63. package/dist/components/blocks/invite-user-sheet.js +72 -0
  64. package/dist/components/blocks/kanban-board-parts.d.ts +26 -0
  65. package/dist/components/blocks/kanban-board-parts.js +85 -0
  66. package/dist/components/blocks/kanban-board-utils.d.ts +42 -0
  67. package/dist/components/blocks/kanban-board-utils.js +115 -0
  68. package/dist/components/blocks/kanban-board.d.ts +16 -0
  69. package/dist/components/blocks/kanban-board.js +36 -0
  70. package/dist/components/blocks/kanban-card.d.ts +10 -0
  71. package/dist/components/blocks/kanban-card.js +34 -0
  72. package/dist/components/blocks/kanban-column.d.ts +17 -0
  73. package/dist/components/blocks/kanban-column.js +34 -0
  74. package/dist/components/blocks/kanban-detail-sheet.d.ts +17 -0
  75. package/dist/components/blocks/kanban-detail-sheet.js +34 -0
  76. package/dist/components/blocks/kanban-types.d.ts +24 -0
  77. package/dist/components/blocks/kanban-types.js +1 -0
  78. package/dist/components/blocks/timestamp-format.d.ts +8 -0
  79. package/dist/components/blocks/timestamp-format.js +66 -0
  80. package/dist/components/pages/admin-users-page.d.ts +11 -0
  81. package/dist/components/pages/admin-users-page.js +30 -0
  82. package/dist/components/pages/feedback-stakeholder-page-parts.d.ts +18 -0
  83. package/dist/components/pages/feedback-stakeholder-page-parts.js +36 -0
  84. package/dist/components/pages/feedback-stakeholder-page.d.ts +9 -0
  85. package/dist/components/pages/feedback-stakeholder-page.js +66 -0
  86. package/dist/components/pages/kanban-page.d.ts +13 -0
  87. package/dist/components/pages/kanban-page.js +68 -0
  88. package/dist/components/ui/calendar.d.ts +2 -1
  89. package/dist/components/ui/calendar.js +1 -1
  90. package/dist/components/ui/dialog.d.ts +2 -1
  91. package/dist/components/ui/dialog.js +2 -2
  92. package/dist/components/ui/page-header.d.ts +15 -1
  93. package/dist/components/ui/page-header.js +20 -2
  94. package/dist/components/ui/resizable.d.ts +9 -2
  95. package/dist/components/ui/resizable.js +3 -3
  96. package/dist/components/ui/sonner.d.ts +2 -2
  97. package/dist/components/ui/sonner.js +2 -2
  98. package/dist/styled-system/css/css.d.ts +11 -16
  99. package/dist/styled-system/css/cva.d.ts +2 -4
  100. package/dist/styled-system/css/cx.d.ts +2 -3
  101. package/dist/styled-system/css/index.d.ts +1 -1
  102. package/dist/styled-system/css/sva.d.ts +1 -2
  103. package/dist/styled-system/patterns/aspect-ratio.d.ts +5 -9
  104. package/dist/styled-system/patterns/bleed.d.ts +6 -10
  105. package/dist/styled-system/patterns/box.d.ts +4 -9
  106. package/dist/styled-system/patterns/center.d.ts +5 -9
  107. package/dist/styled-system/patterns/circle.d.ts +5 -9
  108. package/dist/styled-system/patterns/container.d.ts +4 -9
  109. package/dist/styled-system/patterns/cq.d.ts +6 -10
  110. package/dist/styled-system/patterns/divider.d.ts +7 -11
  111. package/dist/styled-system/patterns/flex.d.ts +11 -15
  112. package/dist/styled-system/patterns/float.d.ts +8 -12
  113. package/dist/styled-system/patterns/grid-item.d.ts +10 -14
  114. package/dist/styled-system/patterns/grid.d.ts +9 -13
  115. package/dist/styled-system/patterns/hstack.d.ts +6 -10
  116. package/dist/styled-system/patterns/index.d.ts +1 -1
  117. package/dist/styled-system/patterns/link-overlay.d.ts +4 -9
  118. package/dist/styled-system/patterns/spacer.d.ts +5 -9
  119. package/dist/styled-system/patterns/square.d.ts +5 -9
  120. package/dist/styled-system/patterns/stack.d.ts +8 -12
  121. package/dist/styled-system/patterns/visually-hidden.d.ts +4 -9
  122. package/dist/styled-system/patterns/vstack.d.ts +6 -10
  123. package/dist/styled-system/patterns/wrap.d.ts +9 -13
  124. package/dist/styled-system/tokens/index.d.ts +4 -6
  125. package/dist/styled-system/tokens/tokens.d.ts +42 -61
  126. package/dist/styled-system/types/composition.d.ts +20 -211
  127. package/dist/styled-system/types/conditions.d.ts +297 -303
  128. package/dist/styled-system/types/csstype.d.ts +20289 -22518
  129. package/dist/styled-system/types/global.d.ts +11 -12
  130. package/dist/styled-system/types/index.d.ts +2 -2
  131. package/dist/styled-system/types/parts.d.ts +2 -3
  132. package/dist/styled-system/types/pattern.d.ts +75 -71
  133. package/dist/styled-system/types/prop-type.d.ts +236 -233
  134. package/dist/styled-system/types/recipe.d.ts +114 -155
  135. package/dist/styled-system/types/selectors.d.ts +8 -58
  136. package/dist/styled-system/types/static-css.d.ts +40 -47
  137. package/dist/styled-system/types/style-props.d.ts +8078 -8082
  138. package/dist/styled-system/types/system-types.d.ts +69 -111
  139. package/dist/styles.css +490 -1
  140. package/package.json +159 -7
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { PlusIcon, SearchIcon } from "lucide-react";
4
+ import { KanbanBoard } from "@ciridae/ui/kanban-board";
5
+ import { KanbanDetailSheet } from "@ciridae/ui/kanban-detail-sheet";
6
+ import { Button } from "@ciridae/ui/button";
7
+ import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, } from "@ciridae/ui/input-group";
8
+ import { PageHeader, PageHeaderActions, PageHeaderContent, PageHeaderDescription, PageHeaderMain, PageHeaderTitle, } from "@ciridae/ui/page-header";
9
+ function KanbanPage({ cards, columns, isLoading = false, onCardMove, onCreateCard, renderCardActions, renderColumnActions, }) {
10
+ const [search, setSearch] = React.useState("");
11
+ const [selectedCardId, setSelectedCardId] = React.useState();
12
+ const filteredCards = React.useMemo(() => filterKanbanCards(cards, search), [cards, search]);
13
+ const selectedCard = React.useMemo(() => cards.find((card) => card.id === selectedCardId), [cards, selectedCardId]);
14
+ const selectedColumn = getSelectedColumn(columns, selectedCard);
15
+ return (_jsxs("div", { className: "min-h-svh bg-background text-foreground", children: [_jsx(KanbanPageHeader, { onCreateCard: onCreateCard }), _jsxs("main", { className: "grid gap-4 px-4 py-4 md:px-6 lg:px-8", children: [_jsx(KanbanPageToolbar, { filteredCount: filteredCards.length, onSearchChange: setSearch, search: search, totalCount: cards.length }), _jsx(KanbanBoard, { cards: filteredCards, columnMaxHeight: "calc(100vh - 18rem)", columns: columns, empty: getBoardEmptyMessage(search), isLoading: isLoading, onCardMove: onCardMove
16
+ ? (move) => onCardMove(getUnfilteredMoveEvent(move, filteredCards, cards))
17
+ : undefined, onCardSelect: (card) => setSelectedCardId(card.id), renderCardActions: renderCardActions, renderColumnActions: renderColumnActions })] }), _jsx(KanbanDetailSheet, { card: selectedCard, column: selectedColumn, onOpenChange: (open) => {
18
+ if (!open)
19
+ setSelectedCardId(undefined);
20
+ }, open: Boolean(selectedCard) })] }));
21
+ }
22
+ function KanbanPageHeader({ onCreateCard }) {
23
+ return (_jsx(PageHeader, { children: _jsxs(PageHeaderMain, { children: [_jsxs(PageHeaderContent, { children: [_jsx(PageHeaderTitle, { children: "Work board" }), _jsx(PageHeaderDescription, { children: "Track work across status columns and open cards for detail." })] }), onCreateCard ? (_jsx(PageHeaderActions, { children: _jsxs(Button, { onClick: onCreateCard, type: "button", children: [_jsx(PlusIcon, {}), "New card"] }) })) : null] }) }));
24
+ }
25
+ function KanbanPageToolbar({ filteredCount, onSearchChange, search, totalCount, }) {
26
+ return (_jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between", children: [_jsx("div", { className: "w-full sm:max-w-sm", children: _jsxs(InputGroup, { children: [_jsx(InputGroupAddon, { children: _jsx(KanbanSearchAdornment, {}) }), _jsx(InputGroupInput, { "aria-label": "Search cards", onChange: (event) => onSearchChange(event.target.value), placeholder: "Search cards...", value: search })] }) }), _jsxs("div", { className: "font-mono text-xs text-muted-foreground tabular-nums", children: [filteredCount, " of ", totalCount, " cards"] })] }));
27
+ }
28
+ function KanbanSearchAdornment() {
29
+ return (_jsxs(InputGroupText, { children: [_jsx(SearchIcon, {}), _jsx("span", { className: "sr-only", children: "Search" })] }));
30
+ }
31
+ function filterKanbanCards(cards, search) {
32
+ const query = search.trim().toLowerCase();
33
+ if (!query)
34
+ return cards;
35
+ return cards.filter((card) => matchesKanbanSearch(card, query));
36
+ }
37
+ function matchesKanbanSearch(card, query) {
38
+ return [card.id, card.title, card.description]
39
+ .filter(Boolean)
40
+ .some((value) => value?.toLowerCase().includes(query));
41
+ }
42
+ function getSelectedColumn(columns, selectedCard) {
43
+ if (!selectedCard)
44
+ return undefined;
45
+ return columns.find((column) => column.id === selectedCard.columnId);
46
+ }
47
+ function getUnfilteredMoveEvent(move, filteredCards, cards) {
48
+ const fromIndex = cards
49
+ .filter((card) => card.columnId === move.fromColumnId)
50
+ .findIndex((card) => card.id === move.cardId);
51
+ const filteredTargetCards = filteredCards.filter((card) => card.columnId === move.toColumnId);
52
+ const targetCard = filteredTargetCards[move.toIndex];
53
+ const unfilteredTargetCards = cards.filter((card) => card.columnId === move.toColumnId);
54
+ const toIndex = targetCard
55
+ ? unfilteredTargetCards.findIndex((card) => card.id === targetCard.id)
56
+ : unfilteredTargetCards.length;
57
+ return {
58
+ ...move,
59
+ fromIndex: fromIndex >= 0 ? fromIndex : move.fromIndex,
60
+ toIndex: toIndex >= 0 ? toIndex : move.toIndex,
61
+ };
62
+ }
63
+ function getBoardEmptyMessage(search) {
64
+ if (search.trim())
65
+ return "No cards match this search";
66
+ return "No cards";
67
+ }
68
+ export { KanbanPage };
@@ -3,7 +3,8 @@ import { DayPicker, type DayButton } from "react-day-picker";
3
3
  import { Button } from "@ciridae/ui/button";
4
4
  type CalendarProps = React.ComponentProps<typeof DayPicker> & {
5
5
  buttonVariant?: React.ComponentProps<typeof Button>["variant"];
6
+ initialFocus?: boolean;
6
7
  };
7
- declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: CalendarProps): React.JSX.Element;
8
+ declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, initialFocus: _initialFocus, components, ...props }: CalendarProps): React.JSX.Element;
8
9
  declare function CalendarDayButton({ className, day, modifiers, ...props }: React.ComponentProps<typeof DayButton>): React.JSX.Element;
9
10
  export { Calendar, CalendarDayButton };
@@ -5,7 +5,7 @@ import { DayPicker, getDefaultClassNames } from "react-day-picker";
5
5
  import { cn } from "@ciridae/ui/utils";
6
6
  import { Button } from "@ciridae/ui/button";
7
7
  import { buttonVariants } from "@ciridae/ui/button-variants";
8
- function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
8
+ function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, initialFocus: _initialFocus, components, ...props }) {
9
9
  const defaultClassNames = getDefaultClassNames();
10
10
  const mergedClassNames = getCalendarClassNames({
11
11
  buttonVariant,
@@ -10,7 +10,8 @@ declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogP
10
10
  declare function DialogPortal({ container, ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): React.JSX.Element;
11
11
  declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): React.JSX.Element;
12
12
  declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): React.JSX.Element;
13
- declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
13
+ declare function DialogContent({ className, children, overlayClassName, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
14
+ overlayClassName?: string;
14
15
  showCloseButton?: boolean;
15
16
  }): React.JSX.Element;
16
17
  declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
@@ -30,8 +30,8 @@ function DialogClose({ ...props }) {
30
30
  function DialogOverlay({ className, ...props }) {
31
31
  return (_jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn("fixed inset-0 z-50 bg-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }));
32
32
  }
33
- function DialogContent({ className, children, showCloseButton = true, ...props }) {
34
- return (_jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-(--panel-gap) rounded-lg border bg-background p-(--panel-padding) shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 sm:max-w-lg", className), ...props, children: [children, showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-[var(--focus-ring-width)] focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
33
+ function DialogContent({ className, children, overlayClassName, showCloseButton = true, ...props }) {
34
+ return (_jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [_jsx(DialogOverlay, { className: overlayClassName }), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-(--panel-gap) rounded-lg border bg-background p-(--panel-padding) shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 sm:max-w-lg", className), ...props, children: [children, showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-[var(--focus-ring-width)] focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
35
35
  }
36
36
  function DialogHeader({ className, ...props }) {
37
37
  return (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
@@ -1,6 +1,20 @@
1
1
  import * as React from "react";
2
2
  import { Button } from "@ciridae/ui/button";
3
- declare function PageHeader({ className, ...props }: React.ComponentProps<"header">): React.JSX.Element;
3
+ type PageHeaderBreadcrumbItem = {
4
+ label: string;
5
+ to?: string;
6
+ };
7
+ type PageHeaderProps = React.ComponentProps<"header"> & {
8
+ actions?: React.ReactNode;
9
+ backLink?: {
10
+ label: string;
11
+ to?: string;
12
+ };
13
+ breadcrumbItems?: PageHeaderBreadcrumbItem[];
14
+ subtitle?: React.ReactNode;
15
+ title?: React.ReactNode;
16
+ };
17
+ declare function PageHeader({ actions, backLink, breadcrumbItems, children, className, subtitle, title, ...props }: PageHeaderProps): React.JSX.Element;
4
18
  declare function PageHeaderMain({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
5
19
  declare function PageHeaderContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
6
20
  type PageHeaderBackButtonProps = (Omit<React.ComponentProps<typeof Button>, "asChild" | "children"> & {
@@ -2,8 +2,26 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ArrowLeftIcon } from "lucide-react";
3
3
  import { Button } from "@ciridae/ui/button";
4
4
  import { cn } from "@ciridae/ui/utils";
5
- function PageHeader({ className, ...props }) {
6
- return (_jsx("header", { "data-slot": "page-header", className: cn("border-b bg-background text-foreground", className), ...props }));
5
+ function PageHeader({ actions, backLink, breadcrumbItems, children, className, subtitle, title, ...props }) {
6
+ if (hasPageHeaderConvenienceContent({ actions, backLink, breadcrumbItems, subtitle, title })) {
7
+ return (_jsx("header", { "data-slot": "page-header", className: cn("border-b bg-background text-foreground", className), ...props, children: _jsx(PageHeaderConvenienceLayout, { actions: actions, backLink: backLink, breadcrumbItems: breadcrumbItems, subtitle: subtitle, title: title, children: children }) }));
8
+ }
9
+ return (_jsx("header", { "data-slot": "page-header", className: cn("border-b bg-background text-foreground", className), ...props, children: children }));
10
+ }
11
+ function hasPageHeaderConvenienceContent({ actions, backLink, breadcrumbItems, subtitle, title, }) {
12
+ return Boolean(title || subtitle || actions || backLink || breadcrumbItems);
13
+ }
14
+ function PageHeaderConvenienceLayout({ actions, backLink, breadcrumbItems, children, subtitle, title, }) {
15
+ return (_jsxs(PageHeaderMain, { children: [_jsxs(PageHeaderContent, { children: [backLink ? _jsx(PageHeaderBackLink, { backLink: backLink }) : null, breadcrumbItems?.length ? _jsx(PageHeaderBreadcrumbs, { items: breadcrumbItems }) : null, title ? _jsx(PageHeaderTitle, { children: title }) : null, subtitle ? _jsx(PageHeaderDescription, { children: subtitle }) : null, children] }), actions ? _jsx(PageHeaderActions, { children: actions }) : null] }));
16
+ }
17
+ function PageHeaderBackLink({ backLink }) {
18
+ if (backLink.to) {
19
+ return (_jsx(PageHeaderBackButton, { asChild: true, children: _jsx("a", { href: backLink.to, children: backLink.label }) }));
20
+ }
21
+ return _jsx(PageHeaderBackButton, { children: backLink.label });
22
+ }
23
+ function PageHeaderBreadcrumbs({ items }) {
24
+ return (_jsx(PageHeaderMeta, { children: items.map((item) => (_jsx("span", { children: item.label }, `${item.label}:${item.to ?? ""}`))) }));
7
25
  }
8
26
  function PageHeaderMain({ className, ...props }) {
9
27
  return (_jsx("div", { "data-slot": "page-header-main", className: cn("flex flex-col gap-3 px-4 py-3 md:flex-row md:items-center md:justify-between md:px-6 lg:px-8", className), ...props }));
@@ -1,6 +1,13 @@
1
1
  import * as ResizablePrimitive from "react-resizable-panels";
2
- declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): import("react").JSX.Element;
3
- declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps): import("react").JSX.Element;
2
+ type ResizablePanelGroupProps = ResizablePrimitive.GroupProps & {
3
+ autoSaveId?: string;
4
+ direction?: "horizontal" | "vertical";
5
+ };
6
+ type ResizablePanelProps = ResizablePrimitive.PanelProps & {
7
+ order?: number;
8
+ };
9
+ declare function ResizablePanelGroup({ autoSaveId: _autoSaveId, className, direction, ...props }: ResizablePanelGroupProps): import("react").JSX.Element;
10
+ declare function ResizablePanel({ order: _order, ...props }: ResizablePanelProps): import("react").JSX.Element;
4
11
  declare function ResizableHandle({ withHandle, className, ...props }: ResizablePrimitive.SeparatorProps & {
5
12
  withHandle?: boolean;
6
13
  }): import("react").JSX.Element;
@@ -3,10 +3,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { GripVerticalIcon } from "lucide-react";
4
4
  import * as ResizablePrimitive from "react-resizable-panels";
5
5
  import { cn } from "@ciridae/ui/utils";
6
- function ResizablePanelGroup({ className, ...props }) {
7
- return (_jsx(ResizablePrimitive.Group, { "data-slot": "resizable-panel-group", className: cn("flex h-full w-full aria-[orientation=vertical]:flex-col", className), ...props }));
6
+ function ResizablePanelGroup({ autoSaveId: _autoSaveId, className, direction, ...props }) {
7
+ return (_jsx(ResizablePrimitive.Group, { "data-slot": "resizable-panel-group", className: cn("flex h-full w-full aria-[orientation=vertical]:flex-col", className), ...props, orientation: props.orientation ?? direction }));
8
8
  }
9
- function ResizablePanel({ ...props }) {
9
+ function ResizablePanel({ order: _order, ...props }) {
10
10
  return _jsx(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
11
11
  }
12
12
  function ResizableHandle({ withHandle, className, ...props }) {
@@ -1,3 +1,3 @@
1
- import { type ToasterProps } from "sonner";
1
+ import { toast, type ToasterProps } from "sonner";
2
2
  declare const Toaster: ({ theme, ...props }: ToasterProps) => import("react").JSX.Element;
3
- export { Toaster };
3
+ export { toast, Toaster };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { CircleCheckIcon, InfoIcon, OctagonXIcon, TriangleAlertIcon } from "lucide-react";
4
- import { Toaster as Sonner } from "sonner";
4
+ import { toast, Toaster as Sonner } from "sonner";
5
5
  import { Spinner } from "@ciridae/ui/spinner";
6
6
  const toasterStyle = {
7
7
  "--normal-bg": "var(--popover)",
@@ -30,4 +30,4 @@ const Toaster = ({ theme = "system", ...props }) => {
30
30
  loading: _jsx(Spinner, { className: "size-4" }),
31
31
  }, style: toasterStyle, ...props }));
32
32
  };
33
- export { Toaster };
33
+ export { toast, Toaster };
@@ -1,22 +1,17 @@
1
1
  /* eslint-disable */
2
2
  import type { SystemStyleObject } from '../types/index';
3
-
4
- type Styles = SystemStyleObject | undefined | null | false
5
-
3
+ type Styles = SystemStyleObject | undefined | null | false;
6
4
  interface CssRawFunction {
7
- (styles: Styles): SystemStyleObject
8
- (styles: Styles[]): SystemStyleObject
9
- (...styles: Array<Styles | Styles[]>): SystemStyleObject
10
- (styles: Styles): SystemStyleObject
5
+ (styles: Styles): SystemStyleObject;
6
+ (styles: Styles[]): SystemStyleObject;
7
+ (...styles: Array<Styles | Styles[]>): SystemStyleObject;
8
+ (styles: Styles): SystemStyleObject;
11
9
  }
12
-
13
10
  interface CssFunction {
14
- (styles: Styles): string
15
- (styles: Styles[]): string
16
- (...styles: Array<Styles | Styles[]>): string
17
- (styles: Styles): string
18
-
19
- raw: CssRawFunction
11
+ (styles: Styles): string;
12
+ (styles: Styles[]): string;
13
+ (...styles: Array<Styles | Styles[]>): string;
14
+ (styles: Styles): string;
15
+ raw: CssRawFunction;
20
16
  }
21
-
22
- export declare const css: CssFunction;
17
+ export declare const css: CssFunction;
@@ -1,6 +1,4 @@
1
1
  /* eslint-disable */
2
2
  import type { RecipeCreatorFn } from '../types/recipe';
3
-
4
- export declare const cva: RecipeCreatorFn
5
-
6
- export type { RecipeVariant, RecipeVariantProps } from '../types/recipe';
3
+ export declare const cva: RecipeCreatorFn;
4
+ export type { RecipeVariant, RecipeVariantProps } from '../types/recipe';
@@ -1,5 +1,4 @@
1
1
  /* eslint-disable */
2
- type Argument = string | boolean | null | undefined
3
-
2
+ type Argument = string | boolean | null | undefined;
4
3
  /** Conditionally join classNames into a single string */
5
- export declare function cx(...args: Argument[]): string
4
+ export declare function cx(...args: Argument[]): string;
@@ -2,4 +2,4 @@
2
2
  export * from './css';
3
3
  export * from './cx';
4
4
  export * from './cva';
5
- export * from './sva';
5
+ export * from './sva';
@@ -1,4 +1,3 @@
1
1
  /* eslint-disable */
2
2
  import type { SlotRecipeCreatorFn } from '../types/recipe';
3
-
4
- export declare const sva: SlotRecipeCreatorFn
3
+ export declare const sva: SlotRecipeCreatorFn;
@@ -4,17 +4,13 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface AspectRatioProperties {
9
- ratio?: ConditionalValue<number>
8
+ ratio?: ConditionalValue<number>;
9
+ }
10
+ interface AspectRatioStyles extends AspectRatioProperties, DistributiveOmit<SystemStyleObject, keyof AspectRatioProperties | 'aspectRatio'> {
10
11
  }
11
-
12
- interface AspectRatioStyles extends AspectRatioProperties, DistributiveOmit<SystemStyleObject, keyof AspectRatioProperties | 'aspectRatio'> {}
13
-
14
12
  interface AspectRatioPatternFn {
15
- (styles?: AspectRatioStyles): string
16
- raw: (styles?: AspectRatioStyles) => SystemStyleObject
13
+ (styles?: AspectRatioStyles): string;
14
+ raw: (styles?: AspectRatioStyles) => SystemStyleObject;
17
15
  }
18
-
19
-
20
16
  export declare const aspectRatio: AspectRatioPatternFn;
@@ -4,18 +4,14 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface BleedProperties {
9
- inline?: SystemProperties["marginInline"]
10
- block?: SystemProperties["marginBlock"]
8
+ inline?: SystemProperties["marginInline"];
9
+ block?: SystemProperties["marginBlock"];
10
+ }
11
+ interface BleedStyles extends BleedProperties, DistributiveOmit<SystemStyleObject, keyof BleedProperties> {
11
12
  }
12
-
13
- interface BleedStyles extends BleedProperties, DistributiveOmit<SystemStyleObject, keyof BleedProperties > {}
14
-
15
13
  interface BleedPatternFn {
16
- (styles?: BleedStyles): string
17
- raw: (styles?: BleedStyles) => SystemStyleObject
14
+ (styles?: BleedStyles): string;
15
+ raw: (styles?: BleedStyles) => SystemStyleObject;
18
16
  }
19
-
20
-
21
17
  export declare const bleed: BleedPatternFn;
@@ -4,17 +4,12 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface BoxProperties {
9
-
10
8
  }
11
-
12
- interface BoxStyles extends BoxProperties, DistributiveOmit<SystemStyleObject, keyof BoxProperties > {}
13
-
9
+ interface BoxStyles extends BoxProperties, DistributiveOmit<SystemStyleObject, keyof BoxProperties> {
10
+ }
14
11
  interface BoxPatternFn {
15
- (styles?: BoxStyles): string
16
- raw: (styles?: BoxStyles) => SystemStyleObject
12
+ (styles?: BoxStyles): string;
13
+ raw: (styles?: BoxStyles) => SystemStyleObject;
17
14
  }
18
-
19
-
20
15
  export declare const box: BoxPatternFn;
@@ -4,17 +4,13 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface CenterProperties {
9
- inline?: ConditionalValue<boolean>
8
+ inline?: ConditionalValue<boolean>;
9
+ }
10
+ interface CenterStyles extends CenterProperties, DistributiveOmit<SystemStyleObject, keyof CenterProperties> {
10
11
  }
11
-
12
- interface CenterStyles extends CenterProperties, DistributiveOmit<SystemStyleObject, keyof CenterProperties > {}
13
-
14
12
  interface CenterPatternFn {
15
- (styles?: CenterStyles): string
16
- raw: (styles?: CenterStyles) => SystemStyleObject
13
+ (styles?: CenterStyles): string;
14
+ raw: (styles?: CenterStyles) => SystemStyleObject;
17
15
  }
18
-
19
-
20
16
  export declare const center: CenterPatternFn;
@@ -4,17 +4,13 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface CircleProperties {
9
- size?: SystemProperties["width"]
8
+ size?: SystemProperties["width"];
9
+ }
10
+ interface CircleStyles extends CircleProperties, DistributiveOmit<SystemStyleObject, keyof CircleProperties> {
10
11
  }
11
-
12
- interface CircleStyles extends CircleProperties, DistributiveOmit<SystemStyleObject, keyof CircleProperties > {}
13
-
14
12
  interface CirclePatternFn {
15
- (styles?: CircleStyles): string
16
- raw: (styles?: CircleStyles) => SystemStyleObject
13
+ (styles?: CircleStyles): string;
14
+ raw: (styles?: CircleStyles) => SystemStyleObject;
17
15
  }
18
-
19
-
20
16
  export declare const circle: CirclePatternFn;
@@ -4,17 +4,12 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface ContainerProperties {
9
-
10
8
  }
11
-
12
- interface ContainerStyles extends ContainerProperties, DistributiveOmit<SystemStyleObject, keyof ContainerProperties > {}
13
-
9
+ interface ContainerStyles extends ContainerProperties, DistributiveOmit<SystemStyleObject, keyof ContainerProperties> {
10
+ }
14
11
  interface ContainerPatternFn {
15
- (styles?: ContainerStyles): string
16
- raw: (styles?: ContainerStyles) => SystemStyleObject
12
+ (styles?: ContainerStyles): string;
13
+ raw: (styles?: ContainerStyles) => SystemStyleObject;
17
14
  }
18
-
19
-
20
15
  export declare const container: ContainerPatternFn;
@@ -4,18 +4,14 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface CqProperties {
9
- name?: ConditionalValue<Tokens["containerNames"] | Properties["containerName"]>
10
- type?: SystemProperties["containerType"]
8
+ name?: ConditionalValue<Tokens["containerNames"] | Properties["containerName"]>;
9
+ type?: SystemProperties["containerType"];
10
+ }
11
+ interface CqStyles extends CqProperties, DistributiveOmit<SystemStyleObject, keyof CqProperties> {
11
12
  }
12
-
13
- interface CqStyles extends CqProperties, DistributiveOmit<SystemStyleObject, keyof CqProperties > {}
14
-
15
13
  interface CqPatternFn {
16
- (styles?: CqStyles): string
17
- raw: (styles?: CqStyles) => SystemStyleObject
14
+ (styles?: CqStyles): string;
15
+ raw: (styles?: CqStyles) => SystemStyleObject;
18
16
  }
19
-
20
-
21
17
  export declare const cq: CqPatternFn;
@@ -4,19 +4,15 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface DividerProperties {
9
- orientation?: ConditionalValue<"horizontal" | "vertical">
10
- thickness?: ConditionalValue<Tokens["sizes"] | Properties["borderWidth"]>
11
- color?: ConditionalValue<Tokens["colors"] | Properties["borderColor"]>
8
+ orientation?: ConditionalValue<"horizontal" | "vertical">;
9
+ thickness?: ConditionalValue<Tokens["sizes"] | Properties["borderWidth"]>;
10
+ color?: ConditionalValue<Tokens["colors"] | Properties["borderColor"]>;
11
+ }
12
+ interface DividerStyles extends DividerProperties, DistributiveOmit<SystemStyleObject, keyof DividerProperties> {
12
13
  }
13
-
14
- interface DividerStyles extends DividerProperties, DistributiveOmit<SystemStyleObject, keyof DividerProperties > {}
15
-
16
14
  interface DividerPatternFn {
17
- (styles?: DividerStyles): string
18
- raw: (styles?: DividerStyles) => SystemStyleObject
15
+ (styles?: DividerStyles): string;
16
+ raw: (styles?: DividerStyles) => SystemStyleObject;
19
17
  }
20
-
21
-
22
18
  export declare const divider: DividerPatternFn;
@@ -4,23 +4,19 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface FlexProperties {
9
- align?: SystemProperties["alignItems"]
10
- justify?: SystemProperties["justifyContent"]
11
- direction?: SystemProperties["flexDirection"]
12
- wrap?: SystemProperties["flexWrap"]
13
- basis?: SystemProperties["flexBasis"]
14
- grow?: SystemProperties["flexGrow"]
15
- shrink?: SystemProperties["flexShrink"]
8
+ align?: SystemProperties["alignItems"];
9
+ justify?: SystemProperties["justifyContent"];
10
+ direction?: SystemProperties["flexDirection"];
11
+ wrap?: SystemProperties["flexWrap"];
12
+ basis?: SystemProperties["flexBasis"];
13
+ grow?: SystemProperties["flexGrow"];
14
+ shrink?: SystemProperties["flexShrink"];
15
+ }
16
+ interface FlexStyles extends FlexProperties, DistributiveOmit<SystemStyleObject, keyof FlexProperties> {
16
17
  }
17
-
18
- interface FlexStyles extends FlexProperties, DistributiveOmit<SystemStyleObject, keyof FlexProperties > {}
19
-
20
18
  interface FlexPatternFn {
21
- (styles?: FlexStyles): string
22
- raw: (styles?: FlexStyles) => SystemStyleObject
19
+ (styles?: FlexStyles): string;
20
+ raw: (styles?: FlexStyles) => SystemStyleObject;
23
21
  }
24
-
25
-
26
22
  export declare const flex: FlexPatternFn;
@@ -4,20 +4,16 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface FloatProperties {
9
- offsetX?: ConditionalValue<Tokens["spacing"] | Properties["left"]>
10
- offsetY?: ConditionalValue<Tokens["spacing"] | Properties["top"]>
11
- offset?: ConditionalValue<Tokens["spacing"] | Properties["top"]>
12
- placement?: ConditionalValue<"bottom-end" | "bottom-start" | "top-end" | "top-start" | "bottom-center" | "top-center" | "middle-center" | "middle-end" | "middle-start">
8
+ offsetX?: ConditionalValue<Tokens["spacing"] | Properties["left"]>;
9
+ offsetY?: ConditionalValue<Tokens["spacing"] | Properties["top"]>;
10
+ offset?: ConditionalValue<Tokens["spacing"] | Properties["top"]>;
11
+ placement?: ConditionalValue<"bottom-end" | "bottom-start" | "top-end" | "top-start" | "bottom-center" | "top-center" | "middle-center" | "middle-end" | "middle-start">;
12
+ }
13
+ interface FloatStyles extends FloatProperties, DistributiveOmit<SystemStyleObject, keyof FloatProperties> {
13
14
  }
14
-
15
- interface FloatStyles extends FloatProperties, DistributiveOmit<SystemStyleObject, keyof FloatProperties > {}
16
-
17
15
  interface FloatPatternFn {
18
- (styles?: FloatStyles): string
19
- raw: (styles?: FloatStyles) => SystemStyleObject
16
+ (styles?: FloatStyles): string;
17
+ raw: (styles?: FloatStyles) => SystemStyleObject;
20
18
  }
21
-
22
-
23
19
  export declare const float: FloatPatternFn;
@@ -4,22 +4,18 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface GridItemProperties {
9
- colSpan?: ConditionalValue<number>
10
- rowSpan?: ConditionalValue<number>
11
- colStart?: ConditionalValue<number>
12
- rowStart?: ConditionalValue<number>
13
- colEnd?: ConditionalValue<number>
14
- rowEnd?: ConditionalValue<number>
8
+ colSpan?: ConditionalValue<number>;
9
+ rowSpan?: ConditionalValue<number>;
10
+ colStart?: ConditionalValue<number>;
11
+ rowStart?: ConditionalValue<number>;
12
+ colEnd?: ConditionalValue<number>;
13
+ rowEnd?: ConditionalValue<number>;
14
+ }
15
+ interface GridItemStyles extends GridItemProperties, DistributiveOmit<SystemStyleObject, keyof GridItemProperties> {
15
16
  }
16
-
17
- interface GridItemStyles extends GridItemProperties, DistributiveOmit<SystemStyleObject, keyof GridItemProperties > {}
18
-
19
17
  interface GridItemPatternFn {
20
- (styles?: GridItemStyles): string
21
- raw: (styles?: GridItemStyles) => SystemStyleObject
18
+ (styles?: GridItemStyles): string;
19
+ raw: (styles?: GridItemStyles) => SystemStyleObject;
22
20
  }
23
-
24
-
25
21
  export declare const gridItem: GridItemPatternFn;
@@ -4,21 +4,17 @@ import type { Properties } from '../types/csstype';
4
4
  import type { SystemProperties } from '../types/style-props';
5
5
  import type { DistributiveOmit } from '../types/system-types';
6
6
  import type { Tokens } from '../tokens/index';
7
-
8
7
  export interface GridProperties {
9
- gap?: SystemProperties["gap"]
10
- columnGap?: SystemProperties["gap"]
11
- rowGap?: SystemProperties["gap"]
12
- columns?: ConditionalValue<number>
13
- minChildWidth?: ConditionalValue<Tokens["sizes"] | Properties["width"]>
8
+ gap?: SystemProperties["gap"];
9
+ columnGap?: SystemProperties["gap"];
10
+ rowGap?: SystemProperties["gap"];
11
+ columns?: ConditionalValue<number>;
12
+ minChildWidth?: ConditionalValue<Tokens["sizes"] | Properties["width"]>;
13
+ }
14
+ interface GridStyles extends GridProperties, DistributiveOmit<SystemStyleObject, keyof GridProperties> {
14
15
  }
15
-
16
- interface GridStyles extends GridProperties, DistributiveOmit<SystemStyleObject, keyof GridProperties > {}
17
-
18
16
  interface GridPatternFn {
19
- (styles?: GridStyles): string
20
- raw: (styles?: GridStyles) => SystemStyleObject
17
+ (styles?: GridStyles): string;
18
+ raw: (styles?: GridStyles) => SystemStyleObject;
21
19
  }
22
-
23
-
24
20
  export declare const grid: GridPatternFn;