@duskmoon-dev/core 1.18.6 → 1.19.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.md CHANGED
@@ -442,4 +442,4 @@ See [specs/004-oklch-color-system/quickstart.md](./specs/004-oklch-color-system/
442
442
 
443
443
  MIT
444
444
 
445
- <!-- release 33708081247 -->
445
+ <!-- release 33856237002 -->
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => {
18
18
  return cached;
19
19
  }
20
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
21
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
21
+ const to = isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
22
  if (mod && typeof mod === "object" || typeof mod === "function") {
23
23
  for (let key of __getOwnPropNames(mod))
24
24
  if (!__hasOwnProp.call(to, key))
@@ -69,7 +69,7 @@ __export(exports_tailwind_plugin, {
69
69
  duskmoonPlugin: () => duskmoonPlugin
70
70
  });
71
71
  module.exports = __toCommonJS(exports_tailwind_plugin);
72
- var import_plugin = __toESM(require("tailwindcss/plugin"));
72
+ var import_plugin = __toESM(require("tailwindcss/plugin"), 1);
73
73
  var themeColors = {
74
74
  primary: "var(--color-primary)",
75
75
  "primary-content": "var(--color-primary-content)",
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Console Page Layout
3
+ * Responsive application shell with expanded, icon-rail, and hidden sidebar states.
4
+ */
5
+
6
+ @layer components {
7
+ .console-page {
8
+ --console-page-sidebar-width: 17.5rem;
9
+ --console-page-sidebar-compact-width: 5rem;
10
+ container-type: inline-size;
11
+ container-name: console-page;
12
+ width: 100%;
13
+ min-width: 0;
14
+ min-height: var(--console-page-min-height, 100dvh);
15
+ background-color: var(--color-surface);
16
+ color: var(--color-on-surface);
17
+ }
18
+
19
+ .console-page-frame {
20
+ display: grid;
21
+ min-height: inherit;
22
+ grid-template-areas:
23
+ "appbar"
24
+ "main";
25
+ grid-template-columns: minmax(0, 1fr);
26
+ grid-template-rows: auto minmax(0, 1fr);
27
+ transition: grid-template-columns 240ms ease-out;
28
+ }
29
+
30
+ .console-page-appbar {
31
+ grid-area: appbar;
32
+ z-index: 20;
33
+ }
34
+
35
+ .console-page-sidebar {
36
+ display: none;
37
+ grid-area: sidebar;
38
+ min-width: 0;
39
+ overflow: hidden;
40
+ background-color: var(--color-surface-container-low);
41
+ border-inline-end: 1px solid var(--color-outline-variant);
42
+ transition:
43
+ opacity 160ms ease-out,
44
+ visibility 160ms ease-out;
45
+ }
46
+
47
+ .console-page-sidebar-header,
48
+ .console-page-sidebar-footer {
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 0.75rem;
52
+ min-height: 4rem;
53
+ padding: 0.75rem 1rem;
54
+ flex-shrink: 0;
55
+ }
56
+
57
+ .console-page-sidebar-header {
58
+ border-bottom: 1px solid var(--color-outline-variant);
59
+ }
60
+
61
+ .console-page-sidebar-body {
62
+ flex: 1;
63
+ min-height: 0;
64
+ overflow-y: auto;
65
+ overflow-x: hidden;
66
+ padding-block: 0.5rem;
67
+ }
68
+
69
+ .console-page-sidebar-footer {
70
+ border-top: 1px solid var(--color-outline-variant);
71
+ }
72
+
73
+ .console-page-main {
74
+ grid-area: main;
75
+ min-width: 0;
76
+ overflow: auto;
77
+ padding: clamp(1rem, 4cqi, 2.5rem);
78
+ background-color: var(--color-surface);
79
+ }
80
+
81
+ .console-page-nav-label {
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+ white-space: nowrap;
85
+ }
86
+
87
+ .console-page-sidebar-toggle {
88
+ display: none;
89
+ }
90
+
91
+ .console-page-menu-trigger {
92
+ display: inline-flex;
93
+ }
94
+
95
+ .console-page-mobile-menu {
96
+ max-width: min(20rem, calc(100cqi - 2rem));
97
+ }
98
+
99
+ @container console-page (min-width: 48rem) {
100
+ .console-page-frame {
101
+ grid-template-areas:
102
+ "appbar appbar"
103
+ "sidebar main";
104
+ grid-template-columns: var(--console-page-sidebar-width) minmax(0, 1fr);
105
+ }
106
+
107
+ .console-page-sidebar {
108
+ display: flex;
109
+ flex-direction: column;
110
+ }
111
+
112
+ .console-page-sidebar-toggle {
113
+ display: inline-flex;
114
+ }
115
+
116
+ .console-page-menu-trigger {
117
+ display: none;
118
+ }
119
+
120
+ .console-page-mobile-menu {
121
+ display: none;
122
+ }
123
+
124
+ .console-page-sidebar-compact .console-page-frame {
125
+ grid-template-columns: var(--console-page-sidebar-compact-width) minmax(0, 1fr);
126
+ }
127
+
128
+ .console-page-sidebar-compact .console-page-nav-label {
129
+ position: absolute;
130
+ width: 1px;
131
+ height: 1px;
132
+ padding: 0;
133
+ margin: -1px;
134
+ overflow: hidden;
135
+ clip: rect(0, 0, 0, 0);
136
+ white-space: nowrap;
137
+ border: 0;
138
+ }
139
+
140
+ .console-page-sidebar-compact .console-page-sidebar-header,
141
+ .console-page-sidebar-compact .console-page-sidebar-footer {
142
+ justify-content: center;
143
+ padding-inline: 0.75rem;
144
+ }
145
+
146
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu li > a, .nested-menu li > button, .nested-menu summary) {
147
+ justify-content: center;
148
+ padding-inline: 0.75rem;
149
+ }
150
+
151
+ .console-page-sidebar-compact .console-page-sidebar-body .drawer-item {
152
+ justify-content: center;
153
+ padding-inline: 0.75rem;
154
+ }
155
+
156
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu-title, details > ul, summary::after) {
157
+ display: none;
158
+ }
159
+
160
+ .console-page-sidebar-hidden .console-page-frame {
161
+ grid-template-areas:
162
+ "appbar"
163
+ "main";
164
+ grid-template-columns: minmax(0, 1fr);
165
+ }
166
+
167
+ .console-page-sidebar-hidden .console-page-sidebar {
168
+ display: none;
169
+ }
170
+ }
171
+
172
+ @media (prefers-reduced-motion: reduce) {
173
+ .console-page-frame,
174
+ .console-page-sidebar {
175
+ transition: none;
176
+ }
177
+ }
178
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Home Page Layout
3
+ * App-bar-led public application shell driven by its containing width.
4
+ */
5
+
6
+ @layer components {
7
+ .home-page {
8
+ container-type: inline-size;
9
+ container-name: home-page;
10
+ width: 100%;
11
+ min-width: 0;
12
+ min-height: var(--home-page-min-height, 100dvh);
13
+ background-color: var(--color-surface);
14
+ color: var(--color-on-surface);
15
+ }
16
+
17
+ .home-page-frame {
18
+ display: grid;
19
+ min-height: inherit;
20
+ grid-template-rows: auto minmax(0, 1fr) auto;
21
+ }
22
+
23
+ .home-page-header {
24
+ z-index: 10;
25
+ }
26
+
27
+ .home-page-nav {
28
+ display: none;
29
+ align-items: center;
30
+ gap: 0.25rem;
31
+ }
32
+
33
+ .home-page-actions {
34
+ display: none;
35
+ align-items: center;
36
+ gap: 0.25rem;
37
+ }
38
+
39
+ .home-page-menu-trigger {
40
+ display: inline-flex;
41
+ }
42
+
43
+ .home-page-mobile-menu {
44
+ max-width: min(20rem, calc(100cqi - 2rem));
45
+ }
46
+
47
+ .home-page-main {
48
+ min-width: 0;
49
+ }
50
+
51
+ .home-page-content {
52
+ width: min(100%, 80rem);
53
+ margin-inline: auto;
54
+ padding: clamp(1rem, 5cqi, 3rem);
55
+ }
56
+
57
+ .home-page-hero {
58
+ display: grid;
59
+ align-items: center;
60
+ grid-template-columns: minmax(0, 1fr);
61
+ gap: clamp(2rem, 5cqi, 4rem);
62
+ }
63
+
64
+ .home-page-footer {
65
+ border-top: 1px solid var(--color-outline-variant);
66
+ background-color: var(--color-surface-container-low);
67
+ }
68
+
69
+ @container home-page (min-width: 48rem) {
70
+ .home-page-nav {
71
+ display: flex;
72
+ }
73
+
74
+ .home-page-actions {
75
+ display: flex;
76
+ }
77
+
78
+ .home-page-menu-trigger {
79
+ display: none;
80
+ }
81
+
82
+ .home-page-mobile-menu {
83
+ display: none;
84
+ }
85
+
86
+ .home-page-content {
87
+ padding-inline: clamp(2rem, 5cqi, 5rem);
88
+ }
89
+
90
+ .home-page-hero {
91
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.8fr);
92
+ }
93
+ }
94
+ }
@@ -15177,6 +15177,185 @@
15177
15177
  }
