backpack 0.3.0 → 0.4.1

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 (606) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +18 -0
  3. data/.gitlab-ci.yml +152 -0
  4. data/.rubocop.yml +2 -0
  5. data/.ruby-version +1 -0
  6. data/LICENSE +21 -0
  7. data/README.md +29 -0
  8. data/Rakefile +4 -0
  9. data/demo/.gitignore +47 -0
  10. data/demo/.overmind.env +2 -0
  11. data/demo/.yarn/cache/@babel-code-frame-npm-7.27.1-4dbcabb137-5874edc5d3.zip +0 -0
  12. data/demo/.yarn/cache/@babel-helper-validator-identifier-npm-7.28.5-1953d49d2b-5a251a6848.zip +0 -0
  13. data/demo/.yarn/cache/@csstools-css-parser-algorithms-npm-2.7.1-8dc62b9586-304e6f92e5.zip +0 -0
  14. data/demo/.yarn/cache/@csstools-css-tokenizer-npm-2.4.1-51184be252-395c51f872.zip +0 -0
  15. data/demo/.yarn/cache/@csstools-media-query-list-parser-npm-2.1.13-cb3cb9a768-7754b4b9fc.zip +0 -0
  16. data/demo/.yarn/cache/@csstools-postcss-cascade-layers-npm-1.1.1-4382e19cf0-8ecd6a929e.zip +0 -0
  17. data/demo/.yarn/cache/@csstools-postcss-color-function-npm-1.1.1-7c5a0199ae-087595985e.zip +0 -0
  18. data/demo/.yarn/cache/@csstools-postcss-font-format-keywords-npm-1.0.1-ef1db49912-ed8d9eab97.zip +0 -0
  19. data/demo/.yarn/cache/@csstools-postcss-hwb-function-npm-1.0.2-f3f621e351-352ead754a.zip +0 -0
  20. data/demo/.yarn/cache/@csstools-postcss-ic-unit-npm-1.0.1-111638e451-09c414c9b7.zip +0 -0
  21. data/demo/.yarn/cache/@csstools-postcss-is-pseudo-class-npm-2.0.7-c85939401b-a4494bb8e9.zip +0 -0
  22. data/demo/.yarn/cache/@csstools-postcss-nested-calc-npm-1.0.0-8028506411-53bb783dd6.zip +0 -0
  23. data/demo/.yarn/cache/@csstools-postcss-normalize-display-values-npm-1.0.1-53721ce3eb-75901daec3.zip +0 -0
  24. data/demo/.yarn/cache/@csstools-postcss-oklab-function-npm-1.1.1-2907029cf1-d66b789060.zip +0 -0
  25. data/demo/.yarn/cache/@csstools-postcss-progressive-custom-properties-npm-1.3.0-1e56504855-e281845fde.zip +0 -0
  26. data/demo/.yarn/cache/@csstools-postcss-stepped-value-functions-npm-1.0.1-01aa1138bd-2fc88713a0.zip +0 -0
  27. data/demo/.yarn/cache/@csstools-postcss-text-decoration-shorthand-npm-1.0.0-96f61ef9fe-d27aaf9787.zip +0 -0
  28. data/demo/.yarn/cache/@csstools-postcss-trigonometric-functions-npm-1.0.2-4553514702-f7f5b5f249.zip +0 -0
  29. data/demo/.yarn/cache/@csstools-postcss-unset-value-npm-1.0.2-f57c79bfc4-3facdae154.zip +0 -0
  30. data/demo/.yarn/cache/@csstools-selector-specificity-npm-2.2.0-9e6097918b-97c89f23b3.zip +0 -0
  31. data/demo/.yarn/cache/@csstools-selector-specificity-npm-3.1.1-85fd5757fc-3786a6afea.zip +0 -0
  32. data/demo/.yarn/cache/@eslint-community-eslint-utils-npm-4.9.0-fe45a08548-ae9b98eea0.zip +0 -0
  33. data/demo/.yarn/cache/@eslint-community-regexpp-npm-4.12.2-3d54624470-1770bc81f6.zip +0 -0
  34. data/demo/.yarn/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10957c7592.zip +0 -0
  35. data/demo/.yarn/cache/@eslint-js-npm-8.57.1-dec269f278-2afb77454c.zip +0 -0
  36. data/demo/.yarn/cache/@hotwired-stimulus-npm-3.2.2-e1e064f1fe-e0c13469df.zip +0 -0
  37. data/demo/.yarn/cache/@humanwhocodes-config-array-npm-0.13.0-843095a032-eae69ff913.zip +0 -0
  38. data/demo/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-0fd22007db.zip +0 -0
  39. data/demo/.yarn/cache/@humanwhocodes-object-schema-npm-2.0.3-4f0e508cd9-d3b78f6c58.zip +0 -0
  40. data/demo/.yarn/cache/@isaacs-balanced-match-npm-4.0.1-8965afafe6-102fbc6d2c.zip +0 -0
  41. data/demo/.yarn/cache/@isaacs-brace-expansion-npm-5.0.0-754d3cb3f5-d7a3b8b0dd.zip +0 -0
  42. data/demo/.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip +0 -0
  43. data/demo/.yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-5d36d28996.zip +0 -0
  44. data/demo/.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip +0 -0
  45. data/demo/.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip +0 -0
  46. data/demo/.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip +0 -0
  47. data/demo/.yarn/cache/@npmcli-agent-npm-4.0.0-502e5ae4f0-89ae20b448.zip +0 -0
  48. data/demo/.yarn/cache/@npmcli-fs-npm-4.0.0-1d9cc8a27b-68951c589e.zip +0 -0
  49. data/demo/.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip +0 -0
  50. data/demo/.yarn/cache/@radix-ui-colors-npm-3.0.0-a7484539fd-5ac1b69df7.zip +0 -0
  51. data/demo/.yarn/cache/@types-less-npm-3.0.8-5556bee38f-8e04acca20.zip +0 -0
  52. data/demo/.yarn/cache/@types-minimist-npm-1.2.5-c85664a9d8-477047b606.zip +0 -0
  53. data/demo/.yarn/cache/@types-node-npm-24.10.1-d514f50dfd-c2f370ae7a.zip +0 -0
  54. data/demo/.yarn/cache/@types-normalize-package-data-npm-2.4.4-676a8ba353-65dff72b54.zip +0 -0
  55. data/demo/.yarn/cache/@types-sass-npm-1.43.1-6770eea7c0-19eb71acc4.zip +0 -0
  56. data/demo/.yarn/cache/@types-stylus-npm-0.48.43-0d92990605-bd780fc7e8.zip +0 -0
  57. data/demo/.yarn/cache/@ungap-structured-clone-npm-1.3.0-aea1bdf957-64ed518f49.zip +0 -0
  58. data/demo/.yarn/cache/abbrev-npm-4.0.0-7d848a1ef0-d0344b63d2.zip +0 -0
  59. data/demo/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip +0 -0
  60. data/demo/.yarn/cache/acorn-npm-8.15.0-0764cf600e-309c6b49ae.zip +0 -0
  61. data/demo/.yarn/cache/agent-base-npm-7.1.4-cb8b4604d5-86a7f542af.zip +0 -0
  62. data/demo/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip +0 -0
  63. data/demo/.yarn/cache/ajv-npm-8.17.1-12ade7edc6-1797bf242c.zip +0 -0
  64. data/demo/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip +0 -0
  65. data/demo/.yarn/cache/ansi-regex-npm-6.2.2-f2d6691eb1-9b17ce2c6d.zip +0 -0
  66. data/demo/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip +0 -0
  67. data/demo/.yarn/cache/ansi-styles-npm-6.2.3-6fc7ca2bf5-f1b0829cf0.zip +0 -0
  68. data/demo/.yarn/cache/anymatch-npm-3.1.3-bc81d103b1-3e044fd6d1.zip +0 -0
  69. data/demo/.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip +0 -0
  70. data/demo/.yarn/cache/array-union-npm-2.1.0-4e4852b221-5bee12395c.zip +0 -0
  71. data/demo/.yarn/cache/arrify-npm-1.0.1-affafba9fe-745075dd4a.zip +0 -0
  72. data/demo/.yarn/cache/astral-regex-npm-2.0.0-f30d866aab-876231688c.zip +0 -0
  73. data/demo/.yarn/cache/autoprefixer-npm-10.4.22-7e7e3bc20e-7aa0c668bc.zip +0 -0
  74. data/demo/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip +0 -0
  75. data/demo/.yarn/cache/balanced-match-npm-2.0.0-d9722af241-9a5caad6a2.zip +0 -0
  76. data/demo/.yarn/cache/baseline-browser-mapping-npm-2.8.28-9d8c2e2d8e-d9b54c55ed.zip +0 -0
  77. data/demo/.yarn/cache/binary-extensions-npm-2.3.0-bd3f20d865-bcad01494e.zip +0 -0
  78. data/demo/.yarn/cache/boolbase-npm-1.0.0-965fe9af6d-3e25c80ef6.zip +0 -0
  79. data/demo/.yarn/cache/brace-expansion-npm-1.1.12-329e9ad7a1-12cb6d6310.zip +0 -0
  80. data/demo/.yarn/cache/brace-expansion-npm-2.0.2-bc7f134bbc-01dff195e3.zip +0 -0
  81. data/demo/.yarn/cache/braces-npm-3.0.3-582c14023c-b95aa0b3bd.zip +0 -0
  82. data/demo/.yarn/cache/browserslist-npm-4.28.0-c16ea3c47c-c19fe2c6f1.zip +0 -0
  83. data/demo/.yarn/cache/cacache-npm-20.0.1-9350b3f826-33d1514f5c.zip +0 -0
  84. data/demo/.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip +0 -0
  85. data/demo/.yarn/cache/camelcase-keys-npm-7.0.2-36fbc5a8f7-b5821cc48d.zip +0 -0
  86. data/demo/.yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-8c96818a90.zip +0 -0
  87. data/demo/.yarn/cache/caniuse-lite-npm-1.0.30001754-112f366158-f5a956d820.zip +0 -0
  88. data/demo/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip +0 -0
  89. data/demo/.yarn/cache/chokidar-npm-3.6.0-3c413a828f-d2f29f4997.zip +0 -0
  90. data/demo/.yarn/cache/chownr-npm-3.0.0-5275e85d25-fd73a4bab4.zip +0 -0
  91. data/demo/.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip +0 -0
  92. data/demo/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip +0 -0
  93. data/demo/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip +0 -0
  94. data/demo/.yarn/cache/colord-npm-2.9.3-5c35c27898-95d909bfbc.zip +0 -0
  95. data/demo/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip +0 -0
  96. data/demo/.yarn/cache/cosmiconfig-npm-8.3.6-a5566e2779-dc339ebea4.zip +0 -0
  97. data/demo/.yarn/cache/cross-spawn-npm-7.0.6-264bddf921-8d306efaca.zip +0 -0
  98. data/demo/.yarn/cache/css-blank-pseudo-npm-3.0.3-af86e84805-9be0a13885.zip +0 -0
  99. data/demo/.yarn/cache/css-functions-list-npm-3.2.3-c87dc5954d-25f12fb0ef.zip +0 -0
  100. data/demo/.yarn/cache/css-has-pseudo-npm-3.0.4-e97bb61896-8f165d68f6.zip +0 -0
  101. data/demo/.yarn/cache/css-prefers-color-scheme-npm-6.0.3-e1c91bc5cd-3a2b02f045.zip +0 -0
  102. data/demo/.yarn/cache/css-select-npm-3.1.2-ee1a42b802-a54b73ee89.zip +0 -0
  103. data/demo/.yarn/cache/css-tree-npm-2.3.1-6540d78e26-493cc24b5c.zip +0 -0
  104. data/demo/.yarn/cache/css-what-npm-4.0.0-5d0d0ff02b-69b5574912.zip +0 -0
  105. data/demo/.yarn/cache/cssdb-npm-7.11.2-d799f85811-79b2c3b6de.zip +0 -0
  106. data/demo/.yarn/cache/cssesc-npm-3.0.0-15ec56f86f-f8c4ababff.zip +0 -0
  107. data/demo/.yarn/cache/cuint-npm-0.2.2-3990651cc6-b8127a93a7.zip +0 -0
  108. data/demo/.yarn/cache/debug-npm-4.4.3-0105c6123a-4805abd570.zip +0 -0
  109. data/demo/.yarn/cache/decamelize-keys-npm-1.1.1-4cfa36ed4b-fc645fe20b.zip +0 -0
  110. data/demo/.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip +0 -0
  111. data/demo/.yarn/cache/decamelize-npm-5.0.1-2fde8c926c-7c3b1ed4b3.zip +0 -0
  112. data/demo/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-edb65dd0d7.zip +0 -0
  113. data/demo/.yarn/cache/dependency-graph-npm-0.11.0-658e382681-477204beaa.zip +0 -0
  114. data/demo/.yarn/cache/dir-glob-npm-3.0.1-1aea628b1b-fa05e18324.zip +0 -0
  115. data/demo/.yarn/cache/doctrine-npm-3.0.0-c6f1615f04-fd7673ca77.zip +0 -0
  116. data/demo/.yarn/cache/dom-serializer-npm-1.4.1-ebb24349c1-fbb0b01f87.zip +0 -0
  117. data/demo/.yarn/cache/domelementtype-npm-2.3.0-02de7cbfba-ee837a318f.zip +0 -0
  118. data/demo/.yarn/cache/domhandler-npm-3.3.0-6417f7e17e-850e5e9fee.zip +0 -0
  119. data/demo/.yarn/cache/domhandler-npm-4.3.1-493539c1ca-4c665ceed0.zip +0 -0
  120. data/demo/.yarn/cache/domutils-npm-2.8.0-0325139e5c-abf7434315.zip +0 -0
  121. data/demo/.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip +0 -0
  122. data/demo/.yarn/cache/electron-to-chromium-npm-1.5.250-3e6f742b0b-4f32d0e176.zip +0 -0
  123. data/demo/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip +0 -0
  124. data/demo/.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip +0 -0
  125. data/demo/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip +0 -0
  126. data/demo/.yarn/cache/entities-npm-2.2.0-0fc8d5b2f7-19010dacaf.zip +0 -0
  127. data/demo/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip +0 -0
  128. data/demo/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip +0 -0
  129. data/demo/.yarn/cache/error-ex-npm-1.3.4-c7248e4040-25136c0984.zip +0 -0
  130. data/demo/.yarn/cache/esbuild-darwin-arm64-npm-0.15.18-37bdbfa731-8.zip +0 -0
  131. data/demo/.yarn/cache/esbuild-npm-0.15.18-61e07796c8-ec12682b2c.zip +0 -0
  132. data/demo/.yarn/cache/esbuild-plugin-import-glob-npm-0.1.1-b0534ed204-d6a350e13e.zip +0 -0
  133. data/demo/.yarn/cache/esbuild-rails-npm-1.0.7-a0e5a3f51e-55efdcd04b.zip +0 -0
  134. data/demo/.yarn/cache/esbuild-style-plugin-npm-1.6.3-ee685c408e-05fa06f2e7.zip +0 -0
  135. data/demo/.yarn/cache/escalade-npm-3.2.0-19b50dd48f-47b029c83d.zip +0 -0
  136. data/demo/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip +0 -0
  137. data/demo/.yarn/cache/eslint-config-prettier-npm-8.10.2-2e293fd4f2-a92b7e8a99.zip +0 -0
  138. data/demo/.yarn/cache/eslint-npm-8.57.1-dd20287a5a-e2489bb7f8.zip +0 -0
  139. data/demo/.yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip +0 -0
  140. data/demo/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip +0 -0
  141. data/demo/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip +0 -0
  142. data/demo/.yarn/cache/esquery-npm-1.6.0-16fee31531-08ec4fe446.zip +0 -0
  143. data/demo/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-ebc17b1a33.zip +0 -0
  144. data/demo/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip +0 -0
  145. data/demo/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip +0 -0
  146. data/demo/.yarn/cache/exponential-backoff-npm-3.1.3-28be78d98e-471fdb70fd.zip +0 -0
  147. data/demo/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip +0 -0
  148. data/demo/.yarn/cache/fast-glob-npm-3.3.3-2a653be532-0704d7b85c.zip +0 -0
  149. data/demo/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip +0 -0
  150. data/demo/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip +0 -0
  151. data/demo/.yarn/cache/fast-uri-npm-3.1.0-57fa0b3f3c-daab0efd35.zip +0 -0
  152. data/demo/.yarn/cache/fastest-levenshtein-npm-1.0.16-192d328856-a78d44285c.zip +0 -0
  153. data/demo/.yarn/cache/fastq-npm-1.19.1-ca0a13ec3f-7691d1794f.zip +0 -0
  154. data/demo/.yarn/cache/fdir-npm-6.5.0-8814a0dec7-bd537daa9d.zip +0 -0
  155. data/demo/.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip +0 -0
  156. data/demo/.yarn/cache/file-entry-cache-npm-7.0.2-9ddf8eaba9-283c674fc2.zip +0 -0
  157. data/demo/.yarn/cache/fill-range-npm-7.1.1-bf491486db-b4abfbca38.zip +0 -0
  158. data/demo/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip +0 -0
  159. data/demo/.yarn/cache/flat-cache-npm-3.2.0-9a887f084e-e7e0f59801.zip +0 -0
  160. data/demo/.yarn/cache/flatted-npm-3.3.3-ca455563b2-8c96c02fbe.zip +0 -0
  161. data/demo/.yarn/cache/foreground-child-npm-3.3.1-b7775fda04-b2c1a6fc0b.zip +0 -0
  162. data/demo/.yarn/cache/fraction.js-npm-5.3.4-52b06f74c0-6ac88ecfdb.zip +0 -0
  163. data/demo/.yarn/cache/fs-extra-npm-11.3.2-490a8d09c5-24a7a6e096.zip +0 -0
  164. data/demo/.yarn/cache/fs-minipass-npm-3.0.3-d148d6ac19-8722a41109.zip +0 -0
  165. data/demo/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip +0 -0
  166. data/demo/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-11e6ea6fea.zip +0 -0
  167. data/demo/.yarn/cache/fsevents-patch-21ad2b1333-8.zip +0 -0
  168. data/demo/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip +0 -0
  169. data/demo/.yarn/cache/generic-names-npm-4.0.0-c188ad8a22-8dabd25051.zip +0 -0
  170. data/demo/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip +0 -0
  171. data/demo/.yarn/cache/get-stdin-npm-9.0.0-4221477153-5972bc34d0.zip +0 -0
  172. data/demo/.yarn/cache/glob-npm-10.4.5-8c63175f05-0bc725de5e.zip +0 -0
  173. data/demo/.yarn/cache/glob-npm-11.0.3-f68382b3cc-65ddc1e3c9.zip +0 -0
  174. data/demo/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip +0 -0
  175. data/demo/.yarn/cache/glob-parent-npm-5.1.2-021ab32634-f4f2bfe242.zip +0 -0
  176. data/demo/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-c13ee97978.zip +0 -0
  177. data/demo/.yarn/cache/global-modules-npm-2.0.0-f71d340362-d6197f2585.zip +0 -0
  178. data/demo/.yarn/cache/global-prefix-npm-3.0.0-68cf01e67d-8a82fc1d6f.zip +0 -0
  179. data/demo/.yarn/cache/globals-npm-13.24.0-cc7713139c-56066ef058.zip +0 -0
  180. data/demo/.yarn/cache/globby-npm-11.1.0-bdcdf20c71-b4be8885e0.zip +0 -0
  181. data/demo/.yarn/cache/globby-npm-13.2.2-47efcd4a86-f3d84ced58.zip +0 -0
  182. data/demo/.yarn/cache/globjoin-npm-0.1.4-a1beb812bf-0a47d88d56.zip +0 -0
  183. data/demo/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip +0 -0
  184. data/demo/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip +0 -0
  185. data/demo/.yarn/cache/hard-rejection-npm-2.1.0-a80f2a977d-7baaf80a0c.zip +0 -0
  186. data/demo/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip +0 -0
  187. data/demo/.yarn/cache/hasown-npm-2.0.2-80fe6c9901-e8516f776a.zip +0 -0
  188. data/demo/.yarn/cache/hosted-git-info-npm-4.1.0-4efcdf8fd3-c3f87b3c2f.zip +0 -0
  189. data/demo/.yarn/cache/html-tags-npm-3.3.1-c8f411791b-b4ef1d5a76.zip +0 -0
  190. data/demo/.yarn/cache/htmlparser2-npm-5.0.1-d50ebd0fbb-b67ac02e44.zip +0 -0
  191. data/demo/.yarn/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-7a7246ddfc.zip +0 -0
  192. data/demo/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-670858c8f8.zip +0 -0
  193. data/demo/.yarn/cache/https-proxy-agent-npm-7.0.6-27a95c2690-b882377a12.zip +0 -0
  194. data/demo/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip +0 -0
  195. data/demo/.yarn/cache/icss-replace-symbols-npm-1.1.0-bc11c612de-24575b2c2f.zip +0 -0
  196. data/demo/.yarn/cache/icss-utils-npm-5.1.0-8d8c062d07-5c324d2835.zip +0 -0
  197. data/demo/.yarn/cache/ignore-npm-5.3.2-346d3ba017-2acfd32a57.zip +0 -0
  198. data/demo/.yarn/cache/import-fresh-npm-3.3.1-1916794950-a06b19461b.zip +0 -0
  199. data/demo/.yarn/cache/import-lazy-npm-4.0.0-3215653869-22f5e51702.zip +0 -0
  200. data/demo/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip +0 -0
  201. data/demo/.yarn/cache/indent-string-npm-5.0.0-35eaa3b052-e466c27b63.zip +0 -0
  202. data/demo/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip +0 -0
  203. data/demo/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip +0 -0
  204. data/demo/.yarn/cache/ini-npm-1.3.8-fb5040b4c0-dfd98b0ca3.zip +0 -0
  205. data/demo/.yarn/cache/ip-address-npm-10.1.0-d5d5693401-76b1abcdf5.zip +0 -0
  206. data/demo/.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-eef4417e3c.zip +0 -0
  207. data/demo/.yarn/cache/is-binary-path-npm-2.1.0-e61d46f557-84192eb88c.zip +0 -0
  208. data/demo/.yarn/cache/is-core-module-npm-2.16.1-a54837229e-6ec5b3c42d.zip +0 -0
  209. data/demo/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip +0 -0
  210. data/demo/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip +0 -0
  211. data/demo/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip +0 -0
  212. data/demo/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip +0 -0
  213. data/demo/.yarn/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-abd50f0618.zip +0 -0
  214. data/demo/.yarn/cache/is-plain-obj-npm-1.1.0-1046f64c0b-0ee0480779.zip +0 -0
  215. data/demo/.yarn/cache/is-plain-object-npm-5.0.0-285b70faa3-e32d27061e.zip +0 -0
  216. data/demo/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip +0 -0
  217. data/demo/.yarn/cache/isexe-npm-3.1.1-9c0061eead-7fe1931ee4.zip +0 -0
  218. data/demo/.yarn/cache/jackspeak-npm-3.4.3-546bfad080-be31027fc7.zip +0 -0
  219. data/demo/.yarn/cache/jackspeak-npm-4.1.1-582e5d1ed7-daca714c5a.zip +0 -0
  220. data/demo/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip +0 -0
  221. data/demo/.yarn/cache/js-yaml-npm-4.1.1-86ec786790-ea2339c693.zip +0 -0
  222. data/demo/.yarn/cache/json-buffer-npm-3.0.1-f8f6d20603-9026b03edc.zip +0 -0
  223. data/demo/.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-798ed4cf33.zip +0 -0
  224. data/demo/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip +0 -0
  225. data/demo/.yarn/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-02f2f466cd.zip +0 -0
  226. data/demo/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cff44156dd.zip +0 -0
  227. data/demo/.yarn/cache/jsonfile-npm-6.2.0-aefb9ffd45-c3028ec5c7.zip +0 -0
  228. data/demo/.yarn/cache/keyv-npm-4.5.4-4c8e2cf7f7-74a24395b1.zip +0 -0
  229. data/demo/.yarn/cache/kind-of-npm-6.0.3-ab15f36220-3ab01e7b1d.zip +0 -0
  230. data/demo/.yarn/cache/known-css-properties-npm-0.29.0-6bc491faeb-daa6562e90.zip +0 -0
  231. data/demo/.yarn/cache/lefthook-darwin-arm64-npm-1.13.6-b8f333b5db-8.zip +0 -0
  232. data/demo/.yarn/cache/lefthook-npm-1.13.6-54219a35e6-3f84a08528.zip +0 -0
  233. data/demo/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-12c5021c85.zip +0 -0
  234. data/demo/.yarn/cache/lilconfig-npm-3.1.3-74a77377bb-644eb10830.zip +0 -0
  235. data/demo/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip +0 -0
  236. data/demo/.yarn/cache/loader-utils-npm-3.3.1-eed38ce75b-d35808e081.zip +0 -0
  237. data/demo/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip +0 -0
  238. data/demo/.yarn/cache/lodash.camelcase-npm-4.3.0-bf268e3bf0-cb9227612f.zip +0 -0
  239. data/demo/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip +0 -0
  240. data/demo/.yarn/cache/lodash.truncate-npm-4.4.2-bc50fe1663-b463d8a382.zip +0 -0
  241. data/demo/.yarn/cache/lru-cache-npm-10.4.3-30c10b861a-6476138d21.zip +0 -0
  242. data/demo/.yarn/cache/lru-cache-npm-11.2.2-685f5506dc-052b3d0b81.zip +0 -0
  243. data/demo/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip +0 -0
  244. data/demo/.yarn/cache/lucide-static-npm-0.554.0-7aee65ee52-c357b6fbc4.zip +0 -0
  245. data/demo/.yarn/cache/make-dir-npm-3.1.0-d1d7505142-484200020a.zip +0 -0
  246. data/demo/.yarn/cache/make-fetch-happen-npm-15.0.2-53d5a83906-27413f3d69.zip +0 -0
  247. data/demo/.yarn/cache/map-obj-npm-1.0.1-fa55100fac-9949e7baec.zip +0 -0
  248. data/demo/.yarn/cache/map-obj-npm-4.3.0-d53e32935d-fbc554934d.zip +0 -0
  249. data/demo/.yarn/cache/mathml-tag-names-npm-2.1.3-875bd2d6e7-1201a25a13.zip +0 -0
  250. data/demo/.yarn/cache/mdn-data-npm-2.0.30-bf7b39c09a-d6ac5ac743.zip +0 -0
  251. data/demo/.yarn/cache/meow-npm-10.1.5-a1bab640d1-dd5f0caa4a.zip +0 -0
  252. data/demo/.yarn/cache/merge2-npm-1.4.1-a2507bd06c-7268db63ed.zip +0 -0
  253. data/demo/.yarn/cache/micromatch-npm-4.0.8-c9570e4aca-79920eb634.zip +0 -0
  254. data/demo/.yarn/cache/mime-npm-2.5.2-d3335c8166-dd3c93d433.zip +0 -0
  255. data/demo/.yarn/cache/minimatch-npm-10.1.1-453db4ee1a-8820c0be92.zip +0 -0
  256. data/demo/.yarn/cache/minimatch-npm-3.0.8-f3deb724b2-850cca179c.zip +0 -0
  257. data/demo/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip +0 -0
  258. data/demo/.yarn/cache/minimatch-npm-9.0.5-9aa93d97fa-2c035575ed.zip +0 -0
  259. data/demo/.yarn/cache/minimist-options-npm-4.1.0-64ca250fc1-8c040b3068.zip +0 -0
  260. data/demo/.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-b251bceea6.zip +0 -0
  261. data/demo/.yarn/cache/minipass-fetch-npm-4.0.1-ce1d15e957-3dfca705ce.zip +0 -0
  262. data/demo/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip +0 -0
  263. data/demo/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip +0 -0
  264. data/demo/.yarn/cache/minipass-npm-7.1.2-3a5327d36d-2bfd325b95.zip +0 -0
  265. data/demo/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip +0 -0
  266. data/demo/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip +0 -0
  267. data/demo/.yarn/cache/minizlib-npm-3.1.0-6680befdba-a15e6f0128.zip +0 -0
  268. data/demo/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip +0 -0
  269. data/demo/.yarn/cache/nanoid-npm-3.3.11-f98c1f9ef6-3be20d8866.zip +0 -0
  270. data/demo/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip +0 -0
  271. data/demo/.yarn/cache/negotiator-npm-1.0.0-47d727e27e-20ebfe79b2.zip +0 -0
  272. data/demo/.yarn/cache/node-gyp-npm-12.1.0-0690767ce9-198d91c535.zip +0 -0
  273. data/demo/.yarn/cache/node-releases-npm-2.0.27-b2d1b8de4a-a9a54079d8.zip +0 -0
  274. data/demo/.yarn/cache/nopt-npm-9.0.0-81316ec15c-7a5d9ab062.zip +0 -0
  275. data/demo/.yarn/cache/normalize-package-data-npm-3.0.3-1a49056685-bbcee00339.zip +0 -0
  276. data/demo/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip +0 -0
  277. data/demo/.yarn/cache/normalize-range-npm-0.1.2-bec5e259e2-9b2f14f093.zip +0 -0
  278. data/demo/.yarn/cache/nth-check-npm-2.1.1-f97afc8169-5afc3dafcd.zip +0 -0
  279. data/demo/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip +0 -0
  280. data/demo/.yarn/cache/optionator-npm-0.9.4-1f114b00e8-ecbd010e3d.zip +0 -0
  281. data/demo/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip +0 -0
  282. data/demo/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip +0 -0
  283. data/demo/.yarn/cache/p-map-npm-7.0.4-39386109d0-4be2097e94.zip +0 -0
  284. data/demo/.yarn/cache/package-json-from-dist-npm-1.0.1-4631a88465-58ee9538f2.zip +0 -0
  285. data/demo/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-6ba8b25514.zip +0 -0
  286. data/demo/.yarn/cache/parse-json-npm-5.2.0-00a63b1199-62085b17d6.zip +0 -0
  287. data/demo/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip +0 -0
  288. data/demo/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip +0 -0
  289. data/demo/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip +0 -0
  290. data/demo/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip +0 -0
  291. data/demo/.yarn/cache/path-scurry-npm-1.11.1-aaf8c339af-890d5abcd5.zip +0 -0
  292. data/demo/.yarn/cache/path-scurry-npm-2.0.1-7744619e5d-a022c6c38f.zip +0 -0
  293. data/demo/.yarn/cache/path-type-npm-4.0.0-10d47fc86a-5b1e2daa24.zip +0 -0
  294. data/demo/.yarn/cache/picocolors-npm-1.1.1-4fede47cf1-e1cf46bf84.zip +0 -0
  295. data/demo/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip +0 -0
  296. data/demo/.yarn/cache/picomatch-npm-4.0.3-0a647b87cc-6817fb74eb.zip +0 -0
  297. data/demo/.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip +0 -0
  298. data/demo/.yarn/cache/postcss-attribute-case-insensitive-npm-5.0.2-6aa24bfafa-c0b8139f37.zip +0 -0
  299. data/demo/.yarn/cache/postcss-clamp-npm-4.1.0-32ba814068-118eec936b.zip +0 -0
  300. data/demo/.yarn/cache/postcss-cli-npm-10.1.0-a45841d3d2-c900cc48cb.zip +0 -0
  301. data/demo/.yarn/cache/postcss-color-functional-notation-npm-4.2.4-8f3a9400c3-b763e164fe.zip +0 -0
  302. data/demo/.yarn/cache/postcss-color-hex-alpha-npm-8.0.4-88605e8cec-a2f3173a60.zip +0 -0
  303. data/demo/.yarn/cache/postcss-color-rebeccapurple-npm-7.1.1-b7828c0a0c-03482f9b81.zip +0 -0
  304. data/demo/.yarn/cache/postcss-custom-media-npm-8.0.2-5ad89ea0fe-887bbbacf6.zip +0 -0
  305. data/demo/.yarn/cache/postcss-custom-properties-npm-12.1.11-78be1c709e-421f9d8d6b.zip +0 -0
  306. data/demo/.yarn/cache/postcss-custom-selectors-npm-6.0.3-0a63667536-18080d60a8.zip +0 -0
  307. data/demo/.yarn/cache/postcss-dir-pseudo-class-npm-6.0.5-2555aeb05f-7810c439d8.zip +0 -0
  308. data/demo/.yarn/cache/postcss-double-position-gradients-npm-3.1.2-278f758391-ca09bf2aef.zip +0 -0
  309. data/demo/.yarn/cache/postcss-env-function-npm-4.0.6-2282fa7c63-645b2363cf.zip +0 -0
  310. data/demo/.yarn/cache/postcss-flexbugs-fixes-npm-5.0.2-8c28e40a5b-022ddbcca8.zip +0 -0
  311. data/demo/.yarn/cache/postcss-focus-visible-npm-6.0.4-2eb1d7ff31-acd010b9dd.zip +0 -0
  312. data/demo/.yarn/cache/postcss-focus-within-npm-5.0.4-d70f73ac5d-f23d8ab757.zip +0 -0
  313. data/demo/.yarn/cache/postcss-font-variant-npm-5.0.0-0a5e349320-a192865892.zip +0 -0
  314. data/demo/.yarn/cache/postcss-gap-properties-npm-3.0.5-78f268ad64-aed559d6d3.zip +0 -0
  315. data/demo/.yarn/cache/postcss-image-set-function-npm-4.0.7-46769dca3e-7e50933098.zip +0 -0
  316. data/demo/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip +0 -0
  317. data/demo/.yarn/cache/postcss-initial-npm-4.0.1-80cde7a815-6956953853.zip +0 -0
  318. data/demo/.yarn/cache/postcss-inline-svg-npm-5.0.0-bc19ff7916-96c5701c2c.zip +0 -0
  319. data/demo/.yarn/cache/postcss-lab-function-npm-4.2.1-1ebd916151-26ac74b430.zip +0 -0
  320. data/demo/.yarn/cache/postcss-load-config-npm-4.0.2-319bcff9ca-7c27dd3801.zip +0 -0
  321. data/demo/.yarn/cache/postcss-logical-npm-5.0.4-cf11b97479-17c71291ed.zip +0 -0
  322. data/demo/.yarn/cache/postcss-media-minmax-npm-5.0.0-ba7d6b2179-2cd7283e07.zip +0 -0
  323. data/demo/.yarn/cache/postcss-modules-extract-imports-npm-3.1.0-501aab09e8-b9192e0f4f.zip +0 -0
  324. data/demo/.yarn/cache/postcss-modules-local-by-default-npm-4.2.0-3f37e3939f-720d145453.zip +0 -0
  325. data/demo/.yarn/cache/postcss-modules-npm-5.0.0-eee2fcb829-60b34035b2.zip +0 -0
  326. data/demo/.yarn/cache/postcss-modules-npm-6.0.1-41d5592a7a-bdbf1e2bab.zip +0 -0
  327. data/demo/.yarn/cache/postcss-modules-scope-npm-3.2.1-eb0a0538a7-085f65863b.zip +0 -0
  328. data/demo/.yarn/cache/postcss-modules-values-npm-4.0.0-63d7ec543a-f7f2cdf14a.zip +0 -0
  329. data/demo/.yarn/cache/postcss-nesting-npm-10.2.0-eec5f664e8-25e6e66186.zip +0 -0
  330. data/demo/.yarn/cache/postcss-npm-8.5.6-e7f126c6f3-20f3b5d673.zip +0 -0
  331. data/demo/.yarn/cache/postcss-opacity-percentage-npm-1.1.3-552e884ed7-54d1b8ca68.zip +0 -0
  332. data/demo/.yarn/cache/postcss-overflow-shorthand-npm-3.0.4-b5a0785c77-7400902249.zip +0 -0
  333. data/demo/.yarn/cache/postcss-page-break-npm-3.0.4-6892987dc4-a7d08c945f.zip +0 -0
  334. data/demo/.yarn/cache/postcss-place-npm-7.0.5-895593f8b4-903fec0c31.zip +0 -0
  335. data/demo/.yarn/cache/postcss-preset-env-npm-7.8.3-242e470fd9-71bfb697ff.zip +0 -0
  336. data/demo/.yarn/cache/postcss-pseudo-class-any-link-npm-7.1.6-1a34600b0e-43aa18ea1e.zip +0 -0
  337. data/demo/.yarn/cache/postcss-replace-overflow-wrap-npm-4.0.0-e27e12bbc3-3ffe20b300.zip +0 -0
  338. data/demo/.yarn/cache/postcss-reporter-npm-7.1.0-af4f73892f-765d1d3bca.zip +0 -0
  339. data/demo/.yarn/cache/postcss-resolve-nested-selector-npm-0.1.6-c30614d887-85453901af.zip +0 -0
  340. data/demo/.yarn/cache/postcss-safe-parser-npm-6.0.0-dd01bffb52-06c733eaad.zip +0 -0
  341. data/demo/.yarn/cache/postcss-selector-not-npm-6.0.1-135f19a20c-fe523a0219.zip +0 -0
  342. data/demo/.yarn/cache/postcss-selector-parser-npm-6.1.2-46a8e03b00-ce9440fc42.zip +0 -0
  343. data/demo/.yarn/cache/postcss-selector-parser-npm-7.1.0-141ba29b54-1300e7871d.zip +0 -0
  344. data/demo/.yarn/cache/postcss-sorting-npm-8.0.2-d9f7d43c59-ebb5cc6a29.zip +0 -0
  345. data/demo/.yarn/cache/postcss-url-npm-10.1.3-1c99e6b8ad-5983dbd20e.zip +0 -0
  346. data/demo/.yarn/cache/postcss-value-parser-npm-4.2.0-3cef602a6a-819ffab0c9.zip +0 -0
  347. data/demo/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-cd192ec0d0.zip +0 -0
  348. data/demo/.yarn/cache/prettier-npm-2.8.8-430828a36c-b49e409431.zip +0 -0
  349. data/demo/.yarn/cache/pretty-hrtime-npm-1.0.3-32fd75fcbd-bae0e6832f.zip +0 -0
  350. data/demo/.yarn/cache/proc-log-npm-5.0.0-405173f9b4-c78b26ecef.zip +0 -0
  351. data/demo/.yarn/cache/proc-log-npm-6.0.0-455d6f01a6-005a2aa24b.zip +0 -0
  352. data/demo/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip +0 -0
  353. data/demo/.yarn/cache/punycode-npm-2.3.1-97543c420d-bb0a0ceedc.zip +0 -0
  354. data/demo/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip +0 -0
  355. data/demo/.yarn/cache/quick-lru-npm-5.1.1-e38e0edce3-a516faa255.zip +0 -0
  356. data/demo/.yarn/cache/read-cache-npm-1.0.0-00fa89ed05-cffc728b9e.zip +0 -0
  357. data/demo/.yarn/cache/read-pkg-npm-6.0.0-d89ce14684-0cebdff381.zip +0 -0
  358. data/demo/.yarn/cache/read-pkg-up-npm-8.0.0-6f39941cc9-fe4c804016.zip +0 -0
  359. data/demo/.yarn/cache/readdirp-npm-3.6.0-f950cc74ab-1ced032e6e.zip +0 -0
  360. data/demo/.yarn/cache/redent-npm-4.0.0-67da39f156-6944e7b1d8.zip +0 -0
  361. data/demo/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip +0 -0
  362. data/demo/.yarn/cache/require-from-string-npm-2.0.2-8557e0db12-a03ef68954.zip +0 -0
  363. data/demo/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-f4ba0b8494.zip +0 -0
  364. data/demo/.yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-4ceeb9113e.zip +0 -0
  365. data/demo/.yarn/cache/resolve-npm-1.22.11-2b5ca6ec84-6d5baa2156.zip +0 -0
  366. data/demo/.yarn/cache/resolve-patch-4e481dbf2b-1462da84ac.zip +0 -0
  367. data/demo/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip +0 -0
  368. data/demo/.yarn/cache/reusify-npm-1.1.0-96242be57f-64cb3142ac.zip +0 -0
  369. data/demo/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip +0 -0
  370. data/demo/.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip +0 -0
  371. data/demo/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip +0 -0
  372. data/demo/.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip +0 -0
  373. data/demo/.yarn/cache/semver-npm-7.7.3-9cf7b3b46c-f013a3ee46.zip +0 -0
  374. data/demo/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip +0 -0
  375. data/demo/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip +0 -0
  376. data/demo/.yarn/cache/signal-exit-npm-4.1.0-61fb957687-64c757b498.zip +0 -0
  377. data/demo/.yarn/cache/slash-npm-3.0.0-b87de2279a-94a93fff61.zip +0 -0
  378. data/demo/.yarn/cache/slash-npm-4.0.0-ce4bbc4a80-da8e4af737.zip +0 -0
  379. data/demo/.yarn/cache/slash-npm-5.1.0-718a84282e-70434b34c5.zip +0 -0
  380. data/demo/.yarn/cache/slice-ansi-npm-4.0.0-6eeca1d10e-4a82d7f085.zip +0 -0
  381. data/demo/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip +0 -0
  382. data/demo/.yarn/cache/socks-npm-2.8.7-d1d20aae19-4bbe2c88cf.zip +0 -0
  383. data/demo/.yarn/cache/socks-proxy-agent-npm-8.0.5-24d77a90dc-b4fbcdb7ad.zip +0 -0
  384. data/demo/.yarn/cache/source-map-js-npm-1.2.1-b9a47d7e1a-4eb0cd997c.zip +0 -0
  385. data/demo/.yarn/cache/spdx-correct-npm-3.2.0-ffae008484-e9ae98d22f.zip +0 -0
  386. data/demo/.yarn/cache/spdx-exceptions-npm-2.5.0-718ed4b7d6-bb127d6e25.zip +0 -0
  387. data/demo/.yarn/cache/spdx-expression-parse-npm-3.0.1-b718cbb35a-a1c6e104a2.zip +0 -0
  388. data/demo/.yarn/cache/spdx-license-ids-npm-3.0.22-2b47dea449-3810ce1ddd.zip +0 -0
  389. data/demo/.yarn/cache/ssri-npm-12.0.0-97c0e53d2e-ef4b6b0ae4.zip +0 -0
  390. data/demo/.yarn/cache/string-hash-npm-1.1.3-3cb8892e7c-104b8667a5.zip +0 -0
  391. data/demo/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip +0 -0
  392. data/demo/.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip +0 -0
  393. data/demo/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip +0 -0
  394. data/demo/.yarn/cache/strip-ansi-npm-7.1.2-aa4fadccd9-db0e3f9654.zip +0 -0
  395. data/demo/.yarn/cache/strip-indent-npm-4.1.1-e5fb519bd9-d322bfdc59.zip +0 -0
  396. data/demo/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-492f73e272.zip +0 -0
  397. data/demo/.yarn/cache/style-search-npm-0.1.0-e3177d3642-3cfefe3350.zip +0 -0
  398. data/demo/.yarn/cache/stylelint-config-recommended-npm-11.0.0-22dbca58e6-f6bed59952.zip +0 -0
  399. data/demo/.yarn/cache/stylelint-config-standard-npm-31.0.0-fc3caa478e-8e5769252c.zip +0 -0
  400. data/demo/.yarn/cache/stylelint-npm-15.11.0-6dc193bb48-9835f8a3e3.zip +0 -0
  401. data/demo/.yarn/cache/stylelint-order-npm-6.0.4-fa909cac07-66ed8a80b3.zip +0 -0
  402. data/demo/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip +0 -0
  403. data/demo/.yarn/cache/supports-hyperlinks-npm-3.2.0-f5a5cbe606-460594ec00.zip +0 -0
  404. data/demo/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip +0 -0
  405. data/demo/.yarn/cache/svg-tags-npm-1.0.0-68a35c11fa-407e5ef87c.zip +0 -0
  406. data/demo/.yarn/cache/table-npm-6.9.0-5955281f93-f54a7d1c11.zip +0 -0
  407. data/demo/.yarn/cache/tar-npm-7.5.2-6d8cfb7a13-192559b0e7.zip +0 -0
  408. data/demo/.yarn/cache/text-table-npm-0.2.0-d92a778b59-b6937a38c8.zip +0 -0
  409. data/demo/.yarn/cache/thenby-npm-1.3.4-766aefdf7d-2d2ef3d67f.zip +0 -0
  410. data/demo/.yarn/cache/tinyglobby-npm-0.2.15-0e783aadbd-0e33b8babf.zip +0 -0
  411. data/demo/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip +0 -0
  412. data/demo/.yarn/cache/trim-newlines-npm-4.1.1-d247eb0d1e-5b09f8e329.zip +0 -0
  413. data/demo/.yarn/cache/type-check-npm-0.4.0-60565800ce-ec688ebfc9.zip +0 -0
  414. data/demo/.yarn/cache/type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip +0 -0
  415. data/demo/.yarn/cache/type-fest-npm-1.4.0-7dd848962a-b011c33886.zip +0 -0
  416. data/demo/.yarn/cache/undici-types-npm-7.16.0-0e23b08124-1ef68fc6c5.zip +0 -0
  417. data/demo/.yarn/cache/unique-filename-npm-4.0.0-bfc100c4e3-6a62094fca.zip +0 -0
  418. data/demo/.yarn/cache/unique-slug-npm-5.0.0-11508c0469-222d0322bc.zip +0 -0
  419. data/demo/.yarn/cache/universalify-npm-2.0.1-040ba5a21e-ecd8469fe0.zip +0 -0
  420. data/demo/.yarn/cache/update-browserslist-db-npm-1.1.4-55ef7b4ab9-b757805a63.zip +0 -0
  421. data/demo/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip +0 -0
  422. data/demo/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip +0 -0
  423. data/demo/.yarn/cache/validate-npm-package-license-npm-3.0.4-7af8adc7a8-35703ac889.zip +0 -0
  424. data/demo/.yarn/cache/which-npm-1.3.1-f0ebb8bdd8-f2e185c624.zip +0 -0
  425. data/demo/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip +0 -0
  426. data/demo/.yarn/cache/which-npm-6.0.0-48f25f0ec8-df19b2cd8a.zip +0 -0
  427. data/demo/.yarn/cache/word-wrap-npm-1.2.5-42d00c4b09-f93ba3586f.zip +0 -0
  428. data/demo/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip +0 -0
  429. data/demo/.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip +0 -0
  430. data/demo/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip +0 -0
  431. data/demo/.yarn/cache/write-file-atomic-npm-5.0.1-52283db6ee-8dbb0e2512.zip +0 -0
  432. data/demo/.yarn/cache/xxhashjs-npm-0.2.2-70e0154c76-cf6baf05ba.zip +0 -0
  433. data/demo/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip +0 -0
  434. data/demo/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip +0 -0
  435. data/demo/.yarn/cache/yallist-npm-5.0.0-8732dd9f1c-eba5118240.zip +0 -0
  436. data/demo/.yarn/cache/yaml-npm-2.8.1-b364b3bec4-35b46150d4.zip +0 -0
  437. data/demo/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip +0 -0
  438. data/demo/.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip +0 -0
  439. data/demo/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip +0 -0
  440. data/demo/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip +0 -0
  441. data/demo/.yarnrc.yml +5 -0
  442. data/demo/Gemfile +24 -0
  443. data/demo/Gemfile.lock +293 -0
  444. data/demo/Makefile +8 -0
  445. data/demo/Procfile.dev +2 -0
  446. data/demo/Rakefile +6 -0
  447. data/demo/app/assets/images/.keep +0 -0
  448. data/demo/app/assets/stylesheets/application.css +23 -0
  449. data/demo/app/components/index.js +20 -0
  450. data/demo/app/controllers/application_controller.rb +2 -0
  451. data/demo/app/javascript/application.js +3 -0
  452. data/demo/app/javascript/controllers/application.js +9 -0
  453. data/demo/app/javascript/controllers/index.js +5 -0
  454. data/demo/app/models/current.rb +3 -0
  455. data/demo/app/views/layouts/application.html.erb +19 -0
  456. data/demo/app/views/layouts/backpack.html.erb +40 -0
  457. data/demo/bin/dev +2 -0
  458. data/demo/bin/rails +4 -0
  459. data/demo/bin/rake +4 -0
  460. data/demo/bin/setup +26 -0
  461. data/demo/bin/thrust +5 -0
  462. data/demo/config/application.rb +57 -0
  463. data/demo/config/boot.rb +3 -0
  464. data/demo/config/cable.yml +10 -0
  465. data/demo/config/ci.rb +14 -0
  466. data/demo/config/database.yml +41 -0
  467. data/demo/config/environment.rb +5 -0
  468. data/demo/config/environments/development.rb +48 -0
  469. data/demo/config/environments/production.rb +61 -0
  470. data/demo/config/environments/test.rb +42 -0
  471. data/demo/config/initializers/assets.rb +7 -0
  472. data/demo/config/initializers/content_security_policy.rb +29 -0
  473. data/demo/config/initializers/filter_parameter_logging.rb +8 -0
  474. data/demo/config/initializers/inflections.rb +16 -0
  475. data/demo/config/initializers/phlex.rb +9 -0
  476. data/demo/config/locales/en.yml +31 -0
  477. data/demo/config/puma.rb +39 -0
  478. data/demo/config/routes.rb +9 -0
  479. data/demo/config.ru +6 -0
  480. data/demo/db/seeds.rb +9 -0
  481. data/demo/esbuild.config.js +36 -0
  482. data/demo/log/.keep +0 -0
  483. data/demo/package.json +36 -0
  484. data/demo/postcss.config.js +56 -0
  485. data/demo/public/404.html +135 -0
  486. data/demo/public/500.html +135 -0
  487. data/demo/public/icon.png +0 -0
  488. data/demo/public/icon.svg +3 -0
  489. data/demo/public/robots.txt +1 -0
  490. data/demo/test/fixtures/files/.keep +0 -0
  491. data/demo/test/test_helper.rb +15 -0
  492. data/demo/tmp/.keep +0 -0
  493. data/demo/tmp/pids/.keep +0 -0
  494. data/demo/tmp/storage/.keep +0 -0
  495. data/demo/yarn.lock +4434 -0
  496. data/docs/getting_started.md.erb +10 -0
  497. data/docs/tokens-and-utilities.md.erb +199 -0
  498. data/figma/Backpack.json +1 -0
  499. data/lib/backpack/attributes.rb +43 -0
  500. data/lib/backpack/classes.rb +38 -0
  501. data/lib/backpack/components/badge/badge.css +51 -0
  502. data/lib/backpack/components/badge/badge.js +1 -0
  503. data/lib/backpack/components/badge.rb +25 -0
  504. data/lib/backpack/components/base.rb +15 -0
  505. data/lib/backpack/components/breadcrumb/breadcrumb.css +51 -0
  506. data/lib/backpack/components/breadcrumb/breadcrumb.js +1 -0
  507. data/lib/backpack/components/breadcrumb.rb +49 -0
  508. data/lib/backpack/components/button/button.css +215 -0
  509. data/lib/backpack/components/button/button.js +1 -0
  510. data/lib/backpack/components/button.rb +29 -0
  511. data/lib/backpack/components/favicon.rb +16 -0
  512. data/lib/backpack/components/heading/heading.css +27 -0
  513. data/lib/backpack/components/heading/heading.js +1 -0
  514. data/lib/backpack/components/heading.rb +16 -0
  515. data/lib/backpack/components/icon/icon.css +10 -0
  516. data/lib/backpack/components/icon/icon.js +1 -0
  517. data/lib/backpack/components/icon.rb +41 -0
  518. data/lib/backpack/components/icon_button/icon_button.css +183 -0
  519. data/lib/backpack/components/icon_button/icon_button.js +1 -0
  520. data/lib/backpack/components/icon_button.rb +32 -0
  521. data/lib/backpack/components/icon_sprite.rb +60 -0
  522. data/lib/backpack/components/quotation/quotation.css +39 -0
  523. data/lib/backpack/components/quotation/quotation.js +1 -0
  524. data/lib/backpack/components/quotation.rb +30 -0
  525. data/lib/backpack/components/rich_text/rich_text.css +0 -0
  526. data/lib/backpack/components/rich_text/rich_text.js +1 -0
  527. data/lib/backpack/components/rich_text.rb +9 -0
  528. data/lib/backpack/components/skip_links/skip_links.css +35 -0
  529. data/lib/backpack/components/skip_links/skip_links.js +1 -0
  530. data/lib/backpack/components/skip_links.rb +18 -0
  531. data/lib/backpack/components.rb +3 -0
  532. data/lib/backpack/identifier.rb +17 -0
  533. data/lib/backpack/stylesheets/application.css +12 -0
  534. data/lib/backpack/stylesheets/base/_base.css +59 -0
  535. data/lib/backpack/stylesheets/tokens/_colors.css +179 -0
  536. data/lib/backpack/stylesheets/tokens/_focus.css +4 -0
  537. data/lib/backpack/stylesheets/tokens/_layout.css +12 -0
  538. data/lib/backpack/stylesheets/tokens/_radius.css +11 -0
  539. data/lib/backpack/stylesheets/tokens/_spacing.css +14 -0
  540. data/lib/backpack/stylesheets/tokens/_typography.css +37 -0
  541. data/lib/backpack/stylesheets/utilities/_focus.css +14 -0
  542. data/lib/backpack/stylesheets/utilities/_sr-only.css +50 -0
  543. data/lib/backpack/tokens.rb +11 -0
  544. data/lib/backpack/version.rb +5 -0
  545. data/lib/backpack.rb +17 -101
  546. data/spec/components/badge_spec.rb +31 -0
  547. data/spec/components/breadcrumb_spec.rb +55 -0
  548. data/spec/components/button_spec.rb +95 -0
  549. data/spec/components/favicon_spec.rb +28 -0
  550. data/spec/components/heading_spec.rb +39 -0
  551. data/spec/components/icon_button_spec.rb +58 -0
  552. data/spec/components/icon_spec.rb +139 -0
  553. data/spec/components/icon_sprite_spec.rb +46 -0
  554. data/spec/components/previews/badge_preview/overview.html.erb +36 -0
  555. data/spec/components/previews/badge_preview.rb +12 -0
  556. data/spec/components/previews/breadcrumb_preview.rb +12 -0
  557. data/spec/components/previews/button_preview/overview.html.erb +47 -0
  558. data/spec/components/previews/button_preview.rb +22 -0
  559. data/spec/components/previews/heading_preview.rb +21 -0
  560. data/spec/components/previews/icon_button_preview/overview.html.erb +48 -0
  561. data/spec/components/previews/icon_button_preview.rb +14 -0
  562. data/spec/components/previews/icon_preview.rb +13 -0
  563. data/spec/components/previews/quotation_preview/overview.html.erb +24 -0
  564. data/spec/components/previews/quotation_preview.rb +14 -0
  565. data/spec/components/previews/rich_text_preview.rb +101 -0
  566. data/spec/components/previews/skip_links_preview.rb +7 -0
  567. data/spec/components/quotation_spec.rb +58 -0
  568. data/spec/components/rich_text_spec.rb +39 -0
  569. data/spec/components/skip_links_spec.rb +31 -0
  570. data/spec/fixtures/icons/arrow-right.svg +1 -0
  571. data/spec/fixtures/icons/close.svg +1 -0
  572. data/spec/fixtures/icons/user.svg +1 -0
  573. data/spec/spec_helper.rb +20 -0
  574. data/spec/support/components.rb +8 -0
  575. data/spec/support/matchers/eq_html.rb +47 -0
  576. data/spec/support/matchers/include_html.rb +47 -0
  577. data/spec/support/spec_helpers.rb +15 -0
  578. data/vendor/normalize.css +351 -0
  579. metadata +662 -98
  580. data/AUTHORS +0 -1
  581. data/COPYING +0 -340
  582. data/README +0 -65
  583. data/bin/backpack +0 -59
  584. data/doc/rdoc/created.rid +0 -1
  585. data/doc/rdoc/files/AUTHORS.html +0 -95
  586. data/doc/rdoc/files/COPYING.html +0 -519
  587. data/doc/rdoc/files/README.html +0 -175
  588. data/doc/rdoc/index.html +0 -10
  589. data/doc/rdoc/permalink.gif +0 -0
  590. data/doc/rdoc/rdoc-style.css +0 -106
  591. data/doc/rdoc/rubyfr.png +0 -0
  592. data/lib/template/INSTALL.rb +0 -5
  593. data/lib/template/LICENCE.rb +0 -21
  594. data/lib/template/README.rb +0 -26
  595. data/lib/template/generators/plugin_begin.rb +0 -8
  596. data/lib/template/generators/plugin_end.rb +0 -2
  597. data/lib/template/generators/plugin_generator.rb +0 -32
  598. data/lib/template/generators/template/template_controller.rb +0 -17
  599. data/lib/template/generators/template/template_view.rb +0 -12
  600. data/lib/template/init.rb +0 -2
  601. data/lib/template/init_controller.rb +0 -3
  602. data/lib/template/init_view.rb +0 -3
  603. data/lib/template/lib/plugin/controller_helpers.rb +0 -5
  604. data/lib/template/lib/plugin/view_helpers.rb +0 -5
  605. data/lib/template/tasks/tasks.rb +0 -27
  606. data/setup.rb +0 -1585
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Components::Quotation < Components::Base
4
+ prop :cite, _String?, predicate: :private
5
+ prop :size, _Union(1, 2, 3, 4, 5, 6), default: 2
6
+ prop :weight, Backpack::Tokens::Weight, default: :regular
7
+
8
+ def view_template
9
+ blockquote(**root_attributes) do
10
+ yield
11
+ if cite?
12
+ footer do
13
+ cite { @cite }
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def variant_props
22
+ %i[size]
23
+ end
24
+
25
+ def extra_root_attributes
26
+ return {} if @weight == self.class.literal_properties[:weight].default
27
+
28
+ { style: "--font-weight: var(--#{@weight})" }
29
+ end
30
+ end
File without changes
@@ -0,0 +1 @@
1
+ import "./rich_text.css";
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Components::RichText < Components::Base
4
+ prop :tag, _Union(:article, :aside, :div, :main, :section), default: :div
5
+
6
+ def view_template(&block)
7
+ tag(@tag, **root_attributes, &block)
8
+ end
9
+ end
@@ -0,0 +1,35 @@
1
+ .root {
2
+ left: 0;
3
+ list-style: none;
4
+ margin: 0;
5
+ padding: 0;
6
+ position: absolute;
7
+ top: 0;
8
+ width: 100%;
9
+ z-index: 9999;
10
+ }
11
+
12
+ .root > li {
13
+ position: absolute;
14
+ width: 100%;
15
+ }
16
+
17
+ .root a {
18
+ background-color: var(--accent-9);
19
+ color: var(--white);
20
+ font-size: var(--font-1);
21
+ font-weight: var(--bold);
22
+ left: -999rem;
23
+ padding: var(--space-2) var(--space-5);
24
+ position: absolute;
25
+ text-decoration: none;
26
+ }
27
+
28
+ .root a:focus {
29
+ left: 0;
30
+ }
31
+
32
+ .root a:focus,
33
+ .root a:focus-visible {
34
+ outline: none;
35
+ }
@@ -0,0 +1 @@
1
+ import "./skip_links.css";
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Components::SkipLinks < Components::Base
4
+ LINKS = {
5
+ content: "Aller au contenu",
6
+ navigation: "Aller à la navigation"
7
+ }.freeze
8
+
9
+ def view_template
10
+ ul(**root_attributes) do
11
+ LINKS.each do |target, label|
12
+ li do
13
+ a(href: "##{target}") { plain(label) }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ module Components
2
+ extend Phlex::Kit
3
+ end
@@ -0,0 +1,17 @@
1
+ # Adds an `identifier` class and instance method
2
+ # that returns a dasherized version of the component name.
3
+ module Backpack::Identifier
4
+ extend ActiveSupport::Concern
5
+
6
+ class_methods do
7
+ def identifier
8
+ (name.split("::") - %w[Components Backpack]).join("/")
9
+ end
10
+ end
11
+
12
+ def identifier
13
+ self.class.identifier.parameterize
14
+ end
15
+
16
+ delegate :identifier, to: :class
17
+ end
@@ -0,0 +1,12 @@
1
+ @import url("../../../vendor/normalize.css");
2
+ @import url("./base/_base.css");
3
+
4
+ @import url("./tokens/_colors.css");
5
+ @import url("./tokens/_focus.css");
6
+ @import url("./tokens/_layout.css");
7
+ @import url("./tokens/_radius.css");
8
+ @import url("./tokens/_spacing.css");
9
+ @import url("./tokens/_typography.css");
10
+
11
+ @import url("./utilities/_focus.css");
12
+ @import url("./utilities/_sr-only.css");
@@ -0,0 +1,59 @@
1
+ html {
2
+ box-sizing: border-box; /* natural box layout model to all elements */
3
+ font-size: 62.5%; /* for easy rem sizing: 1rem = 10px */
4
+ }
5
+
6
+ /* allow modules to change the box-sizing */
7
+ *,
8
+ *::before,
9
+ *::after {
10
+ box-sizing: inherit;
11
+ }
12
+
13
+ html,
14
+ body {
15
+ height: 100%;
16
+ }
17
+
18
+ body {
19
+ background-color: var(--white);
20
+ color: var(--black); /* TODO: define the base color */
21
+ font-family: var(--font-body);
22
+ font-size: var(--font-base);
23
+ }
24
+
25
+ body.no-scroll {
26
+ height: 100vh;
27
+ overflow: hidden;
28
+ }
29
+
30
+ /* Links */
31
+ a {
32
+ color: var(--accent-11);
33
+ }
34
+
35
+ a:hover,
36
+ a:visited:hover {
37
+ color: var(--accent-9);
38
+ }
39
+
40
+ a:visited {
41
+ color: var(--accent-12);
42
+ }
43
+
44
+ /* Sticky footer behavior (uncomment if needed) */
45
+ /*body {
46
+ display: flex;
47
+ flex-direction: column;
48
+ min-height: 100%;
49
+ }
50
+
51
+ .wrapper {
52
+ flex: 1 0 auto;
53
+ overflow-x: auto;
54
+ width: 100%;
55
+ }
56
+
57
+ footer {
58
+ flex-shrink: 0;
59
+ }*/
@@ -0,0 +1,179 @@
1
+ /* Color tokens */
2
+
3
+ :root {
4
+ --white: #fff;
5
+ --black: #000;
6
+ }
7
+
8
+ /* NOTE: Follow the 3 steps below */
9
+
10
+ /* STEP 1: Customize the Radix colors used in the project
11
+ Full list of available colors: https://www.radix-ui.com/colors
12
+ @import url("@radix-ui/colors/gray.css");
13
+ @import url("@radix-ui/colors/gray-alpha.css");
14
+ @import url("@radix-ui/colors/slate.css");
15
+ @import url("@radix-ui/colors/slate-alpha.css");
16
+ @import url("@radix-ui/colors/green.css");
17
+ @import url("@radix-ui/colors/green-alpha.css");
18
+ @import url("@radix-ui/colors/orange.css");
19
+ @import url("@radix-ui/colors/orange-alpha.css");
20
+ @import url("@radix-ui/colors/red.css");
21
+ @import url("@radix-ui/colors/red-alpha.css");
22
+ */
23
+
24
+ /* STEP 2: Add the custom palette
25
+ 1. Go to https://www.radix-ui.com/colors/custom
26
+ 2. Add the accent color
27
+ 3. Copy > Copy CSS code > Copy accent scale
28
+ 4. Paste it below (make sure the name doesn't clash with existing Radix colors)
29
+ 5. Do it again with another accent color, or with dark mode if needed
30
+ */
31
+
32
+ :root,
33
+ .light,
34
+ .light-theme {
35
+ --example-1: #fdfdfe;
36
+ --example-2: #f7f9ff;
37
+ --example-3: #edf2fe;
38
+ --example-4: #dfeaff;
39
+ --example-5: #d0dfff;
40
+ --example-6: #bdd1ff;
41
+ --example-7: #a7bff9;
42
+ --example-8: #88a5ef;
43
+ --example-9: #3e63dd;
44
+ --example-10: #3657c3;
45
+ --example-11: #3a5bc7;
46
+ --example-12: #1d2d5c;
47
+
48
+ --example-a1: #00008002;
49
+ --example-a2: #0040ff08;
50
+ --example-a3: #0047f112;
51
+ --example-a4: #0058ff20;
52
+ --example-a5: #0052ff2f;
53
+ --example-a6: #004eff42;
54
+ --example-a7: #0046ee58;
55
+ --example-a8: #003fdd77;
56
+ --example-a9: #0031d2c1;
57
+ --example-a10: #002ab3c9;
58
+ --example-a11: #002bb7c5;
59
+ --example-a12: #001247e2;
60
+
61
+ --example-contrast: #fff;
62
+ --example-surface: #f5f8ffcc;
63
+ --example-indicator: #3e63dd;
64
+ --example-track: #3e63dd;
65
+ }
66
+
67
+ @supports (color: color(display-p3 1 1 1)) {
68
+ @media (color-gamut: p3) {
69
+ :root,
70
+ .light,
71
+ .light-theme {
72
+ --example-1: oklch(99.4% 0.0015 267);
73
+ --example-2: oklch(98.3% 0.008 267);
74
+ --example-3: oklch(96.1% 0.0172 267);
75
+ --example-4: oklch(93.5% 0.0338 267);
76
+ --example-5: oklch(90.3% 0.0511 267);
77
+ --example-6: oklch(86.3% 0.0713 267);
78
+ --example-7: oklch(80.7% 0.0868 267);
79
+ --example-8: oklch(73% 0.1132 267);
80
+ --example-9: oklch(54.4% 0.191 267);
81
+ --example-10: oklch(49.7% 0.1727 267);
82
+ --example-11: oklch(51% 0.1727 267);
83
+ --example-12: oklch(31.3% 0.0855 267);
84
+
85
+ --example-a1: color(display-p3 0.0196 0.0196 0.5098 / 0.008);
86
+ --example-a2: color(display-p3 0.0196 0.2667 0.8784 / 0.032);
87
+ --example-a3: color(display-p3 0.0078 0.2392 0.8863 / 0.067);
88
+ --example-a4: color(display-p3 0.0039 0.3059 0.9373 / 0.118);
89
+ --example-a5: color(display-p3 0.0039 0.2784 0.9333 / 0.173);
90
+ --example-a6: color(display-p3 0.0039 0.2471 0.9373 / 0.244);
91
+ --example-a7: color(display-p3 0.0039 0.2196 0.8706 / 0.326);
92
+ --example-a8: color(display-p3 0.0039 0.1961 0.8078 / 0.444);
93
+ --example-a9: color(display-p3 0 0.1529 0.7725 / 0.726);
94
+ --example-a10: color(display-p3 0 0.1294 0.6549 / 0.761);
95
+ --example-a11: color(display-p3 0 0.1333 0.6667 / 0.746);
96
+ --example-a12: color(display-p3 0 0.0588 0.2549 / 0.875);
97
+
98
+ --example-contrast: #fff;
99
+ --example-surface: color(display-p3 0.9608 0.9725 1 / 0.8);
100
+ --example-indicator: oklch(54.4% 0.191 267);
101
+ --example-track: oklch(54.4% 0.191 267);
102
+ }
103
+ }
104
+ }
105
+
106
+ /* STEP 3: Define the accent color, reusing a Radix color or a custom palette color */
107
+ :root {
108
+ --accent-1: var(--example-1);
109
+ --accent-2: var(--example-2);
110
+ --accent-3: var(--example-3);
111
+ --accent-4: var(--example-4);
112
+ --accent-5: var(--example-5);
113
+ --accent-6: var(--example-6);
114
+ --accent-7: var(--example-7);
115
+ --accent-8: var(--example-8);
116
+ --accent-9: var(--example-9);
117
+ --accent-10: var(--example-10);
118
+ --accent-11: var(--example-11);
119
+ --accent-12: var(--example-12);
120
+
121
+ --accent-a1: var(--example-a1);
122
+ --accent-a2: var(--example-a2);
123
+ --accent-a3: var(--example-a3);
124
+ --accent-a4: var(--example-a4);
125
+ --accent-a5: var(--example-a5);
126
+ --accent-a6: var(--example-a6);
127
+ --accent-a7: var(--example-a7);
128
+ --accent-a8: var(--example-a8);
129
+ --accent-a9: var(--example-a9);
130
+ --accent-a10: var(--example-a10);
131
+ --accent-a11: var(--example-a11);
132
+ --accent-a12: var(--example-a12);
133
+ }
134
+
135
+ /* STEP 4: Define the accent color overrides */
136
+ [data-accent-color="green"] {
137
+ --accent-1: var(--green-1);
138
+ --accent-2: var(--green-2);
139
+ --accent-3: var(--green-3);
140
+ --accent-4: var(--green-4);
141
+ --accent-5: var(--green-5);
142
+ --accent-6: var(--green-6);
143
+ --accent-7: var(--green-7);
144
+ --accent-8: var(--green-8);
145
+ --accent-9: var(--green-9);
146
+ --accent-10: var(--green-10);
147
+ --accent-11: var(--green-11);
148
+ --accent-12: var(--green-12);
149
+ }
150
+
151
+ [data-accent-color="orange"] {
152
+ --accent-1: var(--orange-1);
153
+ --accent-2: var(--orange-2);
154
+ --accent-3: var(--orange-3);
155
+ --accent-4: var(--orange-4);
156
+ --accent-5: var(--orange-5);
157
+ --accent-6: var(--orange-6);
158
+ --accent-7: var(--orange-7);
159
+ --accent-8: var(--orange-8);
160
+ --accent-9: var(--orange-9);
161
+ --accent-10: var(--orange-10);
162
+ --accent-11: var(--orange-11);
163
+ --accent-12: var(--orange-12);
164
+ }
165
+
166
+ [data-accent-color="red"] {
167
+ --accent-1: var(--red-1);
168
+ --accent-2: var(--red-2);
169
+ --accent-3: var(--red-3);
170
+ --accent-4: var(--red-4);
171
+ --accent-5: var(--red-5);
172
+ --accent-6: var(--red-6);
173
+ --accent-7: var(--red-7);
174
+ --accent-8: var(--red-8);
175
+ --accent-9: var(--red-9);
176
+ --accent-10: var(--red-10);
177
+ --accent-11: var(--red-11);
178
+ --accent-12: var(--red-12);
179
+ }
@@ -0,0 +1,4 @@
1
+ :root {
2
+ --outline-focus: 0.2rem solid var(--accent-9);
3
+ --outline-offset-focus: 0.2rem;
4
+ }
@@ -0,0 +1,12 @@
1
+ :root {
2
+ /* media queries */
3
+ --breakpoint-xs: 0px; /* imported from Figma on 2025-11-13 */
4
+ --breakpoint-sm: 576px; /* imported from Figma on 2025-11-13 */
5
+ --breakpoint-md: 768px; /* imported from Figma on 2025-11-13 */
6
+ --breakpoint-lg: 992px;
7
+ --breakpoint-xl: 1248px;
8
+ --breakpoint-xxl: 1640px;
9
+
10
+ /* container */
11
+ --container-width: 128rem; /* imported from Figma on 2025-11-13 */
12
+ }
@@ -0,0 +1,11 @@
1
+ :root {
2
+ --radius-1: 0.2rem; /* imported from Figma on 2025-11-13 */
3
+ --radius-2: 0.4rem; /* imported from Figma on 2025-11-13 */
4
+ --radius-3: 0.6rem; /* imported from Figma on 2025-11-13 */
5
+ --radius-4: 0.8rem; /* imported from Figma on 2025-11-13 */
6
+ --radius-5: 1.2rem; /* imported from Figma on 2025-11-13 */
7
+ --radius-6: 1.6rem; /* imported from Figma on 2025-11-13 */
8
+ --radius-7: 2.4rem; /* imported from Figma on 2025-11-13 */
9
+
10
+ --radius-full: 999.9rem; /* imported from Figma on 2025-11-13 */
11
+ }
@@ -0,0 +1,14 @@
1
+ :root {
2
+ --space-base: 0.2rem; /* imported from Figma on 2025-11-13 */
3
+
4
+ --space-1: var(--space-base); /* imported from Figma on 2025-11-13 */
5
+ --space-2: 0.4rem; /* imported from Figma on 2025-11-13 */
6
+ --space-3: 0.6rem; /* imported from Figma on 2025-11-13 */
7
+ --space-4: 0.8rem; /* imported from Figma on 2025-11-13 */
8
+ --space-5: 1.2rem; /* imported from Figma on 2025-11-13 */
9
+ --space-6: 1.6rem; /* imported from Figma on 2025-11-13 */
10
+ --space-7: 2.4rem; /* imported from Figma on 2025-11-13 */
11
+ --space-8: 3.2rem; /* imported from Figma on 2025-11-13 */
12
+ --space-9: 4.8rem; /* imported from Figma on 2025-11-13 */
13
+ --space-10: 6.4rem; /* imported from Figma on 2025-11-13 */
14
+ }
@@ -0,0 +1,37 @@
1
+ :root {
2
+ /* font-family */
3
+ --font-system: system-ui, "Arial", "Helvetica", sans-serif;
4
+ --font-body: Helvetica Neue; /* imported from Figma on 2025-11-13 */
5
+ --font-headings: Tahoma; /* imported from Figma on 2025-11-13 */
6
+
7
+ /* font-weight */
8
+ --light: 300; /* imported from Figma on 2025-11-13 */
9
+ --regular: 400; /* imported from Figma on 2025-11-13 */
10
+ --medium: 500; /* imported from Figma on 2025-11-13 */
11
+ --semibold: 600; /* imported from Figma on 2025-11-13 */
12
+ --bold: 700; /* imported from Figma on 2025-11-13 */
13
+
14
+ /* font-size */
15
+ --font-base: 1.6rem; /* imported from Figma on 2025-11-13 */
16
+
17
+ --font-1: 1.2rem; /* imported from Figma on 2025-11-13 */
18
+ --font-2: 1.4rem; /* imported from Figma on 2025-11-13 */
19
+ --font-3: var(--font-base); /* imported from Figma on 2025-11-13 */
20
+ --font-4: 1.8rem; /* imported from Figma on 2025-11-13 */
21
+ --font-5: 2.2rem; /* imported from Figma on 2025-11-13 */
22
+ --font-6: 2.8rem; /* imported from Figma on 2025-11-13 */
23
+ --font-7: 3.2rem; /* imported from Figma on 2025-11-13 */
24
+ --font-8: 4.2rem; /* imported from Figma on 2025-11-13 */
25
+ --font-9: 5.8rem; /* imported from Figma on 2025-11-13 */
26
+
27
+ /* line-height */
28
+ --height-1: 1.6rem; /* imported from Figma on 2025-11-13 */
29
+ --height-2: 2rem; /* imported from Figma on 2025-11-13 */
30
+ --height-3: 2.4rem; /* imported from Figma on 2025-11-13 */
31
+ --height-4: 2.6rem; /* imported from Figma on 2025-11-13 */
32
+ --height-5: 2.8rem; /* imported from Figma on 2025-11-13 */
33
+ --height-6: 3.4rem; /* imported from Figma on 2025-11-13 */
34
+ --height-7: 3.8rem; /* imported from Figma on 2025-11-13 */
35
+ --height-8: 4.8rem; /* imported from Figma on 2025-11-13 */
36
+ --height-9: 6.4rem; /* imported from Figma on 2025-11-13 */
37
+ }
@@ -0,0 +1,14 @@
1
+ /* Focus Visible for all focusable elements */
2
+ button:-moz-focusring,
3
+ [type="button"]:-moz-focusring,
4
+ [type="reset"]:-moz-focusring,
5
+ [type="submit"]:-moz-focusring,
6
+ [role="button"]:focus-visible,
7
+ button:focus-visible,
8
+ a[href]:focus-visible,
9
+ input:focus-visible,
10
+ textarea:focus-visible,
11
+ select:focus-visible {
12
+ outline: var(--outline-focus);
13
+ outline-offset: var(--outline-offset-focus);
14
+ }
@@ -0,0 +1,50 @@
1
+ /*
2
+ Source: https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034
3
+ Improved screen reader only CSS class@note Based on Yahoo!'s technique
4
+ @see https://www.cssmojo.com/hide-content-from-sighted-users/
5
+
6
+ * 1.
7
+ @note Use to only display content when it's focused, or one of its child elements is focused@see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1@note
8
+ Based on a HTML5 Boilerplate technique, included in Bootstrap
9
+
10
+ * 2.
11
+ @note `clip-path` shortest syntax@see https://twitter.com/ryuran78/status/778943389819604992
12
+
13
+ * 3.
14
+ @note preventing text to be condensed@see https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe@note
15
+ Drupal 8 goes with word-wrap: normal instead@see https://www.drupal.org/node/2045151@see http://cgit.drupalcode.org/drupal/commit/?id=5b847ea
16
+
17
+ * 4.
18
+ @note !important is important@note Obviously you wanna hide something
19
+ @see https://csswizardry.com/2016/05/the-importance-of-important/
20
+ */
21
+
22
+ .sr-only,
23
+ .sr-only-focusable:not(:focus, :focus-within) {
24
+ border: 0 !important;
25
+ clip-path: inset(50%) !important; /* 2 */
26
+ height: 1px !important;
27
+ margin: -1px !important;
28
+ overflow: hidden !important;
29
+ padding: 0 !important;
30
+ width: 1px !important;
31
+ white-space: nowrap !important; /* 3 */
32
+ }
33
+
34
+ /*
35
+ Prevent visually hidden caption from breaking table's collapsing borders
36
+ @see https://github.com/twbs/bootstrap/pull/37533
37
+ */
38
+ .sr-only:not(caption),
39
+ .sr-only-focusable:not(caption):not(:focus, :focus-within) {
40
+ position: absolute !important;
41
+ }
42
+
43
+ /*
44
+ Prevent overflowing children from being focusable.
45
+ @see https://github.com/twbs/bootstrap/pull/41286
46
+ */
47
+ .sr-only *,
48
+ .sr-only-focusable:not(:focus, :focus-within) * {
49
+ overflow: hidden !important;
50
+ }
@@ -0,0 +1,11 @@
1
+ module Backpack
2
+ module Tokens
3
+ extend Literal::Properties
4
+
5
+ Color = _Union(:green, :orange, :red)
6
+ OptionalColor = _Union(nil, Color)
7
+ Variant = _Union(:solid, :soft, :surface, :outline, :ghost)
8
+ Size = _Union(1, 2, 3)
9
+ Weight = _Union(:light, :regular, :medium, :semibold, :bold)
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Backpack
4
+ VERSION = "0.4.1"
5
+ end
data/lib/backpack.rb CHANGED
@@ -1,103 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'backpack/version'
1
4
  require 'active_support'
