tembro 6.0.2 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/calendar/calendar-range-scheduler.cjs +1 -0
  3. package/dist/components/calendar/calendar-range-scheduler.d.ts +20 -0
  4. package/dist/components/calendar/calendar-range-scheduler.js +1 -0
  5. package/dist/components/calendar/date-time-picker.cjs +1 -0
  6. package/dist/components/calendar/date-time-picker.d.ts +15 -0
  7. package/dist/components/calendar/date-time-picker.js +1 -0
  8. package/dist/components/calendar/index.d.ts +2 -0
  9. package/dist/components/charts/chart-card.cjs +1 -0
  10. package/dist/components/charts/chart-card.d.ts +24 -0
  11. package/dist/components/charts/chart-card.js +1 -0
  12. package/dist/components/charts/index.d.ts +1 -0
  13. package/dist/components/command/advanced-command-menu.cjs +1 -0
  14. package/dist/components/command/advanced-command-menu.d.ts +25 -0
  15. package/dist/components/command/advanced-command-menu.js +1 -0
  16. package/dist/components/command/index.d.ts +1 -0
  17. package/dist/components/data-table/data-grid.cjs +1 -0
  18. package/dist/components/data-table/data-grid.d.ts +15 -0
  19. package/dist/components/data-table/data-grid.js +1 -0
  20. package/dist/components/data-table/index.d.ts +1 -0
  21. package/dist/components/data-table/public.d.ts +1 -0
  22. package/dist/components/feedback/async-boundary.cjs +1 -0
  23. package/dist/components/feedback/async-boundary.d.ts +12 -0
  24. package/dist/components/feedback/async-boundary.js +1 -0
  25. package/dist/components/feedback/index.d.ts +1 -0
  26. package/dist/components/inputs/index.d.ts +1 -0
  27. package/dist/components/inputs/multi-select.cjs +1 -0
  28. package/dist/components/inputs/multi-select.d.ts +16 -0
  29. package/dist/components/inputs/multi-select.js +1 -0
  30. package/dist/components/inputs/public.d.ts +1 -0
  31. package/dist/components/modern/file-manager.cjs +1 -0
  32. package/dist/components/modern/file-manager.d.ts +20 -0
  33. package/dist/components/modern/file-manager.js +1 -0
  34. package/dist/components/modern/index.d.ts +1 -0
  35. package/dist/components/notifications/action-toast.cjs +1 -0
  36. package/dist/components/notifications/action-toast.d.ts +16 -0
  37. package/dist/components/notifications/action-toast.js +1 -0
  38. package/dist/components/notifications/index.d.ts +1 -0
  39. package/dist/components/patterns/index.d.ts +1 -0
  40. package/dist/components/patterns/permissions-matrix.cjs +1 -0
  41. package/dist/components/patterns/permissions-matrix.d.ts +19 -0
  42. package/dist/components/patterns/permissions-matrix.js +1 -0
  43. package/dist/components/patterns/public.d.ts +1 -0
  44. package/dist/src/components/calendar/calendar-range-scheduler.cjs +1 -0
  45. package/dist/src/components/calendar/calendar-range-scheduler.js +75 -0
  46. package/dist/src/components/calendar/date-time-picker.cjs +1 -0
  47. package/dist/src/components/calendar/date-time-picker.js +36 -0
  48. package/dist/src/components/calendar/index.cjs +1 -1
  49. package/dist/src/components/calendar/index.js +5 -3
  50. package/dist/src/components/charts/chart-card.cjs +1 -0
  51. package/dist/src/components/charts/chart-card.js +55 -0
  52. package/dist/src/components/charts/index.cjs +1 -1
  53. package/dist/src/components/charts/index.js +3 -2
  54. package/dist/src/components/command/advanced-command-menu.cjs +1 -0
  55. package/dist/src/components/command/advanced-command-menu.js +57 -0
  56. package/dist/src/components/command/index.cjs +1 -1
  57. package/dist/src/components/command/index.js +3 -2
  58. package/dist/src/components/data-table/data-grid.cjs +1 -0
  59. package/dist/src/components/data-table/data-grid.js +32 -0
  60. package/dist/src/components/data-table/data-table-saved-filters.cjs +1 -1
  61. package/dist/src/components/data-table/data-table-saved-filters.js +11 -11
  62. package/dist/src/components/data-table/data-table.cjs +1 -1
  63. package/dist/src/components/data-table/data-table.js +170 -170
  64. package/dist/src/components/data-table/index.cjs +1 -1
  65. package/dist/src/components/data-table/index.js +15 -14
  66. package/dist/src/components/data-table/public.cjs +1 -1
  67. package/dist/src/components/data-table/public.js +3 -2
  68. package/dist/src/components/feedback/async-boundary.cjs +1 -0
  69. package/dist/src/components/feedback/async-boundary.js +22 -0
  70. package/dist/src/components/feedback/index.cjs +1 -1
  71. package/dist/src/components/feedback/index.js +2 -1
  72. package/dist/src/components/inputs/index.cjs +1 -1
  73. package/dist/src/components/inputs/index.js +13 -12
  74. package/dist/src/components/inputs/multi-select.cjs +1 -0
  75. package/dist/src/components/inputs/multi-select.js +80 -0
  76. package/dist/src/components/inputs/public.cjs +1 -1
  77. package/dist/src/components/inputs/public.js +13 -12
  78. package/dist/src/components/modern/file-manager.cjs +1 -0
  79. package/dist/src/components/modern/file-manager.js +75 -0
  80. package/dist/src/components/modern/index.cjs +1 -1
  81. package/dist/src/components/modern/index.js +5 -4
  82. package/dist/src/components/notifications/action-toast.cjs +1 -0
  83. package/dist/src/components/notifications/action-toast.js +49 -0
  84. package/dist/src/components/notifications/index.cjs +1 -1
  85. package/dist/src/components/notifications/index.js +3 -2
  86. package/dist/src/components/patterns/index.cjs +1 -1
  87. package/dist/src/components/patterns/index.js +2 -1
  88. package/dist/src/components/patterns/permissions-matrix.cjs +1 -0
  89. package/dist/src/components/patterns/permissions-matrix.js +43 -0
  90. package/dist/src/components/patterns/public.cjs +1 -1
  91. package/dist/src/components/patterns/public.js +2 -1
  92. package/dist/src/components/ui/input/group.cjs +1 -1
  93. package/dist/src/components/ui/input/group.js +8 -8
  94. package/dist/src/index.cjs +1 -1
  95. package/dist/src/index.js +117 -107
  96. package/dist/src/public-component-surface.cjs +1 -1
  97. package/dist/src/public-component-surface.js +50 -0
  98. package/package.json +13 -13
  99. package/packages/cli/dist/index.cjs +73 -73
  100. package/packages/cli/vendor/src/components/calendar/calendar-range-scheduler.tsx +72 -0
  101. package/packages/cli/vendor/src/components/calendar/date-time-picker.tsx +53 -0
  102. package/packages/cli/vendor/src/components/calendar/index.ts +5 -3
  103. package/packages/cli/vendor/src/components/charts/chart-card.tsx +81 -0
  104. package/packages/cli/vendor/src/components/charts/index.ts +1 -0
  105. package/packages/cli/vendor/src/components/command/advanced-command-menu.tsx +88 -0
  106. package/packages/cli/vendor/src/components/command/index.ts +2 -1
  107. package/packages/cli/vendor/src/components/data-table/data-grid.tsx +59 -0
  108. package/packages/cli/vendor/src/components/data-table/index.ts +3 -2
  109. package/packages/cli/vendor/src/components/data-table/public.ts +1 -0
  110. package/packages/cli/vendor/src/components/feedback/async-boundary.tsx +36 -0
  111. package/packages/cli/vendor/src/components/feedback/index.ts +1 -0
  112. package/packages/cli/vendor/src/components/inputs/index.ts +1 -0
  113. package/packages/cli/vendor/src/components/inputs/multi-select.tsx +75 -0
  114. package/packages/cli/vendor/src/components/inputs/public.ts +1 -0
  115. package/packages/cli/vendor/src/components/modern/file-manager.tsx +79 -0
  116. package/packages/cli/vendor/src/components/modern/index.ts +1 -0
  117. package/packages/cli/vendor/src/components/notifications/action-toast.tsx +78 -0
  118. package/packages/cli/vendor/src/components/notifications/index.ts +2 -1
  119. package/packages/cli/vendor/src/components/patterns/index.ts +1 -0
  120. package/packages/cli/vendor/src/components/patterns/permissions-matrix.tsx +71 -0
  121. package/packages/cli/vendor/src/components/patterns/public.ts +1 -0
  122. package/packages/cli/vendor/src/public-component-surface.ts +10 -0
  123. package/packages/cli/vendor/templates/showcase/src/showcase/data/registry.ts +1 -1
  124. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +3 -2
  125. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +3 -2
  126. package/packages/cli/vendor/templates/showcase/src/showcase/sections/ComponentLivePreview.tsx +1 -1
  127. package/registry.json +1726 -1256
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 6.1.0 - 2026-07-18
6
+
7
+ ### Added
8
+
9
+ - Added 10 product-grade public components: `MultiSelect`, `ActionToast`, `ChartCard`, `AsyncBoundary`, `AdvancedCommandMenu`, `PermissionsMatrix`, `CalendarRangeScheduler`, `FileManager`, `CalendarDateTimePicker`, and `DataGrid`.
10
+ - Added registry `kind` metadata so real components, presets, aliases, hooks, utilities, and internal entries are separated instead of being counted as one mixed component list.
11
+ - Added dashboard, calendar, command, feedback, file management, data grid, chart, notification, input, and permissions coverage to the source-copy registry.
12
+
13
+ ### Changed
14
+
15
+ - Simplified the primary component surface by moving duplicate or composable entries into `alias`, `preset`, `hook`, `utility`, or `internal` kinds.
16
+ - Expanded dashboard preset coverage with `async-boundary`, `chart-card`, and `multi-select` so generated apps exercise richer real-project UI states.
17
+
18
+ ## 6.0.3 - 2026-07-18
19
+
20
+ ### Fixed
21
+
22
+ - Fixed the showcase template sidebar import path so generated workbenches use the canonical `layout/sidebar` component.
23
+
5
24
  ## 6.0.2 - 2026-07-18