15178
15178
  }
15179
15179
 
15180
+ /**
15181
+ * Console Page Layout
15182
+ * Responsive application shell with expanded, icon-rail, and hidden sidebar states.
15183
+ */
15184
+
15185
+ @layer components {
15186
+ .console-page {
15187
+ --console-page-sidebar-width: 17.5rem;
15188
+ --console-page-sidebar-compact-width: 5rem;
15189
+ container-type: inline-size;
15190
+ container-name: console-page;
15191
+ width: 100%;
15192
+ min-width: 0;
15193
+ min-height: var(--console-page-min-height, 100dvh);
15194
+ background-color: var(--color-surface);
15195
+ color: var(--color-on-surface);
15196
+ }
15197
+
15198
+ .console-page-frame {
15199
+ display: grid;
15200
+ min-height: inherit;
15201
+ grid-template-areas:
15202
+ "appbar"
15203
+ "main";
15204
+ grid-template-columns: minmax(0, 1fr);
15205
+ grid-template-rows: auto minmax(0, 1fr);
15206
+ transition: grid-template-columns 240ms ease-out;
15207
+ }
15208
+
15209
+ .console-page-appbar {
15210
+ grid-area: appbar;
15211
+ z-index: 20;
15212
+ }
15213
+
15214
+ .console-page-sidebar {
15215
+ display: none;
15216
+ grid-area: sidebar;
15217
+ min-width: 0;
15218
+ overflow: hidden;
15219
+ background-color: var(--color-surface-container-low);
15220
+ border-inline-end: 1px solid var(--color-outline-variant);
15221
+ transition:
15222
+ opacity 160ms ease-out,
15223
+ visibility 160ms ease-out;
15224
+ }
15225
+
15226
+ .console-page-sidebar-header,
15227
+ .console-page-sidebar-footer {
15228
+ display: flex;
15229
+ align-items: center;
15230
+ gap: 0.75rem;
15231
+ min-height: 4rem;
15232
+ padding: 0.75rem 1rem;
15233
+ flex-shrink: 0;
15234
+ }
15235
+
15236
+ .console-page-sidebar-header {
15237
+ border-bottom: 1px solid var(--color-outline-variant);
15238
+ }
15239
+
15240
+ .console-page-sidebar-body {
15241
+ flex: 1;
15242
+ min-height: 0;
15243
+ overflow-y: auto;
15244
+ overflow-x: hidden;
15245
+ padding-block: 0.5rem;
15246
+ }
15247
+
15248
+ .console-page-sidebar-footer {
15249
+ border-top: 1px solid var(--color-outline-variant);
15250
+ }
15251
+
15252
+ .console-page-main {
15253
+ grid-area: main;
15254
+ min-width: 0;
15255
+ overflow: auto;
15256
+ padding: clamp(1rem, 4cqi, 2.5rem);
15257
+ background-color: var(--color-surface);
15258
+ }
15259
+
15260
+ .console-page-nav-label {
15261
+ overflow: hidden;
15262
+ text-overflow: ellipsis;
15263
+ white-space: nowrap;
15264
+ }
15265
+
15266
+ .console-page-sidebar-toggle {
15267
+ display: none;
15268
+ }
15269
+
15270
+ .console-page-menu-trigger {
15271
+ display: inline-flex;
15272
+ }
15273
+
15274
+ .console-page-mobile-menu {
15275
+ max-width: min(20rem, calc(100cqi - 2rem));
15276
+ }
15277
+
15278
+ @container console-page (min-width: 48rem) {
15279
+ .console-page-frame {
15280
+ grid-template-areas:
15281
+ "appbar appbar"
15282
+ "sidebar main";
15283
+ grid-template-columns: var(--console-page-sidebar-width) minmax(0, 1fr);
15284
+ }
15285
+
15286
+ .console-page-sidebar {
15287
+ display: flex;
15288
+ flex-direction: column;
15289
+ }
15290
+
15291
+ .console-page-sidebar-toggle {
15292
+ display: inline-flex;
15293
+ }
15294
+
15295
+ .console-page-menu-trigger {
15296
+ display: none;
15297
+ }
15298
+
15299
+ .console-page-mobile-menu {
15300
+ display: none;
15301
+ }
15302
+
15303
+ .console-page-sidebar-compact .console-page-frame {
15304
+ grid-template-columns: var(--console-page-sidebar-compact-width) minmax(0, 1fr);
15305
+ }
15306
+
15307
+ .console-page-sidebar-compact .console-page-nav-label {
15308
+ position: absolute;
15309
+ width: 1px;
15310
+ height: 1px;
15311
+ padding: 0;
15312
+ margin: -1px;
15313
+ overflow: hidden;
15314
+ clip: rect(0, 0, 0, 0);
15315
+ white-space: nowrap;
15316
+ border: 0;
15317
+ }
15318
+
15319
+ .console-page-sidebar-compact .console-page-sidebar-header,
15320
+ .console-page-sidebar-compact .console-page-sidebar-footer {
15321
+ justify-content: center;
15322
+ padding-inline: 0.75rem;
15323
+ }
15324
+
15325
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu li > a, .nested-menu li > button, .nested-menu summary) {
15326
+ justify-content: center;
15327
+ padding-inline: 0.75rem;
15328
+ }
15329
+
15330
+ .console-page-sidebar-compact .console-page-sidebar-body .drawer-item {
15331
+ justify-content: center;
15332
+ padding-inline: 0.75rem;
15333
+ }
15334
+
15335
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu-title, details > ul, summary::after) {
15336
+ display: none;
15337
+ }
15338
+
15339
+ .console-page-sidebar-hidden .console-page-frame {
15340
+ grid-template-areas:
15341
+ "appbar"
15342
+ "main";
15343
+ grid-template-columns: minmax(0, 1fr);
15344
+ }
15345
+
15346
+ .console-page-sidebar-hidden .console-page-sidebar {
15347
+ display: none;
15348
+ }
15349
+ }
15350
+
15351
+ @media (prefers-reduced-motion: reduce) {
15352
+ .console-page-frame,
15353
+ .console-page-sidebar {
15354
+ transition: none;
15355
+ }
15356
+ }
15357
+ }
15358
+
15180
15359
  /**
15181
15360
  * Divider Component Styles
15182
15361
  * DuskMoonUI - Material Design 3 inspired divider system
@@ -15552,6 +15731,182 @@
15552
15731
  }
15553
15732
  }
15554
15733
 
15734
+ /**
15735
+ * Home Page Layout
15736
+ * App-bar-led public application shell driven by its containing width.
15737
+ */
15738
+
15739
+ @layer components {
15740
+ .home-page {
15741
+ container-type: inline-size;
15742
+ container-name: home-page;
15743
+ width: 100%;
15744
+ min-width: 0;
15745
+ min-height: var(--home-page-min-height, 100dvh);
15746
+ background-color: var(--color-surface);
15747
+ color: var(--color-on-surface);
15748
+ }
15749
+
15750
+ .home-page-frame {
15751
+ display: grid;
15752
+ min-height: inherit;
15753
+ grid-template-rows: auto minmax(0, 1fr) auto;
15754
+ }
15755
+
15756
+ .home-page-header {
15757
+ z-index: 10;
15758
+ }
15759
+
15760
+ .home-page-nav {
15761
+ display: none;
15762
+ align-items: center;
15763
+ gap: 0.25rem;
15764
+ }
15765
+
15766
+ .home-page-actions {
15767
+ display: none;
15768
+ align-items: center;
15769
+ gap: 0.25rem;
15770
+ }
15771
+
15772
+ .home-page-menu-trigger {
15773
+ display: inline-flex;
15774
+ }
15775
+
15776
+ .home-page-mobile-menu {
15777
+ max-width: min(20rem, calc(100cqi - 2rem));
15778
+ }
15779
+
15780
+ .home-page-main {
15781
+ min-width: 0;
15782
+ }
15783
+
15784
+ .home-page-content {
15785
+ width: min(100%, 80rem);
15786
+ margin-inline: auto;
15787
+ padding: clamp(1rem, 5cqi, 3rem);
15788
+ }
15789
+
15790
+ .home-page-hero {
15791
+ display: grid;
15792
+ align-items: center;
15793
+ grid-template-columns: minmax(0, 1fr);
15794
+ gap: clamp(2rem, 5cqi, 4rem);
15795
+ }
15796
+
15797
+ .home-page-footer {
15798
+ border-top: 1px solid var(--color-outline-variant);
15799
+ background-color: var(--color-surface-container-low);
15800
+ }
15801
+
15802
+ @container home-page (min-width: 48rem) {
15803
+ .home-page-nav {
15804
+ display: flex;
15805
+ }
15806
+
15807
+ .home-page-actions {
15808
+ display: flex;
15809
+ }
15810
+
15811
+ .home-page-menu-trigger {
15812
+ display: none;
15813
+ }
15814
+
15815
+ .home-page-mobile-menu {
15816
+ display: none;
15817
+ }
15818
+
15819
+ .home-page-content {
15820
+ padding-inline: clamp(2rem, 5cqi, 5rem);
15821
+ }
15822
+
15823
+ .home-page-hero {
15824
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.8fr);
15825
+ }
15826
+ }
15827
+ }
15828
+
15829
+ /**
15830
+ * Sign Page Layout
15831
+ * Responsive authentication shell driven by its containing width.
15832
+ */
15833
+
15834
+ @layer components {
15835
+ .sign-page {
15836
+ container-type: inline-size;
15837
+ container-name: sign-page;
15838
+ width: 100%;
15839
+ min-width: 0;
15840
+ min-height: var(--sign-page-min-height, 100dvh);
15841
+ overflow: hidden;
15842
+ background-color: var(--color-surface);
15843
+ color: var(--color-on-surface);
15844
+ }
15845
+
15846
+ .sign-page-frame {
15847
+ display: grid;
15848
+ min-height: inherit;
15849
+ grid-template-columns: minmax(0, 1fr);
15850
+ }
15851
+
15852
+ .sign-page-aside {
15853
+ display: none;
15854
+ position: relative;
15855
+ isolation: isolate;
15856
+ overflow: hidden;
15857
+ padding: clamp(2rem, 6cqi, 5rem);
15858
+ background-color: var(--color-primary-container);
15859
+ color: var(--color-on-primary-container);
15860
+ }
15861
+
15862
+ .sign-page-aside::before,
15863
+ .sign-page-aside::after {
15864
+ content: "";
15865
+ position: absolute;
15866
+ z-index: -1;
15867
+ border-radius: var(--radius-full);
15868
+ background: color-mix(in oklch, var(--color-tertiary) 24%, transparent);
15869
+ filter: blur(1px);
15870
+ }
15871
+
15872
+ .sign-page-aside::before {
15873
+ width: 22rem;
15874
+ height: 22rem;
15875
+ inset: -8rem -6rem auto auto;
15876
+ }
15877
+
15878
+ .sign-page-aside::after {
15879
+ width: 15rem;
15880
+ height: 15rem;
15881
+ inset: auto auto -5rem -4rem;
15882
+ background: color-mix(in oklch, var(--color-secondary) 22%, transparent);
15883
+ }
15884
+
15885
+ .sign-page-main {
15886
+ display: grid;
15887
+ place-items: center;
15888
+ min-width: 0;
15889
+ padding: clamp(1rem, 6cqi, 4rem);
15890
+ background-color: var(--color-surface);
15891
+ }
15892
+
15893
+ .sign-page-content {
15894
+ width: min(100%, 30rem);
15895
+ }
15896
+
15897
+ @container sign-page (min-width: 48rem) {
15898
+ .sign-page-frame {
15899
+ grid-template-columns: minmax(20rem, 1.15fr) minmax(24rem, 0.85fr);
15900
+ }
15901
+
15902
+ .sign-page-aside {
15903
+ display: flex;
15904
+ flex-direction: column;
15905
+ justify-content: space-between;
15906
+ }
15907
+ }
15908
+ }
15909
+
15555
15910
 
15556
15911
  /* ============================================
15557
15912
  * NAVIGATION COMPONENTS