@clidey/dory 0.21.4 → 0.23.0
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/bin/dory.ts +18 -4
- package/dist/api-playground-demo.mdx +119 -0
- package/dist/api-reference/asyncapi.json +324 -0
- package/dist/api-reference/openapi.json +366 -0
- package/dist/api-reference/operations/create.mdx +5 -0
- package/dist/api-reference/operations/delete.mdx +5 -0
- package/dist/api-reference/operations/get.mdx +5 -0
- package/dist/api-reference/operations/update.mdx +5 -0
- package/dist/api-reference/websocket-operations/receive-chat-message.mdx +5 -0
- package/dist/api-reference/websocket-operations/receive-notifications.mdx +5 -0
- package/dist/api-reference/websocket-operations/receive-presence-update.mdx +5 -0
- package/dist/api-reference/websocket-operations/send-chat-message.mdx +5 -0
- package/dist/api-reference/websocket-operations/send-presence-update.mdx +5 -0
- package/dist/dory.json +64 -0
- package/dist/favicon.svg +75 -0
- package/dist/features.mdx +440 -0
- package/dist/frontmatter.json +77 -0
- package/dist/index.html +55 -0
- package/dist/introduction.mdx +44 -0
- package/dist/llms.txt +561 -0
- package/dist/websocket-playground-demo.mdx +135 -0
- package/docs/dory.json +5 -0
- package/docs/favicon.svg +1 -1
- package/docs/introduction.mdx +2 -2
- package/package.json +13 -10
- package/src/app.css +2 -0
- package/src/components/dropdown.tsx +30 -26
- package/src/components/loading.tsx +6 -8
- package/src/components/navigation.tsx +8 -6
- package/src/components/notification.tsx +9 -93
- package/src/components/routes.tsx +1 -1
- package/src/components/search.tsx +31 -104
- package/src/components/store.ts +4 -1
- package/src/main.tsx +9 -5
- package/src/mdx/accordion.tsx +21 -28
- package/src/mdx/api-playground.tsx +68 -83
- package/src/mdx/api.tsx +21 -21
- package/src/mdx/async-api.tsx +15 -31
- package/src/mdx/callout.tsx +27 -43
- package/src/mdx/card.tsx +20 -14
- package/src/mdx/code.tsx +26 -26
- package/src/mdx/expandable.tsx +21 -25
- package/src/mdx/fence.tsx +2 -2
- package/src/mdx/list.tsx +2 -2
- package/src/mdx/open-api.tsx +31 -45
- package/src/mdx/table.tsx +8 -3
- package/src/mdx/tag.tsx +27 -40
- package/src/mdx/text.tsx +3 -2
- package/src/mdx/websocket-playground.tsx +150 -81
- package/src/theme.scss +50 -106
- package/src/types/config.ts +47 -0
- package/src/ui/header.tsx +12 -9
- package/src/ui/layout.tsx +5 -4
- package/src/ui/mobile-navigation.tsx +36 -63
- package/src/ui/table-of-content.tsx +3 -3
- package/src/utils/colors.ts +54 -0
- package/src/utils/fonts.ts +4 -1
- package/vite.config.ts +2 -0
- package/.claude/settings.json +0 -29
- package/.claude/settings.local.json +0 -12
- package/.github/ISSUE_TEMPLATE/anything-else.md +0 -10
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -39
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/claude.yml +0 -37
- package/docs/assets/dory.jpeg +0 -0
- package/k8s/Dockerfile +0 -14
- package/k8s/config/nginx-default.conf +0 -22
- package/k8s/dev.Dockerfile +0 -16
- package/k8s/docs.Dockerfile +0 -15
- package/public/demo.mov +0 -0
- package/src/components/dark-mode-toggle.tsx +0 -25
- package/src/index.css +0 -24
- package/src/utils/hooks.ts +0 -46
- /package/{assets → dist/logo}/logo.svg +0 -0
package/src/ui/header.tsx
CHANGED
|
@@ -3,10 +3,13 @@ import { useEffect, useMemo, useState } from 'preact/hooks';
|
|
|
3
3
|
import { Link } from 'wouter-preact';
|
|
4
4
|
import { usePathname } from 'wouter-preact/use-browser-location';
|
|
5
5
|
import docsConfig from '../../docs/dory.json';
|
|
6
|
-
import {
|
|
6
|
+
import type { DoryConfig } from '../types/config';
|
|
7
7
|
import { MobileSearch, Search } from '../components/search';
|
|
8
8
|
import { ALL_NAVIGATION } from '../components/store';
|
|
9
9
|
import { MobileNavigation } from './mobile-navigation';
|
|
10
|
+
import { ModeToggle } from '@clidey/ux';
|
|
11
|
+
|
|
12
|
+
const config = docsConfig as DoryConfig;
|
|
10
13
|
|
|
11
14
|
function TopLevelNavItem({ href, children, isActive }: { href: string; children: string; isActive?: boolean }) {
|
|
12
15
|
return (
|
|
@@ -14,10 +17,10 @@ function TopLevelNavItem({ href, children, isActive }: { href: string; children:
|
|
|
14
17
|
<Link
|
|
15
18
|
to={href}
|
|
16
19
|
className={classNames(
|
|
17
|
-
"text-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
"text-xs transition hover:opacity-80",
|
|
21
|
+
{
|
|
22
|
+
"text-brand-foreground": isActive,
|
|
23
|
+
},
|
|
21
24
|
)}
|
|
22
25
|
>
|
|
23
26
|
{children}
|
|
@@ -31,7 +34,7 @@ export function Header({ className }: { className?: string }) {
|
|
|
31
34
|
const pathname = usePathname();
|
|
32
35
|
|
|
33
36
|
const { light, dark } = useMemo(() => {
|
|
34
|
-
return { light:
|
|
37
|
+
return { light: config.logo.light, dark: config.logo.dark };
|
|
35
38
|
}, []);
|
|
36
39
|
|
|
37
40
|
useEffect(() => {
|
|
@@ -60,7 +63,7 @@ export function Header({ className }: { className?: string }) {
|
|
|
60
63
|
<div className="flex items-center grow gap-2">
|
|
61
64
|
<img src={`/${light}`} alt="logo" className="w-8 hidden dark:block" />
|
|
62
65
|
<img src={`/${dark}`} alt="logo" className="w-8 block dark:hidden" />
|
|
63
|
-
<h1 className="text-base lg:text-2xl font-bold">{
|
|
66
|
+
<h1 className="text-base lg:text-2xl font-bold">{config.name}</h1>
|
|
64
67
|
</div>
|
|
65
68
|
<nav className="hidden md:block">
|
|
66
69
|
<ul role="list" className="flex items-center gap-8">
|
|
@@ -76,10 +79,10 @@ export function Header({ className }: { className?: string }) {
|
|
|
76
79
|
</ul>
|
|
77
80
|
</nav>
|
|
78
81
|
<div className="hidden md:block md:h-5 md:w-px md:bg-zinc-900/10 md:dark:bg-white/15" />
|
|
79
|
-
<div className="flex items-center gap-3">
|
|
82
|
+
<div className="flex items-center gap-3" data-testid="header-actions">
|
|
80
83
|
<MobileSearch />
|
|
81
84
|
<Search />
|
|
82
|
-
<
|
|
85
|
+
<ModeToggle data-testid="mode-toggle" />
|
|
83
86
|
<MobileNavigation />
|
|
84
87
|
</div>
|
|
85
88
|
</div>
|
package/src/ui/layout.tsx
CHANGED
|
@@ -11,6 +11,7 @@ import { TableOfContents } from './table-of-content';
|
|
|
11
11
|
import { Loading } from '../components/loading';
|
|
12
12
|
import Dropdown from '../components/dropdown';
|
|
13
13
|
import { useNotification } from '../components/notification';
|
|
14
|
+
import { SparkleIcon } from 'lucide-react';
|
|
14
15
|
|
|
15
16
|
interface LayoutProps {
|
|
16
17
|
children: ComponentChildren;
|
|
@@ -144,16 +145,16 @@ export default function Layout({ children }: LayoutProps) {
|
|
|
144
145
|
return (
|
|
145
146
|
<div className="flex w-full flex-col">
|
|
146
147
|
<Header />
|
|
147
|
-
<div id="container" className="relative
|
|
148
|
+
<div id="container" className="relative flex w-full max-w-8xl sm:px-2 lg:px-8">
|
|
148
149
|
<div className="hidden lg:relative lg:block lg:flex-none">
|
|
149
150
|
<div className="sticky top-[4.75rem] -ml-0.5 h-[calc(100vh-4.75rem)] w-64 overflow-x-hidden overflow-y-auto py-16 pr-8 pl-0.5 xl:w-72 xl:pr-16">
|
|
150
151
|
<Navigation />
|
|
151
152
|
</div>
|
|
152
153
|
</div>
|
|
153
154
|
<main className="flex px-4 py-16 sm:px-6 lg:px-8 grow">
|
|
154
|
-
<div className="
|
|
155
|
+
<div className="min-w-0 w-full">
|
|
155
156
|
<article className="h-full flex flex-1 flex-col">
|
|
156
|
-
<div className="flex justify-between items-
|
|
157
|
+
<div className="flex justify-between items-start">
|
|
157
158
|
<header className="mb-8">
|
|
158
159
|
{title && (
|
|
159
160
|
<h1 className="font-display text-lg tracking-tight">
|
|
@@ -168,7 +169,7 @@ export default function Layout({ children }: LayoutProps) {
|
|
|
168
169
|
</header>
|
|
169
170
|
{
|
|
170
171
|
openAPIJSON == null && asyncAPIJSON == null &&
|
|
171
|
-
<Dropdown className=
|
|
172
|
+
<Dropdown className="gap-0" buttonLabel={<SparkleIcon className="w-4 h-4" />} items={dropdownItems} />
|
|
172
173
|
}
|
|
173
174
|
</div>
|
|
174
175
|
<div className="flex-1 min-h-[calc(100vh-2rem)]">
|
|
@@ -1,91 +1,64 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
DialogBackdrop,
|
|
6
|
-
DialogPanel,
|
|
7
|
-
TransitionChild,
|
|
8
|
-
} from '@headlessui/react'
|
|
9
|
-
import { motion } from 'motion/react'
|
|
10
|
-
import { createContext, Suspense, useContext, useState } from 'react'
|
|
3
|
+
import { Sheet, SheetContent, Button } from '@clidey/ux'
|
|
4
|
+
import { createContext, Suspense, useCallback, useContext, useRef, useState } from 'react'
|
|
11
5
|
|
|
12
6
|
import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'
|
|
13
7
|
import { Navigation } from '../components/navigation'
|
|
14
8
|
|
|
15
9
|
const IsInsideMobileNavigationContext = createContext(false)
|
|
16
10
|
|
|
17
|
-
function MobileNavigationDialog({
|
|
18
|
-
isOpen,
|
|
19
|
-
close,
|
|
20
|
-
}: {
|
|
21
|
-
isOpen: boolean
|
|
22
|
-
close: () => void
|
|
23
|
-
}) {
|
|
24
|
-
return (
|
|
25
|
-
<Dialog
|
|
26
|
-
transition
|
|
27
|
-
open={isOpen}
|
|
28
|
-
onClose={close}
|
|
29
|
-
className="fixed inset-0 z-50 lg:hidden"
|
|
30
|
-
>
|
|
31
|
-
<DialogBackdrop
|
|
32
|
-
transition
|
|
33
|
-
className="fixed inset-0 top-0 pt-8 bg-zinc-400/20 backdrop-blur-xs data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in dark:bg-black/40"
|
|
34
|
-
/>
|
|
35
|
-
|
|
36
|
-
<DialogPanel>
|
|
37
|
-
<TransitionChild>
|
|
38
|
-
<motion.div
|
|
39
|
-
layoutScroll
|
|
40
|
-
className="fixed top-0 bottom-0 left-0 w-full overflow-y-auto bg-white px-4 pt-8 pb-4 shadow-lg ring-1 shadow-zinc-900/10 ring-zinc-900/7.5 duration-500 ease-in-out data-closed:-translate-x-full min-[416px]:max-w-sm sm:px-6 sm:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 flex flex-col justify-between"
|
|
41
|
-
>
|
|
42
|
-
<Navigation />
|
|
43
|
-
<div class="flex flex-col justify-end items-end mb-4 mr-2" onClick={close}>
|
|
44
|
-
<XMarkIcon className="w-8 stroke-zinc-900 dark:stroke-white" />
|
|
45
|
-
</div>
|
|
46
|
-
</motion.div>
|
|
47
|
-
</TransitionChild>
|
|
48
|
-
</DialogPanel>
|
|
49
|
-
</Dialog>
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
11
|
export function useIsInsideMobileNavigation() {
|
|
54
12
|
return useContext(IsInsideMobileNavigationContext)
|
|
55
13
|
}
|
|
56
14
|
|
|
57
15
|
export function useMobileNavigation() {
|
|
58
16
|
const [isOpen, setIsOpen] = useState(false)
|
|
59
|
-
|
|
17
|
+
const isOpenRef = useRef(isOpen)
|
|
18
|
+
isOpenRef.current = isOpen
|
|
19
|
+
|
|
20
|
+
const open = useCallback(() => setIsOpen(true), [])
|
|
21
|
+
const close = useCallback(() => setIsOpen(false), [])
|
|
22
|
+
const toggle = useCallback(() => setIsOpen(prev => !prev), [])
|
|
23
|
+
|
|
60
24
|
return {
|
|
61
25
|
isOpen,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
26
|
+
isOpenRef,
|
|
27
|
+
open,
|
|
28
|
+
close,
|
|
29
|
+
toggle,
|
|
65
30
|
}
|
|
66
31
|
}
|
|
67
32
|
|
|
68
33
|
export function MobileNavigation() {
|
|
69
34
|
const isInsideMobileNavigation = useIsInsideMobileNavigation()
|
|
70
|
-
const { isOpen,
|
|
35
|
+
const { isOpen, open, close } = useMobileNavigation()
|
|
71
36
|
const ToggleIcon = isOpen ? XMarkIcon : Bars3Icon;
|
|
72
37
|
|
|
73
38
|
return (
|
|
74
39
|
<IsInsideMobileNavigationContext.Provider value={true}>
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
40
|
+
<Sheet open={isOpen} onOpenChange={(status) => {
|
|
41
|
+
if (!status) {
|
|
42
|
+
close();
|
|
43
|
+
}
|
|
44
|
+
}}>
|
|
45
|
+
<Button
|
|
46
|
+
variant="outline"
|
|
47
|
+
size="icon"
|
|
48
|
+
className="relative flex size-6 lg:hidden p-4"
|
|
49
|
+
aria-label="Toggle navigation"
|
|
50
|
+
onClick={open}
|
|
51
|
+
>
|
|
52
|
+
<ToggleIcon className="w-8 stroke-zinc-900 dark:stroke-white" />
|
|
53
|
+
</Button>
|
|
54
|
+
{!isInsideMobileNavigation && (
|
|
55
|
+
<Suspense fallback={null}>
|
|
56
|
+
<SheetContent side="left" className="w-full sm:max-w-sm p-8 overflow-y-auto flex flex-col justify-between">
|
|
57
|
+
<Navigation />
|
|
58
|
+
</SheetContent>
|
|
59
|
+
</Suspense>
|
|
60
|
+
)}
|
|
61
|
+
</Sheet>
|
|
89
62
|
</IsInsideMobileNavigationContext.Provider>
|
|
90
63
|
)
|
|
91
64
|
}
|
|
@@ -114,7 +114,7 @@ export function TableOfContents() {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
return (
|
|
117
|
-
<div className="hidden xl:sticky xl:top-[4.75rem] xl:-mr-6 xl:block xl:h-[calc(100vh-4.75rem)] xl:flex-none xl:overflow-y-auto xl:py-16 xl:pr-6">
|
|
117
|
+
<div className="hidden xl:sticky xl:top-[4.75rem] xl:-mr-6 xl:block xl:h-[calc(100vh-4.75rem)] xl:flex-none xl:overflow-y-auto xl:py-16 xl:pr-6 pl-4">
|
|
118
118
|
<nav aria-labelledby="on-this-page-title" className="w-56">
|
|
119
119
|
{sections.length > 0 && (
|
|
120
120
|
<>
|
|
@@ -131,7 +131,7 @@ export function TableOfContents() {
|
|
|
131
131
|
<a
|
|
132
132
|
href={`#${section.id}`}
|
|
133
133
|
className={classNames({
|
|
134
|
-
"text-
|
|
134
|
+
"text-brand-foreground": isActive(section),
|
|
135
135
|
"font-normal text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-300": !isActive(section),
|
|
136
136
|
})}>
|
|
137
137
|
{section.title}
|
|
@@ -145,7 +145,7 @@ export function TableOfContents() {
|
|
|
145
145
|
href={`#${subSection.id}`}
|
|
146
146
|
className={
|
|
147
147
|
isActive(subSection)
|
|
148
|
-
? 'text-
|
|
148
|
+
? 'text-brand-foreground'
|
|
149
149
|
: 'hover:text-slate-600 dark:hover:text-slate-300'
|
|
150
150
|
}
|
|
151
151
|
>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import docsConfig from '../../docs/dory.json';
|
|
2
|
+
import type { DoryConfig } from '../types/config';
|
|
3
|
+
|
|
4
|
+
const config = docsConfig as DoryConfig;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Converts hex color to RGB values for CSS variable usage
|
|
8
|
+
*/
|
|
9
|
+
function hexToRgb(hex: string): string {
|
|
10
|
+
// Remove # if present
|
|
11
|
+
const cleanHex = hex.replace('#', '');
|
|
12
|
+
|
|
13
|
+
// Parse hex values
|
|
14
|
+
const r = parseInt(cleanHex.substring(0, 2), 16);
|
|
15
|
+
const g = parseInt(cleanHex.substring(2, 4), 16);
|
|
16
|
+
const b = parseInt(cleanHex.substring(4, 6), 16);
|
|
17
|
+
|
|
18
|
+
return `${r} ${g} ${b}`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Load and apply brand colors from dory.json configuration
|
|
23
|
+
* Sets CSS variables for use throughout the application
|
|
24
|
+
*/
|
|
25
|
+
export function loadColors() {
|
|
26
|
+
const { colors } = config;
|
|
27
|
+
if (!colors) return;
|
|
28
|
+
|
|
29
|
+
// Set CSS variables on the root element for both light and dark modes
|
|
30
|
+
const root = document.documentElement;
|
|
31
|
+
|
|
32
|
+
// Set primary color (used in both light and dark mode)
|
|
33
|
+
if (colors.primary) {
|
|
34
|
+
root.style.setProperty('--brand-primary', colors.primary);
|
|
35
|
+
root.style.setProperty('--brand-primary-rgb', hexToRgb(colors.primary));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Set light mode brand color
|
|
39
|
+
if (colors.light) {
|
|
40
|
+
root.style.setProperty('--brand-light', colors.light);
|
|
41
|
+
root.style.setProperty('--brand-light-rgb', hexToRgb(colors.light));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Set dark mode brand color
|
|
45
|
+
if (colors.dark) {
|
|
46
|
+
root.style.setProperty('--brand-dark', colors.dark);
|
|
47
|
+
root.style.setProperty('--brand-dark-rgb', hexToRgb(colors.dark));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Set the legacy variable for backward compatibility
|
|
51
|
+
if (colors.primary) {
|
|
52
|
+
root.style.setProperty('--brand-foreground', colors.primary);
|
|
53
|
+
}
|
|
54
|
+
}
|
package/src/utils/fonts.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import docsConfig from '../../docs/dory.json';
|
|
2
|
+
import type { DoryConfig } from '../types/config';
|
|
3
|
+
|
|
4
|
+
const config = docsConfig as DoryConfig;
|
|
2
5
|
|
|
3
6
|
export function loadFonts() {
|
|
4
|
-
const { fonts } =
|
|
7
|
+
const { fonts } = config;
|
|
5
8
|
if (!fonts) return;
|
|
6
9
|
|
|
7
10
|
// Create a style element for the font face
|
package/vite.config.ts
CHANGED
package/.claude/settings.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(find:*)",
|
|
5
|
-
"Bash(grep:*)",
|
|
6
|
-
"Bash(rg:*)",
|
|
7
|
-
"Bash(npm run generate:*)",
|
|
8
|
-
"Bash(ls:*)",
|
|
9
|
-
"Bash(rm:*)",
|
|
10
|
-
"Bash(npm run build:*)",
|
|
11
|
-
"Bash(npx tsc:*)",
|
|
12
|
-
"Bash(npx typescript:*)",
|
|
13
|
-
"Bash(npm install:*)",
|
|
14
|
-
"Bash(pnpm install:*)",
|
|
15
|
-
"Bash(pnpm run:*)",
|
|
16
|
-
"Bash(node*)",
|
|
17
|
-
"Bash(git config*)",
|
|
18
|
-
"Bash(git checkout -b*)",
|
|
19
|
-
"Bash(git add*)",
|
|
20
|
-
"Bash(git commit -m*)",
|
|
21
|
-
"Bash(git push*)",
|
|
22
|
-
"Bash(gh pr create*)",
|
|
23
|
-
"Bash(git status*)",
|
|
24
|
-
"Bash(git diff*)",
|
|
25
|
-
"Bash(git log*)"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"enableAllProjectMcpServers": false
|
|
29
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Bug report
|
|
3
|
-
about: Create a report to help us improve Dory.
|
|
4
|
-
title: "[BUG] - {your title here}"
|
|
5
|
-
labels: bug
|
|
6
|
-
assignees: ''
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
**Describe the bug**
|
|
11
|
-
A clear and concise description of what the bug is.
|
|
12
|
-
|
|
13
|
-
**To Reproduce**
|
|
14
|
-
Steps to reproduce the behavior:
|
|
15
|
-
1. Go to '...'
|
|
16
|
-
2. Click on '....'
|
|
17
|
-
3. Scroll down to '....'
|
|
18
|
-
4. See error
|
|
19
|
-
|
|
20
|
-
**Expected behavior**
|
|
21
|
-
A clear and concise description of what you expected to happen.
|
|
22
|
-
|
|
23
|
-
**Screenshots**
|
|
24
|
-
If applicable, add screenshots to help explain your problem.
|
|
25
|
-
|
|
26
|
-
**Desktop (please complete the following information):**
|
|
27
|
-
- OS that Dory is running on: [e.g. Ubuntu]
|
|
28
|
-
- How you're running Dory: [e.g, Docker, exe, manually]
|
|
29
|
-
- Browser: [e.g. chrome, safari]
|
|
30
|
-
- Version: [e.g. 22]
|
|
31
|
-
|
|
32
|
-
**Smartphone (please complete the following information):**
|
|
33
|
-
- Device: [e.g. iPhone6]
|
|
34
|
-
- OS: [e.g. iOS8.1]
|
|
35
|
-
- Browser: [e.g. stock browser, safari]
|
|
36
|
-
- Version: [e.g. 22]
|
|
37
|
-
|
|
38
|
-
**Additional context**
|
|
39
|
-
Add any other context about the problem here.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Feature request
|
|
3
|
-
about: Suggest an idea for this project.
|
|
4
|
-
title: "[FR] - {your title here}"
|
|
5
|
-
labels: enhancement
|
|
6
|
-
assignees: ''
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
**Is your feature request related to a problem? Please describe.**
|
|
11
|
-
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
12
|
-
|
|
13
|
-
**Describe the solution you'd like**
|
|
14
|
-
A clear and concise description of what you want to happen.
|
|
15
|
-
|
|
16
|
-
**Describe alternatives you've considered**
|
|
17
|
-
A clear and concise description of any alternative solutions or features you've considered.
|
|
18
|
-
|
|
19
|
-
**Additional context**
|
|
20
|
-
Add any other context or screenshots about the feature request here.
|
package/.github/dependabot.yml
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
-
# package ecosystems to update and where the package manifests are located.
|
|
3
|
-
# Please see the documentation for all configuration options:
|
|
4
|
-
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
-
|
|
6
|
-
version: 2
|
|
7
|
-
updates:
|
|
8
|
-
- package-ecosystem: "npm"
|
|
9
|
-
directory: "/"
|
|
10
|
-
schedule:
|
|
11
|
-
interval: "daily"
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
name: Claude Code
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
issue_comment:
|
|
5
|
-
types: [created]
|
|
6
|
-
pull_request_review_comment:
|
|
7
|
-
types: [created]
|
|
8
|
-
issues:
|
|
9
|
-
types: [opened, assigned]
|
|
10
|
-
pull_request_review:
|
|
11
|
-
types: [submitted]
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
claude:
|
|
15
|
-
if: |
|
|
16
|
-
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
17
|
-
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
18
|
-
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
19
|
-
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
20
|
-
runs-on: ubuntu-latest
|
|
21
|
-
permissions:
|
|
22
|
-
contents: read
|
|
23
|
-
pull-requests: read
|
|
24
|
-
issues: read
|
|
25
|
-
id-token: write
|
|
26
|
-
steps:
|
|
27
|
-
- name: Checkout repository
|
|
28
|
-
uses: actions/checkout@v4
|
|
29
|
-
with:
|
|
30
|
-
fetch-depth: 1
|
|
31
|
-
|
|
32
|
-
- name: Run Claude Code
|
|
33
|
-
id: claude
|
|
34
|
-
uses: anthropics/claude-code-action@beta
|
|
35
|
-
with:
|
|
36
|
-
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
37
|
-
|
package/docs/assets/dory.jpeg
DELETED
|
Binary file
|
package/k8s/Dockerfile
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
FROM node:22.16-alpine
|
|
2
|
-
|
|
3
|
-
WORKDIR /app
|
|
4
|
-
|
|
5
|
-
# Install git
|
|
6
|
-
RUN apk add --no-cache git
|
|
7
|
-
|
|
8
|
-
COPY ./docs/logo/logo.svg /app/docs/logo/logo.svg
|
|
9
|
-
COPY ./k8s/config/nginx-default.conf /app/k8s/config/nginx-default.conf
|
|
10
|
-
|
|
11
|
-
RUN npm install -g @clidey/dory@0.21.1
|
|
12
|
-
EXPOSE 3000
|
|
13
|
-
|
|
14
|
-
CMD ["dory", "preview"]
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
server {
|
|
2
|
-
listen 80;
|
|
3
|
-
listen [::]:80;
|
|
4
|
-
server_name localhost;
|
|
5
|
-
|
|
6
|
-
location ^~ /docs {
|
|
7
|
-
alias /usr/share/docs;
|
|
8
|
-
index index.html index.htm;
|
|
9
|
-
try_files $uri $uri/ /index.html;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
location / {
|
|
13
|
-
root /usr/share/nginx/html;
|
|
14
|
-
index index.html index.htm;
|
|
15
|
-
try_files $uri /index.html;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
error_page 500 502 503 504 /50x.html;
|
|
19
|
-
location = /50x.html {
|
|
20
|
-
root /usr/share/nginx/html;
|
|
21
|
-
}
|
|
22
|
-
}
|
package/k8s/dev.Dockerfile
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
FROM node:22.16-alpine
|
|
2
|
-
|
|
3
|
-
WORKDIR /app
|
|
4
|
-
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
5
|
-
RUN apk add --no-cache git
|
|
6
|
-
|
|
7
|
-
COPY package.json pnpm-lock.yaml ./
|
|
8
|
-
RUN pnpm i
|
|
9
|
-
|
|
10
|
-
COPY . .
|
|
11
|
-
|
|
12
|
-
RUN rm -rf /app/src/data
|
|
13
|
-
|
|
14
|
-
EXPOSE 3000
|
|
15
|
-
|
|
16
|
-
CMD ["pnpm", "dev", "--host", "0.0.0.0", "--port", "3000"]
|
package/k8s/docs.Dockerfile
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
FROM node:20-alpine AS builder
|
|
2
|
-
|
|
3
|
-
RUN corepack enable && corepack prepare pnpm@10.10.0 --activate
|
|
4
|
-
WORKDIR /app
|
|
5
|
-
COPY package.json pnpm-lock.yaml ./
|
|
6
|
-
RUN pnpm install --frozen-lockfile
|
|
7
|
-
COPY . .
|
|
8
|
-
RUN pnpm build
|
|
9
|
-
|
|
10
|
-
FROM nginx:alpine
|
|
11
|
-
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
12
|
-
COPY --from=builder /app/k8s/config/nginx-default.conf /etc/nginx/conf.d/default.conf
|
|
13
|
-
EXPOSE 80
|
|
14
|
-
|
|
15
|
-
CMD ["nginx", "-g", "daemon off;"]
|
package/public/demo.mov
DELETED
|
Binary file
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { SunIcon, MoonIcon } from '@heroicons/react/24/outline';
|
|
2
|
-
import { useDarkMode } from '../utils/hooks';
|
|
3
|
-
import classNames from 'classnames';
|
|
4
|
-
|
|
5
|
-
export function DarkModeToggle() {
|
|
6
|
-
const { isDark, toggleDarkMode } = useDarkMode();
|
|
7
|
-
|
|
8
|
-
return (
|
|
9
|
-
<button
|
|
10
|
-
onClick={toggleDarkMode}
|
|
11
|
-
className={classNames(
|
|
12
|
-
'rounded-lg p-2 transition-colors duration-200',
|
|
13
|
-
'hover:bg-gray-100 dark:hover:bg-gray-800',
|
|
14
|
-
'focus:outline-none focus:ring-2 focus:ring-sky-500 focus:ring-offset-2 dark:focus:ring-offset-gray-900'
|
|
15
|
-
)}
|
|
16
|
-
aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}
|
|
17
|
-
title={isDark ? 'Switch to light mode' : 'Switch to dark mode'}>
|
|
18
|
-
{isDark ? (
|
|
19
|
-
<SunIcon className="h-5 w-5 text-yellow-500" />
|
|
20
|
-
) : (
|
|
21
|
-
<MoonIcon className="h-5 w-5 text-gray-600 dark:text-gray-400" />
|
|
22
|
-
)}
|
|
23
|
-
</button>
|
|
24
|
-
);
|
|
25
|
-
}
|
package/src/index.css
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
font-family: var(--font-family, system-ui, Avenir, Helvetica, Arial, sans-serif);
|
|
3
|
-
line-height: 1.5;
|
|
4
|
-
font-weight: 400;
|
|
5
|
-
|
|
6
|
-
font-synthesis: none;
|
|
7
|
-
text-rendering: optimizeLegibility;
|
|
8
|
-
-webkit-font-smoothing: antialiased;
|
|
9
|
-
-moz-osx-font-smoothing: grayscale;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
article h2:first-of-type {
|
|
14
|
-
display: none;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
article hr:first-of-type {
|
|
18
|
-
display: none;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
article img {
|
|
22
|
-
margin-top: 1rem;
|
|
23
|
-
margin-bottom: 1rem;
|
|
24
|
-
}
|