6
25
 
7
26
  ### Fixed
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/calendar/calendar-range-scheduler.cjs")
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import { type DateRangePickerValue } from "@/components/calendar/date-range-picker";
3
+ import { Card } from "@/components/ui/card";
4
+ export type CalendarRangeSchedulerEvent = {
5
+ id: string;
6
+ title: React.ReactNode;
7
+ range: DateRangePickerValue;
8
+ tone?: "default" | "info" | "success" | "warning" | "danger";
9
+ meta?: React.ReactNode;
10
+ };
11
+ export type CalendarRangeSchedulerProps = Omit<React.ComponentProps<typeof Card>, "onSelect"> & {
12
+ value?: DateRangePickerValue;
13
+ onValueChange?: (range: DateRangePickerValue) => void;
14
+ events?: CalendarRangeSchedulerEvent[];
15
+ onEventSelect?: (event: CalendarRangeSchedulerEvent) => void;
16
+ title?: React.ReactNode;
17
+ action?: React.ReactNode;
18
+ };
19
+ declare function CalendarRangeScheduler({ value, onValueChange, events, onEventSelect, title, action, className, ...props }: CalendarRangeSchedulerProps): React.JSX.Element;
20
+ export { CalendarRangeScheduler };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/calendar/calendar-range-scheduler.js"
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/calendar/date-time-picker.cjs")
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { type DatePickerProps } from "@/components/calendar/date-picker";
3
+ export type DateTimeValue = {
4
+ date?: string;
5
+ time?: string;
6
+ };
7
+ export type CalendarDateTimePickerProps = Omit<React.ComponentProps<"div">, "value" | "onChange"> & {
8
+ value?: DateTimeValue;
9
+ onValueChange?: (value: DateTimeValue) => void;
10
+ datePickerProps?: Omit<DatePickerProps, "value" | "onValueChange">;
11
+ timeLabel?: React.ReactNode;
12
+ disabled?: boolean;
13
+ };
14
+ declare function CalendarDateTimePicker({ value, onValueChange, datePickerProps, timeLabel, disabled, className, ...props }: CalendarDateTimePickerProps): React.JSX.Element;
15
+ export { CalendarDateTimePicker };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/calendar/date-time-picker.js"
@@ -2,3 +2,5 @@ export * from "./date-utils";
2
2
  export * from "./calendar";
