@stacksjs/defaults 0.70.362 → 0.70.363
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/skills/stacks-browse/SKILL.md +2 -1
- package/ai/skills/stacks-browse/scripts/browse.ts +20 -2
- package/ai/skills/stacks-dashboard/SKILL.md +4 -0
- package/app/Actions/Dashboard/Models/ModelShowAction.ts +4 -1
- package/app/Actions/Dashboard/Models/model-write.ts +5 -0
- package/ide/vscode/package.json +1 -1
- package/package.json +1 -1
- package/resources/components/Buttons/Counter.stx +1 -1
- package/resources/components/Buttons/ToggleDark.stx +1 -1
- package/resources/components/Dashboard/App/RequestDetailsDialog.stx +42 -0
- package/resources/components/Dashboard/App/RequestsOverview.stx +1 -21
- package/resources/components/Dashboard/Auth/AccessTokenCreateDialog.stx +155 -0
- package/resources/components/Dashboard/Auth/AccessTokens.stx +41 -129
- package/resources/components/Dashboard/Ci/CiDashboard.stx +1 -157
- package/resources/components/Dashboard/Ci/CiRunHistoryDrawer.stx +127 -0
- package/resources/components/Dashboard/Commerce/CommerceCategoryDeleteDialog.stx +10 -8
- package/resources/components/Dashboard/Commerce/CommerceCategoryDetailsDialog.stx +22 -17
- package/resources/components/Dashboard/Commerce/CommerceCategoryDialog.stx +14 -13
- package/resources/components/Dashboard/Commerce/CommerceCouponDeleteDialog.stx +10 -7
- package/resources/components/Dashboard/Commerce/CommerceCouponDetailsDialog.stx +25 -19
- package/resources/components/Dashboard/Commerce/CommerceCouponDialog.stx +14 -11
- package/resources/components/Dashboard/Commerce/CommerceCustomerDeleteDialog.stx +10 -8
- package/resources/components/Dashboard/Commerce/CommerceCustomerDetailsDialog.stx +24 -16
- package/resources/components/Dashboard/Commerce/CommerceCustomerDialog.stx +14 -13
- package/resources/components/Dashboard/Commerce/CommerceGiftCardDeleteDialog.stx +10 -8
- package/resources/components/Dashboard/Commerce/CommerceGiftCardDetailsDialog.stx +16 -14
- package/resources/components/Dashboard/Commerce/CommerceGiftCardDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/CommerceManufacturerDeleteDialog.stx +14 -16
- package/resources/components/Dashboard/Commerce/CommerceManufacturerDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/CommerceOrderDeleteDialog.stx +10 -8
- package/resources/components/Dashboard/Commerce/CommerceOrderDetailsDialog.stx +15 -10
- package/resources/components/Dashboard/Commerce/CommerceOrderDialog.stx +14 -13
- package/resources/components/Dashboard/Commerce/CommercePosCheckoutDialog.stx +30 -25
- package/resources/components/Dashboard/Commerce/CommercePosReceiptDialog.stx +27 -20
- package/resources/components/Dashboard/Commerce/CommerceProductDeleteDialog.stx +14 -14
- package/resources/components/Dashboard/Commerce/CommerceProductDialog.stx +14 -13
- package/resources/components/Dashboard/Commerce/CommerceReviewDeleteDialog.stx +10 -18
- package/resources/components/Dashboard/Commerce/CommerceReviewEditDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/CommerceTaxDeleteDialog.stx +14 -14
- package/resources/components/Dashboard/Commerce/CommerceTaxDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/CommerceTaxesTable.stx +1 -1
- package/resources/components/Dashboard/Commerce/CommerceUnitDeleteDialog.stx +14 -17
- package/resources/components/Dashboard/Commerce/CommerceUnitDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/CommerceVariantDeleteDialog.stx +10 -8
- package/resources/components/Dashboard/Commerce/CommerceVariantDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/DriverDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/DriverDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/LicenseKeyDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/LicenseKeyDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/ShippingRateDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/ShippingRateDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/Delivery/ShippingZoneDeleteDialog.stx +11 -15
- package/resources/components/Dashboard/Commerce/Delivery/ShippingZoneDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/PaymentDetailsDialog.stx +16 -15
- package/resources/components/Dashboard/Commerce/PaymentRefundDialog.stx +16 -15
- package/resources/components/Dashboard/Commerce/PrintDeviceDeleteDialog.stx +10 -11
- package/resources/components/Dashboard/Commerce/PrintDeviceDetailsDialog.stx +16 -14
- package/resources/components/Dashboard/Commerce/PrintDeviceDialog.stx +17 -16
- package/resources/components/Dashboard/Commerce/PrintLogDeleteDialog.stx +10 -7
- package/resources/components/Dashboard/Commerce/PrintLogDetailsDialog.stx +13 -10
- package/resources/components/Dashboard/Commerce/ProductWaitlistDeleteDialog.stx +10 -18
- package/resources/components/Dashboard/Commerce/ProductWaitlistEntryDialog.stx +96 -105
- package/resources/components/Dashboard/Commerce/RestaurantWaitlistDeleteDialog.stx +10 -18
- package/resources/components/Dashboard/Commerce/RestaurantWaitlistEntryDialog.stx +92 -95
- package/resources/components/Dashboard/Content/AuthorEditorDialog.stx +94 -0
- package/resources/components/Dashboard/Content/AuthorsDashboard.stx +39 -31
- package/resources/components/Dashboard/Content/BlogDashboard.stx +87 -176
- package/resources/components/Dashboard/Content/BlogPostEditorDialog.stx +195 -0
- package/resources/components/Dashboard/Content/CommentsDashboard.stx +14 -4
- package/resources/components/Dashboard/Content/ContentTaxonomyDashboard.stx +40 -55
- package/resources/components/Dashboard/Content/CreateFolderDialog.stx +45 -0
- package/resources/components/Dashboard/Content/FileDetailsDrawer.stx +31 -0
- package/resources/components/Dashboard/Content/FileManagerDashboard.stx +47 -107
- package/resources/components/Dashboard/Content/FileUploadDialog.stx +89 -0
- package/resources/components/Dashboard/Content/PageEditorDialog.stx +93 -0
- package/resources/components/Dashboard/Content/PagesDashboard.stx +36 -26
- package/resources/components/Dashboard/Content/PostEditorDialog.stx +176 -0
- package/resources/components/Dashboard/Content/PostsDashboard.stx +40 -64
- package/resources/components/Dashboard/Content/SeoDashboard.stx +18 -84
- package/resources/components/Dashboard/Content/SeoEditorDialog.stx +108 -0
- package/resources/components/Dashboard/Content/TaxonomyEditorDialog.stx +106 -0
- package/resources/components/Dashboard/CreateRecordModal.stx +72 -83
- package/resources/components/Dashboard/Email/InboxMessageList.stx +1 -1
- package/resources/components/Dashboard/GlobalSearch.stx +3 -9
- package/resources/components/Dashboard/Infrastructure/CloudDetailsDialog.stx +2 -16
- package/resources/components/Dashboard/Infrastructure/DnsRecordDialog.stx +4 -16
- package/resources/components/Dashboard/Infrastructure/LogDetailsDialog.stx +4 -19
- package/resources/components/Dashboard/Infrastructure/MailboxDetailsDialog.stx +6 -16
- package/resources/components/Dashboard/Infrastructure/ServerInspectorDialog.stx +105 -0
- package/resources/components/Dashboard/Infrastructure/ServersDashboard.stx +5 -59
- package/resources/components/Dashboard/Jobs/JobHistory.stx +1 -11
- package/resources/components/Dashboard/Library/ComponentsDashboard.stx +11 -60
- package/resources/components/Dashboard/Library/FunctionsDashboard.stx +11 -15
- package/resources/components/Dashboard/Library/SourceScaffoldDialog.stx +95 -0
- package/resources/components/Dashboard/Management/AssignmentDrawer.stx +93 -0
- package/resources/components/Dashboard/Management/PermissionsDashboard.stx +47 -129
- package/resources/components/Dashboard/Marketing/CampaignDeliveryDialog.stx +5 -8
- package/resources/components/Dashboard/Marketing/CampaignDialog.stx +17 -17
- package/resources/components/Dashboard/Marketing/MarketingListDialog.stx +17 -17
- package/resources/components/Dashboard/Marketing/MarketingListsTable.stx +1 -1
- package/resources/components/Dashboard/Marketing/SocialPostDialog.stx +17 -16
- package/resources/components/Dashboard/Models/EditRecordModal.stx +81 -0
- package/resources/components/Dashboard/Models/ModelRecordActions.stx +30 -0
- package/resources/components/Dashboard/Models/ModelRecordsDashboard.stx +42 -94
- package/resources/components/Dashboard/Navbar.stx +5 -5
- package/resources/components/Dashboard/Notifications/NotificationDeliveryDialog.stx +40 -60
- package/resources/components/Dashboard/UI/Button.stx +4 -0
- package/resources/components/Dashboard/UI/ConfirmDialog.stx +4 -0
- package/resources/components/Dashboard/UI/Drawer.stx +114 -0
- package/resources/components/Dashboard/UI/Modal.stx +19 -12
- package/resources/components/Docs/Demo/ComboboxDemo.stx +4 -5
- package/resources/components/Docs/Demo/DropdownDemo.stx +12 -5
- package/resources/components/Docs/Demo/ListboxDemo.stx +14 -6
- package/resources/components/Docs/Demo/PopoverDemo.stx +10 -5
- package/resources/components/Docs/Demo/RadioGroupDemo.stx +14 -6
- package/resources/components/Docs/Demo/StepperDemo.stx +4 -5
- package/resources/components/Docs/TeamMember.stx +16 -9
- package/resources/components/Forum/ForumReplyForm.stx +7 -7
- package/resources/components/Forum/ForumSidebar.stx +10 -6
- package/resources/components/Marketing/Faqs.stx +5 -5
- package/resources/components/Marketing/Feature.stx +11 -6
- package/resources/components/Marketing/Layout.stx +12 -8
- package/resources/components/Marketing/Pricing.stx +11 -5
- package/resources/components/Marketing/PrimaryFeatures.stx +4 -5
- package/resources/components/Marketing/PrimaryFeatures2.stx +6 -5
- package/resources/components/Marketing/SecondaryFeatures.stx +10 -5
- package/resources/components/Marketing/Testimonials.stx +8 -5
- package/resources/views/index.stx +4 -4
- package/views/system-tray/index.stx +1 -1
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
interface DropdownMenuItem {
|
|
3
|
+
icon?: string
|
|
4
|
+
label?: string
|
|
5
|
+
variant?: string
|
|
6
|
+
/** A separator rather than a real entry — getMenuSections splits on these. */
|
|
7
|
+
divider?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
2
10
|
interface DropdownDemoProps {
|
|
3
|
-
menuItems?:
|
|
11
|
+
menuItems?: DropdownMenuItem[]
|
|
4
12
|
isOpen?: boolean
|
|
5
13
|
}
|
|
6
14
|
|
|
7
|
-
const { menuItems = [
|
|
8
|
-
|
|
9
|
-
{ icon: 'i-hugeicons-pencil-20-solid', label: 'Edit' },
|
|
15
|
+
const { menuItems = [
|
|
16
|
+
{ icon: 'i-hugeicons-pencil-20-solid', label: 'Edit' },
|
|
10
17
|
{ icon: 'i-hugeicons-document-duplicate-20-solid', label: 'Duplicate' },
|
|
11
18
|
{ divider: true },
|
|
12
19
|
{ icon: 'i-hugeicons-archive-box-20-solid', label: 'Archive' },
|
|
13
20
|
{ icon: 'i-hugeicons-arrow-path-20-solid', label: 'Move' },
|
|
14
21
|
{ divider: true },
|
|
15
22
|
{ icon: 'i-hugeicons-trash-20-solid', label: 'Delete', variant: 'danger' },
|
|
16
|
-
]
|
|
23
|
+
], isOpen = false } = defineProps<DropdownDemoProps>()
|
|
17
24
|
function getMenuSections(items) {
|
|
18
25
|
const sections = []
|
|
19
26
|
let currentSection = []
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
interface Person {
|
|
3
|
+
id: number
|
|
4
|
+
name: string
|
|
5
|
+
unavailable: boolean
|
|
6
|
+
}
|
|
7
|
+
|
|
2
8
|
interface ListboxDemoProps {
|
|
3
|
-
people?:
|
|
4
|
-
selectedPerson?:
|
|
9
|
+
people?: Person[]
|
|
10
|
+
selectedPerson?: Person
|
|
5
11
|
isOpen?: boolean
|
|
6
12
|
}
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
// `selectedPerson` defaults off `people`, which is legal here because
|
|
15
|
+
// destructuring binds left to right — `people` is in scope by the time the
|
|
16
|
+
// default for `selectedPerson` is evaluated.
|
|
17
|
+
const { people = [
|
|
18
|
+
{ id: 1, name: 'Chris Breuer', unavailable: false },
|
|
11
19
|
{ id: 2, name: 'Avery Hill', unavailable: false },
|
|
12
20
|
{ id: 3, name: 'Glenn Michael', unavailable: false },
|
|
13
21
|
{ id: 4, name: 'Michael Vincent', unavailable: true },
|
|
14
22
|
{ id: 5, name: 'Blake Ayer', unavailable: false },
|
|
15
|
-
]
|
|
23
|
+
], selectedPerson = people[0], isOpen = false } = defineProps<ListboxDemoProps>()
|
|
16
24
|
</script>
|
|
17
25
|
<div class="max-w-4xl">
|
|
18
26
|
<DocsPlayground>
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface PopoverDemoProps {
|
|
3
|
-
solutions?:
|
|
3
|
+
solutions?: Array<{
|
|
4
|
+
name: string
|
|
5
|
+
description: string
|
|
6
|
+
href: string
|
|
7
|
+
iconBg: string
|
|
8
|
+
iconStroke: string
|
|
9
|
+
}>
|
|
4
10
|
isOpen?: boolean
|
|
5
11
|
}
|
|
6
12
|
|
|
7
|
-
const { solutions = [
|
|
8
|
-
|
|
9
|
-
{
|
|
13
|
+
const { solutions = [
|
|
14
|
+
{
|
|
10
15
|
name: 'Insights',
|
|
11
16
|
description: 'Measure actions your users take',
|
|
12
17
|
href: '##',
|
|
@@ -27,7 +32,7 @@ const { solutions = [, isOpen = false } = defineProps<PopoverDemoProps>()
|
|
|
27
32
|
iconBg: '#FFEDD5',
|
|
28
33
|
iconStroke: '#FB923C',
|
|
29
34
|
},
|
|
30
|
-
]
|
|
35
|
+
], isOpen = false } = defineProps<PopoverDemoProps>()
|
|
31
36
|
</script>
|
|
32
37
|
<div class="max-w-4xl">
|
|
33
38
|
<DocsPlayground>
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
interface
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
interface Plan {
|
|
3
|
+
name: string
|
|
4
|
+
ram: string
|
|
5
|
+
cpus: string
|
|
6
|
+
disk: string
|
|
5
7
|
}
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
interface RadioGroupDemoProps {
|
|
10
|
+
plans?: Plan[]
|
|
11
|
+
selected?: Plan
|
|
12
|
+
}
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
// `selected` defaults off `plans`; destructuring binds left to right, so `plans`
|
|
15
|
+
// is already in scope when this default is evaluated.
|
|
16
|
+
const { plans = [
|
|
17
|
+
{ name: 'Startup', ram: '12GB', cpus: '6 CPUs', disk: '160 GB SSD disk' },
|
|
10
18
|
{ name: 'Business', ram: '16GB', cpus: '8 CPUs', disk: '512 GB SSD disk' },
|
|
11
19
|
{ name: 'Enterprise', ram: '32GB', cpus: '12 CPUs', disk: '1024 GB SSD disk' },
|
|
12
|
-
]
|
|
20
|
+
], selected = plans[0] } = defineProps<RadioGroupDemoProps>()
|
|
13
21
|
</script>
|
|
14
22
|
<div class="max-w-4xl">
|
|
15
23
|
<DocsPlayground>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface StepperDemoProps {
|
|
3
3
|
currentStep?: number
|
|
4
|
-
steps?: string
|
|
4
|
+
steps?: Array<{ title: string, description: string, icon: string }>
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
const { currentStep = 0, steps = [
|
|
8
|
-
|
|
9
|
-
{ title: 'Step 1', description: 'First step', icon: 'i-heroicons-check' },
|
|
7
|
+
const { currentStep = 0, steps = [
|
|
8
|
+
{ title: 'Step 1', description: 'First step', icon: 'i-heroicons-check' },
|
|
10
9
|
{ title: 'Step 2', description: 'Second step', icon: 'i-heroicons-check' },
|
|
11
10
|
{ title: 'Step 3', description: 'Third step', icon: 'i-heroicons-check' },
|
|
12
|
-
]
|
|
11
|
+
] } = defineProps<StepperDemoProps>()
|
|
13
12
|
|
|
14
13
|
function getStepContent(step) {
|
|
15
14
|
switch (step) {
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface TeamMemberProps {
|
|
3
|
-
data?:
|
|
3
|
+
data?: {
|
|
4
|
+
name: string
|
|
5
|
+
avatar: string
|
|
6
|
+
description: string
|
|
7
|
+
github: string
|
|
8
|
+
sponsors: boolean
|
|
9
|
+
functions: string[]
|
|
10
|
+
packages: string[]
|
|
11
|
+
}
|
|
4
12
|
}
|
|
5
13
|
|
|
6
|
-
const { data = {
|
|
7
|
-
|
|
8
|
-
name: '',
|
|
14
|
+
const { data = {
|
|
15
|
+
name: '',
|
|
9
16
|
avatar: '',
|
|
10
17
|
description: '',
|
|
11
18
|
github: '',
|
|
12
19
|
sponsors: false,
|
|
13
20
|
functions: [],
|
|
14
|
-
packages: []
|
|
15
|
-
}
|
|
21
|
+
packages: [],
|
|
22
|
+
} } = defineProps<TeamMemberProps>()
|
|
16
23
|
</script>
|
|
17
24
|
<div class="text-center">
|
|
18
25
|
<img
|
|
@@ -45,7 +52,7 @@ name: '',
|
|
|
45
52
|
href="https://github.com/sponsors/{{ data.github }}"
|
|
46
53
|
target="_blank"
|
|
47
54
|
rel="noopener noreferrer"
|
|
48
|
-
title="Sponsor {{ data.name }}"
|
|
55
|
+
x-tooltip="Sponsor {{ data.name }}" title="Sponsor {{ data.name }}"
|
|
49
56
|
aria-label="Sponsor {{ data.name }}"
|
|
50
57
|
></a>
|
|
51
58
|
@endif
|
|
@@ -54,7 +61,7 @@ name: '',
|
|
|
54
61
|
@if(data.functions.length > 0 || data.packages.length > 0)
|
|
55
62
|
<div class="grid gap-x-1 gap-y-2 grid-cols-[20px_1fr] items-start mb-2 mx-auto p-3 w-5/6 bg-gray-100 rounded">
|
|
56
63
|
@if(data.functions.length > 0)
|
|
57
|
-
<div class="ma op50 i-carbon:function-math" title="Functions"></div>
|
|
64
|
+
<div class="ma op50 i-carbon:function-math" x-tooltip="Functions" title="Functions"></div>
|
|
58
65
|
<div class="flex flex-row flex-wrap gap-2 text-left text-sm">
|
|
59
66
|
@foreach(data.functions as func)
|
|
60
67
|
<a href="/{{ func }}" target="_blank">
|
|
@@ -65,7 +72,7 @@ name: '',
|
|
|
65
72
|
@endif
|
|
66
73
|
|
|
67
74
|
@if(data.packages.length > 0)
|
|
68
|
-
<div class="i-carbon-cube ma op50" title="Packages"></div>
|
|
75
|
+
<div class="i-carbon-cube ma op50" x-tooltip="Packages" title="Packages"></div>
|
|
69
76
|
<div class="flex flex-row flex-wrap gap-2 text-left text-sm">
|
|
70
77
|
@foreach(data.packages as pkg)
|
|
71
78
|
<a href="/add-ons">
|
|
@@ -18,21 +18,21 @@ function canSubmit(content) {
|
|
|
18
18
|
<div class="p-4">
|
|
19
19
|
<div class="mb-4">
|
|
20
20
|
<div class="flex gap-2 mb-2">
|
|
21
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Bold" data-action="format" data-format="bold">B</button>
|
|
22
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Italic" data-action="format" data-format="italic">I</button>
|
|
23
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Link" data-action="format" data-format="link">
|
|
21
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Bold" title="Bold" data-action="format" data-format="bold">B</button>
|
|
22
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Italic" title="Italic" data-action="format" data-format="italic">I</button>
|
|
23
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Link" title="Link" data-action="format" data-format="link">
|
|
24
24
|
<span class="i-hugeicons-link"></span>
|
|
25
25
|
</button>
|
|
26
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Code" data-action="format" data-format="code">
|
|
26
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Code" title="Code" data-action="format" data-format="code">
|
|
27
27
|
<span class="i-hugeicons-code"></span>
|
|
28
28
|
</button>
|
|
29
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Image" data-action="format" data-format="image">
|
|
29
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Image" title="Image" data-action="format" data-format="image">
|
|
30
30
|
<span class="i-hugeicons-image"></span>
|
|
31
31
|
</button>
|
|
32
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="Quote" data-action="format" data-format="quote">
|
|
32
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="Quote" title="Quote" data-action="format" data-format="quote">
|
|
33
33
|
<span class="i-hugeicons-quote"></span>
|
|
34
34
|
</button>
|
|
35
|
-
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" title="List" data-action="format" data-format="list">
|
|
35
|
+
<button class="px-2 py-1 text-sm hover:bg-gray-100 border rounded" x-tooltip="List" title="List" data-action="format" data-format="list">
|
|
36
36
|
<span class="i-hugeicons-list"></span>
|
|
37
37
|
</button>
|
|
38
38
|
</div>
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface ForumSidebarProps {
|
|
3
|
-
stats?:
|
|
3
|
+
stats?: {
|
|
4
|
+
topics: number
|
|
5
|
+
posts: number
|
|
6
|
+
members: number
|
|
7
|
+
newestMember: string
|
|
8
|
+
}
|
|
4
9
|
popularTopics?: any[]
|
|
5
10
|
onlineUsers?: any[]
|
|
6
11
|
}
|
|
7
12
|
|
|
8
|
-
const { stats = {
|
|
9
|
-
|
|
10
|
-
topics: 0,
|
|
13
|
+
const { stats = {
|
|
14
|
+
topics: 0,
|
|
11
15
|
posts: 0,
|
|
12
16
|
members: 0,
|
|
13
|
-
newestMember: ''
|
|
14
|
-
}
|
|
17
|
+
newestMember: '',
|
|
18
|
+
}, popularTopics = [], onlineUsers = [] } = defineProps<ForumSidebarProps>()
|
|
15
19
|
</script>
|
|
16
20
|
<div class="space-y-6">
|
|
17
21
|
<!-- Search -->
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface FaqsProps {
|
|
3
3
|
backgroundImage?: string
|
|
4
|
-
|
|
4
|
+
/** One inner array per rendered column. */
|
|
5
|
+
faqs?: Array<Array<{ question: string, answer: string }>>
|
|
5
6
|
}
|
|
6
7
|
|
|
7
|
-
const { backgroundImage = '/images/background-faqs.jpg', faqs = [
|
|
8
|
-
|
|
9
|
-
[
|
|
8
|
+
const { backgroundImage = '/images/background-faqs.jpg', faqs = [
|
|
9
|
+
[
|
|
10
10
|
{
|
|
11
11
|
question: 'What is the goal of the Stacks framework?',
|
|
12
12
|
answer: 'The goal of the Stacks framework is to help you create and maintain frontends, backends, and clouds—without having to worry about the boilerplate. It is a rapid development framework, meeting all your full stack needs.',
|
|
@@ -48,7 +48,7 @@ const { backgroundImage = '/images/background-faqs.jpg', faqs = [ } = defineProp
|
|
|
48
48
|
answer: 'The roadmap for Stacks includes first-party supported stacks like Table, Calendar, Command Palette, Date Picker, File Manager, Image, Video, Audio, Identity, Digital Ownership, Payments, and Governance. More information can be found in the detailed roadmap.',
|
|
49
49
|
},
|
|
50
50
|
],
|
|
51
|
-
]
|
|
51
|
+
] } = defineProps<FaqsProps>()
|
|
52
52
|
</script>
|
|
53
53
|
<section
|
|
54
54
|
id="faq"
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface FeatureProps {
|
|
3
3
|
className?: string
|
|
4
|
-
feature?:
|
|
4
|
+
feature?: {
|
|
5
|
+
name: string
|
|
6
|
+
summary: string
|
|
7
|
+
description: string
|
|
8
|
+
image: string
|
|
9
|
+
icon: string
|
|
10
|
+
}
|
|
5
11
|
isActive?: boolean
|
|
6
12
|
}
|
|
7
13
|
|
|
8
|
-
const { className = '', feature = {
|
|
9
|
-
|
|
10
|
-
name: '',
|
|
14
|
+
const { className = '', feature = {
|
|
15
|
+
name: '',
|
|
11
16
|
summary: '',
|
|
12
17
|
description: '',
|
|
13
18
|
image: '',
|
|
14
|
-
icon: ''
|
|
15
|
-
}
|
|
19
|
+
icon: '',
|
|
20
|
+
}, isActive = false } = defineProps<FeatureProps>()
|
|
16
21
|
</script>
|
|
17
22
|
<div class="{{ className }} {{ !isActive ? 'opacity-75 hover:opacity-100' : '' }}">
|
|
18
23
|
<div class="w-9 rounded-lg {{ isActive ? 'bg-blue-600' : 'bg-slate-500' }}">
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
interface
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
interface FontConfig {
|
|
3
|
+
subsets: string[]
|
|
4
|
+
display: string
|
|
5
|
+
variable: string
|
|
5
6
|
}
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
interface LayoutProps {
|
|
9
|
+
inter?: FontConfig
|
|
10
|
+
lexend?: FontConfig
|
|
11
|
+
}
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
const { inter = {
|
|
14
|
+
subsets: ['latin'],
|
|
10
15
|
display: 'swap',
|
|
11
16
|
variable: '--font-inter',
|
|
12
|
-
}
|
|
13
|
-
|
|
17
|
+
}, lexend = {
|
|
14
18
|
subsets: ['latin'],
|
|
15
19
|
display: 'swap',
|
|
16
20
|
variable: '--font-lexend',
|
|
17
|
-
}
|
|
21
|
+
} } = defineProps<LayoutProps>()
|
|
18
22
|
</script>
|
|
19
23
|
<html
|
|
20
24
|
lang="en"
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface PricingProps {
|
|
3
|
-
plans?:
|
|
3
|
+
plans?: Array<{
|
|
4
|
+
name: string
|
|
5
|
+
price: string
|
|
6
|
+
description: string
|
|
7
|
+
href: string
|
|
8
|
+
features: string[]
|
|
9
|
+
featured: boolean
|
|
10
|
+
}>
|
|
4
11
|
}
|
|
5
12
|
|
|
6
|
-
const { plans = [
|
|
7
|
-
|
|
8
|
-
{
|
|
13
|
+
const { plans = [
|
|
14
|
+
{
|
|
9
15
|
name: 'Hobby (Early Bird Pricing)',
|
|
10
16
|
price: '$19',
|
|
11
17
|
description: 'Get a lifetime access with all upgrades included in the future.',
|
|
@@ -49,7 +55,7 @@ const { plans = [ } = defineProps<PricingProps>()
|
|
|
49
55
|
],
|
|
50
56
|
featured: false,
|
|
51
57
|
},
|
|
52
|
-
]
|
|
58
|
+
] } = defineProps<PricingProps>()
|
|
53
59
|
</script>
|
|
54
60
|
<section
|
|
55
61
|
id="pricing"
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface PrimaryFeaturesProps {
|
|
3
|
-
features?: string
|
|
3
|
+
features?: Array<{ title: string, description: string, image: string }>
|
|
4
4
|
selectedIndex?: number
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
const { features = [
|
|
8
|
-
|
|
9
|
-
{
|
|
7
|
+
const { features = [
|
|
8
|
+
{
|
|
10
9
|
title: 'Frontend',
|
|
11
10
|
description: 'Powered by a progressive UI Engine, building application interfaces has never been easier.',
|
|
12
11
|
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
@@ -26,7 +25,7 @@ const { features = [, selectedIndex = 0 } = defineProps<PrimaryFeaturesProps>()
|
|
|
26
25
|
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Tempora in cum blanditiis? Qui omnis unde.',
|
|
27
26
|
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
28
27
|
},
|
|
29
|
-
]
|
|
28
|
+
], selectedIndex = 0 } = defineProps<PrimaryFeaturesProps>()
|
|
30
29
|
</script>
|
|
31
30
|
<section id="features" aria-label="Features for running your books" class="overflow-hidden relative pb-28 pt-20 sm:py-32 bg-blue-600">
|
|
32
31
|
<Container class="relative">
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
interface PrimaryFeatures2Props {
|
|
3
3
|
backgroundImage?: string
|
|
4
4
|
screenshotPayroll?: string
|
|
5
|
-
features?: string
|
|
5
|
+
features?: Array<{ title: string, description: string, image: string }>
|
|
6
6
|
selectedIndex?: number
|
|
7
7
|
tabOrientation?: string
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
{
|
|
10
|
+
// `features` defaults reference `screenshotPayroll`, which is bound earlier in
|
|
11
|
+
// the same pattern — destructuring initializes left to right, so that is legal.
|
|
12
|
+
const { backgroundImage = '/images/screenshots/background-features.jpg', screenshotPayroll = '/images/screenshots/payroll.webp', features = [
|
|
13
|
+
{
|
|
13
14
|
title: 'Payroll',
|
|
14
15
|
description: "Keep track of everyone's salaries and whether or not they've been paid. Direct deposit not supported.",
|
|
15
16
|
image: screenshotPayroll,
|
|
@@ -29,7 +30,7 @@ const { backgroundImage = '/images/screenshots/background-features.jpg', screens
|
|
|
29
30
|
description: 'Easily export your data into an Excel spreadsheet where you can do whatever the hell you want with it.',
|
|
30
31
|
image: '',
|
|
31
32
|
},
|
|
32
|
-
]
|
|
33
|
+
], selectedIndex = 0, tabOrientation = 'vertical' } = defineProps<PrimaryFeatures2Props>()
|
|
33
34
|
</script>
|
|
34
35
|
<section
|
|
35
36
|
id="features"
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface SecondaryFeaturesProps {
|
|
3
|
-
features?:
|
|
3
|
+
features?: Array<{
|
|
4
|
+
name: string
|
|
5
|
+
summary: string
|
|
6
|
+
description: string
|
|
7
|
+
image: string
|
|
8
|
+
icon: string
|
|
9
|
+
}>
|
|
4
10
|
selectedIndex?: number
|
|
5
11
|
}
|
|
6
12
|
|
|
7
|
-
const { features = [
|
|
8
|
-
|
|
9
|
-
{
|
|
13
|
+
const { features = [
|
|
14
|
+
{
|
|
10
15
|
name: 'Dashboard',
|
|
11
16
|
summary: 'The UI to your application.',
|
|
12
17
|
description: 'Whether you are a developer or a client, The Dashboard visualizes your data. Easily extend your admin panel.',
|
|
@@ -27,7 +32,7 @@ const { features = [, selectedIndex = 0 } = defineProps<SecondaryFeaturesProps>(
|
|
|
27
32
|
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprofit-loss.2a2f85d5.png&w=1200&q=75',
|
|
28
33
|
icon: '',
|
|
29
34
|
},
|
|
30
|
-
]
|
|
35
|
+
], selectedIndex = 0 } = defineProps<SecondaryFeaturesProps>()
|
|
31
36
|
</script>
|
|
32
37
|
<section id="secondary-features" aria-label="Features for simplifying everyday business tasks" class="pb-14 pt-20 sm:pb-20 sm:pt-32 lg:pb-32">
|
|
33
38
|
<Container>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
interface TestimonialsProps {
|
|
3
|
-
|
|
3
|
+
/** One inner array per rendered column. */
|
|
4
|
+
testimonials?: Array<Array<{
|
|
5
|
+
content: string
|
|
6
|
+
author: { name: string, role: string, image: string }
|
|
7
|
+
}>>
|
|
4
8
|
}
|
|
5
9
|
|
|
6
|
-
const { testimonials = [
|
|
7
|
-
|
|
8
|
-
[
|
|
10
|
+
const { testimonials = [
|
|
11
|
+
[
|
|
9
12
|
{
|
|
10
13
|
content: 'Stacks is a rapid development framework that has helped me create and maintain frontends, backends, and clouds without worrying about the boilerplate.',
|
|
11
14
|
author: {
|
|
@@ -59,7 +62,7 @@ const { testimonials = [ } = defineProps<TestimonialsProps>()
|
|
|
59
62
|
},
|
|
60
63
|
},
|
|
61
64
|
],
|
|
62
|
-
]
|
|
65
|
+
] } = defineProps<TestimonialsProps>()
|
|
63
66
|
</script>
|
|
64
67
|
<section
|
|
65
68
|
id="testimonials"
|
|
@@ -2636,22 +2636,22 @@ export default {
|
|
|
2636
2636
|
</button>
|
|
2637
2637
|
<div class="taskbar-divider"></div>
|
|
2638
2638
|
<div class="quick-launch">
|
|
2639
|
-
<a href="https://stacksjs.com/docs" target="_blank" class="quick-launch-icon" title="Documentation">
|
|
2639
|
+
<a href="https://stacksjs.com/docs" target="_blank" class="quick-launch-icon" x-tooltip="Documentation" title="Documentation">
|
|
2640
2640
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2641
2641
|
<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>
|
|
2642
2642
|
</svg>
|
|
2643
2643
|
</a>
|
|
2644
|
-
<a href="https://github.com/stacksjs/stacks" target="_blank" class="quick-launch-icon" title="GitHub Repository">
|
|
2644
|
+
<a href="https://github.com/stacksjs/stacks" target="_blank" class="quick-launch-icon" x-tooltip="GitHub Repository" title="GitHub Repository">
|
|
2645
2645
|
<svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor">
|
|
2646
2646
|
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/>
|
|
2647
2647
|
</svg>
|
|
2648
2648
|
</a>
|
|
2649
|
-
<a href="https://github.com/sponsors/chrisbbreuer" target="_blank" class="quick-launch-icon" title="Sponsor">
|
|
2649
|
+
<a href="https://github.com/sponsors/chrisbbreuer" target="_blank" class="quick-launch-icon" x-tooltip="Sponsor" title="Sponsor">
|
|
2650
2650
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
|
2651
2651
|
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/>
|
|
2652
2652
|
</svg>
|
|
2653
2653
|
</a>
|
|
2654
|
-
<a href="https://stacksjs.com/discord" target="_blank" class="quick-launch-icon" title="Discord">
|
|
2654
|
+
<a href="https://stacksjs.com/discord" target="_blank" class="quick-launch-icon" x-tooltip="Discord" title="Discord">
|
|
2655
2655
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
|
2656
2656
|
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"/>
|
|
2657
2657
|
</svg>
|
|
@@ -83,7 +83,7 @@ void loadProjects()
|
|
|
83
83
|
<p class="text-neutral-500 text-xs dark:text-neutral-400">Project shortcuts</p>
|
|
84
84
|
</div>
|
|
85
85
|
</div>
|
|
86
|
-
<button type="button" class="flex items-center justify-center h-9 w-9 text-neutral-500 hover:text-neutral-900 dark:hover:text-white bg-white dark:bg-white/5 border border-black/5 rounded-lg dark:border-white/10" @click="run('refresh')" title="Refresh">
|
|
86
|
+
<button type="button" class="flex items-center justify-center h-9 w-9 text-neutral-500 hover:text-neutral-900 dark:hover:text-white bg-white dark:bg-white/5 border border-black/5 rounded-lg dark:border-white/10" @click="run('refresh')" x-tooltip="Refresh" title="Refresh">
|
|
87
87
|
<span :class="running() === 'refresh' ? 'h-4 w-4 animate-spin i-hugeicons-loading-03' : 'h-4 w-4 i-hugeicons-refresh'"></span>
|
|
88
88
|
</button>
|
|
89
89
|
</header>
|