@neasg/design-system 0.4.7 → 0.4.9
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 +121 -0
- package/dist/alert.d.ts +21 -2
- package/dist/alert.js +10 -3
- package/dist/avatar.d.ts +5 -2
- package/dist/avatar.js +76 -8
- package/dist/back-button.d.ts +2 -0
- package/dist/back-button.js +1 -1
- package/dist/badge.d.ts +3 -2
- package/dist/badge.js +9 -3
- package/dist/breadcrumb.js +2 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.js +13 -10
- package/dist/calendar.js +10 -9
- package/dist/card.d.ts +29 -1
- package/dist/card.js +61 -7
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.js +2 -2
- package/dist/close-button.d.ts +6 -0
- package/dist/close-button.js +8 -0
- package/dist/collapsible.d.ts +7 -1
- package/dist/collapsible.js +2 -2
- package/dist/command-search.d.ts +16 -1
- package/dist/command-search.js +42 -16
- package/dist/command.js +3 -3
- package/dist/copy-button.d.ts +3 -1
- package/dist/copy-button.js +4 -2
- package/dist/count-badge.d.ts +3 -1
- package/dist/count-badge.js +10 -5
- package/dist/date-input.d.ts +18 -3
- package/dist/date-input.js +94 -21
- package/dist/dialog-primitive.js +4 -3
- package/dist/draggable-tabs.d.ts +7 -0
- package/dist/draggable-tabs.js +6 -5
- package/dist/drawer.js +2 -2
- package/dist/dropdown-button.d.ts +18 -0
- package/dist/dropdown-button.js +31 -0
- package/dist/edit-button.d.ts +10 -0
- package/dist/edit-button.js +7 -0
- package/dist/editable-table.d.ts +3 -1
- package/dist/editable-table.js +25 -12
- package/dist/field.d.ts +2 -2
- package/dist/field.js +4 -3
- package/dist/file-upload-status-toast.d.ts +28 -0
- package/dist/file-upload-status-toast.js +136 -0
- package/dist/file-upload.js +8 -7
- package/dist/filter-popover.d.ts +37 -0
- package/dist/filter-popover.js +73 -0
- package/dist/filter-toggle.js +2 -2
- package/dist/index.d.ts +45 -14
- package/dist/index.js +19 -4
- package/dist/input-control.d.ts +3 -2
- package/dist/input-control.js +3 -2
- package/dist/label-value-grid.d.ts +4 -2
- package/dist/label-value-grid.js +7 -6
- package/dist/label-value.js +3 -1
- package/dist/layout-right-panel-edge.d.ts +6 -0
- package/dist/layout-right-panel-edge.js +6 -0
- package/dist/layout.d.ts +77 -5
- package/dist/layout.js +439 -35
- package/dist/lib/date-utils.d.ts +10 -2
- package/dist/lib/date-utils.js +91 -11
- package/dist/lib/utils.js +8 -1
- package/dist/link.js +2 -2
- package/dist/message-item.d.ts +62 -0
- package/dist/message-item.js +148 -0
- package/dist/multi-select.js +31 -5
- package/dist/notification.d.ts +82 -0
- package/dist/notification.js +121 -0
- package/dist/otp-input.js +1 -1
- package/dist/page-header.js +1 -1
- package/dist/page-section.d.ts +2 -1
- package/dist/page-section.js +4 -3
- package/dist/pagination.js +2 -2
- package/dist/popover-menu.d.ts +23 -1
- package/dist/popover-menu.js +75 -5
- package/dist/popover-primitive.js +1 -1
- package/dist/progress.d.ts +5 -2
- package/dist/progress.js +6 -3
- package/dist/radio-group.d.ts +21 -0
- package/dist/radio-group.js +41 -0
- package/dist/rich-text-editor.d.ts +56 -0
- package/dist/rich-text-editor.js +394 -0
- package/dist/routing-timeline.d.ts +22 -0
- package/dist/routing-timeline.js +58 -0
- package/dist/scroll-hint.d.ts +8 -0
- package/dist/scroll-hint.js +7 -0
- package/dist/search-input-shell.js +1 -1
- package/dist/search-input.js +2 -2
- package/dist/section-nav.js +4 -4
- package/dist/select-primitive.js +3 -3
- package/dist/select.js +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/styles.css +235 -57
- package/dist/table-column-visibility.d.ts +21 -0
- package/dist/table-column-visibility.js +74 -0
- package/dist/table-toolbar.js +1 -1
- package/dist/table.d.ts +12 -1
- package/dist/table.js +67 -33
- package/dist/tabs.d.ts +14 -3
- package/dist/tabs.js +60 -6
- package/dist/tailwind-preset.js +46 -0
- package/dist/task-mode-shell.d.ts +24 -0
- package/dist/task-mode-shell.js +110 -0
- package/dist/textarea.js +2 -1
- package/dist/theme-switcher.d.ts +28 -0
- package/dist/theme-switcher.js +27 -0
- package/dist/theme.d.ts +167 -0
- package/dist/theme.js +112 -0
- package/dist/toaster.js +5 -4
- package/dist/tooltip.js +1 -1
- package/dist/typography.d.ts +1 -1
- package/dist/typography.js +5 -5
- package/dist/workspace-header.d.ts +13 -0
- package/dist/workspace-header.js +11 -0
- package/package.json +15 -1
package/dist/theme.d.ts
CHANGED
|
@@ -188,6 +188,34 @@ export declare const neaPalette: {
|
|
|
188
188
|
readonly name: "Neutral 900";
|
|
189
189
|
readonly token: "--nea-neutral-900";
|
|
190
190
|
}];
|
|
191
|
+
readonly darkNeutral: readonly [{
|
|
192
|
+
readonly name: "Dark Neutral 50";
|
|
193
|
+
readonly token: "--nea-dark-neutral-50";
|
|
194
|
+
}, {
|
|
195
|
+
readonly name: "Dark Neutral 100";
|
|
196
|
+
readonly token: "--nea-dark-neutral-100";
|
|
197
|
+
}, {
|
|
198
|
+
readonly name: "Dark Neutral 200";
|
|
199
|
+
readonly token: "--nea-dark-neutral-200";
|
|
200
|
+
}, {
|
|
201
|
+
readonly name: "Dark Neutral 300";
|
|
202
|
+
readonly token: "--nea-dark-neutral-300";
|
|
203
|
+
}, {
|
|
204
|
+
readonly name: "Dark Neutral 400";
|
|
205
|
+
readonly token: "--nea-dark-neutral-400";
|
|
206
|
+
}, {
|
|
207
|
+
readonly name: "Dark Neutral 500";
|
|
208
|
+
readonly token: "--nea-dark-neutral-500";
|
|
209
|
+
}, {
|
|
210
|
+
readonly name: "Dark Neutral 600";
|
|
211
|
+
readonly token: "--nea-dark-neutral-600";
|
|
212
|
+
}, {
|
|
213
|
+
readonly name: "Dark Neutral 700";
|
|
214
|
+
readonly token: "--nea-dark-neutral-700";
|
|
215
|
+
}, {
|
|
216
|
+
readonly name: "Dark Neutral 800";
|
|
217
|
+
readonly token: "--nea-dark-neutral-800";
|
|
218
|
+
}];
|
|
191
219
|
};
|
|
192
220
|
export declare const semanticColorTokens: readonly [{
|
|
193
221
|
readonly name: "Background";
|
|
@@ -200,6 +228,9 @@ export declare const semanticColorTokens: readonly [{
|
|
|
200
228
|
readonly name: "Card";
|
|
201
229
|
readonly token: "--card";
|
|
202
230
|
readonly foregroundToken: "--card-foreground";
|
|
231
|
+
}, {
|
|
232
|
+
readonly name: "Card Border";
|
|
233
|
+
readonly token: "--card-border";
|
|
203
234
|
}, {
|
|
204
235
|
readonly name: "Popover";
|
|
205
236
|
readonly token: "--popover";
|
|
@@ -244,6 +275,20 @@ export declare const semanticColorTokens: readonly [{
|
|
|
244
275
|
readonly name: "Status Destructive";
|
|
245
276
|
readonly token: "--status-destructive";
|
|
246
277
|
readonly foregroundToken: "--status-destructive-foreground";
|
|
278
|
+
}, {
|
|
279
|
+
readonly name: "Tab List";
|
|
280
|
+
readonly token: "--tab-list-background";
|
|
281
|
+
}, {
|
|
282
|
+
readonly name: "Tab List Border";
|
|
283
|
+
readonly token: "--tab-list-border";
|
|
284
|
+
}, {
|
|
285
|
+
readonly name: "Tab Trigger";
|
|
286
|
+
readonly token: "--tab-trigger-hover-background";
|
|
287
|
+
readonly foregroundToken: "--tab-trigger-foreground";
|
|
288
|
+
}, {
|
|
289
|
+
readonly name: "Tab Trigger Active";
|
|
290
|
+
readonly token: "--tab-trigger-active-background";
|
|
291
|
+
readonly foregroundToken: "--tab-trigger-active-foreground";
|
|
247
292
|
}, {
|
|
248
293
|
readonly name: "Border";
|
|
249
294
|
readonly token: "--border";
|
|
@@ -253,6 +298,18 @@ export declare const semanticColorTokens: readonly [{
|
|
|
253
298
|
}, {
|
|
254
299
|
readonly name: "Ring";
|
|
255
300
|
readonly token: "--ring";
|
|
301
|
+
}, {
|
|
302
|
+
readonly name: "Component Border";
|
|
303
|
+
readonly token: "--component-border";
|
|
304
|
+
}, {
|
|
305
|
+
readonly name: "Button Outline";
|
|
306
|
+
readonly token: "--button-outline-background";
|
|
307
|
+
}, {
|
|
308
|
+
readonly name: "Button Outline Hover";
|
|
309
|
+
readonly token: "--button-outline-hover-background";
|
|
310
|
+
}, {
|
|
311
|
+
readonly name: "Button Outline Border";
|
|
312
|
+
readonly token: "--button-outline-border";
|
|
256
313
|
}];
|
|
257
314
|
export declare const typographyTokens: readonly [{
|
|
258
315
|
readonly name: "Sans Font";
|
|
@@ -291,6 +348,15 @@ export declare const radiusTokens: readonly [{
|
|
|
291
348
|
}, {
|
|
292
349
|
readonly name: "Radius XLarge";
|
|
293
350
|
readonly token: "--radius-xl";
|
|
351
|
+
}, {
|
|
352
|
+
readonly name: "Control Radius";
|
|
353
|
+
readonly token: "--radius-control";
|
|
354
|
+
}, {
|
|
355
|
+
readonly name: "Surface Radius";
|
|
356
|
+
readonly token: "--radius-surface";
|
|
357
|
+
}, {
|
|
358
|
+
readonly name: "Overlay Radius";
|
|
359
|
+
readonly token: "--radius-overlay";
|
|
294
360
|
}];
|
|
295
361
|
export declare const spacingTokens: readonly [{
|
|
296
362
|
readonly name: "Space 0";
|
|
@@ -324,20 +390,77 @@ export declare const spacingTokens: readonly [{
|
|
|
324
390
|
readonly token: "--space-12";
|
|
325
391
|
}];
|
|
326
392
|
export declare const layoutTokens: readonly [{
|
|
393
|
+
readonly name: "Chrome Background";
|
|
394
|
+
readonly token: "--layout-chrome-background";
|
|
395
|
+
readonly description: "Shared background for outer app chrome surfaces including the shell and sidebar.";
|
|
396
|
+
}, {
|
|
327
397
|
readonly name: "Shell Background";
|
|
328
398
|
readonly token: "--layout-shell-background";
|
|
399
|
+
}, {
|
|
400
|
+
readonly name: "Sidebar Background";
|
|
401
|
+
readonly token: "--layout-sidebar-background";
|
|
402
|
+
}, {
|
|
403
|
+
readonly name: "Sidebar Logo Background";
|
|
404
|
+
readonly token: "--layout-sidebar-logo-background";
|
|
405
|
+
}, {
|
|
406
|
+
readonly name: "Surface Background";
|
|
407
|
+
readonly token: "--layout-surface-background";
|
|
408
|
+
readonly description: "Shared background for the workspace content surface, draggable tabs row, and right panel.";
|
|
409
|
+
}, {
|
|
410
|
+
readonly name: "Workspace Header Background";
|
|
411
|
+
readonly token: "--layout-workspace-header-background";
|
|
412
|
+
readonly description: "Background for the sticky breadcrumb/action row above workbench tabs.";
|
|
413
|
+
}, {
|
|
414
|
+
readonly name: "Surface Border";
|
|
415
|
+
readonly token: "--layout-surface-border";
|
|
416
|
+
}, {
|
|
417
|
+
readonly name: "Surface Shadow";
|
|
418
|
+
readonly token: "--layout-surface-shadow";
|
|
329
419
|
}, {
|
|
330
420
|
readonly name: "Sidebar Width";
|
|
331
421
|
readonly token: "--layout-sidebar-width";
|
|
332
422
|
}, {
|
|
333
423
|
readonly name: "Sidebar Collapsed Width";
|
|
334
424
|
readonly token: "--layout-sidebar-collapsed-width";
|
|
425
|
+
}, {
|
|
426
|
+
readonly name: "Right Panel Width";
|
|
427
|
+
readonly token: "--layout-right-panel-width";
|
|
428
|
+
}, {
|
|
429
|
+
readonly name: "Right Panel Background";
|
|
430
|
+
readonly token: "--layout-right-panel-background";
|
|
431
|
+
}, {
|
|
432
|
+
readonly name: "Right Panel Border";
|
|
433
|
+
readonly token: "--layout-right-panel-border";
|
|
434
|
+
}, {
|
|
435
|
+
readonly name: "Right Panel Shadow";
|
|
436
|
+
readonly token: "--layout-right-panel-shadow";
|
|
437
|
+
}, {
|
|
438
|
+
readonly name: "Right Panel Padding";
|
|
439
|
+
readonly token: "--layout-right-panel-padding";
|
|
440
|
+
}, {
|
|
441
|
+
readonly name: "Right Panel Gap";
|
|
442
|
+
readonly token: "--layout-right-panel-gap";
|
|
443
|
+
}, {
|
|
444
|
+
readonly name: "Right Panel Tabs Gap";
|
|
445
|
+
readonly token: "--layout-right-panel-tabs-gap";
|
|
446
|
+
}, {
|
|
447
|
+
readonly name: "Right Panel Footer Gap";
|
|
448
|
+
readonly token: "--layout-right-panel-footer-gap";
|
|
449
|
+
}, {
|
|
450
|
+
readonly name: "Right Panel Section Gap";
|
|
451
|
+
readonly token: "--layout-right-panel-section-gap";
|
|
452
|
+
}, {
|
|
453
|
+
readonly name: "Right Panel Heading Gap";
|
|
454
|
+
readonly token: "--layout-right-panel-heading-gap";
|
|
335
455
|
}, {
|
|
336
456
|
readonly name: "Sidebar Padding Inline";
|
|
337
457
|
readonly token: "--layout-sidebar-padding-inline";
|
|
338
458
|
}, {
|
|
339
459
|
readonly name: "Sidebar Padding Top";
|
|
340
460
|
readonly token: "--layout-sidebar-padding-top";
|
|
461
|
+
}, {
|
|
462
|
+
readonly name: "Sidebar Section Gap";
|
|
463
|
+
readonly token: "--layout-sidebar-section-gap";
|
|
341
464
|
}, {
|
|
342
465
|
readonly name: "Content Gap Start";
|
|
343
466
|
readonly token: "--layout-content-gap-start";
|
|
@@ -368,4 +491,48 @@ export declare const layoutTokens: readonly [{
|
|
|
368
491
|
}, {
|
|
369
492
|
readonly name: "Surface Gap";
|
|
370
493
|
readonly token: "--layout-surface-gap";
|
|
494
|
+
}, {
|
|
495
|
+
readonly name: "Page Gap";
|
|
496
|
+
readonly token: "--layout-page-gap";
|
|
497
|
+
readonly description: "Vertical gap between the largest page regions.";
|
|
498
|
+
}, {
|
|
499
|
+
readonly name: "Page Header Gap";
|
|
500
|
+
readonly token: "--layout-page-header-gap";
|
|
501
|
+
readonly description: "Spacing inside the page heading group, such as title to alert.";
|
|
502
|
+
}, {
|
|
503
|
+
readonly name: "Page Section Gap";
|
|
504
|
+
readonly token: "--layout-page-section-gap";
|
|
505
|
+
readonly description: "Spacing between major page sections, such as metrics to controls.";
|
|
506
|
+
}, {
|
|
507
|
+
readonly name: "Page Control Gap";
|
|
508
|
+
readonly token: "--layout-page-control-gap";
|
|
509
|
+
readonly description: "Spacing inside control groups, such as tabs to filters.";
|
|
510
|
+
}, {
|
|
511
|
+
readonly name: "Page Context Gap";
|
|
512
|
+
readonly token: "--layout-page-context-gap";
|
|
513
|
+
readonly description: "Tighter spacing between contextual metadata and its content.";
|
|
514
|
+
}, {
|
|
515
|
+
readonly name: "Page Alert Margin";
|
|
516
|
+
readonly token: "--layout-page-alert-margin";
|
|
517
|
+
readonly description: "Vertical margin used to isolate page-level alerts.";
|
|
518
|
+
}, {
|
|
519
|
+
readonly name: "Page Title Offset";
|
|
520
|
+
readonly token: "--layout-page-title-offset";
|
|
521
|
+
readonly description: "Small top offset when a title follows sticky workspace chrome.";
|
|
522
|
+
}, {
|
|
523
|
+
readonly name: "Table Border";
|
|
524
|
+
readonly token: "--table-border";
|
|
525
|
+
readonly description: "Border color for table containers and row separators; linked to the shared component border.";
|
|
526
|
+
}, {
|
|
527
|
+
readonly name: "Table Header Background";
|
|
528
|
+
readonly token: "--table-header-background";
|
|
529
|
+
readonly description: "Header background for dense data tables.";
|
|
530
|
+
}, {
|
|
531
|
+
readonly name: "Table Striped Row Background";
|
|
532
|
+
readonly token: "--table-row-striped-background";
|
|
533
|
+
readonly description: "Neutral alternating row background for dense data tables.";
|
|
534
|
+
}, {
|
|
535
|
+
readonly name: "Table Warning Row Background";
|
|
536
|
+
readonly token: "--table-row-warning-background";
|
|
537
|
+
readonly description: "Conditional row background for attention or breach states.";
|
|
371
538
|
}];
|
package/dist/theme.js
CHANGED
|
@@ -72,11 +72,23 @@ export const neaPalette = {
|
|
|
72
72
|
{ name: "Neutral 800", token: "--nea-neutral-800" },
|
|
73
73
|
{ name: "Neutral 900", token: "--nea-neutral-900" },
|
|
74
74
|
],
|
|
75
|
+
darkNeutral: [
|
|
76
|
+
{ name: "Dark Neutral 50", token: "--nea-dark-neutral-50" },
|
|
77
|
+
{ name: "Dark Neutral 100", token: "--nea-dark-neutral-100" },
|
|
78
|
+
{ name: "Dark Neutral 200", token: "--nea-dark-neutral-200" },
|
|
79
|
+
{ name: "Dark Neutral 300", token: "--nea-dark-neutral-300" },
|
|
80
|
+
{ name: "Dark Neutral 400", token: "--nea-dark-neutral-400" },
|
|
81
|
+
{ name: "Dark Neutral 500", token: "--nea-dark-neutral-500" },
|
|
82
|
+
{ name: "Dark Neutral 600", token: "--nea-dark-neutral-600" },
|
|
83
|
+
{ name: "Dark Neutral 700", token: "--nea-dark-neutral-700" },
|
|
84
|
+
{ name: "Dark Neutral 800", token: "--nea-dark-neutral-800" },
|
|
85
|
+
],
|
|
75
86
|
};
|
|
76
87
|
export const semanticColorTokens = [
|
|
77
88
|
{ name: "Background", token: "--background", foregroundToken: "--foreground" },
|
|
78
89
|
{ name: "Foreground", token: "--foreground" },
|
|
79
90
|
{ name: "Card", token: "--card", foregroundToken: "--card-foreground" },
|
|
91
|
+
{ name: "Card Border", token: "--card-border" },
|
|
80
92
|
{ name: "Popover", token: "--popover", foregroundToken: "--popover-foreground" },
|
|
81
93
|
{ name: "Primary", token: "--primary", foregroundToken: "--primary-foreground" },
|
|
82
94
|
{ name: "Secondary", token: "--secondary", foregroundToken: "--secondary-foreground" },
|
|
@@ -108,9 +120,21 @@ export const semanticColorTokens = [
|
|
|
108
120
|
token: "--status-destructive",
|
|
109
121
|
foregroundToken: "--status-destructive-foreground",
|
|
110
122
|
},
|
|
123
|
+
{ name: "Tab List", token: "--tab-list-background" },
|
|
124
|
+
{ name: "Tab List Border", token: "--tab-list-border" },
|
|
125
|
+
{ name: "Tab Trigger", token: "--tab-trigger-hover-background", foregroundToken: "--tab-trigger-foreground" },
|
|
126
|
+
{
|
|
127
|
+
name: "Tab Trigger Active",
|
|
128
|
+
token: "--tab-trigger-active-background",
|
|
129
|
+
foregroundToken: "--tab-trigger-active-foreground",
|
|
130
|
+
},
|
|
111
131
|
{ name: "Border", token: "--border" },
|
|
112
132
|
{ name: "Input", token: "--input" },
|
|
113
133
|
{ name: "Ring", token: "--ring" },
|
|
134
|
+
{ name: "Component Border", token: "--component-border" },
|
|
135
|
+
{ name: "Button Outline", token: "--button-outline-background" },
|
|
136
|
+
{ name: "Button Outline Hover", token: "--button-outline-hover-background" },
|
|
137
|
+
{ name: "Button Outline Border", token: "--button-outline-border" },
|
|
114
138
|
];
|
|
115
139
|
export const typographyTokens = [
|
|
116
140
|
{ name: "Sans Font", token: "--font-sans" },
|
|
@@ -127,6 +151,9 @@ export const radiusTokens = [
|
|
|
127
151
|
{ name: "Radius Medium", token: "--radius-md" },
|
|
128
152
|
{ name: "Radius Large", token: "--radius-lg" },
|
|
129
153
|
{ name: "Radius XLarge", token: "--radius-xl" },
|
|
154
|
+
{ name: "Control Radius", token: "--radius-control" },
|
|
155
|
+
{ name: "Surface Radius", token: "--radius-surface" },
|
|
156
|
+
{ name: "Overlay Radius", token: "--radius-overlay" },
|
|
130
157
|
];
|
|
131
158
|
export const spacingTokens = [
|
|
132
159
|
{ name: "Space 0", token: "--space-0" },
|
|
@@ -141,11 +168,41 @@ export const spacingTokens = [
|
|
|
141
168
|
{ name: "Space 12", token: "--space-12" },
|
|
142
169
|
];
|
|
143
170
|
export const layoutTokens = [
|
|
171
|
+
{
|
|
172
|
+
name: "Chrome Background",
|
|
173
|
+
token: "--layout-chrome-background",
|
|
174
|
+
description: "Shared background for outer app chrome surfaces including the shell and sidebar.",
|
|
175
|
+
},
|
|
144
176
|
{ name: "Shell Background", token: "--layout-shell-background" },
|
|
177
|
+
{ name: "Sidebar Background", token: "--layout-sidebar-background" },
|
|
178
|
+
{ name: "Sidebar Logo Background", token: "--layout-sidebar-logo-background" },
|
|
179
|
+
{
|
|
180
|
+
name: "Surface Background",
|
|
181
|
+
token: "--layout-surface-background",
|
|
182
|
+
description: "Shared background for the workspace content surface, draggable tabs row, and right panel.",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: "Workspace Header Background",
|
|
186
|
+
token: "--layout-workspace-header-background",
|
|
187
|
+
description: "Background for the sticky breadcrumb/action row above workbench tabs.",
|
|
188
|
+
},
|
|
189
|
+
{ name: "Surface Border", token: "--layout-surface-border" },
|
|
190
|
+
{ name: "Surface Shadow", token: "--layout-surface-shadow" },
|
|
145
191
|
{ name: "Sidebar Width", token: "--layout-sidebar-width" },
|
|
146
192
|
{ name: "Sidebar Collapsed Width", token: "--layout-sidebar-collapsed-width" },
|
|
193
|
+
{ name: "Right Panel Width", token: "--layout-right-panel-width" },
|
|
194
|
+
{ name: "Right Panel Background", token: "--layout-right-panel-background" },
|
|
195
|
+
{ name: "Right Panel Border", token: "--layout-right-panel-border" },
|
|
196
|
+
{ name: "Right Panel Shadow", token: "--layout-right-panel-shadow" },
|
|
197
|
+
{ name: "Right Panel Padding", token: "--layout-right-panel-padding" },
|
|
198
|
+
{ name: "Right Panel Gap", token: "--layout-right-panel-gap" },
|
|
199
|
+
{ name: "Right Panel Tabs Gap", token: "--layout-right-panel-tabs-gap" },
|
|
200
|
+
{ name: "Right Panel Footer Gap", token: "--layout-right-panel-footer-gap" },
|
|
201
|
+
{ name: "Right Panel Section Gap", token: "--layout-right-panel-section-gap" },
|
|
202
|
+
{ name: "Right Panel Heading Gap", token: "--layout-right-panel-heading-gap" },
|
|
147
203
|
{ name: "Sidebar Padding Inline", token: "--layout-sidebar-padding-inline" },
|
|
148
204
|
{ name: "Sidebar Padding Top", token: "--layout-sidebar-padding-top" },
|
|
205
|
+
{ name: "Sidebar Section Gap", token: "--layout-sidebar-section-gap" },
|
|
149
206
|
{ name: "Content Gap Start", token: "--layout-content-gap-start" },
|
|
150
207
|
{ name: "Content Gap Start MD", token: "--layout-content-gap-start-md" },
|
|
151
208
|
{ name: "Content Gap Start LG", token: "--layout-content-gap-start-lg" },
|
|
@@ -156,4 +213,59 @@ export const layoutTokens = [
|
|
|
156
213
|
{ name: "Surface Padding MD", token: "--layout-surface-padding-md" },
|
|
157
214
|
{ name: "Surface Padding LG", token: "--layout-surface-padding-lg" },
|
|
158
215
|
{ name: "Surface Gap", token: "--layout-surface-gap" },
|
|
216
|
+
{
|
|
217
|
+
name: "Page Gap",
|
|
218
|
+
token: "--layout-page-gap",
|
|
219
|
+
description: "Vertical gap between the largest page regions.",
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: "Page Header Gap",
|
|
223
|
+
token: "--layout-page-header-gap",
|
|
224
|
+
description: "Spacing inside the page heading group, such as title to alert.",
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: "Page Section Gap",
|
|
228
|
+
token: "--layout-page-section-gap",
|
|
229
|
+
description: "Spacing between major page sections, such as metrics to controls.",
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
name: "Page Control Gap",
|
|
233
|
+
token: "--layout-page-control-gap",
|
|
234
|
+
description: "Spacing inside control groups, such as tabs to filters.",
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: "Page Context Gap",
|
|
238
|
+
token: "--layout-page-context-gap",
|
|
239
|
+
description: "Tighter spacing between contextual metadata and its content.",
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: "Page Alert Margin",
|
|
243
|
+
token: "--layout-page-alert-margin",
|
|
244
|
+
description: "Vertical margin used to isolate page-level alerts.",
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: "Page Title Offset",
|
|
248
|
+
token: "--layout-page-title-offset",
|
|
249
|
+
description: "Small top offset when a title follows sticky workspace chrome.",
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: "Table Border",
|
|
253
|
+
token: "--table-border",
|
|
254
|
+
description: "Border color for table containers and row separators; linked to the shared component border.",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: "Table Header Background",
|
|
258
|
+
token: "--table-header-background",
|
|
259
|
+
description: "Header background for dense data tables.",
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: "Table Striped Row Background",
|
|
263
|
+
token: "--table-row-striped-background",
|
|
264
|
+
description: "Neutral alternating row background for dense data tables.",
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
name: "Table Warning Row Background",
|
|
268
|
+
token: "--table-row-warning-background",
|
|
269
|
+
description: "Conditional row background for attention or breach states.",
|
|
270
|
+
},
|
|
159
271
|
];
|
package/dist/toaster.js
CHANGED
|
@@ -4,19 +4,20 @@ import { Toaster as SonnerToaster, toast } from "sonner";
|
|
|
4
4
|
import { buttonVariants } from "./button";
|
|
5
5
|
import { XIcon } from "./animated-icons/x";
|
|
6
6
|
import { cn } from "./lib/utils";
|
|
7
|
+
import { typographyVariants } from "./typography";
|
|
7
8
|
function Toaster({ position = "top-right", visibleToasts = 3, closeButton = true, duration = 4000, }) {
|
|
8
9
|
return (_jsx(SonnerToaster, { position: position, visibleToasts: visibleToasts, closeButton: closeButton, duration: duration, icons: {
|
|
9
10
|
close: _jsx(XIcon, { size: 14 }),
|
|
10
11
|
}, toastOptions: {
|
|
11
12
|
classNames: {
|
|
12
|
-
toast: "group relative border border-border bg-background text-foreground shadow-md rounded-
|
|
13
|
+
toast: "group relative border border-border bg-background text-foreground shadow-md rounded-overlay p-3 pr-9 flex items-start gap-2",
|
|
13
14
|
content: "min-w-0 flex-1 gap-1",
|
|
14
|
-
title: "
|
|
15
|
-
description: "
|
|
15
|
+
title: cn(typographyVariants({ variant: "bodySm" }), "font-medium"),
|
|
16
|
+
description: cn(typographyVariants({ variant: "bodySm" }), "text-muted-foreground"),
|
|
16
17
|
icon: "mt-0.5 text-muted-foreground",
|
|
17
18
|
actionButton: cn(buttonVariants({ variant: "link" }), "!h-auto !min-h-0 !self-start !p-0 !text-sm !font-medium !text-primary !no-underline hover:!text-primary/80 hover:!no-underline"),
|
|
18
19
|
cancelButton: cn(buttonVariants({ variant: "link" }), "!h-auto !min-h-0 !self-start !bg-transparent !p-0 !text-sm !font-medium !text-muted-foreground !no-underline hover:!bg-transparent hover:!text-foreground hover:!no-underline"),
|
|
19
|
-
closeButton: "!absolute !left-auto !right-2 !top-2 !h-6 !w-6 !translate-x-0 !translate-y-0 !rounded-
|
|
20
|
+
closeButton: "!absolute !left-auto !right-2 !top-2 !h-6 !w-6 !translate-x-0 !translate-y-0 !rounded-control !border-0 !bg-transparent !text-muted-foreground hover:!bg-accent hover:!text-foreground",
|
|
20
21
|
success: "border-[hsl(var(--status-success-foreground))]/20 [&_[data-icon]]:text-[hsl(var(--status-success-foreground))]",
|
|
21
22
|
error: "border-destructive/20 [&_[data-icon]]:text-[hsl(var(--status-destructive-foreground))]",
|
|
22
23
|
warning: "border-[hsl(var(--status-warning-foreground))]/20 [&_[data-icon]]:text-[hsl(var(--status-warning-foreground))]",
|
package/dist/tooltip.js
CHANGED
|
@@ -8,7 +8,7 @@ function TooltipProvider({ delayDuration = 100, ...props }) {
|
|
|
8
8
|
}
|
|
9
9
|
const TooltipRoot = TooltipPrimitive.Root;
|
|
10
10
|
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
11
|
-
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 overflow-hidden rounded-
|
|
11
|
+
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 overflow-hidden rounded-overlay bg-[hsl(var(--tooltip-background))] px-3 py-1.5 text-sm text-[hsl(var(--tooltip-foreground))] shadow-[var(--overlay-shadow)] animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }) })));
|
|
12
12
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
13
13
|
function Tooltip({ content, children, delayDuration = 100, side = "top", sideOffset = 4, contentClassName, open, defaultOpen, onOpenChange, }) {
|
|
14
14
|
return (_jsx(TooltipProvider, { delayDuration: delayDuration, children: _jsxs(TooltipRoot, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: [_jsx(TooltipTrigger, { asChild: true, children: children }), _jsx(TooltipContent, { side: side, sideOffset: sideOffset, className: contentClassName, children: content })] }) }));
|
package/dist/typography.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const typographyVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "caption" | "title" | "heading" | "label" | "body" | "subheading" | "bodySm" | "eyebrow" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
export interface TypographyProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof typographyVariants> {
|
|
7
7
|
as?: keyof React.JSX.IntrinsicElements;
|
package/dist/typography.js
CHANGED
|
@@ -9,11 +9,11 @@ const typographyVariants = cva("", {
|
|
|
9
9
|
title: "text-2xl font-bold tracking-tight text-foreground",
|
|
10
10
|
heading: "text-xl font-semibold tracking-tight text-foreground",
|
|
11
11
|
subheading: "text-lg font-semibold text-foreground",
|
|
12
|
-
body: "text-base
|
|
13
|
-
bodySm: "text-sm
|
|
14
|
-
label: "text-sm font-medium leading-
|
|
15
|
-
caption: "text-sm
|
|
16
|
-
eyebrow: "text-
|
|
12
|
+
body: "text-base text-foreground",
|
|
13
|
+
bodySm: "text-sm text-foreground",
|
|
14
|
+
label: "text-sm font-medium leading-5 text-foreground",
|
|
15
|
+
caption: "text-sm text-muted-foreground",
|
|
16
|
+
eyebrow: "text-[11px] font-semibold uppercase leading-4 tracking-normal text-muted-foreground",
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
defaultVariants: {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface WorkspaceHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
3
|
+
breadcrumbs?: React.ReactNode;
|
|
4
|
+
tabs?: React.ReactNode;
|
|
5
|
+
actions?: React.ReactNode;
|
|
6
|
+
sticky?: boolean;
|
|
7
|
+
bleed?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare function WorkspaceHeader({ breadcrumbs, tabs, actions, sticky, bleed, className, ...props }: WorkspaceHeaderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
declare namespace WorkspaceHeader {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
export { WorkspaceHeader };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "./lib/utils";
|
|
3
|
+
function WorkspaceHeader({ breadcrumbs, tabs, actions, sticky = true, bleed = true, className, ...props }) {
|
|
4
|
+
if (!breadcrumbs && !tabs && !actions) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
return (_jsxs("div", { "data-slot": "workspace-header", className: cn("shrink-0", sticky && "sticky top-0 z-20", bleed &&
|
|
8
|
+
"-mx-[var(--layout-surface-padding)] md:-mx-[var(--layout-surface-padding-md)] lg:-mx-[var(--layout-surface-padding-lg)]", className), ...props, children: [breadcrumbs || actions ? (_jsxs("div", { className: "flex min-h-10 items-center gap-3 border-b border-[hsl(var(--layout-surface-border))] bg-[hsl(var(--layout-workspace-header-background))] px-[var(--layout-surface-padding)] py-2 md:px-[var(--layout-surface-padding-md)] lg:px-[var(--layout-surface-padding-lg)]", children: [breadcrumbs ? (_jsx("div", { className: "min-w-0 flex-1 overflow-hidden", children: breadcrumbs })) : null, actions ? (_jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions })) : null] })) : null, tabs ? (_jsx("div", { className: "min-w-0 overflow-hidden bg-[hsl(var(--layout-surface-background))] [&>[data-slot=draggable-tabs]]:w-full [&>[data-slot=draggable-tabs]]:px-[var(--layout-surface-padding)] md:[&>[data-slot=draggable-tabs]]:px-[var(--layout-surface-padding-md)] lg:[&>[data-slot=draggable-tabs]]:px-[var(--layout-surface-padding-lg)]", children: tabs })) : null] }));
|
|
9
|
+
}
|
|
10
|
+
WorkspaceHeader.displayName = "WorkspaceHeader";
|
|
11
|
+
export { WorkspaceHeader };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neasg/design-system",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "NEA shared design system primitives, theme tokens, and Storybook docs.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -46,10 +46,20 @@
|
|
|
46
46
|
"@radix-ui/react-switch": "^1.2.6",
|
|
47
47
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
48
48
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
49
|
+
"@tiptap/extension-color": "^3.19.0",
|
|
50
|
+
"@tiptap/extension-highlight": "^3.19.0",
|
|
51
|
+
"@tiptap/extension-link": "^3.15.3",
|
|
52
|
+
"@tiptap/extension-placeholder": "^3.15.3",
|
|
53
|
+
"@tiptap/extension-text-style": "^3.19.0",
|
|
54
|
+
"@tiptap/extension-underline": "^3.19.0",
|
|
55
|
+
"@tiptap/pm": "^3.15.3",
|
|
56
|
+
"@tiptap/react": "^3.15.3",
|
|
57
|
+
"@tiptap/starter-kit": "^3.15.3",
|
|
49
58
|
"class-variance-authority": "^0.7.0",
|
|
50
59
|
"clsx": "^2.1.1",
|
|
51
60
|
"cmdk": "^1.1.1",
|
|
52
61
|
"date-fns": "^4.1.0",
|
|
62
|
+
"dompurify": "^3.3.1",
|
|
53
63
|
"input-otp": "^1.4.2",
|
|
54
64
|
"libphonenumber-js": "^1.12.41",
|
|
55
65
|
"lucide-react": "^0.555.0",
|
|
@@ -61,11 +71,15 @@
|
|
|
61
71
|
},
|
|
62
72
|
"devDependencies": {
|
|
63
73
|
"@fontsource/inter": "^5.2.8",
|
|
74
|
+
"@storybook/addon-a11y": "10.3.5",
|
|
64
75
|
"@storybook/addon-docs": "10.3.5",
|
|
65
76
|
"@storybook/addon-mcp": "^0.5.0",
|
|
66
77
|
"@storybook/addon-themes": "10.3.5",
|
|
67
78
|
"@storybook/react-vite": "10.3.5",
|
|
79
|
+
"@testing-library/dom": "^10.4.1",
|
|
68
80
|
"@testing-library/jest-dom": "^6.9.1",
|
|
81
|
+
"@testing-library/react": "^16.3.2",
|
|
82
|
+
"@testing-library/user-event": "^14.6.1",
|
|
69
83
|
"@types/node": "^20.10.5",
|
|
70
84
|
"@types/react": "^18.2.45",
|
|
71
85
|
"@types/react-dom": "^18.2.18",
|