@tenphi/renderer 0.28.0 → 0.30.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 (59) hide show
  1. package/README.md +6 -4
  2. package/dist/components/Banner.styles.js +1 -1
  3. package/dist/components/Button.styles.js +1 -1
  4. package/dist/components/Card.astro +3 -4
  5. package/dist/components/Card.styles.js +16 -25
  6. package/dist/components/Document.styles.js +19 -40
  7. package/dist/components/Footer.styles.js +5 -5
  8. package/dist/components/Header.styles.js +2 -2
  9. package/dist/components/HeaderFrame.styles.js +1 -1
  10. package/dist/components/HeaderLinks.styles.js +25 -15
  11. package/dist/components/Hero.styles.js +8 -8
  12. package/dist/components/LanguageSelect.styles.js +5 -6
  13. package/dist/components/MainContent.styles.js +6 -8
  14. package/dist/components/MainPane.styles.js +2 -2
  15. package/dist/components/MarkdownAlert.styles.js +13 -13
  16. package/dist/components/MarkdownCodeBlock.styles.js +7 -10
  17. package/dist/components/MarkdownContent.styles.js +11 -17
  18. package/dist/components/MarkdownHeading.styles.js +4 -6
  19. package/dist/components/MarkdownInlineCode.styles.js +1 -1
  20. package/dist/components/MarkdownTable.styles.js +7 -10
  21. package/dist/components/Mermaid.styles.js +2 -2
  22. package/dist/components/MermaidSource.styles.js +1 -1
  23. package/dist/components/MobileMenuFooter.styles.js +5 -5
  24. package/dist/components/MobileMenuToggle.styles.js +2 -2
  25. package/dist/components/MobileNavigationTabs.styles.js +9 -10
  26. package/dist/components/MobileTableOfContents.styles.js +7 -7
  27. package/dist/components/PackageVersion.styles.js +1 -1
  28. package/dist/components/PageActions.styles.js +3 -3
  29. package/dist/components/PageFrame.styles.js +1 -1
  30. package/dist/components/Pagination.styles.js +13 -18
  31. package/dist/components/Preview.styles.js +1 -1
  32. package/dist/components/Search.styles.js +7 -8
  33. package/dist/components/SearchButton.styles.js +13 -5
  34. package/dist/components/SearchResults.styles.js +20 -20
  35. package/dist/components/Sidebar.styles.js +17 -19
  36. package/dist/components/SkipLink.styles.js +4 -3
  37. package/dist/components/SocialIcons.styles.js +1 -1
  38. package/dist/components/Steps.styles.js +3 -3
  39. package/dist/components/TableOfContents.styles.js +3 -3
  40. package/dist/components/TableOfContentsLayout.styles.js +2 -2
  41. package/dist/components/ThemeSelect.styles.js +16 -16
  42. package/dist/components/TopNavigation.styles.js +1 -3
  43. package/dist/components/VersionSwitcher.styles.js +4 -4
  44. package/dist/components/select-popover-styles.js +14 -14
  45. package/dist/define-component.d.ts.map +1 -1
  46. package/dist/define-component.js +20 -1
  47. package/dist/define-component.js.map +1 -0
  48. package/dist/eslint-plugin.d.ts +0 -5
  49. package/dist/eslint-plugin.d.ts.map +1 -1
  50. package/dist/eslint-plugin.js +0 -5
  51. package/dist/eslint-plugin.js.map +1 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/styling.js +2 -2
  54. package/dist/styling.js.map +1 -1
  55. package/package.json +4 -4
  56. package/dist/components/inherit-component-parts.d.ts +0 -1
  57. package/dist/components/inherit-component-parts.js +0 -7
  58. package/dist/define-component-BP4YwMak.js +0 -28
  59. package/dist/define-component-BP4YwMak.js.map +0 -1
@@ -20,7 +20,7 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
20
20
  "$pagefind-ui-text": "#text-soft",
21
21
  "$pagefind-ui-background": "#surface",
22
22
  "$pagefind-ui-border": "#border",
23
- "$pagefind-ui-border-width": "$border-width",
23
+ "$pagefind-ui-border-width": "1bw",
24
24
  "$pagefind-ui-tag": "#surface-3",
25
25
  preset: "body",
26
26
  UI: {
@@ -45,7 +45,7 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
45
45
  },
46
46
  EngineControls: {
47
47
  $: ".pagefind-ui__search-input, .pagefind-ui__search-clear",
48
- display: "none",
48
+ hide: true,
49
49
  },
50
50
  Drawer: {
51
51
  $: ".pagefind-ui__drawer",
@@ -61,8 +61,8 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
61
61
  blockSize: "min 3rem",
62
62
  inlinePadding: "2.75rem",
63
63
  color: "#text",
64
- border: "$border-width solid #border",
65
- radius: "$radius",
64
+ border: true,
65
+ radius: "1r",
66
66
  fill: "#surface",
67
67
  shadow: "none",
68
68
  },
@@ -87,17 +87,17 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
87
87
  flexGrow: "1",
88
88
  blockSize: "min 0",
89
89
  overflowY: "auto",
90
- blockMargin: { "": "($gap * 3) start", "!@md": "($gap * 2) start" },
91
- blockBorder: "$border-width solid #border start",
92
- inlineSize: { "!@md": "(100% + ($gap * 4))" },
93
- inlineMargin: { "!@md": "(-1 * $gap * 2)" },
94
- inlinePadding: { "!@md": "($gap * 2)" },
95
- blockPadding: { "!@md": "($gap * 2) end" },
90
+ blockMargin: { "": "3x start", "!@md": "2x start" },
91
+ blockBorder: "1bw solid #border start",
92
+ inlineSize: { "": null, "!@md": "(100% + 4x)" },
93
+ inlineMargin: { "": null, "!@md": "-2x" },
94
+ inlinePadding: { "": null, "!@md": "2x" },
95
+ blockPadding: { "": null, "!@md": "2x end" },
96
96
  },
97
97
  Result: {
98
98
  $: ".pagefind-ui__result",
99
- blockPadding: "($gap * 2)",
100
- blockBorder: "$border-width solid #border start",
99
+ blockPadding: "2x",
100
+ blockBorder: "1bw solid #border start",
101
101
  },