3
3
  export * from "./date-picker";
4
4
  export * from "./date-range-picker";
5
+ export * from "./date-time-picker";
6
+ export * from "./calendar-range-scheduler";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/charts/chart-card.cjs")
@@ -0,0 +1,24 @@
1
+ import * as React from "react";
2
+ import { type ChartDatum, type ChartSeries, type ChartState } from "@/components/charts/charts";
3
+ import { Card } from "@/components/ui/card";
4
+ export type ChartCardType = "bar" | "line" | "donut";
5
+ export type ChartCardFilter = {
6
+ label: string;
7
+ value: string;
8
+ };
9
+ export type ChartCardProps = Omit<React.ComponentProps<typeof Card>, "type"> & {
10
+ title?: React.ReactNode;
11
+ description?: React.ReactNode;
12
+ type?: ChartCardType;
13
+ data?: ChartDatum[];
14
+ series?: ChartSeries[];
15
+ labels?: React.ReactNode[];
16
+ state?: ChartState;
17
+ metric?: React.ReactNode;
18
+ badge?: React.ReactNode;
19
+ filters?: ChartCardFilter[];
20
+ filterValue?: string;
21
+ onFilterChange?: (value: string) => void;
22
+ };
23
+ declare function ChartCard({ title, description, type, data, series, labels, state, metric, badge, filters, filterValue, onFilterChange, className, ...props }: ChartCardProps): React.JSX.Element;
24
+ export { ChartCard };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/charts/chart-card.js"
@@ -1,2 +1,3 @@
1
1
  export * from './charts';
2
2
  export * from './progress-circle';
3
+ export * from './chart-card';
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/command/advanced-command-menu.cjs")
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ export type AdvancedCommandMenuItem = {
3
+ id: string;
4
+ label: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ shortcut?: React.ReactNode;
8
+ keywords?: string[];
9
+ onSelect?: () => void;
10
+ };
11
+ export type AdvancedCommandMenuGroup = {
12
+ id: string;
13
+ label: React.ReactNode;
14
+ items: AdvancedCommandMenuItem[];
15
+ };
16
+ export type AdvancedCommandMenuProps = {
17
+ open?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ groups: AdvancedCommandMenuGroup[];
20
+ title?: React.ReactNode;
21
+ triggerLabel?: React.ReactNode;
22
+ placeholder?: string;
23
+ };
24
+ declare function AdvancedCommandMenu({ open, onOpenChange, groups, title, triggerLabel, placeholder, }: AdvancedCommandMenuProps): React.JSX.Element;
25
+ export { AdvancedCommandMenu };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/command/advanced-command-menu.js"
@@ -1 +1,2 @@
1
1
  export * from "./command-palette";
