layout-style-css 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +447 -0
  3. package/demo/assets/apple-touch-icon.svg +7 -0
  4. package/demo/assets/favicon.svg +7 -0
  5. package/demo/assets/social-card.svg +17 -0
  6. package/demo/browserconfig.xml +9 -0
  7. package/demo/index.html +700 -0
  8. package/demo/robots.txt +4 -0
  9. package/demo/site.webmanifest +23 -0
  10. package/demo/sitemap.xml +9 -0
  11. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +3 -0
  12. package/dist/layout-all-with-ui-kit.css +2 -0
  13. package/dist/layout-all.css +13 -0
  14. package/dist/layout-base.css +472 -0
  15. package/dist/layout-style-bauhaus.css +70 -0
  16. package/dist/layout-style-bento.css +76 -0
  17. package/dist/layout-style-brutalism.css +70 -0
  18. package/dist/layout-style-css.css +1367 -0
  19. package/dist/layout-style-css.min.css +1 -0
  20. package/dist/layout-style-cyberpunk.css +70 -0
  21. package/dist/layout-style-maximalist.css +93 -0
  22. package/dist/layout-style-minimal-saas.css +67 -0
  23. package/dist/layout-style-neumorphism.css +72 -0
  24. package/dist/layout-style-retro-glass.css +82 -0
  25. package/dist/layout-style-retrofuturism.css +71 -0
  26. package/dist/layout-style-tactile.css +70 -0
  27. package/dist/layout-style-y2k.css +72 -0
  28. package/dist/layout-ui-style-kit-bridge.css +55 -0
  29. package/package.json +97 -0
  30. package/styles/layout-base.css +472 -0
  31. package/styles/layout-style-bauhaus.css +70 -0
  32. package/styles/layout-style-bento.css +76 -0
  33. package/styles/layout-style-brutalism.css +70 -0
  34. package/styles/layout-style-cyberpunk.css +70 -0
  35. package/styles/layout-style-maximalist.css +93 -0
  36. package/styles/layout-style-minimal-saas.css +67 -0
  37. package/styles/layout-style-neumorphism.css +72 -0
  38. package/styles/layout-style-retro-glass.css +82 -0
  39. package/styles/layout-style-retrofuturism.css +71 -0
  40. package/styles/layout-style-tactile.css +70 -0
  41. package/styles/layout-style-y2k.css +72 -0
  42. package/styles/layout-ui-style-kit-bridge.css +55 -0
