brut 0.0.29 → 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 (491) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +23 -2
  4. data/assets/LogoStop.pxd +0 -0
  5. data/assets/MetroLogo.graffle +0 -0
  6. data/assets/SocialImage.png +0 -0
  7. data/assets/SocialImage.pxd +0 -0
  8. data/brutrb.com/.vitepress/config.mjs +45 -8
  9. data/brutrb.com/.vitepress/theme/style.css +6 -5
  10. data/brutrb.com/ai.md +10 -15
  11. data/brutrb.com/assets.md +2 -9
  12. data/brutrb.com/brut-js.md +12 -2
  13. data/brutrb.com/cli.md +9 -13
  14. data/brutrb.com/components.md +118 -96
  15. data/brutrb.com/configuration.md +3 -4
  16. data/brutrb.com/css.md +2 -2
  17. data/brutrb.com/custom-element-tests.md +3 -4
  18. data/brutrb.com/database-access.md +1 -1
  19. data/brutrb.com/database-schema.md +29 -41
  20. data/brutrb.com/dev-environment.md +7 -7
  21. data/brutrb.com/dir-structure.md +120 -0
  22. data/brutrb.com/doc-conventions.md +18 -15
  23. data/brutrb.com/dx +1 -0
  24. data/brutrb.com/end-to-end-tests.md +12 -10
  25. data/brutrb.com/features.md +373 -0
  26. data/brutrb.com/flash-and-session.md +115 -131
  27. data/brutrb.com/form-constraints.md +266 -0
  28. data/brutrb.com/forms.md +140 -765
  29. data/brutrb.com/getting-started.md +10 -11
  30. data/brutrb.com/handlers.md +119 -95
  31. data/brutrb.com/hooks.md +18 -20
  32. data/brutrb.com/i18n.md +6 -4
  33. data/brutrb.com/images/LogoStop.png +0 -0
  34. data/brutrb.com/instrumentation.md +7 -10
  35. data/brutrb.com/javascript.md +14 -14
  36. data/brutrb.com/keyword-injection.md +72 -114
  37. data/brutrb.com/layouts.md +20 -52
  38. data/brutrb.com/lsp.md +1 -1
  39. data/brutrb.com/overview.md +30 -372
  40. data/brutrb.com/pages.md +119 -207
  41. data/brutrb.com/public/SocialImage.png +0 -0
  42. data/brutrb.com/public/favicon.ico +0 -0
  43. data/brutrb.com/recipes/alternate-layouts.md +32 -0
  44. data/brutrb.com/recipes/authentication.md +315 -6
  45. data/brutrb.com/recipes/blank-layouts.md +22 -0
  46. data/brutrb.com/recipes/custom-flash.md +51 -0
  47. data/brutrb.com/recipes/indexed-forms.md +149 -0
  48. data/brutrb.com/recipes/text-field-component.md +182 -0
  49. data/brutrb.com/routes.md +56 -82
  50. data/brutrb.com/security.md +0 -3
  51. data/brutrb.com/space-time-continuum.md +8 -12
  52. data/brutrb.com/tutorial.md +1 -1
  53. data/brutrb.com/why.md +19 -0
  54. data/docs/404.html +8 -3
  55. data/docs/SocialImage.png +0 -0
  56. data/docs/ai.html +11 -6
  57. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  58. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  59. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  60. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  61. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  62. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  63. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  64. data/docs/api/Brut/BackEnd.html +1 -1
  65. data/docs/api/Brut/CLI/App.html +1 -1
  66. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  67. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
  68. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
  69. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  70. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
  71. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  72. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  73. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  74. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  75. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
  76. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  77. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  78. data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
  79. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  80. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  81. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  82. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  83. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  84. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  85. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
  86. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  87. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
  88. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  89. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
  90. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  91. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  92. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  93. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  94. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  95. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  96. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  97. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  98. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  99. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  100. data/docs/api/Brut/CLI/Apps.html +1 -1
  101. data/docs/api/Brut/CLI/Command.html +1 -1
  102. data/docs/api/Brut/CLI/Error.html +1 -1
  103. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  104. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  105. data/docs/api/Brut/CLI/Executor.html +1 -1
  106. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  107. data/docs/api/Brut/CLI/Options.html +1 -1
  108. data/docs/api/Brut/CLI/Output.html +1 -1
  109. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  110. data/docs/api/Brut/CLI.html +1 -1
  111. data/docs/api/Brut/FactoryBot.html +1 -1
  112. data/docs/api/Brut/Framework/App.html +1 -1
  113. data/docs/api/Brut/Framework/Config.html +1 -1
  114. data/docs/api/Brut/Framework/Container.html +1 -1
  115. data/docs/api/Brut/Framework/Error.html +1 -1
  116. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  117. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  118. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  119. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  120. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  121. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  122. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  123. data/docs/api/Brut/Framework/Errors.html +1 -1
  124. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  125. data/docs/api/Brut/Framework/MCP.html +1 -1
  126. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  127. data/docs/api/Brut/Framework.html +1 -1
  128. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  133. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  137. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Form.html +9 -11
  149. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  154. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  155. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +135 -20
  156. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  157. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +135 -20
  158. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  161. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  168. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  169. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  170. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  171. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  172. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  173. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  174. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  175. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  176. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  177. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  178. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  179. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  180. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  181. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  182. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  183. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  184. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  185. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  186. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  187. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  188. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  189. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  190. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  191. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  192. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  193. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  194. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  195. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  196. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  197. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  198. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  199. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  200. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  201. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  202. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  203. data/docs/api/Brut/FrontEnd.html +1 -1
  204. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  205. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  206. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  207. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  208. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  209. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  210. data/docs/api/Brut/I18n.html +1 -1
  211. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  212. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  213. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  214. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  215. data/docs/api/Brut/Instrumentation.html +1 -1
  216. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  217. data/docs/api/Brut/SinatraHelpers.html +1 -1
  218. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  219. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  220. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  221. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  222. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  223. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  224. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  225. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  226. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  227. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  228. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  229. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  230. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  231. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  232. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  233. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  234. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  235. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  236. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  237. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  238. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  239. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  240. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  241. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  242. data/docs/api/Brut/SpecSupport.html +1 -1
  243. data/docs/api/Brut.html +1 -1
  244. data/docs/api/Clock.html +1 -1
  245. data/docs/api/RichString.html +1 -1
  246. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  247. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  248. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  249. data/docs/api/Sequel/Extensions.html +1 -1
  250. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  251. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  252. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  253. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  254. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  255. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  256. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  257. data/docs/api/Sequel/Plugins.html +1 -1
  258. data/docs/api/Sequel.html +1 -1
  259. data/docs/api/_index.html +1 -1
  260. data/docs/api/file.README.html +22 -3
  261. data/docs/api/index.html +22 -3
  262. data/docs/api/method_list.html +16 -0
  263. data/docs/api/top-level-namespace.html +1 -1
  264. data/docs/assets/LogoStop.Gb3tDhL1.png +0 -0
  265. data/docs/assets/{ai.md._6HCDL6d.js → ai.md.Cy9GWnER.js} +1 -1
  266. data/docs/assets/ai.md.Cy9GWnER.lean.js +1 -0
  267. data/docs/assets/{app.BhrfSt68.js → app.ClaS47Ru.js} +1 -1
  268. data/docs/assets/{assets.md.D3wunzLx.js → assets.md.7C3HWkga.js} +3 -3
  269. data/docs/assets/{assets.md.D3wunzLx.lean.js → assets.md.7C3HWkga.lean.js} +1 -1
  270. data/docs/assets/{brut-js.md.o2DAO2s2.js → brut-js.md.B4GYxQVw.js} +1 -1
  271. data/docs/assets/{brut-js.md.o2DAO2s2.lean.js → brut-js.md.B4GYxQVw.lean.js} +1 -1
  272. data/docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js +1 -0
  273. data/docs/assets/chunks/{VPLocalSearchBox.Dpot_2H4.js → VPLocalSearchBox.DtgDfde2.js} +1 -1
  274. data/docs/assets/chunks/{theme.N2SNVLgU.js → theme.B45bvibT.js} +2 -2
  275. data/docs/assets/{cli.md.RmeA2b0i.js → cli.md.CjsktgFz.js} +15 -20
  276. data/docs/assets/components.md.DatoNgFo.js +96 -0
  277. data/docs/assets/{components.md.CRUMdRoN.lean.js → components.md.DatoNgFo.lean.js} +1 -1
  278. data/docs/assets/{configuration.md.LG-zIBww.js → configuration.md.DeyhpqEx.js} +3 -3
  279. data/docs/assets/{css.md.DJgj2clw.js → css.md.CltvJqAa.js} +3 -3
  280. data/docs/assets/{custom-element-tests.md.BrYJQEl3.js → custom-element-tests.md.B_rbta32.js} +3 -3
  281. data/docs/assets/{database-access.md.C7l-Vuvb.js → database-access.md.gnluu54N.js} +1 -1
  282. data/docs/assets/{database-schema.md.BUjR0VS1.js → database-schema.md.CSYk6E6v.js} +6 -6
  283. data/docs/assets/{database-schema.md.BUjR0VS1.lean.js → database-schema.md.CSYk6E6v.lean.js} +1 -1
  284. data/docs/assets/dev-environment.md.BroAOLhF.js +11 -0
  285. data/docs/assets/dir-structure.md.CWir1pic.js +46 -0
  286. data/docs/assets/dir-structure.md.CWir1pic.lean.js +1 -0
  287. data/docs/assets/doc-conventions.md.BzmSrTEW.js +1 -0
  288. data/docs/assets/doc-conventions.md.BzmSrTEW.lean.js +1 -0
  289. data/docs/assets/{end-to-end-tests.md.yfQHC0b5.js → end-to-end-tests.md.DzqRpZ43.js} +5 -3
  290. data/docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js +1 -0
  291. data/docs/assets/features.md.DPFXsy0z.js +154 -0
  292. data/docs/assets/features.md.DPFXsy0z.lean.js +1 -0
  293. data/docs/assets/flash-and-session.md.nPvUpnUx.js +79 -0
  294. data/docs/assets/{flash-and-session.md.BXY8RvT0.lean.js → flash-and-session.md.nPvUpnUx.lean.js} +1 -1
  295. data/docs/assets/form-constraints.md.x5tNpTTI.js +90 -0
  296. data/docs/assets/form-constraints.md.x5tNpTTI.lean.js +1 -0
  297. data/docs/assets/forms.md.C2Dizvzq.js +64 -0
  298. data/docs/assets/forms.md.C2Dizvzq.lean.js +1 -0
  299. data/docs/assets/{getting-started.md.Dj0qtZI2.js → getting-started.md.C93e0odB.js} +5 -5
  300. data/docs/assets/{getting-started.md.Dj0qtZI2.lean.js → getting-started.md.C93e0odB.lean.js} +1 -1
  301. data/docs/assets/handlers.md.Chyri6KA.js +54 -0
  302. data/docs/assets/handlers.md.Chyri6KA.lean.js +1 -0
  303. data/docs/assets/{hooks.md.C4-moMny.js → hooks.md.Jmb5VOLA.js} +4 -4
  304. data/docs/assets/{hooks.md.C4-moMny.lean.js → hooks.md.Jmb5VOLA.lean.js} +1 -1
  305. data/docs/assets/{i18n.md.Do9i1qWl.js → i18n.md.xQhiGo1G.js} +2 -2
  306. data/docs/assets/{i18n.md.Do9i1qWl.lean.js → i18n.md.xQhiGo1G.lean.js} +1 -1
  307. data/docs/assets/{index.md.CuBB-BdM.js → index.md.CAMqGBJE.js} +1 -1
  308. data/docs/assets/{index.md.CuBB-BdM.lean.js → index.md.CAMqGBJE.lean.js} +1 -1
  309. data/docs/assets/{instrumentation.md.a9Pjps4P.js → instrumentation.md.BgcaGVYH.js} +2 -2
  310. data/docs/assets/{instrumentation.md.a9Pjps4P.lean.js → instrumentation.md.BgcaGVYH.lean.js} +1 -1
  311. data/docs/assets/{javascript.md.GWbhRS51.js → javascript.md.DzrMxUmI.js} +7 -7
  312. data/docs/assets/{javascript.md.GWbhRS51.lean.js → javascript.md.DzrMxUmI.lean.js} +1 -1
  313. data/docs/assets/keyword-injection.md.95Zgh2eN.js +21 -0
  314. data/docs/assets/{keyword-injection.md.Dt2tKREs.lean.js → keyword-injection.md.95Zgh2eN.lean.js} +1 -1
  315. data/docs/assets/{layouts.md.cPnh3NId.js → layouts.md.CJGDFY-m.js} +2 -15
  316. data/docs/assets/layouts.md.CJGDFY-m.lean.js +1 -0
  317. data/docs/assets/{lsp.md.Bsu-f6VU.js → lsp.md.Dn1rIiW0.js} +1 -1
  318. data/docs/assets/{lsp.md.Bsu-f6VU.lean.js → lsp.md.Dn1rIiW0.lean.js} +1 -1
  319. data/docs/assets/overview.md.Bdq4qt3L.js +1 -0
  320. data/docs/assets/overview.md.Bdq4qt3L.lean.js +1 -0
  321. data/docs/assets/pages.md.B7Hc-i6H.js +45 -0
  322. data/docs/assets/pages.md.B7Hc-i6H.lean.js +1 -0
  323. data/docs/assets/recipes_alternate-layouts.md.BwEytl59.js +22 -0
  324. data/docs/assets/recipes_alternate-layouts.md.BwEytl59.lean.js +1 -0
  325. data/docs/assets/recipes_authentication.md.Dzvi_g69.js +156 -0
  326. data/docs/assets/recipes_authentication.md.Dzvi_g69.lean.js +1 -0
  327. data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.js +15 -0
  328. data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.lean.js +1 -0
  329. data/docs/assets/recipes_custom-flash.md.CrQbI5eH.js +26 -0
  330. data/docs/assets/recipes_custom-flash.md.CrQbI5eH.lean.js +1 -0
  331. data/docs/assets/recipes_indexed-forms.md.CstYyOSo.js +74 -0
  332. data/docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js +1 -0
  333. data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.js +101 -0
  334. data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js +1 -0
  335. data/docs/assets/routes.md.B8kfUPHU.js +21 -0
  336. data/docs/assets/{routes.md.BMM7peut.lean.js → routes.md.B8kfUPHU.lean.js} +1 -1
  337. data/docs/assets/{security.md.C668yXCi.js → security.md.C0G_AZR-.js} +1 -1
  338. data/docs/assets/{security.md.C668yXCi.lean.js → security.md.C0G_AZR-.lean.js} +1 -1
  339. data/docs/assets/space-time-continuum.md.xl44xDos.js +1 -0
  340. data/docs/assets/{space-time-continuum.md.KPUIKysQ.lean.js → space-time-continuum.md.xl44xDos.lean.js} +1 -1
  341. data/docs/assets/{style.B2o1L9eN.css → style.prAgp4yQ.css} +1 -1
  342. data/docs/assets/tutorial.md.a4a0eVOy.js +1 -0
  343. data/docs/assets/tutorial.md.a4a0eVOy.lean.js +1 -0
  344. data/docs/assets/why.md.C-hk5xgJ.js +1 -0
  345. data/docs/assets/why.md.C-hk5xgJ.lean.js +1 -0
  346. data/docs/assets.html +12 -7
  347. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  348. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  349. data/docs/brut-js/api/Autosubmit.html +1 -1
  350. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  351. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  352. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  353. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  354. data/docs/brut-js/api/BufferedLogger.html +1 -1
  355. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  356. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  357. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  358. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  359. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  360. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  361. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  362. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  363. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  364. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  365. data/docs/brut-js/api/Form.html +1 -1
  366. data/docs/brut-js/api/Form.js.html +1 -1
  367. data/docs/brut-js/api/I18nTranslation.html +1 -1
  368. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  369. data/docs/brut-js/api/LocaleDetection.html +1 -1
  370. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  371. data/docs/brut-js/api/Logger.html +1 -1
  372. data/docs/brut-js/api/Logger.js.html +1 -1
  373. data/docs/brut-js/api/Message.html +1 -1
  374. data/docs/brut-js/api/Message.js.html +1 -1
  375. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  376. data/docs/brut-js/api/RichString.html +1 -1
  377. data/docs/brut-js/api/RichString.js.html +1 -1
  378. data/docs/brut-js/api/Tabs.html +1 -1
  379. data/docs/brut-js/api/Tabs.js.html +1 -1
  380. data/docs/brut-js/api/Tracing.html +1 -1
  381. data/docs/brut-js/api/Tracing.js.html +1 -1
  382. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  383. data/docs/brut-js/api/external-Performance.html +1 -1
  384. data/docs/brut-js/api/external-Promise.html +1 -1
  385. data/docs/brut-js/api/external-ValidityState.html +1 -1
  386. data/docs/brut-js/api/external-Window.html +1 -1
  387. data/docs/brut-js/api/external-fetch.html +1 -1
  388. data/docs/brut-js/api/global.html +1 -1
  389. data/docs/brut-js/api/index.html +1 -1
  390. data/docs/brut-js/api/index.js.html +1 -1
  391. data/docs/brut-js/api/module-testing.html +1 -1
  392. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  393. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  394. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  395. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  396. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  397. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  398. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  399. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  400. data/docs/brut-js/api/testing_index.js.html +1 -1
  401. data/docs/brut-js.html +12 -7
  402. data/docs/business-logic.html +10 -5
  403. data/docs/cli.html +26 -26
  404. data/docs/components.html +61 -64
  405. data/docs/configuration.html +13 -8
  406. data/docs/css.html +14 -9
  407. data/docs/custom-element-tests.html +14 -9
  408. data/docs/database-access.html +12 -7
  409. data/docs/database-schema.html +15 -10
  410. data/docs/deployment.html +10 -5
  411. data/docs/dev-environment.html +12 -7
  412. data/docs/dir-structure.html +74 -0
  413. data/docs/doc-conventions.html +11 -6
  414. data/docs/end-to-end-tests.html +15 -8
  415. data/docs/favicon.ico +0 -0
  416. data/docs/features.html +182 -0
  417. data/docs/flash-and-session.html +73 -82
  418. data/docs/form-constraints.html +118 -0
  419. data/docs/forms.html +57 -367
  420. data/docs/getting-started.html +15 -10
  421. data/docs/handlers.html +51 -61
  422. data/docs/hashmap.json +1 -1
  423. data/docs/hooks.html +14 -9
  424. data/docs/i18n.html +12 -7
  425. data/docs/index.html +11 -6
  426. data/docs/instrumentation.html +12 -7
  427. data/docs/javascript.html +17 -12
  428. data/docs/jobs.html +10 -5
  429. data/docs/keyword-injection.html +22 -21
  430. data/docs/layouts.html +12 -20
  431. data/docs/lsp.html +11 -6
  432. data/docs/markdown-examples.html +10 -5
  433. data/docs/middleware.html +10 -5
  434. data/docs/not-released.html +10 -5
  435. data/docs/overview.html +11 -138
  436. data/docs/pages.html +49 -121
  437. data/docs/recipes/alternate-layouts.html +50 -0
  438. data/docs/recipes/authentication.html +166 -6
  439. data/docs/recipes/blank-layouts.html +43 -0
  440. data/docs/recipes/custom-flash.html +54 -0
  441. data/docs/recipes/indexed-forms.html +102 -0
  442. data/docs/recipes/text-field-component.html +129 -0
  443. data/docs/routes.html +16 -19
  444. data/docs/security.html +11 -6
  445. data/docs/seed-data.html +10 -5
  446. data/docs/space-time-continuum.html +11 -6
  447. data/docs/tutorial.html +11 -6
  448. data/docs/unit-tests.html +10 -5
  449. data/docs/why.html +29 -0
  450. data/lib/brut/front_end/form.rb +8 -8
  451. data/lib/brut/front_end/forms/radio_button_group_input.rb +8 -1
  452. data/lib/brut/front_end/forms/select_input.rb +8 -1
  453. data/lib/brut/version.rb +1 -1
  454. data/specs/brut/front_end/forms/radio_button_group_input.spec.rb +54 -0
  455. data/specs/brut/front_end/forms/select_input.spec.rb +54 -0
  456. metadata +117 -75
  457. data/brutrb.com/public/images/logo-300.png +0 -0
  458. data/brutrb.com/public/images/logo.png +0 -0
  459. data/docs/assets/LogoStop.X8x-4riz.png +0 -0
  460. data/docs/assets/ai.md._6HCDL6d.lean.js +0 -1
  461. data/docs/assets/chunks/@localSearchIndexroot.CeRAdP1K.js +0 -1
  462. data/docs/assets/components.md.CRUMdRoN.js +0 -104
  463. data/docs/assets/dev-environment.md.GZv6xvi9.js +0 -11
  464. data/docs/assets/doc-conventions.md.-kN3Xo5C.js +0 -1
  465. data/docs/assets/doc-conventions.md.-kN3Xo5C.lean.js +0 -1
  466. data/docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js +0 -1
  467. data/docs/assets/flash-and-session.md.BXY8RvT0.js +0 -93
  468. data/docs/assets/forms.md.B-koVgyw.js +0 -379
  469. data/docs/assets/forms.md.B-koVgyw.lean.js +0 -1
  470. data/docs/assets/handlers.md.089DVD3v.js +0 -69
  471. data/docs/assets/handlers.md.089DVD3v.lean.js +0 -1
  472. data/docs/assets/keyword-injection.md.Dt2tKREs.js +0 -25
  473. data/docs/assets/layouts.md.cPnh3NId.lean.js +0 -1
  474. data/docs/assets/overview.md.DVKRM8zl.js +0 -133
  475. data/docs/assets/overview.md.DVKRM8zl.lean.js +0 -1
  476. data/docs/assets/pages.md.BE3kfOc5.js +0 -122
  477. data/docs/assets/pages.md.BE3kfOc5.lean.js +0 -1
  478. data/docs/assets/recipes_authentication.md.CAsXf7hk.js +0 -1
  479. data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +0 -1
  480. data/docs/assets/routes.md.BMM7peut.js +0 -29
  481. data/docs/assets/space-time-continuum.md.KPUIKysQ.js +0 -1
  482. data/docs/assets/tutorial.md.BnoGjrdK.js +0 -1
  483. data/docs/assets/tutorial.md.BnoGjrdK.lean.js +0 -1
  484. data/docs/images/logo-300.png +0 -0
  485. data/docs/images/logo.png +0 -0
  486. /data/docs/assets/{cli.md.RmeA2b0i.lean.js → cli.md.CjsktgFz.lean.js} +0 -0
  487. /data/docs/assets/{configuration.md.LG-zIBww.lean.js → configuration.md.DeyhpqEx.lean.js} +0 -0
  488. /data/docs/assets/{css.md.DJgj2clw.lean.js → css.md.CltvJqAa.lean.js} +0 -0
  489. /data/docs/assets/{custom-element-tests.md.BrYJQEl3.lean.js → custom-element-tests.md.B_rbta32.lean.js} +0 -0
  490. /data/docs/assets/{database-access.md.C7l-Vuvb.lean.js → database-access.md.gnluu54N.lean.js} +0 -0
  491. /data/docs/assets/{dev-environment.md.GZv6xvi9.lean.js → dev-environment.md.BroAOLhF.lean.js} +0 -0
