Merge branch 'frappe:develop' into develop
This commit is contained in:
commit
a0f2559a65
@ -44,7 +44,7 @@ def get_user_signature():
|
||||
if html_signature:
|
||||
_signature = html_signature.renderContents()
|
||||
content = ""
|
||||
if (cstr(_signature) or signature):
|
||||
if cstr(_signature) or signature:
|
||||
content = f'<br><p class="signature">{signature}</p>'
|
||||
return content
|
||||
|
||||
@ -64,14 +64,16 @@ def check_app_permission():
|
||||
return True
|
||||
|
||||
roles = frappe.get_roles()
|
||||
if any(role in ["System Manager", "Sales User", "Sales Manager", "Sales Master Manager"] for role in roles):
|
||||
if any(
|
||||
role in ["System Manager", "Sales User", "Sales Manager", "Sales Master Manager"] for role in roles
|
||||
):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def accept_invitation(key: str = None):
|
||||
def accept_invitation(key: str | None = None):
|
||||
if not key:
|
||||
frappe.throw("Invalid or expired key")
|
||||
|
||||
@ -91,6 +93,7 @@ def accept_invitation(key: str = None):
|
||||
|
||||
@frappe.whitelist()
|
||||
def invite_by_email(emails: str, role: str):
|
||||
frappe.only_for("Sales Manager")
|
||||
if not emails:
|
||||
return
|
||||
email_string = validate_email_address(emails, throw=False)
|
||||
@ -120,8 +123,8 @@ def get_file_uploader_defaults(doctype: str):
|
||||
make_attachments_public = meta.get("make_attachments_public")
|
||||
|
||||
return {
|
||||
'allowed_file_types': frappe.get_system_settings("allowed_file_extensions"),
|
||||
'max_file_size': get_max_file_size(),
|
||||
'max_number_of_files': max_number_of_files,
|
||||
'make_attachments_public': bool(make_attachments_public),
|
||||
}
|
||||
"allowed_file_types": frappe.get_system_settings("allowed_file_extensions"),
|
||||
"max_file_size": get_max_file_size(),
|
||||
"max_number_of_files": max_number_of_files,
|
||||
"make_attachments_public": bool(make_attachments_public),
|
||||
}
|
||||
|
||||
24
crm/api/onboarding.py
Normal file
24
crm/api/onboarding.py
Normal file
@ -0,0 +1,24 @@
|
||||
import frappe
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_first_lead():
|
||||
lead = frappe.get_all(
|
||||
"CRM Lead",
|
||||
filters={"converted": 0},
|
||||
fields=["name"],
|
||||
order_by="creation",
|
||||
limit=1,
|
||||
)
|
||||
return lead[0].name if lead else None
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_first_deal():
|
||||
deal = frappe.get_all(
|
||||
"CRM Deal",
|
||||
fields=["name"],
|
||||
order_by="creation",
|
||||
limit=1,
|
||||
)
|
||||
return deal[0].name if deal else None
|
||||
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Frappe CRM VERSION\n"
|
||||
"Report-Msgid-Bugs-To: shariq@frappe.io\n"
|
||||
"POT-Creation-Date: 2025-03-09 09:34+0000\n"
|
||||
"PO-Revision-Date: 2025-03-09 09:34+0000\n"
|
||||
"POT-Creation-Date: 2025-03-16 09:34+0000\n"
|
||||
"PO-Revision-Date: 2025-03-16 09:34+0000\n"
|
||||
"Last-Translator: shariq@frappe.io\n"
|
||||
"Language-Team: shariq@frappe.io\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.13.1\n"
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1202
|
||||
#: frontend/src/components/ViewControls.vue:1206
|
||||
msgid " (New)"
|
||||
msgstr ""
|
||||
|
||||
@ -159,13 +159,13 @@ msgid "Account SID"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/CustomActions.vue:73
|
||||
#: frontend/src/components/ViewControls.vue:666
|
||||
#: frontend/src/components/ViewControls.vue:1094
|
||||
#: frontend/src/components/ViewControls.vue:669
|
||||
#: frontend/src/components/ViewControls.vue:1098
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:506 frontend/src/pages/Lead.vue:496
|
||||
#: frontend/src/pages/MobileDeal.vue:434 frontend/src/pages/MobileLead.vue:338
|
||||
#: frontend/src/pages/Deal.vue:513 frontend/src/pages/Lead.vue:501
|
||||
#: frontend/src/pages/MobileDeal.vue:441 frontend/src/pages/MobileLead.vue:344
|
||||
msgid "Activity"
|
||||
msgstr ""
|
||||
|
||||
@ -258,9 +258,9 @@ msgstr ""
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:605 frontend/src/pages/MobileContact.vue:601
|
||||
#: frontend/src/pages/MobileOrganization.vue:487
|
||||
#: frontend/src/pages/Organization.vue:505
|
||||
#: frontend/src/pages/Contact.vue:611 frontend/src/pages/MobileContact.vue:607
|
||||
#: frontend/src/pages/MobileOrganization.vue:493
|
||||
#: frontend/src/pages/Organization.vue:511
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
@ -323,12 +323,12 @@ msgstr ""
|
||||
msgid "Are you sure you want to delete this attachment?"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:293 frontend/src/pages/MobileContact.vue:286
|
||||
#: frontend/src/pages/Contact.vue:299 frontend/src/pages/MobileContact.vue:292
|
||||
msgid "Are you sure you want to delete this contact?"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/MobileOrganization.vue:280
|
||||
#: frontend/src/pages/Organization.vue:301
|
||||
#: frontend/src/pages/MobileOrganization.vue:286
|
||||
#: frontend/src/pages/Organization.vue:307
|
||||
msgid "Are you sure you want to delete this organization?"
|
||||
msgstr ""
|
||||
|
||||
@ -385,8 +385,8 @@ msgstr ""
|
||||
msgid "Attach a file"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:542 frontend/src/pages/Lead.vue:532
|
||||
#: frontend/src/pages/MobileDeal.vue:470 frontend/src/pages/MobileLead.vue:374
|
||||
#: frontend/src/pages/Deal.vue:549 frontend/src/pages/Lead.vue:537
|
||||
#: frontend/src/pages/MobileDeal.vue:477 frontend/src/pages/MobileLead.vue:380
|
||||
msgid "Attachments"
|
||||
msgstr ""
|
||||
|
||||
@ -593,7 +593,7 @@ msgstr ""
|
||||
msgid "CRM View Settings"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:270
|
||||
#: frontend/src/components/ViewControls.vue:272
|
||||
msgid "CSV"
|
||||
msgstr ""
|
||||
|
||||
@ -634,8 +634,8 @@ msgstr ""
|
||||
msgid "Calling..."
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:526 frontend/src/pages/Lead.vue:516
|
||||
#: frontend/src/pages/MobileDeal.vue:454 frontend/src/pages/MobileLead.vue:358
|
||||
#: frontend/src/pages/Deal.vue:533 frontend/src/pages/Lead.vue:521
|
||||
#: frontend/src/pages/MobileDeal.vue:461 frontend/src/pages/MobileLead.vue:364
|
||||
msgid "Calls"
|
||||
msgstr ""
|
||||
|
||||
@ -760,8 +760,8 @@ msgstr ""
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:516 frontend/src/pages/Lead.vue:506
|
||||
#: frontend/src/pages/MobileDeal.vue:444 frontend/src/pages/MobileLead.vue:348
|
||||
#: frontend/src/pages/Deal.vue:523 frontend/src/pages/Lead.vue:511
|
||||
#: frontend/src/pages/MobileDeal.vue:451 frontend/src/pages/MobileLead.vue:354
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
@ -809,7 +809,7 @@ msgstr ""
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:194
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:212
|
||||
msgid "Contact Already Exists"
|
||||
msgstr ""
|
||||
|
||||
@ -817,15 +817,15 @@ msgstr ""
|
||||
msgid "Contact Us"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:625 frontend/src/pages/MobileDeal.vue:553
|
||||
#: frontend/src/pages/Deal.vue:633 frontend/src/pages/MobileDeal.vue:560
|
||||
msgid "Contact added"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:611 frontend/src/pages/MobileDeal.vue:539
|
||||
#: frontend/src/pages/Deal.vue:619 frontend/src/pages/MobileDeal.vue:546
|
||||
msgid "Contact already added"
|
||||
msgstr ""
|
||||
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:193
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:211
|
||||
msgid "Contact already exists with {0}"
|
||||
msgstr ""
|
||||
|
||||
@ -833,7 +833,7 @@ msgstr ""
|
||||
msgid "Contact not found"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:640 frontend/src/pages/MobileDeal.vue:568
|
||||
#: frontend/src/pages/Deal.vue:648 frontend/src/pages/MobileDeal.vue:575
|
||||
msgid "Contact removed"
|
||||
msgstr ""
|
||||
|
||||
@ -842,8 +842,8 @@ msgstr ""
|
||||
#. Label of a shortcut in the Frappe CRM Workspace
|
||||
#: crm/fcrm/doctype/crm_deal/crm_deal.json
|
||||
#: crm/fcrm/workspace/frappe_crm/frappe_crm.json
|
||||
#: frontend/src/pages/Contact.vue:242 frontend/src/pages/MobileContact.vue:235
|
||||
#: frontend/src/pages/MobileOrganization.vue:367
|
||||
#: frontend/src/pages/Contact.vue:243 frontend/src/pages/MobileContact.vue:236
|
||||
#: frontend/src/pages/MobileOrganization.vue:373
|
||||
msgid "Contacts"
|
||||
msgstr ""
|
||||
|
||||
@ -932,7 +932,7 @@ msgid "Create Task"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Modals/ViewModal.vue:9
|
||||
#: frontend/src/components/ViewControls.vue:670
|
||||
#: frontend/src/components/ViewControls.vue:673
|
||||
msgid "Create View"
|
||||
msgstr ""
|
||||
|
||||
@ -953,17 +953,17 @@ msgstr ""
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:399
|
||||
#: frontend/src/pages/Deal.vue:401
|
||||
msgid "Customer created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:209
|
||||
#: frontend/src/components/ViewControls.vue:211
|
||||
msgid "Customize quick filters"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Activities/DataFields.vue:6
|
||||
#: frontend/src/pages/Deal.vue:521 frontend/src/pages/Lead.vue:511
|
||||
#: frontend/src/pages/MobileDeal.vue:449 frontend/src/pages/MobileLead.vue:353
|
||||
#: frontend/src/pages/Deal.vue:528 frontend/src/pages/Lead.vue:516
|
||||
#: frontend/src/pages/MobileDeal.vue:456 frontend/src/pages/MobileLead.vue:359
|
||||
msgid "Data"
|
||||
msgstr ""
|
||||
|
||||
@ -997,21 +997,21 @@ msgstr ""
|
||||
msgid "Deal Statuses"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:626 frontend/src/pages/MobileContact.vue:622
|
||||
#: frontend/src/pages/MobileOrganization.vue:508
|
||||
#: frontend/src/pages/Organization.vue:526
|
||||
#: frontend/src/pages/Contact.vue:632 frontend/src/pages/MobileContact.vue:628
|
||||
#: frontend/src/pages/MobileOrganization.vue:514
|
||||
#: frontend/src/pages/Organization.vue:532
|
||||
msgid "Deal owner"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:439 frontend/src/pages/MobileDeal.vue:361
|
||||
#: frontend/src/pages/Deal.vue:441 frontend/src/pages/MobileDeal.vue:363
|
||||
msgid "Deal updated"
|
||||
msgstr ""
|
||||
|
||||
#. Label of a shortcut in the Frappe CRM Workspace
|
||||
#: crm/fcrm/workspace/frappe_crm/frappe_crm.json
|
||||
#: frontend/src/pages/Deal.vue:471 frontend/src/pages/MobileContact.vue:314
|
||||
#: frontend/src/pages/MobileDeal.vue:393
|
||||
#: frontend/src/pages/MobileOrganization.vue:361
|
||||
#: frontend/src/pages/Deal.vue:473 frontend/src/pages/MobileContact.vue:320
|
||||
#: frontend/src/pages/MobileDeal.vue:395
|
||||
#: frontend/src/pages/MobileOrganization.vue:367
|
||||
msgid "Deals"
|
||||
msgstr ""
|
||||
|
||||
@ -1070,16 +1070,16 @@ msgstr ""
|
||||
#: frontend/src/components/ListBulkActions.vue:96
|
||||
#: frontend/src/components/ListBulkActions.vue:104
|
||||
#: frontend/src/components/ListBulkActions.vue:186
|
||||
#: frontend/src/components/ViewControls.vue:1146
|
||||
#: frontend/src/components/ViewControls.vue:1157
|
||||
#: frontend/src/pages/Contact.vue:105 frontend/src/pages/Contact.vue:296
|
||||
#: frontend/src/components/ViewControls.vue:1150
|
||||
#: frontend/src/components/ViewControls.vue:1161
|
||||
#: frontend/src/pages/Contact.vue:105 frontend/src/pages/Contact.vue:302
|
||||
#: frontend/src/pages/MobileContact.vue:81
|
||||
#: frontend/src/pages/MobileContact.vue:289
|
||||
#: frontend/src/pages/MobileDeal.vue:519
|
||||
#: frontend/src/pages/MobileContact.vue:295
|
||||
#: frontend/src/pages/MobileDeal.vue:526
|
||||
#: frontend/src/pages/MobileOrganization.vue:72
|
||||
#: frontend/src/pages/MobileOrganization.vue:283
|
||||
#: frontend/src/pages/MobileOrganization.vue:289
|
||||
#: frontend/src/pages/Notes.vue:40 frontend/src/pages/Organization.vue:83
|
||||
#: frontend/src/pages/Organization.vue:304 frontend/src/pages/Tasks.vue:361
|
||||
#: frontend/src/pages/Organization.vue:310 frontend/src/pages/Tasks.vue:361
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
@ -1091,8 +1091,8 @@ msgstr ""
|
||||
msgid "Delete Task"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1142
|
||||
#: frontend/src/components/ViewControls.vue:1150
|
||||
#: frontend/src/components/ViewControls.vue:1146
|
||||
#: frontend/src/components/ViewControls.vue:1154
|
||||
msgid "Delete View"
|
||||
msgstr ""
|
||||
|
||||
@ -1101,12 +1101,12 @@ msgstr ""
|
||||
msgid "Delete attachment"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:292 frontend/src/pages/MobileContact.vue:285
|
||||
#: frontend/src/pages/Contact.vue:298 frontend/src/pages/MobileContact.vue:291
|
||||
msgid "Delete contact"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/MobileOrganization.vue:279
|
||||
#: frontend/src/pages/Organization.vue:300
|
||||
#: frontend/src/pages/MobileOrganization.vue:285
|
||||
#: frontend/src/pages/Organization.vue:306
|
||||
msgid "Delete organization"
|
||||
msgstr ""
|
||||
|
||||
@ -1130,9 +1130,9 @@ msgstr ""
|
||||
#. Label of the details (Text Editor) field in DocType 'CRM Lead Source'
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json
|
||||
#: crm/fcrm/doctype/crm_lead_source/crm_lead_source.json
|
||||
#: frontend/src/pages/MobileContact.vue:309
|
||||
#: frontend/src/pages/MobileDeal.vue:428 frontend/src/pages/MobileLead.vue:332
|
||||
#: frontend/src/pages/MobileOrganization.vue:356
|
||||
#: frontend/src/pages/MobileContact.vue:315
|
||||
#: frontend/src/pages/MobileDeal.vue:435 frontend/src/pages/MobileLead.vue:338
|
||||
#: frontend/src/pages/MobileOrganization.vue:362
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
@ -1180,7 +1180,7 @@ msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Activities/AudioPlayer.vue:166
|
||||
#: frontend/src/components/ViewControls.vue:252
|
||||
#: frontend/src/components/ViewControls.vue:254
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
@ -1203,7 +1203,7 @@ msgid "Due Date"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Modals/ViewModal.vue:15
|
||||
#: frontend/src/components/ViewControls.vue:1098
|
||||
#: frontend/src/components/ViewControls.vue:1102
|
||||
msgid "Duplicate"
|
||||
msgstr ""
|
||||
|
||||
@ -1259,7 +1259,7 @@ msgstr ""
|
||||
#: frontend/src/components/FieldLayoutEditor.vue:319
|
||||
#: frontend/src/components/FieldLayoutEditor.vue:345
|
||||
#: frontend/src/components/ListBulkActions.vue:179
|
||||
#: frontend/src/components/ViewControls.vue:1116
|
||||
#: frontend/src/components/ViewControls.vue:1120
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
@ -1323,12 +1323,12 @@ msgstr ""
|
||||
#: crm/fcrm/doctype/crm_contacts/crm_contacts.json
|
||||
#: crm/fcrm/doctype/crm_deal/crm_deal.json
|
||||
#: crm/fcrm/doctype/crm_invitation/crm_invitation.json
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:616
|
||||
#: frontend/src/pages/MobileContact.vue:612
|
||||
#: frontend/src/pages/MobileOrganization.vue:498
|
||||
#: frontend/src/pages/MobileOrganization.vue:526
|
||||
#: frontend/src/pages/Organization.vue:516
|
||||
#: frontend/src/pages/Organization.vue:544
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:622
|
||||
#: frontend/src/pages/MobileContact.vue:618
|
||||
#: frontend/src/pages/MobileOrganization.vue:504
|
||||
#: frontend/src/pages/MobileOrganization.vue:532
|
||||
#: frontend/src/pages/Organization.vue:522
|
||||
#: frontend/src/pages/Organization.vue:550
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
@ -1345,8 +1345,8 @@ msgstr ""
|
||||
msgid "Email from Lead"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:511 frontend/src/pages/Lead.vue:501
|
||||
#: frontend/src/pages/MobileDeal.vue:439 frontend/src/pages/MobileLead.vue:343
|
||||
#: frontend/src/pages/Deal.vue:518 frontend/src/pages/Lead.vue:506
|
||||
#: frontend/src/pages/MobileDeal.vue:446 frontend/src/pages/MobileLead.vue:349
|
||||
msgid "Emails"
|
||||
msgstr ""
|
||||
|
||||
@ -1410,28 +1410,28 @@ msgstr ""
|
||||
#: frontend/src/components/Settings/SettingsPage.vue:91
|
||||
#: frontend/src/components/Settings/TelephonySettings.vue:131
|
||||
#: frontend/src/components/Settings/TelephonySettings.vue:156
|
||||
#: frontend/src/pages/Lead.vue:600 frontend/src/pages/Lead.vue:610
|
||||
#: frontend/src/pages/MobileLead.vue:434 frontend/src/pages/MobileLead.vue:444
|
||||
#: frontend/src/pages/Lead.vue:603 frontend/src/pages/Lead.vue:613
|
||||
#: frontend/src/pages/MobileLead.vue:438 frontend/src/pages/MobileLead.vue:448
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:460 frontend/src/pages/MobileDeal.vue:382
|
||||
#: frontend/src/pages/Deal.vue:462 frontend/src/pages/MobileDeal.vue:384
|
||||
msgid "Error Updating Deal"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:450 frontend/src/pages/MobileLead.vue:286
|
||||
#: frontend/src/pages/Lead.vue:450 frontend/src/pages/MobileLead.vue:287
|
||||
msgid "Error Updating Lead"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:654
|
||||
#: frontend/src/pages/Lead.vue:636
|
||||
msgid "Error converting to deal"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:447 frontend/src/pages/MobileDeal.vue:369
|
||||
#: frontend/src/pages/Deal.vue:449 frontend/src/pages/MobileDeal.vue:371
|
||||
msgid "Error updating deal"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:437 frontend/src/pages/MobileLead.vue:273
|
||||
#: frontend/src/pages/Lead.vue:437 frontend/src/pages/MobileLead.vue:274
|
||||
msgid "Error updating lead"
|
||||
msgstr ""
|
||||
|
||||
@ -1447,8 +1447,8 @@ msgstr ""
|
||||
msgid "Error while fetching customer in ERPNext, check error log for more details"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:266
|
||||
#: frontend/src/components/ViewControls.vue:275
|
||||
#: frontend/src/components/ViewControls.vue:268
|
||||
#: frontend/src/components/ViewControls.vue:277
|
||||
msgid "Excel"
|
||||
msgstr ""
|
||||
|
||||
@ -1498,15 +1498,15 @@ msgid "Expired"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:203
|
||||
#: frontend/src/components/ViewControls.vue:249
|
||||
#: frontend/src/components/ViewControls.vue:251
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:280
|
||||
#: frontend/src/components/ViewControls.vue:282
|
||||
msgid "Export All {0} Record(s)"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:262
|
||||
#: frontend/src/components/ViewControls.vue:264
|
||||
msgid "Export Type"
|
||||
msgstr ""
|
||||
|
||||
@ -1695,8 +1695,8 @@ msgstr ""
|
||||
|
||||
#. Label of the group_by_tab (Tab Break) field in DocType 'CRM View Settings'
|
||||
#: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json
|
||||
#: frontend/src/components/ViewControls.vue:376
|
||||
#: frontend/src/components/ViewControls.vue:594 frontend/src/utils/view.js:16
|
||||
#: frontend/src/components/ViewControls.vue:378
|
||||
#: frontend/src/components/ViewControls.vue:597 frontend/src/utils/view.js:16
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
@ -1871,7 +1871,7 @@ msgstr ""
|
||||
msgid "Invite Members"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:22
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:23
|
||||
msgid "Invite as"
|
||||
msgstr ""
|
||||
|
||||
@ -1947,8 +1947,8 @@ msgstr ""
|
||||
|
||||
#. Label of the kanban_tab (Tab Break) field in DocType 'CRM View Settings'
|
||||
#: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json
|
||||
#: frontend/src/components/ViewControls.vue:381
|
||||
#: frontend/src/components/ViewControls.vue:583 frontend/src/utils/view.js:20
|
||||
#: frontend/src/components/ViewControls.vue:383
|
||||
#: frontend/src/components/ViewControls.vue:586 frontend/src/utils/view.js:20
|
||||
msgid "Kanban"
|
||||
msgstr ""
|
||||
|
||||
@ -2013,11 +2013,11 @@ msgstr ""
|
||||
msgid "Last Year"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:631 frontend/src/pages/MobileContact.vue:627
|
||||
#: frontend/src/pages/MobileOrganization.vue:513
|
||||
#: frontend/src/pages/MobileOrganization.vue:541
|
||||
#: frontend/src/pages/Organization.vue:531
|
||||
#: frontend/src/pages/Organization.vue:559
|
||||
#: frontend/src/pages/Contact.vue:637 frontend/src/pages/MobileContact.vue:633
|
||||
#: frontend/src/pages/MobileOrganization.vue:519
|
||||
#: frontend/src/pages/MobileOrganization.vue:547
|
||||
#: frontend/src/pages/Organization.vue:537
|
||||
#: frontend/src/pages/Organization.vue:565
|
||||
msgid "Last modified"
|
||||
msgstr ""
|
||||
|
||||
@ -2062,13 +2062,13 @@ msgstr ""
|
||||
msgid "Lead Statuses"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:429 frontend/src/pages/MobileLead.vue:265
|
||||
#: frontend/src/pages/Lead.vue:429 frontend/src/pages/MobileLead.vue:266
|
||||
msgid "Lead updated"
|
||||
msgstr ""
|
||||
|
||||
#. Label of a shortcut in the Frappe CRM Workspace
|
||||
#: crm/fcrm/workspace/frappe_crm/frappe_crm.json
|
||||
#: frontend/src/pages/Lead.vue:461 frontend/src/pages/MobileLead.vue:297
|
||||
#: frontend/src/pages/Lead.vue:461 frontend/src/pages/MobileLead.vue:298
|
||||
msgid "Leads"
|
||||
msgstr ""
|
||||
|
||||
@ -2102,8 +2102,8 @@ msgstr ""
|
||||
#. Label of the list_tab (Tab Break) field in DocType 'CRM View Settings'
|
||||
#: crm/fcrm/doctype/crm_form_script/crm_form_script.json
|
||||
#: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json
|
||||
#: frontend/src/components/ViewControls.vue:371
|
||||
#: frontend/src/components/ViewControls.vue:572 frontend/src/utils/view.js:12
|
||||
#: frontend/src/components/ViewControls.vue:373
|
||||
#: frontend/src/components/ViewControls.vue:575 frontend/src/utils/view.js:12
|
||||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
@ -2157,11 +2157,11 @@ msgstr ""
|
||||
msgid "Make Call"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1131
|
||||
#: frontend/src/components/ViewControls.vue:1135
|
||||
msgid "Make Private"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1131
|
||||
#: frontend/src/components/ViewControls.vue:1135
|
||||
msgid "Make Public"
|
||||
msgstr ""
|
||||
|
||||
@ -2200,8 +2200,8 @@ msgstr ""
|
||||
msgid "Make {0} as default calling medium"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:25
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:106
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:26
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:107
|
||||
msgid "Manager Access"
|
||||
msgstr ""
|
||||
|
||||
@ -2265,9 +2265,9 @@ msgstr ""
|
||||
msgid "Mobile Number Missing"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:621 frontend/src/pages/MobileContact.vue:617
|
||||
#: frontend/src/pages/MobileOrganization.vue:503
|
||||
#: frontend/src/pages/Organization.vue:521
|
||||
#: frontend/src/pages/Contact.vue:627 frontend/src/pages/MobileContact.vue:623
|
||||
#: frontend/src/pages/MobileOrganization.vue:509
|
||||
#: frontend/src/pages/Organization.vue:527
|
||||
msgid "Mobile no"
|
||||
msgstr ""
|
||||
|
||||
@ -2303,9 +2303,9 @@ msgstr ""
|
||||
#: crm/fcrm/doctype/crm_dropdown_item/crm_dropdown_item.json
|
||||
#: crm/fcrm/doctype/fcrm_settings/fcrm_settings.json
|
||||
#: frontend/src/components/Modals/EmailTemplateModal.vue:24
|
||||
#: frontend/src/components/ViewControls.vue:765
|
||||
#: frontend/src/pages/MobileOrganization.vue:521
|
||||
#: frontend/src/pages/Organization.vue:539
|
||||
#: frontend/src/components/ViewControls.vue:768
|
||||
#: frontend/src/pages/MobileOrganization.vue:527
|
||||
#: frontend/src/pages/Organization.vue:545
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@ -2441,7 +2441,7 @@ msgstr ""
|
||||
msgid "No label"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:685
|
||||
#: frontend/src/pages/Deal.vue:694
|
||||
msgid "No mobile number set"
|
||||
msgstr ""
|
||||
|
||||
@ -2454,7 +2454,7 @@ msgstr ""
|
||||
msgid "No phone number set"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:680
|
||||
#: frontend/src/pages/Deal.vue:689
|
||||
msgid "No primary contact set"
|
||||
msgstr ""
|
||||
|
||||
@ -2533,7 +2533,7 @@ msgstr ""
|
||||
msgid "Not allowed to add contact to Deal"
|
||||
msgstr ""
|
||||
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:390
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.py:408
|
||||
msgid "Not allowed to convert Lead to Deal"
|
||||
msgstr ""
|
||||
|
||||
@ -2550,8 +2550,8 @@ msgstr ""
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:537 frontend/src/pages/Lead.vue:527
|
||||
#: frontend/src/pages/MobileDeal.vue:465 frontend/src/pages/MobileLead.vue:369
|
||||
#: frontend/src/pages/Deal.vue:544 frontend/src/pages/Lead.vue:532
|
||||
#: frontend/src/pages/MobileDeal.vue:472 frontend/src/pages/MobileLead.vue:375
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
|
||||
@ -2597,10 +2597,10 @@ msgstr ""
|
||||
msgid "Old Parent"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Contact.vue:276 frontend/src/pages/Lead.vue:561
|
||||
#: frontend/src/pages/MobileContact.vue:269
|
||||
#: frontend/src/pages/MobileOrganization.vue:263
|
||||
#: frontend/src/pages/Organization.vue:284
|
||||
#: frontend/src/pages/Contact.vue:282 frontend/src/pages/Lead.vue:566
|
||||
#: frontend/src/pages/MobileContact.vue:275
|
||||
#: frontend/src/pages/MobileOrganization.vue:269
|
||||
#: frontend/src/pages/Organization.vue:290
|
||||
msgid "Only PNG and JPG images are allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2649,13 +2649,13 @@ msgstr ""
|
||||
#. Label of the organization_tab (Tab Break) field in DocType 'CRM Deal'
|
||||
#. Label of the organization (Data) field in DocType 'CRM Lead'
|
||||
#: crm/fcrm/doctype/crm_deal/crm_deal.json
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:600
|
||||
#: frontend/src/pages/Lead.vue:228 frontend/src/pages/MobileContact.vue:596
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:606
|
||||
#: frontend/src/pages/Lead.vue:228 frontend/src/pages/MobileContact.vue:602
|
||||
#: frontend/src/pages/MobileLead.vue:106
|
||||
#: frontend/src/pages/MobileOrganization.vue:482
|
||||
#: frontend/src/pages/MobileOrganization.vue:536
|
||||
#: frontend/src/pages/Organization.vue:500
|
||||
#: frontend/src/pages/Organization.vue:554
|
||||
#: frontend/src/pages/MobileOrganization.vue:488
|
||||
#: frontend/src/pages/MobileOrganization.vue:542
|
||||
#: frontend/src/pages/Organization.vue:506
|
||||
#: frontend/src/pages/Organization.vue:560
|
||||
msgid "Organization"
|
||||
msgstr ""
|
||||
|
||||
@ -2682,15 +2682,15 @@ msgstr ""
|
||||
msgid "Organization logo"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/MobileOrganization.vue:215
|
||||
#: frontend/src/pages/Organization.vue:236
|
||||
#: frontend/src/pages/MobileOrganization.vue:216
|
||||
#: frontend/src/pages/Organization.vue:237
|
||||
msgid "Organization updated"
|
||||
msgstr ""
|
||||
|
||||
#. Label of a shortcut in the Frappe CRM Workspace
|
||||
#: crm/fcrm/workspace/frappe_crm/frappe_crm.json
|
||||
#: frontend/src/pages/MobileOrganization.vue:222
|
||||
#: frontend/src/pages/Organization.vue:243
|
||||
#: frontend/src/pages/MobileOrganization.vue:223
|
||||
#: frontend/src/pages/Organization.vue:244
|
||||
msgid "Organizations"
|
||||
msgstr ""
|
||||
|
||||
@ -2755,8 +2755,8 @@ msgstr ""
|
||||
#: crm/fcrm/doctype/crm_deal/crm_deal.json
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json
|
||||
#: crm/fcrm/doctype/crm_telephony_agent/crm_telephony_agent.json
|
||||
#: frontend/src/pages/MobileOrganization.vue:531
|
||||
#: frontend/src/pages/Organization.vue:549
|
||||
#: frontend/src/pages/MobileOrganization.vue:537
|
||||
#: frontend/src/pages/Organization.vue:555
|
||||
msgid "Phone"
|
||||
msgstr ""
|
||||
|
||||
@ -2765,7 +2765,7 @@ msgstr ""
|
||||
msgid "Phone Numbers"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1123
|
||||
#: frontend/src/components/ViewControls.vue:1127
|
||||
msgid "Pin View"
|
||||
msgstr ""
|
||||
|
||||
@ -2774,7 +2774,7 @@ msgstr ""
|
||||
msgid "Pinned"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:660
|
||||
#: frontend/src/components/ViewControls.vue:663
|
||||
msgid "Pinned Views"
|
||||
msgstr ""
|
||||
|
||||
@ -2790,11 +2790,11 @@ msgstr ""
|
||||
msgid "Please enter a valid URL"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:601 frontend/src/pages/MobileLead.vue:435
|
||||
#: frontend/src/pages/Lead.vue:604 frontend/src/pages/MobileLead.vue:439
|
||||
msgid "Please select an existing contact"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Lead.vue:611 frontend/src/pages/MobileLead.vue:445
|
||||
#: frontend/src/pages/Lead.vue:614 frontend/src/pages/MobileLead.vue:449
|
||||
msgid "Please select an existing organization"
|
||||
msgstr ""
|
||||
|
||||
@ -2809,11 +2809,15 @@ msgstr ""
|
||||
msgid "Position"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:17
|
||||
msgid "Press enter to add email"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:198 frontend/src/pages/MobileDeal.vue:143
|
||||
msgid "Primary"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:655 frontend/src/pages/MobileDeal.vue:583
|
||||
#: frontend/src/pages/Deal.vue:663 frontend/src/pages/MobileDeal.vue:590
|
||||
msgid "Primary contact set"
|
||||
msgstr ""
|
||||
|
||||
@ -2852,7 +2856,7 @@ msgstr ""
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:655
|
||||
#: frontend/src/components/ViewControls.vue:658
|
||||
msgid "Public Views"
|
||||
msgstr ""
|
||||
|
||||
@ -2871,7 +2875,7 @@ msgstr ""
|
||||
msgid "Quick Filters"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:716
|
||||
#: frontend/src/components/ViewControls.vue:719
|
||||
msgid "Quick Filters updated successfully"
|
||||
msgstr ""
|
||||
|
||||
@ -2930,8 +2934,8 @@ msgstr ""
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:24
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:105
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:25
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:106
|
||||
msgid "Regular Access"
|
||||
msgstr ""
|
||||
|
||||
@ -2939,7 +2943,7 @@ msgstr ""
|
||||
msgid "Reject"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:591
|
||||
#: frontend/src/pages/Deal.vue:599
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
@ -3198,7 +3202,7 @@ msgstr ""
|
||||
msgid "Save Changes"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:650
|
||||
#: frontend/src/components/ViewControls.vue:653
|
||||
msgid "Saved Views"
|
||||
msgstr ""
|
||||
|
||||
@ -3223,7 +3227,7 @@ msgstr ""
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:72
|
||||
#: frontend/src/components/Settings/InviteMemberPage.vue:73
|
||||
msgid "Send Invites"
|
||||
msgstr ""
|
||||
|
||||
@ -3261,11 +3265,11 @@ msgstr ""
|
||||
msgid "Set an organization"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:599 frontend/src/pages/MobileDeal.vue:527
|
||||
#: frontend/src/pages/Deal.vue:607 frontend/src/pages/MobileDeal.vue:534
|
||||
msgid "Set as Primary Contact"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1108
|
||||
#: frontend/src/components/ViewControls.vue:1112
|
||||
msgid "Set as default"
|
||||
msgstr ""
|
||||
|
||||
@ -3339,7 +3343,7 @@ msgstr ""
|
||||
msgid "Standard Form Scripts can not be modified, duplicate the Form Script instead."
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:617
|
||||
#: frontend/src/components/ViewControls.vue:620
|
||||
msgid "Standard Views"
|
||||
msgstr ""
|
||||
|
||||
@ -3373,10 +3377,10 @@ msgstr ""
|
||||
#: crm/fcrm/doctype/crm_invitation/crm_invitation.json
|
||||
#: crm/fcrm/doctype/crm_lead/crm_lead.json
|
||||
#: crm/fcrm/doctype/crm_lead_status/crm_lead_status.json
|
||||
#: crm/fcrm/doctype/crm_task/crm_task.json frontend/src/pages/Contact.vue:611
|
||||
#: frontend/src/pages/MobileContact.vue:607
|
||||
#: frontend/src/pages/MobileOrganization.vue:493
|
||||
#: frontend/src/pages/Organization.vue:511
|
||||
#: crm/fcrm/doctype/crm_task/crm_task.json frontend/src/pages/Contact.vue:617
|
||||
#: frontend/src/pages/MobileContact.vue:613
|
||||
#: frontend/src/pages/MobileOrganization.vue:499
|
||||
#: frontend/src/pages/Organization.vue:517
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
@ -3449,8 +3453,8 @@ msgstr ""
|
||||
msgid "Task"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:532 frontend/src/pages/Lead.vue:522
|
||||
#: frontend/src/pages/MobileDeal.vue:460 frontend/src/pages/MobileLead.vue:364
|
||||
#: frontend/src/pages/Deal.vue:539 frontend/src/pages/Lead.vue:527
|
||||
#: frontend/src/pages/MobileDeal.vue:467 frontend/src/pages/MobileLead.vue:370
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
|
||||
@ -3673,11 +3677,11 @@ msgstr ""
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:1123
|
||||
#: frontend/src/components/ViewControls.vue:1127
|
||||
msgid "Unpin View"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:960
|
||||
#: frontend/src/components/ViewControls.vue:964
|
||||
msgid "Unsaved Changes"
|
||||
msgstr ""
|
||||
|
||||
@ -3686,10 +3690,6 @@ msgstr ""
|
||||
#: frontend/src/components/Modals/CallLogModal.vue:8
|
||||
#: frontend/src/components/Section.vue:21
|
||||
#: frontend/src/components/SidePanelLayoutEditor.vue:19
|
||||
#: frontend/src/pages/Deal.vue:65 frontend/src/pages/Deal.vue:73
|
||||
#: frontend/src/pages/Deal.vue:489 frontend/src/pages/Lead.vue:74
|
||||
#: frontend/src/pages/Lead.vue:115 frontend/src/pages/Lead.vue:479
|
||||
#: frontend/src/pages/MobileDeal.vue:411 frontend/src/pages/MobileLead.vue:315
|
||||
msgid "Untitled"
|
||||
msgstr ""
|
||||
|
||||
@ -3703,7 +3703,7 @@ msgstr ""
|
||||
#: frontend/src/components/Settings/SettingsPage.vue:31
|
||||
#: frontend/src/components/Settings/TelephonySettings.vue:70
|
||||
#: frontend/src/components/Telephony/ExotelCallUI.vue:219
|
||||
#: frontend/src/components/ViewControls.vue:965
|
||||
#: frontend/src/components/ViewControls.vue:969
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
@ -3781,8 +3781,8 @@ msgstr ""
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/MobileOrganization.vue:302
|
||||
#: frontend/src/pages/Organization.vue:327
|
||||
#: frontend/src/pages/MobileOrganization.vue:308
|
||||
#: frontend/src/pages/Organization.vue:333
|
||||
msgid "Website not found"
|
||||
msgstr ""
|
||||
|
||||
@ -3807,8 +3807,8 @@ msgstr ""
|
||||
#. Option for the 'Type' (Select) field in DocType 'CRM Notification'
|
||||
#: crm/fcrm/doctype/crm_notification/crm_notification.json
|
||||
#: frontend/src/components/Settings/Settings.vue:115
|
||||
#: frontend/src/pages/Deal.vue:547 frontend/src/pages/Lead.vue:537
|
||||
#: frontend/src/pages/MobileDeal.vue:475 frontend/src/pages/MobileLead.vue:379
|
||||
#: frontend/src/pages/Deal.vue:554 frontend/src/pages/Lead.vue:542
|
||||
#: frontend/src/pages/MobileDeal.vue:482 frontend/src/pages/MobileLead.vue:385
|
||||
msgid "WhatsApp"
|
||||
msgstr ""
|
||||
|
||||
@ -3863,7 +3863,7 @@ msgstr ""
|
||||
msgid "You do not have mobile number set in your Telephony Agent"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/components/ViewControls.vue:961
|
||||
#: frontend/src/components/ViewControls.vue:965
|
||||
msgid "You have unsaved changes. Do you want to save them?"
|
||||
msgstr ""
|
||||
|
||||
@ -4051,8 +4051,8 @@ msgstr ""
|
||||
msgid "{0} assigned a {1} {2} to you"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/src/pages/Deal.vue:461 frontend/src/pages/Lead.vue:451
|
||||
#: frontend/src/pages/MobileDeal.vue:383 frontend/src/pages/MobileLead.vue:287
|
||||
#: frontend/src/pages/Deal.vue:463 frontend/src/pages/Lead.vue:451
|
||||
#: frontend/src/pages/MobileDeal.vue:385 frontend/src/pages/MobileLead.vue:288
|
||||
msgid "{0} is a required field"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 33c9907aa9163d8d3b84f23dc2a2c829e4d8c6f1
|
||||
Subproject commit b6efd25b2122c2c1f3beeea1702788c5e6e5555f
|
||||
229
frontend/components.d.ts
vendored
Normal file
229
frontend/components.d.ts
vendored
Normal file
@ -0,0 +1,229 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
// biome-ignore lint: disable
|
||||
export {}
|
||||
|
||||
/* prettier-ignore */
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
Activities: typeof import('./src/components/Activities/Activities.vue')['default']
|
||||
ActivityHeader: typeof import('./src/components/Activities/ActivityHeader.vue')['default']
|
||||
ActivityIcon: typeof import('./src/components/Icons/ActivityIcon.vue')['default']
|
||||
AddressIcon: typeof import('./src/components/Icons/AddressIcon.vue')['default']
|
||||
AddressModal: typeof import('./src/components/Modals/AddressModal.vue')['default']
|
||||
AllModals: typeof import('./src/components/Activities/AllModals.vue')['default']
|
||||
AppHeader: typeof import('./src/components/Layouts/AppHeader.vue')['default']
|
||||
Apps: typeof import('./src/components/Apps.vue')['default']
|
||||
AppsIcon: typeof import('./src/components/Icons/AppsIcon.vue')['default']
|
||||
AppSidebar: typeof import('./src/components/Layouts/AppSidebar.vue')['default']
|
||||
ArrowUpRightIcon: typeof import('./src/components/Icons/ArrowUpRightIcon.vue')['default']
|
||||
AscendingIcon: typeof import('./src/components/Icons/AscendingIcon.vue')['default']
|
||||
AssignmentModal: typeof import('./src/components/Modals/AssignmentModal.vue')['default']
|
||||
AssignTo: typeof import('./src/components/AssignTo.vue')['default']
|
||||
AttachmentArea: typeof import('./src/components/Activities/AttachmentArea.vue')['default']
|
||||
AttachmentIcon: typeof import('./src/components/Icons/AttachmentIcon.vue')['default']
|
||||
AttachmentItem: typeof import('./src/components/AttachmentItem.vue')['default']
|
||||
AudioPlayer: typeof import('./src/components/Activities/AudioPlayer.vue')['default']
|
||||
Autocomplete: typeof import('./src/components/frappe-ui/Autocomplete.vue')['default']
|
||||
AvatarIcon: typeof import('./src/components/Icons/AvatarIcon.vue')['default']
|
||||
BrandLogo: typeof import('./src/components/BrandLogo.vue')['default']
|
||||
CalendarIcon: typeof import('./src/components/Icons/CalendarIcon.vue')['default']
|
||||
CallArea: typeof import('./src/components/Activities/CallArea.vue')['default']
|
||||
CallLogDetailModal: typeof import('./src/components/Modals/CallLogDetailModal.vue')['default']
|
||||
CallLogModal: typeof import('./src/components/Modals/CallLogModal.vue')['default']
|
||||
CallLogsListView: typeof import('./src/components/ListViews/CallLogsListView.vue')['default']
|
||||
CallUI: typeof import('./src/components/Telephony/CallUI.vue')['default']
|
||||
CameraIcon: typeof import('./src/components/Icons/CameraIcon.vue')['default']
|
||||
CertificateIcon: typeof import('./src/components/Icons/CertificateIcon.vue')['default']
|
||||
CheckCircleIcon: typeof import('./src/components/Icons/CheckCircleIcon.vue')['default']
|
||||
CheckIcon: typeof import('./src/components/Icons/CheckIcon.vue')['default']
|
||||
CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default']
|
||||
Column: typeof import('./src/components/FieldLayout/Column.vue')['default']
|
||||
ColumnSettings: typeof import('./src/components/ColumnSettings.vue')['default']
|
||||
ColumnsIcon: typeof import('./src/components/Icons/ColumnsIcon.vue')['default']
|
||||
CommentArea: typeof import('./src/components/Activities/CommentArea.vue')['default']
|
||||
CommentBox: typeof import('./src/components/CommentBox.vue')['default']
|
||||
CommentIcon: typeof import('./src/components/Icons/CommentIcon.vue')['default']
|
||||
CommunicationArea: typeof import('./src/components/CommunicationArea.vue')['default']
|
||||
ContactIcon: typeof import('./src/components/Icons/ContactIcon.vue')['default']
|
||||
ContactModal: typeof import('./src/components/Modals/ContactModal.vue')['default']
|
||||
ContactsIcon: typeof import('./src/components/Icons/ContactsIcon.vue')['default']
|
||||
ContactsListView: typeof import('./src/components/ListViews/ContactsListView.vue')['default']
|
||||
ConvertIcon: typeof import('./src/components/Icons/ConvertIcon.vue')['default']
|
||||
CountUpTimer: typeof import('./src/components/CountUpTimer.vue')['default']
|
||||
CRMLogo: typeof import('./src/components/Icons/CRMLogo.vue')['default']
|
||||
CustomActions: typeof import('./src/components/CustomActions.vue')['default']
|
||||
DashboardIcon: typeof import('./src/components/Icons/DashboardIcon.vue')['default']
|
||||
DataFields: typeof import('./src/components/Activities/DataFields.vue')['default']
|
||||
DataFieldsModal: typeof import('./src/components/Modals/DataFieldsModal.vue')['default']
|
||||
DealModal: typeof import('./src/components/Modals/DealModal.vue')['default']
|
||||
DealsIcon: typeof import('./src/components/Icons/DealsIcon.vue')['default']
|
||||
DealsListView: typeof import('./src/components/ListViews/DealsListView.vue')['default']
|
||||
DeclinedCallIcon: typeof import('./src/components/Icons/DeclinedCallIcon.vue')['default']
|
||||
DesendingIcon: typeof import('./src/components/Icons/DesendingIcon.vue')['default']
|
||||
DesktopLayout: typeof import('./src/components/Layouts/DesktopLayout.vue')['default']
|
||||
DetailsIcon: typeof import('./src/components/Icons/DetailsIcon.vue')['default']
|
||||
DialpadIcon: typeof import('./src/components/Icons/DialpadIcon.vue')['default']
|
||||
DocumentIcon: typeof import('./src/components/Icons/DocumentIcon.vue')['default']
|
||||
DotIcon: typeof import('./src/components/Icons/DotIcon.vue')['default']
|
||||
DoubleCheckIcon: typeof import('./src/components/Icons/DoubleCheckIcon.vue')['default']
|
||||
DragIcon: typeof import('./src/components/Icons/DragIcon.vue')['default']
|
||||
DragVerticalIcon: typeof import('./src/components/Icons/DragVerticalIcon.vue')['default']
|
||||
Dropdown: typeof import('./src/components/frappe-ui/Dropdown.vue')['default']
|
||||
DropdownItem: typeof import('./src/components/DropdownItem.vue')['default']
|
||||
DuplicateIcon: typeof import('./src/components/Icons/DuplicateIcon.vue')['default']
|
||||
DurationIcon: typeof import('./src/components/Icons/DurationIcon.vue')['default']
|
||||
EditIcon: typeof import('./src/components/Icons/EditIcon.vue')['default']
|
||||
EditValueModal: typeof import('./src/components/Modals/EditValueModal.vue')['default']
|
||||
Email2Icon: typeof import('./src/components/Icons/Email2Icon.vue')['default']
|
||||
EmailArea: typeof import('./src/components/Activities/EmailArea.vue')['default']
|
||||
EmailAtIcon: typeof import('./src/components/Icons/EmailAtIcon.vue')['default']
|
||||
EmailContent: typeof import('./src/components/Activities/EmailContent.vue')['default']
|
||||
EmailEditor: typeof import('./src/components/EmailEditor.vue')['default']
|
||||
EmailIcon: typeof import('./src/components/Icons/EmailIcon.vue')['default']
|
||||
EmailTemplateModal: typeof import('./src/components/Modals/EmailTemplateModal.vue')['default']
|
||||
EmailTemplateSelectorModal: typeof import('./src/components/Modals/EmailTemplateSelectorModal.vue')['default']
|
||||
EmailTemplatesListView: typeof import('./src/components/ListViews/EmailTemplatesListView.vue')['default']
|
||||
ERPNextIcon: typeof import('./src/components/Icons/ERPNextIcon.vue')['default']
|
||||
ERPNextSettings: typeof import('./src/components/Settings/ERPNextSettings.vue')['default']
|
||||
ExotelCallUI: typeof import('./src/components/Telephony/ExotelCallUI.vue')['default']
|
||||
ExportIcon: typeof import('./src/components/Icons/ExportIcon.vue')['default']
|
||||
ExternalLinkIcon: typeof import('./src/components/Icons/ExternalLinkIcon.vue')['default']
|
||||
FadedScrollableDiv: typeof import('./src/components/FadedScrollableDiv.vue')['default']
|
||||
Field: typeof import('./src/components/FieldLayout/Field.vue')['default']
|
||||
FieldLayout: typeof import('./src/components/FieldLayout/FieldLayout.vue')['default']
|
||||
FieldLayoutEditor: typeof import('./src/components/FieldLayoutEditor.vue')['default']
|
||||
FileAudioIcon: typeof import('./src/components/Icons/FileAudioIcon.vue')['default']
|
||||
FileIcon: typeof import('./src/components/Icons/FileIcon.vue')['default']
|
||||
FileImageIcon: typeof import('./src/components/Icons/FileImageIcon.vue')['default']
|
||||
FileSpreadsheetIcon: typeof import('./src/components/Icons/FileSpreadsheetIcon.vue')['default']
|
||||
FilesUploader: typeof import('./src/components/FilesUploader/FilesUploader.vue')['default']
|
||||
FilesUploaderArea: typeof import('./src/components/FilesUploader/FilesUploaderArea.vue')['default']
|
||||
FileTextIcon: typeof import('./src/components/Icons/FileTextIcon.vue')['default']
|
||||
FileTypeIcon: typeof import('./src/components/Icons/FileTypeIcon.vue')['default']
|
||||
FileVideoIcon: typeof import('./src/components/Icons/FileVideoIcon.vue')['default']
|
||||
Filter: typeof import('./src/components/Filter.vue')['default']
|
||||
FilterIcon: typeof import('./src/components/Icons/FilterIcon.vue')['default']
|
||||
FrappeCloudIcon: typeof import('./src/components/Icons/FrappeCloudIcon.vue')['default']
|
||||
GenderIcon: typeof import('./src/components/Icons/GenderIcon.vue')['default']
|
||||
GeneralSettings: typeof import('./src/components/Settings/GeneralSettings.vue')['default']
|
||||
GoogleIcon: typeof import('./src/components/Icons/GoogleIcon.vue')['default']
|
||||
Grid: typeof import('./src/components/Controls/Grid.vue')['default']
|
||||
GridFieldsEditorModal: typeof import('./src/components/Controls/GridFieldsEditorModal.vue')['default']
|
||||
GridRowFieldsModal: typeof import('./src/components/Controls/GridRowFieldsModal.vue')['default']
|
||||
GridRowModal: typeof import('./src/components/Controls/GridRowModal.vue')['default']
|
||||
GroupBy: typeof import('./src/components/GroupBy.vue')['default']
|
||||
GroupByIcon: typeof import('./src/components/Icons/GroupByIcon.vue')['default']
|
||||
HeartIcon: typeof import('./src/components/Icons/HeartIcon.vue')['default']
|
||||
HelpIcon: typeof import('./src/components/Icons/HelpIcon.vue')['default']
|
||||
Icon: typeof import('./src/components/Icon.vue')['default']
|
||||
IconPicker: typeof import('./src/components/IconPicker.vue')['default']
|
||||
ImageUploader: typeof import('./src/components/Controls/ImageUploader.vue')['default']
|
||||
InboundCallIcon: typeof import('./src/components/Icons/InboundCallIcon.vue')['default']
|
||||
InboxIcon: typeof import('./src/components/Icons/InboxIcon.vue')['default']
|
||||
IndicatorIcon: typeof import('./src/components/Icons/IndicatorIcon.vue')['default']
|
||||
InviteIcon: typeof import('./src/components/Icons/InviteIcon.vue')['default']
|
||||
InviteMemberPage: typeof import('./src/components/Settings/InviteMemberPage.vue')['default']
|
||||
KanbanIcon: typeof import('./src/components/Icons/KanbanIcon.vue')['default']
|
||||
KanbanSettings: typeof import('./src/components/Kanban/KanbanSettings.vue')['default']
|
||||
KanbanView: typeof import('./src/components/Kanban/KanbanView.vue')['default']
|
||||
LayoutHeader: typeof import('./src/components/LayoutHeader.vue')['default']
|
||||
LeadModal: typeof import('./src/components/Modals/LeadModal.vue')['default']
|
||||
LeadsIcon: typeof import('./src/components/Icons/LeadsIcon.vue')['default']
|
||||
LeadsListView: typeof import('./src/components/ListViews/LeadsListView.vue')['default']
|
||||
LightningIcon: typeof import('./src/components/Icons/LightningIcon.vue')['default']
|
||||
Link: typeof import('./src/components/Controls/Link.vue')['default']
|
||||
LinkIcon: typeof import('./src/components/Icons/LinkIcon.vue')['default']
|
||||
ListBulkActions: typeof import('./src/components/ListBulkActions.vue')['default']
|
||||
ListIcon: typeof import('./src/components/Icons/ListIcon.vue')['default']
|
||||
ListRows: typeof import('./src/components/ListViews/ListRows.vue')['default']
|
||||
LoadingIndicator: typeof import('./src/components/Icons/LoadingIndicator.vue')['default']
|
||||
MarkAsDoneIcon: typeof import('./src/components/Icons/MarkAsDoneIcon.vue')['default']
|
||||
MaximizeIcon: typeof import('./src/components/Icons/MaximizeIcon.vue')['default']
|
||||
MenuIcon: typeof import('./src/components/Icons/MenuIcon.vue')['default']
|
||||
MinimizeIcon: typeof import('./src/components/Icons/MinimizeIcon.vue')['default']
|
||||
MissedCallIcon: typeof import('./src/components/Icons/MissedCallIcon.vue')['default']
|
||||
MobileAppHeader: typeof import('./src/components/Mobile/MobileAppHeader.vue')['default']
|
||||
MobileLayout: typeof import('./src/components/Layouts/MobileLayout.vue')['default']
|
||||
MobileSidebar: typeof import('./src/components/Mobile/MobileSidebar.vue')['default']
|
||||
MoneyIcon: typeof import('./src/components/Icons/MoneyIcon.vue')['default']
|
||||
MultipleAvatar: typeof import('./src/components/MultipleAvatar.vue')['default']
|
||||
MultiselectInput: typeof import('./src/components/Controls/MultiselectInput.vue')['default']
|
||||
MultiValueInput: typeof import('./src/components/Controls/MultiValueInput.vue')['default']
|
||||
MuteIcon: typeof import('./src/components/Icons/MuteIcon.vue')['default']
|
||||
NestedPopover: typeof import('./src/components/NestedPopover.vue')['default']
|
||||
NoteArea: typeof import('./src/components/Activities/NoteArea.vue')['default']
|
||||
NoteIcon: typeof import('./src/components/Icons/NoteIcon.vue')['default']
|
||||
NoteModal: typeof import('./src/components/Modals/NoteModal.vue')['default']
|
||||
Notifications: typeof import('./src/components/Notifications.vue')['default']
|
||||
NotificationsIcon: typeof import('./src/components/Icons/NotificationsIcon.vue')['default']
|
||||
OrganizationModal: typeof import('./src/components/Modals/OrganizationModal.vue')['default']
|
||||
OrganizationsIcon: typeof import('./src/components/Icons/OrganizationsIcon.vue')['default']
|
||||
OrganizationsListView: typeof import('./src/components/ListViews/OrganizationsListView.vue')['default']
|
||||
OutboundCallIcon: typeof import('./src/components/Icons/OutboundCallIcon.vue')['default']
|
||||
PauseIcon: typeof import('./src/components/Icons/PauseIcon.vue')['default']
|
||||
PhoneIcon: typeof import('./src/components/Icons/PhoneIcon.vue')['default']
|
||||
PinIcon: typeof import('./src/components/Icons/PinIcon.vue')['default']
|
||||
PlaybackSpeedIcon: typeof import('./src/components/Icons/PlaybackSpeedIcon.vue')['default']
|
||||
PlaybackSpeedOption: typeof import('./src/components/Activities/PlaybackSpeedOption.vue')['default']
|
||||
PlayIcon: typeof import('./src/components/Icons/PlayIcon.vue')['default']
|
||||
Popover: typeof import('./src/components/frappe-ui/Popover.vue')['default']
|
||||
ProfileImageEditor: typeof import('./src/components/Settings/ProfileImageEditor.vue')['default']
|
||||
ProfileSettings: typeof import('./src/components/Settings/ProfileSettings.vue')['default']
|
||||
QuickEntryModal: typeof import('./src/components/Modals/QuickEntryModal.vue')['default']
|
||||
QuickFilterField: typeof import('./src/components/QuickFilterField.vue')['default']
|
||||
QuickFilterIcon: typeof import('./src/components/Icons/QuickFilterIcon.vue')['default']
|
||||
ReactIcon: typeof import('./src/components/Icons/ReactIcon.vue')['default']
|
||||
RefreshIcon: typeof import('./src/components/Icons/RefreshIcon.vue')['default']
|
||||
ReloadIcon: typeof import('./src/components/Icons/ReloadIcon.vue')['default']
|
||||
ReplyAllIcon: typeof import('./src/components/Icons/ReplyAllIcon.vue')['default']
|
||||
ReplyIcon: typeof import('./src/components/Icons/ReplyIcon.vue')['default']
|
||||
Resizer: typeof import('./src/components/Resizer.vue')['default']
|
||||
RightSideLayoutIcon: typeof import('./src/components/Icons/RightSideLayoutIcon.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
Section: typeof import('./src/components/FieldLayout/Section.vue')['default']
|
||||
SelectIcon: typeof import('./src/components/Icons/SelectIcon.vue')['default']
|
||||
Settings: typeof import('./src/components/Settings/Settings.vue')['default']
|
||||
SettingsIcon: typeof import('./src/components/Icons/SettingsIcon.vue')['default']
|
||||
SettingsPage: typeof import('./src/components/Settings/SettingsPage.vue')['default']
|
||||
SidebarLink: typeof import('./src/components/SidebarLink.vue')['default']
|
||||
SidePanelLayout: typeof import('./src/components/SidePanelLayout.vue')['default']
|
||||
SidePanelLayoutEditor: typeof import('./src/components/SidePanelLayoutEditor.vue')['default']
|
||||
SidePanelModal: typeof import('./src/components/Modals/SidePanelModal.vue')['default']
|
||||
SignupBanner: typeof import('./src/components/SignupBanner.vue')['default']
|
||||
SLASection: typeof import('./src/components/SLASection.vue')['default']
|
||||
SmileIcon: typeof import('./src/components/Icons/SmileIcon.vue')['default']
|
||||
SortBy: typeof import('./src/components/SortBy.vue')['default']
|
||||
SortIcon: typeof import('./src/components/Icons/SortIcon.vue')['default']
|
||||
StepsIcon: typeof import('./src/components/Icons/StepsIcon.vue')['default']
|
||||
SuccessIcon: typeof import('./src/components/Icons/SuccessIcon.vue')['default']
|
||||
TableMultiselectInput: typeof import('./src/components/Controls/TableMultiselectInput.vue')['default']
|
||||
TaskArea: typeof import('./src/components/Activities/TaskArea.vue')['default']
|
||||
TaskIcon: typeof import('./src/components/Icons/TaskIcon.vue')['default']
|
||||
TaskModal: typeof import('./src/components/Modals/TaskModal.vue')['default']
|
||||
TaskPanel: typeof import('./src/components/Telephony/TaskPanel.vue')['default']
|
||||
TaskPriorityIcon: typeof import('./src/components/Icons/TaskPriorityIcon.vue')['default']
|
||||
TasksListView: typeof import('./src/components/ListViews/TasksListView.vue')['default']
|
||||
TaskStatusIcon: typeof import('./src/components/Icons/TaskStatusIcon.vue')['default']
|
||||
TelephonySettings: typeof import('./src/components/Settings/TelephonySettings.vue')['default']
|
||||
TerritoryIcon: typeof import('./src/components/Icons/TerritoryIcon.vue')['default']
|
||||
TwilioCallUI: typeof import('./src/components/Telephony/TwilioCallUI.vue')['default']
|
||||
UnpinIcon: typeof import('./src/components/Icons/UnpinIcon.vue')['default']
|
||||
UserAvatar: typeof import('./src/components/UserAvatar.vue')['default']
|
||||
UserDropdown: typeof import('./src/components/UserDropdown.vue')['default']
|
||||
ViewBreadcrumbs: typeof import('./src/components/ViewBreadcrumbs.vue')['default']
|
||||
ViewControls: typeof import('./src/components/ViewControls.vue')['default']
|
||||
ViewModal: typeof import('./src/components/Modals/ViewModal.vue')['default']
|
||||
VolumnHighIcon: typeof import('./src/components/Icons/VolumnHighIcon.vue')['default']
|
||||
VolumnLowIcon: typeof import('./src/components/Icons/VolumnLowIcon.vue')['default']
|
||||
WebsiteIcon: typeof import('./src/components/Icons/WebsiteIcon.vue')['default']
|
||||
WhatsAppArea: typeof import('./src/components/Activities/WhatsAppArea.vue')['default']
|
||||
WhatsAppBox: typeof import('./src/components/Activities/WhatsAppBox.vue')['default']
|
||||
WhatsAppIcon: typeof import('./src/components/Icons/WhatsAppIcon.vue')['default']
|
||||
WhatsAppSettings: typeof import('./src/components/Settings/WhatsAppSettings.vue')['default']
|
||||
WhatsappTemplateSelectorModal: typeof import('./src/components/Modals/WhatsappTemplateSelectorModal.vue')['default']
|
||||
}
|
||||
}
|
||||
@ -14,7 +14,7 @@
|
||||
"@vueuse/core": "^10.3.0",
|
||||
"@vueuse/integrations": "^10.3.0",
|
||||
"feather-icons": "^4.28.0",
|
||||
"frappe-ui": "^0.1.111",
|
||||
"frappe-ui": "^0.1.118",
|
||||
"gemoji": "^8.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mime": "^4.0.1",
|
||||
|
||||
@ -4,7 +4,9 @@
|
||||
<Button
|
||||
ref="sendEmailRef"
|
||||
variant="ghost"
|
||||
:class="[showEmailBox ? '!bg-surface-gray-4 hover:!bg-surface-gray-3' : '']"
|
||||
:class="[
|
||||
showEmailBox ? '!bg-surface-gray-4 hover:!bg-surface-gray-3' : '',
|
||||
]"
|
||||
:label="__('Reply')"
|
||||
@click="toggleEmailBox()"
|
||||
>
|
||||
@ -15,7 +17,9 @@
|
||||
<Button
|
||||
variant="ghost"
|
||||
:label="__('Comment')"
|
||||
:class="[showCommentBox ? '!bg-surface-gray-4 hover:!bg-surface-gray-3' : '']"
|
||||
:class="[
|
||||
showCommentBox ? '!bg-surface-gray-4 hover:!bg-surface-gray-3' : '',
|
||||
]"
|
||||
@click="toggleCommentBox()"
|
||||
>
|
||||
<template #prefix>
|
||||
@ -92,6 +96,7 @@ import { capture } from '@/telemetry'
|
||||
import { usersStore } from '@/stores/users'
|
||||
import { useStorage } from '@vueuse/core'
|
||||
import { call, createResource } from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, watch, computed } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
@ -107,6 +112,7 @@ const reload = defineModel('reload')
|
||||
const emit = defineEmits(['scroll'])
|
||||
|
||||
const { getUser } = usersStore()
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const showEmailBox = ref(false)
|
||||
const showCommentBox = ref(false)
|
||||
@ -152,7 +158,7 @@ watch(
|
||||
editor.commands.focus()
|
||||
setSignature(editor)
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
watch(
|
||||
@ -161,7 +167,7 @@ watch(
|
||||
if (value) {
|
||||
newCommentEditor.value.editor.commands.focus()
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
const commentEmpty = computed(() => {
|
||||
@ -221,6 +227,7 @@ async function submitEmail() {
|
||||
reload.value = true
|
||||
emit('scroll')
|
||||
capture('email_sent', { doctype: props.doctype })
|
||||
updateOnboardingStep('send_first_email')
|
||||
}
|
||||
|
||||
async function submitComment() {
|
||||
@ -231,6 +238,7 @@ async function submitComment() {
|
||||
reload.value = true
|
||||
emit('scroll')
|
||||
capture('comment_sent', { doctype: props.doctype })
|
||||
updateOnboardingStep('add_first_comment')
|
||||
}
|
||||
|
||||
function toggleEmailBox() {
|
||||
|
||||
16
frontend/src/components/Icons/ConvertIcon.vue
Normal file
16
frontend/src/components/Icons/ConvertIcon.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M8.71639 1.68847C7.20728 1.49315 5.6781 1.84427 4.40534 2.67832C3.50159 3.27056 2.7695 4.07854 2.26943 5.02055C2.13995 5.26445 2.23271 5.56714 2.47662 5.69662C2.72052 5.8261 3.02321 5.73334 3.15269 5.48943C3.57431 4.69521 4.19153 4.01402 4.95345 3.51473C6.02649 2.81155 7.31573 2.51553 8.58803 2.6802C9.86034 2.84487 11.0317 3.45936 11.8904 4.41255C12.5455 5.13978 12.9856 6.02752 13.1713 6.97711L12.0682 6.38995C11.8245 6.2602 11.5217 6.35263 11.3919 6.59639C11.2622 6.84015 11.3546 7.14294 11.5984 7.27269L13.8052 8.44735C14.049 8.5771 14.3518 8.48468 14.4815 8.24091L15.6562 6.03407C15.7859 5.79031 15.6935 5.48752 15.4497 5.35777C15.206 5.22802 14.9032 5.32044 14.7734 5.5642L14.1448 6.74523C13.92 5.63395 13.4012 4.59563 12.6334 3.74325C11.6149 2.61265 10.2255 1.88379 8.71639 1.68847ZM7.51332 14.3501C9.0288 14.4875 10.5434 14.0781 11.7833 13.1959C12.5865 12.6244 13.2401 11.8789 13.7005 11.0233C13.8314 10.7801 13.7404 10.4769 13.4972 10.3461C13.254 10.2152 12.9508 10.3062 12.82 10.5494C12.4317 11.2708 11.8807 11.8993 11.2035 12.3811C10.1582 13.1249 8.88128 13.47 7.6036 13.3542C6.32592 13.2384 5.13186 12.6692 4.23732 11.7496C3.50475 10.9965 3.01266 10.0491 2.81428 9.02749L3.95178 9.68895C4.1905 9.82776 4.49655 9.74677 4.63536 9.50805C4.77417 9.26934 4.69318 8.96329 4.45447 8.82448L2.29329 7.56777C2.05458 7.42895 1.74853 7.50994 1.60972 7.74866L0.353003 9.90983C0.214191 10.1485 0.295179 10.4546 0.533896 10.5934C0.772613 10.7322 1.07866 10.6512 1.21747 10.4125L1.85313 9.31938C2.10072 10.4924 2.67584 11.5786 3.52051 12.4469C4.58154 13.5377 5.99784 14.2128 7.51332 14.3501Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
29
frontend/src/components/Icons/GoogleIcon.vue
Normal file
29
frontend/src/components/Icons/GoogleIcon.vue
Normal file
File diff suppressed because one or more lines are too long
16
frontend/src/components/Icons/HelpIcon.vue
Normal file
16
frontend/src/components/Icons/HelpIcon.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M14.25 8C14.25 11.4518 11.4518 14.25 8 14.25C4.54822 14.25 1.75 11.4518 1.75 8C1.75 4.54822 4.54822 1.75 8 1.75C11.4518 1.75 14.25 4.54822 14.25 8ZM15.25 8C15.25 12.0041 12.0041 15.25 8 15.25C3.99594 15.25 0.75 12.0041 0.75 8C0.75 3.99594 3.99594 0.75 8 0.75C12.0041 0.75 15.25 3.99594 15.25 8ZM7.37988 9.37695V9.44531H8.39062V9.37695C8.39062 9.10352 8.41992 8.88542 8.47852 8.72266C8.53711 8.55664 8.62826 8.41504 8.75195 8.29785C8.87891 8.18066 9.04329 8.06185 9.24512 7.94141C9.56087 7.74609 9.8099 7.51009 9.99219 7.2334C10.1745 6.95345 10.2656 6.61328 10.2656 6.21289C10.2656 5.82878 10.1745 5.49186 9.99219 5.20215C9.81315 4.91244 9.56087 4.6862 9.23535 4.52344C8.90983 4.36068 8.52734 4.2793 8.08789 4.2793C7.69401 4.2793 7.33268 4.35579 7.00391 4.50879C6.67513 4.65853 6.41146 4.88151 6.21289 5.17773C6.01432 5.4707 5.90853 5.82878 5.89551 6.25195H6.96973C6.986 6.0013 7.04948 5.79785 7.16016 5.6416C7.27083 5.4821 7.40755 5.36491 7.57031 5.29004C7.73633 5.21517 7.90885 5.17773 8.08789 5.17773C8.28971 5.17773 8.47363 5.22005 8.63965 5.30469C8.80892 5.38932 8.94075 5.50814 9.03516 5.66113C9.13281 5.81413 9.18164 5.99479 9.18164 6.20312C9.18164 6.47005 9.11003 6.69954 8.9668 6.8916C8.82357 7.0804 8.64453 7.23828 8.42969 7.36523C8.21159 7.50195 8.02279 7.64193 7.86328 7.78516C7.70703 7.92513 7.58659 8.11556 7.50195 8.35645C7.42057 8.59408 7.37988 8.93425 7.37988 9.37695ZM7.37988 11.5205C7.51986 11.654 7.69076 11.7207 7.89258 11.7207C8.09766 11.7207 8.26855 11.654 8.40527 11.5205C8.54525 11.3838 8.61523 11.2161 8.61523 11.0176C8.61523 10.8158 8.54525 10.6481 8.40527 10.5146C8.26855 10.3779 8.09766 10.3096 7.89258 10.3096C7.69076 10.3096 7.51986 10.3779 7.37988 10.5146C7.24316 10.6481 7.1748 10.8158 7.1748 11.0176C7.1748 11.2161 7.24316 11.3838 7.37988 11.5205Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
16
frontend/src/components/Icons/InviteIcon.vue
Normal file
16
frontend/src/components/Icons/InviteIcon.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M13.5 0C13.7761 0 14 0.223858 14 0.5V2H15.5C15.7761 2 16 2.22386 16 2.5C16 2.77614 15.7761 3 15.5 3H14V4.5C14 4.77614 13.7761 5 13.5 5C13.2239 5 13 4.77614 13 4.5V3H11.5C11.2239 3 11 2.77614 11 2.5C11 2.22386 11.2239 2 11.5 2H13V0.5C13 0.223858 13.2239 0 13.5 0ZM7.9998 2C4.6862 2 2 4.6862 2 7.9998C2 9.49431 2.54643 10.8612 3.45041 11.9116C4.18218 10.8499 5.63104 9.51974 7.99595 9.50011L8.0001 9.50008C9.89267 9.50009 11.5613 10.456 12.5506 11.91C13.4537 10.8598 13.9996 9.49355 13.9996 7.9998C13.9996 7.72366 14.2235 7.4998 14.4996 7.4998C14.7757 7.4998 14.9996 7.72366 14.9996 7.9998C14.9996 11.8657 11.8657 14.9996 7.9998 14.9996C4.13392 14.9996 1 11.8657 1 7.9998C1 4.13392 4.13392 1 7.9998 1C8.27594 1 8.4998 1.22386 8.4998 1.5C8.4998 1.77614 8.27594 2 7.9998 2ZM11.8227 12.6242C11.0281 11.3487 9.61378 10.5008 8.00216 10.5001C5.94811 10.518 4.73746 11.7366 4.17676 12.6241C5.21484 13.4833 6.54702 13.9996 7.9998 13.9996C9.45251 13.9996 10.7846 13.4833 11.8227 12.6242ZM8 4.5C7.0335 4.5 6.25 5.2835 6.25 6.25C6.25 7.2165 7.0335 8 8 8C8.9665 8 9.75 7.2165 9.75 6.25C9.75 5.2835 8.9665 4.5 8 4.5ZM5.25 6.25C5.25 4.73122 6.48122 3.5 8 3.5C9.51878 3.5 10.75 4.73122 10.75 6.25C10.75 7.76878 9.51878 9 8 9C6.48122 9 5.25 7.76878 5.25 6.25Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
16
frontend/src/components/Icons/StepsIcon.vue
Normal file
16
frontend/src/components/Icons/StepsIcon.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M8 6.5C9.10457 6.5 10 5.60457 10 4.5C10 3.39543 9.10457 2.5 8 2.5C6.89543 2.5 6 3.39543 6 4.5C6 5.60457 6.89543 6.5 8 6.5ZM8 7.5C9.65685 7.5 11 6.15685 11 4.5C11 2.84315 9.65685 1.5 8 1.5C6.34315 1.5 5 2.84315 5 4.5C5 6.15685 6.34315 7.5 8 7.5ZM12 13.5C13.1046 13.5 14 12.6046 14 11.5C14 10.3954 13.1046 9.5 12 9.5C10.8954 9.5 10 10.3954 10 11.5C10 12.6046 10.8954 13.5 12 13.5ZM12 14.5C13.6569 14.5 15 13.1569 15 11.5C15 9.84315 13.6569 8.5 12 8.5C10.3431 8.5 9 9.84315 9 11.5C9 13.1569 10.3431 14.5 12 14.5ZM6 11.5C6 12.6046 5.10457 13.5 4 13.5C2.89543 13.5 2 12.6046 2 11.5C2 10.3954 2.89543 9.5 4 9.5C5.10457 9.5 6 10.3954 6 11.5ZM7 11.5C7 13.1569 5.65685 14.5 4 14.5C2.34315 14.5 1 13.1569 1 11.5C1 9.84315 2.34315 8.5 4 8.5C5.65685 8.5 7 9.84315 7 11.5Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
@ -73,7 +73,26 @@
|
||||
</div>
|
||||
<div class="m-2 flex flex-col gap-1">
|
||||
<SignupBanner :isSidebarCollapsed="isSidebarCollapsed" />
|
||||
<TrialBanner v-if="isFCSite" />
|
||||
<TrialBanner v-if="isFCSite" :isSidebarCollapsed="isSidebarCollapsed" />
|
||||
<GettingStartedBanner
|
||||
v-if="!isOnboardingStepsCompleted"
|
||||
:isSidebarCollapsed="isSidebarCollapsed"
|
||||
/>
|
||||
<SidebarLink
|
||||
v-else
|
||||
:label="__('Help')"
|
||||
:isCollapsed="isSidebarCollapsed"
|
||||
@click="
|
||||
() => {
|
||||
showHelpModal = minimize ? true : !showHelpModal
|
||||
minimize = !showHelpModal
|
||||
}
|
||||
"
|
||||
>
|
||||
<template #icon>
|
||||
<HelpIcon class="h-4 w-4" />
|
||||
</template>
|
||||
</SidebarLink>
|
||||
<SidebarLink
|
||||
:label="isSidebarCollapsed ? __('Expand') : __('Collapse')"
|
||||
:isCollapsed="isSidebarCollapsed"
|
||||
@ -81,9 +100,9 @@
|
||||
class=""
|
||||
>
|
||||
<template #icon>
|
||||
<span class="grid h-4.5 w-4.5 flex-shrink-0 place-items-center">
|
||||
<span class="grid h-4 w-4 flex-shrink-0 place-items-center">
|
||||
<CollapseSidebar
|
||||
class="h-4.5 w-4.5 text-ink-gray-7 duration-300 ease-in-out"
|
||||
class="h-4 w-4 text-ink-gray-7 duration-300 ease-in-out"
|
||||
:class="{ '[transform:rotateY(180deg)]': isSidebarCollapsed }"
|
||||
/>
|
||||
</span>
|
||||
@ -92,10 +111,26 @@
|
||||
</div>
|
||||
<Notifications />
|
||||
<Settings />
|
||||
<HelpModal
|
||||
v-if="showHelpModal"
|
||||
v-model="showHelpModal"
|
||||
v-model:articles="articles"
|
||||
:logo="CRMLogo"
|
||||
:afterSkip="(step) => capture('onboarding_step_skipped_' + step)"
|
||||
:afterSkipAll="() => capture('onboarding_steps_skipped')"
|
||||
:afterReset="() => capture('onboarding_steps_reset')"
|
||||
docsLink="https://docs.frappe.io/crm"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import CRMLogo from '@/components/Icons/CRMLogo.vue'
|
||||
import InviteIcon from '@/components/Icons/InviteIcon.vue'
|
||||
import ConvertIcon from '@/components/Icons/ConvertIcon.vue'
|
||||
import CommentIcon from '@/components/Icons/CommentIcon.vue'
|
||||
import EmailIcon from '@/components/Icons/EmailIcon.vue'
|
||||
import StepsIcon from '@/components/Icons/StepsIcon.vue'
|
||||
import Section from '@/components/Section.vue'
|
||||
import Email2Icon from '@/components/Icons/Email2Icon.vue'
|
||||
import PinIcon from '@/components/Icons/PinIcon.vue'
|
||||
@ -109,6 +144,7 @@ import TaskIcon from '@/components/Icons/TaskIcon.vue'
|
||||
import PhoneIcon from '@/components/Icons/PhoneIcon.vue'
|
||||
import CollapseSidebar from '@/components/Icons/CollapseSidebar.vue'
|
||||
import NotificationsIcon from '@/components/Icons/NotificationsIcon.vue'
|
||||
import HelpIcon from '@/components/Icons/HelpIcon.vue'
|
||||
import SidebarLink from '@/components/SidebarLink.vue'
|
||||
import Notifications from '@/components/Notifications.vue'
|
||||
import Settings from '@/components/Settings/Settings.vue'
|
||||
@ -118,9 +154,20 @@ import {
|
||||
unreadNotificationsCount,
|
||||
notificationsStore,
|
||||
} from '@/stores/notifications'
|
||||
import { FeatherIcon, TrialBanner } from 'frappe-ui'
|
||||
import { showSettings, activeSettingsPage } from '@/composables/settings'
|
||||
import { FeatherIcon, call } from 'frappe-ui'
|
||||
import {
|
||||
TrialBanner,
|
||||
HelpModal,
|
||||
GettingStartedBanner,
|
||||
useOnboarding,
|
||||
showHelpModal,
|
||||
minimize,
|
||||
} from 'frappe-ui/frappe'
|
||||
import { capture } from '@/telemetry'
|
||||
import router from '@/router'
|
||||
import { useStorage } from '@vueuse/core'
|
||||
import { ref, computed, h } from 'vue'
|
||||
import { ref, reactive, computed, h, markRaw, onMounted } from 'vue'
|
||||
|
||||
const { getPinnedViews, getPublicViews } = viewsStore()
|
||||
const { toggle: toggleNotificationPanel } = notificationsStore()
|
||||
@ -233,4 +280,248 @@ function getIcon(routeName, icon) {
|
||||
return PinIcon
|
||||
}
|
||||
}
|
||||
|
||||
// onboarding
|
||||
const { isOnboardingStepsCompleted, setUp } = useOnboarding('frappecrm')
|
||||
|
||||
const firstLead = ref('')
|
||||
const firstDeal = ref('')
|
||||
|
||||
async function getFirstLead() {
|
||||
if (firstLead.value) return firstLead.value
|
||||
return await call('crm.api.onboarding.get_first_lead')
|
||||
}
|
||||
|
||||
async function getFirstDeal() {
|
||||
if (firstDeal.value) return firstDeal.value
|
||||
return await call('crm.api.onboarding.get_first_deal')
|
||||
}
|
||||
|
||||
const steps = reactive([
|
||||
{
|
||||
name: 'create_first_lead',
|
||||
title: __('Create your first lead'),
|
||||
icon: markRaw(LeadsIcon),
|
||||
completed: false,
|
||||
onClick: () => {
|
||||
minimize.value = true
|
||||
router.push({ name: 'Leads' })
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'invite_your_team',
|
||||
title: __('Invite your team'),
|
||||
icon: markRaw(InviteIcon),
|
||||
completed: false,
|
||||
onClick: () => {
|
||||
minimize.value = true
|
||||
showSettings.value = true
|
||||
activeSettingsPage.value = 'Invite Members'
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'convert_lead_to_deal',
|
||||
title: __('Convert lead to deal'),
|
||||
icon: markRaw(ConvertIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
|
||||
let lead = await getFirstLead()
|
||||
|
||||
if (lead) {
|
||||
router.push({ name: 'Lead', params: { leadId: lead } })
|
||||
} else {
|
||||
router.push({ name: 'Leads' })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'create_first_task',
|
||||
title: __('Create your first task'),
|
||||
icon: markRaw(TaskIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
let deal = await getFirstDeal()
|
||||
|
||||
if (deal) {
|
||||
router.push({
|
||||
name: 'Deal',
|
||||
params: { dealId: deal },
|
||||
hash: '#tasks',
|
||||
})
|
||||
} else {
|
||||
router.push({ name: 'Tasks' })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'create_first_note',
|
||||
title: __('Create your first note'),
|
||||
icon: markRaw(NoteIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
let deal = await getFirstDeal()
|
||||
|
||||
if (deal) {
|
||||
router.push({
|
||||
name: 'Deal',
|
||||
params: { dealId: deal },
|
||||
hash: '#notes',
|
||||
})
|
||||
} else {
|
||||
router.push({ name: 'Notes' })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'add_first_comment',
|
||||
title: __('Add your first comment'),
|
||||
icon: markRaw(CommentIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
let deal = await getFirstDeal()
|
||||
|
||||
if (deal) {
|
||||
router.push({
|
||||
name: 'Deal',
|
||||
params: { dealId: deal },
|
||||
hash: '#comments',
|
||||
})
|
||||
} else {
|
||||
router.push({ name: 'Leads' })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'send_first_email',
|
||||
title: __('Send email'),
|
||||
icon: markRaw(EmailIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
let deal = await getFirstDeal()
|
||||
|
||||
if (deal) {
|
||||
router.push({
|
||||
name: 'Deal',
|
||||
params: { dealId: deal },
|
||||
hash: '#emails',
|
||||
})
|
||||
} else {
|
||||
router.push({ name: 'Leads' })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'change_deal_status',
|
||||
title: __('Change deal status'),
|
||||
icon: markRaw(StepsIcon),
|
||||
completed: false,
|
||||
onClick: async () => {
|
||||
minimize.value = true
|
||||
let deal = await getFirstDeal()
|
||||
|
||||
if (deal) {
|
||||
router.push({
|
||||
name: 'Deal',
|
||||
params: { dealId: deal },
|
||||
hash: '#activity',
|
||||
})
|
||||
} else {
|
||||
router.push({ name: 'Leads' })
|
||||
}
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
onMounted(() => setUp(steps))
|
||||
|
||||
// help center
|
||||
const articles = ref([
|
||||
{
|
||||
title: __('Introduction'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'introduction', title: __('Introduction') },
|
||||
{ name: 'setting-up', title: __('Setting up') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Settings'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'profile', title: __('Profile') },
|
||||
{ name: 'custom-branding', title: __('Custom branding') },
|
||||
{ name: 'home-actions', title: __('Home actions') },
|
||||
{ name: 'invite-members', title: __('Invite members') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Masters'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'lead', title: __('Lead') },
|
||||
{ name: 'deal', title: __('Deal') },
|
||||
{ name: 'contact', title: __('Contact') },
|
||||
{ name: 'organization', title: __('Organization') },
|
||||
{ name: 'note', title: __('Note') },
|
||||
{ name: 'task', title: __('Task') },
|
||||
{ name: 'call-log', title: __('Call log') },
|
||||
{ name: 'email-template', title: __('Email template') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Views'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'view', title: __('Saved view') },
|
||||
{ name: 'public-view', title: __('Public view') },
|
||||
{ name: 'pinned-view', title: __('Pinned view') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Other features'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'email-communication', title: __('Email communication') },
|
||||
{ name: 'comment', title: __('Comment') },
|
||||
{ name: 'data', title: __('Data') },
|
||||
{ name: 'service-level-agreement', title: __('Service level agreement') },
|
||||
{ name: 'assignment-rule', title: __('Assignment rule') },
|
||||
{ name: 'notification', title: __('Notification') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Customization'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'custom-fields', title: __('Custom fields') },
|
||||
{ name: 'custom-actions', title: __('Custom actions') },
|
||||
{ name: 'custom-statuses', title: __('Custom statuses') },
|
||||
{ name: 'custom-list-actions', title: __('Custom list actions') },
|
||||
{ name: 'quick-entry-layout', title: __('Quick entry layout') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Integration'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'twilio', title: __('Twilio') },
|
||||
{ name: 'exotel', title: __('Exotel') },
|
||||
{ name: 'whatsapp', title: __('WhatsApp') },
|
||||
{ name: 'erpnext', title: __('ERPNext') },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: __('Frappe CRM mobile'),
|
||||
opened: false,
|
||||
subArticles: [
|
||||
{ name: 'mobile-app-installation', title: __('Mobile app installation') },
|
||||
],
|
||||
},
|
||||
])
|
||||
</script>
|
||||
|
||||
@ -49,6 +49,7 @@ import { statusesStore } from '@/stores/statuses'
|
||||
import { isMobileView } from '@/composables/settings'
|
||||
import { capture } from '@/telemetry'
|
||||
import { createResource } from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { computed, onMounted, ref, reactive, nextTick } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
@ -58,6 +59,7 @@ const props = defineProps({
|
||||
|
||||
const { getUser, isManager } = usersStore()
|
||||
const { getLeadStatus, statusOptions } = statusesStore()
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const show = defineModel()
|
||||
const router = useRouter()
|
||||
@ -122,7 +124,7 @@ const createLead = createResource({
|
||||
const leadStatuses = computed(() => {
|
||||
let statuses = statusOptions('lead')
|
||||
if (!lead.status) {
|
||||
lead.status = statuses[0].value
|
||||
lead.status = statuses?.[0]?.value
|
||||
}
|
||||
return statuses
|
||||
})
|
||||
@ -166,6 +168,7 @@ function createNewLead() {
|
||||
isLeadCreating.value = false
|
||||
show.value = false
|
||||
router.push({ name: 'Lead', params: { leadId: data.name } })
|
||||
updateOnboardingStep('create_first_lead')
|
||||
},
|
||||
onError(err) {
|
||||
isLeadCreating.value = false
|
||||
@ -192,7 +195,7 @@ onMounted(() => {
|
||||
if (!lead.lead_owner) {
|
||||
lead.lead_owner = getUser().name
|
||||
}
|
||||
if (!lead.status && leadStatuses.value[0].value) {
|
||||
if (!lead.status && leadStatuses.value[0]?.value) {
|
||||
lead.status = leadStatuses.value[0].value
|
||||
}
|
||||
})
|
||||
|
||||
@ -66,6 +66,7 @@
|
||||
import ArrowUpRightIcon from '@/components/Icons/ArrowUpRightIcon.vue'
|
||||
import { capture } from '@/telemetry'
|
||||
import { TextEditor, call } from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, nextTick, watch } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
@ -91,6 +92,8 @@ const emit = defineEmits(['after'])
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const title = ref(null)
|
||||
const editMode = ref(false)
|
||||
let _note = ref({})
|
||||
@ -123,6 +126,7 @@ async function updateNote() {
|
||||
},
|
||||
})
|
||||
if (d.name) {
|
||||
updateOnboardingStep('create_first_note')
|
||||
capture('note_created')
|
||||
notes.value?.reload()
|
||||
emit('after', d, true)
|
||||
|
||||
@ -119,6 +119,7 @@ import { taskStatusOptions, taskPriorityOptions, getFormat } from '@/utils'
|
||||
import { usersStore } from '@/stores/users'
|
||||
import { capture } from '@/telemetry'
|
||||
import { TextEditor, Dropdown, Tooltip, call, DateTimePicker } from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, watch, nextTick, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
@ -144,6 +145,7 @@ const emit = defineEmits(['updateTask', 'after'])
|
||||
|
||||
const router = useRouter()
|
||||
const { getUser } = usersStore()
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const title = ref(null)
|
||||
const editMode = ref(false)
|
||||
@ -200,6 +202,7 @@ async function updateTask() {
|
||||
},
|
||||
})
|
||||
if (d.name) {
|
||||
updateOnboardingStep('create_first_task')
|
||||
capture('task_created')
|
||||
tasks.value?.reload()
|
||||
emit('after', d, true)
|
||||
|
||||
@ -87,8 +87,11 @@ import {
|
||||
FormControl,
|
||||
Tooltip,
|
||||
} from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, computed } from 'vue'
|
||||
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const invitees = ref([])
|
||||
const role = ref('Sales User')
|
||||
const error = ref(null)
|
||||
@ -120,6 +123,7 @@ const inviteByEmail = createResource({
|
||||
role.value = 'Sales User'
|
||||
error.value = null
|
||||
pendingInvitations.reload()
|
||||
updateOnboardingStep('invite_your_team')
|
||||
},
|
||||
onError(err) {
|
||||
error.value = err?.messages?.[0]
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
import WhatsAppIcon from '@/components/Icons/WhatsAppIcon.vue'
|
||||
import ERPNextIcon from '@/components/Icons/ERPNextIcon.vue'
|
||||
import PhoneIcon from '@/components/Icons/PhoneIcon.vue'
|
||||
import InviteIcon from '@/components/Icons/InviteIcon.vue'
|
||||
import GeneralSettings from '@/components/Settings/GeneralSettings.vue'
|
||||
import InviteMemberPage from '@/components/Settings/InviteMemberPage.vue'
|
||||
import ProfileSettings from '@/components/Settings/ProfileSettings.vue'
|
||||
@ -96,7 +97,7 @@ const tabs = computed(() => {
|
||||
},
|
||||
{
|
||||
label: __('Invite Members'),
|
||||
icon: 'user-plus',
|
||||
icon: InviteIcon,
|
||||
component: markRaw(InviteMemberPage),
|
||||
condition: () => isManager(),
|
||||
},
|
||||
|
||||
@ -341,6 +341,7 @@ import {
|
||||
call,
|
||||
usePageMeta,
|
||||
} from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, computed, h, onMounted, onBeforeUnmount } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useActiveTabManager } from '@/composables/useActiveTabManager'
|
||||
@ -349,6 +350,10 @@ const { brand } = getSettings()
|
||||
const { $dialog, $socket, makeCall } = globalStore()
|
||||
const { statusOptions, getDealStatus } = statusesStore()
|
||||
const { doctypeMeta } = getMeta('CRM Deal')
|
||||
|
||||
const { updateOnboardingStep, isOnboardingStepsCompleted } =
|
||||
useOnboarding('frappecrm')
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
||||
@ -699,6 +704,10 @@ function triggerCall() {
|
||||
}
|
||||
|
||||
function updateField(name, value, callback) {
|
||||
if (name == 'status' && !isOnboardingStepsCompleted.value) {
|
||||
updateOnboardingStep('change_deal_status')
|
||||
}
|
||||
|
||||
updateDeal(name, value, () => {
|
||||
deal.data[name] = value
|
||||
callback?.()
|
||||
|
||||
@ -361,6 +361,7 @@ import {
|
||||
call,
|
||||
usePageMeta,
|
||||
} from 'frappe-ui'
|
||||
import { useOnboarding } from 'frappe-ui/frappe'
|
||||
import { ref, reactive, computed, onMounted, watch } from 'vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { useActiveTabManager } from '@/composables/useActiveTabManager'
|
||||
@ -370,6 +371,9 @@ const { isManager } = usersStore()
|
||||
const { $dialog, $socket, makeCall } = globalStore()
|
||||
const { statusOptions, getLeadStatus, getDealStatus } = statusesStore()
|
||||
const { doctypeMeta } = getMeta('CRM Lead')
|
||||
|
||||
const { updateOnboardingStep } = useOnboarding('frappecrm')
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
||||
@ -645,6 +649,7 @@ async function convertToDeal() {
|
||||
existingOrganizationChecked.value = false
|
||||
existingContact.value = ''
|
||||
existingOrganization.value = ''
|
||||
updateOnboardingStep('convert_lead_to_deal')
|
||||
capture('convert_lead_to_deal')
|
||||
router.push({ name: 'Deal', params: { dealId: _deal } })
|
||||
}
|
||||
|
||||
61
frontend/src/pages/Welcome.vue
Normal file
61
frontend/src/pages/Welcome.vue
Normal file
@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<div class="flex flex-col gap-5 justify-center items-center h-full">
|
||||
<div class="font-semibold text-2xl text-ink-gray-8 mb-3">
|
||||
{{ __('Welcome {0}, lets add your first lead', [name]) }}
|
||||
</div>
|
||||
<div class="flex gap-3">
|
||||
<div
|
||||
class="flex flex-col px-6 pt-13 pb-7 justify-between bg-surface-gray-1 rounded-2xl items-center space-y-2 size-56"
|
||||
>
|
||||
<div class="flex flex-col items-center gap-2.5">
|
||||
<div class="flex -space-x-2">
|
||||
<div
|
||||
v-for="i in 3"
|
||||
:key="i"
|
||||
class="bg-surface-gray-3 ring-2 ring-outline-white p-2.5 rounded-full"
|
||||
>
|
||||
<AvatarIcon />
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-p-base text-ink-gray-8 text-center">
|
||||
{{ __('Start with sample 10 leads') }}
|
||||
</div>
|
||||
</div>
|
||||
<Button variant="outline" :label="__('Add sample data')" />
|
||||
</div>
|
||||
<div
|
||||
class="flex flex-col px-6 pt-13 pb-7 justify-between bg-surface-gray-1 rounded-2xl items-center space-y-2 size-56"
|
||||
>
|
||||
<div class="flex flex-col items-center gap-2.5">
|
||||
<GoogleIcon class="" />
|
||||
<div class="text-p-base text-ink-gray-8 text-center">
|
||||
{{ __('Sync your contacts,email and calenders') }}
|
||||
</div>
|
||||
</div>
|
||||
<Button variant="outline" :label="__('Connect your email')" />
|
||||
</div>
|
||||
</div>
|
||||
<Button
|
||||
variant="ghost"
|
||||
:label="__('Or create leads manually')"
|
||||
@click="showLeadModal = true"
|
||||
/>
|
||||
</div>
|
||||
<LeadModal
|
||||
v-if="showLeadModal"
|
||||
v-model="showLeadModal"
|
||||
v-model:quickEntry="showQuickEntryModal"
|
||||
/>
|
||||
<QuickEntryModal v-if="showQuickEntryModal" v-model="showQuickEntryModal" />
|
||||
</template>
|
||||
<script setup>
|
||||
import AvatarIcon from '@/components/Icons/AvatarIcon.vue'
|
||||
import GoogleIcon from '@/components/Icons/GoogleIcon.vue'
|
||||
import LeadModal from '@/components/Modals/LeadModal.vue'
|
||||
import QuickEntryModal from '@/components/Modals/QuickEntryModal.vue'
|
||||
import { ref } from 'vue'
|
||||
|
||||
const name = ref('John Doe')
|
||||
const showLeadModal = ref(false)
|
||||
const showQuickEntryModal = ref(false)
|
||||
</script>
|
||||
@ -91,6 +91,11 @@ const routes = [
|
||||
component: () => import('@/pages/EmailTemplate.vue'),
|
||||
props: true,
|
||||
},
|
||||
{
|
||||
path: '/welcome',
|
||||
name: 'Welcome',
|
||||
component: () => import('@/pages/Welcome.vue'),
|
||||
},
|
||||
{
|
||||
path: '/:invalidpath',
|
||||
name: 'Invalid Page',
|
||||
|
||||
@ -3,8 +3,10 @@ module.exports = {
|
||||
content: [
|
||||
'./index.html',
|
||||
'./src/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'./node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'../node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'./node_modules/frappe-ui/src/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'../node_modules/frappe-ui/src/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'./node_modules/frappe-ui/frappe/**/*.{vue,js,ts,jsx,tsx}',
|
||||
'../node_modules/frappe-ui/frappe/**/*.{vue,js,ts,jsx,tsx}',
|
||||
],
|
||||
safelist: [{ pattern: /!(text|bg)-/, variants: ['hover', 'active'] }],
|
||||
theme: {
|
||||
|
||||
@ -8,12 +8,17 @@ import { VitePWA } from 'vite-plugin-pwa'
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
frappeui(),
|
||||
vue({
|
||||
script: {
|
||||
propsDestructure: true,
|
||||
frappeui({
|
||||
frappeProxy: true,
|
||||
lucideIcons: true,
|
||||
jinjaBootData: true,
|
||||
buildConfig: {
|
||||
indexHtmlPath: '../crm/www/crm.html',
|
||||
emptyOutDir: true,
|
||||
sourcemap: true,
|
||||
},
|
||||
}),
|
||||
vue(),
|
||||
vueJsx(),
|
||||
VitePWA({
|
||||
registerType: 'autoUpdate',
|
||||
@ -55,39 +60,12 @@ export default defineConfig({
|
||||
],
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: 'transform-index.html',
|
||||
transformIndexHtml(html, context) {
|
||||
if (!context.server) {
|
||||
return html.replace(
|
||||
/<\/body>/,
|
||||
`
|
||||
<script>
|
||||
{% for key in boot %}
|
||||
window["{{ key }}"] = {{ boot[key] | tojson }};
|
||||
{% endfor %}
|
||||
</script>
|
||||
</body>
|
||||
`
|
||||
)
|
||||
}
|
||||
return html
|
||||
},
|
||||
},
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
},
|
||||
},
|
||||
build: {
|
||||
outDir: '../crm/public/frontend',
|
||||
emptyOutDir: true,
|
||||
commonjsOptions: {
|
||||
include: [/tailwind.config.js/, /node_modules/],
|
||||
},
|
||||
sourcemap: true,
|
||||
},
|
||||
optimizeDeps: {
|
||||
include: [
|
||||
'feather-icons',
|
||||
|
||||
367
yarn.lock
367
yarn.lock
@ -15,6 +15,19 @@
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@antfu/install-pkg@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.0.0.tgz#2912a150fc8b35ec912f583f90074ee98f64d66a"
|
||||
integrity sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==
|
||||
dependencies:
|
||||
package-manager-detector "^0.2.8"
|
||||
tinyexec "^0.3.2"
|
||||
|
||||
"@antfu/utils@^8.1.0":
|
||||
version "8.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-8.1.1.tgz#95b1947d292a9a2efffba2081796dcaa05ecedfb"
|
||||
integrity sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==
|
||||
|
||||
"@apideck/better-ajv-errors@^0.3.1":
|
||||
version "0.3.6"
|
||||
resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097"
|
||||
@ -947,11 +960,24 @@
|
||||
"@floating-ui/core" "^1.6.0"
|
||||
"@floating-ui/utils" "^0.2.8"
|
||||
|
||||
"@floating-ui/dom@^1.6.13":
|
||||
version "1.6.13"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.13.tgz#a8a938532aea27a95121ec16e667a7cbe8c59e34"
|
||||
integrity sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==
|
||||
dependencies:
|
||||
"@floating-ui/core" "^1.6.0"
|
||||
"@floating-ui/utils" "^0.2.9"
|
||||
|
||||
"@floating-ui/utils@^0.2.8":
|
||||
version "0.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
|
||||
integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
|
||||
|
||||
"@floating-ui/utils@^0.2.9":
|
||||
version "0.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429"
|
||||
integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==
|
||||
|
||||
"@floating-ui/vue@^1.1.0":
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.5.tgz#dcbb5d7a2f9035b0c96a9c30cdf794977d360809"
|
||||
@ -961,6 +987,15 @@
|
||||
"@floating-ui/utils" "^0.2.8"
|
||||
vue-demi ">=0.13.0"
|
||||
|
||||
"@floating-ui/vue@^1.1.6":
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.6.tgz#1c7e8f257fae5b71a72d10c1746e6b0ba338399c"
|
||||
integrity sha512-XFlUzGHGv12zbgHNk5FN2mUB7ROul3oG2ENdTpWdE+qMFxyNxWSRmsoyhiEnpmabNm6WnUvR1OvJfUfN4ojC1A==
|
||||
dependencies:
|
||||
"@floating-ui/dom" "^1.0.0"
|
||||
"@floating-ui/utils" "^0.2.9"
|
||||
vue-demi ">=0.13.0"
|
||||
|
||||
"@headlessui/vue@^1.7.14":
|
||||
version "1.7.23"
|
||||
resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.23.tgz#7fe19dbeca35de9e6270c82c78c4864e6a6f7391"
|
||||
@ -968,6 +1003,32 @@
|
||||
dependencies:
|
||||
"@tanstack/vue-virtual" "^3.0.0-beta.60"
|
||||
|
||||
"@iconify/types@^2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57"
|
||||
integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
|
||||
|
||||
"@iconify/utils@^2.3.0":
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.3.0.tgz#1bbbf8c477ebe9a7cacaea78b1b7e8937f9cbfba"
|
||||
integrity sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==
|
||||
dependencies:
|
||||
"@antfu/install-pkg" "^1.0.0"
|
||||
"@antfu/utils" "^8.1.0"
|
||||
"@iconify/types" "^2.0.0"
|
||||
debug "^4.4.0"
|
||||
globals "^15.14.0"
|
||||
kolorist "^1.8.0"
|
||||
local-pkg "^1.0.0"
|
||||
mlly "^1.7.4"
|
||||
|
||||
"@internationalized/date@^3.5.0":
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.7.0.tgz#23a4956308ee108e308517a7137c69ab8f5f2ad9"
|
||||
integrity sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ==
|
||||
dependencies:
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@internationalized/date@^3.5.4":
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.6.0.tgz#b30d43030bfed1855f20c9503606926d75bfdf64"
|
||||
@ -975,7 +1036,7 @@
|
||||
dependencies:
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@internationalized/number@^3.5.3":
|
||||
"@internationalized/number@^3.5.0", "@internationalized/number@^3.5.3":
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.0.tgz#dc6ba20c41b25eb605f1d5cac7d8668e9022c224"
|
||||
integrity sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==
|
||||
@ -1151,6 +1212,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz#00409e743ac4eea9afe5b7708594d5fcebb00212"
|
||||
integrity sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==
|
||||
|
||||
"@tanstack/virtual-core@3.13.4":
|
||||
version "3.13.4"
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.4.tgz#31ac7710d102ed59463f922ab088dde5a9e62010"
|
||||
integrity sha512-fNGO9fjjSLns87tlcto106enQQLycCKR4DPNpgq3djP5IdcPFdPAmaKjsgzIeRhH7hWrELgW12hYnRthS5kLUw==
|
||||
|
||||
"@tanstack/vue-virtual@^3.0.0-beta.60", "@tanstack/vue-virtual@^3.8.1":
|
||||
version "3.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.11.2.tgz#c1a7f1a3e20cb1eee7a81c58b5b21f6a381cbaab"
|
||||
@ -1158,6 +1224,13 @@
|
||||
dependencies:
|
||||
"@tanstack/virtual-core" "3.11.2"
|
||||
|
||||
"@tanstack/vue-virtual@^3.12.0":
|
||||
version "3.13.4"
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.13.4.tgz#0e5e8b6ba03a9a5f27793b2b4325bc4a80b60ad3"
|
||||
integrity sha512-1fPrd3hE1SS4R/9JbX1AlzueY4duCK7ixuLcMW5GMnk9N6WbLo9MioNKiv22V+UaXKOLNy8tLdzT8NYerOFTOQ==
|
||||
dependencies:
|
||||
"@tanstack/virtual-core" "3.13.4"
|
||||
|
||||
"@tiptap/core@^2.10.3":
|
||||
version "2.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.10.3.tgz#7744abd4a954f35265af351f1be9b545e819c66d"
|
||||
@ -1185,6 +1258,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.10.3.tgz#0a17343aaf64679327de87785918bcdb04744edf"
|
||||
integrity sha512-PTkwJOVlHi4RR4Wrs044tKMceweXwNmWA6EoQ93hPUVtQcwQL990Es5Izp+i88twTPLuGD9dH+o9QDyH9SkWdA==
|
||||
|
||||
"@tiptap/extension-code-block-lowlight@^2.11.5":
|
||||
version "2.11.5"
|
||||
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.11.5.tgz#62c05a70ec1f0b47e257a9345253031650ab014b"
|
||||
integrity sha512-EIE+mAGsp8C69dI0Yyg+VH1x36rgyPJc93SfA7h4xFF6Oth18z4YhJtiLaZcwCMyOOVs2efApZ0R3/Fnz2VlqA==
|
||||
|
||||
"@tiptap/extension-code-block@^2.10.3":
|
||||
version "2.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.10.3.tgz#5ff1b1e563c4eda44677df444c523de1e5258fa4"
|
||||
@ -1420,6 +1498,13 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
|
||||
|
||||
"@types/hast@^3.0.0":
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa"
|
||||
integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
|
||||
dependencies:
|
||||
"@types/unist" "*"
|
||||
|
||||
"@types/linkify-it@^5":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76"
|
||||
@ -1462,11 +1547,21 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11"
|
||||
integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==
|
||||
|
||||
"@types/unist@*":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c"
|
||||
integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
|
||||
|
||||
"@types/web-bluetooth@^0.0.20":
|
||||
version "0.0.20"
|
||||
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597"
|
||||
integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
|
||||
|
||||
"@types/web-bluetooth@^0.0.21":
|
||||
version "0.0.21"
|
||||
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63"
|
||||
integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
|
||||
|
||||
"@vitejs/plugin-vue-jsx@^3.0.1":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz#9953fd9456539e1f0f253bf0fcd1289e66c67cd1"
|
||||
@ -1608,6 +1703,16 @@
|
||||
"@vueuse/shared" "10.11.1"
|
||||
vue-demi ">=0.14.8"
|
||||
|
||||
"@vueuse/core@^12.5.0":
|
||||
version "12.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-12.8.2.tgz#007c6dd29a7d1f6933e916e7a2f8ef3c3f968eaa"
|
||||
integrity sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==
|
||||
dependencies:
|
||||
"@types/web-bluetooth" "^0.0.21"
|
||||
"@vueuse/metadata" "12.8.2"
|
||||
"@vueuse/shared" "12.8.2"
|
||||
vue "^3.5.13"
|
||||
|
||||
"@vueuse/integrations@^10.3.0":
|
||||
version "10.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.11.1.tgz#e4af23b871773c5ef5b8fb939f959f2fc728557e"
|
||||
@ -1622,6 +1727,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.11.1.tgz#209db7bb5915aa172a87510b6de2ca01cadbd2a7"
|
||||
integrity sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==
|
||||
|
||||
"@vueuse/metadata@12.8.2":
|
||||
version "12.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-12.8.2.tgz#6cb3a4e97cdcf528329eebc1bda73cd7f64318d3"
|
||||
integrity sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==
|
||||
|
||||
"@vueuse/shared@10.11.1", "@vueuse/shared@^10.11.0":
|
||||
version "10.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.11.1.tgz#62b84e3118ae6e1f3ff38f4fbe71b0c5d0f10938"
|
||||
@ -1629,6 +1739,18 @@
|
||||
dependencies:
|
||||
vue-demi ">=0.14.8"
|
||||
|
||||
"@vueuse/shared@12.8.2", "@vueuse/shared@^12.5.0":
|
||||
version "12.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-12.8.2.tgz#b9e4611d0603629c8e151f982459da394e22f930"
|
||||
integrity sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==
|
||||
dependencies:
|
||||
vue "^3.5.13"
|
||||
|
||||
acorn@^8.14.0:
|
||||
version "8.14.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
|
||||
integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
|
||||
|
||||
acorn@^8.8.2:
|
||||
version "8.14.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
|
||||
@ -1967,6 +2089,16 @@ concat-map@0.0.1:
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
confbox@^0.1.8:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
|
||||
integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
|
||||
|
||||
confbox@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.1.tgz#ae39f2c99699afa451d00206479f15f9a1208a8b"
|
||||
integrity sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==
|
||||
|
||||
convert-source-map@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
||||
@ -2050,7 +2182,7 @@ dayjs@^1.11.13:
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
|
||||
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
|
||||
|
||||
debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4:
|
||||
debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
|
||||
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
||||
@ -2099,6 +2231,18 @@ defu@^6.1.4:
|
||||
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479"
|
||||
integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==
|
||||
|
||||
dequal@^2.0.0:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
|
||||
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
|
||||
|
||||
devlop@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018"
|
||||
integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
|
||||
dependencies:
|
||||
dequal "^2.0.0"
|
||||
|
||||
didyoumean@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
@ -2313,6 +2457,11 @@ events@3.3.0:
|
||||
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||
|
||||
exsolve@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.4.tgz#7de5c75af82ecd15998328fbf5f2295883be3a39"
|
||||
integrity sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==
|
||||
|
||||
fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
@ -2346,6 +2495,11 @@ fastq@^1.6.0:
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
fdir@^6.4.3:
|
||||
version "6.4.3"
|
||||
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72"
|
||||
integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
|
||||
|
||||
feather-icons@^4.28.0:
|
||||
version "4.29.2"
|
||||
resolved "https://registry.yarnpkg.com/feather-icons/-/feather-icons-4.29.2.tgz#b03a47588a1c400f215e884504db1c18860d89f8"
|
||||
@ -2388,15 +2542,16 @@ fraction.js@^4.3.7:
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
|
||||
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
|
||||
|
||||
frappe-ui@^0.1.111:
|
||||
version "0.1.111"
|
||||
resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.111.tgz#c7615aa8f02da9af0596074352150d813d0f4b3d"
|
||||
integrity sha512-JCh/SQwcbsQQxTZIFFzEULPgp2QAQZe+vwrM2jqekIx4dBgYW2H1KgXSlf+uO2ng2vqk4Q1MiStA3svHQEXsLQ==
|
||||
frappe-ui@^0.1.118:
|
||||
version "0.1.118"
|
||||
resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.118.tgz#36fb108d63194fe9b06078a84576e32af54d06b8"
|
||||
integrity sha512-t29fYu22jfPoi/pFAbPX4//bh5XEgqbECHttjsOsPboC8BsnyYUtQSA/pY6PP/M/hMAW74QslnTK6iU/1OuSaQ==
|
||||
dependencies:
|
||||
"@headlessui/vue" "^1.7.14"
|
||||
"@popperjs/core" "^2.11.2"
|
||||
"@tailwindcss/forms" "^0.5.3"
|
||||
"@tailwindcss/typography" "^0.5.16"
|
||||
"@tiptap/extension-code-block-lowlight" "^2.11.5"
|
||||
"@tiptap/extension-color" "^2.0.3"
|
||||
"@tiptap/extension-highlight" "^2.0.3"
|
||||
"@tiptap/extension-image" "^2.0.3"
|
||||
@ -2418,13 +2573,18 @@ frappe-ui@^0.1.111:
|
||||
dayjs "^1.11.13"
|
||||
feather-icons "^4.28.0"
|
||||
idb-keyval "^6.2.0"
|
||||
lowlight "^3.3.0"
|
||||
lucide-static "^0.479.0"
|
||||
ora "5.4.1"
|
||||
prettier "^3.3.2"
|
||||
radix-vue "^1.5.3"
|
||||
reka-ui "^2.0.2"
|
||||
showdown "^2.1.0"
|
||||
socket.io-client "^4.5.1"
|
||||
tippy.js "^6.3.7"
|
||||
typescript "^5.0.2"
|
||||
unplugin-icons "^22.1.0"
|
||||
unplugin-vue-components "^28.4.1"
|
||||
|
||||
fs-extra@^9.0.1:
|
||||
version "9.1.0"
|
||||
@ -2550,6 +2710,11 @@ globals@^11.1.0:
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
||||
|
||||
globals@^15.14.0:
|
||||
version "15.15.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
|
||||
integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
|
||||
|
||||
globalthis@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
|
||||
@ -2611,6 +2776,11 @@ hasown@^2.0.1, hasown@^2.0.2:
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
highlight.js@~11.11.0:
|
||||
version "11.11.1"
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.11.1.tgz#fca06fa0e5aeecf6c4d437239135fabc15213585"
|
||||
integrity sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==
|
||||
|
||||
html-tags@^3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
|
||||
@ -2962,6 +3132,11 @@ jsonpointer@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
|
||||
integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
|
||||
|
||||
kolorist@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
|
||||
integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
|
||||
|
||||
leven@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||
@ -2989,6 +3164,15 @@ linkifyjs@^4.1.0:
|
||||
resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.2.0.tgz#9dd30222b9cbabec9c950e725ec00031c7fa3f08"
|
||||
integrity sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==
|
||||
|
||||
local-pkg@^1.0.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.1.1.tgz#f5fe74a97a3bd3c165788ee08ca9fbe998dc58dd"
|
||||
integrity sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==
|
||||
dependencies:
|
||||
mlly "^1.7.4"
|
||||
pkg-types "^2.0.1"
|
||||
quansync "^0.2.8"
|
||||
|
||||
lodash.castarray@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
|
||||
@ -3032,6 +3216,15 @@ loglevel@1.6.7:
|
||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56"
|
||||
integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==
|
||||
|
||||
lowlight@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-3.3.0.tgz#007b8a5bfcfd27cc65b96246d2de3e9dd4e23c6c"
|
||||
integrity sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==
|
||||
dependencies:
|
||||
"@types/hast" "^3.0.0"
|
||||
devlop "^1.0.0"
|
||||
highlight.js "~11.11.0"
|
||||
|
||||
lru-cache@^10.2.0:
|
||||
version "10.4.3"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
|
||||
@ -3044,6 +3237,11 @@ lru-cache@^5.1.1:
|
||||
dependencies:
|
||||
yallist "^3.0.2"
|
||||
|
||||
lucide-static@^0.479.0:
|
||||
version "0.479.0"
|
||||
resolved "https://registry.yarnpkg.com/lucide-static/-/lucide-static-0.479.0.tgz#820318a03ab207a6242520aaf2156ff3384fd3e2"
|
||||
integrity sha512-E+w3/8lKFpey3lZNKZfzHQGX+t/CH/afpPDdQxjBgStZ2bXY+CxI5KFX9TW818gYndLjV43fZJ7FqAO9kTCK4A==
|
||||
|
||||
magic-string@^0.25.0, magic-string@^0.25.7:
|
||||
version "0.25.9"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
|
||||
@ -3051,7 +3249,7 @@ magic-string@^0.25.0, magic-string@^0.25.7:
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.8"
|
||||
|
||||
magic-string@^0.30.11:
|
||||
magic-string@^0.30.11, magic-string@^0.30.17:
|
||||
version "0.30.17"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
||||
integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
|
||||
@ -3148,6 +3346,16 @@ minimatch@^9.0.4:
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
|
||||
mlly@^1.7.4:
|
||||
version "1.7.4"
|
||||
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f"
|
||||
integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==
|
||||
dependencies:
|
||||
acorn "^8.14.0"
|
||||
pathe "^2.0.1"
|
||||
pkg-types "^1.3.0"
|
||||
ufo "^1.5.4"
|
||||
|
||||
ms@^2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
@ -3219,6 +3427,11 @@ object.assign@^4.1.5:
|
||||
has-symbols "^1.1.0"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
ohash@^1.1.4:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.6.tgz#9ff7b0271d7076290794537d68ec2b40a60d133e"
|
||||
integrity sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
@ -3258,6 +3471,13 @@ package-json-from-dist@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
|
||||
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
|
||||
|
||||
package-manager-detector@^0.2.8:
|
||||
version "0.2.11"
|
||||
resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c"
|
||||
integrity sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==
|
||||
dependencies:
|
||||
quansync "^0.2.7"
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
@ -3281,6 +3501,11 @@ path-scurry@^1.11.1:
|
||||
lru-cache "^10.2.0"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
|
||||
pathe@^2.0.1, pathe@^2.0.2, pathe@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
|
||||
integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
|
||||
|
||||
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
||||
@ -3291,6 +3516,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
picomatch@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
||||
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
||||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
@ -3309,6 +3539,24 @@ pirates@^4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
pkg-types@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df"
|
||||
integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==
|
||||
dependencies:
|
||||
confbox "^0.1.8"
|
||||
mlly "^1.7.4"
|
||||
pathe "^2.0.1"
|
||||
|
||||
pkg-types@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.1.0.tgz#70c9e1b9c74b63fdde749876ee0aa007ea9edead"
|
||||
integrity sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==
|
||||
dependencies:
|
||||
confbox "^0.2.1"
|
||||
exsolve "^1.0.1"
|
||||
pathe "^2.0.3"
|
||||
|
||||
possible-typed-array-names@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
|
||||
@ -3554,6 +3802,11 @@ punycode@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
|
||||
|
||||
quansync@^0.2.7, quansync@^0.2.8:
|
||||
version "0.2.8"
|
||||
resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.8.tgz#2e893d17bb754ba0988ea399ff0bc5f2a8467793"
|
||||
integrity sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==
|
||||
|
||||
queue-microtask@^1.2.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
@ -3678,6 +3931,22 @@ regjsparser@^0.12.0:
|
||||
dependencies:
|
||||
jsesc "~3.0.2"
|
||||
|
||||
reka-ui@^2.0.2:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/reka-ui/-/reka-ui-2.1.0.tgz#ad298840b582f388d281cf0e1a46ad8775915d82"
|
||||
integrity sha512-w4kEDEyXhIqv4QeFJeiuBc4mQP37hH/UTRpEb9dMbPdR49JG5TcV/s0+ntNRONUUW4LDLX7E1ZPcwBw5hnu0yw==
|
||||
dependencies:
|
||||
"@floating-ui/dom" "^1.6.13"
|
||||
"@floating-ui/vue" "^1.1.6"
|
||||
"@internationalized/date" "^3.5.0"
|
||||
"@internationalized/number" "^3.5.0"
|
||||
"@tanstack/vue-virtual" "^3.12.0"
|
||||
"@vueuse/core" "^12.5.0"
|
||||
"@vueuse/shared" "^12.5.0"
|
||||
aria-hidden "^1.2.4"
|
||||
defu "^6.1.4"
|
||||
ohash "^1.1.4"
|
||||
|
||||
require-from-string@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
|
||||
@ -3939,7 +4208,16 @@ sourcemap-codec@^1.4.8:
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^4.1.0:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
@ -4023,7 +4301,14 @@ stringify-object@^3.3.0:
|
||||
is-obj "^1.0.1"
|
||||
is-regexp "^1.0.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
@ -4139,6 +4424,19 @@ thenify-all@^1.0.0:
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
tinyexec@^0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2"
|
||||
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
|
||||
|
||||
tinyglobby@^0.2.12:
|
||||
version "0.2.12"
|
||||
resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5"
|
||||
integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==
|
||||
dependencies:
|
||||
fdir "^6.4.3"
|
||||
picomatch "^4.0.2"
|
||||
|
||||
tippy.js@^6.3.7:
|
||||
version "6.3.7"
|
||||
resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
|
||||
@ -4230,6 +4528,11 @@ uc.micro@^2.0.0, uc.micro@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee"
|
||||
integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==
|
||||
|
||||
ufo@^1.5.4:
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
|
||||
integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
|
||||
|
||||
unbox-primitive@^1.0.2:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
|
||||
@ -4280,6 +4583,47 @@ universalify@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
|
||||
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
||||
|
||||
unplugin-icons@^22.1.0:
|
||||
version "22.1.0"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-icons/-/unplugin-icons-22.1.0.tgz#5a6fe3d751e50f1c937e289857b0418e6855d92a"
|
||||
integrity sha512-ect2ZNtk1Zgwb0NVHd0C1IDW/MV+Jk/xaq4t8o6rYdVS3+L660ZdD5kTSQZvsgdwCvquRw+/wYn75hsweRjoIA==
|
||||
dependencies:
|
||||
"@antfu/install-pkg" "^1.0.0"
|
||||
"@iconify/utils" "^2.3.0"
|
||||
debug "^4.4.0"
|
||||
local-pkg "^1.0.0"
|
||||
unplugin "^2.2.0"
|
||||
|
||||
unplugin-utils@^0.2.4:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-utils/-/unplugin-utils-0.2.4.tgz#56e4029a6906645a10644f8befc404b06d5d24d0"
|
||||
integrity sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==
|
||||
dependencies:
|
||||
pathe "^2.0.2"
|
||||
picomatch "^4.0.2"
|
||||
|
||||
unplugin-vue-components@^28.4.1:
|
||||
version "28.4.1"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-vue-components/-/unplugin-vue-components-28.4.1.tgz#9d6d9555bbe98ea41d673b886e1e638f36200501"
|
||||
integrity sha512-niGSc0vJD9ueAnsqcfAldmtpkppZ09B6p2G1dL7X5S8KPdgbk1P+txPwaaDCe7N+eZh2VG1aAypLXkuJs3OSUg==
|
||||
dependencies:
|
||||
chokidar "^3.6.0"
|
||||
debug "^4.4.0"
|
||||
local-pkg "^1.0.0"
|
||||
magic-string "^0.30.17"
|
||||
mlly "^1.7.4"
|
||||
tinyglobby "^0.2.12"
|
||||
unplugin "^2.2.0"
|
||||
unplugin-utils "^0.2.4"
|
||||
|
||||
unplugin@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-2.2.0.tgz#2659dee5c6b3de9b7ea671228c18263886ae58b6"
|
||||
integrity sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==
|
||||
dependencies:
|
||||
acorn "^8.14.0"
|
||||
webpack-virtual-modules "^0.6.2"
|
||||
|
||||
upath@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||
@ -4367,6 +4711,11 @@ webidl-conversions@^4.0.2:
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
|
||||
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
|
||||
|
||||
webpack-virtual-modules@^0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
|
||||
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
|
||||
|
||||
whatwg-url@^7.0.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user