@anyblades/blades 3.1.0-alpha.2 → 3.1.0-beta.2

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 (87) hide show
  1. package/README.md +46 -15
  2. package/css/blades.css +158 -597
  3. package/css/blades.min.css +38 -12
  4. package/css/blades.ninja.css +4057 -0
  5. package/css/blades.ninja.min.css +190 -0
  6. package/css/float-label.css +207 -0
  7. package/css/float-label.min.css +55 -0
  8. package/css/{pico.layered.css → layered/blades.layered.css} +441 -16
  9. package/css/{pico.layered.min.css → layered/blades.layered.min.css} +74 -8
  10. package/css/layered/compact.css +54 -0
  11. package/css/layered/components/accordion.css +85 -0
  12. package/css/layered/components/card.css +48 -0
  13. package/css/layered/components/dropdown.css +191 -0
  14. package/css/layered/components/group.css +208 -0
  15. package/css/layered/components/loading.css +43 -0
  16. package/css/layered/components/modal.css +158 -0
  17. package/css/layered/components/nav.css +117 -0
  18. package/css/layered/components/progress.css +76 -0
  19. package/css/layered/components/tooltip.css +176 -0
  20. package/css/layered/components.css +1082 -0
  21. package/css/layered/content/button.css +208 -0
  22. package/css/layered/content/code.css +64 -0
  23. package/css/layered/content/embedded-content.css +41 -0
  24. package/css/layered/content/figure.css +15 -0
  25. package/css/layered/content/link.css +84 -0
  26. package/css/layered/content/misc.css +22 -0
  27. package/css/layered/content/table.css +33 -0
  28. package/css/layered/content/typography.css +159 -0
  29. package/css/layered/content.css +611 -0
  30. package/css/layered/forms/basics.css +338 -0
  31. package/css/layered/forms/checkbox-radio-switch.css +164 -0
  32. package/css/layered/forms/input-color.css +20 -0
  33. package/css/layered/forms/input-datetime.css +57 -0
  34. package/css/layered/forms/input-file.css +29 -0
  35. package/css/layered/forms/input-range.css +121 -0
  36. package/css/layered/forms/input-search.css +66 -0
  37. package/css/layered/forms.css +778 -0
  38. package/css/layered/layout/container.css +42 -0
  39. package/css/layered/layout/document.css +48 -0
  40. package/css/layered/layout/grid.css +22 -0
  41. package/css/layered/layout/landmarks.css +12 -0
  42. package/css/layered/layout/overflow-auto.css +9 -0
  43. package/css/layered/layout/section.css +9 -0
  44. package/css/layered/layout.css +119 -0
  45. package/css/layered/utilities.css +35 -0
  46. package/css/layered/variables.css +365 -0
  47. package/css/pico.conditional.css +16 -15
  48. package/css/pico.conditional.min.css +7 -7
  49. package/css/pico.css +16 -15
  50. package/css/pico.min.css +7 -7
  51. package/package.json +15 -11
  52. package/src/_compact.css +51 -0
  53. package/src/blades/_index.css +23 -0
  54. package/src/blades/float-label/_index.css +2 -0
  55. package/src/{standalone/forms/_float-label.theme.css → blades/float-label/_theme.css} +5 -1
  56. package/src/blades.css +3 -2
  57. package/src/blades.ninja.css +3 -0
  58. package/src/float-label.css +1 -0
  59. package/src/ninja/_index.css +19 -0
  60. package/src/{standalone → ninja}/_theme.css +0 -2
  61. package/src/{ninja.css → ninja/_utilities.css} +55 -6
  62. package/src/pico/_variables.css +6 -5
  63. package/src/pico/content/_button.css +1 -1
  64. package/src/pico/layout/_document.css +9 -0
  65. package/src/pico/layout/_index.css +0 -1
  66. package/src/pico/layout/_landmarks.css +1 -9
  67. package/src/pico.css +1 -0
  68. package/css/blades.standalone.css +0 -860
  69. package/css/blades.standalone.min.css +0 -37
  70. package/css/ninja.css +0 -83
  71. package/css/ninja.min.css +0 -5
  72. package/src/blades.standalone.css +0 -2
  73. package/src/standalone/_core.css +0 -32
  74. package/src/standalone/_utilities.css +0 -55
  75. package/src/standalone/forms/_float-label.css +0 -2
  76. /package/src/{standalone/content → blades}/_code.css +0 -0
  77. /package/src/{standalone/layout → blades}/_columns.css +0 -0
  78. /package/src/{standalone/components/_icon-helper.css → blades/_icon.css} +0 -0
  79. /package/src/{standalone/components → blades}/_timeline.css +0 -0
  80. /package/src/{standalone → blades}/_variables.css +0 -0
  81. /package/src/{standalone/forms/_float-label.core.css → blades/float-label/_core.css} +0 -0
  82. /package/src/{standalone/layout/_breakout.css → ninja/_container-breakout.css} +0 -0
  83. /package/src/{standalone/content/_typography.css → ninja/_heading-anchor.css} +0 -0
  84. /package/src/{standalone/content/_list.css → ninja/_list-helpers.css} +0 -0
  85. /package/src/{standalone/layout/_scroller.css → ninja/_page-anchors.css} +0 -0
  86. /package/src/{standalone/content/_table.css → ninja/_table-helpers.css} +0 -0
  87. /package/src/{standalone/content → ninja}/_table-responsive.css +0 -0