@@ -0,0 +1,54 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Brut::FrontEnd::Forms::SelectInput do
4
+ describe "#value=" do
5
+ let(:name) { "test-input" }
6
+ context "value is present" do
7
+ it "does not set any violations" do
8
+ input = described_class.new(
9
+ input_definition: Brut::FrontEnd::Forms::SelectInputDefinition.new(
10
+ name:,
11
+ required: true,
12
+ ),
13
+ index: 0,
14
+ value: "DC"
15
+ )
16
+ expect(input.valid?).to eq(true)
17
+ expect(input.value).to eq("DC")
18
+ expect(input.typed_value).to eq("DC")
19
+ end
20
+ end
21
+ context "value is not present" do
22
+ context "required" do
23
+ it "sets valueMissing violation" do
24
+ input = described_class.new(
25
+ input_definition: Brut::FrontEnd::Forms::SelectInputDefinition.new(
26
+ name:,
27
+ required: true,
28
+ ),
29
+ index: 0,
30
+ value: ""
31
+ )
32
+ expect(input.validity_state).to have_constraint_violation(:valueMissing)
33
+ expect(input.value).to eq("")
34
+ expect(input.typed_value).to eq(nil)
35
+ end
36
+ end
37
+ context "not required" do
38
+ it "does not set any violations" do
39
+ input = described_class.new(
40
+ input_definition: Brut::FrontEnd::Forms::SelectInputDefinition.new(
41
+ name:,
42
+ required: false,
43
+ ),
44
+ index: 0,
45
+ value: ""
46
+ )
47
+ expect(input.valid?).to eq(true)
48
+ expect(input.value).to eq("")
49
+ expect(input.typed_value).to eq(nil)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Bryant Copeland
@@ -409,6 +409,9 @@ files:
409
409
  - assets/LogoPylon.pxd
410
410
  - assets/LogoStop.pxd
411
411
  - assets/LogoTall.pxd
412
+ - assets/MetroLogo.graffle
413
+ - assets/SocialImage.png
414
+ - assets/SocialImage.pxd
412
415
  - bin/bin_kit.rb
413
416
  - bin/dev
414
417
  - bin/docs
@@ -595,9 +598,13 @@ files:
595
598
  - brutrb.com/database-schema.md
596
599
  - brutrb.com/deployment.md
597
600
  - brutrb.com/dev-environment.md
601
+ - brutrb.com/dir-structure.md
598
602
  - brutrb.com/doc-conventions.md
603
+ - brutrb.com/dx
599
604
  - brutrb.com/end-to-end-tests.md
605
+ - brutrb.com/features.md
600
606
  - brutrb.com/flash-and-session.md
607
+ - brutrb.com/form-constraints.md
601
608
  - brutrb.com/forms.md
602
609
  - brutrb.com/getting-started.md
603
610
  - brutrb.com/handlers.md
@@ -636,19 +643,26 @@ files:
636
643
  - brutrb.com/package-lock.json
637
644
  - brutrb.com/package.json
638
645
  - brutrb.com/pages.md
639
- - brutrb.com/public/images/logo-300.png
640
- - brutrb.com/public/images/logo.png
646
+ - brutrb.com/public/SocialImage.png
647
+ - brutrb.com/public/favicon.ico
648
+ - brutrb.com/recipes/alternate-layouts.md
641
649
  - brutrb.com/recipes/authentication.md
