acls: refactor editor into React components
Extract the ACL editor surface (was 759 lines of mixed Astro/Alpine/HTML
in src/pages/acls.astro) into a focused React component tree under
src/components/acls/:
- ACLEditor.tsx — top-level state + layout
- RuleEditor.tsx — per-rule fields and reordering
- SourceSelector.tsx — source-side identity picker
- DestinationSelector.tsx — destination + port picker
- types.ts — shared TS shapes
- validation.ts — pre-submit validation helpers
acls.astro becomes a thin SSR wrapper that mounts <ACLEditor />.
- astro.config.mjs: add @astrojs/react integration
- package.json: pull in @astrojs/react, react@18, react-dom@18, types,
ip-address + is-cidr (CIDR/IP validation in source/dest editors),
lucide-react (icons)
- description string: replace escaped 🤠 sequence with the literal char
This commit is contained in:
parent
21175c5b7a
commit
36c1b18724
11 changed files with 1306 additions and 646 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import node from '@astrojs/node';
|
||||
import react from '@astrojs/react';
|
||||
import tailwind from '@astrojs/tailwind';
|
||||
import { defineConfig } from 'astro/config';
|
||||
|
||||
|
|
@ -14,6 +15,8 @@ export default defineConfig({
|
|||
// Tailwind configuration
|
||||
applyBaseStyles: false, // We'll handle base styles ourselves
|
||||
}),
|
||||
// React islands — used by the ACL editor under /acls.
|
||||
react(),
|
||||
],
|
||||
|
||||
// Content collections for live VPN data are enabled by default in Astro 4.x
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue