@donotdev/cli 0.0.3
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.md +48 -0
- package/README.md +291 -0
- package/dependencies-matrix.json +694 -0
- package/dist/bin/commands/build.d.ts +11 -0
- package/dist/bin/commands/build.d.ts.map +1 -0
- package/dist/bin/commands/build.js +8162 -0
- package/dist/bin/commands/build.js.map +1 -0
- package/dist/bin/commands/bump.d.ts +11 -0
- package/dist/bin/commands/bump.d.ts.map +1 -0
- package/dist/bin/commands/bump.js +8004 -0
- package/dist/bin/commands/bump.js.map +1 -0
- package/dist/bin/commands/cacheout.d.ts +11 -0
- package/dist/bin/commands/cacheout.d.ts.map +1 -0
- package/dist/bin/commands/cacheout.js +7630 -0
- package/dist/bin/commands/cacheout.js.map +1 -0
- package/dist/bin/commands/create-app.d.ts +11 -0
- package/dist/bin/commands/create-app.d.ts.map +1 -0
- package/dist/bin/commands/create-app.js +9032 -0
- package/dist/bin/commands/create-app.js.map +1 -0
- package/dist/bin/commands/create-project.d.ts +11 -0
- package/dist/bin/commands/create-project.d.ts.map +1 -0
- package/dist/bin/commands/create-project.js +9643 -0
- package/dist/bin/commands/create-project.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +11 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -0
- package/dist/bin/commands/deploy.js +9007 -0
- package/dist/bin/commands/deploy.js.map +1 -0
- package/dist/bin/commands/dev.d.ts +11 -0
- package/dist/bin/commands/dev.d.ts.map +1 -0
- package/dist/bin/commands/dev.js +7892 -0
- package/dist/bin/commands/dev.js.map +1 -0
- package/dist/bin/commands/emu.d.ts +11 -0
- package/dist/bin/commands/emu.d.ts.map +1 -0
- package/dist/bin/commands/emu.js +8302 -0
- package/dist/bin/commands/emu.js.map +1 -0
- package/dist/bin/commands/format.d.ts +11 -0
- package/dist/bin/commands/format.d.ts.map +1 -0
- package/dist/bin/commands/format.js +8009 -0
- package/dist/bin/commands/format.js.map +1 -0
- package/dist/bin/commands/lint.d.ts +11 -0
- package/dist/bin/commands/lint.d.ts.map +1 -0
- package/dist/bin/commands/lint.js +7481 -0
- package/dist/bin/commands/lint.js.map +1 -0
- package/dist/bin/commands/preview.d.ts +11 -0
- package/dist/bin/commands/preview.d.ts.map +1 -0
- package/dist/bin/commands/preview.js +7909 -0
- package/dist/bin/commands/preview.js.map +1 -0
- package/dist/bin/commands/sync-secrets.d.ts +11 -0
- package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
- package/dist/bin/commands/sync-secrets.js +8227 -0
- package/dist/bin/commands/sync-secrets.js.map +1 -0
- package/dist/bin/dndev.js +222 -0
- package/dist/bin/donotdev.js +222 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12820 -0
- package/dist/index.js.map +1 -0
- package/package.json +71 -0
- package/templates/app-demo/index.html.example +20 -0
- package/templates/app-demo/public/favicon.ico.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
- package/templates/app-demo/public/fonts/fonts.css.example +144 -0
- package/templates/app-demo/public/logo.png.example +0 -0
- package/templates/app-demo/public/logo.svg.example +1 -0
- package/templates/app-demo/public/manifest.json.example +10 -0
- package/templates/app-demo/src/App.tsx.example +17 -0
- package/templates/app-demo/src/Routes.tsx.example +20 -0
- package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
- package/templates/app-demo/src/globals.css.example +4 -0
- package/templates/app-demo/src/main.tsx.example +27 -0
- package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
- package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
- package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
- package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
- package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
- package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
- package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
- package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
- package/templates/app-demo/src/themes.css.example +179 -0
- package/templates/app-demo/tsconfig.json.example +9 -0
- package/templates/app-demo/vite.config.ts.example +53 -0
- package/templates/app-next/.env.example +92 -0
- package/templates/app-next/next.config.ts.example +8 -0
- package/templates/app-next/postcss.config.js.example +58 -0
- package/templates/app-next/service-account-key.json.example +2 -0
- package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
- package/templates/app-next/src/app/layout.tsx.example +52 -0
- package/templates/app-next/src/app/not-found.tsx.example +21 -0
- package/templates/app-next/src/config/app.ts.example +75 -0
- package/templates/app-next/src/config/legal.ts.example +170 -0
- package/templates/app-next/src/globals.css.example +15 -0
- package/templates/app-next/src/locales/dndev_en.json.example +516 -0
- package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
- package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
- package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
- package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
- package/templates/app-next/src/themes.css.example +179 -0
- package/templates/app-next/tsconfig.json.example +11 -0
- package/templates/app-payload/.env.example +28 -0
- package/templates/app-payload/README.md.example +233 -0
- package/templates/app-payload/collections/Company.ts.example +125 -0
- package/templates/app-payload/collections/Hero.ts.example +62 -0
- package/templates/app-payload/collections/Media.ts.example +41 -0
- package/templates/app-payload/collections/Products.ts.example +115 -0
- package/templates/app-payload/collections/Services.ts.example +104 -0
- package/templates/app-payload/collections/Testimonials.ts.example +92 -0
- package/templates/app-payload/collections/Users.ts.example +35 -0
- package/templates/app-payload/src/server.ts.example +79 -0
- package/templates/app-payload/tsconfig.json.example +24 -0
- package/templates/app-vite/.env.example +77 -0
- package/templates/app-vite/index.html.example +127 -0
- package/templates/app-vite/service-account-key.json.example +2 -0
- package/templates/app-vite/src/App.tsx.example +39 -0
- package/templates/app-vite/src/Routes.tsx.example +16 -0
- package/templates/app-vite/src/config/app.ts.example +75 -0
- package/templates/app-vite/src/config/legal.ts.example +170 -0
- package/templates/app-vite/src/globals.css.example +11 -0
- package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
- package/templates/app-vite/src/main.tsx.example +21 -0
- package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
- package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
- package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
- package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
- package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
- package/templates/app-vite/src/pages/locales/README.md.example +1 -0
- package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
- package/templates/app-vite/src/themes.css.example +179 -0
- package/templates/app-vite/tsconfig.json.example +9 -0
- package/templates/app-vite/vite.config.ts.example +9 -0
- package/templates/functions-firebase/README.md.example +129 -0
- package/templates/functions-firebase/build.mjs.example +52 -0
- package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
- package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
- package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
- package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
- package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
- package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
- package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
- package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
- package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
- package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
- package/templates/functions-firebase/functions.yaml.example +14 -0
- package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
- package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
- package/templates/functions-firebase/src/auth/index.ts.example +11 -0
- package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
- package/templates/functions-firebase/src/billing/index.ts.example +10 -0
- package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
- package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
- package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
- package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
- package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
- package/templates/functions-firebase/src/crud/index.ts.example +12 -0
- package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
- package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
- package/templates/functions-firebase/src/index.ts.example +45 -0
- package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
- package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/tsconfig.json.example +24 -0
- package/templates/functions-vercel/README.md.example +116 -0
- package/templates/functions-vercel/build.mjs.example +52 -0
- package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
- package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
- package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
- package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
- package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/tsconfig.json.example +24 -0
- package/templates/functions-vercel/vercel.json.example +14 -0
- package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
- package/templates/github/workflows/firebase-deploy.yml.example +79 -0
- package/templates/root-consumer/.env.example +19 -0
- package/templates/root-consumer/.gitignore.example +82 -0
- package/templates/root-consumer/.prettierrc.cjs.example +12 -0
- package/templates/root-consumer/CLAUDE.md.example +73 -0
- package/templates/root-consumer/README.md.example +295 -0
- package/templates/root-consumer/bunfig.toml.example +68 -0
- package/templates/root-consumer/eslint.config.js.example +336 -0
- package/templates/root-consumer/firebase.json.example +348 -0
- package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
- package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
- package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
- package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
- package/templates/root-consumer/guides/CLI.md.example +293 -0
- package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
- package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
- package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
- package/templates/root-consumer/guides/FEATURES.md.example +286 -0
- package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
- package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
- package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
- package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
- package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
- package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
- package/templates/root-consumer/guides/INDEX.md.example +50 -0
- package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
- package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
- package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
- package/templates/root-consumer/guides/STYLING.md.example +273 -0
- package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
- package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
- package/templates/root-consumer/tsconfig.functions.json.example +15 -0
- package/templates/root-consumer/tsconfig.json.example +18 -0
- package/templates/root-consumer/turbo.json.example +46 -0
- package/templates/root-consumer/vercel.json.example +124 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// apps/demo/src/pages/components/ComponentsData.tsx
|
|
2
|
+
// Single source of truth for example prop values
|
|
3
|
+
|
|
4
|
+
import { Rocket, Check, X, AlertCircle } from 'lucide-react';
|
|
5
|
+
import { Button, Collapsible, Text, Badge } from '@donotdev/components';
|
|
6
|
+
|
|
7
|
+
export const PROP_VALUES = {
|
|
8
|
+
title: 'Title',
|
|
9
|
+
subtitle: 'Subtitle',
|
|
10
|
+
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
|
|
11
|
+
content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.',
|
|
12
|
+
shortLabel: 'Lorem ipsum short',
|
|
13
|
+
collapsibleContent: (
|
|
14
|
+
<div className="dndev-p-md dndev-surface dndev-mt-sm">
|
|
15
|
+
<Text variant="muted" className="dndev-mb-sm">Advanced Configuration Details:</Text>
|
|
16
|
+
<Text>• Cache policy: 3600s</Text>
|
|
17
|
+
<Text>• Retries: 3</Text>
|
|
18
|
+
<Text>• Timeout: 5000ms</Text>
|
|
19
|
+
</div>
|
|
20
|
+
),
|
|
21
|
+
label: 'Label',
|
|
22
|
+
placeholder: 'Placeholder',
|
|
23
|
+
tooltip: 'Tooltip',
|
|
24
|
+
icon: Rocket,
|
|
25
|
+
trigger: 'Trigger: Open component',
|
|
26
|
+
button: 'Button',
|
|
27
|
+
confirmLabel: 'Confirm',
|
|
28
|
+
cancelLabel: 'Cancel',
|
|
29
|
+
primaryAction: <Button icon={Rocket}>Primary</Button>,
|
|
30
|
+
secondaryAction: <Button variant="outline" icon={Rocket}>Secondary</Button>,
|
|
31
|
+
items: [
|
|
32
|
+
{ label: 'Item 1', value: '1', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' },
|
|
33
|
+
{ label: 'Item 2', value: '2', content: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit.' },
|
|
34
|
+
{ label: 'Item 3', value: '3', content: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error.' },
|
|
35
|
+
],
|
|
36
|
+
accordionItems: [
|
|
37
|
+
{ value: 'item-1', trigger: 'Trigger: Accordion Item 1', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.' },
|
|
38
|
+
{ value: 'item-2', trigger: 'Trigger: Accordion Item 2', content: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' },
|
|
39
|
+
{ value: 'item-3', trigger: 'Trigger: Accordion Item 3', content: 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.' },
|
|
40
|
+
],
|
|
41
|
+
tabsItems: [
|
|
42
|
+
{ value: 'tab1', label: 'Tab 1', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.' },
|
|
43
|
+
{ value: 'tab2', label: 'Tab 2', content: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.' },
|
|
44
|
+
],
|
|
45
|
+
commandGroups: [
|
|
46
|
+
{
|
|
47
|
+
heading: 'Navigation',
|
|
48
|
+
items: [
|
|
49
|
+
{ label: 'Home', description: 'Go to home', onSelect: () => {} },
|
|
50
|
+
{ label: 'Components', description: 'Open components page', onSelect: () => {} },
|
|
51
|
+
{ label: 'Settings', description: 'Open settings', onSelect: () => {} },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
listItems: [
|
|
56
|
+
{ icon: <Check className="dndev-size-md" />, content: 'Feature enabled with icon support' },
|
|
57
|
+
{ icon: <Check className="dndev-size-md" />, content: <Text>Custom ReactNode content with <Badge>Badge</Badge></Text> },
|
|
58
|
+
{ icon: <AlertCircle className="dndev-size-md" />, content: 'Warning item with different icon' },
|
|
59
|
+
{ content: 'Simple text item without icon' },
|
|
60
|
+
],
|
|
61
|
+
navigationItems: [
|
|
62
|
+
{ label: 'Home', path: '#' },
|
|
63
|
+
{ label: 'Products', path: '#' },
|
|
64
|
+
{ label: 'Docs', path: '#' },
|
|
65
|
+
],
|
|
66
|
+
descriptionListItems: [
|
|
67
|
+
{ label: 'Status', value: <Badge variant="success">Active</Badge> },
|
|
68
|
+
{ label: 'Plan', value: <Badge variant="primary">Pro</Badge> },
|
|
69
|
+
{ label: 'Email', value: 'user@example.com' },
|
|
70
|
+
{ label: 'Last Login', value: <Text variant="muted">2 hours ago</Text> },
|
|
71
|
+
],
|
|
72
|
+
demoItems: ['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo'],
|
|
73
|
+
selectOptions: [
|
|
74
|
+
{ value: 'option1', label: 'Option 1' },
|
|
75
|
+
{ value: 'option2', label: 'Option 2' },
|
|
76
|
+
{ value: 'option3', label: 'Option 3' },
|
|
77
|
+
],
|
|
78
|
+
comboboxOptions: [
|
|
79
|
+
{ value: 'tenant1', label: 'Tenant Alpha', description: 'Primary tenant account' },
|
|
80
|
+
{ value: 'tenant2', label: 'Tenant Beta', description: 'Secondary tenant account' },
|
|
81
|
+
{ value: 'tenant3', label: 'Tenant Gamma', description: 'Test tenant account' },
|
|
82
|
+
{ value: 'owner1', label: 'John Smith', description: 'Owner - Marketing' },
|
|
83
|
+
{ value: 'owner2', label: 'Jane Doe', description: 'Owner - Engineering' },
|
|
84
|
+
{ value: 'owner3', label: 'Bob Johnson', description: 'Owner - Sales' },
|
|
85
|
+
],
|
|
86
|
+
radioGroupItems: [
|
|
87
|
+
{ value: 'option1', label: 'Option 1' },
|
|
88
|
+
{ value: 'option2', label: 'Option 2' },
|
|
89
|
+
{ value: 'option3', label: 'Option 3' },
|
|
90
|
+
],
|
|
91
|
+
toggleGroupItems: [
|
|
92
|
+
{ value: 'left', label: 'Left' },
|
|
93
|
+
{ value: 'center', label: 'Center' },
|
|
94
|
+
{ value: 'right', label: 'Right' },
|
|
95
|
+
],
|
|
96
|
+
avatarSrc: '/logo.png',
|
|
97
|
+
avatarFallback: 'DN',
|
|
98
|
+
footer: (
|
|
99
|
+
<div className="dndev-command-footer">
|
|
100
|
+
<div className="dndev-command-footer-shortcuts">
|
|
101
|
+
<div className="dndev-command-footer-shortcut">
|
|
102
|
+
<kbd className="dndev-command-footer-key">↑</kbd>
|
|
103
|
+
<kbd className="dndev-command-footer-key">↓</kbd>
|
|
104
|
+
<span>Navigate</span>
|
|
105
|
+
</div>
|
|
106
|
+
<div className="dndev-command-footer-shortcut">
|
|
107
|
+
<kbd className="dndev-command-footer-key">↵</kbd>
|
|
108
|
+
<span>Select</span>
|
|
109
|
+
</div>
|
|
110
|
+
<div className="dndev-command-footer-shortcut">
|
|
111
|
+
<kbd className="dndev-command-footer-key">Esc</kbd>
|
|
112
|
+
<span>Close</span>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
),
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export type CSSFamily = 'surface' | 'floating' | 'interactive' | 'layout' | 'input' | 'other';
|
|
120
|
+
|
|
121
|
+
export type PropType =
|
|
122
|
+
| 'title'
|
|
123
|
+
| 'subtitle'
|
|
124
|
+
| 'description'
|
|
125
|
+
| 'content'
|
|
126
|
+
| 'collapsibleContent'
|
|
127
|
+
| 'label'
|
|
128
|
+
| 'placeholder'
|
|
129
|
+
| 'tooltip'
|
|
130
|
+
| 'icon'
|
|
131
|
+
| 'trigger'
|
|
132
|
+
| 'button'
|
|
133
|
+
| 'confirmLabel'
|
|
134
|
+
| 'cancelLabel'
|
|
135
|
+
| 'primaryAction'
|
|
136
|
+
| 'secondaryAction'
|
|
137
|
+
| 'items'
|
|
138
|
+
| 'accordionItems'
|
|
139
|
+
| 'tabsItems'
|
|
140
|
+
| 'commandGroups'
|
|
141
|
+
| 'listItems'
|
|
142
|
+
| 'navigationItems'
|
|
143
|
+
| 'descriptionListItems'
|
|
144
|
+
| 'demoItems'
|
|
145
|
+
| 'selectOptions'
|
|
146
|
+
| 'comboboxOptions'
|
|
147
|
+
| 'radioGroupItems'
|
|
148
|
+
| 'toggleGroupItems'
|
|
149
|
+
| 'footer'
|
|
150
|
+
| 'avatarSrc'
|
|
151
|
+
| 'avatarFallback';
|
|
152
|
+
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// apps/demo/src/pages/components/DemoLayout.tsx
|
|
2
|
+
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
import type { ChangeEvent } from 'react';
|
|
5
|
+
import { useLocation, useNavigate, Outlet } from 'react-router-dom';
|
|
6
|
+
import { ArrowLeft, ExternalLink, Menu } from 'lucide-react';
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
Button,
|
|
10
|
+
Input,
|
|
11
|
+
Stack,
|
|
12
|
+
Tabs,
|
|
13
|
+
Text,
|
|
14
|
+
Sheet,
|
|
15
|
+
Grid,
|
|
16
|
+
GridArea,
|
|
17
|
+
} from '@donotdev/components';
|
|
18
|
+
import type { TextProps } from '@donotdev/components';
|
|
19
|
+
|
|
20
|
+
import { getCSSFamilies } from './componentConfig';
|
|
21
|
+
import type { CSSFamily } from './ComponentsData';
|
|
22
|
+
import { ThemeToggle } from '../../components/ThemeToggle';
|
|
23
|
+
|
|
24
|
+
function useMediaQuery(query: string) {
|
|
25
|
+
const [matches, setMatches] = useState(false);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const media = window.matchMedia(query);
|
|
28
|
+
if (media.matches !== matches) setMatches(media.matches);
|
|
29
|
+
const listener = () => setMatches(media.matches);
|
|
30
|
+
media.addEventListener('change', listener);
|
|
31
|
+
return () => media.removeEventListener('change', listener);
|
|
32
|
+
}, [matches, query]);
|
|
33
|
+
return matches;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface DemoLayoutProps {
|
|
37
|
+
selectedTab: CSSFamily | 'all';
|
|
38
|
+
onTabChange: (tab: CSSFamily | 'all') => void;
|
|
39
|
+
searchQuery: string;
|
|
40
|
+
onSearchChange: (query: string) => void;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function DemoLayout({
|
|
44
|
+
selectedTab,
|
|
45
|
+
onTabChange,
|
|
46
|
+
searchQuery,
|
|
47
|
+
onSearchChange,
|
|
48
|
+
}: DemoLayoutProps) {
|
|
49
|
+
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
|
50
|
+
const location = useLocation();
|
|
51
|
+
const navigate = useNavigate();
|
|
52
|
+
const isDesktop = useMediaQuery('(min-width: 1024px)');
|
|
53
|
+
|
|
54
|
+
const handleBack = () => {
|
|
55
|
+
if (location.pathname === '/full') {
|
|
56
|
+
navigate('/');
|
|
57
|
+
} else if (location.pathname.startsWith('/component/')) {
|
|
58
|
+
navigate('/');
|
|
59
|
+
} else if (selectedTab !== 'all') {
|
|
60
|
+
onTabChange('all');
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const showBackButton =
|
|
65
|
+
location.pathname === '/full' ||
|
|
66
|
+
location.pathname.startsWith('/component/') ||
|
|
67
|
+
selectedTab !== 'all';
|
|
68
|
+
|
|
69
|
+
const SidebarContent = (
|
|
70
|
+
<Stack gap="large" className="dndev-h-full">
|
|
71
|
+
<Stack gap="tight">
|
|
72
|
+
<Text as="h1">
|
|
73
|
+
DoNotDev
|
|
74
|
+
</Text>
|
|
75
|
+
<Text variant="muted">Components Showcase</Text>
|
|
76
|
+
</Stack>
|
|
77
|
+
|
|
78
|
+
<Stack gap="large" className="dndev-flex-1 dndev-min-h-0 dndev-overflow-y-auto">
|
|
79
|
+
<Input
|
|
80
|
+
placeholder="Filter components..."
|
|
81
|
+
value={searchQuery}
|
|
82
|
+
onChange={(e: ChangeEvent<HTMLInputElement>) => onSearchChange(e.target.value)}
|
|
83
|
+
/>
|
|
84
|
+
|
|
85
|
+
<Tabs
|
|
86
|
+
items={getCSSFamilies().map((family) => ({
|
|
87
|
+
value: family.id,
|
|
88
|
+
label: family.label,
|
|
89
|
+
className: 'dndev-w-full',
|
|
90
|
+
content: null,
|
|
91
|
+
}))}
|
|
92
|
+
value={selectedTab}
|
|
93
|
+
onValueChange={(value) => {
|
|
94
|
+
onTabChange(value as CSSFamily | 'all');
|
|
95
|
+
setIsMobileMenuOpen(false);
|
|
96
|
+
if (location.pathname !== '/') {
|
|
97
|
+
navigate('/');
|
|
98
|
+
}
|
|
99
|
+
}}
|
|
100
|
+
cols={1}
|
|
101
|
+
gap="tight"
|
|
102
|
+
/>
|
|
103
|
+
</Stack>
|
|
104
|
+
|
|
105
|
+
<Stack gap="medium">
|
|
106
|
+
<Button
|
|
107
|
+
variant="primary"
|
|
108
|
+
fullWidth
|
|
109
|
+
icon={ExternalLink}
|
|
110
|
+
iconEnd
|
|
111
|
+
onClick={() =>
|
|
112
|
+
window.open(
|
|
113
|
+
'https://donotdev.com/purchase',
|
|
114
|
+
'_blank',
|
|
115
|
+
'noopener,noreferrer'
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
>
|
|
119
|
+
Get Full Framework
|
|
120
|
+
</Button>
|
|
121
|
+
<Button
|
|
122
|
+
variant="outline"
|
|
123
|
+
icon={ExternalLink}
|
|
124
|
+
iconEnd
|
|
125
|
+
fullWidth
|
|
126
|
+
onClick={() =>
|
|
127
|
+
window.open('https://donotdev.com', '_blank', 'noopener,noreferrer')
|
|
128
|
+
}
|
|
129
|
+
>
|
|
130
|
+
Check it more online
|
|
131
|
+
</Button>
|
|
132
|
+
</Stack>
|
|
133
|
+
</Stack>
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
function lowerCase(label: string): "body" | "code" | "small" | "heading" | "default" | "muted" | "primary" | "secondary" | undefined {
|
|
137
|
+
throw new Error('Function not implemented.');
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return (
|
|
141
|
+
<Grid
|
|
142
|
+
className="dndev-h-screen dndev-w-full dndev-overflow-hidden"
|
|
143
|
+
templateColumns={isDesktop ? '280px 1fr' : '1fr'}
|
|
144
|
+
areas={isDesktop ? 'sidebar main' : 'main'}
|
|
145
|
+
gap="none"
|
|
146
|
+
>
|
|
147
|
+
{isDesktop && (
|
|
148
|
+
<GridArea
|
|
149
|
+
name="sidebar"
|
|
150
|
+
style={{
|
|
151
|
+
padding: 'var(--gap-sm) var(--gap-md)',
|
|
152
|
+
overflowY: 'auto',
|
|
153
|
+
background: 'var(--background)',
|
|
154
|
+
borderRadius: 0,
|
|
155
|
+
borderInlineEnd: 'var(--border-hairline) solid var(--border)',
|
|
156
|
+
}}
|
|
157
|
+
>
|
|
158
|
+
{SidebarContent}
|
|
159
|
+
</GridArea>
|
|
160
|
+
)}
|
|
161
|
+
|
|
162
|
+
<GridArea name="main" className="dndev-h-full dndev-overflow-hidden">
|
|
163
|
+
<Stack className="dndev-h-full" gap="none">
|
|
164
|
+
{/* Header */}
|
|
165
|
+
<Grid
|
|
166
|
+
templateColumns="1fr auto 1fr"
|
|
167
|
+
align="center"
|
|
168
|
+
style={{
|
|
169
|
+
padding: 'var(--gap-sm) var(--gap-md)',
|
|
170
|
+
background: 'var(--background)',
|
|
171
|
+
flexShrink: 0,
|
|
172
|
+
borderRadius: 0,
|
|
173
|
+
borderBottom: 'var(--border-hairline) solid var(--border)',
|
|
174
|
+
}}
|
|
175
|
+
>
|
|
176
|
+
<Stack direction="row" gap="medium" align="center" justify="start">
|
|
177
|
+
<Button
|
|
178
|
+
variant="ghost"
|
|
179
|
+
icon={ArrowLeft}
|
|
180
|
+
onClick={showBackButton ? handleBack : undefined}
|
|
181
|
+
disabled={!showBackButton}
|
|
182
|
+
className={!showBackButton ? 'dndev-opacity-0' : ''}
|
|
183
|
+
aria-hidden={!showBackButton}
|
|
184
|
+
>
|
|
185
|
+
Back
|
|
186
|
+
</Button>
|
|
187
|
+
</Stack>
|
|
188
|
+
|
|
189
|
+
<Stack align="center" gap="tight">
|
|
190
|
+
<Text variant="muted" level="body">
|
|
191
|
+
We use a high contrast theme to demonstrate component usage. Update themes.css to customize.
|
|
192
|
+
</Text>
|
|
193
|
+
<Grid cols={4} gap="tight">
|
|
194
|
+
{[
|
|
195
|
+
{ label: 'Foreground', color: 'var(--foreground)', border: true },
|
|
196
|
+
{ label: 'Primary', color: 'var(--primary)' },
|
|
197
|
+
{ label: 'Secondary', color: 'var(--secondary)' },
|
|
198
|
+
{ label: 'Accent', color: 'var(--accent)' },
|
|
199
|
+
].map((item) => (
|
|
200
|
+
<Stack
|
|
201
|
+
key={item.label}
|
|
202
|
+
direction="row"
|
|
203
|
+
gap="tight"
|
|
204
|
+
align="center"
|
|
205
|
+
>
|
|
206
|
+
<span
|
|
207
|
+
style={{
|
|
208
|
+
width: '20px',
|
|
209
|
+
height: '20px',
|
|
210
|
+
background: item.color
|
|
211
|
+
}}
|
|
212
|
+
/>
|
|
213
|
+
<Text
|
|
214
|
+
level="small"
|
|
215
|
+
style={{ color: item.color }}
|
|
216
|
+
>
|
|
217
|
+
{item.label}
|
|
218
|
+
</Text>
|
|
219
|
+
</Stack>
|
|
220
|
+
))}
|
|
221
|
+
</Grid>
|
|
222
|
+
</Stack>
|
|
223
|
+
|
|
224
|
+
{/* Right side: Theme Toggle + Mobile Menu */}
|
|
225
|
+
<Stack direction="row" gap="medium" justify="end" align="center">
|
|
226
|
+
<ThemeToggle />
|
|
227
|
+
{!isDesktop && (
|
|
228
|
+
<Sheet
|
|
229
|
+
open={isMobileMenuOpen}
|
|
230
|
+
onOpenChange={setIsMobileMenuOpen}
|
|
231
|
+
side="left"
|
|
232
|
+
trigger={
|
|
233
|
+
<Button
|
|
234
|
+
variant="ghost"
|
|
235
|
+
display="compact"
|
|
236
|
+
aria-label="Open menu"
|
|
237
|
+
icon={Menu}
|
|
238
|
+
/>
|
|
239
|
+
}
|
|
240
|
+
title="Components"
|
|
241
|
+
>
|
|
242
|
+
{SidebarContent}
|
|
243
|
+
</Sheet>
|
|
244
|
+
)}
|
|
245
|
+
</Stack>
|
|
246
|
+
</Grid>
|
|
247
|
+
|
|
248
|
+
{/* Content */}
|
|
249
|
+
<div
|
|
250
|
+
className="dndev-flex-1 dndev-overflow-y-auto dndev-w-full"
|
|
251
|
+
style={{ padding: 'var(--gap-md)' }}
|
|
252
|
+
>
|
|
253
|
+
<Outlet
|
|
254
|
+
context={{
|
|
255
|
+
selectedTab,
|
|
256
|
+
setSelectedTab: onTabChange,
|
|
257
|
+
searchQuery,
|
|
258
|
+
setSearchQuery: onSearchChange,
|
|
259
|
+
}}
|
|
260
|
+
/>
|
|
261
|
+
</div>
|
|
262
|
+
</Stack>
|
|
263
|
+
</GridArea>
|
|
264
|
+
</Grid>
|
|
265
|
+
);
|
|
266
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// apps/demo/src/pages/components/LayoutRoute.tsx
|
|
2
|
+
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
|
|
5
|
+
import { DemoLayout } from './DemoLayout';
|
|
6
|
+
import type { CSSFamily } from './ComponentsData';
|
|
7
|
+
|
|
8
|
+
export function LayoutRoute() {
|
|
9
|
+
const [selectedTab, setSelectedTab] = useState<CSSFamily | 'all'>('all');
|
|
10
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<DemoLayout
|
|
14
|
+
selectedTab={selectedTab}
|
|
15
|
+
onTabChange={setSelectedTab}
|
|
16
|
+
searchQuery={searchQuery}
|
|
17
|
+
onSearchChange={setSearchQuery}
|
|
18
|
+
/>
|
|
19
|
+
);
|
|
20
|
+
}
|