650
+ - brutrb.com/recipes/blank-layouts.md
651
+ - brutrb.com/recipes/custom-flash.md
652
+ - brutrb.com/recipes/indexed-forms.md
653
+ - brutrb.com/recipes/text-field-component.md
642
654
  - brutrb.com/routes.md
643
655
  - brutrb.com/security.md
644
656
  - brutrb.com/seed-data.md
645
657
  - brutrb.com/space-time-continuum.md
646
658
  - brutrb.com/tutorial.md
647
659
  - brutrb.com/unit-tests.md
660
+ - brutrb.com/why.md
648
661
  - docker-compose.dx.yml
649
662
  - docs-todo.md
650
663
  - docs/404.html
651
664
  - docs/CNAME
665
+ - docs/SocialImage.png
652
666
  - docs/ai.html
653
667
  - docs/api/Brut.html
654
668
  - docs/api/Brut/BackEnd.html
@@ -868,97 +882,115 @@ files:
868
882
  - docs/api/method_list.html
869
883
  - docs/api/top-level-namespace.html
870
884
  - docs/assets.html
871
- - docs/assets/LogoStop.X8x-4riz.png
885
+ - docs/assets/LogoStop.Gb3tDhL1.png
872
886
  - docs/assets/OverviewMetro.DUS-5fUZ.png
