@tenphi/renderer 0.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.
Files changed (173) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/client/appearance.d.ts +12 -0
  4. package/dist/client/appearance.d.ts.map +1 -0
  5. package/dist/client/appearance.js +66 -0
  6. package/dist/client/appearance.js.map +1 -0
  7. package/dist/client/code-copy.d.ts +1 -0
  8. package/dist/client/code-copy.js +63 -0
  9. package/dist/client/code-copy.js.map +1 -0
  10. package/dist/client/heading-links.d.ts +6 -0
  11. package/dist/client/heading-links.d.ts.map +1 -0
  12. package/dist/client/heading-links.js +87 -0
  13. package/dist/client/heading-links.js.map +1 -0
  14. package/dist/client/mobile-toc.d.ts +1 -0
  15. package/dist/client/mobile-toc.js +28 -0
  16. package/dist/client/mobile-toc.js.map +1 -0
  17. package/dist/client/navigation.d.ts +1 -0
  18. package/dist/client/navigation.js +112 -0
  19. package/dist/client/navigation.js.map +1 -0
  20. package/dist/client/page-copy.d.ts +1 -0
  21. package/dist/client/page-copy.js +34 -0
  22. package/dist/client/page-copy.js.map +1 -0
  23. package/dist/client/search.d.ts +13 -0
  24. package/dist/client/search.d.ts.map +1 -0
  25. package/dist/client/search.js +87 -0
  26. package/dist/client/search.js.map +1 -0
  27. package/dist/client/sidebar.d.ts +1 -0
  28. package/dist/client/sidebar.js +93 -0
  29. package/dist/client/sidebar.js.map +1 -0
  30. package/dist/client/tabs.d.ts +6 -0
  31. package/dist/client/tabs.d.ts.map +1 -0
  32. package/dist/client/tabs.js +64 -0
  33. package/dist/client/tabs.js.map +1 -0
  34. package/dist/components/Callout.astro +15 -0
  35. package/dist/components/Card.astro +13 -0
  36. package/dist/components/CodeGroup.astro +47 -0
  37. package/dist/components/ContrastIcon.astro +29 -0
  38. package/dist/components/EditLink.astro +11 -0
  39. package/dist/components/GlobalStyles.js +1675 -0
  40. package/dist/components/HeaderLinks.astro +84 -0
  41. package/dist/components/Icon.astro +39 -0
  42. package/dist/components/LastUpdated.astro +17 -0
  43. package/dist/components/LayoutComponents.js +866 -0
  44. package/dist/components/Logo.astro +37 -0
  45. package/dist/components/MobileNavigationTabs.astro +79 -0
  46. package/dist/components/MobileTocList.astro +22 -0
  47. package/dist/components/PackageVersion.astro +25 -0
  48. package/dist/components/PageActions.astro +29 -0
  49. package/dist/components/Pagination.astro +29 -0
  50. package/dist/components/Preview.astro +34 -0
  51. package/dist/components/SidebarList.astro +122 -0
  52. package/dist/components/SiteLogo.astro +40 -0
  53. package/dist/components/SiteTitle.astro +7 -0
  54. package/dist/components/Steps.astro +6 -0
  55. package/dist/components/Tab.astro +10 -0
  56. package/dist/components/TableOfContents.astro +23 -0
  57. package/dist/components/Tabs.astro +16 -0
  58. package/dist/components/TastyComponents.js +255 -0
  59. package/dist/components/VersionSwitcher.astro +44 -0
  60. package/dist/components/appearance-preferences.test.ts +91 -0
  61. package/dist/components/appearance-preferences.ts +57 -0
  62. package/dist/components/component-styles.test.ts +129 -0
  63. package/dist/components/component-styles.ts +65 -0
  64. package/dist/components/customize-component.js +8 -0
  65. package/dist/components/props.d.ts +38 -0
  66. package/dist/components/props.d.ts.map +1 -0
  67. package/dist/components/props.js +1 -0
  68. package/dist/components/props.ts +30 -0
  69. package/dist/components/svg-icon.test.ts +11 -0
  70. package/dist/components/svg-icon.ts +11 -0
  71. package/dist/components/tasty-states.d.ts +2 -0
  72. package/dist/components/tasty-states.js +42 -0
  73. package/dist/components-public.d.ts +21 -0
  74. package/dist/components.d.ts +10 -0
  75. package/dist/components.js +9 -0
  76. package/dist/content.d.ts +11 -0
  77. package/dist/content.d.ts.map +1 -0
  78. package/dist/content.js +16 -0
  79. package/dist/content.js.map +1 -0
  80. package/dist/eslint-plugin.d.ts +32 -0
  81. package/dist/eslint-plugin.d.ts.map +1 -0
  82. package/dist/eslint-plugin.js +155 -0
  83. package/dist/eslint-plugin.js.map +1 -0
  84. package/dist/icons/arrow-left.svg +1 -0
  85. package/dist/icons/arrow-right.svg +1 -0
  86. package/dist/icons/check.svg +1 -0
  87. package/dist/icons/chevron-down.svg +1 -0
  88. package/dist/icons/chevron-right.svg +1 -0
  89. package/dist/icons/close.svg +1 -0
  90. package/dist/icons/copy.svg +1 -0
  91. package/dist/icons/device-desktop.svg +1 -0
  92. package/dist/icons/favicon.svg +11 -0
  93. package/dist/icons/menu.svg +1 -0
  94. package/dist/icons/moon.svg +1 -0
  95. package/dist/icons/palette.svg +1 -0
  96. package/dist/icons/search.svg +1 -0
  97. package/dist/icons/sun.svg +1 -0
  98. package/dist/index-BuX_Sb5c.d.ts +10 -0
  99. package/dist/index-BuX_Sb5c.d.ts.map +1 -0
  100. package/dist/index.d.ts +23 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +1648 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/localization.d.ts +69 -0
  105. package/dist/localization.d.ts.map +1 -0
  106. package/dist/localization.js +195 -0
  107. package/dist/localization.js.map +1 -0
  108. package/dist/markdown/rendered-content.d.ts +6 -0
  109. package/dist/markdown/rendered-content.d.ts.map +1 -0
  110. package/dist/markdown/rendered-content.js +34 -0
  111. package/dist/markdown/rendered-content.js.map +1 -0
  112. package/dist/messages-B_3xUzUb.js +14 -0
  113. package/dist/messages-B_3xUzUb.js.map +1 -0
  114. package/dist/navigation.d.ts +31 -0
  115. package/dist/navigation.d.ts.map +1 -0
  116. package/dist/navigation.js +165 -0
  117. package/dist/navigation.js.map +1 -0
  118. package/dist/overrides/DraftContentNotice.astro +8 -0
  119. package/dist/overrides/EmptyFooter.astro +3 -0
  120. package/dist/overrides/Footer.astro +23 -0
  121. package/dist/overrides/Head.astro +59 -0
  122. package/dist/overrides/Header.astro +139 -0
  123. package/dist/overrides/Hero.astro +73 -0
  124. package/dist/overrides/LanguageSelect.astro +63 -0
  125. package/dist/overrides/MarkdownContent.astro +14 -0
  126. package/dist/overrides/MobileMenuFooter.astro +15 -0
  127. package/dist/overrides/MobileMenuToggle.astro +36 -0
  128. package/dist/overrides/MobileTableOfContents.astro +37 -0
  129. package/dist/overrides/PageFrame.astro +35 -0
  130. package/dist/overrides/Search.astro +64 -0
  131. package/dist/overrides/Sidebar.astro +89 -0
  132. package/dist/overrides/SocialIcons.astro +27 -0
  133. package/dist/overrides/ThemeSelect.astro +148 -0
  134. package/dist/page-metadata.d.ts +13 -0
  135. package/dist/page-metadata.d.ts.map +1 -0
  136. package/dist/page-metadata.js +109 -0
  137. package/dist/page-metadata.js.map +1 -0
  138. package/dist/route-context.d.ts +85 -0
  139. package/dist/route-context.d.ts.map +1 -0
  140. package/dist/route-context.js +116 -0
  141. package/dist/route-context.js.map +1 -0
  142. package/dist/routes/DocsPage.astro +91 -0
  143. package/dist/routes/NotFound.astro +12 -0
  144. package/dist/routes/Page.astro +120 -0
  145. package/dist/styling.d.ts +17 -0
  146. package/dist/styling.d.ts.map +1 -0
  147. package/dist/styling.js +17 -0
  148. package/dist/styling.js.map +1 -0
  149. package/dist/tasty-states-BDKIbfw2.js +65 -0
  150. package/dist/tasty-states-BDKIbfw2.js.map +1 -0
  151. package/dist/theme/defaults.d.ts +21 -0
  152. package/dist/theme/defaults.d.ts.map +1 -0
  153. package/dist/theme/defaults.js +93 -0
  154. package/dist/theme/defaults.js.map +1 -0
  155. package/dist/theme/fonts.ts +64 -0
  156. package/dist/theme/shiki-theme.d.ts +13 -0
  157. package/dist/theme/shiki-theme.d.ts.map +1 -0
  158. package/dist/theme/shiki-theme.js +328 -0
  159. package/dist/theme/shiki-theme.js.map +1 -0
  160. package/dist/theme/tasty-config.d.ts +13 -0
  161. package/dist/theme/tasty-config.d.ts.map +1 -0
  162. package/dist/theme/tasty-config.js +16 -0
  163. package/dist/theme/tasty-config.js.map +1 -0
  164. package/dist/ui.d.ts +6 -0
  165. package/dist/ui.d.ts.map +1 -0
  166. package/dist/ui.js +53 -0
  167. package/dist/ui.js.map +1 -0
  168. package/dist/versioning.d.ts +11 -0
  169. package/dist/versioning.d.ts.map +1 -0
  170. package/dist/versioning.js +38 -0
  171. package/dist/versioning.js.map +1 -0
  172. package/package.json +92 -0
  173. package/tasty.config.mjs +1 -0
