@alisaitteke/seatmap-canvas 2.5.18 → 2.6.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 (208) hide show
  1. package/README.md +358 -95
  2. package/dist/CLAUDE.md +11 -0
  3. package/dist/cjs/CLAUDE.md +11 -0
  4. package/dist/cjs/seatmap.canvas.css +4 -0
  5. package/dist/cjs/seatmap.canvas.js +2 -16
  6. package/dist/cjs/seatmap.canvas.js.map +1 -1
  7. package/dist/cjs/types/canvas.index.d.ts +5 -0
  8. package/dist/cjs/types/converters/parser.base.d.ts +7 -0
  9. package/dist/cjs/types/converters/pretix/pretix.model.d.ts +75 -0
  10. package/dist/cjs/types/converters/pretix/pretix.parser.d.ts +7 -0
  11. package/dist/cjs/types/enums/parser.enum.d.ts +4 -0
  12. package/dist/cjs/types/examples/react/src/App.d.ts +3 -0
  13. package/dist/cjs/types/examples/react/src/main.d.ts +1 -0
  14. package/dist/cjs/types/examples/react/vite.config.d.ts +2 -0
  15. package/dist/cjs/types/examples/vue/main.d.ts +1 -0
  16. package/dist/cjs/types/examples/vue/vite.config.d.ts +2 -0
  17. package/dist/cjs/types/models/block.model.d.ts +1 -0
  18. package/dist/cjs/types/models/data.model.d.ts +3 -2
  19. package/dist/cjs/types/models/defaults.model.d.ts +2 -0
  20. package/dist/cjs/types/models/styles/seat.style.d.ts +6 -0
  21. package/dist/cjs/types/models/styles/tooltip.style.d.ts +8 -0
  22. package/dist/cjs/types/src/lib/canvas.index.browser.d.ts +2 -0
  23. package/dist/cjs/types/src/lib/canvas.index.d.ts +28 -0
  24. package/dist/cjs/types/src/lib/config.d.ts +3 -0
  25. package/dist/cjs/types/src/lib/converters/parser.base.d.ts +7 -0
  26. package/dist/cjs/types/src/lib/converters/pretix/pretix.model.d.ts +75 -0
  27. package/dist/cjs/types/src/lib/converters/pretix/pretix.parser.d.ts +7 -0
  28. package/dist/cjs/types/src/lib/decorators/dom.d.ts +8 -0
  29. package/dist/cjs/types/src/lib/decorators/index.d.ts +1 -0
  30. package/dist/cjs/types/src/lib/dev.tools.d.ts +6 -0
  31. package/dist/cjs/types/src/lib/enums/global.d.ts +46 -0
  32. package/dist/cjs/types/src/lib/enums/parser.enum.d.ts +4 -0
  33. package/dist/cjs/types/src/lib/models/block.model.d.ts +30 -0
  34. package/dist/cjs/types/src/lib/models/coordinate.model.d.ts +7 -0
  35. package/dist/cjs/types/src/lib/models/data.model.d.ts +27 -0
  36. package/dist/cjs/types/src/lib/models/defaults.model.d.ts +34 -0
  37. package/dist/cjs/types/src/lib/models/global.model.d.ts +18 -0
  38. package/dist/cjs/types/src/lib/models/label.model.d.ts +9 -0
  39. package/dist/cjs/types/src/lib/models/legend.model.d.ts +8 -0
  40. package/dist/cjs/types/src/lib/models/model.base.d.ts +5 -0
  41. package/dist/cjs/types/src/lib/models/seat.model.d.ts +40 -0
  42. package/dist/cjs/types/src/lib/models/styles/block.style.d.ts +7 -0
  43. package/dist/cjs/types/src/lib/models/styles/label.style.d.ts +6 -0
  44. package/dist/cjs/types/src/lib/models/styles/legend.style.d.ts +6 -0
  45. package/dist/cjs/types/src/lib/models/styles/seat.style.d.ts +13 -0
  46. package/dist/cjs/types/src/lib/models/styles/tooltip.style.d.ts +7 -0
  47. package/dist/cjs/types/src/lib/svg/event.manager.d.ts +12 -0
  48. package/dist/cjs/types/src/lib/svg/legend/legend.circle.d.ts +7 -0
  49. package/dist/cjs/types/src/lib/svg/legend/legend.item.d.ts +13 -0
  50. package/dist/cjs/types/src/lib/svg/legend/legend.title.d.ts +7 -0
  51. package/dist/cjs/types/src/lib/svg/legend.d.ts +8 -0
  52. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.bounds.d.ts +12 -0
  53. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.index.d.ts +23 -0
  54. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.info.index.d.ts +11 -0
  55. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.labels.index.d.ts +11 -0
  56. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.mask.d.ts +12 -0
  57. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/block-item.seats.index.d.ts +15 -0
  58. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/bound/bound-item.index.d.ts +12 -0
  59. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/info/title.d.ts +7 -0
  60. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/label/label-item.circle.d.ts +7 -0
  61. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/label/label-item.index.d.ts +13 -0
  62. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/label/label-item.title.d.ts +7 -0
  63. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.check.d.ts +10 -0
  64. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.circle.d.ts +7 -0
  65. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom-area.d.ts +7 -0
  66. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom-check.d.ts +10 -0
  67. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom.d.ts +9 -0
  68. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.index.d.ts +30 -0
  69. package/dist/cjs/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.title.d.ts +7 -0
  70. package/dist/cjs/types/src/lib/svg/stage/blocks/blocks.index.d.ts +15 -0
  71. package/dist/cjs/types/src/lib/svg/stage/blocks.search-circle.d.ts +12 -0
  72. package/dist/cjs/types/src/lib/svg/stage/multi-select/rect.d.ts +7 -0
  73. package/dist/cjs/types/src/lib/svg/stage/multi-select.d.ts +13 -0
  74. package/dist/cjs/types/src/lib/svg/stage/search-circle/circle.d.ts +7 -0
  75. package/dist/cjs/types/src/lib/svg/stage/stage.index.d.ts +11 -0
  76. package/dist/cjs/types/src/lib/svg/svg.base.d.ts +35 -0
  77. package/dist/cjs/types/src/lib/svg/svg.index.d.ts +16 -0
  78. package/dist/cjs/types/src/lib/svg/tooltip/rect.d.ts +8 -0
  79. package/dist/cjs/types/src/lib/svg/tooltip/title.d.ts +10 -0
  80. package/dist/cjs/types/src/lib/svg/tooltip.d.ts +15 -0
  81. package/dist/cjs/types/src/lib/svg/zoom-out.bg.d.ts +7 -0
  82. package/dist/cjs/types/src/lib/svg/zoom.manager.d.ts +41 -0
  83. package/dist/cjs/types/src/lib/window.manager.d.ts +9 -0
  84. package/dist/cjs/types/src/react/SeatmapCanvas.d.ts +7 -0
  85. package/dist/cjs/types/src/react/index.d.ts +4 -0
  86. package/dist/cjs/types/src/react/types.d.ts +65 -0
  87. package/dist/cjs/types/src/react/useSeatmap.d.ts +2 -0
  88. package/dist/cjs/types/src/vue/index.d.ts +12 -0
  89. package/dist/cjs/types/src/vue/types.d.ts +42 -0
  90. package/dist/cjs/types/src/vue/useSeatmap.d.ts +19 -0
  91. package/dist/cjs/types/svg/stage/blocks/block-item/block-item.seats.index.d.ts +1 -1
  92. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.custom-area.d.ts +7 -0
  93. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.custom-check.d.ts +10 -0
  94. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.custom.d.ts +9 -0
  95. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.index.d.ts +9 -3
  96. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.path-area.d.ts +7 -0
  97. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.path.d.ts +13 -0
  98. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.rect-area.d.ts +7 -0
  99. package/dist/cjs/types/svg/stage/blocks/block-item/seat/seat-item.rect.d.ts +11 -0
  100. package/dist/cjs/types/svg/stage/blocks/blocks.index.d.ts +2 -0
  101. package/dist/cjs/types/svg/svg.base.d.ts +2 -2
  102. package/dist/cjs/types/svg/zoom.manager.d.ts +1 -0
  103. package/dist/cjs/types/utils/svg-parser.d.ts +5 -0
  104. package/dist/dependencies.txt +139 -350
  105. package/dist/esm/CLAUDE.md +11 -0
  106. package/dist/esm/seatmap.canvas.css +4 -0
  107. package/dist/esm/seatmap.canvas.js +2 -16
  108. package/dist/esm/seatmap.canvas.js.map +1 -1
  109. package/dist/esm/types/canvas.index.d.ts +5 -0
  110. package/dist/esm/types/converters/parser.base.d.ts +7 -0
  111. package/dist/esm/types/converters/pretix/pretix.model.d.ts +75 -0
  112. package/dist/esm/types/converters/pretix/pretix.parser.d.ts +7 -0
  113. package/dist/esm/types/enums/parser.enum.d.ts +4 -0
  114. package/dist/esm/types/examples/react/src/App.d.ts +3 -0
  115. package/dist/esm/types/examples/react/src/main.d.ts +1 -0
  116. package/dist/esm/types/examples/react/vite.config.d.ts +2 -0
  117. package/dist/esm/types/examples/vue/main.d.ts +1 -0
  118. package/dist/esm/types/examples/vue/vite.config.d.ts +2 -0
  119. package/dist/esm/types/models/block.model.d.ts +1 -0
  120. package/dist/esm/types/models/data.model.d.ts +3 -2
  121. package/dist/esm/types/models/defaults.model.d.ts +2 -0
  122. package/dist/esm/types/models/styles/seat.style.d.ts +6 -0
  123. package/dist/esm/types/models/styles/tooltip.style.d.ts +8 -0
  124. package/dist/esm/types/src/lib/canvas.index.browser.d.ts +2 -0
  125. package/dist/esm/types/src/lib/canvas.index.d.ts +28 -0
  126. package/dist/esm/types/src/lib/config.d.ts +3 -0
  127. package/dist/esm/types/src/lib/converters/parser.base.d.ts +7 -0
  128. package/dist/esm/types/src/lib/converters/pretix/pretix.model.d.ts +75 -0
  129. package/dist/esm/types/src/lib/converters/pretix/pretix.parser.d.ts +7 -0
  130. package/dist/esm/types/src/lib/decorators/dom.d.ts +8 -0
  131. package/dist/esm/types/src/lib/decorators/index.d.ts +1 -0
  132. package/dist/esm/types/src/lib/dev.tools.d.ts +6 -0
  133. package/dist/esm/types/src/lib/enums/global.d.ts +46 -0
  134. package/dist/esm/types/src/lib/enums/parser.enum.d.ts +4 -0
  135. package/dist/esm/types/src/lib/models/block.model.d.ts +30 -0
  136. package/dist/esm/types/src/lib/models/coordinate.model.d.ts +7 -0
  137. package/dist/esm/types/src/lib/models/data.model.d.ts +27 -0
  138. package/dist/esm/types/src/lib/models/defaults.model.d.ts +34 -0
  139. package/dist/esm/types/src/lib/models/global.model.d.ts +18 -0
  140. package/dist/esm/types/src/lib/models/label.model.d.ts +9 -0
  141. package/dist/esm/types/src/lib/models/legend.model.d.ts +8 -0
  142. package/dist/esm/types/src/lib/models/model.base.d.ts +5 -0
  143. package/dist/esm/types/src/lib/models/seat.model.d.ts +40 -0
  144. package/dist/esm/types/src/lib/models/styles/block.style.d.ts +7 -0
  145. package/dist/esm/types/src/lib/models/styles/label.style.d.ts +6 -0
  146. package/dist/esm/types/src/lib/models/styles/legend.style.d.ts +6 -0
  147. package/dist/esm/types/src/lib/models/styles/seat.style.d.ts +13 -0
  148. package/dist/esm/types/src/lib/models/styles/tooltip.style.d.ts +7 -0
  149. package/dist/esm/types/src/lib/svg/event.manager.d.ts +12 -0
  150. package/dist/esm/types/src/lib/svg/legend/legend.circle.d.ts +7 -0
  151. package/dist/esm/types/src/lib/svg/legend/legend.item.d.ts +13 -0
  152. package/dist/esm/types/src/lib/svg/legend/legend.title.d.ts +7 -0
  153. package/dist/esm/types/src/lib/svg/legend.d.ts +8 -0
  154. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.bounds.d.ts +12 -0
  155. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.index.d.ts +23 -0
  156. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.info.index.d.ts +11 -0
  157. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.labels.index.d.ts +11 -0
  158. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.mask.d.ts +12 -0
  159. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/block-item.seats.index.d.ts +15 -0
  160. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/bound/bound-item.index.d.ts +12 -0
  161. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/info/title.d.ts +7 -0
  162. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/label/label-item.circle.d.ts +7 -0
  163. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/label/label-item.index.d.ts +13 -0
  164. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/label/label-item.title.d.ts +7 -0
  165. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.check.d.ts +10 -0
  166. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.circle.d.ts +7 -0
  167. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom-area.d.ts +7 -0
  168. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom-check.d.ts +10 -0
  169. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.custom.d.ts +9 -0
  170. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.index.d.ts +30 -0
  171. package/dist/esm/types/src/lib/svg/stage/blocks/block-item/seat/seat-item.title.d.ts +7 -0
  172. package/dist/esm/types/src/lib/svg/stage/blocks/blocks.index.d.ts +15 -0
  173. package/dist/esm/types/src/lib/svg/stage/blocks.search-circle.d.ts +12 -0
  174. package/dist/esm/types/src/lib/svg/stage/multi-select/rect.d.ts +7 -0
  175. package/dist/esm/types/src/lib/svg/stage/multi-select.d.ts +13 -0
  176. package/dist/esm/types/src/lib/svg/stage/search-circle/circle.d.ts +7 -0
  177. package/dist/esm/types/src/lib/svg/stage/stage.index.d.ts +11 -0
  178. package/dist/esm/types/src/lib/svg/svg.base.d.ts +35 -0
  179. package/dist/esm/types/src/lib/svg/svg.index.d.ts +16 -0
  180. package/dist/esm/types/src/lib/svg/tooltip/rect.d.ts +8 -0
  181. package/dist/esm/types/src/lib/svg/tooltip/title.d.ts +10 -0
  182. package/dist/esm/types/src/lib/svg/tooltip.d.ts +15 -0
  183. package/dist/esm/types/src/lib/svg/zoom-out.bg.d.ts +7 -0
  184. package/dist/esm/types/src/lib/svg/zoom.manager.d.ts +41 -0
  185. package/dist/esm/types/src/lib/window.manager.d.ts +9 -0
  186. package/dist/esm/types/src/react/SeatmapCanvas.d.ts +7 -0
  187. package/dist/esm/types/src/react/index.d.ts +4 -0
  188. package/dist/esm/types/src/react/types.d.ts +65 -0
  189. package/dist/esm/types/src/react/useSeatmap.d.ts +2 -0
  190. package/dist/esm/types/src/vue/index.d.ts +12 -0
  191. package/dist/esm/types/src/vue/types.d.ts +42 -0
  192. package/dist/esm/types/src/vue/useSeatmap.d.ts +19 -0
  193. package/dist/esm/types/svg/stage/blocks/block-item/block-item.seats.index.d.ts +1 -1
  194. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.custom-area.d.ts +7 -0
  195. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.custom-check.d.ts +10 -0
  196. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.custom.d.ts +9 -0
  197. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.index.d.ts +9 -3
  198. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.path-area.d.ts +7 -0
  199. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.path.d.ts +13 -0
  200. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.rect-area.d.ts +7 -0
  201. package/dist/esm/types/svg/stage/blocks/block-item/seat/seat-item.rect.d.ts +11 -0
  202. package/dist/esm/types/svg/stage/blocks/blocks.index.d.ts +2 -0
  203. package/dist/esm/types/svg/svg.base.d.ts +2 -2
  204. package/dist/esm/types/svg/zoom.manager.d.ts +1 -0
  205. package/dist/esm/types/utils/svg-parser.d.ts +5 -0
  206. package/dist/types.d.ts +5 -0
  207. package/package.json +53 -8
  208. package/CHANGELOG.md +0 -78