2
- require 'fileutils'
3
- require 'bivouac/template'
5
+ require 'date'
6
+ require 'literal'
7
+ require 'phlex-rails'
8
+ require 'rails'
9
+
10
+ require 'backpack/attributes'
11
+ require 'backpack/classes'
12
+ require 'backpack/identifier'
13
+ require 'backpack/tokens'
14
+ require 'backpack/components'
4
15
 
5
- class Backpack
6
- include Bivouac::Template
7
-
8
- def initialize( o, n )
9
- @plugin_options = o
10
- @plugin_name = n
11
- @plugin_path = n.underscore.gsub( /[^a-zA-Z0-9]/, "_" )
12
- @plugin_module_name = @plugin_path.classify
13
- end
14
-
15
- def run( )
16
- makeGeneralStructure( )
17
- makeGenerators( )
18
- makeHelpersLib( )
19
- end
20
-
21
- private
22
- def makeGeneralStructure
23
- # Create Plugin Directory
24
- createDir( @plugin_path )
25
- createDir( "#{@plugin_path}/copy_on_install" )
26
- createDir( "#{@plugin_path}/copy_on_install/public" )
27
- createDir( "#{@plugin_path}/copy_on_install/public/images" )
28
- createDir( "#{@plugin_path}/copy_on_install/public/javascripts" )
29
- createDir( "#{@plugin_path}/copy_on_install/public/stylesheets" )
30
- createDir( "#{@plugin_path}/tasks" )
31
-
32
- # Create README file
33
- createFile( "#{@plugin_path}/README" ) { |io|
34
- io.puts template( "README", binding, File.dirname(__FILE__) )
35
- }
36
-
37
- # Create INSTALL file
38
- createFile( "#{@plugin_path}/INSTALL" ) { |io|
39
- io.puts template( "INSTALL", binding, File.dirname(__FILE__) )
40
- }
41
-
42
- # Create README file
43
- createFile( "#{@plugin_path}/LICENCE" ) { |io|
44
- io.puts template( "LICENCE", binding, File.dirname(__FILE__) )
45
- }
46
-
47
- # Create rake tasks file
48
- createFile( "#{@plugin_path}/tasks/#{@plugin_path}.rake" ) { |io|
49
- io.puts template( "tasks/tasks", binding, File.dirname(__FILE__) )
50
- }
51
- end
52
-
53
- def makeGenerators
54
- return unless @plugin_options.has_key?( :generators )
55
-
56
- createDir( "#{@plugin_path}/generators" )
57
- @plugin_generators_list = @plugin_options[:generators].map{|h| ":"+h[0]}.join( ", " )
58
- createFile( "#{@plugin_path}/generators/#{@plugin_path}.rb" ) { |io|
59
- io.puts template( "generators/plugin_begin", binding, File.dirname(__FILE__) )
60
-
61
- @plugin_options[:generators].each do |g|
62
- @generator_name, @generator_type = g
63
- io.puts template( "generators/plugin_generator", binding, File.dirname(__FILE__) )
64
- end
65
-
66
- io.puts template( "generators/plugin_end", binding, File.dirname(__FILE__) )
67
- }
68
-
69
- createDir( "#{@plugin_path}/generators/template" )
70
- @plugin_options[:generators].each do |g|
71
- @generator_name, @generator_type = g
72
- @generator_type_class = @generator_type.classify.pluralize
73
- createFile( "#{@plugin_path}/generators/template/#{@generator_name}_#{@generator_type}.rb" ) { |io|
74
- io.puts template( "generators/template/template_#{@generator_type}", binding, File.dirname(__FILE__) )
75
- }
76
- end
77
- end
78
-
79
- def makeHelpersLib
80
- unless @plugin_options.has_key?( :noch ) and @plugin_options.has_key?( :novh )
81
- createDir( "#{@plugin_path}/lib" )
82
- createDir( "#{@plugin_path}/lib/#{@plugin_path}" )
83
-
84
- createFile( "#{@plugin_path}/init.rb" ) { |io|
85
- io.puts template( "init", binding, File.dirname(__FILE__) )
86
- io.puts template( "init_view", binding, File.dirname(__FILE__) ) unless @plugin_options.has_key?( :novh )
87
- io.puts template( "init_controller", binding, File.dirname(__FILE__) ) unless @plugin_options.has_key?( :noch )
88
- }
89
-
90
- unless @plugin_options.has_key?( :novh )
91
- createFile( "#{@plugin_path}/lib/#{@plugin_path}/view_helpers.rb" ) { |io|
92
- io.puts template( "lib/plugin/view_helpers", binding, File.dirname(__FILE__) )
93
- }
94
- end
95
-
96
- unless @plugin_options.has_key?( :noch )
97
- createFile( "#{@plugin_path}/lib/#{@plugin_path}/controller_helpers.rb" ) { |io|
98
- io.puts template( "lib/plugin/controller_helpers", binding, File.dirname(__FILE__) )
99
- }
100
- end
101
- end
102
- end
103
- end
16
+ module Backpack
17
+ class Error < StandardError; end
18
+ # Your code goes here...
19
+ end