873
- - docs/assets/ai.md._6HCDL6d.js
874
- - docs/assets/ai.md._6HCDL6d.lean.js
875
- - docs/assets/app.BhrfSt68.js
876
- - docs/assets/assets.md.D3wunzLx.js
877
- - docs/assets/assets.md.D3wunzLx.lean.js
878
- - docs/assets/brut-js.md.o2DAO2s2.js
879
- - docs/assets/brut-js.md.o2DAO2s2.lean.js
887
+ - docs/assets/ai.md.Cy9GWnER.js
888
+ - docs/assets/ai.md.Cy9GWnER.lean.js
889
+ - docs/assets/app.ClaS47Ru.js
890
+ - docs/assets/assets.md.7C3HWkga.js
891
+ - docs/assets/assets.md.7C3HWkga.lean.js
892
+ - docs/assets/brut-js.md.B4GYxQVw.js
893
+ - docs/assets/brut-js.md.B4GYxQVw.lean.js
880
894
  - docs/assets/business-logic.md.BY4hGy0m.js
881
895
  - docs/assets/business-logic.md.BY4hGy0m.lean.js
882
- - docs/assets/chunks/@localSearchIndexroot.CeRAdP1K.js
883
- - docs/assets/chunks/VPLocalSearchBox.Dpot_2H4.js
896
+ - docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js
897
+ - docs/assets/chunks/VPLocalSearchBox.DtgDfde2.js
884
898
  - docs/assets/chunks/framework.1L-BeKqY.js
885
- - docs/assets/chunks/theme.N2SNVLgU.js
886
- - docs/assets/cli.md.RmeA2b0i.js
887
- - docs/assets/cli.md.RmeA2b0i.lean.js
888
- - docs/assets/components.md.CRUMdRoN.js
889
- - docs/assets/components.md.CRUMdRoN.lean.js
890
- - docs/assets/configuration.md.LG-zIBww.js
891
- - docs/assets/configuration.md.LG-zIBww.lean.js
892
- - docs/assets/css.md.DJgj2clw.js
893
- - docs/assets/css.md.DJgj2clw.lean.js
894
- - docs/assets/custom-element-tests.md.BrYJQEl3.js
895
- - docs/assets/custom-element-tests.md.BrYJQEl3.lean.js
896
- - docs/assets/database-access.md.C7l-Vuvb.js
897
- - docs/assets/database-access.md.C7l-Vuvb.lean.js
898
- - docs/assets/database-schema.md.BUjR0VS1.js
899
- - docs/assets/database-schema.md.BUjR0VS1.lean.js
899
+ - docs/assets/chunks/theme.B45bvibT.js
900
+ - docs/assets/cli.md.CjsktgFz.js
901
+ - docs/assets/cli.md.CjsktgFz.lean.js
902
+ - docs/assets/components.md.DatoNgFo.js
903
+ - docs/assets/components.md.DatoNgFo.lean.js
904
+ - docs/assets/configuration.md.DeyhpqEx.js
905
+ - docs/assets/configuration.md.DeyhpqEx.lean.js
906
+ - docs/assets/css.md.CltvJqAa.js
907
+ - docs/assets/css.md.CltvJqAa.lean.js
908
+ - docs/assets/custom-element-tests.md.B_rbta32.js
909
+ - docs/assets/custom-element-tests.md.B_rbta32.lean.js
910
+ - docs/assets/database-access.md.gnluu54N.js
911
+ - docs/assets/database-access.md.gnluu54N.lean.js
912
+ - docs/assets/database-schema.md.CSYk6E6v.js
913
+ - docs/assets/database-schema.md.CSYk6E6v.lean.js
900
914
  - docs/assets/deployment.md.BLseERGV.js
901
915
  - docs/assets/deployment.md.BLseERGV.lean.js
902
916
  - docs/assets/dev-env-overview.Gj7NWM8-.png
903
917
  - docs/assets/dev-env-protocol.DysDAtnz.png
