noecosystem-design 0.2.3 → 0.4.0
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 +2 -2
- package/apps/storybook/.storybook/preview.tsx +1 -1
- package/apps/storybook/stories/catalog/app-frame.stories.tsx +213 -1
- package/apps/storybook/stories/catalog/checkbox.stories.tsx +7 -2
- package/apps/storybook/stories/catalog/data-table.stories.tsx +226 -3
- package/apps/storybook/stories/catalog/dialog.stories.tsx +2 -2
- package/apps/storybook/stories/catalog/icon-system.stories.tsx +11 -0
- package/apps/storybook/stories/catalog/menu.stories.tsx +3 -3
- package/apps/web/styles.css +0 -1
- package/docs/design-system/brand-theme.md +8 -0
- package/docs/design-system/components.md +38 -0
- package/docs/design-system/inventory.md +1 -0
- package/docs/design-system/visual-qa.md +6 -0
- package/package.json +1 -1
- package/packages/data-ui/package.json +6 -1
- package/packages/data-ui/src/data-table.tsx +2 -99
- package/packages/data-ui/src/pagination.tsx +2 -2
- package/packages/data-ui/src/table/adapters/tanstack.test.ts +116 -0
- package/packages/data-ui/src/table/adapters/tanstack.ts +179 -0
- package/packages/data-ui/src/table/contracts.ts +133 -0
- package/packages/data-ui/src/table/data-table-visual.evidence.browser.test.tsx +157 -0
- package/packages/data-ui/src/table/data-table.browser.test.tsx +180 -0
- package/packages/data-ui/src/table/data-table.tsx +524 -0
- package/packages/design-tokens/src/tailwind.css +5 -0
- package/packages/design-tokens/src/tokens.css +10 -4
- package/packages/design-tokens/src/tokens.json +8 -4
- package/packages/design-tokens/src/tokens.mjs +8 -4
- package/packages/icons/package.json +6 -1
- package/packages/icons/src/brands/nocfo.svg +8 -0
- package/packages/icons/src/nocfo-logo.browser.test.tsx +14 -0
- package/packages/icons/src/nocfo-logo.tsx +23 -0
- package/packages/registry/catalog-index.json +2 -2
- package/packages/registry/manifest.json +60 -18
- package/packages/registry/r/activity-feed.json +1 -1
- package/packages/registry/r/agent-composer.json +7 -1
- package/packages/registry/r/agent-message.json +1 -1
- package/packages/registry/r/agent-plan.json +1 -1
- package/packages/registry/r/agent-workspace.json +1 -1
- package/packages/registry/r/app-frame.json +9 -2
- package/packages/registry/r/approval-request.json +7 -1
- package/packages/registry/r/calendar.json +6 -5
- package/packages/registry/r/chart-frame.json +1 -1
- package/packages/registry/r/chart.json +1 -1
- package/packages/registry/r/dashboard-01.json +22 -2
- package/packages/registry/r/dashboard-02.json +22 -2
- package/packages/registry/r/dashboard-shell.json +1 -1
- package/packages/registry/r/data-table.json +22 -2
- package/packages/registry/r/date-picker.json +6 -5
- package/packages/registry/r/filter-bar.json +1 -1
- package/packages/registry/r/icon-system.json +18 -5
- package/packages/registry/r/inline-cta.json +6 -6
- package/packages/registry/r/metric-card.json +1 -1
- package/packages/registry/r/pagination.json +7 -5
- package/packages/registry/r/run-inspector.json +1 -1
- package/packages/registry/r/sidebar-navigation.json +5 -2
- package/packages/registry/r/tool-call.json +1 -1
- package/packages/registry/r/workflow-canvas.json +1 -1
- package/packages/registry/r/workflow-node.json +1 -1
- package/packages/registry/registry.json +12 -3
- package/packages/registry/search-index.json +23 -8
- package/packages/ui/package.json +5 -1
- package/packages/ui/src/app-frame.browser.test.tsx +6 -0
- package/packages/ui/src/app-frame.tsx +9 -2
- package/packages/ui/src/badge.tsx +4 -4
- package/packages/ui/src/calendar.tsx +1 -1
- package/packages/ui/src/checkbox.tsx +1 -1
- package/packages/ui/src/code.tsx +3 -1
- package/packages/ui/src/field.tsx +1 -1
- package/packages/ui/src/file-uploader.tsx +1 -1
- package/packages/ui/src/progress-steps.tsx +1 -1
- package/packages/ui/src/sidebar-navigation.tsx +11 -1
- package/scripts/generate-manifest.mjs +71 -0
- package/vitest.config.ts +5 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { render } from 'vitest-browser-react';
|
|
3
|
+
|
|
4
|
+
import { NocfoLogo } from './nocfo-logo';
|
|
5
|
+
|
|
6
|
+
test('NocfoLogo exposes the official wordmark with an accessible product name', async () => {
|
|
7
|
+
const screen = await render(<NocfoLogo label="سامانه NOCFO" />);
|
|
8
|
+
const logo = screen.getByRole('img', { name: 'سامانه NOCFO' });
|
|
9
|
+
|
|
10
|
+
await expect.element(logo).toHaveAttribute('data-slot', 'nocfo-logo');
|
|
11
|
+
await expect.element(logo).toHaveAttribute('width', '698');
|
|
12
|
+
await expect.element(logo).toHaveAttribute('height', '115');
|
|
13
|
+
expect(logo.element().getAttribute('src')).toMatch(/^data:image\/svg\+xml/);
|
|
14
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
|
|
3
|
+
const nocfoLogoUrl = new URL('./brands/nocfo.svg', import.meta.url).href;
|
|
4
|
+
|
|
5
|
+
export interface NocfoLogoProps extends Omit<React.ComponentProps<'img'>, 'alt' | 'src'> {
|
|
6
|
+
/** Localized accessible name. Pass an empty string only when adjacent text names the brand. */
|
|
7
|
+
label?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Official NOCFO wordmark. Brand artwork is never directionally mirrored. */
|
|
11
|
+
export function NocfoLogo({ label = 'NOCFO', style, ...props }: NocfoLogoProps) {
|
|
12
|
+
return (
|
|
13
|
+
<img
|
|
14
|
+
alt={label}
|
|
15
|
+
data-slot="nocfo-logo"
|
|
16
|
+
height={115}
|
|
17
|
+
src={nocfoLogoUrl}
|
|
18
|
+
style={{ blockSize: 'auto', inlineSize: '8.75rem', ...style }}
|
|
19
|
+
width={698}
|
|
20
|
+
{...props}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-08-
|
|
2
|
+
"generatedAt": "2026-08-30T12:09:40.539Z",
|
|
3
3
|
"items": [
|
|
4
4
|
{
|
|
5
5
|
"id": "bidi-text",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
"package": "@noe/data-ui",
|
|
209
209
|
"status": "available",
|
|
210
210
|
"maturity": "beta",
|
|
211
|
-
"description": "
|
|
211
|
+
"description": "Semantic data table with TanStack Table v9 as a headless engine behind the internal NOE adapter: sorting, NOE filter operators, controlled pagination, stable-id selection, loading skeletons and server mode.",
|
|
212
212
|
"registryItem": "data-table"
|
|
213
213
|
},
|
|
214
214
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-30T12:09:40.530Z",
|
|
4
4
|
"generatedNote": "Canonical NOE manifest — single source of truth for catalog, audit, registry, stories, docs and agent search. Generated by pnpm gen:manifest; do not edit by hand for automated fields.",
|
|
5
5
|
"items": [
|
|
6
6
|
{
|
|
@@ -1027,33 +1027,75 @@
|
|
|
1027
1027
|
"status": "available",
|
|
1028
1028
|
"maturity": "beta",
|
|
1029
1029
|
"category": "Data",
|
|
1030
|
-
"description": "
|
|
1031
|
-
"capabilityAliases": ["data table", "
|
|
1032
|
-
"searchTerms": [
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1030
|
+
"description": "Semantic data table with TanStack Table v9 as a headless engine behind the internal NOE adapter: sorting, NOE filter operators, controlled pagination, stable-id selection, loading skeletons and server mode.",
|
|
1031
|
+
"capabilityAliases": ["data table", "sortable table", "server-side table", "grid"],
|
|
1032
|
+
"searchTerms": [
|
|
1033
|
+
"data-table",
|
|
1034
|
+
"table",
|
|
1035
|
+
"sorting",
|
|
1036
|
+
"filtering",
|
|
1037
|
+
"pagination",
|
|
1038
|
+
"selection",
|
|
1039
|
+
"server-side",
|
|
1040
|
+
"aria-sort"
|
|
1041
|
+
],
|
|
1042
|
+
"useWhen": [
|
|
1043
|
+
"tabular product data with sorting, filtering, pagination or row selection",
|
|
1044
|
+
"server-driven pages composed from toDataQuery against Django APIs"
|
|
1045
|
+
],
|
|
1046
|
+
"doNotUseWhen": [
|
|
1047
|
+
"spreadsheet-style cell editing grids",
|
|
1048
|
+
"static lists without tabular semantics"
|
|
1049
|
+
],
|
|
1050
|
+
"alternatives": ["DataList"],
|
|
1051
|
+
"dependencies": ["@noe/ui", "@tanstack/react-table"],
|
|
1037
1052
|
"registryDependencies": [],
|
|
1038
1053
|
"peerDependencies": ["react"],
|
|
1039
1054
|
"propsSummary": {
|
|
1040
|
-
"
|
|
1041
|
-
"
|
|
1055
|
+
"columns": "DataColumn<Row>[]",
|
|
1056
|
+
"rows": "Row[]",
|
|
1057
|
+
"caption": "string",
|
|
1058
|
+
"empty": "ReactNode",
|
|
1059
|
+
"sorting": "readonly DataSort[]",
|
|
1060
|
+
"filters": "readonly FilterSpec[]",
|
|
1061
|
+
"page": "PageSpec",
|
|
1062
|
+
"selection": "readonly RowId[]",
|
|
1063
|
+
"density": "'compact' | 'regular'",
|
|
1064
|
+
"loading": "boolean",
|
|
1065
|
+
"manualSorting": "boolean",
|
|
1066
|
+
"manualFiltering": "boolean",
|
|
1067
|
+
"manualPagination": "boolean",
|
|
1068
|
+
"totalRowCount": "number"
|
|
1042
1069
|
},
|
|
1043
|
-
"variants": ["
|
|
1070
|
+
"variants": ["regular", "compact"],
|
|
1044
1071
|
"sizes": [],
|
|
1045
1072
|
"slots": [],
|
|
1046
|
-
"states": ["default", "hover", "
|
|
1047
|
-
"tokenContracts": [
|
|
1073
|
+
"states": ["default", "hover", "loading", "selected", "empty", "focus-visible"],
|
|
1074
|
+
"tokenContracts": [
|
|
1075
|
+
"color.border",
|
|
1076
|
+
"color.foreground",
|
|
1077
|
+
"color.muted-foreground",
|
|
1078
|
+
"surface.sunken",
|
|
1079
|
+
"muted"
|
|
1080
|
+
],
|
|
1048
1081
|
"accessibility": {
|
|
1049
|
-
"
|
|
1050
|
-
"
|
|
1051
|
-
|
|
1082
|
+
"role": "table",
|
|
1083
|
+
"keyboard": [
|
|
1084
|
+
"Tab moves into the scrollable region",
|
|
1085
|
+
"Enter/Space on header toggles sort",
|
|
1086
|
+
"Enter/Space on checkbox toggles row selection"
|
|
1087
|
+
],
|
|
1088
|
+
"announcements": ["aria-sort on sorted column headers", "aria-live pagination status"],
|
|
1089
|
+
"focusBehavior": ["visible ring 2px", "scroll container focusable for keyboard overflow"]
|
|
1052
1090
|
},
|
|
1053
1091
|
"internationalization": {
|
|
1054
1092
|
"messageKeys": [],
|
|
1055
1093
|
"rtl": "required",
|
|
1056
|
-
"bidiNotes": [
|
|
1094
|
+
"bidiNotes": [
|
|
1095
|
+
"logical start/end alignment only",
|
|
1096
|
+
"technical cells render dir=ltr via TechnicalValue",
|
|
1097
|
+
"pagination controls use caller-provided accessible labels"
|
|
1098
|
+
]
|
|
1057
1099
|
},
|
|
1058
1100
|
"examples": [
|
|
1059
1101
|
{
|
|
@@ -1062,7 +1104,7 @@
|
|
|
1062
1104
|
"files": ["apps/storybook/stories/catalog/data-table.stories.tsx"]
|
|
1063
1105
|
}
|
|
1064
1106
|
],
|
|
1065
|
-
"relatedPatterns": [],
|
|
1107
|
+
"relatedPatterns": ["filter-bar", "pagination", "empty-state"],
|
|
1066
1108
|
"untitledMapping": null,
|
|
1067
1109
|
"storyId": "catalog-data-data-table--default",
|
|
1068
1110
|
"registryItem": "data-table"
|
|
@@ -27,7 +27,13 @@
|
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
29
|
"registryDependencies": [],
|
|
30
|
-
"dependencies": [
|
|
30
|
+
"dependencies": [
|
|
31
|
+
"@base-ui/react",
|
|
32
|
+
"@noe/ui",
|
|
33
|
+
"class-variance-authority",
|
|
34
|
+
"clsx",
|
|
35
|
+
"tailwind-merge"
|
|
36
|
+
],
|
|
31
37
|
"status": "available",
|
|
32
38
|
"maturity": "beta",
|
|
33
39
|
"package": "@noe/ai-ui",
|
|
@@ -43,10 +43,17 @@
|
|
|
43
43
|
"color.surfaceRaised",
|
|
44
44
|
"color.surfaceSunken"
|
|
45
45
|
],
|
|
46
|
-
"capabilityAliases": [
|
|
46
|
+
"capabilityAliases": [
|
|
47
|
+
"app frame",
|
|
48
|
+
"app-frame",
|
|
49
|
+
"finance application shell",
|
|
50
|
+
"admin shell",
|
|
51
|
+
"NOCFO workspace"
|
|
52
|
+
],
|
|
47
53
|
"useWhen": [
|
|
48
54
|
"using app frame in Patterns / Pages",
|
|
49
|
-
"building a flat finance or admin application shell"
|
|
55
|
+
"building a flat finance or admin application shell",
|
|
56
|
+
"composing the NOCFO bank-account workspace template shown in Storybook"
|
|
50
57
|
],
|
|
51
58
|
"doNotUseWhen": ["when app frame semantics do not match"]
|
|
52
59
|
}
|
|
@@ -32,7 +32,13 @@
|
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
34
|
"registryDependencies": [],
|
|
35
|
-
"dependencies": [
|
|
35
|
+
"dependencies": [
|
|
36
|
+
"@base-ui/react",
|
|
37
|
+
"@noe/ui",
|
|
38
|
+
"class-variance-authority",
|
|
39
|
+
"clsx",
|
|
40
|
+
"tailwind-merge"
|
|
41
|
+
],
|
|
36
42
|
"status": "available",
|
|
37
43
|
"maturity": "beta",
|
|
38
44
|
"package": "@noe/ai-ui",
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
"type": "registry:ui",
|
|
5
5
|
"title": "Calendar",
|
|
6
6
|
"description": "Calendar — Base / Pickers component. calendar provides base / pickers behavior with RTL, i18n and accessibility built-in.",
|
|
7
|
-
"registryDependencies": [],
|
|
7
|
+
"registryDependencies": ["icon-system"],
|
|
8
8
|
"dependencies": [
|
|
9
9
|
"@base-ui/react",
|
|
10
|
+
"@noe/icons",
|
|
10
11
|
"class-variance-authority",
|
|
11
12
|
"clsx",
|
|
12
13
|
"iconsax-react",
|
|
@@ -14,14 +15,14 @@
|
|
|
14
15
|
],
|
|
15
16
|
"files": [
|
|
16
17
|
{
|
|
17
|
-
"path": "packages/icons/src/
|
|
18
|
+
"path": "packages/icons/src/iconsax.tsx",
|
|
18
19
|
"type": "registry:component",
|
|
19
|
-
"target": "packages/icons/src/
|
|
20
|
+
"target": "packages/icons/src/iconsax.tsx"
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
|
-
"path": "packages/icons/src/
|
|
23
|
+
"path": "packages/icons/src/index.tsx",
|
|
23
24
|
"type": "registry:component",
|
|
24
|
-
"target": "packages/icons/src/
|
|
25
|
+
"target": "packages/icons/src/index.tsx"
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
28
|
"path": "packages/ui/src/button.tsx",
|
|
@@ -30,6 +30,26 @@
|
|
|
30
30
|
"type": "registry:component",
|
|
31
31
|
"target": "packages/data-ui/src/metric-card.tsx"
|
|
32
32
|
},
|
|
33
|
+
{
|
|
34
|
+
"path": "packages/data-ui/src/pagination.tsx",
|
|
35
|
+
"type": "registry:component",
|
|
36
|
+
"target": "packages/data-ui/src/pagination.tsx"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "packages/data-ui/src/table/adapters/tanstack.ts",
|
|
40
|
+
"type": "registry:component",
|
|
41
|
+
"target": "packages/data-ui/src/table/adapters/tanstack.ts"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"path": "packages/data-ui/src/table/contracts.ts",
|
|
45
|
+
"type": "registry:component",
|
|
46
|
+
"target": "packages/data-ui/src/table/contracts.ts"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"path": "packages/data-ui/src/table/data-table.tsx",
|
|
50
|
+
"type": "registry:component",
|
|
51
|
+
"target": "packages/data-ui/src/table/data-table.tsx"
|
|
52
|
+
},
|
|
33
53
|
{
|
|
34
54
|
"path": "packages/ui/src/bidi.tsx",
|
|
35
55
|
"type": "registry:component",
|
|
@@ -41,8 +61,8 @@
|
|
|
41
61
|
"target": "packages/ui/src/lib/cn.ts"
|
|
42
62
|
}
|
|
43
63
|
],
|
|
44
|
-
"registryDependencies": [],
|
|
45
|
-
"dependencies": ["clsx", "tailwind-merge"],
|
|
64
|
+
"registryDependencies": ["icon-system"],
|
|
65
|
+
"dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge"],
|
|
46
66
|
"status": "available",
|
|
47
67
|
"maturity": "beta",
|
|
48
68
|
"package": "@noe/data-ui",
|
|
@@ -30,6 +30,26 @@
|
|
|
30
30
|
"type": "registry:component",
|
|
31
31
|
"target": "packages/data-ui/src/metric-card.tsx"
|
|
32
32
|
},
|
|
33
|
+
{
|
|
34
|
+
"path": "packages/data-ui/src/pagination.tsx",
|
|
35
|
+
"type": "registry:component",
|
|
36
|
+
"target": "packages/data-ui/src/pagination.tsx"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "packages/data-ui/src/table/adapters/tanstack.ts",
|
|
40
|
+
"type": "registry:component",
|
|
41
|
+
"target": "packages/data-ui/src/table/adapters/tanstack.ts"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"path": "packages/data-ui/src/table/contracts.ts",
|
|
45
|
+
"type": "registry:component",
|
|
46
|
+
"target": "packages/data-ui/src/table/contracts.ts"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"path": "packages/data-ui/src/table/data-table.tsx",
|
|
50
|
+
"type": "registry:component",
|
|
51
|
+
"target": "packages/data-ui/src/table/data-table.tsx"
|
|
52
|
+
},
|
|
33
53
|
{
|
|
34
54
|
"path": "packages/ui/src/bidi.tsx",
|
|
35
55
|
"type": "registry:component",
|
|
@@ -41,8 +61,8 @@
|
|
|
41
61
|
"target": "packages/ui/src/lib/cn.ts"
|
|
42
62
|
}
|
|
43
63
|
],
|
|
44
|
-
"registryDependencies": [],
|
|
45
|
-
"dependencies": ["clsx", "tailwind-merge"],
|
|
64
|
+
"registryDependencies": ["icon-system"],
|
|
65
|
+
"dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge"],
|
|
46
66
|
"status": "available",
|
|
47
67
|
"maturity": "beta",
|
|
48
68
|
"package": "@noe/data-ui",
|
|
@@ -10,6 +10,26 @@
|
|
|
10
10
|
"type": "registry:component",
|
|
11
11
|
"target": "packages/data-ui/src/data-table.tsx"
|
|
12
12
|
},
|
|
13
|
+
{
|
|
14
|
+
"path": "packages/data-ui/src/pagination.tsx",
|
|
15
|
+
"type": "registry:component",
|
|
16
|
+
"target": "packages/data-ui/src/pagination.tsx"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "packages/data-ui/src/table/adapters/tanstack.ts",
|
|
20
|
+
"type": "registry:component",
|
|
21
|
+
"target": "packages/data-ui/src/table/adapters/tanstack.ts"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "packages/data-ui/src/table/contracts.ts",
|
|
25
|
+
"type": "registry:component",
|
|
26
|
+
"target": "packages/data-ui/src/table/contracts.ts"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "packages/data-ui/src/table/data-table.tsx",
|
|
30
|
+
"type": "registry:component",
|
|
31
|
+
"target": "packages/data-ui/src/table/data-table.tsx"
|
|
32
|
+
},
|
|
13
33
|
{
|
|
14
34
|
"path": "packages/ui/src/bidi.tsx",
|
|
15
35
|
"type": "registry:component",
|
|
@@ -21,8 +41,8 @@
|
|
|
21
41
|
"target": "packages/ui/src/lib/cn.ts"
|
|
22
42
|
}
|
|
23
43
|
],
|
|
24
|
-
"registryDependencies": [],
|
|
25
|
-
"dependencies": ["clsx", "tailwind-merge"],
|
|
44
|
+
"registryDependencies": ["icon-system"],
|
|
45
|
+
"dependencies": ["@noe/icons", "@noe/ui", "clsx", "tailwind-merge", "@tanstack/react-table"],
|
|
26
46
|
"status": "available",
|
|
27
47
|
"maturity": "beta",
|
|
28
48
|
"package": "@noe/data-ui",
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
"type": "registry:ui",
|
|
5
5
|
"title": "Date Picker",
|
|
6
6
|
"description": "Date Picker — Base / Pickers component. date-picker provides base / pickers behavior with RTL, i18n and accessibility built-in.",
|
|
7
|
-
"registryDependencies": [],
|
|
7
|
+
"registryDependencies": ["icon-system"],
|
|
8
8
|
"dependencies": [
|
|
9
9
|
"@base-ui/react",
|
|
10
|
+
"@noe/icons",
|
|
10
11
|
"class-variance-authority",
|
|
11
12
|
"clsx",
|
|
12
13
|
"iconsax-react",
|
|
@@ -14,14 +15,14 @@
|
|
|
14
15
|
],
|
|
15
16
|
"files": [
|
|
16
17
|
{
|
|
17
|
-
"path": "packages/icons/src/
|
|
18
|
+
"path": "packages/icons/src/iconsax.tsx",
|
|
18
19
|
"type": "registry:component",
|
|
19
|
-
"target": "packages/icons/src/
|
|
20
|
+
"target": "packages/icons/src/iconsax.tsx"
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
|
-
"path": "packages/icons/src/
|
|
23
|
+
"path": "packages/icons/src/index.tsx",
|
|
23
24
|
"type": "registry:component",
|
|
24
|
-
"target": "packages/icons/src/
|
|
25
|
+
"target": "packages/icons/src/index.tsx"
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
28
|
"path": "packages/ui/src/button.tsx",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "icon-system",
|
|
4
4
|
"type": "registry:ui",
|
|
5
5
|
"title": "Icon System",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "One icon and product-mark policy for NOE interfaces. Includes direction-aware Iconsax controls, the NOE mark and the official NOCFO wordmark; brand artwork never mirrors in RTL.",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": "packages/icons/src/index.tsx",
|
|
@@ -14,6 +14,16 @@
|
|
|
14
14
|
"path": "packages/icons/src/iconsax.tsx",
|
|
15
15
|
"type": "registry:component",
|
|
16
16
|
"target": "packages/icons/src/iconsax.tsx"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "packages/icons/src/nocfo-logo.tsx",
|
|
20
|
+
"type": "registry:component",
|
|
21
|
+
"target": "packages/icons/src/nocfo-logo.tsx"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "packages/icons/src/brands/nocfo.svg",
|
|
25
|
+
"type": "registry:file",
|
|
26
|
+
"target": "packages/icons/src/brands/nocfo.svg"
|
|
17
27
|
}
|
|
18
28
|
],
|
|
19
29
|
"registryDependencies": [],
|
|
@@ -30,7 +40,7 @@
|
|
|
30
40
|
"rtl": "required",
|
|
31
41
|
"i18n": {
|
|
32
42
|
"messageKeys": [],
|
|
33
|
-
"bidiNotes": ["
|
|
43
|
+
"bidiNotes": ["directional controls mirror by policy", "brand marks never mirror"]
|
|
34
44
|
},
|
|
35
45
|
"accessibility": {
|
|
36
46
|
"keyboard": ["Tab to focus", "Enter/Space activate"],
|
|
@@ -38,7 +48,10 @@
|
|
|
38
48
|
"focusBehavior": ["visible ring 2px"]
|
|
39
49
|
},
|
|
40
50
|
"tokenContracts": ["color.foreground", "color.border"],
|
|
41
|
-
"capabilityAliases": ["icon system", "icon-system"],
|
|
42
|
-
"useWhen": [
|
|
43
|
-
|
|
51
|
+
"capabilityAliases": ["icon system", "icon-system", "NOCFO logo", "product wordmark"],
|
|
52
|
+
"useWhen": [
|
|
53
|
+
"rendering interface icons through the canonical Iconsax policy",
|
|
54
|
+
"rendering the official NOCFO wordmark in product chrome"
|
|
55
|
+
],
|
|
56
|
+
"doNotUseWhen": ["rendering a third-party service logo through the NOCFO product mark"]
|
|
44
57
|
}
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"description": "Inline call to action link with trailing logical chevron, tokenized, for use within prose.",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
|
-
"path": "packages/icons/src/
|
|
9
|
+
"path": "packages/icons/src/iconsax.tsx",
|
|
10
10
|
"type": "registry:component",
|
|
11
|
-
"target": "packages/icons/src/
|
|
11
|
+
"target": "packages/icons/src/iconsax.tsx"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"path": "packages/icons/src/
|
|
14
|
+
"path": "packages/icons/src/index.tsx",
|
|
15
15
|
"type": "registry:component",
|
|
16
|
-
"target": "packages/icons/src/
|
|
16
|
+
"target": "packages/icons/src/index.tsx"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"path": "packages/ui/src/inline-cta.tsx",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"target": "packages/ui/src/lib/cn.ts"
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
|
-
"registryDependencies": [],
|
|
30
|
-
"dependencies": ["clsx", "iconsax-react", "tailwind-merge"],
|
|
29
|
+
"registryDependencies": ["icon-system"],
|
|
30
|
+
"dependencies": ["@noe/icons", "clsx", "iconsax-react", "tailwind-merge"],
|
|
31
31
|
"status": "available",
|
|
32
32
|
"maturity": "beta",
|
|
33
33
|
"package": "@noe/ui",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
"target": "packages/data-ui/src/pagination.tsx"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"path": "packages/icons/src/
|
|
14
|
+
"path": "packages/icons/src/iconsax.tsx",
|
|
15
15
|
"type": "registry:component",
|
|
16
|
-
"target": "packages/icons/src/
|
|
16
|
+
"target": "packages/icons/src/iconsax.tsx"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
|
-
"path": "packages/icons/src/
|
|
19
|
+
"path": "packages/icons/src/index.tsx",
|
|
20
20
|
"type": "registry:component",
|
|
21
|
-
"target": "packages/icons/src/
|
|
21
|
+
"target": "packages/icons/src/index.tsx"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"path": "packages/ui/src/button.tsx",
|
|
@@ -36,9 +36,11 @@
|
|
|
36
36
|
"target": "packages/ui/src/spinner.tsx"
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
|
-
"registryDependencies": [],
|
|
39
|
+
"registryDependencies": ["icon-system"],
|
|
40
40
|
"dependencies": [
|
|
41
41
|
"@base-ui/react",
|
|
42
|
+
"@noe/icons",
|
|
43
|
+
"@noe/ui",
|
|
42
44
|
"class-variance-authority",
|
|
43
45
|
"clsx",
|
|
44
46
|
"iconsax-react",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "sidebar-navigation",
|
|
4
4
|
"type": "registry:block",
|
|
5
5
|
"title": "Sidebar Navigation",
|
|
6
|
-
"description": "Sidebar Navigation — Patterns / Application component. Uses logical icon, label and end-adornment order without row reversal; RTL, i18n and accessibility are built in.",
|
|
6
|
+
"description": "Sidebar Navigation — Patterns / Application component. Uses logical icon, label and end-adornment order without row reversal, with opt-in wrapping for long bilingual finance labels; RTL, i18n and accessibility are built in.",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": "packages/ui/src/lib/cn.ts",
|
|
@@ -44,6 +44,9 @@
|
|
|
44
44
|
"color.mutedForeground"
|
|
45
45
|
],
|
|
46
46
|
"capabilityAliases": ["sidebar navigation", "sidebar-navigation", "finance sidebar"],
|
|
47
|
-
"useWhen": [
|
|
47
|
+
"useWhen": [
|
|
48
|
+
"using sidebar navigation in Patterns / Application",
|
|
49
|
+
"rendering long bilingual finance labels with wrapLabels"
|
|
50
|
+
],
|
|
48
51
|
"doNotUseWhen": ["when sidebar navigation semantics do not match"]
|
|
49
52
|
}
|