create-nextjs-cms 0.9.30 → 0.9.32
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/LICENSE +21 -21
- package/README.md +71 -71
- package/dist/helpers/utils.js +16 -16
- package/dist/lib/section-creators.js +166 -166
- package/package.json +1 -1
- package/templates/default/.eslintrc.json +5 -5
- package/templates/default/.prettierignore +7 -7
- package/templates/default/.prettierrc.json +27 -27
- package/templates/default/CHANGELOG.md +140 -140
- package/templates/default/_gitignore +57 -57
- package/templates/default/app/(auth)/auth/login/LoginPage.tsx +192 -192
- package/templates/default/app/(auth)/auth/login/page.tsx +11 -11
- package/templates/default/app/(auth)/auth-language-provider.tsx +34 -34
- package/templates/default/app/(auth)/layout.tsx +81 -81
- package/templates/default/app/(rootLayout)/(plugins)/[...slug]/error.tsx +64 -0
- package/templates/default/app/(rootLayout)/(plugins)/[...slug]/page.tsx +59 -47
- package/templates/default/app/(rootLayout)/(plugins)/[...slug]/plugin-server-registry.ts +14 -16
- package/templates/default/app/(rootLayout)/admins/page.tsx +10 -10
- package/templates/default/app/(rootLayout)/browse/[section]/[page]/page.tsx +22 -22
- package/templates/default/app/(rootLayout)/categorized/[section]/page.tsx +15 -15
- package/templates/default/app/(rootLayout)/dashboard/page.tsx +68 -70
- package/templates/default/app/(rootLayout)/edit/[section]/[itemId]/page.tsx +20 -20
- package/templates/default/app/(rootLayout)/layout.tsx +81 -81
- package/templates/default/app/(rootLayout)/loading.tsx +10 -10
- package/templates/default/app/(rootLayout)/log/page.tsx +5 -7
- package/templates/default/app/(rootLayout)/new/[section]/page.tsx +15 -15
- package/templates/default/app/(rootLayout)/section/[section]/page.tsx +19 -19
- package/templates/default/app/(rootLayout)/settings/page.tsx +11 -13
- package/templates/default/app/api/auth/csrf/route.ts +25 -25
- package/templates/default/app/api/auth/refresh/route.ts +10 -10
- package/templates/default/app/api/auth/route.ts +49 -49
- package/templates/default/app/api/auth/session/route.ts +20 -20
- package/templates/default/app/api/document/route.ts +165 -165
- package/templates/default/app/api/editor/photo/route.ts +49 -49
- package/templates/default/app/api/photo/route.ts +27 -27
- package/templates/default/app/api/submit/section/item/[slug]/route.ts +95 -95
- package/templates/default/app/api/submit/section/item/route.ts +56 -56
- package/templates/default/app/api/submit/section/simple/route.ts +86 -86
- package/templates/default/app/api/video/route.ts +174 -174
- package/templates/default/app/globals.css +236 -236
- package/templates/default/cms.config.ts +56 -56
- package/templates/default/components/admin/admin-card.tsx +165 -165
- package/templates/default/components/admin/admin-edit-page.tsx +124 -124
- package/templates/default/components/admin/admin-privilege-card.tsx +184 -184
- package/templates/default/components/admin/new-admin-form.tsx +172 -172
- package/templates/default/components/container-box.tsx +24 -24
- package/templates/default/components/dnd-kit/draggable.tsx +21 -21
- package/templates/default/components/dnd-kit/droppable.tsx +20 -20
- package/templates/default/components/dnd-kit/sortable-item.tsx +18 -18
- package/templates/default/components/feedback/error-component.tsx +16 -16
- package/templates/default/components/feedback/info-card.tsx +93 -93
- package/templates/default/components/feedback/loading-spinners.tsx +67 -67
- package/templates/default/components/feedback/modal.tsx +166 -166
- package/templates/default/components/feedback/progress-bar.tsx +48 -48
- package/templates/default/components/feedback/tooltip-component.tsx +27 -27
- package/templates/default/components/form/form-input-element.tsx +70 -70
- package/templates/default/components/form/helpers/_section-hot-reload.js +1 -1
- package/templates/default/components/form/helpers/util.ts +17 -17
- package/templates/default/components/form/inputs/checkbox-form-input.tsx +46 -46
- package/templates/default/components/form/inputs/color-form-input.tsx +44 -44
- package/templates/default/components/form/inputs/date-form-input.tsx +93 -93
- package/templates/default/components/form/inputs/map-form-input.tsx +141 -141
- package/templates/default/components/form/inputs/multiple-select-form-input.tsx +85 -85
- package/templates/default/components/form/inputs/number-form-input.tsx +43 -43
- package/templates/default/components/form/inputs/password-form-input.tsx +47 -47
- package/templates/default/components/form/inputs/photo-form-input.tsx +279 -279
- package/templates/default/components/form/inputs/rich-text-form-input.tsx +148 -148
- package/templates/default/components/form/inputs/select-form-input.tsx +159 -159
- package/templates/default/components/form/inputs/slug-form-input.tsx +131 -131
- package/templates/default/components/form/inputs/tags-form-input.tsx +255 -255
- package/templates/default/components/form/inputs/text-form-input.tsx +61 -61
- package/templates/default/components/form/inputs/textarea-form-input.tsx +61 -61
- package/templates/default/components/layout/default-nav-items.tsx +3 -3
- package/templates/default/components/layout/layout.tsx +84 -84
- package/templates/default/components/layout/navbar.tsx +258 -258
- package/templates/default/components/layout/sidebar-dropdown-item.tsx +83 -83
- package/templates/default/components/layout/sidebar-item.tsx +24 -24
- package/templates/default/components/layout/sidebar.tsx +229 -229
- package/templates/default/components/layout/theme-provider.tsx +8 -8
- package/templates/default/components/layout/theme-toggle.tsx +39 -39
- package/templates/default/components/locale/locale-switcher.tsx +98 -98
- package/templates/default/components/media/dropzone.tsx +154 -154
- package/templates/default/components/media/protected-document.tsx +44 -44
- package/templates/default/components/media/protected-image.tsx +143 -143
- package/templates/default/components/media/protected-video.tsx +76 -76
- package/templates/default/components/multi-select.tsx +1150 -1150
- package/templates/default/components/pages/admins-page.tsx +43 -43
- package/templates/default/components/pages/browse-page.tsx +106 -106
- package/templates/default/components/pages/categorized-section-page.tsx +31 -31
- package/templates/default/components/pages/dashboard-page-alt.tsx +45 -45
- package/templates/default/components/pages/item-edit-page.tsx +267 -267
- package/templates/default/components/pages/log-page.tsx +107 -107
- package/templates/default/components/pages/new-page.tsx +183 -183
- package/templates/default/components/pages/section-page.tsx +203 -203
- package/templates/default/components/pages/settings-page.tsx +232 -232
- package/templates/default/components/pagination/pagination-buttons.tsx +147 -147
- package/templates/default/components/pagination/pagination.tsx +36 -36
- package/templates/default/components/sections/category-delete-confirm-page.tsx +130 -130
- package/templates/default/components/sections/category-section-select-input.tsx +139 -139
- package/templates/default/components/sections/conditional-fields.tsx +49 -49
- package/templates/default/components/sections/section-icon.tsx +8 -8
- package/templates/default/components/sections/section-item-card.tsx +143 -143
- package/templates/default/components/sections/section-item-status-badge.tsx +17 -17
- package/templates/default/components/sections/select-input-buttons.tsx +125 -125
- package/templates/default/components/select-box.tsx +98 -98
- package/templates/default/components/ui/accordion.tsx +53 -53
- package/templates/default/components/ui/alert-dialog.tsx +113 -113
- package/templates/default/components/ui/alert.tsx +47 -47
- package/templates/default/components/ui/badge.tsx +38 -38
- package/templates/default/components/ui/card.tsx +43 -43
- package/templates/default/components/ui/command.tsx +137 -137
- package/templates/default/components/ui/custom-alert-dialog.tsx +113 -113
- package/templates/default/components/ui/custom-dialog.tsx +123 -123
- package/templates/default/components/ui/dialog.tsx +123 -123
- package/templates/default/components/ui/direction.tsx +22 -22
- package/templates/default/components/ui/dropdown-menu.tsx +182 -182
- package/templates/default/components/ui/input-group.tsx +54 -54
- package/templates/default/components/ui/input.tsx +22 -22
- package/templates/default/components/ui/label.tsx +19 -19
- package/templates/default/components/ui/popover.tsx +42 -42
- package/templates/default/components/ui/progress.tsx +31 -31
- package/templates/default/components/ui/scroll-area.tsx +42 -42
- package/templates/default/components/ui/select.tsx +165 -165
- package/templates/default/components/ui/separator.tsx +28 -28
- package/templates/default/components/ui/sheet.tsx +103 -103
- package/templates/default/components/ui/spinner.tsx +16 -16
- package/templates/default/components/ui/switch.tsx +29 -29
- package/templates/default/components/ui/table.tsx +83 -83
- package/templates/default/components/ui/tabs.tsx +55 -55
- package/templates/default/components/ui/toast.tsx +113 -113
- package/templates/default/components/ui/toaster.tsx +35 -35
- package/templates/default/components/ui/tooltip.tsx +30 -30
- package/templates/default/components/ui/use-toast.ts +187 -187
- package/templates/default/drizzle.config.ts +4 -4
- package/templates/default/dynamic-schemas/schema.ts +225 -75
- package/templates/default/env/env.ts +46 -46
- package/templates/default/envConfig.ts +4 -4
- package/templates/default/lib/postinstall.js +14 -14
- package/templates/default/lib/utils.ts +6 -6
- package/templates/default/next-env.d.ts +6 -6
- package/templates/default/next.config.ts +24 -24
- package/templates/default/package.json +1 -1
- package/templates/default/postcss.config.mjs +6 -6
- package/templates/default/proxy.ts +32 -32
- package/templates/default/tsconfig.json +48 -48
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import Link from 'next/link'
|
|
2
|
-
import classNames from 'classnames'
|
|
3
|
-
import { useState } from 'react'
|
|
4
|
-
import { SidebarItemProps } from 'nextjs-cms/core/types'
|
|
5
|
-
import { useAutoAnimate } from '@formkit/auto-animate/react'
|
|
6
|
-
import { ChevronDownIcon, ChevronUpIcon, FolderIcon, PlusIcon } from 'lucide-react'
|
|
7
|
-
import { useI18n } from 'nextjs-cms/translations/client'
|
|
8
|
-
import SectionIcon from '@/components/sections/section-icon'
|
|
9
|
-
|
|
10
|
-
export default function SidebarDropdownItem({ item, closeSideBar }: SidebarItemProps) {
|
|
11
|
-
const t = useI18n()
|
|
12
|
-
const [parent] = useAutoAnimate()
|
|
13
|
-
const [open, setOpen] = useState(false)
|
|
14
|
-
return (
|
|
15
|
-
<div ref={parent}>
|
|
16
|
-
<div
|
|
17
|
-
className={classNames({
|
|
18
|
-
'flex cursor-pointer text-white hover:bg-indigo-900 dark:hover:bg-emerald-600': true, //colors
|
|
19
|
-
'transition-colors duration-100': false, //animation
|
|
20
|
-
'gap-4 rounded-md p-2': true,
|
|
21
|
-
'rounded-b-none bg-indigo-700 dark:bg-emerald-600': open,
|
|
22
|
-
})}
|
|
23
|
-
onClick={() => setOpen((prev) => !prev)}
|
|
24
|
-
>
|
|
25
|
-
<li className='relative flex w-full items-center justify-between gap-2'>
|
|
26
|
-
<span className='flex items-center gap-2 text-start'>
|
|
27
|
-
{item.icon && <SectionIcon name={item.icon} className='size-4' />}
|
|
28
|
-
<span>{item.title}</span>
|
|
29
|
-
</span>
|
|
30
|
-
<span>
|
|
31
|
-
{open ? (
|
|
32
|
-
<ChevronUpIcon className='h-5 w-5' />
|
|
33
|
-
) : (
|
|
34
|
-
<ChevronDownIcon className='h-5 w-5' />
|
|
35
|
-
)}
|
|
36
|
-
</span>
|
|
37
|
-
</li>
|
|
38
|
-
</div>
|
|
39
|
-
{open && (
|
|
40
|
-
<div
|
|
41
|
-
className={classNames({
|
|
42
|
-
'rounded border border-t-0 border-indigo-700/50 text-white dark:border-emerald-600/50': true, //colors
|
|
43
|
-
'transition-colors duration-100': false, //animation
|
|
44
|
-
'flex flex-col items-stretch rounded-md rounded-t-none py-2': true,
|
|
45
|
-
})}
|
|
46
|
-
>
|
|
47
|
-
<Link
|
|
48
|
-
onClick={closeSideBar}
|
|
49
|
-
href={`/new${item.path}`}
|
|
50
|
-
className={classNames({
|
|
51
|
-
'flex rounded text-white hover:underline': true, //colors
|
|
52
|
-
'transition-colors duration-100': false, //animation
|
|
53
|
-
'mx-3 gap-4 p-2': true,
|
|
54
|
-
})}
|
|
55
|
-
>
|
|
56
|
-
<li className='flex flex-row items-center gap-1'>
|
|
57
|
-
<span>
|
|
58
|
-
<PlusIcon className='size-4' />
|
|
59
|
-
</span>
|
|
60
|
-
<span>{t('new')}</span>
|
|
61
|
-
</li>
|
|
62
|
-
</Link>
|
|
63
|
-
<Link
|
|
64
|
-
onClick={closeSideBar}
|
|
65
|
-
href={`/browse${item.path}`}
|
|
66
|
-
className={classNames({
|
|
67
|
-
'flex rounded text-white hover:underline': true, //colors
|
|
68
|
-
'transition-colors duration-100': false, //animation
|
|
69
|
-
'mx-3 gap-4 p-2': true,
|
|
70
|
-
})}
|
|
71
|
-
>
|
|
72
|
-
<li className='flex flex-row items-center gap-1'>
|
|
73
|
-
<span>
|
|
74
|
-
<FolderIcon className='size-4' />
|
|
75
|
-
</span>
|
|
76
|
-
<span>{t('browse')}</span>
|
|
77
|
-
</li>
|
|
78
|
-
</Link>
|
|
79
|
-
</div>
|
|
80
|
-
)}
|
|
81
|
-
</div>
|
|
82
|
-
)
|
|
83
|
-
}
|
|
1
|
+
import Link from 'next/link'
|
|
2
|
+
import classNames from 'classnames'
|
|
3
|
+
import { useState } from 'react'
|
|
4
|
+
import { SidebarItemProps } from 'nextjs-cms/core/types'
|
|
5
|
+
import { useAutoAnimate } from '@formkit/auto-animate/react'
|
|
6
|
+
import { ChevronDownIcon, ChevronUpIcon, FolderIcon, PlusIcon } from 'lucide-react'
|
|
7
|
+
import { useI18n } from 'nextjs-cms/translations/client'
|
|
8
|
+
import SectionIcon from '@/components/sections/section-icon'
|
|
9
|
+
|
|
10
|
+
export default function SidebarDropdownItem({ item, closeSideBar }: SidebarItemProps) {
|
|
11
|
+
const t = useI18n()
|
|
12
|
+
const [parent] = useAutoAnimate()
|
|
13
|
+
const [open, setOpen] = useState(false)
|
|
14
|
+
return (
|
|
15
|
+
<div ref={parent}>
|
|
16
|
+
<div
|
|
17
|
+
className={classNames({
|
|
18
|
+
'flex cursor-pointer text-white hover:bg-indigo-900 dark:hover:bg-emerald-600': true, //colors
|
|
19
|
+
'transition-colors duration-100': false, //animation
|
|
20
|
+
'gap-4 rounded-md p-2': true,
|
|
21
|
+
'rounded-b-none bg-indigo-700 dark:bg-emerald-600': open,
|
|
22
|
+
})}
|
|
23
|
+
onClick={() => setOpen((prev) => !prev)}
|
|
24
|
+
>
|
|
25
|
+
<li className='relative flex w-full items-center justify-between gap-2'>
|
|
26
|
+
<span className='flex items-center gap-2 text-start'>
|
|
27
|
+
{item.icon && <SectionIcon name={item.icon} className='size-4' />}
|
|
28
|
+
<span>{item.title}</span>
|
|
29
|
+
</span>
|
|
30
|
+
<span>
|
|
31
|
+
{open ? (
|
|
32
|
+
<ChevronUpIcon className='h-5 w-5' />
|
|
33
|
+
) : (
|
|
34
|
+
<ChevronDownIcon className='h-5 w-5' />
|
|
35
|
+
)}
|
|
36
|
+
</span>
|
|
37
|
+
</li>
|
|
38
|
+
</div>
|
|
39
|
+
{open && (
|
|
40
|
+
<div
|
|
41
|
+
className={classNames({
|
|
42
|
+
'rounded border border-t-0 border-indigo-700/50 text-white dark:border-emerald-600/50': true, //colors
|
|
43
|
+
'transition-colors duration-100': false, //animation
|
|
44
|
+
'flex flex-col items-stretch rounded-md rounded-t-none py-2': true,
|
|
45
|
+
})}
|
|
46
|
+
>
|
|
47
|
+
<Link
|
|
48
|
+
onClick={closeSideBar}
|
|
49
|
+
href={`/new${item.path}`}
|
|
50
|
+
className={classNames({
|
|
51
|
+
'flex rounded text-white hover:underline': true, //colors
|
|
52
|
+
'transition-colors duration-100': false, //animation
|
|
53
|
+
'mx-3 gap-4 p-2': true,
|
|
54
|
+
})}
|
|
55
|
+
>
|
|
56
|
+
<li className='flex flex-row items-center gap-1'>
|
|
57
|
+
<span>
|
|
58
|
+
<PlusIcon className='size-4' />
|
|
59
|
+
</span>
|
|
60
|
+
<span>{t('new')}</span>
|
|
61
|
+
</li>
|
|
62
|
+
</Link>
|
|
63
|
+
<Link
|
|
64
|
+
onClick={closeSideBar}
|
|
65
|
+
href={`/browse${item.path}`}
|
|
66
|
+
className={classNames({
|
|
67
|
+
'flex rounded text-white hover:underline': true, //colors
|
|
68
|
+
'transition-colors duration-100': false, //animation
|
|
69
|
+
'mx-3 gap-4 p-2': true,
|
|
70
|
+
})}
|
|
71
|
+
>
|
|
72
|
+
<li className='flex flex-row items-center gap-1'>
|
|
73
|
+
<span>
|
|
74
|
+
<FolderIcon className='size-4' />
|
|
75
|
+
</span>
|
|
76
|
+
<span>{t('browse')}</span>
|
|
77
|
+
</li>
|
|
78
|
+
</Link>
|
|
79
|
+
</div>
|
|
80
|
+
)}
|
|
81
|
+
</div>
|
|
82
|
+
)
|
|
83
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import Link from 'next/link'
|
|
2
|
-
import classNames from 'classnames'
|
|
3
|
-
import { SidebarItemProps } from 'nextjs-cms/core/types'
|
|
4
|
-
import SectionIcon from '@/components/sections/section-icon'
|
|
5
|
-
|
|
6
|
-
export default function SidebarItem({ item, closeSideBar }: SidebarItemProps) {
|
|
7
|
-
return (
|
|
8
|
-
<Link
|
|
9
|
-
onClick={closeSideBar}
|
|
10
|
-
href={item.path}
|
|
11
|
-
className={classNames({
|
|
12
|
-
'rounded-lg text-white hover:bg-indigo-900 dark:hover:bg-emerald-600': true, //colors
|
|
13
|
-
'transition-colors duration-100': false, //animation
|
|
14
|
-
'gap-4 p-2': true,
|
|
15
|
-
'text-start': true, // RTL support
|
|
16
|
-
})}
|
|
17
|
-
>
|
|
18
|
-
<span className='flex items-center gap-2'>
|
|
19
|
-
{item.icon && <SectionIcon name={item.icon} className='size-4' />}
|
|
20
|
-
<span>{item.title}</span>
|
|
21
|
-
</span>
|
|
22
|
-
</Link>
|
|
23
|
-
)
|
|
24
|
-
}
|
|
1
|
+
import Link from 'next/link'
|
|
2
|
+
import classNames from 'classnames'
|
|
3
|
+
import { SidebarItemProps } from 'nextjs-cms/core/types'
|
|
4
|
+
import SectionIcon from '@/components/sections/section-icon'
|
|
5
|
+
|
|
6
|
+
export default function SidebarItem({ item, closeSideBar }: SidebarItemProps) {
|
|
7
|
+
return (
|
|
8
|
+
<Link
|
|
9
|
+
onClick={closeSideBar}
|
|
10
|
+
href={item.path}
|
|
11
|
+
className={classNames({
|
|
12
|
+
'rounded-lg text-white hover:bg-indigo-900 dark:hover:bg-emerald-600': true, //colors
|
|
13
|
+
'transition-colors duration-100': false, //animation
|
|
14
|
+
'gap-4 p-2': true,
|
|
15
|
+
'text-start': true, // RTL support
|
|
16
|
+
})}
|
|
17
|
+
>
|
|
18
|
+
<span className='flex items-center gap-2'>
|
|
19
|
+
{item.icon && <SectionIcon name={item.icon} className='size-4' />}
|
|
20
|
+
<span>{item.title}</span>
|
|
21
|
+
</span>
|
|
22
|
+
</Link>
|
|
23
|
+
)
|
|
24
|
+
}
|