tembro 4.2.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/components/patterns/index.d.ts +0 -8
  3. package/dist/components/patterns/public.d.ts +0 -8
  4. package/dist/components/ui/hover-card/index.cjs +1 -0
  5. package/dist/components/ui/hover-card/index.d.ts +11 -0
  6. package/dist/components/ui/hover-card/index.js +1 -0
  7. package/dist/components/ui/menubar/index.cjs +1 -0
  8. package/dist/components/ui/menubar/index.d.ts +42 -0
  9. package/dist/components/ui/menubar/index.js +1 -0
  10. package/dist/components/ui/navigation-menu/index.cjs +1 -0
  11. package/dist/components/ui/navigation-menu/index.d.ts +20 -0
  12. package/dist/components/ui/navigation-menu/index.js +1 -0
  13. package/dist/index.d.ts +4 -0
  14. package/dist/src/components/patterns/index.cjs +1 -1
  15. package/dist/src/components/patterns/index.js +2 -10
  16. package/dist/src/components/patterns/public.cjs +1 -1
  17. package/dist/src/components/patterns/public.js +2 -10
  18. package/dist/src/components/ui/hover-card/index.cjs +1 -0
  19. package/dist/src/components/ui/hover-card/index.js +50 -0
  20. package/dist/src/components/ui/menubar/index.cjs +1 -0
  21. package/dist/src/components/ui/menubar/index.js +132 -0
  22. package/dist/src/components/ui/navigation-menu/index.cjs +1 -0
  23. package/dist/src/components/ui/navigation-menu/index.js +73 -0
  24. package/dist/src/index.cjs +1 -1
  25. package/dist/src/index.js +25 -29
  26. package/dist/src/public-component-surface.cjs +1 -1
  27. package/dist/src/public-component-surface.js +16 -42
  28. package/package.json +1 -1
  29. package/packages/cli/dist/index.cjs +100 -100
  30. package/packages/cli/vendor/src/components/patterns/index.ts +0 -8
  31. package/packages/cli/vendor/src/components/patterns/public.ts +0 -8
  32. package/packages/cli/vendor/src/components/ui/hover-card/index.tsx +72 -0
  33. package/packages/cli/vendor/src/components/ui/menubar/index.tsx +140 -0
  34. package/packages/cli/vendor/src/components/ui/navigation-menu/index.tsx +100 -0
  35. package/packages/cli/vendor/src/index.ts +6 -2
  36. package/packages/cli/vendor/src/public-component-surface.ts +4 -10
  37. package/packages/cli/vendor/templates/showcase/src/showcase/data/registry.ts +10 -10
  38. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +2 -2
  39. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  40. package/registry.json +2124 -258
  41. package/dist/components/patterns/bulk-action-bar.cjs +0 -1
  42. package/dist/components/patterns/bulk-action-bar.d.ts +0 -10
  43. package/dist/components/patterns/bulk-action-bar.js +0 -1
  44. package/dist/components/patterns/data-view.cjs +0 -1
  45. package/dist/components/patterns/data-view.d.ts +0 -17
  46. package/dist/components/patterns/data-view.js +0 -1
  47. package/dist/components/patterns/detail-layout.cjs +0 -1
  48. package/dist/components/patterns/detail-layout.d.ts +0 -16
  49. package/dist/components/patterns/detail-layout.js +0 -1
  50. package/dist/components/patterns/form-builder.cjs +0 -1
  51. package/dist/components/patterns/form-builder.d.ts +0 -110
  52. package/dist/components/patterns/form-builder.js +0 -1
  53. package/dist/components/patterns/page-toolbar.cjs +0 -1
  54. package/dist/components/patterns/page-toolbar.d.ts +0 -11
  55. package/dist/components/patterns/page-toolbar.js +0 -1
  56. package/dist/components/patterns/resource-detail-page.cjs +0 -1
  57. package/dist/components/patterns/resource-detail-page.d.ts +0 -39
  58. package/dist/components/patterns/resource-detail-page.js +0 -1
  59. package/dist/components/patterns/resource-page.cjs +0 -1
  60. package/dist/components/patterns/resource-page.d.ts +0 -30
  61. package/dist/components/patterns/resource-page.js +0 -1
  62. package/dist/components/patterns/settings-page.cjs +0 -1
  63. package/dist/components/patterns/settings-page.d.ts +0 -21
  64. package/dist/components/patterns/settings-page.js +0 -1
  65. package/dist/src/components/patterns/bulk-action-bar.cjs +0 -1
  66. package/dist/src/components/patterns/bulk-action-bar.js +0 -34
  67. package/dist/src/components/patterns/data-view.cjs +0 -1
  68. package/dist/src/components/patterns/data-view.js +0 -47
  69. package/dist/src/components/patterns/detail-layout.cjs +0 -1
  70. package/dist/src/components/patterns/detail-layout.js +0 -65
  71. package/dist/src/components/patterns/form-builder.cjs +0 -1
  72. package/dist/src/components/patterns/form-builder.js +0 -263
  73. package/dist/src/components/patterns/page-toolbar.cjs +0 -1
  74. package/dist/src/components/patterns/page-toolbar.js +0 -41
  75. package/dist/src/components/patterns/resource-detail-page.cjs +0 -1
  76. package/dist/src/components/patterns/resource-detail-page.js +0 -100
  77. package/dist/src/components/patterns/resource-page.cjs +0 -1
  78. package/dist/src/components/patterns/resource-page.js +0 -88
  79. package/dist/src/components/patterns/settings-page.cjs +0 -1
  80. package/dist/src/components/patterns/settings-page.js +0 -64
  81. package/packages/cli/vendor/src/components/patterns/bulk-action-bar.tsx +0 -53
  82. package/packages/cli/vendor/src/components/patterns/data-view.tsx +0 -64
  83. package/packages/cli/vendor/src/components/patterns/detail-layout.tsx +0 -75
  84. package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -472
  85. package/packages/cli/vendor/src/components/patterns/page-toolbar.tsx +0 -61
  86. package/packages/cli/vendor/src/components/patterns/resource-detail-page.tsx +0 -164
  87. package/packages/cli/vendor/src/components/patterns/resource-page.tsx +0 -149
  88. package/packages/cli/vendor/src/components/patterns/settings-page.tsx +0 -84
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/bulk-action-bar.cjs")
@@ -1,10 +0,0 @@
1
- import * as React from "react";
2
- export type BulkActionBarProps = React.ComponentProps<"div"> & {
3
- selectedCount: number;
4
- selectedLabel?: (count: number) => React.ReactNode;
5
- actions?: React.ReactNode;
6
- clearLabel?: React.ReactNode;
7
- onClear?: () => void;
8
- };
9
- declare function BulkActionBar({ className, selectedCount, selectedLabel, actions, clearLabel, onClear, children, ...props }: BulkActionBarProps): React.JSX.Element | null;
10
- export { BulkActionBar };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/bulk-action-bar.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/data-view.cjs")
@@ -1,17 +0,0 @@
1
- import * as React from "react";
2
- import { type DataTableProps } from "@/components/data-table/data-table";
3
- import { PageToolbar } from "@/components/patterns/page-toolbar";
4
- export type DataViewProps<TData, TValue = unknown> = Omit<React.ComponentProps<"div">, "children"> & {
5
- title?: React.ReactNode;
6
- description?: React.ReactNode;
7
- toolbar?: React.ComponentProps<typeof PageToolbar>;
8
- table?: DataTableProps<TData, TValue>;
9
- count?: number;
10
- loading?: boolean;
11
- error?: React.ReactNode;
12
- emptyTitle?: React.ReactNode;
13
- emptyDescription?: React.ReactNode;
14
- children?: React.ReactNode;
15
- };
16
- declare function DataView<TData, TValue = unknown>({ className, title, description, toolbar, table, count, loading, error, emptyTitle, emptyDescription, children, ...props }: DataViewProps<TData, TValue>): React.JSX.Element;
17
- export { DataView };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/data-view.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/detail-layout.cjs")
@@ -1,16 +0,0 @@
1
- import * as React from "react";
2
- export type DetailLayoutProps = React.ComponentProps<"div"> & {
3
- title?: React.ReactNode;
4
- description?: React.ReactNode;
5
- eyebrow?: React.ReactNode;
6
- actions?: React.ReactNode;
7
- breadcrumbs?: React.ReactNode;
8
- summary?: React.ReactNode;
9
- aside?: React.ReactNode;
10
- footer?: React.ReactNode;
11
- headerClassName?: string;
12
- contentClassName?: string;
13
- asideClassName?: string;
14
- };
15
- declare function DetailLayout({ className, title, description, eyebrow, actions, breadcrumbs, summary, aside, footer, headerClassName, contentClassName, asideClassName, children, ...props }: DetailLayoutProps): React.JSX.Element;
16
- export { DetailLayout };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/detail-layout.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/form-builder.cjs")
@@ -1,110 +0,0 @@
1
- import * as React from "react";
2
- import type { Control, FieldPath, FieldValues } from "react-hook-form";
3
- import { type FormInputDateVariantProps, type FormInputNumberVariantProps, type FormInputPhoneVariantProps, type FormInputProps } from "@/components/form/form-input";
4
- import { type FormTextareaProps } from "@/components/form/form-textarea";
5
- import { type FormSelectAsyncVariantProps, type FormSelectProps } from "@/components/form/form-select";
6
- import { type FormSwitchProps } from "@/components/form/form-switch";
7
- import { type FormDateRangeInputProps } from "@/components/form/form-date-range-input";
8
- export type FormBuilderLayout = "grid" | "stack";
9
- export type FormBuilderDensity = "compact" | "default" | "comfortable";
10
- type DistributiveOmit<T, TKey extends PropertyKey> = T extends unknown ? Omit<T, TKey> : never;
11
- export type FormBuilderFieldRenderContext<TFieldValues extends FieldValues> = {
12
- control: Control<TFieldValues>;
13
- disabled?: boolean;
14
- readOnly?: boolean;
15
- };
16
- type BaseFormBuilderField = {
17
- id: string;
18
- hidden?: boolean;
19
- className?: string;
20
- colSpan?: 1 | 2 | 3 | 4 | "full";
21
- };
22
- export type FormBuilderCustomField<TFieldValues extends FieldValues> = BaseFormBuilderField & {
23
- type: "custom";
24
- render: (context: FormBuilderFieldRenderContext<TFieldValues>) => React.ReactNode;
25
- };
26
- export type FormBuilderInputField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
27
- type: "input";
28
- props: DistributiveOmit<FormInputProps<TFieldValues, TName>, "control">;
29
- };
30
- export type FormBuilderTextareaField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
31
- type: "textarea";
32
- props: Omit<FormTextareaProps<TFieldValues, TName>, "control">;
33
- };
34
- export type FormBuilderSelectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
35
- type: "select";
36
- props: DistributiveOmit<FormSelectProps<TFieldValues, TName>, "control">;
37
- };
38
- export type FormBuilderAsyncSelectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
39
- type: "async-select";
40
- props: Omit<FormSelectAsyncVariantProps<TFieldValues, TName>, "control" | "kind">;
41
- };
42
- export type FormBuilderSwitchField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
43
- type: "switch";
44
- props: Omit<FormSwitchProps<TFieldValues, TName>, "control">;
45
- };
46
- export type FormBuilderNumberField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
47
- type: "number";
48
- props: Omit<FormInputNumberVariantProps<TFieldValues, TName>, "control" | "kind">;
49
- };
50
- export type FormBuilderPhoneField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
51
- type: "phone";
52
- props: Omit<FormInputPhoneVariantProps<TFieldValues, TName>, "control" | "kind">;
53
- };
54
- export type FormBuilderDateField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
55
- type: "date";
56
- props: Omit<FormInputDateVariantProps<TFieldValues, TName>, "control" | "kind">;
57
- };
58
- export type FormBuilderDateRangeField<TFieldValues extends FieldValues, TFromName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TToName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = BaseFormBuilderField & {
59
- type: "date-range";
60
- props: Omit<FormDateRangeInputProps<TFieldValues, TFromName, TToName>, "control">;
61
- };
62
- type FormBuilderStoredField = BaseFormBuilderField & {
63
- type: "input" | "textarea" | "select" | "async-select" | "switch" | "number" | "phone" | "date" | "date-range";
64
- props: object;
65
- };
66
- export type FormBuilderField<TFieldValues extends FieldValues> = FormBuilderCustomField<TFieldValues> | FormBuilderStoredField;
67
- export type FormBuilderSection<TFieldValues extends FieldValues> = {
68
- id: string;
69
- title?: React.ReactNode;
70
- description?: React.ReactNode;
71
- actions?: React.ReactNode;
72
- hidden?: boolean;
73
- className?: string;
74
- fields: FormBuilderField<TFieldValues>[];
75
- };
76
- export type FormBuilderProps<TFieldValues extends FieldValues> = Omit<React.ComponentProps<"form">, "children"> & {
77
- control: Control<TFieldValues>;
78
- fields?: FormBuilderField<TFieldValues>[];
79
- sections?: FormBuilderSection<TFieldValues>[];
80
- layout?: FormBuilderLayout;
81
- density?: FormBuilderDensity;
82
- columns?: 1 | 2 | 3 | 4;
83
- disabled?: boolean;
84
- readOnly?: boolean;
85
- footer?: React.ReactNode;
86
- submitLabel?: React.ReactNode;
87
- resetLabel?: React.ReactNode;
88
- onResetClick?: () => void;
89
- isSubmitting?: boolean;
90
- sectionClassName?: string;
91
- fieldClassName?: string;
92
- footerClassName?: string;
93
- };
94
- type FieldPresetOptions<TProps> = BaseFormBuilderField & {
95
- props: TProps;
96
- };
97
- declare function inputField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderInputField<TFieldValues, TName>["props"]>): FormBuilderInputField<TFieldValues, TName>;
98
- declare function textareaField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderTextareaField<TFieldValues, TName>["props"]>): FormBuilderTextareaField<TFieldValues, TName>;
99
- declare function selectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderSelectField<TFieldValues, TName>["props"]>): FormBuilderSelectField<TFieldValues, TName>;
100
- declare function asyncSelectField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderAsyncSelectField<TFieldValues, TName>["props"]>): FormBuilderAsyncSelectField<TFieldValues, TName>;
101
- declare function switchField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderSwitchField<TFieldValues, TName>["props"]>): FormBuilderSwitchField<TFieldValues, TName>;
102
- declare function numberField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderNumberField<TFieldValues, TName>["props"]>): FormBuilderNumberField<TFieldValues, TName>;
103
- declare function phoneField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderPhoneField<TFieldValues, TName>["props"]>): FormBuilderPhoneField<TFieldValues, TName>;
104
- declare function dateField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderDateField<TFieldValues, TName>["props"]>): FormBuilderDateField<TFieldValues, TName>;
105
- declare function dateRangeField<TFieldValues extends FieldValues, TFromName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TToName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(options: FieldPresetOptions<FormBuilderDateRangeField<TFieldValues, TFromName, TToName>["props"]>): FormBuilderDateRangeField<TFieldValues, TFromName, TToName>;
106
- declare function customField<TFieldValues extends FieldValues>(options: BaseFormBuilderField & Pick<FormBuilderCustomField<TFieldValues>, "render">): FormBuilderCustomField<TFieldValues>;
107
- declare function formSection<TFieldValues extends FieldValues>(section: FormBuilderSection<TFieldValues>): FormBuilderSection<TFieldValues>;
108
- declare function renderFormBuilderField<TFieldValues extends FieldValues>(field: FormBuilderField<TFieldValues>, context: FormBuilderFieldRenderContext<TFieldValues>): React.ReactNode;
109
- declare function FormBuilder<TFieldValues extends FieldValues>({ className, control, fields, sections, layout, density, columns, disabled, readOnly, footer, submitLabel, resetLabel, onResetClick, isSubmitting, sectionClassName, fieldClassName, footerClassName, ...props }: FormBuilderProps<TFieldValues>): React.JSX.Element;
110
- export { FormBuilder, asyncSelectField, customField, dateField, dateRangeField, formSection, inputField, numberField, phoneField, renderFormBuilderField, selectField, switchField, textareaField, };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/form-builder.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/page-toolbar.cjs")
@@ -1,11 +0,0 @@
1
- import * as React from "react";
2
- export type PageToolbarProps = React.ComponentProps<"div"> & {
3
- search?: React.ReactNode;
4
- filters?: React.ReactNode;
5
- viewOptions?: React.ReactNode;
6
- actions?: React.ReactNode;
7
- summary?: React.ReactNode;
8
- sticky?: boolean;
9
- };
10
- declare function PageToolbar({ className, search, filters, viewOptions, actions, summary, sticky, children, ...props }: PageToolbarProps): React.JSX.Element | null;
11
- export { PageToolbar };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/page-toolbar.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/resource-detail-page.cjs")
@@ -1,39 +0,0 @@
1
- import * as React from "react";
2
- import { type DescriptionListItem } from "@/components/display/description-list";
3
- import { type PageHeaderProps } from "@/components/layout/page-header";
4
- export type ResourceDetailPageDensity = "default" | "compact" | "comfortable";
5
- export type ResourceDetailPageSection = {
6
- id: string;
7
- title?: React.ReactNode;
8
- description?: React.ReactNode;
9
- actions?: React.ReactNode;
10
- hidden?: boolean;
11
- className?: string;
12
- bodyClassName?: string;
13
- items?: DescriptionListItem[];
14
- children?: React.ReactNode;
15
- };
16
- export type ResourceDetailPageProps = Omit<React.ComponentProps<"div">, "children"> & {
17
- title?: React.ReactNode;
18
- description?: React.ReactNode;
19
- eyebrow?: React.ReactNode;
20
- actions?: React.ReactNode;
21
- breadcrumbs?: React.ReactNode;
22
- status?: React.ReactNode;
23
- summary?: React.ReactNode;
24
- meta?: React.ReactNode;
25
- sections?: ResourceDetailPageSection[];
26
- children?: React.ReactNode;
27
- aside?: React.ReactNode;
28
- footer?: React.ReactNode;
29
- backLabel?: React.ReactNode;
30
- onBack?: () => void;
31
- headerProps?: Omit<PageHeaderProps, "title" | "description" | "actions" | "eyebrow">;
32
- density?: ResourceDetailPageDensity;
33
- pageHeaderClassName?: string;
34
- contentClassName?: string;
35
- asideClassName?: string;
36
- sectionClassName?: string;
37
- };
38
- declare function ResourceDetailPage({ className, title, description, eyebrow, actions, breadcrumbs, status, summary, meta, sections, children, aside, footer, backLabel, onBack, headerProps, density, pageHeaderClassName, contentClassName, asideClassName, sectionClassName, ...props }: ResourceDetailPageProps): React.JSX.Element;
39
- export { ResourceDetailPage };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/resource-detail-page.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/resource-page.cjs")
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- import { type DataTableProps } from "@/components/data-table/data-table";
3
- import { type PageHeaderProps } from "@/components/layout/page-header";
4
- import { type SectionProps } from "@/components/layout/section";
5
- export type ResourcePageDensity = "default" | "compact" | "comfortable";
6
- export type ResourcePageSectionProps = Omit<SectionProps, "variant">;
7
- declare function ResourcePageSection({ className, title, description, actions, headerClassName, bodyClassName, children, ...props }: ResourcePageSectionProps): React.JSX.Element;
8
- export type ResourcePageProps<TData, TValue = unknown> = Omit<React.ComponentProps<"div">, "children"> & {
9
- title?: React.ReactNode;
10
- description?: React.ReactNode;
11
- eyebrow?: React.ReactNode;
12
- actions?: React.ReactNode;
13
- breadcrumbs?: React.ReactNode;
14
- stats?: React.ReactNode;
15
- filters?: React.ReactNode;
16
- tabs?: React.ReactNode;
17
- table?: DataTableProps<TData, TValue>;
18
- children?: React.ReactNode;
19
- aside?: React.ReactNode;
20
- footer?: React.ReactNode;
21
- headerProps?: Omit<PageHeaderProps, "title" | "description" | "actions" | "eyebrow">;
22
- density?: ResourcePageDensity;
23
- pageHeaderClassName?: string;
24
- toolbarClassName?: string;
25
- contentClassName?: string;
26
- asideClassName?: string;
27
- asideWidth?: React.CSSProperties["width"];
28
- };
29
- declare function ResourcePage<TData, TValue = unknown>({ className, title, description, eyebrow, actions, breadcrumbs, stats, filters, tabs, table, children, aside, footer, headerProps, density, pageHeaderClassName, toolbarClassName, contentClassName, asideClassName, asideWidth, style, ...props }: ResourcePageProps<TData, TValue>): React.JSX.Element;
30
- export { ResourcePage, ResourcePageSection };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/resource-page.js"
@@ -1 +0,0 @@
1
- module.exports = require("../../src/components/patterns/settings-page.cjs")
@@ -1,21 +0,0 @@
1
- import * as React from "react";
2
- export type SettingsPageSection = {
3
- value: string;
4
- label: React.ReactNode;
5
- description?: React.ReactNode;
6
- disabled?: boolean;
7
- content: React.ReactNode;
8
- };
9
- export type SettingsPageProps = Omit<React.ComponentProps<"div">, "children"> & {
10
- title?: React.ReactNode;
11
- description?: React.ReactNode;
12
- actions?: React.ReactNode;
13
- sections: SettingsPageSection[];
14
- defaultValue?: string;
15
- value?: string;
16
- onValueChange?: (value: string) => void;
17
- navClassName?: string;
18
- contentClassName?: string;
19
- };
20
- declare function SettingsPage({ className, title, description, actions, sections, defaultValue, value, onValueChange, navClassName, contentClassName, ...props }: SettingsPageProps): React.JSX.Element;
21
- export { SettingsPage };
@@ -1 +0,0 @@
1
- export * from "../../src/components/patterns/settings-page.js"
@@ -1 +0,0 @@
1
- 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");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o({className:e,selectedCount:r,selectedLabel:o=e=>`${e} selected`,actions:s,clearLabel:c=`Clear`,onClear:l,children:u,...d}){return r<=0?null:(0,a.jsxs)(`div`,{"data-slot":`bulk-action-bar`,className:t.cn(`flex flex-col gap-3 rounded-xl border bg-card p-3 shadow-sm sm:flex-row sm:items-center sm:justify-between`,e),...d,children:[(0,a.jsx)(`div`,{"data-slot":`bulk-action-bar-count`,className:`text-sm font-medium`,children:o(r)}),(0,a.jsxs)(`div`,{"data-slot":`bulk-action-bar-actions`,className:`flex flex-wrap items-center gap-2`,children:[u,s,l&&(0,a.jsxs)(n.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:l,children:[(0,a.jsx)(i.XIcon,{"data-icon":`inline-start`}),c]})]})]})}exports.BulkActionBar=o;
@@ -1,34 +0,0 @@
1
- import { cn as e } from "../../lib/utils.js";
2
- import { Button as t } from "../ui/button/index.js";
3
- import "react";
4
- import { XIcon as n } from "lucide-react";
5
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
- //#region src/components/patterns/bulk-action-bar.tsx
7
- function a({ className: a, selectedCount: o, selectedLabel: s = (e) => `${e} selected`, actions: c, clearLabel: l = "Clear", onClear: u, children: d, ...f }) {
8
- return o <= 0 ? null : /* @__PURE__ */ i("div", {
9
- "data-slot": "bulk-action-bar",
10
- className: e("flex flex-col gap-3 rounded-xl border bg-card p-3 shadow-sm sm:flex-row sm:items-center sm:justify-between", a),
11
- ...f,
12
- children: [/* @__PURE__ */ r("div", {
13
- "data-slot": "bulk-action-bar-count",
14
- className: "text-sm font-medium",
15
- children: s(o)
16
- }), /* @__PURE__ */ i("div", {
17
- "data-slot": "bulk-action-bar-actions",
18
- className: "flex flex-wrap items-center gap-2",
19
- children: [
20
- d,
21
- c,
22
- u && /* @__PURE__ */ i(t, {
23
- type: "button",
24
- variant: "ghost",
25
- size: "sm",
26
- onClick: u,
27
- children: [/* @__PURE__ */ r(n, { "data-icon": "inline-start" }), l]
28
- })
29
- ]
30
- })]
31
- });
32
- }
33
- //#endregion
34
- export { a as BulkActionBar };
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../data-table/data-table.cjs"),r=require("./empty-state.cjs"),i=require("./page-toolbar.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("react/jsx-runtime");function s({className:e,title:a,description:s,toolbar:c,table:l,count:u,loading:d=!1,error:f,emptyTitle:p=`No results`,emptyDescription:m=`Try adjusting filters or create a new item.`,children:h,...g}){let _=!!(a||s),v=!!c,y=u===void 0?!!(h||l):u>0;return(0,o.jsxs)(`div`,{"data-slot":`data-view`,className:t.cn(`grid min-w-0 gap-4`,e),...g,children:[_&&(0,o.jsxs)(`div`,{"data-slot":`data-view-header`,className:`grid gap-1`,children:[a&&(0,o.jsx)(`h2`,{className:`text-xl font-semibold tracking-tight`,children:a}),s&&(0,o.jsx)(`p`,{className:`text-sm leading-6 text-muted-foreground`,children:s})]}),v&&(0,o.jsx)(i.PageToolbar,{...c}),f?(0,o.jsx)(r.EmptyState,{tone:`error`,title:`Something went wrong`,description:f}):d?(0,o.jsx)(r.EmptyState,{tone:`info`,title:`Loading data`,description:`Please wait while the latest data is prepared.`}):y?(0,o.jsxs)(`div`,{"data-slot":`data-view-content`,className:`min-w-0`,children:[h,l&&(0,o.jsx)(n.DataTable,{...l})]}):(0,o.jsx)(r.EmptyState,{title:p,description:m})]})}exports.DataView=s;
@@ -1,47 +0,0 @@
1
- import { cn as e } from "../../lib/utils.js";
2
- import { DataTable as t } from "../data-table/data-table.js";
3
- import { EmptyState as n } from "./empty-state.js";
4
- import { PageToolbar as r } from "./page-toolbar.js";
5
- import "react";
6
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
- //#region src/components/patterns/data-view.tsx
8
- function o({ className: o, title: s, description: c, toolbar: l, table: u, count: d, loading: f = !1, error: p, emptyTitle: m = "No results", emptyDescription: h = "Try adjusting filters or create a new item.", children: g, ..._ }) {
9
- let v = !!(s || c), y = !!l, b = d === void 0 ? !!(g || u) : d > 0;
10
- return /* @__PURE__ */ a("div", {
11
- "data-slot": "data-view",
12
- className: e("grid min-w-0 gap-4", o),
13
- ..._,
14
- children: [
15
- v && /* @__PURE__ */ a("div", {
16
- "data-slot": "data-view-header",
17
- className: "grid gap-1",
18
- children: [s && /* @__PURE__ */ i("h2", {
19
- className: "text-xl font-semibold tracking-tight",
20
- children: s
21
- }), c && /* @__PURE__ */ i("p", {
22
- className: "text-sm leading-6 text-muted-foreground",
23
- children: c
24
- })]
25
- }),
26
- y && /* @__PURE__ */ i(r, { ...l }),
27
- p ? /* @__PURE__ */ i(n, {
28
- tone: "error",
29
- title: "Something went wrong",
30
- description: p
31
- }) : f ? /* @__PURE__ */ i(n, {
32
- tone: "info",
33
- title: "Loading data",
34
- description: "Please wait while the latest data is prepared."
35
- }) : b ? /* @__PURE__ */ a("div", {
36
- "data-slot": "data-view-content",
37
- className: "min-w-0",
38
- children: [g, u && /* @__PURE__ */ i(t, { ...u })]
39
- }) : /* @__PURE__ */ i(n, {
40
- title: m,
41
- description: h
42
- })
43
- ]
44
- });
45
- }
46
- //#endregion
47
- export { o as DataView };
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({className:e,title:n,description:i,eyebrow:a,actions:o,breadcrumbs:s,summary:c,aside:l,footer:u,headerClassName:d,contentClassName:f,asideClassName:p,children:m,...h}){let g=!!(n||i||a||o),_=!!(m||l);return(0,r.jsxs)(`div`,{"data-slot":`detail-layout`,className:t.cn(`grid min-w-0 gap-4`,e),...h,children:[s&&(0,r.jsx)(`div`,{"data-slot":`detail-layout-breadcrumbs`,children:s}),g&&(0,r.jsxs)(`div`,{"data-slot":`detail-layout-header`,className:t.cn(`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,d),children:[(0,r.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[a&&(0,r.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:a}),n&&(0,r.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:n}),i&&(0,r.jsx)(`p`,{className:`max-w-3xl text-sm leading-6 text-muted-foreground`,children:i})]}),o&&(0,r.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:o})]}),c&&(0,r.jsx)(`div`,{"data-slot":`detail-layout-summary`,children:c}),_&&(0,r.jsxs)(`div`,{"data-slot":`detail-layout-content`,className:t.cn(`grid min-w-0 gap-4`,l&&`xl:grid-cols-[minmax(0,1fr)_20rem]`,f),children:[(0,r.jsx)(`main`,{"data-slot":`detail-layout-main`,className:`min-w-0`,children:m}),l&&(0,r.jsx)(`aside`,{"data-slot":`detail-layout-aside`,className:t.cn(`min-w-0`,p),children:l})]}),u&&(0,r.jsx)(`div`,{"data-slot":`detail-layout-footer`,children:u})]})}exports.DetailLayout=i;
@@ -1,65 +0,0 @@
1
- import { cn as e } from "../../lib/utils.js";
2
- import "react";
3
- import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
- //#region src/components/patterns/detail-layout.tsx
5
- function r({ className: r, title: i, description: a, eyebrow: o, actions: s, breadcrumbs: c, summary: l, aside: u, footer: d, headerClassName: f, contentClassName: p, asideClassName: m, children: h, ...g }) {
6
- let _ = !!(i || a || o || s), v = !!(h || u);
7
- return /* @__PURE__ */ n("div", {
8
- "data-slot": "detail-layout",
9
- className: e("grid min-w-0 gap-4", r),
10
- ...g,
11
- children: [
12
- c && /* @__PURE__ */ t("div", {
13
- "data-slot": "detail-layout-breadcrumbs",
14
- children: c
15
- }),
16
- _ && /* @__PURE__ */ n("div", {
17
- "data-slot": "detail-layout-header",
18
- className: e("flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between", f),
19
- children: [/* @__PURE__ */ n("div", {
20
- className: "grid min-w-0 gap-1",
21
- children: [
22
- o && /* @__PURE__ */ t("div", {
23
- className: "text-xs font-medium uppercase tracking-wide text-muted-foreground",
24
- children: o
25
- }),
26
- i && /* @__PURE__ */ t("h1", {
27
- className: "text-2xl font-semibold tracking-tight",
28
- children: i
29
- }),
30
- a && /* @__PURE__ */ t("p", {
31
- className: "max-w-3xl text-sm leading-6 text-muted-foreground",
32
- children: a
33
- })
34
- ]
35
- }), s && /* @__PURE__ */ t("div", {
36
- className: "flex shrink-0 flex-wrap items-center gap-2",
37
- children: s
38
- })]
39
- }),
40
- l && /* @__PURE__ */ t("div", {
41
- "data-slot": "detail-layout-summary",
42
- children: l
43
- }),
44
- v && /* @__PURE__ */ n("div", {
45
- "data-slot": "detail-layout-content",
46
- className: e("grid min-w-0 gap-4", u && "xl:grid-cols-[minmax(0,1fr)_20rem]", p),
47
- children: [/* @__PURE__ */ t("main", {
48
- "data-slot": "detail-layout-main",
49
- className: "min-w-0",
50
- children: h
51
- }), u && /* @__PURE__ */ t("aside", {
52
- "data-slot": "detail-layout-aside",
53
- className: e("min-w-0", m),
54
- children: u
55
- })]
56
- }),
57
- d && /* @__PURE__ */ t("div", {
58
- "data-slot": "detail-layout-footer",
59
- children: d
60
- })
61
- ]
62
- });
63
- }
64
- //#endregion
65
- export { r as DetailLayout };
@@ -1 +0,0 @@
1
- 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("../form/form-date-range-input.cjs"),i=require("../form/form-input.cjs"),a=require("../form/form-select.cjs"),o=require("../form/form-switch.cjs"),s=require("../form/form-textarea.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u={compact:`gap-3`,default:`gap-4`,comfortable:`gap-6`},d={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-2 xl:grid-cols-3`,4:`grid-cols-1 md:grid-cols-2 xl:grid-cols-4`},f={1:`col-span-1`,2:`md:col-span-2`,3:`xl:col-span-3`,4:`xl:col-span-4`,full:`col-span-full`};function p(e){let{id:t,hidden:n,className:r,colSpan:i,props:a}=e;return{base:{id:t,hidden:n,className:r,colSpan:i},props:a}}function m(e){let{base:t,props:n}=p(e);return{...t,type:`input`,props:n}}function h(e){let{base:t,props:n}=p(e);return{...t,type:`textarea`,props:n}}function g(e){let{base:t,props:n}=p(e);return{...t,type:`select`,props:n}}function _(e){let{base:t,props:n}=p(e);return{...t,type:`async-select`,props:n}}function v(e){let{base:t,props:n}=p(e);return{...t,type:`switch`,props:n}}function y(e){let{base:t,props:n}=p(e);return{...t,type:`number`,props:n}}function b(e){let{base:t,props:n}=p(e);return{...t,type:`phone`,props:n}}function x(e){let{base:t,props:n}=p(e);return{...t,type:`date`,props:n}}function S(e){let{base:t,props:n}=p(e);return{...t,type:`date-range`,props:n}}function C(e){let{id:t,hidden:n,className:r,colSpan:i,render:a}=e;return{id:t,hidden:n,className:r,colSpan:i,type:`custom`,render:a}}function w(e){return e}function T(e,t){let n=i.FormInput,l=a.FormSelect,u=s.FormTextarea,d=o.FormSwitch,f=r.FormDateRangeInput;switch(e.type){case`custom`:return e.render(t);case`input`:return c.createElement(n,{control:t.control,disabled:t.disabled,readOnly:t.readOnly,...e.props});case`textarea`:return c.createElement(u,{control:t.control,disabled:t.disabled,readOnly:t.readOnly,...e.props});case`select`:return c.createElement(l,{control:t.control,disabled:t.disabled,...e.props});case`async-select`:return c.createElement(l,{control:t.control,disabled:t.disabled,kind:`async`,...e.props});case`switch`:return c.createElement(d,{control:t.control,disabled:t.disabled,...e.props});case`number`:return c.createElement(n,{control:t.control,disabled:t.disabled,readOnly:t.readOnly,kind:`number`,...e.props});case`phone`:return c.createElement(n,{control:t.control,disabled:t.disabled,readOnly:t.readOnly,kind:`phone`,...e.props});case`date`:return c.createElement(n,{control:t.control,disabled:t.disabled,readOnly:t.readOnly,kind:`date`,...e.props});case`date-range`:return c.createElement(f,{control:t.control,fromInputProps:{disabled:t.disabled,readOnly:t.readOnly},toInputProps:{disabled:t.disabled,readOnly:t.readOnly},...e.props});default:return null}}function E({fields:e,sections:t}){return t?.length?t:[{id:`default`,fields:e??[]}]}function D({className:e,control:r,fields:i,sections:a,layout:o=`grid`,density:s=`default`,columns:p=2,disabled:m,readOnly:h,footer:g,submitLabel:_,resetLabel:v,onResetClick:y,isSubmitting:b,sectionClassName:x,fieldClassName:S,footerClassName:C,...w}){let D=E({fields:i,sections:a}),O=c.useMemo(()=>({control:r,disabled:m,readOnly:h}),[r,m,h]);return(0,l.jsxs)(`form`,{"data-slot":`form-builder`,className:t.cn(`grid`,u[s],e),...w,children:[D.filter(e=>!e.hidden).map(e=>(0,l.jsxs)(`section`,{"data-slot":`form-builder-section`,className:t.cn(`grid gap-4`,e.className,x),children:[(e.title||e.description||e.actions)&&(0,l.jsxs)(`div`,{"data-slot":`form-builder-section-header`,className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,l.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[e.title&&(0,l.jsx)(`h2`,{className:`text-base font-semibold leading-none tracking-tight`,children:e.title}),e.description&&(0,l.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description})]}),e.actions&&(0,l.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:e.actions})]}),(0,l.jsx)(`div`,{"data-slot":`form-builder-fields`,"data-layout":o,className:t.cn(`grid`,u[s],o===`grid`?d[p]:`grid-cols-1`),children:e.fields.filter(e=>!e.hidden).map(e=>(0,l.jsx)(`div`,{"data-slot":`form-builder-field`,className:t.cn(e.colSpan&&f[e.colSpan],e.className,S),children:T(e,O)},e.id))})]},e.id)),(g||_||v)&&(0,l.jsx)(`div`,{"data-slot":`form-builder-footer`,className:t.cn(`flex flex-wrap items-center justify-end gap-2`,C),children:g??(0,l.jsxs)(l.Fragment,{children:[v&&(0,l.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:m||b,onClick:y,children:v}),_&&(0,l.jsx)(n.Button,{type:`submit`,disabled:m||b,children:_})]})})]})}exports.FormBuilder=D,exports.asyncSelectField=_,exports.customField=C,exports.dateField=x,exports.dateRangeField=S,exports.formSection=w,exports.inputField=m,exports.numberField=y,exports.phoneField=b,exports.renderFormBuilderField=T,exports.selectField=g,exports.switchField=v,exports.textareaField=h;