102
102
  ResultLink: {
103
103
  $: ".pagefind-ui__result-link",
@@ -122,13 +122,13 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
122
122
  },
123
123
  Excerpt: {
124
124
  $: ".pagefind-ui__result-excerpt",
125
- margin: "$gap 0 0",
125
+ margin: "1x top",
126
126
  color: "#text-soft",
127
127
  preset: "small",
128
128
  },
129
129
  NestedResult: {
130
130
  $: ".pagefind-ui__result-nested",
131
- margin: "2x 0 0",
131
+ margin: "2x top",
132
132
  inlinePadding: "2x start",
133
133
  inlineBorder: "1bw solid #border start",
134
134
  },
@@ -141,12 +141,12 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
141
141
  },
142
142
  More: {
143
143
  $: ".pagefind-ui__button",
144
- display: { "!@md": "block" },
145
- inlineSize: { "!@md": "max-content" },
146
- inlineMargin: { "!@md": "auto start" },
144
+ display: { "": null, "!@md": "block" },
145
+ inlineSize: { "": null, "!@md": "max-content" },
146
+ inlineMargin: { "": null, "!@md": "auto start" },
147
147
  padding: "1x 2x",
148
- border: "$border-width solid #border",
149
- radius: "$radius",
148
+ border: true,
149
+ radius: "1r",
150
150
  color: "#text",
151
151
  fill: "#surface-2",
152
152
  preset: "navigation",
@@ -184,7 +184,7 @@ export const SearchResultsRoot = defineComponent("SearchResults", {
184
184
  },
185
185
  SuppressedClear: {
186
186
  $: "[data-element=Clear]",
187
- display: { "": "", "@own([hidden])": "none" },
187
+ hide: { "": null, "@own([hidden])": true },
188
188
  },
189
189
  },
190
190
  });
