Compare commits

..

2 Commits

Author SHA1 Message Date
Trisha Lim
95f51ea783 Update gitignore 2025-01-24 14:51:57 +08:00
Trisha Lim
82b0268c4d Fix example readme instructions 2025-01-24 14:49:54 +08:00
188 changed files with 1109 additions and 4926 deletions

View File

@@ -27,13 +27,8 @@ jobs:
with:
submodules: true
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v3

View File

@@ -18,13 +18,8 @@ jobs:
with:
submodules: true
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v3

View File

@@ -16,13 +16,8 @@ jobs:
with:
submodules: true
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v3

View File

@@ -20,13 +20,8 @@ jobs:
with:
submodules: true
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v3

View File

@@ -22,13 +22,8 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v3

View File

@@ -15,13 +15,8 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Enable latestcorepack
run: |
echo "Before: corepack version => $(corepack --version || echo 'not installed')"
npm install -g corepack@latest
echo "After : corepack version => $(corepack --version)"
corepack enable
pnpm --version
- name: Enable corepack
run: corepack enable
- name: Install Node.js
uses: actions/setup-node@v4

View File

@@ -1,4 +1,4 @@
Copyright 2025, Garden Computing, Inc.
Copyright 2024, Garden Computing, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -16,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.

View File

@@ -17,4 +17,4 @@ For community and support, please join our [Discord](https://discord.gg/utDMjHYg
- Community & support: [Discord](https://discord.gg/utDMjHYg42)
- Updates: [X](https://x.com/jazz_tools) & [Email](https://garden.co/news)
Copyright 2025 — Garden Computing, Inc.
Copyright 2024 — Garden Computing, Inc.

View File

@@ -42,15 +42,6 @@
}
},
"overrides": [
{
"include": ["**/package.json"],
"linter": {
"enabled": false
},
"formatter": {
"enabled": false
}
},
{
"include": ["packages/**/src/**"],
"linter": {

View File

@@ -1,80 +1,5 @@
# chat-rn-clerk
## 1.0.64
### Patch Changes
- jazz-react-native@0.9.23
- jazz-react-native-auth-clerk@0.9.23
- jazz-tools@0.9.23
- jazz-react-native-media-images@0.9.23
## 1.0.63
### Patch Changes
- jazz-react-native@0.9.22
- jazz-react-native-auth-clerk@0.9.22
## 1.0.62
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react-native@0.9.21
- jazz-react-native-auth-clerk@0.9.21
- jazz-react-native-media-images@0.9.21
## 1.0.61
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react-native@0.9.20
- jazz-react-native-auth-clerk@0.9.20
- jazz-react-native-media-images@0.9.20
## 1.0.60
### Patch Changes
- jazz-react-native@0.9.19
- jazz-react-native-auth-clerk@0.9.19
- jazz-tools@0.9.19
- jazz-react-native-media-images@0.9.19
## 1.0.59
### Patch Changes
- jazz-react-native@0.9.18
- jazz-react-native-auth-clerk@0.9.18
- jazz-tools@0.9.18
- jazz-react-native-media-images@0.9.18
## 1.0.58
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react-native@0.9.17
- jazz-react-native-auth-clerk@0.9.17
- jazz-react-native-media-images@0.9.17
## 1.0.57
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-react-native-auth-clerk@0.9.16
- jazz-tools@0.9.16
- jazz-react-native@0.9.16
- jazz-react-native-media-images@0.9.16
## 1.0.56
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "chat-rn-clerk",
"main": "index.js",
"version": "1.0.64",
"version": "1.0.56",
"scripts": {
"build": "expo export -p ios",
"start": "expo start",

View File

@@ -1,65 +1,5 @@
# chat-rn
## 1.0.61
### Patch Changes
- jazz-react-native@0.9.23
- jazz-tools@0.9.23
## 1.0.60
### Patch Changes
- jazz-react-native@0.9.22
## 1.0.59
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react-native@0.9.21
## 1.0.58
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react-native@0.9.20
## 1.0.57
### Patch Changes
- jazz-react-native@0.9.19
- jazz-tools@0.9.19
## 1.0.56
### Patch Changes
- jazz-react-native@0.9.18
- jazz-tools@0.9.18
## 1.0.55
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react-native@0.9.17
## 1.0.54
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react-native@0.9.16
## 1.0.53
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "chat-rn",
"version": "1.0.61",
"version": "1.0.53",
"main": "index.js",
"scripts": {
"build": "expo export -p ios",

View File

@@ -1,73 +1,5 @@
# chat-vue
## 0.0.48
### Patch Changes
- jazz-browser@0.9.23
- jazz-tools@0.9.23
- jazz-vue@0.9.23
## 0.0.47
### Patch Changes
- jazz-browser@0.9.22
- jazz-vue@0.9.22
## 0.0.46
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser@0.9.21
- jazz-vue@0.9.21
## 0.0.45
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser@0.9.20
- jazz-vue@0.9.20
## 0.0.44
### Patch Changes
- jazz-browser@0.9.19
- jazz-tools@0.9.19
- jazz-vue@0.9.19
## 0.0.43
### Patch Changes
- jazz-browser@0.9.18
- jazz-tools@0.9.18
- jazz-vue@0.9.18
## 0.0.42
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser@0.9.17
- jazz-vue@0.9.17
## 0.0.41
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser@0.9.16
- jazz-vue@0.9.16
## 0.0.40
### Patch Changes

View File

@@ -11,6 +11,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example chat-vue --project-name chat-vue
```
or
```bash
npx create-jazz-app@latest --example chat-vue --project-name chat-vue
```

View File

@@ -1,6 +1,6 @@
{
"name": "chat-vue",
"version": "0.0.48",
"version": "0.0.40",
"private": true,
"type": "module",
"scripts": {

View File

@@ -1,73 +1,5 @@
# jazz-example-chat
## 0.0.144
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.143
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.142
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.141
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.140
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.139
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.138
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.137
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.136
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example chat --project-name chat
```
or
```bash
npx create-jazz-app@latest --example chat --project-name chat
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-chat",
"private": true,
"version": "0.0.144",
"version": "0.0.136",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,73 +1,5 @@
# minimal-auth-clerk
## 0.0.43
### Patch Changes
- jazz-react@0.9.23
- jazz-react-auth-clerk@0.9.23
- jazz-tools@0.9.23
## 0.0.42
### Patch Changes
- jazz-react@0.9.22
- jazz-react-auth-clerk@0.9.22
## 0.0.41
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
- jazz-react-auth-clerk@0.9.21
## 0.0.40
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
- jazz-react-auth-clerk@0.9.20
## 0.0.39
### Patch Changes
- jazz-react@0.9.19
- jazz-react-auth-clerk@0.9.19
- jazz-tools@0.9.19
## 0.0.38
### Patch Changes
- jazz-react@0.9.18
- jazz-react-auth-clerk@0.9.18
- jazz-tools@0.9.18
## 0.0.37
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
- jazz-react-auth-clerk@0.9.17
## 0.0.36
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-react-auth-clerk@0.9.16
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.35
### Patch Changes

View File

@@ -15,6 +15,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example clerk --project-name clerk
```
or
```bash
npx create-jazz-app@latest --example clerk --project-name clerk
```

View File

@@ -1,7 +1,7 @@
{
"name": "clerk",
"private": true,
"version": "0.0.43",
"version": "0.0.35",
"type": "module",
"scripts": {
"dev": "vite",
@@ -13,7 +13,7 @@
"dependencies": {
"@clerk/clerk-react": "^5.4.1",
"jazz-react": "workspace:*",
"jazz-react-auth-clerk": "workspace:0.9.23",
"jazz-react-auth-clerk": "workspace:0.9.15",
"jazz-tools": "workspace:*",
"react": "^18.3.1",
"react-dom": "^18.3.1"

View File

@@ -1,65 +1,5 @@
# file-share-svelte
## 0.0.28
### Patch Changes
- jazz-svelte@0.9.23
- jazz-tools@0.9.23
## 0.0.27
### Patch Changes
- jazz-svelte@0.9.22
## 0.0.26
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-svelte@0.9.21
## 0.0.25
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-svelte@0.9.20
## 0.0.24
### Patch Changes
- jazz-svelte@0.9.19
- jazz-tools@0.9.19
## 0.0.23
### Patch Changes
- jazz-svelte@0.9.18
- jazz-tools@0.9.18
## 0.0.22
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-svelte@0.9.17
## 0.0.21
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-svelte@0.9.16
## 0.0.20
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "file-share-svelte",
"version": "0.0.28",
"version": "0.0.20",
"private": true,
"type": "module",
"scripts": {

View File

@@ -1,73 +1,5 @@
# form
## 0.0.39
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.38
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.37
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.36
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.35
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.34
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.33
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.32
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.31
### Patch Changes

View File

@@ -28,6 +28,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example form --project-name form
```
or
```bash
npx create-jazz-app@latest --example form --project-name form
```

View File

@@ -1,7 +1,7 @@
{
"name": "form",
"private": true,
"version": "0.0.39",
"version": "0.0.31",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,73 +1,5 @@
# image-upload
## 0.0.41
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.40
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.39
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.38
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.37
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.36
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.35
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.34
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.33
### Patch Changes

View File

@@ -15,6 +15,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example image-upload --project-name image-upload
```
or
```bash
npx create-jazz-app@latest --example image-upload --project-name image-upload
```

View File

@@ -1,7 +1,7 @@
{
"name": "image-upload",
"private": true,
"version": "0.0.41",
"version": "0.0.33",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,36 +1,5 @@
# jazz-example-inspector
## 0.0.102
### Patch Changes
- Updated dependencies [70c9a5d]
- cojson@0.9.23
- cojson-transport-ws@0.9.23
## 0.0.101
### Patch Changes
- Updated dependencies [14b6149]
- cojson-transport-ws@0.9.22
## 0.0.100
### Patch Changes
- Updated dependencies [6ad0a9f]
- cojson@0.9.19
- cojson-transport-ws@0.9.19
## 0.0.99
### Patch Changes
- Updated dependencies [8898b10]
- cojson@0.9.18
- cojson-transport-ws@0.9.18
## 0.0.98
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-inspector-app",
"private": true,
"version": "0.0.102",
"version": "0.0.98",
"type": "module",
"scripts": {
"dev": "vite",
@@ -16,8 +16,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cojson": "workspace:0.9.23",
"cojson-transport-ws": "workspace:0.9.23",
"cojson": "workspace:0.9.13",
"cojson-transport-ws": "workspace:0.9.13",
"hash-slash": "workspace:0.2.1",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",

View File

@@ -1,79 +1,5 @@
# jazz-example-musicplayer
## 0.0.65
### Patch Changes
- jazz-inspector@0.9.23
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.64
### Patch Changes
- jazz-react@0.9.22
## 0.0.63
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-inspector@0.9.22
- jazz-react@0.9.21
## 0.0.62
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-inspector@0.9.21
- jazz-react@0.9.20
## 0.0.61
### Patch Changes
- jazz-inspector@0.9.20
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.60
### Patch Changes
- Updated dependencies [2faf22f]
- jazz-inspector@0.9.19
## 0.0.59
### Patch Changes
- jazz-inspector@0.9.18
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.58
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-inspector@0.9.17
- jazz-react@0.9.17
## 0.0.57
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-inspector@0.9.16
- jazz-react@0.9.16
## 0.0.56
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example music-player --project-name music-player
```
or
```bash
npx create-jazz-app@latest --example music-player --project-name music-player
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-music-player",
"private": true,
"version": "0.0.65",
"version": "0.0.56",
"type": "module",
"scripts": {
"dev": "vite",
@@ -18,8 +18,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-react": "workspace:0.9.23",
"jazz-tools": "workspace:0.9.23",
"jazz-react": "workspace:0.9.15",
"jazz-tools": "workspace:0.9.15",
"jazz-inspector": "workspace:*",
"lucide-react": "^0.274.0",
"react": "^18.3.1",

View File

@@ -1,73 +1,5 @@
# jazz-example-onboarding
## 0.0.45
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.44
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.43
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.42
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.41
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.40
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.39
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.38
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.37
### Patch Changes

View File

@@ -11,6 +11,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example onboarding --project-name onboarding
```
or
```bash
npx create-jazz-app@latest --example onboarding --project-name onboarding
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-onboarding",
"private": true,
"version": "0.0.45",
"version": "0.0.37",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,65 +1,5 @@
# organization
## 0.0.37
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.36
### Patch Changes
- jazz-react@0.9.22
## 0.0.35
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
## 0.0.34
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
## 0.0.33
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.32
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.31
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
## 0.0.30
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.29
### Patch Changes

View File

@@ -16,6 +16,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example organization --project-name organization
```
or
```bash
npx create-jazz-app@latest --example organization --project-name organization
```

View File

@@ -1,7 +1,7 @@
{
"name": "organization",
"private": true,
"version": "0.0.37",
"version": "0.0.29",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,53 +1,5 @@
# passkey-svelte
## 0.0.32
### Patch Changes
- jazz-svelte@0.9.23
## 0.0.31
### Patch Changes
- jazz-svelte@0.9.22
## 0.0.30
### Patch Changes
- jazz-svelte@0.9.21
## 0.0.29
### Patch Changes
- jazz-svelte@0.9.20
## 0.0.28
### Patch Changes
- jazz-svelte@0.9.19
## 0.0.27
### Patch Changes
- jazz-svelte@0.9.18
## 0.0.26
### Patch Changes
- jazz-svelte@0.9.17
## 0.0.25
### Patch Changes
- jazz-svelte@0.9.16
## 0.0.24
### Patch Changes

View File

@@ -21,6 +21,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example passkey-svelte --project-name passkey-svelte
```
or
```bash
npx create-jazz-app@latest --example passkey-svelte --project-name passkey-svelte
```

View File

@@ -1,6 +1,6 @@
{
"name": "passkey-svelte",
"version": "0.0.32",
"version": "0.0.24",
"type": "module",
"private": true,
"scripts": {

View File

@@ -1,65 +1,5 @@
# minimal-auth-passkey
## 0.0.42
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.41
### Patch Changes
- jazz-react@0.9.22
## 0.0.40
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
## 0.0.39
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
## 0.0.38
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.37
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.36
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
## 0.0.35
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.34
### Patch Changes

View File

@@ -15,6 +15,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example passkey --project-name passkey
```
or
```bash
npx create-jazz-app@latest --example passkey --project-name passkey
```

View File

@@ -1,7 +1,7 @@
{
"name": "passkey",
"private": true,
"version": "0.0.42",
"version": "0.0.34",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,65 +1,5 @@
# jazz-password-manager
## 0.0.63
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.62
### Patch Changes
- jazz-react@0.9.22
## 0.0.61
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
## 0.0.60
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
## 0.0.59
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.58
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.57
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
## 0.0.56
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.55
### Patch Changes

View File

@@ -15,6 +15,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example password-manager --project-name password-manager
```
or
```bash
npx create-jazz-app@latest --example password-manager --project-name password-manager
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-password-manager",
"private": true,
"version": "0.0.63",
"version": "0.0.55",
"type": "module",
"scripts": {
"dev": "vite",
@@ -12,8 +12,8 @@
"clean-install": "rm -rf node_modules pnpm-lock.yaml && pnpm install"
},
"dependencies": {
"jazz-react": "workspace:0.9.23",
"jazz-tools": "workspace:0.9.23",
"jazz-react": "workspace:0.9.15",
"jazz-tools": "workspace:0.9.15",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.41.5",

View File

@@ -1,73 +1,5 @@
# jazz-example-pets
## 0.0.161
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.160
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.159
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.158
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.157
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.156
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.155
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.154
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.153
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example pets --project-name pets
```
or
```bash
npx create-jazz-app@latest --example pets --project-name pets
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-pets",
"private": true,
"version": "0.0.161",
"version": "0.0.153",
"type": "module",
"scripts": {
"dev": "vite",
@@ -19,9 +19,9 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-browser-media-images": "workspace:0.9.23",
"jazz-react": "workspace:0.9.23",
"jazz-tools": "workspace:0.9.23",
"jazz-browser-media-images": "workspace:0.9.15",
"jazz-react": "workspace:0.9.15",
"jazz-tools": "workspace:0.9.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.3.1",
@@ -41,7 +41,7 @@
"@vitejs/plugin-react-swc": "^3.3.2",
"autoprefixer": "^10.4.20",
"is-ci": "^3.0.1",
"jazz-run": "workspace:0.9.23",
"jazz-run": "workspace:0.9.15",
"postcss": "^8.4.27",
"tailwindcss": "^3.4.15",
"typescript": "~5.6.2",

View File

@@ -1,73 +1,5 @@
# reactions
## 0.0.41
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
- jazz-browser-media-images@0.9.23
## 0.0.40
### Patch Changes
- jazz-browser-media-images@0.9.22
- jazz-react@0.9.22
## 0.0.39
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser-media-images@0.9.21
- jazz-react@0.9.21
## 0.0.38
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser-media-images@0.9.20
- jazz-react@0.9.20
## 0.0.37
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
- jazz-browser-media-images@0.9.19
## 0.0.36
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
- jazz-browser-media-images@0.9.18
## 0.0.35
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser-media-images@0.9.17
- jazz-react@0.9.17
## 0.0.34
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser-media-images@0.9.16
- jazz-react@0.9.16
## 0.0.33
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example reactions --project-name reactions
```
or
```bash
npx create-jazz-app@latest --example reactions --project-name reactions
```

View File

@@ -1,7 +1,7 @@
{
"name": "reactions",
"private": true,
"version": "0.0.41",
"version": "0.0.33",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,73 +1,5 @@
# todo-vue
## 0.0.46
### Patch Changes
- jazz-browser@0.9.23
- jazz-tools@0.9.23
- jazz-vue@0.9.23
## 0.0.45
### Patch Changes
- jazz-browser@0.9.22
- jazz-vue@0.9.22
## 0.0.44
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-browser@0.9.21
- jazz-vue@0.9.21
## 0.0.43
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-browser@0.9.20
- jazz-vue@0.9.20
## 0.0.42
### Patch Changes
- jazz-browser@0.9.19
- jazz-tools@0.9.19
- jazz-vue@0.9.19
## 0.0.41
### Patch Changes
- jazz-browser@0.9.18
- jazz-tools@0.9.18
- jazz-vue@0.9.18
## 0.0.40
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-browser@0.9.17
- jazz-vue@0.9.17
## 0.0.39
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-browser@0.9.16
- jazz-vue@0.9.16
## 0.0.38
### Patch Changes

View File

@@ -11,6 +11,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example todo-vue --project-name todo-vue
```
or
```bash
npx create-jazz-app@latest --example todo-vue --project-name todo-vue
```

View File

@@ -1,6 +1,6 @@
{
"name": "todo-vue",
"version": "0.0.46",
"version": "0.0.38",
"private": true,
"type": "module",
"scripts": {

View File

@@ -1,65 +1,5 @@
# jazz-example-todo
## 0.0.160
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.159
### Patch Changes
- jazz-react@0.9.22
## 0.0.158
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
## 0.0.157
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
## 0.0.156
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.155
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.154
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
## 0.0.153
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.152
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example todo --project-name todo
```
or
```bash
npx create-jazz-app@latest --example todo --project-name todo
```

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-todo",
"private": true,
"version": "0.0.160",
"version": "0.0.152",
"type": "module",
"scripts": {
"dev": "vite",
@@ -16,8 +16,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-react": "workspace:0.9.23",
"jazz-tools": "workspace:0.9.23",
"jazz-react": "workspace:0.9.15",
"jazz-tools": "workspace:0.9.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.3.1",

View File

@@ -1,65 +1,5 @@
# version-history
## 0.0.38
### Patch Changes
- jazz-react@0.9.23
- jazz-tools@0.9.23
## 0.0.37
### Patch Changes
- jazz-react@0.9.22
## 0.0.36
### Patch Changes
- Updated dependencies [1be017d]
- jazz-tools@0.9.21
- jazz-react@0.9.21
## 0.0.35
### Patch Changes
- Updated dependencies [b01cc1f]
- jazz-tools@0.9.20
- jazz-react@0.9.20
## 0.0.34
### Patch Changes
- jazz-react@0.9.19
- jazz-tools@0.9.19
## 0.0.33
### Patch Changes
- jazz-react@0.9.18
- jazz-tools@0.9.18
## 0.0.32
### Patch Changes
- Updated dependencies [c2ca1fe]
- Updated dependencies [1227047]
- jazz-tools@0.9.17
- jazz-react@0.9.17
## 0.0.31
### Patch Changes
- Updated dependencies [24b3b6a]
- jazz-tools@0.9.16
- jazz-react@0.9.16
## 0.0.30
### Patch Changes

View File

@@ -13,6 +13,10 @@ You can either
Create a new Jazz project, and use this example as a template.
```bash
npm create jazz-app@latest --example version-history --project-name version-history
```
or
```bash
npx create-jazz-app@latest --example version-history --project-name version-history
```

View File

@@ -1,7 +1,7 @@
{
"name": "version-history",
"private": true,
"version": "0.0.38",
"version": "0.0.30",
"type": "module",
"scripts": {
"dev": "vite",

12
flake.lock generated
View File

@@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1737885589,
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
"lastModified": 1730785428,
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {

View File

@@ -18,15 +18,12 @@
buildInputs = with pkgs; [
nodejs_22
nodePackages.pnpm
git
];
shellHook = ''
echo ""
echo "Welcome to the Jazz development environment!"
echo "Run 'pnpm install' to install the dependencies."
echo ""
'';
};
});
}
}

View File

@@ -1,11 +1,11 @@
import { clsx } from "clsx";
import Link from "next/link";
import { forwardRef } from "react";
import { Icon } from "./Icon";
import { Icon } from "../atoms/Icon";
import { Spinner } from "./Spinner";
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
variant?: "primary" | "secondary" | "tertiary" | "destructive" | "plain";
variant?: "primary" | "secondary" | "tertiary";
size?: "sm" | "md" | "lg";
href?: string;
newTab?: boolean;
@@ -42,7 +42,6 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
loading,
loadingText,
icon,
type = "button",
...buttonProps
},
ref,
@@ -59,21 +58,16 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
secondary:
"text-stone-900 border font-medium hover:border-stone-300 hover:dark:border-stone-700 dark:text-white",
tertiary: "text-blue underline underline-offset-4",
destructive:
"bg-red-600 border-red-600 text-white font-medium hover:bg-red-700 hover:border-red-700",
};
const classNames =
variant === "plain"
? className
: clsx(
className,
"inline-flex items-center justify-center gap-2 rounded-lg text-center transition-colors",
"disabled:pointer-events-none disabled:opacity-70",
sizeClasses[size],
variantClasses[variant],
disabled && "opacity-50 cursor-not-allowed pointer-events-none",
);
const classNames = clsx(
className,
"inline-flex items-center justify-center gap-2 rounded-lg text-center transition-colors",
"disabled:pointer-events-none disabled:opacity-70",
sizeClasses[size],
variantClasses[variant],
disabled && "opacity-50 cursor-not-allowed pointer-events-none",
);
if (href) {
return (
@@ -101,7 +95,6 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
{...buttonProps}
disabled={disabled || loading}
className={classNames}
type={type}
>
<ButtonIcon icon={icon} loading={loading} />

View File

@@ -1,13 +0,0 @@
export function Copyright({
className,
companyName = "Garden Computing, Inc.",
}: {
companyName?: string;
className?: string;
}) {
return (
<p className={className}>
© {new Date().getFullYear()} {companyName}
</p>
);
}

View File

@@ -1,48 +0,0 @@
import clsx from "clsx";
type HeadingProps = {
level?: 1 | 2 | 3 | 4 | 5 | 6;
size?: 1 | 2 | 3 | 4 | 5 | 6;
} & React.ComponentPropsWithoutRef<"h1" | "h2" | "h3" | "h4" | "h5" | "h6">;
const classes = {
1: [
"font-display",
"text-stone-950 dark:text-white",
"text-5xl lg:text-6xl",
"mb-3",
"font-medium",
"tracking-tighter",
],
2: [
"font-display",
"text-stone-950 dark:text-white",
"text-2xl md:text-4xl",
"mb-2",
"font-semibold",
"tracking-tight",
],
3: [
"font-display",
"text-stone-950 dark:text-white",
"text-xl md:text-2xl",
"mb-2",
"font-semibold",
"tracking-tight",
],
4: ["text-bold"],
5: [],
6: [],
};
export function Heading({
className,
level = 1,
size: customSize,
...props
}: HeadingProps) {
let Element: `h${typeof level}` = `h${level}`;
const size = customSize || level;
return <Element {...props} className={clsx(classes[size])} />;
}

View File

@@ -1,38 +1,85 @@
import clsx from "clsx";
import { Heading } from "./Heading";
export function H1(
props: React.ComponentPropsWithoutRef<"h1"> & React.PropsWithChildren,
) {
return <Heading level={1} {...props} />;
interface HeadingProps {
children: React.ReactNode;
className?: string;
id?: string;
}
export function H2(
props: React.ComponentPropsWithoutRef<"h2"> & React.PropsWithChildren,
) {
return <Heading level={2} {...props} />;
export function H1({ children, className, id }: HeadingProps) {
return (
<h1
id={id}
className={clsx(
className,
"font-display",
"text-stone-950 dark:text-white",
"text-5xl lg:text-6xl",
"mb-3",
"font-medium",
"tracking-tighter",
)}
>
{children}
</h1>
);
}
export function H3(
props: React.ComponentPropsWithoutRef<"h3"> & React.PropsWithChildren,
) {
return <Heading level={3} {...props} />;
export function H2({ children, className, id }: HeadingProps) {
return (
<h2
id={id}
className={clsx(
className,
"font-display",
"text-stone-950 dark:text-white",
"text-2xl md:text-4xl",
"mb-2",
"font-semibold",
"tracking-tight",
)}
>
{children}
</h2>
);
}
export function H4(
props: React.ComponentPropsWithoutRef<"h4"> & React.PropsWithChildren,
) {
return <Heading level={4} {...props} />;
export function H3({ children, className, id }: HeadingProps) {
return (
<h3
id={id}
className={clsx(
className,
"font-display",
"text-stone-950 dark:text-white",
"text-xl md:text-2xl",
"mb-2",
"font-semibold",
"tracking-tight",
)}
>
{children}
</h3>
);
}
export function H5(
props: React.ComponentPropsWithoutRef<"h5"> & React.PropsWithChildren,
) {
return <Heading level={5} {...props} />;
export function H4({ children, className, id }: HeadingProps) {
return (
<h4 id={id} className={clsx(className, "text-bold")}>
{children}
</h4>
);
}
export function H6(
props: React.ComponentPropsWithoutRef<"h6"> & React.PropsWithChildren,
) {
return <Heading level={6} {...props} />;
export function Kicker({ children, className }: HeadingProps) {
return (
<p
className={clsx(
className,
"uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400",
)}
>
{children}
</p>
);
}

View File

@@ -1,21 +0,0 @@
import clsx from "clsx";
export function Kicker({
children,
className,
as,
}: React.ComponentPropsWithoutRef<"p"> & {
as?: React.ElementType;
}) {
const Element = as ?? "p";
return (
<Element
className={clsx(
className,
"uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400",
)}
>
{children}
</Element>
);
}

View File

@@ -1,33 +1,32 @@
import { clsx } from "clsx";
import { forwardRef, useId } from "react";
import { useId } from "react";
interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
// label can be hidden with a "label:sr-only" className
interface Props extends React.InputHTMLAttributes<HTMLInputElement> {
// label is required for a11y, but you can hide it with a "label:sr-only" className
label: string;
className?: string;
id?: string;
type?: "text" | "email" | "number";
}
export const Input = forwardRef<HTMLInputElement, InputProps>(
({ label, className, id: customId, ...inputProps }, ref) => {
const generatedId = useId();
const id = customId || generatedId;
const inputClassName = clsx(
"w-full rounded-md border px-3.5 py-2 shadow-sm",
"font-medium text-stone-900",
"dark:text-white dark:bg-stone-925",
);
export function Input(props: Props) {
const { label, id: customId, className, type = "text" } = props;
const generatedId = useId();
const id = customId || generatedId;
const containerClassName = clsx("grid gap-1", className);
const inputClassName = clsx(
"w-full rounded-md border px-3.5 py-2 shadow-sm",
"font-medium text-stone-900",
"dark:text-white",
);
return (
<div className={containerClassName}>
<label htmlFor={id} className="text-stone-600 dark:text-stone-300">
{label}
</label>
const containerClassName = clsx("grid gap-1", className);
<input ref={ref} {...inputProps} id={id} className={inputClassName} />
</div>
);
},
);
return (
<div className={containerClassName}>
<label htmlFor={id} className="text-stone-600 dark:text-stone-300">
{label}
</label>
<input {...props} type={type} id={id} className={inputClassName} />
</div>
);
}

View File

@@ -1,7 +1,6 @@
import clsx from "clsx";
import { ReactNode } from "react";
import { H2 } from "../atoms/Headings";
import { Kicker } from "../atoms/Kicker";
import { H2, Kicker } from "../atoms/Headings";
import { Prose } from "./Prose";
function H2Sub({ children }: { children: React.ReactNode }) {

View File

@@ -14,9 +14,10 @@ export function Select(
const containerClassName = clsx("grid gap-1", className);
const selectClassName = clsx(
"g-select",
"w-full rounded-md border shadow-sm px-2 py-1.5 text-sm",
"font-medium text-stone-900",
"dark:text-white dark:bg-stone-925",
"dark:text-white",
"appearance-none",
);

View File

@@ -4,7 +4,6 @@ import clsx from "clsx";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { ComponentType, ReactNode } from "react";
import { Copyright } from "../atoms/Copyright";
import { NewsletterForm } from "./NewsletterForm";
import { SocialLinks, SocialLinksProps } from "./SocialLinks";
@@ -19,13 +18,29 @@ type FooterSection = {
type FooterProps = {
logo: ReactNode;
companyName: string;
sections: FooterSection[];
socials: SocialLinksProps;
themeToggle: ComponentType<{ className?: string }>;
};
function Copyright({
className,
companyName,
}: {
companyName: string;
className?: string;
}) {
return (
<p className={clsx(className, "text-sm")}>
© {new Date().getFullYear()} {companyName}
</p>
);
}
export function Footer({
logo,
companyName,
sections,
socials,
themeToggle: ThemeToggle,
@@ -67,7 +82,10 @@ export function Footer({
</div>
))}
<Copyright className="text-sm order-last col-span-full self-center md:col-span-10 md:order-none" />
<Copyright
className="order-last col-span-full self-center md:col-span-10 md:order-none"
companyName={companyName}
/>
<div className="col-span-full flex items-center justify-between gap-6 md:col-span-2">
<SocialLinks {...socials}></SocialLinks>

View File

@@ -9,7 +9,6 @@ import { GcmpNav } from "@/components/Nav";
import { ThemeToggle } from "@/components/ThemeToggle";
import { Analytics } from "@vercel/analytics/react";
import { SpeedInsights } from "@vercel/speed-insights/next";
import { Copyright } from "gcmp-design-system/src/app/components/atoms/Copyright";
// If loading a variable font, you don't need to specify the font weight
const manrope = Manrope({
@@ -99,7 +98,7 @@ export default function RootLayout({
<GcmpNav />
<main className="flex-1 w-full">{children}</main>
<footer className="py-8 text-sm flex justify-between gap-3 w-full container mt-12 md:mt-20">
<Copyright />
<p>©2024 Garden Computing, Inc.</p>
<ThemeToggle className="hidden md:block" />
</footer>

View File

@@ -40,6 +40,3 @@ codeSamples
.turbo
.env
# LLM docs
public/llms*.txt

View File

@@ -1,7 +1,7 @@
import DocsLayout from "@/app/docs/[framework]/(others)/layout";
import { TableOfContents } from "@/components/docs/TableOfContents";
import ComingSoonPage from "@/components/docs/coming-soon.mdx";
import { docNavigationItems } from "@/lib/docNavigationItems.js";
import { docNavigationItems } from "@/lib/docNavigationItems";
import { Framework, frameworks } from "@/lib/framework";
import type { Toc } from "@stefanprobst/rehype-extract-toc";
import { Prose } from "gcmp-design-system/src/app/components/molecules/Prose";

View File

@@ -132,7 +132,7 @@ As you develop your app, you'll likely want to
- initialise data in a user's `root` and `profile`
- add more data to your `root` and `profile` schemas
You can achieve both by overriding the `migrate()` method on your `Account` schema class.
You can achieve both by overriding the static `migrate()` method on your `Account` schema class.
### When migrations run

View File

@@ -8,6 +8,14 @@ The Jazz docs are currently heavily work in progress, sorry about that!
Run the following command to create a new Jazz project from one of our example apps:
<CodeGroup>
```sh
npm create jazz-app@latest
```
</CodeGroup>
or
<CodeGroup>
```sh
npx create-jazz-app@latest
@@ -39,20 +47,7 @@ Sync and persist your data by setting up a [sync and storage infrastructure](/do
Learn how to structure your data using [collaborative values](/docs/schemas/covalues).
## API Reference
Many of the packages provided are documented in the [API Reference](/api-reference).
## LLM Docs
We support the [llms.txt](https://llmstxt.org/) convention for making documentation available to large language models and the applications that make use of them.
We currently have:
- [/llms.txt](/llms.txt) - A overview listing of the available packages and their documentation
- [/llms-full.txt](/llms-full.txt) - Full documentation for our packages
## Get support
If you have any questions or need assistance, please don't hesitate to reach out to us on [Discord](https://discord.gg/utDMjHYg42).
We would love to help you get started.
We would love to help you get started.

View File

@@ -3,7 +3,7 @@
import { SideNav } from "@/components/SideNav";
import { SideNavHeader } from "@/components/SideNavHeader";
import { FrameworkSelect } from "@/components/docs/FrameworkSelect";
import { docNavigationItems } from "@/lib/docNavigationItems.js";
import { docNavigationItems } from "@/lib/docNavigationItems";
import { useFramework } from "@/lib/use-framework";
import { clsx } from "clsx";

View File

@@ -156,14 +156,8 @@ export function FnDecl({
doc: ReactNode;
example: ReactNode;
}) {
// Extract the method name from the signature (everything before the first parenthesis or type parameter)
const methodName = signature.match(/^[^(<]+/)?.[0];
return (
<div
id={methodName}
className="text-sm flex flex-col gap-3 my-2 p-3 rounded bg-stone-50 dark:bg-stone-925"
>
<div className="text-sm flex flex-col gap-3 my-2 p-3 rounded bg-stone-50 dark:bg-stone-925">
<div className="flex flex-col gap-2">
<div>
{<Highlight>{signature + ":"}</Highlight>}{" "}

View File

@@ -7,6 +7,7 @@ export function JazzFooter() {
return (
<Footer
logo={<GcmpLogo monochrome className="w-36" />}
companyName="Garden Computing, Inc."
socials={socials}
themeToggle={ThemeToggle}
sections={[

View File

@@ -1,4 +1,3 @@
import { H1 } from "gcmp-design-system/src/app/components/atoms/Headings";
import { Icon } from "gcmp-design-system/src/app/components/atoms/Icon";
import { Prose } from "gcmp-design-system/src/app/components/molecules/Prose";
import Link from "next/link";
@@ -45,10 +44,10 @@ export function HeroSection() {
<p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400">
Local-first development toolkit
</p>
<H1>
<h1 className="font-display text-stone-950 dark:text-white text-4xl md:text-5xl lg:text-6xl font-medium tracking-tighter">
<span className="inline-block">Ship top-tier apps</span>{" "}
<span className="inline-block">at high tempo.</span>
</H1>
</h1>
<Prose size="lg" className="text-pretty max-w-2xl dark:text-stone-200">
<p>

View File

@@ -1,7 +1,21 @@
import { Application } from "typedoc";
import { PACKAGES } from "./utils/config.mjs";
for (const { packageName, entryPoint, tsconfig, typedocOptions } of PACKAGES) {
for (const { packageName, entryPoint, tsconfig, typedocOptions } of [
{
packageName: "jazz-tools",
entryPoint: "exports.ts",
},
{
packageName: "jazz-react",
entryPoint: "index.ts",
typedocOptions: {
skipErrorChecking: true, // TODO: remove this. Temporary workaround
},
},
{ packageName: "jazz-browser" },
{ packageName: "jazz-browser-media-images" },
{ packageName: "jazz-nodejs" },
]) {
const app = await Application.bootstrapWithPlugins({
entryPoints: [
`../../packages/${packageName}/src/${entryPoint || "index.ts"}`,

View File

@@ -1,511 +0,0 @@
import { promises as fs } from "fs";
import path from "path";
import { Deserializer, ReflectionKind } from "typedoc";
import { DOC_SECTIONS, PACKAGES } from "./utils/config.mjs";
import {
getPackageDescription,
loadTypedocFiles,
writeDocsFile,
} from "./utils/index.mjs";
function formatType(type) {
if (!type) return "unknown";
// Handle type aliases and references
if (type.type === "reference") {
const name = type.package ? `${type.package}.${type.name}` : type.name;
return (
name +
(type.typeArguments
? `<${type.typeArguments.map(formatType).join(", ")}>`
: "")
);
}
// Handle union types
if (type.type === "union") {
return type.types.map(formatType).join(" | ");
}
// Handle array types
if (type.type === "array") {
return `${formatType(type.elementType)}[]`;
}
// Handle basic types
if (type.type === "intrinsic" || type.type === "literal") {
return typeof type.value !== "undefined"
? JSON.stringify(type.value)
: type.name;
}
// Handle tuple types
if (type.type === "tuple") {
return `[${type.elements.map(formatType).join(", ")}]`;
}
// Handle intersection types
if (type.type === "intersection") {
return type.types.map(formatType).join(" & ");
}
// Handle template literal types
if (type.type === "template-literal") {
return `\`${type.head}${type.tail.map((t) => `\${${formatType(t[0])}}${t[1]}`).join("")}\``;
}
// Handle reflection types (object types and function types)
if (type.type === "reflection") {
if (type.declaration.signatures) {
const sig = type.declaration.signatures[0];
const params =
sig.parameters
?.map(
(p) =>
`${p.name}${p.flags?.isOptional ? "?" : ""}: ${formatType(p.type)}`,
)
.join(", ") || "";
return `(${params}) => ${formatType(sig.type)}`;
}
if (type.declaration.children) {
return (
"{ " +
type.declaration.children
.map((child) => {
const optional = child.flags?.isOptional ? "?" : "";
return `${child.name}${optional}: ${formatType(child.type)}`;
})
.join("; ") +
" }"
);
}
}
// Handle query types
if (type.type === "query") {
return `typeof ${formatType(type.queryType)}`;
}
// Handle conditional types
if (type.type === "conditional") {
return `${formatType(type.checkType)} extends ${formatType(type.extendsType)} ? ${formatType(type.trueType)} : ${formatType(type.falseType)}`;
}
// Handle index access types
if (type.type === "indexedAccess") {
return `${formatType(type.objectType)}[${formatType(type.indexType)}]`;
}
// Handle mapped types
if (type.type === "mapped") {
const readonly = type.readonlyModifier === "+" ? "readonly " : "";
const optional = type.optionalModifier === "+" ? "?" : "";
return `{ ${readonly}[${type.parameter} in ${formatType(type.parameterType)}]${optional}: ${formatType(type.templateType)} }`;
}
// Handle type operators
if (type.type === "typeOperator") {
return `${type.operator} ${formatType(type.target)}`;
}
// Handle predicate types
if (type.type === "predicate") {
return `${type.name} is ${formatType(type.targetType)}`;
}
// Handle inferred types
if (type.type === "inferred") {
return `infer ${type.name}`;
}
// Handle rest types
if (type.type === "rest") {
return `...${formatType(type.elementType)}`;
}
// Handle unknown types with more detail
if (type.toString) {
return type.toString();
}
return "unknown";
}
function formatComment(comment) {
if (!comment) return "";
let text =
comment.summary
?.map((part) => part.text)
.join("")
.trim() || "";
// Add parameter descriptions if available
if (comment.blockTags) {
const params = comment.blockTags
.filter((tag) => tag.tag === "@param")
.map((tag) => {
const paramName = tag.param;
let description = "";
let codeExample = "";
tag.content.forEach((part) => {
if (part.kind === "code") {
// Don't wrap in code blocks since examples are already wrapped
codeExample += "\n" + part.text + "\n";
} else {
description += part.text;
}
});
return `- ${paramName}: ${description.trim()}${codeExample}`;
});
if (params.length > 0) {
text += "\n\nParameters:\n" + params.join("\n");
}
// Add remarks if available
const remarks = comment.blockTags
.filter((tag) => tag.tag === "@remarks")
.map((tag) =>
tag.content
.map((part) => part.text)
.join("")
.trim(),
);
if (remarks.length > 0) {
text += "\n\nRemarks:\n" + remarks.join("\n");
}
// Add examples
const examples = comment.blockTags
.filter((tag) => tag.tag === "@example")
.map((tag) =>
tag.content
.map((part) => {
if (part.kind === "code") {
// Don't wrap in code blocks since examples are already wrapped
return "\n" + part.text + "\n";
}
return part.text;
})
.join("")
.trim(),
);
if (examples.length > 0) {
text += "\n\nExamples:\n" + examples.join("\n");
}
}
return text;
}
async function readMdxContent(url) {
try {
// Special case for the introduction
if (url === "/docs") {
const introPath = path.join(
process.cwd(),
"components/docs/docs-intro.mdx",
);
try {
const content = await fs.readFile(introPath, "utf8");
// Remove imports and exports
return content
.replace(/^import[^\n]*\n/gm, "")
.replace(/export const metadata[^;]*;/, "")
.trim();
} catch (err) {
if (err.code !== "ENOENT") throw err;
}
}
// Convert URL to file path
// Remove leading slash and 'docs' from URL
const relativePath = url.replace(/^\/docs\/?/, "");
// Base directory for docs
const baseDir = path.join(process.cwd(), "app/docs/[framework]/[...slug]");
// If it's a directory, try to read all framework variants
const fullPath = path.join(baseDir, relativePath);
try {
const stats = await fs.stat(fullPath);
if (stats.isDirectory()) {
// Read all MDX files in the directory
const files = await fs.readdir(fullPath);
const mdxFiles = files.filter((f) => f.endsWith(".mdx"));
if (mdxFiles.length === 0) return null;
// Combine content from all framework variants
const contents = await Promise.all(
mdxFiles.map(async (file) => {
const content = await fs.readFile(
path.join(fullPath, file),
"utf8",
);
// Remove imports and exports
const cleanContent = content
.replace(/^import[^\n]*\n/gm, "")
.replace(/export const metadata[^;]*;/, "")
.trim();
return `### ${path.basename(file, ".mdx")} Implementation\n\n${cleanContent}`;
}),
);
return contents.join("\n\n---\n\n");
}
} catch (err) {
if (err.code !== "ENOENT") throw err;
}
// Try as a single MDX file
const mdxPath = fullPath + ".mdx";
try {
const content = await fs.readFile(mdxPath, "utf8");
// Remove imports and exports
return content
.replace(/^import[^\n]*\n/gm, "")
.replace(/export const metadata[^;]*;/, "")
.trim();
} catch (err) {
if (err.code !== "ENOENT") throw err;
}
console.warn(`Could not find MDX content for ${url} at ${fullPath}`);
return null;
} catch (error) {
console.warn(`Error reading MDX content for ${url}:`, error);
return null;
}
}
async function generateDetailedDocs(docs) {
const output = [];
const deserializer = new Deserializer();
// Project title
output.push("# Jazz\n");
// Documentation sections with full content
output.push("## Documentation\n");
for (const section of DOC_SECTIONS) {
output.push(`### ${section.title}\n`);
for (const page of section.pages) {
output.push(`#### ${page.title}\n`);
const content = await readMdxContent(page.url);
console.log(content);
if (content) {
// If the content contains framework-specific implementations, they're already properly formatted
// Otherwise, just add the content directly
output.push(content + "\n");
}
output.push("\n");
}
}
// API Reference by package
output.push("## API Reference\n\n");
// for (const [packageName, packageDocs] of Object.entries(docs)) {
// const project = deserializer.reviveProject(packageDocs, packageName);
// // Add package heading with description
// output.push(`### ${packageName}\n`);
// output.push(`${getPackageDescription(packageName)}\n\n`);
// output.push(
// `[API Reference](https://jazz.tools/api-reference/${packageName})\n\n`,
// );
// // Process each category
// project.categories?.forEach((category) => {
// output.push(`#### ${category.title}\n`);
// category.children.forEach((child) => {
// // Add name, kind, and API reference link
// const apiLink = `[API Reference](https://jazz.tools/api-reference/${packageName}#${child.name})`;
// output.push(
// `##### ${child.name} (${ReflectionKind[child.kind]}) ${apiLink}\n`,
// );
// // Add description if available
// const description = formatComment(child.comment);
// if (description) {
// output.push(`${description}\n`);
// }
// output.push("\n");
// // Add properties for classes/interfaces
// if (child.children) {
// output.push("Properties:\n");
// // Group overloaded methods by name
// const methodGroups = new Map();
// child.children.forEach((prop) => {
// if (prop.signatures?.length > 0) {
// const existing = methodGroups.get(prop.name) || [];
// methodGroups.set(prop.name, [...existing, prop]);
// }
// });
// child.children.forEach((prop) => {
// // Skip if this is an overloaded method that we'll handle later
// if (
// prop.signatures?.length > 0 &&
// methodGroups.get(prop.name)?.length > 1
// ) {
// return;
// }
// const type = formatType(prop.type);
// const description = formatComment(prop.comment);
// // Output the property name and type, but skip the type for methods since we'll show signatures
// if (prop.signatures?.length > 0) {
// output.push(
// `- ${prop.name}${description ? ` - ${description}` : ""}\n`,
// );
// } else {
// output.push(
// `- ${prop.name}: ${type}${description ? ` - ${description}` : ""}\n`,
// );
// }
// // Handle method signatures with proper indentation
// if (prop.signatures) {
// prop.signatures.forEach((sig) => {
// const params = sig.parameters
// ?.map((p) => {
// const paramType = formatType(p.type);
// return `${p.name}: ${paramType}`;
// })
// .join(", ");
// output.push(
// ` Method signature: \`(${params || ""}) => ${formatType(sig.type)}\`\n`,
// );
// // Add API reference URL for the method
// output.push(
// ` [API Reference](https://jazz.tools/api-reference/${packageName}#${child.name}.${prop.name})\n`,
// );
// const methodDesc = formatComment(sig.comment);
// if (methodDesc) {
// // Indent each line of the description
// const indentedDesc = methodDesc
// .split("\n")
// .map((line) => ` ${line}`)
// .join("\n");
// output.push(`${indentedDesc}\n`);
// }
// });
// }
// });
// // Handle overloaded methods
// methodGroups.forEach((props, name) => {
// if (props.length <= 1) return;
// const firstProp = props[0];
// const description = formatComment(firstProp.comment);
// output.push(`- ${name}${description ? ` - ${description}` : ""}\n`);
// // Combine all signatures with proper indentation
// const allSignatures = props.flatMap((p) => p.signatures || []);
// allSignatures.forEach((sig) => {
// const params = sig.parameters
// ?.map((p) => {
// const paramType = formatType(p.type);
// return `${p.name}: ${paramType}`;
// })
// .join(", ");
// output.push(
// ` Method signature: \`(${params || ""}) => ${formatType(sig.type)}\`\n`,
// );
// // Add API reference URL for the overloaded method
// output.push(
// ` [API Reference](https://jazz.tools/api-reference/${packageName}#${child.name}.${name})\n`,
// );
// const methodDesc = formatComment(sig.comment);
// if (methodDesc) {
// // Indent each line of the description
// const indentedDesc = methodDesc
// .split("\n")
// .map((line) => ` ${line}`)
// .join("\n");
// output.push(`${indentedDesc}\n`);
// }
// });
// });
// }
// // Add signatures for functions/methods
// if (child.signatures) {
// child.signatures.forEach((sig) => {
// const params = sig.parameters
// ?.map((p) => {
// const type = formatType(p.type);
// const desc = formatComment(p.comment);
// return `${p.name}: ${type}${desc ? ` - ${desc}` : ""}`;
// })
// .join(", ");
// output.push(`Signature: ${child.name}(${params || ""})`);
// if (sig.type) {
// output.push(`Returns: ${formatType(sig.type)}`);
// if (sig.comment?.returns) {
// output.push(
// `Return description: ${sig.comment.returns
// .map((part) => part.text)
// .join("")
// .trim()}`,
// );
// }
// }
// const sigComment = formatComment(sig.comment);
// if (sigComment) {
// output.push(`\n${sigComment}`);
// }
// output.push("\n");
// });
// }
// output.push("\n");
// });
// });
// }
// Optional section for additional resources
output.push("## Resources\n\n");
output.push(
"- [Documentation](https://jazz.tools/docs): Detailed documentation about Jazz\n",
);
output.push(
"- [Examples](https://jazz.tools/examples): Code examples and tutorials\n",
);
await writeDocsFile("llms-full.txt", output.join("\n"));
}
// Main execution
async function main() {
console.log("Generating detailed LLM docs...");
const docs = await loadTypedocFiles();
await generateDetailedDocs(docs);
}
main().catch(console.error);

View File

@@ -1,80 +0,0 @@
import { Deserializer } from "typedoc";
import { DOC_SECTIONS, PACKAGES } from "./utils/config.mjs";
import {
cleanDescription,
loadTypedocFiles,
writeDocsFile,
} from "./utils/index.mjs";
async function generateConciseDocs(docs) {
const output = [];
const deserializer = new Deserializer();
// Project title
output.push("# Jazz\n");
// Documentation sections
output.push("## Documentation\n");
DOC_SECTIONS.forEach((section) => {
output.push(`### ${section.title}\n`);
section.pages.forEach((page) => {
output.push(`- [${page.title}](https://jazz.tools${page.url})\n`);
});
output.push("\n");
});
// API Reference by package
for (const [packageName, packageDocs] of Object.entries(docs)) {
const project = deserializer.reviveProject(packageDocs, packageName);
// Add package heading
output.push(`## ${packageName}\n`);
// Process each category and its exports with direct links
if (project.categories) {
const seen = new Set(); // Track seen names to avoid duplicates
project.categories.forEach((category) => {
category.children.forEach((child) => {
if (seen.has(child.name)) return;
seen.add(child.name);
// Get and clean up description
let description = child.comment?.summary
? cleanDescription(child.comment.summary)
: "";
// Truncate description if it's too long
if (description && description.length > 150) {
description = description.substring(0, 147) + "...";
}
// Create the line without wrapping
output.push(
`- [${child.name}](https://jazz.tools/api-reference/${packageName}#${child.name})${description ? `: ${description}` : ""}\n`,
);
});
});
output.push("\n");
}
}
// Optional section for additional resources
output.push("## Optional\n");
output.push(
"- [Documentation](https://jazz.tools/docs): Detailed documentation about Jazz\n",
);
output.push(
"- [Examples](https://jazz.tools/examples): Code examples and tutorials\n",
);
await writeDocsFile("llms.txt", output.join(""));
}
// Main execution
async function main() {
console.log("Generating concise LLM docs...");
const docs = await loadTypedocFiles();
await generateConciseDocs(docs);
}
main().catch(console.error);

View File

@@ -1,47 +0,0 @@
import { docNavigationItems } from "../../lib/docNavigationItems.js";
// Transform docNavigationItems into the format we need
function transformNavItems() {
return docNavigationItems
.map((section) => ({
title: section.name,
pages: section.items
.filter((item) => item.done !== 0) // Skip not-yet-written docs
.map((item) => ({
title: item.name,
url: item.href,
})),
}))
.filter((section) => section.pages.length > 0); // Only include sections with pages
}
export const DOC_SECTIONS = transformNavItems();
export const PACKAGES = [
{
packageName: "jazz-tools",
entryPoint: "exports.ts",
description:
"The base implementation for Jazz, a framework for distributed state. Provides a high-level API around the CoJSON protocol.",
},
{
packageName: "jazz-react",
entryPoint: "index.ts",
description: "React bindings for Jazz, a framework for distributed state.",
typedocOptions: {
skipErrorChecking: true, // TODO: remove this. Temporary workaround
},
},
{
packageName: "jazz-browser",
description: "Browser (Vanilla JavaScript) bindings for Jazz",
},
{
packageName: "jazz-browser-media-images",
description: "Image handling utilities for Jazz in the browser",
},
{
packageName: "jazz-nodejs",
description: "NodeJS/Bun server worker bindings for Jazz",
},
];

View File

@@ -1,58 +0,0 @@
import path from "path";
import fs from "fs/promises";
import { PACKAGES } from "./config.mjs";
// Common configuration
export const PACKAGE_DESCRIPTIONS = {
"jazz-tools":
"The base implementation for Jazz, a framework for distributed state. Provides a high-level API around the CoJSON protocol.",
"jazz-react": "React bindings for Jazz, a framework for distributed state.",
"jazz-browser": "Browser (Vanilla JavaScript) bindings for Jazz",
"jazz-browser-media-images":
"Image handling utilities for Jazz in the browser",
"jazz-nodejs": "NodeJS/Bun server worker bindings for Jazz",
};
// Helper functions
export async function loadTypedocFiles() {
const docs = {};
for (const { packageName } of PACKAGES) {
docs[packageName] = JSON.parse(
await fs.readFile(
path.join(process.cwd(), "typedoc", packageName + ".json"),
"utf-8",
),
);
}
return docs;
}
export function getPackageDescription(packageName) {
const pkg = PACKAGES.find((p) => p.packageName === packageName);
return pkg?.description || "";
}
export function cleanDescription(description) {
if (!description) return "";
return (
description
.map((part) => part.text)
.join(" ")
.trim()
// Remove code blocks
.replace(/```[\s\S]*?```/g, "")
// Remove line breaks and extra spaces
.replace(/\s+/g, " ")
// Clean up backticks
.replace(/\`/g, "'")
);
}
export async function writeDocsFile(filename, content) {
await fs.writeFile(
path.join(process.cwd(), "public", filename),
content,
"utf8",
);
console.log(`Documentation generated at 'public/${filename}'`);
}

View File

@@ -5,15 +5,11 @@
"type": "module",
"scripts": {
"dev": "NODE_OPTIONS=--max-old-space-size=8192 next dev",
"build:generate-docs": "pnpm run generate:docs && pnpm run generate:llm-docs:all",
"build:generate-docs": "node genDocs.mjs --build",
"build": "next build",
"start": "next start",
"format-and-lint": "biome check .",
"format-and-lint:fix": "biome check . --write",
"generate:docs": "node generate-docs/typedocs.mjs --build",
"generate:llm-docs:all": "pnpm run generate:llm-docs:concise && pnpm run generate:llm-docs:full",
"generate:llm-docs:concise": "node generate-docs/llms.mjs",
"generate:llm-docs:full": "node generate-docs/llms-full.mjs"
"format-and-lint:fix": "biome check . --write"
},
"packageManager": "pnpm@9.14.0",
"dependencies": {

View File

@@ -27,8 +27,7 @@
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
"mdx.d.ts",
"lib/docNavigationItems.js"
"mdx.d.ts"
],
"exclude": ["node_modules"]
}

View File

@@ -1,29 +1,5 @@
# cojson-storage-indexeddb
## 0.9.23
### Patch Changes
- Updated dependencies [70c9a5d]
- cojson@0.9.23
- cojson-storage@0.9.23
## 0.9.19
### Patch Changes
- Updated dependencies [6ad0a9f]
- cojson@0.9.19
- cojson-storage@0.9.19
## 0.9.18
### Patch Changes
- Updated dependencies [8898b10]
- cojson@0.9.18
- cojson-storage@0.9.18
## 0.9.13
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "cojson-storage-indexeddb",
"version": "0.9.23",
"version": "0.9.13",
"main": "dist/index.js",
"type": "module",
"types": "src/index.ts",

View File

@@ -1,29 +1,5 @@
# cojson-storage-sqlite
## 0.8.59
### Patch Changes
- Updated dependencies [70c9a5d]
- cojson@0.9.23
- cojson-storage@0.9.23
## 0.8.58
### Patch Changes
- Updated dependencies [6ad0a9f]
- cojson@0.9.19
- cojson-storage@0.9.19
## 0.8.57
### Patch Changes
- Updated dependencies [8898b10]
- cojson@0.9.18
- cojson-storage@0.9.18
## 0.8.56
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "cojson-storage-rn-sqlite",
"type": "module",
"version": "0.8.59",
"version": "0.8.56",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",

View File

@@ -1,29 +1,5 @@
# cojson-storage-sqlite
## 0.9.23
### Patch Changes
- Updated dependencies [70c9a5d]
- cojson@0.9.23
- cojson-storage@0.9.23
## 0.9.19
### Patch Changes
- Updated dependencies [6ad0a9f]
- cojson@0.9.19
- cojson-storage@0.9.19
## 0.9.18
### Patch Changes
- Updated dependencies [8898b10]
- cojson@0.9.18
- cojson-storage@0.9.18
## 0.9.13
### Patch Changes

View File

@@ -1,13 +1,13 @@
{
"name": "cojson-storage-sqlite",
"type": "module",
"version": "0.9.23",
"version": "0.9.13",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"better-sqlite3": "^11.7.0",
"cojson": "workspace:0.9.23",
"cojson": "workspace:0.9.13",
"cojson-storage": "workspace:*"
},
"devDependencies": {

View File

@@ -1,26 +1,5 @@
# cojson-storage
## 0.9.23
### Patch Changes
- Updated dependencies [70c9a5d]
- cojson@0.9.23
## 0.9.19
### Patch Changes
- Updated dependencies [6ad0a9f]
- cojson@0.9.19
## 0.9.18
### Patch Changes
- Updated dependencies [8898b10]
- cojson@0.9.18
## 0.9.13
### Patch Changes

Some files were not shown because too many files have changed in this diff Show More