@exxatdesignux/ui 0.2.6 → 0.2.8
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/package.json +2 -1
- package/template/.agents/skills/shadcn/SKILL.md +242 -0
- package/template/.agents/skills/shadcn/agents/openai.yml +5 -0
- package/template/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
- package/template/.agents/skills/shadcn/assets/shadcn.png +0 -0
- package/template/.agents/skills/shadcn/cli.md +257 -0
- package/template/.agents/skills/shadcn/customization.md +202 -0
- package/template/.agents/skills/shadcn/evals/evals.json +47 -0
- package/template/.agents/skills/shadcn/mcp.md +94 -0
- package/template/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
- package/template/.agents/skills/shadcn/rules/composition.md +195 -0
- package/template/.agents/skills/shadcn/rules/forms.md +192 -0
- package/template/.agents/skills/shadcn/rules/icons.md +101 -0
- package/template/.agents/skills/shadcn/rules/styling.md +162 -0
- package/template/.claude/skills/exxat-ds-skill/SKILL.md +712 -0
- package/template/.cursor/rules/exxat-accessibility.mdc +33 -0
- package/template/.cursor/rules/exxat-command-menu.mdc +23 -0
- package/template/.cursor/rules/exxat-dashboard-view-charts.mdc +53 -0
- package/template/.cursor/rules/exxat-data-tables.mdc +31 -0
- package/template/.cursor/rules/exxat-ds-agents.mdc +26 -0
- package/template/.cursor/rules/exxat-kbd-shortcuts.mdc +100 -0
- package/template/.cursor/rules/exxat-list-page-connected-views.mdc +16 -0
- package/template/.cursor/rules/exxat-no-toast.mdc +26 -0
- package/template/.cursor/rules/exxat-page-vs-drawer.mdc +22 -0
- package/template/.cursor/rules/exxat-table-properties-drawer.mdc +40 -0
- package/template/AGENTS.md +52 -11
- package/template/app/(app)/dashboard/page.tsx +1 -1
- package/template/app/(app)/data-list/[id]/page.tsx +24 -8
- package/template/app/(app)/data-list/new/page.tsx +7 -4
- package/template/app/(app)/data-list/page.tsx +1 -1
- package/template/app/(app)/examples/page.tsx +41 -0
- package/template/app/(app)/question-bank/page.tsx +3 -3
- package/template/components/app-sidebar.tsx +52 -35
- package/template/components/compliance-table.tsx +79 -0
- package/template/components/data-list-client.tsx +36 -25
- package/template/components/data-list-table.tsx +797 -10
- package/template/components/data-views/finder-panel-view.tsx +405 -0
- package/template/components/data-views/folder-grid-view.tsx +86 -0
- package/template/components/data-views/index.ts +59 -0
- package/template/components/data-views/list-page-split-details-placeholder.tsx +39 -0
- package/template/components/data-views/list-page-split-hub-chrome.tsx +60 -0
- package/template/components/data-views/list-page-split-hub-tokens.ts +16 -0
- package/template/components/data-views/list-page-tree-column-header.tsx +31 -0
- package/template/components/data-views/list-page-tree-panel-shell.tsx +91 -0
- package/template/components/data-views/list-page-view-frame.tsx +53 -0
- package/template/components/data-views/os-folder-glyph.tsx +121 -0
- package/template/components/folder-details-shell.tsx +230 -0
- package/template/components/hub-tree-panel-view.tsx +672 -0
- package/template/components/list-hub-status-badge.tsx +17 -3
- package/template/components/placements-page-header.tsx +14 -8
- package/template/components/placements-table-columns.tsx +8 -8
- package/template/components/question-bank-client.tsx +157 -40
- package/template/components/question-bank-new-folder-sheet.tsx +248 -0
- package/template/components/question-bank-os-folder-view.tsx +648 -0
- package/template/components/question-bank-page-header.tsx +3 -3
- package/template/components/question-bank-panel-activator.tsx +9 -0
- package/template/components/question-bank-secondary-nav.tsx +226 -0
- package/template/components/question-bank-table.tsx +707 -22
- package/template/components/secondary-panel.tsx +41 -107
- package/template/components/sites-table.tsx +66 -0
- package/template/components/team-client.tsx +7 -0
- package/template/components/team-table.tsx +156 -1
- package/template/components/templates/list-page.tsx +2 -2
- package/template/components/ui/avatar.tsx +1 -1
- package/template/components/ui/badge.tsx +1 -1
- package/template/components/ui/banner.tsx +1 -1
- package/template/components/ui/breadcrumb.tsx +1 -1
- package/template/components/ui/button.tsx +1 -1
- package/template/components/ui/calendar.tsx +1 -1
- package/template/components/ui/card.tsx +1 -1
- package/template/components/ui/chart.tsx +1 -1
- package/template/components/ui/checkbox.tsx +1 -1
- package/template/components/ui/coach-mark.tsx +1 -1
- package/template/components/ui/collapsible.tsx +1 -1
- package/template/components/ui/command.tsx +1 -1
- package/template/components/ui/date-picker-field.tsx +1 -1
- package/template/components/ui/dialog.tsx +1 -1
- package/template/components/ui/drag-handle-grip.tsx +1 -1
- package/template/components/ui/drawer.tsx +1 -1
- package/template/components/ui/dropdown-menu.tsx +1 -1
- package/template/components/ui/field.tsx +1 -1
- package/template/components/ui/form.tsx +1 -1
- package/template/components/ui/input-group.tsx +1 -1
- package/template/components/ui/input-mask.tsx +1 -1
- package/template/components/ui/input.tsx +1 -1
- package/template/components/ui/kbd.tsx +1 -1
- package/template/components/ui/label.tsx +1 -1
- package/template/components/ui/payment-card-fields.tsx +1 -1
- package/template/components/ui/popover.tsx +1 -1
- package/template/components/ui/radio-group.tsx +1 -1
- package/template/components/ui/resizable.tsx +68 -0
- package/template/components/ui/select.tsx +1 -1
- package/template/components/ui/selection-tile-grid.tsx +1 -1
- package/template/components/ui/separator.tsx +1 -1
- package/template/components/ui/sheet.tsx +1 -1
- package/template/components/ui/sidebar.tsx +1 -1
- package/template/components/ui/skeleton.tsx +1 -1
- package/template/components/ui/sonner.tsx +1 -1
- package/template/components/ui/status-badge.tsx +1 -1
- package/template/components/ui/table.tsx +1 -1
- package/template/components/ui/tabs.tsx +1 -1
- package/template/components/ui/textarea.tsx +1 -1
- package/template/components/ui/tip.tsx +1 -1
- package/template/components/ui/toggle-group.tsx +1 -1
- package/template/components/ui/toggle-switch.tsx +1 -1
- package/template/components/ui/toggle.tsx +1 -1
- package/template/components/ui/tooltip.tsx +1 -1
- package/template/components/ui/view-segmented-control.tsx +1 -1
- package/template/docs/data-views-pattern.md +7 -0
- package/template/fontawesome-subset.manifest.json +2 -2
- package/template/hooks/use-location-hash.ts +15 -0
- package/template/hooks/use-sidebar-reflow-zoom.ts +40 -0
- package/template/lib/ask-leo-route-context.ts +25 -57
- package/template/lib/coach-mark-registry.ts +13 -13
- package/template/lib/command-menu-config.ts +28 -23
- package/template/lib/command-menu-search-data.ts +10 -9
- package/template/lib/data-list-view-surface.ts +12 -1
- package/template/lib/data-list-view.ts +6 -3
- package/template/lib/mock/dashboard.ts +11 -11
- package/template/lib/mock/navigation.tsx +22 -63
- package/template/lib/mock/placements-kpi.ts +19 -19
- package/template/lib/mock/question-bank-folders.ts +167 -0
- package/template/lib/mock/question-bank-inspector.ts +109 -0
- package/template/lib/mock/question-bank-kpi.ts +1 -1
- package/template/lib/mock/question-bank.ts +80 -0
- package/template/lib/question-bank-nav.ts +91 -0
- package/template/next.config.mjs +8 -0
- package/template/package.json +1 -0
- package/template/public/folders/icons8-folder-windows-11.svg +1 -0
- package/template/scripts/fontawesome-subset-audit.mjs +2 -3
- package/template/app/(app)/compliance/page.tsx +0 -10
- package/template/app/(app)/rotations/page.tsx +0 -15
- package/template/app/(app)/sites/all/page.tsx +0 -13
- package/template/app/(app)/team/page.tsx +0 -10
|
@@ -6,6 +6,15 @@ export type QuestionBankStatus = "published" | "draft" | "in_review"
|
|
|
6
6
|
export type QuestionBankType = "multiple_choice" | "true_false" | "short_answer"
|
|
7
7
|
export type QuestionBankDifficulty = "easy" | "medium" | "hard"
|
|
8
8
|
|
|
9
|
+
/** Bloom taxonomy label for bank inspector / analytics (optional on mock rows). */
|
|
10
|
+
export type QuestionBankBloomLevel =
|
|
11
|
+
| "Remember"
|
|
12
|
+
| "Understand"
|
|
13
|
+
| "Apply"
|
|
14
|
+
| "Analyze"
|
|
15
|
+
| "Evaluate"
|
|
16
|
+
| "Create"
|
|
17
|
+
|
|
9
18
|
export interface QuestionBankItem extends Record<string, unknown> {
|
|
10
19
|
id: string
|
|
11
20
|
/** Short preview / stem */
|
|
@@ -16,6 +25,35 @@ export interface QuestionBankItem extends Record<string, unknown> {
|
|
|
16
25
|
status: QuestionBankStatus
|
|
17
26
|
author: string
|
|
18
27
|
updatedAt: string
|
|
28
|
+
/** Folder tree id (`lib/mock/question-bank-folders.ts`). */
|
|
29
|
+
folderId: string
|
|
30
|
+
/** Multiple choice options (only for type: "multiple_choice") */
|
|
31
|
+
options?: {
|
|
32
|
+
text: string
|
|
33
|
+
isCorrect?: boolean
|
|
34
|
+
}[]
|
|
35
|
+
/** Stable bank code for lists / inspector (e.g. PH-ANA-001). */
|
|
36
|
+
itemCode?: string
|
|
37
|
+
bloomLevel?: QuestionBankBloomLevel | string
|
|
38
|
+
/** Topic-style tags for inspector (# displayed in UI). */
|
|
39
|
+
tags?: string[]
|
|
40
|
+
/** ISO-ish created date (inspector “Creator & history”). */
|
|
41
|
+
createdAt?: string
|
|
42
|
+
/** Display name for “Created by” when different from `author`. */
|
|
43
|
+
createdBy?: string
|
|
44
|
+
/** Last editor display name (inspector copy). */
|
|
45
|
+
lastEditedBy?: string
|
|
46
|
+
/** Precomposed “Last edited” line; overrides derived copy when set. */
|
|
47
|
+
lastEditedSummary?: string
|
|
48
|
+
/** Revision label e.g. v4 */
|
|
49
|
+
version?: string
|
|
50
|
+
examUsageCount?: number
|
|
51
|
+
/** Point-biserial index (psychometrics preview). */
|
|
52
|
+
pbi?: number
|
|
53
|
+
/** Mean percent correct when used in assessments. */
|
|
54
|
+
avgScoreCorrectPct?: number
|
|
55
|
+
/** Where / when the item was last used on an exam. */
|
|
56
|
+
lastUsedLabel?: string
|
|
19
57
|
}
|
|
20
58
|
|
|
21
59
|
export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
@@ -28,6 +66,25 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
28
66
|
status: "published",
|
|
29
67
|
author: "Dr. Chen",
|
|
30
68
|
updatedAt: "2026-03-28",
|
|
69
|
+
folderId: "fld-science",
|
|
70
|
+
itemCode: "QB-ANA-001",
|
|
71
|
+
bloomLevel: "Apply",
|
|
72
|
+
tags: ["Brachial plexus", "Peripheral nerves", "Spine"],
|
|
73
|
+
createdAt: "2024-11-02",
|
|
74
|
+
createdBy: "Dr. Sarah Thompson",
|
|
75
|
+
lastEditedBy: "Dr. James Patel",
|
|
76
|
+
lastEditedSummary: "14 months ago · Dr. James Patel",
|
|
77
|
+
version: "v4",
|
|
78
|
+
examUsageCount: 22,
|
|
79
|
+
pbi: 0.48,
|
|
80
|
+
avgScoreCorrectPct: 88,
|
|
81
|
+
lastUsedLabel: "Midterm 2024 · 14 months ago",
|
|
82
|
+
options: [
|
|
83
|
+
{ text: "C5, C6, C7, C8, T1", isCorrect: true },
|
|
84
|
+
{ text: "C3, C4, C5, C6", isCorrect: false },
|
|
85
|
+
{ text: "C6, C7, C8, T1, T2", isCorrect: false },
|
|
86
|
+
{ text: "C4, C5, C6, C7", isCorrect: false },
|
|
87
|
+
],
|
|
31
88
|
},
|
|
32
89
|
{
|
|
33
90
|
id: "q2",
|
|
@@ -38,6 +95,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
38
95
|
status: "published",
|
|
39
96
|
author: "Jordan Lee",
|
|
40
97
|
updatedAt: "2026-03-27",
|
|
98
|
+
folderId: "fld-skills-lab",
|
|
41
99
|
},
|
|
42
100
|
{
|
|
43
101
|
id: "q3",
|
|
@@ -48,6 +106,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
48
106
|
status: "in_review",
|
|
49
107
|
author: "Alex Rivera",
|
|
50
108
|
updatedAt: "2026-03-26",
|
|
109
|
+
folderId: "fld-science",
|
|
51
110
|
},
|
|
52
111
|
{
|
|
53
112
|
id: "q4",
|
|
@@ -58,6 +117,13 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
58
117
|
status: "draft",
|
|
59
118
|
author: "Sam Patel",
|
|
60
119
|
updatedAt: "2026-03-25",
|
|
120
|
+
folderId: "fld-ethics",
|
|
121
|
+
options: [
|
|
122
|
+
{ text: "Patient is incapacitated and disclosure is in their best interest", isCorrect: true },
|
|
123
|
+
{ text: "Family member requests the information", isCorrect: false },
|
|
124
|
+
{ text: "Patient has not explicitly prohibited disclosure", isCorrect: false },
|
|
125
|
+
{ text: "Disclosure would benefit hospital operations", isCorrect: false },
|
|
126
|
+
],
|
|
61
127
|
},
|
|
62
128
|
{
|
|
63
129
|
id: "q5",
|
|
@@ -68,6 +134,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
68
134
|
status: "published",
|
|
69
135
|
author: "Dr. Chen",
|
|
70
136
|
updatedAt: "2026-03-24",
|
|
137
|
+
folderId: "fld-clinical",
|
|
71
138
|
},
|
|
72
139
|
{
|
|
73
140
|
id: "q6",
|
|
@@ -78,6 +145,13 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
78
145
|
status: "published",
|
|
79
146
|
author: "Morgan Lee",
|
|
80
147
|
updatedAt: "2026-03-23",
|
|
148
|
+
folderId: "fld-ops",
|
|
149
|
+
options: [
|
|
150
|
+
{ text: "Gloving and gowning", isCorrect: true },
|
|
151
|
+
{ text: "Hand sanitization", isCorrect: false },
|
|
152
|
+
{ text: "Equipment gathering", isCorrect: false },
|
|
153
|
+
{ text: "Workspace cleaning", isCorrect: false },
|
|
154
|
+
],
|
|
81
155
|
},
|
|
82
156
|
{
|
|
83
157
|
id: "q7",
|
|
@@ -88,6 +162,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
88
162
|
status: "draft",
|
|
89
163
|
author: "Casey Nguyen",
|
|
90
164
|
updatedAt: "2026-03-22",
|
|
165
|
+
folderId: "fld-clinical",
|
|
91
166
|
},
|
|
92
167
|
{
|
|
93
168
|
id: "q8",
|
|
@@ -98,6 +173,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
98
173
|
status: "in_review",
|
|
99
174
|
author: "Riley Johnson",
|
|
100
175
|
updatedAt: "2026-03-21",
|
|
176
|
+
folderId: "fld-science",
|
|
101
177
|
},
|
|
102
178
|
{
|
|
103
179
|
id: "q9",
|
|
@@ -108,6 +184,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
108
184
|
status: "published",
|
|
109
185
|
author: "Quinn Martinez",
|
|
110
186
|
updatedAt: "2026-03-20",
|
|
187
|
+
folderId: "fld-clinical",
|
|
111
188
|
},
|
|
112
189
|
{
|
|
113
190
|
id: "q10",
|
|
@@ -118,6 +195,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
118
195
|
status: "published",
|
|
119
196
|
author: "Dr. Chen",
|
|
120
197
|
updatedAt: "2026-03-19",
|
|
198
|
+
folderId: "fld-science",
|
|
121
199
|
},
|
|
122
200
|
{
|
|
123
201
|
id: "q11",
|
|
@@ -128,6 +206,7 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
128
206
|
status: "draft",
|
|
129
207
|
author: "Taylor Brooks",
|
|
130
208
|
updatedAt: "2026-03-18",
|
|
209
|
+
folderId: "fld-ops",
|
|
131
210
|
},
|
|
132
211
|
{
|
|
133
212
|
id: "q12",
|
|
@@ -138,5 +217,6 @@ export const QUESTION_BANK_ITEMS: QuestionBankItem[] = [
|
|
|
138
217
|
status: "in_review",
|
|
139
218
|
author: "Jordan Lee",
|
|
140
219
|
updatedAt: "2026-03-17",
|
|
220
|
+
folderId: "fld-ops",
|
|
141
221
|
},
|
|
142
222
|
]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Question bank secondary nav + URL scope — demo “My” matches mock author rows.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { QuestionBankItem } from "@/lib/mock/question-bank"
|
|
6
|
+
import type { QuestionBankFolder } from "@/lib/mock/question-bank-folders"
|
|
7
|
+
import { collectFolderDescendantIds } from "@/lib/mock/question-bank-folders"
|
|
8
|
+
|
|
9
|
+
/** Demo curator — “My questions” filters `author` / `createdBy` to this value. */
|
|
10
|
+
export const QUESTION_BANK_NAV_MY_AUTHOR = "Dr. Chen"
|
|
11
|
+
|
|
12
|
+
export type QuestionBankNavScope = "all" | "my" | "folder"
|
|
13
|
+
|
|
14
|
+
export interface QuestionBankNavState {
|
|
15
|
+
scope: QuestionBankNavScope
|
|
16
|
+
/** Set when `scope === "folder"` */
|
|
17
|
+
folderId: string | null
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function parseQuestionBankNav(searchParams: URLSearchParams): QuestionBankNavState {
|
|
21
|
+
const raw = (searchParams.get("scope") ?? "all").toLowerCase()
|
|
22
|
+
if (raw === "my") return { scope: "my", folderId: null }
|
|
23
|
+
if (raw === "folder") {
|
|
24
|
+
const folderId = searchParams.get("folderId") ?? searchParams.get("folder")
|
|
25
|
+
return { scope: "folder", folderId: folderId || null }
|
|
26
|
+
}
|
|
27
|
+
return { scope: "all", folderId: null }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Breadcrumb + title for `SiteHeader` / `PageHeader` (matches secondary nav scopes). */
|
|
31
|
+
export interface QuestionBankHubHeaderModel {
|
|
32
|
+
title: string
|
|
33
|
+
breadcrumbs?: { label: string; href?: string }[]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function questionBankHubHeaderModel(
|
|
37
|
+
folders: QuestionBankFolder[],
|
|
38
|
+
nav: QuestionBankNavState,
|
|
39
|
+
): QuestionBankHubHeaderModel {
|
|
40
|
+
if (nav.scope === "my") {
|
|
41
|
+
return {
|
|
42
|
+
breadcrumbs: [{ label: "Question bank", href: "/question-bank" }],
|
|
43
|
+
title: "My questions",
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (nav.scope === "folder" && nav.folderId) {
|
|
47
|
+
const name = folders.find(f => f.id === nav.folderId)?.name ?? "Folder"
|
|
48
|
+
return {
|
|
49
|
+
breadcrumbs: [{ label: "Question bank", href: "/question-bank" }],
|
|
50
|
+
title: name,
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { title: "All questions" }
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function filterQuestionBankItemsByNav(
|
|
57
|
+
items: QuestionBankItem[],
|
|
58
|
+
folders: QuestionBankFolder[],
|
|
59
|
+
nav: QuestionBankNavState,
|
|
60
|
+
): QuestionBankItem[] {
|
|
61
|
+
if (nav.scope === "all") return items
|
|
62
|
+
if (nav.scope === "my") {
|
|
63
|
+
return items.filter(
|
|
64
|
+
i => i.author === QUESTION_BANK_NAV_MY_AUTHOR || i.createdBy === QUESTION_BANK_NAV_MY_AUTHOR,
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
if (nav.scope === "folder" && nav.folderId) {
|
|
68
|
+
const allowedFolderIds = collectFolderDescendantIds(folders, nav.folderId)
|
|
69
|
+
return items.filter(i => allowedFolderIds.has(i.folderId))
|
|
70
|
+
}
|
|
71
|
+
return items
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Build `/question-bank` href with optional query + hash (hash without leading `#`). */
|
|
75
|
+
export function questionBankNavHref(opts: {
|
|
76
|
+
scope: QuestionBankNavScope
|
|
77
|
+
folderId?: string | null
|
|
78
|
+
hash?: string
|
|
79
|
+
}): string {
|
|
80
|
+
const base = "/question-bank"
|
|
81
|
+
const sp = new URLSearchParams()
|
|
82
|
+
if (opts.scope === "my") sp.set("scope", "my")
|
|
83
|
+
if (opts.scope === "folder" && opts.folderId) {
|
|
84
|
+
sp.set("scope", "folder")
|
|
85
|
+
sp.set("folderId", opts.folderId)
|
|
86
|
+
}
|
|
87
|
+
const qs = sp.toString()
|
|
88
|
+
const h = opts.hash?.replace(/^#/, "")
|
|
89
|
+
const hashPart = h ? `#${h}` : ""
|
|
90
|
+
return qs ? `${base}?${qs}${hashPart}` : `${base}${hashPart}`
|
|
91
|
+
}
|
package/template/next.config.mjs
CHANGED
|
@@ -10,6 +10,14 @@ const nextConfig = {
|
|
|
10
10
|
experimental: {
|
|
11
11
|
optimizePackageImports: ["lucide-react", "recharts", "@exxatdesignux/ui"],
|
|
12
12
|
},
|
|
13
|
+
async redirects() {
|
|
14
|
+
return [
|
|
15
|
+
{ source: "/rotations", destination: "/examples", permanent: false },
|
|
16
|
+
{ source: "/compliance", destination: "/examples", permanent: false },
|
|
17
|
+
{ source: "/sites/all", destination: "/examples", permanent: false },
|
|
18
|
+
{ source: "/sites/all/:path*", destination: "/examples", permanent: false },
|
|
19
|
+
]
|
|
20
|
+
},
|
|
13
21
|
}
|
|
14
22
|
|
|
15
23
|
export default withBundleAnalyzer(nextConfig)
|
package/template/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="240px" height="240px"><linearGradient id="WQEfvoQAcpQgQgyjQQ4Hqa" x1="24" x2="24" y1="6.708" y2="14.977" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#eba600"/><stop offset="1" stop-color="#c28200"/></linearGradient><path fill="url(#WQEfvoQAcpQgQgyjQQ4Hqa)" d="M24.414,10.414l-2.536-2.536C21.316,7.316,20.553,7,19.757,7L5,7C3.895,7,3,7.895,3,9l0,30 c0,1.105,0.895,2,2,2l38,0c1.105,0,2-0.895,2-2V13c0-1.105-0.895-2-2-2l-17.172,0C25.298,11,24.789,10.789,24.414,10.414z"/><linearGradient id="WQEfvoQAcpQgQgyjQQ4Hqb" x1="24" x2="24" y1="10.854" y2="40.983" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd869"/><stop offset="1" stop-color="#fec52b"/></linearGradient><path fill="url(#WQEfvoQAcpQgQgyjQQ4Hqb)" d="M21.586,14.414l3.268-3.268C24.947,11.053,25.074,11,25.207,11H43c1.105,0,2,0.895,2,2v26 c0,1.105-0.895,2-2,2H5c-1.105,0-2-0.895-2-2V15.5C3,15.224,3.224,15,3.5,15h16.672C20.702,15,21.211,14.789,21.586,14.414z"/></svg>
|
|
@@ -16,8 +16,7 @@ import { fileURLToPath } from "node:url"
|
|
|
16
16
|
|
|
17
17
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
18
18
|
const WEB_ROOT = path.join(__dirname, "..")
|
|
19
|
-
const
|
|
20
|
-
const UI_SRC = path.join(REPO_ROOT, "packages", "ui", "src")
|
|
19
|
+
const UI_SRC = path.join(WEB_ROOT, "node_modules", "@exxatdesignux/ui", "src")
|
|
21
20
|
|
|
22
21
|
const IGNORE_DIR = new Set([
|
|
23
22
|
"node_modules",
|
|
@@ -164,7 +163,7 @@ function main() {
|
|
|
164
163
|
const manifest = {
|
|
165
164
|
kitId: "d9bd5774e0",
|
|
166
165
|
generatedAt: new Date().toISOString(),
|
|
167
|
-
sourcePaths: ["
|
|
166
|
+
sourcePaths: ["{app,components,lib,contexts,hooks}", "node_modules/@exxatdesignux/ui/src"],
|
|
168
167
|
stylesDetected: sortedStyles,
|
|
169
168
|
duotoneNote:
|
|
170
169
|
"Icons used as fa-duotone fa-solid … require Duotone + Solid in Kit settings (e.g. star-christmas).",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ComplianceClient } from "@/components/compliance-client"
|
|
2
|
-
import { PrimaryPageTemplate } from "@/components/templates/primary-page-template"
|
|
3
|
-
|
|
4
|
-
export default function CompliancePage() {
|
|
5
|
-
return (
|
|
6
|
-
<PrimaryPageTemplate siteHeader={{ title: "Compliance" }}>
|
|
7
|
-
<ComplianceClient />
|
|
8
|
-
</PrimaryPageTemplate>
|
|
9
|
-
)
|
|
10
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { PrimaryPageTemplate } from "@/components/templates/primary-page-template"
|
|
2
|
-
import { RotationsPanelActivator } from "@/components/rotations-panel-activator"
|
|
3
|
-
import { RotationsEmptyState } from "@/components/rotations-empty-state"
|
|
4
|
-
|
|
5
|
-
export default function RotationsPage() {
|
|
6
|
-
return (
|
|
7
|
-
<PrimaryPageTemplate
|
|
8
|
-
beforeSiteHeader={<RotationsPanelActivator />}
|
|
9
|
-
siteHeader={{ title: "Rotations" }}
|
|
10
|
-
contentClassName="px-4 lg:px-6 py-6"
|
|
11
|
-
>
|
|
12
|
-
<RotationsEmptyState />
|
|
13
|
-
</PrimaryPageTemplate>
|
|
14
|
-
)
|
|
15
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { SitesAllClient } from "@/components/sites-all-client"
|
|
2
|
-
import { PrimaryPageTemplate } from "@/components/templates/primary-page-template"
|
|
3
|
-
|
|
4
|
-
export default function SitesAllPage() {
|
|
5
|
-
return (
|
|
6
|
-
<PrimaryPageTemplate
|
|
7
|
-
siteHeader={{ title: "Sites" }}
|
|
8
|
-
contentClassName="pb-6"
|
|
9
|
-
>
|
|
10
|
-
<SitesAllClient />
|
|
11
|
-
</PrimaryPageTemplate>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrimaryPageTemplate } from "@/components/templates/primary-page-template"
|
|
2
|
-
import { TeamClient } from "@/components/team-client"
|
|
3
|
-
|
|
4
|
-
export default function TeamPage() {
|
|
5
|
-
return (
|
|
6
|
-
<PrimaryPageTemplate siteHeader={{ title: "Team" }}>
|
|
7
|
-
<TeamClient />
|
|
8
|
-
</PrimaryPageTemplate>
|
|
9
|
-
)
|
|
10
|
-
}
|