@ziyarago/ui 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +7 -7
  3. package/THIRD_PARTY_NOTICES.md +2 -2
  4. package/assets/fonts/jetbrains-mono/jetbrains-mono-cyrillic-ext.woff2 +0 -0
  5. package/assets/fonts/jetbrains-mono/jetbrains-mono-cyrillic.woff2 +0 -0
  6. package/assets/fonts/jetbrains-mono/jetbrains-mono-latin-ext.woff2 +0 -0
  7. package/assets/fonts/jetbrains-mono/jetbrains-mono-latin.woff2 +0 -0
  8. package/assets/fonts/manrope/manrope-cyrillic-ext.woff2 +0 -0
  9. package/assets/fonts/manrope/manrope-cyrillic.woff2 +0 -0
  10. package/assets/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  11. package/assets/fonts/manrope/manrope-latin.woff2 +0 -0
  12. package/dist/llms-full.txt +210 -2
  13. package/dist/llms.txt +15 -3
  14. package/dist/manifest.json +2808 -989
  15. package/dist/style.css +33 -5
  16. package/docs/INTEGRATION.md +3 -3
  17. package/docs/MIGRATION.md +3 -1
  18. package/package.json +2 -2
  19. package/src/compat/index.js +3 -2
  20. package/src/compat/vite.js +1 -1
  21. package/src/core/bools.js +1 -1
  22. package/src/core/components2.js +3 -3
  23. package/src/core/components7.js +13 -0
  24. package/src/core/pages.js +17 -6
  25. package/src/i18n/components/QiblaCompass.js +5 -0
  26. package/src/i18n/components/index.js +2 -0
  27. package/src/meta/domain.js +10 -0
  28. package/src/meta/forms.js +4 -0
  29. package/src/meta/groups.js +2 -2
  30. package/src/meta/pages.js +139 -0
  31. package/src/meta/templates.json +1391 -1
  32. package/src/react/index.js +12 -0
  33. package/src/styles/components5.css +1 -1
  34. package/src/styles/components8.css +20 -1
  35. package/src/styles/effects.css +2 -1
  36. package/src/styles/fonts.css +9 -1
  37. package/src/vue/index.js +1 -1
  38. package/types/react.d.ts +686 -0
  39. package/types/vue-global.d.ts +12 -0
  40. package/types/vue.d.ts +478 -0
@@ -3864,6 +3864,1396 @@
3864
3864
  "use": "<UiEmptyState icon=\"search-x\" title=\"No results\" />"
3865
3865
  }
3866
3866
  ]