2
+ export * from "./advanced-command-menu";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/data-table/data-grid.cjs")
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ export type DataGridColumn<TRow extends Record<string, unknown>> = {
3
+ key: keyof TRow & string;
4
+ header: React.ReactNode;
5
+ editable?: boolean;
6
+ width?: React.CSSProperties["width"];
7
+ render?: (value: TRow[keyof TRow], row: TRow, rowIndex: number) => React.ReactNode;
8
+ };
9
+ export type DataGridProps<TRow extends Record<string, unknown>> = React.ComponentProps<"div"> & {
10
+ columns: DataGridColumn<TRow>[];
11
+ rows: TRow[];
12
+ onRowsChange?: (rows: TRow[]) => void;
13
+ };
14
+ declare function DataGrid<TRow extends Record<string, unknown>>({ columns, rows, onRowsChange, className, ...props }: DataGridProps<TRow>): React.JSX.Element;
15
+ export { DataGrid };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/data-table/data-grid.js"
@@ -1,4 +1,5 @@
1
1
  export * from './data-table';
2
+ export * from './data-grid';
2
3
  export * from './data-table-pagination';
3
4
  export * from './data-table-toolbar';
4
5
  export * from './data-table-column-visibility-menu';
@@ -1 +1,2 @@
1
1
  export * from "./data-table";
2
+ export * from "./data-grid";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/feedback/async-boundary.cjs")
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ export type AsyncBoundaryProps = React.PropsWithChildren<{
3
+ loading?: boolean;
4
+ error?: unknown;
5
+ empty?: boolean;
6
+ loadingTitle?: React.ReactNode;
7
+ errorTitle?: React.ReactNode;
8
+ emptyTitle?: React.ReactNode;
9
+ onRetry?: () => void;
10
+ }>;
11
+ declare function AsyncBoundary({ loading, error, empty, loadingTitle, errorTitle, emptyTitle, onRetry, children, }: AsyncBoundaryProps): React.JSX.Element;
12
+ export { AsyncBoundary };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/feedback/async-boundary.js"
@@ -1,2 +1,3 @@
1
1
  export * from "./alert";
2
2
  export * from "./state-view";
3
+ export * from "./async-boundary";
@@ -1,4 +1,5 @@
1
1
  export * from "./async-select";
2
+ export * from "./multi-select";
2
3
  export * from "./combobox";
3
4
  export * from "./otp-input";
4
5
  export * from "./rating";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/inputs/multi-select.cjs")
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ export type MultiSelectOption = {
3
+ value: string;
4
+ label: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ disabled?: boolean;
7
+ };
8
+ export type MultiSelectProps = React.ComponentProps<"div"> & {
9
+ options: MultiSelectOption[];
10
+ value?: string[];
11
+ onValueChange?: (value: string[]) => void;
12
+ placeholder?: React.ReactNode;
13
+ maxVisibleTags?: number;
14
+ };
15
+ declare function MultiSelect({ options, value, onValueChange, placeholder, maxVisibleTags, className, ...props }: MultiSelectProps): React.JSX.Element;
16
+ export { MultiSelect };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/inputs/multi-select.js"
@@ -1,4 +1,5 @@
1
1
  export * from "./async-select";
2
+ export * from "./multi-select";
2
3
  export * from "./combobox";
3
4
  export * from "./otp-input";
4
5
  export * from "./rating";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/modern/file-manager.cjs")
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ export type FileManagerItem = {
3
+ id: string;
4
+ name: string;
5
+ type: "file" | "folder";
6
+ size?: React.ReactNode;
7
+ owner?: React.ReactNode;
8
+ status?: React.ReactNode;
9
+ };
10
+ export type FileManagerProps = React.ComponentProps<"div"> & {
11
+ items: FileManagerItem[];
12
+ selectedId?: string;
13
+ onSelect?: (item: FileManagerItem) => void;
14
+ onOpen?: (item: FileManagerItem) => void;
15
+ onSearchChange?: (value: string) => void;
16
+ searchValue?: string;
17
+ actions?: React.ReactNode;
18
+ };
19
+ declare function FileManager({ items, selectedId, onSelect, onOpen, searchValue, onSearchChange, actions, className, ...props }: FileManagerProps): React.JSX.Element;
20
+ export { FileManager };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/modern/file-manager.js"
@@ -3,3 +3,4 @@ export * from "./dual-list-picker";
3
3
  export * from "./resizable-panel";
4
4
  export * from "./rich-text-editor";
5
5
  export * from "./image-cropper";
6
+ export * from "./file-manager";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/notifications/action-toast.cjs")
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import { Button } from "@/components/ui/button";
3
+ import { useToast, type CreateToastInput, type ToastShortcutInput } from "@/components/notifications/toast";
4
+ export type ActionToastOptions = Omit<CreateToastInput, "action"> & {
5
+ actionLabel?: React.ReactNode;
6
+ onAction?: () => void;
7
+ undoLabel?: React.ReactNode;
8
+ onUndo?: () => void;
9
+ };
10
+ export type ActionToastButtonProps = React.ComponentProps<typeof Button> & {
11
+ toast: ActionToastOptions;
12
+ };
13
+ declare function ActionToastButton({ toast, children, onClick, ...props }: ActionToastButtonProps): React.JSX.Element;
14
+ declare function showActionToast(toaster: ReturnType<typeof useToast>, { actionLabel, onAction, undoLabel, onUndo, ...toast }: ActionToastOptions): string;
15
+ declare function useActionToast(): (toast: ActionToastOptions | ToastShortcutInput) => string;
16
+ export { ActionToastButton, showActionToast, useActionToast };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/notifications/action-toast.js"
@@ -1,2 +1,3 @@
1
1
  export * from "./toast";
