@nxgt/material 3.7.5 → 3.8.1

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 (177) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +39 -6
  3. package/bin/nxgt-theme.js +6 -0
  4. package/dist/{async-slice-o_fpqeGX.js → async-slice-DDjaJY_F.js} +2 -2
  5. package/dist/background--Bf_EbFR.js +159 -0
  6. package/dist/backgrounds/backgrounds.css +2 -0
  7. package/dist/backgrounds/css-react/moon.css +97 -0
  8. package/dist/backgrounds.js +3 -139
  9. package/dist/browser-only-DQ94lWF8.js +18 -0
  10. package/dist/bubble-input-B7BVd9fX.js +237 -0
  11. package/dist/{button--cF4gY14.js → button-DbfdITBB.js} +51 -57
  12. package/dist/charts.js +3 -3
  13. package/dist/{chip-D1B1dL77.js → chip-DpySRqCy.js} +2 -2
  14. package/dist/{client-only.utils-lQ7GqP8w.js → client-only.utils-3nHNzCki.js} +1 -1
  15. package/dist/{code-editor-0CdGwKDg.js → code-editor-BiA14xua.js} +7 -7
  16. package/dist/code-editor.js +6 -6
  17. package/dist/{code-language-items-CGARRbVm.js → code-language-items-C_dJ6GVs.js} +2 -2
  18. package/dist/components/theme-tokens.css +34 -35
  19. package/dist/components/tones/app-tones.css +2 -1
  20. package/dist/components/tones/containers.css +4 -1
  21. package/dist/components/tones/index.css +2 -0
  22. package/dist/components/tones/surface.css +1 -0
  23. package/dist/components/tones/tokens.css +8 -3
  24. package/dist/components/tones/zone-paint.css +15 -0
  25. package/dist/components/ui/feedback/toast/toast-tokens.css +1 -0
  26. package/dist/components/ui/layout/app-shell/activity-backdrop.css +26 -0
  27. package/dist/components/ui/layout/sidebar/sidebar-tokens.css +5 -2
  28. package/dist/components/ui/media/media-player/nxgt-media-player.css +7 -32
  29. package/dist/components/ui/primitives/field-box/field-box-tokens.css +5 -2
  30. package/dist/{components-CDrQCOsU.js → components-DNUYg8QM.js} +18625 -18532
  31. package/dist/components.js +24 -22
  32. package/dist/{dialog-DdJ1C4BR.js → dialog-CkIYpJXk.js} +55 -53
  33. package/dist/dist-B7RjY7SL.js +158 -0
  34. package/dist/dist-C4wtXCjf.js +593 -0
  35. package/dist/dist-DVRQkaTK.js +111 -0
  36. package/dist/dist-lmHmz_bu.js +419 -0
  37. package/dist/dnd.js +1 -1
  38. package/dist/dropdown-menu-BC5Tbhb9.js +908 -0
  39. package/dist/editor.js +527 -527
  40. package/dist/empty-state-s2CSjKXJ.js +126 -0
  41. package/dist/{escape-owner-B8k7DvFa.js → escape-owner-CripBce_.js} +2 -1
  42. package/dist/{field-blur-DFUazxsL.js → field-blur-DPLsMufs.js} +1 -1
  43. package/dist/{field-blur-context-Dw9ZAgBr.js → field-blur-context-1ZwJgsHE.js} +2 -2
  44. package/dist/has-text-content-Ds2dkHX_.js +10 -0
  45. package/dist/hooks.js +35 -33
  46. package/dist/{hover-card-D5iHS9q1.js → hover-card-Cox-tPDz.js} +41 -39
  47. package/dist/{i18n-provider-C6SBK_nO.js → i18n-provider-C6HhBw34.js} +1 -1
  48. package/dist/i18n.js +6 -6
  49. package/dist/{icon-badge-Bb5-73XP.js → icon-badge-q3Ve8gra.js} +3 -3
  50. package/dist/{icon-button-5A6Mrj6w.js → icon-button-DJcWpIhu.js} +2 -1
  51. package/dist/{in-dialog-AiwTD3DK.js → in-dialog-Vwkyp-M5.js} +6 -5
  52. package/dist/lib/backgrounds/background/available.d.ts +3 -3
  53. package/dist/lib/backgrounds/background/background.d.ts +7 -3
  54. package/dist/lib/backgrounds/background/types.d.ts +7 -1
  55. package/dist/lib/backgrounds/index.d.ts +1 -1
  56. package/dist/lib/components/ui/layout/account-menu/account-menu-avatar.d.ts +1 -1
  57. package/dist/lib/components/ui/layout/app-shell/activity-chrome.d.ts +17 -0
  58. package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +6 -4
  59. package/dist/lib/components/ui/layout/app-shell/backdrop-layer.d.ts +11 -0
  60. package/dist/lib/components/ui/layout/app-shell/keep-shapes-inside.d.ts +17 -0
  61. package/dist/lib/components/ui/layout/app-shell/theme-backdrop.d.ts +6 -0
  62. package/dist/lib/components/ui/layout/app-shell/use-activity-backdrop.d.ts +18 -0
  63. package/dist/lib/components/ui/layout/app-shell/use-keep-shapes-inside.d.ts +9 -0
  64. package/dist/lib/hooks/resolve-theme.d.ts +46 -1
  65. package/dist/lib/hooks/theme-store.d.ts +35 -4
  66. package/dist/lib/hooks/use-theme.d.ts +20 -4
  67. package/dist/lib/i18n/resources/en/en.d.ts +4 -0
  68. package/dist/lib/i18n/resources/en/material.json.d.ts +4 -0
  69. package/dist/lib/i18n/resources/fr/fr.d.ts +4 -0
  70. package/dist/lib/i18n/resources/fr/material.json.d.ts +4 -0
  71. package/dist/lib/i18n/resources/resources.d.ts +8 -0
  72. package/dist/lib/i18n/translator.d.ts +1 -1
  73. package/dist/lib/theme-picker/index.d.ts +7 -0
  74. package/dist/lib/theme-picker/partials/mini-background.d.ts +10 -0
  75. package/dist/lib/theme-picker/partials/mode-control.d.ts +5 -0
  76. package/dist/lib/theme-picker/partials/theme-tile.d.ts +12 -0
  77. package/dist/lib/theme-picker/theme-label.d.ts +7 -0
  78. package/dist/lib/theme-picker/theme-picker.d.ts +25 -0
  79. package/dist/lib/themes/index.d.ts +14 -0
  80. package/dist/lib/themes/nxgt-theme-provider.d.ts +29 -0
  81. package/dist/lib/themes/nxgt-theme.d.ts +22 -0
  82. package/dist/lib/themes/theme-context.d.ts +28 -0
  83. package/dist/lib/themes/theme-value.d.ts +5 -0
  84. package/dist/lib/vite/index.d.ts +1 -1
  85. package/dist/lib.js +3 -3
  86. package/dist/main.js +43 -39
  87. package/dist/map.js +8 -8
  88. package/dist/material.css +1 -1
  89. package/dist/nxgt-theme-CgSb9Obl.js +37 -0
  90. package/dist/pdf-reader.js +1 -1
  91. package/dist/print.js +2 -2
  92. package/dist/{public-SsiazLEv.js → public-Ce30uvp0.js} +591 -587
  93. package/dist/read-storage-C2J90bNm.js +10 -0
  94. package/dist/{rich-code-block-CwNwQs5z.js → rich-code-block-C2Fp_FDU.js} +5 -5
  95. package/dist/{sortable-provider-BvD98s8Y.js → sortable-provider-pVaEZzty.js} +3 -3
  96. package/dist/{spinner-CtGCPza-.js → spinner-CsHcmcpF.js} +2 -2
  97. package/dist/{stored-language-Bb7yX5uE.js → stored-language-BeIKw3-K.js} +15 -15
  98. package/dist/styles.css +8 -1
  99. package/dist/theme-context-BagPvRcz.js +16 -0
  100. package/dist/theme-picker.js +118 -0
  101. package/dist/theme-store-CSl51uNH.js +91 -0
  102. package/dist/theme-toggle-C8os82b4.js +48 -0
  103. package/dist/themes.js +42 -0
  104. package/dist/toggle-group-j8zaxEg1.js +69 -0
  105. package/dist/{toolbar-items-DsDDD5AY.js → toolbar-items-CqHvlTU8.js} +443 -589
  106. package/dist/tooltip-rhbqNmr3.js +1064 -0
  107. package/dist/{translate-material-Bsjc4Tow.js → translate-material-CGZljjp1.js} +2 -2
  108. package/dist/{translator-or2y0JJB.js → translator-DCYO4Ij3.js} +3 -3
  109. package/dist/{use-background-activity-B8jLHNop.js → use-background-activity-KxQgelFF.js} +1 -1
  110. package/dist/{use-chat-composer-DZ01a16D.js → use-chat-composer-CDrgWGMM.js} +4684 -4886
  111. package/dist/{use-heading-spy-ByOQNnFZ.js → use-heading-spy-DXo6IOX9.js} +52 -121
  112. package/dist/{use-material-translation-hLQzOjF0.js → use-material-translation-DkxcLbLM.js} +2 -2
  113. package/dist/use-slice-reducer-BGkeGtML.js +42 -0
  114. package/dist/use-theme-Cd-aiDJo.js +31 -0
  115. package/docs/README.md +2 -1
  116. package/docs/components/foundations.md +39 -0
  117. package/docs/components/navigation-and-layout.md +3 -3
  118. package/docs/getting-started.md +1 -1
  119. package/docs/guides/app-shell.md +41 -6
  120. package/docs/guides/backgrounds.md +43 -7
  121. package/docs/guides/i18n.md +1 -1
  122. package/docs/guides/themes.md +103 -0
  123. package/docs/guides/theming.md +288 -84
  124. package/docs/guides/vite-plugin.md +26 -0
  125. package/docs/previews/backgrounds-background-from-theme.webp +0 -0
  126. package/docs/previews/backgrounds-geometry-more.webp +0 -0
  127. package/docs/previews/backgrounds-geometry.webp +0 -0
  128. package/docs/previews/backgrounds-illustrated-scenes.webp +0 -0
  129. package/docs/previews/backgrounds-light-more.webp +0 -0
  130. package/docs/previews/backgrounds-light.webp +0 -0
  131. package/docs/previews/backgrounds-material-more.webp +0 -0
  132. package/docs/previews/backgrounds-matrix.webp +0 -0
  133. package/docs/previews/backgrounds-moon.webp +0 -0
  134. package/docs/previews/backgrounds-motif-shapes.webp +0 -0
  135. package/docs/previews/backgrounds-motifs.webp +0 -0
  136. package/docs/previews/foundations-themes-themepicker.webp +0 -0
  137. package/docs/roadmap.md +25 -0
  138. package/docs/troubleshooting.md +35 -7
  139. package/lib/backgrounds/backgrounds.css +2 -0
  140. package/lib/backgrounds/css-react/moon.css +97 -0
  141. package/lib/components/theme-tokens.css +34 -35
  142. package/lib/components/tones/app-tones.css +2 -1
  143. package/lib/components/tones/containers.css +4 -1
  144. package/lib/components/tones/index.css +2 -0
  145. package/lib/components/tones/surface.css +1 -0
  146. package/lib/components/tones/tokens.css +8 -3
  147. package/lib/components/tones/zone-paint.css +15 -0
  148. package/lib/components/ui/feedback/toast/toast-tokens.css +1 -0
  149. package/lib/components/ui/layout/app-shell/activity-backdrop.css +26 -0
  150. package/lib/components/ui/layout/sidebar/sidebar-tokens.css +5 -2
  151. package/lib/components/ui/media/media-player/nxgt-media-player.css +7 -32
  152. package/lib/components/ui/primitives/field-box/field-box-tokens.css +5 -2
  153. package/lib/styles.css +8 -1
  154. package/lib/theme-picker/theme-picker-list.css +29 -0
  155. package/lib/theme-picker/theme-picker.css +192 -0
  156. package/lib/theme-picker/theme-tile-background.css +77 -0
  157. package/lib/theme-picker/theme-tile-textures-night.css +63 -0
  158. package/lib/theme-picker/theme-tile-textures.css +153 -0
  159. package/lib/themes/ambre.css +134 -0
  160. package/lib/themes/ardoise.css +133 -0
  161. package/lib/themes/bleumono.css +136 -0
  162. package/lib/themes/bluemoon.css +136 -0
  163. package/lib/themes/corail.css +136 -0
  164. package/lib/themes/foret.css +133 -0
  165. package/lib/themes/lavande.css +133 -0
  166. package/lib/themes/menthe.css +136 -0
  167. package/lib/themes/ocean.css +136 -0
  168. package/lib/themes/pink.css +134 -0
  169. package/lib/themes/prune.css +133 -0
  170. package/lib/themes/sable.css +133 -0
  171. package/lib/themes/slate.css +133 -0
  172. package/lib/themes/teal.css +137 -0
  173. package/package.json +30 -2
  174. package/dist/dropdown-menu-DWtgUVW7.js +0 -1490
  175. package/dist/empty-state-CRWLQ1sM.js +0 -191
  176. package/dist/tooltip-tmFoTU_d.js +0 -1582
  177. package/dist/use-slice-reducer-0r5dXnJe.js +0 -58