3867
+ },
3868
+ {
3869
+ "key": "article",
3870
+ "route": "article",
3871
+ "label": "Article",
3872
+ "icon": "newspaper",
3873
+ "desc": "Blog article: cover, title and author, body with a table of contents, share row and related posts.",
3874
+ "component": "PageArticle",
3875
+ "tpl": "TplArticle",
3876
+ "shell": true,
3877
+ "slots": [
3878
+ {
3879
+ "id": "header",
3880
+ "title": "Page heading",
3881
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
3882
+ "accepts": [
3883
+ "PageHeader",
3884
+ "Breadcrumbs",
3885
+ "Button",
3886
+ "SegmentedControl"
3887
+ ],
3888
+ "props": [
3889
+ {
3890
+ "name": "title",
3891
+ "type": "string",
3892
+ "desc": "H1, up to 60 characters"
3893
+ },
3894
+ {
3895
+ "name": "subtitle",
3896
+ "type": "string?",
3897
+ "desc": "Gray caption below the heading"
3898
+ },
3899
+ {
3900
+ "name": "crumbs",
3901
+ "type": "{label,href?}[]",
3902
+ "desc": "Breadcrumbs"
3903
+ },
3904
+ {
3905
+ "name": "actions",
3906
+ "type": "VNode",
3907
+ "desc": "Buttons on the right; wrap below on a narrow screen"
3908
+ }
3909
+ ],
3910
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
3911
+ },
3912
+ {
3913
+ "id": "cover",
3914
+ "title": "Cover",
3915
+ "desc": "Cover with category, title, author and reading time.",
3916
+ "accepts": [
3917
+ "Card",
3918
+ "Chip",
3919
+ "Avatar",
3920
+ "LazyImage"
3921
+ ],
3922
+ "props": [
3923
+ {
3924
+ "name": "content",
3925
+ "type": "VNode",
3926
+ "desc": ""
3927
+ }
3928
+ ],
3929
+ "use": "<UiCard>…</UiCard>"
3930
+ },
3931
+ {
3932
+ "id": "body",
3933
+ "title": "Article body",
3934
+ "desc": "Headings, paragraphs, quote and code.",
3935
+ "accepts": [
3936
+ "Heading",
3937
+ "Text",
3938
+ "Code",
3939
+ "Alert"
3940
+ ],
3941
+ "props": [
3942
+ {
3943
+ "name": "content",
3944
+ "type": "VNode",
3945
+ "desc": ""
3946
+ }
3947
+ ],
3948
+ "use": "<UiHeading level=\"2\">…</UiHeading>"
3949
+ },
3950
+ {
3951
+ "id": "toc",
3952
+ "title": "Table of contents",
3953
+ "desc": "Sticky list of section links.",
3954
+ "accepts": [
3955
+ "Card",
3956
+ "Link"
3957
+ ],
3958
+ "props": [
3959
+ {
3960
+ "name": "content",
3961
+ "type": "VNode",
3962
+ "desc": ""
3963
+ }
3964
+ ],
3965
+ "use": "<UiCard title=\"On this page\">…</UiCard>"
3966
+ },
3967
+ {
3968
+ "id": "share",
3969
+ "title": "Share",
3970
+ "desc": "Share buttons and copy link.",
3971
+ "accepts": [
3972
+ "Button",
3973
+ "IconButton",
3974
+ "CopyButton"
3975
+ ],
3976
+ "props": [
3977
+ {
3978
+ "name": "content",
3979
+ "type": "VNode",
3980
+ "desc": ""
3981
+ }
3982
+ ],
3983
+ "use": "<UiCopyButton :value=\"url\" />"
3984
+ },
3985
+ {
3986
+ "id": "related",
3987
+ "title": "Related posts",
3988
+ "desc": "Cards with other posts.",
3989
+ "accepts": [
3990
+ "Card",
3991
+ "Chip"
3992
+ ],
3993
+ "props": [
3994
+ {
3995
+ "name": "content",
3996
+ "type": "VNode",
3997
+ "desc": ""
3998
+ }
3999
+ ],
4000
+ "use": "<UiCard>…</UiCard>"
4001
+ }
4002
+ ]
4003
+ },
4004
+ {
4005
+ "key": "changelog",
4006
+ "route": "changelog",
4007
+ "label": "Changelog",
4008
+ "icon": "git-commit-horizontal",
4009
+ "desc": "Changelog: release timeline grouped by version with new, fix and improved tags, a filter and subscribe.",
4010
+ "component": "PageChangelog",
4011
+ "tpl": "TplChangelog",
4012
+ "shell": true,
4013
+ "slots": [
4014
+ {
4015
+ "id": "header",
4016
+ "title": "Page heading",
4017
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4018
+ "accepts": [
4019
+ "PageHeader",
4020
+ "Breadcrumbs",
4021
+ "Button",
4022
+ "SegmentedControl"
4023
+ ],
4024
+ "props": [
4025
+ {
4026
+ "name": "title",
4027
+ "type": "string",
4028
+ "desc": "H1, up to 60 characters"
4029
+ },
4030
+ {
4031
+ "name": "subtitle",
4032
+ "type": "string?",
4033
+ "desc": "Gray caption below the heading"
4034
+ },
4035
+ {
4036
+ "name": "crumbs",
4037
+ "type": "{label,href?}[]",
4038
+ "desc": "Breadcrumbs"
4039
+ },
4040
+ {
4041
+ "name": "actions",
4042
+ "type": "VNode",
4043
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4044
+ }
4045
+ ],
4046
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4047
+ },
4048
+ {
4049
+ "id": "filters",
4050
+ "title": "Filters",
4051
+ "desc": "Tag filter and search.",
4052
+ "accepts": [
4053
+ "FilterChips",
4054
+ "SearchInput"
4055
+ ],
4056
+ "props": [
4057
+ {
4058
+ "name": "content",
4059
+ "type": "VNode",
4060
+ "desc": ""
4061
+ }
4062
+ ],
4063
+ "use": "<UiFilterChips v-model=\"tag\" :items=\"tags\" />"
4064
+ },
4065
+ {
4066
+ "id": "timeline",
4067
+ "title": "Release timeline",
4068
+ "desc": "Versions with date and tagged changes.",
4069
+ "accepts": [
4070
+ "Card",
4071
+ "Chip",
4072
+ "Divider"
4073
+ ],
4074
+ "props": [
4075
+ {
4076
+ "name": "content",
4077
+ "type": "VNode",
4078
+ "desc": ""
4079
+ }
4080
+ ],
4081
+ "use": "<UiCard>…</UiCard>"
4082
+ },
4083
+ {
4084
+ "id": "subscribe",
4085
+ "title": "Subscribe",
4086
+ "desc": "Email field to get release notes.",
4087
+ "accepts": [
4088
+ "Card",
4089
+ "TextField",
4090
+ "Button"
4091
+ ],
4092
+ "props": [
4093
+ {
4094
+ "name": "content",
4095
+ "type": "VNode",
4096
+ "desc": ""
4097
+ }
4098
+ ],
4099
+ "use": "<UiCard title=\"Get updates\">…</UiCard>"
4100
+ }
4101
+ ]
4102
+ },
4103
+ {
4104
+ "key": "help",
4105
+ "route": "help",
4106
+ "label": "Help center",
4107
+ "icon": "life-buoy",
4108
+ "desc": "Help center home: search, category tiles, popular articles and contact.",
4109
+ "component": "PageHelp",
4110
+ "tpl": "TplHelp",
4111
+ "shell": true,
4112
+ "slots": [
4113
+ {
4114
+ "id": "header",
4115
+ "title": "Page heading",
4116
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4117
+ "accepts": [
4118
+ "PageHeader",
4119
+ "Breadcrumbs",
4120
+ "Button",
4121
+ "SegmentedControl"
4122
+ ],
4123
+ "props": [
4124
+ {
4125
+ "name": "title",
4126
+ "type": "string",
4127
+ "desc": "H1, up to 60 characters"
4128
+ },
4129
+ {
4130
+ "name": "subtitle",
4131
+ "type": "string?",
4132
+ "desc": "Gray caption below the heading"
4133
+ },
4134
+ {
4135
+ "name": "crumbs",
4136
+ "type": "{label,href?}[]",
4137
+ "desc": "Breadcrumbs"
4138
+ },
4139
+ {
4140
+ "name": "actions",
4141
+ "type": "VNode",
4142
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4143
+ }
4144
+ ],
4145
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4146
+ },
4147
+ {
4148
+ "id": "search",
4149
+ "title": "Search",
4150
+ "desc": "Large search field.",
4151
+ "accepts": [
4152
+ "SearchInput"
4153
+ ],
4154
+ "props": [
4155
+ {
4156
+ "name": "content",
4157
+ "type": "VNode",
4158
+ "desc": ""
4159
+ }
4160
+ ],
4161
+ "use": "<UiSearchInput size=\"lg\" />"
4162
+ },
4163
+ {
4164
+ "id": "categories",
4165
+ "title": "Categories",
4166
+ "desc": "Grid of category tiles.",
4167
+ "accepts": [
4168
+ "Card",
4169
+ "IconTile"
4170
+ ],
4171
+ "props": [
4172
+ {
4173
+ "name": "content",
4174
+ "type": "VNode",
4175
+ "desc": ""
4176
+ }
4177
+ ],
4178
+ "use": "<UiCard>…</UiCard>"
4179
+ },
4180
+ {
4181
+ "id": "popular",
4182
+ "title": "Popular articles",
4183
+ "desc": "List of top articles.",
4184
+ "accepts": [
4185
+ "Card",
4186
+ "Link",
4187
+ "Chip"
4188
+ ],
4189
+ "props": [
4190
+ {
4191
+ "name": "content",
4192
+ "type": "VNode",
4193
+ "desc": ""
4194
+ }
4195
+ ],
4196
+ "use": "<UiCard title=\"Popular\">…</UiCard>"
4197
+ },
4198
+ {
4199
+ "id": "contact",
4200
+ "title": "Contact",
4201
+ "desc": "Ways to reach support.",
4202
+ "accepts": [
4203
+ "Card",
4204
+ "Button",
4205
+ "IconTile"
4206
+ ],
4207
+ "props": [
4208
+ {
4209
+ "name": "content",
4210
+ "type": "VNode",
4211
+ "desc": ""
4212
+ }
4213
+ ],
4214
+ "use": "<UiCard title=\"Still need help?\">…</UiCard>"
4215
+ }
4216
+ ]
4217
+ },
4218
+ {
4219
+ "key": "states",
4220
+ "route": "states",
4221
+ "label": "States",
4222
+ "icon": "layout-grid",
4223
+ "desc": "State gallery: empty, no results, no permission, offline, error with retry, loading and success.",
4224
+ "component": "PageStates",
4225
+ "tpl": "TplStates",
4226
+ "shell": true,
4227
+ "slots": [
4228
+ {
4229
+ "id": "header",
4230
+ "title": "Page heading",
4231
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4232
+ "accepts": [
4233
+ "PageHeader",
4234
+ "Breadcrumbs",
4235
+ "Button",
4236
+ "SegmentedControl"
4237
+ ],
4238
+ "props": [
4239
+ {
4240
+ "name": "title",
4241
+ "type": "string",
4242
+ "desc": "H1, up to 60 characters"
4243
+ },
4244
+ {
4245
+ "name": "subtitle",
4246
+ "type": "string?",
4247
+ "desc": "Gray caption below the heading"
4248
+ },
4249
+ {
4250
+ "name": "crumbs",
4251
+ "type": "{label,href?}[]",
4252
+ "desc": "Breadcrumbs"
4253
+ },
4254
+ {
4255
+ "name": "actions",
4256
+ "type": "VNode",
4257
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4258
+ }
4259
+ ],
4260
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4261
+ },
4262
+ {
4263
+ "id": "empty",
4264
+ "title": "Empty list",
4265
+ "desc": "First-use empty state with an action.",
4266
+ "accepts": [
4267
+ "EmptyState",
4268
+ "Button"
4269
+ ],
4270
+ "props": [
4271
+ {
4272
+ "name": "content",
4273
+ "type": "VNode",
4274
+ "desc": ""
4275
+ }
4276
+ ],
4277
+ "use": "<UiEmptyState icon=\"inbox\" title=\"Nothing here yet\" />"
4278
+ },
4279
+ {
4280
+ "id": "noresults",
4281
+ "title": "No results",
4282
+ "desc": "Search found nothing.",
4283
+ "accepts": [
4284
+ "EmptyState",
4285
+ "Button"
4286
+ ],
4287
+ "props": [
4288
+ {
4289
+ "name": "content",
4290
+ "type": "VNode",
4291
+ "desc": ""
4292
+ }
4293
+ ],
4294
+ "use": "<UiEmptyState icon=\"search-x\" title=\"No results\" />"
4295
+ },
4296
+ {
4297
+ "id": "forbidden",
4298
+ "title": "No permission",
4299
+ "desc": "Access denied.",
4300
+ "accepts": [
4301
+ "EmptyState",
4302
+ "Button"
4303
+ ],
4304
+ "props": [
4305
+ {
4306
+ "name": "content",
4307
+ "type": "VNode",
4308
+ "desc": ""
4309
+ }
4310
+ ],
4311
+ "use": "<UiEmptyState icon=\"lock\" title=\"No access\" />"
4312
+ },
4313
+ {
4314
+ "id": "offline",
4315
+ "title": "Offline",
4316
+ "desc": "No connection.",
4317
+ "accepts": [
4318
+ "DataState"
4319
+ ],
4320
+ "props": [
4321
+ {
4322
+ "name": "content",
4323
+ "type": "VNode",
4324
+ "desc": ""
4325
+ }
4326
+ ],
4327
+ "use": "<UiDataState state=\"offline\" />"
4328
+ },
4329
+ {
4330
+ "id": "error",
4331
+ "title": "Error",
4332
+ "desc": "Failure with a retry button.",
4333
+ "accepts": [
4334
+ "DataState",
4335
+ "Alert"
4336
+ ],
4337
+ "props": [
4338
+ {
4339
+ "name": "content",
4340
+ "type": "VNode",
4341
+ "desc": ""
4342
+ }
4343
+ ],
4344
+ "use": "<UiDataState state=\"error\" />"
4345
+ },
4346
+ {
4347
+ "id": "loading",
4348
+ "title": "Loading",
4349
+ "desc": "Skeleton placeholders.",
4350
+ "accepts": [
4351
+ "Skeleton",
4352
+ "DataState"
4353
+ ],
4354
+ "props": [
4355
+ {
4356
+ "name": "content",
4357
+ "type": "VNode",
4358
+ "desc": ""
4359
+ }
4360
+ ],
4361
+ "use": "<UiSkeleton />"
4362
+ },
4363
+ {
4364
+ "id": "success",
4365
+ "title": "Success",
4366
+ "desc": "Confirmation after an action.",
4367
+ "accepts": [
4368
+ "Alert",
4369
+ "EmptyState"
4370
+ ],
4371
+ "props": [
4372
+ {
4373
+ "name": "content",
4374
+ "type": "VNode",
4375
+ "desc": ""
4376
+ }
4377
+ ],
4378
+ "use": "<UiAlert tone=\"success\" title=\"Saved\" />"
4379
+ }
4380
+ ]
4381
+ },
4382
+ {
4383
+ "key": "legal",
4384
+ "route": "legal",
4385
+ "label": "Legal",
4386
+ "icon": "scale",
4387
+ "desc": "Legal document: last updated, sticky table of contents, sections, print and download.",
4388
+ "component": "PageLegal",
4389
+ "tpl": "TplLegal",
4390
+ "shell": true,
4391
+ "slots": [
4392
+ {
4393
+ "id": "header",
4394
+ "title": "Page heading",
4395
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4396
+ "accepts": [
4397
+ "PageHeader",
4398
+ "Breadcrumbs",
4399
+ "Button",
4400
+ "SegmentedControl"
4401
+ ],
4402
+ "props": [
4403
+ {
4404
+ "name": "title",
4405
+ "type": "string",
4406
+ "desc": "H1, up to 60 characters"
4407
+ },
4408
+ {
4409
+ "name": "subtitle",
4410
+ "type": "string?",
4411
+ "desc": "Gray caption below the heading"
4412
+ },
4413
+ {
4414
+ "name": "crumbs",
4415
+ "type": "{label,href?}[]",
4416
+ "desc": "Breadcrumbs"
4417
+ },
4418
+ {
4419
+ "name": "actions",
4420
+ "type": "VNode",
4421
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4422
+ }
4423
+ ],
4424
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4425
+ },
4426
+ {
4427
+ "id": "meta",
4428
+ "title": "Meta",
4429
+ "desc": "Version, last updated and document actions.",
4430
+ "accepts": [
4431
+ "Chip",
4432
+ "Button"
4433
+ ],
4434
+ "props": [
4435
+ {
4436
+ "name": "content",
4437
+ "type": "VNode",
4438
+ "desc": ""
4439
+ }
4440
+ ],
4441
+ "use": "<UiChip>Last updated 12 Mar 2026</UiChip>"
4442
+ },
4443
+ {
4444
+ "id": "toc",
4445
+ "title": "Table of contents",
4446
+ "desc": "Sticky list of section links.",
4447
+ "accepts": [
4448
+ "Card",
4449
+ "Link"
4450
+ ],
4451
+ "props": [
4452
+ {
4453
+ "name": "content",
4454
+ "type": "VNode",
4455
+ "desc": ""
4456
+ }
4457
+ ],
4458
+ "use": "<UiCard title=\"Contents\">…</UiCard>"
4459
+ },
4460
+ {
4461
+ "id": "document",
4462
+ "title": "Document",
4463
+ "desc": "Numbered sections of text.",
4464
+ "accepts": [
4465
+ "Card",
4466
+ "Heading",
4467
+ "Text"
4468
+ ],
4469
+ "props": [
4470
+ {
4471
+ "name": "content",
4472
+ "type": "VNode",
4473
+ "desc": ""
4474
+ }
4475
+ ],
4476
+ "use": "<UiCard>…</UiCard>"
4477
+ },
4478
+ {
4479
+ "id": "contact",
4480
+ "title": "Contact",
4481
+ "desc": "Questions about this document.",
4482
+ "accepts": [
4483
+ "Card",
4484
+ "Button"
4485
+ ],
4486
+ "props": [
4487
+ {
4488
+ "name": "content",
4489
+ "type": "VNode",
4490
+ "desc": ""
4491
+ }
4492
+ ],
4493
+ "use": "<UiCard title=\"Questions?\">…</UiCard>"
4494
+ }
4495
+ ]
4496
+ },
4497
+ {
4498
+ "key": "locations",
4499
+ "route": "locations",
4500
+ "label": "Locations",
4501
+ "icon": "map-pin",
4502
+ "desc": "Locations: filters, a list of places and a sticky map panel.",
4503
+ "component": "PageLocations",
4504
+ "tpl": "TplLocations",
4505
+ "shell": true,
4506
+ "slots": [
4507
+ {
4508
+ "id": "header",
4509
+ "title": "Page heading",
4510
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4511
+ "accepts": [
4512
+ "PageHeader",
4513
+ "Breadcrumbs",
4514
+ "Button",
4515
+ "SegmentedControl"
4516
+ ],
4517
+ "props": [
4518
+ {
4519
+ "name": "title",
4520
+ "type": "string",
4521
+ "desc": "H1, up to 60 characters"
4522
+ },
4523
+ {
4524
+ "name": "subtitle",
4525
+ "type": "string?",
4526
+ "desc": "Gray caption below the heading"
4527
+ },
4528
+ {
4529
+ "name": "crumbs",
4530
+ "type": "{label,href?}[]",
4531
+ "desc": "Breadcrumbs"
4532
+ },
4533
+ {
4534
+ "name": "actions",
4535
+ "type": "VNode",
4536
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4537
+ }
4538
+ ],
4539
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4540
+ },
4541
+ {
4542
+ "id": "filters",
4543
+ "title": "Filters",
4544
+ "desc": "Search and category chips.",
4545
+ "accepts": [
4546
+ "SearchInput",
4547
+ "FilterChips"
4548
+ ],
4549
+ "props": [
4550
+ {
4551
+ "name": "content",
4552
+ "type": "VNode",
4553
+ "desc": ""
4554
+ }
4555
+ ],
4556
+ "use": "<UiSearchInput v-model=\"q\" />"
4557
+ },
4558
+ {
4559
+ "id": "list",
4560
+ "title": "Places",
4561
+ "desc": "Cards with name, distance and rating.",
4562
+ "accepts": [
4563
+ "Card",
4564
+ "Chip",
4565
+ "Rating"
4566
+ ],
4567
+ "props": [
4568
+ {
4569
+ "name": "content",
4570
+ "type": "VNode",
4571
+ "desc": ""
4572
+ }
4573
+ ],
4574
+ "use": "<UiCard padding=\"none\">…</UiCard>"
4575
+ },
4576
+ {
4577
+ "id": "map",
4578
+ "title": "Map",
4579
+ "desc": "Map with markers.",
4580
+ "accepts": [
4581
+ "Map",
4582
+ "Card"
4583
+ ],
4584
+ "props": [
4585
+ {
4586
+ "name": "content",
4587
+ "type": "VNode",
4588
+ "desc": ""
4589
+ }
4590
+ ],
4591
+ "use": "<UiMap :markers=\"pins\" />"
4592
+ }
4593
+ ]
4594
+ },
4595
+ {
4596
+ "key": "booking-flow",
4597
+ "route": "booking-flow",
4598
+ "label": "Booking flow",
4599
+ "icon": "route",
4600
+ "desc": "Booking flow: stepper from search to confirmation with a sticky summary card.",
4601
+ "component": "PageBookingFlow",
4602
+ "tpl": "TplBookingFlow",
4603
+ "shell": true,
4604
+ "slots": [
4605
+ {
4606
+ "id": "header",
4607
+ "title": "Page heading",
4608
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4609
+ "accepts": [
4610
+ "PageHeader",
4611
+ "Breadcrumbs",
4612
+ "Button",
4613
+ "SegmentedControl"
4614
+ ],
4615
+ "props": [
4616
+ {
4617
+ "name": "title",
4618
+ "type": "string",
4619
+ "desc": "H1, up to 60 characters"
4620
+ },
4621
+ {
4622
+ "name": "subtitle",
4623
+ "type": "string?",
4624
+ "desc": "Gray caption below the heading"
4625
+ },
4626
+ {
4627
+ "name": "crumbs",
4628
+ "type": "{label,href?}[]",
4629
+ "desc": "Breadcrumbs"
4630
+ },
4631
+ {
4632
+ "name": "actions",
4633
+ "type": "VNode",
4634
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4635
+ }
4636
+ ],
4637
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4638
+ },
4639
+ {
4640
+ "id": "steps",
4641
+ "title": "Steps",
4642
+ "desc": "Progress through the flow.",
4643
+ "accepts": [
4644
+ "Stepper"
4645
+ ],
4646
+ "props": [
4647
+ {
4648
+ "name": "content",
4649
+ "type": "VNode",
4650
+ "desc": ""
4651
+ }
4652
+ ],
4653
+ "use": "<UiStepper :steps=\"steps\" :current=\"1\" />"
4654
+ },
4655
+ {
4656
+ "id": "content",
4657
+ "title": "Active step",
4658
+ "desc": "Search, pick, guests or confirm.",
4659
+ "accepts": [
4660
+ "Card",
4661
+ "DatePicker",
4662
+ "OptionCards",
4663
+ "NumberInput"
4664
+ ],
4665
+ "props": [
4666
+ {
4667
+ "name": "content",
4668
+ "type": "VNode",
4669
+ "desc": ""
4670
+ }
4671
+ ],
4672
+ "use": "<UiCard title=\"Guests\">…</UiCard>"
4673
+ },
4674
+ {
4675
+ "id": "nav",
4676
+ "title": "Navigation",
4677
+ "desc": "Back and continue buttons.",
4678
+ "accepts": [
4679
+ "Button"
4680
+ ],
4681
+ "props": [
4682
+ {
4683
+ "name": "content",
4684
+ "type": "VNode",
4685
+ "desc": ""
4686
+ }
4687
+ ],
4688
+ "use": "<UiButton variant=\"primary\">Continue</UiButton>"
4689
+ },
4690
+ {
4691
+ "id": "summary",
4692
+ "title": "Summary",
4693
+ "desc": "Price and details of the booking.",
4694
+ "accepts": [
4695
+ "Card",
4696
+ "Descriptions",
4697
+ "Button"
4698
+ ],
4699
+ "props": [
4700
+ {
4701
+ "name": "content",
4702
+ "type": "VNode",
4703
+ "desc": ""
4704
+ }
4705
+ ],
4706
+ "use": "<UiCard title=\"Summary\">…</UiCard>"
4707
+ }
4708
+ ]
4709
+ },
4710
+ {
4711
+ "key": "itinerary",
4712
+ "route": "itinerary",
4713
+ "label": "Itinerary",
4714
+ "icon": "map",
4715
+ "desc": "Itinerary: day tabs, a timeline of stops, transport and hotel blocks and a sticky trip summary.",
4716
+ "component": "PageItinerary",
4717
+ "tpl": "TplItinerary",
4718
+ "shell": true,
4719
+ "slots": [
4720
+ {
4721
+ "id": "header",
4722
+ "title": "Page heading",
4723
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4724
+ "accepts": [
4725
+ "PageHeader",
4726
+ "Breadcrumbs",
4727
+ "Button",
4728
+ "SegmentedControl"
4729
+ ],
4730
+ "props": [
4731
+ {
4732
+ "name": "title",
4733
+ "type": "string",
4734
+ "desc": "H1, up to 60 characters"
4735
+ },
4736
+ {
4737
+ "name": "subtitle",
4738
+ "type": "string?",
4739
+ "desc": "Gray caption below the heading"
4740
+ },
4741
+ {
4742
+ "name": "crumbs",
4743
+ "type": "{label,href?}[]",
4744
+ "desc": "Breadcrumbs"
4745
+ },
4746
+ {
4747
+ "name": "actions",
4748
+ "type": "VNode",
4749
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4750
+ }
4751
+ ],
4752
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4753
+ },
4754
+ {
4755
+ "id": "days",
4756
+ "title": "Days",
4757
+ "desc": "Switch between the days of the trip.",
4758
+ "accepts": [
4759
+ "Tabs",
4760
+ "PillTabs"
4761
+ ],
4762
+ "props": [
4763
+ {
4764
+ "name": "content",
4765
+ "type": "VNode",
4766
+ "desc": ""
4767
+ }
4768
+ ],
4769
+ "use": "<UiTabs v-model=\"day\" :items=\"days\" />"
4770
+ },
4771
+ {
4772
+ "id": "timeline",
4773
+ "title": "Day timeline",
4774
+ "desc": "Stops of the active day with times, places and durations.",
4775
+ "accepts": [
4776
+ "Card",
4777
+ "Timeline",
4778
+ "StatRow"
4779
+ ],
4780
+ "props": [
4781
+ {
4782
+ "name": "content",
4783
+ "type": "VNode",
4784
+ "desc": ""
4785
+ }
4786
+ ],
4787
+ "use": "<UiCard title=\"Day 2 · Makkah\">…</UiCard>"
4788
+ },
4789
+ {
4790
+ "id": "transport",
4791
+ "title": "Transport",
4792
+ "desc": "Flights, buses and transfers of the day.",
4793
+ "accepts": [
4794
+ "Card",
4795
+ "StatRow"
4796
+ ],
4797
+ "props": [
4798
+ {
4799
+ "name": "content",
4800
+ "type": "VNode",
4801
+ "desc": ""
4802
+ }
4803
+ ],
4804
+ "use": "<UiCard title=\"Transport\">…</UiCard>"
4805
+ },
4806
+ {
4807
+ "id": "hotel",
4808
+ "title": "Hotel",
4809
+ "desc": "Where the group stays.",
4810
+ "accepts": [
4811
+ "Card",
4812
+ "Badge",
4813
+ "IconTile"
4814
+ ],
4815
+ "props": [
4816
+ {
4817
+ "name": "content",
4818
+ "type": "VNode",
4819
+ "desc": ""
4820
+ }
4821
+ ],
4822
+ "use": "<UiCard>…</UiCard>"
4823
+ },
4824
+ {
4825
+ "id": "summary",
4826
+ "title": "Trip summary",
4827
+ "desc": "Dates, group size and what is booked.",
4828
+ "accepts": [
4829
+ "Card",
4830
+ "Descriptions",
4831
+ "Progress"
4832
+ ],
4833
+ "props": [
4834
+ {
4835
+ "name": "content",
4836
+ "type": "VNode",
4837
+ "desc": ""
4838
+ }
4839
+ ],
4840
+ "use": "<UiCard title=\"Trip summary\">…</UiCard>"
4841
+ }
4842
+ ]
4843
+ },
4844
+ {
4845
+ "key": "prayer",
4846
+ "route": "prayer",
4847
+ "label": "Prayer times",
4848
+ "icon": "clock",
4849
+ "desc": "Prayer times: location picker, today with the next prayer, a month table and a sticky Qibla compass.",
4850
+ "component": "PagePrayer",
4851
+ "tpl": "TplPrayer",
4852
+ "shell": true,
4853
+ "slots": [
4854
+ {
4855
+ "id": "header",
4856
+ "title": "Page heading",
4857
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4858
+ "accepts": [
4859
+ "PageHeader",
4860
+ "Breadcrumbs",
4861
+ "Button",
4862
+ "SegmentedControl"
4863
+ ],
4864
+ "props": [
4865
+ {
4866
+ "name": "title",
4867
+ "type": "string",
4868
+ "desc": "H1, up to 60 characters"
4869
+ },
4870
+ {
4871
+ "name": "subtitle",
4872
+ "type": "string?",
4873
+ "desc": "Gray caption below the heading"
4874
+ },
4875
+ {
4876
+ "name": "crumbs",
4877
+ "type": "{label,href?}[]",
4878
+ "desc": "Breadcrumbs"
4879
+ },
4880
+ {
4881
+ "name": "actions",
4882
+ "type": "VNode",
4883
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4884
+ }
4885
+ ],
4886
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
4887
+ },
4888
+ {
4889
+ "id": "location",
4890
+ "title": "Location",
4891
+ "desc": "City and calculation method.",
4892
+ "accepts": [
4893
+ "Select",
4894
+ "PillSelect",
4895
+ "SegmentedControl"
4896
+ ],
4897
+ "props": [
4898
+ {
4899
+ "name": "content",
4900
+ "type": "VNode",
4901
+ "desc": ""
4902
+ }
4903
+ ],
4904
+ "use": "<UiSelect v-model=\"city\" :options=\"cities\" />"
4905
+ },
4906
+ {
4907
+ "id": "today",
4908
+ "title": "Today",
4909
+ "desc": "Five prayers with the next one highlighted and a countdown.",
4910
+ "accepts": [
4911
+ "Card",
4912
+ "PrayerTimes"
4913
+ ],
4914
+ "props": [
4915
+ {
4916
+ "name": "content",
4917
+ "type": "VNode",
4918
+ "desc": ""
4919
+ }
4920
+ ],
4921
+ "use": "<UiPrayerTimes :items=\"times\" :next=\"2\" />"
4922
+ },
4923
+ {
4924
+ "id": "month",
4925
+ "title": "Month table",
4926
+ "desc": "Prayer times for every day of the month.",
4927
+ "accepts": [
4928
+ "Card",
4929
+ "DataTable"
4930
+ ],
4931
+ "props": [
4932
+ {
4933
+ "name": "content",
4934
+ "type": "VNode",
4935
+ "desc": ""
4936
+ }
4937
+ ],
4938
+ "use": "<UiDataTable :columns=\"cols\" :rows=\"days\" />"
4939
+ },
4940
+ {
4941
+ "id": "qibla",
4942
+ "title": "Qibla",
4943
+ "desc": "Direction to the Kaaba.",
4944
+ "accepts": [
4945
+ "Card",
4946
+ "QiblaCompass"
4947
+ ],
4948
+ "props": [
4949
+ {
4950
+ "name": "content",
4951
+ "type": "VNode",
4952
+ "desc": ""
4953
+ }
4954
+ ],
4955
+ "use": "<UiQiblaCompass :bearing=\"248\" />"
4956
+ }
4957
+ ]
4958
+ },
4959
+ {
4960
+ "key": "group-manager",
4961
+ "route": "group-manager",
4962
+ "label": "Group manager",
4963
+ "icon": "users-round",
4964
+ "desc": "Group manager: trip summary, pilgrims with documents and visa, bulk actions, rooming and payments.",
4965
+ "component": "PageGroupManager",
4966
+ "tpl": "TplGroupManager",
4967
+ "shell": true,
4968
+ "slots": [
4969
+ {
4970
+ "id": "header",
4971
+ "title": "Page heading",
4972
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
4973
+ "accepts": [
4974
+ "PageHeader",
4975
+ "Breadcrumbs",
4976
+ "Button",
4977
+ "SegmentedControl"
4978
+ ],
4979
+ "props": [
4980
+ {
4981
+ "name": "title",
4982
+ "type": "string",
4983
+ "desc": "H1, up to 60 characters"
4984
+ },
4985
+ {
4986
+ "name": "subtitle",
4987
+ "type": "string?",
4988
+ "desc": "Gray caption below the heading"
4989
+ },
4990
+ {
4991
+ "name": "crumbs",
4992
+ "type": "{label,href?}[]",
4993
+ "desc": "Breadcrumbs"
4994
+ },
4995
+ {
4996
+ "name": "actions",
4997
+ "type": "VNode",
4998
+ "desc": "Buttons on the right; wrap below on a narrow screen"
4999
+ }
5000
+ ],
5001
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
5002
+ },
5003
+ {
5004
+ "id": "trip",
5005
+ "title": "Trip summary",
5006
+ "desc": "Dates, route, seats and readiness counters.",
5007
+ "accepts": [
5008
+ "Card",
5009
+ "StatStrip",
5010
+ "Progress"
5011
+ ],
5012
+ "props": [
5013
+ {
5014
+ "name": "content",
5015
+ "type": "VNode",
5016
+ "desc": ""
5017
+ }
5018
+ ],
5019
+ "use": "<UiStatStrip :items=\"stats\" />"
5020
+ },
5021
+ {
5022
+ "id": "toolbar",
5023
+ "title": "Toolbar",
5024
+ "desc": "Search and status filters.",
5025
+ "accepts": [
5026
+ "SearchInput",
5027
+ "FilterChips"
5028
+ ],
5029
+ "props": [
5030
+ {
5031
+ "name": "content",
5032
+ "type": "VNode",
5033
+ "desc": ""
5034
+ }
5035
+ ],
5036
+ "use": "<UiSearchInput v-model=\"q\" />"
5037
+ },
5038
+ {
5039
+ "id": "bulk",
5040
+ "title": "Bulk actions",
5041
+ "desc": "Shown when pilgrims are selected.",
5042
+ "accepts": [
5043
+ "Button",
5044
+ "Badge"
5045
+ ],
5046
+ "props": [
5047
+ {
5048
+ "name": "content",
5049
+ "type": "VNode",
5050
+ "desc": ""
5051
+ }
5052
+ ],
5053
+ "use": "<UiButton icon=\"send\">Remind selected</UiButton>"
5054
+ },
5055
+ {
5056
+ "id": "pilgrims",
5057
+ "title": "Pilgrims",
5058
+ "desc": "Table with passport, visa and payment status.",
5059
+ "accepts": [
5060
+ "Card",
5061
+ "DataTable",
5062
+ "Badge"
5063
+ ],
5064
+ "props": [
5065
+ {
5066
+ "name": "content",
5067
+ "type": "VNode",
5068
+ "desc": ""
5069
+ }
5070
+ ],
5071
+ "use": "<UiDataTable :columns=\"cols\" :rows=\"rows\" />"
5072
+ },
5073
+ {
5074
+ "id": "rooms",
5075
+ "title": "Rooming",
5076
+ "desc": "Room assignment for the hotel.",
5077
+ "accepts": [
5078
+ "Card",
5079
+ "RoomGrid"
5080
+ ],
5081
+ "props": [
5082
+ {
5083
+ "name": "content",
5084
+ "type": "VNode",
5085
+ "desc": ""
5086
+ }
5087
+ ],
5088
+ "use": "<UiRoomGrid :rooms=\"rooms\" />"
5089
+ },
5090
+ {
5091
+ "id": "payments",
5092
+ "title": "Payments",
5093
+ "desc": "Collected, outstanding and the manager contact.",
5094
+ "accepts": [
5095
+ "Card",
5096
+ "Progress",
5097
+ "ContactPanel"
5098
+ ],
5099
+ "props": [
5100
+ {
5101
+ "name": "content",
5102
+ "type": "VNode",
5103
+ "desc": ""
5104
+ }
5105
+ ],
5106
+ "use": "<UiCard title=\"Payments\">…</UiCard>"
5107
+ }
5108
+ ]
5109
+ },
5110
+ {
5111
+ "key": "tour-public",
5112
+ "route": "tour-public",
5113
+ "label": "Tour page",
5114
+ "icon": "plane",
5115
+ "desc": "Public tour page without the shell: gradient gallery, highlights, itinerary, inclusions, reviews and a sticky booking card.",
5116
+ "component": "PageTourPublic",
5117
+ "tpl": "TplTourPublic",
5118
+ "shell": false,
5119
+ "slots": [
5120
+ {
5121
+ "id": "header",
5122
+ "title": "Page heading",
5123
+ "desc": "Breadcrumbs, heading, caption and action buttons on the right.",
5124
+ "accepts": [
5125
+ "PageHeader",
5126
+ "Breadcrumbs",
5127
+ "Button",
5128
+ "SegmentedControl"
5129
+ ],
5130
+ "props": [
5131
+ {
5132
+ "name": "title",
5133
+ "type": "string",
5134
+ "desc": "H1, up to 60 characters"
5135
+ },
5136
+ {
5137
+ "name": "subtitle",
5138
+ "type": "string?",
5139
+ "desc": "Gray caption below the heading"
5140
+ },
5141
+ {
5142
+ "name": "crumbs",
5143
+ "type": "{label,href?}[]",
5144
+ "desc": "Breadcrumbs"
5145
+ },
5146
+ {
5147
+ "name": "actions",
5148
+ "type": "VNode",
5149
+ "desc": "Buttons on the right; wrap below on a narrow screen"
5150
+ }
5151
+ ],
5152
+ "use": "<UiPageHeader title=\"Dashboard\" :crumbs=\"crumbs\">\n <template #actions><UiButton variant=\"primary\">Export</UiButton></template>\n</UiPageHeader>"
5153
+ },
5154
+ {
5155
+ "id": "gallery",
5156
+ "title": "Gallery",
5157
+ "desc": "Hero area made of gradients or photos.",
5158
+ "accepts": [
5159
+ "Gallery",
5160
+ "Card"
5161
+ ],
5162
+ "props": [
5163
+ {
5164
+ "name": "content",
5165
+ "type": "VNode",
5166
+ "desc": ""
5167
+ }
5168
+ ],
5169
+ "use": "<UiCard>…</UiCard>"
5170
+ },
5171
+ {
5172
+ "id": "highlights",
5173
+ "title": "Highlights",
5174
+ "desc": "Key facts: nights, hotels, flights.",
5175
+ "accepts": [
5176
+ "StatStrip",
5177
+ "IconTile"
5178
+ ],
5179
+ "props": [
5180
+ {
5181
+ "name": "content",
5182
+ "type": "VNode",
5183
+ "desc": ""
5184
+ }
5185
+ ],
5186
+ "use": "<UiStatStrip :items=\"facts\" />"
5187
+ },
5188
+ {
5189
+ "id": "itinerary",
5190
+ "title": "Itinerary",
5191
+ "desc": "Day by day program in an accordion.",
5192
+ "accepts": [
5193
+ "Accordion"
5194
+ ],
5195
+ "props": [
5196
+ {
5197
+ "name": "content",
5198
+ "type": "VNode",
5199
+ "desc": ""
5200
+ }
5201
+ ],
5202
+ "use": "<UiAccordion :items=\"days\" />"
5203
+ },
5204
+ {
5205
+ "id": "included",
5206
+ "title": "Included",
5207
+ "desc": "What the price includes and excludes.",
5208
+ "accepts": [
5209
+ "Card",
5210
+ "Descriptions"
5211
+ ],
5212
+ "props": [
5213
+ {
5214
+ "name": "content",
5215
+ "type": "VNode",
5216
+ "desc": ""
5217
+ }
5218
+ ],
5219
+ "use": "<UiCard title=\"Included\">…</UiCard>"
5220
+ },
5221
+ {
5222
+ "id": "reviews",
5223
+ "title": "Reviews",
5224
+ "desc": "What pilgrims say.",
5225
+ "accepts": [
5226
+ "Card",
5227
+ "Rating",
5228
+ "Avatar"
5229
+ ],
5230
+ "props": [
5231
+ {
5232
+ "name": "content",
5233
+ "type": "VNode",
5234
+ "desc": ""
5235
+ }
5236
+ ],
5237
+ "use": "<UiCard title=\"Reviews\">…</UiCard>"
5238
+ },
5239
+ {
5240
+ "id": "booking",
5241
+ "title": "Booking",
5242
+ "desc": "Price, dates, seats and the booking button.",
5243
+ "accepts": [
5244
+ "Card",
5245
+ "Button"
5246
+ ],
5247
+ "props": [
5248
+ {
5249
+ "name": "content",
5250
+ "type": "VNode",
5251
+ "desc": ""
5252
+ }
5253
+ ],
5254
+ "use": "<UiCard title=\"Book\">…</UiCard>"
5255
+ }
5256
+ ]
3867
5257
  }
3868
5258
  ]
3869
- }
5259
+ }