@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/schemas/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/schemas/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC9B,CAAC"}
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"items"
|
|
95
95
|
],
|
|
96
96
|
"additionalProperties": false,
|
|
97
|
-
"description": "Accordion
|
|
97
|
+
"description": "Accordion — collapsible content sections (FAQ, settings groups).\n\nWHEN TO USE:\n • FAQ, help docs, settings groups\n • Long page where each section is independently scannable\n • Hidden critical info — DO NOT bury what users always need\n • Tab-like content switching → Tab (Accordion is for stacked, not exclusive)\n\ntype=\"single\" + collapsible=true → all-closed allowed (recommended for FAQ).\ntype=\"multiple\" → multiple sections open at once.\n\nANTI-PATTERNS:\n ✗ Hiding the page's primary content inside collapsed Accordion\n ✗ Single-section Accordion (just show the content)\n ✗ Custom toggle div + state — use Accordion (gets a11y, keyboard nav)"
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
100
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/schemas/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/schemas/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B1B,CAAC"}
|
package/dist/schemas/alert.json
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"additionalProperties": false,
|
|
45
|
-
"description": "Alert
|
|
45
|
+
"description": "Alert — persistent inline notification (banner). Auto icon by variant.\n\nWHEN TO USE:\n • In-page status: form errors, server warnings, info banners, success confirmation\n • Transient toast/snackbar → use a toast library, NOT Alert\n • Modal-blocking error → Modal with semantic=\"danger\"\n • Inline form field error → use error/description prop on TextInput / Select / etc.\n\nvariant maps to semantic colors. closable=true gives users dismiss control. action prop reserved for inline buttons (e.g. \"Retry\").\n\nANTI-PATTERNS:\n ✗ Stacking 5 alerts at top of page (use one with summary)\n ✗ Critical destructive action confirmation in Alert → Modal\n ✗ Wrapping <div className=\"bg-red-100\"> manually → Alert (a11y role + tokens)"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/schemas/avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/schemas/avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC3B,CAAC"}
|
package/dist/schemas/avatar.json
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"additionalProperties": false,
|
|
51
|
-
"description": "Avatar
|
|
51
|
+
"description": "Avatar — user/entity profile image with text fallback.\n\nWHEN TO USE:\n • User profiles, comment authors, team member lists, message sender icons\n • Image fails / not provided → fallback (initials or icon) shown automatically\n • Need optimized image (Next.js) → pass <Image> via children, omit src\n • Larger illustration / logo → use NxImage instead\n\nshape=\"square\" for organization/team logos; \"circle\" for people (default).\n\nANTI-PATTERNS:\n ✗ <img> + manual fallback handling → Avatar (handles error)\n ✗ Avatar without alt for screen readers (always set alt or aria-label)\n ✗ Mixing avatar sizes inconsistently in a list — pick one size"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/schemas/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/schemas/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B1B,CAAC"}
|
package/dist/schemas/badge.json
CHANGED
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
71
|
"additionalProperties": false,
|
|
72
|
-
"description": "Badge indicator
|
|
72
|
+
"description": "Badge — small status / count indicator overlaid on an anchor (icon, avatar, button).\n\nWHEN TO USE:\n • Notification count on bell icon\n • Unread message count on inbox tab\n • Status dot (online/offline) → dot=true\n • Status label with text (e.g. \"PRO\", \"NEW\") → Chip variant=\"accent\"\n • Removable filter token → Chip with onClose\n\ncount={0} hides badge by default; pass showZero=true to keep visible.\n\nANTI-PATTERNS:\n ✗ Using Badge as standalone label without anchor → Chip\n ✗ count > 999 without max → ugly layout; default max=99 (\"99+\")\n ✗ Multiple badges on same anchor (visual noise)"
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/schemas/breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;EAKoE,CAAC;AAE3G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/schemas/breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;EAKoE,CAAC;AAE3G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAuB/B,CAAC"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"additionalProperties": false,
|
|
23
|
-
"description": "Breadcrumb navigation (
|
|
23
|
+
"description": "Breadcrumb — hierarchical location navigation (Home > Settings > Profile).\n\nWHEN TO USE:\n • Multi-level information architecture (>=3 levels deep)\n • Hierarchical category drill-down (file system, taxonomy)\n • Step-based linear flow → Stepper (not Breadcrumb)\n • Tab switching → Tab\n • Single-level navigation → page title alone\n\nCompound pattern: use <Breadcrumb.Item> children. Each Item wraps any ReactNode (Link, Select, plain text). Use maxItems for long paths (auto-collapse with \"…\").\n\nANTI-PATTERNS:\n ✗ Breadcrumb with 1 level — just show page title\n ✗ Breadcrumb with > 6 visible items → set maxItems\n ✗ Last item as a link (it's the current page; should be plain text)"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/schemas/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/schemas/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiD3B,CAAA"}
|
package/dist/schemas/button.json
CHANGED
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
84
|
"additionalProperties": false,
|
|
85
|
-
"description": "Interactive button
|
|
85
|
+
"description": "Interactive button (always prefer over native <button>).\n\nWHEN TO USE: any clickable action — submit, navigate (with asChild), open modal, trigger menu.\n2-axis: semantic (color intent) × variant (visual weight). Use semantic=\"primary\" for the page's main CTA, \"danger\" for destructive actions, \"secondary\" for sub actions, \"normal\" for neutral.\n\nANTI-PATTERNS:\n ✗ <button className=\"bg-blue-500\"> → <Button semantic=\"primary\">\n ✗ <a className=\"...\"> styled as button → <Button asChild><a href=\"...\"/></Button>\n ✗ Mixing variants randomly within one row — pick one per visual hierarchy level\n ✗ Using primary + contained for every button → only ONE primary CTA per view\n ✗ <Button className=\"!bg-red-500\"> → <Button semantic=\"danger\"> (no !important)"
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/schemas/carousel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/schemas/carousel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EA0B7B,CAAC;AAEJ,eAAO,MAAM,wBAAwB;;;;;;;;;EAKe,CAAC;AAErD,eAAO,MAAM,yBAAyB;;;;;;;;;EAKuC,CAAC;AAE9E,eAAO,MAAM,uBAAuB;;;;;;EAIc,CAAC"}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"additionalProperties": false,
|
|
28
|
-
"description": "Carousel. Based on Embla Carousel.
|
|
28
|
+
"description": "Carousel — horizontal slide gallery. Based on Embla Carousel. Compound: CarouselSlide, CarouselPrev/Next, CarouselDots.\n\nWHEN TO USE:\n • Hero banners, image gallery, product showcase\n • Multi-card horizontal scroll with snap behavior\n • Vertical scrolling list → Marquee or VirtualList (not Carousel)\n • Critical content that must always be visible — Carousel hides slides\n\nopts={{ loop: true, align: 'start' }} for endless loop. Add Embla autoplay plugin for auto-advance.\n\nANTI-PATTERNS:\n ✗ Critical CTA inside non-first slide (users might never scroll)\n ✗ Auto-advance without pause-on-hover (a11y)\n ✗ Manual scroll-snap div → Carousel (gets keyboard nav, indicators)"
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"additionalProperties": false,
|
|
71
|
-
"description": "Checkbox. Native input-based, supports square/round shapes."
|
|
71
|
+
"description": "Checkbox for multi-select form fields. Native input-based, supports square/round shapes.\n\nWHEN TO USE:\n • Form field with multiple independent options (T&C agreements, multi-select filters submitted later)\n • Tri-state (parent-child selection) — use indeterminate prop\n • Single binary that takes effect immediately → Switch instead\n • Many options with search → Combobox (multiple)\n\nINDETERMINATE: set indeterminate=true when some children are checked, others not. aria-checked becomes \"mixed\" automatically.\n\nANTI-PATTERNS:\n ✗ <CheckBox> for \"Enable dark mode\" toggle → <Switch>\n ✗ Native <input type=\"checkbox\"> + manual styling → <CheckBox>\n ✗ Forgetting indeterminate for \"select all\" parent"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/schemas/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/schemas/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../src/schemas/chip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../src/schemas/chip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BzB,CAAC"}
|
package/dist/schemas/chip.json
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"additionalProperties": false,
|
|
51
|
-
"description": "Chip/
|
|
51
|
+
"description": "Chip — small interactive token for filters, tags, removable selections, status labels.\n\nWHEN TO USE:\n • Filter token / removable selection (set onClose for X button)\n • Tag/category indicator\n • Status indicator with color (variant=\"accent\")\n • Pure count badge → Badge instead\n • Toggleable filter → ToggleGroup or Chip with onClick + active state\n\nANTI-PATTERNS:\n ✗ Building dismiss UI manually with custom div + X icon → use onClose prop\n ✗ Using Chip as a primary CTA → Button\n ✗ Using Chip for hover-only labels → Tooltip"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-only.d.ts","sourceRoot":"","sources":["../../src/schemas/client-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"client-only.d.ts","sourceRoot":"","sources":["../../src/schemas/client-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;EAuB/B,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"additionalProperties": false,
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "ClientOnly — defers children to client-side render, preventing SSR hydration mismatch.\n\nWHEN TO USE:\n • Wrap components that read window/document/localStorage at render time\n • Components depending on browser-only APIs (IntersectionObserver eager init, geolocation)\n • Server-renderable content → DON'T wrap (loses SEO/SSR perf benefits)\n • Conditional based on data → use proper SSR-safe state instead\n\nPass fallback to avoid layout shift during hydration.\n\nANTI-PATTERNS:\n ✗ Wrapping the entire page in ClientOnly (defeats SSR)\n ✗ ClientOnly without fallback for above-the-fold UI (CLS)\n ✗ Using ClientOnly to \"fix\" any hydration warning — root-cause the mismatch first"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const comboboxOptionPropsSchema: z.ZodObject<{
|
|
3
|
+
value: z.ZodString;
|
|
4
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
5
|
+
textValue: z.ZodOptional<z.ZodString>;
|
|
6
|
+
className: z.ZodOptional<z.ZodString>;
|
|
7
|
+
children: z.ZodOptional<z.ZodAny>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
value: string;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
children?: any;
|
|
12
|
+
disabled?: boolean | undefined;
|
|
13
|
+
textValue?: string | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
value: string;
|
|
16
|
+
className?: string | undefined;
|
|
17
|
+
children?: any;
|
|
18
|
+
disabled?: boolean | undefined;
|
|
19
|
+
textValue?: string | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const comboboxOptionDescriptionPropsSchema: z.ZodObject<{
|
|
22
|
+
children: z.ZodOptional<z.ZodAny>;
|
|
23
|
+
className: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
className?: string | undefined;
|
|
26
|
+
children?: any;
|
|
27
|
+
}, {
|
|
28
|
+
className?: string | undefined;
|
|
29
|
+
children?: any;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const comboboxOptionMetaPropsSchema: z.ZodObject<{
|
|
32
|
+
children: z.ZodOptional<z.ZodAny>;
|
|
33
|
+
className: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
className?: string | undefined;
|
|
36
|
+
children?: any;
|
|
37
|
+
}, {
|
|
38
|
+
className?: string | undefined;
|
|
39
|
+
children?: any;
|
|
40
|
+
}>;
|
|
41
|
+
export declare const comboboxPropsSchema: z.ZodObject<{
|
|
42
|
+
children: z.ZodAny;
|
|
43
|
+
value: z.ZodOptional<z.ZodAny>;
|
|
44
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
45
|
+
onValueChange: z.ZodOptional<z.ZodAny>;
|
|
46
|
+
multiple: z.ZodDefault<z.ZodBoolean>;
|
|
47
|
+
onSearch: z.ZodOptional<z.ZodAny>;
|
|
48
|
+
searchDebounce: z.ZodDefault<z.ZodNumber>;
|
|
49
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
50
|
+
filter: z.ZodOptional<z.ZodAny>;
|
|
51
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
52
|
+
emptyMessage: z.ZodOptional<z.ZodAny>;
|
|
53
|
+
loadingMessage: z.ZodOptional<z.ZodAny>;
|
|
54
|
+
size: z.ZodDefault<z.ZodEnum<["md", "lg", "xl"]>>;
|
|
55
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
56
|
+
error: z.ZodOptional<z.ZodBoolean>;
|
|
57
|
+
clearable: z.ZodDefault<z.ZodBoolean>;
|
|
58
|
+
autoOpenOnFocus: z.ZodDefault<z.ZodBoolean>;
|
|
59
|
+
label: z.ZodOptional<z.ZodAny>;
|
|
60
|
+
description: z.ZodOptional<z.ZodAny>;
|
|
61
|
+
className: z.ZodOptional<z.ZodString>;
|
|
62
|
+
popoverClassName: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
loading: boolean;
|
|
65
|
+
size: "xl" | "lg" | "md";
|
|
66
|
+
multiple: boolean;
|
|
67
|
+
searchDebounce: number;
|
|
68
|
+
clearable: boolean;
|
|
69
|
+
autoOpenOnFocus: boolean;
|
|
70
|
+
className?: string | undefined;
|
|
71
|
+
children?: any;
|
|
72
|
+
error?: boolean | undefined;
|
|
73
|
+
filter?: any;
|
|
74
|
+
label?: any;
|
|
75
|
+
description?: any;
|
|
76
|
+
value?: any;
|
|
77
|
+
disabled?: boolean | undefined;
|
|
78
|
+
defaultValue?: any;
|
|
79
|
+
onValueChange?: any;
|
|
80
|
+
placeholder?: string | undefined;
|
|
81
|
+
onSearch?: any;
|
|
82
|
+
emptyMessage?: any;
|
|
83
|
+
loadingMessage?: any;
|
|
84
|
+
popoverClassName?: string | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
className?: string | undefined;
|
|
87
|
+
children?: any;
|
|
88
|
+
error?: boolean | undefined;
|
|
89
|
+
filter?: any;
|
|
90
|
+
label?: any;
|
|
91
|
+
loading?: boolean | undefined;
|
|
92
|
+
description?: any;
|
|
93
|
+
value?: any;
|
|
94
|
+
size?: "xl" | "lg" | "md" | undefined;
|
|
95
|
+
multiple?: boolean | undefined;
|
|
96
|
+
disabled?: boolean | undefined;
|
|
97
|
+
defaultValue?: any;
|
|
98
|
+
onValueChange?: any;
|
|
99
|
+
placeholder?: string | undefined;
|
|
100
|
+
onSearch?: any;
|
|
101
|
+
searchDebounce?: number | undefined;
|
|
102
|
+
emptyMessage?: any;
|
|
103
|
+
loadingMessage?: any;
|
|
104
|
+
clearable?: boolean | undefined;
|
|
105
|
+
autoOpenOnFocus?: boolean | undefined;
|
|
106
|
+
popoverClassName?: string | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
//# sourceMappingURL=combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/schemas/combobox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EA0CnC,CAAC;AAEJ,eAAO,MAAM,oCAAoC;;;;;;;;;EAU9C,CAAC;AAEJ,eAAO,MAAM,6BAA6B;;;;;;;;;EAUvC,CAAC;AAEJ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2G7B,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/comboboxPropsSchema",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"comboboxPropsSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"children": {
|
|
8
|
+
"description": "<Combobox.Option> elements (required). Other children are ignored with a dev-mode warning. Async-search consumers swap this list as `onSearch` results arrive."
|
|
9
|
+
},
|
|
10
|
+
"value": {
|
|
11
|
+
"description": "Selected value. string for single, string[] for multiple"
|
|
12
|
+
},
|
|
13
|
+
"defaultValue": {
|
|
14
|
+
"description": "Initial value (uncontrolled)"
|
|
15
|
+
},
|
|
16
|
+
"onValueChange": {
|
|
17
|
+
"description": "Value change callback. (value: string | string[]) => void"
|
|
18
|
+
},
|
|
19
|
+
"multiple": {
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"default": false,
|
|
22
|
+
"description": "Multi-select mode. Selected values shown as chips inside input"
|
|
23
|
+
},
|
|
24
|
+
"onSearch": {
|
|
25
|
+
"description": "Async search callback. (query: string) => void. Triggers external data fetching with debounce. When set, the built-in client filter is disabled — render whatever <Combobox.Option> children match the latest results."
|
|
26
|
+
},
|
|
27
|
+
"searchDebounce": {
|
|
28
|
+
"type": "number",
|
|
29
|
+
"default": 250,
|
|
30
|
+
"description": "Debounce delay (ms) before onSearch fires"
|
|
31
|
+
},
|
|
32
|
+
"loading": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": false,
|
|
35
|
+
"description": "Externally-controlled loading state. Shows spinner in input suffix and a status row inside the popover."
|
|
36
|
+
},
|
|
37
|
+
"filter": {
|
|
38
|
+
"description": "Custom client-side filter. (option: { value, textValue, disabled }, query: string) => boolean. Default: case-insensitive textValue includes match. Ignored when onSearch is set."
|
|
39
|
+
},
|
|
40
|
+
"placeholder": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Input placeholder"
|
|
43
|
+
},
|
|
44
|
+
"emptyMessage": {
|
|
45
|
+
"description": "Message when no options match (string | ReactNode). Default: \"검색 결과 없음\""
|
|
46
|
+
},
|
|
47
|
+
"loadingMessage": {
|
|
48
|
+
"description": "Message during loading state inside popover (string | ReactNode). Default: \"검색 중…\""
|
|
49
|
+
},
|
|
50
|
+
"size": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"enum": [
|
|
53
|
+
"md",
|
|
54
|
+
"lg",
|
|
55
|
+
"xl"
|
|
56
|
+
],
|
|
57
|
+
"default": "md",
|
|
58
|
+
"description": "Input size (matches TextInput tokens)"
|
|
59
|
+
},
|
|
60
|
+
"disabled": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"description": "Disabled"
|
|
63
|
+
},
|
|
64
|
+
"error": {
|
|
65
|
+
"type": "boolean",
|
|
66
|
+
"description": "Error state"
|
|
67
|
+
},
|
|
68
|
+
"clearable": {
|
|
69
|
+
"type": "boolean",
|
|
70
|
+
"default": true,
|
|
71
|
+
"description": "Show clear button when value(s) exist"
|
|
72
|
+
},
|
|
73
|
+
"autoOpenOnFocus": {
|
|
74
|
+
"type": "boolean",
|
|
75
|
+
"default": true,
|
|
76
|
+
"description": "Open popover automatically when input gains focus"
|
|
77
|
+
},
|
|
78
|
+
"label": {
|
|
79
|
+
"description": "Field label (ReactNode)"
|
|
80
|
+
},
|
|
81
|
+
"description": {
|
|
82
|
+
"description": "Helper text below input (ReactNode)"
|
|
83
|
+
},
|
|
84
|
+
"className": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Wrapper className"
|
|
87
|
+
},
|
|
88
|
+
"popoverClassName": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"description": "Popover content className"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"additionalProperties": false,
|
|
94
|
+
"description": "Searchable select with compound option API. Text input + popover listbox. Single/multi-select. Sync (auto-filter) or async (onSearch + loading) modes.\n\nWHEN TO USE:\n • Options ≥ 7, OR labels are long, OR search/filter is needed → Combobox (not Select)\n • Multi-select form field → Combobox with multiple (chips render inside input)\n • Async data from server → set onSearch + loading\nFor ≤7 simple options use Select. For free-text tags use TagInput.\n\nCOMPOUND API:\n <Combobox value={v} onValueChange={setV} placeholder=\"…\">\n <Combobox.Option value=\"kr\">한국</Combobox.Option>\n <Combobox.Option value=\"jp\" disabled>\n 일본\n <Combobox.OptionDescription>품절</Combobox.OptionDescription>\n <Combobox.OptionMeta>JP</Combobox.OptionMeta>\n </Combobox.Option>\n </Combobox>\n\n • <Combobox.Option> requires unique `value` (dev mode warns on duplicates and drops the duplicate)\n • <Combobox.OptionDescription> = secondary line under label\n • <Combobox.OptionMeta> = right-aligned slot (price, shortcut, badge)\n • Both slots are excluded from textValue-based search\n\nASYNC PATTERN:\n <Combobox loading={isFetching} onSearch={(q) => mutate(q)}>\n {results.map((u) => (\n <Combobox.Option key={u.id} value={u.id}>{u.name}\n <Combobox.OptionDescription>{u.email}</Combobox.OptionDescription>\n </Combobox.Option>\n ))}\n </Combobox>\n — onSearch fires after searchDebounce (default 250ms). Do NOT clear input on result update; component preserves user's typing.\n\nIME (Korean/Japanese/Chinese): Enter during composition is ignored automatically — do not add custom keydown handlers.\n\nANTI-PATTERNS:\n ✗ <Select> with 20 options → <Combobox>\n ✗ Manual <input> + dropdown div + filter logic → <Combobox>\n ✗ Passing options through a prop array (legacy API removed) → use <Combobox.Option> children\n ✗ Wrapping options in extra elements (<div><Combobox.Option/></div>) → keep them as direct children\n ✗ Same `value` on two <Combobox.Option> — duplicates are warned + dropped in dev mode\n ✗ Setting value externally to clear input mid-typing → use onValueChange instead"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
98
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/comboboxOptionPropsSchema",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"comboboxOptionPropsSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"value": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Unique value (string, required). Duplicate values within one Combobox produce a dev-mode console.error and the duplicate option is dropped."
|
|
10
|
+
},
|
|
11
|
+
"disabled": {
|
|
12
|
+
"type": "boolean",
|
|
13
|
+
"description": "Disable selection. Skipped by keyboard navigation (Arrow Up/Down, Home/End)."
|
|
14
|
+
},
|
|
15
|
+
"textValue": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Text used for client-side filtering and the input display when this option is selected. If omitted, derived from `children` (string nodes only; OptionDescription / OptionMeta are excluded). Set this when label contains icons or non-text nodes you still want searchable (e.g. textValue=\"apple 사과 fruit\")."
|
|
18
|
+
},
|
|
19
|
+
"className": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Class merged onto the rendered <div role=\"option\">."
|
|
22
|
+
},
|
|
23
|
+
"children": {
|
|
24
|
+
"description": "Label content + optional <Combobox.OptionDescription> / <Combobox.OptionMeta> slots."
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": [
|
|
28
|
+
"value"
|
|
29
|
+
],
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"description": "Single Combobox option. Direct child of <Combobox> only.\n\nWHEN TO USE:\n • One per selectable item; `value` MUST be unique within the Combobox\n • Wrap rich content (icons, badges) directly as children — no escape hatch needed\n • Use textValue when label is non-text (e.g. <Combobox.Option value=\"apple\" textValue=\"사과 apple\">🍎</Combobox.Option>)\n\nANTI-PATTERNS:\n ✗ <Combobox><div><Combobox.Option/></div></Combobox> — Option must be a direct child\n ✗ Same value on two options → dev warning + silent drop; pick unique values\n ✗ Putting label text inside <Combobox.OptionDescription> — that slot is the secondary line below the label"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
35
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/comboboxOptionDescriptionPropsSchema",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"comboboxOptionDescriptionPropsSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"children": {
|
|
8
|
+
"description": "Secondary text below the label (ReactNode)."
|
|
9
|
+
},
|
|
10
|
+
"className": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Class for the description node."
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"description": "Secondary text shown below an option label. Use for hints like \"Republic of Korea\" beneath \"한국\". Excluded from textValue-based search."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/comboboxOptionMetaPropsSchema",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"comboboxOptionMetaPropsSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"children": {
|
|
8
|
+
"description": "Right-aligned meta content (price, badge, shortcut, etc.)."
|
|
9
|
+
},
|
|
10
|
+
"className": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Class for the meta slot."
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"description": "Right-aligned slot inside an option. Use for prices, keyboard shortcuts, version tags, status badges. Excluded from textValue-based search."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
20
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countdown.d.ts","sourceRoot":"","sources":["../../src/schemas/countdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"countdown.d.ts","sourceRoot":"","sources":["../../src/schemas/countdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC9B,CAAC"}
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"endTimestamp"
|
|
52
52
|
],
|
|
53
53
|
"additionalProperties": false,
|
|
54
|
-
"description": "Countdown timer."
|
|
54
|
+
"description": "Countdown — live timer counting down to endTimestamp (Unix ms).\n\nWHEN TO USE:\n • Sale ends in / event starts in / token claim window\n • OTP / verification code expiry\n • Counting up (since X) → not Countdown; use Counter or custom interval\n • Persistent server time → pass server-synced endTimestamp (not Date.now offset)\n\nshowDays=false for short timers (<24h) to declutter. Use render prop for fully custom layouts.\n\nANTI-PATTERNS:\n ✗ Countdown without onEnd handler — UI stuck at 0\n ✗ Countdown across SSR without hydration safety — pass endTimestamp from server\n ✗ Updating endTimestamp every render — causes jitter"
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/schemas/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/schemas/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC"}
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"endValue"
|
|
54
54
|
],
|
|
55
55
|
"additionalProperties": false,
|
|
56
|
-
"description": "
|
|
56
|
+
"description": "Counter — animated number tick from startValue to endValue.\n\nWHEN TO USE:\n • Marketing landing — \"10,000+ users\" KPI displays\n • Stat dashboards (animate when value changes)\n • Live tickers / real-time data — re-render plain text instead (Counter is one-shot animation)\n • Currency input / editable number → NumberInput / PriceInput\n\ntriggerOnView=true delays animation until element scrolls into view (good for landing pages).\n\nANTI-PATTERNS:\n ✗ Counter for values that update frequently — animation queue conflicts\n ✗ Long duration on critical numbers (users wait to read)\n ✗ Counter without separator for large numbers (hard to read)"
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const dataGridPropsSchema: z.ZodObject<{
|
|
3
|
+
list: z.ZodNullable<z.ZodArray<z.ZodAny, "many">>;
|
|
4
|
+
columns: z.ZodUnion<[z.ZodNumber, z.ZodObject<{
|
|
5
|
+
base: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
sm: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
md: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
lg: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
xl: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
'2xl': z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
base?: number | undefined;
|
|
13
|
+
xl?: number | undefined;
|
|
14
|
+
lg?: number | undefined;
|
|
15
|
+
md?: number | undefined;
|
|
16
|
+
sm?: number | undefined;
|
|
17
|
+
'2xl'?: number | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
base?: number | undefined;
|
|
20
|
+
xl?: number | undefined;
|
|
21
|
+
lg?: number | undefined;
|
|
22
|
+
md?: number | undefined;
|
|
23
|
+
sm?: number | undefined;
|
|
24
|
+
'2xl'?: number | undefined;
|
|
25
|
+
}>]>;
|
|
26
|
+
gap: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
|
|
27
|
+
noDataMessage: z.ZodOptional<z.ZodAny>;
|
|
28
|
+
errorFallback: z.ZodOptional<z.ZodAny>;
|
|
29
|
+
loadingElement: z.ZodOptional<z.ZodAny>;
|
|
30
|
+
skeletonElement: z.ZodOptional<z.ZodAny>;
|
|
31
|
+
skeletonCount: z.ZodDefault<z.ZodNumber>;
|
|
32
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
33
|
+
children: z.ZodAny;
|
|
34
|
+
className: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
loading: boolean;
|
|
37
|
+
list: any[] | null;
|
|
38
|
+
columns: number | {
|
|
39
|
+
base?: number | undefined;
|
|
40
|
+
xl?: number | undefined;
|
|
41
|
+
lg?: number | undefined;
|
|
42
|
+
md?: number | undefined;
|
|
43
|
+
sm?: number | undefined;
|
|
44
|
+
'2xl'?: number | undefined;
|
|
45
|
+
};
|
|
46
|
+
skeletonCount: number;
|
|
47
|
+
gap?: string | number | undefined;
|
|
48
|
+
className?: string | undefined;
|
|
49
|
+
children?: any;
|
|
50
|
+
loadingElement?: any;
|
|
51
|
+
skeletonElement?: any;
|
|
52
|
+
noDataMessage?: any;
|
|
53
|
+
errorFallback?: any;
|
|
54
|
+
}, {
|
|
55
|
+
list: any[] | null;
|
|
56
|
+
columns: number | {
|
|
57
|
+
base?: number | undefined;
|
|
58
|
+
xl?: number | undefined;
|
|
59
|
+
lg?: number | undefined;
|
|
60
|
+
md?: number | undefined;
|
|
61
|
+
sm?: number | undefined;
|
|
62
|
+
'2xl'?: number | undefined;
|
|
63
|
+
};
|
|
64
|
+
gap?: string | number | undefined;
|
|
65
|
+
className?: string | undefined;
|
|
66
|
+
children?: any;
|
|
67
|
+
loading?: boolean | undefined;
|
|
68
|
+
loadingElement?: any;
|
|
69
|
+
skeletonCount?: number | undefined;
|
|
70
|
+
skeletonElement?: any;
|
|
71
|
+
noDataMessage?: any;
|
|
72
|
+
errorFallback?: any;
|
|
73
|
+
}>;
|
|
74
|
+
//# sourceMappingURL=data-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid.d.ts","sourceRoot":"","sources":["../../src/schemas/data-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0D7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-list.d.ts","sourceRoot":"","sources":["../../src/schemas/data-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"data-list.d.ts","sourceRoot":"","sources":["../../src/schemas/data-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmD7B,CAAC"}
|