@almadar/std 16.228.0 → 16.230.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 (170) hide show
  1. package/behaviors/behaviors-registry.json +97602 -98073
  2. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +2 -2
  3. package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +316 -0
  4. package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +172 -0
  5. package/behaviors/lolo/ui/core/atoms/std-hero.lolo +247 -0
  6. package/behaviors/lolo/ui/core/atoms/std-media-section.lolo +154 -0
  7. package/behaviors/lolo/ui/core/atoms/std-pricing.lolo +177 -0
  8. package/behaviors/lolo/ui/core/atoms/std-prose.lolo +85 -0
  9. package/behaviors/lolo/ui/core/atoms/std-site-footer.lolo +159 -0
  10. package/behaviors/lolo/ui/core/atoms/std-site-header.lolo +131 -0
  11. package/behaviors/lolo/ui/core/atoms/std-stat-band.lolo +83 -0
  12. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +4 -5
  13. package/behaviors/lolo/ui/core/atoms/std-steps.lolo +124 -0
  14. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +5 -0
  15. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +6 -1
  16. package/behaviors/lolo/ui/core/atoms/ui-image.lolo +64 -0
  17. package/behaviors/lolo/ui/{marketing/atoms → core/molecules}/ui-animated-counter.lolo +11 -6
  18. package/behaviors/lolo/ui/core/organisms/ui-chat-bar.lolo +5 -0
  19. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +1 -1
  20. package/behaviors/lolo-behavior-contracts.json +1 -1
  21. package/behaviors/registry/factory-signatures.json +1 -1
  22. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +45 -9
  23. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1269 -0
  24. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +826 -0
  25. package/behaviors/registry/ui/core/atoms/std-hero.orb +811 -0
  26. package/behaviors/registry/ui/core/atoms/std-media-section.orb +740 -0
  27. package/behaviors/registry/ui/core/atoms/std-pricing.orb +751 -0
  28. package/behaviors/registry/ui/core/atoms/std-prose.orb +264 -0
  29. package/behaviors/registry/ui/core/atoms/std-site-footer.orb +589 -0
  30. package/behaviors/registry/ui/core/atoms/std-site-header.orb +530 -0
  31. package/behaviors/registry/ui/core/atoms/std-stat-band.orb +311 -0
  32. package/behaviors/registry/ui/core/atoms/std-stats.orb +4 -5
  33. package/behaviors/registry/ui/core/atoms/std-steps.orb +532 -0
  34. package/behaviors/registry/ui/{marketing → core}/atoms/ui-animated-graphic.orb +20 -20
  35. package/behaviors/registry/ui/{marketing → core}/atoms/ui-animated-reveal.orb +20 -20
  36. package/behaviors/registry/ui/core/atoms/ui-box.orb +7 -0
  37. package/behaviors/registry/ui/core/atoms/ui-button.orb +9 -1
  38. package/behaviors/registry/ui/core/atoms/ui-image.orb +231 -0
  39. package/behaviors/registry/ui/{marketing → core}/atoms/ui-pattern-tile.orb +20 -20
  40. package/behaviors/registry/ui/{marketing/atoms → core/molecules}/ui-animated-counter.orb +33 -26
  41. package/behaviors/registry/ui/{marketing/atoms → core/molecules}/ui-feature-card.orb +20 -20
  42. package/behaviors/registry/ui/{marketing/atoms → core/molecules}/ui-geometric-pattern.orb +20 -20
  43. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +7 -0
  44. package/behaviors/registry/ui/{marketing → core}/templates/ui-auth-layout.orb +20 -20
  45. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
  46. package/behaviors/signatures.lolo +1070 -2984
  47. package/canonical-operators.json +3 -3
  48. package/dist/behaviors/exports-reader.js +3818 -10339
  49. package/dist/behaviors/functions/index.d.ts +3965 -6984
  50. package/dist/behaviors/functions/index.js +3786 -10195
  51. package/dist/behaviors/index.d.ts +1 -1
  52. package/dist/behaviors/index.js +3819 -10340
  53. package/dist/behaviors/query.js +3818 -10339
  54. package/dist/behaviors-embeddings.hash.json +3 -3
  55. package/dist/behaviors-embeddings.json +77 -237
  56. package/dist/behaviors-registry.json +97602 -98073
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.js +3821 -10342
  59. package/dist/knob-embeddings.hash.json +3 -3
  60. package/dist/knob-embeddings.json +352 -1212
  61. package/dist/modules/core.js +2 -2
  62. package/dist/modules/index.js +2 -2
  63. package/dist/registry/factory-signatures.json +1 -1
  64. package/dist/registry.js +2 -2
  65. package/i18n/ar.json +8 -4
  66. package/i18n/en.json +4 -0
  67. package/i18n/sl.json +8 -4
  68. package/package.json +4 -6
  69. package/behaviors/lolo/ui/marketing/atoms/std-marketing-article.lolo +0 -31
  70. package/behaviors/lolo/ui/marketing/atoms/std-marketing-cta.lolo +0 -93
  71. package/behaviors/lolo/ui/marketing/atoms/std-marketing-features.lolo +0 -83
  72. package/behaviors/lolo/ui/marketing/atoms/std-marketing-footer.lolo +0 -72
  73. package/behaviors/lolo/ui/marketing/atoms/std-marketing-hero.lolo +0 -131
  74. package/behaviors/lolo/ui/marketing/atoms/std-marketing-nav.lolo +0 -86
  75. package/behaviors/lolo/ui/marketing/atoms/std-marketing-pricing.lolo +0 -85
  76. package/behaviors/lolo/ui/marketing/atoms/std-marketing-showcase.lolo +0 -87
  77. package/behaviors/lolo/ui/marketing/atoms/std-marketing-split.lolo +0 -50
  78. package/behaviors/lolo/ui/marketing/atoms/std-marketing-stats.lolo +0 -43
  79. package/behaviors/lolo/ui/marketing/atoms/std-marketing-steps.lolo +0 -48
  80. package/behaviors/lolo/ui/marketing/atoms/std-marketing-team.lolo +0 -51
  81. package/behaviors/lolo/ui/marketing/atoms/ui-article-section.lolo +0 -44
  82. package/behaviors/lolo/ui/marketing/atoms/ui-case-study-card.lolo +0 -60
  83. package/behaviors/lolo/ui/marketing/atoms/ui-community-links.lolo +0 -67
  84. package/behaviors/lolo/ui/marketing/atoms/ui-content-section.lolo +0 -44
  85. package/behaviors/lolo/ui/marketing/atoms/ui-cta-banner.lolo +0 -68
  86. package/behaviors/lolo/ui/marketing/atoms/ui-hero-section.lolo +0 -112
  87. package/behaviors/lolo/ui/marketing/atoms/ui-install-box.lolo +0 -39
  88. package/behaviors/lolo/ui/marketing/atoms/ui-marketing-footer.lolo +0 -58
  89. package/behaviors/lolo/ui/marketing/atoms/ui-marketing-stat-card.lolo +0 -45
  90. package/behaviors/lolo/ui/marketing/atoms/ui-pricing-card.lolo +0 -70
  91. package/behaviors/lolo/ui/marketing/atoms/ui-pricing-grid.lolo +0 -49
  92. package/behaviors/lolo/ui/marketing/atoms/ui-pull-quote.lolo +0 -34
  93. package/behaviors/lolo/ui/marketing/atoms/ui-service-catalog.lolo +0 -40
  94. package/behaviors/lolo/ui/marketing/atoms/ui-showcase-card.lolo +0 -64
  95. package/behaviors/lolo/ui/marketing/atoms/ui-split-section.lolo +0 -69
  96. package/behaviors/lolo/ui/marketing/atoms/ui-stats-grid.lolo +0 -44
  97. package/behaviors/lolo/ui/marketing/atoms/ui-step-flow.lolo +0 -51
  98. package/behaviors/lolo/ui/marketing/atoms/ui-tag-cloud.lolo +0 -45
  99. package/behaviors/lolo/ui/marketing/atoms/ui-team-card.lolo +0 -54
  100. package/behaviors/lolo/ui/marketing/organisms/ui-book-chapter-view.lolo +0 -63
  101. package/behaviors/lolo/ui/marketing/organisms/ui-book-cover-page.lolo +0 -54
  102. package/behaviors/lolo/ui/marketing/organisms/ui-book-nav-bar.lolo +0 -49
  103. package/behaviors/lolo/ui/marketing/organisms/ui-book-table-of-contents.lolo +0 -70
  104. package/behaviors/lolo/ui/marketing/organisms/ui-book-viewer.lolo +0 -161
  105. package/behaviors/lolo/ui/marketing/organisms/ui-case-study-organism.lolo +0 -153
  106. package/behaviors/lolo/ui/marketing/organisms/ui-feature-grid-organism.lolo +0 -159
  107. package/behaviors/lolo/ui/marketing/organisms/ui-hero-organism.lolo +0 -162
  108. package/behaviors/lolo/ui/marketing/organisms/ui-pricing-organism.lolo +0 -155
  109. package/behaviors/lolo/ui/marketing/organisms/ui-showcase-organism.lolo +0 -164
  110. package/behaviors/lolo/ui/marketing/organisms/ui-stats-organism.lolo +0 -142
  111. package/behaviors/lolo/ui/marketing/organisms/ui-step-flow-organism.lolo +0 -165
  112. package/behaviors/lolo/ui/marketing/organisms/ui-team-organism.lolo +0 -152
  113. package/behaviors/lolo/ui/marketing/templates/ui-about-page-template.lolo +0 -105
  114. package/behaviors/lolo/ui/marketing/templates/ui-feature-detail-page-template.lolo +0 -93
  115. package/behaviors/lolo/ui/marketing/templates/ui-landing-page-template.lolo +0 -144
  116. package/behaviors/lolo/ui/marketing/templates/ui-pricing-page-template.lolo +0 -89
  117. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +0 -121
  118. package/behaviors/registry/ui/marketing/atoms/std-marketing-cta.orb +0 -360
  119. package/behaviors/registry/ui/marketing/atoms/std-marketing-features.orb +0 -305
  120. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +0 -265
  121. package/behaviors/registry/ui/marketing/atoms/std-marketing-hero.orb +0 -424
  122. package/behaviors/registry/ui/marketing/atoms/std-marketing-nav.orb +0 -288
  123. package/behaviors/registry/ui/marketing/atoms/std-marketing-pricing.orb +0 -366
  124. package/behaviors/registry/ui/marketing/atoms/std-marketing-showcase.orb +0 -415
  125. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +0 -152
  126. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +0 -151
  127. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +0 -221
  128. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +0 -239
  129. package/behaviors/registry/ui/marketing/atoms/ui-article-section.orb +0 -176
  130. package/behaviors/registry/ui/marketing/atoms/ui-case-study-card.orb +0 -195
  131. package/behaviors/registry/ui/marketing/atoms/ui-community-links.orb +0 -254
  132. package/behaviors/registry/ui/marketing/atoms/ui-content-section.orb +0 -182
  133. package/behaviors/registry/ui/marketing/atoms/ui-cta-banner.orb +0 -254
  134. package/behaviors/registry/ui/marketing/atoms/ui-hero-section.orb +0 -345
  135. package/behaviors/registry/ui/marketing/atoms/ui-install-box.orb +0 -163
  136. package/behaviors/registry/ui/marketing/atoms/ui-marketing-footer.orb +0 -298
  137. package/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +0 -177
  138. package/behaviors/registry/ui/marketing/atoms/ui-pricing-card.orb +0 -237
  139. package/behaviors/registry/ui/marketing/atoms/ui-pricing-grid.orb +0 -313
  140. package/behaviors/registry/ui/marketing/atoms/ui-pull-quote.orb +0 -156
  141. package/behaviors/registry/ui/marketing/atoms/ui-service-catalog.orb +0 -205
  142. package/behaviors/registry/ui/marketing/atoms/ui-showcase-card.orb +0 -221
  143. package/behaviors/registry/ui/marketing/atoms/ui-split-section.orb +0 -239
  144. package/behaviors/registry/ui/marketing/atoms/ui-stats-grid.orb +0 -202
  145. package/behaviors/registry/ui/marketing/atoms/ui-step-flow.orb +0 -236
  146. package/behaviors/registry/ui/marketing/atoms/ui-tag-cloud.orb +0 -217
  147. package/behaviors/registry/ui/marketing/atoms/ui-team-card.orb +0 -186
  148. package/behaviors/registry/ui/marketing/organisms/ui-book-chapter-view.orb +0 -277
  149. package/behaviors/registry/ui/marketing/organisms/ui-book-cover-page.orb +0 -190
  150. package/behaviors/registry/ui/marketing/organisms/ui-book-nav-bar.orb +0 -183
  151. package/behaviors/registry/ui/marketing/organisms/ui-book-table-of-contents.orb +0 -286
  152. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +0 -553
  153. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +0 -507
  154. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +0 -504
  155. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +0 -635
  156. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +0 -539
  157. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +0 -542
  158. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +0 -447
  159. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +0 -505
  160. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +0 -494
  161. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +0 -752
  162. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +0 -638
  163. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +0 -1028
  164. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +0 -603
  165. /package/behaviors/lolo/ui/{marketing → core}/atoms/ui-animated-graphic.lolo +0 -0
  166. /package/behaviors/lolo/ui/{marketing → core}/atoms/ui-animated-reveal.lolo +0 -0
  167. /package/behaviors/lolo/ui/{marketing → core}/atoms/ui-pattern-tile.lolo +0 -0
  168. /package/behaviors/lolo/ui/{marketing/atoms → core/molecules}/ui-feature-card.lolo +0 -0
  169. /package/behaviors/lolo/ui/{marketing/atoms → core/molecules}/ui-geometric-pattern.lolo +0 -0
  170. /package/behaviors/lolo/ui/{marketing → core}/templates/ui-auth-layout.lolo +0 -0
