├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── BUGS.yml │ ├── CONTENT.yml │ ├── OTHER.yml │ ├── REQUEST.yml │ └── config.yml ├── PULL_REQUEST_TEMPLATE.md ├── actions │ └── install │ │ └── action.yml └── workflows │ ├── orama_sync.yml │ └── static_checks.yml ├── .gitignore ├── .kodiak.toml ├── .prettierignore ├── .prettierrc ├── CONTRIBUTING.md ├── README.md ├── WRITING.md ├── app.config.ts ├── env.d.ts ├── global.d.ts ├── lunaria.config.json ├── lunaria └── styles.css ├── netlify.toml ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── assets │ ├── cloudflare-pages.svg │ ├── css-modules.svg │ ├── firebase.svg │ ├── flightcontrol.svg │ ├── less.svg │ ├── macaron.svg │ ├── netlify.svg │ ├── railway.svg │ ├── sass.svg │ ├── solid.svg │ ├── sst.svg │ ├── stormkit.svg │ ├── tailwind.svg │ ├── uno.svg │ ├── vercel.svg │ └── zerops.svg ├── favicon.ico ├── favicon.svg ├── fonts │ ├── Geist-Bold.woff2 │ ├── Geist-Light.woff2 │ ├── Geist-Medium.woff2 │ ├── Geist-Regular.woff2 │ ├── Geist-SemiBold.woff2 │ ├── GeistMono-Bold.woff2 │ ├── GeistMono-Medium.woff2 │ ├── GeistMono-Regular.woff2 │ ├── GeistMono-SemiBold.woff2 │ └── Inter-Regular.woff2 ├── images │ ├── foundations │ │ └── thinking-solid │ │ │ ├── solid-simple-state-update-dark.svg │ │ │ └── solid-simple-state-update-light.svg │ ├── how-to-guides │ │ ├── comparison │ │ │ └── react │ │ │ │ ├── react-simple-state-update-dark.png │ │ │ │ ├── react-simple-state-update-dark.svg │ │ │ │ ├── react-simple-state-update-light.png │ │ │ │ ├── react-simple-state-update-light.svg │ │ │ │ ├── solid-simple-state-update-dark.png │ │ │ │ ├── solid-simple-state-update-dark.svg │ │ │ │ ├── solid-simple-state-update-light.png │ │ │ │ └── solid-simple-state-update-light.svg │ │ └── deployment │ │ │ ├── Flightcontrol-link-AWS.png │ │ │ ├── cloudflare-after-connection.png │ │ │ ├── cloudflare-dashboard.png │ │ │ ├── cloudflare-login.png │ │ │ ├── cloudflare-setup.png │ │ │ ├── firebase-deploy-done.png │ │ │ ├── flightcontrol-config-option.png │ │ │ ├── flightcontrol-connect-github.png │ │ │ ├── flightcontrol-services.png │ │ │ ├── flightcontrol-static-website.png │ │ │ ├── google-cloud-container-registry.png │ │ │ ├── google-cloud-create.png │ │ │ ├── google-cloud-project-dashboard.png │ │ │ ├── netlify-cli-success.png │ │ │ ├── netlify-connect-import.png │ │ │ ├── netlify-dashboard.png │ │ │ ├── netlify-deploy.png │ │ │ ├── railway-dashboard.png │ │ │ ├── railway-deploy-success.png │ │ │ ├── railway-generate-domain.png │ │ │ ├── railway-new-project.png │ │ │ ├── railway-select-project.png │ │ │ ├── vercel-deploy-done.png │ │ │ ├── vercel-deploy.png │ │ │ ├── vercel-import-repo.png │ │ │ └── vercel-login.png │ └── tutorial │ │ ├── solid-start-app.png │ │ ├── template-files-js.png │ │ └── template-files-ts.png ├── robots.txt ├── scripts │ └── browser-specific.js └── solid-start.svg ├── scripts ├── collections │ ├── build-file-tree.mjs │ ├── create-flat-entry-list.mjs │ ├── create-nav-tree.mjs │ ├── index.mjs │ ├── schemas.mjs │ └── utils │ │ ├── create-dir.mjs │ │ ├── get-dir-data.mjs │ │ ├── get-frontmatter.mjs │ │ └── write-file.mjs ├── create-i18n-entries.mjs ├── create-i18n-tree.mjs ├── generateSitemap.js └── sync-orama.mjs ├── src ├── app.tsx ├── data │ └── get-nav.tsx ├── entry-client.tsx ├── entry-server.tsx ├── global.d.ts ├── i18n │ ├── config.ts │ ├── dictionaries │ │ ├── en │ │ │ └── ui.ts │ │ ├── index.ts │ │ └── pt-br │ │ │ └── ui.ts │ ├── helpers.ts │ ├── i18n-context.tsx │ └── translator.ts ├── middleware │ ├── index.ts │ └── legacy-routes-redirect.ts ├── routes │ ├── [...404].tsx │ ├── advanced-concepts │ │ ├── data.json │ │ └── fine-grained-reactivity.mdx │ ├── concepts │ │ ├── components │ │ │ ├── basics.mdx │ │ │ ├── class-style.mdx │ │ │ ├── data.json │ │ │ ├── event-handlers.mdx │ │ │ └── props.mdx │ │ ├── context.mdx │ │ ├── control-flow │ │ │ ├── conditional-rendering.mdx │ │ │ ├── data.json │ │ │ ├── dynamic.mdx │ │ │ ├── error-boundary.mdx │ │ │ ├── list-rendering.mdx │ │ │ └── portal.mdx │ │ ├── data.json │ │ ├── derived-values │ │ │ ├── data.json │ │ │ ├── derived-signals.mdx │ │ │ └── memos.mdx │ │ ├── effects.mdx │ │ ├── intro-to-reactivity.mdx │ │ ├── refs.mdx │ │ ├── signals.mdx │ │ ├── stores.mdx │ │ └── understanding-jsx.mdx │ ├── configuration │ │ ├── data.json │ │ ├── environment-variables.mdx │ │ └── typescript.mdx │ ├── data.json │ ├── guides │ │ ├── complex-state-management.mdx │ │ ├── data.json │ │ ├── deploying-your-app.mdx │ │ ├── deployment-options │ │ │ ├── aws-via-flightcontrol.mdx │ │ │ ├── aws-via-sst.mdx │ │ │ ├── cloudflare.mdx │ │ │ ├── data.json │ │ │ ├── firebase.mdx │ │ │ ├── netlify.mdx │ │ │ ├── railway.mdx │ │ │ ├── stormkit.mdx │ │ │ ├── vercel.mdx │ │ │ └── zerops.mdx │ │ ├── fetching-data.mdx │ │ ├── routing-and-navigation.mdx │ │ ├── state-management.mdx │ │ ├── styling-components │ │ │ ├── css-modules.mdx │ │ │ ├── data.json │ │ │ ├── less.mdx │ │ │ ├── macaron.mdx │ │ │ ├── sass.mdx │ │ │ ├── tailwind-v3.mdx │ │ │ ├── tailwind.mdx │ │ │ └── uno.mdx │ │ ├── styling-your-components.mdx │ │ └── testing.mdx │ ├── index.mdx │ ├── pt-br │ │ ├── index.mdx │ │ ├── quick-start.mdx │ │ └── solid-router │ │ │ ├── index.mdx │ │ │ └── quick-start.mdx │ ├── quick-start.mdx │ ├── reference │ │ ├── basic-reactivity │ │ │ ├── create-effect.mdx │ │ │ ├── create-memo.mdx │ │ │ ├── create-resource.mdx │ │ │ ├── create-signal.mdx │ │ │ └── data.json │ │ ├── component-apis │ │ │ ├── children.mdx │ │ │ ├── create-context.mdx │ │ │ ├── create-unique-id.mdx │ │ │ ├── data.json │ │ │ ├── lazy.mdx │ │ │ └── use-context.mdx │ │ ├── components │ │ │ ├── data.json │ │ │ ├── dynamic.mdx │ │ │ ├── error-boundary.mdx │ │ │ ├── for.mdx │ │ │ ├── index-component.mdx │ │ │ ├── no-hydration.mdx │ │ │ ├── portal.mdx │ │ │ ├── show.mdx │ │ │ ├── suspense-list.mdx │ │ │ ├── suspense.mdx │ │ │ └── switch-and-match.mdx │ │ ├── data.json │ │ ├── jsx-attributes │ │ │ ├── attr.mdx │ │ │ ├── bool.mdx │ │ │ ├── classlist.mdx │ │ │ ├── data.json │ │ │ ├── innerhtml.mdx │ │ │ ├── on.mdx │ │ │ ├── on_.mdx │ │ │ ├── once.mdx │ │ │ ├── prop.mdx │ │ │ ├── ref.mdx │ │ │ ├── style.mdx │ │ │ ├── textcontent.mdx │ │ │ └── use.mdx │ │ ├── lifecycle │ │ │ ├── data.json │ │ │ ├── on-cleanup.mdx │ │ │ └── on-mount.mdx │ │ ├── reactive-utilities │ │ │ ├── batch.mdx │ │ │ ├── catch-error.mdx │ │ │ ├── create-root.mdx │ │ │ ├── data.json │ │ │ ├── from.mdx │ │ │ ├── get-owner.mdx │ │ │ ├── index-array.mdx │ │ │ ├── map-array.mdx │ │ │ ├── merge-props.mdx │ │ │ ├── observable.mdx │ │ │ ├── on-util.mdx │ │ │ ├── run-with-owner.mdx │ │ │ ├── split-props.mdx │ │ │ ├── start-transition.mdx │ │ │ ├── untrack.mdx │ │ │ └── use-transition.mdx │ │ ├── rendering │ │ │ ├── data.json │ │ │ ├── dev.mdx │ │ │ ├── hydrate.mdx │ │ │ ├── hydration-script.mdx │ │ │ ├── is-server.mdx │ │ │ ├── render-to-stream.mdx │ │ │ ├── render-to-string-async.mdx │ │ │ ├── render-to-string.mdx │ │ │ └── render.mdx │ │ ├── secondary-primitives │ │ │ ├── create-computed.mdx │ │ │ ├── create-deferred.mdx │ │ │ ├── create-reaction.mdx │ │ │ ├── create-render-effect.mdx │ │ │ ├── create-selector.mdx │ │ │ └── data.json │ │ ├── server-utilities │ │ │ ├── data.json │ │ │ └── get-request-event.mdx │ │ └── store-utilities │ │ │ ├── create-mutable.mdx │ │ │ ├── create-store.mdx │ │ │ ├── data.json │ │ │ ├── modify-mutable.mdx │ │ │ ├── produce.mdx │ │ │ ├── reconcile.mdx │ │ │ └── unwrap.mdx │ ├── solid-meta │ │ ├── data.json │ │ ├── getting-started │ │ │ ├── client-setup.mdx │ │ │ ├── data.json │ │ │ ├── installation-and-setup.mdx │ │ │ └── server-setup.mdx │ │ ├── index.mdx │ │ └── reference │ │ │ ├── data.json │ │ │ └── meta │ │ │ ├── base.mdx │ │ │ ├── data.json │ │ │ ├── link.mdx │ │ │ ├── meta.mdx │ │ │ ├── metaprovider.mdx │ │ │ ├── style.mdx │ │ │ └── title.mdx │ ├── solid-router │ │ ├── advanced-concepts │ │ │ ├── data.json │ │ │ └── lazy-loading.mdx │ │ ├── concepts │ │ │ ├── actions.mdx │ │ │ ├── alternative-routers.mdx │ │ │ ├── catch-all.mdx │ │ │ ├── data.json │ │ │ ├── dynamic-routes.mdx │ │ │ ├── layouts.mdx │ │ │ ├── navigation.mdx │ │ │ ├── nesting.mdx │ │ │ ├── path-parameters.mdx │ │ │ └── search-parameters.mdx │ │ ├── data.json │ │ ├── getting-started │ │ │ ├── component.mdx │ │ │ ├── config.mdx │ │ │ ├── data.json │ │ │ ├── installation-and-setup.mdx │ │ │ └── linking-routes.mdx │ │ ├── guides │ │ │ ├── data.json │ │ │ └── migration.mdx │ │ ├── index.mdx │ │ ├── reference │ │ │ ├── components │ │ │ │ ├── a.mdx │ │ │ │ ├── data.json │ │ │ │ ├── hash-router.mdx │ │ │ │ ├── memory-router.mdx │ │ │ │ ├── navigate.mdx │ │ │ │ ├── route.mdx │ │ │ │ └── router.mdx │ │ │ ├── data-apis │ │ │ │ ├── action.mdx │ │ │ │ ├── cache.mdx │ │ │ │ ├── create-async-store.mdx │ │ │ │ ├── create-async.mdx │ │ │ │ ├── data.json │ │ │ │ ├── query.mdx │ │ │ │ ├── use-action.mdx │ │ │ │ ├── use-submission.mdx │ │ │ │ └── use-submissions.mdx │ │ │ ├── data.json │ │ │ ├── preload-functions │ │ │ │ ├── data.json │ │ │ │ └── preload.mdx │ │ │ ├── primitives │ │ │ │ ├── data.json │ │ │ │ ├── use-before-leave.mdx │ │ │ │ ├── use-current-matches.mdx │ │ │ │ ├── use-is-routing.mdx │ │ │ │ ├── use-location.mdx │ │ │ │ ├── use-match.mdx │ │ │ │ ├── use-navigate.mdx │ │ │ │ ├── use-params.mdx │ │ │ │ ├── use-preload-route.mdx │ │ │ │ ├── use-resolved-path.mdx │ │ │ │ └── use-search-params.mdx │ │ │ └── response-helpers │ │ │ │ ├── data.json │ │ │ │ ├── json.mdx │ │ │ │ ├── redirect.mdx │ │ │ │ ├── reload.mdx │ │ │ │ └── revalidate.mdx │ │ └── rendering-modes │ │ │ ├── data.json │ │ │ ├── spa.mdx │ │ │ └── ssr.mdx │ └── solid-start │ │ ├── advanced │ │ ├── auth.mdx │ │ ├── data.json │ │ ├── middleware.mdx │ │ ├── request-events.mdx │ │ ├── return-responses.mdx │ │ ├── session.mdx │ │ └── websocket.mdx │ │ ├── building-your-application │ │ ├── api-routes.mdx │ │ ├── css-and-styling.mdx │ │ ├── data-loading.mdx │ │ ├── data.json │ │ ├── head-and-metadata.mdx │ │ ├── route-prerendering.mdx │ │ ├── routing.mdx │ │ └── static-assets.mdx │ │ ├── data.json │ │ ├── getting-started.mdx │ │ ├── guides │ │ ├── data-fetching.mdx │ │ ├── data-mutation.mdx │ │ ├── data.json │ │ ├── security.mdx │ │ └── service-workers.mdx │ │ ├── index.mdx │ │ └── reference │ │ ├── client │ │ ├── client-only.mdx │ │ ├── data.json │ │ ├── mount.mdx │ │ └── start-client.mdx │ │ ├── config │ │ ├── data.json │ │ └── define-config.mdx │ │ ├── data.json │ │ ├── entrypoints │ │ ├── app-config.mdx │ │ ├── app.mdx │ │ ├── data.json │ │ ├── entry-client.mdx │ │ └── entry-server.mdx │ │ ├── routing │ │ ├── data.json │ │ └── file-routes.mdx │ │ └── server │ │ ├── create-handler.mdx │ │ ├── create-middleware.mdx │ │ ├── data.json │ │ ├── get-server-function-meta.mdx │ │ ├── get.mdx │ │ ├── http-header.mdx │ │ ├── http-status-code.mdx │ │ ├── start-server.mdx │ │ └── use-server.mdx ├── solidbase-theme │ ├── Layout.tsx │ └── mdx-components.tsx ├── styles.css ├── styles │ ├── expressive-code.css │ ├── fonts.css │ └── prism.css ├── ui │ ├── button-link.tsx │ ├── callout.tsx │ ├── docs-layout.tsx │ ├── edit-page-link.tsx │ ├── eraser-link │ │ ├── eraser-link.css │ │ └── index.tsx │ ├── i18n-anchor.tsx │ ├── image-links.tsx │ ├── layout.tsx │ ├── layout │ │ ├── contribute.tsx │ │ ├── hero-code-snippet.code │ │ ├── hero-code-snippet.tsx │ │ ├── hero.tsx │ │ ├── language-selector.tsx │ │ ├── main-header.tsx │ │ ├── main-navigation.tsx │ │ ├── mobile-navigation.tsx │ │ ├── side-panel.tsx │ │ ├── table-of-contents.tsx │ │ └── theme-selector.tsx │ ├── logo.tsx │ ├── not-found.tsx │ ├── page-issue-link.tsx │ ├── pagination.tsx │ ├── quick-links.tsx │ ├── search.tsx │ ├── tabs.tsx │ └── use-project-title.ts └── utils │ └── route-metadata-helper.ts ├── tailwind.config.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePatterns": ["node_modules/", "dist/"], 3 | "env": { 4 | "browser": true, 5 | "es2021": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:@typescript-eslint/recommended", 10 | "plugin:solid/typescript" 11 | ], 12 | "overrides": [ 13 | { 14 | "env": { 15 | "node": true 16 | }, 17 | "files": [".eslintrc.{js,cjs}"], 18 | "parserOptions": { 19 | "sourceType": "script" 20 | } 21 | } 22 | ], 23 | "parser": "@typescript-eslint/parser", 24 | "parserOptions": { 25 | "ecmaVersion": "latest", 26 | "sourceType": "module" 27 | }, 28 | "plugins": ["@typescript-eslint", "solid"], 29 | "rules": { 30 | "quotes": ["error", "double"], 31 | "semi": "warn", 32 | "@typescript-eslint/no-unused-vars": [ 33 | "error", 34 | { 35 | "args": "all", 36 | "argsIgnorePattern": "^_", 37 | "caughtErrors": "all", 38 | "caughtErrorsIgnorePattern": "^_", 39 | "destructuredArrayIgnorePattern": "^_", 40 | "varsIgnorePattern": "^_", 41 | "ignoreRestSiblings": true 42 | } 43 | ] 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/BUGS.yml: -------------------------------------------------------------------------------- 1 | name: "Bug Report 🪲" 2 | description: Report an issue or possible bug with the functionality of the Solid docs website. (Not related to the content of the site.) 3 | title: "[Bug]: " 4 | labels: [ 5 | "bug", 6 | "pending review" 7 | ] 8 | assignees: 9 | - danieljcafonso 10 | - atilafassina 11 | 12 | body: 13 | - type: textarea 14 | id: description 15 | attributes: 16 | label: "📝 Issue Description" 17 | description: Please describe the issue you are experiencing while using the Docs website. 18 | placeholder: Description of your observation... 19 | validations: 20 | required: true 21 | - type: textarea 22 | id: page 23 | attributes: 24 | label: "📋 On which page(s) it occurs" 25 | description: Please indicate on which page(s) the issue occurs. 26 | placeholder: https://docs.solidjs.com/concepts/intro-to-reactivity 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: expected 31 | attributes: 32 | label: "🤔 Expected Behavior" 33 | description: Please describe what the expected behavior should be. 34 | placeholder: When on this page, I expected . . . 35 | validations: 36 | required: true 37 | - type: textarea 38 | id: current 39 | attributes: 40 | label: "👀 Current Behavior" 41 | description: Please describe what the current behavior is. 42 | placeholder: But instead, on this page I'm noticing . . . 43 | validations: 44 | required: true 45 | - type: input 46 | id: browser 47 | attributes: 48 | label: 🖥️ Browser 49 | description: Indicate which browser and version you are using. 50 | placeholder: Chrome X 51 | validations: 52 | required: true 53 | - type: textarea 54 | id: additional 55 | attributes: 56 | label: "📄 Additional Information" 57 | description: Any additional information that may be relevant for the issue. 58 | validations: 59 | required: false 60 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/CONTENT.yml: -------------------------------------------------------------------------------- 1 | name: "Content Report 📄" 2 | title: "[Content]:" 3 | description: Report an issue with existing content. 4 | labels: [ 5 | "improve documentation", "pending review" 6 | ] 7 | assignees: 8 | - ladybluenotes 9 | body: 10 | - type: markdown 11 | attributes: 12 | value: "# Reminder: If reporting a minor correction (e.g. typo), feel free to submit a PR directly!" 13 | - type: input 14 | id: subject 15 | attributes: 16 | label: 📚 Subject area/topic 17 | description: Documentation area/topic (e.g. Components, Signals, Reference) 18 | placeholder: "..." 19 | validations: 20 | required: true 21 | - type: textarea 22 | id: page 23 | attributes: 24 | label: "📋 Page(s) affected (or suggested, for new content)" 25 | description: Please provide the URL of the page(s) affected. 26 | placeholder: https://docs.solidjs.com/concepts/intro-to-reactivity 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: generalDesc 31 | attributes: 32 | label: "📋 Description of content that is out-of-date or incorrect" 33 | description: Let us know what's wrong! 34 | placeholder: "..." 35 | validations: 36 | required: true 37 | - type: textarea 38 | id: incorrectContent 39 | attributes: 40 | label: "🖥️ Reproduction in StackBlitz (if reporting incorrect content or code samples)" 41 | description: If you are reporting incorrect content or code samples, you can also attach a reproduction in stackblitz. 42 | validations: 43 | required: false 44 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/OTHER.yml: -------------------------------------------------------------------------------- 1 | name: "Other Report 🌐" 2 | title: "[Other]:" 3 | description: Report something else we should know about the docs site! 4 | labels: [ 5 | "pending review" 6 | ] 7 | body: 8 | - type: textarea 9 | id: issue 10 | attributes: 11 | label: "📋 Explain your issue" 12 | description: Please describe the problem with the documentation in detail. 13 | placeholder: "..." 14 | validations: 15 | required: true 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/REQUEST.yml: -------------------------------------------------------------------------------- 1 | name: "Request 💡" 2 | title: "[Request]:" 3 | description: Share an idea. 4 | labels: [ 5 | "request", "pending review" 6 | ] 7 | assignees: 8 | - ladybluenotes 9 | body: 10 | - type: markdown 11 | attributes: 12 | value: "## Reminder: If reporting a minor correction (e.g. typo), feel free to submit a PR directly!" 13 | - type: dropdown 14 | id: request-topic 15 | attributes: 16 | label: "What is this request related to?" 17 | options: 18 | - Request 19 | - Styling 20 | - Feature 21 | validations: 22 | required: true 23 | - type: textarea 24 | id: page 25 | attributes: 26 | label: "📋 Suggested" 27 | description: Please provide the URL of the page(s) or section this idea is related to. 28 | placeholder: https://docs.solidjs.com/concepts/intro-to-reactivity 29 | validations: 30 | required: false 31 | - type: textarea 32 | id: generalDesc 33 | attributes: 34 | label: "📋 General description or bullet points" 35 | description: Please provide a general description or bullet points about what you would like to see added. 36 | placeholder: "..." 37 | validations: 38 | required: true 39 | - type: textarea 40 | id: example 41 | attributes: 42 | label: "🖥️ Reproduction of code samples in StackBlitz" 43 | description: If you would like to suggest code samples please attach a working reproduction. 44 | placeholder: "..." 45 | validations: 46 | required: false 47 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Support & Community 💁 4 | url: https://discord.com/invite/solidjs 5 | about: 'This issue tracker is not for support questions. Our Discord server hosts the community of Solid users. Come join us to discuss Solid or find assistance!' 6 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [ ] I have read the [Contribution guide](https://github.com/solidjs/solid-docs/blob/main/CONTRIBUTING.md) 4 | - [ ] This PR references an issue (except for typos, broken links, or other minor problems) 5 | 6 | ### Description(required) 7 | 8 | 9 | ### Related issues & labels 10 | 11 | - Closes # 12 | - Suggested label(s) (optional): 13 | -------------------------------------------------------------------------------- /.github/actions/install/action.yml: -------------------------------------------------------------------------------- 1 | name: Install Tools & Dependencies 2 | description: Installs pnpm, Node.js & package dependencies 3 | 4 | runs: 5 | using: composite 6 | steps: 7 | - name: Setup pnpm 8 | uses: pnpm/action-setup@v4 9 | with: 10 | version: 9 11 | run_install: false 12 | 13 | - name: Setup Node.js 14 | uses: actions/setup-node@v4 15 | with: 16 | node-version: 20 17 | cache: pnpm 18 | 19 | - name: Install dependencies 20 | run: pnpm install 21 | shell: bash 22 | -------------------------------------------------------------------------------- /.github/workflows/orama_sync.yml: -------------------------------------------------------------------------------- 1 | name: Sync Orama 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - main 8 | paths: 9 | - "**.mdx" 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout repository 16 | uses: actions/checkout@v4 17 | - uses: pnpm/action-setup@v3 18 | with: 19 | version: 9 20 | - name: Setup Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: 20.x 24 | cache: pnpm 25 | - name: Install dependencies 26 | run: pnpm i 27 | - name: Sync Orama 28 | run: pnpm sync:orama 29 | env: 30 | ORAMA_PRIVATE_API_KEY: ${{ secrets.ORAMA_PRIVATE_API_KEY }} 31 | ORAMA_PRIVATE_INDEX_ID: ${{ secrets.ORAMA_PRIVATE_INDEX_ID }} 32 | -------------------------------------------------------------------------------- /.github/workflows/static_checks.yml: -------------------------------------------------------------------------------- 1 | name: 🔍 Lint / Type Checks 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | pull_request: 9 | branches: 10 | - main 11 | 12 | jobs: 13 | typecheck: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Check out code 17 | uses: actions/checkout@v4 18 | 19 | - name: Install tools & dependencies 20 | uses: ./.github/actions/install 21 | 22 | - name: Generate virtual modules 23 | run: pnpm sync 24 | 25 | - name: TypeScript check 26 | run: pnpm check:types 27 | 28 | lint: 29 | runs-on: ubuntu-latest 30 | steps: 31 | - name: Check out code 32 | uses: actions/checkout@v4 33 | 34 | - name: Install tools & dependencies 35 | uses: ./.github/actions/install 36 | 37 | - name: Lint code 38 | run: pnpm check:lint 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | coverage/ 3 | types/ 4 | 5 | # only pnpm lockfile is versioned 6 | # so Netlify can infer correctly everytime. 7 | yarn.lock 8 | package-lock.json 9 | bun.lockb 10 | 11 | .turbo 12 | 13 | packages/create-solid/bin 14 | *.log 15 | 16 | dist 17 | worker 18 | .solid 19 | 20 | # dependencies 21 | node_modules 22 | 23 | # IDEs and editors 24 | .idea 25 | .project 26 | .classpath 27 | *.launch 28 | .settings/ 29 | 30 | # Temp 31 | gitignore 32 | 33 | .env 34 | 35 | # System Files 36 | .DS_Store 37 | Thumbs.db 38 | # Local Netlify folder 39 | .netlify 40 | # Netlify build dir 41 | netlify 42 | /test-results/ 43 | /playwright-report/ 44 | /playwright/.cache/ 45 | 46 | .solid 47 | .vinxi 48 | 49 | public/sitemap.xml 50 | public/i18n-status 51 | -------------------------------------------------------------------------------- /.kodiak.toml: -------------------------------------------------------------------------------- 1 | version = 1 2 | 3 | [merge] 4 | automerge_label = "automerge" 5 | delete_branch_on_merge = true 6 | merge_method = "squash" 7 | 8 | [merge.message] 9 | title= "pull_request_title" 10 | include_pull_request_author = true 11 | include_coauthors = true 12 | include_pr_number= true 13 | include_pull_request_url = true 14 | body = "pull_request_body" 15 | 16 | # once we have Renovate and CI checks 17 | # [merge.automerge_dependencies] 18 | # versions = ["minor", "patch"] 19 | # usernames = ["renovate"] 20 | 21 | [update] 22 | # ignored_usernames = ["renovate"] 23 | require_automerge_label = false 24 | always = true 25 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .solid 2 | dist 3 | *.min.* 4 | package-lock.json -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": false, 6 | "useTabs": true 7 | } 8 | -------------------------------------------------------------------------------- /env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ORAMA_ENDPOINT: string; 3 | readonly VITE_ORAMA_API_KEY: string; 4 | readonly VITE_ORAMA_SECURE_PROXY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | 11 | declare namespace NodeJS { 12 | interface ProcessEnv { 13 | readonly ORAMA_PRIVATE_API_KEY: string; 14 | readonly ORAMA_PRIVATE_INDEX_ID: string; 15 | } 16 | } 17 | 18 | declare module "solid:collection" { 19 | // eslint-disable-next-line 20 | const component: any; 21 | export default component; 22 | } 23 | 24 | declare module "solid:hero-code-snippet" { 25 | export const highlightedCode: string; 26 | } 27 | -------------------------------------------------------------------------------- /global.d.ts: -------------------------------------------------------------------------------- 1 | declare module "solid:collection" { 2 | import coreTree from ".solid/tree"; 3 | import startTree from ".solid/solid-router-tree"; 4 | import routerTree from ".solid/solid-start-tree"; 5 | import metaTree from ".solid/solid-meta-tree"; 6 | import coreEntries from ".solid/flat-entries"; 7 | import routerEntries from ".solid/solid-start-flat-entries"; 8 | import startEntries from ".solid/solid-router-flat-entries"; 9 | import metaEntries from ".solid/solid-meta-flat-entries"; 10 | 11 | export { 12 | coreEntries, 13 | routerEntries, 14 | startEntries, 15 | metaEntries, 16 | coreTree, 17 | routerTree, 18 | startTree, 19 | metaTree, 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /lunaria.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@lunariajs/core/config.schema.json", 3 | "repository": { 4 | "name": "solidjs/solid-docs-next", 5 | "branch": "main", 6 | "hosting": "github" 7 | }, 8 | "defaultLocale": { 9 | "label": "English", 10 | "lang": "en" 11 | }, 12 | "files": [ 13 | { 14 | "type": "universal", 15 | "location": "src/routes/**/*.{mdx,md}", 16 | "pattern": "src/routes/@lang/@path" 17 | }, 18 | { 19 | "location": "src/i18n/dictionaries/**/ui.ts", 20 | "pattern": "src/i18n/dictionaries/@lang/@path", 21 | "type": "dictionary" 22 | } 23 | ], 24 | "locales": [ 25 | { 26 | "label": "Português do Brasil", 27 | "lang": "pt-br" 28 | } 29 | ], 30 | "outDir": "./public/i18n-status", 31 | "dashboard": { 32 | "site": "https://docs.solidjs.com/i18n-status", 33 | "title": "Solid Docs Translation Status", 34 | "description": "Translation progress tracker for the Solid Docs site", 35 | "basesToHide": ["src/routes/", "src/i18n/dictionaries/"], 36 | "favicon": { 37 | "external": [ 38 | { 39 | "link": "https://docs.solidjs.com/favicon.ico", 40 | "type": "image/x-icon" 41 | }, 42 | { 43 | "link": "https://docs.solidjs.com/favicon.svg", 44 | "type": "image/svg+xml" 45 | } 46 | ] 47 | }, 48 | "customCss": ["./lunaria/styles.css"], 49 | "ui": { 50 | "statusByLocale.heading": "Translation progress by locale", 51 | "statusByLocale.incompleteLocalizationLink": "incomplete translation", 52 | "statusByLocale.outdatedLocalizationLink": "outdated translation", 53 | "statusByLocale.completeLocalization": "This translation is complete, amazing job! 🎉", 54 | "statusByFile.heading": "Translation status by file" 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /lunaria/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --tw-bg-opacity: 1; 3 | background-color: rgb(15 23 42 / var(--tw-bg-opacity)); 4 | } 5 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "dist/" -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solid-docs-next", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "Docs for Solid", 6 | "type": "module", 7 | "scripts": { 8 | "sync": "node scripts/collections/index.mjs", 9 | "sync:orama": "pnpm build && node scripts/sync-orama.mjs", 10 | "dev": "pnpm sync && vinxi dev", 11 | "build": "pnpm sync && pnpm build:sitemap && pnpm build:lunaria && NODE_OPTIONS=\"--max-old-space-size=8192\" vinxi build", 12 | "build:sitemap": "node scripts/generateSitemap.js", 13 | "start": "vinxi start", 14 | "e2e": "npx playwright test", 15 | "build:lunaria": "lunaria build", 16 | "preview:lunaria": "lunaria preview", 17 | "check:lint": "eslint .", 18 | "check:types": "tsc --noEmit" 19 | }, 20 | "dependencies": { 21 | "@kobalte/core": "^0.13.9", 22 | "@kobalte/solidbase": "^0.0.24", 23 | "@lunariajs/core": "^0.0.31", 24 | "@oramacloud/client": "^1.3.15", 25 | "@solid-primitives/event-listener": "^2.3.3", 26 | "@solid-primitives/marker": "^0.1.0", 27 | "@solid-primitives/media": "^2.2.9", 28 | "@solid-primitives/platform": "^0.2.0", 29 | "@solidjs/meta": "^0.29.4", 30 | "@solidjs/router": "^0.15.3", 31 | "@solidjs/start": "^1.1.1", 32 | "dotenv": "^16.4.5", 33 | "glob": "^10.4.5", 34 | "gray-matter": "^4.0.3", 35 | "postcss": "^8.4.47", 36 | "shiki": "^1.17.6", 37 | "sitemap": "^7.1.2", 38 | "solid-heroicons": "^3.2.4", 39 | "solid-js": "^1.9.5", 40 | "solid-list": "^0.3.0", 41 | "solid-mdx": "^0.0.7", 42 | "vinxi": "^0.5.3", 43 | "zod": "^3.23.8" 44 | }, 45 | "devDependencies": { 46 | "@kobalte/tailwindcss": "^0.9.0", 47 | "@orama/crawly": "^0.0.4", 48 | "@tailwindcss/typography": "^0.5.15", 49 | "@types/node": "^22.9.0", 50 | "@typescript-eslint/eslint-plugin": "^8.7.0", 51 | "@typescript-eslint/parser": "^8.7.0", 52 | "autoprefixer": "^10.4.20", 53 | "eslint": "^8.57.1", 54 | "eslint-plugin-solid": "^0.13.2", 55 | "prettier": "3.2.5", 56 | "tailwindcss": "^3.4.11", 57 | "typescript": "^5.6.2", 58 | "vite": "^6.1.1" 59 | }, 60 | "engines": { 61 | "node": ">=18", 62 | "pnpm": ">=9" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | "tailwindcss/nesting": {}, 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /public/assets/cloudflare-pages.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/assets/firebase.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/assets/netlify.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/assets/railway.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/assets/stormkit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/assets/tailwind.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/assets/uno.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/assets/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/assets/zerops.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/fonts/Geist-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Geist-Bold.woff2 -------------------------------------------------------------------------------- /public/fonts/Geist-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Geist-Light.woff2 -------------------------------------------------------------------------------- /public/fonts/Geist-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Geist-Medium.woff2 -------------------------------------------------------------------------------- /public/fonts/Geist-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Geist-Regular.woff2 -------------------------------------------------------------------------------- /public/fonts/Geist-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Geist-SemiBold.woff2 -------------------------------------------------------------------------------- /public/fonts/GeistMono-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/GeistMono-Bold.woff2 -------------------------------------------------------------------------------- /public/fonts/GeistMono-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/GeistMono-Medium.woff2 -------------------------------------------------------------------------------- /public/fonts/GeistMono-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/GeistMono-Regular.woff2 -------------------------------------------------------------------------------- /public/fonts/GeistMono-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/GeistMono-SemiBold.woff2 -------------------------------------------------------------------------------- /public/fonts/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/fonts/Inter-Regular.woff2 -------------------------------------------------------------------------------- /public/images/how-to-guides/comparison/react/react-simple-state-update-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/comparison/react/react-simple-state-update-dark.png -------------------------------------------------------------------------------- /public/images/how-to-guides/comparison/react/react-simple-state-update-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/comparison/react/react-simple-state-update-light.png -------------------------------------------------------------------------------- /public/images/how-to-guides/comparison/react/solid-simple-state-update-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/comparison/react/solid-simple-state-update-dark.png -------------------------------------------------------------------------------- /public/images/how-to-guides/comparison/react/solid-simple-state-update-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/comparison/react/solid-simple-state-update-light.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/Flightcontrol-link-AWS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/Flightcontrol-link-AWS.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/cloudflare-after-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/cloudflare-after-connection.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/cloudflare-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/cloudflare-dashboard.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/cloudflare-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/cloudflare-login.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/cloudflare-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/cloudflare-setup.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/firebase-deploy-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/firebase-deploy-done.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/flightcontrol-config-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/flightcontrol-config-option.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/flightcontrol-connect-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/flightcontrol-connect-github.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/flightcontrol-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/flightcontrol-services.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/flightcontrol-static-website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/flightcontrol-static-website.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/google-cloud-container-registry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/google-cloud-container-registry.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/google-cloud-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/google-cloud-create.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/google-cloud-project-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/google-cloud-project-dashboard.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/netlify-cli-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/netlify-cli-success.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/netlify-connect-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/netlify-connect-import.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/netlify-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/netlify-dashboard.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/netlify-deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/netlify-deploy.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/railway-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/railway-dashboard.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/railway-deploy-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/railway-deploy-success.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/railway-generate-domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/railway-generate-domain.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/railway-new-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/railway-new-project.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/railway-select-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/railway-select-project.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/vercel-deploy-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/vercel-deploy-done.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/vercel-deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/vercel-deploy.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/vercel-import-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/vercel-import-repo.png -------------------------------------------------------------------------------- /public/images/how-to-guides/deployment/vercel-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/how-to-guides/deployment/vercel-login.png -------------------------------------------------------------------------------- /public/images/tutorial/solid-start-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/tutorial/solid-start-app.png -------------------------------------------------------------------------------- /public/images/tutorial/template-files-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/tutorial/template-files-js.png -------------------------------------------------------------------------------- /public/images/tutorial/template-files-ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/solidjs/solid-docs/382de57aa2b3fe8ee924f856db813fe2872e93cf/public/images/tutorial/template-files-ts.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Allow: / 3 | Disallow: /i18n-status/ 4 | Sitemap: https://docs.solidjs.com/sitemap.xml 5 | -------------------------------------------------------------------------------- /public/scripts/browser-specific.js: -------------------------------------------------------------------------------- 1 | // add class to `html` for browser specific styles, such scrollbars 2 | if (navigator.userAgent.includes("Firefox")) 3 | document.documentElement.classList.add("firefox"); 4 | // add class to `html` for platform specific styles, such scrollbars 5 | if (navigator.userAgent.includes("Windows")) 6 | document.documentElement.classList.add("windows"); 7 | -------------------------------------------------------------------------------- /scripts/collections/create-flat-entry-list.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @param {Awaited>} tree 4 | * @param {object} entryMap 5 | */ 6 | export function createFlatEntryList(tree, entryMap) { 7 | for (const item of tree) { 8 | if (item.type === "markdown") { 9 | if (entryMap.findIndex((e) => e.path === item.path) > -1) { 10 | console.error(`Duplicated entry found: ${item.slug}`); 11 | break; 12 | } 13 | entryMap.push(item); 14 | } else { 15 | createFlatEntryList(item.children, entryMap); 16 | } 17 | } 18 | 19 | return entryMap; 20 | } 21 | -------------------------------------------------------------------------------- /scripts/collections/create-nav-tree.mjs: -------------------------------------------------------------------------------- 1 | import { buildFileTree } from "./build-file-tree.mjs"; 2 | 3 | /** 4 | * 5 | * @param {string} rootDir 6 | * @returns 7 | */ 8 | export async function createNavTree(rootDir) { 9 | const [learn, references] = await Promise.all([ 10 | buildFileTree(rootDir), 11 | buildFileTree(`${rootDir}/reference`), 12 | ]); 13 | 14 | if ( 15 | learn && 16 | learn.type === "section" && 17 | references && 18 | references.type === "section" 19 | ) { 20 | return { 21 | reference: references.children, 22 | learn: learn.children, 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /scripts/collections/schemas.mjs: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | export const pages = z.array(z.string()); 4 | 5 | export const sectionSchema = z.object({ 6 | type: z.literal("section"), 7 | title: z.string(), 8 | // children: z.array(z.string()), 9 | pages, 10 | }); 11 | export const entrySchema = z.object({ 12 | type: z.literal("markdown"), 13 | path: z.string(), 14 | slug: z.string(), 15 | titles: z.string(), 16 | }); 17 | 18 | export const sectionData = z.object({ 19 | title: z.string(), 20 | pages, 21 | }); 22 | 23 | export const frontMatterSchema = z.object({ 24 | title: z.string(), 25 | }); 26 | -------------------------------------------------------------------------------- /scripts/collections/utils/create-dir.mjs: -------------------------------------------------------------------------------- 1 | import { existsSync } from "fs"; 2 | import fs from "fs/promises"; 3 | import path from "path"; 4 | 5 | export async function createSolidCollectionDir() { 6 | const collectionDir = path.resolve(process.cwd(), ".solid"); 7 | 8 | if (!existsSync(collectionDir)) { 9 | fs.mkdir(path.resolve(process.cwd(), ".solid")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /scripts/collections/utils/get-dir-data.mjs: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises"; 2 | import path from "path"; 3 | import { sectionData } from "../schemas.mjs"; 4 | import { languages } from "../index.mjs"; 5 | 6 | /** 7 | * 8 | * @param {string} path 9 | */ 10 | function formatDirPath(path) { 11 | for (const lang of languages) { 12 | if (path.includes(lang)) { 13 | return path.replace("/" + lang, ""); 14 | } 15 | } 16 | 17 | return path; 18 | } 19 | 20 | export async function getDirData(dirPath = process.cwd()) { 21 | const dir = formatDirPath(dirPath); 22 | try { 23 | const data = JSON.parse( 24 | await fs.readFile(path.resolve(dir, "data.json"), "utf-8") 25 | ); 26 | 27 | if (!sectionData.safeParse(data).success) { 28 | // throw new Error("failed to parse") 29 | console.error("failed to parse::", data); 30 | } 31 | 32 | return data; 33 | } catch (e) { 34 | console.error("\n"); 35 | console.error("\n"); 36 | console.error(e); 37 | throw new Error( 38 | `failed to parse directory info. Does ${dir} have a data.json?` 39 | ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /scripts/collections/utils/get-frontmatter.mjs: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises"; 2 | import matter from "gray-matter"; 3 | /** 4 | * returns data from the frontmatter of an mdx file 5 | * 6 | * @param {string} entryPath 7 | * @returns {Promise<{ title: string; mainNavExclude?: boolean }>} 8 | */ 9 | export async function getFrontMatterData(entryPath) { 10 | const file = await fs.readFile(entryPath, "utf-8"); 11 | 12 | return matter(file).data; 13 | } 14 | -------------------------------------------------------------------------------- /scripts/collections/utils/write-file.mjs: -------------------------------------------------------------------------------- 1 | import fs from "fs/promises"; 2 | import path from "path"; 3 | /** 4 | * 5 | * @param {string} fileName 6 | * @param {object} fileContent 7 | * @param {boolean} removeAsConst 8 | * @param {string} collectionDir 9 | */ 10 | export async function writeFile( 11 | fileName, 12 | fileContent, 13 | removeAsConst = false, 14 | collectionDir = ".solid" 15 | ) { 16 | return fs.writeFile( 17 | path.resolve(collectionDir, fileName), 18 | `export default ${JSON.stringify(fileContent, null, 2)} ${ 19 | removeAsConst ? "" : "as const" 20 | }` 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /scripts/generateSitemap.js: -------------------------------------------------------------------------------- 1 | import { SitemapStream, streamToPromise } from "sitemap"; 2 | import { Readable } from "stream"; 3 | import entries from "../.solid/entriesList.js"; 4 | import fs from "fs"; 5 | 6 | const generateLinkArray = (routes) => { 7 | return routes.reduce((acc, route) => { 8 | return [ 9 | ...acc, 10 | { url: route, priority: route == "/" ? 1 : 0.7, changefreq: "weekly" }, 11 | ]; 12 | }, []); 13 | }; 14 | 15 | (async () => { 16 | const referencesRoutes = entries.reference.map(({ path }) => path); 17 | const learnRoutes = entries.learn.map(({ path }) => path); 18 | const links = [ 19 | ...generateLinkArray(learnRoutes), 20 | ...generateLinkArray(referencesRoutes), 21 | ]; 22 | const stream = new SitemapStream({ hostname: "https://docs.solidjs.com/" }); 23 | return streamToPromise(Readable.from(links).pipe(stream)).then((data) => 24 | fs.writeFileSync("public/sitemap.xml", data, { encoding: "utf-8" }) 25 | ); 26 | })(); 27 | -------------------------------------------------------------------------------- /src/app.tsx: -------------------------------------------------------------------------------- 1 | // @refresh reload 2 | import { Router } from "@solidjs/router"; 3 | import { SolidBaseRoot } from "@kobalte/solidbase/client"; 4 | import { FileRoutes } from "@solidjs/start/router"; 5 | import "~/styles.css"; 6 | import { Suspense } from "solid-js"; 7 | 8 | export default function App() { 9 | return ( 10 | 11 | 12 | 13 | 14 | 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /src/data/get-nav.tsx: -------------------------------------------------------------------------------- 1 | import { GrayMatterFile } from "gray-matter"; 2 | 3 | export type Section = { 4 | type: "section"; 5 | title: string; 6 | children: (Section | EntryFile)[]; 7 | pages: string[]; 8 | }; 9 | 10 | type FrontMatter = GrayMatterFile & { 11 | data: { title: string }; 12 | }; 13 | 14 | export type EntryFile = { 15 | type: "markdown"; 16 | path: string; 17 | slug: string; 18 | title: FrontMatter["data"]["title"]; 19 | }; 20 | -------------------------------------------------------------------------------- /src/entry-client.tsx: -------------------------------------------------------------------------------- 1 | import { mount, StartClient } from "@solidjs/start/client"; 2 | 3 | mount(() => , document.getElementById("app")!); 4 | -------------------------------------------------------------------------------- /src/entry-server.tsx: -------------------------------------------------------------------------------- 1 | import { createHandler, StartServer } from "@solidjs/start/server"; 2 | 3 | export default createHandler(() => ( 4 | { 6 | return ( 7 | 8 | 9 | 10 | 14 | 15 | 20 |