@visns-studio/visns-components 6.34.0 → 6.35.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 +37 -1
- package/package.json +1 -1
- package/src/components/DataGrid.jsx +44 -7
- package/src/components/auth/Login.jsx +2 -2
- package/src/components/auth/Reset.jsx +1 -1
- package/src/components/auth/TwoFactorAuth.jsx +1 -1
- package/src/components/auth/Verify.jsx +2 -2
- package/src/components/emailCampaigns/BlockEditor.jsx +486 -0
- package/src/components/emailCampaigns/CampaignEditor.jsx +614 -0
- package/src/components/emailCampaigns/CampaignReport.jsx +98 -0
- package/src/components/emailCampaigns/EmailCampaigns.jsx +422 -0
- package/src/components/emailCampaigns/EmailLists.jsx +505 -0
- package/src/components/emailCampaigns/emailCampaignApi.js +135 -0
- package/src/components/sms/SmsCampaigns.jsx +34 -4
- package/src/components/sms/SmsInbox.jsx +2 -5
- package/src/components/sms/SmsLineSettings.jsx +2 -5
- package/src/components/styles/EmailCampaigns.module.scss +922 -0
- package/src/components/styles/Sms.module.scss +33 -4
- package/src/components/styles/Vault.module.scss +5 -3
- package/src/components/styles/global.css +14 -2
- package/src/index.js +4 -0
|
@@ -1068,19 +1068,48 @@ $sms-mono: 'SFMono-Regular', 'Menlo', 'Consolas', monospace;
|
|
|
1068
1068
|
|
|
1069
1069
|
.pageTitle {
|
|
1070
1070
|
display: flex;
|
|
1071
|
-
|
|
1071
|
+
flex-wrap: wrap;
|
|
1072
|
+
column-gap: 0.3em;
|
|
1072
1073
|
align-items: center;
|
|
1073
1074
|
margin: 0;
|
|
1074
|
-
|
|
1075
|
-
|
|
1075
|
+
/* The same title every other screen of a host CRM draws: `.crmtitle h1` in
|
|
1076
|
+
GenericDetail/GenericIndex and PageHeader's `.title` all read
|
|
1077
|
+
--page-header-title-size and the heading colour. This was 1.5rem in the
|
|
1078
|
+
paragraph colour, a size larger than every page around it. */
|
|
1079
|
+
color: var(--heading-color, var(--s-paragraph));
|
|
1080
|
+
font-size: var(--page-header-title-size, 1.25rem);
|
|
1076
1081
|
font-weight: 700;
|
|
1077
|
-
line-height: 1.
|
|
1082
|
+
line-height: 1.25;
|
|
1083
|
+
letter-spacing: -0.02em;
|
|
1078
1084
|
|
|
1079
1085
|
svg {
|
|
1080
1086
|
color: var(--s-primary);
|
|
1081
1087
|
}
|
|
1082
1088
|
}
|
|
1083
1089
|
|
|
1090
|
+
/* A breadcrumb inside the title — `Messages › SMS campaigns`. The library's
|
|
1091
|
+
trail spec (`.crmtitle h1 a` / `h1 svg` in GenericDetail.module.scss):
|
|
1092
|
+
the parent muted at 500, a 16px chevron, the current page at 700. */
|
|
1093
|
+
.pageTitleParent {
|
|
1094
|
+
color: var(--muted-color, var(--s-muted));
|
|
1095
|
+
font-weight: 500;
|
|
1096
|
+
text-decoration: none;
|
|
1097
|
+
transition: color 0.15s ease;
|
|
1098
|
+
|
|
1099
|
+
&:hover,
|
|
1100
|
+
&:focus-visible {
|
|
1101
|
+
color: var(--paragraph-color, var(--s-paragraph));
|
|
1102
|
+
text-decoration: underline;
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
.pageTitle .pageTitleChevron {
|
|
1107
|
+
flex: 0 0 auto;
|
|
1108
|
+
max-width: 15px;
|
|
1109
|
+
margin: 0 0.4rem;
|
|
1110
|
+
color: var(--muted-color, var(--s-muted));
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1084
1113
|
.headActions {
|
|
1085
1114
|
display: flex;
|
|
1086
1115
|
flex-wrap: wrap;
|
|
@@ -1746,10 +1746,12 @@ input.checkControl {
|
|
|
1746
1746
|
|
|
1747
1747
|
.pageTitle {
|
|
1748
1748
|
margin: 0;
|
|
1749
|
-
|
|
1750
|
-
|
|
1749
|
+
/* One title size across a host CRM — see `.pageTitle` in Sms.module.scss. */
|
|
1750
|
+
color: var(--heading-color, var(--v-paragraph));
|
|
1751
|
+
font-size: var(--page-header-title-size, 1.25rem);
|
|
1751
1752
|
font-weight: 700;
|
|
1752
|
-
line-height: 1.
|
|
1753
|
+
line-height: 1.25;
|
|
1754
|
+
letter-spacing: -0.02em;
|
|
1753
1755
|
}
|
|
1754
1756
|
|
|
1755
1757
|
.pageIntro {
|
|
@@ -280,7 +280,9 @@ input[type]:not([type='search']):not([type='url']):not([type='hidden']):not(
|
|
|
280
280
|
.react-datepicker__year-select
|
|
281
281
|
):not(.visns-native-date-filter__input):not([type='date']):not(
|
|
282
282
|
[type='datetime-local']
|
|
283
|
-
):not([type='time']):not([class*='searchInput']):not([class*='filterInput']):not([class*='rowActionPickerSearch'])
|
|
283
|
+
):not([type='time']):not([class*='searchInput']):not([class*='filterInput']):not([class*='rowActionPickerSearch']):not(
|
|
284
|
+
.visns-auth-input
|
|
285
|
+
) {
|
|
284
286
|
background: white;
|
|
285
287
|
border-radius: var(--br);
|
|
286
288
|
border: 1px solid rgba(var(--paragraph-color-rgb, 43, 43, 43), 0.15);
|
|
@@ -310,6 +312,14 @@ input[type]:not([type='search']):not([type='url']):not([type='hidden']):not(
|
|
|
310
312
|
font-size: 0.85rem;
|
|
311
313
|
}
|
|
312
314
|
|
|
315
|
+
/* `.visns-auth-input` is the floating-label field on the auth screens (login,
|
|
316
|
+
reset, verify, 2FA). Its module gives it a 3.35rem box with a top-heavy
|
|
317
|
+
padding so the value clears the label sitting inside it, and that rule is
|
|
318
|
+
`.field input` — (0,1,1), which this chain outranks twenty times over. So
|
|
319
|
+
the chain used to win: the box shrank to `--field-height`, the padding went
|
|
320
|
+
horizontal-only, and the value was drawn straight through the label. The
|
|
321
|
+
auth inputs carry the class for exactly this opt-out. */
|
|
322
|
+
|
|
313
323
|
/* The focus border, as its own rule and NOT nested under the list above.
|
|
314
324
|
|
|
315
325
|
Nested `&:focus` is `:is(<the whole list>):focus`, and `:is()` takes the
|
|
@@ -333,7 +343,9 @@ input[type]:not([type='search']):not([type='url']):not([type='hidden']):not(
|
|
|
333
343
|
.react-datepicker__year-select
|
|
334
344
|
):not(.visns-native-date-filter__input):not([type='date']):not(
|
|
335
345
|
[type='datetime-local']
|
|
336
|
-
):not([type='time']):not([class*='searchInput']):not([class*='filterInput']):not([class*='rowActionPickerSearch']):
|
|
346
|
+
):not([type='time']):not([class*='searchInput']):not([class*='filterInput']):not([class*='rowActionPickerSearch']):not(
|
|
347
|
+
.visns-auth-input
|
|
348
|
+
):focus {
|
|
337
349
|
border: 1px solid var(--primary-color);
|
|
338
350
|
}
|
|
339
351
|
|
package/src/index.js
CHANGED
|
@@ -288,6 +288,9 @@ import SmsCampaigns, {
|
|
|
288
288
|
import SmsClientConversations from './components/sms/SmsClientConversations';
|
|
289
289
|
import SmsComposeModal from './components/sms/SmsComposeModal';
|
|
290
290
|
import SmsInbox from './components/sms/SmsInbox';
|
|
291
|
+
// Email campaigns — Resend Broadcasts, the screen for visns-packages'
|
|
292
|
+
// `email_campaigns` module. Mount it at a route and pass `canManage`.
|
|
293
|
+
import EmailCampaigns from './components/emailCampaigns/EmailCampaigns';
|
|
291
294
|
import SmsInboxBadge from './components/sms/SmsInboxBadge';
|
|
292
295
|
import SmsLineSettings from './components/sms/SmsLineSettings';
|
|
293
296
|
import SmsThreadPanel from './components/sms/SmsThreadPanel';
|
|
@@ -528,6 +531,7 @@ export {
|
|
|
528
531
|
SmsClientConversations,
|
|
529
532
|
SmsComposeModal,
|
|
530
533
|
SmsInbox,
|
|
534
|
+
EmailCampaigns,
|
|
531
535
|
SmsInboxBadge,
|
|
532
536
|
SmsLineSettings,
|
|
533
537
|
SmsThreadPanel,
|