Skip to content

Commit f046e64

Browse files
authored
feat(Campus Settings): added campus aliases (#421)
* feat(campus settings): added campus aliases * fix(Control Panel): heading styling consistency --------- Co-authored-by: Jake Turner <jturner@cosmistack.com>
1 parent ce641b9 commit f046e64

File tree

4 files changed

+547
-428
lines changed

4 files changed

+547
-428
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import React from "react";
2+
import { Button, Icon } from "semantic-ui-react";
3+
4+
type CampusAliasesControlProps = {
5+
aliases: string[];
6+
setAliases: React.Dispatch<React.SetStateAction<string[]>>;
7+
};
8+
9+
const CampusAliasesControl: React.FC<CampusAliasesControlProps> = ({
10+
aliases,
11+
setAliases,
12+
}) => {
13+
const handleAliasChange = (index: number, value: string) => {
14+
const updatedAliases = [...aliases];
15+
updatedAliases[index] = value;
16+
setAliases(updatedAliases);
17+
};
18+
19+
const deleteAlias = (index: number) => {
20+
const updatedAliases = aliases.filter((_, i) => i !== index);
21+
setAliases(updatedAliases);
22+
};
23+
24+
const addAlias = () => {
25+
setAliases([...aliases, ""]);
26+
};
27+
28+
return (
29+
<div className="w-full">
30+
<div className="border rounded-lg overflow-hidden">
31+
{/* Header Row */}
32+
<div className="flex items-center bg-gray-50 border-b px-4 py-2">
33+
<div className="flex-1 font-semibold">Alias</div>
34+
<div className="w-16 text-right font-semibold">Actions</div>
35+
</div>
36+
37+
{/* Content Rows */}
38+
<div className="p-4">
39+
{aliases.map((alias, index) => (
40+
<div key={index} className="flex items-center gap-1 mb-2">
41+
<input
42+
type="text"
43+
value={alias}
44+
onChange={(e) => handleAliasChange(index, e.target.value)}
45+
className="flex-1 p-2 border rounded min-w-0"
46+
/>
47+
<div className="w-16 flex justify-end">
48+
<Button
49+
icon
50+
color="red"
51+
onClick={() => deleteAlias(index)}
52+
className="w-8 h-8 shrink-0"
53+
style={{
54+
minWidth: "32px",
55+
padding: 0,
56+
}}
57+
>
58+
<Icon name="delete" className="m-0" />
59+
</Button>
60+
</div>
61+
</div>
62+
))}
63+
</div>
64+
65+
{/* Footer Row */}
66+
<div className="flex items-center bg-gray-50 border-t px-4 py-2">
67+
<Button color="blue" onClick={addAlias}>
68+
<Icon name="add" />
69+
Add Alias
70+
</Button>
71+
</div>
72+
</div>
73+
</div>
74+
);
75+
};
76+
77+
export default CampusAliasesControl;

0 commit comments

Comments
 (0)