@birdapi/velinstyle 0.7.0 → 0.9.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.
- package/README.de.md +135 -224
- package/README.md +134 -223
- package/cli/blueprint.js +8 -0
- package/cli/blueprints/bottom-nav-mobile.html +17 -0
- package/cli/blueprints/cookie-consent.html +9 -0
- package/cli/blueprints/empty-state.html +5 -0
- package/cli/blueprints/filter-bar.html +15 -0
- package/cli/blueprints/notification-center.html +13 -0
- package/cli/blueprints/onboarding.html +23 -0
- package/cli/blueprints/pricing-table.html +20 -0
- package/cli/blueprints/settings-panel.html +20 -0
- package/cli/cli-manifest.json +97 -0
- package/cli/docgen/extract-a11y.js +89 -0
- package/cli/docgen/extract-attributes.js +95 -0
- package/cli/docgen/extract-cli.js +50 -0
- package/cli/docgen/extract-components.js +175 -0
- package/cli/docgen/extract-meta.js +32 -0
- package/cli/docgen/extract-rules.js +76 -0
- package/cli/docgen/extract-tokens.js +79 -0
- package/cli/docgen/extract-utilities.js +75 -0
- package/cli/docgen/markdown.js +43 -0
- package/cli/docs-generate.js +196 -0
- package/cli/index.js +236 -5
- package/cli/layout-audit.js +325 -0
- package/cli/meta.js +97 -0
- package/cli/perf-audit.js +174 -0
- package/cli/pii-scanner.js +134 -0
- package/cli/scaffold-recipes.json +70 -0
- package/cli/scaffold.js +155 -0
- package/cli/scanner-rules-data.js +62 -0
- package/cli/scanner.js +136 -1
- package/cli/search-index.js +163 -0
- package/cli/tokens-build.js +21 -1
- package/cli/tokens-validate.js +69 -0
- package/components/a11y-entry.js +42 -0
- package/components/a11y-utils.js +71 -0
- package/components/focus-manager.js +45 -8
- package/components/index.js +40 -11
- package/components/runtime/component-loaders.js +43 -0
- package/components/runtime/index.js +77 -0
- package/components/runtime-entry.js +10 -0
- package/components/sanitize.js +135 -28
- package/components/shadow-a11y-styles.js +18 -0
- package/components/velin-accordion.js +12 -0
- package/components/velin-announcer.js +35 -0
- package/components/velin-bottom-nav.js +108 -0
- package/components/velin-carousel.js +2 -2
- package/components/velin-code-block.js +142 -0
- package/components/velin-combobox.js +149 -0
- package/components/velin-command.js +142 -0
- package/components/velin-copy.js +18 -5
- package/components/velin-counter.js +155 -0
- package/components/velin-dialog.js +9 -1
- package/components/velin-email.js +94 -0
- package/components/velin-flip.js +220 -0
- package/components/velin-icon.js +99 -22
- package/components/velin-lightbox.js +8 -3
- package/components/velin-live-dot.js +90 -0
- package/components/velin-menubar.js +83 -0
- package/components/velin-modal.js +6 -3
- package/components/velin-popover.js +34 -2
- package/components/velin-rating.js +91 -0
- package/components/velin-reveal.js +22 -0
- package/components/velin-scroll-top.js +1 -1
- package/components/velin-search.js +267 -0
- package/components/velin-secure-field.js +99 -0
- package/components/velin-segmented-control.js +108 -0
- package/components/velin-sheet.js +107 -0
- package/components/velin-sparkline.js +227 -0
- package/components/{velin-stepper-wc.js → velin-stepper.js} +37 -8
- package/components/velin-theme-toggle.js +284 -60
- package/components/velin-toast.js +4 -0
- package/components/{velin-tooltip-wc.js → velin-tooltip.js} +22 -3
- package/core/a11y/component-contracts.json +221 -0
- package/core/attributes/index.js +6 -0
- package/core/attributes/registry.js +268 -0
- package/core/highlight/highlight.js +114 -0
- package/core/highlight/index.js +29 -0
- package/core/highlight/languages/_utils.js +52 -0
- package/core/highlight/languages/blade.js +16 -0
- package/core/highlight/languages/css.js +26 -0
- package/core/highlight/languages/html.js +17 -0
- package/core/highlight/languages/js.js +58 -0
- package/core/highlight/languages/json.js +14 -0
- package/core/highlight/languages/markdown.js +16 -0
- package/core/highlight/languages/php.js +39 -0
- package/core/highlight/languages/plain.js +7 -0
- package/core/highlight/languages/shell.js +33 -0
- package/core/highlight/languages/sql.js +20 -0
- package/core/highlight/languages/typescript.js +28 -0
- package/core/highlight/observe.js +53 -0
- package/core/highlight/registry.js +107 -0
- package/core/highlight/render.js +35 -0
- package/core/highlight/types.js +28 -0
- package/core/meta/build.js +293 -0
- package/core/meta/index.js +17 -0
- package/core/meta/schema.js +49 -0
- package/core/motion/effects.js +54 -0
- package/core/motion/index.js +76 -0
- package/core/motion/scheduler.js +72 -0
- package/core/motion/scroll.js +32 -0
- package/core/motion/stagger.js +24 -0
- package/core/search/docs-url.js +96 -0
- package/core/search/engine.js +139 -0
- package/core/search/highlight.js +48 -0
- package/core/search/index.js +126 -0
- package/core/search/providers.js +36 -0
- package/core/search/types.js +61 -0
- package/core/search/worker-client.js +56 -0
- package/core/search/worker.js +20 -0
- package/dist/chunks/a11y-utils-IRC7LOPF.js +16 -0
- package/dist/chunks/attributes-3BZLI7XF.js +364 -0
- package/dist/chunks/attributes-4N5JP4CG.js +364 -0
- package/dist/chunks/attributes-5Q2WXGRC.js +374 -0
- package/dist/chunks/attributes-AIR7SVLK.js +364 -0
- package/dist/chunks/attributes-BGRN5XZO.js +364 -0
- package/dist/chunks/attributes-BVSQAYLR.js +364 -0
- package/dist/chunks/attributes-CDYFUY7Y.js +364 -0
- package/dist/chunks/attributes-JMYJZBPE.js +364 -0
- package/dist/chunks/attributes-R5JY3X4O.js +374 -0
- package/dist/chunks/attributes-STYCS3O5.js +391 -0
- package/dist/chunks/attributes-TNSPQTHX.js +374 -0
- package/dist/chunks/attributes-TPANLMLF.js +391 -0
- package/dist/chunks/blade-LIQLVKZQ.js +19 -0
- package/dist/chunks/browser-MRKYZPEH.js +1149 -0
- package/dist/chunks/chunk-2354NEBP.js +109 -0
- package/dist/chunks/chunk-2VNA7G7S.js +109 -0
- package/dist/chunks/chunk-42VVPW6N.js +132 -0
- package/dist/chunks/chunk-7FFAMRFV.js +44 -0
- package/dist/chunks/chunk-7MCGPHVC.js +69 -0
- package/dist/chunks/chunk-AQLRJSGG.js +109 -0
- package/dist/chunks/chunk-EWPSDMQT.js +109 -0
- package/dist/chunks/chunk-F7OLHTGX.js +22 -0
- package/dist/chunks/chunk-J472ERN2.js +242 -0
- package/dist/chunks/chunk-LA7264K4.js +85 -0
- package/dist/chunks/chunk-M5CHQVP6.js +61 -0
- package/dist/chunks/chunk-MKZP2TBH.js +89 -0
- package/dist/chunks/chunk-QTJJ3DPO.js +109 -0
- package/dist/chunks/chunk-RDE3QE7Z.js +89 -0
- package/dist/chunks/chunk-RSMRR27R.js +109 -0
- package/dist/chunks/chunk-RZQVWFHW.js +109 -0
- package/dist/chunks/chunk-SRL6EWHP.js +109 -0
- package/dist/chunks/chunk-U4XHMZ7D.js +109 -0
- package/dist/chunks/chunk-V5YIUA6G.js +109 -0
- package/dist/chunks/chunk-XIET2VSZ.js +109 -0
- package/dist/chunks/chunk-XYLJ2GCB.js +205 -0
- package/dist/chunks/chunk-Z4JYQ2XX.js +51 -0
- package/dist/chunks/chunk-ZPSPKUYD.js +109 -0
- package/dist/chunks/css-MQ5YU77P.js +28 -0
- package/dist/chunks/highlight-GJHHV4KM.js +37 -0
- package/dist/chunks/highlight-XTHRKBA3.js +37 -0
- package/dist/chunks/html-ZODC4DLQ.js +20 -0
- package/dist/chunks/js-MNSNYTJU.js +7 -0
- package/dist/chunks/json-VEM2HFH3.js +17 -0
- package/dist/chunks/markdown-E7OPGS3S.js +19 -0
- package/dist/chunks/php-MLL7T3LT.js +41 -0
- package/dist/chunks/plain-LJJDC5TN.js +8 -0
- package/dist/chunks/runtime-entry.js +14 -0
- package/dist/chunks/shell-QTRK4U4E.js +35 -0
- package/dist/chunks/sql-PPWLHGJ2.js +23 -0
- package/dist/chunks/typescript-JT3CCYWL.js +30 -0
- package/dist/chunks/velin-accordion-FBIPAEXG.js +105 -0
- package/dist/chunks/velin-accordion-QAQO7BI7.js +117 -0
- package/dist/chunks/velin-announcer-PVTXXCWR.js +33 -0
- package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +86 -0
- package/dist/chunks/velin-bottom-nav-7GEMPIM6.js +86 -0
- package/dist/chunks/velin-bottom-nav-CTU6FFZV.js +101 -0
- package/dist/chunks/velin-bottom-nav-N3DFQR66.js +86 -0
- package/dist/chunks/velin-carousel-Y5VCOABZ.js +213 -0
- package/dist/chunks/velin-carousel-ZTBANFQQ.js +213 -0
- package/dist/chunks/velin-code-block-ASUBTAQV.js +119 -0
- package/dist/chunks/velin-code-block-CIAURDRJ.js +132 -0
- package/dist/chunks/velin-code-block-TSUKPY4C.js +123 -0
- package/dist/chunks/velin-code-block-Y6CM726Q.js +119 -0
- package/dist/chunks/velin-collapse-5XYBUIID.js +80 -0
- package/dist/chunks/velin-combobox-2KDTCQ7N.js +155 -0
- package/dist/chunks/velin-combobox-NXS4QB4R.js +155 -0
- package/dist/chunks/velin-combobox-UGA56HP3.js +155 -0
- package/dist/chunks/velin-command-CKDNO4BW.js +148 -0
- package/dist/chunks/velin-command-M7RNHUPR.js +136 -0
- package/dist/chunks/velin-command-ONKO2A3J.js +136 -0
- package/dist/chunks/velin-command-TMLSRGIU.js +136 -0
- package/dist/chunks/velin-copy-G2TZ5YBB.js +81 -0
- package/dist/chunks/velin-copy-NYDBOKXT.js +81 -0
- package/dist/chunks/velin-copy-T5KDTDXP.js +81 -0
- package/dist/chunks/velin-countdown-4ZVDGK4R.js +101 -0
- package/dist/chunks/velin-countdown-5XSTN3BH.js +101 -0
- package/dist/chunks/velin-countdown-7AIY66CU.js +101 -0
- package/dist/chunks/velin-counter-ISCTEAHI.js +118 -0
- package/dist/chunks/velin-counter-L5FYJF7A.js +121 -0
- package/dist/chunks/velin-dialog-D2GUHSCD.js +144 -0
- package/dist/chunks/velin-dialog-ELFOZIXZ.js +152 -0
- package/dist/chunks/velin-dialog-GTTZI564.js +147 -0
- package/dist/chunks/velin-dialog-IJLFDXAJ.js +144 -0
- package/dist/chunks/velin-dialog-TNS3WXMB.js +144 -0
- package/dist/chunks/velin-drawer-BE6TYN3H.js +130 -0
- package/dist/chunks/velin-drawer-DLL2GLT6.js +130 -0
- package/dist/chunks/velin-drawer-MJS6WCF7.js +130 -0
- package/dist/chunks/velin-dropdown-PLUIFA5M.js +172 -0
- package/dist/chunks/velin-email-N5B5ZYTE.js +90 -0
- package/dist/chunks/velin-email-NTM6DG3V.js +90 -0
- package/dist/chunks/velin-email-RBX6ZR4S.js +90 -0
- package/dist/chunks/velin-haptic-4QQTM3RK.js +50 -0
- package/dist/chunks/velin-icon-7M76DOPB.js +164 -0
- package/dist/chunks/velin-icon-KZO3IEHG.js +164 -0
- package/dist/chunks/velin-icon-WTFPG2DD.js +191 -0
- package/dist/chunks/velin-icon-ZTSKUOVN.js +193 -0
- package/dist/chunks/velin-lightbox-6E7CAATP.js +149 -0
- package/dist/chunks/velin-lightbox-I75U6JF4.js +140 -0
- package/dist/chunks/velin-lightbox-QOTB4PRL.js +140 -0
- package/dist/chunks/velin-lightbox-UCD6N7HF.js +140 -0
- package/dist/chunks/velin-live-dot-RJHX2DGY.js +74 -0
- package/dist/chunks/velin-live-dot-XHUZCIDZ.js +67 -0
- package/dist/chunks/velin-menubar-I426AED2.js +86 -0
- package/dist/chunks/velin-menubar-J66JXRWW.js +86 -0
- package/dist/chunks/velin-menubar-SFEXJE56.js +86 -0
- package/dist/chunks/velin-modal-2HOBXE6F.js +176 -0
- package/dist/chunks/velin-modal-5HYNNNUI.js +176 -0
- package/dist/chunks/velin-modal-AEOTZ67O.js +177 -0
- package/dist/chunks/velin-modal-GLI2XZZB.js +176 -0
- package/dist/chunks/velin-persist-DFPL3QP4.js +110 -0
- package/dist/chunks/velin-popover-EXINRIGJ.js +145 -0
- package/dist/chunks/velin-popover-HQW6Q2Y6.js +172 -0
- package/dist/chunks/velin-popover-OXX7MRZ6.js +145 -0
- package/dist/chunks/velin-popover-T72HK3DF.js +151 -0
- package/dist/chunks/velin-popover-YKCCROJG.js +145 -0
- package/dist/chunks/velin-progress-ring-E4YRLZHH.js +66 -0
- package/dist/chunks/velin-rating-6CDBI6DG.js +91 -0
- package/dist/chunks/velin-rating-N4DI2XNL.js +91 -0
- package/dist/chunks/velin-rating-XRQJV4LO.js +91 -0
- package/dist/chunks/velin-scroll-top-F2FCZNYD.js +58 -0
- package/dist/chunks/velin-scroll-top-OHYVVHHY.js +58 -0
- package/dist/chunks/velin-scrollspy-OKCT4FDV.js +50 -0
- package/dist/chunks/velin-search-2XRQFBCS.js +556 -0
- package/dist/chunks/velin-search-4YHJWYSS.js +556 -0
- package/dist/chunks/velin-search-7B4KJ6TX.js +557 -0
- package/dist/chunks/velin-search-LWHY23Q5.js +474 -0
- package/dist/chunks/velin-secure-field-6PV7RZDJ.js +95 -0
- package/dist/chunks/velin-secure-field-H7FSBUJW.js +95 -0
- package/dist/chunks/velin-secure-field-OFNAXCDP.js +95 -0
- package/dist/chunks/velin-segmented-control-EKL4E3BL.js +109 -0
- package/dist/chunks/velin-segmented-control-GYD5BIXQ.js +109 -0
- package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +109 -0
- package/dist/chunks/velin-sheet-3OGI4HD7.js +119 -0
- package/dist/chunks/velin-sheet-OUK6572T.js +119 -0
- package/dist/chunks/velin-sheet-R2Y67X6H.js +119 -0
- package/dist/chunks/velin-sparkline-GVEANJVW.js +184 -0
- package/dist/chunks/velin-sparkline-KDA3GQAN.js +162 -0
- package/dist/chunks/velin-sparkline-XVTFC6GE.js +181 -0
- package/dist/chunks/velin-stepper-2ZIHLKGM.js +141 -0
- package/dist/chunks/velin-stepper-7ECRUYHD.js +148 -0
- package/dist/chunks/velin-stepper-FYEUEWE6.js +141 -0
- package/dist/chunks/velin-stepper-X54WGHDG.js +141 -0
- package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +133 -0
- package/dist/chunks/velin-tabs-5UQ5ZVMV.js +138 -0
- package/dist/chunks/velin-theme-toggle-32J2CBNC.js +291 -0
- package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +285 -0
- package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +285 -0
- package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +291 -0
- package/dist/chunks/velin-toast-OMMOA2DK.js +109 -0
- package/dist/chunks/velin-toast-RCZ4CSUC.js +109 -0
- package/dist/chunks/velin-toast-RSF2IHT3.js +113 -0
- package/dist/chunks/velin-toast-WEUBTJG6.js +109 -0
- package/dist/chunks/velin-tooltip-664IOHZA.js +112 -0
- package/dist/chunks/velin-tooltip-BDHGRTQB.js +112 -0
- package/dist/chunks/velin-tooltip-HVUOKNVX.js +112 -0
- package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +103 -0
- package/dist/chunks/worker-client-R6DBYPFT.js +46 -0
- package/dist/llms.test.txt +40 -0
- package/dist/llms.txt +40 -0
- package/dist/search-index.json +1773 -0
- package/dist/search-index.test.json +1773 -0
- package/dist/themes/brutalist.min.css +1 -1
- package/dist/themes/midnight.min.css +1 -1
- package/dist/themes/pastel.min.css +1 -1
- package/dist/themes/retro.min.css +1 -1
- package/dist/themes/sunset.min.css +1 -1
- package/dist/velin-agent.json +684 -0
- package/dist/velin-agent.test.json +684 -0
- package/dist/velinstyle-components.iife.js +7959 -2199
- package/dist/velinstyle-components.js +7982 -2174
- package/dist/velinstyle-components.min.js +521 -90
- package/dist/velinstyle.css +1290 -282
- package/dist/velinstyle.d.ts +54 -0
- package/dist/velinstyle.min.css +1 -1
- package/examples/search-index.schema.json +33 -0
- package/package.json +57 -10
- package/src/a11y/authentication.css +37 -0
- package/src/a11y/consistent-help.css +22 -0
- package/src/a11y/dragging-alternatives.css +30 -0
- package/src/a11y/focus-appearance.css +20 -0
- package/src/a11y/high-contrast-aaa.css +16 -26
- package/src/a11y/security.css +18 -0
- package/src/a11y/skip-link.css +3 -1
- package/src/a11y/sr-only.css +1 -1
- package/src/base/reset.css +0 -25
- package/src/base/wc-placeholder.css +102 -0
- package/src/components/attributes.css +42 -0
- package/src/components/highlight.css +182 -0
- package/src/components/input-group.css +1 -2
- package/src/components/nav.css +151 -151
- package/src/components/search.css +95 -0
- package/src/components/stepper.css +2 -4
- package/src/components/timeline.css +1 -2
- package/src/components/tooltip.css +2 -4
- package/src/layout/container.css +5 -5
- package/src/layout/grid.css +8 -8
- package/src/layout/patterns.css +5 -5
- package/src/themes/brutalist.css +2 -11
- package/src/themes/corporate.css +0 -9
- package/src/themes/earth.css +0 -9
- package/src/themes/forest.css +0 -9
- package/src/themes/midnight.css +1 -10
- package/src/themes/neon.css +0 -9
- package/src/themes/nordic.css +0 -9
- package/src/themes/ocean.css +0 -9
- package/src/themes/pastel.css +1 -10
- package/src/themes/retro.css +2 -11
- package/src/themes/sharp.css +0 -7
- package/src/themes/soft.css +0 -7
- package/src/themes/sunset.css +1 -10
- package/src/tokens/color.css +45 -46
- package/src/tokens/fonts.css +10 -0
- package/src/tokens/motion.css +7 -0
- package/src/tokens/typography.css +4 -5
- package/src/utilities/animation.css +99 -3
- package/src/utilities/chart-animation.css +101 -0
- package/src/utilities/display.css +3 -3
- package/src/utilities/divide.css +2 -6
- package/src/utilities/filter-effects.css +103 -0
- package/src/utilities/responsive.css +4 -4
- package/src/utilities/safe-area.css +39 -0
- package/src/utilities/scroll-animation.css +34 -0
- package/src/utilities/spacing.css +17 -8
- package/src/utilities/text.css +4 -1
- package/src/velinstyle.css +12 -0
package/README.md
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
```
|
|
4
|
+
██╗ ██╗███████╗██╗ ██╗███╗ ██╗███████╗████████╗██╗ ██╗██╗ ███████╗
|
|
5
|
+
██║ ██║██╔════╝██║ ██║████╗ ██║██╔════╝╚══██╔══╝██║ ██║██║ ██╔════╝
|
|
6
|
+
██║ ██║█████╗ ██║ ██║██╔██╗ ██║███████╗ ██║ ███████║██║ █████╗
|
|
7
|
+
╚██╗ ██╔╝██╔══╝ ██║ ██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██╔══╝
|
|
8
|
+
╚████╔╝ ███████╗███████╗██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗
|
|
9
|
+
╚═══╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝
|
|
10
|
+
```
|
|
9
11
|
|
|
10
12
|
[](LICENSE)
|
|
11
|
-
[](docs/a11y.html)
|
|
13
|
-
[]()
|
|
14
|
-
[]()
|
|
13
|
+
[](https://github.com/SkyliteDesign/velinstyle/releases/tag/v0.9.0)
|
|
15
14
|
[](https://www.npmjs.com/package/@birdapi/velinstyle)
|
|
16
|
-
[](https://velinstyle.info/docs/a11y.html)
|
|
16
|
+
[](https://github.com/SkyliteDesign/velinstyle/stargazers)
|
|
17
|
+
[](CONTRIBUTING.md)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm i @birdapi/velinstyle
|
|
21
|
+
```
|
|
17
22
|
|
|
18
|
-
[
|
|
23
|
+
**[Website](https://velinstyle.info)** · **[Docs](https://velinstyle.info/docs/)** · **[Demos](https://velinstyle.info/demos/)** · **[npm](https://www.npmjs.com/package/@birdapi/velinstyle)** · **[Star on GitHub](https://github.com/SkyliteDesign/velinstyle)**
|
|
19
24
|
|
|
20
25
|
**English** · **[Deutsch](README.de.md)**
|
|
21
26
|
|
|
@@ -23,282 +28,190 @@
|
|
|
23
28
|
|
|
24
29
|
---
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- [The problem & the fix](#the-problem--the-fix)
|
|
29
|
-
- [What you get](#what-you-get)
|
|
30
|
-
- [Architecture](#architecture)
|
|
31
|
-
- [Quick start](#quick-start)
|
|
32
|
-
- [Why VelinStyle?](#why-velinstyle)
|
|
33
|
-
- [Demo gallery](#demo-gallery)
|
|
34
|
-
- [CLI reference](#cli-reference)
|
|
35
|
-
- [Ecosystem](#ecosystem)
|
|
36
|
-
- [Join in](#join-in)
|
|
37
|
-
- [Browser support](#browser-support)
|
|
38
|
-
- [License](#license)
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## The problem & the fix
|
|
43
|
-
|
|
44
|
-
<table>
|
|
45
|
-
<tr>
|
|
46
|
-
<td width="50%" valign="top">
|
|
47
|
-
|
|
48
|
-
### The problem
|
|
49
|
-
|
|
50
|
-
Teams ship UI under pressure. **Accessibility** and **consistent theming** are often bolted on late—if at all. Heavy bundles, Bootstrap sameness, or Tailwind sprawl frustrate designers and engineers alike.
|
|
51
|
-
|
|
52
|
-
</td>
|
|
53
|
-
<td width="50%" valign="top">
|
|
54
|
-
|
|
55
|
-
### The VelinStyle answer
|
|
31
|
+
**VelinStyle** is the **WCAG 2.2 AAA CSS framework** with native JavaScript runtime and Web Components — CSS utilities, 0.9.0 modules (search, motion, highlight, attributes, meta), and security tooling, with **no external UI framework dependencies** in the core.
|
|
56
32
|
|
|
57
|
-
|
|
33
|
+
Built for teams who want **readable HTML**, **AAA token defaults** (AA via `data-velin-contrast="aa"`), and **CLI automation** instead of utility sprawl.
|
|
58
34
|
|
|
59
|
-
|
|
60
|
-
</tr>
|
|
61
|
-
</table>
|
|
35
|
+
> **Dogfooding:** The entire VelinStyle website and documentation runs 100% on VelinStyle — no external scripts or UI frameworks.
|
|
62
36
|
|
|
63
37
|
---
|
|
64
38
|
|
|
65
|
-
##
|
|
66
|
-
|
|
67
|
-
<table>
|
|
68
|
-
<thead>
|
|
69
|
-
<tr><th></th><th>Capability</th><th>What it means for you</th></tr>
|
|
70
|
-
</thead>
|
|
71
|
-
<tbody>
|
|
72
|
-
<tr><td align="center">♿</td><td><strong>WCAG AA by design</strong></td><td>Focus, ARIA, and keyboard patterns in components and overlays</td></tr>
|
|
73
|
-
<tr><td align="center">🎨</td><td><strong>OKLCH + 13 theme presets</strong></td><td>Perceptually uniform colors; dark mode via token swap</td></tr>
|
|
74
|
-
<tr><td align="center">📦</td><td><strong>~46 KB CSS + ~66 KB JS (min)</strong></td><td>Lean defaults vs. heavier all-in-one stacks</td></tr>
|
|
75
|
-
<tr><td align="center">📐</td><td><strong>Container Queries + utilities</strong></td><td>Components adapt to <em>their</em> container, not only the viewport</td></tr>
|
|
76
|
-
<tr><td align="center">🧩</td><td><strong>25 CSS modules · 21 Web Components</strong></td><td>Modals, tabs, drawers, toasts, icons—documented APIs in <a href="docs/css-components.html">CSS</a> & <a href="docs/components.html">WC docs</a></td></tr>
|
|
77
|
-
<tr><td align="center">🛠️</td><td><strong>Optional CLI</strong></td><td><code>init</code>, <code>build</code>, <code>icons</code>, <code>scan</code>, <code>prefix</code>, <code>blueprint</code>, <code>tokens build</code></td></tr>
|
|
78
|
-
<tr><td align="center">🌍</td><td><strong>RTL-ready</strong></td><td>Logical properties and layout-minded defaults · <a href="samples/rtl.html">RTL sample</a></td></tr>
|
|
79
|
-
</tbody>
|
|
80
|
-
</table>
|
|
39
|
+
## Features at a glance
|
|
81
40
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
layout --> components[components]
|
|
93
|
-
components --> utilities[utilities]
|
|
94
|
-
utilities --> themes[themes]
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Entry: [`src/velinstyle.css`](src/velinstyle.css) · Build output: `dist/` (`npm run build`)
|
|
98
|
-
|
|
99
|
-
```css
|
|
100
|
-
@layer tokens, reset, base, a11y, layout, components, utilities, themes;
|
|
101
|
-
```
|
|
41
|
+
- **CSS utilities** — `velin-*` spacing, color, flex, motion, safe-area; cascade layers + OKLCH tokens
|
|
42
|
+
- **35+ components** — semantic BEM classes (`velin-btn`, `velin-card`, `velin-grid`, …)
|
|
43
|
+
- **Motion runtime** — reveal, stagger, scroll-driven animation, rAF scheduler
|
|
44
|
+
- **VelinSearch** — fuzzy offline search with highlighting and categories
|
|
45
|
+
- **Syntax highlighting** — lazy in-view highlighting for JS, HTML, CSS, JSON, and more
|
|
46
|
+
- **HTML attributes** — 27 declarative bridges (`velin-modal`, `velin-reveal`, `velin-scroll-top`, `velin-code`, …)
|
|
47
|
+
- **Quality** — 36/36 component a11y contracts, Playwright cross-browser smoke (`npm run test:e2e`), CLS placeholders (`wc-placeholder.css`)
|
|
48
|
+
- **Security tools** — `scan`, PII rules, sanitize API, hardened components
|
|
49
|
+
- **CLI** — init, build, scan, scaffold, tokens, docs generate, perf audit, layout audit
|
|
50
|
+
- **Velin-Meta** — `velin-agent.json`, `llms.txt`, and page-level agent JSON for AI assistants
|
|
102
51
|
|
|
103
52
|
---
|
|
104
53
|
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
### <span>①</span> Install
|
|
54
|
+
## Installation
|
|
108
55
|
|
|
109
56
|
```bash
|
|
110
|
-
npm
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### <span>②</span> Link CSS + components (ES modules)
|
|
114
|
-
|
|
115
|
-
```html
|
|
116
|
-
<link rel="stylesheet" href="node_modules/@birdapi/velinstyle/dist/velinstyle.min.css">
|
|
117
|
-
<script type="module" src="node_modules/@birdapi/velinstyle/dist/velinstyle-components.min.js"></script>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
<details>
|
|
121
|
-
<summary><strong>CDN alternative</strong> (skip npm install)</summary>
|
|
122
|
-
|
|
123
|
-
```html
|
|
124
|
-
<link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@latest/dist/velinstyle.min.css">
|
|
125
|
-
<script type="module" src="https://unpkg.com/@birdapi/velinstyle@latest/dist/velinstyle-components.min.js"></script>
|
|
57
|
+
npm i @birdapi/velinstyle
|
|
126
58
|
```
|
|
127
59
|
|
|
128
|
-
|
|
60
|
+
| Path | Use |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `@birdapi/velinstyle/css` | Full minified stylesheet |
|
|
63
|
+
| `@birdapi/velinstyle/bundle` | Web Components ESM bundle |
|
|
64
|
+
| `@birdapi/velinstyle/search` | VelinSearch module |
|
|
65
|
+
| `@birdapi/velinstyle/motion` | Motion runtime |
|
|
66
|
+
| `@birdapi/velinstyle/attributes` | HTML attribute bridges |
|
|
67
|
+
| `@birdapi/velinstyle/highlight` | Syntax highlighting |
|
|
68
|
+
| `@birdapi/velinstyle/meta` | Agent metadata API |
|
|
129
69
|
|
|
130
|
-
|
|
70
|
+
**CDN (pin version):**
|
|
131
71
|
|
|
132
72
|
```html
|
|
133
|
-
<
|
|
134
|
-
<
|
|
135
|
-
<p class="velin-lead velin-text-muted">Hello, VelinStyle.</p>
|
|
136
|
-
<button type="button" class="velin-btn velin-btn--primary">Primary action</button>
|
|
137
|
-
</div>
|
|
73
|
+
<link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle.min.css">
|
|
74
|
+
<script type="module" src="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle-components.min.js"></script>
|
|
138
75
|
```
|
|
139
76
|
|
|
140
|
-
|
|
77
|
+
After cloning, run `npm install && npm run build` — `dist/` is generated, not committed.
|
|
141
78
|
|
|
142
79
|
---
|
|
143
80
|
|
|
144
|
-
##
|
|
81
|
+
## Quickstart
|
|
145
82
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
83
|
+
```html
|
|
84
|
+
<!DOCTYPE html>
|
|
85
|
+
<html lang="en" data-velin-theme="ocean">
|
|
86
|
+
<head>
|
|
87
|
+
<meta charset="UTF-8">
|
|
88
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
89
|
+
<link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle.min.css">
|
|
90
|
+
<script type="module" src="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle-components.min.js"></script>
|
|
91
|
+
</head>
|
|
92
|
+
<body class="velin-p-6">
|
|
93
|
+
<button type="button" class="velin-btn velin-btn--primary" velin-reveal="slide-up">Ship it</button>
|
|
94
|
+
<velin-code-block language="html" line-numbers><p class="velin-text-muted">Hello VelinStyle</p></velin-code-block>
|
|
95
|
+
</body>
|
|
96
|
+
</html>
|
|
97
|
+
```
|
|
156
98
|
|
|
157
99
|
---
|
|
158
100
|
|
|
159
|
-
##
|
|
160
|
-
|
|
161
|
-
| Demo | Page | Demo | Page |
|
|
162
|
-
| --- | --- | --- | --- |
|
|
163
|
-
| Landing | [samples/landing.html](samples/landing.html) | Dashboard | [samples/dashboard.html](samples/dashboard.html) |
|
|
164
|
-
| Login | [samples/login.html](samples/login.html) | Sign up | [samples/signup.html](samples/signup.html) |
|
|
165
|
-
| Pricing | [samples/pricing.html](samples/pricing.html) | E-commerce | [samples/ecommerce.html](samples/ecommerce.html) |
|
|
166
|
-
| Blog | [samples/blog.html](samples/blog.html) | Portfolio | [samples/portfolio.html](samples/portfolio.html) |
|
|
167
|
-
| Chat | [samples/chat.html](samples/chat.html) | Email | [samples/email.html](samples/email.html) |
|
|
168
|
-
| Kanban | [samples/kanban.html](samples/kanban.html) | Settings | [samples/settings.html](samples/settings.html) |
|
|
169
|
-
| RTL layout | [samples/rtl.html](samples/rtl.html) | A11y patterns | [samples/a11y-patterns.html](samples/a11y-patterns.html) |
|
|
101
|
+
## Core modules (0.9.0)
|
|
170
102
|
|
|
171
|
-
|
|
|
103
|
+
| Export | Description |
|
|
172
104
|
| --- | --- |
|
|
173
|
-
|
|
|
174
|
-
|
|
|
105
|
+
| `@birdapi/velinstyle/search` | Fuzzy offline search, providers, optional Web Worker |
|
|
106
|
+
| `@birdapi/velinstyle/motion` | `initMotion`, stagger, smooth scroll, unified `.velin-in-view` |
|
|
107
|
+
| `@birdapi/velinstyle/attributes` | Registry of declarative `velin-*` HTML attribute bridges |
|
|
108
|
+
| `@birdapi/velinstyle/highlight` | `velinSyntax`, lazy language packs, OKLCH token colors |
|
|
109
|
+
| `@birdapi/velinstyle/meta` | `buildAgentBundle`, page meta MIME `application/vnd.velinstyle.meta+json` |
|
|
175
110
|
|
|
176
111
|
---
|
|
177
112
|
|
|
178
|
-
##
|
|
179
|
-
|
|
180
|
-
All commands: `npx velinstyle <command>` · `npx velinstyle --help`
|
|
181
|
-
|
|
182
|
-
<details>
|
|
183
|
-
<summary><strong>Project & build</strong> — <code>init</code>, <code>build</code>, <code>themes</code>, <code>add</code></summary>
|
|
113
|
+
## Web Components
|
|
184
114
|
|
|
185
|
-
-
|
|
186
|
-
- **`npx velinstyle build`** — custom CSS bundle from selected layers (`--output` / `-o`, `--minify`).
|
|
187
|
-
- **`npx velinstyle themes`** — lists 13 theme presets.
|
|
188
|
-
- **`npx velinstyle add <component>`** — copies a single component CSS file into your project.
|
|
115
|
+
**36 canonical** custom elements (38 lazy-loader entries including legacy `velin-tooltip-wc` and `velin-stepper-wc`) — use plain CSS when you do not need behavior. `src/base/wc-placeholder.css` reduces layout shift before elements upgrade.
|
|
189
116
|
|
|
190
|
-
|
|
117
|
+
Examples: `velin-modal`, `velin-search`, `velin-code-block`, `velin-drawer`, `velin-stepper`, `velin-tooltip`, `velin-toast`, `velin-persist`.
|
|
191
118
|
|
|
192
|
-
|
|
193
|
-
|
|
119
|
+
- [Component documentation](https://velinstyle.info/docs/components/buttons.html)
|
|
120
|
+
- [Generated Web Component API](https://velinstyle.info/docs/generated/components/README.md)
|
|
194
121
|
|
|
195
|
-
|
|
196
|
-
- **`npx velinstyle icons add lucide --icons menu,search,check`**
|
|
197
|
-
- **`npx velinstyle icons add heroicons --icons arrow-left --variant outline`**
|
|
198
|
-
- **`npx velinstyle icons build`** — rebuilds sprite (from a VelinStyle clone: writes `icons/svg/` and rebuilds).
|
|
199
|
-
|
|
200
|
-
</details>
|
|
201
|
-
|
|
202
|
-
<details>
|
|
203
|
-
<summary><strong>scan</strong> — security, a11y & CSS lint</summary>
|
|
204
|
-
|
|
205
|
-
- **`npx velinstyle scan [path]`** — HTML, CSS, JS; **`--format json`** for CI.
|
|
206
|
-
- **`--severity`** — filter minimum level: `error` | `warning` | `info`.
|
|
207
|
-
- **`--fix`** — safe auto-fixes only; **`--fix-dry-run`** lists files without writing.
|
|
208
|
-
- **`--fix-lang`** — BCP 47 for setting `lang` on `<html>` (default `en`).
|
|
209
|
-
|
|
210
|
-
**Auto-fixes (examples):** `rel="noopener noreferrer"` on risky `target="_blank"`; `lang` on `<html>`; skip link when `id="main"` exists; raw `z-index` → `--velin-z-*`.
|
|
122
|
+
---
|
|
211
123
|
|
|
212
|
-
|
|
124
|
+
## CLI
|
|
213
125
|
|
|
214
|
-
|
|
126
|
+
| Command | Purpose |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `npx velinstyle init` | Create `velinstyle.config.js` in your project |
|
|
129
|
+
| `npx velinstyle scan` | Security, accessibility, CSS, and PII checks |
|
|
130
|
+
| `npx velinstyle search index` | Build `dist/search-index.json` for offline doc search |
|
|
131
|
+
| `npx velinstyle tokens build` | Compile design tokens JSON to CSS |
|
|
132
|
+
| `npx velinstyle meta` | Generate `velin-agent.json` and `llms.txt` |
|
|
215
133
|
|
|
216
|
-
|
|
134
|
+
Also: `npx velinstyle docs generate` — Markdown reference under `docs/generated/`.
|
|
217
135
|
|
|
218
|
-
|
|
219
|
-
<summary><strong>prefix</strong> — class codemod & JSON maps</summary>
|
|
136
|
+
---
|
|
220
137
|
|
|
221
|
-
|
|
222
|
-
- **`--bootstrap-display`** — maps Bootstrap `d-*` to Velin display classes.
|
|
223
|
-
- **`velinstyle-prefix-map.json`** in the target folder or **`--map file.json`** — explicit token → class mappings (overrides catalog and Bootstrap aliases). Sample: [examples/velinstyle-prefix-map.sample.json](examples/velinstyle-prefix-map.sample.json).
|
|
138
|
+
## Security
|
|
224
139
|
|
|
225
|
-
|
|
140
|
+
VelinStyle ships **first-class security tooling**, not an afterthought:
|
|
226
141
|
|
|
227
|
-
|
|
228
|
-
|
|
142
|
+
- **`velinstyle scan`** — markup and a11y rules; PII scanner (`--only pii`, `--fix`)
|
|
143
|
+
- **`@birdapi/velinstyle/sanitize`** — URL and text sanitization helpers
|
|
144
|
+
- **`<velin-secure-field>`** — no plaintext secrets in the DOM; hardened search/copy URLs
|
|
229
145
|
|
|
230
|
-
|
|
231
|
-
- **`npx velinstyle blueprint <name> -o snippet.html`**
|
|
146
|
+
[Security documentation](https://velinstyle.info/docs/extend/security.html)
|
|
232
147
|
|
|
233
|
-
|
|
148
|
+
---
|
|
234
149
|
|
|
235
|
-
|
|
150
|
+
## Velin-Meta
|
|
236
151
|
|
|
237
|
-
|
|
238
|
-
<summary><strong>tokens build</strong> — design tokens → CSS</summary>
|
|
152
|
+
Machine-readable context for **Cursor, Copilot, and custom agents**:
|
|
239
153
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
154
|
+
- **Global bundle** — `dist/velin-agent.json` + `dist/llms.txt` via `velinstyle meta`
|
|
155
|
+
- **Page-level meta** — `<script type="application/vnd.velinstyle.meta+json" id="velin-meta">`
|
|
156
|
+
- **CLI** — `velinstyle meta page my.html --write`
|
|
243
157
|
|
|
244
|
-
|
|
158
|
+
[Velin-Meta guide](https://velinstyle.info/docs/guides/velin-meta.html)
|
|
245
159
|
|
|
246
160
|
---
|
|
247
161
|
|
|
248
|
-
##
|
|
162
|
+
## Docs & website
|
|
249
163
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
164
|
+
- [velinstyle.info](https://velinstyle.info) — product site and demos
|
|
165
|
+
- [Guides](https://velinstyle.info/docs/guides/index.html) · [Feature scope](https://velinstyle.info/docs/guides/feature-scope.html)
|
|
166
|
+
- [API reference](https://velinstyle.info/docs/guides/api-reference.html) — generated from source
|
|
167
|
+
- [Generated Markdown](https://velinstyle.info/docs/generated/index.html) — components, tokens, utilities, CLI, rules
|
|
253
168
|
|
|
254
|
-
|
|
169
|
+
---
|
|
255
170
|
|
|
256
|
-
|
|
257
|
-
- [@velinstyle/react](packages/react) — experimental thin React wrappers
|
|
171
|
+
## Changelog
|
|
258
172
|
|
|
259
|
-
|
|
173
|
+
See [CHANGELOG.md](CHANGELOG.md) for releases, breaking changes, and migration notes.
|
|
260
174
|
|
|
261
|
-
|
|
262
|
-
- [A11y patterns](docs/a11y-patterns/index.html) · [Security](docs/security.html)
|
|
175
|
+
---
|
|
263
176
|
|
|
264
|
-
|
|
265
|
-
<td width="50%" valign="top">
|
|
177
|
+
## Comparison
|
|
266
178
|
|
|
267
|
-
|
|
179
|
+
| | Bootstrap | Tailwind | Shoelace | **VelinStyle** |
|
|
180
|
+
| --- | :---: | :---: | :---: | :---: |
|
|
181
|
+
| HTML readability | Medium | Low | Medium | **High** |
|
|
182
|
+
| Class predictability | Medium | Low | Medium | **`velin-btn--primary`** |
|
|
183
|
+
| Utility sprawl | Low | **High** | Low | **Controlled** |
|
|
184
|
+
| Override story | Hard | Config file | Shadow DOM | **CSS layers + tokens** |
|
|
185
|
+
| Accessibility | Partial | DIY | Good WC | **WCAG 2.2 AAA tokens** |
|
|
186
|
+
| Dark mode | Manual | `dark:` everywhere | Theme attr | **Token swap** |
|
|
187
|
+
| App chrome | Legacy JS | BYO | WC only | **CSS + optional WCs** |
|
|
188
|
+
| Ship speed | Fast | Fast (with build) | Fast | **CDN, no build required** |
|
|
189
|
+
| Runtime modules | — | — | — | **Search, motion, meta, …** |
|
|
268
190
|
|
|
269
|
-
|
|
270
|
-
npm install
|
|
271
|
-
npm run dev # serve on :3000
|
|
272
|
-
npm run build
|
|
273
|
-
npm test
|
|
274
|
-
npm run test:a11y
|
|
275
|
-
```
|
|
191
|
+
---
|
|
276
192
|
|
|
277
|
-
|
|
193
|
+
## Live demos
|
|
278
194
|
|
|
279
|
-
|
|
280
|
-
</tr>
|
|
281
|
-
</table>
|
|
195
|
+
Full application pages on [velinstyle.info/demos/](https://velinstyle.info/demos/) — [Crypto](https://velinstyle.info/demos/showcase-crypto.html) · [E-Commerce](https://velinstyle.info/demos/showcase-ecommerce.html) · [Dashboard](https://velinstyle.info/demos/showcase-dashboard.html) · [All demos](https://velinstyle.info/demos/) · [Fork showcase-demos](https://github.com/SkyliteDesign/velinstyle/tree/main/showcase-demos)
|
|
282
196
|
|
|
283
|
-
|
|
197
|
+
<p align="center">
|
|
198
|
+
<a href="https://velinstyle.info/demos/showcase-crypto.html">
|
|
199
|
+
<img src=".github/assets/readme/hero-demo.webp" alt="VelinStyle crypto dashboard demo" width="720">
|
|
200
|
+
</a>
|
|
201
|
+
</p>
|
|
284
202
|
|
|
285
203
|
---
|
|
286
204
|
|
|
287
|
-
##
|
|
205
|
+
## Contributing
|
|
288
206
|
|
|
289
|
-
|
|
207
|
+
PRs welcome.
|
|
290
208
|
|
|
291
|
-
1.
|
|
292
|
-
2.
|
|
293
|
-
3.
|
|
209
|
+
1. Fork the repo
|
|
210
|
+
2. `npm install && npm run build`
|
|
211
|
+
3. Make your change · run `npm test`, `npm run test:a11y`, and `npm run test:e2e` (after `npm run build`)
|
|
212
|
+
4. Open a pull request
|
|
294
213
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## Browser support
|
|
300
|
-
|
|
301
|
-
VelinStyle is **mobile-first**. Use a **current evergreen browser** (recent Safari on iOS, Chrome/Firefox on Android and desktop). OKLCH, Container Queries, `@layer`, and Web Components need modern engines. Include the viewport `meta` tag. Older in-app WebViews may mis-render colors or layout.
|
|
214
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for code style and review process.
|
|
302
215
|
|
|
303
216
|
---
|
|
304
217
|
|
|
@@ -306,8 +219,6 @@ VelinStyle is **mobile-first**. Use a **current evergreen browser** (recent Safa
|
|
|
306
219
|
|
|
307
220
|
[MIT](LICENSE) — Copyright © 2026 VelinStyle
|
|
308
221
|
|
|
309
|
-
---
|
|
310
|
-
|
|
311
222
|
<div align="center">
|
|
312
223
|
|
|
313
224
|
Made with care for the web by [SkyliteDesign](https://github.com/SkyliteDesign)
|
package/cli/blueprint.js
CHANGED
|
@@ -18,6 +18,14 @@ const BLUEPRINTS = {
|
|
|
18
18
|
'search-field': 'search-field.html',
|
|
19
19
|
'sidebar-layout': 'sidebar-layout.html',
|
|
20
20
|
'table-responsive': 'table-responsive.html',
|
|
21
|
+
'bottom-nav-mobile': 'bottom-nav-mobile.html',
|
|
22
|
+
'empty-state': 'empty-state.html',
|
|
23
|
+
'cookie-consent': 'cookie-consent.html',
|
|
24
|
+
'filter-bar': 'filter-bar.html',
|
|
25
|
+
'notification-center': 'notification-center.html',
|
|
26
|
+
'settings-panel': 'settings-panel.html',
|
|
27
|
+
onboarding: 'onboarding.html',
|
|
28
|
+
'pricing-table': 'pricing-table.html',
|
|
21
29
|
};
|
|
22
30
|
|
|
23
31
|
export function listBlueprints() {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<nav class="velin-pb-safe" aria-label="Primary">
|
|
2
|
+
<velin-bottom-nav current="home">
|
|
3
|
+
<a href="#home" data-nav="home" current>Home</a>
|
|
4
|
+
<a href="#search" data-nav="search">Search</a>
|
|
5
|
+
<a href="#profile" data-nav="profile">Profile</a>
|
|
6
|
+
</velin-bottom-nav>
|
|
7
|
+
</nav>
|
|
8
|
+
<script type="module">
|
|
9
|
+
import '../../dist/velinstyle-components.min.js';
|
|
10
|
+
const nav = document.querySelector('velin-bottom-nav');
|
|
11
|
+
nav?.querySelectorAll('a').forEach((link) => {
|
|
12
|
+
link.addEventListener('click', (e) => {
|
|
13
|
+
e.preventDefault();
|
|
14
|
+
nav.setAttribute('current', link.dataset.nav || '');
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
</script>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<aside class="velin-p-4 velin-border velin-rounded-lg velin-pb-safe" role="region" aria-label="Cookie consent">
|
|
2
|
+
<div class="velin-user-content">
|
|
3
|
+
<p class="velin-mbe-3">We use essential cookies only. No third-party trackers in this demo.</p>
|
|
4
|
+
</div>
|
|
5
|
+
<div class="velin-flex velin-gap-3">
|
|
6
|
+
<button type="button" class="velin-btn velin-btn--primary">Accept</button>
|
|
7
|
+
<button type="button" class="velin-btn velin-btn--outline">Decline</button>
|
|
8
|
+
</div>
|
|
9
|
+
</aside>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<section class="velin-p-8 velin-text-center" aria-labelledby="empty-title">
|
|
2
|
+
<h2 id="empty-title" class="velin-text-xl velin-font-bold velin-mbe-2">No items yet</h2>
|
|
3
|
+
<p class="velin-text-muted velin-mbe-4">Create your first entry to see it listed here.</p>
|
|
4
|
+
<button type="button" class="velin-btn velin-btn--primary">Create item</button>
|
|
5
|
+
</section>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<form class="velin-flex velin-flex-wrap velin-gap-3 velin-p-4 velin-border-b" role="search" aria-label="Filter list">
|
|
2
|
+
<label class="velin-flex velin-flex-col velin-gap-1">
|
|
3
|
+
<span class="velin-text-sm">Query</span>
|
|
4
|
+
<input type="search" class="velin-input" name="q" placeholder="Search…" />
|
|
5
|
+
</label>
|
|
6
|
+
<label class="velin-flex velin-flex-col velin-gap-1">
|
|
7
|
+
<span class="velin-text-sm">Status</span>
|
|
8
|
+
<select class="velin-select" name="status">
|
|
9
|
+
<option value="">All</option>
|
|
10
|
+
<option value="open">Open</option>
|
|
11
|
+
<option value="done">Done</option>
|
|
12
|
+
</select>
|
|
13
|
+
</label>
|
|
14
|
+
<button type="submit" class="velin-btn velin-btn--primary velin-self-end">Apply</button>
|
|
15
|
+
</form>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<section class="velin-p-4" aria-labelledby="notif-title">
|
|
2
|
+
<h2 id="notif-title" class="velin-text-lg velin-font-bold velin-mbe-4">Notifications</h2>
|
|
3
|
+
<ul class="velin-flex velin-flex-col velin-gap-3" role="list">
|
|
4
|
+
<li class="velin-p-3 velin-border velin-rounded-lg">
|
|
5
|
+
<p class="velin-font-medium">Backup complete</p>
|
|
6
|
+
<p class="velin-text-sm velin-text-muted">2 minutes ago</p>
|
|
7
|
+
</li>
|
|
8
|
+
<li class="velin-p-3 velin-border velin-rounded-lg">
|
|
9
|
+
<p class="velin-font-medium">New comment</p>
|
|
10
|
+
<p class="velin-text-sm velin-text-muted">1 hour ago</p>
|
|
11
|
+
</li>
|
|
12
|
+
</ul>
|
|
13
|
+
</section>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<velin-stepper id="onboard" labels="Welcome,Profile,Done" active="0">
|
|
2
|
+
<section class="velin-p-6">
|
|
3
|
+
<h2 class="velin-text-xl velin-mbe-2">Welcome</h2>
|
|
4
|
+
<p class="velin-mbe-4">Set up your workspace in a few steps.</p>
|
|
5
|
+
<button type="button" class="velin-btn velin-btn--primary" data-next>Continue</button>
|
|
6
|
+
</section>
|
|
7
|
+
<section class="velin-p-6">
|
|
8
|
+
<h2 class="velin-text-xl velin-mbe-2">Profile</h2>
|
|
9
|
+
<input type="text" class="velin-input velin-mbe-4" placeholder="Your name" aria-label="Name" />
|
|
10
|
+
<button type="button" class="velin-btn velin-btn--primary" data-next>Continue</button>
|
|
11
|
+
</section>
|
|
12
|
+
<section class="velin-p-6">
|
|
13
|
+
<h2 class="velin-text-xl velin-mbe-2">Done</h2>
|
|
14
|
+
<p>You are ready to go.</p>
|
|
15
|
+
</section>
|
|
16
|
+
</velin-stepper>
|
|
17
|
+
<script type="module">
|
|
18
|
+
import '../../dist/velinstyle-components.min.js';
|
|
19
|
+
const stepper = document.getElementById('onboard');
|
|
20
|
+
document.querySelectorAll('[data-next]').forEach((btn) => {
|
|
21
|
+
btn.addEventListener('click', () => stepper?.next());
|
|
22
|
+
});
|
|
23
|
+
</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<div class="velin-grid velin-gap-4" style="grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));">
|
|
2
|
+
<article class="velin-p-6 velin-border velin-rounded-lg velin-text-center">
|
|
3
|
+
<h3 class="velin-text-lg velin-font-bold">Starter</h3>
|
|
4
|
+
<p class="velin-text-3xl velin-font-bold velin-mbs-2 velin-mbe-4">$0</p>
|
|
5
|
+
<ul class="velin-text-sm velin-mbe-4" role="list">
|
|
6
|
+
<li>1 project</li>
|
|
7
|
+
<li>Community support</li>
|
|
8
|
+
</ul>
|
|
9
|
+
<button type="button" class="velin-btn velin-btn--outline velin-w-full">Choose</button>
|
|
10
|
+
</article>
|
|
11
|
+
<article class="velin-p-6 velin-border velin-rounded-lg velin-text-center velin-border-primary">
|
|
12
|
+
<h3 class="velin-text-lg velin-font-bold">Pro</h3>
|
|
13
|
+
<p class="velin-text-3xl velin-font-bold velin-mbs-2 velin-mbe-4">$12</p>
|
|
14
|
+
<ul class="velin-text-sm velin-mbe-4" role="list">
|
|
15
|
+
<li>Unlimited projects</li>
|
|
16
|
+
<li>Priority support</li>
|
|
17
|
+
</ul>
|
|
18
|
+
<button type="button" class="velin-btn velin-btn--primary velin-w-full">Choose</button>
|
|
19
|
+
</article>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<velin-sheet id="settings-sheet" title="Settings">
|
|
2
|
+
<form class="velin-flex velin-flex-col velin-gap-4 velin-p-4">
|
|
3
|
+
<label class="velin-flex velin-flex-col velin-gap-1">
|
|
4
|
+
<span>Display name</span>
|
|
5
|
+
<input type="text" class="velin-input" name="name" autocomplete="name" />
|
|
6
|
+
</label>
|
|
7
|
+
<label class="velin-flex velin-items-center velin-gap-2">
|
|
8
|
+
<input type="checkbox" class="velin-checkbox" name="notify" />
|
|
9
|
+
<span>Email notifications</span>
|
|
10
|
+
</label>
|
|
11
|
+
<button type="submit" class="velin-btn velin-btn--primary">Save</button>
|
|
12
|
+
</form>
|
|
13
|
+
</velin-sheet>
|
|
14
|
+
<button type="button" class="velin-btn velin-btn--outline" id="open-settings">Open settings</button>
|
|
15
|
+
<script type="module">
|
|
16
|
+
import '../../dist/velinstyle-components.min.js';
|
|
17
|
+
document.getElementById('open-settings')?.addEventListener('click', () => {
|
|
18
|
+
document.getElementById('settings-sheet')?.open?.();
|
|
19
|
+
});
|
|
20
|
+
</script>
|