@@ -0,0 +1,29 @@
1
+ /* ThemePicker, `layout="list"`: one column of rows (see theme-picker.css). */
2
+ @layer components {
3
+ /* List: the preview is a small chip at the start, the label fills the row. */
4
+ [data-layout="list"] [data-slot="theme-tile"] {
5
+ grid-template-columns: auto minmax(0, 1fr) auto auto;
6
+ min-height: 3.25rem;
7
+ }
8
+ [data-layout="list"] [data-slot="theme-tile-background"] {
9
+ grid-column: 1;
10
+ grid-row: 1;
11
+ inline-size: 3rem;
12
+ block-size: 2.25rem;
13
+ }
14
+ [data-layout="list"] [data-slot="theme-tile-label"] {
15
+ grid-column: 2;
16
+ grid-row: 1;
17
+ }
18
+ [data-layout="list"] [data-slot="theme-tile-swatches"] {
19
+ grid-column: 3;
20
+ grid-row: 1;
21
+ }
22
+ [data-layout="list"] [data-slot="theme-tile-check"] {
23
+ position: static;
24
+ grid-column: 4;
25
+ grid-row: 1;
26
+ box-shadow: none;
27
+ background: transparent;
28
+ }
29
+ }
@@ -0,0 +1,192 @@
1
+ /* ThemePicker: a radiogroup of tiles, each one a zone of its own theme.
2
+ *
3
+ * The tile reads its colours from the theme it previews (`NxgtTheme` puts
4
+ * `data-nxgt-theme` on the tile), so the swatches and the mini background are
5
+ * that theme's `--primary`, `--secondary` and `--tertiary` in the page's mode.
6
+ * The selected style is the library's "A Refined": a `--primary-text` tint (12 %,
7
+ * hover 8 %, both 18 %), a 3px start bar and the label in primary text. No
8
+ * inline style: every value here is a token or a data attribute.
9
+ * Reduced motion: reduced-motion.css stops `[data-slot]` transitions.
10
+ *
11
+ * Opt-in: `@import "@nxgt/material/theme-picker.css"` (after styles.css), for the
12
+ * apps that use `@nxgt/material/theme-picker`. Not part of styles.css. This file
13
+ * pulls in the mini background (wash, tones, textures) and the list layout. */
14
+ @import "./theme-tile-background.css";
15
+ @import "./theme-tile-textures.css";
16
+ @import "./theme-tile-textures-night.css";
17
+ @import "./theme-picker-list.css";
18
+ @layer components {
19
+ [data-slot="theme-picker"] {
20
+ container-type: inline-size;
21
+ min-width: 0;
22
+ }
23
+
24
+ [data-slot="theme-picker-group"] {
25
+ display: grid;
26
+ gap: 0.5rem;
27
+ grid-template-columns: repeat(2, minmax(0, 1fr));
28
+ /* Room for the 2px focus ring and its 2px offset. */
29
+ padding: 4px;
30
+ outline: none;
31
+ }
32
+ @container (min-width: 28rem) {
33
+ [data-layout="grid"] > [data-slot="theme-picker-group"] {
34
+ grid-template-columns: repeat(3, minmax(0, 1fr));
35
+ }
36
+ }
37
+ @container (min-width: 44rem) {
38
+ [data-layout="grid"] > [data-slot="theme-picker-group"] {
39
+ grid-template-columns: repeat(4, minmax(0, 1fr));
40
+ }
41
+ }
42
+ /* A narrow column (a phone sheet): the swatches drop under the label, so a name is never cut. */
43
+ @container (max-width: 20rem) {
44
+ [data-layout="grid"]
45
+ [data-slot="theme-tile"]:has([data-slot="theme-tile-background"])
46
+ [data-slot="theme-tile-label"] {
47
+ grid-column: 1 / -1;
48
+ }
49
+ [data-layout="grid"]
50
+ [data-slot="theme-tile"]:has([data-slot="theme-tile-background"])
51
+ [data-slot="theme-tile-swatches"] {
52
+ grid-column: 1 / -1;
53
+ grid-row: 3;
54
+ }
55
+ }
56
+ [data-layout="list"] > [data-slot="theme-picker-group"] {
57
+ grid-template-columns: minmax(0, 1fr);
58
+ }
59
+
60
+ [data-slot="theme-tile"] {
61
+ --tile-surface: var(--card);
62
+ --tile-hover: color-mix(
63
+ in oklab,
64
+ var(--primary-text) 8%,
65
+ var(--tile-surface)
66
+ );
67
+ --tile-selected: color-mix(
68
+ in oklab,
69
+ var(--primary-text) 12%,
70
+ var(--tile-surface)
71
+ );
72
+ --tile-selected-hover: color-mix(
73
+ in oklab,
74
+ var(--primary-text) 18%,
75
+ var(--tile-surface)
76
+ );
77
+ position: relative;
78
+ display: grid;
79
+ grid-template-columns: minmax(0, 1fr) auto;
80
+ align-content: start;
81
+ align-items: center;
82
+ gap: 0.5rem;
83
+ min-width: 0;
84
+ /* A touch target on a phone: the tile is taller than 44px with its preview, and
85
+ * without one it still reaches it. */
86
+ min-height: 2.75rem;
87
+ padding: 0.5rem 0.625rem;
88
+ border: 1px solid var(--border);
89
+ border-radius: var(--nxgt-item-radius, 0.75rem);
90
+ background: var(--tile-surface);
91
+ color: var(--card-foreground);
92
+ font: inherit;
93
+ text-align: start;
94
+ cursor: pointer;
95
+ transition: background-color var(--nxgt-motion-effects-fast-duration, 150ms)
96
+ var(--nxgt-motion-effects-fast, ease);
97
+ }
98
+ [data-slot="theme-tile"]:hover {
99
+ background: var(--tile-hover);
100
+ }
101
+ [data-slot="theme-tile"][data-state="checked"] {
102
+ background: var(--tile-selected);
103
+ }
104
+ [data-slot="theme-tile"][data-state="checked"]:hover {
105
+ background: var(--tile-selected-hover);
106
+ }
107
+ /* The start bar of the selected tile, inside its rounded corners. */
108
+ [data-slot="theme-tile"][data-state="checked"]::before {
109
+ content: "";
110
+ position: absolute;
111
+ inset-block: 0.5rem;
112
+ inset-inline-start: 0;
113
+ inline-size: 3px;
114
+ border-radius: 0 3px 3px 0;
115
+ background: var(--primary-text);
116
+ }
117
+ [data-slot="theme-tile"]:dir(rtl)[data-state="checked"]::before {
118
+ border-radius: 3px 0 0 3px;
119
+ }
120
+ [data-slot="theme-tile"][data-state="checked"]
121
+ [data-slot="theme-tile-label"] {
122
+ color: var(--primary-text);
123
+ }
124
+ [data-slot="theme-tile"]:focus-visible {
125
+ outline: 2px solid var(--primary-text);
126
+ outline-offset: 2px;
127
+ }
128
+
129
+ /* The check sits where the swatches would run into it: the swatches stay in the
130
+ * label row, the check is the row's last cell (or the corner of the preview). */
131
+ [data-slot="theme-tile-swatches"] {
132
+ display: inline-flex;
133
+ grid-column: 2;
134
+ grid-row: 2;
135
+ gap: 0.25rem;
136
+ }
137
+ [data-slot="theme-tile-swatches"] > i {
138
+ inline-size: 0.875rem;
139
+ block-size: 0.875rem;
140
+ border-radius: 9999px;
141
+ /* The ring keeps a swatch the colour of the surface visible. */
142
+ box-shadow: 0 0 0 1px
143
+ color-mix(in oklab, var(--foreground) 22%, transparent);
144
+ }
145
+ [data-slot="theme-tile-swatches"] > [data-swatch="primary"] {
146
+ background: var(--primary);
147
+ }
148
+ [data-slot="theme-tile-swatches"] > [data-swatch="secondary"] {
149
+ background: var(--secondary);
150
+ }
151
+ [data-slot="theme-tile-swatches"] > [data-swatch="tertiary"] {
152
+ background: var(--tertiary);
153
+ }
154
+
155
+ [data-slot="theme-tile-label"] {
156
+ grid-column: 1;
157
+ grid-row: 2;
158
+ min-width: 0;
159
+ overflow: hidden;
160
+ text-overflow: ellipsis;
161
+ white-space: nowrap;
162
+ font-size: 0.875rem;
163
+ font-weight: 500;
164
+ line-height: 1.25rem;
165
+ }
166
+ [data-slot="theme-tile-check"] {
167
+ position: absolute;
168
+ inset-block-start: 0.875rem;
169
+ inset-inline-end: 0.875rem;
170
+ padding: 0.125rem;
171
+ color: var(--primary-text);
172
+ inline-size: 1.25rem;
173
+ block-size: 1.25rem;
174
+ border-radius: 9999px;
175
+ background: var(--tile-surface);
176
+ box-shadow: 0 0 0 1px var(--border);
177
+ }
178
+
179
+ /* Without a preview, the label row is the first row. */
180
+ [data-slot="theme-tile"]:not(:has([data-slot="theme-tile-background"]))
181
+ [data-slot="theme-tile-label"],
182
+ [data-slot="theme-tile"]:not(:has([data-slot="theme-tile-background"]))
183
+ [data-slot="theme-tile-swatches"] {
184
+ grid-row: 1;
185
+ }
186
+ [data-slot="theme-tile"]:not(:has([data-slot="theme-tile-background"]))
187
+ [data-slot="theme-tile-check"] {
188
+ inset-block-start: 50%;
189
+ translate: 0 -50%;
190
+ inset-inline-end: 0.5rem;
191
+ }
192
+ }
@@ -0,0 +1,77 @@
1
+ /* ThemePicker's mini background: the theme's wash, its tones and intensities,
2
+ * from the tile's own zone tokens. The texture of each preset is in
3
+ * theme-tile-textures.css. */
4
+ @layer components {
5
+ /* The mini background: the theme's wash and the texture of its preset. */
6
+ [data-slot="theme-tile-background"] {
7
+ --mini-a: var(--primary);
8
+ --mini-b: var(--primary);
9
+ --mini-c: var(--primary);
10
+ --mini-k: 28%;
11
+ grid-column: 1 / -1;
12
+ grid-row: 1;
13
+ display: block;
14
+ block-size: 3.5rem;
15
+ overflow: hidden;
16
+ border-radius: calc(var(--nxgt-item-radius, 0.75rem) - 0.25rem);
17
+ background-color: var(--background);
18
+ background-image:
19
+ var(--mini-pattern, linear-gradient(transparent, transparent)),
20
+ radial-gradient(
21
+ circle at 18% 20%,
22
+ color-mix(in oklab, var(--mini-a) var(--mini-k), transparent),
23
+ transparent 62%
24
+ ),
25
+ radial-gradient(
26
+ circle at 88% 85%,
27
+ color-mix(in oklab, var(--mini-b) var(--mini-k), transparent),
28
+ transparent 60%
29
+ ),
30
+ radial-gradient(
31
+ circle at 78% 15%,
32
+ color-mix(
33
+ in oklab,
34
+ var(--mini-c) calc(var(--mini-k) * 0.7),
35
+ transparent
36
+ ),
37
+ transparent 50%
38
+ );
39
+ background-size: var(--mini-size, auto), auto, auto, auto;
40
+ background-position:
41
+ var(--mini-pos, 0 0),
42
+ 0 0,
43
+ 0 0,
44
+ 0 0;
45
+ box-shadow: inset 0 0 0 1px
46
+ color-mix(in oklab, var(--foreground) 8%, transparent);
47
+ }
48
+ [data-slot="theme-tile-background"][data-tone="secondary"] {
49
+ --mini-a: var(--secondary);
50
+ --mini-b: var(--secondary);
51
+ --mini-c: var(--secondary);
52
+ }
53
+ [data-slot="theme-tile-background"][data-tone="tertiary"] {
54
+ --mini-a: var(--tertiary);
55
+ --mini-b: var(--tertiary);
56
+ --mini-c: var(--tertiary);
57
+ }
58
+ [data-slot="theme-tile-background"][data-tone="mixed"] {
59
+ --mini-a: var(--primary);
60
+ --mini-b: var(--secondary);
61
+ --mini-c: var(--tertiary);
62
+ }
63
+ [data-slot="theme-tile-background"][data-tone="neutral"] {
64
+ --mini-a: var(--muted-foreground);
65
+ --mini-b: var(--muted-foreground);
66
+ --mini-c: var(--muted-foreground);
67
+ }
68
+ [data-slot="theme-tile-background"][data-tone="none"] {
69
+ --mini-k: 0%;
70
+ }
71
+ [data-slot="theme-tile-background"][data-intensity="subtle"] {
72
+ --mini-k: 18%;
73
+ }
74
+ [data-slot="theme-tile-background"][data-intensity="vivid"] {
75
+ --mini-k: 42%;
76
+ }
77
+ }
@@ -0,0 +1,63 @@
1
+ /* ThemePicker's mini background, the night textures: the stars of `night-sky`
2
+ * and the moon, a disc over the stars (see theme-tile-textures.css). */
3
+ @layer components {
4
+ [data-slot="theme-tile-background"][data-preset="night-sky"] {
5
+ --mini-pattern:
6
+ radial-gradient(
7
+ 1px 1px at 12% 30%,
8
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 98%,
9
+ transparent
10
+ ),
11
+ radial-gradient(
12
+ 1.5px 1.5px at 38% 68%,
13
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 98%,
14
+ transparent
15
+ ),
16
+ radial-gradient(
17
+ 1px 1px at 62% 24%,
18
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 98%,
19
+ transparent
20
+ ),
21
+ radial-gradient(
22
+ 1.5px 1.5px at 84% 58%,
23
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 98%,
24
+ transparent
25
+ ),
26
+ radial-gradient(
27
+ 1px 1px at 92% 20%,
28
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 98%,
29
+ transparent
30
+ );
31
+ --mini-size: 100% 100%;
32
+ }
33
+ [data-slot="theme-tile-background"][data-preset="moon"] {
34
+ --mini-pattern:
35
+ radial-gradient(
36
+ circle at 80% 38%,
37
+ color-mix(in oklab, var(--mini-a) var(--mini-k), var(--background))
38
+ 0.7rem,
39
+ transparent 0.72rem
40
+ ),
41
+ radial-gradient(
42
+ circle at 74% 44%,
43
+ color-mix(in oklab, var(--mini-c) 80%, var(--foreground)) 0.85rem,
44
+ transparent 0.87rem
45
+ ),
46
+ radial-gradient(
47
+ 1px 1px at 18% 28%,
48
+ color-mix(in oklab, var(--mini-b) 34%, transparent) 98%,
49
+ transparent
50
+ ),
51
+ radial-gradient(
52
+ 1.5px 1.5px at 40% 66%,
53
+ color-mix(in oklab, var(--mini-b) 34%, transparent) 98%,
54
+ transparent
55
+ ),
56
+ radial-gradient(
57
+ 1px 1px at 55% 22%,
58
+ color-mix(in oklab, var(--mini-b) 34%, transparent) 98%,
59
+ transparent
60
+ );
61
+ --mini-size: 100% 100%;
62
+ }
63
+ }
@@ -0,0 +1,153 @@
1
+ /* ThemePicker's mini background, the textures: one per preset the shipped
2
+ * themes use, hinting at it and nothing else. Other presets show the wash alone
3
+ * (the wash, tones and intensities are in theme-tile-background.css). */
4
+ @layer components {
5
+ [data-slot="theme-tile-background"][data-preset="waves"] {
6
+ --mini-pattern: radial-gradient(
7
+ circle at 50% 100%,
8
+ transparent 0.5rem,
9
+ color-mix(in oklab, var(--mini-a) 40%, transparent) 0.52rem 0.6rem,
10
+ transparent 0.62rem
11
+ );
12
+ --mini-size: 1.2rem 0.7rem;
13
+ }
14
+ [data-slot="theme-tile-background"][data-preset="topography"] {
15
+ --mini-pattern: repeating-radial-gradient(
16
+ circle at 75% 130%,
17
+ transparent 0 0.4rem,
18
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0.4rem 0.45rem
19
+ );
20
+ }
21
+ [data-slot="theme-tile-background"][data-preset="graph-paper"] {
22
+ --mini-pattern:
23
+ linear-gradient(
24
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 1px,
25
+ transparent 1px
26
+ ),
27
+ linear-gradient(
28
+ 90deg,
29
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 1px,
30
+ transparent 1px
31
+ );
32
+ --mini-size: 0.75rem 0.75rem, 0.75rem 0.75rem;
33
+ }
34
+ [data-slot="theme-tile-background"][data-preset="linen"] {
35
+ --mini-pattern:
36
+ repeating-linear-gradient(
37
+ 0deg,
38
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0 1px,
39
+ transparent 1px 3px
40
+ ),
41
+ repeating-linear-gradient(
42
+ 90deg,
43
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0 1px,
44
+ transparent 1px 3px
45
+ );
46
+ }
47
+ [data-slot="theme-tile-background"][data-preset="chevrons"] {
48
+ --mini-pattern:
49
+ linear-gradient(
50
+ 135deg,
51
+ color-mix(in oklab, var(--mini-a) 22%, transparent) 25%,
52
+ transparent 25%
53
+ ),
54
+ linear-gradient(
55
+ 225deg,
56
+ color-mix(in oklab, var(--mini-a) 22%, transparent) 25%,
57
+ transparent 25%
58
+ ),
59
+ linear-gradient(
60
+ 315deg,
61
+ color-mix(in oklab, var(--mini-a) 22%, transparent) 25%,
62
+ transparent 25%
63
+ ),
64
+ linear-gradient(
65
+ 45deg,
66
+ color-mix(in oklab, var(--mini-a) 22%, transparent) 25%,
67
+ transparent 25%
68
+ );
69
+ --mini-size: 1.1rem 1.1rem, 1.1rem 1.1rem, 1.1rem 1.1rem, 1.1rem 1.1rem;
70
+ --mini-pos: -0.55rem 0, -0.55rem 0, 0 0, 0 0;
71
+ }
72
+ [data-slot="theme-tile-background"][data-preset="leaves"] {
73
+ --mini-pattern: radial-gradient(
74
+ ellipse 0.2rem 0.55rem at 50% 50%,
75
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 98%,
76
+ transparent
77
+ );
78
+ --mini-size: 1rem 1.3rem;
79
+ }
80
+ [data-slot="theme-tile-background"][data-preset="shapes"] {
81
+ --mini-pattern:
82
+ radial-gradient(
83
+ circle at 30% 50%,
84
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0.28rem,
85
+ transparent 0.3rem
86
+ ),
87
+ linear-gradient(
88
+ color-mix(in oklab, var(--mini-b) 40%, transparent),
89
+ color-mix(in oklab, var(--mini-b) 40%, transparent)
90
+ );
91
+ --mini-size: 1.8rem 1.8rem, 0.5rem 0.5rem;
92
+ --mini-pos: 0 0, 1.1rem 0.6rem;
93
+ }
94
+ [data-slot="theme-tile-background"][data-preset="confetti-grid"] {
95
+ --mini-pattern:
96
+ radial-gradient(
97
+ circle,
98
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0.12rem,
99
+ transparent 0.14rem
100
+ ),
101
+ radial-gradient(
102
+ circle,
103
+ color-mix(in oklab, var(--mini-b) 40%, transparent) 0.12rem,
104
+ transparent 0.14rem
105
+ ),
106
+ radial-gradient(
107
+ circle,
108
+ color-mix(in oklab, var(--mini-c) 45%, transparent) 0.12rem,
109
+ transparent 0.14rem
110
+ );
111
+ --mini-size: 1.2rem 1.2rem, 1.2rem 1.2rem, 1.2rem 1.2rem;
112
+ --mini-pos: 0 0, 0.4rem 0.4rem, 0.8rem 0.8rem;
113
+ }
114
+ [data-slot="theme-tile-background"][data-preset="bubbles"] {
115
+ --mini-pattern:
116
+ radial-gradient(
117
+ circle at 30% 40%,
118
+ transparent 0.26rem,
119
+ color-mix(in oklab, var(--mini-a) 30%, transparent) 0.28rem 0.34rem,
120
+ transparent 0.36rem
121
+ ),
122
+ radial-gradient(
123
+ circle at 75% 70%,
124
+ transparent 0.14rem,
125
+ color-mix(in oklab, var(--mini-b) 40%, transparent) 0.16rem 0.2rem,
126
+ transparent 0.22rem
127
+ );
128
+ --mini-size: 2.2rem 2.2rem, 2.2rem 2.2rem;
129
+ }
130
+ /* Hexagons: two cells of a honeycomb, from clip-path, no pattern layer. */
131
+ [data-slot="theme-tile-background"][data-preset="hexagons"] {
132
+ --mini-pattern: none;
133
+ position: relative;
134
+ }
135
+ [data-slot="theme-tile-background"][data-preset="hexagons"]::before,
136
+ [data-slot="theme-tile-background"][data-preset="hexagons"]::after {
137
+ content: "";
138
+ position: absolute;
139
+ inline-size: 1.7rem;
140
+ block-size: 1.96rem;
141
+ clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
142
+ background: color-mix(in oklab, var(--mini-a) 34%, transparent);
143
+ }
144
+ [data-slot="theme-tile-background"][data-preset="hexagons"]::before {
145
+ inset-block-start: -0.3rem;
146
+ inset-inline-start: 38%;
147
+ }
148
+ [data-slot="theme-tile-background"][data-preset="hexagons"]::after {
149
+ inset-block-start: 0.9rem;
150
+ inset-inline-start: calc(38% + 1.45rem);
151
+ background: color-mix(in oklab, var(--mini-a) 20%, transparent);
152
+ }
153
+ }
@@ -0,0 +1,134 @@
1
+ /* Theme "ambre", generated.
2
+ * Seeds: primary oklch(0.52 0.13 48), secondary oklch(0.5 0.09 95), tertiary oklch(0.5 0.14 350), neutral hue 65, tint 0.85.
3
+ * Contrast: 61 pairs, 0 failing.
4
+ * hue-near-status: The primary's hue 48 is 14° from warning (62): they may read alike. Keep an icon and a word with every status.
5
+ */
6
+ [data-nxgt-theme="ambre"] {
7
+ --radius: 0.875rem;
8
+ --background: oklch(1 0 0);
9
+ --foreground: oklch(0.227 0.0145 65);
10
+ --card: oklch(1 0 0);
11
+ --card-foreground: oklch(0.227 0.0145 65);
12
+ --popover: oklch(1 0 0);
13
+ --popover-foreground: oklch(0.227 0.0145 65);
14
+ --primary: oklch(0.52 0.13 48);
15
+ --primary-foreground: oklch(0.984 0.003 65);
16
+ --primary-text: color-mix(in oklab, var(--primary) 96%, black);
17
+ --primary-indicator: var(--primary);
18
+ --secondary: oklch(0.5 0.09 95);
19
+ --secondary-foreground: oklch(0.984 0.003 65);
20
+ --tertiary: var(--strix);
21
+ --tertiary-foreground: oklch(0.984 0.003 65);
22
+ --strix: oklch(0.5 0.14 350);
23
+ --muted: oklch(0.955 0.0102 65);
24
+ --muted-foreground: oklch(0.478 0.0272 65);
25
+ --track: oklch(0.955 0.0102 65);
26
+ --track-fill: var(--primary);
27
+ --tooltip: oklch(0.446 0.0366 65);
28
+ --tooltip-foreground: oklch(1 0 0);
29
+ --accent: oklch(0.91 0.0136 65);
30
+ --accent-foreground: oklch(0.227 0.0145 65);
31
+ --error: oklch(0.56 0.245 27.33);
32
+ --error-foreground: oklch(0.984 0.003 65);
33
+ --error-text: color-mix(in oklab, var(--error) 92%, black);
34
+ --success: oklch(0.46 0.118 184.7);
35
+ --success-foreground: oklch(0.984 0.003 65);
36
+ --info: oklch(0.48 0.165 254.62);
37
+ --info-foreground: oklch(0.984 0.003 65);
38
+ --warning: oklch(0.52 0.13 62);
39
+ --warning-foreground: oklch(0.984 0.003 65);
40
+ --destructive: var(--error);
41
+ --border: oklch(0.912 0.0136 65);
42
+ --input: oklch(0.912 0.0136 65);
43
+ --ring: oklch(0.62 0.034 65);
44
+ --sidebar: oklch(0.985 0.0051 65);
45
+ --sidebar-foreground: oklch(0.227 0.0145 65);
46
+ --sidebar-primary: oklch(0.227 0.0145 65);
47
+ --sidebar-primary-foreground: oklch(0.984 0.003 65);
48
+ --sidebar-accent: oklch(0.955 0.0102 65);
49
+ --sidebar-accent-foreground: oklch(0.227 0.0145 65);
50
+ --sidebar-border: oklch(0.912 0.0136 65);
51
+ --sidebar-ring: oklch(0.62 0.034 65);
52
+ --chart-1: oklch(0.646 0.222 41.116);
53
+ --chart-2: oklch(0.6 0.118 184.704);
54
+ --chart-3: oklch(0.398 0.07 227.392);
55
+ --chart-4: oklch(0.6 0.2 300);
56
+ --chart-5: oklch(0.769 0.188 70.08);
57
+ --chart-soft-1: oklch(0.9 0.045 255);
58
+ --chart-soft-1-ink: oklch(0.52 0.14 255);
59
+ --chart-soft-2: oklch(0.91 0.05 180);
60
+ --chart-soft-2-ink: oklch(0.53 0.09 180);
61
+ --chart-soft-3: oklch(0.93 0.06 80);
62
+ --chart-soft-3-ink: oklch(0.56 0.11 80);
63
+ --chart-soft-4: oklch(0.9 0.06 310);
64
+ --chart-soft-4-ink: oklch(0.52 0.16 310);
65
+ --chart-soft-5: oklch(0.9 0.05 25);
66
+ --chart-soft-5-ink: oklch(0.56 0.15 25);
67
+ --font-sans: ui-rounded, "SF Pro Rounded", ui-sans-serif, system-ui, sans-serif;
68
+ --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
69
+ font-family: var(--font-sans);
70
+ }
71
+
72
+ [data-nxgt-theme="ambre"]:is(.dark, [data-theme="dark"]),
73
+ :is(.dark, [data-theme="dark"]) [data-nxgt-theme="ambre"],
74
+ [data-nxgt-theme="ambre"] :is(.dark, [data-theme="dark"]):not([data-nxgt-theme="ambre"] [data-nxgt-theme]:not([data-nxgt-theme="ambre"]), [data-nxgt-theme="ambre"] [data-nxgt-theme]:not([data-nxgt-theme="ambre"]) *) {
75
+ --background: oklch(0.15 0.026 273);
76
+ --foreground: oklch(0.943 0.0102 65);
77
+ --card: oklch(0.19 0.0161 65);
78
+ --card-foreground: oklch(0.943 0.0102 65);
79
+ --popover: oklch(0.19 0.0161 65);
80
+ --popover-foreground: oklch(0.943 0.0102 65);
81
+ --primary: oklch(0.52 0.13 48);
82
+ --primary-foreground: oklch(0.995 0.002 65);
83
+ --primary-text: color-mix(in oklab, var(--primary) 40%, white);
84
+ --primary-indicator: color-mix(in oklab, var(--primary) 75%, white);
85
+ --secondary: oklch(0.675 0.09 95);
86
+ --secondary-foreground: oklch(0.995 0.002 65);
87
+ --tertiary: oklch(0.7 0.14 350);
88
+ --tertiary-foreground: oklch(0.15 0.026 273);
89
+ --strix: oklch(0.5 0.14 350);
90
+ --muted: oklch(0.228 0.0187 65);
91
+ --muted-foreground: oklch(0.725 0.0255 65);
92
+ --track: oklch(0.53 0.0255 65);
93
+ --track-fill: oklch(0.85 0.09 48);
94
+ --tooltip: oklch(0.925 0.0102 65);
95
+ --tooltip-foreground: oklch(0.446 0.0366 65);
96
+ --accent: oklch(0.25 0.0187 65);
97
+ --accent-foreground: oklch(0.943 0.0102 65);
98
+ --error: oklch(0.577 0.245 27.33);
99
+ --error-foreground: oklch(0.995 0.002 65);
100
+ --error-text: color-mix(in oklab, var(--error) 76%, white);
101
+ --success: oklch(0.6 0.118 184.7);
102
+ --success-foreground: oklch(0.995 0.002 65);
103
+ --info: oklch(0.707 0.165 254.62);
104
+ --info-foreground: oklch(0.995 0.002 65);
105
+ --warning: oklch(0.7 0.15 70);
106
+ --warning-foreground: oklch(0.995 0.002 65);
107
+ --destructive: oklch(0.704 0.191 22.216);
108
+ --border: oklch(0.259 0.0213 65);
109
+ --input: oklch(0.298 0.0229 65);
110
+ --ring: oklch(0.551 0.0255 65);
111
+ --sidebar: oklch(0.19 0.0161 65);
112
+ --sidebar-foreground: oklch(0.943 0.0102 65);
113
+ --sidebar-primary: var(--primary);
114
+ --sidebar-primary-foreground: oklch(0.995 0.002 65);
115
+ --sidebar-accent: oklch(0.228 0.0187 65);
116
+ --sidebar-accent-foreground: oklch(0.943 0.0102 65);
117
+ --sidebar-border: oklch(0.259 0.0213 65);
118
+ --sidebar-ring: oklch(0.551 0.0255 65);
119
+ --chart-1: oklch(0.488 0.243 264.376);
120
+ --chart-2: oklch(0.696 0.17 162.48);
121
+ --chart-3: oklch(0.769 0.188 70.08);
122
+ --chart-4: oklch(0.627 0.265 303.9);
123
+ --chart-5: oklch(0.645 0.246 16.439);
124
+ --chart-soft-1: oklch(0.49 0.08 255);
125
+ --chart-soft-1-ink: oklch(0.78 0.1 255);
126
+ --chart-soft-2: oklch(0.49 0.07 180);
127
+ --chart-soft-2-ink: oklch(0.8 0.11 180);
128
+ --chart-soft-3: oklch(0.5 0.1 75);
129
+ --chart-soft-3-ink: oklch(0.84 0.12 78);
130
+ --chart-soft-4: oklch(0.49 0.09 310);
131
+ --chart-soft-4-ink: oklch(0.78 0.13 310);
132
+ --chart-soft-5: oklch(0.49 0.09 25);
133
+ --chart-soft-5-ink: oklch(0.78 0.11 25);
134
+ }