@@ -0,0 +1,866 @@
1
+ import { tasty } from "@tenphi/tasty";
2
+ import { customizeComponent } from "./customize-component.js";
3
+ import { configureCookbookStates } from "./tasty-states.js";
4
+
5
+ configureCookbookStates();
6
+
7
+ export const PageFrameRoot = customizeComponent(
8
+ "PageFrame",
9
+ tasty({
10
+ as: "div",
11
+ styles: {
12
+ display: "flex",
13
+ flow: "column",
14
+ blockSize: "min 100vh",
15
+ MainFrame: {
16
+ $: "> .main-frame",
17
+ inlineSize: { "": "0 100%", "@desktop": "min(100%, $layout-width)" },
18
+ inlineMargin: "auto",
19
+ blockPadding: "$docs-nav-height start",
20
+ inlinePadding: "0 start",
21
+ },
22
+ SidebarFrame: {
23
+ $: "&[data-has-sidebar] > .main-frame",
24
+ inlinePadding: { "": "$sidebar-width start", "@mobile": "0 start" },
25
+ },
26
+ Columns: {
27
+ $: "> .main-frame > div",
28
+ display: { "": "flex", "@narrow-layout": "block" },
29
+ inlineSize: "min 0",
30
+ },
31
+ },
32
+ }),
33
+ );
34
+
35
+ export const LogoRoot = customizeComponent(
36
+ "Logo",
37
+ tasty({
38
+ as: "span",
39
+ styles: {
40
+ display: "inline-grid",
41
+ flexGrow: "0",
42
+ flexShrink: "0",
43
+ flexBasis: "auto",
44
+ inlineSize: "4rem",
45
+ blockSize: "4rem",
46
+ color: "#logo-surface",
47
+ Svg: {
48
+ $: "> svg",
49
+ display: "block",
50
+ inlineSize: "100%",
51
+ blockSize: "100%",
52
+ },
53
+ Mark: {
54
+ $: "> svg > .td-logo__mark",
55
+ color: "#logo-mark",
56
+ },
57
+ },
58
+ }),
59
+ );
60
+
61
+ export const SiteLogoRoot = customizeComponent(
62
+ "SiteLogo",
63
+ tasty({
64
+ as: "span",
65
+ styles: {
66
+ display: "inline-flex",
67
+ alignItems: "center",
68
+ justifyContent: "center",
69
+ flexShrink: 0,
70
+ inlineSize: { "": "auto max 12rem", "@mobile": "auto max 30vw" },
71
+ blockSize: { "": "2rem", "@mobile": "1.75rem" },
72
+ Image: {
73
+ $: "> img",
74
+ display: "block",
75
+ inlineSize: "auto max 100%",
76
+ blockSize: "100%",
77
+ objectFit: "contain",
78
+ },
79
+ Light: {
80
+ $: "> .td-site-logo__light",
81
+ hide: {
82
+ "": false,
83
+ "@parent(theme=dark)": true,
84
+ "!@parent(theme) & @media(prefers-color-scheme: dark)": true,
85
+ },
86
+ },
87
+ Dark: {
88
+ $: "> .td-site-logo__dark",
89
+ hide: {
90
+ "": true,
91
+ "@parent(theme=dark)": false,
92
+ "!@parent(theme) & @media(prefers-color-scheme: dark)": false,
93
+ },
94
+ },
95
+ },
96
+ }),
97
+ );
98
+
99
+ export const PackageVersionRoot = customizeComponent(
100
+ "PackageVersion",
101
+ tasty({
102
+ as: "span",
103
+ styles: {
104
+ display: "inline-flex",
105
+ hide: { "": false, "@compact": true },
106
+ alignItems: "center",
107
+ flexShrink: "0",
108
+ blockSize: "min 1.5rem",
109
+ inlinePadding: "($gap * 0.75)",
110
+ color: "#text-soft",
111
+ fill: "#surface-2",
112
+ border: true,
113
+ radius: "999px",
114
+ preset: "small",
115
+ whiteSpace: "nowrap",
116
+ },
117
+ }),
118
+ );
119
+
120
+ export const VersionSwitcherRoot = customizeComponent(
121
+ "VersionSwitcher",
122
+ tasty({
123
+ as: "details",
124
+ styles: {
125
+ display: "inline-flex",
126
+ position: "relative",
127
+ flexShrink: "0",
128
+ color: "#text-soft",
129
+ Trigger: {
130
+ $: "> summary",
131
+ display: "flex",
132
+ alignItems: "center",
133
+ blockSize: "min $control-height",
134
+ inlinePadding: "$gap",
135
+ fill: "#surface-2",
136
+ border: true,
137
+ radius: "$header-control-radius",
138
+ preset: "small / strong",
139
+ cursor: "pointer",
140
+ whiteSpace: "nowrap",
141
+ },
142
+ Panel: {
143
+ $: "> nav",
144
+ position: "absolute",
145
+ inset: { "": "100% auto auto 0", "@mobile": "100% 0 auto auto" },
146
+ zIndex: "10",
147
+ inlineSize: "min 8rem",
148
+ padding: "($gap * 0.5)",
149
+ fill: "#surface",
150
+ border: true,
151
+ radius: "$radius",
152
+ shadow: "0 0.75rem 2rem #shadow",
153
+ },
154
+ OpenPanel: {
155
+ $: "&[open] > nav",
156
+ display: "grid",
157
+ },
158
+ Link: {
159
+ $: "> nav > a",
160
+ display: "block",
161
+ padding: "($gap * 0.5) $gap",
162
+ color: "#text-soft",
163
+ preset: "small",
164
+ textDecoration: "none",
165
+ },
166
+ CurrentLink: {
167
+ $: '> nav > a[aria-current="page"]',
168
+ color: "#accent-text",
169
+ preset: "small / strong",
170
+ },
171
+ },
172
+ }),
173
+ );
174
+
175
+ export const TopNavigationRoot = customizeComponent(
176
+ "TopNavigation",
177
+ tasty({
178
+ as: "nav",
179
+ styles: {
180
+ display: "flex",
181
+ hide: { "": false, "@mobile": true },
182
+ alignItems: "stretch",
183
+ gap: "clamp(1.25rem, 2.5vw, 2.5rem)",
184
+ inlineSize: "100%",
185
+ blockSize: "min 2.5rem",
186
+ blockBorder: "1bw solid #border start",
187
+ overflowX: "auto",
188
+ scrollbar: "none",
189
+
190
+ Scrollbar: { $: "&::-webkit-scrollbar", hide: true },
191
+ Link: {
192
+ $: "a",
193
+ position: "relative",
194
+ display: "inline-flex",
195
+ alignItems: "center",
196
+ flexGrow: "0",
197
+ flexShrink: "0",
198
+ flexBasis: "auto",
199
+ blockPadding: "($gap * 0.75) start, $gap end",
200
+ color: "#text-soft",
201
+ preset: "navigation",
202
+ textDecoration: "none",
203
+ whiteSpace: "nowrap",
204
+ },
205
+ HoverLink: { $: "a:hover", color: "#text" },
206
+ CurrentLink: { $: 'a[aria-current="page"]', color: "#accent-text" },
207
+ ActiveIndicator: {
208
+ $: 'a[aria-current="page"]::after',
209
+ content: '""',
210
+ position: "absolute",
211
+ inset: "auto 0 0",
212
+ blockSize: "2px",
213
+ radius: "999px",
214
+ fill: "#accent-surface",
215
+ },
216
+ },
217
+ }),
218
+ );
219
+
220
+ export const HeaderRoot = customizeComponent(
221
+ "Header",
222
+ tasty({
223
+ as: "div",
224
+ styles: {
225
+ display: "flex",
226
+ flow: "column",
227
+ inlineSize: "0 100% ($layout-width - ($docs-sidebar-pad-x * 2))",
228
+ blockSize: "100%",
229
+ inlineMargin: "auto",
230
+
231
+ Primary: {
232
+ $: ".td-header__primary",
233
+ display: "flex",
234
+ alignItems: "center",
235
+ gap: { "": "clamp(0.5rem, 1.5vw, 1.5rem)", "@mobile": "0.5rem" },
236
+ blockSize: { "": "4.5rem", "@mobile": "3.5rem" },
237
+ flexShrink: "0",
238
+ },
239
+ TitleAndSearch: {
240
+ $: ".td-header__title, .td-header__search",
241
+ display: "flex",
242
+ alignItems: "center",
243
+ inlineSize: "min 0",
244
+ },
245
+ Title: {
246
+ $: ".td-header__title",
247
+ display: "flex",
248
+ flow: "row",
249
+ gap: "$gap",
250
+ overflow: "hidden",
251
+ flexShrink: "1",
252
+ inlineSize: "min 0",
253
+ inlineMargin: { "": "0 end", "@mobile": "auto end" },
254
+ },
255
+ LogoLink: {
256
+ $: ".td-header__logo-link",
257
+ display: "inline-grid",
258
+ flexShrink: "0",
259
+ placeItems: "center",
260
+ color: "#text",
261
+ textDecoration: "none",
262
+ },
263
+ Logo: {
264
+ $: '.td-header__logo[data-tasty-anatomy="Logo"]',
265
+ inlineSize: {
266
+ "": "2rem",
267
+ "@mobile": "1.75rem",
268
+ },
269
+ blockSize: {
270
+ "": "2rem",
271
+ "@mobile": "1.75rem",
272
+ },
273
+ },
274
+ SiteTitle: {
275
+ $: ".site-title",
276
+ inlineSize: "min 0",
277
+ overflow: "hidden",
278
+ color: "#text",
279
+ preset: { "": "h4", "@mobile": "h5" },
280
+ textDecoration: "none",
281
+ whiteSpace: "nowrap",
282
+ textOverflow: "ellipsis",
283
+ },
284
+ Search: {
285
+ $: ".td-header__search",
286
+ flexGrow: { "": "1", "@mobile": "0" },
287
+ flexShrink: { "": "1", "@mobile": "0" },
288
+ inlineSize: { "": "min 8rem", "@mobile": "$docs-menu-button-size" },
289
+ inlineMargin: { "": "auto", "@mobile": "0" },
290
+ },
291
+ SearchElement: {
292
+ $: ".td-header__search site-search",
293
+ inlineSize: "0 100% 28rem",
294
+ inlineMargin: "auto",
295
+ },
296
+ Tools: {
297
+ $: ".td-header__tools",
298
+ display: "flex",
299
+ hide: { "": false, "@mobile": true },
300
+ flow: "row",
301
+ alignItems: "center",
302
+ justifyContent: "flex-end",
303
+ gap: "($gap * 0.5)",
304
+ },
305
+ ToolItem: {
306
+ $: ".td-header__tools > *",
307
+ margin: "0",
308
+ },
309
+ Social: {
310
+ $: ".td-header__social",
311
+ display: "flex",
312
+ alignItems: "center",
313
+ },
314
+ MobileTheme: {
315
+ $: ".td-header__mobile-theme",
316
+ display: "grid",
317
+ hide: { "": true, "@mobile": false },
318
+ flexShrink: "0",
319
+ order: "1",
320
+ inlineSize: "$docs-menu-button-size",
321
+ blockSize: "$docs-menu-button-size",
322
+ },
323
+ },
324
+ }),
325
+ );
326
+
327
+ export const ThemeSelectRoot = customizeComponent(
328
+ "ThemeSelect",
329
+ tasty({
330
+ as: "cookbook-appearance-menu",
331
+ styles: {
332
+ display: "flex",
333
+ flexShrink: "0",
334
+ "$popover-transition": "120ms",
335
+ Trigger: {
336
+ $: "> button",
337
+ display: "grid",
338
+ placeItems: "center",
339
+ inlineSize: {
340
+ "": "$control-height",
341
+ "@mobile": "$docs-menu-button-size",
342
+ },
343
+ blockSize: {
344
+ "": "$control-height",
345
+ "@mobile": "$docs-menu-button-size",
346
+ },
347
+ padding: "0",
348
+ color: "#text-soft",
349
+ fill: "#clear",
350
+ border: "0",
351
+ radius: "$header-control-radius",
352
+ transition: "color $transition, fill $transition",
353
+ },
354
+ HoverTrigger: {
355
+ $: "> button:hover, &:has([popover]:popover-open) > button",
356
+ color: "#text",
357
+ fill: "#surface-2-hover",
358
+ },
359
+ ActiveTrigger: {
360
+ $: "> button:active",
361
+ color: "#text",
362
+ fill: "#surface-2-pressed",
363
+ },
364
+ Icon: {
365
+ $: "> button svg",
366
+ display: "block",
367
+ inlineSize: { "": "1.25rem", "@mobile": "1.125rem" },
368
+ blockSize: { "": "1.25rem", "@mobile": "1.125rem" },
369
+ },
370
+ Panel: {
371
+ $: "[popover]",
372
+ position: "fixed",
373
+ inset: "auto",
374
+ blockInset: { "": "4rem start", "@mobile": "3.5rem start" },
375
+ inlineInset:
376
+ "max($docs-nav-pad-x, ((100vw - $layout-width) / 2 + $docs-sidebar-pad-x)) end",
377
+ inlineSize: "min(15rem, calc(100vw - 2 * $docs-nav-pad-x))",
378
+ blockSize: "max (100dvh - $docs-nav-height - $gap)",
379
+ overflowY: "auto",
380
+ margin: "0",
381
+ padding: "$gap",
382
+ color: "#text",
383
+ fill: "#surface-2",
384
+ border: true,
385
+ radius: "$card-radius",
386
+ shadow: "0 0.75rem 2rem #shadow",
387
+ opacity: "0",
388
+ scale: "1 0.96",
389
+ transformOrigin: "top",
390
+ transition: {
391
+ "": "none",
392
+ "!@reduced-motion":
393
+ "opacity $popover-transition ease-out, scale $popover-transition ease-out, display $popover-transition allow-discrete, overlay $popover-transition allow-discrete",
394
+ },
395
+ },
396
+ OpenPanel: {
397
+ $: "[popover]:popover-open",
398
+ opacity: { "": "1", "@starting": "0" },
399
+ scale: { "": "1", "@starting": "1 0.96" },
400
+ },
401
+ Section: {
402
+ $: "fieldset",
403
+ inlineSize: "min 0",
404
+ margin: "0",
405
+ padding: "0",
406
+ border: "0",
407
+ },
408
+ SectionSpacing: {
409
+ $: "fieldset + fieldset",
410
+ blockMargin: "$gap start",
411
+ blockPadding: "$gap start",
412
+ blockBorder: "$border-width solid #border start",
413
+ },
414
+ SectionLabel: {
415
+ $: "legend",
416
+ float: "inline-start",
417
+ inlineSize: "100%",
418
+ padding: "($gap * 0.75) $gap",
419
+ color: "#text-muted",
420
+ preset: "small / strong",
421
+ },
422
+ Option: {
423
+ $: "label",
424
+ position: "relative",
425
+ display: "flex",
426
+ alignItems: "center",
427
+ gap: "$gap",
428
+ inlineSize: "100%",
429
+ blockSize: "min 2.25rem",
430
+ padding: "($gap * 0.75) $gap",
431
+ color: "#text-soft",
432
+ preset: "small",
433
+ radius: "$radius",
434
+ cursor: "pointer",
435
+ },
436
+ HoverOption: {
437
+ $: "label:hover",
438
+ color: "#text",
439
+ fill: "#surface-2-hover",
440
+ },
441
+ CheckedOption: {
442
+ $: "label:has(input:checked)",
443
+ color: "#accent-text",
444
+ fill: "#accent-surface-2-subtle",
445
+ },
446
+ FocusedOption: {
447
+ $: "label:has(input:focus-visible)",
448
+ outline: "$outline-width solid #focus / -2px",
449
+ },
450
+ Input: {
451
+ $: "input",
452
+ position: "absolute",
453
+ inlineSize: "1px",
454
+ blockSize: "0 1px",
455
+ padding: "0",
456
+ margin: "0",
457
+ overflow: "hidden",
458
+ clipPath: "inset(50%)",
459
+ whiteSpace: "nowrap",
460
+ },
461
+ OptionIcon: {
462
+ $: "label > svg",
463
+ display: "block",
464
+ flexShrink: "0",
465
+ inlineSize: "1rem",
466
+ blockSize: "1rem",
467
+ },
468
+ Checkmark: {
469
+ $: "label > svg:last-child",
470
+ inlineMargin: "auto start",
471
+ visibility: "hidden",
472
+ },
473
+ SelectedCheckmark: {
474
+ $: "label:has(input:checked) > svg:last-child",
475
+ visibility: "visible",
476
+ },
477
+ },
478
+ }),
479
+ );
480
+
481
+ export const SocialIconsRoot = customizeComponent(
482
+ "SocialIcons",
483
+ tasty({
484
+ as: "div",
485
+ styles: {
486
+ display: "flex",
487
+ alignItems: "center",
488
+ gap: "($gap * 0.5)",
489
+ Link: {
490
+ $: "a",
491
+ display: "grid",
492
+ placeItems: "center",
493
+ inlineSize: "$control-height",
494
+ blockSize: "$control-height",
495
+ color: "#text-soft",
496
+ fill: "#clear",
497
+ radius: "$header-control-radius",
498
+ textDecoration: "none",
499
+ },
500
+ HoverLink: {
501
+ $: "a:hover",
502
+ color: "#text",
503
+ fill: "#surface-2-hover",
504
+ },
505
+ Icon: {
506
+ $: "a > svg",
507
+ display: "block",
508
+ inlineSize: "1.25rem",
509
+ blockSize: "1.25rem",
510
+ },
511
+ },
512
+ }),
513
+ );
514
+
515
+ export const MobileNavigationTabsRoot = customizeComponent(
516
+ "MobileNavigationTabs",
517
+ tasty({
518
+ as: "nav",
519
+ styles: {
520
+ display: "grid",
521
+ hide: { "": false, "@desktop": true },
522
+ gap: "$gap",
523
+ blockMargin: "0",
524
+ Label: {
525
+ $: ".td-mobile-tabs__label",
526
+ overflow: "hidden",
527
+ textOverflow: "ellipsis",
528
+ whiteSpace: "nowrap",
529
+ },
530
+ Trigger: {
531
+ $: "summary",
532
+ display: "flex",
533
+ alignItems: "center",
534
+ justifyContent: "space-between",
535
+ gap: "$gap",
536
+ blockSize: "min 2.75rem",
537
+ padding: "$gap ($gap * 1.25)",
538
+ border: true,
539
+ radius: "$radius",
540
+ color: "#text-soft",
541
+ fill: "#surface",
542
+ preset: "navigation",
543
+ listStyle: "none",
544
+ },
545
+ Marker: {
546
+ $: "summary::marker, summary::-webkit-details-marker",
547
+ hide: true,
548
+ },
549
+ Caret: { $: "summary > svg", flexShrink: "0" },
550
+ ExpandedCaret: { $: "details[open] > summary > svg", rotate: "180deg" },
551
+ List: {
552
+ $: "ul",
553
+ display: "grid",
554
+ gap: "1bw",
555
+ padding: "$gap",
556
+ blockMargin: "$gap start",
557
+ margin: "$gap 0 0",
558
+ listStyle: "none",
559
+ border: true,
560
+ radius: "$radius",
561
+ fill: "#surface",
562
+ },
563
+ Item: { $: "li", margin: "0" },
564
+ Link: {
565
+ $: "a",
566
+ display: "flex",
567
+ alignItems: "center",
568
+ blockSize: "min 2.25rem",
569
+ padding: "($gap * 0.75) ($gap * 1.25)",
570
+ color: "#text-soft",
571
+ preset: "navigation",
572
+ textDecoration: "none",
573
+ radius: "$radius",
574
+ },
575
+ HoverLink: {
576
+ $: "a:hover",
577
+ color: "#text",
578
+ fill: "#surface-2-hover",
579
+ },
580
+ CurrentLink: {
581
+ $: 'a[aria-current="page"]',
582
+ color: "#accent-text",
583
+ fill: "#accent-surface-subtle",
584
+ },
585
+ },
586
+ }),
587
+ );
588
+
589
+ export const MobileMenuFooterRoot = customizeComponent(
590
+ "MobileMenuFooter",
591
+ tasty({
592
+ as: "div",
593
+ styles: {
594
+ display: "flex",
595
+ alignItems: "center",
596
+ justifyContent: "space-between",
597
+ flow: "row wrap",
598
+ gap: "($gap * 2)",
599
+ blockPadding: "$gap",
600
+ blockBorder: "$border-width solid #border start",
601
+ Social: {
602
+ $: ".td-mobile-preferences__social",
603
+ display: "flex",
604
+ hide: { "": false, ":empty": true },
605
+ alignItems: "center",
606
+ gap: "($gap * 2)",
607
+ inlineMargin: "auto end",
608
+ blockPadding: "($gap * 2)",
609
+ },
610
+ },
611
+ }),
612
+ );
613
+
614
+ export const FooterRoot = customizeComponent(
615
+ "Footer",
616
+ tasty({
617
+ as: "footer",
618
+ styles: {
619
+ display: "flex",
620
+ flow: "column",
621
+ gap: "($gap * 3)",
622
+ Meta: {
623
+ $: ".td-footer__meta",
624
+ display: "flex",
625
+ flow: "row wrap",
626
+ justifyContent: "space-between",
627
+ gap: "($gap * 1.5) ($gap * 6)",
628
+ blockMargin: "($gap * 6) start",
629
+ color: "#text-muted",
630
+ preset: "small",
631
+ },
632
+ LoneMetaItem: {
633
+ $: ".td-footer__meta > :only-child",
634
+ inlineMargin: "auto start",
635
+ },
636
+ MetaLink: {
637
+ $: ".td-footer__meta a",
638
+ display: "flex",
639
+ alignItems: "center",
640
+ gap: "$gap",
641
+ color: "#text-muted",
642
+ textDecoration: "none",
643
+ },
644
+ HoverMetaLink: {
645
+ $: ".td-footer__meta a:hover",
646
+ color: "#text",
647
+ },
648
+ Credit: {
649
+ $: ".td-footer__credit",
650
+ margin: "($gap * 3) auto",
651
+ color: "#text",
652
+ preset: "small",
653
+ textAlign: "center",
654
+ },
655
+ CreditLink: {
656
+ $: ".td-footer__credit a",
657
+ color: "#accent-text",
658
+ preset: "small / strong",
659
+ textDecoration: "none",
660
+ },
661
+ HoverCreditLink: {
662
+ $: ".td-footer__credit a:hover",
663
+ color: "#text",
664
+ },
665
+ },
666
+ }),
667
+ );
668
+
669
+ export const HeaderLinksRoot = customizeComponent(
670
+ "HeaderLinks",
671
+ tasty({
672
+ as: "cookbook-header-links",
673
+ styles: {
674
+ display: "flex",
675
+ flexShrink: "0",
676
+ order: { "": "0", "@mobile": "2" },
677
+ Desktop: {
678
+ $: ".td-header-links__desktop",
679
+ display: "flex",
680
+ hide: { "": false, "@mobile": true },
681
+ alignItems: "center",
682
+ gap: "($gap * 0.5)",
683
+ },
684
+ Link: {
685
+ $: "a",
686
+ display: "flex",
687
+ alignItems: "center",
688
+ justifyContent: "center",
689
+ blockSize: "min $control-height",
690
+ padding: "$gap ($gap * 1.25)",
691
+ radius: "$radius",
692
+ color: "#text-soft",
693
+ fill: "#clear",
694
+ preset: "small / strong",
695
+ textDecoration: "none",
696
+ whiteSpace: "nowrap",
697
+ },
698
+ DesktopLink: {
699
+ $: ".td-header-links__desktop a",
700
+ radius: "$header-control-radius",
701
+ },
702
+ HoverLink: { $: "a:hover", color: "#text", fill: "#surface-2-hover" },
703
+ PrimaryLink: {
704
+ $: 'a[data-variant="primary"]',
705
+ color: "#accent-surface-text",
706
+ fill: "#accent-surface",
707
+ },
708
+ HoverPrimaryLink: {
709
+ $: 'a[data-variant="primary"]:hover',
710
+ filter: "brightness(1.1)",
711
+ },
712
+ Trigger: {
713
+ $: ".td-header-links__trigger",
714
+ display: "grid",
715
+ hide: { "": true, "@mobile": false },
716
+ placeItems: "center",
717
+ inlineSize: "$docs-menu-button-size",
718
+ blockSize: "$docs-menu-button-size",
719
+ padding: "0",
720
+ border: "0",
721
+ radius: "$header-control-radius",
722
+ color: "#text-soft",
723
+ fill: "#clear",
724
+ },
725
+ HoverTrigger: {
726
+ $: ".td-header-links__trigger:hover",
727
+ color: "#text",
728
+ fill: "#surface-2-hover",
729
+ },
730
+ Panel: {
731
+ $: ".td-header-links__panel",
732
+ position: "fixed",
733
+ inset: "0.5rem $docs-nav-pad-x auto auto",
734
+ inlineSize: "min(20rem, calc(100vw - 2 * $docs-nav-pad-x))",
735
+ blockSize: "max (100dvh - 1rem)",
736
+ overflowY: "auto",
737
+ margin: "0",
738
+ padding: "$gap",
739
+ color: "#text",
740
+ fill: "#surface",
741
+ border: true,
742
+ radius: "$card-radius",
743
+ shadow: "0 0.75rem 2rem #shadow",
744
+ },
745
+ PanelNavigation: {
746
+ $: ".td-header-links__panel nav",
747
+ display: "grid",
748
+ gap: "1bw",
749
+ },
750
+ PanelLink: {
751
+ $: ".td-header-links__panel a",
752
+ justifyContent: "flex-start",
753
+ blockSize: "min $docs-menu-button-size",
754
+ inlinePadding: "($gap * 1.5)",
755
+ preset: "navigation",
756
+ textAlign: "start",
757
+ whiteSpace: "normal",
758
+ overflowWrap: "anywhere",
759
+ },
760
+ FirstPanelLink: {
761
+ $: ".td-header-links__panel a:first-child",
762
+ inlinePadding:
763
+ "($gap * 1.5) start, ($docs-menu-button-size + $gap) end",
764
+ },
765
+ Close: {
766
+ $: ".td-header-links__close",
767
+ position: "absolute",
768
+ inset: "$gap $gap auto auto",
769
+ display: "grid",
770
+ placeItems: "center",
771
+ inlineSize: "$docs-menu-button-size",
772
+ blockSize: "$docs-menu-button-size",
773
+ padding: "0",
774
+ border: "0",
775
+ color: "#text-soft",
776
+ fill: "#clear",
777
+ radius: "$header-control-radius",
778
+ },
779
+ HoverClose: {
780
+ $: ".td-header-links__close:hover",
781
+ color: "#text",
782
+ fill: "#surface-2-hover",
783
+ },
784
+ },
785
+ }),
786
+ );
787
+
788
+ export const PageActionsRoot = customizeComponent(
789
+ "PageActions",
790
+ tasty({
791
+ as: "cookbook-page-actions",
792
+ styles: {
793
+ display: "flex",
794
+ flow: "row wrap",
795
+ alignItems: "center",
796
+ gap: "$gap",
797
+ preset: "small",
798
+ Control: {
799
+ $: "button, a",
800
+ display: "inline-flex",
801
+ alignItems: "center",
802
+ padding: "$gap ($gap * 1.5)",
803
+ border: true,
804
+ radius: "$radius",
805
+ color: "#text",
806
+ fill: "#surface",
807
+ preset: "small",
808
+ textDecoration: "none",
809
+ cursor: "pointer",
810
+ },
811
+ Hover: { $: "button:hover, a:hover", fill: "#surface-2" },
812
+ Focus: {
813
+ $: "button:focus-visible, a:focus-visible",
814
+ outline: "2px solid #focus / 2px",
815
+ },
816
+ Pending: { $: 'button[aria-disabled="true"]', cursor: "wait" },
817
+ Status: { $: "[role=status]", color: "#text-soft" },
818
+ },
819
+ }),
820
+ );
821
+
822
+ export const MobileTableOfContentsRoot = customizeComponent(
823
+ "MobileTableOfContents",
824
+ tasty({
825
+ as: "cookbook-mobile-toc",
826
+ styles: {
827
+ display: "block",
828
+ hide: { "": true, "@narrow-layout": false },
829
+ padding: "$gap $docs-sidebar-pad-x",
830
+ blockBorder: "$border-width solid #border end",
831
+ fill: "#surface",
832
+ Summary: {
833
+ $: "summary",
834
+ padding: "$gap",
835
+ color: "#text",
836
+ preset: "small / strong",
837
+ cursor: "pointer",
838
+ radius: "$radius",
839
+ },
840
+ List: {
841
+ $: "ul",
842
+ listStyle: "none",
843
+ padding: "0",
844
+ margin: "0",
845
+ display: "grid",
846
+ gap: "2px",
847
+ },
848
+ NestedList: { $: "ul ul", inlinePadding: "($gap * 2) start" },
849
+ Item: { $: "li", listStyle: "none", margin: "0", padding: "0" },
850
+ Link: {
851
+ $: "a",
852
+ display: "block",
853
+ padding: "$gap",
854
+ color: "#text-soft",
855
+ preset: "small",
856
+ radius: "$radius",
857
+ textDecoration: "none",
858
+ },
859
+ HoverLink: { $: "a:hover", fill: "#surface-2", color: "#text" },
860
+ Focus: {
861
+ $: "a:focus-visible, summary:focus-visible",
862
+ outline: "2px solid #focus / 2px",
863
+ },
864
+ },
865
+ }),
866
+ );