904
- - docs/assets/dev-environment.md.GZv6xvi9.js
905
- - docs/assets/dev-environment.md.GZv6xvi9.lean.js
906
- - docs/assets/doc-conventions.md.-kN3Xo5C.js
907
- - docs/assets/doc-conventions.md.-kN3Xo5C.lean.js
908
- - docs/assets/end-to-end-tests.md.yfQHC0b5.js
909
- - docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js
910
- - docs/assets/flash-and-session.md.BXY8RvT0.js
911
- - docs/assets/flash-and-session.md.BXY8RvT0.lean.js
912
- - docs/assets/forms.md.B-koVgyw.js
913
- - docs/assets/forms.md.B-koVgyw.lean.js
914
- - docs/assets/getting-started.md.Dj0qtZI2.js
915
- - docs/assets/getting-started.md.Dj0qtZI2.lean.js
916
- - docs/assets/handlers.md.089DVD3v.js
917
- - docs/assets/handlers.md.089DVD3v.lean.js
918
- - docs/assets/hooks.md.C4-moMny.js
919
- - docs/assets/hooks.md.C4-moMny.lean.js
920
- - docs/assets/i18n.md.Do9i1qWl.js
921
- - docs/assets/i18n.md.Do9i1qWl.lean.js
922
- - docs/assets/index.md.CuBB-BdM.js
923
- - docs/assets/index.md.CuBB-BdM.lean.js
924
- - docs/assets/instrumentation.md.a9Pjps4P.js
925
- - docs/assets/instrumentation.md.a9Pjps4P.lean.js
926
- - docs/assets/javascript.md.GWbhRS51.js
927
- - docs/assets/javascript.md.GWbhRS51.lean.js
918
+ - docs/assets/dev-environment.md.BroAOLhF.js
919
+ - docs/assets/dev-environment.md.BroAOLhF.lean.js
920
+ - docs/assets/dir-structure.md.CWir1pic.js
921
+ - docs/assets/dir-structure.md.CWir1pic.lean.js
922
+ - docs/assets/doc-conventions.md.BzmSrTEW.js
923
+ - docs/assets/doc-conventions.md.BzmSrTEW.lean.js
924
+ - docs/assets/end-to-end-tests.md.DzqRpZ43.js
925
+ - docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js
926
+ - docs/assets/features.md.DPFXsy0z.js
927
+ - docs/assets/features.md.DPFXsy0z.lean.js
928
+ - docs/assets/flash-and-session.md.nPvUpnUx.js
929
+ - docs/assets/flash-and-session.md.nPvUpnUx.lean.js
930
+ - docs/assets/form-constraints.md.x5tNpTTI.js
931
+ - docs/assets/form-constraints.md.x5tNpTTI.lean.js
932
+ - docs/assets/forms.md.C2Dizvzq.js
933
+ - docs/assets/forms.md.C2Dizvzq.lean.js
934
+ - docs/assets/getting-started.md.C93e0odB.js
935
+ - docs/assets/getting-started.md.C93e0odB.lean.js
936
+ - docs/assets/handlers.md.Chyri6KA.js
937
+ - docs/assets/handlers.md.Chyri6KA.lean.js
938
+ - docs/assets/hooks.md.Jmb5VOLA.js
939
+ - docs/assets/hooks.md.Jmb5VOLA.lean.js
940
+ - docs/assets/i18n.md.xQhiGo1G.js
941
+ - docs/assets/i18n.md.xQhiGo1G.lean.js
942
+ - docs/assets/index.md.CAMqGBJE.js
943
+ - docs/assets/index.md.CAMqGBJE.lean.js
944
+ - docs/assets/instrumentation.md.BgcaGVYH.js
945
+ - docs/assets/instrumentation.md.BgcaGVYH.lean.js
946
+ - docs/assets/javascript.md.DzrMxUmI.js
947
+ - docs/assets/javascript.md.DzrMxUmI.lean.js
928
948
  - docs/assets/jobs.md.S-2amAYp.js
929
949
  - docs/assets/jobs.md.S-2amAYp.lean.js
930
- - docs/assets/keyword-injection.md.Dt2tKREs.js
931
- - docs/assets/keyword-injection.md.Dt2tKREs.lean.js
932
- - docs/assets/layouts.md.cPnh3NId.js
933
- - docs/assets/layouts.md.cPnh3NId.lean.js
934
- - docs/assets/lsp.md.Bsu-f6VU.js
935
- - docs/assets/lsp.md.Bsu-f6VU.lean.js
950
+ - docs/assets/keyword-injection.md.95Zgh2eN.js
951
+ - docs/assets/keyword-injection.md.95Zgh2eN.lean.js
952
+ - docs/assets/layouts.md.CJGDFY-m.js
953
+ - docs/assets/layouts.md.CJGDFY-m.lean.js
954
+ - docs/assets/lsp.md.Dn1rIiW0.js
955
+ - docs/assets/lsp.md.Dn1rIiW0.lean.js
936
956
  - docs/assets/markdown-examples.md.CCFEQO44.js
937
957
  - docs/assets/markdown-examples.md.CCFEQO44.lean.js
938
958
  - docs/assets/middleware.md.Czz_UlJN.js
939
959
  - docs/assets/middleware.md.Czz_UlJN.lean.js
940
960
  - docs/assets/not-released.md.BBy28McC.js
941
961
  - docs/assets/not-released.md.BBy28McC.lean.js
