@sdaia-ds/mcp 0.0.0-stage → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +291 -0
- package/dist/index.js.map +1 -0
- package/knowledge/actions/breadcrumb.md +50 -0
- package/knowledge/actions/button-menu.md +82 -0
- package/knowledge/actions/button-split.md +69 -0
- package/knowledge/actions/button.md +101 -0
- package/knowledge/actions/content-switcher.md +66 -0
- package/knowledge/actions/date-picker.md +115 -0
- package/knowledge/actions/floating-button.md +100 -0
- package/knowledge/actions/horizontal-tabs.md +52 -0
- package/knowledge/actions/link.md +76 -0
- package/knowledge/actions/modal.md +103 -0
- package/knowledge/actions/pagination.md +69 -0
- package/knowledge/actions/radio-button.md +88 -0
- package/knowledge/actions/switch.md +87 -0
- package/knowledge/actions/tag.md +69 -0
- package/knowledge/ai/agent-activity.md +65 -0
- package/knowledge/ai/agent-card.md +65 -0
- package/knowledge/ai/agent-handoff.md +65 -0
- package/knowledge/ai/ai-citation.md +78 -0
- package/knowledge/ai/ai-code-block.md +86 -0
- package/knowledge/ai/ai-disclaimer.md +84 -0
- package/knowledge/ai/ai-message-bubble.md +81 -0
- package/knowledge/ai/ai-message.md +118 -0
- package/knowledge/ai/ai-prompt-input.md +93 -0
- package/knowledge/ai/ai-states.md +107 -0
- package/knowledge/ai/ai-status-indicator.md +81 -0
- package/knowledge/ai/ai-suggested-prompts.md +62 -0
- package/knowledge/ai/ai-thinking-indicator.md +94 -0
- package/knowledge/ai/artifact-viewer.md +105 -0
- package/knowledge/ai/citation.md +61 -0
- package/knowledge/ai/context-manager.md +111 -0
- package/knowledge/ai/prompt-context.md +72 -0
- package/knowledge/ai/prompt-suggestion.md +68 -0
- package/knowledge/ai/prompt-template.md +71 -0
- package/knowledge/ai/prompt-variable.md +61 -0
- package/knowledge/ai/reasoning-trace.md +106 -0
- package/knowledge/ai/source-explorer.md +117 -0
- package/knowledge/ai/source-group.md +59 -0
- package/knowledge/ai/source-reference.md +70 -0
- package/knowledge/ai/thinking-panel.md +77 -0
- package/knowledge/ai/tool-activity-feed.md +67 -0
- package/knowledge/ai/tool-call-card.md +66 -0
- package/knowledge/ai/tool-status-row.md +72 -0
- package/knowledge/ai/tool-timeline-item.md +71 -0
- package/knowledge/ai/voice-session.md +93 -0
- package/knowledge/feedback/alert.md +106 -0
- package/knowledge/feedback/badge.md +86 -0
- package/knowledge/feedback/card.md +54 -0
- package/knowledge/feedback/feedback-overview.md +37 -0
- package/knowledge/feedback/feedback.md +46 -0
- package/knowledge/feedback/help-icon.md +57 -0
- package/knowledge/feedback/loading-indicator.md +76 -0
- package/knowledge/feedback/notification-banner.md +73 -0
- package/knowledge/feedback/notification-popup.md +87 -0
- package/knowledge/feedback/notifications.md +158 -0
- package/knowledge/feedback/progress-bar.md +69 -0
- package/knowledge/feedback/rating-overview.md +58 -0
- package/knowledge/feedback/rating.md +64 -0
- package/knowledge/feedback/skeleton-avatar.md +48 -0
- package/knowledge/feedback/skeleton.md +53 -0
- package/knowledge/feedback/toast.md +74 -0
- package/knowledge/feedback/tooltip.md +72 -0
- package/knowledge/form/autocomplete.md +100 -0
- package/knowledge/form/checkbox.md +95 -0
- package/knowledge/form/date-time-field.md +63 -0
- package/knowledge/form/error-summary.md +56 -0
- package/knowledge/form/field-group.md +57 -0
- package/knowledge/form/file-uploader.md +60 -0
- package/knowledge/form/form-section.md +58 -0
- package/knowledge/form/number-input.md +92 -0
- package/knowledge/form/otp-input.md +83 -0
- package/knowledge/form/password-input.md +49 -0
- package/knowledge/form/range-slider.md +71 -0
- package/knowledge/form/rich-text-editor.md +106 -0
- package/knowledge/form/select.md +113 -0
- package/knowledge/form/signature.md +83 -0
- package/knowledge/form/slider.md +66 -0
- package/knowledge/form/text-area.md +90 -0
- package/knowledge/form/text-input.md +132 -0
- package/knowledge/form/time-input.md +44 -0
- package/knowledge/form/time-picker.md +73 -0
- package/knowledge/foundations/accessibility.md +97 -0
- package/knowledge/foundations/colors.md +1117 -0
- package/knowledge/foundations/figma.md +30 -0
- package/knowledge/foundations/icon-usage.md +114 -0
- package/knowledge/foundations/icons.md +16 -0
- package/knowledge/foundations/motion.md +39 -0
- package/knowledge/foundations/radius.md +17 -0
- package/knowledge/foundations/responsive.md +64 -0
- package/knowledge/foundations/rtl.md +106 -0
- package/knowledge/foundations/spacing.md +27 -0
- package/knowledge/foundations/theme.md +115 -0
- package/knowledge/foundations/tokens.json +12124 -0
- package/knowledge/foundations/typography.md +45 -0
- package/knowledge/general/accordion.md +79 -0
- package/knowledge/general/activity.md +44 -0
- package/knowledge/general/app-shell.md +64 -0
- package/knowledge/general/area-chart.md +89 -0
- package/knowledge/general/audio-player.md +85 -0
- package/knowledge/general/avatar-group.md +50 -0
- package/knowledge/general/avatar.md +61 -0
- package/knowledge/general/carousel-image.md +103 -0
- package/knowledge/general/chart.md +25 -0
- package/knowledge/general/chip.md +90 -0
- package/knowledge/general/code-snippet.md +80 -0
- package/knowledge/general/column-chart.md +84 -0
- package/knowledge/general/context-menu.md +55 -0
- package/knowledge/general/digital-stamp.md +77 -0
- package/knowledge/general/divider.md +65 -0
- package/knowledge/general/donut-chart.md +75 -0
- package/knowledge/general/draggable-list.md +43 -0
- package/knowledge/general/dropdown.md +90 -0
- package/knowledge/general/empty-state.md +60 -0
- package/knowledge/general/filtration.md +85 -0
- package/knowledge/general/footer.md +59 -0
- package/knowledge/general/line-chart.md +95 -0
- package/knowledge/general/list.md +91 -0
- package/knowledge/general/media-gallery.md +85 -0
- package/knowledge/general/media-viewer.md +78 -0
- package/knowledge/general/menu.md +66 -0
- package/knowledge/general/metric.md +92 -0
- package/knowledge/general/nav-bar.md +62 -0
- package/knowledge/general/nav-header.md +125 -0
- package/knowledge/general/number.md +72 -0
- package/knowledge/general/page-template.md +80 -0
- package/knowledge/general/pdf-viewer.md +91 -0
- package/knowledge/general/pie-chart-panel.md +86 -0
- package/knowledge/general/popover.md +115 -0
- package/knowledge/general/progress-circle.md +63 -0
- package/knowledge/general/quote.md +64 -0
- package/knowledge/general/radial-stepper.md +72 -0
- package/knowledge/general/scatter-chart.md +62 -0
- package/knowledge/general/second-nav-header.md +55 -0
- package/knowledge/general/slideout-menu.md +92 -0
- package/knowledge/general/stepper.md +42 -0
- package/knowledge/general/structured-list.md +52 -0
- package/knowledge/general/table-bulk-actions-bar.md +66 -0
- package/knowledge/general/table-of-content.md +49 -0
- package/knowledge/general/table.md +113 -0
- package/knowledge/general/tree-view.md +55 -0
- package/knowledge/general/vertical-tabs.md +48 -0
- package/knowledge/general/video-player.md +88 -0
- package/knowledge/manifest.json +919 -0
- package/knowledge/patterns/buttons-with-sdaia-touch.md +34 -0
- package/knowledge/patterns/sdaia-logo-animation.md +35 -0
- package/knowledge/patterns/switch-with-sdaia-touch.md +29 -0
- package/knowledge/setup.md +125 -0
- package/package.json +45 -4
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Badge
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Badge
|
|
5
|
+
- Slug: `badge`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add badge`
|
|
8
|
+
- Import: `import { Badge } from '@/components/ui/Badge'`
|
|
9
|
+
- Installed files: `Badge.tsx`, `Badge.types.ts`, `Badge.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/badge
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add badge`. It copies the source into your components folder (`components/ui/Badge/`, under `src/` when the project has one); import it as `@/components/ui/Badge`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `children?` | `ReactNode` | — | Label text |
|
|
18
|
+
| `size?` | `'sm' \| 'md' \| 'lg'` | 'md' | Size of the badge |
|
|
19
|
+
| `variant?` | `'soft' \| 'solid'` | 'soft' | Visual style |
|
|
20
|
+
| `color?` | `'neutral' \| 'primary' \| 'secondary' \| 'tertiary' \| 'info' \| 'warning' \| 'error'` | 'neutral' | Color scheme |
|
|
21
|
+
| `pill?` | `boolean` | false | Pill shape (rounded-full) |
|
|
22
|
+
| `iconOnly?` | `boolean` | false | Icon-only mode (no text) |
|
|
23
|
+
| `leadingIcon?` | `ReactNode` | — | Leading icon element |
|
|
24
|
+
| `trailingIcon?` | `ReactNode` | — | Trailing icon element |
|
|
25
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
26
|
+
|
|
27
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `dir`.
|
|
28
|
+
|
|
29
|
+
## Options (allowed values)
|
|
30
|
+
- `size`: `'sm'` \| `'md'` \| `'lg'` — Size of the badge
|
|
31
|
+
- `variant`: `'soft'` \| `'solid'` — Visual style
|
|
32
|
+
- `color`: `'neutral'` \| `'primary'` \| `'secondary'` \| `'tertiary'` \| `'info'` \| `'warning'` \| `'error'` — Color scheme
|
|
33
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
34
|
+
|
|
35
|
+
## Accessibility
|
|
36
|
+
- Icon-only usage must include an accessible label (`aria-label`).
|
|
37
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
38
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
39
|
+
|
|
40
|
+
## Design tokens used
|
|
41
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
42
|
+
- `var(--ds-color-)`
|
|
43
|
+
- `var(--ds-color-bg-danger-strong)`
|
|
44
|
+
- `var(--ds-color-bg-danger-subtle)`
|
|
45
|
+
- `var(--ds-color-bg-default)`
|
|
46
|
+
- `var(--ds-color-bg-emphasis-low)`
|
|
47
|
+
- `var(--ds-color-bg-info-strong)`
|
|
48
|
+
- `var(--ds-color-bg-info-subtle)`
|
|
49
|
+
- `var(--ds-color-bg-success-strong)`
|
|
50
|
+
- `var(--ds-color-bg-success-subtle)`
|
|
51
|
+
- `var(--ds-color-bg-warning-strong)`
|
|
52
|
+
- `var(--ds-color-bg-warning-subtle)`
|
|
53
|
+
- `var(--ds-color-border-danger-strong)`
|
|
54
|
+
- `var(--ds-color-border-default-strong)`
|
|
55
|
+
- `var(--ds-color-border-info-strong)`
|
|
56
|
+
- `var(--ds-color-border-success-strong)`
|
|
57
|
+
- `var(--ds-color-border-warning-strong)`
|
|
58
|
+
- `var(--ds-color-text-danger)`
|
|
59
|
+
- `var(--ds-color-text-default)`
|
|
60
|
+
- `var(--ds-color-text-info)`
|
|
61
|
+
- `var(--ds-color-text-on-color)`
|
|
62
|
+
- `var(--ds-color-text-success)`
|
|
63
|
+
- `var(--ds-color-text-warning)`
|
|
64
|
+
- `var(--ds-radius-full)`
|
|
65
|
+
- `var(--ds-radius-xs)`
|
|
66
|
+
- `var(--ds-spacing-md)`
|
|
67
|
+
- `var(--ds-spacing-sm)`
|
|
68
|
+
- `var(--ds-spacing-xs)`
|
|
69
|
+
- `var(--ds-spacing-xxs)`
|
|
70
|
+
- `var(--ds-themes-badge-)`
|
|
71
|
+
- `var(--ds-themes-badge-badge-background-brand-tertiary-soft)`
|
|
72
|
+
- `var(--ds-themes-badge-badge-background-brand-tertiary-solid)`
|
|
73
|
+
- `var(--ds-themes-badge-badge-background-gold-soft)`
|
|
74
|
+
- `var(--ds-themes-badge-badge-background-gold-solid)`
|
|
75
|
+
- `var(--ds-themes-badge-badge-border-brand-tertiary-soft)`
|
|
76
|
+
- `var(--ds-themes-badge-badge-border-gold-soft)`
|
|
77
|
+
- `var(--ds-themes-text-)`
|
|
78
|
+
- `var(--ds-themes-text-text-brand-tertiary)`
|
|
79
|
+
|
|
80
|
+
## AI usage guidance
|
|
81
|
+
When generating UI:
|
|
82
|
+
- Install with `npx sdaia-ui@latest add badge` (after `npx sdaia-ui@latest init`), then import `{ Badge }` from `@/components/ui/Badge`.
|
|
83
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
84
|
+
- Use only the documented option values listed under "Options".
|
|
85
|
+
- Pass icons via `<DgaIcon data={…} className="size-icon-sm" />` from `@platformscode/icons` only — see `get_foundations` (`icon-usage`). Never emoji, Lucide, or random icons (e.g. `pizza01Stroke` for dark mode).
|
|
86
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Card
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Card
|
|
5
|
+
- Slug: `card`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add card`
|
|
8
|
+
- Import: `import { Card } from '@/components/ui/Card'`
|
|
9
|
+
- Installed files: `Card.tsx`, `Card.types.ts`, `Card.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/card
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add card`. It copies the source into your components folder (`components/ui/Card/`, under `src/` when the project has one); import it as `@/components/ui/Card`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `children?` | `ReactNode` | — | Render children inside the card surface (radius, padding, bg). |
|
|
18
|
+
| `surface?` | `'solid' \| 'glass'` | 'solid' | Surface treatment — `'solid'` (default) or `'glass'` (translucent liquid-glass material). |
|
|
19
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
20
|
+
|
|
21
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `dir`.
|
|
22
|
+
|
|
23
|
+
## Options (allowed values)
|
|
24
|
+
- `surface`: `'solid'` \| `'glass'` — Surface treatment of the card.
|
|
25
|
+
- `'solid'` (default) — opaque raised background.
|
|
26
|
+
- `'glass'` — translucent liquid-glass material (blurred backdrop +
|
|
27
|
+
beveled edge highlight). Reads best placed over imagery or color.
|
|
28
|
+
|
|
29
|
+
The visual is provided by the shared `.glass-surface` utility, so it is
|
|
30
|
+
theme-aware (light / dark) and identical across every component that
|
|
31
|
+
exposes a `surface` prop.
|
|
32
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
33
|
+
|
|
34
|
+
## Deprecated props
|
|
35
|
+
Do not use in new code:
|
|
36
|
+
- `direction`
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
40
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
41
|
+
|
|
42
|
+
## Design tokens used
|
|
43
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
44
|
+
- `var(--ds-color-bg-raised)`
|
|
45
|
+
- `var(--ds-radius-l)`
|
|
46
|
+
- `var(--ds-spacing-2xl)`
|
|
47
|
+
- `var(--ds-spacing-xl)`
|
|
48
|
+
|
|
49
|
+
## AI usage guidance
|
|
50
|
+
When generating UI:
|
|
51
|
+
- Install with `npx sdaia-ui@latest add card` (after `npx sdaia-ui@latest init`), then import `{ Card }` from `@/components/ui/Card`.
|
|
52
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
53
|
+
- Use only the documented option values listed under "Options".
|
|
54
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Feedback Overview
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Feedback Overview
|
|
5
|
+
- Slug: `feedback-overview`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add feedback-overview`
|
|
8
|
+
- Import: `import { FeedbackOverview } from '@/components/ui/FeedbackOverview'`
|
|
9
|
+
- Installed files: `FeedbackOverview.tsx`, `FeedbackOverview.types.ts`, `FeedbackOverview.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/feedback-overview
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add feedback-overview`. It copies the source into your components folder (`components/ui/FeedbackOverview/`, under `src/` when the project has one); import it as `@/components/ui/FeedbackOverview`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `label?` | `ReactNode` | — | The label shown alongside the reaction buttons. |
|
|
18
|
+
| `labelPlacement?` | `'top' \| 'inline' \| 'bottom'` | 'top' | Where the label is placed relative to the reactions. |
|
|
19
|
+
|
|
20
|
+
## Options (allowed values)
|
|
21
|
+
- `labelPlacement`: `'top'` \| `'inline'` \| `'bottom'` — Where the label is placed relative to the reactions.
|
|
22
|
+
|
|
23
|
+
## Accessibility
|
|
24
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
25
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
26
|
+
|
|
27
|
+
## Design tokens used
|
|
28
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
29
|
+
- `var(--ds-color-text-paragraph)`
|
|
30
|
+
- `var(--ds-spacing-xs)`
|
|
31
|
+
|
|
32
|
+
## AI usage guidance
|
|
33
|
+
When generating UI:
|
|
34
|
+
- Install with `npx sdaia-ui@latest add feedback-overview` (after `npx sdaia-ui@latest init`), then import `{ FeedbackOverview }` from `@/components/ui/FeedbackOverview`.
|
|
35
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
36
|
+
- Use only the documented option values listed under "Options".
|
|
37
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Feedback
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Feedback
|
|
5
|
+
- Slug: `feedback`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add feedback`
|
|
8
|
+
- Import: `import { Feedback } from '@/components/ui/Feedback'`
|
|
9
|
+
- Installed files: `Feedback.tsx`, `Feedback.types.ts`, `Feedback.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/feedback
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add feedback`. It copies the source into your components folder (`components/ui/Feedback/`, under `src/` when the project has one); import it as `@/components/ui/Feedback`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `type?` | `FeedbackType` | 'thumb' | Glyph family — `thumb` (like / dislike) or `emoji` (dislike / neutral / like). |
|
|
18
|
+
| `size?` | `FeedbackSize` | 'md' | — |
|
|
19
|
+
| `value?` | `FeedbackValue \| null` | — | Controlled value. Pass `null` to deselect. |
|
|
20
|
+
| `defaultValue?` | `FeedbackValue \| null` | null | Initial value when uncontrolled. |
|
|
21
|
+
| `onValueChange?` | `(value: FeedbackValue \| null) => void` | — | Fired with the new value (`null` when the active reaction is pressed again). |
|
|
22
|
+
| `disabled?` | `boolean` | false | Disables every reaction button. |
|
|
23
|
+
| `labels?` | `Partial<FeedbackLabels>` | — | Override built-in accessible names (English defaults) to localize the reactions. |
|
|
24
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
25
|
+
|
|
26
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `onChange`, `defaultValue`, `dir`.
|
|
27
|
+
|
|
28
|
+
## Options (allowed values)
|
|
29
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
30
|
+
|
|
31
|
+
## Accessibility
|
|
32
|
+
- Built-in strings (button names, announcements) come from `labels`; pass translated strings for Arabic or other languages.
|
|
33
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
34
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
35
|
+
|
|
36
|
+
## Design tokens used
|
|
37
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
38
|
+
- `var(--ds-spacing-xs)`
|
|
39
|
+
|
|
40
|
+
## AI usage guidance
|
|
41
|
+
When generating UI:
|
|
42
|
+
- Install with `npx sdaia-ui@latest add feedback` (after `npx sdaia-ui@latest init`), then import `{ Feedback }` from `@/components/ui/Feedback`.
|
|
43
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
44
|
+
- Use only the documented option values listed under "Options".
|
|
45
|
+
- Express the disabled state with the `disabled` prop, not custom styling.
|
|
46
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Help Icon
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Help Icon
|
|
5
|
+
- Slug: `help-icon`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add help-icon`
|
|
8
|
+
- Import: `import { HelpIcon } from '@/components/ui/HelpIcon'`
|
|
9
|
+
- Installed files: `HelpIcon.tsx`, `HelpIcon.types.ts`, `HelpIcon.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/helpicon
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add help-icon`. It copies the source into your components folder (`components/ui/HelpIcon/`, under `src/` when the project has one); import it as `@/components/ui/HelpIcon`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `placement?` | `'top' \| 'bottom' \| 'left' \| 'right'` | 'top' | Side on which the tooltip appears relative to the trigger icon. In RTL the left/right placements are mirrored automatically. |
|
|
18
|
+
| `align?` | `'start' \| 'center' \| 'end'` | 'start' | Alignment of the beak (arrow) along the tooltip edge. For top/bottom placements this controls horizontal position; for left/right placements it controls vertical position. |
|
|
19
|
+
| `open?` | `boolean` | — | Whether the tooltip is currently visible. When provided the component operates in controlled mode. When omitted the component is uncontrolled and shows on hover/focus. |
|
|
20
|
+
| `onOpenChange?` | `(open: boolean) => void` | — | Callback fired when the tooltip open state should change (hover / focus, leaving, or Escape). Use this together with `open` for controlled mode. |
|
|
21
|
+
| `title?` | `ReactNode` | — | Title text displayed at the top of the tooltip. |
|
|
22
|
+
| `description?` | `ReactNode` | — | Description / body text displayed below the title. |
|
|
23
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Layout direction — applied to the root and the tooltip, and used to mirror left/right placements. Unset inherits the page direction (read when the tooltip opens). |
|
|
24
|
+
| `labels?` | `Partial<HelpIconLabels>` | — | Localised built-in strings (trigger button name). |
|
|
25
|
+
|
|
26
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `title`, `dir`.
|
|
27
|
+
|
|
28
|
+
## Options (allowed values)
|
|
29
|
+
- `placement`: `'top'` \| `'bottom'` \| `'left'` \| `'right'` — Which side the tooltip appears on relative to the trigger icon.
|
|
30
|
+
- `align`: `'start'` \| `'center'` \| `'end'` — Where the beak (arrow) sits along the tooltip edge.
|
|
31
|
+
- `dir`: `'ltr'` \| `'rtl'` — Layout direction — applied to the root and the tooltip, and used to mirror
|
|
32
|
+
left/right placements. Unset inherits the page direction (read when the tooltip opens).
|
|
33
|
+
|
|
34
|
+
## Deprecated props
|
|
35
|
+
Do not use in new code:
|
|
36
|
+
- `rtl` — Pass `true` when the component is rendered inside a `dir="rtl"` context.
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
- Built-in strings (button names, announcements) come from `labels`; pass translated strings for Arabic or other languages.
|
|
40
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
41
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
42
|
+
|
|
43
|
+
## Design tokens used
|
|
44
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
45
|
+
- `var(--ds-color-bg-default)`
|
|
46
|
+
- `var(--ds-color-border-brand)`
|
|
47
|
+
- `var(--ds-color-icon-default)`
|
|
48
|
+
- `var(--ds-color-icon-default-500)`
|
|
49
|
+
- `var(--ds-radius-full)`
|
|
50
|
+
|
|
51
|
+
## AI usage guidance
|
|
52
|
+
When generating UI:
|
|
53
|
+
- Install with `npx sdaia-ui@latest add help-icon` (after `npx sdaia-ui@latest init`), then import `{ HelpIcon }` from `@/components/ui/HelpIcon`.
|
|
54
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
55
|
+
- Use only the documented option values listed under "Options".
|
|
56
|
+
- Pass icons via `<DgaIcon data={…} className="size-icon-sm" />` from `@platformscode/icons` only — see `get_foundations` (`icon-usage`). Never emoji, Lucide, or random icons (e.g. `pizza01Stroke` for dark mode).
|
|
57
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Loading Indicator
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Loading Indicator
|
|
5
|
+
- Slug: `loading-indicator`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add loading-indicator`
|
|
8
|
+
- Import: `import { LoadingIndicator } from '@/components/ui/LoadingIndicator'`
|
|
9
|
+
- Installed files: `LoadingIndicator.tsx`, `LoadingIndicator.types.ts`, `LoadingIndicator.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/loading-indicator
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add loading-indicator`. It copies the source into your components folder (`components/ui/LoadingIndicator/`, under `src/` when the project has one); import it as `@/components/ui/LoadingIndicator`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `indicatorStyle?` | `'arc' \| 'ring' \| 'radial'` | 'arc' | Visual geometry of the spinner (Figma "Style"). |
|
|
18
|
+
| `color?` | `'neutral' \| 'primary'` | 'neutral' | Color theme for the graphic (Figma "Color"). |
|
|
19
|
+
| `size?` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | 'xs' | Size of the graphic and matching label typography. |
|
|
20
|
+
| `showLabel?` | `boolean` | true | When true, shows supporting text below the graphic. |
|
|
21
|
+
| `label?` | `ReactNode` | — | Supporting text for this instance (e.g. "Fetching data..."); keep it short because the status is announced to screen readers. Falls back to `labels.loading`. |
|
|
22
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
23
|
+
| `labels?` | `Partial<LoadingIndicatorLabels>` | — | Override built-in strings (English defaults) to localize the indicator. |
|
|
24
|
+
|
|
25
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `dir`, `color`.
|
|
26
|
+
|
|
27
|
+
## Options (allowed values)
|
|
28
|
+
- `indicatorStyle`: `'arc'` \| `'ring'` \| `'radial'` — Spinner geometry style.
|
|
29
|
+
- `arc` → open arc without a track
|
|
30
|
+
- `ring` → track + partial stroke
|
|
31
|
+
- `radial` → Style "Radial Spinner" (spokes)
|
|
32
|
+
- `color`: `'neutral'` \| `'primary'` — Accent palette. Maps to Figma `Color=Neutral` and `Color=Primary`.
|
|
33
|
+
- `size`: `'xs'` \| `'sm'` \| `'md'` \| `'lg'` \| `'xl'` — Size scale. Maps to Figma `xSmall` … `xLarge`.
|
|
34
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
35
|
+
|
|
36
|
+
## Deprecated props
|
|
37
|
+
Do not use in new code:
|
|
38
|
+
- `supportingText`
|
|
39
|
+
|
|
40
|
+
## Accessibility
|
|
41
|
+
- Built-in strings (button names, announcements) come from `labels`; pass translated strings for Arabic or other languages.
|
|
42
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
43
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
44
|
+
|
|
45
|
+
## Design tokens used
|
|
46
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
47
|
+
- `var(--ds-brand-primary-100)`
|
|
48
|
+
- `var(--ds-brand-primary-200)`
|
|
49
|
+
- `var(--ds-brand-primary-25)`
|
|
50
|
+
- `var(--ds-brand-primary-300)`
|
|
51
|
+
- `var(--ds-brand-primary-50)`
|
|
52
|
+
- `var(--ds-brand-primary-700)`
|
|
53
|
+
- `var(--ds-brand-primary-800)`
|
|
54
|
+
- `var(--ds-brand-primary-900)`
|
|
55
|
+
- `var(--ds-brand-primary-950)`
|
|
56
|
+
- `var(--ds-color-bg-brand)`
|
|
57
|
+
- `var(--ds-color-bg-emphasis-medium)`
|
|
58
|
+
- `var(--ds-color-bg-emphasis-strong)`
|
|
59
|
+
- `var(--ds-color-bg-inverse)`
|
|
60
|
+
- `var(--ds-color-border-default)`
|
|
61
|
+
- `var(--ds-color-border-muted)`
|
|
62
|
+
- `var(--ds-color-icon-brand)`
|
|
63
|
+
- `var(--ds-color-icon-default-400)`
|
|
64
|
+
- `var(--ds-color-icon-default-500)`
|
|
65
|
+
- `var(--ds-color-text-default)`
|
|
66
|
+
- `var(--ds-color-text-display)`
|
|
67
|
+
- `var(--ds-color-text-paragraph)`
|
|
68
|
+
- `var(--ds-spacing-lg)`
|
|
69
|
+
- `var(--ds-spacing-sm)`
|
|
70
|
+
|
|
71
|
+
## AI usage guidance
|
|
72
|
+
When generating UI:
|
|
73
|
+
- Install with `npx sdaia-ui@latest add loading-indicator` (after `npx sdaia-ui@latest init`), then import `{ LoadingIndicator }` from `@/components/ui/LoadingIndicator`.
|
|
74
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
75
|
+
- Use only the documented option values listed under "Options".
|
|
76
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Notification Banner
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Notification Banner
|
|
5
|
+
- Slug: `notification-banner`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add notification-banner`
|
|
8
|
+
- Import: `import { NotificationBanner } from '@/components/ui/NotificationBanner'`
|
|
9
|
+
- Installed files: `NotificationBanner.tsx`, `NotificationBanner.types.ts`, `NotificationBanner.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/notification-banner
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add notification-banner`. It copies the source into your components folder (`components/ui/NotificationBanner/`, under `src/` when the project has one); import it as `@/components/ui/NotificationBanner`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `layout?` | `'inline' \| 'stacked'` | 'inline' | Layout orientation. - `inline` — media on the start edge, text and actions stacked next to it. - `stacked` — media row on top, text and actions stacked below. |
|
|
18
|
+
| `type?` | `'leading-icon' \| 'avatar' \| 'progress' \| 'image'` | 'leading-icon' | Which media slot is rendered. - `leading-icon` — rounded featured icon (pass via `icon`). - `avatar` — 40 px avatar (pass via `avatar`). - `progress` — avatar + inline `ProgressBar` (pass value via `progress`). - `image` — image block (pass via `imageSrc`). |
|
|
19
|
+
| `title` | `ReactNode` | — | Title text (required) |
|
|
20
|
+
| `description?` | `ReactNode` | — | Supporting description text |
|
|
21
|
+
| `icon?` | `ReactNode` | — | Icon to render inside the featured-icon slot — only used when `type="leading-icon"`. Defaults to `<AlertCircleIcon />` when omitted. |
|
|
22
|
+
| `avatar?` | `NotificationBannerAvatar` | — | Avatar slot content — only used when `type="avatar"` or `type="progress"`. |
|
|
23
|
+
| `imageSrc?` | `string` | — | Image source — only used when `type="image"`. |
|
|
24
|
+
| `imageAlt?` | `string` | '' | Image alt text — only used when `type="image"`. |
|
|
25
|
+
| `progress?` | `number` | — | Progress value 0–100 — only used when `type="progress"`. The progress bar renders only when a value is provided. |
|
|
26
|
+
| `actions?` | `ReactNode` | — | Action buttons rendered in the actions row. Typically one or two `<Button variant="transparent" />` elements. |
|
|
27
|
+
| `onDismiss?` | `() => void` | — | Invoked when the close button is clicked. |
|
|
28
|
+
| `hideCloseButton?` | `boolean` | false | Hide the close button entirely. |
|
|
29
|
+
| `labels?` | `Partial<NotificationBannerLabels>` | — | Override built-in strings (English defaults) to localize the banner. |
|
|
30
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
31
|
+
|
|
32
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `title`, `dir`.
|
|
33
|
+
|
|
34
|
+
## Options (allowed values)
|
|
35
|
+
- `layout`: `'inline'` \| `'stacked'` — Layout orientation — inline puts the media on the start edge, stacked puts it above the content.
|
|
36
|
+
- `type`: `'leading-icon'` \| `'avatar'` \| `'progress'` \| `'image'` — Media type rendered alongside the title/description.
|
|
37
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
38
|
+
|
|
39
|
+
## Deprecated props
|
|
40
|
+
Do not use in new code:
|
|
41
|
+
- `dismissLabel`
|
|
42
|
+
- `rtl`
|
|
43
|
+
|
|
44
|
+
## Accessibility
|
|
45
|
+
- Built-in strings (button names, announcements) come from `labels`; pass translated strings for Arabic or other languages.
|
|
46
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
47
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
48
|
+
|
|
49
|
+
## Design tokens used
|
|
50
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
51
|
+
- `var(--ds-color-bg-muted)`
|
|
52
|
+
- `var(--ds-color-bg-subtle)`
|
|
53
|
+
- `var(--ds-color-border-on-default)`
|
|
54
|
+
- `var(--ds-color-icon-default)`
|
|
55
|
+
- `var(--ds-color-text-display)`
|
|
56
|
+
- `var(--ds-color-text-paragraph)`
|
|
57
|
+
- `var(--ds-radius-full)`
|
|
58
|
+
- `var(--ds-radius-m)`
|
|
59
|
+
- `var(--ds-spacing-lg)`
|
|
60
|
+
- `var(--ds-spacing-md)`
|
|
61
|
+
- `var(--ds-spacing-none)`
|
|
62
|
+
- `var(--ds-spacing-xl)`
|
|
63
|
+
- `var(--ds-spacing-xs)`
|
|
64
|
+
- `var(--ds-text-leading-line-heights-text-md)`
|
|
65
|
+
- `var(--ds-text-leading-line-heights-text-sm)`
|
|
66
|
+
|
|
67
|
+
## AI usage guidance
|
|
68
|
+
When generating UI:
|
|
69
|
+
- Install with `npx sdaia-ui@latest add notification-banner` (after `npx sdaia-ui@latest init`), then import `{ NotificationBanner }` from `@/components/ui/NotificationBanner`.
|
|
70
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
71
|
+
- Use only the documented option values listed under "Options".
|
|
72
|
+
- Pass icons via `<DgaIcon data={…} className="size-icon-sm" />` from `@platformscode/icons` only — see `get_foundations` (`icon-usage`). Never emoji, Lucide, or random icons (e.g. `pizza01Stroke` for dark mode).
|
|
73
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Notification Popup
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Component: Notification Popup
|
|
5
|
+
- Slug: `notification-popup`
|
|
6
|
+
- Category: Feedback
|
|
7
|
+
- Install: `npx sdaia-ui@latest add notification-popup`
|
|
8
|
+
- Import: `import { NotificationPopup } from '@/components/ui/NotificationPopup'`
|
|
9
|
+
- Installed files: `NotificationPopup.tsx`, `NotificationPopup.types.ts`, `NotificationPopup.variants.ts`, `index.ts`
|
|
10
|
+
- Docs: https://ds.nacew.com/components/notification-popup
|
|
11
|
+
|
|
12
|
+
> **Hard rule:** `sdaia-ui` is a CLI, not a runtime package — NEVER run `npm install sdaia-ui` and NEVER `import … from 'sdaia-ui'`. Run `npx sdaia-ui@latest init` once per project (Tailwind CSS v4, tokens, the IBM Plex Sans Arabic font, the `@/` alias on Vite, `cn`), then `npx sdaia-ui@latest add notification-popup`. It copies the source into your components folder (`components/ui/NotificationPopup/`, under `src/` when the project has one); import it as `@/components/ui/NotificationPopup`. The files are yours: prefer props and composition over editing them. `npx sdaia-ui@latest update` never overwrites a file you changed: it keeps it and says it has updates; `diff` shows them and `update --force` takes them.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `type?` | `'success' \| 'error' \| 'warning' \| 'alert' \| 'input'` | 'success' | Popup type. - `success` / `error` / `warning` — 360 px wide, single centered action button. - `alert` — 360 px wide, two side-by-side action buttons. - `input` — 480 px wide, supports `children` (e.g. radio rows) and `footer` (consent text), with actions rendered as a stacked full-width column. |
|
|
18
|
+
| `surface?` | `'solid' \| 'glass'` | 'solid' | Surface treatment — `'solid'` (default) or `'glass'` (translucent liquid-glass material). |
|
|
19
|
+
| `title` | `ReactNode` | — | Title text (required). |
|
|
20
|
+
| `description?` | `ReactNode` | — | Supporting description text under the title. |
|
|
21
|
+
| `icon?` | `ReactNode` | — | Override the default per-type icon. Defaults per type: - `success` → `TickIcon` - `error` → `CloseIcon` - `warning` → `AlertCircleIcon` - `alert` → `BellIcon` - `input` → `AlertCircleIcon` |
|
|
22
|
+
| `actions?` | `ReactNode` | — | Action buttons rendered in the actions row. Typically one or two `<Button />` elements — the wrapping row's layout is selected automatically based on `type`, or explicitly via `actionsLayout` if you need to override (e.g. a warning popup with two side-by-side buttons). |
|
|
23
|
+
| `actionsLayout?` | `'single' \| 'pair' \| 'stacked'` | — | Override the default actions-row layout. - `single` → one centered button (default for success / error / warning) - `pair` → two side-by-side buttons with `gap-md`, both `flex-1` (default for `alert`) - `stacked` → vertical stack of full-width buttons (default for `input`) |
|
|
24
|
+
| `children?` | `ReactNode` | — | Extra content rendered between the header and the actions row. Used by the `input` type for the radio-row list. |
|
|
25
|
+
| `footer?` | `ReactNode` | — | Footer content rendered under the actions row. Used by the `input` type for the consent / Privacy Policy text. |
|
|
26
|
+
| `dir?` | `'ltr' \| 'rtl'` | — | Text direction. Inherits from the document when omitted. |
|
|
27
|
+
|
|
28
|
+
Also accepts standard `<div>` HTML attributes (`className`, `style`, `onClick`, `aria-*`, …) — except: `title`, `dir`.
|
|
29
|
+
|
|
30
|
+
## Options (allowed values)
|
|
31
|
+
- `type`: `'success'` \| `'error'` \| `'warning'` \| `'alert'` \| `'input'` — Visual/semantic variant — drives icon, featured-icon background, and layout differences.
|
|
32
|
+
- `surface`: `'solid'` \| `'glass'` — Surface treatment of the popup card.
|
|
33
|
+
- `'solid'` (default) — opaque subtle background with a hairline border.
|
|
34
|
+
- `'glass'` — translucent liquid-glass material (blurred backdrop +
|
|
35
|
+
beveled edge highlight). Reads best placed over imagery or color.
|
|
36
|
+
|
|
37
|
+
The visual is provided by the shared `.glass-surface` utility, so it is
|
|
38
|
+
theme-aware (light / dark) and identical across every component that
|
|
39
|
+
exposes a `surface` prop.
|
|
40
|
+
- `actionsLayout`: `'single'` \| `'pair'` \| `'stacked'` — Override the default actions-row layout.
|
|
41
|
+
- `single` → one centered button (default for success / error / warning)
|
|
42
|
+
- `pair` → two side-by-side buttons with `gap-md`, both `flex-1`
|
|
43
|
+
(default for `alert`)
|
|
44
|
+
- `stacked` → vertical stack of full-width buttons (default for `input`)
|
|
45
|
+
- `dir`: `'ltr'` \| `'rtl'` — Text direction. Inherits from the document when omitted.
|
|
46
|
+
|
|
47
|
+
## Deprecated props
|
|
48
|
+
Do not use in new code:
|
|
49
|
+
- `rtl`
|
|
50
|
+
|
|
51
|
+
## Accessibility
|
|
52
|
+
- Don't remove the focus ring or replace interactive elements with `div`s; keep the control keyboard-operable.
|
|
53
|
+
- For contrast, keyboard patterns and RTL rules, call `get_foundations` (`accessibility`, `rtl`).
|
|
54
|
+
|
|
55
|
+
## Design tokens used
|
|
56
|
+
Keep these consistent (resolve values with `get_tokens`):
|
|
57
|
+
- `var(--ds-color-bg-brand)`
|
|
58
|
+
- `var(--ds-color-bg-danger-strong)`
|
|
59
|
+
- `var(--ds-color-bg-subtle)`
|
|
60
|
+
- `var(--ds-color-bg-success-strong)`
|
|
61
|
+
- `var(--ds-color-bg-warning-strong)`
|
|
62
|
+
- `var(--ds-color-border-on-default)`
|
|
63
|
+
- `var(--ds-color-border-warning-subtle)`
|
|
64
|
+
- `var(--ds-color-icon-brand-subtle)`
|
|
65
|
+
- `var(--ds-color-icon-oncolor)`
|
|
66
|
+
- `var(--ds-color-text-display)`
|
|
67
|
+
- `var(--ds-color-text-paragraph)`
|
|
68
|
+
- `var(--ds-color-text-paragraph-muted)`
|
|
69
|
+
- `var(--ds-radius-full)`
|
|
70
|
+
- `var(--ds-radius-xl)`
|
|
71
|
+
- `var(--ds-spacing-3xl)`
|
|
72
|
+
- `var(--ds-spacing-7xl)`
|
|
73
|
+
- `var(--ds-spacing-lg)`
|
|
74
|
+
- `var(--ds-spacing-md)`
|
|
75
|
+
- `var(--ds-spacing-none)`
|
|
76
|
+
- `var(--ds-spacing-xl)`
|
|
77
|
+
- `var(--ds-text-leading-line-heights-text-md)`
|
|
78
|
+
- `var(--ds-text-leading-line-heights-text-sm)`
|
|
79
|
+
- `var(--ds-text-leading-line-heights-text-xl)`
|
|
80
|
+
|
|
81
|
+
## AI usage guidance
|
|
82
|
+
When generating UI:
|
|
83
|
+
- Install with `npx sdaia-ui@latest add notification-popup` (after `npx sdaia-ui@latest init`), then import `{ NotificationPopup }` from `@/components/ui/NotificationPopup`.
|
|
84
|
+
- NEVER run `npm install sdaia-ui` and NEVER `import` from the `sdaia-ui` package — it is a source-copying CLI, not a component library.
|
|
85
|
+
- Use only the documented option values listed under "Options".
|
|
86
|
+
- Pass icons via `<DgaIcon data={…} className="size-icon-sm" />` from `@platformscode/icons` only — see `get_foundations` (`icon-usage`). Never emoji, Lucide, or random icons (e.g. `pizza01Stroke` for dark mode).
|
|
87
|
+
- Pick one theme per screen: dark is `.theme-dark` (or `.dark`) on `<html>`; style surrounding layout with DS tokens (`get_tokens`), never hardcoded colors.
|