@@ -1,37 +0,0 @@
1
- /*!
2
- * Blades CSS standalone kit v3 🥷
3
- * Copyright 2026 (https://blades.ninja/css/standalone/)
4
- * Licensed under MIT
5
- */:host,:scope{--blades-token-primary:var(--pico-primary, dodgerblue);--in-pico:#01aaff;--blades-token-secondary:var(--pico-secondary, lightslategray);--in-pico:#969eaf;--blades-timeline-border-color:color-mix(
6
- in srgb,
7
- var(--blades-token-secondary) 50%,
8
- transparent
9
- )}.breakout,.breakout-all{max-width:calc(10% + 65ch + 10%);padding-inline:10%}@media (width < 768px){.breakout,.breakout-all{max-width:calc(1rem + 65ch + 1rem);padding-inline:1rem}}.breakout-all>:is(
10
- table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
11
- ),.breakout>:is(
12
- table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
13
- ){width:-moz-fit-content;width:fit-content;min-width:100%;max-width:min(125%,100dvw);margin-left:50%;transform:translateX(-50%)}.breakout-all>:is(img,picture):not(.does-not-exist),.breakout>:is(img,picture):not(.does-not-exist){min-width:auto}.breakout-all>.breakout-item-max,.breakout>.breakout-item-max{width:min(125%,100dvw)!important}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class]){position:relative}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class])::before{display:block;position:absolute;background:gray;content:"";opacity:12.5%}.breakout-all>:is(h2,h3,h4,h5,h6):not([class])::before{top:50%;right:100%;width:10em;height:.25em;margin-right:.8ch;transform:translateY(-50%);background:linear-gradient(to left,gray,transparent)}.breakout-all>:is(h2,h3,h4,h5,h6):not([class]):where(hr:not([class]) + *)::before{display:none!important}.breakout-all>:is(hr):not([class]){height:.5rem;overflow:visible;border:none}.breakout-all>:is(hr):not([class])::before{left:50%;width:100dvw;height:100%;transform:translateX(-50%)}.columns{-moz-columns:25ch auto;columns:25ch auto}.columns>*{-moz-column-break-inside:avoid;break-inside:avoid}[href="#top"]{position:fixed;right:0;bottom:0;padding-top:50vh}h1,h2,h3,h4,h5,h6{position:relative}h1 a[aria-hidden=true],h2 a[aria-hidden=true],h3 a[aria-hidden=true],h4 a[aria-hidden=true],h5 a[aria-hidden=true],h6 a[aria-hidden=true]{visibility:hidden;position:absolute;top:50%;right:100%;padding-right:.2ch;transform:translateY(-50%);color:silver;text-decoration:none}@media (hover:hover){h1:hover a[aria-hidden=true],h2:hover a[aria-hidden=true],h3:hover a[aria-hidden=true],h4:hover a[aria-hidden=true],h5:hover a[aria-hidden=true],h6:hover a[aria-hidden=true]{visibility:visible}}ol[style*="--list-marker:"],ul[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol[style*="--list-marker:"]>li,ul[style*="--list-marker:"]>li{list-style-type:inherit}ol li[style*="--list-marker:"],ul li[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol li[data-marker]::marker,ul li[data-marker]::marker{content:attr(data-marker) " "}ol.markerless,ul.markerless{padding-inline-start:1.25rem}ol.markerless li,ul.markerless li{list-style:none}.unlist-all ol,.unlist-all ul,ol.unlist,ol.unlist-all,ul.unlist,ul.unlist-all{padding-inline-start:0}.unlist-all ol>li,.unlist-all ul>li,ol.unlist-all>li,ol.unlist>li,ul.unlist-all>li,ul.unlist>li{list-style:none}th hr{visibility:hidden;width:12ch;height:0;margin:0}th hr.lg{width:18ch}th hr.x2{width:24ch}table.borderless td,table.borderless th{border:none}.breakout-all>table:not(.does-not-exist),.breakout>table:not(.does-not-exist),table.responsive{display:block;width:-moz-max-content;width:max-content;min-width:auto;max-width:100dvw;margin-left:50%;padding-inline:7.5%;overflow-x:auto;transform:translateX(-50%);-webkit-overflow-scrolling:touch}.breakout-all>table:not(.does-not-exist) td,.breakout-all>table:not(.does-not-exist) th,.breakout>table:not(.does-not-exist) td,.breakout>table:not(.does-not-exist) th,table.responsive td,table.responsive th{padding-inline-start:0}@media (width < 768px){pre{border-radius:0}}code[data-caption]::before{display:block;margin-bottom:1rem;content:attr(data-caption);font-style:italic;opacity:50%}/*!
14
- * Float Label CSS v2 by Blades CSS 🥷🏷️
15
- * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
16
- * Licensed under MIT
17
- */.has-float-label,label:has(> span):has(
18
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
19
- ){display:block;position:relative}.has-float-label label,.has-float-label>span,label:has(> span):has(
20
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
21
- ) label,label:has(> span):has(
22
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
23
- )>span{position:absolute;top:0;left:0;font-size:75%;cursor:text}.has-float-label :placeholder-shown:not(:focus)::-moz-placeholder,label:has(> span):has(
24
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
25
- ) :placeholder-shown:not(:focus)::-moz-placeholder{opacity:0}.has-float-label :-moz-placeholder:not(:focus)::placeholder,label:has(> span):has(
26
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
27
- ) :-moz-placeholder:not(:focus)::placeholder{opacity:0}.has-float-label :placeholder-shown:not(:focus)::placeholder,label:has(> span):has(
28
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
29
- ) :placeholder-shown:not(:focus)::placeholder{opacity:0}.has-float-label:has(:-moz-placeholder:not(:focus)) label,.has-float-label:has(:-moz-placeholder:not(:focus))>span,label:has(> span):has(
30
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
31
- ):has(:-moz-placeholder:not(:focus)) label,label:has(> span):has(
32
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
33
- ):has(:-moz-placeholder:not(:focus))>span{font-size:inherit;opacity:50%}.has-float-label:has(:placeholder-shown:not(:focus)) label,.has-float-label:has(:placeholder-shown:not(:focus))>span,label:has(> span):has(
34
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
35
- ):has(:placeholder-shown:not(:focus)) label,label:has(> span):has(
36
- input:not([type=checkbox],[type=radio],[type=range]),textarea,select
37
- ):has(:placeholder-shown:not(:focus))>span{font-size:inherit;opacity:50%}a:not(.does-not-exist):has(> i){display:inline-flex;overflow-y:clip;gap:.375ch;text-wrap:balance}a:not(.does-not-exist)>i{float:left;font-style:normal;text-underline-offset:-2em}a:not(.does-not-exist)>i>img{display:inline-block;max-width:none;height:1.25em;margin-block-start:calc(-0.25em / 2)}a:not(.does-not-exist)>i[class*=" fa-"],a:not(.does-not-exist)>i[class^=fa-]{line-height:inherit;--fa-width:auto}a:not(.does-not-exist)>i.fa-lg{line-height:normal}.has-timeline>dl dd,dl.timeline dd{margin-block:0;padding:.25rem 0 .75rem 1rem;border-inline-start:0.25rem solid var(--blades-timeline-border-color)}:root{--blades-dark-filter:invert(100%) hue-rotate(180deg)}@media (prefers-color-scheme:dark){.dark-auto{filter:var(--blades-dark-filter)}}.dark-auto:where([data-theme=dark] *),.dark-auto[data-theme=dark]{filter:var(--blades-dark-filter)}.faded{opacity:50%}.faded:hover{opacity:87.5%}.invert ::-webkit-scrollbar{filter:invert(1)!important}.has-float-label label,.has-float-label>span,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) label,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select)>span{padding-inline-start:calc(1rem + 1px);padding-block-start:0.25rem;opacity:75%;transition:all .25s}.has-float-label input,.has-float-label select,.has-float-label textarea,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) input,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) select,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) textarea{margin-block-start:0;padding-inline-start:1rem;padding-block:1.125rem 0.375rem}.has-float-label input::-moz-placeholder,.has-float-label select::-moz-placeholder,.has-float-label textarea::-moz-placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) input::-moz-placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) select::-moz-placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) textarea::-moz-placeholder{opacity:100%;-moz-transition:all .25s;transition:all .25s}.has-float-label input::placeholder,.has-float-label select::placeholder,.has-float-label textarea::placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) input::placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) select::placeholder,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select) textarea::placeholder{opacity:100%;transition:all .25s}.has-float-label:has(:-moz-placeholder:not(:focus)) label,.has-float-label:has(:-moz-placeholder:not(:focus))>span,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select):has(:-moz-placeholder:not(:focus)) label,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select):has(:-moz-placeholder:not(:focus))>span{padding-block:0.75rem}.has-float-label:has(:placeholder-shown:not(:focus)) label,.has-float-label:has(:placeholder-shown:not(:focus))>span,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select):has(:placeholder-shown:not(:focus)) label,label:has(> span):has(input:not([type=checkbox],[type=radio],[type=range]),textarea,select):has(:placeholder-shown:not(:focus))>span{padding-block:0.75rem}html{overflow-x:clip;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{display:flex;flex-direction:column;min-height:100dvh}body>main{flex-grow:1}body{hyphens:auto;text-wrap:pretty}body a,body table{hyphens:none}a:not([href^="#"]){text-decoration-thickness:1px}a:not([href^="#"]):hover{text-decoration-thickness:2px}h1,h2,h3,h4,h5,h6{text-wrap:balance}h1{margin-bottom:1rem;font-size:2.5em}hr{margin-block:2em}ul ul{font-size:87.5%}dl dt{margin-block:0.25rem;font-weight:500}dl dd{margin-block-end:1rem}pre small{font-weight:lighter;opacity:75%}pre:has(code){background:#181c25!important}table th{font-weight:700;vertical-align:bottom}table td{vertical-align:top}table pre{margin-bottom:.25rem}[href="#top"]{opacity:25%}[href="#top"]:hover{opacity:75%}[href="#top"]>i{display:inline-block;margin:.5rem;padding:.25rem .375rem;border-color:#000;color:#000;font-size:.75rem}.breakout-all>figure,.breakout-all>img,.breakout>figure,.breakout>img{margin-bottom:1rem}.faded a{text-decoration-style:dotted}
package/css/ninja.css DELETED
@@ -1,83 +0,0 @@
1
- /*!
2
- * Blades CSS' ninja add-ons (experimental) 🥷🧪
3
- * Copyright 2026 (https://blades.ninja/css/ninja/)
4
- * Licensed under MIT
5
- */
6
- /*\3c !--section:docs-->
7
-
8
- ### `sup`er &nbsp; and &nbsp; `sub`headings
9
-
10
- <article><br>
11
-
12
- # <sup style>Parent page</sup> Page title <sub style>Subtitle</sub>
13
-
14
- </article>
15
-
16
- How it works:
17
- ```css */
18
- sup[style] {
19
- display: block;
20
- font-size: min(50%, 0.75rem);
21
- letter-spacing: 0.0625em;
22
- text-transform: uppercase;
23
- }
24
- sub[style] {
25
- display: block;
26
- bottom: 0;
27
- font-weight: 300;
28
- line-height: 1.1;
29
- opacity: 75%;
30
- }
31
- sub[style]:where(h1 > *) {
32
- font-size: 50%;
33
- }
34
- /*```
35
-
36
- ### Teasers
37
-
38
- <article style="padding-inline: 2rem">
39
- <a href="https://blades.ninja/" role="button" class="outline">
40
- <h4>Blades CSS</h4>
41
- Fully compatible and actively maintained successor to Pico CSS.
42
- </a>
43
- </article>
44
-
45
- How it works:
46
- ```css */
47
- a[role="button"]:has(h1, h2, h3, h4, h5, h6) {
48
- margin: 0 0 0.5rem -1rem;
49
- border-width: 1px 0 0 1px;
50
- text-align: start;
51
- }
52
- /*```
53
-
54
- ### `.opt`ional content
55
-
56
- How it works:
57
- ```css */
58
- @media (width < 1024px) {
59
- .opt:not(.does-not-exist) {
60
- display: none
61
- }
62
- }
63
- /*```
64
-
65
- ### Nicer GitHub favicons
66
-
67
- <article>
68
-
69
- https://github.com/anyblades/blades
70
-
71
- </article>
72
-
73
- How it works:
74
- ```css */
75
- img[src*="?domain=github.com&"] {
76
- border-radius: 50%;
77
- }
78
- @media (prefers-color-scheme: dark) {
79
- img[src*="?domain=github.com&"] {
80
- filter: invert(1)
81
- }
82
- }
83
- /*```*/
package/css/ninja.min.css DELETED
@@ -1,5 +0,0 @@
1
- /*!
2
- * Blades CSS' ninja add-ons (experimental) 🥷🧪
3
- * Copyright 2026 (https://blades.ninja/css/ninja/)
4
- * Licensed under MIT
5
- */sup[style]{display:block;font-size:min(50%, .75rem);letter-spacing:.0625em;text-transform:uppercase}sub[style]{display:block;bottom:0;font-weight:300;line-height:1.1;opacity:75%}sub[style]:where(h1 > *){font-size:50%}a[role=button]:has(h1,h2,h3,h4,h5,h6){margin:0 0 .5rem -1rem;border-width:1px 0 0 1px;text-align:start}@media (width < 1024px){.opt:not(.does-not-exist){display:none}}img[src*="?domain=github.com&"]{border-radius:50%}@media (prefers-color-scheme:dark){img[src*="?domain=github.com&"]{filter:invert(1)}}
@@ -1,2 +0,0 @@
1
- @import "./standalone/_core";
2
- @import "./standalone/_theme";
@@ -1,32 +0,0 @@
1
- /*!
2
- * Blades CSS standalone kit v3 🥷
3
- * Copyright 2026 (https://blades.ninja/css/standalone/)
4
- * Licensed under MIT
5
- */
6
- /*<!--section:code-->```css */
7
-
8
- /* Follows https://github.com/picocss/pico/blob/main/scss/_index.scss */
9
-
10
- @import "./_variables";
11
-
12
- /* Layout */
13
- @import "./layout/_breakout";
14
- @import "./layout/_columns";
15
- @import "./layout/_scroller";
16
-
17
- /* Content */
18
- @import "./content/_typography";
19
- @import "./content/_list";
20
- @import "./content/_table";
21
- @import "./content/_table-responsive";
22
- @import "./content/_code";
23
-
24
- /* Forms */
25
- @import "./forms/_float-label.core";
26
-
27
- /* Components */
28
- @import "./components/_icon-helper";
29
- @import "./components/_timeline";
30
-
31
- /* Utilities */
32
- @import "./_utilities";
@@ -1,55 +0,0 @@
1
- /*<!--section:docs-->
2
-
3
- ## Dark auto
4
-
5
- `.dark-auto` automatically creates a simple dark version of any element:
6
-
7
- <article data-theme="dark">
8
- <p>Look how cool <big class="dark-auto">🔥🕷️🐦‍⬛🐄🦓</big> can look in the dark!</p>
9
- </article>
10
-
11
- How it works:
12
- ```css */
13
- /* Per https://picocss.com/docs/css-variables#css-variables-for-color-schemes */
14
- :root {
15
- --blades-dark-filter: invert(100%) hue-rotate(180deg);
16
- }
17
- .dark-auto {
18
- /* Dark color scheme (Auto) */
19
- @media (prefers-color-scheme: dark) {
20
- filter: var(--blades-dark-filter);
21
- }
22
- /* Dark color scheme (Forced) */
23
- &[data-theme="dark"],
24
- &:where([data-theme="dark"] *) {
25
- filter: var(--blades-dark-filter);
26
- }
27
- }
28
- /*```
29
-
30
- ## Faded
31
-
32
- `.faded` reduces the opacity of an element:
33
-
34
- <article class="faded">
35
- Hover to unfade me!
36
- </article>
37
-
38
- How it works:
39
- ```css */
40
- .faded {
41
- opacity: 50%;
42
-
43
- &:hover {
44
- opacity: 87.5%;
45
- }
46
- }
47
- /*```
48
- <!--section--> */
49
-
50
- /* Fix the scrollbar color when inverted by https://tailwindcss.com/docs/filter-invert */
51
- .invert {
52
- ::-webkit-scrollbar {
53
- filter: invert(1) !important;
54
- }
55
- }
@@ -1,2 +0,0 @@
1
- @import "./_float-label.core";
2
- @import "./_float-label.theme";
File without changes
File without changes
File without changes