Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
6419bdd
AdminTable improvements
brianjhanson Feb 19, 2026
7700239
Sortable tables
brianjhanson Feb 19, 2026
d1ab2a4
Add search form
brianjhanson Feb 20, 2026
6d8cfac
Delete section
brianjhanson Feb 20, 2026
a5d6a22
Breadcrumbs
brianjhanson Feb 20, 2026
eb1e6fd
Automatic announcements
brianjhanson Feb 20, 2026
8f77440
Cleanup
brianjhanson Feb 20, 2026
9471160
Fix tests
brianjhanson Feb 20, 2026
5211fec
Simplify tests
brianjhanson Feb 20, 2026
f43f23b
Remove duplicate styles
brianjhanson Feb 20, 2026
5f3ea50
Fix import path
brianjhanson Feb 20, 2026
65728bb
Fix label
brianjhanson Feb 20, 2026
a4667e9
CoPilot fixes
brianjhanson Feb 20, 2026
63a7ba5
Remove old test
brianjhanson Feb 20, 2026
7e47b30
Remove unnecessary condition
brianjhanson Feb 20, 2026
4410182
Build assets
brianjhanson Feb 24, 2026
65d0668
Case insensitive order
brianjhanson Feb 24, 2026
abe50f4
Initial port of section settings and create over to Inertia
brianjhanson Feb 26, 2026
075a1c5
Fix types
brianjhanson Feb 26, 2026
bfb3eea
Cleanup
brianjhanson Feb 26, 2026
fcba7ec
Cleanup imports
brianjhanson Feb 26, 2026
8acdafa
Add vue wrapper generation to build script
brianjhanson Feb 26, 2026
4a058e6
More flexible model type for inputs
brianjhanson Feb 26, 2026
8c555f9
Add inputGenerator
brianjhanson Feb 26, 2026
548879e
Replace watcher with `useInputGenerator`
brianjhanson Feb 26, 2026
eac37e1
Improve input generator
brianjhanson Feb 26, 2026
df771f6
Add disabled logic for fields
brianjhanson Feb 26, 2026
f0d5d80
Remove need for name and aria-labelledby attributes
brianjhanson Feb 26, 2026
f8be248
Split cells into separate methods
brianjhanson Feb 27, 2026
38a4122
Improve entry type selector
brianjhanson Feb 27, 2026
530688d
Add message to `RespondsWithFlash`
brianjhanson Feb 27, 2026
2278359
Fix types and cleanup input a bit
brianjhanson Feb 27, 2026
b1d5c57
`size` -> `maxlength`
brianjhanson Feb 27, 2026
f55e877
Explicitly pass `onClick`
brianjhanson Feb 27, 2026
69abd82
Fix typescript error
brianjhanson Feb 27, 2026
7708a44
Use CraftSelect
brianjhanson Feb 27, 2026
ba4bd6f
Table header/footer spacing
brianjhanson Feb 27, 2026
3e044f9
Pass value to `textInputCell`
brianjhanson Feb 27, 2026
9995062
Copilot fixes
brianjhanson Feb 27, 2026
e92ccf5
Cleanup Deletebutton
brianjhanson Feb 27, 2026
2598f89
Sort by `handle`
brianjhanson Feb 27, 2026
3d0257f
Cleanup button
brianjhanson Feb 27, 2026
57b3413
Fix PHPStan errors
brianjhanson Feb 27, 2026
25a0a16
Update agents a bit
brianjhanson Feb 27, 2026
26b709c
Build
brianjhanson Feb 27, 2026
39103db
Use `asSuccess` return
brianjhanson Feb 27, 2026
fc8f794
I guess we're fine?
brianjhanson Feb 27, 2026
c43de50
Update test
brianjhanson Feb 27, 2026
0a132ce
Automatically add title to breadcrumbs
brianjhanson Feb 27, 2026
34d344e
Add autocomplete cell to useEditableTable
brianjhanson Feb 27, 2026
3fc33de
Merge branch 'claude/eloquent-lovelace' into feature/inertia-section-…
brianjhanson Feb 27, 2026
6f81b1f
Autocomplete template options
brianjhanson Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,13 @@ if (!$event->isValid) {
- `src/User/Events/` - User-related events
- `src/Plugin/Events/` - Plugin lifecycle events

### Templates

A portion of this port is moving from twig + jQuery templates into [Inertia](https://inertiajs.com/) + VueJs. The original twig templates are conttained in `resources/templates` the new Inertia Vue files will live in `resources/js`.

We're also building component library located in the `@craftcms/cp` package. Whenever possible, use components from that package to build out UI.


## Common Pitfalls

### Unicode Characters in Source Files
Expand Down
8 changes: 6 additions & 2 deletions packages/craftcms-cp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
"check:types": "tsc --noEmit",
"storybook": "storybook dev -p 6006",
"build:storybook": "storybook build",
"build:manifest": "custom-elements-manifest analyze --litelement --outdir dist"
"build:manifest": "custom-elements-manifest analyze --litelement --outdir dist",
"generate:vue-wrappers": "node ./scripts/generate-vue-wrappers.js"
},
"exports": {
"./package.json": "./package.json",
Expand All @@ -36,8 +37,11 @@
"import": "./dist/cp.mjs",
"require": "./dist/cp.cjs"
},
"./src/*": "./src/*",
"./*": "./dist/*",
"./dist/*": "./dist/*",
"./vue/*": "./dist/vue/*",
"./types/*": "./src/types/*",
"./services/*": "./dist/services/*",
"./styles/*": "./dist/styles/*",
"./utilities/*": "./dist/utilities/*",
"./components/*": "./dist/components/*",
Expand Down
17 changes: 16 additions & 1 deletion packages/craftcms-cp/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import copy from 'recursive-copy';
import {getDistDir, getRootDir, resolveFrom} from './utils.js';
import {join} from 'path';
import {deleteAsync} from 'del';
import createVueWrappers from './generate-vue-wrappers.js';

const spinner = ora({text: '@craftcms/cp', color: 'red'}).start();
const isDeveloping = process.argv.includes('--develop');
Expand Down Expand Up @@ -86,9 +87,22 @@ async function generateStyles() {
return Promise.resolve();
}

async function generateVueWrappers() {
spinner.start('Generating Vue Wrappers');

createVueWrappers();
return Promise.resolve();
}

async function buildAll() {
try {
const steps = [cleanup, generateManifest, generateStyles, generateBundle];
const steps = [
cleanup,
generateManifest,
generateStyles,
generateVueWrappers,
generateBundle,
];

for (const step of steps) {
await step();
Expand Down Expand Up @@ -142,6 +156,7 @@ async function runBuild() {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(async () => {
await generateManifest();
await generateVueWrappers();
}, 100);
}
});
Expand Down
Loading
Loading