Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
2e619e5
start of v2 structure
LadyBluenotes Aug 24, 2025
780750c
Improve data fetching docs (#1179)
amirhhashemi Aug 26, 2025
20cf242
quick start
LadyBluenotes Aug 28, 2025
a67220a
update titles and reactivity basics page
LadyBluenotes Aug 28, 2025
2d97093
focused signals page
LadyBluenotes Aug 28, 2025
ce0da5c
understanding JSX page
LadyBluenotes Aug 28, 2025
21e2e8c
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
b41f22c
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
da9300d
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
aeac1e6
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
4d1d09d
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
a96251c
new files
LadyBluenotes Aug 30, 2025
8c8931b
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
dae6b8a
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 30, 2025
ca815ce
workign on new pages
LadyBluenotes Aug 31, 2025
b6a0505
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 31, 2025
9d5c443
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 31, 2025
8e8789d
Merge branch 'main' into v2-docs
kodiakhq[bot] Aug 31, 2025
1ba03a9
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 2, 2025
a229b75
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 2, 2025
40b4f5b
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 2, 2025
5ec20ef
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 2, 2025
41709a6
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 3, 2025
eef1c9b
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 3, 2025
736cd9a
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 3, 2025
db0956b
Merge branch 'main' into v2-docs
kodiakhq[bot] Sep 3, 2025
daf1c5c
Update src/routes/getting-started/quick-start.mdx
LadyBluenotes Sep 3, 2025
a55927a
Apply suggestions from code review
LadyBluenotes Sep 3, 2025
0f5f21b
effects
LadyBluenotes Sep 17, 2025
e773cb2
Closes issues #649 and #968 (#1251)
thomasbuilds Sep 7, 2025
348aea9
Addresses Issue #1183 (#1252)
thomasbuilds Sep 8, 2025
832a918
Bump @types/node from 24.3.0 to 24.3.1 (#1254)
dependabot[bot] Sep 8, 2025
a297414
Bump eslint from 9.34.0 to 9.35.0 (#1256)
dependabot[bot] Sep 8, 2025
8e5abe9
Bump dotenv from 17.2.1 to 17.2.2 (#1255)
dependabot[bot] Sep 8, 2025
62261b1
Bump @typescript-eslint/parser from 8.41.0 to 8.43.0 (#1257)
dependabot[bot] Sep 9, 2025
f066063
Bump typescript-eslint from 8.41.0 to 8.43.0 (#1258)
dependabot[bot] Sep 9, 2025
0187c05
remove random `;` symbol from splitProps docs (#1260)
JLarky Sep 11, 2025
b1e1076
Addresses #547 (#1253)
thomasbuilds Sep 12, 2025
2230518
Addressed issue #1259 (#1262)
thomasbuilds Sep 14, 2025
6677dd2
Fix code example error in create-effect.mdx (#1261)
WavJaby Sep 14, 2025
a9105fe
Bump zod from 4.1.5 to 4.1.8 (#1268)
dependabot[bot] Sep 16, 2025
c576beb
Bump @solidjs/start from 1.1.7 to 1.2.0 (#1266)
dependabot[bot] Sep 16, 2025
cce5056
Bump @eslint/js from 9.34.0 to 9.35.0 (#1265)
dependabot[bot] Sep 16, 2025
42bee6a
Bump globals from 16.3.0 to 16.4.0 (#1267)
dependabot[bot] Sep 16, 2025
2581e1b
Remove "variables" from createEffect dependency examples (#1269)
Mind-of-Apollo Sep 17, 2025
c34397b
start of v2 structure
LadyBluenotes Aug 24, 2025
8e9c161
fix broken jsx
LadyBluenotes Sep 17, 2025
795ea93
derived state section
LadyBluenotes Sep 17, 2025
741243c
working on stores page
LadyBluenotes Sep 22, 2025
4f5d07a
fix broken link:
LadyBluenotes Sep 22, 2025
01d9c0e
Bump @types/node from 24.3.1 to 24.5.0 (#1264)
dependabot[bot] Sep 17, 2025
09138ff
start of v2 structure
LadyBluenotes Aug 24, 2025
39cbee3
fix getting-started
LadyBluenotes Sep 22, 2025
673d79e
rm old component
LadyBluenotes Sep 22, 2025
bd8bfff
remove lunaria
LadyBluenotes Sep 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 0 additions & 57 deletions lunaria.config.json

This file was deleted.

4 changes: 0 additions & 4 deletions lunaria/styles.css

This file was deleted.

File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ When the value of `count` changes, the effect is triggered, causing it to run ag

Effects can be set to observe any number of dependencies.
Dependencies are what allow an effect to track changes and respond accordingly.
These can include signals, variables, props, context, or any other reactive values.
These can include signals, props, context, or any other reactive values.
When any of these change, the effect is notified and will run again to update its state.

Upon initialization, an effect will run _once_, regardless of whether it has any dependencies.
Expand Down
File renamed without changes.
File renamed without changes.
17 changes: 11 additions & 6 deletions src/routes/concepts/stores.mdx → old pages/concepts/stores.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: Stores
order: 6
---

Similar to [signals](/concepts/signals), stores are a state management primitive.
However, while signals manage a single piece of state, stores create a centralized location to reduce code redundancy.
Within Solid, these stores can spawn a collection of reactive signals, each corresponding to a particular property which can be useful when working with complex state.
Stores are a state management primitive that provide a centralized way to handle shared data and reduce redundancy.
Unlike [signals](/concepts/signals), which track a single value and trigger a full re-render when updated, stores maintain fine-grained reactivity by updating only the properties that change.
They can produce a collection of reactive signals, each linked to an individual property, making them well-suited for managing complex state efficiently.

## Creating a store

Expand Down Expand Up @@ -253,8 +253,10 @@ Instead of relying on discovering individual indices, path syntax introduces sev

### Appending new values

To append new values to an array in a store, use the setter function with the spread operator (`...`) to create a new array that includes the existing items and the new ones.
For appending a single element, you can instead leverage the "path syntax" by specifying the array’s length as the index to set.
To append values to an array in a store, use the setter function with the spread operator (`...`) or the path syntax. Both methods add an element to the array but differ in how they modify it and their reactivity behavior.

The spread operator creates a new array by copying the existing elements and adding the new one, effectively replacing the entire `store.users` array.
This replacement triggers reactivity for all effects that depend on the array or its properties.

```jsx
setStore("users", (otherUsers) => [
Expand All @@ -266,9 +268,12 @@ setStore("users", (otherUsers) => [
loggedIn: false,
},
])
```

// can become
The path syntax adds the new element by assigning it to the index equal to `store.users.length`, directly modifying the existing array.
This triggers reactivity only for effects that depend on the new index or properties like `store.users.length`, making updates more efficient and targeted.

```jsx
setStore("users", store.users.length, {
id: 3,
username: "michael584",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ This provides a concise and readable way to create and represent components.

Solid was designed to align closely with HTML standards.

```jsx
```tsx
const element = <h1>I'm JSX!!</h1>
```

It offers a distinct advantage, however: to copy/paste solutions from resources like Stack Overflow; and to allow direct usage of templates from design tools.
Solid sets itself apart by using JSX immediately as it returns [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction) elements.
This lets you use dynamic expressions within your HTML by allowing variables and functions to be references with the use of curly braces (`{ }`):

```jsx
```tsx
const Component = () => {
const animal = { breed: "cat", name: "Midnight" }

Expand All @@ -42,7 +42,7 @@ This updates only the necessary parts of the DOM when changes occur in the under

Where HTML lets you have disconnected tags at the top level, JSX requires that a component to return a single root element.

:::advanced
:::note
When working with JSX, parts of your code are translated into structured HTML that is placed at the start of the file.
Static elements are processed differently from dynamic ones, which might change based on data or user actions.
For dynamic elements, special markers are added for better handling during rendering.
Expand All @@ -59,7 +59,7 @@ Self-closing tags are a must in JSX.
Unlike in HTML, where elements like `<input>`, `<img>`, or `<br>` don't require explicit closure, JSX requires consistent self-closing tags.
This helps to avoid potential rendering issues.

```jsx
```tsx
<img src="./image-here.png" />
```

Expand All @@ -81,23 +81,25 @@ In JSX files, HTML attributes are used much like regular HTML, with a few key di
(**Note:** When using ESLint, you will get a warning if you use lowercase.)
- In cases where you can dynamically specify a value, you can replace the `"` and `"` with curly braces (`{ }`):

```jsx
```tsx
<button class="myClass" onClick={handleClick}>
Click me!
</button>
```

:::note
If you wish to pass objects in JSX, such as with inline styling, you will have to use double curly braces (`{{ }}`).
:::note

If you wish to pass objects in JSX, such as with inline styling, you will have to use double curly braces (`{{ }}`).

```jsx
```tsx
<button style={{
color: 'red',
font-size: '2rem',
}}>
Click me!
</button>
```

:::

### JSX properties (props)
Expand All @@ -120,10 +122,12 @@ They connect the component with the data it requires, for seamless data flows an
This results in components that react in real-time to data changes.

:::note

Expressions, whether fixed or dynamic, get applied *in the order defined within the JSX*.
This works for a wide range of DOM elements, but will not work with elements that require attributes to be defined in a special order, such as input types with `type='range'`.

When order influences an element's behavior, users must define the expressions in the order that the element is expected.

:::

For how to use props effectively in Solid, explore the [props page](/concepts/components/props).
File renamed without changes.
14 changes: 14 additions & 0 deletions old pages/guides/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"title": "Guides",
"pages": [
"styling-your-components.mdx",
"styling-components",
"state-management.mdx",
"routing-and-navigation.mdx",
"complex-state-management.mdx",
"fetching-data.mdx",
"testing.mdx",
"deploying-your-app.mdx",
"deployment-options"
]
}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,7 @@ Instead of checking for the presence of a parameter, this allows for more comple
```jsx
import { lazy } from "solid-js";
import { render } from "solid-js/web";
import { Router, Route } from "@solidjs/router";
import type { SegmentValidators } from "./types";
import { Router, Route, type MatchFilters } from "@solidjs/router";

const User = lazy(() => import("./pages/User"));

Expand Down
File renamed without changes.
File renamed without changes.
25 changes: 11 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,35 +1,32 @@
{
"name": "solid-docs-next",
"version": "1.0.0",
"version": "2.0.0",
"private": true,
"description": "Docs for Solid",
"type": "module",
"scripts": {
"sync": "node scripts/collections/index.mjs",
"sync:orama": "pnpm build && node scripts/sync-orama.mjs",
"dev": "pnpm sync && vinxi dev",
"build": "pnpm sync && pnpm build:sitemap && pnpm build:lunaria && NODE_OPTIONS=\"--max-old-space-size=8192\" vinxi build",
"build": "pnpm sync && pnpm build:sitemap && NODE_OPTIONS=\"--max-old-space-size=8192\" vinxi build",
"build:sitemap": "node scripts/generateSitemap.js",
"start": "vinxi start",
"e2e": "npx playwright test",
"build:lunaria": "lunaria build",
"preview:lunaria": "lunaria preview",
"check:lint": "eslint .",
"check:types": "tsc --noEmit"
},
"dependencies": {
"@kobalte/core": "^0.13.11",
"@kobalte/solidbase": "^0.2.17",
"@lunariajs/core": "^0.1.1",
"@oramacloud/client": "^2.1.4",
"@solid-primitives/event-listener": "^2.4.3",
"@solid-primitives/marker": "^0.2.2",
"@solid-primitives/media": "^2.3.3",
"@solid-primitives/platform": "^0.2.1",
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.3",
"@solidjs/start": "^1.1.7",
"dotenv": "^17.2.1",
"@solidjs/start": "^1.2.0",
"dotenv": "^17.2.2",
"glob": "^11.0.3",
"gray-matter": "^4.0.3",
"postcss": "^8.5.6",
Expand All @@ -39,25 +36,25 @@
"solid-js": "^1.9.9",
"solid-list": "^0.3.0",
"vinxi": "^0.5.7",
"zod": "^4.1.5"
"zod": "^4.1.8"
},
"devDependencies": {
"@eslint/js": "^9.34.0",
"@eslint/js": "^9.35.0",
"@kobalte/tailwindcss": "^0.9.0",
"@orama/crawly": "^0.0.6",
"@tailwindcss/typography": "^0.5.16",
"@types/node": "^24.3.0",
"@types/node": "^24.5.1",
"@typescript-eslint/eslint-plugin": "^8.41.0",
"@typescript-eslint/parser": "^8.41.0",
"@typescript-eslint/parser": "^8.43.0",
"autoprefixer": "^10.4.21",
"eslint": "^9.34.0",
"eslint": "^9.35.0",
"eslint-plugin-solid": "^0.14.5",
"globals": "^16.3.0",
"globals": "^16.4.0",
"prettier": "3.6.2",
"prettier-plugin-tailwindcss": "^0.6.14",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.2",
"typescript-eslint": "^8.41.0",
"typescript-eslint": "^8.43.0",
"vite": "^6.3.5"
},
"engines": {
Expand Down
Loading