@refineui/react 0.0.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/dist/index.cjs +15530 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3905 -0
- package/dist/index.d.ts +3905 -0
- package/dist/index.js +15445 -0
- package/dist/index.js.map +1 -0
- package/dist/spec/README.md +95 -0
- package/dist/spec/components/accordion.json +126 -0
- package/dist/spec/components/alert.json +71 -0
- package/dist/spec/components/avatar.json +30 -0
- package/dist/spec/components/avatars.json +29 -0
- package/dist/spec/components/badge.json +41 -0
- package/dist/spec/components/box.json +16 -0
- package/dist/spec/components/breadcrumb.json +40 -0
- package/dist/spec/components/bubble.json +31 -0
- package/dist/spec/components/button.json +104 -0
- package/dist/spec/components/calendar.json +52 -0
- package/dist/spec/components/card.json +57 -0
- package/dist/spec/components/carousel.json +65 -0
- package/dist/spec/components/chart.json +34 -0
- package/dist/spec/components/checkbox.json +38 -0
- package/dist/spec/components/chip.json +65 -0
- package/dist/spec/components/command.json +65 -0
- package/dist/spec/components/container.json +16 -0
- package/dist/spec/components/dialog.json +95 -0
- package/dist/spec/components/divider.json +29 -0
- package/dist/spec/components/drawer.json +71 -0
- package/dist/spec/components/dropdown.json +64 -0
- package/dist/spec/components/field.json +31 -0
- package/dist/spec/components/footer.json +45 -0
- package/dist/spec/components/grid.json +17 -0
- package/dist/spec/components/input-otp.json +34 -0
- package/dist/spec/components/input.json +36 -0
- package/dist/spec/components/label.json +24 -0
- package/dist/spec/components/link.json +38 -0
- package/dist/spec/components/menu.json +67 -0
- package/dist/spec/components/navigation-menu.json +74 -0
- package/dist/spec/components/pagination.json +41 -0
- package/dist/spec/components/popover.json +42 -0
- package/dist/spec/components/progress-stepper.json +61 -0
- package/dist/spec/components/progress.json +28 -0
- package/dist/spec/components/radio.json +43 -0
- package/dist/spec/components/resizable.json +34 -0
- package/dist/spec/components/scroll-area.json +50 -0
- package/dist/spec/components/search-field.json +53 -0
- package/dist/spec/components/segmented-control.json +67 -0
- package/dist/spec/components/select.json +113 -0
- package/dist/spec/components/sidebar.json +45 -0
- package/dist/spec/components/skeleton.json +21 -0
- package/dist/spec/components/slider.json +43 -0
- package/dist/spec/components/spacer.json +16 -0
- package/dist/spec/components/spin-button.json +45 -0
- package/dist/spec/components/spinner.json +35 -0
- package/dist/spec/components/stack.json +16 -0
- package/dist/spec/components/stepper.json +62 -0
- package/dist/spec/components/switch.json +52 -0
- package/dist/spec/components/table.json +17 -0
- package/dist/spec/components/tabs.json +77 -0
- package/dist/spec/components/tag.json +65 -0
- package/dist/spec/components/text.json +16 -0
- package/dist/spec/components/textarea.json +22 -0
- package/dist/spec/components/toast.json +45 -0
- package/dist/spec/components/tooltip.json +31 -0
- package/dist/spec/components/tree.json +80 -0
- package/dist/spec/contract-index.json +721 -0
- package/dist/spec/manifest.json +686 -0
- package/dist/spec/schema/component-spec.schema.json +203 -0
- package/dist/spec/token-graph.json +6605 -0
- package/dist/spec/token-trace-v2.json +5170 -0
- package/package.json +54 -0
- package/refineui.css +2275 -0
- package/spec/README.md +95 -0
- package/spec/components/accordion.json +126 -0
- package/spec/components/alert.json +71 -0
- package/spec/components/avatar.json +30 -0
- package/spec/components/avatars.json +29 -0
- package/spec/components/badge.json +41 -0
- package/spec/components/box.json +16 -0
- package/spec/components/breadcrumb.json +40 -0
- package/spec/components/bubble.json +31 -0
- package/spec/components/button.json +104 -0
- package/spec/components/calendar.json +52 -0
- package/spec/components/card.json +57 -0
- package/spec/components/carousel.json +65 -0
- package/spec/components/chart.json +34 -0
- package/spec/components/checkbox.json +38 -0
- package/spec/components/chip.json +65 -0
- package/spec/components/command.json +65 -0
- package/spec/components/container.json +16 -0
- package/spec/components/dialog.json +95 -0
- package/spec/components/divider.json +29 -0
- package/spec/components/drawer.json +71 -0
- package/spec/components/dropdown.json +64 -0
- package/spec/components/field.json +31 -0
- package/spec/components/footer.json +45 -0
- package/spec/components/grid.json +17 -0
- package/spec/components/input-otp.json +34 -0
- package/spec/components/input.json +36 -0
- package/spec/components/label.json +24 -0
- package/spec/components/link.json +38 -0
- package/spec/components/menu.json +67 -0
- package/spec/components/navigation-menu.json +74 -0
- package/spec/components/pagination.json +41 -0
- package/spec/components/popover.json +42 -0
- package/spec/components/progress-stepper.json +61 -0
- package/spec/components/progress.json +28 -0
- package/spec/components/radio.json +43 -0
- package/spec/components/resizable.json +34 -0
- package/spec/components/scroll-area.json +50 -0
- package/spec/components/search-field.json +53 -0
- package/spec/components/segmented-control.json +67 -0
- package/spec/components/select.json +113 -0
- package/spec/components/sidebar.json +45 -0
- package/spec/components/skeleton.json +21 -0
- package/spec/components/slider.json +43 -0
- package/spec/components/spacer.json +16 -0
- package/spec/components/spin-button.json +45 -0
- package/spec/components/spinner.json +35 -0
- package/spec/components/stack.json +16 -0
- package/spec/components/stepper.json +62 -0
- package/spec/components/switch.json +52 -0
- package/spec/components/table.json +17 -0
- package/spec/components/tabs.json +77 -0
- package/spec/components/tag.json +65 -0
- package/spec/components/text.json +16 -0
- package/spec/components/textarea.json +22 -0
- package/spec/components/toast.json +45 -0
- package/spec/components/tooltip.json +31 -0
- package/spec/components/tree.json +80 -0
- package/spec/manifest.json +686 -0
- package/spec/schema/component-spec.schema.json +203 -0
package/spec/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Component Spec — Contract Layer
|
|
2
|
+
|
|
3
|
+
**Status: catalog (v1.1)** — all shipped components have Spec JSON; interactive components declare a11y / keyboard / focus / environment where implementation + CSS already satisfy Doctor.
|
|
4
|
+
|
|
5
|
+
Source of truth for behavior/DOM contracts consumed by Doctor, MCP, and Docs.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
packages/react/spec/
|
|
9
|
+
├── manifest.json
|
|
10
|
+
├── schema/component-spec.schema.json
|
|
11
|
+
└── components/*.json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Build copies this tree to `packages/react/dist/spec/` and adds `token-trace-v2.json`, `token-graph.json`, `contract-index.json`.
|
|
15
|
+
|
|
16
|
+
## Boundaries
|
|
17
|
+
|
|
18
|
+
| Owns | Does not own |
|
|
19
|
+
|------|----------------|
|
|
20
|
+
| anatomy, variants, states | Tailwind classes / hex |
|
|
21
|
+
| accessibility, keyboard, focus | Usage guides / WCAG essays |
|
|
22
|
+
| layout (logical / RTL) | Full bidirectional layout proof |
|
|
23
|
+
| environment (`forced-colors`, `dir`, …) | Full High Contrast audit |
|
|
24
|
+
| `recipe` string reference | Recipe visual implementation |
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
Component Spec → Doctor (validate declared contracts only)
|
|
28
|
+
→ MCP (explain)
|
|
29
|
+
→ Docs SpecRenderer (render declared fields only)
|
|
30
|
+
recipe ref → SlotRecipe / defineRecipe (visual)
|
|
31
|
+
→ Docs ComponentPreview + TokenInspector
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Spec fields (v1)
|
|
35
|
+
|
|
36
|
+
| Field | Purpose |
|
|
37
|
+
|-------|---------|
|
|
38
|
+
| `anatomy` | Part → `data-refineui` slot |
|
|
39
|
+
| `variants` | Axis → allowed values |
|
|
40
|
+
| `states` | pseudo / component / availability / environment |
|
|
41
|
+
| `dom` | Per-slot state overrides |
|
|
42
|
+
| `accessibility` | Slot a11y contracts |
|
|
43
|
+
| `keyboard` | Key → action (`native` allowed) |
|
|
44
|
+
| `focus` | visual + behavior |
|
|
45
|
+
| `layout` | `direction: logical`, `rtl` |
|
|
46
|
+
| `tokens.visual` | Component token prefix |
|
|
47
|
+
| `recipe` | Recipe name reference |
|
|
48
|
+
|
|
49
|
+
## Doctor rules (contract)
|
|
50
|
+
|
|
51
|
+
Doctor validates **declared** fields only. Catalog specs start with anatomy (+ variants / `data-state` where known). Declaring `focus`, `keyboard`, `accessibility`, `layout`, or `forced-colors` opts that component into the matching Doctor rule.
|
|
52
|
+
|
|
53
|
+
| Rule | Validates |
|
|
54
|
+
|------|-----------|
|
|
55
|
+
| `component-state-contract` | `data-state` literals vs Spec |
|
|
56
|
+
| `accessibility-contract` | required attrs, types, relationships, native |
|
|
57
|
+
| `keyboard-contract` | key handlers (skips `native`) |
|
|
58
|
+
| `focus-contract` | `:focus-visible` + trap/initial/return patterns |
|
|
59
|
+
| `environment-contract` | `forced-colors` + `prefers-contrast` CSS blocks + slots |
|
|
60
|
+
| `layout-contract` | no physical left/right utilities |
|
|
61
|
+
| `state-contract` | `data-refineui` / focus preference |
|
|
62
|
+
| `motion-contract` | reduced-motion / motion roles |
|
|
63
|
+
|
|
64
|
+
## Coverage
|
|
65
|
+
|
|
66
|
+
| Surface | Scope |
|
|
67
|
+
|---------|--------|
|
|
68
|
+
| Spec JSON + Docs SpecRenderer | All catalog components in `manifest.json` |
|
|
69
|
+
| Deep a11y / keyboard / focus / environment / layout | Interactive + layout-clean components (Doctor-validated) |
|
|
70
|
+
| Docs ComponentPreview | alert, button, accordion, dialog, badge, switch, checkbox, tabs, select, toast, spinner, chip, tag, segmented-control |
|
|
71
|
+
| SlotRecipe (`defineSlotRecipe`) | alert, accordion, dialog, segmented-control |
|
|
72
|
+
| Single recipe (`defineRecipe`) | button, badge, toast, chip |
|
|
73
|
+
| Docs TokenInspector | alert, button, accordion, dialog, badge, toast, tabs, chip, tag, segmented-control, switch, checkbox, select, spinner |
|
|
74
|
+
|
|
75
|
+
Environment: `forced-colors` + `prefers-contrast` (CSS in `refineui.css`; Doctor validates both).
|
|
76
|
+
|
|
77
|
+
### Intentional physical leftovers
|
|
78
|
+
|
|
79
|
+
Doctor `layout-contract` rejects Tailwind `left`/`right`/`pl`/`ml`/`text-left` utilities. These remain **intentional** (not flagged or deferred):
|
|
80
|
+
|
|
81
|
+
| Pattern | Where | Why |
|
|
82
|
+
|---------|-------|-----|
|
|
83
|
+
| `-translate-x-1/2` + `start-1/2` | PopOver, Resizable | Horizontal centering; no logical translate utility |
|
|
84
|
+
| `left` / `right` / `translateX(-50%)` | Tooltip panel/arrow | MCP position×align map still physical CSS |
|
|
85
|
+
| `-translate-x-1/2` | Chart x-axis labels | Tick centering under measured SVG positions |
|
|
86
|
+
| Measured `translateX(...)` | Drawer overlay, NavigationMenu indicator | Runtime geometry, not static utilities |
|
|
87
|
+
|
|
88
|
+
Switch thumb travel uses `translateX` in `refineui.css` with `[dir="rtl"]` negation.
|
|
89
|
+
|
|
90
|
+
Regenerate baseline then deepen:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
node packages/react/scripts/expand-component-specs.mjs
|
|
94
|
+
node packages/react/scripts/deepen-component-specs.mjs
|
|
95
|
+
```
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "accordion",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Accordion",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "accordion",
|
|
8
|
+
"item": "accordion-item",
|
|
9
|
+
"trigger": "accordion-trigger",
|
|
10
|
+
"panel": "accordion-panel",
|
|
11
|
+
"content": "accordion-content"
|
|
12
|
+
},
|
|
13
|
+
"variants": {
|
|
14
|
+
"size": [
|
|
15
|
+
"sm",
|
|
16
|
+
"md",
|
|
17
|
+
"lg"
|
|
18
|
+
],
|
|
19
|
+
"type": [
|
|
20
|
+
"single",
|
|
21
|
+
"multiple"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"states": {
|
|
25
|
+
"pseudo": [
|
|
26
|
+
"focus-visible"
|
|
27
|
+
],
|
|
28
|
+
"component": {
|
|
29
|
+
"data-state": [
|
|
30
|
+
"open",
|
|
31
|
+
"closed"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"environment": [
|
|
35
|
+
"forced-colors",
|
|
36
|
+
"dir",
|
|
37
|
+
"prefers-contrast"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"attributes": {
|
|
41
|
+
"data-refineui": "accordion"
|
|
42
|
+
},
|
|
43
|
+
"dom": {
|
|
44
|
+
"accordion-item": {
|
|
45
|
+
"states": {
|
|
46
|
+
"component": {
|
|
47
|
+
"data-state": [
|
|
48
|
+
"open",
|
|
49
|
+
"closed"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"accordion-trigger": {
|
|
55
|
+
"states": {
|
|
56
|
+
"pseudo": [
|
|
57
|
+
"focus-visible"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"accessibility": {
|
|
63
|
+
"accordion-trigger": {
|
|
64
|
+
"element": "button",
|
|
65
|
+
"role": "button",
|
|
66
|
+
"requiredAttributes": {
|
|
67
|
+
"aria-expanded": {
|
|
68
|
+
"required": true,
|
|
69
|
+
"type": "boolean"
|
|
70
|
+
},
|
|
71
|
+
"aria-controls": {
|
|
72
|
+
"required": true,
|
|
73
|
+
"type": "string"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"relationships": [
|
|
77
|
+
{
|
|
78
|
+
"attribute": "aria-controls",
|
|
79
|
+
"target": "accordion-panel",
|
|
80
|
+
"targetAttribute": "id",
|
|
81
|
+
"required": true
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"accordion-panel": {
|
|
86
|
+
"role": "region",
|
|
87
|
+
"requiredAttributes": {
|
|
88
|
+
"aria-labelledby": {
|
|
89
|
+
"required": true,
|
|
90
|
+
"type": "string"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"relationships": [
|
|
94
|
+
{
|
|
95
|
+
"attribute": "aria-labelledby",
|
|
96
|
+
"target": "accordion-trigger",
|
|
97
|
+
"targetAttribute": "id",
|
|
98
|
+
"required": true
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"keyboard": {
|
|
104
|
+
"ArrowDown": "next-trigger",
|
|
105
|
+
"ArrowUp": "previous-trigger",
|
|
106
|
+
"Home": "first-trigger",
|
|
107
|
+
"End": "last-trigger"
|
|
108
|
+
},
|
|
109
|
+
"focus": {
|
|
110
|
+
"visual": {
|
|
111
|
+
"required": true,
|
|
112
|
+
"selector": ":focus-visible"
|
|
113
|
+
},
|
|
114
|
+
"behavior": {
|
|
115
|
+
"roving": false
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"layout": {
|
|
119
|
+
"direction": "logical",
|
|
120
|
+
"rtl": true
|
|
121
|
+
},
|
|
122
|
+
"recipe": "accordion",
|
|
123
|
+
"tokens": {
|
|
124
|
+
"visual": "accordion"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "alert",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Alert",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "alert",
|
|
8
|
+
"icon": "alert-icon",
|
|
9
|
+
"content": "alert-content",
|
|
10
|
+
"row": "alert-row",
|
|
11
|
+
"body": "alert-body",
|
|
12
|
+
"title": "alert-title",
|
|
13
|
+
"description": "alert-description",
|
|
14
|
+
"actions": "alert-actions",
|
|
15
|
+
"action": "alert-action",
|
|
16
|
+
"close": "alert-close"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"variant": [
|
|
20
|
+
"default",
|
|
21
|
+
"info",
|
|
22
|
+
"success",
|
|
23
|
+
"warning",
|
|
24
|
+
"danger",
|
|
25
|
+
"custom"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"states": {
|
|
29
|
+
"pseudo": [
|
|
30
|
+
"focus-visible"
|
|
31
|
+
],
|
|
32
|
+
"environment": [
|
|
33
|
+
"forced-colors",
|
|
34
|
+
"dir",
|
|
35
|
+
"prefers-contrast"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"attributes": {
|
|
39
|
+
"data-refineui": "alert",
|
|
40
|
+
"data-variant": "variant"
|
|
41
|
+
},
|
|
42
|
+
"dom": {
|
|
43
|
+
"alert": {
|
|
44
|
+
"states": {
|
|
45
|
+
"pseudo": [
|
|
46
|
+
"focus-visible"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"accessibility": {
|
|
52
|
+
"alert": {
|
|
53
|
+
"element": "div",
|
|
54
|
+
"role": "alert"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"focus": {
|
|
58
|
+
"visual": {
|
|
59
|
+
"required": true,
|
|
60
|
+
"selector": ":focus-visible"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"layout": {
|
|
64
|
+
"direction": "logical",
|
|
65
|
+
"rtl": true
|
|
66
|
+
},
|
|
67
|
+
"tokens": {
|
|
68
|
+
"visual": "alert"
|
|
69
|
+
},
|
|
70
|
+
"recipe": "alert"
|
|
71
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "avatar",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Avatar",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "avatar"
|
|
8
|
+
},
|
|
9
|
+
"attributes": {
|
|
10
|
+
"data-refineui": "avatar"
|
|
11
|
+
},
|
|
12
|
+
"variants": {
|
|
13
|
+
"size": [
|
|
14
|
+
"xs",
|
|
15
|
+
"sm",
|
|
16
|
+
"md",
|
|
17
|
+
"lg",
|
|
18
|
+
"xl"
|
|
19
|
+
],
|
|
20
|
+
"layout": [
|
|
21
|
+
"image",
|
|
22
|
+
"icon",
|
|
23
|
+
"initials"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"layout": {
|
|
27
|
+
"direction": "logical",
|
|
28
|
+
"rtl": true
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "avatars",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Avatars",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "avatars"
|
|
8
|
+
},
|
|
9
|
+
"attributes": {
|
|
10
|
+
"data-refineui": "avatars"
|
|
11
|
+
},
|
|
12
|
+
"variants": {
|
|
13
|
+
"size": [
|
|
14
|
+
"xs",
|
|
15
|
+
"sm",
|
|
16
|
+
"md",
|
|
17
|
+
"lg",
|
|
18
|
+
"xl"
|
|
19
|
+
],
|
|
20
|
+
"layout": [
|
|
21
|
+
"stack",
|
|
22
|
+
"spread"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"layout": {
|
|
26
|
+
"direction": "logical",
|
|
27
|
+
"rtl": true
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "badge",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Badge",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "badge"
|
|
8
|
+
},
|
|
9
|
+
"attributes": {
|
|
10
|
+
"data-refineui": "badge"
|
|
11
|
+
},
|
|
12
|
+
"variants": {
|
|
13
|
+
"variant": [
|
|
14
|
+
"default",
|
|
15
|
+
"neutral",
|
|
16
|
+
"outline",
|
|
17
|
+
"success",
|
|
18
|
+
"warning",
|
|
19
|
+
"danger"
|
|
20
|
+
],
|
|
21
|
+
"layout": [
|
|
22
|
+
"label",
|
|
23
|
+
"number"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"layout": {
|
|
27
|
+
"direction": "logical",
|
|
28
|
+
"rtl": true
|
|
29
|
+
},
|
|
30
|
+
"recipe": "badge",
|
|
31
|
+
"tokens": {
|
|
32
|
+
"visual": "badge"
|
|
33
|
+
},
|
|
34
|
+
"states": {
|
|
35
|
+
"environment": [
|
|
36
|
+
"forced-colors",
|
|
37
|
+
"dir",
|
|
38
|
+
"prefers-contrast"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "box",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Box",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "box"
|
|
8
|
+
},
|
|
9
|
+
"attributes": {
|
|
10
|
+
"data-refineui": "box"
|
|
11
|
+
},
|
|
12
|
+
"layout": {
|
|
13
|
+
"direction": "logical",
|
|
14
|
+
"rtl": true
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "breadcrumb",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Breadcrumb",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "breadcrumb",
|
|
8
|
+
"ellipsis": "breadcrumb-ellipsis",
|
|
9
|
+
"link": "breadcrumb-link",
|
|
10
|
+
"page": "breadcrumb-page"
|
|
11
|
+
},
|
|
12
|
+
"attributes": {
|
|
13
|
+
"data-refineui": "breadcrumb"
|
|
14
|
+
},
|
|
15
|
+
"states": {
|
|
16
|
+
"pseudo": [
|
|
17
|
+
"focus-visible"
|
|
18
|
+
],
|
|
19
|
+
"environment": [
|
|
20
|
+
"forced-colors",
|
|
21
|
+
"dir"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"accessibility": {
|
|
25
|
+
"breadcrumb-page": {
|
|
26
|
+
"element": "div",
|
|
27
|
+
"role": "link"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"focus": {
|
|
31
|
+
"visual": {
|
|
32
|
+
"required": true,
|
|
33
|
+
"selector": ":focus-visible"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"layout": {
|
|
37
|
+
"direction": "logical",
|
|
38
|
+
"rtl": true
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "bubble",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Bubble",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "bubble",
|
|
8
|
+
"content": "bubble-content",
|
|
9
|
+
"group": "bubble-group",
|
|
10
|
+
"reactions": "bubble-reactions",
|
|
11
|
+
"surface": "bubble-surface"
|
|
12
|
+
},
|
|
13
|
+
"attributes": {
|
|
14
|
+
"data-refineui": "bubble"
|
|
15
|
+
},
|
|
16
|
+
"variants": {
|
|
17
|
+
"variant": [
|
|
18
|
+
"default",
|
|
19
|
+
"secondary",
|
|
20
|
+
"muted",
|
|
21
|
+
"tinted",
|
|
22
|
+
"outline",
|
|
23
|
+
"ghost",
|
|
24
|
+
"destructive"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"layout": {
|
|
28
|
+
"direction": "logical",
|
|
29
|
+
"rtl": true
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "button",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Button",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "button",
|
|
8
|
+
"icon": "optional",
|
|
9
|
+
"label": "required"
|
|
10
|
+
},
|
|
11
|
+
"variants": {
|
|
12
|
+
"variant": [
|
|
13
|
+
"primary",
|
|
14
|
+
"secondary",
|
|
15
|
+
"outline",
|
|
16
|
+
"ghost"
|
|
17
|
+
],
|
|
18
|
+
"size": [
|
|
19
|
+
"sm",
|
|
20
|
+
"md",
|
|
21
|
+
"lg"
|
|
22
|
+
],
|
|
23
|
+
"layout": [
|
|
24
|
+
"label",
|
|
25
|
+
"icon"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"states": {
|
|
29
|
+
"pseudo": [
|
|
30
|
+
"hover",
|
|
31
|
+
"active",
|
|
32
|
+
"focus-visible"
|
|
33
|
+
],
|
|
34
|
+
"availability": [
|
|
35
|
+
"disabled",
|
|
36
|
+
"aria-disabled",
|
|
37
|
+
"data-inactive"
|
|
38
|
+
],
|
|
39
|
+
"component": {
|
|
40
|
+
"data-state": [
|
|
41
|
+
"loading"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"environment": [
|
|
45
|
+
"forced-colors",
|
|
46
|
+
"dir",
|
|
47
|
+
"prefers-contrast"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"attributes": {
|
|
51
|
+
"data-refineui": "button"
|
|
52
|
+
},
|
|
53
|
+
"dom": {
|
|
54
|
+
"button": {
|
|
55
|
+
"states": {
|
|
56
|
+
"pseudo": [
|
|
57
|
+
"hover",
|
|
58
|
+
"active",
|
|
59
|
+
"focus-visible"
|
|
60
|
+
],
|
|
61
|
+
"availability": [
|
|
62
|
+
"disabled",
|
|
63
|
+
"aria-disabled",
|
|
64
|
+
"data-inactive"
|
|
65
|
+
],
|
|
66
|
+
"component": {
|
|
67
|
+
"data-state": [
|
|
68
|
+
"loading"
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"accessibility": {
|
|
75
|
+
"button": {
|
|
76
|
+
"element": "button",
|
|
77
|
+
"native": true
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"keyboard": {
|
|
81
|
+
"Enter": {
|
|
82
|
+
"action": "activate",
|
|
83
|
+
"native": true
|
|
84
|
+
},
|
|
85
|
+
"Space": {
|
|
86
|
+
"action": "activate",
|
|
87
|
+
"native": true
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"focus": {
|
|
91
|
+
"visual": {
|
|
92
|
+
"required": true,
|
|
93
|
+
"selector": ":focus-visible"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"layout": {
|
|
97
|
+
"direction": "logical",
|
|
98
|
+
"rtl": true
|
|
99
|
+
},
|
|
100
|
+
"tokens": {
|
|
101
|
+
"visual": "button"
|
|
102
|
+
},
|
|
103
|
+
"recipe": "button"
|
|
104
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "calendar",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Calendar",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "calendar",
|
|
8
|
+
"day": "calendar-day"
|
|
9
|
+
},
|
|
10
|
+
"attributes": {
|
|
11
|
+
"data-refineui": "calendar"
|
|
12
|
+
},
|
|
13
|
+
"states": {
|
|
14
|
+
"pseudo": [
|
|
15
|
+
"focus-visible"
|
|
16
|
+
],
|
|
17
|
+
"environment": [
|
|
18
|
+
"forced-colors",
|
|
19
|
+
"dir"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"accessibility": {
|
|
23
|
+
"calendar": {
|
|
24
|
+
"element": "div",
|
|
25
|
+
"role": "grid"
|
|
26
|
+
},
|
|
27
|
+
"calendar-day": {
|
|
28
|
+
"element": "button",
|
|
29
|
+
"role": "gridcell"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"keyboard": {
|
|
33
|
+
"Enter": {
|
|
34
|
+
"action": "activate",
|
|
35
|
+
"native": true
|
|
36
|
+
},
|
|
37
|
+
"Space": {
|
|
38
|
+
"action": "activate",
|
|
39
|
+
"native": true
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"focus": {
|
|
43
|
+
"visual": {
|
|
44
|
+
"required": true,
|
|
45
|
+
"selector": ":focus-visible"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"layout": {
|
|
49
|
+
"direction": "logical",
|
|
50
|
+
"rtl": true
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schema/component-spec.schema.json",
|
|
3
|
+
"component": "card",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"export": "Card",
|
|
6
|
+
"anatomy": {
|
|
7
|
+
"root": "card",
|
|
8
|
+
"action": "card-action",
|
|
9
|
+
"content": "card-content",
|
|
10
|
+
"description": "card-description",
|
|
11
|
+
"footer": "card-footer",
|
|
12
|
+
"header": "card-header",
|
|
13
|
+
"header_main": "card-header-main",
|
|
14
|
+
"title": "card-title"
|
|
15
|
+
},
|
|
16
|
+
"attributes": {
|
|
17
|
+
"data-refineui": "card"
|
|
18
|
+
},
|
|
19
|
+
"variants": {
|
|
20
|
+
"variant": [
|
|
21
|
+
"elevated",
|
|
22
|
+
"outlined"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"states": {
|
|
26
|
+
"component": {
|
|
27
|
+
"data-state": [
|
|
28
|
+
"default",
|
|
29
|
+
"hover",
|
|
30
|
+
"pressed",
|
|
31
|
+
"disabled"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"environment": [
|
|
35
|
+
"forced-colors",
|
|
36
|
+
"dir"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"dom": {
|
|
40
|
+
"card": {
|
|
41
|
+
"states": {
|
|
42
|
+
"component": {
|
|
43
|
+
"data-state": [
|
|
44
|
+
"default",
|
|
45
|
+
"hover",
|
|
46
|
+
"pressed",
|
|
47
|
+
"disabled"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"layout": {
|
|
54
|
+
"direction": "logical",
|
|
55
|
+
"rtl": true
|
|
56
|
+
}
|
|
57
|
+
}
|