@pgcorp/ui-kit 0.8.1 → 0.10.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 +332 -9
- package/docs/getting-started.md +135 -0
- package/docs/public-api.md +53 -4
- package/docs/rich-document.md +216 -0
- package/docs/scroll-viewport.md +167 -0
- package/docs/theming.md +17 -0
- package/package.json +108 -50
- package/src/components/layout/SAppShell.vue +3 -1
- package/src/components/layout/SDockRegion.vue +5 -3
- package/src/components/layout/SResizeHandle.vue +45 -5
- package/src/components/layout/SWorkbenchPanelShell.vue +4 -2
- package/src/components/shared/_internal/SDialogSurface.css +23 -0
- package/src/components/shared/_internal/SDialogSurface.vue +9 -2
- package/src/components/shared/_internal/SToastItem.css +4 -0
- package/src/components/shared/_internal/SToastItem.vue +44 -8
- package/src/components/shared/_internal/STreeNode.vue +24 -11
- package/src/components/shared/_internal/dialogSurface.ts +7 -1
- package/src/components/shared/complex/SKanbanLane.vue +4 -2
- package/src/components/shared/containers/SCloudChromeRow.vue +3 -2
- package/src/components/shared/containers/SDrawer.css +11 -2
- package/src/components/shared/containers/SDrawer.vue +48 -9
- package/src/components/shared/containers/SModal.vue +5 -2
- package/src/components/shared/containers/SPanel.vue +4 -2
- package/src/components/shared/containers/SPopover.vue +7 -3
- package/src/components/shared/containers/SUiKitLocaleProvider.vue +57 -0
- package/src/components/shared/controls/SButton.css +14 -10
- package/src/components/shared/controls/SCombobox.vue +8 -6
- package/src/components/shared/controls/SComboboxTrigger.css +7 -4
- package/src/components/shared/controls/SComboboxTrigger.vue +5 -2
- package/src/components/shared/controls/SContextToggleButton.vue +6 -4
- package/src/components/shared/controls/SDragHandle.vue +8 -4
- package/src/components/shared/controls/SDropdownMenu.vue +7 -4
- package/src/components/shared/controls/SInputText.css +5 -4
- package/src/components/shared/controls/SListbox.vue +4 -2
- package/src/components/shared/controls/SSelect.vue +4 -2
- package/src/components/shared/controls/STextarea.ts +13 -0
- package/src/components/shared/controls/STextarea.vue +391 -37
- package/src/components/shared/controls/_internal/SInlineTokenSurface.vue +4 -2
- package/src/components/shared/data-display/SChart.vue +7 -5
- package/src/components/shared/data-display/SChip.vue +3 -1
- package/src/components/shared/data-display/SCodeBlock.css +4 -0
- package/src/components/shared/data-display/SCodeBlock.vue +46 -22
- package/src/components/shared/data-display/SCodeEditor.css +17 -0
- package/src/components/shared/data-display/SCodeEditor.vue +173 -8
- package/src/components/shared/data-display/SCodeSearchPanel.vue +48 -33
- package/src/components/shared/data-display/SCodeWorkspaceEditor.css +13 -0
- package/src/components/shared/data-display/SCodeWorkspaceEditor.vue +355 -0
- package/src/components/shared/data-display/SControlledToastViewport.css +89 -0
- package/src/components/shared/data-display/SControlledToastViewport.vue +205 -0
- package/src/components/shared/data-display/SCopyField.vue +12 -10
- package/src/components/shared/data-display/SDiffViewer.css +122 -0
- package/src/components/shared/data-display/SDiffViewer.vue +499 -0
- package/src/components/shared/data-display/SDocBlock.vue +99 -71
- package/src/components/shared/data-display/SExpandableText.vue +10 -8
- package/src/components/shared/data-display/SJsonTree.vue +4 -2
- package/src/components/shared/data-display/SLinkedSystemsList.vue +4 -2
- package/src/components/shared/data-display/SMessage.vue +6 -6
- package/src/components/shared/data-display/SRichDocument.css +8 -0
- package/src/components/shared/data-display/SRichDocument.vue +65 -0
- package/src/components/shared/data-display/SScrollViewport.css +53 -0
- package/src/components/shared/data-display/SScrollViewport.vue +470 -0
- package/src/components/shared/data-display/STable.vue +38 -19
- package/src/components/shared/data-display/SToastContainer.vue +22 -17
- package/src/components/shared/data-display/SVirtualList.ts +33 -0
- package/src/components/shared/data-display/SVirtualList.vue +321 -36
- package/src/components/shared/data-display/_internal/SCodeTokenLine.css +72 -0
- package/src/components/shared/data-display/_internal/SCodeTokenLine.vue +79 -0
- package/src/components/shared/data-display/_internal/SRichBlockNode.css +85 -0
- package/src/components/shared/data-display/_internal/SRichBlockNode.vue +282 -0
- package/src/components/shared/data-display/_internal/SRichInlineNode.css +6 -0
- package/src/components/shared/data-display/_internal/SRichInlineNode.vue +76 -0
- package/src/components/shared/data-display/_internal/SRichMath.css +42 -0
- package/src/components/shared/data-display/_internal/SRichMath.vue +102 -0
- package/src/components/shared/data-display/codeEditor.ts +200 -0
- package/src/components/shared/data-display/codeWorkspace.ts +233 -0
- package/src/components/shared/data-display/diff.ts +541 -0
- package/src/components/shared/data-display/richDocument.ts +876 -0
- package/src/components/shared/data-display/scrollViewport.ts +47 -0
- package/src/components/shared/data-display/toast.ts +194 -0
- package/src/components/shared/database/SDataGrid.vue +7 -4
- package/src/components/shared/database/SSqlEditor.vue +39 -39
- package/src/components/shared/feedback/SAsyncState.vue +3 -1
- package/src/components/shared/graph/SGraphViewport.vue +11 -9
- package/src/components/shared/navigation/SBreadcrumbs.vue +8 -5
- package/src/components/shared/navigation/SCatalogNavigator.vue +26 -20
- package/src/components/shared/navigation/STabList.vue +10 -6
- package/src/components/shared/navigation/STabs.vue +15 -11
- package/src/components/shared/navigation/SWizardSteps.vue +4 -2
- package/src/components/shared/persona/SPersonaProjectPicker.vue +31 -27
- package/src/components/shared/persona/SPersonaRunWorkbench.vue +39 -33
- package/src/components/shared/persona/_internal/SPersonaRunConsole.vue +8 -6
- package/src/components/shared/persona/_internal/labels.ts +66 -57
- package/src/components/shared/persona/presentation.ts +140 -110
- package/src/composables/useFloatingPosition.ts +39 -2
- package/src/composables/useUiKitLocale.ts +17 -0
- package/src/internal/codeHighlight.ts +110 -0
- package/src/internal/diffEngine.ts +464 -0
- package/src/internal/diffRuntime.ts +189 -0
- package/src/internal/feedbackPresentation.ts +33 -14
- package/src/internal/localeContext.ts +22 -0
- package/src/internal/ownedAttrs.ts +8 -0
- package/src/internal/runtimeContract.ts +11 -9
- package/src/internal/semanticSizing.ts +13 -0
- package/src/locales/catalog.ts +634 -0
- package/src/locales/locale.ts +472 -0
- package/src/locales/messages.generated.ts +1826 -0
- package/src/locales/messages.ts +150 -0
- package/src/stores/useNotifierStore.ts +61 -44
- package/src/styles/tokens.css +23 -2
- package/src/theme.ts +59 -32
- package/src/workers/diff.worker.ts +73 -0
- package/src/workers/diffProtocol.ts +155 -0
- package/src/components/shared/data-display/SToastContainer.css +0 -53
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {
|
|
2
|
+
validateDiffComputationOptions,
|
|
3
|
+
validateDiffResult,
|
|
4
|
+
validateDiffSource,
|
|
5
|
+
type SDiffComputationOptions,
|
|
6
|
+
type SDiffResult,
|
|
7
|
+
type SDiffSource,
|
|
8
|
+
} from '../components/shared/data-display/diff'
|
|
9
|
+
import { validateExactString, validateNonEmptyString } from '../internal/runtimeContract'
|
|
10
|
+
|
|
11
|
+
export const S_DIFF_WORKER_PROTOCOL_VERSION = 1 as const
|
|
12
|
+
|
|
13
|
+
export interface SDiffWorkerComputeRequest {
|
|
14
|
+
readonly version: typeof S_DIFF_WORKER_PROTOCOL_VERSION
|
|
15
|
+
readonly type: 'compute'
|
|
16
|
+
readonly requestId: string
|
|
17
|
+
readonly before: SDiffSource
|
|
18
|
+
readonly after: SDiffSource
|
|
19
|
+
readonly options: Required<SDiffComputationOptions>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface SDiffWorkerCancelRequest {
|
|
23
|
+
readonly version: typeof S_DIFF_WORKER_PROTOCOL_VERSION
|
|
24
|
+
readonly type: 'cancel'
|
|
25
|
+
readonly requestId: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type SDiffWorkerRequest = SDiffWorkerComputeRequest | SDiffWorkerCancelRequest
|
|
29
|
+
|
|
30
|
+
export interface SDiffWorkerResultResponse {
|
|
31
|
+
readonly version: typeof S_DIFF_WORKER_PROTOCOL_VERSION
|
|
32
|
+
readonly type: 'result'
|
|
33
|
+
readonly requestId: string
|
|
34
|
+
readonly result: SDiffResult
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface SDiffWorkerCancelledResponse {
|
|
38
|
+
readonly version: typeof S_DIFF_WORKER_PROTOCOL_VERSION
|
|
39
|
+
readonly type: 'cancelled'
|
|
40
|
+
readonly requestId: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface SDiffWorkerErrorResponse {
|
|
44
|
+
readonly version: typeof S_DIFF_WORKER_PROTOCOL_VERSION
|
|
45
|
+
readonly type: 'error'
|
|
46
|
+
readonly requestId: string
|
|
47
|
+
readonly error: {
|
|
48
|
+
readonly name: string
|
|
49
|
+
readonly message: string
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type SDiffWorkerResponse =
|
|
54
|
+
| SDiffWorkerResultResponse
|
|
55
|
+
| SDiffWorkerCancelledResponse
|
|
56
|
+
| SDiffWorkerErrorResponse
|
|
57
|
+
|
|
58
|
+
const REQUEST_TYPES = ['compute', 'cancel'] as const
|
|
59
|
+
const RESPONSE_TYPES = ['result', 'cancelled', 'error'] as const
|
|
60
|
+
const COMPUTE_KEYS = new Set(['version', 'type', 'requestId', 'before', 'after', 'options'])
|
|
61
|
+
const CANCEL_KEYS = new Set(['version', 'type', 'requestId'])
|
|
62
|
+
const RESULT_KEYS = new Set(['version', 'type', 'requestId', 'result'])
|
|
63
|
+
const CANCELLED_KEYS = new Set(['version', 'type', 'requestId'])
|
|
64
|
+
const ERROR_KEYS = new Set(['version', 'type', 'requestId', 'error'])
|
|
65
|
+
const ERROR_RECORD_KEYS = new Set(['name', 'message'])
|
|
66
|
+
|
|
67
|
+
function assertPlainExactRecord(
|
|
68
|
+
owner: string,
|
|
69
|
+
coordinate: string,
|
|
70
|
+
value: unknown,
|
|
71
|
+
allowed: ReadonlySet<string>,
|
|
72
|
+
): Record<string, unknown> {
|
|
73
|
+
if (
|
|
74
|
+
typeof value !== 'object'
|
|
75
|
+
|| value === null
|
|
76
|
+
|| Array.isArray(value)
|
|
77
|
+
|| Object.getPrototypeOf(value) !== Object.prototype
|
|
78
|
+
) {
|
|
79
|
+
throw new TypeError(`${owner}: ${coordinate} must be a plain object.`)
|
|
80
|
+
}
|
|
81
|
+
const record = value as Record<string, unknown>
|
|
82
|
+
const unexpected = Object.keys(record).filter((key) => !allowed.has(key))
|
|
83
|
+
if (unexpected.length > 0) {
|
|
84
|
+
throw new TypeError(`${owner}.${coordinate}: unknown fields ${unexpected.map((key) => JSON.stringify(key)).join(', ')}.`)
|
|
85
|
+
}
|
|
86
|
+
return record
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function validateVersion(owner: string, value: unknown): typeof S_DIFF_WORKER_PROTOCOL_VERSION {
|
|
90
|
+
if (value === S_DIFF_WORKER_PROTOCOL_VERSION) return value
|
|
91
|
+
throw new RangeError(`${owner}: unsupported diff worker protocol version ${String(value)}.`)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function validateRequestId(owner: string, value: unknown): string {
|
|
95
|
+
const requestId = validateNonEmptyString(owner, 'requestId', value)
|
|
96
|
+
if (requestId === requestId.trim()) return requestId
|
|
97
|
+
throw new TypeError(`${owner}: requestId must not contain surrounding whitespace.`)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function validateDiffWorkerRequest(value: unknown): SDiffWorkerRequest {
|
|
101
|
+
const envelope = assertPlainExactRecord('SDiffWorkerRequest', 'message', value, new Set([
|
|
102
|
+
...COMPUTE_KEYS,
|
|
103
|
+
...CANCEL_KEYS,
|
|
104
|
+
]))
|
|
105
|
+
const type = validateExactString('SDiffWorkerRequest', 'type', envelope.type, REQUEST_TYPES)
|
|
106
|
+
const record = assertPlainExactRecord(
|
|
107
|
+
'SDiffWorkerRequest',
|
|
108
|
+
'message',
|
|
109
|
+
value,
|
|
110
|
+
type === 'compute' ? COMPUTE_KEYS : CANCEL_KEYS,
|
|
111
|
+
)
|
|
112
|
+
const version = validateVersion('SDiffWorkerRequest', record.version)
|
|
113
|
+
const requestId = validateRequestId('SDiffWorkerRequest', record.requestId)
|
|
114
|
+
if (type === 'cancel') return Object.freeze({ version, type, requestId })
|
|
115
|
+
return Object.freeze({
|
|
116
|
+
version,
|
|
117
|
+
type,
|
|
118
|
+
requestId,
|
|
119
|
+
before: validateDiffSource('SDiffWorkerRequest', 'before', record.before),
|
|
120
|
+
after: validateDiffSource('SDiffWorkerRequest', 'after', record.after),
|
|
121
|
+
options: validateDiffComputationOptions('SDiffWorkerRequest', record.options),
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function validateDiffWorkerResponse(value: unknown): SDiffWorkerResponse {
|
|
126
|
+
const envelope = assertPlainExactRecord('SDiffWorkerResponse', 'message', value, new Set([
|
|
127
|
+
...RESULT_KEYS,
|
|
128
|
+
...CANCELLED_KEYS,
|
|
129
|
+
...ERROR_KEYS,
|
|
130
|
+
]))
|
|
131
|
+
const type = validateExactString('SDiffWorkerResponse', 'type', envelope.type, RESPONSE_TYPES)
|
|
132
|
+
const allowed = type === 'result' ? RESULT_KEYS : type === 'error' ? ERROR_KEYS : CANCELLED_KEYS
|
|
133
|
+
const record = assertPlainExactRecord('SDiffWorkerResponse', 'message', value, allowed)
|
|
134
|
+
const version = validateVersion('SDiffWorkerResponse', record.version)
|
|
135
|
+
const requestId = validateRequestId('SDiffWorkerResponse', record.requestId)
|
|
136
|
+
if (type === 'cancelled') return Object.freeze({ version, type, requestId })
|
|
137
|
+
if (type === 'result') {
|
|
138
|
+
return Object.freeze({
|
|
139
|
+
version,
|
|
140
|
+
type,
|
|
141
|
+
requestId,
|
|
142
|
+
result: validateDiffResult('SDiffWorkerResponse', record.result),
|
|
143
|
+
})
|
|
144
|
+
}
|
|
145
|
+
const error = assertPlainExactRecord('SDiffWorkerResponse', 'error', record.error, ERROR_RECORD_KEYS)
|
|
146
|
+
return Object.freeze({
|
|
147
|
+
version,
|
|
148
|
+
type,
|
|
149
|
+
requestId,
|
|
150
|
+
error: Object.freeze({
|
|
151
|
+
name: validateNonEmptyString('SDiffWorkerResponse', 'error.name', error.name),
|
|
152
|
+
message: validateNonEmptyString('SDiffWorkerResponse', 'error.message', error.message),
|
|
153
|
+
}),
|
|
154
|
+
})
|
|
155
|
+
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
@reference "../../../styles/reference.css";
|
|
2
|
-
|
|
3
|
-
.s-toast-container {
|
|
4
|
-
@apply fixed top-0 right-0 flex max-h-full min-w-0 w-full max-w-md flex-col overflow-y-auto overscroll-contain p-4;
|
|
5
|
-
z-index: var(--s-layer-root-toast);
|
|
6
|
-
@apply pointer-events-none;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.s-toast-transition-wrapper {
|
|
10
|
-
@apply flex flex-col items-end gap-2;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/*
|
|
14
|
-
Transition classes for TransitionGroup.
|
|
15
|
-
This animates toasts sliding in and out from the right.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/* 1. Enter transitions */
|
|
19
|
-
.notification-transition-enter-active {
|
|
20
|
-
transition: all var(--s-motion-standard) ease-out;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.notification-transition-enter-from {
|
|
24
|
-
opacity: 0;
|
|
25
|
-
transform: translate3d(16px, 12px, 0) scale(0.98);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.notification-transition-enter-to {
|
|
29
|
-
opacity: 1;
|
|
30
|
-
transform: translate3d(0, 0, 0) scale(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* 2. Leave transitions */
|
|
34
|
-
.notification-transition-leave-active {
|
|
35
|
-
transition: all var(--s-motion-fast) ease-in;
|
|
36
|
-
/* To keep layout from jumping, we make the leaving element absolute */
|
|
37
|
-
position: absolute;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.notification-transition-leave-from {
|
|
41
|
-
opacity: 1;
|
|
42
|
-
transform: translate3d(0, 0, 0) scale(1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.notification-transition-leave-to {
|
|
46
|
-
opacity: 0;
|
|
47
|
-
transform: translate3d(12px, 8px, 0) scale(0.98);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* 3. Move transition */
|
|
51
|
-
.notification-transition-move {
|
|
52
|
-
transition: transform var(--s-motion-standard) ease;
|
|
53
|
-
}
|