2
2
  export * from "./notification-center";
3
+ export * from "./action-toast";
@@ -1 +1,2 @@
1
1
  export * from "./empty-state";
2
+ export * from "./permissions-matrix";
@@ -0,0 +1 @@
1
+ module.exports = require("../../src/components/patterns/permissions-matrix.cjs")
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ export type PermissionMatrixRole = {
3
+ key: string;
4
+ label: React.ReactNode;
5
+ };
6
+ export type PermissionMatrixPermission = {
7
+ key: string;
8
+ label: React.ReactNode;
9
+ description?: React.ReactNode;
10
+ };
11
+ export type PermissionMatrixValue = Record<string, string[]>;
12
+ export type PermissionsMatrixProps = React.ComponentProps<"div"> & {
13
+ roles: PermissionMatrixRole[];
14
+ permissions: PermissionMatrixPermission[];
15
+ value?: PermissionMatrixValue;
16
+ onValueChange?: (value: PermissionMatrixValue) => void;
17
+ };
18
+ declare function PermissionsMatrix({ roles, permissions, value, onValueChange, className, ...props }: PermissionsMatrixProps): React.JSX.Element;
19
+ export { PermissionsMatrix };
@@ -0,0 +1 @@
1
+ export * from "../../src/components/patterns/permissions-matrix.js"
@@ -1 +1,2 @@
1
1
  export * from "./empty-state";