package/README.md CHANGED
@@ -4,20 +4,95 @@ Seatmap Canvas is an advanced, open-source library for interactive seat selectio
4
4
  [![LIVE DEMO](assets/banner_ui.png)](https://alisaitteke.github.io/seatmap-canvas)
5
5
 
6
6
  ## Features
7
- * React Integration: Designed specifically for React projects, offering a streamlined development experience.
8
- * Dynamic Seat Selection: Enables interactive selection, categorization, and location of seats.
9
- * Customizable Styles: Extensive styling options for seats, blocks, and labels to fit your application's design.
10
- * Interactive Seat Models: Define properties and behaviors for seats, including salability, notes, and custom data.
11
- * Block Model Configuration: Organize seats into blocks with customizable titles, colors, and labels.
12
- * Event Handling: Simplified event listeners for seat interactions, allowing dynamic responses to user actions.
7
+
8
+ - **Framework Agnostic** - Core library works with vanilla JS, plus official React and Vue 3 wrappers
9
+ - **Dynamic Seat Selection** - Interactive selection, categorization, and location of seats
10
+ - **Customizable Styles** - Extensive styling options for seats, blocks, and labels
11
+ - **Interactive Seat Models** - Define properties like salability, notes, colors, and custom data
12
+ - **Block Organization** - Organize seats into blocks with titles, colors, and labels
13
+ - **Event System** - Simplified event listeners for seat interactions
13
14
 
14
15
  ## Screenshot
15
16
  [![LIVE DEMO](assets/screenshot_1.png)](https://alisaitteke.github.io/seatmap-canvas)
16
17
 
17
- ## Planned
18
- - [x] React & React Native Integration
19
- - [ ] Vue & Nuxt Integration
20
- - [ ] Angular Integration
18
+ ## 🚀 Framework Plugins & Integrations
19
+
20
+ ### 🌐 Web Frameworks
21
+
22
+ <p align="center">
23
+ <a href="src/vue/README.md">
24
+ <img src="https://img.shields.io/badge/Vue.js_3-⚠️_Testing-orange?style=for-the-badge&logo=vue.js&logoColor=white" alt="Vue.js 3"/>
25
+ </a>
26
+ &nbsp;&nbsp;
27
+ <a href="src/react/README.md">
28
+ <img src="https://img.shields.io/badge/React-⚠️_Testing-orange?style=for-the-badge&logo=react&logoColor=white" alt="React"/>
29
+ </a>
30
+ &nbsp;&nbsp;
31
+ <img src="https://img.shields.io/badge/Next.js-Coming_Soon-000000?style=for-the-badge&logo=next.js&logoColor=white&color=gray" alt="Next.js"/>
32
+ &nbsp;&nbsp;
33
+ <img src="https://img.shields.io/badge/Svelte-Coming_Soon-FF3E00?style=for-the-badge&logo=svelte&logoColor=white&color=gray" alt="Svelte"/>
34
+ &nbsp;&nbsp;
35
+ <img src="https://img.shields.io/badge/Angular-Coming_Soon-dd0031?style=for-the-badge&logo=angular&logoColor=white&color=gray" alt="Angular"/>
36
+ &nbsp;&nbsp;
37
+ <img src="https://img.shields.io/badge/Nuxt-Coming_Soon-00dc82?style=for-the-badge&logo=nuxt.js&logoColor=white&color=gray" alt="Nuxt"/>
38
+ &nbsp;&nbsp;
39
+ <img src="https://img.shields.io/badge/Solid.js-Coming_Soon-2c4f7c?style=for-the-badge&logo=solid&logoColor=white&color=gray" alt="Solid.js"/>
40
+ &nbsp;&nbsp;
41
+ <img src="https://img.shields.io/badge/Astro-Coming_Soon-FF5D01?style=for-the-badge&logo=astro&logoColor=white&color=gray" alt="Astro"/>
42
+ </p>
43
+
44
+ ### 📱 Mobile Frameworks
45
+
46
+ <p align="center">
47
+ <img src="https://img.shields.io/badge/React_Native-Coming_Soon-61dafb?style=for-the-badge&logo=react&logoColor=white&color=gray" alt="React Native"/>
48
+ &nbsp;&nbsp;
49
+ <img src="https://img.shields.io/badge/Flutter-Coming_Soon-02569B?style=for-the-badge&logo=flutter&logoColor=white&color=gray" alt="Flutter"/>
50
+ &nbsp;&nbsp;
51
+ <img src="https://img.shields.io/badge/Expo-Coming_Soon-000020?style=for-the-badge&logo=expo&logoColor=white&color=gray" alt="Expo"/>
52
+ &nbsp;&nbsp;
53
+ <img src="https://img.shields.io/badge/Ionic-Coming_Soon-3880FF?style=for-the-badge&logo=ionic&logoColor=white&color=gray" alt="Ionic"/>
54
+ &nbsp;&nbsp;
55
+ <img src="https://img.shields.io/badge/Capacitor-Coming_Soon-119EFF?style=for-the-badge&logo=capacitor&logoColor=white&color=gray" alt="Capacitor"/>
56
+ &nbsp;&nbsp;
57
+ <img src="https://img.shields.io/badge/.NET_MAUI-Coming_Soon-512BD4?style=for-the-badge&logo=.net&logoColor=white&color=gray" alt=".NET MAUI"/>
58
+ </p>
59
+
60
+ ---
61
+
62
+ ### 🌐 Web Framework Integrations
63
+
64
+ <div align="center">
65
+
66
+ | Framework | Status | Package | Documentation | Example |
67
+ |:----------|:------:|:--------|:-------------:|:-------:|
68
+ | **Vanilla JS** | ✅ Available | `@alisaitteke/seatmap-canvas` | [📖 Documentation](#vanilla-javascript) | [🎯 Example](examples/) |
69
+ | **Vue.js 3** | ⚠️ Testing | `@alisaitteke/seatmap-canvas/vue` | [📖 Documentation](src/vue/README.md) | [🎯 Example](examples/vue/) |
70
+ | **React** | ⚠️ Testing | `@alisaitteke/seatmap-canvas/react` | [📖 Documentation](src/react/README.md) | [🎯 Example](examples/react/) |
71
+ | **Next.js** | 🔜 Coming Soon | - | - | - |
72
+ | **Svelte** | 🔜 Coming Soon | - | - | - |
73
+ | **Angular** | 🔜 Coming Soon | - | - | - |
74
+ | **Nuxt** | 🔜 Coming Soon | - | - | - |
75
+ | **Solid.js** | 🔜 Coming Soon | - | - | - |
76
+ | **Astro** | 🔜 Coming Soon | - | - | - |
77
+
78
+ </div>
79
+
80
+ ### 📱 Mobile Framework Integrations
81
+
82
+ <div align="center">
83
+
84
+ | Framework | Platform | Status | Package | Documentation | Example |
85
+ |:----------|:--------:|:------:|:--------|:-------------:|:-------:|
86
+ | **React Native** | iOS • Android | 🔜 Coming Soon | - | - | - |
87
+ | **Flutter** | iOS • Android | 🔜 Coming Soon | - | - | - |
88
+ | **Expo** | iOS • Android | 🔜 Coming Soon | - | - | - |
89
+ | **Ionic** | iOS • Android • Web | 🔜 Coming Soon | - | - | - |
90
+ | **Capacitor** | iOS • Android • Web | 🔜 Coming Soon | - | - | - |
91
+ | **.NET MAUI** | iOS • Android • Windows • macOS | 🔜 Coming Soon | - | - | - |
92
+
93
+ </div>
94
+
95
+ ---
21
96
 
22
97
  [LIVE DEMO](https://alisaitteke.github.io/seatmap-canvas/)
23
98
 
@@ -34,47 +109,192 @@ Seatmap Canvas is an advanced, open-source library for interactive seat selectio
34
109
 
35
110
  ## Installation
36
111
 
37
- <pre>
38
- npm i <a href="https://npm.pkg.github.com/alisaitteke/seatmap-canvas">@alisaitteke/seatmap-canvas</a> --save
39
- OR
40
- yarn add <a href="https://npm.pkg.github.com/alisaitteke/seatmap-canvas">@alisaitteke/seatmap-canvas</a> --save
41
- </pre>
112
+ ```bash
113
+ npm install @alisaitteke/seatmap-canvas
114
+ ```
42
115
 
116
+ ## Quick Start
43
117
 
118
+ ---
44
119
 
120
+ <h3>
121
+ <img src="https://api.iconify.design/logos:vue.svg" width="28" height="28" alt="Vue.js" style="vertical-align: middle;" />
122
+ &nbsp;Vue.js 3
123
+ </h3>
45
124
 
46
- #### Example Config
47
- ```json
48
- {
49
- "resizable": true,
50
- "seat_style": {
51
- "radius": 12,
52
- "color": "#6796ff",
53
- "hover": "#5671ff",
54
- "not_salable": "#424747",
55
- "selected": "#56aa45",
56
- "focus": "#435fa4",
57
- "focus_out": "#56aa45"
58
- },
59
- "block_style": {
60
- "fill": "#e2e2e2",
61
- "stroke": "#e2e2e2"
62
- },
63
- "label_style": {
64
- "color": "#000",
65
- "radius": 12,
66
- "font-size": "12px",
67
- "bg": "#ffffff"
125
+ <table>
126
+ <tr>
127
+ <td width="50%">
128
+
129
+ **Installation**
130
+
131
+ ```bash
132
+ npm install @alisaitteke/seatmap-canvas
133
+ ```
134
+
135
+ **Setup** (`main.ts`)
136
+
137
+ ```typescript
138
+ import { createApp } from 'vue';
139
+ import App from './App.vue';
140
+ import SeatmapCanvasPlugin from '@alisaitteke/seatmap-canvas/vue';
141
+ import '@alisaitteke/seatmap-canvas/dist/seatmap.canvas.css';
142
+
143
+ const app = createApp(App);
144
+ app.use(SeatmapCanvasPlugin);
145
+ app.mount('#app');
146
+ ```
147
+
148
+ </td>
149
+ <td width="50%">
150
+
151
+ **Component Usage**
152
+
153
+ ```vue
154
+ <template>
155
+ <SeatmapCanvas
156
+ :options="seatmapOptions"
157
+ :data="blocks"
158
+ @seat-click="onSeatClick"
159
+ />
160
+ </template>
161
+
162
+ <script setup lang="ts">
163
+ const seatmapOptions = {
164
+ legend: true,
165
+ style: {
166
+ seat: {
167
+ hover: '#8fe100',
168
+ selected: '#8fe100',
68
169
  }
170
+ }
171
+ };
172
+
173
+ const onSeatClick = (seat) => {
174
+ seat.isSelected() ? seat.unSelect() : seat.select();
175
+ };
176
+ </script>
177
+ ```
178
+
179
+ </td>
180
+ </tr>
181
+ </table>
182
+
183
+ <p align="center">
184
+ <a href="src/vue/README.md"><img src="https://img.shields.io/badge/📖_Full_Documentation-4FC08D?style=for-the-badge&logoColor=white" alt="Documentation"/></a>
185
+ &nbsp;
186
+ <a href="examples/vue/"><img src="https://img.shields.io/badge/🎯_Examples-35495E?style=for-the-badge&logoColor=white" alt="Examples"/></a>
187
+ </p>
188
+
189
+ ---
190
+
191
+ <h3>
192
+ <img src="https://api.iconify.design/logos:react.svg" width="28" height="28" alt="React" style="vertical-align: middle;" />
193
+ &nbsp;React
194
+ </h3>
195
+
196
+ <table>
197
+ <tr>
198
+ <td width="50%">
199
+
200
+ **Installation**
201
+
202
+ ```bash
203
+ npm install @alisaitteke/seatmap-canvas
204
+ ```
205
+
206
+ </td>
207
+ <td width="50%">
208
+
209
+ **Component Usage**
210
+
211
+ ```tsx
212
+ import { SeatmapCanvas } from '@alisaitteke/seatmap-canvas/react';
213
+ import '@alisaitteke/seatmap-canvas/dist/seatmap.canvas.css';
214
+
215
+ function App() {
216
+ const handleSeatClick = (seat) => {
217
+ seat.isSelected() ? seat.unSelect() : seat.select();
218
+ };
219
+
220
+ return (
221
+ <SeatmapCanvas
222
+ options={{
223
+ legend: true,
224
+ style: {
225
+ seat: { hover: '#8fe100', selected: '#8fe100' }
226
+ }
227
+ }}
228
+ data={blocks}
229
+ onSeatClick={handleSeatClick}
230
+ />
231
+ );
69
232
  }
233
+ ```
234
+
235
+ </td>
236
+ </tr>
237
+ </table>
238
+
239
+ <p align="center">
240
+ <a href="src/react/README.md"><img src="https://img.shields.io/badge/📖_Full_Documentation-61DAFB?style=for-the-badge&logoColor=black" alt="Documentation"/></a>
241
+ &nbsp;
242
+ <a href="examples/react/"><img src="https://img.shields.io/badge/🎯_Examples-20232A?style=for-the-badge&logoColor=white" alt="Examples"/></a>
243
+ </p>
244
+
245
+ ---
70
246
 
247
+ <h3>
248
+ <img src="https://api.iconify.design/logos:javascript.svg" width="24" height="24" alt="JavaScript" style="vertical-align: middle;" />
249
+ &nbsp;Vanilla JavaScript
250
+ </h3>
251
+
252
+ <table>
253
+ <tr>
254
+ <td width="50%">
255
+
256
+ **Quick Setup**
257
+
258
+ ```js
259
+ const config = {
260
+ resizable: true,
261
+ seat_style: {
262
+ radius: 12,
263
+ color: "#6796ff",
264
+ hover: "#5671ff",
265
+ selected: "#56aa45"
266
+ }
267
+ };
268
+
269
+ const seatmap = new SeatmapCanvas(".container", config);
270
+ seatmap.setData(data);
71
271
  ```
72
272
 
73
- #### Usage
273
+ </td>
274
+ <td width="50%">
275
+
276
+ **Event Handling**
277
+
74
278
  ```js
75
- var seatmap = new SeatmapCanvas(".seats_container",config);
279
+ seatmap.addEventListener("seat_click", (seat) => {
280
+ if (seat.selected) {
281
+ seatmap.seatUnselect(seat);
282
+ } else {
283
+ seatmap.seatSelect(seat);
284
+ }
285
+ });
286
+
287
+ // Get selected seats
288
+ const selected = seatmap.getSelectedSeats();
76
289
  ```
77
290
 
291
+ </td>
292
+ </tr>
293
+ </table>
294
+
295
+ <details>
296
+ <summary><strong>📋 Data Models Reference</strong></summary>
297
+
78
298
  #### Seat Model
79
299
  ```json
80
300
  {
@@ -94,54 +314,56 @@ var seatmap = new SeatmapCanvas(".seats_container",config);
94
314
  #### Block Model
95
315
  ```json
96
316
  {
97
- "blocks": [
98
- {
99
- "id": 1,
100
- "title": "Test Block 1",
101
- "color": "#2c2828",
102
- "labels": [
103
- {
104
- "title": "A",
105
- "x": -30,
106
- "y": 0
107
- },
108
- {
109
- "title": "B",
110
- "x": 120,
111
- "y": 30
112
- }
113
- ],
114
- "seats": [
115
- {
116
- "id": 1,
117
- "x": 0,
118
- "y": 0,
119
- "salable": true,
120
- "note": "note test",
121
- "title": "49"
122
- },
123
- {
124
- "id": 2,
125
- "x": 30,
126
- "y": 0,
127
- "salable": true,
128
- "note": "note test",
129
- "title": "47"
130
- }
131
- ]
132
- }
133
- ]
317
+ "blocks": [{
318
+ "id": 1,
319
+ "title": "Test Block 1",
320
+ "color": "#2c2828",
321
+ "labels": [{ "title": "A", "x": -30, "y": 0 }],
322
+ "seats": [
323
+ { "id": 1, "x": 0, "y": 0, "salable": true, "title": "49" },
324
+ { "id": 2, "x": 30, "y": 0, "salable": true, "title": "47" }
325
+ ]
326
+ }]
134
327
  }
135
-
136
328
  ```
137
329
 
138
- #### Set Block Data
330
+ #### Configuration Options
139
331
  ```js
140
- seatmap.setData(data);
332
+ {
333
+ click_enable_sold_seats: true // Enable clicking on unavailable seats (default: false)
334
+ }
141
335
  ```
142
336
 
143
- #### Seat Click Trigger
144
- ```js
337
+ </details>
338
+
339
+ <details>
340
+ <summary><strong>📝 Complete Example</strong></summary>
341
+ ```javascript
342
+
343
+ var config = {
344
+ "resizable": true,
345
+ "seat_style": {
346
+ "radius": 12,
347
+ "color": "#6796ff",
348
+ "hover": "#5671ff",
349
+ "not_salable": "#424747",
350
+ "selected": "#56aa45",
351
+ "focus": "#435fa4",
352
+ "focus_out": "#56aa45"
353
+ },
354
+ "block_style": {
355
+ "fill": "#e2e2e2",
356
+ "stroke": "#e2e2e2"
357
+ },
358
+ "label_style": {
359
+ "color": "#000",
360
+ "radius": 12,
361
+ "font-size": "12px",
362
+ "bg": "#ffffff"
363
+ }
364
+ }
365
+
366
+ var seatmap = new SeatmapCanvas(".seats_container",config);
145
367
  seatmap.addEventListener("seat_click", (seat) => {
146
368
  console.log(seat);
147
369
  if (seat.selected) {
@@ -150,21 +372,62 @@ seatmap.addEventListener("seat_click", (seat) => {
150
372
  seatmap.seatSelect(seat);
151
373
  }
152
374
  });
153
- ```
154
-
155
- #### Activated unsalable seat click
156
- ##### click_enable_sold_seats param add to config object
157
- ```javascript
158
- let config = {
159
- click_enable_sold_seats: true // default false
375
+ var data = {
376
+ "blocks": [
377
+ {
378
+ "id": 1,
379
+ "title": "Test Block 1",
380
+ "color": "#2c2828",
381
+ "labels": [
382
+ {
383
+ "title": "A",
384
+ "x": -30,
385
+ "y": 0
386
+ },
387
+ {
388
+ "title": "B",
389
+ "x": 120,
390
+ "y": 30
391
+ }
392
+ ],
393
+ "seats": [
394
+ {
395
+ "id": 1,
396
+ "x": 0,
397
+ "y": 0,
398
+ "salable": true,
399
+ "note": "note test",
400
+ "title": "49"
401
+ },
402
+ {
403
+ "id": 2,
404
+ "x": 30,
405
+ "y": 0,
406
+ "salable": true,
407
+ "note": "note test",
408
+ "title": "47"
409
+ }
410
+ ]
411
+ }
412
+ ]
160
413
  }
161
- ```
162
414
 
163
- #### Get selected seat
164
- ```javascript
165
- seatmap.addEventListener("seat_click", (seat) => {
166
- var selectedSeats = seatmap.getSelectedSeats();
167
- });
415
+ // SET SEATS DATA
416
+ seatmap.setData(data);
168
417
  ```
418
+
419
+ </details>
420
+
421
+ <p align="center">
422
+ <a href="examples/"><img src="https://img.shields.io/badge/📖_Documentation-F7DF1E?style=for-the-badge&logoColor=black" alt="Documentation"/></a>
423
+ &nbsp;
424
+ <a href="examples/"><img src="https://img.shields.io/badge/🎯_Examples-333333?style=for-the-badge&logoColor=white" alt="Examples"/></a>
425
+ </p>
426
+
427
+ ---
428
+
169
429
  ## Contributors
170
- Ali Sait Teke <alisaitt@gmail.com>
430
+
431
+ <a href="https://github.com/alisaitteke">
432
+ <img src="https://img.shields.io/badge/Ali_Sait_Teke-Maintainer-blue?style=flat-square&logo=github" alt="Ali Sait Teke"/>
433
+ </a>
package/dist/CLAUDE.md ADDED
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 23, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #72 | 2:45 PM | 🔵 | Successful Build with npm After Migration from Yarn | ~426 |
11
+ </claude-mem-context>
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 23, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #72 | 2:45 PM | 🔵 | Successful Build with npm After Migration from Yarn | ~426 |
11
+ </claude-mem-context>
@@ -94,6 +94,10 @@
94
94
  .seatmap-svg .stage .blocks .block .seats .seat.selected {
95
95
  cursor: pointer;
96
96
  }
97
+ .seatmap-svg .stage .blocks .block .seats .seat.not-salable {
98
+ cursor: not-allowed;
99
+ opacity: 0.7;
100
+ }
97
101
  .seatmap-svg .stage .blocks .block .seats .seat .label-text {
98
102
  text-anchor: middle;
99
103
  dominant-baseline: central;