942
- - docs/assets/overview.md.DVKRM8zl.js
943
- - docs/assets/overview.md.DVKRM8zl.lean.js
944
- - docs/assets/pages.md.BE3kfOc5.js
945
- - docs/assets/pages.md.BE3kfOc5.lean.js
946
- - docs/assets/recipes_authentication.md.CAsXf7hk.js
947
- - docs/assets/recipes_authentication.md.CAsXf7hk.lean.js
948
- - docs/assets/routes.md.BMM7peut.js
949
- - docs/assets/routes.md.BMM7peut.lean.js
950
- - docs/assets/security.md.C668yXCi.js
951
- - docs/assets/security.md.C668yXCi.lean.js
962
+ - docs/assets/overview.md.Bdq4qt3L.js
963
+ - docs/assets/overview.md.Bdq4qt3L.lean.js
964
+ - docs/assets/pages.md.B7Hc-i6H.js
965
+ - docs/assets/pages.md.B7Hc-i6H.lean.js
966
+ - docs/assets/recipes_alternate-layouts.md.BwEytl59.js
967
+ - docs/assets/recipes_alternate-layouts.md.BwEytl59.lean.js
968
+ - docs/assets/recipes_authentication.md.Dzvi_g69.js
969
+ - docs/assets/recipes_authentication.md.Dzvi_g69.lean.js
970
+ - docs/assets/recipes_blank-layouts.md.fyAUJyJR.js
971
+ - docs/assets/recipes_blank-layouts.md.fyAUJyJR.lean.js
972
+ - docs/assets/recipes_custom-flash.md.CrQbI5eH.js
973
+ - docs/assets/recipes_custom-flash.md.CrQbI5eH.lean.js
974
+ - docs/assets/recipes_indexed-forms.md.CstYyOSo.js
975
+ - docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js
976
+ - docs/assets/recipes_text-field-component.md.H4wLAK0Z.js
977
+ - docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js
978
+ - docs/assets/routes.md.B8kfUPHU.js
979
+ - docs/assets/routes.md.B8kfUPHU.lean.js
980
+ - docs/assets/security.md.C0G_AZR-.js
981
+ - docs/assets/security.md.C0G_AZR-.lean.js
952
982
  - docs/assets/seed-data.md.BvFZlqIk.js
953
983
  - docs/assets/seed-data.md.BvFZlqIk.lean.js
954
984
  - docs/assets/spa.qejUdp-5.png
955
- - docs/assets/space-time-continuum.md.KPUIKysQ.js
956
- - docs/assets/space-time-continuum.md.KPUIKysQ.lean.js
957
- - docs/assets/style.B2o1L9eN.css
958
- - docs/assets/tutorial.md.BnoGjrdK.js
959
- - docs/assets/tutorial.md.BnoGjrdK.lean.js
985
+ - docs/assets/space-time-continuum.md.xl44xDos.js
986
+ - docs/assets/space-time-continuum.md.xl44xDos.lean.js
987
+ - docs/assets/style.prAgp4yQ.css
988
+ - docs/assets/tutorial.md.a4a0eVOy.js
989
+ - docs/assets/tutorial.md.a4a0eVOy.lean.js
960
990
  - docs/assets/unit-tests.md.DUGrnLj5.js
961
991
  - docs/assets/unit-tests.md.DUGrnLj5.lean.js
992
+ - docs/assets/why.md.C-hk5xgJ.js
993
+ - docs/assets/why.md.C-hk5xgJ.lean.js
962
994
  - docs/assets/workspace-protocol.C0gXsoDb.png
963
995
  - docs/brut-css/brut.css
964
996
  - docs/brut-css/brut.max.css
@@ -1061,17 +1093,19 @@ files:
1061
1093
  - docs/database-schema.html
1062
1094
  - docs/deployment.html
1063
1095
  - docs/dev-environment.html
1096
+ - docs/dir-structure.html
1064
1097
  - docs/doc-conventions.html
1065
1098
  - docs/end-to-end-tests.html
1099
+ - docs/favicon.ico
1100
+ - docs/features.html
1066
1101
  - docs/flash-and-session.html
1102
+ - docs/form-constraints.html
1067
1103
  - docs/forms.html
1068
1104
  - docs/getting-started.html
1069
1105
  - docs/handlers.html
1070
1106
  - docs/hashmap.json
1071
1107
  - docs/hooks.html
1072
1108
  - docs/i18n.html
1073
- - docs/images/logo-300.png
1074
- - docs/images/logo.png
1075
1109
  - docs/index.html
1076
1110
  - docs/instrumentation.html
1077
1111
  - docs/javascript.html
@@ -1084,7 +1118,12 @@ files:
1084
1118
  - docs/not-released.html
1085
1119
  - docs/overview.html
1086
1120
  - docs/pages.html
1121
+ - docs/recipes/alternate-layouts.html
1087
1122
  - docs/recipes/authentication.html
1123
+ - docs/recipes/blank-layouts.html
1124
+ - docs/recipes/custom-flash.html
1125
+ - docs/recipes/indexed-forms.html
1126
+ - docs/recipes/text-field-component.html
1088
1127
  - docs/routes.html
1089
1128
  - docs/security.html
1090
1129
  - docs/seed-data.html
@@ -1092,6 +1131,7 @@ files:
1092
1131
  - docs/tutorial.html
1093
1132
  - docs/unit-tests.html
1094
1133
  - docs/vp-icons.css
1134
+ - docs/why.html
1095
1135
  - dx/bash_customizations
1096
1136
  - dx/build
1097
1137
  - dx/docker-compose.env
@@ -1243,6 +1283,8 @@ files:
1243
1283
  - lib/sequel/plugins/external_id.rb
1244
1284
  - lib/sequel/plugins/find_bang.rb
1245
1285
  - specs/brut/front_end/forms/input.spec.rb
1286
+ - specs/brut/front_end/forms/radio_button_group_input.spec.rb
1287
+ - specs/brut/front_end/forms/select_input.spec.rb
1246
1288
  - specs/spec_helper.rb
1247
1289
  - specs/support.rb
1248
1290
  - specs/support/matchers.rb
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{_ as t,c as o,o as a,ag as i}from"./chunks/framework.1L-BeKqY.js";const p=JSON.parse('{"title":"AI Declaration and Notes","description":"","frontmatter":{},"headers":[],"relativePath":"ai.md","filePath":"ai.md"}'),s={name:"ai.md"};function n(r,e,l,d,h,c){return a(),o("div",null,e[0]||(e[0]=[i("",27)]))}const b=t(s,[["render",n]]);export{p as __pageData,b as default};