@7onic-ui/react 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,6 +33,7 @@
33
33
  | **🔓** | **Framework-agnostic tokens** | Tokens ship as pure CSS variables. Use with Vue, Angular, Svelte, or vanilla CSS — no React required. |
34
34
  | **🤖** | **AI-ready** | Ships with `llms.txt` — AI builds with design tokens, not hardcoded values. Zero config for Claude, Cursor, Copilot. |
35
35
  | **🌏** | **CJK-first typography** | Type scale tuned for Japanese kanji, Korean hangul, and Latin — not an afterthought. |
36
+ | **🔐** | **Supply chain verified** | Cryptographically signed releases (npm provenance), automated vulnerability scanning in CI, reproducible builds. You can verify every package came from this exact GitHub commit — not a hijacked account. |
36
37
  | **🔥** | **Relentlessly updated** | Actively maintained with continuous research, refinement, and new features. Not abandoned — ever. |
37
38
 
38
39
  ---
@@ -267,6 +268,8 @@ Works with Claude Code, Cursor, GitHub Copilot, ChatGPT, and any AI tool that re
267
268
  - [x] AI integration — `llms.txt` standard, setup guides for Claude Code / Cursor / Copilot / ChatGPT
268
269
  - [x] `npx 7onic add` CLI (shadcn-style) — source copy with dependency resolution
269
270
  - [x] `npx 7onic init` Vite support — `tsconfig.app.json` detection, `@import "tailwindcss"` + `@source` auto-inject, `@/` path alias auto-configure
271
+ - [x] Technical blog — [blog.7onic.design](https://blog.7onic.design) ("Design to Code" series)
272
+ - [x] Enterprise-grade supply chain security — cryptographically signed releases (npm provenance), automated vulnerability scanning on every build, reproducible installs. Protection against npm package hijacking attacks (like the 2026 axios incident)
270
273
  - [ ] Theme Customizer — live palette preview + CSS variable export
271
274
  - [ ] Figma UI Kit
272
275
  - [ ] Dashboard / landing templates
package/dist/chart.d.mts CHANGED
@@ -74,7 +74,7 @@ type ChartTooltipContentProps = React.ComponentProps<'div'> & {
74
74
  labelKey?: string;
75
75
  };
76
76
  declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: ChartTooltipContentProps): React.JSX.Element | null;
