docs-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +46 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +939 -0
  5. data/app/components/docs_ui/brand_mark.rb +88 -0
  6. data/app/components/docs_ui/callout.rb +37 -0
  7. data/app/components/docs_ui/code.rb +123 -0
  8. data/app/components/docs_ui/endpoint.rb +44 -0
  9. data/app/components/docs_ui/error_table.rb +72 -0
  10. data/app/components/docs_ui/example.rb +102 -0
  11. data/app/components/docs_ui/field_table.rb +46 -0
  12. data/app/components/docs_ui/header.rb +30 -0
  13. data/app/components/docs_ui/icon.rb +65 -0
  14. data/app/components/docs_ui/json_response.rb +46 -0
  15. data/app/components/docs_ui/markdown.rb +187 -0
  16. data/app/components/docs_ui/markdown_action.rb +45 -0
  17. data/app/components/docs_ui/on_this_page.rb +104 -0
  18. data/app/components/docs_ui/open_api_operation.rb +126 -0
  19. data/app/components/docs_ui/page.rb +83 -0
  20. data/app/components/docs_ui/page_helpers.rb +52 -0
  21. data/app/components/docs_ui/prop_table.rb +43 -0
  22. data/app/components/docs_ui/prose.rb +30 -0
  23. data/app/components/docs_ui/request_example.rb +85 -0
  24. data/app/components/docs_ui/search_box.rb +106 -0
  25. data/app/components/docs_ui/search_results.rb +95 -0
  26. data/app/components/docs_ui/section.rb +94 -0
  27. data/app/components/docs_ui/shell.rb +161 -0
  28. data/app/components/docs_ui/sidebar.rb +106 -0
  29. data/app/components/docs_ui/table.rb +64 -0
  30. data/app/components/docs_ui/theme_switcher.rb +46 -0
  31. data/app/components/docs_ui/topbar_links.rb +42 -0
  32. data/app/controllers/docs_kit/llms_controller.rb +76 -0
  33. data/app/controllers/docs_kit/mcp_controller.rb +60 -0
  34. data/app/controllers/docs_kit/search_controller.rb +72 -0
  35. data/app/javascript/docs_kit/controllers/docs_nav_controller.js +619 -0
  36. data/config/importmap.rb +15 -0
  37. data/config/rubocop/docs_kit.yml +24 -0
  38. data/exe/docs-kit +80 -0
  39. data/lib/docs-kit.rb +5 -0
  40. data/lib/docs_kit/api_client.rb +52 -0
  41. data/lib/docs_kit/api_request.rb +66 -0
  42. data/lib/docs_kit/api_templates.rb +92 -0
  43. data/lib/docs_kit/configuration.rb +485 -0
  44. data/lib/docs_kit/controller.rb +47 -0
  45. data/lib/docs_kit/engine.rb +49 -0
  46. data/lib/docs_kit/llms_text.rb +105 -0
  47. data/lib/docs_kit/markdown_export/blocks.rb +160 -0
  48. data/lib/docs_kit/markdown_export/inline.rb +95 -0
  49. data/lib/docs_kit/markdown_export/table.rb +53 -0
  50. data/lib/docs_kit/markdown_export.rb +92 -0
  51. data/lib/docs_kit/mcp_server.rb +128 -0
  52. data/lib/docs_kit/mcp_tools.rb +118 -0
  53. data/lib/docs_kit/nav_item.rb +22 -0
  54. data/lib/docs_kit/open_api/document.rb +91 -0
  55. data/lib/docs_kit/open_api/operation.rb +213 -0
  56. data/lib/docs_kit/open_api/schema.rb +178 -0
  57. data/lib/docs_kit/open_api.rb +55 -0
  58. data/lib/docs_kit/registry.rb +152 -0
  59. data/lib/docs_kit/rubocop.rb +19 -0
  60. data/lib/docs_kit/search_hit.rb +28 -0
  61. data/lib/docs_kit/search_index/snippet.rb +65 -0
  62. data/lib/docs_kit/search_index.rb +169 -0
  63. data/lib/docs_kit/shortcut.rb +99 -0
  64. data/lib/docs_kit/templates/new_site.rb +175 -0
  65. data/lib/docs_kit/topbar_link.rb +39 -0
  66. data/lib/docs_kit/version.rb +5 -0
  67. data/lib/docs_kit.rb +72 -0
  68. data/lib/generators/docs_kit/install/USAGE +15 -0
  69. data/lib/generators/docs_kit/install/install_generator.rb +447 -0
  70. data/lib/generators/docs_kit/install/sync_report.rb +64 -0
  71. data/lib/generators/docs_kit/install/templates/agents_md.erb +105 -0
  72. data/lib/generators/docs_kit/install/templates/application.tailwind.css.erb +39 -0
  73. data/lib/generators/docs_kit/install/templates/build-css +34 -0
  74. data/lib/generators/docs_kit/install/templates/build_css.rake +13 -0
  75. data/lib/generators/docs_kit/install/templates/doc.rb.erb +17 -0
  76. data/lib/generators/docs_kit/install/templates/docs_controller.rb.erb +14 -0
  77. data/lib/generators/docs_kit/install/templates/docs_kit.rb.erb +91 -0
  78. data/lib/generators/docs_kit/install/templates/installation_page.rb.erb +37 -0
  79. data/lib/generators/docs_kit/install/templates/landing.rb.erb +25 -0
  80. data/lib/generators/docs_kit/install/templates/landings_controller.rb.erb +7 -0
  81. data/lib/generators/docs_kit/install/templates/phlex.rb.erb +14 -0
  82. data/lib/generators/docs_kit/install/templates/rails_icons.rb.erb +12 -0
  83. data/lib/generators/docs_kit/install/templates/skill.md.erb +88 -0
  84. data/lib/generators/docs_kit/page/USAGE +26 -0
  85. data/lib/generators/docs_kit/page/page_generator.rb +127 -0
  86. data/lib/generators/docs_kit/page/templates/page.rb.erb +21 -0
  87. data/lib/rubocop/cop/docs_kit/escaped_interpolation_in_heredoc.rb +119 -0
  88. data/lib/rubocop/cop/docs_kit/render_component_preferred.rb +123 -0
  89. metadata +253 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: aa6ab8345eda1cc169927e190d267236133574627f0075f528bb417d842b2868
