@lucasvu/scope-ui 0.0.4 → 0.0.6

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.cjs CHANGED
@@ -6646,6 +6646,8 @@ var uiAiManifest = {
6646
6646
  styleImport: "@lucasvu/scope-ui/styles.css",
6647
6647
  rules: [
6648
6648
  "Import the stylesheet once at the app entry before rendering any component.",
6649
+ "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.",
6650
+ "Collect the screen brief first: route url, sidebar items, active sidebar item, page title, actions, and the page-specific content schema.",
6649
6651
  "Prefer the canonical component for each intent instead of mixing legacy MainFe components.",
6650
6652
  "Use Input/Textarea/Select label props directly for simple fields; use Field only to wrap custom controls or grouped content.",
6651
6653
  "Use Select for small fixed option lists, SearchableSelect for larger local lists, Combobox for type-and-pick flows, and AsyncCombobox for remote search.",
@@ -6861,7 +6863,420 @@ var uiAiManifest = {
6861
6863
  ]
6862
6864
  };
6863
6865
 
6866
+ // src/screen-blueprint.ts
6867
+ var uiScreenBriefFields = [
6868
+ {
6869
+ id: "pageKind",
6870
+ label: "Page kind",
6871
+ description: "Choose the base recipe for the screen.",
6872
+ required: true,
6873
+ appliesTo: ["all"],
6874
+ example: "list"
6875
+ },
6876
+ {
6877
+ id: "routeUrl",
6878
+ label: "Route URL",
6879
+ description: "Final route for the screen or feature entry.",
6880
+ required: true,
6881
+ appliesTo: ["all"],
6882
+ example: "/admin/users"
6883
+ },
6884
+ {
6885
+ id: "sidebarItems",
6886
+ label: "Sidebar items",
6887
+ description: "Sidebar entries with at least id, title, and href so the shell stays consistent.",
6888
+ required: true,
6889
+ appliesTo: ["all"],
6890
+ example: '[{ id: "users", title: "Users", href: "/admin/users" }]'
6891
+ },
6892
+ {
6893
+ id: "activeSidebarItemId",
6894
+ label: "Active sidebar item id",
6895
+ description: "The sidebar item that should appear active on this screen.",
6896
+ required: true,
6897
+ appliesTo: ["all"],
6898
+ example: "users"
6899
+ },
6900
+ {
6901
+ id: "breadcrumbs",
6902
+ label: "Breadcrumbs",
6903
+ description: "Ordered breadcrumb items for the page header.",
6904
+ required: false,
6905
+ appliesTo: ["all"],
6906
+ example: '[{ label: "Admin", href: "/admin" }, { label: "Users", current: true }]'
6907
+ },
6908
+ {
6909
+ id: "pageTitle",
6910
+ label: "Page title",
6911
+ description: "Main page heading shown in the content header.",
6912
+ required: true,
6913
+ appliesTo: ["all"],
6914
+ example: "Users"
6915
+ },
6916
+ {
6917
+ id: "pageSubtitle",
6918
+ label: "Page subtitle",
6919
+ description: "Short supporting text under the title.",
6920
+ required: false,
6921
+ appliesTo: ["all"],
6922
+ example: "Manage internal user accounts and permissions."
6923
+ },
6924
+ {
6925
+ id: "primaryAction",
6926
+ label: "Primary action",
6927
+ description: "The highest-emphasis action shown in the page header.",
6928
+ required: false,
6929
+ appliesTo: ["all"],
6930
+ example: '{ label: "Create user", href: "/admin/users/create" }'
6931
+ },
6932
+ {
6933
+ id: "secondaryActions",
6934
+ label: "Secondary actions",
6935
+ description: "Additional header actions such as export, refresh, or cancel.",
6936
+ required: false,
6937
+ appliesTo: ["all"],
6938
+ example: '[{ label: "Export" }, { label: "Refresh" }]'
6939
+ },
6940
+ {
6941
+ id: "summaryStats",
6942
+ label: "Summary stats",
6943
+ description: "Top-line numbers for dashboard or overview screens.",
6944
+ required: false,
6945
+ appliesTo: ["dashboard", "detail"],
6946
+ example: '[{ label: "Active users", value: "1,204", trend: "up", delta: "+12%" }]'
6947
+ },
6948
+ {
6949
+ id: "filters",
6950
+ label: "Filters",
6951
+ description: "Filter bar controls shown above list or dashboard content.",
6952
+ required: false,
6953
+ appliesTo: ["list", "dashboard"],
6954
+ example: '[{ type: "search", label: "Search user" }, { type: "select", label: "Role" }]'
6955
+ },
6956
+ {
6957
+ id: "tableColumns",
6958
+ label: "Table columns",
6959
+ description: "Columns for a list table, including label and render intent.",
6960
+ required: false,
6961
+ appliesTo: ["list", "detail", "dashboard"],
6962
+ example: '[{ key: "name", title: "Name" }, { key: "role", title: "Role" }]'
6963
+ },
6964
+ {
6965
+ id: "rowActions",
6966
+ label: "Row actions",
6967
+ description: "Per-row actions for table screens.",
6968
+ required: false,
6969
+ appliesTo: ["list", "detail"],
6970
+ example: '[{ label: "Edit" }, { label: "Reset password" }]'
6971
+ },
6972
+ {
6973
+ id: "formSections",
6974
+ label: "Form sections",
6975
+ description: "Grouped form sections and the fields inside each section.",
6976
+ required: false,
6977
+ appliesTo: ["form"],
6978
+ example: '[{ title: "Basic info", fields: ["name", "email", "role"] }]'
6979
+ },
6980
+ {
6981
+ id: "fields",
6982
+ label: "Fields",
6983
+ description: "Detailed field list with type, label, required state, and helper text.",
6984
+ required: false,
6985
+ appliesTo: ["form", "detail"],
6986
+ example: '[{ name: "email", type: "input", label: "Email", required: true }]'
6987
+ },
6988
+ {
6989
+ id: "detailSections",
6990
+ label: "Detail sections",
6991
+ description: "Cards or sections for detail pages such as profile, activity, permissions, or related records.",
6992
+ required: false,
6993
+ appliesTo: ["detail"],
6994
+ example: '[{ title: "Profile" }, { title: "Recent activity" }]'
6995
+ },
6996
+ {
6997
+ id: "emptyState",
6998
+ label: "Empty state",
6999
+ description: "Fallback title, description, and action when there is no data.",
7000
+ required: false,
7001
+ appliesTo: ["list", "dashboard", "detail"],
7002
+ example: '{ title: "No users yet", description: "Create the first user to get started." }'
7003
+ },
7004
+ {
7005
+ id: "permissions",
7006
+ label: "Permissions",
7007
+ description: "Permission keys that affect sidebar visibility or action availability.",
7008
+ required: false,
7009
+ appliesTo: ["all"],
7010
+ example: '["user.read", "user.write"]'
7011
+ }
7012
+ ];
7013
+ var uiScreenBlueprint = {
7014
+ pageKinds: [
7015
+ {
7016
+ id: "list",
7017
+ label: "List page",
7018
+ frame: [
7019
+ "Sidebar shell",
7020
+ "Breadcrumb",
7021
+ "PageTitle with actions",
7022
+ "Optional stats",
7023
+ "Filter card",
7024
+ "DataTable card"
7025
+ ]
7026
+ },
7027
+ {
7028
+ id: "form",
7029
+ label: "Form page",
7030
+ frame: [
7031
+ "Sidebar shell",
7032
+ "Breadcrumb",
7033
+ "PageTitle with primary and cancel actions",
7034
+ "Sectioned form cards",
7035
+ "Bottom action row"
7036
+ ]
7037
+ },
7038
+ {
7039
+ id: "detail",
7040
+ label: "Detail page",
7041
+ frame: [
7042
+ "Sidebar shell",
7043
+ "Breadcrumb",
7044
+ "PageTitle with status/actions",
7045
+ "Summary stats or metadata card",
7046
+ "Detail cards and related tables"
7047
+ ]
7048
+ },
7049
+ {
7050
+ id: "dashboard",
7051
+ label: "Dashboard page",
7052
+ frame: [
7053
+ "Sidebar shell",
7054
+ "Breadcrumb",
7055
+ "PageTitle with actions",
7056
+ "Stat cards row",
7057
+ "Filters",
7058
+ "Main insight cards and tables"
7059
+ ]
7060
+ }
7061
+ ],
7062
+ workflow: [
7063
+ "Collect the screen brief before coding. Do not invent sidebar items, route urls, filters, fields, or table columns if the brief is missing.",
7064
+ "Use Sidebar plus Breadcrumb and PageTitle to lock the shell before building the page body.",
7065
+ "Choose only canonical root exports from @lucasvu/scope-ui.",
7066
+ "Use Card and ui-grid utilities to create the frame first, then place controls and data components inside.",
7067
+ "Keep all palette, radius, surface, and shadow decisions in the shared ui-theme.css preset file.",
7068
+ "End with a consistency check against the selected preset and the screen brief."
7069
+ ],
7070
+ briefFields: uiScreenBriefFields
7071
+ };
7072
+
6864
7073
  // src/theme-contract.ts
7074
+ var uiThemePresets = [
7075
+ {
7076
+ id: "ocean",
7077
+ label: "Ocean Glass",
7078
+ description: "Blue-cyan preset with clean glass surfaces. Matches the current default visual language.",
7079
+ recommendedFor: [
7080
+ "Admin dashboards",
7081
+ "SaaS CRUD screens",
7082
+ "Projects that want the existing package look"
7083
+ ],
7084
+ tokens: {
7085
+ light: {
7086
+ "--tw-background": "0 0% 100%",
7087
+ "--tw-foreground": "222.2 47.4% 11.2%",
7088
+ "--tw-primary": "221.2 83.2% 53.3%",
7089
+ "--tw-accent": "199 89% 48%",
7090
+ "--tw-success": "142.1 76.2% 36.3%",
7091
+ "--tw-destructive": "0 84.2% 60.2%",
7092
+ "--tw-border": "214.3 31.8% 91.4%",
7093
+ "--radius": "0.75rem",
7094
+ "--surface": "rgba(255, 255, 255, 0.92)",
7095
+ "--surface-strong": "rgba(241, 245, 249, 0.96)",
7096
+ "--grey": "rgba(248, 250, 252, 0.96)",
7097
+ "--grey-strong": "rgba(241, 245, 249, 0.98)",
7098
+ "--shadow-sm": "0 10px 28px -18px rgba(15, 23, 42, 0.22)",
7099
+ "--shadow": "0 24px 60px -28px rgba(15, 23, 42, 0.3)",
7100
+ "--primary-grad-from": "199 89% 48%",
7101
+ "--primary-grad-to": "221.2 83.2% 53.3%"
7102
+ },
7103
+ dark: {
7104
+ "--tw-background": "222.2 84% 4.9%",
7105
+ "--tw-foreground": "210 40% 98%",
7106
+ "--tw-primary": "217.2 91.2% 59.8%",
7107
+ "--tw-accent": "199 89% 48%",
7108
+ "--tw-success": "142.1 70.6% 45.3%",
7109
+ "--tw-destructive": "0 62.8% 30.6%",
7110
+ "--tw-border": "217.2 32.6% 17.5%",
7111
+ "--radius": "0.75rem",
7112
+ "--surface": "rgba(15, 23, 42, 0.78)",
7113
+ "--surface-strong": "rgba(30, 41, 59, 0.92)",
7114
+ "--grey": "rgba(30, 41, 59, 0.88)",
7115
+ "--grey-strong": "rgba(51, 65, 85, 0.92)",
7116
+ "--shadow-sm": "0 16px 32px -18px rgba(2, 6, 23, 0.48)",
7117
+ "--shadow": "0 28px 80px -32px rgba(2, 6, 23, 0.7)",
7118
+ "--primary-grad-from": "198.6 88.7% 48.4%",
7119
+ "--primary-grad-to": "221.2 83.2% 53.3%"
7120
+ }
7121
+ }
7122
+ },
7123
+ {
7124
+ id: "sunset",
7125
+ label: "Sunset Ember",
7126
+ description: "Warm orange-coral preset with softer cream surfaces for branded landing or growth products.",
7127
+ recommendedFor: [
7128
+ "Growth products",
7129
+ "Commerce backoffices",
7130
+ "Projects that want a warmer visual tone"
7131
+ ],
7132
+ tokens: {
7133
+ light: {
7134
+ "--tw-background": "30 100% 98%",
7135
+ "--tw-foreground": "20 24% 14%",
7136
+ "--tw-primary": "14 90% 56%",
7137
+ "--tw-accent": "29 100% 58%",
7138
+ "--tw-success": "145 63% 38%",
7139
+ "--tw-destructive": "0 78% 58%",
7140
+ "--tw-border": "24 45% 89%",
7141
+ "--radius": "0.85rem",
7142
+ "--surface": "rgba(255, 247, 240, 0.92)",
7143
+ "--surface-strong": "rgba(255, 237, 223, 0.96)",
7144
+ "--grey": "rgba(255, 243, 231, 0.96)",
7145
+ "--grey-strong": "rgba(255, 232, 214, 0.98)",
7146
+ "--shadow-sm": "0 12px 30px -18px rgba(194, 65, 12, 0.18)",
7147
+ "--shadow": "0 28px 64px -30px rgba(154, 52, 18, 0.24)",
7148
+ "--primary-grad-from": "29 100% 58%",
7149
+ "--primary-grad-to": "14 90% 56%"
7150
+ },
7151
+ dark: {
7152
+ "--tw-background": "20 24% 8%",
7153
+ "--tw-foreground": "40 33% 96%",
7154
+ "--tw-primary": "18 100% 62%",
7155
+ "--tw-accent": "35 100% 58%",
7156
+ "--tw-success": "145 60% 47%",
7157
+ "--tw-destructive": "0 73% 52%",
7158
+ "--tw-border": "18 24% 22%",
7159
+ "--radius": "0.85rem",
7160
+ "--surface": "rgba(41, 24, 18, 0.84)",
7161
+ "--surface-strong": "rgba(59, 34, 24, 0.9)",
7162
+ "--grey": "rgba(70, 42, 29, 0.88)",
7163
+ "--grey-strong": "rgba(92, 54, 38, 0.9)",
7164
+ "--shadow-sm": "0 18px 36px -20px rgba(67, 20, 7, 0.48)",
7165
+ "--shadow": "0 30px 84px -34px rgba(67, 20, 7, 0.62)",
7166
+ "--primary-grad-from": "35 100% 58%",
7167
+ "--primary-grad-to": "18 100% 62%"
7168
+ }
7169
+ }
7170
+ },
7171
+ {
7172
+ id: "forest",
7173
+ label: "Forest Mist",
7174
+ description: "Emerald-teal preset with soft botanical surfaces for calmer productivity products.",
7175
+ recommendedFor: [
7176
+ "Operations tools",
7177
+ "Internal platforms",
7178
+ "Products that want a calmer green tone"
7179
+ ],
7180
+ tokens: {
7181
+ light: {
7182
+ "--tw-background": "138 40% 98%",
7183
+ "--tw-foreground": "160 25% 14%",
7184
+ "--tw-primary": "158 64% 40%",
7185
+ "--tw-accent": "173 58% 44%",
7186
+ "--tw-success": "145 63% 36%",
7187
+ "--tw-destructive": "0 78% 58%",
7188
+ "--tw-border": "143 21% 88%",
7189
+ "--radius": "0.8rem",
7190
+ "--surface": "rgba(245, 252, 249, 0.92)",
7191
+ "--surface-strong": "rgba(232, 245, 239, 0.96)",
7192
+ "--grey": "rgba(240, 248, 244, 0.96)",
7193
+ "--grey-strong": "rgba(225, 240, 232, 0.98)",
7194
+ "--shadow-sm": "0 12px 28px -18px rgba(5, 86, 66, 0.18)",
7195
+ "--shadow": "0 26px 62px -30px rgba(6, 78, 59, 0.24)",
7196
+ "--primary-grad-from": "173 58% 44%",
7197
+ "--primary-grad-to": "158 64% 40%"
7198
+ },
7199
+ dark: {
7200
+ "--tw-background": "164 35% 8%",
7201
+ "--tw-foreground": "144 35% 96%",
7202
+ "--tw-primary": "160 70% 46%",
7203
+ "--tw-accent": "174 72% 45%",
7204
+ "--tw-success": "145 68% 46%",
7205
+ "--tw-destructive": "0 70% 52%",
7206
+ "--tw-border": "160 20% 20%",
7207
+ "--radius": "0.8rem",
7208
+ "--surface": "rgba(16, 36, 31, 0.84)",
7209
+ "--surface-strong": "rgba(21, 51, 44, 0.9)",
7210
+ "--grey": "rgba(24, 61, 52, 0.88)",
7211
+ "--grey-strong": "rgba(31, 77, 65, 0.9)",
7212
+ "--shadow-sm": "0 18px 34px -20px rgba(1, 44, 34, 0.48)",
7213
+ "--shadow": "0 30px 82px -34px rgba(1, 44, 34, 0.6)",
7214
+ "--primary-grad-from": "174 72% 45%",
7215
+ "--primary-grad-to": "160 70% 46%"
7216
+ }
7217
+ }
7218
+ },
7219
+ {
7220
+ id: "graphite",
7221
+ label: "Graphite Pulse",
7222
+ description: "Neutral slate preset with restrained blue accents for products that need a steadier enterprise tone.",
7223
+ recommendedFor: [
7224
+ "Enterprise admin panels",
7225
+ "B2B internal tools",
7226
+ "Projects that want a more neutral interface"
7227
+ ],
7228
+ tokens: {
7229
+ light: {
7230
+ "--tw-background": "220 18% 97%",
7231
+ "--tw-foreground": "222 24% 14%",
7232
+ "--tw-primary": "221 24% 32%",
7233
+ "--tw-accent": "198 83% 44%",
7234
+ "--tw-success": "160 56% 38%",
7235
+ "--tw-destructive": "0 72% 54%",
7236
+ "--tw-border": "218 17% 86%",
7237
+ "--radius": "0.7rem",
7238
+ "--surface": "rgba(248, 250, 252, 0.94)",
7239
+ "--surface-strong": "rgba(226, 232, 240, 0.96)",
7240
+ "--grey": "rgba(241, 245, 249, 0.98)",
7241
+ "--grey-strong": "rgba(226, 232, 240, 0.99)",
7242
+ "--shadow-sm": "0 12px 30px -20px rgba(15, 23, 42, 0.18)",
7243
+ "--shadow": "0 28px 66px -30px rgba(15, 23, 42, 0.24)",
7244
+ "--primary-grad-from": "198 83% 44%",
7245
+ "--primary-grad-to": "221 24% 32%"
7246
+ },
7247
+ dark: {
7248
+ "--tw-background": "222 32% 8%",
7249
+ "--tw-foreground": "210 25% 96%",
7250
+ "--tw-primary": "210 24% 82%",
7251
+ "--tw-accent": "192 92% 52%",
7252
+ "--tw-success": "158 64% 45%",
7253
+ "--tw-destructive": "0 72% 56%",
7254
+ "--tw-border": "217 19% 24%",
7255
+ "--radius": "0.7rem",
7256
+ "--surface": "rgba(15, 23, 42, 0.82)",
7257
+ "--surface-strong": "rgba(30, 41, 59, 0.92)",
7258
+ "--grey": "rgba(30, 41, 59, 0.9)",
7259
+ "--grey-strong": "rgba(51, 65, 85, 0.92)",
7260
+ "--shadow-sm": "0 18px 38px -22px rgba(2, 6, 23, 0.48)",
7261
+ "--shadow": "0 32px 88px -34px rgba(2, 6, 23, 0.68)",
7262
+ "--primary-grad-from": "192 92% 52%",
7263
+ "--primary-grad-to": "210 24% 82%"
7264
+ }
7265
+ }
7266
+ }
7267
+ ];
7268
+ var uiDefaultThemePreset = uiThemePresets[0];
7269
+ function createThemePresetCssExample(themePreset) {
7270
+ const renderBlock = (tokens) => Object.entries(tokens).map(([token, value]) => ` ${token}: ${value};`).join("\n");
7271
+ return `:root {
7272
+ ${renderBlock(themePreset.tokens.light)}
7273
+ }
7274
+
7275
+ .dark,
7276
+ [data-ui-theme='dark'] {
7277
+ ${renderBlock(themePreset.tokens.dark)}
7278
+ }`;
7279
+ }
6865
7280
  var uiThemeContract = {
6866
7281
  packageName: "@lucasvu/scope-ui",
6867
7282
  importOrder: [
@@ -6873,8 +7288,11 @@ var uiThemeContract = {
6873
7288
  dark: [".dark", "[data-ui-theme='dark']"]
6874
7289
  },
6875
7290
  overrideFile: "src/styles/ui-theme.css",
7291
+ defaultPreset: uiDefaultThemePreset.id,
7292
+ presets: uiThemePresets,
6876
7293
  rules: [
6877
7294
  "Import the package stylesheet before your project theme override stylesheet.",
7295
+ "Choose one approved preset and keep the entire project on that preset instead of mixing palettes page by page.",
6878
7296
  "Override tokens in one shared theme file instead of scattering colors across components.",
6879
7297
  "Use :root for the default light theme and .dark or [data-ui-theme='dark'] for dark theme.",
6880
7298
  "Only override tokens declared here. Do not patch component internals unless you are extending the library.",
@@ -6886,7 +7304,7 @@ var uiThemeContract = {
6886
7304
  description: "Base app background in HSL triplet format.",
6887
7305
  defaultLight: "0 0% 100%",
6888
7306
  defaultDark: "222.2 84% 4.9%",
6889
- usedBy: ["Input", "Select", "Card", "Tabs", "global surface"]
7307
+ usedBy: ["body background", "Input fallback", "page background"]
6890
7308
  },
6891
7309
  {
6892
7310
  name: "--tw-foreground",
@@ -6930,6 +7348,13 @@ var uiThemeContract = {
6930
7348
  defaultDark: "217.2 32.6% 17.5%",
6931
7349
  usedBy: ["Input", "Select", "Card", "DataTable"]
6932
7350
  },
7351
+ {
7352
+ name: "--radius",
7353
+ description: "Shared component radius.",
7354
+ defaultLight: "0.75rem",
7355
+ defaultDark: "0.75rem",
7356
+ usedBy: ["Button", "Input", "Card", "Tabs"]
7357
+ },
6933
7358
  {
6934
7359
  name: "--surface",
6935
7360
  description: "Default surface background as a CSS color.",
@@ -6958,6 +7383,20 @@ var uiThemeContract = {
6958
7383
  defaultDark: "rgba(51, 65, 85, 0.92)",
6959
7384
  usedBy: ["DataTable row hover"]
6960
7385
  },
7386
+ {
7387
+ name: "--shadow-sm",
7388
+ description: "Small elevation shadow.",
7389
+ defaultLight: "0 10px 28px -18px rgba(15, 23, 42, 0.22)",
7390
+ defaultDark: "0 16px 32px -18px rgba(2, 6, 23, 0.48)",
7391
+ usedBy: ["Tabs", "Pagination", "subtle elevation"]
7392
+ },
7393
+ {
7394
+ name: "--shadow",
7395
+ description: "Primary elevation shadow.",
7396
+ defaultLight: "0 24px 60px -28px rgba(15, 23, 42, 0.3)",
7397
+ defaultDark: "0 28px 80px -32px rgba(2, 6, 23, 0.7)",
7398
+ usedBy: ["Card", "Button emphasis", "floating surfaces"]
7399
+ },
6961
7400
  {
6962
7401
  name: "--text",
6963
7402
  description: "Generic text color alias as a CSS color.",
@@ -6994,26 +7433,15 @@ var uiThemeContract = {
6994
7433
  usedBy: ["Button variant create"]
6995
7434
  }
6996
7435
  ],
6997
- exampleCss: `:root {
6998
- --tw-primary: 12 88% 56%;
6999
- --tw-accent: 24 95% 52%;
7000
- --primary-grad-from: 24 95% 52%;
7001
- --primary-grad-to: 12 88% 56%;
7002
- --surface: rgba(255, 248, 240, 0.92);
7003
- }
7004
-
7005
- .dark {
7006
- --tw-primary: 18 100% 62%;
7007
- --tw-accent: 35 100% 58%;
7008
- --surface: rgba(24, 24, 27, 0.82);
7009
- }`
7436
+ exampleCss: createThemePresetCssExample(uiDefaultThemePreset)
7010
7437
  };
7011
7438
  var uiProjectAiRules = [
7012
7439
  "Use @lucasvu/scope-ui as the default UI library.",
7013
7440
  "Import @lucasvu/scope-ui/styles.css once at the app entry.",
7014
7441
  "Import the project override theme file after the package stylesheet.",
7442
+ "Stay inside the approved theme preset declared by the project and do not invent a second palette.",
7015
7443
  "Read uiAiManifest to choose the correct component by intent before coding.",
7016
- "Read uiThemeContract before changing colors, shadows, or theme behavior.",
7444
+ "Read uiThemeContract before changing colors, shadows, radius, or theme behavior.",
7017
7445
  "Prefer root exports and avoid MainFe unless the task explicitly targets a legacy screen."
7018
7446
  ];
7019
7447
 
@@ -7074,5 +7502,9 @@ exports.defaultPermissionChecker = defaultPermissionChecker;
7074
7502
  exports.filterSidebarItems = filterSidebarItems;
7075
7503
  exports.hasActiveDescendant = hasActiveDescendant;
7076
7504
  exports.uiAiManifest = uiAiManifest;
7505
+ exports.uiDefaultThemePreset = uiDefaultThemePreset;
7077
7506
  exports.uiProjectAiRules = uiProjectAiRules;
7507
+ exports.uiScreenBlueprint = uiScreenBlueprint;
7508
+ exports.uiScreenBriefFields = uiScreenBriefFields;
7078
7509
  exports.uiThemeContract = uiThemeContract;
7510
+ exports.uiThemePresets = uiThemePresets;