diff --git a/docs/quick-start/_category_.json b/docs/quick-start/_category_.json
new file mode 100644
index 00000000..f4baf7e6
--- /dev/null
+++ b/docs/quick-start/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "Quick Start",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "title": "Quick Start",
+ "description": "A quick start video for SQL Account"
+ }
+}
\ No newline at end of file
diff --git a/docs/quick-start/customer/_category_.json b/docs/quick-start/customer/_category_.json
new file mode 100644
index 00000000..69f0462a
--- /dev/null
+++ b/docs/quick-start/customer/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Customer",
+ "position": 3,
+ "link": {
+ "type": "generated-index",
+ "description": "Learn on Customer in SQL Account"
+ }
+}
diff --git a/docs/quick-start/customer/customer-payment/_category_.json b/docs/quick-start/customer/customer-payment/_category_.json
new file mode 100644
index 00000000..d08c031f
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Customer Payment",
+ "position": 2,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/customer/customer-payment/intro"
+ }
+}
diff --git a/docs/quick-start/customer/customer-payment/advanced/_category_.json b/docs/quick-start/customer/customer-payment/advanced/_category_.json
new file mode 100644
index 00000000..4e86909c
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/customer/advanced"
+ }
+}
diff --git a/docs/quick-start/customer/customer-payment/basic/_category_.json b/docs/quick-start/customer/customer-payment/basic/_category_.json
new file mode 100644
index 00000000..b64b4e9c
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/customer/basic"
+ }
+}
diff --git a/docs/quick-start/customer/customer-payment/basic/customer-payment-in-foreign.md b/docs/quick-start/customer/customer-payment/basic/customer-payment-in-foreign.md
new file mode 100644
index 00000000..ede0da2e
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/basic/customer-payment-in-foreign.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 2
+title: Create Customer Payment In Foreign Currency
+hide_title: true
+description: How to process customer payment in foreign currency in SQL Accounting
+slug: /quick-start/customer/create-customer-payment-in-foreign-currency
+tags: ["Customer"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/customer/customer-payment/basic/customer-payment-in-local.md b/docs/quick-start/customer/customer-payment/basic/customer-payment-in-local.md
new file mode 100644
index 00000000..f063f860
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/basic/customer-payment-in-local.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 1
+title: Create Customer Payment In Local Currency
+hide_title: true
+description: How to process customer payment in local currency in SQL Accounting
+slug: /quick-start/customer/create-customer-payment-in-local-currency
+tags: ["Customer"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/customer/customer-payment/intro.md b/docs/quick-start/customer/customer-payment/intro.md
new file mode 100644
index 00000000..05cfa5de
--- /dev/null
+++ b/docs/quick-start/customer/customer-payment/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/customer/customer-payment
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/gl/_category_.json b/docs/quick-start/gl/_category_.json
new file mode 100644
index 00000000..5fb03c50
--- /dev/null
+++ b/docs/quick-start/gl/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "GL",
+ "position": 4,
+ "link": {
+ "type": "generated-index",
+ "description": "Learn on General Ledger in SQL Account"
+ }
+}
diff --git a/docs/quick-start/gl/cash-book-entry/_category_.json b/docs/quick-start/gl/cash-book-entry/_category_.json
new file mode 100644
index 00000000..32fc1c49
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Cash Book Entry",
+ "position": 2,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/gl/cash-book-entry/intro"
+ }
+}
diff --git a/docs/quick-start/gl/cash-book-entry/advanced/_category_.json b/docs/quick-start/gl/cash-book-entry/advanced/_category_.json
new file mode 100644
index 00000000..6e716263
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/gl/advanced"
+ }
+}
diff --git a/docs/quick-start/gl/cash-book-entry/basic/_category_.json b/docs/quick-start/gl/cash-book-entry/basic/_category_.json
new file mode 100644
index 00000000..a147695d
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/gl/basic"
+ }
+}
diff --git a/docs/quick-start/gl/cash-book-entry/basic/official-receipt.md b/docs/quick-start/gl/cash-book-entry/basic/official-receipt.md
new file mode 100644
index 00000000..ac794f4c
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/basic/official-receipt.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 2
+title: Create Official Receipt
+hide_title: true
+description: How to create official receipt in SQL Accounting
+slug: /quick-start/gl/create-cash-book-entry-official-receipt
+tags: ["GL"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/gl/cash-book-entry/basic/payment-voucher.md b/docs/quick-start/gl/cash-book-entry/basic/payment-voucher.md
new file mode 100644
index 00000000..edc6c5fe
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/basic/payment-voucher.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 1
+title: Create Payment Voucher
+hide_title: true
+description: How to create payment voucher in SQL Accounting
+slug: /quick-start/gl/create-cash-book-entry-payment-voucher
+tags: ["GL"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/gl/cash-book-entry/intro.md b/docs/quick-start/gl/cash-book-entry/intro.md
new file mode 100644
index 00000000..9addf81c
--- /dev/null
+++ b/docs/quick-start/gl/cash-book-entry/intro.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/gl/cash-book-entry
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
+
diff --git a/docs/quick-start/gl/journal-entry/_category_.json b/docs/quick-start/gl/journal-entry/_category_.json
new file mode 100644
index 00000000..a63b00fb
--- /dev/null
+++ b/docs/quick-start/gl/journal-entry/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Journal Entry",
+ "position": 3,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/gl/journal-entry/intro"
+ }
+}
diff --git a/docs/quick-start/gl/journal-entry/advanced/_category_.json b/docs/quick-start/gl/journal-entry/advanced/_category_.json
new file mode 100644
index 00000000..6e716263
--- /dev/null
+++ b/docs/quick-start/gl/journal-entry/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/gl/advanced"
+ }
+}
diff --git a/docs/quick-start/gl/journal-entry/basic/_category_.json b/docs/quick-start/gl/journal-entry/basic/_category_.json
new file mode 100644
index 00000000..a147695d
--- /dev/null
+++ b/docs/quick-start/gl/journal-entry/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/gl/basic"
+ }
+}
diff --git a/docs/quick-start/gl/journal-entry/basic/journal-entry.md b/docs/quick-start/gl/journal-entry/basic/journal-entry.md
new file mode 100644
index 00000000..2ba922df
--- /dev/null
+++ b/docs/quick-start/gl/journal-entry/basic/journal-entry.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 3
+title: Create Journal Entry
+hide_title: true
+description: How to create journal entry in SQL Accounting
+slug: /quick-start/gl/create-journal-entry
+tags: ["GL"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/gl/journal-entry/intro.md b/docs/quick-start/gl/journal-entry/intro.md
new file mode 100644
index 00000000..daff5451
--- /dev/null
+++ b/docs/quick-start/gl/journal-entry/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/gl/journal-entry
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
diff --git a/docs/quick-start/purchase/_category_.json b/docs/quick-start/purchase/_category_.json
new file mode 100644
index 00000000..aa414221
--- /dev/null
+++ b/docs/quick-start/purchase/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "Learn on Purchase in SQL Account"
+ }
+}
diff --git a/docs/quick-start/purchase/cash-purchase/_category_.json b/docs/quick-start/purchase/cash-purchase/_category_.json
new file mode 100644
index 00000000..3086d9c2
--- /dev/null
+++ b/docs/quick-start/purchase/cash-purchase/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Cash Purchase",
+ "position": 5,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/cash-purchase/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/cash-purchase/advanced/_category_.json b/docs/quick-start/purchase/cash-purchase/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/cash-purchase/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/cash-purchase/basic/_category_.json b/docs/quick-start/purchase/cash-purchase/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/cash-purchase/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/cash-purchase/basic/create-cash-purchase.md b/docs/quick-start/purchase/cash-purchase/basic/create-cash-purchase.md
new file mode 100644
index 00000000..17787a10
--- /dev/null
+++ b/docs/quick-start/purchase/cash-purchase/basic/create-cash-purchase.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 5
+title: Create Cash Purchase
+hide_title: true
+description: How to create cash purchase in SQL Accounting
+slug: /quick-start/purchase/create-cash-purchase
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/cash-purchase/intro.md b/docs/quick-start/purchase/cash-purchase/intro.md
new file mode 100644
index 00000000..c5031a2e
--- /dev/null
+++ b/docs/quick-start/purchase/cash-purchase/intro.md
@@ -0,0 +1,15 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/cash-purchase
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
diff --git a/docs/quick-start/purchase/goods-received/_category_.json b/docs/quick-start/purchase/goods-received/_category_.json
new file mode 100644
index 00000000..edd99f74
--- /dev/null
+++ b/docs/quick-start/purchase/goods-received/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Goods Received",
+ "position": 3,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/goods-received/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/goods-received/advanced/_category_.json b/docs/quick-start/purchase/goods-received/advanced/_category_.json
new file mode 100644
index 00000000..bb057747
--- /dev/null
+++ b/docs/quick-start/purchase/goods-received/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/goods-received/basic/_category_.json b/docs/quick-start/purchase/goods-received/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/goods-received/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/goods-received/basic/create-goods-received.md b/docs/quick-start/purchase/goods-received/basic/create-goods-received.md
new file mode 100644
index 00000000..e6080691
--- /dev/null
+++ b/docs/quick-start/purchase/goods-received/basic/create-goods-received.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 3
+title: Create Goods Received
+hide_title: true
+description: How to create goods received in SQL Accounting
+slug: /quick-start/purchase/create-goods-received
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/goods-received/intro.md b/docs/quick-start/purchase/goods-received/intro.md
new file mode 100644
index 00000000..09a4cef8
--- /dev/null
+++ b/docs/quick-start/purchase/goods-received/intro.md
@@ -0,0 +1,15 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/goods-received
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-cancelled-note/_category_.json b/docs/quick-start/purchase/purchase-cancelled-note/_category_.json
new file mode 100644
index 00000000..591da62f
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-cancelled-note/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Cancelled Note",
+ "position": 8,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-cancelled-note/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-cancelled-note/advanced/_category_.json b/docs/quick-start/purchase/purchase-cancelled-note/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-cancelled-note/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-cancelled-note/basic/_category_.json b/docs/quick-start/purchase/purchase-cancelled-note/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-cancelled-note/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-cancelled-note/basic/create-purchase-cancelled-note.md b/docs/quick-start/purchase/purchase-cancelled-note/basic/create-purchase-cancelled-note.md
new file mode 100644
index 00000000..7663d0b4
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-cancelled-note/basic/create-purchase-cancelled-note.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 8
+title: Create Purchase Cancelled Note
+hide_title: true
+description: How to create purchae cancelled note in SQL Accounting
+slug: /quick-start/purchase/create-purchase-cancelled-note
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-cancelled-note/intro.md b/docs/quick-start/purchase/purchase-cancelled-note/intro.md
new file mode 100644
index 00000000..65b337ad
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-cancelled-note/intro.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-cancelled-note
+# id : purchase/purchase-cancelled-note/intro
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
diff --git a/docs/quick-start/purchase/purchase-debit-note/_category_.json b/docs/quick-start/purchase/purchase-debit-note/_category_.json
new file mode 100644
index 00000000..521e507d
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-debit-note/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Debit Note",
+ "position": 6,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-debit-note/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-debit-note/advanced/_category_.json b/docs/quick-start/purchase/purchase-debit-note/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-debit-note/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-debit-note/basic/_category_.json b/docs/quick-start/purchase/purchase-debit-note/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-debit-note/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-debit-note/basic/create-purchase-debit-note.md b/docs/quick-start/purchase/purchase-debit-note/basic/create-purchase-debit-note.md
new file mode 100644
index 00000000..49b553fc
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-debit-note/basic/create-purchase-debit-note.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 6
+title: Create Purchase Debit Note
+hide_title: true
+description: How to create purchase debit note in SQL Accounting
+slug: /quick-start/purchase/create-purchase-debit-note
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-debit-note/intro.md b/docs/quick-start/purchase/purchase-debit-note/intro.md
new file mode 100644
index 00000000..d30c6c2c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-debit-note/intro.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-debit-note
+# id : purchase/purchase-debit-note/intro
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
diff --git a/docs/quick-start/purchase/purchase-invoice/_category_.json b/docs/quick-start/purchase/purchase-invoice/_category_.json
new file mode 100644
index 00000000..cf3c8d33
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-invoice/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Invoice",
+ "position": 4,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-invoice/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-invoice/advanced/_category_.json b/docs/quick-start/purchase/purchase-invoice/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-invoice/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-invoice/basic/_category_.json b/docs/quick-start/purchase/purchase-invoice/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-invoice/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-invoice/basic/purchase-invoice.md b/docs/quick-start/purchase/purchase-invoice/basic/purchase-invoice.md
new file mode 100644
index 00000000..ab07b80a
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-invoice/basic/purchase-invoice.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 4
+title: Create Purchase Invoice
+hide_title: true
+description: How to create purchase invoice in SQL Accounting
+slug: /quick-start/purchase/create-purchase-invoice
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-invoice/intro.md b/docs/quick-start/purchase/purchase-invoice/intro.md
new file mode 100644
index 00000000..df193b45
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-invoice/intro.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-invoice
+# id : purchase/purchase-invoice/intro
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
diff --git a/docs/quick-start/purchase/purchase-order/_category_.json b/docs/quick-start/purchase/purchase-order/_category_.json
new file mode 100644
index 00000000..414dabed
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-order/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Order",
+ "position": 2,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-order/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-order/advanced/_category_.json b/docs/quick-start/purchase/purchase-order/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-order/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-order/basic/_category_.json b/docs/quick-start/purchase/purchase-order/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-order/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-order/basic/create-purchase-order.md b/docs/quick-start/purchase/purchase-order/basic/create-purchase-order.md
new file mode 100644
index 00000000..73d966b4
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-order/basic/create-purchase-order.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 2
+title: Create Purchase Order
+hide_title: true
+description: How to create purchase order in SQL Accounting
+slug: /quick-start/purchase/create-purchase-order
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-order/intro.md b/docs/quick-start/purchase/purchase-order/intro.md
new file mode 100644
index 00000000..194052a3
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-order/intro.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-order
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
diff --git a/docs/quick-start/purchase/purchase-request/_category_.json b/docs/quick-start/purchase/purchase-request/_category_.json
new file mode 100644
index 00000000..0e0449c4
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-request/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Request",
+ "position": 1,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-request/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-request/advanced/_category_.json b/docs/quick-start/purchase/purchase-request/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-request/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-request/basic/_category_.json b/docs/quick-start/purchase/purchase-request/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-request/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-request/basic/create-purchase-request.md b/docs/quick-start/purchase/purchase-request/basic/create-purchase-request.md
new file mode 100644
index 00000000..70fd86ec
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-request/basic/create-purchase-request.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 2
+title: Create Purchase Request
+hide_title: true
+description: How to create purchase request in SQL Accounting
+slug: /quick-start/purchase/create-purchase-request
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-request/intro.md b/docs/quick-start/purchase/purchase-request/intro.md
new file mode 100644
index 00000000..15f33588
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-request/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-request
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-returned/_category_.json b/docs/quick-start/purchase/purchase-returned/_category_.json
new file mode 100644
index 00000000..ce79e534
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-returned/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Purchase Returned",
+ "position": 7,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/purchase/purchase-returned/intro"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-returned/advanced/_category_.json b/docs/quick-start/purchase/purchase-returned/advanced/_category_.json
new file mode 100644
index 00000000..f915ee9c
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-returned/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/invoice/advanced"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-returned/basic/_category_.json b/docs/quick-start/purchase/purchase-returned/basic/_category_.json
new file mode 100644
index 00000000..41511f87
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-returned/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/invoice/basic"
+ }
+}
diff --git a/docs/quick-start/purchase/purchase-returned/basic/create-purchase-returned.md b/docs/quick-start/purchase/purchase-returned/basic/create-purchase-returned.md
new file mode 100644
index 00000000..49dbd0fd
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-returned/basic/create-purchase-returned.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 7
+title: Create Purchase Returned
+hide_title: true
+description: How to create purchase returned in SQL Accounting
+slug: /quick-start/purchase/create-purchase-returned
+tags: ["Purchase"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/purchase/purchase-returned/intro.md b/docs/quick-start/purchase/purchase-returned/intro.md
new file mode 100644
index 00000000..6f4ecb25
--- /dev/null
+++ b/docs/quick-start/purchase/purchase-returned/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/purchase/purchase-returned
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
diff --git a/docs/quick-start/sales/_category_.json b/docs/quick-start/sales/_category_.json
new file mode 100644
index 00000000..360ebd34
--- /dev/null
+++ b/docs/quick-start/sales/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "description": "Learn on Sales in SQL Account"
+ }
+}
diff --git a/docs/quick-start/sales/cash-sales/_category_.json b/docs/quick-start/sales/cash-sales/_category_.json
new file mode 100644
index 00000000..c6bd12c0
--- /dev/null
+++ b/docs/quick-start/sales/cash-sales/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Cash Sales",
+ "position": 5,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/cash-sales/intro"
+ }
+}
diff --git a/docs/quick-start/sales/cash-sales/advanced/_category_.json b/docs/quick-start/sales/cash-sales/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/cash-sales/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/cash-sales/basic/_category_.json b/docs/quick-start/sales/cash-sales/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/cash-sales/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/cash-sales/basic/create-cash-sales.md b/docs/quick-start/sales/cash-sales/basic/create-cash-sales.md
new file mode 100644
index 00000000..47f6d8c8
--- /dev/null
+++ b/docs/quick-start/sales/cash-sales/basic/create-cash-sales.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Cash Sales
+hide_title: true
+description: How to create cash sales in SQL Accounting
+slug: /quick-start/sales/create-cash-sales
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/cash-sales/intro.md b/docs/quick-start/sales/cash-sales/intro.md
new file mode 100644
index 00000000..4d10ea6a
--- /dev/null
+++ b/docs/quick-start/sales/cash-sales/intro.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/cash-sales
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-cancelled-note/_category_.json b/docs/quick-start/sales/sales-cancelled-note/_category_.json
new file mode 100644
index 00000000..4be3e813
--- /dev/null
+++ b/docs/quick-start/sales/sales-cancelled-note/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Cancelled Note",
+ "position": 8,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-cancelled-note/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-cancelled-note/advanced/_category_.json b/docs/quick-start/sales/sales-cancelled-note/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-cancelled-note/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-cancelled-note/basic/_category_.json b/docs/quick-start/sales/sales-cancelled-note/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-cancelled-note/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-cancelled-note/basic/create-sales-cancelled-note.md b/docs/quick-start/sales/sales-cancelled-note/basic/create-sales-cancelled-note.md
new file mode 100644
index 00000000..575b74a9
--- /dev/null
+++ b/docs/quick-start/sales/sales-cancelled-note/basic/create-sales-cancelled-note.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 8
+title: Create Sales Cancelled Note
+hide_title: true
+description: How to create sales cancelled note in SQL Accounting
+slug: /quick-start/sales/create-sales-cancelled-note
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-cancelled-note/intro.md b/docs/quick-start/sales/sales-cancelled-note/intro.md
new file mode 100644
index 00000000..98195516
--- /dev/null
+++ b/docs/quick-start/sales/sales-cancelled-note/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-cancelled-note
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-credit-note/_category_.json b/docs/quick-start/sales/sales-credit-note/_category_.json
new file mode 100644
index 00000000..44f9d7f0
--- /dev/null
+++ b/docs/quick-start/sales/sales-credit-note/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Credit Note",
+ "position": 7,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-credit-note/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-credit-note/advanced/_category_.json b/docs/quick-start/sales/sales-credit-note/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-credit-note/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-credit-note/basic/_category_.json b/docs/quick-start/sales/sales-credit-note/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-credit-note/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-credit-note/basic/create-sales-credit-note.md b/docs/quick-start/sales/sales-credit-note/basic/create-sales-credit-note.md
new file mode 100644
index 00000000..1c94b450
--- /dev/null
+++ b/docs/quick-start/sales/sales-credit-note/basic/create-sales-credit-note.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 2
+title: Create Sales Credit Note
+hide_title: true
+description: How to create sales credit note in SQL Accounting
+slug: /quick-start/sales/create-sales-credit-note
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-credit-note/intro.md b/docs/quick-start/sales/sales-credit-note/intro.md
new file mode 100644
index 00000000..bf053d4c
--- /dev/null
+++ b/docs/quick-start/sales/sales-credit-note/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-credit-note
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-debit-note/_category_.json b/docs/quick-start/sales/sales-debit-note/_category_.json
new file mode 100644
index 00000000..f560c4ed
--- /dev/null
+++ b/docs/quick-start/sales/sales-debit-note/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Debit Note",
+ "position": 6,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-debit-note/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-debit-note/advanced/_category_.json b/docs/quick-start/sales/sales-debit-note/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-debit-note/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-debit-note/basic/_category_.json b/docs/quick-start/sales/sales-debit-note/basic/_category_.json
new file mode 100644
index 00000000..296d6705
--- /dev/null
+++ b/docs/quick-start/sales/sales-debit-note/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-debit-note/basic/create-sales-debit-note.md b/docs/quick-start/sales/sales-debit-note/basic/create-sales-debit-note.md
new file mode 100644
index 00000000..9310902d
--- /dev/null
+++ b/docs/quick-start/sales/sales-debit-note/basic/create-sales-debit-note.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Sales Debit Note
+hide_title: true
+description: How to create sales debit note in SQL Accounting
+slug: /quick-start/sales/create-sales-debit-note
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-debit-note/intro.md b/docs/quick-start/sales/sales-debit-note/intro.md
new file mode 100644
index 00000000..5db644e3
--- /dev/null
+++ b/docs/quick-start/sales/sales-debit-note/intro.md
@@ -0,0 +1,16 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-debit-note
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
+
diff --git a/docs/quick-start/sales/sales-delivery-order/_category_.json b/docs/quick-start/sales/sales-delivery-order/_category_.json
new file mode 100644
index 00000000..3023cbff
--- /dev/null
+++ b/docs/quick-start/sales/sales-delivery-order/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Delivery Order",
+ "position": 3,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-delivery-order/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-delivery-order/advanced/_category_.json b/docs/quick-start/sales/sales-delivery-order/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-delivery-order/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-delivery-order/basic/_category_.json b/docs/quick-start/sales/sales-delivery-order/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-delivery-order/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-delivery-order/basic/create-sales-delivery-order.md b/docs/quick-start/sales/sales-delivery-order/basic/create-sales-delivery-order.md
new file mode 100644
index 00000000..6d4db1cd
--- /dev/null
+++ b/docs/quick-start/sales/sales-delivery-order/basic/create-sales-delivery-order.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Sales Delivery Order
+hide_title: true
+description: How to create sales delivery order in SQL Accounting
+slug: /quick-start/sales/create-sales-delivery-order
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-delivery-order/intro.md b/docs/quick-start/sales/sales-delivery-order/intro.md
new file mode 100644
index 00000000..1bb496f9
--- /dev/null
+++ b/docs/quick-start/sales/sales-delivery-order/intro.md
@@ -0,0 +1,15 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-delivery-order
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-invoice/_category_.json b/docs/quick-start/sales/sales-invoice/_category_.json
new file mode 100644
index 00000000..759cf1f1
--- /dev/null
+++ b/docs/quick-start/sales/sales-invoice/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Invoice",
+ "position": 4,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-invoice/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-invoice/advanced/_category_.json b/docs/quick-start/sales/sales-invoice/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-invoice/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-invoice/basic/_category_.json b/docs/quick-start/sales/sales-invoice/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-invoice/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-invoice/basic/create-sales-invoice.md b/docs/quick-start/sales/sales-invoice/basic/create-sales-invoice.md
new file mode 100644
index 00000000..12a00051
--- /dev/null
+++ b/docs/quick-start/sales/sales-invoice/basic/create-sales-invoice.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Sales Invoice
+hide_title: true
+description: How to create sales invoice in SQL Accounting
+slug: /quick-start/sales/create-sales-invoice
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-invoice/intro.md b/docs/quick-start/sales/sales-invoice/intro.md
new file mode 100644
index 00000000..acad148c
--- /dev/null
+++ b/docs/quick-start/sales/sales-invoice/intro.md
@@ -0,0 +1,15 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-invoice
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-order/_category_.json b/docs/quick-start/sales/sales-order/_category_.json
new file mode 100644
index 00000000..5176deac
--- /dev/null
+++ b/docs/quick-start/sales/sales-order/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Order",
+ "position": 2,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-order/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-order/advanced/_category_.json b/docs/quick-start/sales/sales-order/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-order/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-order/basic/_category_.json b/docs/quick-start/sales/sales-order/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-order/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-order/basic/create-sales-order.md b/docs/quick-start/sales/sales-order/basic/create-sales-order.md
new file mode 100644
index 00000000..0cf95563
--- /dev/null
+++ b/docs/quick-start/sales/sales-order/basic/create-sales-order.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Sales Order
+hide_title: true
+description: How to create sales order in SQL Accounting
+slug: /quick-start/sales/create-sales-order
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-order/intro.md b/docs/quick-start/sales/sales-order/intro.md
new file mode 100644
index 00000000..61da3660
--- /dev/null
+++ b/docs/quick-start/sales/sales-order/intro.md
@@ -0,0 +1,15 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-order
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
+
diff --git a/docs/quick-start/sales/sales-quotation/_category_.json b/docs/quick-start/sales/sales-quotation/_category_.json
new file mode 100644
index 00000000..72236547
--- /dev/null
+++ b/docs/quick-start/sales/sales-quotation/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Sales Quotation",
+ "position": 1,
+ "link": {
+ "type": "doc",
+ "id": "quick-start/sales/sales-quotation/intro"
+ }
+}
diff --git a/docs/quick-start/sales/sales-quotation/advanced/_category_.json b/docs/quick-start/sales/sales-quotation/advanced/_category_.json
new file mode 100644
index 00000000..4da93d5a
--- /dev/null
+++ b/docs/quick-start/sales/sales-quotation/advanced/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Advanced",
+ "position": 3,
+ "link": {
+ "slug": "/sales/advanced"
+ }
+}
diff --git a/docs/quick-start/sales/sales-quotation/basic/_category_.json b/docs/quick-start/sales/sales-quotation/basic/_category_.json
new file mode 100644
index 00000000..9512ef7d
--- /dev/null
+++ b/docs/quick-start/sales/sales-quotation/basic/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Data Entry",
+ "position": 2,
+ "link": {
+ "slug": "/sales/basic"
+ }
+}
diff --git a/docs/quick-start/sales/sales-quotation/basic/create-sales-quotation.md b/docs/quick-start/sales/sales-quotation/basic/create-sales-quotation.md
new file mode 100644
index 00000000..516eac60
--- /dev/null
+++ b/docs/quick-start/sales/sales-quotation/basic/create-sales-quotation.md
@@ -0,0 +1,18 @@
+---
+sidebar_position: 2
+title: Create Sales Quotation
+hide_title: true
+description: How to create quotation in SQL Accounting
+slug: /quick-start/sales/create-sales-quotation
+tags: ["Sales"]
+---
+
+import { YtLayout } from '@site/src/yt-layout';
+
+
+
+
\ No newline at end of file
diff --git a/docs/quick-start/sales/sales-quotation/intro.md b/docs/quick-start/sales/sales-quotation/intro.md
new file mode 100644
index 00000000..b646c1a2
--- /dev/null
+++ b/docs/quick-start/sales/sales-quotation/intro.md
@@ -0,0 +1,14 @@
+---
+sidebar_position: 1
+title: Table of contents
+hide_title: true
+slug: /quick-start/sales/sales-quotation
+---
+
+import {TOC} from '@site/src/toc.js';
+
+
diff --git a/docusaurus.config.js b/docusaurus.config.js
index fe7f734d..a4487bea 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -45,7 +45,6 @@ const config = {
}),
],
],
-
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
diff --git a/package-lock.json b/package-lock.json
index 3d9b5670..27427b05 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,8 +16,12 @@
"clsx": "^2.0.0",
"plugin-image-zoom": "github:flexanalytics/plugin-image-zoom",
"prism-react-renderer": "^2.3.0",
+ "qrcode.react": "^4.2.0",
"react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react-dom": "^18.0.0",
+ "react-icons": "^5.4.0",
+ "video.js": "^8.21.0",
+ "videojs-youtube": "^3.0.1"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.1.0",
@@ -4363,6 +4367,54 @@
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
+ "node_modules/@videojs/http-streaming": {
+ "version": "3.16.2",
+ "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.16.2.tgz",
+ "integrity": "sha512-fvt4ko7FknxiT9FnjyNQt6q2px+awrkM+Orv7IB/4gldvj94u4fowGfmNHynnvNTPgPkdxHklGmFLGfclYw8HA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@videojs/vhs-utils": "^4.1.1",
+ "aes-decrypter": "^4.0.2",
+ "global": "^4.4.0",
+ "m3u8-parser": "^7.2.0",
+ "mpd-parser": "^1.3.1",
+ "mux.js": "7.1.0",
+ "video.js": "^7 || ^8"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=5"
+ },
+ "peerDependencies": {
+ "video.js": "^8.19.0"
+ }
+ },
+ "node_modules/@videojs/vhs-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
+ "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "global": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=5"
+ }
+ },
+ "node_modules/@videojs/xhr": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@videojs/xhr/-/xhr-2.7.0.tgz",
+ "integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "global": "~4.4.0",
+ "is-function": "^1.0.1"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.11.6",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
@@ -4494,6 +4546,15 @@
"@xtuc/long": "4.2.2"
}
},
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.10",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+ "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -4578,6 +4639,18 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/aes-decrypter": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.2.tgz",
+ "integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@videojs/vhs-utils": "^4.1.1",
+ "global": "^4.4.0",
+ "pkcs7": "^1.0.4"
+ }
+ },
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -4878,6 +4951,24 @@
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/babel-runtime": {
+ "version": "5.8.38",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz",
+ "integrity": "sha512-KpgoA8VE/pMmNCrnEeeXqFG24TIH11Z3ZaimIhJWsin8EbfZy3WzFKUTIan10ZIDgRVvi9EkLbruJElJC9dRlg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "core-js": "^1.0.0"
+ }
+ },
+ "node_modules/babel-runtime/node_modules/core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/bail": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
@@ -6309,6 +6400,11 @@
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -7340,6 +7436,16 @@
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
},
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "license": "MIT",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
"node_modules/global-dirs": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
@@ -8332,6 +8438,12 @@
"node": ">=8"
}
},
+ "node_modules/is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==",
+ "license": "MIT"
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -8822,6 +8934,17 @@
"resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz",
"integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA=="
},
+ "node_modules/m3u8-parser": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
+ "integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@videojs/vhs-utils": "^4.1.1",
+ "global": "^4.4.0"
+ }
+ },
"node_modules/mark.js": {
"version": "8.11.1",
"resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
@@ -11012,6 +11135,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
"node_modules/mini-css-extract-plugin": {
"version": "2.7.7",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz",
@@ -11054,6 +11185,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/mpd-parser": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-1.3.1.tgz",
+ "integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@videojs/vhs-utils": "^4.0.0",
+ "@xmldom/xmldom": "^0.8.3",
+ "global": "^4.4.0"
+ },
+ "bin": {
+ "mpd-to-m3u8-json": "bin/parse.js"
+ }
+ },
"node_modules/mrmime": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
@@ -11079,6 +11225,23 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/mux.js": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.1.0.tgz",
+ "integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.11.2",
+ "global": "^4.4.0"
+ },
+ "bin": {
+ "muxjs-transmux": "bin/transmux.js"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=5"
+ }
+ },
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -11579,6 +11742,18 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pkcs7": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz",
+ "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5"
+ },
+ "bin": {
+ "pkcs7": "bin/cli.js"
+ }
+ },
"node_modules/pkg-dir": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
@@ -12296,6 +12471,15 @@
"node": ">=6"
}
},
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -12376,6 +12560,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/qrcode.react": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz",
+ "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
@@ -12655,6 +12848,25 @@
"react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-icon": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz",
+ "integrity": "sha512-VzSlpBHnLanVw79mOxyq98hWDi6DlxK9qPiZ1bAK6bLurMBCaxO/jjyYUrRx9+JGLc/NbnwOmyE/W5Qglbb2QA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "babel-runtime": "^5.3.3",
+ "react": ">=0.12.0"
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz",
+ "integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -14848,6 +15060,69 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/video.js": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.21.0.tgz",
+ "integrity": "sha512-zcwerRb257QAuWfi8NH9yEX7vrGKFthjfcONmOQ4lxFRpDAbAi+u5LAjCjMWqhJda6zEmxkgdDpOMW3Y21QpXA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@videojs/http-streaming": "^3.16.2",
+ "@videojs/vhs-utils": "^4.1.1",
+ "@videojs/xhr": "2.7.0",
+ "aes-decrypter": "^4.0.2",
+ "global": "4.4.0",
+ "m3u8-parser": "^7.2.0",
+ "mpd-parser": "^1.3.1",
+ "mux.js": "^7.0.1",
+ "videojs-contrib-quality-levels": "4.1.0",
+ "videojs-font": "4.2.0",
+ "videojs-vtt.js": "0.15.5"
+ }
+ },
+ "node_modules/videojs-contrib-quality-levels": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz",
+ "integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "global": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=16",
+ "npm": ">=8"
+ },
+ "peerDependencies": {
+ "video.js": "^8"
+ }
+ },
+ "node_modules/videojs-font": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-4.2.0.tgz",
+ "integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/videojs-vtt.js": {
+ "version": "0.15.5",
+ "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz",
+ "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "global": "^4.3.1"
+ }
+ },
+ "node_modules/videojs-youtube": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/videojs-youtube/-/videojs-youtube-3.0.1.tgz",
+ "integrity": "sha512-0gKgag7Zno/dDwIdk+h48ODKDulR4IW62RxGE81PrMwi0OX/wUcKO6m1j+DFYI+7qjtWMZTKnbtQoHGxvUrFQg==",
+ "license": "MIT",
+ "dependencies": {
+ "video.js": "5.x || 6.x || 7.x || 8.x"
+ },
+ "peerDependencies": {
+ "video.js": "5.x || 6.x || 7.x || 8.x"
+ }
+ },
"node_modules/watchpack": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
diff --git a/package.json b/package.json
index 395b85f0..fd5744e8 100644
--- a/package.json
+++ b/package.json
@@ -22,8 +22,12 @@
"clsx": "^2.0.0",
"plugin-image-zoom": "github:flexanalytics/plugin-image-zoom",
"prism-react-renderer": "^2.3.0",
+ "qrcode.react": "^4.2.0",
"react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react-dom": "^18.0.0",
+ "react-icons": "^5.4.0",
+ "video.js": "^8.21.0",
+ "videojs-youtube": "^3.0.1"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.1.0",
diff --git a/src/qrcode.js b/src/qrcode.js
new file mode 100644
index 00000000..4fd047d1
--- /dev/null
+++ b/src/qrcode.js
@@ -0,0 +1,56 @@
+import React, { useState } from 'react';
+import { QRCodeCanvas } from 'qrcode.react';
+import { ImYoutube } from "react-icons/im";
+import "@site/static/css/yt-player.css"
+
+export const QRCodeGenerator = ({url}) => {
+ const [showQR, setShowQR] = useState(false);
+
+ const closePreview = () => setShowQR(false);
+
+ return (
+
+
+
+ {/* Full-screen preview modal */}
+ {showQR && (
+
+
+ Scan To Watch Video On Your Phone
+
+
+
+
+ )}
+
+ );
+};
diff --git a/src/toc.js b/src/toc.js
index a0cfe0d4..1492f335 100644
--- a/src/toc.js
+++ b/src/toc.js
@@ -8,14 +8,23 @@ const containerStyle = {
paddingRight: "1rem",
marginLeft: "auto",
marginRight: "auto",
+ display: "flex",
};
-const gridStyle = {
- display: "grid",
- gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
+const singleSectionStyle = {
+ width: "100%",
+ display: "flex",
+ flexDirection: "column",
gap: "1rem",
};
+const twoSectionStyle = {
+ flex: 1,
+ display: "flex",
+ flexDirection: "column",
+ gap: "1rem",
+};
+
const headerStyle = {
fontWeight: "bold",
fontSize: "1.5rem",
@@ -23,26 +32,40 @@ const headerStyle = {
marginRight: "auto",
};
-const Card = ({text, link}) => {
- return ({text});
+const Card = ({ text, link }) => {
+ return ({text});
}
-export const TOC = ({dataEntryList, advancedList}) => {
+export const TOC = ({ dataEntryList = [], advancedList = [] }) => {
+
+ const isSingle = dataEntryList.length === 0 || advancedList.length === 0;
+
return (
-
- {/* Headers */}
- 📘 Data Entry
- 🚀 Advanced
-
- {/* Content Grid */}
- {dataEntryList.map((entry) => (
-
- ))}
- {advancedList.map((entry) => (
-
- ))}
-
+ {/* Data Entry Section */}
+ {dataEntryList.length > 0 && (
+
+ {/* Headers */}
+ 📘 Data Entry
+ {/* Content Grid */}
+ {dataEntryList.map((entry) => (
+
+ ))}
+
+ )}
+
+ {/* Advanced Section */}
+ {advancedList.length > 0 && (
+
+ {/* Headers */}
+ 🚀 Advanced
+ {/* Content Grid */}
+ {advancedList.map((entry) => (
+
+ ))}
+
+ )}
+
);
};
diff --git a/src/yt-layout.js b/src/yt-layout.js
new file mode 100644
index 00000000..b025f65c
--- /dev/null
+++ b/src/yt-layout.js
@@ -0,0 +1,16 @@
+import React from "react";
+import { QRCodeGenerator } from "@site/src/qrcode.js";
+import { VideoPlayer } from "@site/src/yt-player.js";
+
+export const YtLayout = ({ url, videoId, title }) => {
+
+ return (
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/src/yt-player.js b/src/yt-player.js
new file mode 100644
index 00000000..520f9608
--- /dev/null
+++ b/src/yt-player.js
@@ -0,0 +1,56 @@
+import React, { useEffect, useRef } from 'react';
+import videojs from 'video.js';
+import 'video.js/dist/video-js.css';
+import 'videojs-youtube';
+import "@site/static/css/yt-player.css"
+
+export const VideoPlayer = ({ videoId, title }) => {
+ const videoNode = useRef(null);
+ const player = useRef(null);
+
+ useEffect(() => {
+ if (videoNode.current) {
+ player.current = videojs(videoNode.current, {
+ techOrder: ['youtube'],
+ controls: true,
+ autoplay: true,
+ preload: 'auto',
+ muted: true,
+ sources: [
+ {
+ src: `https://www.youtube.com/embed/${videoId}?autoplay=1`,
+ type: 'video/youtube',
+ },
+ ],
+ youtube: {
+ rel: 0, // Disables related videos at the end
+ iv_load_policy: 3, // Hides video annotations
+ },
+ });
+
+ player.current.ready(() => {
+ const iframe = player.current.el().querySelector('iframe');
+ if (iframe) {
+ iframe.style.pointerEvents = 'none';
+ }
+ });
+
+ return () => {
+ if (player.current) {
+ player.current.dispose();
+ }
+ };
+ }
+ }, [videoId]);
+
+ return (
+
+
+
+ );
+};
diff --git a/static/css/custom.css b/static/css/custom.css
index 5e7b7b0b..e09c3e98 100644
--- a/static/css/custom.css
+++ b/static/css/custom.css
@@ -1,5 +1,5 @@
/* replace here for the image size */
img {
- max-width: 100%;
- height: auto;
- }
\ No newline at end of file
+ max-width: 100%;
+ height: auto;
+}
diff --git a/static/css/yt-player.css b/static/css/yt-player.css
new file mode 100644
index 00000000..80cb4b06
--- /dev/null
+++ b/static/css/yt-player.css
@@ -0,0 +1,67 @@
+.video-js {
+ height: 100%;
+ width: 100%;
+ aspect-ratio: 16/9;
+ pointer-events: all;
+}
+
+:root {
+ .qr-button {
+ background-color: transparent;
+ /* YouTube's red */
+ padding: 10px 20px;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: 15px;
+ font-weight: bold;
+ color: #ff0033;
+ transition: background-color 0.3s ease, transform 0.2s ease;
+ }
+
+ .qr-button:hover {
+ background-color: #ff0033;
+ /* Darker shade for hover effect */
+ transform: scale(1.05);
+ color: white;
+ }
+
+ .qr-button:active {
+ background-color: #cc0022;
+ /* Even darker shade for active state */
+ transform: scale(0.95);
+ color: white;
+ }
+}
+
+[data-theme="dark"] {
+ .qr-button {
+ background-color: transparent;
+ /* YouTube's red */
+ padding: 10px 20px;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: 15px;
+ font-weight: bold;
+ color: whitesmoke;
+ transition: background-color 0.3s ease, transform 0.2s ease;
+ }
+
+ .qr-button:hover {
+ background-color: #ff0033;
+ /* Darker shade for hover effect */
+ transform: scale(1.05);
+ color: white;
+ }
+
+ .qr-button:active {
+ background-color: #cc0022;
+ /* Even darker shade for active state */
+ transform: scale(0.95);
+ color: white;
+ }
+}
+
\ No newline at end of file