@redsift/ds-mcp-server 12.5.3-alpha.5 → 12.5.3-alpha.7
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/consumer-instructions/.cursorrules +14 -0
- package/consumer-instructions/.windsurfrules +18 -4
- package/consumer-instructions/CLAUDE.md +25 -11
- package/consumer-instructions/redsift-design-system.instructions.md +107 -12
- package/data/docs/components/charts/Axis.json +6 -1
- package/data/docs/components/charts/BarChart.json +7 -1
- package/data/docs/components/charts/BaseBarChart.json +1 -1
- package/data/docs/components/charts/ChartContainerTitle.json +5 -1
- package/data/docs/components/charts/Legend.json +6 -1
- package/data/docs/components/charts/LineChart.json +8 -2
- package/data/docs/components/charts/PieChart.json +6 -1
- package/data/docs/components/charts/ScatterPlot.json +6 -1
- package/data/docs/components/dashboard/ChartEmptyState.json +8 -1
- package/data/docs/components/dashboard/Dashboard.json +6 -1
- package/data/docs/components/dashboard/DataCard.json +18 -1
- package/data/docs/components/dashboard/DataCardBody.json +9 -1
- package/data/docs/components/dashboard/DataCardHeader.json +8 -1
- package/data/docs/components/dashboard/DataCardListbox.json +10 -1
- package/data/docs/components/dashboard/DataRow.json +7 -1
- package/data/docs/components/dashboard/PdfExportButton.json +6 -1
- package/data/docs/components/dashboard/TimeSeriesBarChart.json +6 -1
- package/data/docs/components/dashboard/WithFilters.json +5 -1
- package/data/docs/components/design-system/Alert.json +8 -1
- package/data/docs/components/design-system/AppBar.json +6 -1
- package/data/docs/components/design-system/AppContent.json +8 -1
- package/data/docs/components/design-system/AppSidePanel.json +9 -1
- package/data/docs/components/design-system/Badge.json +6 -1
- package/data/docs/components/design-system/Breadcrumbs.json +10 -1
- package/data/docs/components/design-system/Button.json +10 -1
- package/data/docs/components/design-system/Card.json +15 -1
- package/data/docs/components/design-system/CardActions.json +8 -1
- package/data/docs/components/design-system/CardBody.json +7 -1
- package/data/docs/components/design-system/CardHeader.json +8 -1
- package/data/docs/components/design-system/DetailedCard.json +12 -1
- package/data/docs/components/design-system/DetailedCardHeader.json +4 -1
- package/data/docs/components/design-system/DetailedCardSection.json +4 -1
- package/data/docs/components/design-system/Flexbox.json +14 -1
- package/data/docs/components/design-system/Grid.json +6 -1
- package/data/docs/components/design-system/Heading.json +16 -1
- package/data/docs/components/design-system/Icon.json +6 -1
- package/data/docs/components/design-system/IconButton.json +14 -1
- package/data/docs/components/design-system/Pill.json +15 -1
- package/data/docs/components/design-system/Skeleton.json +10 -1
- package/data/docs/components/design-system/SkeletonCircle.json +6 -1
- package/data/docs/components/design-system/SkeletonText.json +6 -1
- package/data/docs/components/design-system/Tab.json +9 -1
- package/data/docs/components/design-system/TabPanel.json +10 -1
- package/data/docs/components/design-system/Tabs.json +12 -1
- package/data/docs/components/design-system/Text.json +14 -1
- package/data/docs/components/design-system/TextField.json +6 -1
- package/data/docs/components/pickers/Combobox.json +12 -1
- package/data/docs/components/pickers/ComboboxContent.json +6 -1
- package/data/docs/components/pickers/MenuButton.json +10 -1
- package/data/docs/components/pickers/MenuButtonContent.json +5 -1
- package/data/docs/components/pickers/Select.json +11 -1
- package/data/docs/components/popovers/Dialog.json +10 -1
- package/data/docs/components/popovers/Toggletip.json +11 -1
- package/data/docs/components/popovers/Tooltip.json +9 -1
- package/data/docs/components/table/DataGrid.json +9 -1
- package/data/docs/components/table/StatefulDataGrid.json +6 -1
- package/data/docs/components-index.json +341 -555
- package/data/docs/components.json +7945 -24342
- package/data/docs/llms-full.txt +879 -2546
- package/data/docs/llms.txt +55 -77
- package/data/docs/patterns-catalog.md +191 -0
- package/data/docs/patterns.json +365 -27
- package/data/metadata.json +2 -2
- package/data/patterns/drilldowned-datagrid-server-side.mdx +19 -0
- package/data/prompts/ds-advisor.md +103 -0
- package/dist/data-store.d.ts +23 -1
- package/dist/data-store.d.ts.map +1 -1
- package/dist/data-store.js +69 -15
- package/dist/data-store.js.map +1 -1
- package/dist/pattern-store.d.ts +23 -1
- package/dist/pattern-store.d.ts.map +1 -1
- package/dist/pattern-store.js +94 -22
- package/dist/pattern-store.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +56 -27
- package/dist/prompts.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +60 -6
- package/dist/resources.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +12 -0
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -398,5 +398,14 @@
|
|
|
398
398
|
}
|
|
399
399
|
],
|
|
400
400
|
"examples": [],
|
|
401
|
-
"tags": {}
|
|
401
|
+
"tags": {},
|
|
402
|
+
"usageRules": [
|
|
403
|
+
"The `theme` prop is optional — components inherit theme from the nearest ThemeProvider or AppContainer ancestor. Do NOT pass `theme` to every component; wrap the app at the root instead.",
|
|
404
|
+
"Variants: check with get_component_props — they differ from other UI libraries (no \"primary\", no \"secondary\")."
|
|
405
|
+
],
|
|
406
|
+
"keywords": [
|
|
407
|
+
"action button",
|
|
408
|
+
"cta",
|
|
409
|
+
"submit"
|
|
410
|
+
]
|
|
402
411
|
}
|
|
@@ -324,5 +324,19 @@
|
|
|
324
324
|
}
|
|
325
325
|
],
|
|
326
326
|
"examples": [],
|
|
327
|
-
"tags": {}
|
|
327
|
+
"tags": {},
|
|
328
|
+
"usageRules": [
|
|
329
|
+
"Card only accepts Card.Header, Card.Body, and Card.Actions as children. Other elements are silently ignored.",
|
|
330
|
+
"Card.Header has a fixed design. Use Card.Body for content and Card.Actions for button rows.",
|
|
331
|
+
"For collapsible cards, pass `isCollapsible` to Card. Use `isCollapsed`/`onCollapse` for controlled mode, or `defaultCollapsed` for uncontrolled."
|
|
332
|
+
],
|
|
333
|
+
"disambiguation": "Card is a generic container with Header/Body/Actions. Do NOT use for KPI/metric tiles — use DataCard from @redsift/dashboard instead.",
|
|
334
|
+
"antiPatterns": [
|
|
335
|
+
"❌ Using Card with inline styles for KPI tiles → ✅ Use DataCard from @redsift/dashboard for metric/KPI tiles."
|
|
336
|
+
],
|
|
337
|
+
"keywords": [
|
|
338
|
+
"container",
|
|
339
|
+
"card panel",
|
|
340
|
+
"content card"
|
|
341
|
+
]
|
|
328
342
|
}
|
|
@@ -397,5 +397,16 @@
|
|
|
397
397
|
}
|
|
398
398
|
],
|
|
399
399
|
"examples": [],
|
|
400
|
-
"tags": {}
|
|
400
|
+
"tags": {},
|
|
401
|
+
"usageRules": [
|
|
402
|
+
"Content children (after DetailedCard.Header) must be DetailedCard.Section components. Other elements will not receive collapse/expand state injection via cloneElement.",
|
|
403
|
+
"DetailedCard.Header is extracted via partitionComponents — it must be a direct child, not wrapped.",
|
|
404
|
+
"DetailedCard.CollapsibleSectionItems must be a child of DetailedCard.Section for auto-detection of collapsible state."
|
|
405
|
+
],
|
|
406
|
+
"disambiguation": "DetailedCard is a complex card with collapsible sections. Use for rich detail panels, not KPI tiles. For KPI tiles use DataCard from @redsift/dashboard.",
|
|
407
|
+
"keywords": [
|
|
408
|
+
"expandable card",
|
|
409
|
+
"collapsible card",
|
|
410
|
+
"detail panel"
|
|
411
|
+
]
|
|
401
412
|
}
|
|
@@ -519,5 +519,18 @@
|
|
|
519
519
|
}
|
|
520
520
|
],
|
|
521
521
|
"examples": [],
|
|
522
|
-
"tags": {}
|
|
522
|
+
"tags": {},
|
|
523
|
+
"antiPatterns": [
|
|
524
|
+
"❌ gap={4} → ✅ gap=\"4px\" — gap is a string prop (CSS value), not a number.",
|
|
525
|
+
"❌ style={{ display: \"flex\", gap: 4 }} → ✅ <Flexbox gap=\"4px\"> — use the Flexbox component instead of inline styles."
|
|
526
|
+
],
|
|
527
|
+
"keywords": [
|
|
528
|
+
"flex container",
|
|
529
|
+
"row",
|
|
530
|
+
"column",
|
|
531
|
+
"stack",
|
|
532
|
+
"box",
|
|
533
|
+
"hstack",
|
|
534
|
+
"vstack"
|
|
535
|
+
]
|
|
523
536
|
}
|
|
@@ -386,5 +386,20 @@
|
|
|
386
386
|
}
|
|
387
387
|
],
|
|
388
388
|
"examples": [],
|
|
389
|
-
"tags": {}
|
|
389
|
+
"tags": {},
|
|
390
|
+
"usageRules": [
|
|
391
|
+
"The `theme` prop is optional — inherited from context. Do NOT pass `theme` to every component.",
|
|
392
|
+
"Valid `color` values come from NeutralColorPalette (\"black\", \"x-dark-grey\", \"dark-grey\", \"mid-grey\", \"light-grey\", \"x-light-grey\", \"white\") and NotificationsColorPalette (\"error\", \"warning\", \"success\", \"info\", \"question\", \"no-data\"). You can also pass hex/rgb strings."
|
|
393
|
+
],
|
|
394
|
+
"antiPatterns": [
|
|
395
|
+
"❌ color=\"#22c55e\" or color=\"var(--rs-color-green-500)\" → ✅ color=\"success\" — use semantic color values from NeutralColorPalette / NotificationsColorPalette."
|
|
396
|
+
],
|
|
397
|
+
"keywords": [
|
|
398
|
+
"title",
|
|
399
|
+
"header text",
|
|
400
|
+
"section heading",
|
|
401
|
+
"h1",
|
|
402
|
+
"h2",
|
|
403
|
+
"h3"
|
|
404
|
+
]
|
|
390
405
|
}
|
|
@@ -321,5 +321,10 @@
|
|
|
321
321
|
}
|
|
322
322
|
],
|
|
323
323
|
"examples": [],
|
|
324
|
-
"tags": {}
|
|
324
|
+
"tags": {},
|
|
325
|
+
"disambiguation": "Icon renders an SVG icon from a path string. Always import mdi* icons from @redsift/icons. NEVER use unicode glyphs (✓, ✕, ⚠, ›) and NEVER import from @mdi/js.",
|
|
326
|
+
"antiPatterns": [
|
|
327
|
+
"❌ Unicode characters (✓, ✕, ⚠, ›) → ✅ <Icon path={mdiCheck} /> from @redsift/icons.",
|
|
328
|
+
"❌ import { mdiPlus } from \"@mdi/js\" → ✅ import { mdiPlus } from \"@redsift/icons\"."
|
|
329
|
+
]
|
|
325
330
|
}
|
|
@@ -367,5 +367,18 @@
|
|
|
367
367
|
}
|
|
368
368
|
],
|
|
369
369
|
"examples": [],
|
|
370
|
-
"tags": {}
|
|
370
|
+
"tags": {},
|
|
371
|
+
"usageRules": [
|
|
372
|
+
"The `theme` prop is optional — inherited from context. Do NOT pass `theme` to every component.",
|
|
373
|
+
"Requires `icon` prop (SVG path string from @redsift/icons). Import icons from @redsift/icons, not @mdi/js."
|
|
374
|
+
],
|
|
375
|
+
"disambiguation": "IconButton renders a clickable icon. Requires icon prop (SVG path string). Import icons from @redsift/icons, not @mdi/js.",
|
|
376
|
+
"antiPatterns": [
|
|
377
|
+
"❌ Unicode characters as icon content → ✅ icon={mdiPlus} prop with mdi imports from @redsift/icons.",
|
|
378
|
+
"❌ import { mdiPlus } from \"@mdi/js\" → ✅ import { mdiPlus } from \"@redsift/icons\"."
|
|
379
|
+
],
|
|
380
|
+
"keywords": [
|
|
381
|
+
"icon action",
|
|
382
|
+
"toolbar button"
|
|
383
|
+
]
|
|
371
384
|
}
|
|
@@ -374,5 +374,19 @@
|
|
|
374
374
|
}
|
|
375
375
|
],
|
|
376
376
|
"examples": [],
|
|
377
|
-
"tags": {}
|
|
377
|
+
"tags": {},
|
|
378
|
+
"usageRules": [
|
|
379
|
+
"Content via `children`, NOT a `label` prop. Usage: `<Pill color=\"blue\" size=\"small\">Active</Pill>`",
|
|
380
|
+
"The `theme` prop is optional — inherited from context."
|
|
381
|
+
],
|
|
382
|
+
"antiPatterns": [
|
|
383
|
+
"❌ <Pill label=\"Active\" /> → ✅ <Pill color=\"success\">Active</Pill> — Pill uses children for content, NOT a label prop."
|
|
384
|
+
],
|
|
385
|
+
"keywords": [
|
|
386
|
+
"chip",
|
|
387
|
+
"tag",
|
|
388
|
+
"badge",
|
|
389
|
+
"label",
|
|
390
|
+
"status pill"
|
|
391
|
+
]
|
|
378
392
|
}
|
|
@@ -334,5 +334,14 @@
|
|
|
334
334
|
}
|
|
335
335
|
],
|
|
336
336
|
"examples": [],
|
|
337
|
-
"tags": {}
|
|
337
|
+
"tags": {},
|
|
338
|
+
"disambiguation": "Always use Skeleton from @redsift/design-system. NEVER import Skeleton from @mui/material — it will not match the DS theme.",
|
|
339
|
+
"antiPatterns": [
|
|
340
|
+
"❌ import { Skeleton } from \"@mui/material\" → ✅ import { Skeleton } from \"@redsift/design-system\" — always use the DS Skeleton."
|
|
341
|
+
],
|
|
342
|
+
"keywords": [
|
|
343
|
+
"loading placeholder",
|
|
344
|
+
"shimmer",
|
|
345
|
+
"skeleton loader"
|
|
346
|
+
]
|
|
338
347
|
}
|
|
@@ -334,5 +334,10 @@
|
|
|
334
334
|
}
|
|
335
335
|
],
|
|
336
336
|
"examples": [],
|
|
337
|
-
"tags": {}
|
|
337
|
+
"tags": {},
|
|
338
|
+
"disambiguation": "Use SkeletonCircle from @redsift/design-system for avatar/icon-shaped loading placeholders.",
|
|
339
|
+
"keywords": [
|
|
340
|
+
"avatar placeholder",
|
|
341
|
+
"circle skeleton"
|
|
342
|
+
]
|
|
338
343
|
}
|
|
@@ -367,5 +367,10 @@
|
|
|
367
367
|
}
|
|
368
368
|
],
|
|
369
369
|
"examples": [],
|
|
370
|
-
"tags": {}
|
|
370
|
+
"tags": {},
|
|
371
|
+
"disambiguation": "Use SkeletonText from @redsift/design-system for paragraph-shaped loading placeholders.",
|
|
372
|
+
"keywords": [
|
|
373
|
+
"text placeholder",
|
|
374
|
+
"paragraph skeleton"
|
|
375
|
+
]
|
|
371
376
|
}
|
|
@@ -525,5 +525,13 @@
|
|
|
525
525
|
}
|
|
526
526
|
],
|
|
527
527
|
"examples": [],
|
|
528
|
-
"tags": {}
|
|
528
|
+
"tags": {},
|
|
529
|
+
"usageRules": [
|
|
530
|
+
"Must be a child of <Tabs>. Requires TabsContext — rendering outside <Tabs> will silently fail (no selection, no keyboard navigation).",
|
|
531
|
+
"Always provide a `value` prop that matches a corresponding TabPanel."
|
|
532
|
+
],
|
|
533
|
+
"keywords": [
|
|
534
|
+
"tab item",
|
|
535
|
+
"tab button"
|
|
536
|
+
]
|
|
529
537
|
}
|
|
@@ -291,5 +291,14 @@
|
|
|
291
291
|
}
|
|
292
292
|
],
|
|
293
293
|
"examples": [],
|
|
294
|
-
"tags": {}
|
|
294
|
+
"tags": {},
|
|
295
|
+
"usageRules": [
|
|
296
|
+
"Must be used within a <Tabs> provider. Requires TabsContext — rendering outside <Tabs> will silently fail (panel never shown).",
|
|
297
|
+
"The `value` prop must match a corresponding Tab `value`.",
|
|
298
|
+
"Use `keepMounted` to keep panel content in DOM when inactive (useful for preserving form state)."
|
|
299
|
+
],
|
|
300
|
+
"keywords": [
|
|
301
|
+
"tab content",
|
|
302
|
+
"tab panel"
|
|
303
|
+
]
|
|
295
304
|
}
|
|
@@ -354,5 +354,16 @@
|
|
|
354
354
|
}
|
|
355
355
|
],
|
|
356
356
|
"examples": [],
|
|
357
|
-
"tags": {}
|
|
357
|
+
"tags": {},
|
|
358
|
+
"usageRules": [
|
|
359
|
+
"Accepts <Tab> and <TabPanel> children. Tabs must have a `value` prop that matches a TabPanel `value`.",
|
|
360
|
+
"For navigation tabs, use the `as` prop on Tab (e.g. as=\"a\" href=\"/path\") instead of onClick.",
|
|
361
|
+
"Supports controlled (`value`/`onChange`) and uncontrolled (`defaultValue`) modes."
|
|
362
|
+
],
|
|
363
|
+
"keywords": [
|
|
364
|
+
"tab bar",
|
|
365
|
+
"segmented control",
|
|
366
|
+
"tab navigation",
|
|
367
|
+
"tab group"
|
|
368
|
+
]
|
|
358
369
|
}
|
|
@@ -414,5 +414,18 @@
|
|
|
414
414
|
}
|
|
415
415
|
],
|
|
416
416
|
"examples": [],
|
|
417
|
-
"tags": {}
|
|
417
|
+
"tags": {},
|
|
418
|
+
"usageRules": [
|
|
419
|
+
"The `theme` prop is optional — inherited from context. Do NOT pass `theme` to every component.",
|
|
420
|
+
"The `slot` prop is NOT supported. Do not pass slot=\"heading\" or similar — use Heading component or compound sub-component API instead."
|
|
421
|
+
],
|
|
422
|
+
"antiPatterns": [
|
|
423
|
+
"❌ color=\"#22c55e\" or color=\"var(--rs-color-green-500)\" → ✅ color=\"success\" — use semantic color values from NeutralColorPalette / NotificationsColorPalette."
|
|
424
|
+
],
|
|
425
|
+
"keywords": [
|
|
426
|
+
"paragraph",
|
|
427
|
+
"body text",
|
|
428
|
+
"caption",
|
|
429
|
+
"label text"
|
|
430
|
+
]
|
|
418
431
|
}
|
|
@@ -316,5 +316,16 @@
|
|
|
316
316
|
}
|
|
317
317
|
],
|
|
318
318
|
"examples": [],
|
|
319
|
-
"tags": {}
|
|
319
|
+
"tags": {},
|
|
320
|
+
"usageRules": [
|
|
321
|
+
"Must use compound sub-components: <Combobox.Trigger> and <Combobox.Content>.",
|
|
322
|
+
"Combobox.Trigger requires a TextField or TextArea as its child. Custom inputs must forward refs correctly or focus management will break.",
|
|
323
|
+
"Combobox.Content accepts ComboboxContent.Header, .Listbox, and .Footer as children."
|
|
324
|
+
],
|
|
325
|
+
"keywords": [
|
|
326
|
+
"autocomplete",
|
|
327
|
+
"searchable select",
|
|
328
|
+
"typeahead",
|
|
329
|
+
"search input"
|
|
330
|
+
]
|
|
320
331
|
}
|
|
@@ -449,5 +449,10 @@
|
|
|
449
449
|
}
|
|
450
450
|
],
|
|
451
451
|
"examples": [],
|
|
452
|
-
"tags": {}
|
|
452
|
+
"tags": {},
|
|
453
|
+
"usageRules": [
|
|
454
|
+
"Only accepts ComboboxContent.Header, ComboboxContent.Listbox, and ComboboxContent.Footer as children. Other elements are silently ignored.",
|
|
455
|
+
"Children are reordered internally (Header → Listbox → Footer) regardless of JSX order.",
|
|
456
|
+
"Must be used inside a <Combobox> — requires popover and combobox context."
|
|
457
|
+
]
|
|
453
458
|
}
|
|
@@ -236,5 +236,14 @@
|
|
|
236
236
|
}
|
|
237
237
|
],
|
|
238
238
|
"examples": [],
|
|
239
|
-
"tags": {}
|
|
239
|
+
"tags": {},
|
|
240
|
+
"usageRules": [
|
|
241
|
+
"Must use compound sub-components: <MenuButton.Trigger> and <MenuButton.Content>.",
|
|
242
|
+
"MenuButton.Content accepts MenuButtonContent.Header, .Menu, and .Footer or plain Menu items."
|
|
243
|
+
],
|
|
244
|
+
"keywords": [
|
|
245
|
+
"dropdown menu",
|
|
246
|
+
"action menu",
|
|
247
|
+
"context menu"
|
|
248
|
+
]
|
|
240
249
|
}
|
|
@@ -438,5 +438,9 @@
|
|
|
438
438
|
}
|
|
439
439
|
],
|
|
440
440
|
"examples": [],
|
|
441
|
-
"tags": {}
|
|
441
|
+
"tags": {},
|
|
442
|
+
"usageRules": [
|
|
443
|
+
"Only accepts MenuButtonContent.Header, MenuButtonContent.Menu, and MenuButtonContent.Footer as children. If none are provided, all children are wrapped in a Menu automatically.",
|
|
444
|
+
"Must be used inside a <MenuButton> — requires popover and menu button context."
|
|
445
|
+
]
|
|
442
446
|
}
|
|
@@ -254,5 +254,15 @@
|
|
|
254
254
|
}
|
|
255
255
|
],
|
|
256
256
|
"examples": [],
|
|
257
|
-
"tags": {}
|
|
257
|
+
"tags": {},
|
|
258
|
+
"usageRules": [
|
|
259
|
+
"Must use compound sub-components: <Select.Trigger> and <Select.Content>.",
|
|
260
|
+
"Select.Content accepts <Item> components as children for options.",
|
|
261
|
+
"For searchable/filterable lists, use Combobox instead of Select."
|
|
262
|
+
],
|
|
263
|
+
"keywords": [
|
|
264
|
+
"dropdown",
|
|
265
|
+
"select menu",
|
|
266
|
+
"picker"
|
|
267
|
+
]
|
|
258
268
|
}
|
|
@@ -110,5 +110,14 @@
|
|
|
110
110
|
}
|
|
111
111
|
],
|
|
112
112
|
"examples": [],
|
|
113
|
-
"tags": {}
|
|
113
|
+
"tags": {},
|
|
114
|
+
"usageRules": [
|
|
115
|
+
"Must use compound sub-components: <Dialog.Trigger>, <Dialog.Content>, <Dialog.Title>, etc. Do not pass content as a string prop."
|
|
116
|
+
],
|
|
117
|
+
"keywords": [
|
|
118
|
+
"modal",
|
|
119
|
+
"popup",
|
|
120
|
+
"dialog box",
|
|
121
|
+
"confirmation dialog"
|
|
122
|
+
]
|
|
114
123
|
}
|
|
@@ -180,5 +180,15 @@
|
|
|
180
180
|
}
|
|
181
181
|
],
|
|
182
182
|
"examples": [],
|
|
183
|
-
"tags": {}
|
|
183
|
+
"tags": {},
|
|
184
|
+
"usageRules": [
|
|
185
|
+
"Must use compound sub-components: <Toggletip.Trigger> and <Toggletip.Content>.",
|
|
186
|
+
"Trigger and Content sub-components must not be used outside <Toggletip> — they throw if ToggletipContext is missing.",
|
|
187
|
+
"Use Toggletip instead of Tooltip when content should be triggered by click (not hover) for touch/keyboard accessibility."
|
|
188
|
+
],
|
|
189
|
+
"keywords": [
|
|
190
|
+
"click tooltip",
|
|
191
|
+
"info popover",
|
|
192
|
+
"toggleable tip"
|
|
193
|
+
]
|
|
184
194
|
}
|
|
@@ -117,5 +117,13 @@
|
|
|
117
117
|
}
|
|
118
118
|
],
|
|
119
119
|
"examples": [],
|
|
120
|
-
"tags": {}
|
|
120
|
+
"tags": {},
|
|
121
|
+
"usageRules": [
|
|
122
|
+
"Must use compound sub-components: <Tooltip.Trigger> and <Tooltip.Content>. Do not pass content as a string prop.",
|
|
123
|
+
"Trigger and Content sub-components must not be used outside <Tooltip> — they throw if TooltipContext is missing."
|
|
124
|
+
],
|
|
125
|
+
"keywords": [
|
|
126
|
+
"hover tip",
|
|
127
|
+
"info tooltip"
|
|
128
|
+
]
|
|
121
129
|
}
|