@nexus-cross/design-system 1.0.14 → 1.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/claude-rules/nexus/CLAUDE.md +85 -0
- package/claude-rules/nexus/commands/nexus-audit.md +79 -0
- package/claude-rules/nexus/commands/nexus-component-map.md +85 -0
- package/claude-rules/nexus/commands/nexus-token-check.md +68 -0
- package/claude-rules/nexus/skills/nexus-design-system/SKILL.md +92 -0
- package/cursor-rules/nexus-ui-api.mdc +910 -41
- package/cursor-rules/nexus-ui-decisions.mdc +263 -0
- package/dist/accordion.js +0 -1
- package/dist/accordion.mjs +0 -1
- package/dist/alert.js +0 -1
- package/dist/alert.mjs +0 -1
- package/dist/avatar.js +0 -1
- package/dist/avatar.mjs +0 -1
- package/dist/badge.js +0 -1
- package/dist/badge.mjs +0 -1
- package/dist/breadcrumb.js +0 -1
- package/dist/breadcrumb.mjs +0 -1
- package/dist/button.js +0 -1
- package/dist/button.mjs +0 -1
- package/dist/carousel.js +0 -1
- package/dist/carousel.mjs +0 -1
- package/dist/checkbox.js +0 -1
- package/dist/checkbox.mjs +0 -1
- package/dist/chip.js +0 -1
- package/dist/chip.mjs +0 -1
- package/dist/chunks/chunk-2Z52NPWB.js +78 -0
- package/dist/chunks/chunk-3SCSND6S.js +7 -0
- package/dist/chunks/chunk-46P52MFM.mjs +56 -0
- package/dist/chunks/chunk-AG2UJPFX.mjs +621 -0
- package/dist/chunks/{chunk-33UFQJIO.mjs → chunk-BJMXZJWO.mjs} +16 -5
- package/dist/chunks/{chunk-YZV6FWE7.js → chunk-JLDQNDFT.js} +16 -5
- package/dist/chunks/{chunk-K574BYHQ.js → chunk-K3CK7NTP.js} +22 -4
- package/dist/chunks/{chunk-Z4YM7LU3.mjs → chunk-PIGHBDK5.mjs} +22 -4
- package/dist/chunks/chunk-QWK4CLS2.mjs +5 -0
- package/dist/chunks/chunk-RC2Y4UH7.js +648 -0
- package/dist/chunks/{chunk-PEIEVKD5.js → chunk-RCIBLLSF.js} +11 -12
- package/dist/chunks/{chunk-K2TBLM3F.mjs → chunk-THBE27U3.mjs} +11 -12
- package/dist/client-only.js +0 -1
- package/dist/client-only.mjs +0 -1
- package/dist/combobox.js +28 -0
- package/dist/combobox.mjs +3 -0
- package/dist/components/Combobox.d.ts +93 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/DataGrid.d.ts +44 -0
- package/dist/components/DataGrid.d.ts.map +1 -0
- package/dist/components/DataList.d.ts +3 -1
- package/dist/components/DataList.d.ts.map +1 -1
- package/dist/components/RadioGroup.d.ts +4 -0
- package/dist/components/RadioGroup.d.ts.map +1 -1
- package/dist/components/ToggleGroup.d.ts +2 -1
- package/dist/components/ToggleGroup.d.ts.map +1 -1
- package/dist/countdown.js +0 -1
- package/dist/countdown.mjs +0 -1
- package/dist/counter.js +0 -1
- package/dist/counter.mjs +0 -1
- package/dist/data-grid.js +14 -0
- package/dist/data-grid.mjs +5 -0
- package/dist/data-list.js +2 -3
- package/dist/data-list.mjs +1 -2
- package/dist/date-picker.js +0 -1
- package/dist/date-picker.mjs +0 -1
- package/dist/divider.js +0 -1
- package/dist/divider.mjs +0 -1
- package/dist/drawer.js +0 -1
- package/dist/drawer.mjs +0 -1
- package/dist/dropdown-menu.js +0 -1
- package/dist/dropdown-menu.mjs +0 -1
- package/dist/ellipsis.js +0 -1
- package/dist/ellipsis.mjs +0 -1
- package/dist/empty-state.js +0 -1
- package/dist/empty-state.mjs +0 -1
- package/dist/error-boundary.js +0 -1
- package/dist/error-boundary.mjs +0 -1
- package/dist/hooks/useCheckDevice.js +0 -1
- package/dist/hooks/useCheckDevice.mjs +0 -1
- package/dist/hooks/useClickOutside.js +0 -1
- package/dist/hooks/useClickOutside.mjs +0 -1
- package/dist/hooks/useDraggableBottomSheet.js +0 -1
- package/dist/hooks/useDraggableBottomSheet.mjs +0 -1
- package/dist/hooks/useDraggableWindow.js +0 -1
- package/dist/hooks/useDraggableWindow.mjs +0 -1
- package/dist/hooks/useInView.js +0 -1
- package/dist/hooks/useInView.mjs +0 -1
- package/dist/hooks/useModal.js +0 -1
- package/dist/hooks/useModal.mjs +0 -1
- package/dist/image-upload.js +0 -1
- package/dist/image-upload.mjs +0 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +101 -85
- package/dist/index.mjs +11 -11
- package/dist/infinite-scroll.js +0 -1
- package/dist/infinite-scroll.mjs +0 -1
- package/dist/marquee.js +0 -1
- package/dist/marquee.mjs +0 -1
- package/dist/modal/index.js +11 -12
- package/dist/modal/index.mjs +2 -3
- package/dist/number-input.js +0 -1
- package/dist/number-input.mjs +0 -1
- package/dist/nx-image.js +0 -1
- package/dist/nx-image.mjs +0 -1
- package/dist/pagination.js +0 -1
- package/dist/pagination.mjs +0 -1
- package/dist/popover.js +0 -1
- package/dist/popover.mjs +0 -1
- package/dist/price-input.js +0 -1
- package/dist/price-input.mjs +0 -1
- package/dist/progress.js +0 -1
- package/dist/progress.mjs +0 -1
- package/dist/radio-group.js +5 -6
- package/dist/radio-group.mjs +1 -2
- package/dist/schemas/_all.json +353 -117
- package/dist/schemas/accordion.d.ts.map +1 -1
- package/dist/schemas/accordion.json +1 -1
- package/dist/schemas/alert.d.ts.map +1 -1
- package/dist/schemas/alert.json +1 -1
- package/dist/schemas/avatar.d.ts.map +1 -1
- package/dist/schemas/avatar.json +1 -1
- package/dist/schemas/badge.d.ts.map +1 -1
- package/dist/schemas/badge.json +1 -1
- package/dist/schemas/breadcrumb.d.ts.map +1 -1
- package/dist/schemas/breadcrumb.json +1 -1
- package/dist/schemas/button.d.ts.map +1 -1
- package/dist/schemas/button.json +1 -1
- package/dist/schemas/carousel.d.ts.map +1 -1
- package/dist/schemas/carousel.json +1 -1
- package/dist/schemas/checkBox.json +1 -1
- package/dist/schemas/checkbox.d.ts.map +1 -1
- package/dist/schemas/chip.d.ts.map +1 -1
- package/dist/schemas/chip.json +1 -1
- package/dist/schemas/client-only.d.ts.map +1 -1
- package/dist/schemas/clientOnly.json +1 -1
- package/dist/schemas/combobox.d.ts +108 -0
- package/dist/schemas/combobox.d.ts.map +1 -0
- package/dist/schemas/combobox.json +98 -0
- package/dist/schemas/comboboxOption.json +35 -0
- package/dist/schemas/comboboxOptionDescription.json +20 -0
- package/dist/schemas/comboboxOptionMeta.json +20 -0
- package/dist/schemas/countdown.d.ts.map +1 -1
- package/dist/schemas/countdown.json +1 -1
- package/dist/schemas/counter.d.ts.map +1 -1
- package/dist/schemas/counter.json +1 -1
- package/dist/schemas/data-grid.d.ts +74 -0
- package/dist/schemas/data-grid.d.ts.map +1 -0
- package/dist/schemas/data-list.d.ts.map +1 -1
- package/dist/schemas/dataGrid.json +102 -0
- package/dist/schemas/dataList.json +1 -1
- package/dist/schemas/date-picker.d.ts.map +1 -1
- package/dist/schemas/datePicker.json +1 -1
- package/dist/schemas/divider.d.ts.map +1 -1
- package/dist/schemas/divider.json +1 -1
- package/dist/schemas/drawer.d.ts.map +1 -1
- package/dist/schemas/drawer.json +1 -1
- package/dist/schemas/dropdown-menu.d.ts.map +1 -1
- package/dist/schemas/dropdownMenu.json +1 -1
- package/dist/schemas/ellipsis.d.ts.map +1 -1
- package/dist/schemas/ellipsis.json +1 -1
- package/dist/schemas/empty-state.d.ts.map +1 -1
- package/dist/schemas/emptyState.json +1 -1
- package/dist/schemas/error-boundary.d.ts.map +1 -1
- package/dist/schemas/errorBoundary.json +1 -1
- package/dist/schemas/image-upload.d.ts.map +1 -1
- package/dist/schemas/imageUpload.json +1 -1
- package/dist/schemas/index.d.ts +2 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/infinite-scroll.d.ts.map +1 -1
- package/dist/schemas/infiniteScroll.json +1 -1
- package/dist/schemas/marquee.d.ts.map +1 -1
- package/dist/schemas/marquee.json +1 -1
- package/dist/schemas/modal.d.ts.map +1 -1
- package/dist/schemas/modalTemplate.json +1 -1
- package/dist/schemas/number-input.d.ts.map +1 -1
- package/dist/schemas/numberInput.json +1 -1
- package/dist/schemas/nx-image.d.ts.map +1 -1
- package/dist/schemas/nxImage.json +1 -1
- package/dist/schemas/pagination.d.ts.map +1 -1
- package/dist/schemas/pagination.json +1 -1
- package/dist/schemas/popover.d.ts.map +1 -1
- package/dist/schemas/popover.json +1 -1
- package/dist/schemas/price-input.d.ts.map +1 -1
- package/dist/schemas/priceInput.json +1 -1
- package/dist/schemas/progress.d.ts.map +1 -1
- package/dist/schemas/progress.json +1 -1
- package/dist/schemas/radio-group.d.ts +9 -0
- package/dist/schemas/radio-group.d.ts.map +1 -1
- package/dist/schemas/radioGroup.json +10 -1
- package/dist/schemas/radioItem.json +11 -0
- package/dist/schemas/select.d.ts.map +1 -1
- package/dist/schemas/select.json +1 -1
- package/dist/schemas/skeleton.d.ts.map +1 -1
- package/dist/schemas/skeleton.json +1 -1
- package/dist/schemas/slider.d.ts.map +1 -1
- package/dist/schemas/slider.json +1 -1
- package/dist/schemas/spinner.d.ts.map +1 -1
- package/dist/schemas/spinner.json +1 -1
- package/dist/schemas/stepper.d.ts.map +1 -1
- package/dist/schemas/stepper.json +1 -1
- package/dist/schemas/switch.d.ts.map +1 -1
- package/dist/schemas/switch.json +1 -1
- package/dist/schemas/tab.d.ts.map +1 -1
- package/dist/schemas/tab.json +1 -1
- package/dist/schemas/table.d.ts.map +1 -1
- package/dist/schemas/table.json +1 -1
- package/dist/schemas/tableRow.json +1 -1
- package/dist/schemas/tag-input.d.ts.map +1 -1
- package/dist/schemas/tagInput.json +1 -1
- package/dist/schemas/tdColumn.json +1 -1
- package/dist/schemas/text-area.d.ts.map +1 -1
- package/dist/schemas/text-input.d.ts +2 -2
- package/dist/schemas/text-input.d.ts.map +1 -1
- package/dist/schemas/textArea.json +1 -1
- package/dist/schemas/textInput.json +1 -1
- package/dist/schemas/toast.d.ts.map +1 -1
- package/dist/schemas/toastOptions.json +1 -1
- package/dist/schemas/toaster.json +1 -1
- package/dist/schemas/toggle-group.d.ts +6 -3
- package/dist/schemas/toggle-group.d.ts.map +1 -1
- package/dist/schemas/toggleGroup.json +9 -3
- package/dist/schemas/tooltip.d.ts.map +1 -1
- package/dist/schemas/tooltip.json +1 -1
- package/dist/schemas/virtual-scroll.d.ts.map +1 -1
- package/dist/schemas/virtualGrid.json +1 -1
- package/dist/schemas/virtualList.json +1 -1
- package/dist/schemas.js +928 -66
- package/dist/schemas.mjs +924 -66
- package/dist/select.js +0 -1
- package/dist/select.mjs +0 -1
- package/dist/skeleton.js +0 -1
- package/dist/skeleton.mjs +0 -1
- package/dist/slider.js +0 -1
- package/dist/slider.mjs +0 -1
- package/dist/spinner.js +0 -1
- package/dist/spinner.mjs +0 -1
- package/dist/stepper.js +0 -1
- package/dist/stepper.mjs +0 -1
- package/dist/styles/.generated/built.d.ts +1 -1
- package/dist/styles/.generated/built.d.ts.map +1 -1
- package/dist/styles/layer.js +2 -3
- package/dist/styles/layer.mjs +1 -2
- package/dist/styles.css +484 -13
- package/dist/styles.js +2 -3
- package/dist/styles.layered.css +484 -13
- package/dist/styles.mjs +1 -2
- package/dist/switch.js +0 -1
- package/dist/switch.mjs +0 -1
- package/dist/tab.js +0 -1
- package/dist/tab.mjs +0 -1
- package/dist/table.js +0 -1
- package/dist/table.mjs +0 -1
- package/dist/tag-input.js +0 -1
- package/dist/tag-input.mjs +0 -1
- package/dist/text-area.js +0 -1
- package/dist/text-area.mjs +0 -1
- package/dist/text-input.js +0 -1
- package/dist/text-input.mjs +0 -1
- package/dist/toast.js +0 -1
- package/dist/toast.mjs +0 -1
- package/dist/toggle-group.js +3 -4
- package/dist/toggle-group.mjs +1 -2
- package/dist/tooltip.js +0 -1
- package/dist/tooltip.mjs +0 -1
- package/dist/utils/cn.js +0 -1
- package/dist/utils/cn.mjs +0 -1
- package/dist/utils/scroll.js +0 -1
- package/dist/utils/scroll.mjs +0 -1
- package/dist/virtual-scroll.js +0 -1
- package/dist/virtual-scroll.mjs +0 -1
- package/package.json +14 -8
- package/scripts/setup-cursor-rules.cjs +164 -27
- package/dist/chunks/chunk-22ULI3BF.js +0 -21
- package/dist/chunks/chunk-CVYXRSXT.mjs +0 -8
- package/dist/chunks/chunk-I252NERB.mjs +0 -21
- package/dist/chunks/chunk-JNMCYWGY.js +0 -10
- package/dist/chunks/chunk-LAOQRXCE.js +0 -7
- package/dist/chunks/chunk-S6ODYMFP.mjs +0 -5
- package/dist/components/ThemeProvider.d.ts +0 -25
- package/dist/components/ThemeProvider.d.ts.map +0 -1
- package/dist/schemas/theme-provider.d.ts +0 -36
- package/dist/schemas/theme-provider.d.ts.map +0 -1
- package/dist/schemas/themeProvider.json +0 -65
- package/dist/theme-provider.js +0 -15
- package/dist/theme-provider.mjs +0 -2
- package/dist/chunks/{chunk-CWMLTXOH.mjs → chunk-5ZVPTIL3.mjs} +1 -1
- package/dist/chunks/{chunk-HFBTS42N.js → chunk-7F4SOLAC.js} +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/dataGridPropsSchema",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"dataGridPropsSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"list": {
|
|
8
|
+
"anyOf": [
|
|
9
|
+
{
|
|
10
|
+
"type": "array"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"type": "null"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"description": "Data array to render. null = loading state (required)"
|
|
17
|
+
},
|
|
18
|
+
"columns": {
|
|
19
|
+
"anyOf": [
|
|
20
|
+
{
|
|
21
|
+
"type": "number"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"base": {
|
|
27
|
+
"type": "number",
|
|
28
|
+
"description": "Default column count (mobile-first)"
|
|
29
|
+
},
|
|
30
|
+
"sm": {
|
|
31
|
+
"type": "number",
|
|
32
|
+
"description": ">= 640px"
|
|
33
|
+
},
|
|
34
|
+
"md": {
|
|
35
|
+
"type": "number",
|
|
36
|
+
"description": ">= 768px"
|
|
37
|
+
},
|
|
38
|
+
"lg": {
|
|
39
|
+
"type": "number",
|
|
40
|
+
"description": ">= 1024px"
|
|
41
|
+
},
|
|
42
|
+
"xl": {
|
|
43
|
+
"type": "number",
|
|
44
|
+
"description": ">= 1280px"
|
|
45
|
+
},
|
|
46
|
+
"2xl": {
|
|
47
|
+
"type": "number",
|
|
48
|
+
"description": ">= 1536px"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"additionalProperties": false
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"description": "Column count. number = fixed | { base, sm, md, lg, xl, 2xl } = responsive (required)"
|
|
55
|
+
},
|
|
56
|
+
"gap": {
|
|
57
|
+
"type": [
|
|
58
|
+
"number",
|
|
59
|
+
"string"
|
|
60
|
+
],
|
|
61
|
+
"description": "Item gap. number = px | string = CSS value"
|
|
62
|
+
},
|
|
63
|
+
"noDataMessage": {
|
|
64
|
+
"description": "Message for empty array (string | ReactElement)"
|
|
65
|
+
},
|
|
66
|
+
"errorFallback": {
|
|
67
|
+
"description": "Fallback on error (ReactNode)"
|
|
68
|
+
},
|
|
69
|
+
"loadingElement": {
|
|
70
|
+
"description": "Custom loading element (default: Spinner)"
|
|
71
|
+
},
|
|
72
|
+
"skeletonElement": {
|
|
73
|
+
"description": "Skeleton element during loading (ReactElement)"
|
|
74
|
+
},
|
|
75
|
+
"skeletonCount": {
|
|
76
|
+
"type": "number",
|
|
77
|
+
"default": 3,
|
|
78
|
+
"description": "Skeleton repeat count"
|
|
79
|
+
},
|
|
80
|
+
"loading": {
|
|
81
|
+
"type": "boolean",
|
|
82
|
+
"default": false,
|
|
83
|
+
"description": "Force loading state"
|
|
84
|
+
},
|
|
85
|
+
"children": {
|
|
86
|
+
"description": "Item render function: ({ item, index }) => ReactNode (required)"
|
|
87
|
+
},
|
|
88
|
+
"className": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"description": "Root element style"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"required": [
|
|
94
|
+
"list",
|
|
95
|
+
"columns"
|
|
96
|
+
],
|
|
97
|
+
"additionalProperties": false,
|
|
98
|
+
"description": "DataGrid — card grid version of DataList with responsive columns. Built-in ErrorBoundary, loading/skeleton/empty/error states.\n\nWHEN TO USE:\n • Card grids: products, gallery, team members, posts\n • Need responsive column count → pass { base: 1, sm: 2, lg: 3, xl: 4 }\n • Single column / row layout → DataList\n • Tabular data → table component (not DataGrid)\n • Huge dataset → VirtualGrid\n\nANTI-PATTERNS:\n ✗ Tabular data forced into card grid (use a table)\n ✗ Hardcoded column count for responsive layouts → use responsive object\n ✗ Manual loading/empty handling → DataGrid does it"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
102
|
+
}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"list"
|
|
50
50
|
],
|
|
51
51
|
"additionalProperties": false,
|
|
52
|
-
"description": "
|
|
52
|
+
"description": "DataList — render-prop list that handles loading / skeleton / empty / error / data in one component. Built-in ErrorBoundary.\n\nWHEN TO USE:\n • Any async list (<200 items) — feed, comments, dashboard rows\n • Pass list={null} during loading (auto-shows skeleton/spinner)\n • Pass list=[] for empty state (auto-shows noDataMessage)\n • Card grid → DataGrid (same API + columns prop)\n • Huge dataset → VirtualList\n\nchildren is render fn: ({ item, index }) => ReactNode.\n\nANTI-PATTERNS:\n ✗ Manual if (loading) {...} else if (!data.length) {...} chains → DataList handles all\n ✗ DataList without skeletonElement when component shape is known (use Skeleton)\n ✗ list=undefined (treated as data, not loading) — use null for loading"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/schemas/date-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/schemas/date-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B/B,CAAC"}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
"additionalProperties": false,
|
|
52
|
-
"description": "DatePicker
|
|
52
|
+
"description": "DatePicker — calendar popup for date selection. Based on react-day-picker.\n\nWHEN TO USE:\n • Single date selection: birthday, due date, appointment\n • Date range → use two DatePickers with minDate/maxDate cross-bound\n • Time selection → not yet supported; use TextInput with type=\"time\" + DatePicker combo\n • Quick relative ranges (Today/Last 7 days) → DropdownMenu of preset Buttons + DatePicker for \"Custom\"\n\nminDate/maxDate disable out-of-range dates. locale=\"ko\" for Korean labels.\n\nANTI-PATTERNS:\n ✗ Native <input type=\"date\"> for branded UI (inconsistent across browsers) → DatePicker\n ✗ Free-text date with parsing → DatePicker (consistent UX)\n ✗ DatePicker without minDate for past-date-invalid fields (e.g. booking)"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../src/schemas/divider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../src/schemas/divider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EA4B5B,CAAC"}
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"additionalProperties": false,
|
|
39
|
-
"description": "Divider
|
|
39
|
+
"description": "Divider — visual separator (horizontal/vertical line).\n\nWHEN TO USE:\n • Separating sections within a card / list\n • Vertical separator between inline items (orientation=\"vertical\")\n • Use color prop sparingly — defaults to border-default token\n • For grouping form sections, prefer larger spacing over Divider\n • Tab/Accordion already provide visual separation — don't add Divider\n\nANTI-PATTERNS:\n ✗ Stacking many Dividers — increase spacing instead\n ✗ Using Divider as decorative line with bright color → use Tailwind border utility on container\n ✗ Inline <hr> with custom CSS → Divider (consistent token)"
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/schemas/drawer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/schemas/drawer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EA0B3B,CAAC;AAEJ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAYF,CAAC;AAEpC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAMF,CAAC;AAEpC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAMA,CAAC;AAEpC,eAAO,MAAM,sBAAsB;;;;;;;;;EAKsB,CAAC;AAE1D,eAAO,MAAM,4BAA4B;;;;;;;;;EAKP,CAAC"}
|
package/dist/schemas/drawer.json
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"additionalProperties": false,
|
|
42
|
-
"description": "Drawer/bottom sheet. Based on Vaul. Compound component pattern."
|
|
42
|
+
"description": "Drawer / bottom sheet. Based on Vaul. Compound component pattern.\n\nWHEN TO USE:\n • Side panel for secondary action while user can still see main content (filter panel, item details)\n • Mobile bottom sheet (direction=\"bottom\")\n • Force decision blocking main flow → Modal instead\n • Inline anchor-positioned UI → Popover instead\n\nDIRECTION: bottom (default, mobile-friendly), top, left, right.\ndismissible=true (default) allows swipe/outside-click close. Set false for blocking flows.\n\nANTI-PATTERNS:\n ✗ Drawer for confirmation dialogs → Modal (decision-forcing)\n ✗ Always shouldScaleBackground → only enable for true mobile bottom-sheets\n ✗ Forgetting Drawer.Title → required for screen readers (a11y)"
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/schemas/dropdown-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/schemas/dropdown-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BjC,CAAC"}
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"items"
|
|
77
77
|
],
|
|
78
78
|
"additionalProperties": false,
|
|
79
|
-
"description": "Dropdown menu. Based on Radix DropdownMenu
|
|
79
|
+
"description": "Dropdown menu — list of actions/commands triggered by a button. Based on Radix DropdownMenu (role=\"menu\" + keyboard nav).\n\nWHEN TO USE:\n • \"More\" / context menu (•••, ⋮)\n • Action lists where each item triggers a function (save, share, delete)\n • Selecting a value (form field) → Select / Combobox (not DropdownMenu)\n • Multi-select toggles → ToggleGroup or CheckBox group\n • Anchored info panel → Popover\n\nUse danger=true on destructive items (Delete) for visual + semantic emphasis.\nUse separator=true to group related actions.\n\nANTI-PATTERNS:\n ✗ DropdownMenu for value selection submitted later → Select / Combobox\n ✗ Custom <div onClick> with isOpen state → DropdownMenu\n ✗ Long form inputs inside menu items → Popover instead"
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ellipsis.d.ts","sourceRoot":"","sources":["../../src/schemas/ellipsis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ellipsis.d.ts","sourceRoot":"","sources":["../../src/schemas/ellipsis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B7B,CAAC"}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"additionalProperties": false,
|
|
45
|
-
"description": "
|
|
45
|
+
"description": "Ellipsis — clamp long text to N lines with \"show more / less\" toggle.\n\nWHEN TO USE:\n • Long descriptions in cards, comments, post previews\n • Single-line truncation only → CSS line-clamp utility (lighter)\n • Tooltip on hover for full text → Tooltip + truncate utility\n • Critical content that must be fully readable — don't truncate\n\ntriggerMore/triggerLess accept ReactNode for icons or styled buttons.\n\nANTI-PATTERNS:\n ✗ Ellipsis on titles / labels — confusing UX\n ✗ Always-collapsed (defaultShortened=true) for short text — measurement waste\n ✗ Overriding triggerMore/Less with HTML that breaks accessibility (use button-like)"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/schemas/empty-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/schemas/empty-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EAyB/B,CAAC"}
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"additionalProperties": false,
|
|
40
|
-
"description": "
|
|
40
|
+
"description": "EmptyState — friendly placeholder for empty lists, no search results, first-time setup.\n\nWHEN TO USE:\n • Empty inbox / list / search results\n • First-time use (onboarding nudge with action button)\n • Loading → Skeleton/Spinner (NOT EmptyState)\n • Error → Alert (or pass icon + title to EmptyState only when conceptually \"nothing here\")\n\nDataList/DataGrid have built-in noDataMessage that wraps EmptyState — use that prop instead of conditional rendering.\n\nANTI-PATTERNS:\n ✗ Showing EmptyState during loading (confuses users into thinking data is missing)\n ✗ EmptyState without action when user can fix it (\"Create your first X\" button)\n ✗ Cluttered EmptyState (too much text/multiple CTAs) — keep one primary action"
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/schemas/error-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/schemas/error-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAuBlC,CAAC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"additionalProperties": false,
|
|
18
|
-
"description": "
|
|
18
|
+
"description": "ErrorBoundary — catches render-time errors in subtree and shows fallback UI.\n\nWHEN TO USE:\n • Wrap risky areas: third-party widgets, dynamic imports, untrusted content rendering\n • Async errors / promise rejections → NOT caught (use try/catch in handlers)\n • Per-route error wrapping → use framework's error.tsx (Next.js) where possible\n\nDataList / DataGrid have ErrorBoundary built-in — don't double-wrap.\n\nANTI-PATTERNS:\n ✗ ErrorBoundary at app root only — granular boundaries give better UX (one widget fails, page survives)\n ✗ Showing raw Error.message in production (leak risk) — use friendly fallback\n ✗ Forgetting onError logging → silent failures in production"
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-upload.d.ts","sourceRoot":"","sources":["../../src/schemas/image-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"image-upload.d.ts","sourceRoot":"","sources":["../../src/schemas/image-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0ChC,CAAC"}
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
"additionalProperties": false,
|
|
79
|
-
"description": "ImageUpload
|
|
79
|
+
"description": "ImageUpload — drag-and-drop image upload with preview, file-type/size validation, label/description.\n\nWHEN TO USE:\n • Single image upload: avatar, cover, KYC document, post thumbnail\n • Multiple files / non-image → not yet supported; build custom or use a file dropzone\n • Inline image picker without preview → custom <input type=\"file\">\n\naccept whitelist + maxSize together cover validation. onError fires with i18n-ready string.\n\nANTI-PATTERNS:\n ✗ <input type=\"file\"> + manual preview → ImageUpload (handles drag, validation, preview)\n ✗ ImageUpload without onError handler → silent failure on validation reject\n ✗ Storing image as data-URL value (use File via onChange and upload to server)"
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { buttonPropsSchema } from './button';
|
|
|
3
3
|
export { textInputPropsSchema } from './text-input';
|
|
4
4
|
export { textAreaPropsSchema } from './text-area';
|
|
5
5
|
export { selectPropsSchema, selectItemPropsSchema } from './select';
|
|
6
|
+
export { comboboxPropsSchema, comboboxOptionPropsSchema, comboboxOptionDescriptionPropsSchema, comboboxOptionMetaPropsSchema, } from './combobox';
|
|
6
7
|
export { dropdownMenuPropsSchema } from './dropdown-menu';
|
|
7
8
|
export { toggleGroupPropsSchema } from './toggle-group';
|
|
8
9
|
export { sliderPropsSchema } from './slider';
|
|
@@ -35,10 +36,10 @@ export { emptyStatePropsSchema } from './empty-state';
|
|
|
35
36
|
export { numberInputPropsSchema } from './number-input';
|
|
36
37
|
export { priceInputPropsSchema } from './price-input';
|
|
37
38
|
export { dataListPropsSchema } from './data-list';
|
|
39
|
+
export { dataGridPropsSchema } from './data-grid';
|
|
38
40
|
export { modalTemplatePropsSchema, modalCallSchema } from './modal';
|
|
39
41
|
export { errorBoundaryPropsSchema } from './error-boundary';
|
|
40
42
|
export { clientOnlyPropsSchema } from './client-only';
|
|
41
|
-
export { themeProviderPropsSchema } from './theme-provider';
|
|
42
43
|
export { tablePropsSchema, tableRowPropsSchema, tdColumnPropsSchema, } from './table';
|
|
43
44
|
export { toasterPropsSchema, toastOptionsSchema } from './toast';
|
|
44
45
|
export { tagInputPropsSchema } from './tag-input';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,oCAAoC,EACpC,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infinite-scroll.d.ts","sourceRoot":"","sources":["../../src/schemas/infinite-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"infinite-scroll.d.ts","sourceRoot":"","sources":["../../src/schemas/infinite-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCnC,CAAC"}
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"list"
|
|
59
59
|
],
|
|
60
60
|
"additionalProperties": false,
|
|
61
|
-
"description": "
|
|
61
|
+
"description": "InfiniteScroll — auto-load more when sentinel enters viewport. Based on IntersectionObserver.\n\nWHEN TO USE:\n • Feeds, social timelines, search-as-you-scroll\n • Continuous browsing where total isn't critical\n • Need jump-to-page → Pagination (not InfiniteScroll)\n • Need to render 1000s of already-loaded items efficiently → VirtualList\n • Combine with VirtualList for huge + paginated data\n\nPass either totalCount or hasMore (not both). handleLoadMore is required.\n\nANTI-PATTERNS:\n ✗ InfiniteScroll without footer/loading element (looks broken at the bottom)\n ✗ InfiniteScroll without debouncing handleLoadMore — duplicate fetches\n ✗ Auto-loading critical actions in footer (links, contact) — they become unreachable"
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../src/schemas/marquee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../src/schemas/marquee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EA4B5B,CAAC"}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"additionalProperties": false,
|
|
45
|
-
"description": "Marquee
|
|
45
|
+
"description": "Marquee — endless scrolling content (logo strip, promo banner, news ticker).\n\nWHEN TO USE:\n • Logo cloud, partner brands strip, social proof\n • Critical info that must be read → not Marquee (auto-scroll hurts a11y)\n • Long static list → VirtualList\n • User-paced gallery → Carousel\n\npauseOnHover=true is recommended whenever content is readable text.\n\nANTI-PATTERNS:\n ✗ Marquee with action buttons inside (hard to click)\n ✗ Fast-speed marquee on important text (unreadable, a11y violation)\n ✗ Multiple Marquees on same page in different directions (visual chaos)"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/schemas/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/schemas/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DlC,CAAC;AAEJ,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BzB,CAAC"}
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
}
|
|
120
120
|
},
|
|
121
121
|
"additionalProperties": false,
|
|
122
|
-
"description": "Modal template. All modal components must be wrapped with ModalTemplate."
|
|
122
|
+
"description": "Modal template. All modal components must be wrapped with ModalTemplate.\n\nWHEN TO USE:\n • Force user decision (delete confirm, submit confirm, blocking dialog)\n • Long form/flow that needs full attention\n • Side panel that doesn't block main flow → Drawer instead\n • Inline contextual UI → Popover instead\n • Short hint → Tooltip instead\n\nPREFERRED API: use modal() / useModal() imperative API rather than mounting <ModalTemplate> directly. modal() handles stacking, focus return, ESC, and background scroll automatically.\n\nANTI-PATTERNS:\n ✗ Custom <div className=\"fixed inset-0\"> → modal() (loses focus trap, a11y)\n ✗ Direct <ModalTemplate> mount in render tree → wrap with modal()\n ✗ Modal with no title for screen readers → always pass title prop\n ✗ Multiple modals stacking confusingly → use isAlone:true to close prior modals"
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/schemas/number-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/schemas/number-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DhC,CAAC"}
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
}
|
|
108
108
|
},
|
|
109
109
|
"additionalProperties": false,
|
|
110
|
-
"description": "Number input with two variants: basic (chevron arrows) and bind (+/- buttons). Supports label, description, max display (click to fill), accelerated increment on long press. numberInputBind(ref, direction) binds acceleration to external buttons
|
|
110
|
+
"description": "Number input with two variants: basic (chevron arrows) and bind (+/- buttons). Supports label, description, max display (click to fill), accelerated increment on long press. numberInputBind(ref, direction) binds acceleration to external buttons.\n\nWHEN TO USE:\n • Any numeric field — quantity, score, age, count\n • Currency with thousand separators → PriceInput instead\n • Date / time → DatePicker instead\n\nANTI-PATTERNS:\n ✗ <TextInput type=\"number\"> → <NumberInput> (loses keyboard ↑↓, step, accelerated long-press, max click)\n ✗ Custom +/- buttons + <input> → variant=\"bind\" (or numberInputBind for external)\n ✗ Manual thousand separators for currency → PriceInput"
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
113
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-image.d.ts","sourceRoot":"","sources":["../../src/schemas/nx-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"nx-image.d.ts","sourceRoot":"","sources":["../../src/schemas/nx-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B5B,CAAC"}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
"additionalProperties": false,
|
|
52
|
-
"description": "
|
|
52
|
+
"description": "NxImage — lazy-loaded <img> with fallback, fixed aspect-ratio, object-fit. Always prefer over native <img>.\n\nWHEN TO USE:\n • Content images: covers, banners, illustrations, hero images\n • Profile/user avatar (with text fallback) → Avatar\n • Background image / decorative → CSS bg-image\n • Need Next.js optimization → use next/image directly (NxImage doesn't optimize)\n\naspectRatio reserves space, preventing CLS (layout shift).\n\nANTI-PATTERNS:\n ✗ <img> with manual onError handling → NxImage (built-in fallback)\n ✗ NxImage without alt for content images (a11y violation)\n ✗ NxImage without aspectRatio in fluid layouts → CLS jank"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/schemas/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/schemas/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EA6B/B,CAAC"}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"totalPages"
|
|
44
44
|
],
|
|
45
45
|
"additionalProperties": false,
|
|
46
|
-
"description": "Pagination
|
|
46
|
+
"description": "Pagination — page-by-page navigation for long datasets.\n\nWHEN TO USE:\n • User needs to jump to specific pages (search results, blog archives)\n • Total count is known and stable\n • Continuous browsing → InfiniteScroll instead\n • Real-time stream → InfiniteScroll\n • Both fit → Pagination is more accessible (keyboard, deep-linkable URL)\n\nANTI-PATTERNS:\n ✗ Pagination with totalPages=1 — hide it\n ✗ Mixing Pagination + InfiniteScroll on same list (confusing)\n ✗ Custom page button divs → Pagination (a11y, edge cases like ellipsis)"
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/schemas/popover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/schemas/popover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqC5B,CAAC"}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"additionalProperties": false,
|
|
63
|
-
"description": "Popover. Based on Radix Popover
|
|
63
|
+
"description": "Popover — anchor-positioned panel with interactive content. Based on Radix Popover.\n\nWHEN TO USE:\n • Trigger-anchored UI with buttons, inputs, or rich content\n • Filter/option panel near a button (not a full sidebar)\n • Hover-only text hint → Tooltip (lighter)\n • Action menu list → DropdownMenu (gives role=menu, keyboard nav)\n • Decision dialog → Modal\n\nANTI-PATTERNS:\n ✗ Action lists with onClick handlers → DropdownMenu (a11y semantics)\n ✗ Implementing dropdown manually with Popover + custom buttons → DropdownMenu\n ✗ Long forms inside Popover → Drawer or Modal"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-input.d.ts","sourceRoot":"","sources":["../../src/schemas/price-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"price-input.d.ts","sourceRoot":"","sources":["../../src/schemas/price-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsE/B,CAAC"}
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"additionalProperties": false,
|
|
100
|
-
"description": "
|
|
100
|
+
"description": "PriceInput — currency / amount input with prefix, suffix, balance display, click-to-fill.\n\nWHEN TO USE:\n • Money / token amounts: payment, transfer, swap, withdraw\n • Need balance hint with auto-fill UX (set balance + onBalanceClick)\n • Pure number (count, age, score) → NumberInput\n • Generic text → TextInput\n\nseparator=true displays commas; onValueChange always returns raw value (no commas). maxBalance auto-applies error styling on overflow.\n\nANTI-PATTERNS:\n ✗ <TextInput type=\"number\"> + manual currency formatting → PriceInput\n ✗ NumberInput for currency (loses prefix/suffix/balance UX)\n ✗ Using string input for amounts then parseFloat — lose precision; use this component"
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/schemas/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/schemas/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B7B,CAAC"}
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"additionalProperties": false,
|
|
59
|
-
"description": "Progress
|
|
59
|
+
"description": "Progress — linear progress bar (file upload, multi-step form, loading with known %).\n\nWHEN TO USE:\n • Quantifiable progress (% complete, X of Y)\n • Unknown duration spinner → Spinner\n • Stable component shape during load → Skeleton\n • Step-based navigation → Stepper\n • Indeterminate (loading without %) → set indeterminate=true\n\nvariant follows semantic colors (success when complete, danger on error).\n\nANTI-PATTERNS:\n ✗ Indeterminate Progress for short loads (<1s) — Spinner is lighter\n ✗ Custom <div style={{ width: x% }}> → Progress (a11y, tokens)\n ✗ Progress without label/showValue when % is critical info"
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -4,6 +4,7 @@ export declare const radioGroupPropsSchema: z.ZodObject<{
|
|
|
4
4
|
value: z.ZodOptional<z.ZodString>;
|
|
5
5
|
defaultValue: z.ZodOptional<z.ZodString>;
|
|
6
6
|
size: z.ZodDefault<z.ZodEnum<["sm", "md"]>>;
|
|
7
|
+
variant: z.ZodDefault<z.ZodEnum<["default", "ring"]>>;
|
|
7
8
|
orientation: z.ZodDefault<z.ZodEnum<["horizontal", "vertical"]>>;
|
|
8
9
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
9
10
|
children: z.ZodAny;
|
|
@@ -14,6 +15,7 @@ export declare const radioGroupPropsSchema: z.ZodObject<{
|
|
|
14
15
|
}, "strip", z.ZodTypeAny, {
|
|
15
16
|
name: string;
|
|
16
17
|
size: "md" | "sm";
|
|
18
|
+
variant: "default" | "ring";
|
|
17
19
|
orientation: "horizontal" | "vertical";
|
|
18
20
|
className?: string | undefined;
|
|
19
21
|
children?: any;
|
|
@@ -30,6 +32,7 @@ export declare const radioGroupPropsSchema: z.ZodObject<{
|
|
|
30
32
|
value?: string | undefined;
|
|
31
33
|
size?: "md" | "sm" | undefined;
|
|
32
34
|
disabled?: boolean | undefined;
|
|
35
|
+
variant?: "default" | "ring" | undefined;
|
|
33
36
|
defaultValue?: string | undefined;
|
|
34
37
|
'aria-label'?: string | undefined;
|
|
35
38
|
'aria-labelledby'?: string | undefined;
|
|
@@ -39,7 +42,9 @@ export declare const radioGroupPropsSchema: z.ZodObject<{
|
|
|
39
42
|
export declare const radioItemPropsSchema: z.ZodObject<{
|
|
40
43
|
value: z.ZodString;
|
|
41
44
|
size: z.ZodOptional<z.ZodEnum<["sm", "md"]>>;
|
|
45
|
+
variant: z.ZodOptional<z.ZodEnum<["default", "ring"]>>;
|
|
42
46
|
label: z.ZodOptional<z.ZodAny>;
|
|
47
|
+
description: z.ZodOptional<z.ZodAny>;
|
|
43
48
|
children: z.ZodOptional<z.ZodAny>;
|
|
44
49
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
45
50
|
className: z.ZodOptional<z.ZodString>;
|
|
@@ -48,14 +53,18 @@ export declare const radioItemPropsSchema: z.ZodObject<{
|
|
|
48
53
|
className?: string | undefined;
|
|
49
54
|
children?: any;
|
|
50
55
|
label?: any;
|
|
56
|
+
description?: any;
|
|
51
57
|
size?: "md" | "sm" | undefined;
|
|
52
58
|
disabled?: boolean | undefined;
|
|
59
|
+
variant?: "default" | "ring" | undefined;
|
|
53
60
|
}, {
|
|
54
61
|
value: string;
|
|
55
62
|
className?: string | undefined;
|
|
56
63
|
children?: any;
|
|
57
64
|
label?: any;
|
|
65
|
+
description?: any;
|
|
58
66
|
size?: "md" | "sm" | undefined;
|
|
59
67
|
disabled?: boolean | undefined;
|
|
68
|
+
variant?: "default" | "ring" | undefined;
|
|
60
69
|
}>;
|
|
61
70
|
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/schemas/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/schemas/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0C/B,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBkB,CAAC"}
|
|
@@ -25,6 +25,15 @@
|
|
|
25
25
|
"default": "md",
|
|
26
26
|
"description": "Size"
|
|
27
27
|
},
|
|
28
|
+
"variant": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"enum": [
|
|
31
|
+
"default",
|
|
32
|
+
"ring"
|
|
33
|
+
],
|
|
34
|
+
"default": "default",
|
|
35
|
+
"description": "Visual style. default=outline circle with inner dot, ring=thick border replaces dot when checked"
|
|
36
|
+
},
|
|
28
37
|
"orientation": {
|
|
29
38
|
"type": "string",
|
|
30
39
|
"enum": [
|
|
@@ -61,7 +70,7 @@
|
|
|
61
70
|
"name"
|
|
62
71
|
],
|
|
63
72
|
"additionalProperties": false,
|
|
64
|
-
"description": "Radio group. Used with RadioItem
|
|
73
|
+
"description": "Radio group for single-choice form fields. Used with RadioItem.\n\nWHEN TO USE:\n • Form field where user picks ONE of small set (≤4-7) and submits later → RadioGroup\n • All options should be visible at once for comparison → RadioGroup (not Select)\n • Immediate effect on selection (no submit) → ToggleGroup instead\n • Page area switching (tabs) → Tab (not RadioGroup)\n • Many options → Select / Combobox\n\nVARIANTS:\n • variant=\"default\" — outline circle with inner dot when checked (classic)\n • variant=\"ring\" — thick border replaces inner dot when checked (modern, Figma \"ring\" style)\n\nANTI-PATTERNS:\n ✗ Using RadioGroup for tab-like content switching → Tab\n ✗ Using RadioGroup for immediate filters → ToggleGroup\n ✗ Mixing RadioGroup and ToggleGroup in same form → pick one pattern\n ✗ Native <input type=\"radio\"> → RadioItem (gets a11y, focus ring, tokens)"
|
|
65
74
|
}
|
|
66
75
|
},
|
|
67
76
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -16,9 +16,20 @@
|
|
|
16
16
|
],
|
|
17
17
|
"description": "Size (overrides group)"
|
|
18
18
|
},
|
|
19
|
+
"variant": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": [
|
|
22
|
+
"default",
|
|
23
|
+
"ring"
|
|
24
|
+
],
|
|
25
|
+
"description": "Visual style (overrides group)"
|
|
26
|
+
},
|
|
19
27
|
"label": {
|
|
20
28
|
"description": "Label text (ReactNode)"
|
|
21
29
|
},
|
|
30
|
+
"description": {
|
|
31
|
+
"description": "Help text shown beneath the label (ReactNode)"
|
|
32
|
+
},
|
|
22
33
|
"children": {
|
|
23
34
|
"description": "Label alternative content (ReactNode)"
|
|
24
35
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/schemas/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/schemas/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC3B,CAAC;AAEJ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAOa,CAAC"}
|
package/dist/schemas/select.json
CHANGED
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
"additionalProperties": false,
|
|
58
|
-
"description": "Dropdown select. Based on Radix Select. Used with SelectItem
|
|
58
|
+
"description": "Dropdown select for short option lists. Based on Radix Select. Used with SelectItem.\n\nWHEN TO USE:\n • Options ≤ 7, no search needed → Select\n • Options ≥ 7 OR search needed OR async → Combobox instead\n • Need multi-select → Combobox (multiple)\n • Action menu (save/delete/share) → DropdownMenu (not Select; values vs actions)\n\nANTI-PATTERNS:\n ✗ Select with 20+ options → Combobox\n ✗ Using Select for menu items that trigger functions → DropdownMenu\n ✗ Manual <select> styling → Select gives consistent token styling\n ✗ Wrapping each SelectItem with Tooltip — instead put hint in item label"
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/schemas/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/schemas/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAyC7B,CAAC"}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"additionalProperties": false,
|
|
47
|
-
"description": "Skeleton loading placeholder. Size/shape via className. With children, wraps transparently to maintain actual size."
|
|
47
|
+
"description": "Skeleton loading placeholder. Size/shape via className. With children, wraps transparently to maintain actual size.\n\nWHEN TO USE:\n • Long load with known component shape (cards, lists, profile headers)\n • Reduces perceived wait time when layout is predictable\n • Short loads (<1s) → Spinner\n • Quantifiable progress → Progress\n • DataList/DataGrid loading → set list={null} (uses skeletonElement prop automatically)\n\nGOLDEN RULE: Skeleton must match the real component's shape and size. Mismatch causes layout shift.\n\nANTI-PATTERNS:\n ✗ Generic gray rectangle for everything → match real component shape\n ✗ Skeleton for instant loads (causes flash)\n ✗ Many skeletons of different shapes when component is uniform → use a single skeleton in DataList"
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/schemas/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/schemas/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC3B,CAAC"}
|
package/dist/schemas/slider.json
CHANGED
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"additionalProperties": false,
|
|
74
|
-
"description": "Slider
|
|
74
|
+
"description": "Slider — numeric range selector. Based on Radix Slider. Single thumb or range (two thumbs).\n\nWHEN TO USE:\n • Continuous range with visual feedback: volume, brightness, price filter\n • Range filter (min-max) → defaultValue=[20, 80]\n • Precise number entry → NumberInput\n • Discrete few options → ToggleGroup or RadioGroup\n • Boolean → Switch\n\nstep controls increments. onValueCommit fires only after pointer release (good for expensive recomputations).\n\nANTI-PATTERNS:\n ✗ Slider for required precise input (typing 47 is faster than dragging)\n ✗ Long step count without showValue / labels (users have no reference)\n ✗ Calling expensive API on every onValueChange tick → use onValueCommit"
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/schemas/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/schemas/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAqB5B,CAAC"}
|