layout-style-css 1.1.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +81 -44
  2. package/CONTRIBUTING.md +55 -50
  3. package/LICENSE +21 -21
  4. package/README.md +236 -636
  5. package/SECURITY.md +50 -45
  6. package/demo/assets/apple-touch-icon.svg +7 -7
  7. package/demo/assets/favicon.svg +7 -7
  8. package/demo/browserconfig.xml +9 -9
  9. package/demo/demo.css +523 -0
  10. package/demo/demo.js +605 -0
  11. package/demo/index.html +325 -976
  12. package/demo/robots.txt +4 -4
  13. package/demo/site.webmanifest +23 -23
  14. package/demo/sitemap.xml +9 -9
  15. package/dist/core.css +6 -0
  16. package/{styles/layout-ui-style-kit-bridge.css → dist/integrations/ui-style-kit.css} +175 -170
  17. package/dist/layout-style-css.css +1473 -1903
  18. package/dist/layout-style-css.min.css +1 -1
  19. package/dist/legacy.css +787 -0
  20. package/dist/personalities/bauhaus.css +46 -0
  21. package/dist/personalities/bento.css +43 -0
  22. package/dist/personalities/brutalism.css +36 -0
  23. package/dist/personalities/cyberpunk.css +36 -0
  24. package/dist/personalities/f-pattern.css +48 -0
  25. package/dist/personalities/maximalist.css +51 -0
  26. package/dist/personalities/minimal-saas.css +37 -0
  27. package/dist/personalities/mondrian.css +44 -0
  28. package/dist/personalities/neumorphism.css +46 -0
  29. package/dist/personalities/retro-glass.css +44 -0
  30. package/dist/personalities/retrofuturism.css +36 -0
  31. package/dist/personalities/split-screen.css +41 -0
  32. package/dist/personalities/synthwave.css +48 -0
  33. package/dist/personalities/tactile.css +39 -0
  34. package/dist/personalities/y2k.css +36 -0
  35. package/dist/personalities/z-pattern.css +49 -0
  36. package/dist/personalities.css +18 -0
  37. package/dist/primitives.css +219 -0
  38. package/dist/recipes.css +270 -0
  39. package/dist/utilities.css +162 -0
  40. package/dist/wrappers.css +174 -0
  41. package/docs/wiki/Contributing.md +36 -30
  42. package/docs/wiki/Demo-And-GitHub-Pages.md +53 -39
  43. package/docs/wiki/Getting-Started.md +51 -68
  44. package/docs/wiki/Home.md +33 -48
  45. package/docs/wiki/Installation-And-CDN.md +72 -58
  46. package/docs/wiki/Layout-Primitives.md +48 -57
  47. package/docs/wiki/Layout-Recipes.md +49 -80
  48. package/docs/wiki/Layout-Styles.md +33 -43
  49. package/docs/wiki/Migrating-To-2.0.md +186 -0
  50. package/docs/wiki/Release-And-Publishing.md +77 -69
  51. package/docs/wiki/Security-And-Support.md +36 -34
  52. package/docs/wiki/UI-Style-Kit-Compatibility.md +49 -54
  53. package/docs/wiki/_Sidebar.md +15 -14
  54. package/package.json +98 -107
  55. package/styles/core.css +6 -0
  56. package/{dist/layout-ui-style-kit-bridge.css → styles/integrations/ui-style-kit.css} +175 -170
  57. package/styles/legacy.css +173 -0
  58. package/styles/personalities/bauhaus.css +46 -0
  59. package/styles/personalities/bento.css +43 -0
  60. package/styles/personalities/brutalism.css +36 -0
  61. package/styles/personalities/cyberpunk.css +36 -0
  62. package/styles/personalities/f-pattern.css +48 -0
  63. package/styles/personalities/maximalist.css +51 -0
  64. package/styles/personalities/minimal-saas.css +37 -0
  65. package/styles/personalities/mondrian.css +44 -0
  66. package/styles/personalities/neumorphism.css +46 -0
  67. package/styles/personalities/retro-glass.css +44 -0
  68. package/styles/personalities/retrofuturism.css +36 -0
  69. package/styles/personalities/split-screen.css +41 -0
  70. package/styles/personalities/synthwave.css +48 -0
  71. package/styles/personalities/tactile.css +39 -0
  72. package/styles/personalities/y2k.css +36 -0
  73. package/styles/personalities/z-pattern.css +49 -0
  74. package/styles/personalities.css +18 -0
  75. package/styles/primitives.css +219 -0
  76. package/styles/recipes.css +270 -0
  77. package/styles/utilities.css +162 -0
  78. package/styles/wrappers.css +174 -0
  79. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +0 -3
  80. package/dist/layout-all-with-ui-kit.css +0 -2
  81. package/dist/layout-all.css +0 -18
  82. package/dist/layout-base.css +0 -539
  83. package/dist/layout-style-bauhaus.css +0 -70
  84. package/dist/layout-style-bento.css +0 -76
  85. package/dist/layout-style-brutalism.css +0 -70
  86. package/dist/layout-style-cyberpunk.css +0 -70
  87. package/dist/layout-style-f-pattern.css +0 -76
  88. package/dist/layout-style-maximalist.css +0 -93
  89. package/dist/layout-style-minimal-saas.css +0 -67
  90. package/dist/layout-style-mondrian.css +0 -77
  91. package/dist/layout-style-neumorphism.css +0 -72
  92. package/dist/layout-style-retro-glass.css +0 -82
  93. package/dist/layout-style-retrofuturism.css +0 -71
  94. package/dist/layout-style-split-screen.css +0 -62
  95. package/dist/layout-style-synthwave.css +0 -88
  96. package/dist/layout-style-tactile.css +0 -70
  97. package/dist/layout-style-y2k.css +0 -72
  98. package/dist/layout-style-z-pattern.css +0 -76
  99. package/styles/layout-base.css +0 -539
  100. package/styles/layout-style-bauhaus.css +0 -70
  101. package/styles/layout-style-bento.css +0 -76
  102. package/styles/layout-style-brutalism.css +0 -70
  103. package/styles/layout-style-cyberpunk.css +0 -70
  104. package/styles/layout-style-f-pattern.css +0 -76
  105. package/styles/layout-style-maximalist.css +0 -93
  106. package/styles/layout-style-minimal-saas.css +0 -67
  107. package/styles/layout-style-mondrian.css +0 -77
  108. package/styles/layout-style-neumorphism.css +0 -72
  109. package/styles/layout-style-retro-glass.css +0 -82
  110. package/styles/layout-style-retrofuturism.css +0 -71
  111. package/styles/layout-style-split-screen.css +0 -62
  112. package/styles/layout-style-synthwave.css +0 -88
  113. package/styles/layout-style-tactile.css +0 -70
  114. package/styles/layout-style-y2k.css +0 -72
  115. package/styles/layout-style-z-pattern.css +0 -76