@@ -1,44 +0,0 @@
1
- app ui-stats-grid "1.0.0"
2
- "StatsGrid — UI factory (1:1 with the @almadar/ui stats-grid pattern)."
3
- ;; @pattern "stats-grid"
4
- orbital StatsGridOrbital {
5
- type StatsGridStatsItem = {
6
- value : string!
7
- label : string!
8
- }
9
-
10
- entity StatsGridItem [runtime] {
11
- id : string!
12
- }
13
-
14
- trait StatsGridRender -> @rebindable StatsGridItem [interaction, instance] {
15
- initial: idle
16
-
17
- state idle {
18
- INIT -> idle
19
- (render-ui main {
20
- stats: @config.stats
21
- columns: @config.columns
22
- className: @config.className
23
- type: stats-grid
24
- })
25
- }
26
-
27
- config {
28
- stats : [StatsGridStatsItem] = [{ value: "Value", label: "Label" }, { value: "Value 2", label: "Label 2" }]
29
- @label "Stats"
30
- @description "stats prop"
31
- @tier "presentation"
32
- columns : number = 3
33
- @label "Columns"
34
- @description "columns prop"
35
- @tier "presentation"
36
- className : string
37
- @label "Class Name"
38
- @description "className prop"
39
- @tier "presentation"
40
- }
41
- }
42
-
43
- page "/stats-grid" as StatsGridPage -> StatsGridRender
44
- }
@@ -1,51 +0,0 @@
1
- app ui-step-flow "1.0.0"
2
- "StepFlow — UI factory (1:1 with the @almadar/ui step-flow pattern)."
3
- ;; @pattern "step-flow"
4
- orbital StepFlowOrbital {
5
- type StepFlowStepsItem = {
6
- number : number
7
- title : string!
8
- description : string!
9
- icon : icon
10
- }
11
-
12
- entity StepFlowItem [runtime] {
13
- id : string!
14
- }
15
-
16
- trait StepFlowRender -> @rebindable StepFlowItem [interaction, instance] {
17
- initial: idle
18
-
19
- state idle {
20
- INIT -> idle
21
- (render-ui main {
22
- steps: @config.steps
23
- orientation: @config.orientation
24
- showConnectors: @config.showConnectors
25
- className: @config.className
26
- type: step-flow
27
- })
28
- }
29
-
30
- config {
31
- steps : [StepFlowStepsItem] = [{ number: 1, title: "Title", description: "Description", icon: "circle" }, { number: 2, title: "Title 2", description: "Description 2", icon: "circle" }]
32
- @label "Steps"
33
- @description "steps prop"
34
- @tier "presentation"
35
- orientation : "horizontal" | "vertical" = horizontal
36
- @label "Orientation"
37
- @description "orientation prop"
38
- @tier "presentation"
39
- showConnectors : boolean = true
40
- @label "Show Connectors"
41
- @description "showConnectors prop"
42
- @tier "presentation"
43
- className : string
44
- @label "Class Name"
45
- @description "className prop"
46
- @tier "presentation"
47
- }
48
- }
49
-
50
- page "/step-flow" as StepFlowPage -> StepFlowRender
51
- }
@@ -1,45 +0,0 @@
1
- app ui-tag-cloud "1.0.0"
2
- "TagCloud — UI factory (1:1 with the @almadar/ui tag-cloud pattern)."
3
- ;; @pattern "tag-cloud"
4
- orbital TagCloudOrbital {
5
- type TagCloudTagsItem = {
6
- label : string!
7
- href : string
8
- variant : string
9
- }
10
-
11
- entity TagCloudItem [runtime] {
12
- id : string!
13
- }
14
-
15
- trait TagCloudRender -> @rebindable TagCloudItem [interaction, instance] {
16
- initial: idle
17
-
18
- state idle {
19
- INIT -> idle
20
- (render-ui main {
21
- tags: @config.tags
22
- variant: @config.variant
23
- className: @config.className
24
- type: tag-cloud
25
- })
26
- }
27
-
28
- config {
29
- tags : [TagCloudTagsItem] = [{ label: "Label", href: "Href", variant: "Variant" }, { label: "Label 2", href: "Href 2", variant: "Variant 2" }]
30
- @label "Tags"
31
- @description "tags prop"
32
- @tier "presentation"
33
- variant : "default" | "primary" | "accent" = default
34
- @label "Variant"
35
- @description "variant prop"
36
- @tier "presentation"
37
- className : string
38
- @label "Class Name"
39
- @description "className prop"
40
- @tier "presentation"
41
- }
42
- }
43
-
44
- page "/tag-cloud" as TagCloudPage -> TagCloudRender
45
- }
@@ -1,54 +0,0 @@
1
- app ui-team-card "1.0.0"
2
- "TeamCard — UI factory (1:1 with the @almadar/ui team-card pattern)."
3
- ;; @pattern "team-card"
4
- orbital TeamCardOrbital {
5
- entity TeamCardItem [runtime] {
6
- id : string!
7
- }
8
-
9
- trait TeamCardRender -> @rebindable TeamCardItem [interaction, instance] {
10
- initial: idle
11
-
12
- state idle {
13
- INIT -> idle
14
- (render-ui main {
15
- name: @config.name
16
- nameAr: @config.nameAr
17
- role: @config.role
18
- bio: @config.bio
19
- avatar: @config.avatar
20
- className: @config.className
21
- type: team-card
22
- })
23
- }
24
-
25
- config {
26
- name : string = ""
27
- @label "Name"
28
- @description "name prop"
29
- @tier "presentation"
30
- nameAr : string
31
- @label "Name Ar"
32
- @description "nameAr prop"
33
- @tier "presentation"
34
- role : string = ""
35
- @label "Role"
36
- @description "role prop"
37
- @tier "presentation"
38
- bio : string = ""
39
- @label "Bio"
40
- @description "bio prop"
41
- @tier "presentation"
42
- avatar : asset
43
- @label "Avatar"
44
- @description "avatar prop"
45
- @tier "presentation"
46
- className : string
47
- @label "Class Name"
48
- @description "className prop"
49
- @tier "presentation"
50
- }
51
- }
52
-
53
- page "/team-card" as TeamCardPage -> TeamCardRender
54
- }
@@ -1,63 +0,0 @@
1
- app ui-book-chapter-view "1.0.0"
2
- "BookChapterView — UI factory (1:1 with the @almadar/ui book-chapter-view pattern)."
3
- ;; @pattern "book-chapter-view"
4
- orbital BookChapterViewOrbital {
5
- type BookChapterViewLoaded = Event { data : [BookChapterViewItem] } "BookChapterView rows finished loading; payload.data holds the collection"
6
-
7
- entity BookChapterViewItem [runtime] {
8
- id : string!
9
- }
10
-
11
- trait BookChapterViewRender -> @rebindable BookChapterViewItem [interaction, instance] {
12
- initial: idle
13
-
14
- state idle {
15
- INIT -> idle when @config.selfFetch
16
- (fetch BookChapterViewItem { emit: { success: BookChapterViewLoaded } })
17
- (render-ui main {
18
- className: @config.className
19
- chapter: @entity
20
- direction: @config.direction
21
- type: book-chapter-view
22
- })
23
- INIT -> idle when (not @config.selfFetch)
24
- (render-ui main {
25
- className: @config.className
26
- chapter: @entity
27
- direction: @config.direction
28
- type: book-chapter-view
29
- })
30
- BookChapterViewLoaded -> idle
31
- (render-ui main {
32
- className: @config.className
33
- chapter: @payload.data
34
- direction: @config.direction
35
- type: book-chapter-view
36
- })
37
- }
38
-
39
- emits {
40
- BookChapterViewLoaded
41
- @description "BookChapterView rows finished loading; payload.data holds the collection."
42
- @synonyms "loaded, fetched, retrieved"
43
- @tier "essential"
44
- }
45
-
46
- config {
47
- className : string
48
- @label "Class Name"
49
- @description "Additional CSS classes"
50
- @tier "presentation"
51
- direction : "rtl" | "ltr" = rtl
52
- @label "Direction"
53
- @description "direction prop"
54
- @tier "presentation"
55
- selfFetch : boolean = true
56
- @label "Fetch its own rows on mount?"
57
- @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
58
- @tier "internal"
59
- }
60
- }
61
-
62
- page "/book-chapter-view" as BookChapterViewPage -> BookChapterViewRender
63
- }
@@ -1,54 +0,0 @@
1
- app ui-book-cover-page "1.0.0"
2
- "BookCoverPage — UI factory (1:1 with the @almadar/ui book-cover-page pattern)."
3
- ;; @pattern "book-cover-page"
4
- orbital BookCoverPageOrbital {
5
- entity BookCoverPageItem [runtime] {
6
- id : string!
7
- }
8
-
9
- trait BookCoverPageRender -> @rebindable BookCoverPageItem [interaction, instance] {
10
- initial: idle
11
-
12
- state idle {
13
- INIT -> idle
14
- (render-ui main {
15
- className: @config.className
16
- title: @config.title
17
- subtitle: @config.subtitle
18
- author: @config.author
19
- coverImageUrl: @config.coverImageUrl
20
- direction: @config.direction
21
- type: book-cover-page
22
- })
23
- }
24
-
25
- config {
26
- className : string
27
- @label "Class Name"
28
- @description "Additional CSS classes"
29
- @tier "presentation"
30
- title : string = ""
31
- @label "Title"
32
- @description "title prop"
33
- @tier "presentation"
34
- subtitle : string
35
- @label "Subtitle"
36
- @description "subtitle prop"
37
- @tier "presentation"
38
- author : string
39
- @label "Author"
40
- @description "author prop"
41
- @tier "presentation"
42
- coverImageUrl : asset = "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png"
43
- @label "Cover Image Url"
44
- @description "coverImageUrl prop"
45
- @tier "presentation"
46
- direction : "rtl" | "ltr" = rtl
47
- @label "Direction"
48
- @description "direction prop"
49
- @tier "presentation"
50
- }
51
- }
52
-
53
- page "/book-cover-page" as BookCoverPagePage -> BookCoverPageRender
54
- }
@@ -1,49 +0,0 @@
1
- app ui-book-nav-bar "1.0.0"
2
- "BookNavBar — UI factory (1:1 with the @almadar/ui book-nav-bar pattern)."
3
- ;; @pattern "book-nav-bar"
4
- orbital BookNavBarOrbital {
5
- entity BookNavBarItem [runtime] {
6
- id : string!
7
- }
8
-
9
- trait BookNavBarRender -> @rebindable BookNavBarItem [interaction, instance] {
10
- initial: idle
11
-
12
- state idle {
13
- INIT -> idle
14
- (render-ui main {
15
- className: @config.className
16
- currentPage: @config.currentPage
17
- totalPages: @config.totalPages
18
- chapterTitle: @config.chapterTitle
19
- direction: @config.direction
20
- type: book-nav-bar
21
- })
22
- }
23
-
24
- config {
25
- className : string
26
- @label "Class Name"
27
- @description "Additional CSS classes"
28
- @tier "presentation"
29
- currentPage : number = 1
30
- @label "Current Page"
31
- @description "currentPage prop"
32
- @tier "presentation"
33
- totalPages : number = 1
34
- @label "Total Pages"
35
- @description "totalPages prop"
36
- @tier "presentation"
37
- chapterTitle : string
38
- @label "Chapter Title"
39
- @description "chapterTitle prop"
40
- @tier "presentation"
41
- direction : "rtl" | "ltr" = rtl
42
- @label "Direction"
43
- @description "direction prop"
44
- @tier "presentation"
45
- }
46
- }
47
-
48
- page "/book-nav-bar" as BookNavBarPage -> BookNavBarRender
49
- }
@@ -1,70 +0,0 @@
1
- app ui-book-table-of-contents "1.0.0"
2
- "BookTableOfContents — UI factory (1:1 with the @almadar/ui book-table-of-contents pattern)."
3
- ;; @pattern "book-table-of-contents"
4
- orbital BookTableOfContentsOrbital {
5
- type BookTableOfContentsLoaded = Event { data : [BookTableOfContentsItem] } "BookTableOfContents rows finished loading; payload.data holds the collection"
6
-
7
- entity BookTableOfContentsItem [runtime] {
8
- id : string!
9
- }
10
-
11
- trait BookTableOfContentsRender -> @rebindable BookTableOfContentsItem [interaction, instance] {
12
- initial: idle
13
-
14
- state idle {
15
- INIT -> idle when @config.selfFetch
16
- (fetch BookTableOfContentsItem { emit: { success: BookTableOfContentsLoaded } })
17
- (render-ui main {
18
- className: @config.className
19
- parts: @entity
20
- currentChapterId: @config.currentChapterId
21
- direction: @config.direction
22
- type: book-table-of-contents
23
- })
24
- INIT -> idle when (not @config.selfFetch)
25
- (render-ui main {
26
- className: @config.className
27
- parts: @entity
28
- currentChapterId: @config.currentChapterId
29
- direction: @config.direction
30
- type: book-table-of-contents
31
- })
32
- BookTableOfContentsLoaded -> idle
33
- (render-ui main {
34
- className: @config.className
35
- parts: @payload.data
36
- currentChapterId: @config.currentChapterId
37
- direction: @config.direction
38
- type: book-table-of-contents
39
- })
40
- }
41
-
42
- emits {
43
- BookTableOfContentsLoaded
44
- @description "BookTableOfContents rows finished loading; payload.data holds the collection."
45
- @synonyms "loaded, fetched, retrieved"
46
- @tier "essential"
47
- }
48
-
49
- config {
50
- className : string
51
- @label "Class Name"
52
- @description "Additional CSS classes"
53
- @tier "presentation"
54
- currentChapterId : string
55
- @label "Current Chapter Id"
56
- @description "currentChapterId prop"
57
- @tier "presentation"
58
- direction : "rtl" | "ltr" = rtl
59
- @label "Direction"
60
- @description "direction prop"
61
- @tier "presentation"
62
- selfFetch : boolean = true
63
- @label "Fetch its own rows on mount?"
64
- @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
65
- @tier "internal"
66
- }
67
- }
68
-
69
- page "/book-table-of-contents" as BookTableOfContentsPage -> BookTableOfContentsRender
70
- }
@@ -1,161 +0,0 @@
1
- app ui-book-viewer "1.0.0"
2
- "BookViewer — UI factory (1:1 with the @almadar/ui book-viewer pattern)."
3
- ;; @pattern "book-viewer"
4
- orbital BookViewerOrbital {
5
- type BookViewerLoaded = Event { data : [BookViewerItem] } "BookViewer rows finished loading; payload.data holds the collection"
6
- type BookViewerError = {
7
- message : string!
8
- name : string
9
- code : string
10
- stack : string
11
- }
12
- type BookViewerFieldMap = {
13
- title : string!
14
- subtitle : string!
15
- author : string!
16
- coverImageUrl : string!
17
- direction : string!
18
- parts : string!
19
- partTitle : string!
20
- chapters : string!
21
- chapterId : string!
22
- chapterTitle : string!
23
- chapterContent : string!
24
- chapterOrbitalSchema : string!
25
- }
26
-
27
- entity BookViewerItem [runtime] {
28
- id : string!
29
- }
30
-
31
- trait BookViewerRender -> @rebindable BookViewerItem [interaction, instance] {
32
- initial: idle
33
-
34
- state idle {
35
- INIT -> idle when @config.selfFetch
36
- (fetch BookViewerItem { emit: { success: BookViewerLoaded } })
37
- (render-ui main {
38
- className: @config.className
39
- isLoading: @config.isLoading
40
- error: @config.error
41
- sortBy: @config.sortBy
42
- sortDirection: @config.sortDirection
43
- searchValue: @config.searchValue
44
- page: @config.pageProp
45
- pageSize: @config.pageSize
46
- totalCount: @config.totalCount
47
- activeFilters: @config.activeFilters
48
- selectedIds: @config.selectedIds
49
- entity: @entity
50
- initialPage: @config.initialPage
51
- fieldMap: @config.fieldMap
52
- type: book-viewer
53
- })
54
- INIT -> idle when (not @config.selfFetch)
55
- (render-ui main {
56
- className: @config.className
57
- isLoading: @config.isLoading
58
- error: @config.error
59
- sortBy: @config.sortBy
60
- sortDirection: @config.sortDirection
61
- searchValue: @config.searchValue
62
- page: @config.pageProp
63
- pageSize: @config.pageSize
64
- totalCount: @config.totalCount
65
- activeFilters: @config.activeFilters
66
- selectedIds: @config.selectedIds
67
- entity: @entity
68
- initialPage: @config.initialPage
69
- fieldMap: @config.fieldMap
70
- type: book-viewer
71
- })
72
- BookViewerLoaded -> idle
73
- (render-ui main {
74
- className: @config.className
75
- isLoading: @config.isLoading
76
- error: @config.error
77
- sortBy: @config.sortBy
78
- sortDirection: @config.sortDirection
79
- searchValue: @config.searchValue
80
- page: @config.pageProp
81
- pageSize: @config.pageSize
82
- totalCount: @config.totalCount
83
- activeFilters: @config.activeFilters
84
- selectedIds: @config.selectedIds
85
- entity: @payload.data
86
- initialPage: @config.initialPage
87
- fieldMap: @config.fieldMap
88
- type: book-viewer
89
- })
90
- }
91
-
92
- emits {
93
- BookViewerLoaded
94
- @description "BookViewer rows finished loading; payload.data holds the collection."
95
- @synonyms "loaded, fetched, retrieved"
96
- @tier "essential"
97
- }
98
-
99
- config {
100
- className : string
101
- @label "Class Name"
102
- @description "Additional CSS classes"
103
- @tier "presentation"
104
- isLoading : boolean
105
- @label "Is Loading"
106
- @description "Loading state indicator"
107
- @tier "presentation"
108
- error : BookViewerError
109
- @label "Error"
110
- @description "Error state (UiError)"
111
- @tier "presentation"
112
- sortBy : string
113
- @label "Sort By"
114
- @description "Current sort field"
115
- @tier "presentation"
116
- sortDirection : "asc" | "desc" = asc
117
- @label "Sort Direction"
118
- @description "Current sort direction"
119
- @tier "presentation"
120
- searchValue : string
121
- @label "Search Value"
122
- @description "Current search query value"
123
- @tier "presentation"
124
- pageProp : number
125
- @label "Page"
126
- @description "Current page number"
127
- @synonyms "page"
128
- @tier "presentation"
129
- pageSize : number
130
- @label "Page Size"
131
- @description "Number of items per page"
132
- @tier "presentation"
133
- totalCount : number
134
- @label "Total Count"
135
- @description "Total number of items"
136
- @tier "presentation"
137
- activeFilters : Map string string = {}
138
- @label "Active Filters"
139
- @description "Active filters"
140
- @tier "presentation"
141
- selectedIds : [string] = []
142
- @label "Selected Ids"
143
- @description "Currently selected item IDs"
144
- @tier "presentation"
145
- initialPage : number = 0
146
- @label "Initial Page"
147
- @description "Initial page index (default: 0 = cover)"
148
- @tier "presentation"
149
- fieldMap : BookViewerFieldMap
150
- @label "Field Map"
151
- @description "Field name translation map — a BookFieldMap object or locale key ('ar')"
152
- @tier "presentation"
153
- selfFetch : boolean = true
154
- @label "Fetch its own rows on mount?"
155
- @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
156
- @tier "internal"
157
- }
158
- }
159
-
160
- page "/book-viewer" as BookViewerPage -> BookViewerRender
161
- }