@@ -0,0 +1,71 @@
1
+ /*
2
+ Layout style: retrofuturism.
3
+ Panoramic bridge shell with symmetric pods and a wide central stage. Visual
4
+ identity remains owned by ui-style-kit-css.
5
+ */
6
+
7
+ @layer ly.styles.retrofuturism {
8
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) {
9
+ --ly-container-max: 110rem;
10
+ --ly-page-padding-inline: clamp(1rem, 4vw, 4rem);
11
+ --ly-section-padding-block: clamp(3rem, 8vw, 7rem);
12
+ --ly-sidebar-width: clamp(12rem, 14vw, 16rem);
13
+ --ly-grid-min: 15rem;
14
+ --ly-gap: clamp(1rem, 3vw, 2.5rem);
15
+ --ly-grid-gap: var(--ly-gap);
16
+ --ly-stack-gap: clamp(1rem, 2.4vw, 2rem);
17
+ }
18
+
19
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-main {
20
+ padding-block: clamp(1.5rem, 4vw, 3rem);
21
+ }
22
+
23
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-container,
24
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-wrapper {
25
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
+ }
27
+
28
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-section {
29
+ padding-block: var(--ly-section-padding-block);
30
+ }
31
+
32
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-grid--auto {
33
+ grid-auto-rows: minmax(8rem, auto);
34
+ }
35
+
36
+ @media (min-width: 56rem) {
37
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-shell {
38
+ grid-template-areas:
39
+ "header header header"
40
+ "sidebar main main";
41
+ grid-template-columns: minmax(min(100%, 12rem), 0.24fr) minmax(0, 1fr) minmax(min(100%, 12rem), 0.24fr);
42
+ }
43
+
44
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-sidebar {
45
+ display: block;
46
+ position: sticky;
47
+ top: clamp(1rem, 2vw, 1.5rem);
48
+ height: calc(100svh - clamp(2rem, 4vw, 3rem));
49
+ margin: clamp(1rem, 2vw, 1.5rem) 0 clamp(1rem, 2vw, 1.5rem) clamp(1rem, 2vw, 1.5rem);
50
+ overflow: auto;
51
+ }
52
+
53
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-sidebar-layout {
54
+ grid-template-columns: minmax(min(100%, 12rem), 0.32fr) minmax(0, 1fr);
55
+ }
56
+
57
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-split {
58
+ grid-template-columns: minmax(0, 1.35fr) minmax(min(100%, 16rem), 0.65fr);
59
+ }
60
+
61
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-panes--two {
62
+ grid-template-columns: minmax(min(100%, 14rem), 0.44fr) minmax(0, 1.2fr);
63
+ }
64
+ }
65
+
66
+ @media (min-width: 80rem) {
67
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-panes--three {
68
+ grid-template-columns: minmax(min(100%, 12rem), 0.44fr) minmax(0, 1.4fr) minmax(min(100%, 12rem), 0.44fr);
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,70 @@
1
+ /*
2
+ Layout style: tactile.
3
+ Instrument-panel shell with a heavier support dock and dense controls. Visual
4
+ identity remains owned by ui-style-kit-css.
5
+ */
6
+
7
+ @layer ly.styles.tactile {
8
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) {
9
+ --ly-container-max: 98rem;
10
+ --ly-page-padding-inline: clamp(1rem, 3vw, 2.75rem);
11
+ --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
12
+ --ly-sidebar-width: clamp(18rem, 22vw, 24rem);
13
+ --ly-grid-min: 15rem;
14
+ --ly-gap: clamp(1rem, 2.2vw, 1.75rem);
15
+ --ly-grid-gap: var(--ly-gap);
16
+ --ly-stack-gap: clamp(1rem, 2vw, 1.75rem);
17
+ }
18
+
19
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-main {
20
+ padding-block: clamp(1rem, 2.5vw, 2rem);
21
+ }
22
+
23
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-container,
24
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-wrapper {
25
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
+ }
27
+
28
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-section {
29
+ padding-block: var(--ly-section-padding-block);
30
+ }
31
+
32
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-grid--auto {
33
+ grid-auto-rows: minmax(8rem, auto);
34
+ }
35
+
36
+ @media (min-width: 48rem) {
37
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-shell {
38
+ grid-template-areas:
39
+ "sidebar header"
40
+ "sidebar main";
41
+ grid-template-columns: minmax(min(100%, 18rem), var(--ly-sidebar-width)) minmax(0, 1fr);
42
+ }
43
+
44
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-sidebar {
45
+ display: block;
46
+ position: sticky;
47
+ top: 0;
48
+ height: 100svh;
49
+ overflow: auto;
50
+ }
51
+
52
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-sidebar-layout {
53
+ grid-template-columns: minmax(min(100%, 18rem), 0.42fr) minmax(0, 1fr);
54
+ }
55
+
56
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-split {
57
+ grid-template-columns: minmax(0, 1.18fr) minmax(min(100%, 18rem), 0.82fr);
58
+ }
59
+
60
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-panes--two {
61
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 20rem), 0.62fr);
62
+ }
63
+ }
64
+
65
+ @media (min-width: 80rem) {
66
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-panes--three {
67
+ grid-template-columns: minmax(min(100%, 17rem), 0.4fr) minmax(0, 1fr) minmax(min(100%, 18rem), 0.46fr);
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,72 @@
1
+ /*
2
+ Layout style: y2k.
3
+ Centered hub shell with floating-window rhythm and in-flow support regions.
4
+ Visual identity remains owned by ui-style-kit-css.
5
+ */
6
+
7
+ @layer ly.styles.y2k {
8
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) {
9
+ --ly-container-max: 84rem;
10
+ --ly-page-padding-inline: clamp(1rem, 5vw, 4rem);
11
+ --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
12
+ --ly-sidebar-width: clamp(17rem, 22vw, 21rem);
13
+ --ly-grid-min: 16rem;
14
+ --ly-gap: clamp(1.25rem, 3vw, 2.5rem);
15
+ --ly-grid-gap: var(--ly-gap);
16
+ --ly-stack-gap: clamp(1rem, 2.5vw, 2rem);
17
+ }
18
+
19
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-main {
20
+ padding-block: clamp(2rem, 6vw, 4rem);
21
+ }
22
+
23
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-container,
24
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-wrapper {
25
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
+ }
27
+
28
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-section {
29
+ padding-block: var(--ly-section-padding-block);
30
+ }
31
+
32
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-grid--auto {
33
+ grid-auto-rows: minmax(8rem, auto);
34
+ }
35
+
36
+ @media (min-width: 54rem) {
37
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-shell {
38
+ grid-template-areas:
39
+ "header header"
40
+ "main sidebar";
41
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.34fr);
42
+ align-items: start;
43
+ }
44
+
45
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-sidebar {
46
+ display: block;
47
+ position: sticky;
48
+ top: clamp(1rem, 4vw, 3rem);
49
+ max-height: calc(100svh - clamp(2rem, 8vw, 6rem));
50
+ margin: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem) clamp(2rem, 6vw, 4rem) 0;
51
+ overflow: auto;
52
+ }
53
+
54
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-sidebar-layout {
55
+ grid-template-columns: minmax(0, 0.92fr) minmax(min(100%, 16rem), 1.08fr);
56
+ }
57
+
58
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-split {
59
+ grid-template-columns: minmax(0, 0.86fr) minmax(min(100%, 18rem), 1.14fr);
60
+ }
61
+
62
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-panes--two {
63
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.56fr);
64
+ }
65
+ }
66
+
67
+ @media (min-width: 80rem) {
68
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-panes--three {
69
+ grid-template-columns: minmax(min(100%, 16rem), 0.5fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.5fr);
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,55 @@
1
+ /*
2
+ Compatibility bridge for ui-style-kit-css.
3
+ This bridge intentionally does not map color, type, border, or shadow tokens.
4
+ ui-style-kit-css owns those visuals; layout-style-library owns structure.
5
+ */
6
+
7
+ @layer ly.bridge {
8
+ :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
9
+ --ly-ui-style-kit-bridge: 1;
10
+ }
11
+
12
+ :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
13
+ --ly-ui-style-kit-bridge-style: minimal-saas;
14
+ }
15
+
16
+ :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
17
+ --ly-ui-style-kit-bridge-style: bento;
18
+ }
19
+
20
+ :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
21
+ --ly-ui-style-kit-bridge-style: maximalist;
22
+ }
23
+
24
+ :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
25
+ --ly-ui-style-kit-bridge-style: bauhaus;
26
+ }
27
+
28
+ :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
29
+ --ly-ui-style-kit-bridge-style: tactile;
30
+ }
31
+
32
+ :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
33
+ --ly-ui-style-kit-bridge-style: neumorphism;
34
+ }
35
+
36
+ :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
37
+ --ly-ui-style-kit-bridge-style: retrofuturism;
38
+ }
39
+
40
+ :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
41
+ --ly-ui-style-kit-bridge-style: brutalism;
42
+ }
43
+
44
+ :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
45
+ --ly-ui-style-kit-bridge-style: cyberpunk;
46
+ }
47
+
48
+ :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
49
+ --ly-ui-style-kit-bridge-style: y2k;
50
+ }
51
+
52
+ :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
53
+ --ly-ui-style-kit-bridge-style: retro-glass;
54
+ }
55
+ }