mgv-backoffice 1.36.0 → 1.36.2
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 +1794 -1719
- package/dist/components/BaseBadge.vue.d.ts +1 -11
- package/dist/components/BaseDropdown.vue.d.ts +1 -1
- package/dist/ui-lib.js +942 -925
- package/dist/ui-lib.umd.cjs +1 -1
- package/dist/utils/specForm.d.ts +1 -1
- package/package.json +54 -54
- package/src/components/BaseAlert.vue +104 -104
- package/src/components/BaseBadge.vue +12 -2
- package/src/components/BaseBarDistribution.test.ts +51 -51
- package/src/components/BaseBarDistribution.vue +73 -73
- package/src/components/BaseChipButton.vue +42 -42
- package/src/components/BaseCodeBlock.test.ts +70 -70
- package/src/components/BaseCodeBlock.vue +74 -74
- package/src/components/BaseCollapsibleSection.vue +113 -113
- package/src/components/BaseConfirmModal.vue +114 -114
- package/src/components/BaseCredentialsForm.test.ts +108 -108
- package/src/components/BaseCredentialsForm.vue +241 -241
- package/src/components/BaseDropdown.test.ts +87 -87
- package/src/components/BaseDropdown.vue +172 -172
- package/src/components/BaseEntityPickerModal.vue +330 -330
- package/src/components/BaseFileDropzone.vue +94 -94
- package/src/components/BaseFilterChip.test.ts +44 -44
- package/src/components/BaseFilterChip.vue +67 -67
- package/src/components/BaseModalShell.vue +209 -209
- package/src/components/BasePageHeader.vue +120 -120
- package/src/components/BasePillPickerModal.test.ts +95 -95
- package/src/components/BaseRemoveButton.vue +22 -22
- package/src/components/BaseSpecFields.test.ts +39 -0
- package/src/components/BaseSpecFields.vue +27 -3
- package/src/components/BaseStatBreakdown.test.ts +56 -56
- package/src/components/BaseStatBreakdown.vue +49 -49
- package/src/components/BaseStatusPill.vue +54 -54
- package/src/components/BaseTextInputModal.vue +140 -140
- package/src/components/BaseToolbarButton.test.ts +48 -48
- package/src/components/BaseToolbarButton.vue +94 -94
- package/src/composables/useFieldClasses.test.ts +55 -55
- package/src/composables/useFieldClasses.ts +56 -56
- package/src/composables/usePolling.test.ts +112 -112
- package/src/composables/usePolling.ts +102 -102
- package/src/composables/useQueryParamSync.test.ts +56 -56
- package/src/composables/useQueryParamSync.ts +42 -42
- package/src/composables/useThemeClasses.test.ts +34 -34
- package/src/composables/useThemeClasses.ts +137 -137
- package/src/index.ts +138 -138
- package/src/style.css +32 -32
- package/src/types/distribution.ts +7 -7
- package/src/types/pillPicker.ts +14 -14
- package/src/types/specField.ts +30 -30
- package/src/types/statBreakdown.ts +6 -6
- package/src/utils/format.test.ts +264 -264
- package/src/utils/format.ts +216 -216
- package/src/utils/httpColors.test.ts +100 -100
- package/src/utils/httpColors.ts +99 -99
- package/src/utils/kvRows.test.ts +47 -47
- package/src/utils/kvRows.ts +34 -34
- package/src/utils/specForm.test.ts +64 -53
- package/src/utils/specForm.ts +49 -48
- package/src/utils/validate.test.ts +82 -82
- package/src/utils/validate.ts +76 -76
package/src/index.ts
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import './style.css'
|
|
2
|
-
|
|
3
|
-
// Components — existing
|
|
4
|
-
export { default as BaseAlert } from './components/BaseAlert.vue'
|
|
5
|
-
export { default as BaseBadge } from './components/BaseBadge.vue'
|
|
6
|
-
export { default as BaseBreadcrumb } from './components/BaseBreadcrumb.vue'
|
|
7
|
-
export { default as BaseButton } from './components/BaseButton.vue'
|
|
8
|
-
export { default as BaseLine } from './components/BaseLine.vue'
|
|
9
|
-
export { default as BaseLogo } from './components/BaseLogo.vue'
|
|
10
|
-
export { default as BaseModal } from './components/BaseModal.vue'
|
|
11
|
-
export { default as BaseRow } from './components/BaseRow.vue'
|
|
12
|
-
export { default as BaseSpinner } from './components/BaseSpinner.vue'
|
|
13
|
-
export { default as BaseToast } from './components/BaseToast.vue'
|
|
14
|
-
export { default as ColoredSquares } from './components/ColoredSquares.vue'
|
|
15
|
-
export { default as EarningsCard } from './components/EarningsCard.vue'
|
|
16
|
-
export { default as EuroAmount } from './components/EuroAmount.vue'
|
|
17
|
-
export { default as Pagination } from './components/Pagination.vue'
|
|
18
|
-
export { default as TrendArrow } from './components/TrendArrow.vue'
|
|
19
|
-
|
|
20
|
-
// Components — extracted from WireMate (Tier 1 + Tier 2)
|
|
21
|
-
export { default as BaseModalShell } from './components/BaseModalShell.vue'
|
|
22
|
-
export { default as BaseCollapsibleSection } from './components/BaseCollapsibleSection.vue'
|
|
23
|
-
export { default as BaseConfirmModal } from './components/BaseConfirmModal.vue'
|
|
24
|
-
export { default as BaseTextInputModal } from './components/BaseTextInputModal.vue'
|
|
25
|
-
export { default as BaseNotFoundPage } from './components/BaseNotFoundPage.vue'
|
|
26
|
-
export { default as BaseSidebar } from './components/BaseSidebar.vue'
|
|
27
|
-
export { default as BaseEntityPickerModal } from './components/BaseEntityPickerModal.vue'
|
|
28
|
-
export { default as BaseAppLayout } from './components/BaseAppLayout.vue'
|
|
29
|
-
export { default as BasePageHeader } from './components/BasePageHeader.vue'
|
|
30
|
-
export { default as BaseToolbarButton } from './components/BaseToolbarButton.vue'
|
|
31
|
-
export { default as BaseActionButton } from './components/BaseActionButton.vue'
|
|
32
|
-
export { default as BaseCopyButton } from './components/BaseCopyButton.vue'
|
|
33
|
-
export { default as BaseGoogleSignInButton } from './components/BaseGoogleSignInButton.vue'
|
|
34
|
-
export { default as BaseLoginForm } from './components/BaseLoginForm.vue'
|
|
35
|
-
export { default as BaseNotificationPanel } from './components/BaseNotificationPanel.vue'
|
|
36
|
-
export { default as BaseChipButton } from './components/BaseChipButton.vue'
|
|
37
|
-
export { default as BaseRemoveButton } from './components/BaseRemoveButton.vue'
|
|
38
|
-
export { default as BaseStatusPill } from './components/BaseStatusPill.vue'
|
|
39
|
-
export { default as BaseFileDropzone } from './components/BaseFileDropzone.vue'
|
|
40
|
-
export { default as BaseCodeBlock } from './components/BaseCodeBlock.vue'
|
|
41
|
-
|
|
42
|
-
// Components — extracted from TradeAutomation
|
|
43
|
-
export { default as BaseInput } from './components/BaseInput.vue'
|
|
44
|
-
export { default as BaseSelect } from './components/BaseSelect.vue'
|
|
45
|
-
export { default as BaseDropdown } from './components/BaseDropdown.vue'
|
|
46
|
-
export { default as BaseSegmentedControl } from './components/BaseSegmentedControl.vue'
|
|
47
|
-
export { default as BaseTable } from './components/BaseTable.vue'
|
|
48
|
-
export { default as BaseSpecFields } from './components/BaseSpecFields.vue'
|
|
49
|
-
export { default as BaseStatBreakdown } from './components/BaseStatBreakdown.vue'
|
|
50
|
-
export { default as BaseFilterChip } from './components/BaseFilterChip.vue'
|
|
51
|
-
export { default as BaseCredentialsForm } from './components/BaseCredentialsForm.vue'
|
|
52
|
-
export { default as BasePillPickerModal } from './components/BasePillPickerModal.vue'
|
|
53
|
-
export { default as BaseBarDistribution } from './components/BaseBarDistribution.vue'
|
|
54
|
-
export type { CredentialsView, CredentialsUpdate } from './components/BaseCredentialsForm.vue'
|
|
55
|
-
|
|
56
|
-
// Composables
|
|
57
|
-
export { useTheme, initTheme } from './composables/useTheme'
|
|
58
|
-
export type { UseThemeOptions } from './composables/useTheme'
|
|
59
|
-
export { useThemeClasses } from './composables/useThemeClasses'
|
|
60
|
-
export type { ThemeClasses } from './composables/useThemeClasses'
|
|
61
|
-
export { useEscapeKey } from './composables/useEscapeKey'
|
|
62
|
-
export { useDebouncedRef } from './composables/useDebounce'
|
|
63
|
-
export { useToast } from './composables/useToast'
|
|
64
|
-
export { useMobileSidebar } from './composables/useMobileSidebar'
|
|
65
|
-
export { useSidebarCollapse } from './composables/useSidebarCollapse'
|
|
66
|
-
export type { UseSidebarCollapseOptions } from './composables/useSidebarCollapse'
|
|
67
|
-
export { useNotifications } from './composables/useNotifications'
|
|
68
|
-
export { useQueryParamSync } from './composables/useQueryParamSync'
|
|
69
|
-
export { useFieldClasses } from './composables/useFieldClasses'
|
|
70
|
-
export type { FieldClasses } from './composables/useFieldClasses'
|
|
71
|
-
export { usePolling } from './composables/usePolling'
|
|
72
|
-
export type { UsePollingOptions } from './composables/usePolling'
|
|
73
|
-
|
|
74
|
-
// Enums
|
|
75
|
-
export { AlertEnum } from './enums/AlertEnum'
|
|
76
|
-
export { BaseBadgeEnum } from './enums/BaseBadgeEnum'
|
|
77
|
-
export { BaseButtonEnum } from './enums/BaseButtonEnum'
|
|
78
|
-
export { BaseButtonSizeEnum } from './enums/BaseButtonSizeEnum'
|
|
79
|
-
export { BaseLogoEnum, BaseLoginEnum } from './enums/BaseLogoEnum'
|
|
80
|
-
export { BaseModalEnum } from './enums/BaseModalEnum'
|
|
81
|
-
export { BaseToastEnum } from './enums/BaseToastEnum'
|
|
82
|
-
export { ColorsEnums } from './enums/ColorsEnums'
|
|
83
|
-
export { LineEnum } from './enums/LineEnum'
|
|
84
|
-
export { PositioningEnum } from './enums/PositioningEnum'
|
|
85
|
-
|
|
86
|
-
// Types
|
|
87
|
-
export type { BreadCrumb } from './components/BaseBreadcrumb.vue'
|
|
88
|
-
export type { NavItem, NavSection } from './types/sidebar'
|
|
89
|
-
export type { EntityPickerItem } from './types/entityPicker'
|
|
90
|
-
export type { LoginCredentials } from './types/auth'
|
|
91
|
-
export type { NotificationItem } from './types/notification'
|
|
92
|
-
export type { SegmentedOption } from './types/segmented'
|
|
93
|
-
export type { DropdownOption } from './types/dropdown'
|
|
94
|
-
export type { TableColumn } from './types/table'
|
|
95
|
-
export type { SpecField, SpecFieldType, SpecFieldValue } from './types/specField'
|
|
96
|
-
export type { StatBreakdownItem } from './types/statBreakdown'
|
|
97
|
-
export type { PillPickerItem } from './types/pillPicker'
|
|
98
|
-
export type { DistributionBar } from './types/distribution'
|
|
99
|
-
|
|
100
|
-
// Utils
|
|
101
|
-
export { getBaseColor, getBaseColorOf } from './utils/util'
|
|
102
|
-
export {
|
|
103
|
-
methodBadgeSolid,
|
|
104
|
-
methodBadgeBright,
|
|
105
|
-
methodBadgeTinted,
|
|
106
|
-
statusBadgeSolid,
|
|
107
|
-
statusBadgeTinted,
|
|
108
|
-
statusBadgeSoft,
|
|
109
|
-
} from './utils/httpColors'
|
|
110
|
-
export { rowKeyMissing, rowValueMissing } from './utils/kvRows'
|
|
111
|
-
export type { KeyValueRowLike } from './utils/kvRows'
|
|
112
|
-
export { sanitizeHtml, isSafeHref } from './utils/sanitizeHtml'
|
|
113
|
-
export {
|
|
114
|
-
fmtNumber,
|
|
115
|
-
fmtDate,
|
|
116
|
-
fmtDateTime,
|
|
117
|
-
fmtDateTimeMs,
|
|
118
|
-
fmtDateShort,
|
|
119
|
-
fmtCalendarDate,
|
|
120
|
-
fmtCalendarDateTime,
|
|
121
|
-
fmtMsAsSeconds,
|
|
122
|
-
fmtBytes,
|
|
123
|
-
fmtPrice,
|
|
124
|
-
fmtPct,
|
|
125
|
-
fmtUsd,
|
|
126
|
-
fmtDuration,
|
|
127
|
-
formatJson,
|
|
128
|
-
stringifyValue,
|
|
129
|
-
} from './utils/format'
|
|
130
|
-
export {
|
|
131
|
-
isValidAbsoluteUrl,
|
|
132
|
-
isValidJson,
|
|
133
|
-
isValidXml,
|
|
134
|
-
isValidBase64,
|
|
135
|
-
} from './utils/validate'
|
|
136
|
-
export { buildSpecParams, firstInvalidNumericSpec } from './utils/specForm'
|
|
137
|
-
export { computePnL } from './utils/pnl'
|
|
138
|
-
export type { PnL, PnLInputs } from './utils/pnl'
|
|
1
|
+
import './style.css'
|
|
2
|
+
|
|
3
|
+
// Components — existing
|
|
4
|
+
export { default as BaseAlert } from './components/BaseAlert.vue'
|
|
5
|
+
export { default as BaseBadge } from './components/BaseBadge.vue'
|
|
6
|
+
export { default as BaseBreadcrumb } from './components/BaseBreadcrumb.vue'
|
|
7
|
+
export { default as BaseButton } from './components/BaseButton.vue'
|
|
8
|
+
export { default as BaseLine } from './components/BaseLine.vue'
|
|
9
|
+
export { default as BaseLogo } from './components/BaseLogo.vue'
|
|
10
|
+
export { default as BaseModal } from './components/BaseModal.vue'
|
|
11
|
+
export { default as BaseRow } from './components/BaseRow.vue'
|
|
12
|
+
export { default as BaseSpinner } from './components/BaseSpinner.vue'
|
|
13
|
+
export { default as BaseToast } from './components/BaseToast.vue'
|
|
14
|
+
export { default as ColoredSquares } from './components/ColoredSquares.vue'
|
|
15
|
+
export { default as EarningsCard } from './components/EarningsCard.vue'
|
|
16
|
+
export { default as EuroAmount } from './components/EuroAmount.vue'
|
|
17
|
+
export { default as Pagination } from './components/Pagination.vue'
|
|
18
|
+
export { default as TrendArrow } from './components/TrendArrow.vue'
|
|
19
|
+
|
|
20
|
+
// Components — extracted from WireMate (Tier 1 + Tier 2)
|
|
21
|
+
export { default as BaseModalShell } from './components/BaseModalShell.vue'
|
|
22
|
+
export { default as BaseCollapsibleSection } from './components/BaseCollapsibleSection.vue'
|
|
23
|
+
export { default as BaseConfirmModal } from './components/BaseConfirmModal.vue'
|
|
24
|
+
export { default as BaseTextInputModal } from './components/BaseTextInputModal.vue'
|
|
25
|
+
export { default as BaseNotFoundPage } from './components/BaseNotFoundPage.vue'
|
|
26
|
+
export { default as BaseSidebar } from './components/BaseSidebar.vue'
|
|
27
|
+
export { default as BaseEntityPickerModal } from './components/BaseEntityPickerModal.vue'
|
|
28
|
+
export { default as BaseAppLayout } from './components/BaseAppLayout.vue'
|
|
29
|
+
export { default as BasePageHeader } from './components/BasePageHeader.vue'
|
|
30
|
+
export { default as BaseToolbarButton } from './components/BaseToolbarButton.vue'
|
|
31
|
+
export { default as BaseActionButton } from './components/BaseActionButton.vue'
|
|
32
|
+
export { default as BaseCopyButton } from './components/BaseCopyButton.vue'
|
|
33
|
+
export { default as BaseGoogleSignInButton } from './components/BaseGoogleSignInButton.vue'
|
|
34
|
+
export { default as BaseLoginForm } from './components/BaseLoginForm.vue'
|
|
35
|
+
export { default as BaseNotificationPanel } from './components/BaseNotificationPanel.vue'
|
|
36
|
+
export { default as BaseChipButton } from './components/BaseChipButton.vue'
|
|
37
|
+
export { default as BaseRemoveButton } from './components/BaseRemoveButton.vue'
|
|
38
|
+
export { default as BaseStatusPill } from './components/BaseStatusPill.vue'
|
|
39
|
+
export { default as BaseFileDropzone } from './components/BaseFileDropzone.vue'
|
|
40
|
+
export { default as BaseCodeBlock } from './components/BaseCodeBlock.vue'
|
|
41
|
+
|
|
42
|
+
// Components — extracted from TradeAutomation
|
|
43
|
+
export { default as BaseInput } from './components/BaseInput.vue'
|
|
44
|
+
export { default as BaseSelect } from './components/BaseSelect.vue'
|
|
45
|
+
export { default as BaseDropdown } from './components/BaseDropdown.vue'
|
|
46
|
+
export { default as BaseSegmentedControl } from './components/BaseSegmentedControl.vue'
|
|
47
|
+
export { default as BaseTable } from './components/BaseTable.vue'
|
|
48
|
+
export { default as BaseSpecFields } from './components/BaseSpecFields.vue'
|
|
49
|
+
export { default as BaseStatBreakdown } from './components/BaseStatBreakdown.vue'
|
|
50
|
+
export { default as BaseFilterChip } from './components/BaseFilterChip.vue'
|
|
51
|
+
export { default as BaseCredentialsForm } from './components/BaseCredentialsForm.vue'
|
|
52
|
+
export { default as BasePillPickerModal } from './components/BasePillPickerModal.vue'
|
|
53
|
+
export { default as BaseBarDistribution } from './components/BaseBarDistribution.vue'
|
|
54
|
+
export type { CredentialsView, CredentialsUpdate } from './components/BaseCredentialsForm.vue'
|
|
55
|
+
|
|
56
|
+
// Composables
|
|
57
|
+
export { useTheme, initTheme } from './composables/useTheme'
|
|
58
|
+
export type { UseThemeOptions } from './composables/useTheme'
|
|
59
|
+
export { useThemeClasses } from './composables/useThemeClasses'
|
|
60
|
+
export type { ThemeClasses } from './composables/useThemeClasses'
|
|
61
|
+
export { useEscapeKey } from './composables/useEscapeKey'
|
|
62
|
+
export { useDebouncedRef } from './composables/useDebounce'
|
|
63
|
+
export { useToast } from './composables/useToast'
|
|
64
|
+
export { useMobileSidebar } from './composables/useMobileSidebar'
|
|
65
|
+
export { useSidebarCollapse } from './composables/useSidebarCollapse'
|
|
66
|
+
export type { UseSidebarCollapseOptions } from './composables/useSidebarCollapse'
|
|
67
|
+
export { useNotifications } from './composables/useNotifications'
|
|
68
|
+
export { useQueryParamSync } from './composables/useQueryParamSync'
|
|
69
|
+
export { useFieldClasses } from './composables/useFieldClasses'
|
|
70
|
+
export type { FieldClasses } from './composables/useFieldClasses'
|
|
71
|
+
export { usePolling } from './composables/usePolling'
|
|
72
|
+
export type { UsePollingOptions } from './composables/usePolling'
|
|
73
|
+
|
|
74
|
+
// Enums
|
|
75
|
+
export { AlertEnum } from './enums/AlertEnum'
|
|
76
|
+
export { BaseBadgeEnum } from './enums/BaseBadgeEnum'
|
|
77
|
+
export { BaseButtonEnum } from './enums/BaseButtonEnum'
|
|
78
|
+
export { BaseButtonSizeEnum } from './enums/BaseButtonSizeEnum'
|
|
79
|
+
export { BaseLogoEnum, BaseLoginEnum } from './enums/BaseLogoEnum'
|
|
80
|
+
export { BaseModalEnum } from './enums/BaseModalEnum'
|
|
81
|
+
export { BaseToastEnum } from './enums/BaseToastEnum'
|
|
82
|
+
export { ColorsEnums } from './enums/ColorsEnums'
|
|
83
|
+
export { LineEnum } from './enums/LineEnum'
|
|
84
|
+
export { PositioningEnum } from './enums/PositioningEnum'
|
|
85
|
+
|
|
86
|
+
// Types
|
|
87
|
+
export type { BreadCrumb } from './components/BaseBreadcrumb.vue'
|
|
88
|
+
export type { NavItem, NavSection } from './types/sidebar'
|
|
89
|
+
export type { EntityPickerItem } from './types/entityPicker'
|
|
90
|
+
export type { LoginCredentials } from './types/auth'
|
|
91
|
+
export type { NotificationItem } from './types/notification'
|
|
92
|
+
export type { SegmentedOption } from './types/segmented'
|
|
93
|
+
export type { DropdownOption } from './types/dropdown'
|
|
94
|
+
export type { TableColumn } from './types/table'
|
|
95
|
+
export type { SpecField, SpecFieldType, SpecFieldValue } from './types/specField'
|
|
96
|
+
export type { StatBreakdownItem } from './types/statBreakdown'
|
|
97
|
+
export type { PillPickerItem } from './types/pillPicker'
|
|
98
|
+
export type { DistributionBar } from './types/distribution'
|
|
99
|
+
|
|
100
|
+
// Utils
|
|
101
|
+
export { getBaseColor, getBaseColorOf } from './utils/util'
|
|
102
|
+
export {
|
|
103
|
+
methodBadgeSolid,
|
|
104
|
+
methodBadgeBright,
|
|
105
|
+
methodBadgeTinted,
|
|
106
|
+
statusBadgeSolid,
|
|
107
|
+
statusBadgeTinted,
|
|
108
|
+
statusBadgeSoft,
|
|
109
|
+
} from './utils/httpColors'
|
|
110
|
+
export { rowKeyMissing, rowValueMissing } from './utils/kvRows'
|
|
111
|
+
export type { KeyValueRowLike } from './utils/kvRows'
|
|
112
|
+
export { sanitizeHtml, isSafeHref } from './utils/sanitizeHtml'
|
|
113
|
+
export {
|
|
114
|
+
fmtNumber,
|
|
115
|
+
fmtDate,
|
|
116
|
+
fmtDateTime,
|
|
117
|
+
fmtDateTimeMs,
|
|
118
|
+
fmtDateShort,
|
|
119
|
+
fmtCalendarDate,
|
|
120
|
+
fmtCalendarDateTime,
|
|
121
|
+
fmtMsAsSeconds,
|
|
122
|
+
fmtBytes,
|
|
123
|
+
fmtPrice,
|
|
124
|
+
fmtPct,
|
|
125
|
+
fmtUsd,
|
|
126
|
+
fmtDuration,
|
|
127
|
+
formatJson,
|
|
128
|
+
stringifyValue,
|
|
129
|
+
} from './utils/format'
|
|
130
|
+
export {
|
|
131
|
+
isValidAbsoluteUrl,
|
|
132
|
+
isValidJson,
|
|
133
|
+
isValidXml,
|
|
134
|
+
isValidBase64,
|
|
135
|
+
} from './utils/validate'
|
|
136
|
+
export { buildSpecParams, firstInvalidNumericSpec } from './utils/specForm'
|
|
137
|
+
export { computePnL } from './utils/pnl'
|
|
138
|
+
export type { PnL, PnLInputs } from './utils/pnl'
|
package/src/style.css
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
/* Brand typography, shipped by the library so every consumer renders the same:
|
|
2
|
-
Fira Sans for UI text, Fira Code for numerals/data. External @import (kept
|
|
3
|
-
first — CSS ignores @import after any other rule); consumers should add
|
|
4
|
-
<link rel="preconnect"> hints for fonts.googleapis.com / fonts.gstatic.com
|
|
5
|
-
in their index.html for faster first paint. */
|
|
6
|
-
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');
|
|
7
|
-
|
|
8
|
-
@import "tailwindcss";
|
|
9
|
-
|
|
10
|
-
/* Register the fonts as the Tailwind theme defaults. The compiled stylesheet
|
|
11
|
-
re-declares theme variables in its :root, so in consumers that import this
|
|
12
|
-
file after their own `@import "tailwindcss"` these values win the cascade
|
|
13
|
-
for font-sans/font-mono utilities AND the body rule below. */
|
|
14
|
-
@theme {
|
|
15
|
-
--font-sans: 'Fira Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
16
|
-
--font-mono: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/* Compile `dark:` variants against the `.dark` class that useTheme()/initTheme()
|
|
20
|
-
toggle on <html> — NOT the OS-level prefers-color-scheme media query
|
|
21
|
-
(Tailwind v4's default). Both consumers (TradeAutomation, WireMate) switch
|
|
22
|
-
themes with the class toggle, so media-gated dark rules leak the dark skin
|
|
23
|
-
into the light theme for users whose OS prefers dark.
|
|
24
|
-
Use a specificity-bearing selector (:is, not :where) so dark: utilities win
|
|
25
|
-
over plain base utilities like bg-slate-50 on a cascade tie. */
|
|
26
|
-
@custom-variant dark (&:is(.dark, .dark *));
|
|
27
|
-
|
|
28
|
-
/* Apply the brand font app-wide. Plain body rule (not preflight-dependent) so
|
|
29
|
-
it also styles consumers whose own Tailwind preflight came earlier. */
|
|
30
|
-
body {
|
|
31
|
-
font-family: var(--font-sans);
|
|
32
|
-
}
|
|
1
|
+
/* Brand typography, shipped by the library so every consumer renders the same:
|
|
2
|
+
Fira Sans for UI text, Fira Code for numerals/data. External @import (kept
|
|
3
|
+
first — CSS ignores @import after any other rule); consumers should add
|
|
4
|
+
<link rel="preconnect"> hints for fonts.googleapis.com / fonts.gstatic.com
|
|
5
|
+
in their index.html for faster first paint. */
|
|
6
|
+
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');
|
|
7
|
+
|
|
8
|
+
@import "tailwindcss";
|
|
9
|
+
|
|
10
|
+
/* Register the fonts as the Tailwind theme defaults. The compiled stylesheet
|
|
11
|
+
re-declares theme variables in its :root, so in consumers that import this
|
|
12
|
+
file after their own `@import "tailwindcss"` these values win the cascade
|
|
13
|
+
for font-sans/font-mono utilities AND the body rule below. */
|
|
14
|
+
@theme {
|
|
15
|
+
--font-sans: 'Fira Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
16
|
+
--font-mono: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Compile `dark:` variants against the `.dark` class that useTheme()/initTheme()
|
|
20
|
+
toggle on <html> — NOT the OS-level prefers-color-scheme media query
|
|
21
|
+
(Tailwind v4's default). Both consumers (TradeAutomation, WireMate) switch
|
|
22
|
+
themes with the class toggle, so media-gated dark rules leak the dark skin
|
|
23
|
+
into the light theme for users whose OS prefers dark.
|
|
24
|
+
Use a specificity-bearing selector (:is, not :where) so dark: utilities win
|
|
25
|
+
over plain base utilities like bg-slate-50 on a cascade tie. */
|
|
26
|
+
@custom-variant dark (&:is(.dark, .dark *));
|
|
27
|
+
|
|
28
|
+
/* Apply the brand font app-wide. Plain body rule (not preflight-dependent) so
|
|
29
|
+
it also styles consumers whose own Tailwind preflight came earlier. */
|
|
30
|
+
body {
|
|
31
|
+
font-family: var(--font-sans);
|
|
32
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** One bar of a BaseBarDistribution chart. */
|
|
2
|
-
export interface DistributionBar {
|
|
3
|
-
/** Value rendered under the bar (already formatted for display). */
|
|
4
|
-
label: string
|
|
5
|
-
/** Occurrences of this value — drives the bar height. */
|
|
6
|
-
count: number
|
|
7
|
-
}
|
|
1
|
+
/** One bar of a BaseBarDistribution chart. */
|
|
2
|
+
export interface DistributionBar {
|
|
3
|
+
/** Value rendered under the bar (already formatted for display). */
|
|
4
|
+
label: string
|
|
5
|
+
/** Occurrences of this value — drives the bar height. */
|
|
6
|
+
count: number
|
|
7
|
+
}
|
package/src/types/pillPicker.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One clickable pill in a BasePillPickerModal.
|
|
3
|
-
*
|
|
4
|
-
* `id` must be unique (it keys the pill and identifies the pick),
|
|
5
|
-
* `label` is what the pill shows and what the free-text filter matches,
|
|
6
|
-
* `group` assigns the pill to one of the modal's segmented-filter groups,
|
|
7
|
-
* `title` becomes the pill's tooltip.
|
|
8
|
-
*/
|
|
9
|
-
export interface PillPickerItem {
|
|
10
|
-
id: string
|
|
11
|
-
label: string
|
|
12
|
-
group?: string
|
|
13
|
-
title?: string
|
|
14
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* One clickable pill in a BasePillPickerModal.
|
|
3
|
+
*
|
|
4
|
+
* `id` must be unique (it keys the pill and identifies the pick),
|
|
5
|
+
* `label` is what the pill shows and what the free-text filter matches,
|
|
6
|
+
* `group` assigns the pill to one of the modal's segmented-filter groups,
|
|
7
|
+
* `title` becomes the pill's tooltip.
|
|
8
|
+
*/
|
|
9
|
+
export interface PillPickerItem {
|
|
10
|
+
id: string
|
|
11
|
+
label: string
|
|
12
|
+
group?: string
|
|
13
|
+
title?: string
|
|
14
|
+
}
|
package/src/types/specField.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/** Which input a BaseSpecFields entry renders. */
|
|
2
|
-
export type SpecFieldType = 'decimal' | 'integer' | 'boolean' | 'select'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* One field of a spec-driven form: the field's key in the value map, its
|
|
6
|
-
* label, which input to render, and optional validation/rendering hints.
|
|
7
|
-
* Members are loose (`| null` allowed) so backend-described catalogues can be
|
|
8
|
-
* passed straight through without mapping.
|
|
9
|
-
*/
|
|
10
|
-
export interface SpecField {
|
|
11
|
-
key: string
|
|
12
|
-
label: string
|
|
13
|
-
type: SpecFieldType
|
|
14
|
-
/**
|
|
15
|
-
* Default value the form seeds the field with. `null` marks the field as
|
|
16
|
-
* OPTIONAL for `firstInvalidNumericSpec` (blank = "knob disabled").
|
|
17
|
-
*/
|
|
18
|
-
default?: SpecFieldValue | null
|
|
19
|
-
/** Choices for `type: 'select'`. */
|
|
20
|
-
options?: string[] | null
|
|
21
|
-
/** Step for numeric inputs; defaults to 1 (integer) / 0.01 (decimal). */
|
|
22
|
-
step?: number | null
|
|
23
|
-
/** Minimum for numeric inputs. */
|
|
24
|
-
min?: number | null
|
|
25
|
-
/** Help text rendered under the field. */
|
|
26
|
-
help?: string | null
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** A field's current value in the owner's form state. */
|
|
30
|
-
export type SpecFieldValue = number | boolean | string
|
|
1
|
+
/** Which input a BaseSpecFields entry renders. */
|
|
2
|
+
export type SpecFieldType = 'decimal' | 'integer' | 'boolean' | 'select'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* One field of a spec-driven form: the field's key in the value map, its
|
|
6
|
+
* label, which input to render, and optional validation/rendering hints.
|
|
7
|
+
* Members are loose (`| null` allowed) so backend-described catalogues can be
|
|
8
|
+
* passed straight through without mapping.
|
|
9
|
+
*/
|
|
10
|
+
export interface SpecField {
|
|
11
|
+
key: string
|
|
12
|
+
label: string
|
|
13
|
+
type: SpecFieldType
|
|
14
|
+
/**
|
|
15
|
+
* Default value the form seeds the field with. `null` marks the field as
|
|
16
|
+
* OPTIONAL for `firstInvalidNumericSpec` (blank = "knob disabled").
|
|
17
|
+
*/
|
|
18
|
+
default?: SpecFieldValue | null
|
|
19
|
+
/** Choices for `type: 'select'`. */
|
|
20
|
+
options?: string[] | null
|
|
21
|
+
/** Step for numeric inputs; defaults to 1 (integer) / 0.01 (decimal). */
|
|
22
|
+
step?: number | null
|
|
23
|
+
/** Minimum for numeric inputs. */
|
|
24
|
+
min?: number | null
|
|
25
|
+
/** Help text rendered under the field. */
|
|
26
|
+
help?: string | null
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** A field's current value in the owner's form state. */
|
|
30
|
+
export type SpecFieldValue = number | boolean | string
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export interface StatBreakdownItem {
|
|
2
|
-
/** Row label rendered on the left (e.g. a venue or category name). */
|
|
3
|
-
label: string
|
|
4
|
-
/** Numeric value; null/undefined renders as an em-dash rather than 0. */
|
|
5
|
-
value: number | null | undefined
|
|
6
|
-
}
|
|
1
|
+
export interface StatBreakdownItem {
|
|
2
|
+
/** Row label rendered on the left (e.g. a venue or category name). */
|
|
3
|
+
label: string
|
|
4
|
+
/** Numeric value; null/undefined renders as an em-dash rather than 0. */
|
|
5
|
+
value: number | null | undefined
|
|
6
|
+
}
|