@dryui/feedback 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/annotation-marker.svelte +163 -0
- package/dist/components/annotation-marker.svelte.d.ts +11 -0
- package/dist/components/annotation-popup.svelte +669 -0
- package/dist/components/annotation-popup.svelte.d.ts +42 -0
- package/dist/components/highlight-overlay.svelte +48 -0
- package/dist/components/highlight-overlay.svelte.d.ts +8 -0
- package/dist/components/settings-panel.svelte +446 -0
- package/dist/components/settings-panel.svelte.d.ts +24 -0
- package/dist/components/toolbar.svelte +1111 -0
- package/dist/components/toolbar.svelte.d.ts +46 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.js +37 -0
- package/dist/feedback.svelte +2879 -0
- package/dist/feedback.svelte.d.ts +4 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +7 -0
- package/dist/layout-mode/catalog.d.ts +16 -0
- package/dist/layout-mode/catalog.js +81 -0
- package/dist/layout-mode/component-actions.svelte +84 -0
- package/dist/layout-mode/component-actions.svelte.d.ts +18 -0
- package/dist/layout-mode/component-picker.svelte +73 -0
- package/dist/layout-mode/component-picker.svelte.d.ts +10 -0
- package/dist/layout-mode/design-mode.svelte +1115 -0
- package/dist/layout-mode/design-mode.svelte.d.ts +24 -0
- package/dist/layout-mode/design-palette.svelte +396 -0
- package/dist/layout-mode/design-palette.svelte.d.ts +20 -0
- package/dist/layout-mode/element-heuristics.d.ts +5 -0
- package/dist/layout-mode/element-heuristics.js +51 -0
- package/dist/layout-mode/freeze.d.ts +6 -0
- package/dist/layout-mode/freeze.js +163 -0
- package/dist/layout-mode/generated-library.d.ts +940 -0
- package/dist/layout-mode/generated-library.js +1445 -0
- package/dist/layout-mode/geometry.d.ts +38 -0
- package/dist/layout-mode/geometry.js +133 -0
- package/dist/layout-mode/history.d.ts +10 -0
- package/dist/layout-mode/history.js +45 -0
- package/dist/layout-mode/index.d.ts +23 -0
- package/dist/layout-mode/index.js +18 -0
- package/dist/layout-mode/live-mount.d.ts +20 -0
- package/dist/layout-mode/live-mount.js +70 -0
- package/dist/layout-mode/output.d.ts +26 -0
- package/dist/layout-mode/output.js +550 -0
- package/dist/layout-mode/placement-skeleton.d.ts +9 -0
- package/dist/layout-mode/placement-skeleton.js +535 -0
- package/dist/layout-mode/rearrange-overlay.svelte +1293 -0
- package/dist/layout-mode/rearrange-overlay.svelte.d.ts +18 -0
- package/dist/layout-mode/responsive-bar.svelte +39 -0
- package/dist/layout-mode/responsive-bar.svelte.d.ts +8 -0
- package/dist/layout-mode/route-creator.svelte +70 -0
- package/dist/layout-mode/route-creator.svelte.d.ts +8 -0
- package/dist/layout-mode/section-detection.d.ts +6 -0
- package/dist/layout-mode/section-detection.js +214 -0
- package/dist/layout-mode/spatial.d.ts +42 -0
- package/dist/layout-mode/spatial.js +156 -0
- package/dist/layout-mode/types.d.ts +144 -0
- package/dist/layout-mode/types.js +84 -0
- package/dist/types.d.ts +157 -0
- package/dist/types.js +1 -0
- package/dist/utils/dryui-detection.d.ts +1 -0
- package/dist/utils/dryui-detection.js +219 -0
- package/dist/utils/element-id.d.ts +12 -0
- package/dist/utils/element-id.js +333 -0
- package/dist/utils/freeze.d.ts +7 -0
- package/dist/utils/freeze.js +168 -0
- package/dist/utils/output.d.ts +15 -0
- package/dist/utils/output.js +245 -0
- package/dist/utils/selection.d.ts +22 -0
- package/dist/utils/selection.js +58 -0
- package/dist/utils/shadow-dom.d.ts +4 -0
- package/dist/utils/shadow-dom.js +39 -0
- package/dist/utils/storage.d.ts +30 -0
- package/dist/utils/storage.js +206 -0
- package/dist/utils/svelte-detection.d.ts +8 -0
- package/dist/utils/svelte-detection.js +86 -0
- package/dist/utils/svelte-meta.d.ts +6 -0
- package/dist/utils/svelte-meta.js +69 -0
- package/dist/utils/sync.d.ts +18 -0
- package/dist/utils/sync.js +62 -0
- package/package.json +65 -0
|
@@ -0,0 +1,940 @@
|
|
|
1
|
+
export declare const GENERATED_LAYOUT_LIBRARY: readonly [{
|
|
2
|
+
readonly section: "Frames";
|
|
3
|
+
readonly items: readonly [{
|
|
4
|
+
readonly section: "Frames";
|
|
5
|
+
readonly type: "banner";
|
|
6
|
+
readonly label: "Banners";
|
|
7
|
+
readonly description: "Top-of-page announcement and campaign banners with CTA and dismissal framing.";
|
|
8
|
+
readonly sourceKind: "block";
|
|
9
|
+
readonly sourceId: "banners";
|
|
10
|
+
readonly sourceName: "Banners";
|
|
11
|
+
readonly sourceLabel: "Block";
|
|
12
|
+
readonly sourceImport: null;
|
|
13
|
+
readonly routePath: "/blocks/banners";
|
|
14
|
+
readonly tags: readonly ["banner", "announcement", "campaign", "promo"];
|
|
15
|
+
readonly structure: null;
|
|
16
|
+
readonly guidance: "Start from /blocks/banners and pick the closest block variant (Announcement bar, Upgrade banner).";
|
|
17
|
+
}, {
|
|
18
|
+
readonly section: "Frames";
|
|
19
|
+
readonly type: "section";
|
|
20
|
+
readonly label: "Content Sections";
|
|
21
|
+
readonly description: "Package editorial layouts, long-form summaries, and product storytelling sections.";
|
|
22
|
+
readonly sourceKind: "block";
|
|
23
|
+
readonly sourceId: "content-sections";
|
|
24
|
+
readonly sourceName: "Content Sections";
|
|
25
|
+
readonly sourceLabel: "Block";
|
|
26
|
+
readonly sourceImport: null;
|
|
27
|
+
readonly routePath: "/blocks/content-sections";
|
|
28
|
+
readonly tags: readonly ["content", "editorial", "layout", "section", "content block", "body section"];
|
|
29
|
+
readonly structure: null;
|
|
30
|
+
readonly guidance: "Start from a content-sections block when the layout needs a reusable marketing or editorial section.";
|
|
31
|
+
}, {
|
|
32
|
+
readonly section: "Frames";
|
|
33
|
+
readonly type: "modal";
|
|
34
|
+
readonly label: "Dialog";
|
|
35
|
+
readonly description: "Modal dialog using native dialog element";
|
|
36
|
+
readonly sourceKind: "component";
|
|
37
|
+
readonly sourceId: "Dialog";
|
|
38
|
+
readonly sourceName: "Dialog";
|
|
39
|
+
readonly sourceLabel: "Component";
|
|
40
|
+
readonly sourceImport: "@dryui/ui";
|
|
41
|
+
readonly routePath: null;
|
|
42
|
+
readonly tags: readonly ["modal", "overlay", "dialog", "popup"];
|
|
43
|
+
readonly structure: "`<Dialog.Root>` + `<Dialog.Trigger>` + `<Dialog.Content>`";
|
|
44
|
+
readonly guidance: "Modal dialog using native dialog element";
|
|
45
|
+
}, {
|
|
46
|
+
readonly section: "Frames";
|
|
47
|
+
readonly type: "drawer";
|
|
48
|
+
readonly label: "Drawer";
|
|
49
|
+
readonly description: "Slide-in panel from any edge";
|
|
50
|
+
readonly sourceKind: "component";
|
|
51
|
+
readonly sourceId: "Drawer";
|
|
52
|
+
readonly sourceName: "Drawer";
|
|
53
|
+
readonly sourceLabel: "Component";
|
|
54
|
+
readonly sourceImport: "@dryui/ui";
|
|
55
|
+
readonly routePath: null;
|
|
56
|
+
readonly tags: readonly ["modal", "panel", "slide", "sidebar", "drawer", "sheet", "slide over"];
|
|
57
|
+
readonly structure: "`<Drawer.Root>` + `<Drawer.Trigger>` + `<Drawer.Content>`";
|
|
58
|
+
readonly guidance: "Slide-in panel from any edge";
|
|
59
|
+
}, {
|
|
60
|
+
readonly section: "Frames";
|
|
61
|
+
readonly type: "footer";
|
|
62
|
+
readonly label: "Footers";
|
|
63
|
+
readonly description: "Package multi-column and compact footer systems with brand, nav, and legal framing.";
|
|
64
|
+
readonly sourceKind: "block";
|
|
65
|
+
readonly sourceId: "footers";
|
|
66
|
+
readonly sourceName: "Footers";
|
|
67
|
+
readonly sourceLabel: "Block";
|
|
68
|
+
readonly sourceImport: null;
|
|
69
|
+
readonly routePath: "/blocks/footers";
|
|
70
|
+
readonly tags: readonly ["footer", "navigation", "site", "site footer"];
|
|
71
|
+
readonly structure: null;
|
|
72
|
+
readonly guidance: "Start from /blocks/footers and pick the closest block variant (Compact footer, Multi-column footer).";
|
|
73
|
+
}, {
|
|
74
|
+
readonly section: "Frames";
|
|
75
|
+
readonly type: "hero";
|
|
76
|
+
readonly label: "Hero Sections";
|
|
77
|
+
readonly description: "Lead with high-signal headlines, proof points, and focused call-to-action stacks.";
|
|
78
|
+
readonly sourceKind: "block";
|
|
79
|
+
readonly sourceId: "hero-sections";
|
|
80
|
+
readonly sourceName: "Hero Sections";
|
|
81
|
+
readonly sourceLabel: "Block";
|
|
82
|
+
readonly sourceImport: null;
|
|
83
|
+
readonly routePath: "/blocks/hero-sections";
|
|
84
|
+
readonly tags: readonly ["hero", "marketing", "cta", "marketing hero", "landing"];
|
|
85
|
+
readonly structure: null;
|
|
86
|
+
readonly guidance: "Start from a hero-sections block variant for the main headline, proof, and CTA stack.";
|
|
87
|
+
}, {
|
|
88
|
+
readonly section: "Frames";
|
|
89
|
+
readonly type: "navigation";
|
|
90
|
+
readonly label: "Navbar";
|
|
91
|
+
readonly description: "Responsive navigation bar with mobile toggle";
|
|
92
|
+
readonly sourceKind: "component";
|
|
93
|
+
readonly sourceId: "Navbar";
|
|
94
|
+
readonly sourceName: "Navbar";
|
|
95
|
+
readonly sourceLabel: "Component";
|
|
96
|
+
readonly sourceImport: "@dryui/ui";
|
|
97
|
+
readonly routePath: null;
|
|
98
|
+
readonly tags: readonly ["navbar", "navigation", "responsive", "mobile", "nav", "site header"];
|
|
99
|
+
readonly structure: "`<Navbar.Root>` + `<Navbar.Brand>` + `<Navbar.Content>` + `<Navbar.Item>`";
|
|
100
|
+
readonly guidance: "Use Navbar for the primary site navigation shell, brand, links, and top-level actions.";
|
|
101
|
+
}, {
|
|
102
|
+
readonly section: "Frames";
|
|
103
|
+
readonly type: "header";
|
|
104
|
+
readonly label: "PageHeader";
|
|
105
|
+
readonly description: "Structured page header with title, meta, and actions";
|
|
106
|
+
readonly sourceKind: "component";
|
|
107
|
+
readonly sourceId: "PageHeader";
|
|
108
|
+
readonly sourceName: "PageHeader";
|
|
109
|
+
readonly sourceLabel: "Component";
|
|
110
|
+
readonly sourceImport: "@dryui/ui";
|
|
111
|
+
readonly routePath: null;
|
|
112
|
+
readonly tags: readonly ["page", "header", "title", "actions", "meta", "page header", "section lead"];
|
|
113
|
+
readonly structure: "`<PageHeader.Root>` + `<PageHeader.Content>` + `<PageHeader.Actions>` + `<PageHeader.Eyebrow>`";
|
|
114
|
+
readonly guidance: "Structured page header with title, meta, and actions";
|
|
115
|
+
}, {
|
|
116
|
+
readonly section: "Frames";
|
|
117
|
+
readonly type: "popover";
|
|
118
|
+
readonly label: "Popover";
|
|
119
|
+
readonly description: "Floating content panel anchored to a trigger";
|
|
120
|
+
readonly sourceKind: "component";
|
|
121
|
+
readonly sourceId: "Popover";
|
|
122
|
+
readonly sourceName: "Popover";
|
|
123
|
+
readonly sourceLabel: "Component";
|
|
124
|
+
readonly sourceImport: "@dryui/ui";
|
|
125
|
+
readonly routePath: null;
|
|
126
|
+
readonly tags: readonly ["popup", "floating", "tooltip", "popover", "floating panel"];
|
|
127
|
+
readonly structure: "`<Popover.Root>` + `<Popover.Trigger>` + `<Popover.Content>`";
|
|
128
|
+
readonly guidance: "Floating content panel anchored to a trigger";
|
|
129
|
+
}, {
|
|
130
|
+
readonly section: "Frames";
|
|
131
|
+
readonly type: "divider";
|
|
132
|
+
readonly label: "Separator";
|
|
133
|
+
readonly description: "Visual divider between content";
|
|
134
|
+
readonly sourceKind: "component";
|
|
135
|
+
readonly sourceId: "Separator";
|
|
136
|
+
readonly sourceName: "Separator";
|
|
137
|
+
readonly sourceLabel: "Component";
|
|
138
|
+
readonly sourceImport: "@dryui/ui";
|
|
139
|
+
readonly routePath: null;
|
|
140
|
+
readonly tags: readonly ["divider", "line", "hr", "separator", "rule"];
|
|
141
|
+
readonly structure: "`<Separator />`";
|
|
142
|
+
readonly guidance: "Visual divider between content";
|
|
143
|
+
}, {
|
|
144
|
+
readonly section: "Frames";
|
|
145
|
+
readonly type: "sidebar";
|
|
146
|
+
readonly label: "Sidebar";
|
|
147
|
+
readonly description: "Collapsible side navigation panel";
|
|
148
|
+
readonly sourceKind: "component";
|
|
149
|
+
readonly sourceId: "Sidebar";
|
|
150
|
+
readonly sourceName: "Sidebar";
|
|
151
|
+
readonly sourceLabel: "Component";
|
|
152
|
+
readonly sourceImport: "@dryui/ui";
|
|
153
|
+
readonly routePath: null;
|
|
154
|
+
readonly tags: readonly ["sidebar", "navigation", "panel", "collapsible", "aside", "rail"];
|
|
155
|
+
readonly structure: "`<Sidebar.Root>` + `<Sidebar.Header>` + `<Sidebar.Content>` + `<Sidebar.Footer>`";
|
|
156
|
+
readonly guidance: "Collapsible side navigation panel";
|
|
157
|
+
}];
|
|
158
|
+
}, {
|
|
159
|
+
readonly section: "Content";
|
|
160
|
+
readonly items: readonly [{
|
|
161
|
+
readonly section: "Content";
|
|
162
|
+
readonly type: "accordion";
|
|
163
|
+
readonly label: "Accordion";
|
|
164
|
+
readonly description: "Collapsible content sections, single or multiple mode";
|
|
165
|
+
readonly sourceKind: "component";
|
|
166
|
+
readonly sourceId: "Accordion";
|
|
167
|
+
readonly sourceName: "Accordion";
|
|
168
|
+
readonly sourceLabel: "Component";
|
|
169
|
+
readonly sourceImport: "@dryui/ui";
|
|
170
|
+
readonly routePath: null;
|
|
171
|
+
readonly tags: readonly ["disclosure", "collapse", "expand", "faq", "accordion"];
|
|
172
|
+
readonly structure: "`<Accordion.Root>` + `<Accordion.Item>` + `<Accordion.Trigger>` + `<Accordion.Content>`";
|
|
173
|
+
readonly guidance: "Collapsible content sections, single or multiple mode";
|
|
174
|
+
}, {
|
|
175
|
+
readonly section: "Content";
|
|
176
|
+
readonly type: "card";
|
|
177
|
+
readonly label: "Card";
|
|
178
|
+
readonly description: "Contained content surface with header/content/footer sections";
|
|
179
|
+
readonly sourceKind: "component";
|
|
180
|
+
readonly sourceId: "Card";
|
|
181
|
+
readonly sourceName: "Card";
|
|
182
|
+
readonly sourceLabel: "Component";
|
|
183
|
+
readonly sourceImport: "@dryui/ui";
|
|
184
|
+
readonly routePath: null;
|
|
185
|
+
readonly tags: readonly ["surface", "container", "content", "panel", "card"];
|
|
186
|
+
readonly structure: "`<Card.Root>` + `<Card.Header>` + `<Card.Content>`";
|
|
187
|
+
readonly guidance: "Compose Card surfaces with Card.Root, Card.Header, and Card.Content instead of a generic container box.";
|
|
188
|
+
}, {
|
|
189
|
+
readonly section: "Content";
|
|
190
|
+
readonly type: "carousel";
|
|
191
|
+
readonly label: "Carousel";
|
|
192
|
+
readonly description: "Scrollable content carousel with slide navigation";
|
|
193
|
+
readonly sourceKind: "component";
|
|
194
|
+
readonly sourceId: "Carousel";
|
|
195
|
+
readonly sourceName: "Carousel";
|
|
196
|
+
readonly sourceLabel: "Component";
|
|
197
|
+
readonly sourceImport: "@dryui/ui";
|
|
198
|
+
readonly routePath: null;
|
|
199
|
+
readonly tags: readonly ["slider", "carousel", "scroll", "gallery", "slideshow"];
|
|
200
|
+
readonly structure: "`<Carousel.Root>` + `<Carousel.Viewport>` + `<Carousel.Slide>` + `<Carousel.Prev>`";
|
|
201
|
+
readonly guidance: "Scrollable content carousel with slide navigation";
|
|
202
|
+
}, {
|
|
203
|
+
readonly section: "Content";
|
|
204
|
+
readonly type: "chart";
|
|
205
|
+
readonly label: "Chart";
|
|
206
|
+
readonly description: "SVG-based chart with bars, lines, and axes";
|
|
207
|
+
readonly sourceKind: "component";
|
|
208
|
+
readonly sourceId: "Chart";
|
|
209
|
+
readonly sourceName: "Chart";
|
|
210
|
+
readonly sourceLabel: "Component";
|
|
211
|
+
readonly sourceImport: "@dryui/ui";
|
|
212
|
+
readonly routePath: null;
|
|
213
|
+
readonly tags: readonly ["chart", "graph", "bar", "line", "data", "visualization", "analytics"];
|
|
214
|
+
readonly structure: "`<Chart.Root>` + `<Chart.Bars>` + `<Chart.Line>` + `<Chart.Area>`";
|
|
215
|
+
readonly guidance: "SVG-based chart with bars, lines, and axes";
|
|
216
|
+
}, {
|
|
217
|
+
readonly section: "Content";
|
|
218
|
+
readonly type: "codeBlock";
|
|
219
|
+
readonly label: "CodeBlock";
|
|
220
|
+
readonly description: "Code display with optional line numbers and copy button";
|
|
221
|
+
readonly sourceKind: "component";
|
|
222
|
+
readonly sourceId: "CodeBlock";
|
|
223
|
+
readonly sourceName: "CodeBlock";
|
|
224
|
+
readonly sourceLabel: "Component";
|
|
225
|
+
readonly sourceImport: "@dryui/ui";
|
|
226
|
+
readonly routePath: null;
|
|
227
|
+
readonly tags: readonly ["code", "syntax", "pre", "monospace", "copy", "snippet"];
|
|
228
|
+
readonly structure: "`<CodeBlock />`";
|
|
229
|
+
readonly guidance: "Code display with optional line numbers and copy button";
|
|
230
|
+
}, {
|
|
231
|
+
readonly section: "Content";
|
|
232
|
+
readonly type: "faq";
|
|
233
|
+
readonly label: "FAQs";
|
|
234
|
+
readonly description: "Ship FAQ sections with hierarchy, compact answers, and support-oriented routing.";
|
|
235
|
+
readonly sourceKind: "block";
|
|
236
|
+
readonly sourceId: "faqs";
|
|
237
|
+
readonly sourceName: "FAQs";
|
|
238
|
+
readonly sourceLabel: "Block";
|
|
239
|
+
readonly sourceImport: null;
|
|
240
|
+
readonly routePath: "/blocks/faqs";
|
|
241
|
+
readonly tags: readonly ["faq", "accordion", "support", "questions"];
|
|
242
|
+
readonly structure: null;
|
|
243
|
+
readonly guidance: "Start from /blocks/faqs and pick the closest block variant (Accordion FAQ, Split FAQ).";
|
|
244
|
+
}, {
|
|
245
|
+
readonly section: "Content";
|
|
246
|
+
readonly type: "grid";
|
|
247
|
+
readonly label: "Grid";
|
|
248
|
+
readonly description: "CSS grid layout with uniform column control";
|
|
249
|
+
readonly sourceKind: "component";
|
|
250
|
+
readonly sourceId: "Grid";
|
|
251
|
+
readonly sourceName: "Grid";
|
|
252
|
+
readonly sourceLabel: "Component";
|
|
253
|
+
readonly sourceImport: "@dryui/ui";
|
|
254
|
+
readonly routePath: null;
|
|
255
|
+
readonly tags: readonly ["layout", "grid", "columns", "responsive", "cards"];
|
|
256
|
+
readonly structure: "`<Grid />`";
|
|
257
|
+
readonly guidance: "CSS grid layout with uniform column control";
|
|
258
|
+
}, {
|
|
259
|
+
readonly section: "Content";
|
|
260
|
+
readonly type: "image";
|
|
261
|
+
readonly label: "Image";
|
|
262
|
+
readonly description: "Image with loading states and fallback support";
|
|
263
|
+
readonly sourceKind: "component";
|
|
264
|
+
readonly sourceId: "Image";
|
|
265
|
+
readonly sourceName: "Image";
|
|
266
|
+
readonly sourceLabel: "Component";
|
|
267
|
+
readonly sourceImport: "@dryui/ui";
|
|
268
|
+
readonly routePath: null;
|
|
269
|
+
readonly tags: readonly ["image", "lazy", "loading", "fallback", "media", "photo"];
|
|
270
|
+
readonly structure: "`<Image />`";
|
|
271
|
+
readonly guidance: "Image with loading states and fallback support";
|
|
272
|
+
}, {
|
|
273
|
+
readonly section: "Content";
|
|
274
|
+
readonly type: "list";
|
|
275
|
+
readonly label: "List";
|
|
276
|
+
readonly description: "Structured list with items, icons, and subheaders";
|
|
277
|
+
readonly sourceKind: "component";
|
|
278
|
+
readonly sourceId: "List";
|
|
279
|
+
readonly sourceName: "List";
|
|
280
|
+
readonly sourceLabel: "Component";
|
|
281
|
+
readonly sourceImport: "@dryui/ui";
|
|
282
|
+
readonly routePath: null;
|
|
283
|
+
readonly tags: readonly ["list", "item", "icon", "dense", "items"];
|
|
284
|
+
readonly structure: "`<List.Root>` + `<List.Item>` + `<List.ItemIcon>` + `<List.ItemText>`";
|
|
285
|
+
readonly guidance: "Structured list with items, icons, and subheaders";
|
|
286
|
+
}, {
|
|
287
|
+
readonly section: "Content";
|
|
288
|
+
readonly type: "logo";
|
|
289
|
+
readonly label: "LogoCloud";
|
|
290
|
+
readonly description: "Grid of logos or brand icons with uniform sizing";
|
|
291
|
+
readonly sourceKind: "component";
|
|
292
|
+
readonly sourceId: "LogoCloud";
|
|
293
|
+
readonly sourceName: "LogoCloud";
|
|
294
|
+
readonly sourceLabel: "Component";
|
|
295
|
+
readonly sourceImport: "@dryui/ui";
|
|
296
|
+
readonly routePath: null;
|
|
297
|
+
readonly tags: readonly ["logo", "brand", "grid", "partners", "sponsors", "logo cloud", "logos"];
|
|
298
|
+
readonly structure: "`<LogoCloud.Root>` + `<LogoCloud.Item>`";
|
|
299
|
+
readonly guidance: "Grid of logos or brand icons with uniform sizing";
|
|
300
|
+
}, {
|
|
301
|
+
readonly section: "Content";
|
|
302
|
+
readonly type: "map";
|
|
303
|
+
readonly label: "Map";
|
|
304
|
+
readonly description: "Interactive map container with markers, popups, layers, and controls";
|
|
305
|
+
readonly sourceKind: "component";
|
|
306
|
+
readonly sourceId: "Map";
|
|
307
|
+
readonly sourceName: "Map";
|
|
308
|
+
readonly sourceLabel: "Component";
|
|
309
|
+
readonly sourceImport: "@dryui/ui";
|
|
310
|
+
readonly routePath: null;
|
|
311
|
+
readonly tags: readonly ["map", "geo", "marker", "popup", "layer", "geojson", "location"];
|
|
312
|
+
readonly structure: "`<Map.Root>` + `<Map.Marker>` + `<Map.Popup>` + `<Map.Layer>`";
|
|
313
|
+
readonly guidance: "Interactive map container with markers, popups, layers, and controls";
|
|
314
|
+
}, {
|
|
315
|
+
readonly section: "Content";
|
|
316
|
+
readonly type: "gallery";
|
|
317
|
+
readonly label: "PromoMosaic";
|
|
318
|
+
readonly description: "Promotional tile mosaic for mixed-size marketing cards, badges, and CTA overlays";
|
|
319
|
+
readonly sourceKind: "component";
|
|
320
|
+
readonly sourceId: "PromoMosaic";
|
|
321
|
+
readonly sourceName: "PromoMosaic";
|
|
322
|
+
readonly sourceLabel: "Component";
|
|
323
|
+
readonly sourceImport: "@dryui/ui";
|
|
324
|
+
readonly routePath: null;
|
|
325
|
+
readonly tags: readonly ["promo", "mosaic", "marketing", "grid", "tiles", "gallery", "promo grid"];
|
|
326
|
+
readonly structure: "`<PromoMosaic.Root>` + `<PromoMosaic.HeroTile>` + `<PromoMosaic.Tile>` + `<PromoMosaic.Overlay>`";
|
|
327
|
+
readonly guidance: "Promotional tile mosaic for mixed-size marketing cards, badges, and CTA overlays";
|
|
328
|
+
}, {
|
|
329
|
+
readonly section: "Content";
|
|
330
|
+
readonly type: "table";
|
|
331
|
+
readonly label: "Table";
|
|
332
|
+
readonly description: "Data table with header, body, footer sections";
|
|
333
|
+
readonly sourceKind: "component";
|
|
334
|
+
readonly sourceId: "Table";
|
|
335
|
+
readonly sourceName: "Table";
|
|
336
|
+
readonly sourceLabel: "Component";
|
|
337
|
+
readonly sourceImport: "@dryui/ui";
|
|
338
|
+
readonly routePath: null;
|
|
339
|
+
readonly tags: readonly ["data", "table", "grid", "rows", "columns", "data table"];
|
|
340
|
+
readonly structure: "`<Table.Root>` + `<Table.Header>` + `<Table.Body>` + `<Table.Footer>`";
|
|
341
|
+
readonly guidance: "Data table with header, body, footer sections";
|
|
342
|
+
}, {
|
|
343
|
+
readonly section: "Content";
|
|
344
|
+
readonly type: "text";
|
|
345
|
+
readonly label: "Text";
|
|
346
|
+
readonly description: "Standalone body copy export for starter-kit typography";
|
|
347
|
+
readonly sourceKind: "component";
|
|
348
|
+
readonly sourceId: "Text";
|
|
349
|
+
readonly sourceName: "Text";
|
|
350
|
+
readonly sourceLabel: "Component";
|
|
351
|
+
readonly sourceImport: "@dryui/ui";
|
|
352
|
+
readonly routePath: null;
|
|
353
|
+
readonly tags: readonly ["text", "copy", "paragraph", "typography", "body"];
|
|
354
|
+
readonly structure: "`<Text />`";
|
|
355
|
+
readonly guidance: "Standalone body copy export for starter-kit typography";
|
|
356
|
+
}, {
|
|
357
|
+
readonly section: "Content";
|
|
358
|
+
readonly type: "timeline";
|
|
359
|
+
readonly label: "Timeline";
|
|
360
|
+
readonly description: "Vertical timeline for activity feeds and history";
|
|
361
|
+
readonly sourceKind: "component";
|
|
362
|
+
readonly sourceId: "Timeline";
|
|
363
|
+
readonly sourceName: "Timeline";
|
|
364
|
+
readonly sourceLabel: "Component";
|
|
365
|
+
readonly sourceImport: "@dryui/ui";
|
|
366
|
+
readonly routePath: null;
|
|
367
|
+
readonly tags: readonly ["timeline", "activity", "feed", "history", "events"];
|
|
368
|
+
readonly structure: "`<Timeline.Root>` + `<Timeline.Item>` + `<Timeline.Icon>` + `<Timeline.Content>`";
|
|
369
|
+
readonly guidance: "Vertical timeline for activity feeds and history";
|
|
370
|
+
}, {
|
|
371
|
+
readonly section: "Content";
|
|
372
|
+
readonly type: "video";
|
|
373
|
+
readonly label: "VideoEmbed";
|
|
374
|
+
readonly description: "Video player embed for YouTube, Vimeo, and native sources";
|
|
375
|
+
readonly sourceKind: "component";
|
|
376
|
+
readonly sourceId: "VideoEmbed";
|
|
377
|
+
readonly sourceName: "VideoEmbed";
|
|
378
|
+
readonly sourceLabel: "Component";
|
|
379
|
+
readonly sourceImport: "@dryui/ui";
|
|
380
|
+
readonly routePath: null;
|
|
381
|
+
readonly tags: readonly ["video", "embed", "youtube", "vimeo", "player", "media"];
|
|
382
|
+
readonly structure: "`<VideoEmbed />`";
|
|
383
|
+
readonly guidance: "Video player embed for YouTube, Vimeo, and native sources";
|
|
384
|
+
}];
|
|
385
|
+
}, {
|
|
386
|
+
readonly section: "Forms";
|
|
387
|
+
readonly items: readonly [{
|
|
388
|
+
readonly section: "Forms";
|
|
389
|
+
readonly type: "button";
|
|
390
|
+
readonly label: "Button";
|
|
391
|
+
readonly description: "Interactive button or link-styled action for submissions and calls to action";
|
|
392
|
+
readonly sourceKind: "component";
|
|
393
|
+
readonly sourceId: "Button";
|
|
394
|
+
readonly sourceName: "Button";
|
|
395
|
+
readonly sourceLabel: "Component";
|
|
396
|
+
readonly sourceImport: "@dryui/ui";
|
|
397
|
+
readonly routePath: null;
|
|
398
|
+
readonly tags: readonly ["form", "action", "click", "submit", "cta", "link-button", "button"];
|
|
399
|
+
readonly structure: "`<Button />`";
|
|
400
|
+
readonly guidance: "Interactive button or link-styled action for submissions and calls to action";
|
|
401
|
+
}, {
|
|
402
|
+
readonly section: "Forms";
|
|
403
|
+
readonly type: "checkbox";
|
|
404
|
+
readonly label: "Checkbox";
|
|
405
|
+
readonly description: "Boolean toggle input with indeterminate state";
|
|
406
|
+
readonly sourceKind: "component";
|
|
407
|
+
readonly sourceId: "Checkbox";
|
|
408
|
+
readonly sourceName: "Checkbox";
|
|
409
|
+
readonly sourceLabel: "Component";
|
|
410
|
+
readonly sourceImport: "@dryui/ui";
|
|
411
|
+
readonly routePath: null;
|
|
412
|
+
readonly tags: readonly ["form", "toggle", "boolean", "check", "checkbox"];
|
|
413
|
+
readonly structure: "`<Checkbox />`";
|
|
414
|
+
readonly guidance: "Boolean toggle input with indeterminate state";
|
|
415
|
+
}, {
|
|
416
|
+
readonly section: "Forms";
|
|
417
|
+
readonly type: "calendar";
|
|
418
|
+
readonly label: "DateTimeInput";
|
|
419
|
+
readonly description: "Combined date and time input with locale-aware segments";
|
|
420
|
+
readonly sourceKind: "component";
|
|
421
|
+
readonly sourceId: "DateTimeInput";
|
|
422
|
+
readonly sourceName: "DateTimeInput";
|
|
423
|
+
readonly sourceLabel: "Component";
|
|
424
|
+
readonly sourceImport: "@dryui/ui";
|
|
425
|
+
readonly routePath: null;
|
|
426
|
+
readonly tags: readonly ["date", "time", "datetime", "input", "form", "locale", "calendar", "date grid", "calendar picker"];
|
|
427
|
+
readonly structure: "`<DateTimeInput />`";
|
|
428
|
+
readonly guidance: "Combined date and time input with locale-aware segments";
|
|
429
|
+
}, {
|
|
430
|
+
readonly section: "Forms";
|
|
431
|
+
readonly type: "datePicker";
|
|
432
|
+
readonly label: "DateTimeInput";
|
|
433
|
+
readonly description: "Combined date and time input with locale-aware segments";
|
|
434
|
+
readonly sourceKind: "component";
|
|
435
|
+
readonly sourceId: "DateTimeInput";
|
|
436
|
+
readonly sourceName: "DateTimeInput";
|
|
437
|
+
readonly sourceLabel: "Component";
|
|
438
|
+
readonly sourceImport: "@dryui/ui";
|
|
439
|
+
readonly routePath: null;
|
|
440
|
+
readonly tags: readonly ["date", "time", "datetime", "input", "form", "locale", "calendar"];
|
|
441
|
+
readonly structure: "`<DateTimeInput />`";
|
|
442
|
+
readonly guidance: "Combined date and time input with locale-aware segments";
|
|
443
|
+
}, {
|
|
444
|
+
readonly section: "Forms";
|
|
445
|
+
readonly type: "form";
|
|
446
|
+
readonly label: "Fieldset";
|
|
447
|
+
readonly description: "Structured field grouping with legend, description, and content";
|
|
448
|
+
readonly sourceKind: "component";
|
|
449
|
+
readonly sourceId: "Fieldset";
|
|
450
|
+
readonly sourceName: "Fieldset";
|
|
451
|
+
readonly sourceLabel: "Component";
|
|
452
|
+
readonly sourceImport: "@dryui/ui";
|
|
453
|
+
readonly routePath: null;
|
|
454
|
+
readonly tags: readonly ["form", "group", "legend", "settings", "fieldset", "form group"];
|
|
455
|
+
readonly structure: "`<Fieldset.Root>` + `<Fieldset.Legend>` + `<Fieldset.Description>` + `<Fieldset.Content>`";
|
|
456
|
+
readonly guidance: "Compose forms with Fieldset, Field.Root, Input, Checkbox, and Button instead of a generic form rectangle.";
|
|
457
|
+
}, {
|
|
458
|
+
readonly section: "Forms";
|
|
459
|
+
readonly type: "fileUpload";
|
|
460
|
+
readonly label: "FileUpload";
|
|
461
|
+
readonly description: "File selection with drag-and-drop dropzone";
|
|
462
|
+
readonly sourceKind: "component";
|
|
463
|
+
readonly sourceId: "FileUpload";
|
|
464
|
+
readonly sourceName: "FileUpload";
|
|
465
|
+
readonly sourceLabel: "Component";
|
|
466
|
+
readonly sourceImport: "@dryui/ui";
|
|
467
|
+
readonly routePath: null;
|
|
468
|
+
readonly tags: readonly ["form", "file", "upload", "drag", "drop", "file upload", "drop zone"];
|
|
469
|
+
readonly structure: "`<FileUpload.Root>` + `<FileUpload.Dropzone>` + `<FileUpload.Trigger>` + `<FileUpload.List>`";
|
|
470
|
+
readonly guidance: "File selection with drag-and-drop dropzone";
|
|
471
|
+
}, {
|
|
472
|
+
readonly section: "Forms";
|
|
473
|
+
readonly type: "input";
|
|
474
|
+
readonly label: "Input";
|
|
475
|
+
readonly description: "Text input with size variants";
|
|
476
|
+
readonly sourceKind: "component";
|
|
477
|
+
readonly sourceId: "Input";
|
|
478
|
+
readonly sourceName: "Input";
|
|
479
|
+
readonly sourceLabel: "Component";
|
|
480
|
+
readonly sourceImport: "@dryui/ui";
|
|
481
|
+
readonly routePath: null;
|
|
482
|
+
readonly tags: readonly ["form", "text", "input", "field", "text field"];
|
|
483
|
+
readonly structure: "`<Input />`";
|
|
484
|
+
readonly guidance: "Text input with size variants";
|
|
485
|
+
}, {
|
|
486
|
+
readonly section: "Forms";
|
|
487
|
+
readonly type: "search";
|
|
488
|
+
readonly label: "InputGroup";
|
|
489
|
+
readonly description: "Compound input wrapper that combines prefixes, suffixes, separators, select slots, and actions";
|
|
490
|
+
readonly sourceKind: "component";
|
|
491
|
+
readonly sourceId: "InputGroup";
|
|
492
|
+
readonly sourceName: "InputGroup";
|
|
493
|
+
readonly sourceLabel: "Component";
|
|
494
|
+
readonly sourceImport: "@dryui/ui";
|
|
495
|
+
readonly routePath: null;
|
|
496
|
+
readonly tags: readonly ["input", "field", "affix", "addon", "control", "search", "search input", "search field"];
|
|
497
|
+
readonly structure: "`<InputGroup.Root>` + `<InputGroup.Input>` + `<InputGroup.Action>`";
|
|
498
|
+
readonly guidance: "Compound input wrapper that combines prefixes, suffixes, separators, select slots, and actions";
|
|
499
|
+
}, {
|
|
500
|
+
readonly section: "Forms";
|
|
501
|
+
readonly type: "dropdown";
|
|
502
|
+
readonly label: "Listbox";
|
|
503
|
+
readonly description: "Single or multi-select list with keyboard navigation";
|
|
504
|
+
readonly sourceKind: "component";
|
|
505
|
+
readonly sourceId: "Listbox";
|
|
506
|
+
readonly sourceName: "Listbox";
|
|
507
|
+
readonly sourceLabel: "Component";
|
|
508
|
+
readonly sourceImport: "@dryui/ui";
|
|
509
|
+
readonly routePath: null;
|
|
510
|
+
readonly tags: readonly ["listbox", "select", "option", "keyboard", "dropdown", "options"];
|
|
511
|
+
readonly structure: "`<Listbox.Root>` + `<Listbox.Item>`";
|
|
512
|
+
readonly guidance: "Single or multi-select list with keyboard navigation";
|
|
513
|
+
}, {
|
|
514
|
+
readonly section: "Forms";
|
|
515
|
+
readonly type: "radio";
|
|
516
|
+
readonly label: "RadioGroup";
|
|
517
|
+
readonly description: "Single selection from multiple options";
|
|
518
|
+
readonly sourceKind: "component";
|
|
519
|
+
readonly sourceId: "RadioGroup";
|
|
520
|
+
readonly sourceName: "RadioGroup";
|
|
521
|
+
readonly sourceLabel: "Component";
|
|
522
|
+
readonly sourceImport: "@dryui/ui";
|
|
523
|
+
readonly routePath: null;
|
|
524
|
+
readonly tags: readonly ["form", "radio", "select", "option", "group", "options", "choice"];
|
|
525
|
+
readonly structure: "`<RadioGroup.Root>` + `<RadioGroup.Item>`";
|
|
526
|
+
readonly guidance: "Single selection from multiple options";
|
|
527
|
+
}, {
|
|
528
|
+
readonly section: "Forms";
|
|
529
|
+
readonly type: "rating";
|
|
530
|
+
readonly label: "Rating";
|
|
531
|
+
readonly description: "Star rating input with half-star support";
|
|
532
|
+
readonly sourceKind: "component";
|
|
533
|
+
readonly sourceId: "Rating";
|
|
534
|
+
readonly sourceName: "Rating";
|
|
535
|
+
readonly sourceLabel: "Component";
|
|
536
|
+
readonly sourceImport: "@dryui/ui";
|
|
537
|
+
readonly routePath: null;
|
|
538
|
+
readonly tags: readonly ["form", "stars", "rating", "review", "score"];
|
|
539
|
+
readonly structure: "`<Rating />`";
|
|
540
|
+
readonly guidance: "Star rating input with half-star support";
|
|
541
|
+
}, {
|
|
542
|
+
readonly section: "Forms";
|
|
543
|
+
readonly type: "slider";
|
|
544
|
+
readonly label: "Slider";
|
|
545
|
+
readonly description: "Range input slider with thumb control";
|
|
546
|
+
readonly sourceKind: "component";
|
|
547
|
+
readonly sourceId: "Slider";
|
|
548
|
+
readonly sourceName: "Slider";
|
|
549
|
+
readonly sourceLabel: "Component";
|
|
550
|
+
readonly sourceImport: "@dryui/ui";
|
|
551
|
+
readonly routePath: null;
|
|
552
|
+
readonly tags: readonly ["form", "range", "slider", "value"];
|
|
553
|
+
readonly structure: "`<Slider />`";
|
|
554
|
+
readonly guidance: "Range input slider with thumb control";
|
|
555
|
+
}, {
|
|
556
|
+
readonly section: "Forms";
|
|
557
|
+
readonly type: "stepper";
|
|
558
|
+
readonly label: "Stepper";
|
|
559
|
+
readonly description: "Step-by-step progress indicator";
|
|
560
|
+
readonly sourceKind: "component";
|
|
561
|
+
readonly sourceId: "Stepper";
|
|
562
|
+
readonly sourceName: "Stepper";
|
|
563
|
+
readonly sourceLabel: "Component";
|
|
564
|
+
readonly sourceImport: "@dryui/ui";
|
|
565
|
+
readonly routePath: null;
|
|
566
|
+
readonly tags: readonly ["steps", "wizard", "progress", "workflow", "stepper", "progress steps"];
|
|
567
|
+
readonly structure: "`<Stepper.Root>` + `<Stepper.List>` + `<Stepper.Step>` + `<Stepper.Separator>`";
|
|
568
|
+
readonly guidance: "Step-by-step progress indicator";
|
|
569
|
+
}, {
|
|
570
|
+
readonly section: "Forms";
|
|
571
|
+
readonly type: "tabs";
|
|
572
|
+
readonly label: "Tabs";
|
|
573
|
+
readonly description: "Tabbed content navigation";
|
|
574
|
+
readonly sourceKind: "component";
|
|
575
|
+
readonly sourceId: "Tabs";
|
|
576
|
+
readonly sourceName: "Tabs";
|
|
577
|
+
readonly sourceLabel: "Component";
|
|
578
|
+
readonly sourceImport: "@dryui/ui";
|
|
579
|
+
readonly routePath: null;
|
|
580
|
+
readonly tags: readonly ["tabs", "nav", "switch", "panel", "switcher"];
|
|
581
|
+
readonly structure: "`<Tabs.Root>` + `<Tabs.List>` + `<Tabs.Trigger>` + `<Tabs.Content>`";
|
|
582
|
+
readonly guidance: "Tabbed content navigation";
|
|
583
|
+
}, {
|
|
584
|
+
readonly section: "Forms";
|
|
585
|
+
readonly type: "toggle";
|
|
586
|
+
readonly label: "Toggle";
|
|
587
|
+
readonly description: "Pressable toggle button";
|
|
588
|
+
readonly sourceKind: "component";
|
|
589
|
+
readonly sourceId: "Toggle";
|
|
590
|
+
readonly sourceName: "Toggle";
|
|
591
|
+
readonly sourceLabel: "Component";
|
|
592
|
+
readonly sourceImport: "@dryui/ui";
|
|
593
|
+
readonly routePath: null;
|
|
594
|
+
readonly tags: readonly ["button", "toggle", "pressed", "switch"];
|
|
595
|
+
readonly structure: "`<Toggle />`";
|
|
596
|
+
readonly guidance: "Pressable toggle button";
|
|
597
|
+
}];
|
|
598
|
+
}, {
|
|
599
|
+
readonly section: "Feedback";
|
|
600
|
+
readonly items: readonly [{
|
|
601
|
+
readonly section: "Feedback";
|
|
602
|
+
readonly type: "alert";
|
|
603
|
+
readonly label: "Alert";
|
|
604
|
+
readonly description: "Contextual feedback message with variant styling";
|
|
605
|
+
readonly sourceKind: "component";
|
|
606
|
+
readonly sourceId: "Alert";
|
|
607
|
+
readonly sourceName: "Alert";
|
|
608
|
+
readonly sourceLabel: "Component";
|
|
609
|
+
readonly sourceImport: "@dryui/ui";
|
|
610
|
+
readonly routePath: null;
|
|
611
|
+
readonly tags: readonly ["message", "notification", "info", "warning", "error", "alert"];
|
|
612
|
+
readonly structure: "`<Alert.Root>` + `<Alert.Title>` + `<Alert.Description>`";
|
|
613
|
+
readonly guidance: "Contextual feedback message with variant styling";
|
|
614
|
+
}, {
|
|
615
|
+
readonly section: "Feedback";
|
|
616
|
+
readonly type: "avatar";
|
|
617
|
+
readonly label: "Avatar";
|
|
618
|
+
readonly description: "User profile image with fallback initials";
|
|
619
|
+
readonly sourceKind: "component";
|
|
620
|
+
readonly sourceId: "Avatar";
|
|
621
|
+
readonly sourceName: "Avatar";
|
|
622
|
+
readonly sourceLabel: "Component";
|
|
623
|
+
readonly sourceImport: "@dryui/ui";
|
|
624
|
+
readonly routePath: null;
|
|
625
|
+
readonly tags: readonly ["user", "profile", "image", "initials", "avatar", "profile photo"];
|
|
626
|
+
readonly structure: "`<Avatar />`";
|
|
627
|
+
readonly guidance: "User profile image with fallback initials";
|
|
628
|
+
}, {
|
|
629
|
+
readonly section: "Feedback";
|
|
630
|
+
readonly type: "badge";
|
|
631
|
+
readonly label: "Badge";
|
|
632
|
+
readonly description: "Small status indicator label";
|
|
633
|
+
readonly sourceKind: "component";
|
|
634
|
+
readonly sourceId: "Badge";
|
|
635
|
+
readonly sourceName: "Badge";
|
|
636
|
+
readonly sourceLabel: "Component";
|
|
637
|
+
readonly sourceImport: "@dryui/ui";
|
|
638
|
+
readonly routePath: null;
|
|
639
|
+
readonly tags: readonly ["status", "count", "label", "tag", "badge"];
|
|
640
|
+
readonly structure: "`<Badge />`";
|
|
641
|
+
readonly guidance: "Small status indicator label";
|
|
642
|
+
}, {
|
|
643
|
+
readonly section: "Feedback";
|
|
644
|
+
readonly type: "breadcrumb";
|
|
645
|
+
readonly label: "Breadcrumb";
|
|
646
|
+
readonly description: "Navigation trail showing page hierarchy";
|
|
647
|
+
readonly sourceKind: "component";
|
|
648
|
+
readonly sourceId: "Breadcrumb";
|
|
649
|
+
readonly sourceName: "Breadcrumb";
|
|
650
|
+
readonly sourceLabel: "Component";
|
|
651
|
+
readonly sourceImport: "@dryui/ui";
|
|
652
|
+
readonly routePath: null;
|
|
653
|
+
readonly tags: readonly ["nav", "path", "hierarchy", "trail", "breadcrumb"];
|
|
654
|
+
readonly structure: "`<Breadcrumb.Root>` + `<Breadcrumb.List>` + `<Breadcrumb.Item>` + `<Breadcrumb.Link>`";
|
|
655
|
+
readonly guidance: "Navigation trail showing page hierarchy";
|
|
656
|
+
}, {
|
|
657
|
+
readonly section: "Feedback";
|
|
658
|
+
readonly type: "tag";
|
|
659
|
+
readonly label: "Chip";
|
|
660
|
+
readonly description: "Interactive pill for filters, selections, and inline state";
|
|
661
|
+
readonly sourceKind: "component";
|
|
662
|
+
readonly sourceId: "Chip";
|
|
663
|
+
readonly sourceName: "Chip";
|
|
664
|
+
readonly sourceLabel: "Component";
|
|
665
|
+
readonly sourceImport: "@dryui/ui";
|
|
666
|
+
readonly routePath: null;
|
|
667
|
+
readonly tags: readonly ["chip", "pill", "filter", "selection", "tag"];
|
|
668
|
+
readonly structure: "`<Chip />`";
|
|
669
|
+
readonly guidance: "Interactive pill for filters, selections, and inline state";
|
|
670
|
+
}, {
|
|
671
|
+
readonly section: "Feedback";
|
|
672
|
+
readonly type: "chip";
|
|
673
|
+
readonly label: "Chip";
|
|
674
|
+
readonly description: "Interactive pill for filters, selections, and inline state";
|
|
675
|
+
readonly sourceKind: "component";
|
|
676
|
+
readonly sourceId: "Chip";
|
|
677
|
+
readonly sourceName: "Chip";
|
|
678
|
+
readonly sourceLabel: "Component";
|
|
679
|
+
readonly sourceImport: "@dryui/ui";
|
|
680
|
+
readonly routePath: null;
|
|
681
|
+
readonly tags: readonly ["chip", "pill", "filter", "selection", "tag"];
|
|
682
|
+
readonly structure: "`<Chip />`";
|
|
683
|
+
readonly guidance: "Interactive pill for filters, selections, and inline state";
|
|
684
|
+
}, {
|
|
685
|
+
readonly section: "Feedback";
|
|
686
|
+
readonly type: "icon";
|
|
687
|
+
readonly label: "Icon";
|
|
688
|
+
readonly description: "Sized and colored SVG icon wrapper with accessibility label";
|
|
689
|
+
readonly sourceKind: "component";
|
|
690
|
+
readonly sourceId: "Icon";
|
|
691
|
+
readonly sourceName: "Icon";
|
|
692
|
+
readonly sourceLabel: "Component";
|
|
693
|
+
readonly sourceImport: "@dryui/ui";
|
|
694
|
+
readonly routePath: null;
|
|
695
|
+
readonly tags: readonly ["icon", "svg", "size", "color", "accessible", "glyph"];
|
|
696
|
+
readonly structure: "`<Icon />`";
|
|
697
|
+
readonly guidance: "Sized and colored SVG icon wrapper with accessibility label";
|
|
698
|
+
}, {
|
|
699
|
+
readonly section: "Feedback";
|
|
700
|
+
readonly type: "pagination";
|
|
701
|
+
readonly label: "Pagination";
|
|
702
|
+
readonly description: "Page navigation with previous/next and page links";
|
|
703
|
+
readonly sourceKind: "component";
|
|
704
|
+
readonly sourceId: "Pagination";
|
|
705
|
+
readonly sourceName: "Pagination";
|
|
706
|
+
readonly sourceLabel: "Component";
|
|
707
|
+
readonly sourceImport: "@dryui/ui";
|
|
708
|
+
readonly routePath: null;
|
|
709
|
+
readonly tags: readonly ["nav", "pages", "paging", "navigation", "pagination"];
|
|
710
|
+
readonly structure: "`<Pagination.Root>` + `<Pagination.Content>` + `<Pagination.Item>` + `<Pagination.Previous>`";
|
|
711
|
+
readonly guidance: "Page navigation with previous/next and page links";
|
|
712
|
+
}, {
|
|
713
|
+
readonly section: "Feedback";
|
|
714
|
+
readonly type: "progress";
|
|
715
|
+
readonly label: "Progress";
|
|
716
|
+
readonly description: "Progress bar indicator";
|
|
717
|
+
readonly sourceKind: "component";
|
|
718
|
+
readonly sourceId: "Progress";
|
|
719
|
+
readonly sourceName: "Progress";
|
|
720
|
+
readonly sourceLabel: "Component";
|
|
721
|
+
readonly sourceImport: "@dryui/ui";
|
|
722
|
+
readonly routePath: null;
|
|
723
|
+
readonly tags: readonly ["loading", "progress", "bar", "percentage", "meter"];
|
|
724
|
+
readonly structure: "`<Progress />`";
|
|
725
|
+
readonly guidance: "Progress bar indicator";
|
|
726
|
+
}, {
|
|
727
|
+
readonly section: "Feedback";
|
|
728
|
+
readonly type: "skeleton";
|
|
729
|
+
readonly label: "Skeleton";
|
|
730
|
+
readonly description: "Loading placeholder animation";
|
|
731
|
+
readonly sourceKind: "component";
|
|
732
|
+
readonly sourceId: "Skeleton";
|
|
733
|
+
readonly sourceName: "Skeleton";
|
|
734
|
+
readonly sourceLabel: "Component";
|
|
735
|
+
readonly sourceImport: "@dryui/ui";
|
|
736
|
+
readonly routePath: null;
|
|
737
|
+
readonly tags: readonly ["loading", "placeholder", "shimmer", "skeleton"];
|
|
738
|
+
readonly structure: "`<Skeleton />`";
|
|
739
|
+
readonly guidance: "Loading placeholder animation";
|
|
740
|
+
}, {
|
|
741
|
+
readonly section: "Feedback";
|
|
742
|
+
readonly type: "spinner";
|
|
743
|
+
readonly label: "Spinner";
|
|
744
|
+
readonly description: "Loading spinner animation";
|
|
745
|
+
readonly sourceKind: "component";
|
|
746
|
+
readonly sourceId: "Spinner";
|
|
747
|
+
readonly sourceName: "Spinner";
|
|
748
|
+
readonly sourceLabel: "Component";
|
|
749
|
+
readonly sourceImport: "@dryui/ui";
|
|
750
|
+
readonly routePath: null;
|
|
751
|
+
readonly tags: readonly ["loading", "spinner", "wait", "processing"];
|
|
752
|
+
readonly structure: "`<Spinner />`";
|
|
753
|
+
readonly guidance: "Loading spinner animation";
|
|
754
|
+
}, {
|
|
755
|
+
readonly section: "Feedback";
|
|
756
|
+
readonly type: "stat";
|
|
757
|
+
readonly label: "StatCard";
|
|
758
|
+
readonly description: "Metric card with label, value, and trend parts";
|
|
759
|
+
readonly sourceKind: "component";
|
|
760
|
+
readonly sourceId: "StatCard";
|
|
761
|
+
readonly sourceName: "StatCard";
|
|
762
|
+
readonly sourceLabel: "Component";
|
|
763
|
+
readonly sourceImport: "@dryui/ui";
|
|
764
|
+
readonly routePath: null;
|
|
765
|
+
readonly tags: readonly ["stats", "kpi", "metric", "dashboard", "trend", "stat"];
|
|
766
|
+
readonly structure: "`<StatCard.Root>` + `<StatCard.Label>` + `<StatCard.Value>` + `<StatCard.Trend>`";
|
|
767
|
+
readonly guidance: "Metric card with label, value, and trend parts";
|
|
768
|
+
}, {
|
|
769
|
+
readonly section: "Feedback";
|
|
770
|
+
readonly type: "toast";
|
|
771
|
+
readonly label: "Toast";
|
|
772
|
+
readonly description: "Temporary notification message";
|
|
773
|
+
readonly sourceKind: "component";
|
|
774
|
+
readonly sourceId: "Toast";
|
|
775
|
+
readonly sourceName: "Toast";
|
|
776
|
+
readonly sourceLabel: "Component";
|
|
777
|
+
readonly sourceImport: "@dryui/ui";
|
|
778
|
+
readonly routePath: null;
|
|
779
|
+
readonly tags: readonly ["notification", "toast", "snackbar", "alert"];
|
|
780
|
+
readonly structure: "`<Toast.Provider>` + `<Toast.Root>` + `<Toast.Title>` + `<Toast.Description>`";
|
|
781
|
+
readonly guidance: "Temporary notification message";
|
|
782
|
+
}, {
|
|
783
|
+
readonly section: "Feedback";
|
|
784
|
+
readonly type: "notification";
|
|
785
|
+
readonly label: "Toast";
|
|
786
|
+
readonly description: "Temporary notification message";
|
|
787
|
+
readonly sourceKind: "component";
|
|
788
|
+
readonly sourceId: "Toast";
|
|
789
|
+
readonly sourceName: "Toast";
|
|
790
|
+
readonly sourceLabel: "Component";
|
|
791
|
+
readonly sourceImport: "@dryui/ui";
|
|
792
|
+
readonly routePath: null;
|
|
793
|
+
readonly tags: readonly ["notification", "toast", "snackbar", "alert"];
|
|
794
|
+
readonly structure: "`<Toast.Provider>` + `<Toast.Root>` + `<Toast.Title>` + `<Toast.Description>`";
|
|
795
|
+
readonly guidance: "Use Toast for transient notifications and Alert for persistent inline status.";
|
|
796
|
+
}, {
|
|
797
|
+
readonly section: "Feedback";
|
|
798
|
+
readonly type: "tooltip";
|
|
799
|
+
readonly label: "Tooltip";
|
|
800
|
+
readonly description: "Hover/focus popup with descriptive text";
|
|
801
|
+
readonly sourceKind: "component";
|
|
802
|
+
readonly sourceId: "Tooltip";
|
|
803
|
+
readonly sourceName: "Tooltip";
|
|
804
|
+
readonly sourceLabel: "Component";
|
|
805
|
+
readonly sourceImport: "@dryui/ui";
|
|
806
|
+
readonly routePath: null;
|
|
807
|
+
readonly tags: readonly ["hover", "info", "tooltip", "hint"];
|
|
808
|
+
readonly structure: "`<Tooltip.Root>` + `<Tooltip.Trigger>` + `<Tooltip.Content>`";
|
|
809
|
+
readonly guidance: "Hover/focus popup with descriptive text";
|
|
810
|
+
}];
|
|
811
|
+
}, {
|
|
812
|
+
readonly section: "Blocks";
|
|
813
|
+
readonly items: readonly [{
|
|
814
|
+
readonly section: "Blocks";
|
|
815
|
+
readonly type: "login";
|
|
816
|
+
readonly label: "Auth Form";
|
|
817
|
+
readonly description: "Structured field grouping with legend, description, and content";
|
|
818
|
+
readonly sourceKind: "component";
|
|
819
|
+
readonly sourceId: "Fieldset";
|
|
820
|
+
readonly sourceName: "Fieldset";
|
|
821
|
+
readonly sourceLabel: "Component";
|
|
822
|
+
readonly sourceImport: "@dryui/ui";
|
|
823
|
+
readonly routePath: null;
|
|
824
|
+
readonly tags: readonly ["form", "group", "legend", "settings", "login", "auth", "signin"];
|
|
825
|
+
readonly structure: "`<Fieldset>` + `<Input>` + `<Checkbox>` + `<Button>`";
|
|
826
|
+
readonly guidance: "Compose login and auth layouts from Fieldset, Input, Checkbox, and Button.";
|
|
827
|
+
}, {
|
|
828
|
+
readonly section: "Blocks";
|
|
829
|
+
readonly type: "contact";
|
|
830
|
+
readonly label: "Contact Sections";
|
|
831
|
+
readonly description: "Add support, sales, and outreach sections with cleaner routing and expectation-setting.";
|
|
832
|
+
readonly sourceKind: "block";
|
|
833
|
+
readonly sourceId: "contact-sections";
|
|
834
|
+
readonly sourceName: "Contact Sections";
|
|
835
|
+
readonly sourceLabel: "Block";
|
|
836
|
+
readonly sourceImport: null;
|
|
837
|
+
readonly routePath: "/blocks/contact-sections";
|
|
838
|
+
readonly tags: readonly ["contact", "support", "sales", "contact form"];
|
|
839
|
+
readonly structure: null;
|
|
840
|
+
readonly guidance: "Start from /blocks/contact-sections and pick the closest block variant (Sales contact, Support split).";
|
|
841
|
+
}, {
|
|
842
|
+
readonly section: "Blocks";
|
|
843
|
+
readonly type: "cta";
|
|
844
|
+
readonly label: "CTA Sections";
|
|
845
|
+
readonly description: "Ship end-cap conversion bands, split CTAs, and proof-backed final asks.";
|
|
846
|
+
readonly sourceKind: "block";
|
|
847
|
+
readonly sourceId: "cta-sections";
|
|
848
|
+
readonly sourceName: "CTA Sections";
|
|
849
|
+
readonly sourceLabel: "Block";
|
|
850
|
+
readonly sourceImport: null;
|
|
851
|
+
readonly routePath: "/blocks/cta-sections";
|
|
852
|
+
readonly tags: readonly ["cta", "conversion", "marketing", "call to action"];
|
|
853
|
+
readonly structure: null;
|
|
854
|
+
readonly guidance: "Start from /blocks/cta-sections and pick the closest block variant (End-cap band, Split CTA).";
|
|
855
|
+
}, {
|
|
856
|
+
readonly section: "Blocks";
|
|
857
|
+
readonly type: "feature";
|
|
858
|
+
readonly label: "FeatureSplitSection";
|
|
859
|
+
readonly description: "Split editorial section pairing feature copy with supporting media and call-to-action content";
|
|
860
|
+
readonly sourceKind: "component";
|
|
861
|
+
readonly sourceId: "FeatureSplitSection";
|
|
862
|
+
readonly sourceName: "FeatureSplitSection";
|
|
863
|
+
readonly sourceLabel: "Component";
|
|
864
|
+
readonly sourceImport: "@dryui/ui";
|
|
865
|
+
readonly routePath: null;
|
|
866
|
+
readonly tags: readonly ["feature", "split", "media", "section", "marketing", "split section"];
|
|
867
|
+
readonly structure: "`<FeatureSplitSection.Root>` + `<FeatureSplitSection.Content>` + `<FeatureSplitSection.Kicker>` + `<FeatureSplitSection.Heading>`";
|
|
868
|
+
readonly guidance: "Split editorial section pairing feature copy with supporting media and call-to-action content";
|
|
869
|
+
}, {
|
|
870
|
+
readonly section: "Blocks";
|
|
871
|
+
readonly type: "pricing";
|
|
872
|
+
readonly label: "Pricing Sections";
|
|
873
|
+
readonly description: "Package plan comparisons, bill-frequency toggles, and contract framing.";
|
|
874
|
+
readonly sourceKind: "block";
|
|
875
|
+
readonly sourceId: "pricing-sections";
|
|
876
|
+
readonly sourceName: "Pricing Sections";
|
|
877
|
+
readonly sourceLabel: "Block";
|
|
878
|
+
readonly sourceImport: null;
|
|
879
|
+
readonly routePath: "/blocks/pricing-sections";
|
|
880
|
+
readonly tags: readonly ["pricing", "plans", "comparison"];
|
|
881
|
+
readonly structure: null;
|
|
882
|
+
readonly guidance: "Start from /blocks/pricing-sections and pick the closest block variant (Plan grid, Comparison ladder).";
|
|
883
|
+
}, {
|
|
884
|
+
readonly section: "Blocks";
|
|
885
|
+
readonly type: "productCard";
|
|
886
|
+
readonly label: "Product Card";
|
|
887
|
+
readonly description: "Contained content surface with header/content/footer sections";
|
|
888
|
+
readonly sourceKind: "component";
|
|
889
|
+
readonly sourceId: "Card";
|
|
890
|
+
readonly sourceName: "Card";
|
|
891
|
+
readonly sourceLabel: "Component";
|
|
892
|
+
readonly sourceImport: "@dryui/ui";
|
|
893
|
+
readonly routePath: null;
|
|
894
|
+
readonly tags: readonly ["surface", "container", "content", "panel", "product card", "commerce", "tile"];
|
|
895
|
+
readonly structure: "`<Card.Root>` + media + pricing + CTA";
|
|
896
|
+
readonly guidance: "Compose a product tile with Card plus media, pricing, and CTA content instead of a generic product rectangle.";
|
|
897
|
+
}, {
|
|
898
|
+
readonly section: "Blocks";
|
|
899
|
+
readonly type: "team";
|
|
900
|
+
readonly label: "Team Sections";
|
|
901
|
+
readonly description: "Publish founder, leadership, and team rosters with designed identity cards.";
|
|
902
|
+
readonly sourceKind: "block";
|
|
903
|
+
readonly sourceId: "team-sections";
|
|
904
|
+
readonly sourceName: "Team Sections";
|
|
905
|
+
readonly sourceLabel: "Block";
|
|
906
|
+
readonly sourceImport: null;
|
|
907
|
+
readonly routePath: "/blocks/team-sections";
|
|
908
|
+
readonly tags: readonly ["team", "about", "people"];
|
|
909
|
+
readonly structure: null;
|
|
910
|
+
readonly guidance: "Start from /blocks/team-sections and pick the closest block variant (Leadership grid, Editorial bios).";
|
|
911
|
+
}, {
|
|
912
|
+
readonly section: "Blocks";
|
|
913
|
+
readonly type: "testimonial";
|
|
914
|
+
readonly label: "Testimonials";
|
|
915
|
+
readonly description: "Package customer quotes, logos, and role metadata in reusable cards.";
|
|
916
|
+
readonly sourceKind: "block";
|
|
917
|
+
readonly sourceId: "testimonials";
|
|
918
|
+
readonly sourceName: "Testimonials";
|
|
919
|
+
readonly sourceLabel: "Block";
|
|
920
|
+
readonly sourceImport: null;
|
|
921
|
+
readonly routePath: "/blocks/testimonials";
|
|
922
|
+
readonly tags: readonly ["testimonials", "quotes", "customers", "testimonial", "quote", "customer proof"];
|
|
923
|
+
readonly structure: null;
|
|
924
|
+
readonly guidance: "Start from /blocks/testimonials and pick the closest block variant (Quote grid, Hero quote).";
|
|
925
|
+
}, {
|
|
926
|
+
readonly section: "Blocks";
|
|
927
|
+
readonly type: "profile";
|
|
928
|
+
readonly label: "User";
|
|
929
|
+
readonly description: "User identity display with avatar, name, and description";
|
|
930
|
+
readonly sourceKind: "component";
|
|
931
|
+
readonly sourceId: "User";
|
|
932
|
+
readonly sourceName: "User";
|
|
933
|
+
readonly sourceLabel: "Component";
|
|
934
|
+
readonly sourceImport: "@dryui/ui";
|
|
935
|
+
readonly routePath: null;
|
|
936
|
+
readonly tags: readonly ["user", "profile", "avatar", "identity", "person"];
|
|
937
|
+
readonly structure: "`<User />`";
|
|
938
|
+
readonly guidance: "User identity display with avatar, name, and description";
|
|
939
|
+
}];
|
|
940
|
+
}];
|