@@ -8,22 +8,22 @@ export const SidebarRoot = defineComponent("Sidebar", {
8
8
  "data-element": "Sidebar",
9
9
  styles: {
10
10
  "$sidebar-transition": "120ms",
11
- display: { "@md": "block" },
11
+ display: { "": null, "@md": "block" },
12
12
  visibility: {
13
13
  "": "visible",
14
14
  "!@md": "hidden",
15
- ":is(:popover-open) & !@md": "visible",
15
+ ":popover-open & !@md": "visible",
16
16
  },
17
17
  position: "fixed",
18
18
  zIndex: { "": "8", "!@md": "12" },
19
19
  blockInset: { "": "$docs-nav-height start, 0 end", "!@md": "0" },
20
20
  inlineInset: {
21
21
  "": "0 start, auto end",
22
- "@md": "max(0px, calc((100% - $layout-width) / 2)) start, auto end",
22
+ "@md": "max(0px, ((100% - $layout-width) / 2)) start, auto end",
23
23
  },
24
24
  inlineSize: {
25
25
  "": "$sidebar-width",
26
- "!@md": "min(22rem, calc(100% - 2rem))",
26
+ "!@md": "min(22rem, (100% - 2rem))",
27
27
  },
28
28
  blockSize: "auto",
29
29
  margin: "0",
@@ -38,7 +38,7 @@ export const SidebarRoot = defineComponent("Sidebar", {
38
38
  translate: {
39
39
  "": "0",
40
40
  "!@md": "-100% 0",
41
- ":is(:popover-open) & [data-open] & !@md": "0",
41
+ ":popover-open & [data-open] & !@md": "0",
42
42
  },
43
43
  transition: {
44
44
  "": "none",
@@ -57,7 +57,7 @@ export const SidebarRoot = defineComponent("Sidebar", {
57
57
  },
58
58
  OpenBackdrop: {
59
59
  $: "&::backdrop",
60
- opacity: { "": null, ":is(:popover-open) & [data-open]": "1" },
60
+ opacity: { "": null, ":popover-open & [data-open]": "1" },
61
61
  },
62
62
  MobileHeading: {
63
63
  $: "MobileHeading",
@@ -65,7 +65,7 @@ export const SidebarRoot = defineComponent("Sidebar", {
65
65
  hide: { "": true, "!@md": false },
66
66
  alignItems: "center",
67
67
  justifyContent: "space-between",
68
- gap: "$gap",
68
+ gap: "1x",
69
69
  },
70
70
  HomeLink: {
71
71
  display: "flex",
@@ -73,7 +73,7 @@ export const SidebarRoot = defineComponent("Sidebar", {
73
73
  textDecoration: "none",
74
74
  inlineSize: "min 0",
75
75
  padding: "0",
76
- gap: "$gap",
76
+ gap: "1x",
77
77
  color: "#text",
78
78
  preset: "h4",
79
79
  },
@@ -137,10 +137,10 @@ export const SidebarRoot = defineComponent("Sidebar", {
137
137
  flow: "column",
138
138
  blockSize: "min 100%",
139
139
  inlinePadding: "$docs-sidebar-pad-x",
140
- gap: "($gap * 2)",
140
+ gap: "2x",
141
141
  blockPadding: {
142
- "": "($gap * 3) start, ($gap * 6) end",
143
- "!@md": "($gap * 2) start, ($gap * 6) end",
142
+ "": "3x start, 6x end",
143
+ "!@md": "2x start, 6x end",
144
144
  },
145
145
  },
146
146
  Tree: { $: "cookbook-sidebar", display: "block" },
@@ -167,27 +167,27 @@ export const SidebarRoot = defineComponent("Sidebar", {
167
167
  $: "ul > li + li",
168
168
  blockMargin: {
169
169
  "": null,
170
- "@own(top-level & section)": "($gap * 2.5) start",
170
+ "@own(top-level & section)": "2.5x start",
171
171
  },
172
172
  },
173
173
  NestedItem: {
174
174
  $: "cookbook-sidebar details > ul > li",
175
- inlineMargin: "($gap * 1.5) start",
175
+ inlineMargin: "1.5x start",
176
176
  },
177
177
  SectionHeading: {
178
178
  $: "SectionHeading",
179
- margin: "0 0 1bw",
180
- padding: "($gap * 0.75) ($gap * 1.25)",
179
+ margin: "1bw bottom",
180
+ padding: "0.75x 1.25x",
181
181
  color: "#text",
182
182
  preset: "small / strong",
183
183
  },
184
184
  Control: {
185
185
  $: "cookbook-sidebar summary, cookbook-sidebar a",
186
186
  blockSize: "min 2.25rem",
187
- padding: "($gap * 0.75) ($gap * 1.25)",
187
+ padding: "0.75x 1.25x",
188
188
  color: "#sidebar-text",
189
189
  preset: "navigation",
190
- radius: "$radius",
190
+ radius: "1r",
191
191
  textDecoration: "none",
192
192
  },
193
193
  Summary: {
@@ -267,8 +267,6 @@ export const SidebarRoot = defineComponent("Sidebar", {
267
267
  flexShrink: "0",
268
268
  inlineSize: "1rem",
269
269
  blockSize: "1rem",
270
- // Tasty and browsers support :dir(); the lint rule's pseudo list omits it.
271
- // eslint-disable-next-line tasty/valid-state-key
272
270
  transform: { "": "none", ":dir(rtl)": "rotate(180deg)" },
273
271
  },
274
272
  ExpandedCaret: {
@@ -11,14 +11,15 @@ export const SkipLinkRoot = defineComponent("SkipLink", {
11
11
  zIndex: { "": null, ":focus": "20" },
12
12
  color: { "": null, ":focus": "#accent-surface-text" },
13
13
  fill: { "": null, ":focus": "#accent-surface" },
14
- radius: { "": null, ":focus": "$radius" },
14
+ radius: { "": null, ":focus": "1r" },
15
15
  shadow: { "": null, ":focus": "0 1rem 3rem #shadow" },
16
16
  textDecoration: { "": null, ":focus": "none" },
17
17
  position: "fixed",
18
- inset: "($gap * 1.5) auto auto ($gap * 1.5)",
18
+ blockInset: "1.5x start",
19
+ inlineInset: "1.5x start",
19
20
  inlineSize: { "": "$visually-hidden-size", ":focus": "auto" },
20
21
  blockSize: { "": "$visually-hidden-size", ":focus": "auto" },
21
- padding: { "": "0", ":focus": "$gap ($gap * 2)" },
22
+ padding: { "": "0", ":focus": "1x 2x" },
22
23
  overflow: { "": "hidden", ":focus": "visible" },
23
24
  clip: { "": "rect(0, 0, 0, 0)", ":focus": "auto" },
24
25
  },
@@ -9,7 +9,7 @@ export const SocialIconsRoot = defineComponent("SocialIcons", {
9
9
  styles: {
10
10
  display: "flex",
11
11
  alignItems: "center",
12
- gap: "($gap * 0.5)",
12
+ gap: "0.5x",
13
13
  Link: {
14
14
  $: "a",
15
15
  display: "grid",
@@ -9,12 +9,12 @@ export const StepsRoot = defineComponent("Steps", {
9
9
  styles: {
10
10
  display: "grid",
11
11
  gap: "2x",
12
- padding: "4x left",
13
- border: "1bw left #border",
12
+ inlinePadding: "4x start",
13
+ inlineBorder: "1bw solid #border start",
14
14
 
15
15
  Item: {
16
16
  $: "> li",
17
- padding: "1x left",
17
+ inlinePadding: "1x start",
18
18
  },
19
19
  Marker: {
20
20
  $: "> li::marker",
@@ -9,11 +9,11 @@ export const TableOfContentsRoot = defineComponent("TableOfContents", {
9
9
  styles: {
10
10
  display: "block",
11
11
  hide: { "": false, "!@lg": true },
12
- blockPadding: "($gap * 4) start",
12
+ blockPadding: "4x start",
13
13
  inlinePadding: "$docs-sidebar-pad-x",
14
14
  Heading: {
15
15
  $: "h2",
16
- margin: "0 0 $gap",
16
+ margin: "1x bottom",
17
17
  color: "#text",
18
18
  preset: "small / strong",
19
19
  },
@@ -39,7 +39,7 @@ export const TableOfContentsRoot = defineComponent("TableOfContents", {
39
39
  $: "a",
40
40
  display: "block",
41
41
  inlineSize: "0 auto 100%",
42
- blockPadding: "($gap * 0.5)",
42
+ blockPadding: "0.5x",
43
43
  color: "#text-muted",
44
44
  preset: "small",
45
45
  textDecoration: "none",
@@ -9,7 +9,7 @@ export const TableOfContentsLayoutRoot = defineComponent(
9
9
  as: "aside",
10
10
  "data-element": "TableOfContentsLayout",
11
11
  styles: {
12
- display: { "": "", ":has(cookbook-mobile-toc)": "block" },
12
+ display: { "": null, ":has(cookbook-mobile-toc)": "block" },
13
13
  hide: {
14
14
  "": false,
15
15
  "!@lg": true,
@@ -18,7 +18,7 @@ export const TableOfContentsLayoutRoot = defineComponent(
18
18
  order: { "": "2", "!@lg": "0" },
19
19
  position: "relative",
20
20
  inlineSize: {
21
- "": "max($sidebar-width, calc($sidebar-width + (100% - $content-width - $sidebar-width) / 2))",
21
+ "": "max($sidebar-width, ($sidebar-width + (100% - $content-width - $sidebar-width) / 2))",
22
22
  "!@lg": "100%",
23
23
  },
24
24
  Content: {
@@ -27,17 +27,17 @@ export const ThemeSelectRoot = defineComponent("ThemeSelect", {
27
27
  fill: "#clear",
28
28
  border: "0",
29
29
  radius: "$header-control-radius",
30
- transition: "color $transition, fill $transition",
30
+ transition: "color, fill",
31
31
  },
32
32
  HoverTrigger: {
33
33
  $: "> button",
34
34
  color: {
35
35
  "": null,
36
- "@own(:hover) | :has([popover]:is(:popover-open))": "#text",
36
+ "@own(:hover) | :has([popover]:popover-open)": "#text",
37
37
  },
38
38
  fill: {
39
39
  "": null,
40
- "@own(:hover) | :has([popover]:is(:popover-open))": "#surface-2-hover",
40
+ "@own(:hover) | :has([popover]:popover-open)": "#surface-2-hover",
41
41
  },
42
42
  },
43
43
  ActiveTrigger: {
@@ -58,15 +58,15 @@ export const ThemeSelectRoot = defineComponent("ThemeSelect", {
58
58
  blockInset: { "": "4rem start", "!@md": "3.5rem start" },
59
59
  inlineInset:
60
60
  "max($docs-nav-pad-x, ((100vw - $layout-width) / 2 + $docs-sidebar-pad-x)) end",
61
- inlineSize: "min(15rem, calc(100vw - 2 * $docs-nav-pad-x))",
62
- blockSize: "max (100dvh - $docs-nav-height - $gap)",
61
+ inlineSize: "min(15rem, (100vw - 2 * $docs-nav-pad-x))",
62
+ blockSize: "max (100dvh - $docs-nav-height - 1x)",
63
63
  overflowY: "auto",
64
64
  margin: "0",
65
- padding: "$gap",
65
+ padding: "1x",
66
66
  color: "#text",
67
67
  fill: "#surface-2",
68
68
  border: true,
69
- radius: "$card-radius",
69
+ radius: "1cr",
70
70
  shadow: "0 0.75rem 2rem #shadow",
71
71
  opacity: "0",
72
72
  scale: "1 0.96",
@@ -81,9 +81,9 @@ export const ThemeSelectRoot = defineComponent("ThemeSelect", {
81
81
  $: '[data-element="Panel"]',
82
82
  opacity: {
83
83
  "": null,
84
- "@own(:is(:popover-open) & [data-open])": "1",
84
+ "@own(:popover-open & [data-open])": "1",
85
85
  },
86
- scale: { "": null, "@own(:is(:popover-open) & [data-open])": "1" },
86
+ scale: { "": null, "@own(:popover-open & [data-open])": "1" },
87
87
  },
88
88
  Section: {
89
89
  $: "fieldset",
@@ -94,15 +94,15 @@ export const ThemeSelectRoot = defineComponent("ThemeSelect", {
94
94
  },
95
95
  SectionSpacing: {
96
96
  $: "fieldset + fieldset",
97
- blockMargin: "$gap start",
98
- blockPadding: "$gap start",
99
- blockBorder: "$border-width solid #border start",
97
+ blockMargin: "1x start",
98
+ blockPadding: "1x start",
99
+ blockBorder: "1bw solid #border start",
100
100
  },
101
101
  SectionLabel: {
102
102
  $: "legend",
103
103
  float: "inline-start",
104
104
  inlineSize: "100%",
105
- padding: "($gap * 0.75) $gap",
105
+ padding: "0.75x 1x",
106
106
  color: "#text-muted",
107
107
  preset: "small / strong",
108
108
  },
@@ -111,13 +111,13 @@ export const ThemeSelectRoot = defineComponent("ThemeSelect", {
111
111
  position: "relative",
112
112
  display: "flex",
113
113
  alignItems: "center",
114
- gap: "$gap",
114
+ gap: "1x",
115
115
  inlineSize: "100%",
116
116
  blockSize: "min 2.25rem",
117
- padding: "($gap * 0.75) $gap",
117
+ padding: "0.75x 1x",
118
118
  color: "#text-soft",
119
119
  preset: "small",
120
- radius: "$radius",
120
+ radius: "1r",
121
121
  cursor: "pointer",
122
122
  },
123
123
  HoverOption: {
@@ -26,7 +26,7 @@ export const TopNavigationRoot = defineComponent("TopNavigation", {
26
26
  flexGrow: "0",
27
27
  flexShrink: "0",
28
28
  flexBasis: "auto",
29
- blockPadding: "($gap * 1.25) start, $gap end",
29
+ blockPadding: "1.25x start, 1x end",
30
30
  color: "#text-soft",
31
31
  preset: "navigation",
32
32
  textDecoration: "none",
@@ -38,8 +38,6 @@ export const TopNavigationRoot = defineComponent("TopNavigation", {
38
38
  color: { "": null, '@own([aria-current="page"])': "#accent-text" },
39
39
  },
40
40
  ActiveIndicator: {
41
- // Tasty 3.9.3 appends @own states after pseudo-elements, producing invalid CSS.
42
- // eslint-disable-next-line tasty/no-state-in-selector
43
41
  $: 'a[aria-current="page"]::after',
44
42
  "$indicator-height": "2px",
45
43
  content: '""',
@@ -24,7 +24,7 @@ export const VersionSwitcherRoot = defineComponent("VersionSwitcher", {
24
24
  // eslint-disable-next-line tasty/no-style-spread
25
25
  ...versionSelectStyles.Trigger,
26
26
  blockSize: "min $control-height",
27
- inlinePadding: "$gap",
27
+ inlinePadding: "1x",
28
28
  fill: "#surface-2",
29
29
  border: true,
30
30
  preset: "small / strong",
@@ -35,10 +35,10 @@ export const VersionSwitcherRoot = defineComponent("VersionSwitcher", {
35
35
  // eslint-disable-next-line tasty/no-style-spread
36
36
  ...versionSelectStyles.Panel,
37
37
  positionAnchor: "--version-trigger",
38
- blockInset: "(anchor(bottom) + $gap) start, auto end",
38
+ blockInset: "(anchor(bottom) + 1x) start, auto end",
39
39
  inlineInset: {
40
- "": "anchor(left) start, auto end",
41
- "!@md": "auto start, anchor(right) end",
40
+ "": "anchor(start) start, auto end",
41
+ "!@md": "auto start, anchor(end) end",
42
42
  },
43
43
  },
44
44
  },
@@ -11,7 +11,7 @@ export function selectPopoverStyles({
11
11
  display: "flex",
12
12
  alignItems: "center",
13
13
  justifyContent: "center",
14
- gap: "($gap * 0.5)",
14
+ gap: "0.5x",
15
15
  color: "#text-soft",
16
16
  radius: "$header-control-radius",
17
17
  preset: "small",
@@ -21,11 +21,11 @@ export function selectPopoverStyles({
21
21
  $: "> button",
22
22
  color: {
23
23
  "": null,
24
- "@own(:hover) | :has([popover]:is(:popover-open))": "#text",
24
+ "@own(:hover) | :has([popover]:popover-open)": "#text",
25
25
  },
26
26
  fill: {
27
27
  "": null,
28
- "@own(:hover) | :has([popover]:is(:popover-open))": "#surface-2-hover",
28
+ "@own(:hover) | :has([popover]:popover-open)": "#surface-2-hover",
29
29
  },
30
30
  },
31
31
  TriggerLabel: {
@@ -44,15 +44,15 @@ export function selectPopoverStyles({
44
44
  $: '> [data-element="Panel"]',
45
45
  position: "fixed",
46
46
  inset: "auto",
47
- inlineSize: "min(15rem, calc(100vw - 2 * $docs-nav-pad-x))",
48
- blockSize: "max (100dvh - $docs-nav-height - $gap)",
47
+ inlineSize: "min(15rem, (100vw - 2 * $docs-nav-pad-x))",
48
+ blockSize: "max (100dvh - $docs-nav-height - 1x)",
49
49
  overflowY: "auto",
50
50
  margin: "0",
51
- padding: "$gap",
51
+ padding: "1x",
52
52
  color: "#text",
53
53
  fill: "#surface-2",
54
54
  border: true,
55
- radius: "$card-radius",
55
+ radius: "1cr",
56
56
  shadow: "0 0.75rem 2rem #shadow",
57
57
  opacity: "0",
58
58
  scale: "1 0.96",
@@ -67,28 +67,28 @@ export function selectPopoverStyles({
67
67
  $: '> [data-element="Panel"]',
68
68
  opacity: {
69
69
  "": null,
70
- "@own(:is(:popover-open) & [data-open])": "1",
70
+ "@own(:popover-open & [data-open])": "1",
71
71
  },
72
- scale: { "": null, "@own(:is(:popover-open) & [data-open])": "1" },
72
+ scale: { "": null, "@own(:popover-open & [data-open])": "1" },
73
73
  },
74
74
  PanelTitle: {
75
75
  $: "PanelTitle",
76
- padding: "($gap * 0.75) $gap",
76
+ padding: "0.75x 1x",
77
77
  color: "#text-muted",
78
78
  preset: "small / strong",
79
79
  },
80
- Options: { $: "nav", display: "grid", gap: "($gap * 0.25)" },
80
+ Options: { $: "nav", display: "grid", gap: "0.25x" },
81
81
  [option]: {
82
82
  $: "nav a",
83
83
  display: "flex",
84
84
  alignItems: "center",
85
- gap: "$gap",
85
+ gap: "1x",
86
86
  blockSize: "min 2.25rem",
87
- padding: "($gap * 0.75) $gap",
87
+ padding: "0.75x 1x",
88
88
  color: "#text-soft",
89
89
  preset: "small",
90
90
  textDecoration: "none",
91
- radius: "$radius",
91
+ radius: "1r",
92
92
  },
93
93
  [hoverOption]: {
94
94
  $: "nav a",
@@ -1 +1 @@
1
- {"version":3,"file":"define-component.d.ts","names":[],"sources":["../src/define-component.ts"],"mappings":";;;KAwBK,eAAe,QAEhB,cAAc,KAAK,sBACf,aAAa,WAAW,QACtB,EAAE,cAAc,qBACd,+BAIP,EAAE;KAGF,cAAc,mBAAmB,8BACpC,4BACI,aACA;EAAqB,WAAW;IAC9B,kBAAkB,IAAI,oBACpB;KAKL,YAAY,UAAU,yBACxB,cAAc,IAAI,0BACjB,gBAAgB,gBAAgB,cAAc,EAAE,WAC9C,cACE,cAAc,EAAE,qBAAqB,wBACjC,sBAAsB,cAAc,EAAE;;iBAOlC,gBAAgB,UAAU,oBACxC,cACA,MAAM,GACN,SAAS,QAAQ,KAAK,eAAe;EACnC,SAAS;IAEV,cAAc,eAAe,MAAM,eAAe;;iBAcrC,gBACd,0BAA0B,oBAC1B,UAAU,YACV,UAAU,qBAAqB,uBAC/B,eAAe,qBACf,UAAU,kCACV,WAAW,oCAEX,cACA,SAAS,oBAAoB,GAAG,GAAG,GAAG,QAAQ,GAAG,MAChD,0BAA0B,QAAQ,GAAG,GAAG,GAAG,MAAM,YAAY"}
1
+ {"version":3,"file":"define-component.d.ts","names":[],"sources":["../src/define-component.ts"],"mappings":";;;KAuBK,eAAe,QAEhB,cAAc,KAAK,sBACf,aAAa,WAAW,QACtB,EAAE,cAAc,qBACd,+BAIP,EAAE;KAGF,cAAc,mBAAmB,8BACpC,4BACI,aACA;EAAqB,WAAW;IAC9B,kBAAkB,IAAI,oBACpB;KAKL,YAAY,UAAU,yBACxB,cAAc,IAAI,0BACjB,gBAAgB,gBAAgB,cAAc,EAAE,WAC9C,cACE,cAAc,EAAE,qBAAqB,wBACjC,sBAAsB,cAAc,EAAE;;iBAOlC,gBAAgB,UAAU,oBACxC,cACA,MAAM,GACN,SAAS,QAAQ,KAAK,eAAe;EACnC,SAAS;IAEV,cAAc,eAAe,MAAM,eAAe;;iBAUrC,gBACd,0BAA0B,oBAC1B,UAAU,YACV,UAAU,qBAAqB,uBAC/B,eAAe,qBACf,UAAU,kCACV,WAAW,oCAEX,cACA,SAAS,oBAAoB,GAAG,GAAG,GAAG,QAAQ,GAAG,MAChD,0BAA0B,QAAQ,GAAG,GAAG,GAAG,MAAM,YAAY"}
@@ -1,2 +1,21 @@
1
- import { n as extendComponent, t as defineComponent } from "./define-component-BP4YwMak.js";
1
+ import { n as resolveComponentStyles } from "./component-styles-DstqPFf3.js";
2
+ import { tasty } from "@tenphi/tasty";
3
+ //#region src/define-component.ts
4
+ /** Extend a component's styles and defaults, preserving its props and compound parts. */
5
+ function extendComponent(name, base, options) {
6
+ return tasty(base, {
7
+ ...options,
8
+ styles: resolveComponentStyles(name, options.styles ?? {})
9
+ });
10
+ }
11
+ /** Create a named component with its built-in or custom theme styles merged into its defaults. */
12
+ function defineComponent(name, options) {
13
+ return tasty({
14
+ ...options,
15
+ styles: resolveComponentStyles(name, options.styles ?? {})
16
+ });
17
+ }
18
+ //#endregion
2
19
  export { defineComponent, extendComponent };
20
+
21
+ //# sourceMappingURL=define-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-component.js","names":[],"sources":["../src/define-component.ts"],"sourcesContent":["import {\n tasty,\n type ElementsDefinition,\n type ModPropsInput,\n type StylesInterface,\n type Styles,\n type SubElementProps,\n type TastyElementOptions,\n type TastyPolymorphicComponent,\n type TokenPropsInput,\n type VariantMap,\n} from \"@tenphi/tasty\";\nimport type {\n ComponentProps,\n ComponentType,\n ElementType,\n ForwardRefExoticComponent,\n JSX,\n PropsWithoutRef,\n RefAttributes,\n} from \"react\";\nimport { resolveComponentStyles } from \"./components/component-styles.js\";\n\ntype InheritedParts<C> = {\n [\n Name in keyof C as Name extends string\n ? Name extends Capitalize<Name>\n ? C[Name] extends ComponentType<any>\n ? Name\n : never\n : never\n : never\n ]: C[Name];\n};\n\ntype SubElementTag<Definition extends ElementsDefinition[string]> =\n Definition extends string\n ? Definition\n : Definition extends { as?: infer Tag }\n ? Tag extends keyof JSX.IntrinsicElements\n ? Tag\n : \"div\"\n : \"div\";\n\n// Use public Tasty types so declarations do not leak its private sub-element aliases.\ntype SubElements<E extends ElementsDefinition> = {\n [Name in keyof E]: ForwardRefExoticComponent<\n PropsWithoutRef<SubElementProps<SubElementTag<E[Name]>>> &\n RefAttributes<\n SubElementTag<E[Name]> extends keyof HTMLElementTagNameMap\n ? HTMLElementTagNameMap[SubElementTag<E[Name]>]\n : unknown\n >\n >;\n};\n\n/** Extend a component's styles and defaults, preserving its props and compound parts. */\nexport function extendComponent<C extends ComponentType<any>>(\n name: string,\n base: C,\n options: Partial<Omit<ComponentProps<C>, \"as\" | \"styles\">> & {\n styles?: Styles;\n },\n): ComponentType<ComponentProps<C>> & InheritedParts<C> {\n // Tasty copies the base's compound parts but types every base prop as\n // optional. Conservatively keep the base's required props.\n return tasty(base, {\n ...options,\n styles: resolveComponentStyles(name, options.styles ?? {}),\n }) as unknown as ComponentType<ComponentProps<C>> & InheritedParts<C>;\n}\n\n/** Create a named component with its built-in or custom theme styles merged into its defaults. */\nexport function defineComponent<\n K extends readonly (keyof StylesInterface)[],\n V extends VariantMap,\n E extends ElementsDefinition = Record<string, never>,\n AsType extends ElementType = \"div\",\n M extends ModPropsInput = readonly never[],\n TP extends TokenPropsInput = readonly never[],\n>(\n name: string,\n options: TastyElementOptions<K, V, E, AsType, M, TP>,\n): TastyPolymorphicComponent<AsType, K, V, M, TP> & SubElements<E> {\n return tasty<K, V, E, AsType, M, TP>({\n ...options,\n styles: resolveComponentStyles(name, options.styles ?? {}),\n }) as TastyPolymorphicComponent<AsType, K, V, M, TP> & SubElements<E>;\n}\n"],"mappings":";;;;AAyDA,SAAgB,gBACd,MACA,MACA,SAGsD;CAGtD,OAAO,MAAM,MAAM;EACjB,GAAG;EACH,QAAQ,uBAAuB,MAAM,QAAQ,UAAU,CAAC,CAAC;CAC3D,CAAC;AACH;;AAGA,SAAgB,gBAQd,MACA,SACiE;CACjE,OAAO,MAA8B;EACnC,GAAG;EACH,QAAQ,uBAAuB,MAAM,QAAQ,UAAU,CAAC,CAAC;CAC3D,CAAC;AACH"}
@@ -17,11 +17,6 @@ declare const _default: {
17
17
  argument: number;
18
18
  kind: "styles";
19
19
  };
20
- mergeStyles: {
21
- argument: "all";
22
- kind: "styles";
23
- partial: true;
24
- };
25
20
  };
26
21
  tokens: string[];
27
22
  units: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-plugin.d.ts","names":[],"sources":["../src/tasty.config.ts","../src/eslint-plugin.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCagB,uBACd,QAAO,cACN"}
1
+ {"version":3,"file":"eslint-plugin.d.ts","names":[],"sources":["../src/tasty.config.ts","../src/eslint-plugin.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCagB,uBACd,QAAO,cACN"}
@@ -20,11 +20,6 @@ var tasty_config_default = {
20
20
  resolveComponentStyles: {
21
21
  argument: 1,
22
22
  kind: "styles"
23
- },
24
- mergeStyles: {
25
- argument: "all",
26
- kind: "styles",
27
- partial: true
28
23
  }
29
24
  },
30
25
  tokens: [
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-plugin.js","names":["validationConfig"],"sources":["../src/tasty.config.ts","../src/eslint-plugin.ts"],"sourcesContent":["import type { TastyValidationConfig } from \"@tenphi/eslint-plugin-tasty\";\n\nexport default {\n importSources: [\n \"@tenphi/cookbook/styling\",\n \"@tenphi/renderer/styling\",\n \"./component-styles.js\",\n \"../define-component.js\",\n ],\n styleFunctions: {\n defineComponent: { argument: 1, kind: \"options\" },\n extendComponent: { argument: 2, kind: \"options\", partial: true },\n resolveComponentStyles: { argument: 1, kind: \"styles\" },\n mergeStyles: { argument: \"all\", kind: \"styles\", partial: true },\n },\n tokens: [\n \"$gap\",\n \"$margin-block-start\",\n \"$margin-block-end\",\n \"$padding-block-start\",\n \"$padding-block-end\",\n \"$radius\",\n \"$header-control-radius\",\n \"$card-radius\",\n \"$border-width\",\n \"$outline-width\",\n \"$outline-offset\",\n \"$layout-width\",\n \"$content-width\",\n \"$sidebar-width\",\n \"$control-height\",\n \"$transition\",\n \"$sharp-radius\",\n \"$bold-font-weight\",\n \"#white\",\n \"#black\",\n \"#clear\",\n \"#current\",\n \"#surface\",\n \"#header\",\n \"#heading\",\n \"#surface-2\",\n \"#surface-3\",\n \"#surface-2-hover\",\n \"#surface-2-pressed\",\n \"#surface-3-hover\",\n \"#surface-3-pressed\",\n \"#text\",\n \"#text-soft\",\n \"#text-muted\",\n \"#sidebar-text\",\n \"#border\",\n \"#border-strong\",\n \"#accent-text\",\n \"#accent-surface\",\n \"#accent-surface-text\",\n \"#logo-surface\",\n \"#logo-mark\",\n \"#accent-surface-subtle\",\n \"#accent-surface-2-subtle\",\n \"#focus\",\n \"#shadow\",\n \"#overlay\",\n \"#syntax-bg\",\n \"#syntax-text\",\n \"#syntax-comment\",\n \"#syntax-punctuation\",\n \"#syntax-keyword\",\n \"#syntax-string\",\n \"#syntax-token\",\n \"#syntax-property\",\n \"#syntax-number\",\n \"#syntax-function\",\n \"#syntax-value\",\n \"#syntax-operator\",\n \"#info\",\n \"#info-surface\",\n \"#info-text\",\n \"#success\",\n \"#success-surface\",\n \"#success-text\",\n \"#warning\",\n \"#warning-surface\",\n \"#warning-text\",\n \"#danger\",\n \"#danger-surface\",\n \"#danger-text\",\n \"#orange-surface\",\n \"#orange\",\n \"#orange-text\",\n \"#green-surface\",\n \"#green\",\n \"#green-text\",\n \"#blue-surface\",\n \"#blue\",\n \"#blue-text\",\n \"#purple-surface\",\n \"#purple\",\n \"#purple-text\",\n \"#red-surface\",\n \"#red\",\n \"#red-text\",\n ],\n units: [\"x\", \"r\", \"cr\", \"bw\"],\n states: [\n \"@system-light\",\n \"@system-dark\",\n \"@light\",\n \"@dark\",\n \"@sm\",\n \"@md\",\n \"@lg\",\n \"@reduced-motion\",\n \"@prose\",\n \"@prose-block\",\n \"@prose-heading\",\n ],\n presets: [\n \"body\",\n \"heading\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"navigation\",\n \"small\",\n \"code\",\n \"hero-title\",\n \"hero-tagline\",\n \"prose\",\n \"inline-code\",\n ],\n} satisfies TastyValidationConfig;\n","export { default, recommended, strict } from \"@tenphi/eslint-plugin-tasty\";\nexport type {\n ResolvedConfig,\n StyleFunctionConfig,\n TastyValidationConfig,\n} from \"@tenphi/eslint-plugin-tasty\";\nexport { default as validationConfig } from \"./tasty.config.js\";\n\nimport type { ThemeConfig } from \"@tenphi/docs\";\nimport type { TastyValidationConfig } from \"@tenphi/eslint-plugin-tasty\";\nimport validationConfig from \"./tasty.config.js\";\n\n/** Keep editor/linter names aligned with a Cookbook theme. */\nexport function createValidationConfig(\n theme: ThemeConfig = {},\n): TastyValidationConfig {\n return {\n ...validationConfig,\n tokens: [\n ...validationConfig.tokens,\n ...Object.keys(theme.tokens ?? {}),\n ...Object.keys(theme.palette ?? {}).map((name) => `#${name}`),\n ],\n units: [...validationConfig.units, ...Object.keys(theme.units ?? {})],\n states: [...validationConfig.states, ...Object.keys(theme.states ?? {})],\n presets: [...validationConfig.presets, ...Object.keys(theme.presets ?? {})],\n recipes: Object.keys(theme.recipes ?? {}),\n };\n}\n"],"mappings":";;AAEA,IAAA,uBAAe;CACb,eAAe;EACb;EACA;EACA;EACA;CACF;CACA,gBAAgB;EACd,iBAAiB;GAAE,UAAU;GAAG,MAAM;EAAU;EAChD,iBAAiB;GAAE,UAAU;GAAG,MAAM;GAAW,SAAS;EAAK;EAC/D,wBAAwB;GAAE,UAAU;GAAG,MAAM;EAAS;EACtD,aAAa;GAAE,UAAU;GAAO,MAAM;GAAU,SAAS;EAAK;CAChE;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EAAC;EAAK;EAAK;EAAM;CAAI;CAC5B,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;;ACzHA,SAAgB,uBACd,QAAqB,CAAC,GACC;CACvB,OAAO;EACL,GAAGA;EACH,QAAQ;GACN,GAAGA,qBAAiB;GACpB,GAAG,OAAO,KAAK,MAAM,UAAU,CAAC,CAAC;GACjC,GAAG,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM;EAC9D;EACA,OAAO,CAAC,GAAGA,qBAAiB,OAAO,GAAG,OAAO,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC;EACpE,QAAQ,CAAC,GAAGA,qBAAiB,QAAQ,GAAG,OAAO,KAAK,MAAM,UAAU,CAAC,CAAC,CAAC;EACvE,SAAS,CAAC,GAAGA,qBAAiB,SAAS,GAAG,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC;EAC1E,SAAS,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC;CAC1C;AACF"}
1
+ {"version":3,"file":"eslint-plugin.js","names":["validationConfig"],"sources":["../src/tasty.config.ts","../src/eslint-plugin.ts"],"sourcesContent":["import type { TastyValidationConfig } from \"@tenphi/eslint-plugin-tasty\";\n\nexport default {\n importSources: [\n \"@tenphi/cookbook/styling\",\n \"@tenphi/renderer/styling\",\n \"./component-styles.js\",\n \"../define-component.js\",\n ],\n styleFunctions: {\n defineComponent: { argument: 1, kind: \"options\" },\n extendComponent: { argument: 2, kind: \"options\", partial: true },\n resolveComponentStyles: { argument: 1, kind: \"styles\" },\n },\n tokens: [\n \"$gap\",\n \"$margin-block-start\",\n \"$margin-block-end\",\n \"$padding-block-start\",\n \"$padding-block-end\",\n \"$radius\",\n \"$header-control-radius\",\n \"$card-radius\",\n \"$border-width\",\n \"$outline-width\",\n \"$outline-offset\",\n \"$layout-width\",\n \"$content-width\",\n \"$sidebar-width\",\n \"$control-height\",\n \"$transition\",\n \"$sharp-radius\",\n \"$bold-font-weight\",\n \"#white\",\n \"#black\",\n \"#clear\",\n \"#current\",\n \"#surface\",\n \"#header\",\n \"#heading\",\n \"#surface-2\",\n \"#surface-3\",\n \"#surface-2-hover\",\n \"#surface-2-pressed\",\n \"#surface-3-hover\",\n \"#surface-3-pressed\",\n \"#text\",\n \"#text-soft\",\n \"#text-muted\",\n \"#sidebar-text\",\n \"#border\",\n \"#border-strong\",\n \"#accent-text\",\n \"#accent-surface\",\n \"#accent-surface-text\",\n \"#logo-surface\",\n \"#logo-mark\",\n \"#accent-surface-subtle\",\n \"#accent-surface-2-subtle\",\n \"#focus\",\n \"#shadow\",\n \"#overlay\",\n \"#syntax-bg\",\n \"#syntax-text\",\n \"#syntax-comment\",\n \"#syntax-punctuation\",\n \"#syntax-keyword\",\n \"#syntax-string\",\n \"#syntax-token\",\n \"#syntax-property\",\n \"#syntax-number\",\n \"#syntax-function\",\n \"#syntax-value\",\n \"#syntax-operator\",\n \"#info\",\n \"#info-surface\",\n \"#info-text\",\n \"#success\",\n \"#success-surface\",\n \"#success-text\",\n \"#warning\",\n \"#warning-surface\",\n \"#warning-text\",\n \"#danger\",\n \"#danger-surface\",\n \"#danger-text\",\n \"#orange-surface\",\n \"#orange\",\n \"#orange-text\",\n \"#green-surface\",\n \"#green\",\n \"#green-text\",\n \"#blue-surface\",\n \"#blue\",\n \"#blue-text\",\n \"#purple-surface\",\n \"#purple\",\n \"#purple-text\",\n \"#red-surface\",\n \"#red\",\n \"#red-text\",\n ],\n units: [\"x\", \"r\", \"cr\", \"bw\"],\n states: [\n \"@system-light\",\n \"@system-dark\",\n \"@light\",\n \"@dark\",\n \"@sm\",\n \"@md\",\n \"@lg\",\n \"@reduced-motion\",\n \"@prose\",\n \"@prose-block\",\n \"@prose-heading\",\n ],\n presets: [\n \"body\",\n \"heading\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"navigation\",\n \"small\",\n \"code\",\n \"hero-title\",\n \"hero-tagline\",\n \"prose\",\n \"inline-code\",\n ],\n} satisfies TastyValidationConfig;\n","export { default, recommended, strict } from \"@tenphi/eslint-plugin-tasty\";\nexport type {\n ResolvedConfig,\n StyleFunctionConfig,\n TastyValidationConfig,\n} from \"@tenphi/eslint-plugin-tasty\";\nexport { default as validationConfig } from \"./tasty.config.js\";\n\nimport type { ThemeConfig } from \"@tenphi/docs\";\nimport type { TastyValidationConfig } from \"@tenphi/eslint-plugin-tasty\";\nimport validationConfig from \"./tasty.config.js\";\n\n/** Keep editor/linter names aligned with a Cookbook theme. */\nexport function createValidationConfig(\n theme: ThemeConfig = {},\n): TastyValidationConfig {\n return {\n ...validationConfig,\n tokens: [\n ...validationConfig.tokens,\n ...Object.keys(theme.tokens ?? {}),\n ...Object.keys(theme.palette ?? {}).map((name) => `#${name}`),\n ],\n units: [...validationConfig.units, ...Object.keys(theme.units ?? {})],\n states: [...validationConfig.states, ...Object.keys(theme.states ?? {})],\n presets: [...validationConfig.presets, ...Object.keys(theme.presets ?? {})],\n recipes: Object.keys(theme.recipes ?? {}),\n };\n}\n"],"mappings":";;AAEA,IAAA,uBAAe;CACb,eAAe;EACb;EACA;EACA;EACA;CACF;CACA,gBAAgB;EACd,iBAAiB;GAAE,UAAU;GAAG,MAAM;EAAU;EAChD,iBAAiB;GAAE,UAAU;GAAG,MAAM;GAAW,SAAS;EAAK;EAC/D,wBAAwB;GAAE,UAAU;GAAG,MAAM;EAAS;CACxD;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EAAC;EAAK;EAAK;EAAM;CAAI;CAC5B,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;;ACxHA,SAAgB,uBACd,QAAqB,CAAC,GACC;CACvB,OAAO;EACL,GAAGA;EACH,QAAQ;GACN,GAAGA,qBAAiB;GACpB,GAAG,OAAO,KAAK,MAAM,UAAU,CAAC,CAAC;GACjC,GAAG,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM;EAC9D;EACA,OAAO,CAAC,GAAGA,qBAAiB,OAAO,GAAG,OAAO,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC;EACpE,QAAQ,CAAC,GAAGA,qBAAiB,QAAQ,GAAG,OAAO,KAAK,MAAM,UAAU,CAAC,CAAC,CAAC;EACvE,SAAS,CAAC,GAAGA,qBAAiB,SAAS,GAAG,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC;EAC1E,SAAS,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC;CAC1C;AACF"}