2
+ export * from "./permissions-matrix";
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/badge/index.cjs"),i=require("./date-range-picker.cjs"),a=require("../ui/card/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l({value:e,onValueChange:o,events:l=[],onEventSelect:u,title:d=`Schedule range`,action:f,className:p,...m}){return(0,c.jsxs)(a.Card,{"data-slot":`calendar-range-scheduler`,className:t.cn(`min-w-0`,p),...m,children:[(0,c.jsxs)(a.CardHeader,{className:`flex-row items-center justify-between gap-3`,children:[(0,c.jsxs)(a.CardTitle,{className:`flex items-center gap-2`,children:[(0,c.jsx)(s.CalendarDaysIcon,{className:`size-4`}),d]}),f]}),(0,c.jsxs)(a.CardContent,{className:`grid gap-4 lg:grid-cols-[320px_minmax(0,1fr)]`,children:[(0,c.jsx)(i.DateRangePicker,{value:e,onValueChange:o}),(0,c.jsxs)(`div`,{className:`grid content-start gap-2`,children:[l.length?l.map(e=>(0,c.jsxs)(`button`,{type:`button`,className:`grid gap-1 rounded-lg border bg-background p-3 text-left transition hover:border-primary/45 hover:bg-muted/40`,onClick:()=>u?.(e),children:[(0,c.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,c.jsx)(`span`,{className:`font-medium`,children:e.title}),(0,c.jsx)(r.Badge,{label:e.tone??`scheduled`,status:e.tone===`danger`?`danger`:e.tone===`warning`?`warning`:e.tone===`success`?`success`:`info`,variant:`soft`})]}),(0,c.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.range.from||`Start`,` - `,e.range.to||`End`]}),e.meta?(0,c.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.meta}):null]},e.id)):(0,c.jsx)(`div`,{className:`rounded-lg border border-dashed p-6 text-sm text-muted-foreground`,children:`No scheduled ranges.`}),(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,onClick:()=>o?.({from:``,to:``}),children:`Clear range`})]})]})]})}exports.CalendarRangeScheduler=l;
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Button as t } from "../ui/button/index.js";
4
+ import { Badge as n } from "../ui/badge/index.js";
5
+ import { DateRangePicker as r } from "./date-range-picker.js";
6
+ import { Card as i, CardContent as a, CardHeader as o, CardTitle as s } from "../ui/card/index.js";
7
+ import "react";
8
+ import { CalendarDaysIcon as c } from "lucide-react";
9
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ //#region src/components/calendar/calendar-range-scheduler.tsx
11
+ function d({ value: d, onValueChange: f, events: p = [], onEventSelect: m, title: h = "Schedule range", action: g, className: _, ...v }) {
12
+ return /* @__PURE__ */ u(i, {
13
+ "data-slot": "calendar-range-scheduler",
14
+ className: e("min-w-0", _),
15
+ ...v,
16
+ children: [/* @__PURE__ */ u(o, {
17
+ className: "flex-row items-center justify-between gap-3",
18
+ children: [/* @__PURE__ */ u(s, {
19
+ className: "flex items-center gap-2",
20
+ children: [/* @__PURE__ */ l(c, { className: "size-4" }), h]
21
+ }), g]
22
+ }), /* @__PURE__ */ u(a, {
23
+ className: "grid gap-4 lg:grid-cols-[320px_minmax(0,1fr)]",
24
+ children: [/* @__PURE__ */ l(r, {
25
+ value: d,
26
+ onValueChange: f
27
+ }), /* @__PURE__ */ u("div", {
28
+ className: "grid content-start gap-2",
29
+ children: [p.length ? p.map((e) => /* @__PURE__ */ u("button", {
30
+ type: "button",
31
+ className: "grid gap-1 rounded-lg border bg-background p-3 text-left transition hover:border-primary/45 hover:bg-muted/40",
32
+ onClick: () => m?.(e),
33
+ children: [
34
+ /* @__PURE__ */ u("span", {
35
+ className: "flex items-center justify-between gap-2",
36
+ children: [/* @__PURE__ */ l("span", {
37
+ className: "font-medium",
38
+ children: e.title
39
+ }), /* @__PURE__ */ l(n, {
40
+ label: e.tone ?? "scheduled",
41
+ status: e.tone === "danger" ? "danger" : e.tone === "warning" ? "warning" : e.tone === "success" ? "success" : "info",
42
+ variant: "soft"
43
+ })]
44
+ }),
45
+ /* @__PURE__ */ u("span", {
46
+ className: "text-xs text-muted-foreground",
47
+ children: [
48
+ e.range.from || "Start",
49
+ " - ",
50
+ e.range.to || "End"
51
+ ]
52
+ }),
53
+ e.meta ? /* @__PURE__ */ l("span", {
54
+ className: "text-xs text-muted-foreground",
55
+ children: e.meta
56
+ }) : null
57
+ ]
58
+ }, e.id)) : /* @__PURE__ */ l("div", {
59
+ className: "rounded-lg border border-dashed p-6 text-sm text-muted-foreground",
60
+ children: "No scheduled ranges."
61
+ }), /* @__PURE__ */ l(t, {
62
+ type: "button",
63
+ variant: "outline",
64
+ onClick: () => f?.({
65
+ from: "",
66
+ to: ""
67
+ }),
68
+ children: "Clear range"
69
+ })]
70
+ })]
71
+ })]
72
+ });
73
+ }
74
+ //#endregion
75
+ export { d as CalendarRangeScheduler };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("./date-picker.cjs"),r=require("../inputs/time-picker.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");function o({value:e,onValueChange:i,datePickerProps:o,timeLabel:s=`Time`,disabled:c,className:l,...u}){let d=e??{};return(0,a.jsxs)(`div`,{"data-slot":`date-time-picker`,className:t.cn(`grid gap-3 sm:grid-cols-2`,l),...u,children:[(0,a.jsx)(n.DatePicker,{...o,value:d.date,disabled:c||o?.disabled,onValueChange:e=>i?.({...d,date:e})}),(0,a.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium`,children:[(0,a.jsx)(`span`,{children:s}),(0,a.jsx)(r.TimePicker,{value:d.time??``,onChange:e=>i?.({...d,time:e.currentTarget.value}),disabled:c})]})]})}exports.CalendarDateTimePicker=o;
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { DatePicker as t } from "./date-picker.js";
4
+ import { TimePicker as n } from "../inputs/time-picker.js";
5
+ import "react";
6
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
7
+ //#region src/components/calendar/date-time-picker.tsx
8
+ function a({ value: a, onValueChange: o, datePickerProps: s, timeLabel: c = "Time", disabled: l, className: u, ...d }) {
9
+ let f = a ?? {};
10
+ return /* @__PURE__ */ i("div", {
11
+ "data-slot": "date-time-picker",
12
+ className: e("grid gap-3 sm:grid-cols-2", u),
13
+ ...d,
14
+ children: [/* @__PURE__ */ r(t, {
15
+ ...s,
16
+ value: f.date,
17
+ disabled: l || s?.disabled,
18
+ onValueChange: (e) => o?.({
19
+ ...f,
20
+ date: e
21
+ })
22
+ }), /* @__PURE__ */ i("label", {
23
+ className: "grid gap-1.5 text-sm font-medium",
24
+ children: [/* @__PURE__ */ r("span", { children: c }), /* @__PURE__ */ r(n, {
25
+ value: f.time ?? "",
26
+ onChange: (e) => o?.({
27
+ ...f,
28
+ time: e.currentTarget.value
29
+ }),
30
+ disabled: l
31
+ })]
32
+ })]
33
+ });
34
+ }
35
+ //#endregion
36
+ export { a as CalendarDateTimePicker };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./date-utils.cjs"),t=require("./calendar.cjs"),n=require("./date-picker.cjs"),r=require("./date-range-picker.cjs");exports.Calendar=t.Calendar,exports.DatePicker=n.DatePicker,exports.DateRangePicker=r.DateRangePicker,exports.addMonths=e.addMonths,exports.getMonthDays=e.getMonthDays,exports.getMonthLabel=e.getMonthLabel,exports.getWeekdayLabels=e.getWeekdayLabels,exports.isAfterDate=e.isAfterDate,exports.isBeforeDate=e.isBeforeDate,exports.isSameMonth=e.isSameMonth,exports.isWithinRange=e.isWithinRange,exports.parseDateKey=e.parseDateKey,exports.startOfMonth=e.startOfMonth,exports.toDateKey=e.toDateKey;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./date-utils.cjs"),t=require("./calendar.cjs"),n=require("./date-range-picker.cjs"),r=require("./calendar-range-scheduler.cjs"),i=require("./date-picker.cjs"),a=require("./date-time-picker.cjs");exports.Calendar=t.Calendar,exports.CalendarDateTimePicker=a.CalendarDateTimePicker,exports.CalendarRangeScheduler=r.CalendarRangeScheduler,exports.DatePicker=i.DatePicker,exports.DateRangePicker=n.DateRangePicker,exports.addMonths=e.addMonths,exports.getMonthDays=e.getMonthDays,exports.getMonthLabel=e.getMonthLabel,exports.getWeekdayLabels=e.getWeekdayLabels,exports.isAfterDate=e.isAfterDate,exports.isBeforeDate=e.isBeforeDate,exports.isSameMonth=e.isSameMonth,exports.isWithinRange=e.isWithinRange,exports.parseDateKey=e.parseDateKey,exports.startOfMonth=e.startOfMonth,exports.toDateKey=e.toDateKey;
@@ -1,5 +1,7 @@
1
1
  import { addMonths as e, getMonthDays as t, getMonthLabel as n, getWeekdayLabels as r, isAfterDate as i, isBeforeDate as a, isSameMonth as o, isWithinRange as s, parseDateKey as c, startOfMonth as l, toDateKey as u } from "./date-utils.js";
2
2
  import { Calendar as d } from "./calendar.js";
3
- import { DatePicker as f } from "./date-picker.js";
4
- import { DateRangePicker as p } from "./date-range-picker.js";
5
- export { d as Calendar, f as DatePicker, p as DateRangePicker, e as addMonths, t as getMonthDays, n as getMonthLabel, r as getWeekdayLabels, i as isAfterDate, a as isBeforeDate, o as isSameMonth, s as isWithinRange, c as parseDateKey, l as startOfMonth, u as toDateKey };
3
+ import { DateRangePicker as f } from "./date-range-picker.js";
4
+ import { CalendarRangeScheduler as p } from "./calendar-range-scheduler.js";
5
+ import { DatePicker as m } from "./date-picker.js";
6
+ import { CalendarDateTimePicker as h } from "./date-time-picker.js";
7
+ export { d as Calendar, h as CalendarDateTimePicker, p as CalendarRangeScheduler, m as DatePicker, f as DateRangePicker, e as addMonths, t as getMonthDays, n as getMonthLabel, r as getWeekdayLabels, i as isAfterDate, a as isBeforeDate, o as isSameMonth, s as isWithinRange, c as parseDateKey, l as startOfMonth, u as toDateKey };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/badge/index.cjs"),r=require("../ui/card/index.cjs"),i=require("./charts.cjs"),a=require("../ui/select/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("react/jsx-runtime");function c({title:e,description:o,type:c=`bar`,data:l=[],series:u,labels:d,state:f,metric:p,badge:m,filters:h,filterValue:g,onFilterChange:_,className:v,...y}){return(0,s.jsxs)(r.Card,{"data-slot":`chart-card`,className:t.cn(`min-w-0`,v),...y,children:[(0,s.jsxs)(r.CardHeader,{className:`flex-row items-start justify-between gap-3`,children:[(0,s.jsxs)(`div`,{className:`grid gap-1`,children:[e?(0,s.jsx)(r.CardTitle,{children:e}):null,o?(0,s.jsx)(r.CardDescription,{children:o}):null,p?(0,s.jsx)(`div`,{className:`text-2xl font-semibold tracking-tight`,children:p}):null]}),(0,s.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[m??(0,s.jsx)(n.Badge,{label:c,variant:`secondary`}),h?.length?(0,s.jsx)(a.Select,{value:g,onValueChange:e=>e&&_?.(e),options:h,triggerClassName:`h-9 w-36`}):null]})]}),(0,s.jsx)(r.CardContent,{children:c===`line`?(0,s.jsx)(i.LineChart,{series:u,labels:d,values:l.map(e=>e.value),state:f}):c===`donut`?(0,s.jsx)(i.DonutChart,{data:l,state:f}):(0,s.jsx)(i.BarChart,{data:l,series:u,state:f})})]})}exports.ChartCard=c;
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Badge as t } from "../ui/badge/index.js";
4
+ import { Card as n, CardContent as r, CardDescription as i, CardHeader as a, CardTitle as o } from "../ui/card/index.js";
5
+ import { BarChart as s, DonutChart as c, LineChart as l } from "./charts.js";
6
+ import { Select as u } from "../ui/select/index.js";
7
+ import "react";
8
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
+ //#region src/components/charts/chart-card.tsx
10
+ function p({ title: p, description: m, type: h = "bar", data: g = [], series: _, labels: v, state: y, metric: b, badge: x, filters: S, filterValue: C, onFilterChange: w, className: T, ...E }) {
11
+ return /* @__PURE__ */ f(n, {
12
+ "data-slot": "chart-card",
13
+ className: e("min-w-0", T),
14
+ ...E,
15
+ children: [/* @__PURE__ */ f(a, {
16
+ className: "flex-row items-start justify-between gap-3",
17
+ children: [/* @__PURE__ */ f("div", {
18
+ className: "grid gap-1",
19
+ children: [
20
+ p ? /* @__PURE__ */ d(o, { children: p }) : null,
21
+ m ? /* @__PURE__ */ d(i, { children: m }) : null,
22
+ b ? /* @__PURE__ */ d("div", {
23
+ className: "text-2xl font-semibold tracking-tight",
24
+ children: b
25
+ }) : null
26
+ ]
27
+ }), /* @__PURE__ */ f("div", {
28
+ className: "flex shrink-0 items-center gap-2",
29
+ children: [x ?? /* @__PURE__ */ d(t, {
30
+ label: h,
31
+ variant: "secondary"
32
+ }), S?.length ? /* @__PURE__ */ d(u, {
33
+ value: C,
34
+ onValueChange: (e) => e && w?.(e),
35
+ options: S,
36
+ triggerClassName: "h-9 w-36"
37
+ }) : null]
38
+ })]
39
+ }), /* @__PURE__ */ d(r, { children: h === "line" ? /* @__PURE__ */ d(l, {
40
+ series: _,
41
+ labels: v,
42
+ values: g.map((e) => e.value),
43
+ state: y
44
+ }) : h === "donut" ? /* @__PURE__ */ d(c, {
45
+ data: g,
46
+ state: y
47
+ }) : /* @__PURE__ */ d(s, {
48
+ data: g,
49
+ series: _,
50
+ state: y
51
+ }) })]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { p as ChartCard };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts.cjs"),t=require("./progress-circle.cjs");exports.AreaChart=e.AreaChart,exports.BarChart=e.BarChart,exports.ChartFrame=e.ChartFrame,exports.ChartLegend=e.ChartLegend,exports.ChartTooltipContent=e.ChartTooltipContent,exports.DonutChart=e.DonutChart,exports.LineChart=e.LineChart,exports.MetricTrend=e.MetricTrend,exports.ProgressCircle=t.ProgressCircle,exports.Sparkline=e.Sparkline;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts.cjs"),t=require("./chart-card.cjs"),n=require("./progress-circle.cjs");exports.AreaChart=e.AreaChart,exports.BarChart=e.BarChart,exports.ChartCard=t.ChartCard,exports.ChartFrame=e.ChartFrame,exports.ChartLegend=e.ChartLegend,exports.ChartTooltipContent=e.ChartTooltipContent,exports.DonutChart=e.DonutChart,exports.LineChart=e.LineChart,exports.MetricTrend=e.MetricTrend,exports.ProgressCircle=n.ProgressCircle,exports.Sparkline=e.Sparkline;
@@ -1,3 +1,4 @@
1
1
  import { AreaChart as e, BarChart as t, ChartFrame as n, ChartLegend as r, ChartTooltipContent as i, DonutChart as a, LineChart as o, MetricTrend as s, Sparkline as c } from "./charts.js";
2
- import { ProgressCircle as l } from "./progress-circle.js";
3
- export { e as AreaChart, t as BarChart, n as ChartFrame, r as ChartLegend, i as ChartTooltipContent, a as DonutChart, o as LineChart, s as MetricTrend, l as ProgressCircle, c as Sparkline };
2
+ import { ChartCard as l } from "./chart-card.js";
3
+ import { ProgressCircle as u } from "./progress-circle.js";
4
+ export { e as AreaChart, t as BarChart, l as ChartCard, n as ChartFrame, r as ChartLegend, i as ChartTooltipContent, a as DonutChart, o as LineChart, s as MetricTrend, u as ProgressCircle, c as Sparkline };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../ui/button/index.cjs"),n=require("../ui/dialog/index.cjs"),r=require("../ui/command/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({open:e,onOpenChange:s,groups:c,title:l=`Command menu`,triggerLabel:u=`Command`,placeholder:d=`Search commands...`}){let[f,p]=i.useState(!1),m=e??f,h=s??p;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.Button,{type:`button`,variant:`outline`,leftIcon:(0,o.jsx)(a.SearchIcon,{className:`size-4`}),onClick:()=>h(!0),children:u}),(0,o.jsx)(n.Dialog,{open:m,onOpenChange:h,children:(0,o.jsxs)(n.DialogContent,{className:`overflow-hidden p-0`,children:[(0,o.jsx)(n.DialogHeader,{className:`border-b px-4 py-3`,children:(0,o.jsx)(n.DialogTitle,{children:l})}),(0,o.jsxs)(r.Command,{children:[(0,o.jsx)(r.CommandInput,{placeholder:d}),(0,o.jsxs)(r.CommandList,{children:[(0,o.jsx)(r.CommandEmpty,{children:`No command found.`}),c.map(e=>(0,o.jsx)(r.CommandGroup,{heading:e.label,children:e.items.map(e=>(0,o.jsxs)(r.CommandItem,{value:[e.id,e.label,e.description,...e.keywords??[]].filter(Boolean).join(` `),onSelect:()=>{e.onSelect?.(),h(!1)},children:[e.icon,(0,o.jsxs)(`span`,{className:`grid min-w-0 flex-1`,children:[(0,o.jsx)(`span`,{className:`truncate`,children:e.label}),e.description?(0,o.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:e.description}):null]}),e.shortcut?(0,o.jsx)(r.CommandShortcut,{children:e.shortcut}):null]},e.id))},e.id))]})]})]})})]})}exports.AdvancedCommandMenu=s;