@lucasvu/scope-ui 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -875,7 +875,7 @@ type UiAiComponentDescriptor = {
875
875
  declare const uiAiManifest: {
876
876
  readonly packageName: "@lucasvu/scope-ui";
877
877
  readonly styleImport: "@lucasvu/scope-ui/styles.css";
878
- readonly rules: readonly ["Import the stylesheet once at the app entry before rendering any component.", "If the project declares an approved theme preset in AGENTS.md or ui-theme.css, stay inside that preset and do not invent a second palette.", "Prefer the canonical component for each intent instead of mixing legacy MainFe components.", "Use Input/Textarea/Select label props directly for simple fields; use Field only to wrap custom controls or grouped content.", "Use Select for small fixed option lists, SearchableSelect for larger local lists, Combobox for type-and-pick flows, and AsyncCombobox for remote search.", "Always provide a stable rowKey to DataTable and use sortMode=\"server\" when sorting happens on the backend.", "Prefer Card as the outer layout section and keep alerts, stats, and tables inside CardContent when building dashboards or forms.", "Do not import MainFe components unless the target explicitly asks for legacy main-fe styling."];
878
+ readonly rules: readonly ["Import the stylesheet once at the app entry before rendering any component.", "If the project declares an approved theme preset in AGENTS.md or ui-theme.css, stay inside that preset and do not invent a second palette.", "Collect the screen brief first: route url, sidebar items, active sidebar item, page title, actions, and the page-specific content schema.", "Prefer the canonical component for each intent instead of mixing legacy MainFe components.", "Use Input/Textarea/Select label props directly for simple fields; use Field only to wrap custom controls or grouped content.", "Use Select for small fixed option lists, SearchableSelect for larger local lists, Combobox for type-and-pick flows, and AsyncCombobox for remote search.", "Always provide a stable rowKey to DataTable and use sortMode=\"server\" when sorting happens on the backend.", "Prefer Card as the outer layout section and keep alerts, stats, and tables inside CardContent when building dashboards or forms.", "Do not import MainFe components unless the target explicitly asks for legacy main-fe styling."];
879
879
  readonly components: ({
880
880
  name: string;
881
881
  importName: string;
@@ -911,6 +911,290 @@ declare const uiAiManifest: {
911
911
  })[];
912
912
  };
913
913
 
914
+ type UiScreenKind = 'list' | 'form' | 'detail' | 'dashboard';
915
+ type UiScreenBriefField = {
916
+ id: string;
917
+ label: string;
918
+ description: string;
919
+ required: boolean;
920
+ appliesTo: UiScreenKind[] | ['all'];
921
+ example: string;
922
+ };
923
+ declare const uiScreenBriefFields: readonly [{
924
+ readonly id: "pageKind";
925
+ readonly label: "Page kind";
926
+ readonly description: "Choose the base recipe for the screen.";
927
+ readonly required: true;
928
+ readonly appliesTo: ["all"];
929
+ readonly example: "list";
930
+ }, {
931
+ readonly id: "routeUrl";
932
+ readonly label: "Route URL";
933
+ readonly description: "Final route for the screen or feature entry.";
934
+ readonly required: true;
935
+ readonly appliesTo: ["all"];
936
+ readonly example: "/admin/users";
937
+ }, {
938
+ readonly id: "sidebarItems";
939
+ readonly label: "Sidebar items";
940
+ readonly description: "Sidebar entries with at least id, title, and href so the shell stays consistent.";
941
+ readonly required: true;
942
+ readonly appliesTo: ["all"];
943
+ readonly example: "[{ id: \"users\", title: \"Users\", href: \"/admin/users\" }]";
944
+ }, {
945
+ readonly id: "activeSidebarItemId";
946
+ readonly label: "Active sidebar item id";
947
+ readonly description: "The sidebar item that should appear active on this screen.";
948
+ readonly required: true;
949
+ readonly appliesTo: ["all"];
950
+ readonly example: "users";
951
+ }, {
952
+ readonly id: "breadcrumbs";
953
+ readonly label: "Breadcrumbs";
954
+ readonly description: "Ordered breadcrumb items for the page header.";
955
+ readonly required: false;
956
+ readonly appliesTo: ["all"];
957
+ readonly example: "[{ label: \"Admin\", href: \"/admin\" }, { label: \"Users\", current: true }]";
958
+ }, {
959
+ readonly id: "pageTitle";
960
+ readonly label: "Page title";
961
+ readonly description: "Main page heading shown in the content header.";
962
+ readonly required: true;
963
+ readonly appliesTo: ["all"];
964
+ readonly example: "Users";
965
+ }, {
966
+ readonly id: "pageSubtitle";
967
+ readonly label: "Page subtitle";
968
+ readonly description: "Short supporting text under the title.";
969
+ readonly required: false;
970
+ readonly appliesTo: ["all"];
971
+ readonly example: "Manage internal user accounts and permissions.";
972
+ }, {
973
+ readonly id: "primaryAction";
974
+ readonly label: "Primary action";
975
+ readonly description: "The highest-emphasis action shown in the page header.";
976
+ readonly required: false;
977
+ readonly appliesTo: ["all"];
978
+ readonly example: "{ label: \"Create user\", href: \"/admin/users/create\" }";
979
+ }, {
980
+ readonly id: "secondaryActions";
981
+ readonly label: "Secondary actions";
982
+ readonly description: "Additional header actions such as export, refresh, or cancel.";
983
+ readonly required: false;
984
+ readonly appliesTo: ["all"];
985
+ readonly example: "[{ label: \"Export\" }, { label: \"Refresh\" }]";
986
+ }, {
987
+ readonly id: "summaryStats";
988
+ readonly label: "Summary stats";
989
+ readonly description: "Top-line numbers for dashboard or overview screens.";
990
+ readonly required: false;
991
+ readonly appliesTo: ["dashboard", "detail"];
992
+ readonly example: "[{ label: \"Active users\", value: \"1,204\", trend: \"up\", delta: \"+12%\" }]";
993
+ }, {
994
+ readonly id: "filters";
995
+ readonly label: "Filters";
996
+ readonly description: "Filter bar controls shown above list or dashboard content.";
997
+ readonly required: false;
998
+ readonly appliesTo: ["list", "dashboard"];
999
+ readonly example: "[{ type: \"search\", label: \"Search user\" }, { type: \"select\", label: \"Role\" }]";
1000
+ }, {
1001
+ readonly id: "tableColumns";
1002
+ readonly label: "Table columns";
1003
+ readonly description: "Columns for a list table, including label and render intent.";
1004
+ readonly required: false;
1005
+ readonly appliesTo: ["list", "detail", "dashboard"];
1006
+ readonly example: "[{ key: \"name\", title: \"Name\" }, { key: \"role\", title: \"Role\" }]";
1007
+ }, {
1008
+ readonly id: "rowActions";
1009
+ readonly label: "Row actions";
1010
+ readonly description: "Per-row actions for table screens.";
1011
+ readonly required: false;
1012
+ readonly appliesTo: ["list", "detail"];
1013
+ readonly example: "[{ label: \"Edit\" }, { label: \"Reset password\" }]";
1014
+ }, {
1015
+ readonly id: "formSections";
1016
+ readonly label: "Form sections";
1017
+ readonly description: "Grouped form sections and the fields inside each section.";
1018
+ readonly required: false;
1019
+ readonly appliesTo: ["form"];
1020
+ readonly example: "[{ title: \"Basic info\", fields: [\"name\", \"email\", \"role\"] }]";
1021
+ }, {
1022
+ readonly id: "fields";
1023
+ readonly label: "Fields";
1024
+ readonly description: "Detailed field list with type, label, required state, and helper text.";
1025
+ readonly required: false;
1026
+ readonly appliesTo: ["form", "detail"];
1027
+ readonly example: "[{ name: \"email\", type: \"input\", label: \"Email\", required: true }]";
1028
+ }, {
1029
+ readonly id: "detailSections";
1030
+ readonly label: "Detail sections";
1031
+ readonly description: "Cards or sections for detail pages such as profile, activity, permissions, or related records.";
1032
+ readonly required: false;
1033
+ readonly appliesTo: ["detail"];
1034
+ readonly example: "[{ title: \"Profile\" }, { title: \"Recent activity\" }]";
1035
+ }, {
1036
+ readonly id: "emptyState";
1037
+ readonly label: "Empty state";
1038
+ readonly description: "Fallback title, description, and action when there is no data.";
1039
+ readonly required: false;
1040
+ readonly appliesTo: ["list", "dashboard", "detail"];
1041
+ readonly example: "{ title: \"No users yet\", description: \"Create the first user to get started.\" }";
1042
+ }, {
1043
+ readonly id: "permissions";
1044
+ readonly label: "Permissions";
1045
+ readonly description: "Permission keys that affect sidebar visibility or action availability.";
1046
+ readonly required: false;
1047
+ readonly appliesTo: ["all"];
1048
+ readonly example: "[\"user.read\", \"user.write\"]";
1049
+ }];
1050
+ declare const uiScreenBlueprint: {
1051
+ readonly pageKinds: readonly [{
1052
+ readonly id: "list";
1053
+ readonly label: "List page";
1054
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with actions", "Optional stats", "Filter card", "DataTable card"];
1055
+ }, {
1056
+ readonly id: "form";
1057
+ readonly label: "Form page";
1058
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with primary and cancel actions", "Sectioned form cards", "Bottom action row"];
1059
+ }, {
1060
+ readonly id: "detail";
1061
+ readonly label: "Detail page";
1062
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with status/actions", "Summary stats or metadata card", "Detail cards and related tables"];
1063
+ }, {
1064
+ readonly id: "dashboard";
1065
+ readonly label: "Dashboard page";
1066
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with actions", "Stat cards row", "Filters", "Main insight cards and tables"];
1067
+ }];
1068
+ readonly workflow: readonly ["Collect the screen brief before coding. Do not invent sidebar items, route urls, filters, fields, or table columns if the brief is missing.", "Use Sidebar plus Breadcrumb and PageTitle to lock the shell before building the page body.", "Choose only canonical root exports from @lucasvu/scope-ui.", "Use Card and ui-grid utilities to create the frame first, then place controls and data components inside.", "Keep all palette, radius, surface, and shadow decisions in the shared ui-theme.css preset file.", "End with a consistency check against the selected preset and the screen brief."];
1069
+ readonly briefFields: readonly [{
1070
+ readonly id: "pageKind";
1071
+ readonly label: "Page kind";
1072
+ readonly description: "Choose the base recipe for the screen.";
1073
+ readonly required: true;
1074
+ readonly appliesTo: ["all"];
1075
+ readonly example: "list";
1076
+ }, {
1077
+ readonly id: "routeUrl";
1078
+ readonly label: "Route URL";
1079
+ readonly description: "Final route for the screen or feature entry.";
1080
+ readonly required: true;
1081
+ readonly appliesTo: ["all"];
1082
+ readonly example: "/admin/users";
1083
+ }, {
1084
+ readonly id: "sidebarItems";
1085
+ readonly label: "Sidebar items";
1086
+ readonly description: "Sidebar entries with at least id, title, and href so the shell stays consistent.";
1087
+ readonly required: true;
1088
+ readonly appliesTo: ["all"];
1089
+ readonly example: "[{ id: \"users\", title: \"Users\", href: \"/admin/users\" }]";
1090
+ }, {
1091
+ readonly id: "activeSidebarItemId";
1092
+ readonly label: "Active sidebar item id";
1093
+ readonly description: "The sidebar item that should appear active on this screen.";
1094
+ readonly required: true;
1095
+ readonly appliesTo: ["all"];
1096
+ readonly example: "users";
1097
+ }, {
1098
+ readonly id: "breadcrumbs";
1099
+ readonly label: "Breadcrumbs";
1100
+ readonly description: "Ordered breadcrumb items for the page header.";
1101
+ readonly required: false;
1102
+ readonly appliesTo: ["all"];
1103
+ readonly example: "[{ label: \"Admin\", href: \"/admin\" }, { label: \"Users\", current: true }]";
1104
+ }, {
1105
+ readonly id: "pageTitle";
1106
+ readonly label: "Page title";
1107
+ readonly description: "Main page heading shown in the content header.";
1108
+ readonly required: true;
1109
+ readonly appliesTo: ["all"];
1110
+ readonly example: "Users";
1111
+ }, {
1112
+ readonly id: "pageSubtitle";
1113
+ readonly label: "Page subtitle";
1114
+ readonly description: "Short supporting text under the title.";
1115
+ readonly required: false;
1116
+ readonly appliesTo: ["all"];
1117
+ readonly example: "Manage internal user accounts and permissions.";
1118
+ }, {
1119
+ readonly id: "primaryAction";
1120
+ readonly label: "Primary action";
1121
+ readonly description: "The highest-emphasis action shown in the page header.";
1122
+ readonly required: false;
1123
+ readonly appliesTo: ["all"];
1124
+ readonly example: "{ label: \"Create user\", href: \"/admin/users/create\" }";
1125
+ }, {
1126
+ readonly id: "secondaryActions";
1127
+ readonly label: "Secondary actions";
1128
+ readonly description: "Additional header actions such as export, refresh, or cancel.";
1129
+ readonly required: false;
1130
+ readonly appliesTo: ["all"];
1131
+ readonly example: "[{ label: \"Export\" }, { label: \"Refresh\" }]";
1132
+ }, {
1133
+ readonly id: "summaryStats";
1134
+ readonly label: "Summary stats";
1135
+ readonly description: "Top-line numbers for dashboard or overview screens.";
1136
+ readonly required: false;
1137
+ readonly appliesTo: ["dashboard", "detail"];
1138
+ readonly example: "[{ label: \"Active users\", value: \"1,204\", trend: \"up\", delta: \"+12%\" }]";
1139
+ }, {
1140
+ readonly id: "filters";
1141
+ readonly label: "Filters";
1142
+ readonly description: "Filter bar controls shown above list or dashboard content.";
1143
+ readonly required: false;
1144
+ readonly appliesTo: ["list", "dashboard"];
1145
+ readonly example: "[{ type: \"search\", label: \"Search user\" }, { type: \"select\", label: \"Role\" }]";
1146
+ }, {
1147
+ readonly id: "tableColumns";
1148
+ readonly label: "Table columns";
1149
+ readonly description: "Columns for a list table, including label and render intent.";
1150
+ readonly required: false;
1151
+ readonly appliesTo: ["list", "detail", "dashboard"];
1152
+ readonly example: "[{ key: \"name\", title: \"Name\" }, { key: \"role\", title: \"Role\" }]";
1153
+ }, {
1154
+ readonly id: "rowActions";
1155
+ readonly label: "Row actions";
1156
+ readonly description: "Per-row actions for table screens.";
1157
+ readonly required: false;
1158
+ readonly appliesTo: ["list", "detail"];
1159
+ readonly example: "[{ label: \"Edit\" }, { label: \"Reset password\" }]";
1160
+ }, {
1161
+ readonly id: "formSections";
1162
+ readonly label: "Form sections";
1163
+ readonly description: "Grouped form sections and the fields inside each section.";
1164
+ readonly required: false;
1165
+ readonly appliesTo: ["form"];
1166
+ readonly example: "[{ title: \"Basic info\", fields: [\"name\", \"email\", \"role\"] }]";
1167
+ }, {
1168
+ readonly id: "fields";
1169
+ readonly label: "Fields";
1170
+ readonly description: "Detailed field list with type, label, required state, and helper text.";
1171
+ readonly required: false;
1172
+ readonly appliesTo: ["form", "detail"];
1173
+ readonly example: "[{ name: \"email\", type: \"input\", label: \"Email\", required: true }]";
1174
+ }, {
1175
+ readonly id: "detailSections";
1176
+ readonly label: "Detail sections";
1177
+ readonly description: "Cards or sections for detail pages such as profile, activity, permissions, or related records.";
1178
+ readonly required: false;
1179
+ readonly appliesTo: ["detail"];
1180
+ readonly example: "[{ title: \"Profile\" }, { title: \"Recent activity\" }]";
1181
+ }, {
1182
+ readonly id: "emptyState";
1183
+ readonly label: "Empty state";
1184
+ readonly description: "Fallback title, description, and action when there is no data.";
1185
+ readonly required: false;
1186
+ readonly appliesTo: ["list", "dashboard", "detail"];
1187
+ readonly example: "{ title: \"No users yet\", description: \"Create the first user to get started.\" }";
1188
+ }, {
1189
+ readonly id: "permissions";
1190
+ readonly label: "Permissions";
1191
+ readonly description: "Permission keys that affect sidebar visibility or action availability.";
1192
+ readonly required: false;
1193
+ readonly appliesTo: ["all"];
1194
+ readonly example: "[\"user.read\", \"user.write\"]";
1195
+ }];
1196
+ };
1197
+
914
1198
  type UiThemeToken = {
915
1199
  name: string;
916
1200
  description: string;
@@ -1342,4 +1626,4 @@ declare const uiProjectAiRules: readonly ["Use @lucasvu/scope-ui as the default
1342
1626
  type ClassValue = string | false | null | undefined;
1343
1627
  declare function cn(...values: ClassValue[]): string;
1344
1628
 
1345
- export { Alert, type AlertProps, ArgonSidebar, AsyncCombobox, type AsyncComboboxProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, Button$1 as Button, type ButtonProps$1 as ButtonProps, Card$1 as Card, CardAction$1 as CardAction, CardContent$1 as CardContent, CardDescription$1 as CardDescription, CardFooter$1 as CardFooter, CardHeader$1 as CardHeader, CardTitle$1 as CardTitle, Combobox$1 as Combobox, type ComboboxOption$2 as ComboboxOption, FormControl as Control, DataTable$1 as DataTable, type DataTableAlign$1 as DataTableAlign, type DataTableColumn$1 as DataTableColumn, type DataTablePagination$1 as DataTablePagination, type DataTableProps$1 as DataTableProps, type DataTableRowSelection$1 as DataTableRowSelection, type DataTableSortDirection$1 as DataTableSortDirection, type DataTableSortState$1 as DataTableSortState, FormDescription as Description, FormField as Field, Form, FormControl, FormDescription, FormField, type FormFieldProps, FormItem, FormLabel, FormMessage, Input$1 as Input, type InputProps$1 as InputProps, FormItem as Item, FormLabel as Label, LineClampTooltip, type LineClampTooltipProps, Loading, type LoadingProps, index as MainFe, FormMessage as Message, MultiSelect, type MultiSelectOption, NumericInput, type NumericInputProps, type Option, OverflowTooltip, type OverflowTooltipProps, PageTitle$1 as PageTitle, Pagination, type PaginationInfo, type PaginationProps, type PermissionChecker, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionTitle$1 as SectionTitle, Select, type SelectOption, type SelectProps, Sidebar, SidebarItem, type SidebarProps, Stat, type StatProps, type TabItem, Table$1 as Table, TableBody$1 as TableBody, TableCell$1 as TableCell, TableHeader$1 as TableHeader, TableRow$1 as TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Tooltip, type Trend, TruncatedText, type TruncatedTextProps, type UiAiComponentDescriptor, type UiAiComponentProp, type UiThemePreset, type UiThemeToken, cn, defaultPermissionChecker, filterSidebarItems, hasActiveDescendant, uiAiManifest, uiDefaultThemePreset, uiProjectAiRules, uiThemeContract, uiThemePresets };
1629
+ export { Alert, type AlertProps, ArgonSidebar, AsyncCombobox, type AsyncComboboxProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, Button$1 as Button, type ButtonProps$1 as ButtonProps, Card$1 as Card, CardAction$1 as CardAction, CardContent$1 as CardContent, CardDescription$1 as CardDescription, CardFooter$1 as CardFooter, CardHeader$1 as CardHeader, CardTitle$1 as CardTitle, Combobox$1 as Combobox, type ComboboxOption$2 as ComboboxOption, FormControl as Control, DataTable$1 as DataTable, type DataTableAlign$1 as DataTableAlign, type DataTableColumn$1 as DataTableColumn, type DataTablePagination$1 as DataTablePagination, type DataTableProps$1 as DataTableProps, type DataTableRowSelection$1 as DataTableRowSelection, type DataTableSortDirection$1 as DataTableSortDirection, type DataTableSortState$1 as DataTableSortState, FormDescription as Description, FormField as Field, Form, FormControl, FormDescription, FormField, type FormFieldProps, FormItem, FormLabel, FormMessage, Input$1 as Input, type InputProps$1 as InputProps, FormItem as Item, FormLabel as Label, LineClampTooltip, type LineClampTooltipProps, Loading, type LoadingProps, index as MainFe, FormMessage as Message, MultiSelect, type MultiSelectOption, NumericInput, type NumericInputProps, type Option, OverflowTooltip, type OverflowTooltipProps, PageTitle$1 as PageTitle, Pagination, type PaginationInfo, type PaginationProps, type PermissionChecker, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionTitle$1 as SectionTitle, Select, type SelectOption, type SelectProps, Sidebar, SidebarItem, type SidebarProps, Stat, type StatProps, type TabItem, Table$1 as Table, TableBody$1 as TableBody, TableCell$1 as TableCell, TableHeader$1 as TableHeader, TableRow$1 as TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Tooltip, type Trend, TruncatedText, type TruncatedTextProps, type UiAiComponentDescriptor, type UiAiComponentProp, type UiScreenBriefField, type UiScreenKind, type UiThemePreset, type UiThemeToken, cn, defaultPermissionChecker, filterSidebarItems, hasActiveDescendant, uiAiManifest, uiDefaultThemePreset, uiProjectAiRules, uiScreenBlueprint, uiScreenBriefFields, uiThemeContract, uiThemePresets };
package/dist/index.d.ts CHANGED
@@ -875,7 +875,7 @@ type UiAiComponentDescriptor = {
875
875
  declare const uiAiManifest: {
876
876
  readonly packageName: "@lucasvu/scope-ui";
877
877
  readonly styleImport: "@lucasvu/scope-ui/styles.css";
878
- readonly rules: readonly ["Import the stylesheet once at the app entry before rendering any component.", "If the project declares an approved theme preset in AGENTS.md or ui-theme.css, stay inside that preset and do not invent a second palette.", "Prefer the canonical component for each intent instead of mixing legacy MainFe components.", "Use Input/Textarea/Select label props directly for simple fields; use Field only to wrap custom controls or grouped content.", "Use Select for small fixed option lists, SearchableSelect for larger local lists, Combobox for type-and-pick flows, and AsyncCombobox for remote search.", "Always provide a stable rowKey to DataTable and use sortMode=\"server\" when sorting happens on the backend.", "Prefer Card as the outer layout section and keep alerts, stats, and tables inside CardContent when building dashboards or forms.", "Do not import MainFe components unless the target explicitly asks for legacy main-fe styling."];
878
+ readonly rules: readonly ["Import the stylesheet once at the app entry before rendering any component.", "If the project declares an approved theme preset in AGENTS.md or ui-theme.css, stay inside that preset and do not invent a second palette.", "Collect the screen brief first: route url, sidebar items, active sidebar item, page title, actions, and the page-specific content schema.", "Prefer the canonical component for each intent instead of mixing legacy MainFe components.", "Use Input/Textarea/Select label props directly for simple fields; use Field only to wrap custom controls or grouped content.", "Use Select for small fixed option lists, SearchableSelect for larger local lists, Combobox for type-and-pick flows, and AsyncCombobox for remote search.", "Always provide a stable rowKey to DataTable and use sortMode=\"server\" when sorting happens on the backend.", "Prefer Card as the outer layout section and keep alerts, stats, and tables inside CardContent when building dashboards or forms.", "Do not import MainFe components unless the target explicitly asks for legacy main-fe styling."];
879
879
  readonly components: ({
880
880
  name: string;
881
881
  importName: string;
@@ -911,6 +911,290 @@ declare const uiAiManifest: {
911
911
  })[];
912
912
  };
913
913
 
914
+ type UiScreenKind = 'list' | 'form' | 'detail' | 'dashboard';
915
+ type UiScreenBriefField = {
916
+ id: string;
917
+ label: string;
918
+ description: string;
919
+ required: boolean;
920
+ appliesTo: UiScreenKind[] | ['all'];
921
+ example: string;
922
+ };
923
+ declare const uiScreenBriefFields: readonly [{
924
+ readonly id: "pageKind";
925
+ readonly label: "Page kind";
926
+ readonly description: "Choose the base recipe for the screen.";
927
+ readonly required: true;
928
+ readonly appliesTo: ["all"];
929
+ readonly example: "list";
930
+ }, {
931
+ readonly id: "routeUrl";
932
+ readonly label: "Route URL";
933
+ readonly description: "Final route for the screen or feature entry.";
934
+ readonly required: true;
935
+ readonly appliesTo: ["all"];
936
+ readonly example: "/admin/users";
937
+ }, {
938
+ readonly id: "sidebarItems";
939
+ readonly label: "Sidebar items";
940
+ readonly description: "Sidebar entries with at least id, title, and href so the shell stays consistent.";
941
+ readonly required: true;
942
+ readonly appliesTo: ["all"];
943
+ readonly example: "[{ id: \"users\", title: \"Users\", href: \"/admin/users\" }]";
944
+ }, {
945
+ readonly id: "activeSidebarItemId";
946
+ readonly label: "Active sidebar item id";
947
+ readonly description: "The sidebar item that should appear active on this screen.";
948
+ readonly required: true;
949
+ readonly appliesTo: ["all"];
950
+ readonly example: "users";
951
+ }, {
952
+ readonly id: "breadcrumbs";
953
+ readonly label: "Breadcrumbs";
954
+ readonly description: "Ordered breadcrumb items for the page header.";
955
+ readonly required: false;
956
+ readonly appliesTo: ["all"];
957
+ readonly example: "[{ label: \"Admin\", href: \"/admin\" }, { label: \"Users\", current: true }]";
958
+ }, {
959
+ readonly id: "pageTitle";
960
+ readonly label: "Page title";
961
+ readonly description: "Main page heading shown in the content header.";
962
+ readonly required: true;
963
+ readonly appliesTo: ["all"];
964
+ readonly example: "Users";
965
+ }, {
966
+ readonly id: "pageSubtitle";
967
+ readonly label: "Page subtitle";
968
+ readonly description: "Short supporting text under the title.";
969
+ readonly required: false;
970
+ readonly appliesTo: ["all"];
971
+ readonly example: "Manage internal user accounts and permissions.";
972
+ }, {
973
+ readonly id: "primaryAction";
974
+ readonly label: "Primary action";
975
+ readonly description: "The highest-emphasis action shown in the page header.";
976
+ readonly required: false;
977
+ readonly appliesTo: ["all"];
978
+ readonly example: "{ label: \"Create user\", href: \"/admin/users/create\" }";
979
+ }, {
980
+ readonly id: "secondaryActions";
981
+ readonly label: "Secondary actions";
982
+ readonly description: "Additional header actions such as export, refresh, or cancel.";
983
+ readonly required: false;
984
+ readonly appliesTo: ["all"];
985
+ readonly example: "[{ label: \"Export\" }, { label: \"Refresh\" }]";
986
+ }, {
987
+ readonly id: "summaryStats";
988
+ readonly label: "Summary stats";
989
+ readonly description: "Top-line numbers for dashboard or overview screens.";
990
+ readonly required: false;
991
+ readonly appliesTo: ["dashboard", "detail"];
992
+ readonly example: "[{ label: \"Active users\", value: \"1,204\", trend: \"up\", delta: \"+12%\" }]";
993
+ }, {
994
+ readonly id: "filters";
995
+ readonly label: "Filters";
996
+ readonly description: "Filter bar controls shown above list or dashboard content.";
997
+ readonly required: false;
998
+ readonly appliesTo: ["list", "dashboard"];
999
+ readonly example: "[{ type: \"search\", label: \"Search user\" }, { type: \"select\", label: \"Role\" }]";
1000
+ }, {
1001
+ readonly id: "tableColumns";
1002
+ readonly label: "Table columns";
1003
+ readonly description: "Columns for a list table, including label and render intent.";
1004
+ readonly required: false;
1005
+ readonly appliesTo: ["list", "detail", "dashboard"];
1006
+ readonly example: "[{ key: \"name\", title: \"Name\" }, { key: \"role\", title: \"Role\" }]";
1007
+ }, {
1008
+ readonly id: "rowActions";
1009
+ readonly label: "Row actions";
1010
+ readonly description: "Per-row actions for table screens.";
1011
+ readonly required: false;
1012
+ readonly appliesTo: ["list", "detail"];
1013
+ readonly example: "[{ label: \"Edit\" }, { label: \"Reset password\" }]";
1014
+ }, {
1015
+ readonly id: "formSections";
1016
+ readonly label: "Form sections";
1017
+ readonly description: "Grouped form sections and the fields inside each section.";
1018
+ readonly required: false;
1019
+ readonly appliesTo: ["form"];
1020
+ readonly example: "[{ title: \"Basic info\", fields: [\"name\", \"email\", \"role\"] }]";
1021
+ }, {
1022
+ readonly id: "fields";
1023
+ readonly label: "Fields";
1024
+ readonly description: "Detailed field list with type, label, required state, and helper text.";
1025
+ readonly required: false;
1026
+ readonly appliesTo: ["form", "detail"];
1027
+ readonly example: "[{ name: \"email\", type: \"input\", label: \"Email\", required: true }]";
1028
+ }, {
1029
+ readonly id: "detailSections";
1030
+ readonly label: "Detail sections";
1031
+ readonly description: "Cards or sections for detail pages such as profile, activity, permissions, or related records.";
1032
+ readonly required: false;
1033
+ readonly appliesTo: ["detail"];
1034
+ readonly example: "[{ title: \"Profile\" }, { title: \"Recent activity\" }]";
1035
+ }, {
1036
+ readonly id: "emptyState";
1037
+ readonly label: "Empty state";
1038
+ readonly description: "Fallback title, description, and action when there is no data.";
1039
+ readonly required: false;
1040
+ readonly appliesTo: ["list", "dashboard", "detail"];
1041
+ readonly example: "{ title: \"No users yet\", description: \"Create the first user to get started.\" }";
1042
+ }, {
1043
+ readonly id: "permissions";
1044
+ readonly label: "Permissions";
1045
+ readonly description: "Permission keys that affect sidebar visibility or action availability.";
1046
+ readonly required: false;
1047
+ readonly appliesTo: ["all"];
1048
+ readonly example: "[\"user.read\", \"user.write\"]";
1049
+ }];
1050
+ declare const uiScreenBlueprint: {
1051
+ readonly pageKinds: readonly [{
1052
+ readonly id: "list";
1053
+ readonly label: "List page";
1054
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with actions", "Optional stats", "Filter card", "DataTable card"];
1055
+ }, {
1056
+ readonly id: "form";
1057
+ readonly label: "Form page";
1058
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with primary and cancel actions", "Sectioned form cards", "Bottom action row"];
1059
+ }, {
1060
+ readonly id: "detail";
1061
+ readonly label: "Detail page";
1062
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with status/actions", "Summary stats or metadata card", "Detail cards and related tables"];
1063
+ }, {
1064
+ readonly id: "dashboard";
1065
+ readonly label: "Dashboard page";
1066
+ readonly frame: readonly ["Sidebar shell", "Breadcrumb", "PageTitle with actions", "Stat cards row", "Filters", "Main insight cards and tables"];
1067
+ }];
1068
+ readonly workflow: readonly ["Collect the screen brief before coding. Do not invent sidebar items, route urls, filters, fields, or table columns if the brief is missing.", "Use Sidebar plus Breadcrumb and PageTitle to lock the shell before building the page body.", "Choose only canonical root exports from @lucasvu/scope-ui.", "Use Card and ui-grid utilities to create the frame first, then place controls and data components inside.", "Keep all palette, radius, surface, and shadow decisions in the shared ui-theme.css preset file.", "End with a consistency check against the selected preset and the screen brief."];
1069
+ readonly briefFields: readonly [{
1070
+ readonly id: "pageKind";
1071
+ readonly label: "Page kind";
1072
+ readonly description: "Choose the base recipe for the screen.";
1073
+ readonly required: true;
1074
+ readonly appliesTo: ["all"];
1075
+ readonly example: "list";
1076
+ }, {
1077
+ readonly id: "routeUrl";
1078
+ readonly label: "Route URL";
1079
+ readonly description: "Final route for the screen or feature entry.";
1080
+ readonly required: true;
1081
+ readonly appliesTo: ["all"];
1082
+ readonly example: "/admin/users";
1083
+ }, {
1084
+ readonly id: "sidebarItems";
1085
+ readonly label: "Sidebar items";
1086
+ readonly description: "Sidebar entries with at least id, title, and href so the shell stays consistent.";
1087
+ readonly required: true;
1088
+ readonly appliesTo: ["all"];
1089
+ readonly example: "[{ id: \"users\", title: \"Users\", href: \"/admin/users\" }]";
1090
+ }, {
1091
+ readonly id: "activeSidebarItemId";
1092
+ readonly label: "Active sidebar item id";
1093
+ readonly description: "The sidebar item that should appear active on this screen.";
1094
+ readonly required: true;
1095
+ readonly appliesTo: ["all"];
1096
+ readonly example: "users";
1097
+ }, {
1098
+ readonly id: "breadcrumbs";
1099
+ readonly label: "Breadcrumbs";
1100
+ readonly description: "Ordered breadcrumb items for the page header.";
1101
+ readonly required: false;
1102
+ readonly appliesTo: ["all"];
1103
+ readonly example: "[{ label: \"Admin\", href: \"/admin\" }, { label: \"Users\", current: true }]";
1104
+ }, {
1105
+ readonly id: "pageTitle";
1106
+ readonly label: "Page title";
1107
+ readonly description: "Main page heading shown in the content header.";
1108
+ readonly required: true;
1109
+ readonly appliesTo: ["all"];
1110
+ readonly example: "Users";
1111
+ }, {
1112
+ readonly id: "pageSubtitle";
1113
+ readonly label: "Page subtitle";
1114
+ readonly description: "Short supporting text under the title.";
1115
+ readonly required: false;
1116
+ readonly appliesTo: ["all"];
1117
+ readonly example: "Manage internal user accounts and permissions.";
1118
+ }, {
1119
+ readonly id: "primaryAction";
1120
+ readonly label: "Primary action";
1121
+ readonly description: "The highest-emphasis action shown in the page header.";
1122
+ readonly required: false;
1123
+ readonly appliesTo: ["all"];
1124
+ readonly example: "{ label: \"Create user\", href: \"/admin/users/create\" }";
1125
+ }, {
1126
+ readonly id: "secondaryActions";
1127
+ readonly label: "Secondary actions";
1128
+ readonly description: "Additional header actions such as export, refresh, or cancel.";
1129
+ readonly required: false;
1130
+ readonly appliesTo: ["all"];
1131
+ readonly example: "[{ label: \"Export\" }, { label: \"Refresh\" }]";
1132
+ }, {
1133
+ readonly id: "summaryStats";
1134
+ readonly label: "Summary stats";
1135
+ readonly description: "Top-line numbers for dashboard or overview screens.";
1136
+ readonly required: false;
1137
+ readonly appliesTo: ["dashboard", "detail"];
1138
+ readonly example: "[{ label: \"Active users\", value: \"1,204\", trend: \"up\", delta: \"+12%\" }]";
1139
+ }, {
1140
+ readonly id: "filters";
1141
+ readonly label: "Filters";
1142
+ readonly description: "Filter bar controls shown above list or dashboard content.";
1143
+ readonly required: false;
1144
+ readonly appliesTo: ["list", "dashboard"];
1145
+ readonly example: "[{ type: \"search\", label: \"Search user\" }, { type: \"select\", label: \"Role\" }]";
1146
+ }, {
1147
+ readonly id: "tableColumns";
1148
+ readonly label: "Table columns";
1149
+ readonly description: "Columns for a list table, including label and render intent.";
1150
+ readonly required: false;
1151
+ readonly appliesTo: ["list", "detail", "dashboard"];
1152
+ readonly example: "[{ key: \"name\", title: \"Name\" }, { key: \"role\", title: \"Role\" }]";
1153
+ }, {
1154
+ readonly id: "rowActions";
1155
+ readonly label: "Row actions";
1156
+ readonly description: "Per-row actions for table screens.";
1157
+ readonly required: false;
1158
+ readonly appliesTo: ["list", "detail"];
1159
+ readonly example: "[{ label: \"Edit\" }, { label: \"Reset password\" }]";
1160
+ }, {
1161
+ readonly id: "formSections";
1162
+ readonly label: "Form sections";
1163
+ readonly description: "Grouped form sections and the fields inside each section.";
1164
+ readonly required: false;
1165
+ readonly appliesTo: ["form"];
1166
+ readonly example: "[{ title: \"Basic info\", fields: [\"name\", \"email\", \"role\"] }]";
1167
+ }, {
1168
+ readonly id: "fields";
1169
+ readonly label: "Fields";
1170
+ readonly description: "Detailed field list with type, label, required state, and helper text.";
1171
+ readonly required: false;
1172
+ readonly appliesTo: ["form", "detail"];
1173
+ readonly example: "[{ name: \"email\", type: \"input\", label: \"Email\", required: true }]";
1174
+ }, {
1175
+ readonly id: "detailSections";
1176
+ readonly label: "Detail sections";
1177
+ readonly description: "Cards or sections for detail pages such as profile, activity, permissions, or related records.";
1178
+ readonly required: false;
1179
+ readonly appliesTo: ["detail"];
1180
+ readonly example: "[{ title: \"Profile\" }, { title: \"Recent activity\" }]";
1181
+ }, {
1182
+ readonly id: "emptyState";
1183
+ readonly label: "Empty state";
1184
+ readonly description: "Fallback title, description, and action when there is no data.";
1185
+ readonly required: false;
1186
+ readonly appliesTo: ["list", "dashboard", "detail"];
1187
+ readonly example: "{ title: \"No users yet\", description: \"Create the first user to get started.\" }";
1188
+ }, {
1189
+ readonly id: "permissions";
1190
+ readonly label: "Permissions";
1191
+ readonly description: "Permission keys that affect sidebar visibility or action availability.";
1192
+ readonly required: false;
1193
+ readonly appliesTo: ["all"];
1194
+ readonly example: "[\"user.read\", \"user.write\"]";
1195
+ }];
1196
+ };
1197
+
914
1198
  type UiThemeToken = {
915
1199
  name: string;
916
1200
  description: string;
@@ -1342,4 +1626,4 @@ declare const uiProjectAiRules: readonly ["Use @lucasvu/scope-ui as the default
1342
1626
  type ClassValue = string | false | null | undefined;
1343
1627
  declare function cn(...values: ClassValue[]): string;
1344
1628
 
1345
- export { Alert, type AlertProps, ArgonSidebar, AsyncCombobox, type AsyncComboboxProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, Button$1 as Button, type ButtonProps$1 as ButtonProps, Card$1 as Card, CardAction$1 as CardAction, CardContent$1 as CardContent, CardDescription$1 as CardDescription, CardFooter$1 as CardFooter, CardHeader$1 as CardHeader, CardTitle$1 as CardTitle, Combobox$1 as Combobox, type ComboboxOption$2 as ComboboxOption, FormControl as Control, DataTable$1 as DataTable, type DataTableAlign$1 as DataTableAlign, type DataTableColumn$1 as DataTableColumn, type DataTablePagination$1 as DataTablePagination, type DataTableProps$1 as DataTableProps, type DataTableRowSelection$1 as DataTableRowSelection, type DataTableSortDirection$1 as DataTableSortDirection, type DataTableSortState$1 as DataTableSortState, FormDescription as Description, FormField as Field, Form, FormControl, FormDescription, FormField, type FormFieldProps, FormItem, FormLabel, FormMessage, Input$1 as Input, type InputProps$1 as InputProps, FormItem as Item, FormLabel as Label, LineClampTooltip, type LineClampTooltipProps, Loading, type LoadingProps, index as MainFe, FormMessage as Message, MultiSelect, type MultiSelectOption, NumericInput, type NumericInputProps, type Option, OverflowTooltip, type OverflowTooltipProps, PageTitle$1 as PageTitle, Pagination, type PaginationInfo, type PaginationProps, type PermissionChecker, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionTitle$1 as SectionTitle, Select, type SelectOption, type SelectProps, Sidebar, SidebarItem, type SidebarProps, Stat, type StatProps, type TabItem, Table$1 as Table, TableBody$1 as TableBody, TableCell$1 as TableCell, TableHeader$1 as TableHeader, TableRow$1 as TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Tooltip, type Trend, TruncatedText, type TruncatedTextProps, type UiAiComponentDescriptor, type UiAiComponentProp, type UiThemePreset, type UiThemeToken, cn, defaultPermissionChecker, filterSidebarItems, hasActiveDescendant, uiAiManifest, uiDefaultThemePreset, uiProjectAiRules, uiThemeContract, uiThemePresets };
1629
+ export { Alert, type AlertProps, ArgonSidebar, AsyncCombobox, type AsyncComboboxProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, Button$1 as Button, type ButtonProps$1 as ButtonProps, Card$1 as Card, CardAction$1 as CardAction, CardContent$1 as CardContent, CardDescription$1 as CardDescription, CardFooter$1 as CardFooter, CardHeader$1 as CardHeader, CardTitle$1 as CardTitle, Combobox$1 as Combobox, type ComboboxOption$2 as ComboboxOption, FormControl as Control, DataTable$1 as DataTable, type DataTableAlign$1 as DataTableAlign, type DataTableColumn$1 as DataTableColumn, type DataTablePagination$1 as DataTablePagination, type DataTableProps$1 as DataTableProps, type DataTableRowSelection$1 as DataTableRowSelection, type DataTableSortDirection$1 as DataTableSortDirection, type DataTableSortState$1 as DataTableSortState, FormDescription as Description, FormField as Field, Form, FormControl, FormDescription, FormField, type FormFieldProps, FormItem, FormLabel, FormMessage, Input$1 as Input, type InputProps$1 as InputProps, FormItem as Item, FormLabel as Label, LineClampTooltip, type LineClampTooltipProps, Loading, type LoadingProps, index as MainFe, FormMessage as Message, MultiSelect, type MultiSelectOption, NumericInput, type NumericInputProps, type Option, OverflowTooltip, type OverflowTooltipProps, PageTitle$1 as PageTitle, Pagination, type PaginationInfo, type PaginationProps, type PermissionChecker, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionTitle$1 as SectionTitle, Select, type SelectOption, type SelectProps, Sidebar, SidebarItem, type SidebarProps, Stat, type StatProps, type TabItem, Table$1 as Table, TableBody$1 as TableBody, TableCell$1 as TableCell, TableHeader$1 as TableHeader, TableRow$1 as TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Tooltip, type Trend, TruncatedText, type TruncatedTextProps, type UiAiComponentDescriptor, type UiAiComponentProp, type UiScreenBriefField, type UiScreenKind, type UiThemePreset, type UiThemeToken, cn, defaultPermissionChecker, filterSidebarItems, hasActiveDescendant, uiAiManifest, uiDefaultThemePreset, uiProjectAiRules, uiScreenBlueprint, uiScreenBriefFields, uiThemeContract, uiThemePresets };