@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
package/types/react.d.ts CHANGED
@@ -2618,6 +2618,11 @@ export interface UiLoginFormProps {
2618
2618
  * @default true
2619
2619
  */
2620
2620
  showForgot?: boolean;
2621
+ /**
2622
+ * Show the "Remember device" checkbox. Hide it when your backend has no such option; the submit payload then keeps remember: true.
2623
+ * @default true
2624
+ */
2625
+ showRemember?: boolean;
2621
2626
  /**
2622
2627
  * Submit button text. Wins over labels.submit.
2623
2628
  * @default Sign in
@@ -3150,6 +3155,66 @@ export interface UiPageAnalyticsProps {
3150
3155
  }
3151
3156
  export const UiPageAnalytics: ComponentType<UiPageAnalyticsProps>;
3152
3157
 
3158
+ /**
3159
+ * Article template: cover, post body, sticky table of contents, share row and related posts.
3160
+ * Note: Place inside AppShell; fill only the slots you need.
3161
+ * Note: Body, share and related share the main column; the table of contents stays visible on the right while the body scrolls and drops under the body below 860 px.
3162
+ */
3163
+ export interface UiPageArticleProps {
3164
+ /**
3165
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
3166
+ * @remarks Forwarded to the inner element.
3167
+ */
3168
+ title?: string;
3169
+ /**
3170
+ * Caption under the heading.
3171
+ * @remarks Forwarded to the inner element.
3172
+ */
3173
+ subtitle?: string;
3174
+ /**
3175
+ * Breadcrumb trail above the title.
3176
+ * @remarks Forwarded to the inner element.
3177
+ */
3178
+ crumbs?: { label: string; href?: string }[];
3179
+ /**
3180
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
3181
+ * @slot header (React: pass as a prop)
3182
+ */
3183
+ header?: ReactNode;
3184
+ /**
3185
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
3186
+ * @slot actions (React: pass as a prop)
3187
+ */
3188
+ actions?: ReactNode;
3189
+ /**
3190
+ * Cover image area with title and author line; a gradient Card or LazyImage.
3191
+ * @slot cover (React: pass as a prop)
3192
+ */
3193
+ cover?: ReactNode;
3194
+ /**
3195
+ * Article text; Heading, Text, Code, Alert.
3196
+ * @slot body (React: pass as a prop)
3197
+ */
3198
+ body?: ReactNode;
3199
+ /**
3200
+ * Sticky table of contents; Card with a list of anchor links.
3201
+ * @slot toc (React: pass as a prop)
3202
+ */
3203
+ toc?: ReactNode;
3204
+ /**
3205
+ * Share and reaction row; Button, IconButton, CopyButton.
3206
+ * @slot share (React: pass as a prop)
3207
+ */
3208
+ share?: ReactNode;
3209
+ /**
3210
+ * Related posts; Card grid.
3211
+ * @slot related (React: pass as a prop)
3212
+ */
3213
+ related?: ReactNode;
3214
+ children?: ReactNode;
3215
+ }
3216
+ export const UiPageArticle: ComponentType<UiPageArticleProps>;
3217
+
3153
3218
  /**
3154
3219
  * Sign-in page template without the app shell, as a centered card or a split layout.
3155
3220
  * Note: Designed for the dark theme and used without AppShell.
@@ -3300,6 +3365,61 @@ export interface UiPageBillingProps {
3300
3365
  }
3301
3366
  export const UiPageBilling: ComponentType<UiPageBillingProps>;
3302
3367
 
3368
+ /**
3369
+ * Booking flow template: stepper, the active step content, back and continue buttons and a sticky summary card.
3370
+ * Note: Place inside AppShell; fill only the slots you need.
3371
+ * Note: Render only the active step in content. The summary stays visible on the right and goes below the step under 860 px.
3372
+ */
3373
+ export interface UiPageBookingFlowProps {
3374
+ /**
3375
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
3376
+ * @remarks Forwarded to the inner element.
3377
+ */
3378
+ title?: string;
3379
+ /**
3380
+ * Caption under the heading.
3381
+ * @remarks Forwarded to the inner element.
3382
+ */
3383
+ subtitle?: string;
3384
+ /**
3385
+ * Breadcrumb trail above the title.
3386
+ * @remarks Forwarded to the inner element.
3387
+ */
3388
+ crumbs?: { label: string; href?: string }[];
3389
+ /**
3390
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
3391
+ * @slot header (React: pass as a prop)
3392
+ */
3393
+ header?: ReactNode;
3394
+ /**
3395
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
3396
+ * @slot actions (React: pass as a prop)
3397
+ */
3398
+ actions?: ReactNode;
3399
+ /**
3400
+ * Progress; Stepper.
3401
+ * @slot steps (React: pass as a prop)
3402
+ */
3403
+ steps?: ReactNode;
3404
+ /**
3405
+ * Content of the active step (search, pick, guests, confirm); Card, DatePicker, OptionCards, NumberInput.
3406
+ * @slot content (React: pass as a prop)
3407
+ */
3408
+ content?: ReactNode;
3409
+ /**
3410
+ * Back and Continue buttons.
3411
+ * @slot nav (React: pass as a prop)
3412
+ */
3413
+ nav?: ReactNode;
3414
+ /**
3415
+ * Booking summary; Card, Descriptions.
3416
+ * @slot summary (React: pass as a prop)
3417
+ */
3418
+ summary?: ReactNode;
3419
+ children?: ReactNode;
3420
+ }
3421
+ export const UiPageBookingFlow: ComponentType<UiPageBookingFlowProps>;
3422
+
3303
3423
  /**
3304
3424
  * Bookings list template: stats, toolbar, bulk-action bar, table and pagination.
3305
3425
  * Note: Place inside AppShell; fill only the slots you need.
@@ -3469,6 +3589,56 @@ export interface UiPageCatalogProps {
3469
3589
  }
3470
3590
  export const UiPageCatalog: ComponentType<UiPageCatalogProps>;
3471
3591
 
3592
+ /**
3593
+ * Changelog template: release timeline grouped by version with new, fix and improved tags, a filter and a subscribe card.
3594
+ * Note: Place inside AppShell; fill only the slots you need.
3595
+ * Note: Filters and timeline share the main column; the subscribe card is a sticky side column.
3596
+ */
3597
+ export interface UiPageChangelogProps {
3598
+ /**
3599
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
3600
+ * @remarks Forwarded to the inner element.
3601
+ */
3602
+ title?: string;
3603
+ /**
3604
+ * Caption under the heading.
3605
+ * @remarks Forwarded to the inner element.
3606
+ */
3607
+ subtitle?: string;
3608
+ /**
3609
+ * Breadcrumb trail above the title.
3610
+ * @remarks Forwarded to the inner element.
3611
+ */
3612
+ crumbs?: { label: string; href?: string }[];
3613
+ /**
3614
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
3615
+ * @slot header (React: pass as a prop)
3616
+ */
3617
+ header?: ReactNode;
3618
+ /**
3619
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
3620
+ * @slot actions (React: pass as a prop)
3621
+ */
3622
+ actions?: ReactNode;
3623
+ /**
3624
+ * Tag filter; FilterChips, SearchInput.
3625
+ * @slot filters (React: pass as a prop)
3626
+ */
3627
+ filters?: ReactNode;
3628
+ /**
3629
+ * Releases grouped by version; Card, Chip, Divider.
3630
+ * @slot timeline (React: pass as a prop)
3631
+ */
3632
+ timeline?: ReactNode;
3633
+ /**
3634
+ * Sticky subscribe card; Card, TextField, Button.
3635
+ * @slot subscribe (React: pass as a prop)
3636
+ */
3637
+ subscribe?: ReactNode;
3638
+ children?: ReactNode;
3639
+ }
3640
+ export const UiPageChangelog: ComponentType<UiPageChangelogProps>;
3641
+
3472
3642
  /**
3473
3643
  * Checkout template: step indicator, cart items, delivery address, payment and an order summary column.
3474
3644
  * Note: Place inside AppShell; fill only the slots you need.
@@ -3811,6 +3981,71 @@ export interface UiPageFormProps {
3811
3981
  }
3812
3982
  export const UiPageForm: ComponentType<UiPageFormProps>;
3813
3983
 
3984
+ /**
3985
+ * Group manager template: trip summary, pilgrims table with document and visa status, bulk actions, rooming and a sticky payments summary.
3986
+ * Note: Place inside AppShell; fill only the slots you need.
3987
+ * Note: The payments card stays visible on the right and goes below the table under 860 px.
3988
+ */
3989
+ export interface UiPageGroupManagerProps {
3990
+ /**
3991
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
3992
+ * @remarks Forwarded to the inner element.
3993
+ */
3994
+ title?: string;
3995
+ /**
3996
+ * Caption under the heading.
3997
+ * @remarks Forwarded to the inner element.
3998
+ */
3999
+ subtitle?: string;
4000
+ /**
4001
+ * Breadcrumb trail above the title.
4002
+ * @remarks Forwarded to the inner element.
4003
+ */
4004
+ crumbs?: { label: string; href?: string }[];
4005
+ /**
4006
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4007
+ * @slot header (React: pass as a prop)
4008
+ */
4009
+ header?: ReactNode;
4010
+ /**
4011
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4012
+ * @slot actions (React: pass as a prop)
4013
+ */
4014
+ actions?: ReactNode;
4015
+ /**
4016
+ * Trip header with dates, route and counters; Card, StatStrip, Progress.
4017
+ * @slot trip (React: pass as a prop)
4018
+ */
4019
+ trip?: ReactNode;
4020
+ /**
4021
+ * Search and status filters; SearchInput, FilterChips.
4022
+ * @slot toolbar (React: pass as a prop)
4023
+ */
4024
+ toolbar?: ReactNode;
4025
+ /**
4026
+ * Actions for the selected pilgrims; Button, Badge.
4027
+ * @slot bulk (React: pass as a prop)
4028
+ */
4029
+ bulk?: ReactNode;
4030
+ /**
4031
+ * Pilgrims table with documents and visa; Card, DataTable, Badge.
4032
+ * @slot pilgrims (React: pass as a prop)
4033
+ */
4034
+ pilgrims?: ReactNode;
4035
+ /**
4036
+ * Rooming assignment; Card, RoomGrid.
4037
+ * @slot rooms (React: pass as a prop)
4038
+ */
4039
+ rooms?: ReactNode;
4040
+ /**
4041
+ * Payments summary and manager contact; Card, Progress, ContactPanel.
4042
+ * @slot payments (React: pass as a prop)
4043
+ */
4044
+ payments?: ReactNode;
4045
+ children?: ReactNode;
4046
+ }
4047
+ export const UiPageGroupManager: ComponentType<UiPageGroupManagerProps>;
4048
+
3814
4049
  /** Page title block with optional breadcrumbs, subtitle and an actions area. */
3815
4050
  export interface UiPageHeaderProps {
3816
4051
  /** Page title (rendered as h1). */
@@ -3833,6 +4068,61 @@ export interface UiPageHeaderProps {
3833
4068
  }
3834
4069
  export const UiPageHeader: ComponentType<UiPageHeaderProps>;
3835
4070
 
4071
+ /**
4072
+ * Help center home: search, category grid, popular articles and a contact card.
4073
+ * Note: Place inside AppShell; fill only the slots you need.
4074
+ * Note: Popular articles and contact share a row and wrap on narrow screens. For a single question list use PageFaq.
4075
+ */
4076
+ export interface UiPageHelpProps {
4077
+ /**
4078
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
4079
+ * @remarks Forwarded to the inner element.
4080
+ */
4081
+ title?: string;
4082
+ /**
4083
+ * Caption under the heading.
4084
+ * @remarks Forwarded to the inner element.
4085
+ */
4086
+ subtitle?: string;
4087
+ /**
4088
+ * Breadcrumb trail above the title.
4089
+ * @remarks Forwarded to the inner element.
4090
+ */
4091
+ crumbs?: { label: string; href?: string }[];
4092
+ /**
4093
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4094
+ * @slot header (React: pass as a prop)
4095
+ */
4096
+ header?: ReactNode;
4097
+ /**
4098
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4099
+ * @slot actions (React: pass as a prop)
4100
+ */
4101
+ actions?: ReactNode;
4102
+ /**
4103
+ * Large search field; SearchInput.
4104
+ * @slot search (React: pass as a prop)
4105
+ */
4106
+ search?: ReactNode;
4107
+ /**
4108
+ * Category tiles; Card with IconTile.
4109
+ * @slot categories (React: pass as a prop)
4110
+ */
4111
+ categories?: ReactNode;
4112
+ /**
4113
+ * Popular articles list; Card.
4114
+ * @slot popular (React: pass as a prop)
4115
+ */
4116
+ popular?: ReactNode;
4117
+ /**
4118
+ * Contact options; Card, Button.
4119
+ * @slot contact (React: pass as a prop)
4120
+ */
4121
+ contact?: ReactNode;
4122
+ children?: ReactNode;
4123
+ }
4124
+ export const UiPageHelp: ComponentType<UiPageHelpProps>;
4125
+
3836
4126
  /**
3837
4127
  * Inbox template: filters and conversation list, the open thread with a composer, and a customer panel.
3838
4128
  * Note: Place inside AppShell; fill only the slots you need.
@@ -3948,6 +4238,66 @@ export interface UiPageIntegrationsProps {
3948
4238
  }
3949
4239
  export const UiPageIntegrations: ComponentType<UiPageIntegrationsProps>;
3950
4240
 
4241
+ /**
4242
+ * Itinerary template: day tabs, a timeline of stops for the chosen day, transport and hotel blocks and a sticky trip summary card.
4243
+ * Note: Place inside AppShell; fill only the slots you need.
4244
+ * Note: Render only the active day in timeline, transport and hotel. The summary stays visible on the right and goes below the day under 860 px.
4245
+ */
4246
+ export interface UiPageItineraryProps {
4247
+ /**
4248
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
4249
+ * @remarks Forwarded to the inner element.
4250
+ */
4251
+ title?: string;
4252
+ /**
4253
+ * Caption under the heading.
4254
+ * @remarks Forwarded to the inner element.
4255
+ */
4256
+ subtitle?: string;
4257
+ /**
4258
+ * Breadcrumb trail above the title.
4259
+ * @remarks Forwarded to the inner element.
4260
+ */
4261
+ crumbs?: { label: string; href?: string }[];
4262
+ /**
4263
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4264
+ * @slot header (React: pass as a prop)
4265
+ */
4266
+ header?: ReactNode;
4267
+ /**
4268
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4269
+ * @slot actions (React: pass as a prop)
4270
+ */
4271
+ actions?: ReactNode;
4272
+ /**
4273
+ * Day switcher; Tabs or PillTabs.
4274
+ * @slot days (React: pass as a prop)
4275
+ */
4276
+ days?: ReactNode;
4277
+ /**
4278
+ * Stops of the active day with times and places; Card, Timeline, StatRow.
4279
+ * @slot timeline (React: pass as a prop)
4280
+ */
4281
+ timeline?: ReactNode;
4282
+ /**
4283
+ * Flights, buses and transfers of the day; Card, StatRow.
4284
+ * @slot transport (React: pass as a prop)
4285
+ */
4286
+ transport?: ReactNode;
4287
+ /**
4288
+ * Where the group stays that night; Card, Badge, IconTile.
4289
+ * @slot hotel (React: pass as a prop)
4290
+ */
4291
+ hotel?: ReactNode;
4292
+ /**
4293
+ * Trip summary; Card, Descriptions, Progress.
4294
+ * @slot summary (React: pass as a prop)
4295
+ */
4296
+ summary?: ReactNode;
4297
+ children?: ReactNode;
4298
+ }
4299
+ export const UiPageItinerary: ComponentType<UiPageItineraryProps>;
4300
+
3951
4301
  /**
3952
4302
  * Kanban template: filters, task board columns and a card detail panel.
3953
4303
  * Note: Place inside AppShell; fill only the slots you need.
@@ -4042,6 +4392,111 @@ export interface UiPageLandingProps {
4042
4392
  }
4043
4393
  export const UiPageLanding: ComponentType<UiPageLandingProps>;
4044
4394
 
4395
+ /**
4396
+ * Legal document template: last-updated line, sticky table of contents, numbered sections and a contact card.
4397
+ * Note: Place inside AppShell; fill only the slots you need.
4398
+ * Note: The table of contents sits left of the document and stacks above it under 860 px.
4399
+ */
4400
+ export interface UiPageLegalProps {
4401
+ /**
4402
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
4403
+ * @remarks Forwarded to the inner element.
4404
+ */
4405
+ title?: string;
4406
+ /**
4407
+ * Caption under the heading.
4408
+ * @remarks Forwarded to the inner element.
4409
+ */
4410
+ subtitle?: string;
4411
+ /**
4412
+ * Breadcrumb trail above the title.
4413
+ * @remarks Forwarded to the inner element.
4414
+ */
4415
+ crumbs?: { label: string; href?: string }[];
4416
+ /**
4417
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4418
+ * @slot header (React: pass as a prop)
4419
+ */
4420
+ header?: ReactNode;
4421
+ /**
4422
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4423
+ * @slot actions (React: pass as a prop)
4424
+ */
4425
+ actions?: ReactNode;
4426
+ /**
4427
+ * Version, last-updated date and print or download buttons; Chip, Button.
4428
+ * @slot meta (React: pass as a prop)
4429
+ */
4430
+ meta?: ReactNode;
4431
+ /**
4432
+ * Sticky table of contents; Card with anchor links.
4433
+ * @slot toc (React: pass as a prop)
4434
+ */
4435
+ toc?: ReactNode;
4436
+ /**
4437
+ * Document sections; Card, Heading, Text.
4438
+ * @slot document (React: pass as a prop)
4439
+ */
4440
+ document?: ReactNode;
4441
+ /**
4442
+ * Questions card; Card, Button.
4443
+ * @slot contact (React: pass as a prop)
4444
+ */
4445
+ contact?: ReactNode;
4446
+ children?: ReactNode;
4447
+ }
4448
+ export const UiPageLegal: ComponentType<UiPageLegalProps>;
4449
+
4450
+ /**
4451
+ * Locations template: filters, a scrollable list of places and a sticky map panel.
4452
+ * Note: Place inside AppShell; fill only the slots you need.
4453
+ * Note: The list is a fixed-width column left of the map; under 860 px the map goes below the list.
4454
+ */
4455
+ export interface UiPageLocationsProps {
4456
+ /**
4457
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
4458
+ * @remarks Forwarded to the inner element.
4459
+ */
4460
+ title?: string;
4461
+ /**
4462
+ * Caption under the heading.
4463
+ * @remarks Forwarded to the inner element.
4464
+ */
4465
+ subtitle?: string;
4466
+ /**
4467
+ * Breadcrumb trail above the title.
4468
+ * @remarks Forwarded to the inner element.
4469
+ */
4470
+ crumbs?: { label: string; href?: string }[];
4471
+ /**
4472
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4473
+ * @slot header (React: pass as a prop)
4474
+ */
4475
+ header?: ReactNode;
4476
+ /**
4477
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4478
+ * @slot actions (React: pass as a prop)
4479
+ */
4480
+ actions?: ReactNode;
4481
+ /**
4482
+ * Search and category filters; SearchInput, FilterChips.
4483
+ * @slot filters (React: pass as a prop)
4484
+ */
4485
+ filters?: ReactNode;
4486
+ /**
4487
+ * Places list; Card rows.
4488
+ * @slot list (React: pass as a prop)
4489
+ */
4490
+ list?: ReactNode;
4491
+ /**
4492
+ * Map panel; Map, or a gradient placeholder.
4493
+ * @slot map (React: pass as a prop)
4494
+ */
4495
+ map?: ReactNode;
4496
+ children?: ReactNode;
4497
+ }
4498
+ export const UiPageLocations: ComponentType<UiPageLocationsProps>;
4499
+
4045
4500
  /**
4046
4501
  * Notifications template: filters, a feed grouped by day and an empty state. Put Mark all read in actions.
4047
4502
  * Note: Place inside AppShell; fill only the slots you need.
@@ -4290,6 +4745,61 @@ export interface UiPagePatternsProps {
4290
4745
  }
4291
4746
  export const UiPagePatterns: ComponentType<UiPagePatternsProps>;
4292
4747
 
4748
+ /**
4749
+ * Prayer times template: a location picker, today's times with the next prayer highlighted, a month table and a sticky Qibla compass.
4750
+ * Note: Place inside AppShell; fill only the slots you need.
4751
+ * Note: The Qibla card stays visible on the right and goes below the times under 860 px.
4752
+ */
4753
+ export interface UiPagePrayerProps {
4754
+ /**
4755
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
4756
+ * @remarks Forwarded to the inner element.
4757
+ */
4758
+ title?: string;
4759
+ /**
4760
+ * Caption under the heading.
4761
+ * @remarks Forwarded to the inner element.
4762
+ */
4763
+ subtitle?: string;
4764
+ /**
4765
+ * Breadcrumb trail above the title.
4766
+ * @remarks Forwarded to the inner element.
4767
+ */
4768
+ crumbs?: { label: string; href?: string }[];
4769
+ /**
4770
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
4771
+ * @slot header (React: pass as a prop)
4772
+ */
4773
+ header?: ReactNode;
4774
+ /**
4775
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
4776
+ * @slot actions (React: pass as a prop)
4777
+ */
4778
+ actions?: ReactNode;
4779
+ /**
4780
+ * City and method pickers; Select, PillSelect, SegmentedControl.
4781
+ * @slot location (React: pass as a prop)
4782
+ */
4783
+ location?: ReactNode;
4784
+ /**
4785
+ * Today's prayers and the countdown to the next one; Card, PrayerTimes.
4786
+ * @slot today (React: pass as a prop)
4787
+ */
4788
+ today?: ReactNode;
4789
+ /**
4790
+ * Prayer times for the whole month; Card, DataTable.
4791
+ * @slot month (React: pass as a prop)
4792
+ */
4793
+ month?: ReactNode;
4794
+ /**
4795
+ * Qibla direction; Card, QiblaCompass.
4796
+ * @slot qibla (React: pass as a prop)
4797
+ */
4798
+ qibla?: ReactNode;
4799
+ children?: ReactNode;
4800
+ }
4801
+ export const UiPagePrayer: ComponentType<UiPagePrayerProps>;
4802
+
4293
4803
  /**
4294
4804
  * Pricing template: billing-period toggle, plan cards and an FAQ.
4295
4805
  * Note: Place inside AppShell; fill only the slots you need.
@@ -4512,6 +5022,76 @@ export interface UiPageSettingsProps {
4512
5022
  }
4513
5023
  export const UiPageSettings: ComponentType<UiPageSettingsProps>;
4514
5024
 
5025
+ /**
5026
+ * State gallery: empty list, no results, no permission, offline, error with retry, loading and success on one page.
5027
+ * Note: Place inside AppShell; fill only the slots you need.
5028
+ * Note: The first six slots sit in two rows of auto-fit cards; success spans the full width.
5029
+ */
5030
+ export interface UiPageStatesProps {
5031
+ /**
5032
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
5033
+ * @remarks Forwarded to the inner element.
5034
+ */
5035
+ title?: string;
5036
+ /**
5037
+ * Caption under the heading.
5038
+ * @remarks Forwarded to the inner element.
5039
+ */
5040
+ subtitle?: string;
5041
+ /**
5042
+ * Breadcrumb trail above the title.
5043
+ * @remarks Forwarded to the inner element.
5044
+ */
5045
+ crumbs?: { label: string; href?: string }[];
5046
+ /**
5047
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
5048
+ * @slot header (React: pass as a prop)
5049
+ */
5050
+ header?: ReactNode;
5051
+ /**
5052
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
5053
+ * @slot actions (React: pass as a prop)
5054
+ */
5055
+ actions?: ReactNode;
5056
+ /**
5057
+ * Empty list; EmptyState with a primary action.
5058
+ * @slot empty (React: pass as a prop)
5059
+ */
5060
+ empty?: ReactNode;
5061
+ /**
5062
+ * No search results; EmptyState with a reset action.
5063
+ * @slot noresults (React: pass as a prop)
5064
+ */
5065
+ noresults?: ReactNode;
5066
+ /**
5067
+ * No permission; EmptyState with a request-access action.
5068
+ * @slot forbidden (React: pass as a prop)
5069
+ */
5070
+ forbidden?: ReactNode;
5071
+ /**
5072
+ * Offline; DataState state="offline".
5073
+ * @slot offline (React: pass as a prop)
5074
+ */
5075
+ offline?: ReactNode;
5076
+ /**
5077
+ * Error with retry; DataState state="error".
5078
+ * @slot error (React: pass as a prop)
5079
+ */
5080
+ error?: ReactNode;
5081
+ /**
5082
+ * Loading; Skeleton or DataState state="loading".
5083
+ * @slot loading (React: pass as a prop)
5084
+ */
5085
+ loading?: ReactNode;
5086
+ /**
5087
+ * Success confirmation; Alert tone="success" or EmptyState.
5088
+ * @slot success (React: pass as a prop)
5089
+ */
5090
+ success?: ReactNode;
5091
+ children?: ReactNode;
5092
+ }
5093
+ export const UiPageStates: ComponentType<UiPageStatesProps>;
5094
+
4515
5095
  /**
4516
5096
  * Full-page status screen (404, 401, maintenance, coming soon) with one action.
4517
5097
  * Note: Slots replace only their own part: fill message and the preset code and button remain; kind, title, description, onAction and actionLabel apply to the parts whose slot is empty.
@@ -4632,6 +5212,71 @@ export interface UiPageTeamProps {
4632
5212
  }
4633
5213
  export const UiPageTeam: ComponentType<UiPageTeamProps>;
4634
5214
 
5215
+ /**
5216
+ * Public tour page: header, gradient gallery area, highlights, itinerary accordion, included and excluded lists, reviews and a sticky price and booking card. Has no shell and follows the theme.
5217
+ * Note: Render the page on its own, without AppShell: it supplies its own width and padding in your layout.
5218
+ * Note: The booking card stays visible on the right and goes below the content under 860 px.
5219
+ */
5220
+ export interface UiPageTourPublicProps {
5221
+ /**
5222
+ * Page heading. The built-in header renders only when title is set and the header slot is empty.
5223
+ * @remarks Forwarded to the inner element.
5224
+ */
5225
+ title?: string;
5226
+ /**
5227
+ * Caption under the heading.
5228
+ * @remarks Forwarded to the inner element.
5229
+ */
5230
+ subtitle?: string;
5231
+ /**
5232
+ * Breadcrumb trail above the title.
5233
+ * @remarks Forwarded to the inner element.
5234
+ */
5235
+ crumbs?: { label: string; href?: string }[];
5236
+ /**
5237
+ * Custom page header; replaces the built-in title/subtitle/crumbs header.
5238
+ * @slot header (React: pass as a prop)
5239
+ */
5240
+ header?: ReactNode;
5241
+ /**
5242
+ * Buttons on the right of the built-in header. With a title they sit beside it; without a title they render alone, right-aligned (unless the header slot is filled).
5243
+ * @slot actions (React: pass as a prop)
5244
+ */
5245
+ actions?: ReactNode;
5246
+ /**
5247
+ * Hero area made of gradients or photos; Gallery, Card.
5248
+ * @slot gallery (React: pass as a prop)
5249
+ */
5250
+ gallery?: ReactNode;
5251
+ /**
5252
+ * Key facts and highlights; StatStrip, IconTile.
5253
+ * @slot highlights (React: pass as a prop)
5254
+ */
5255
+ highlights?: ReactNode;
5256
+ /**
5257
+ * Day by day program; Accordion.
5258
+ * @slot itinerary (React: pass as a prop)
5259
+ */
5260
+ itinerary?: ReactNode;
5261
+ /**
5262
+ * What the price includes and excludes; Card, Descriptions.
5263
+ * @slot included (React: pass as a prop)
5264
+ */
5265
+ included?: ReactNode;
5266
+ /**
5267
+ * Pilgrim reviews; Card, Rating, Avatar.
5268
+ * @slot reviews (React: pass as a prop)
5269
+ */
5270
+ reviews?: ReactNode;
5271
+ /**
5272
+ * Price, dates, seats and the booking button; Card, Button.
5273
+ * @slot booking (React: pass as a prop)
5274
+ */
5275
+ booking?: ReactNode;
5276
+ children?: ReactNode;
5277
+ }
5278
+ export const UiPageTourPublic: ComponentType<UiPageTourPublicProps>;
5279
+
4635
5280
  /**
4636
5281
  * User or customer list template: stats, filters, toolbar, table and a right-hand add/edit drawer.
4637
5282
  * Note: Place inside AppShell; fill only the slots you need.
@@ -4765,6 +5410,21 @@ export interface UiPasswordInputProps {
4765
5410
  * @remarks Forwarded to the inner element.
4766
5411
  */
4767
5412
  error?: string;
5413
+ /**
5414
+ * Adds a red asterisk to the label and the native required attribute.
5415
+ * @default false
5416
+ */
5417
+ required?: boolean;
5418
+ /**
5419
+ * Native name attribute of the input.
5420
+ * @remarks Forwarded to the inner element.
5421
+ */
5422
+ name?: string;
5423
+ /**
5424
+ * Focuses the input on mount.
5425
+ * @remarks Forwarded to the inner element.
5426
+ */
5427
+ autofocus?: boolean;
4768
5428
  /**
4769
5429
  * Native autocomplete token. Use "new-password" on sign-up and password-change forms so managers offer to generate one.
4770
5430
  * @default 'current-password'
@@ -5112,6 +5772,32 @@ export interface UiProgressProps {
5112
5772
  }
5113
5773
  export const UiProgress: ComponentType<UiProgressProps>;
5114
5774
 
5775
+ /**
5776
+ * Compass dial with a Kaaba marker pointing to the Qibla and the bearing in degrees below it.
5777
+ * Note: Exposed as role="img" with a label that states the bearing. Compute the bearing and heading yourself (geolocation and DeviceOrientation); the component only draws them.
5778
+ */
5779
+ export interface UiQiblaCompassProps {
5780
+ /**
5781
+ * Qibla bearing in degrees clockwise from true north, 0 to 360; other values wrap.
5782
+ * @default 0
5783
+ */
5784
+ bearing: number;
5785
+ /**
5786
+ * Direction the device points to, in degrees. The dial turns against it so the marker follows the real Qibla; 0 keeps north up.
5787
+ * @default 0
5788
+ */
5789
+ heading?: number;
5790
+ /** Optional small caption under the bearing, such as "4 210 km to the Kaaba". */
5791
+ distance?: string;
5792
+ /**
5793
+ * Diameter: xs 120, sm 160, md 200, lg 250, xl 300 px; a number is used as px.
5794
+ * @default 'md'
5795
+ */
5796
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
5797
+ children?: ReactNode;
5798
+ }
5799
+ export const UiQiblaCompass: ComponentType<UiQiblaCompassProps>;
5800
+
5115
5801
  /** Group of radio options with optional hints. Use for a short single-choice list that should stay visible. */
5116
5802
  export interface UiRadioGroupProps {
5117
5803
  /** Value of the selected option. */