package/package.json CHANGED
@@ -1,107 +1,98 @@
1
- {
2
- "name": "layout-style-css",
3
- "version": "1.1.2",
4
- "description": "Shell-first CSS layout primitives that complement ui-style-kit-css@2.0.1.",
5
- "type": "module",
6
- "license": "MIT",
7
- "homepage": "https://github.com/Foscat/layout-style-css#readme",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/Foscat/layout-style-css.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/Foscat/layout-style-css/issues"
14
- },
15
- "keywords": [
16
- "css",
17
- "layout",
18
- "design-system",
19
- "ui-style-kit-css",
20
- "responsive-layout",
21
- "shell-layouts"
22
- ],
23
- "main": "dist/layout-style-css.css",
24
- "style": "dist/layout-style-css.min.css",
25
- "unpkg": "dist/layout-style-css.min.css",
26
- "jsdelivr": "dist/layout-style-css.min.css",
27
- "scripts": {
28
- "build": "node scripts/build.mjs",
29
- "pages:build": "node scripts/build-pages.mjs",
30
- "lint": "stylelint \"styles/**/*.css\"",
31
- "test": "node test/layout-css-contract.test.mjs && node test/demo-smoke.test.mjs && node test/pages-artifact.test.mjs",
32
- "check": "npm run build && npm run lint && npm test && npm run pack:dry-run",
33
- "pack:dry-run": "npm pack --dry-run --ignore-scripts",
34
- "publish:dry-run": "npm publish --dry-run --access public",
35
- "release:verify": "npm run check && npm run publish:dry-run",
36
- "prepack": "npm run check",
37
- "prepublishOnly": "npm run check"
38
- },
39
- "publishConfig": {
40
- "access": "public"
41
- },
42
- "peerDependencies": {
43
- "interactive-surface-css": "1.2.5",
44
- "ui-style-kit-css": "2.0.1"
45
- },
46
- "peerDependenciesMeta": {
47
- "interactive-surface-css": {
48
- "optional": true
49
- }
50
- },
51
- "devDependencies": {
52
- "@playwright/test": "1.61.1",
53
- "interactive-surface-css": "1.2.5",
54
- "stylelint": "17.14.0",
55
- "ui-style-kit-css": "2.0.1"
56
- },
57
- "exports": {
58
- ".": "./dist/layout-style-css.css",
59
- "./css": "./dist/layout-style-css.css",
60
- "./css.css": "./dist/layout-style-css.css",
61
- "./min": "./dist/layout-style-css.min.css",
62
- "./min.css": "./dist/layout-style-css.min.css",
63
- "./dist/*.css": "./dist/*.css",
64
- "./dist/layout-style-css.css": "./dist/layout-style-css.css",
65
- "./dist/layout-style-css.min.css": "./dist/layout-style-css.min.css",
66
- "./base.css": "./dist/layout-base.css",
67
- "./bridge.css": "./dist/layout-ui-style-kit-bridge.css",
68
- "./all.css": "./dist/layout-all.css",
69
- "./all-with-ui-kit.css": "./dist/layout-all-with-ui-kit.css",
70
- "./all-with-ui-kit-and-interactive-surface.css": "./dist/layout-all-with-ui-kit-and-interactive-surface.css",
71
- "./minimal-saas.css": "./dist/layout-style-minimal-saas.css",
72
- "./bento.css": "./dist/layout-style-bento.css",
73
- "./maximalist.css": "./dist/layout-style-maximalist.css",
74
- "./bauhaus.css": "./dist/layout-style-bauhaus.css",
75
- "./tactile.css": "./dist/layout-style-tactile.css",
76
- "./neumorphism.css": "./dist/layout-style-neumorphism.css",
77
- "./retrofuturism.css": "./dist/layout-style-retrofuturism.css",
78
- "./brutalism.css": "./dist/layout-style-brutalism.css",
79
- "./cyberpunk.css": "./dist/layout-style-cyberpunk.css",
80
- "./y2k.css": "./dist/layout-style-y2k.css",
81
- "./retro-glass.css": "./dist/layout-style-retro-glass.css",
82
- "./f-pattern.css": "./dist/layout-style-f-pattern.css",
83
- "./z-pattern.css": "./dist/layout-style-z-pattern.css",
84
- "./split-screen.css": "./dist/layout-style-split-screen.css",
85
- "./mondrian.css": "./dist/layout-style-mondrian.css",
86
- "./synthwave.css": "./dist/layout-style-synthwave.css",
87
- "./package.json": "./package.json"
88
- },
89
- "files": [
90
- "dist",
91
- "styles",
92
- "docs/wiki",
93
- "demo/index.html",
94
- "demo/assets/apple-touch-icon.svg",
95
- "demo/assets/favicon.svg",
96
- "demo/assets/social-card.png",
97
- "demo/browserconfig.xml",
98
- "demo/robots.txt",
99
- "demo/site.webmanifest",
100
- "demo/sitemap.xml",
101
- "README.md",
102
- "CHANGELOG.md",
103
- "CONTRIBUTING.md",
104
- "SECURITY.md",
105
- "LICENSE"
106
- ]
107
- }
1
+ {
2
+ "name": "layout-style-css",
3
+ "version": "2.1.0",
4
+ "description": "Dependency-free structural CSS for responsive wrappers, composition primitives, recipes, utilities, and layout personalities.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/Foscat/layout-style-css#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Foscat/layout-style-css.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/Foscat/layout-style-css/issues"
14
+ },
15
+ "engines": {
16
+ "node": ">=20"
17
+ },
18
+ "keywords": [
19
+ "css",
20
+ "layout",
21
+ "design-system",
22
+ "ui-style-kit-css",
23
+ "responsive-layout",
24
+ "shell-layouts"
25
+ ],
26
+ "main": "dist/layout-style-css.css",
27
+ "style": "dist/layout-style-css.min.css",
28
+ "unpkg": "dist/layout-style-css.min.css",
29
+ "jsdelivr": "dist/layout-style-css.min.css",
30
+ "scripts": {
31
+ "build": "node scripts/build.mjs",
32
+ "pages:build": "node scripts/build-pages.mjs",
33
+ "lint": "stylelint \"styles/**/*.css\" \"demo/**/*.css\"",
34
+ "check:demo-js": "node --check demo/demo.js",
35
+ "test:static": "node test/layout-css-contract.test.mjs && node test/release-docs-contract.test.mjs",
36
+ "test:demo:quick": "node test/demo-smoke.test.mjs --quick --browser=chromium",
37
+ "test:demo:chromium": "node test/demo-smoke.test.mjs --browser=chromium",
38
+ "test:demo:firefox": "node test/demo-smoke.test.mjs --browser=firefox",
39
+ "test:demo:webkit": "node test/demo-smoke.test.mjs --browser=webkit",
40
+ "test:demo:all": "npm run test:demo:chromium && npm run test:demo:firefox && npm run test:demo:webkit",
41
+ "test:pages": "node test/pages-artifact.test.mjs",
42
+ "test": "npm run test:static && npm run test:demo:quick && npm run test:pages",
43
+ "test:full": "npm run test:static && npm run test:demo:all && npm run test:pages",
44
+ "check": "npm run build && npm run lint && npm run check:demo-js && npm test && npm run pack:dry-run",
45
+ "check:full": "npm run build && npm run lint && npm run check:demo-js && npm run test:full && npm run pack:dry-run",
46
+ "pack:dry-run": "npm pack --dry-run --ignore-scripts",
47
+ "publish:dry-run": "npm publish --dry-run --access public --ignore-scripts",
48
+ "release:verify": "npm run check:full && npm audit --audit-level=moderate && npm run publish:dry-run",
49
+ "prepack": "npm run build && npm run test:static",
50
+ "prepublishOnly": "npm run release:verify"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "devDependencies": {
56
+ "@playwright/test": "1.61.1",
57
+ "interactive-surface-css": "1.5.0",
58
+ "stylelint": "17.14.0",
59
+ "ui-style-kit-css": "2.1.0"
60
+ },
61
+ "exports": {
62
+ ".": "./dist/layout-style-css.css",
63
+ "./css": "./dist/layout-style-css.css",
64
+ "./css.css": "./dist/layout-style-css.css",
65
+ "./min": "./dist/layout-style-css.min.css",
66
+ "./min.css": "./dist/layout-style-css.min.css",
67
+ "./core.css": "./dist/core.css",
68
+ "./wrappers.css": "./dist/wrappers.css",
69
+ "./primitives.css": "./dist/primitives.css",
70
+ "./recipes.css": "./dist/recipes.css",
71
+ "./utilities.css": "./dist/utilities.css",
72
+ "./personalities.css": "./dist/personalities.css",
73
+ "./personalities/*.css": "./dist/personalities/*.css",
74
+ "./integrations/ui-style-kit.css": "./dist/integrations/ui-style-kit.css",
75
+ "./legacy.css": "./dist/legacy.css",
76
+ "./package.json": "./package.json"
77
+ },
78
+ "files": [
79
+ "dist",
80
+ "styles",
81
+ "docs/wiki",
82
+ "demo/index.html",
83
+ "demo/demo.css",
84
+ "demo/demo.js",
85
+ "demo/assets/apple-touch-icon.svg",
86
+ "demo/assets/favicon.svg",
87
+ "demo/assets/social-card.png",
88
+ "demo/browserconfig.xml",
89
+ "demo/robots.txt",
90
+ "demo/site.webmanifest",
91
+ "demo/sitemap.xml",
92
+ "README.md",
93
+ "CHANGELOG.md",
94
+ "CONTRIBUTING.md",
95
+ "SECURITY.md",
96
+ "LICENSE"
97
+ ]
98
+ }
@@ -0,0 +1,6 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ @import url("./wrappers.css");
4
+ @import url("./primitives.css");
5
+ @import url("./recipes.css");
6
+ @import url("./utilities.css");
@@ -1,170 +1,175 @@
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
- Normalize UI kit root background geometry without redefining its paint.
13
- Patterned theme layers should fill the viewport once instead of tiling.
14
- */
15
- min-block-size: 100svh;
16
- background-attachment: fixed;
17
- background-position: center;
18
- background-repeat: no-repeat;
19
- background-size: 100% 100%;
20
- }
21
-
22
- :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
23
- --ly-ui-style-kit-bridge-style: minimal-saas;
24
- }
25
-
26
- :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
27
- --ly-ui-style-kit-bridge-style: bento;
28
- }
29
-
30
- :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
31
- --ly-ui-style-kit-bridge-style: maximalist;
32
- }
33
-
34
- :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
35
- --ly-ui-style-kit-bridge-style: bauhaus;
36
- }
37
-
38
- :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
39
- --ly-ui-style-kit-bridge-style: tactile;
40
- }
41
-
42
- :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
43
- --ly-ui-style-kit-bridge-style: neumorphism;
44
- }
45
-
46
- :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
47
- --ly-ui-style-kit-bridge-style: retrofuturism;
48
- }
49
-
50
- :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
51
- --ly-ui-style-kit-bridge-style: brutalism;
52
- }
53
-
54
- :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
55
- --ly-ui-style-kit-bridge-style: cyberpunk;
56
- }
57
-
58
- :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
59
- --ly-ui-style-kit-bridge-style: y2k;
60
- }
61
-
62
- :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
63
- --ly-ui-style-kit-bridge-style: retro-glass;
64
- }
65
-
66
- :where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
67
- /* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
68
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
69
- margin-inline: auto;
70
- }
71
-
72
- :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
73
- padding-block: var(--ly-section-padding-block);
74
- }
75
-
76
- :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
77
- display: flex;
78
- flex-direction: column;
79
- gap: var(--ly-stack-gap);
80
- }
81
-
82
- :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
83
- display: flex;
84
- flex-wrap: wrap;
85
- align-items: center;
86
- gap: var(--ly-cluster-gap);
87
- }
88
-
89
- :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
90
- display: grid;
91
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
92
- gap: var(--ly-grid-gap);
93
- }
94
-
95
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
96
- display: grid;
97
- grid-template-columns: 1fr;
98
- gap: var(--ly-gap);
99
- align-items: var(--ly-split-align, center);
100
- }
101
-
102
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
103
- min-width: 0;
104
- }
105
-
106
- :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) {
107
- display: flex;
108
- flex-wrap: wrap;
109
- align-items: center;
110
- gap: var(--ly-cluster-gap);
111
- }
112
-
113
- :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) > * {
114
- flex: 0 1 auto;
115
- min-width: min(100%, var(--ly-button-min, 8rem));
116
- }
117
-
118
- :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) {
119
- display: grid;
120
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
121
- gap: var(--ly-grid-gap);
122
- }
123
-
124
- :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) > * {
125
- min-width: 0;
126
- }
127
-
128
- :where(.saas-card-sm, .bento-card-sm, .max-card-sm, .bau-card-sm, .tactile-card-sm, .neo-card-sm, .retro-card-sm, .brutal-card-sm, .cyber-card-sm, .y2k-card-sm, .rg-card-sm) {
129
- min-block-size: var(--ly-card-size-sm);
130
- }
131
-
132
- :where(.saas-card-md, .bento-card-md, .max-card-md, .bau-card-md, .tactile-card-md, .neo-card-md, .retro-card-md, .brutal-card-md, .cyber-card-md, .y2k-card-md, .rg-card-md) {
133
- min-block-size: var(--ly-card-size-md);
134
- }
135
-
136
- :where(.saas-card-lg, .bento-card-lg, .max-card-lg, .bau-card-lg, .tactile-card-lg, .neo-card-lg, .retro-card-lg, .brutal-card-lg, .cyber-card-lg, .y2k-card-lg, .rg-card-lg) {
137
- min-block-size: var(--ly-card-size-lg);
138
- }
139
-
140
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
141
- display: grid;
142
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
143
- gap: var(--ly-grid-gap);
144
- }
145
-
146
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
147
- min-width: 0;
148
- }
149
-
150
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
151
- display: grid;
152
- grid-auto-flow: column;
153
- grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
154
- gap: var(--ly-grid-gap);
155
- overflow-x: auto;
156
- overscroll-behavior-inline: contain;
157
- scroll-snap-type: x proximity;
158
- }
159
-
160
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
161
- min-width: 0;
162
- scroll-snap-align: start;
163
- }
164
-
165
- @media (min-width: 48rem) {
166
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
167
- grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
168
- }
169
- }
170
- }
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /*
4
+ Compatibility bridge for ui-style-kit-css.
5
+ This bridge intentionally does not map color, type, border, or shadow tokens.
6
+ ui-style-kit-css owns those visuals; layout-style-css owns structure.
7
+ */
8
+
9
+ @layer ly.integrations.ui_style_kit {
10
+ :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
11
+ --ly-ui-style-kit-bridge: 1;
12
+
13
+ /*
14
+ Normalize UI kit root background geometry without redefining its paint.
15
+ Patterned theme layers should fill the viewport once instead of tiling.
16
+ */
17
+ min-block-size: 100svh;
18
+ background-attachment: fixed;
19
+ background-position: center;
20
+ background-repeat: no-repeat;
21
+ background-size: 100% 100%;
22
+ }
23
+
24
+ :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
25
+ --ly-ui-style-kit-bridge-style: minimal-saas;
26
+ }
27
+
28
+ :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
29
+ --ly-ui-style-kit-bridge-style: bento;
30
+ }
31
+
32
+ :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
33
+ --ly-ui-style-kit-bridge-style: maximalist;
34
+ }
35
+
36
+ :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
37
+ --ly-ui-style-kit-bridge-style: bauhaus;
38
+ }
39
+
40
+ :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
41
+ --ly-ui-style-kit-bridge-style: tactile;
42
+ }
43
+
44
+ :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
45
+ --ly-ui-style-kit-bridge-style: neumorphism;
46
+ }
47
+
48
+ :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
49
+ --ly-ui-style-kit-bridge-style: retrofuturism;
50
+ }
51
+
52
+ :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
53
+ --ly-ui-style-kit-bridge-style: brutalism;
54
+ }
55
+
56
+ :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
57
+ --ly-ui-style-kit-bridge-style: cyberpunk;
58
+ }
59
+
60
+ :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
61
+ --ly-ui-style-kit-bridge-style: y2k;
62
+ }
63
+
64
+ :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
65
+ --ly-ui-style-kit-bridge-style: retro-glass;
66
+ }
67
+
68
+ :where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
69
+ /* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
70
+ container-name: ly-wrapper;
71
+ container-type: inline-size;
72
+ inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-gutter) * 2)));
73
+ margin-inline: auto;
74
+ padding-inline: var(--ly-wrapper-gutter);
75
+ }
76
+
77
+ :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
78
+ padding-block: var(--ly-section-padding-block);
79
+ }
80
+
81
+ :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: var(--ly-stack-gap);
85
+ }
86
+
87
+ :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ align-items: center;
91
+ gap: var(--ly-cluster-gap);
92
+ }
93
+
94
+ :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
97
+ gap: var(--ly-grid-gap);
98
+ }
99
+
100
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
101
+ display: grid;
102
+ grid-template-columns: 1fr;
103
+ gap: var(--ly-gap);
104
+ align-items: var(--ly-split-align, center);
105
+ }
106
+
107
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
108
+ min-width: 0;
109
+ }
110
+
111
+ :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ align-items: center;
115
+ gap: var(--ly-cluster-gap);
116
+ }
117
+
118
+ :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) > * {
119
+ flex: 0 1 auto;
120
+ min-width: min(100%, var(--ly-button-min, 8rem));
121
+ }
122
+
123
+ :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) {
124
+ display: grid;
125
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
126
+ gap: var(--ly-grid-gap);
127
+ }
128
+
129
+ :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) > * {
130
+ min-width: 0;
131
+ }
132
+
133
+ :where(.saas-card-sm, .bento-card-sm, .max-card-sm, .bau-card-sm, .tactile-card-sm, .neo-card-sm, .retro-card-sm, .brutal-card-sm, .cyber-card-sm, .y2k-card-sm, .rg-card-sm) {
134
+ min-block-size: var(--ly-card-size-sm);
135
+ }
136
+
137
+ :where(.saas-card-md, .bento-card-md, .max-card-md, .bau-card-md, .tactile-card-md, .neo-card-md, .retro-card-md, .brutal-card-md, .cyber-card-md, .y2k-card-md, .rg-card-md) {
138
+ min-block-size: var(--ly-card-size-md);
139
+ }
140
+
141
+ :where(.saas-card-lg, .bento-card-lg, .max-card-lg, .bau-card-lg, .tactile-card-lg, .neo-card-lg, .retro-card-lg, .brutal-card-lg, .cyber-card-lg, .y2k-card-lg, .rg-card-lg) {
142
+ min-block-size: var(--ly-card-size-lg);
143
+ }
144
+
145
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
146
+ display: grid;
147
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
148
+ gap: var(--ly-grid-gap);
149
+ }
150
+
151
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
152
+ min-width: 0;
153
+ }
154
+
155
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
156
+ display: grid;
157
+ grid-auto-flow: column;
158
+ grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
159
+ gap: var(--ly-grid-gap);
160
+ overflow-x: auto;
161
+ overscroll-behavior-inline: contain;
162
+ scroll-snap-type: x proximity;
163
+ }
164
+
165
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
166
+ min-width: 0;
167
+ scroll-snap-align: start;
168
+ }
169
+
170
+ @container (min-width: 48rem) {
171
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
172
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
173
+ }
174
+ }
175
+ }