77
- declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
77
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
78
78
  type LegendPayloadItem = {
79
79
  value?: string;
80
80
  type?: string;
@@ -150,7 +150,7 @@ declare const Chart: typeof ChartContainer & {
150
150
  Pie: typeof ChartPie;
151
151
  Tooltip: typeof ChartTooltip;
152
152
  TooltipContent: typeof ChartTooltipContent;
153
- Legend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
153
+ Legend: typeof RechartsPrimitive.Legend;
154
154
  LegendContent: typeof ChartLegendContent;
155
155
  XAxis: typeof ChartXAxis;
156
156
  YAxis: typeof ChartYAxis;
package/dist/chart.d.ts CHANGED
@@ -74,7 +74,7 @@ type ChartTooltipContentProps = React.ComponentProps<'div'> & {
74
74
  labelKey?: string;
75
75
  };
76
76
  declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: ChartTooltipContentProps): React.JSX.Element | null;
77
- declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
77
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
78
78
  type LegendPayloadItem = {
79
79
  value?: string;
80
80
  type?: string;
@@ -150,7 +150,7 @@ declare const Chart: typeof ChartContainer & {
150
150
  Pie: typeof ChartPie;
151
151
  Tooltip: typeof ChartTooltip;
152
152
  TooltipContent: typeof ChartTooltipContent;
153
- Legend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
153
+ Legend: typeof RechartsPrimitive.Legend;
154
154
  LegendContent: typeof ChartLegendContent;
155
155
  XAxis: typeof ChartXAxis;
156
156
  YAxis: typeof ChartYAxis;
package/llms.txt CHANGED
@@ -500,7 +500,7 @@ import { Button, ButtonGroup } from '@7onic-ui/react'
500
500
  | radius | Button radius values | — | Applied to all children |
501
501
  | fontWeight | `'normal' \| 'semibold'` | — | Applied to all children |
502
502
  | orientation | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout direction |
503
- | attached | `boolean` | `false` | Overlapping borders |
503
+ | attached | `boolean` | `true` | Overlapping borders |
504
504
  | disabled | `boolean` | `false` | Disable all children |
505
505
 
506
506
  Provides context — child Buttons inherit variant/size/radius automatically.
@@ -547,6 +547,7 @@ import { Textarea } from '@7onic-ui/react'
547
547
  | resize | `'none' \| 'vertical' \| 'horizontal' \| 'both'` | `'vertical'` | Resize handle |
548
548
  | error | `boolean` | `false` | Error state |
549
549
  | focusRing | `boolean` | `false` | Explicit focus ring |
550
+ | rows | `number` | `4` | Initial row count |
550
551
 
551
552
  ---
552
553
 
@@ -602,7 +603,7 @@ import { DropdownMenu } from '@7onic-ui/react'
602
603
 
603
604
  | Prop (Content) | Type | Default | Description |
604
605
  |---|---|---|---|
605
- | radius | `'md' \| 'lg' \| 'xl'` | `'lg'` | Border radius |
606
+ | radius | `'md' \| 'lg' \| 'xl'` | `'md'` | Border radius |
606
607
  | size | `'sm' \| 'md' \| 'lg'` | `'md'` | Item density |
607
608
  | flush | `boolean` | `false` | Full-width items (no padding) |
608
609
  | sideOffset | `number` | `4` | Gap from trigger |
@@ -781,7 +782,7 @@ import { Slider } from '@7onic-ui/react'
781
782
  |---|---|---|---|
782
783
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Track/thumb size |
783
784
  | color | `'default' \| 'primary'` | `'default'` | Active track color |
784
- | showTooltip | `'auto' \| 'always' \| 'never'` | `'auto'` | Tooltip display |
785
+ | showTooltip | `'auto' \| 'always' \| 'never'` | `'never'` | Tooltip display |
785
786
  | formatLabel | `(value: number) => string` | — | Tooltip value formatter |
786
787
  | startContent | `ReactNode` | — | Left content (label/icon) |
787
788
  | endContent | `ReactNode` | — | Right content (label/icon) |
@@ -853,7 +854,7 @@ import { Avatar } from '@7onic-ui/react'
853
854
  | Prop (Fallback) | Type | Default | Description |
854
855
  |---|---|---|---|
855
856
  | name | `string` | — | Auto-generates initials |
856
- | colorized | `boolean` | `false` | Deterministic color from name hash |
857
+ | colorized | `string` | — | Pass a name/key string to enable deterministic colored fallback |
857
858
  | colorVariant | `'vivid' \| 'soft'` | `'vivid'` | Color intensity |
858
859
 
859
860
  | Prop (Group) | Type | Default | Description |
@@ -964,6 +965,10 @@ import { Table } from '@7onic-ui/react'
964
965
  | interactive | `boolean` | `false` | Hover highlight |
965
966
  | selected | `boolean` | `false` | Selected state |
966
967
 
968
+ | Prop (Cell) | Type | Default | Description |
969
+ |---|---|---|---|
970
+ | align | `'left' \| 'center' \| 'right'` | `'left'` | Text alignment |
971
+
967
972
  **Sub-components:** Table.Header, Table.Body, Table.Footer, Table.Row, Table.Head, Table.Cell, Table.Caption
968
973
 
969
974
  ---
@@ -991,7 +996,7 @@ import { Tabs } from '@7onic-ui/react'
991
996
  | size | `'sm' \| 'md' \| 'default' \| 'lg'` | `'default'` | Tab size |
992
997
  | fitted | `boolean` | `false` | Full width tabs |
993
998
  | color | `'default' \| 'primary'` | `'default'` | Active tab color |
994
- | radius | `'none' \| 'sm' \| 'md' \| 'default' \| 'lg' \| 'full'` | `'default'` | Border radius (enclosed/pill) |
999
+ | radius | `'none' \| 'sm' \| 'base' \| 'md' \| 'lg' \| 'xl' \| '2xl' \| '3xl' \| 'full'` | `'md'` | Border radius (enclosed/pill) |
995
1000
 
996
1001
  **Sub-components:** Tabs.List, Tabs.Trigger, Tabs.Content
997
1002
 
@@ -1016,11 +1021,11 @@ import { Accordion } from '@7onic-ui/react'
1016
1021
 
1017
1022
  | Prop (Root) | Type | Default | Description |
1018
1023
  |---|---|---|---|
1019
- | type | `'single' \| 'multiple'` | required | Expansion mode |
1024
+ | type | `'single' \| 'multiple'` | `'single'` | Expansion mode |
1020
1025
  | variant | `'default' \| 'bordered' \| 'splitted'` | `'default'` | Visual style |
1021
1026
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Padding scale |
1022
1027
  | iconPosition | `'left' \| 'right'` | `'right'` | Chevron placement |
1023
- | collapsible | `boolean` | `false` | Allow all closed (single only) |
1028
+ | collapsible | `boolean` | `true` | Allow all closed (single only) |
1024
1029
 
1025
1030
  **Sub-components:** Accordion.Item, Accordion.Trigger (with `icon` prop), Accordion.Content
1026
1031
 
@@ -1078,8 +1083,8 @@ import { Modal, Button } from '@7onic-ui/react'
1078
1083
 
1079
1084
  | Prop (Content) | Type | Default | Description |
1080
1085
  |---|---|---|---|
1081
- | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'full'` | `'md'` | Modal width |
1082
- | scrollBehavior | `'inside' \| 'outside'` | `'inside'` | Scroll target |
1086
+ | size | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'full'` | `'sm'` | Modal width |
1087
+ | scrollBehavior | `'inside' \| 'outside'` | `'outside'` | Scroll target |
1083
1088
  | showCloseButton | `boolean` | `true` | Show X button |
1084
1089
 
1085
1090
  **Sub-components:** Modal.Trigger, Modal.Portal, Modal.Overlay, Modal.Content, Modal.Header, Modal.Title, Modal.Description, Modal.Body, Modal.Footer, Modal.Close
@@ -1088,6 +1093,42 @@ import { Modal, Button } from '@7onic-ui/react'
1088
1093
 
1089
1094
  ---
1090
1095
 
1096
+ ### AlertModal
1097
+
1098
+ ```tsx
1099
+ import { AlertModal, Button } from '@7onic-ui/react'
1100
+
1101
+ <AlertModal>
1102
+ <AlertModal.Trigger asChild>
1103
+ <Button color="destructive">Delete</Button>
1104
+ </AlertModal.Trigger>
1105
+ <AlertModal.Portal>
1106
+ <AlertModal.Overlay />
1107
+ <AlertModal.Content size="sm">
1108
+ <AlertModal.Header>
1109
+ <AlertModal.Title>Delete item?</AlertModal.Title>
1110
+ <AlertModal.Description>This action cannot be undone.</AlertModal.Description>
1111
+ </AlertModal.Header>
1112
+ <AlertModal.Body>Further confirmation details</AlertModal.Body>
1113
+ <AlertModal.Footer>
1114
+ <AlertModal.Cancel asChild><Button variant="outline">Cancel</Button></AlertModal.Cancel>
1115
+ <AlertModal.Action asChild><Button color="destructive">Delete</Button></AlertModal.Action>
1116
+ </AlertModal.Footer>
1117
+ </AlertModal.Content>
1118
+ </AlertModal.Portal>
1119
+ </AlertModal>
1120
+ ```
1121
+
1122
+ | Prop (Content) | Type | Default | Description |
1123
+ |---|---|---|---|
1124
+ | size | `'xs' \| 'sm'` | `'sm'` | AlertModal width (smaller than Modal by design) |
1125
+
1126
+ **Sub-components:** AlertModal.Trigger, AlertModal.Portal, AlertModal.Overlay, AlertModal.Content, AlertModal.Header, AlertModal.Title, AlertModal.Description, AlertModal.Body, AlertModal.Footer, AlertModal.Action, AlertModal.Cancel
1127
+
1128
+ **Required structure:** Portal → Overlay + Content (same as Modal). Use for destructive confirmations — renders as `role="alertdialog"` via Radix AlertDialog primitive. No close button by default (force user to Action or Cancel).
1129
+
1130
+ ---
1131
+
1091
1132
  ### Drawer
1092
1133
 
1093
1134
  ```tsx
@@ -1151,8 +1192,8 @@ import { Tooltip } from '@7onic-ui/react'
1151
1192
  | variant | `'default' \| 'inverted'` | `'default'` | Dark/light bg |
1152
1193
  | size | `'sm' \| 'default'` | `'default'` | Padding scale |
1153
1194
  | side | `'top' \| 'right' \| 'bottom' \| 'left'` | `'top'` | Placement |
1154
- | showArrow | `boolean` | `false` | Show arrow |
1155
- | sideOffset | `number` | `4` | Gap from trigger |
1195
+ | showArrow | `boolean` | `true` | Show arrow |
1196
+ | sideOffset | `number` | `6` | Gap from trigger |
1156
1197
 
1157
1198
  **⚠️ Tooltip.Provider is required** — wrap your app or section with it.
1158
1199
  **Sub-components:** Tooltip.Provider, Tooltip.Trigger, Tooltip.Content, Tooltip.Arrow, Tooltip.Portal
@@ -1182,7 +1223,7 @@ import { Popover, Button } from '@7onic-ui/react'
1182
1223
  | variant | `'default' \| 'elevated'` | `'default'` | Shadow style |
1183
1224
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Padding scale |
1184
1225
  | side | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | Placement |
1185
- | showArrow | `boolean` | `false` | Show arrow |
1226
+ | showArrow | `boolean` | `true` | Show arrow |
1186
1227
  | showClose | `boolean` | `false` | Show X button |
1187
1228
 
1188
1229
  **Sub-components:** Popover.Trigger, Popover.Content, Popover.Arrow, Popover.Close, Popover.Anchor, Popover.Portal
@@ -1263,9 +1304,9 @@ toast.dismiss() // Dismiss all
1263
1304
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Toast size |
1264
1305
  | duration | `number` | `4000` | Auto-dismiss ms (0 = persistent) |
1265
1306
  | closeButton | `boolean` | `false` | Show close button |
1266
- | richColors | `boolean` | `false` | Filled color backgrounds |
1307
+ | richColors | `boolean` | `true` | Filled color backgrounds |
1267
1308
  | expand | `boolean` | `false` | Show all toasts expanded |
1268
- | visibleToasts | `number` | `3` | Max visible at once |
1309
+ | visibleToasts | `number` | `5` | Max visible at once |
1269
1310
 
1270
1311
  **⚠️ No Portal needed.** Just place `<Toaster />` in your root layout. Call `toast()` from anywhere.
1271
1312
 
@@ -1371,7 +1412,7 @@ import { Breadcrumb } from '@7onic-ui/react'
1371
1412
 
1372
1413
  | Prop (Root) | Type | Default | Description |
1373
1414
  |---|---|---|---|
1374
- | separator | `ReactNode` | `'/'` | Custom separator |
1415
+ | separator | `ReactNode` | `<ChevronRightIcon />` | Custom separator (default: chevron right icon) |
1375
1416
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Text size |
1376
1417
  | maxItems | `number` | — | Collapse threshold |
1377
1418
  | itemsBeforeCollapse | `number` | `1` | Items before ellipsis |
@@ -1403,7 +1444,7 @@ import { Pagination } from '@7onic-ui/react'
1403
1444
 
1404
1445
  | Prop (Root) | Type | Default | Description |
1405
1446
  |---|---|---|---|
1406
- | total | `number` | required | Total pages |
1447
+ | total | `number` | `1` | Total pages |
1407
1448
  | value | `number` | — | Controlled page |
1408
1449
  | defaultValue | `number` | `1` | Uncontrolled default |
1409
1450
  | onChange | `(page: number) => void` | — | Change handler |
@@ -1461,8 +1502,10 @@ import { NavigationMenu } from '@7onic-ui/react'
1461
1502
  | orientation | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout mode |
1462
1503
  | size | `'sm' \| 'md' \| 'default' \| 'lg'` | `'default'` | Item size |
1463
1504
  | collapsed | `boolean` | `false` | Icon-only mode (vertical) |
1464
- | radius | Same as Button | `'default'` | Border radius |
1505
+ | radius | Same as Button | `'lg'` | Border radius |
1465
1506
  | fontWeight | `'normal' \| 'semibold'` | `'normal'` | Font weight |
1507
+ | delayDuration | `number` | `200` | Hover delay before content opens (horizontal only, ms) |
1508
+ | skipDelayDuration | `number` | `300` | Reset delay when moving between triggers (horizontal only, ms) |
1466
1509
 
1467
1510
  | Prop (Link) | Type | Default | Description |
1468
1511
  |---|---|---|---|
@@ -1470,6 +1513,15 @@ import { NavigationMenu } from '@7onic-ui/react'
1470
1513
  | icon | `ReactNode` | — | Leading icon |
1471
1514
  | asChild | `boolean` | `false` | Slot pattern |
1472
1515
 
1516
+ | Prop (Item) | Type | Default | Description |
1517
+ |---|---|---|---|
1518
+ | value | `string` | — | Identifier for controlled state (horizontal menus) |
1519
+ | defaultOpen | `boolean` | `false` | Initial open state for vertical collapsible item |
1520
+
1521
+ | Prop (Indicator) | Type | Default | Description |
1522
+ |---|---|---|---|
1523
+ | color | `'default' \| 'primary'` | `'default'` | Indicator color (horizontal variant only) |
1524
+
1473
1525
  **Sub-components:** NavigationMenu.List, NavigationMenu.Item, NavigationMenu.Trigger, NavigationMenu.Content, NavigationMenu.Link, NavigationMenu.Group (vertical only, with `label`), NavigationMenu.Indicator (horizontal only), NavigationMenu.Viewport
1474
1526
 
1475
1527
  ---
@@ -1555,6 +1607,11 @@ const chartConfig = {
1555
1607
  | label | `'none' \| 'outside' \| 'inside'` | `'none'` | Label display |
1556
1608
  | labelContent | `'value' \| 'percent'` | `'value'` | Label format |
1557
1609
  | activeShape | `boolean` | `true` | Expand on hover |
1610
+ | paddingAngle | `number` | `0` | Gap between slices (degrees) |
1611
+ | cornerRadius | `number` | `0` | Slice corner radius (px) |
1612
+ | startAngle | `number` | `90` | Start angle (degrees, 12 o'clock = 90) |
1613
+ | endAngle | `number` | `-270` | End angle (degrees, full circle = 90→-270) |
1614
+ | innerRadius | `number` | — | Override donut inner radius (default auto by variant) |
1558
1615
 
1559
1616
  **Chart Colors (CSS variables):**
1560
1617
  `--color-chart-1` (blue), `--color-chart-2` (pink), `--color-chart-3` (lavender), `--color-chart-4` (sky), `--color-chart-5` (rose)
@@ -1595,7 +1652,7 @@ import { MetricCard } from '@7onic-ui/react'
1595
1652
  |---|---|---|---|
1596
1653
  | variant | `'default' \| 'elevated' \| 'ghost'` | `'default'` | Visual style |
1597
1654
  | size | `'sm' \| 'default' \| 'lg'` | `'default'` | Padding scale |
1598
- | radius | Same as Card + `'none'` | `'xl'` | Border radius |
1655
+ | radius | `'none' \| 'sm' \| 'base' \| 'default' \| 'lg' \| 'xl' \| '2xl' \| '3xl' \| 'full'` | `'default'` | Border radius |
1599
1656
 
1600
1657
  | Prop (Value) | Type | Default | Description |
1601
1658
  |---|---|---|---|
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@7onic-ui/react",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "private": false,
5
5
  "sideEffects": [
6
6
  "*.css"
7
7
  ],
8
- "description": "React component library with automated design token pipeline — from Figma to code",
8
+ "description": "React component library where design and code never drift — automated Figma token pipeline",
9
9
  "main": "./dist/index.js",
10
10
  "module": "./dist/index.mjs",
11
11
  "types": "./dist/index.d.ts",
@@ -77,7 +77,7 @@
77
77
  "@radix-ui/react-tooltip": "^1.1.0",
78
78
  "class-variance-authority": "^0.7.0",
79
79
  "clsx": "^2.1.0",
80
- "next-intl": "^4.9.0",
80
+ "next-intl": "^4.9.1",
81
81
  "tailwind-merge": "^2.3.0"
82
82
  },
83
83
  "peerDependencies": {
@@ -107,12 +107,13 @@
107
107
  "eslint-plugin-react": "^7.34.0",
108
108
  "eslint-plugin-react-hooks": "^4.6.0",
109
109
  "lucide-react": "^0.400.0",
110
- "next": "^15.0.0",
110
+ "next": "^15.5.15",
111
111
  "picocolors": "^1.1.1",
112
112
  "postcss": "^8.4.38",
113
113
  "prettier": "^3.3.0",
114
114
  "react": "^19.0.0",
115
115
  "react-dom": "^19.0.0",
116
+ "react-is": "^18.3.1",
116
117
  "recharts": "^3.7.0",
117
118
  "tailwindcss": "^3.4.4",
118
119
  "tailwindcss-animate": "^1.0.7",