4
+ data.tar.gz: f620e9eb3e6bdca64e1d8365ad5cb2647bcc38d8576af8f2f7e2a1b397f8584c
5
+ SHA512:
6
+ metadata.gz: b813b8eef499c093632c7b06974acdf3b5bd7033235020b815c19933ffb8ba82d08f7640791c5cb3685334ca67fa7e93012a83b214308339495ddabdbd4edaa8
7
+ data.tar.gz: ad7d05a4a84edc6cf1a4348c3e04da3f01a7402be4a0d55d68cdbad1978b5735eec30846edf8994b6b6747dac452a03ca4f5c7eec583f359935a847f136c5cfe
data/CHANGELOG.md ADDED
@@ -0,0 +1,46 @@
1
+ # Changelog
2
+
3
+ ## [Unreleased]
4
+
5
+ ### Added
6
+
7
+ - Release tooling matching the sibling gems (daisyui/phlex-reactive/pgbus): a
8
+ `rake release[X.Y.Z]` task (version bump → lockfile update → build-verify →
9
+ commit → push → GitHub Release; `pre`/`force` supported, `main`-only, clean-tree
10
+ guard) and `.github/workflows/release.yml`, which on `release: published` runs
11
+ the suite, content-checks the built gem, signs it with Sigstore, and publishes
12
+ to RubyGems over **OIDC trusted publishing** (no stored API token). See the
13
+ README "Releasing (maintainers)" section for the one-time trusted-publisher +
14
+ `rubygems` environment setup.
15
+ - Initial extraction of the shared docs-site chrome into `docs-kit`.
16
+ - `Docs::*` Phlex component kit: `Shell` (full-document drawer layout), `Sidebar`
17
+ (config-driven nav), `ThemeSwitcher`, `Icon`, `Code` (Rouge + inline theme),
18
+ `Page`, `Header`, `Section`, `Prose`, `Callout`, `Example` (source extraction).
19
+ - `DocsKit.configure` for per-site brand, themes, nav, version badge, stylesheets,
20
+ and code theme.
21
+ - `DocsKit::Registry` mixin for in-memory docs registries (slug/title/group +
22
+ `all`/`from_slug`/`grouped` + the "authored" filter).
23
+ - `DocsKit::NavItem` value object consumed by the sidebar.
24
+ - `DocsKit::Controller#render_page` and a Rails engine that wires it.
25
+ - Custom RuboCop cops shipped from the gem (`require: docs_kit/rubocop` +
26
+ `inherit_gem: { docs-kit: config/rubocop/docs_kit.yml }`, wired automatically by
27
+ the install generator): `DocsKit/RenderComponentPreferred` (prefer the Phlex-kit
28
+ helper form `DocsUI::Code(...)` over `render DocsUI::Code.new(...)`) and
29
+ `DocsKit/EscapedInterpolationInHeredoc` (steer `\#{...}` escapes in a
30
+ double-quoted heredoc to a single-quoted delimiter). RuboCop stays a
31
+ development-time dependency of the host — never a runtime dependency.
32
+ - `rails g docs_kit:install --sync`: the sanctioned upgrade path for an existing
33
+ site. Runs only the additive/wiring steps (routes, initializer hint,
34
+ importmap/Stimulus registration, AGENTS.md, `.rubocop.yml`) — never
35
+ re-scaffolds site-owned content (the `Doc` registry, pages, the themed CSS
36
+ build) — and prints a conservative drift checklist (a hand-written
37
+ `render_page`, a dead `IconHelper`) it warns about but never auto-deletes. See
38
+ the README "Keeping a site in sync" section.
39
+
40
+ ### Fixed
41
+
42
+ - `rails g docs_kit:install` is now fully idempotent, making re-running it the
43
+ safe upgrade path: `create_initializer` no longer clobbers a site's edited
44
+ `config/initializers/docs_kit.rb` (it skips + hints at the template for a
45
+ diff), and `add_routes` no longer duplicates a route the site already drew when
46
+ it was written in a different style (single vs double quotes, `to:` vs `=>`).
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Mikael Henriksson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.