@rdlabo/ionic-theme-ios27 0.1.0 → 0.2.1

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 (140) hide show
  1. package/README.md +10 -2
  2. package/dist/css/components/ion-button.css +1 -1
  3. package/dist/css/components/ion-fab.css +1 -1
  4. package/dist/css/components/ion-list.css +1 -1
  5. package/dist/css/components/ion-menu.css +1 -1
  6. package/dist/css/components/ion-searchbar.css +1 -1
  7. package/dist/css/components/ion-tabs.css +1 -1
  8. package/dist/css/components/ion-toolbar.css +1 -1
  9. package/dist/css/ionic-theme-ios27.css +1 -1
  10. package/dist/css/md-ion-list-inset.css +1 -1
  11. package/dist/css/utils/translucent.css +1 -1
  12. package/dist/index.d.ts +1 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -2
  15. package/dist/native/definitions.d.ts +19 -0
  16. package/dist/native/definitions.d.ts.map +1 -1
  17. package/dist/native/index.d.ts +4 -3
  18. package/dist/native/index.d.ts.map +1 -1
  19. package/dist/native/index.js +22 -9
  20. package/dist/native/lifecycle.d.ts +4 -0
  21. package/dist/native/lifecycle.d.ts.map +1 -0
  22. package/dist/native/lifecycle.js +34 -0
  23. package/dist/native/runtime.d.ts +2 -2
  24. package/dist/native/runtime.d.ts.map +1 -1
  25. package/dist/native/runtime.js +43 -4
  26. package/dist/tab-bar-searchable/animations/enter.d.ts +1 -1
  27. package/dist/tab-bar-searchable/animations/enter.d.ts.map +1 -1
  28. package/dist/tab-bar-searchable/animations/enter.js +1 -1
  29. package/dist/tab-bar-searchable/animations/leave.d.ts +1 -1
  30. package/dist/tab-bar-searchable/animations/leave.d.ts.map +1 -1
  31. package/dist/tab-bar-searchable/animations/leave.js +1 -1
  32. package/dist/tab-bar-searchable/index.d.ts +2 -2
  33. package/dist/tab-bar-searchable/index.d.ts.map +1 -1
  34. package/dist/tab-bar-searchable/index.js +2 -3
  35. package/dist/transition/ios.transition.d.ts +6 -1
  36. package/dist/transition/ios.transition.d.ts.map +1 -1
  37. package/dist/transition/ios.transition.js +10 -385
  38. package/docs/features.md +3 -1
  39. package/docs/native-ui-shell.md +113 -0
  40. package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +28 -0
  41. package/node_modules/@rdlabo/ionic-theme-utils/LICENSE +21 -0
  42. package/node_modules/@rdlabo/ionic-theme-utils/README.md +28 -0
  43. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts +3 -0
  44. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts.map +1 -0
  45. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js +13 -0
  46. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js.map +1 -0
  47. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts +6 -0
  48. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts.map +1 -0
  49. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js +37 -0
  50. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js.map +1 -0
  51. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts +13 -0
  52. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts.map +1 -0
  53. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js +11 -0
  54. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js.map +1 -0
  55. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/animations/ios.enter.d.ts +0 -1
  56. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.d.ts.map +1 -0
  57. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/animations/ios.enter.js +8 -5
  58. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.js.map +1 -0
  59. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/animations/ios.leave.d.ts.map +1 -1
  60. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/animations/ios.leave.js +11 -5
  61. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.js.map +1 -0
  62. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/callout-surface.js +1 -0
  63. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.js.map +1 -0
  64. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js +2 -0
  65. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js.map +1 -0
  66. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/utils.d.ts +1 -0
  67. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.d.ts.map +1 -0
  68. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/utils.js +3 -2
  69. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.js.map +1 -0
  70. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts +16 -0
  71. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts.map +1 -0
  72. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js +2 -0
  73. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js.map +1 -0
  74. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/interfaces.js +1 -0
  75. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.js.map +1 -0
  76. package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/utils.js +1 -0
  77. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.js.map +1 -0
  78. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts +15 -0
  79. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts.map +1 -0
  80. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js +49 -0
  81. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js.map +1 -0
  82. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts +18 -0
  83. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts.map +1 -0
  84. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js +412 -0
  85. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js.map +1 -0
  86. package/node_modules/@rdlabo/ionic-theme-utils/package.json +64 -0
  87. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.spec.ts +19 -0
  88. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.ts +16 -0
  89. package/node_modules/@rdlabo/ionic-theme-utils/src/focus-controller.ts +38 -0
  90. package/node_modules/@rdlabo/ionic-theme-utils/src/index.ts +59 -0
  91. package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/popover/animations/ios.enter.ts +7 -5
  92. package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/popover/animations/ios.leave.ts +14 -5
  93. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/utils.spec.ts +58 -0
  94. package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/popover/utils.ts +4 -2
  95. package/node_modules/@rdlabo/ionic-theme-utils/src/sheets-of-glass.ts +17 -0
  96. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/index.scss +1 -0
  97. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/md-ion-list-inset.scss +20 -0
  98. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/structured-list.scss +310 -0
  99. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/utils.spec.ts +56 -0
  100. package/node_modules/@rdlabo/ionic-theme-utils/src/theme.ts +51 -0
  101. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.spec.ts +52 -0
  102. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.ts +542 -0
  103. package/package.json +13 -5
  104. package/src/index.ts +4 -2
  105. package/src/native/definitions.ts +34 -0
  106. package/src/native/index.ts +38 -11
  107. package/src/native/lifecycle.ts +38 -0
  108. package/src/native/runtime.ts +49 -4
  109. package/src/styles/components/ion-button.scss +21 -10
  110. package/src/styles/components/ion-fab.scss +10 -4
  111. package/src/styles/components/ion-list.scss +12 -3
  112. package/src/styles/components/ion-menu.scss +17 -10
  113. package/src/styles/components/ion-searchbar.scss +1 -1
  114. package/src/styles/components/ion-tabs.scss +14 -10
  115. package/src/styles/components/ion-toolbar.scss +9 -10
  116. package/src/styles/md-ion-list-inset.scss +2 -2
  117. package/src/styles/utils/dark/ion-list.scss +1 -1
  118. package/src/styles/utils/translucent.scss +44 -0
  119. package/src/tab-bar-searchable/animations/enter.ts +1 -2
  120. package/src/tab-bar-searchable/animations/leave.ts +1 -2
  121. package/src/tab-bar-searchable/index.ts +12 -4
  122. package/src/transition/ios.transition.ts +14 -473
  123. package/dist/css/utils/structured-list.css +0 -1
  124. package/dist/popover/animations/ios.enter.d.ts.map +0 -1
  125. package/dist/popover/popover-interface.js +0 -1
  126. package/dist/popover/utils.d.ts.map +0 -1
  127. package/src/styles/utils/structured-list.scss +0 -223
  128. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/animations/ios.leave.d.ts +0 -0
  129. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/callout-surface.d.ts +0 -0
  130. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/callout-surface.d.ts.map +0 -0
  131. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/popover-interface.d.ts +0 -0
  132. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/popover/popover-interface.d.ts.map +0 -0
  133. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/interfaces.d.ts +0 -0
  134. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/interfaces.d.ts.map +0 -0
  135. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/utils.d.ts +0 -0
  136. /package/{dist → node_modules/@rdlabo/ionic-theme-utils/dist}/tab-bar-searchable/utils.d.ts.map +0 -0
  137. /package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/popover/callout-surface.ts +0 -0
  138. /package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/popover/popover-interface.ts +0 -0
  139. /package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/tab-bar-searchable/interfaces.ts +0 -0
  140. /package/{src → node_modules/@rdlabo/ionic-theme-utils/src}/tab-bar-searchable/utils.ts +0 -0
@@ -1 +1 @@
1
- ion-list.md ion-item:has(ion-input.input-fill-outline),ion-list.md ion-item:has(ion-textarea.textarea-fill-outline),ion-list.md ion-item:has(ion-select:is([helpertext]:not([helpertext=""]),[errortext]:not([errortext=""]))),ion-list.md ion-item:has(ion-input .input-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))),ion-list.md ion-item:has(ion-textarea .textarea-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))){--inner-border-width: 0;--inner-padding-bottom: 4px}ion-list.md ion-item ion-input .input-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))),ion-list.md ion-item ion-textarea .textarea-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))){display:none}ion-list.md.list-inset{background:rgba(0,0,0,0)}ion-list.md.list-inset ion-list-header{display:flex;align-items:center}ion-list.md.list-inset ion-list-header ion-label{font-size:1rem;line-height:1.29rem;font-weight:600;margin:8px 4px 4px}ion-list.md.list-inset ion-list-header ion-label:not(.ion-color){color:var(--ion-color-medium-tint)}ion-list.md.list-inset ion-list-header ion-button{margin-top:8px}ion-list.md.list-inset ion-list-header ion-note{font-size:.76rem;line-height:1.06rem;font-weight:400;margin:8px 16px 4px 0}ion-list.md.list-inset ion-list-header ion-note:not(.ion-color){--color: var(--ion-color-medium-tint)}ion-list.md.list-inset ion-item-group.item-group-header{border-radius:16px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item{--inner-padding-end: 0;--inner-border-width: 0}ion-list.md.list-inset ion-item-group.item-group-header>ion-item::part(native){padding-inline:0}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label{width:100%;margin:0;text-align:start;white-space:normal;padding:16px 20px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-header.header-collapse-condense>ion-toolbar{--min-height: 0;visibility:hidden}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon{font-size:2.82rem;border-radius:20%;padding:6px;vertical-align:top}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon:not(.ion-color){color:#fff}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label h2{font-size:1.29rem;font-weight:700;line-height:1.53rem;margin:20px 0 8px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text{display:block;font-size:1rem;line-height:1.29rem}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text:not(.ion-color){color:var(--ion-color-step-500, var(--ion-text-color-step-500, #808080))}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group){display:block;border-radius:16px;overflow:hidden}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top){display:flex;flex-direction:column;border-radius:0;overflow:visible}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>.radio-group-top{order:1;font-size:.9rem;padding-block-start:8px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:first-of-type{--border-radius: 16px 16px 0 0}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:last-of-type{--border-radius: 0 0 16px 16px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):not(:first-of-type){margin-top:16px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))::part(container){flex-direction:column;justify-content:center;padding-top:14px;padding-bottom:14px;min-height:64px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label,ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{width:auto;align-self:flex-start}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label{margin:0;font-weight:500;font-size:1rem;line-height:1.29rem}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{font-size:.88rem;line-height:1.18rem}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-text[slot=end]{padding-left:8px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled{--detail-icon-opacity: 0.1;opacity:1}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled>*{opacity:.4}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end].ion-align-self-end{transform:translateY(-7px)}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end] ion-icon[slot=icon-only]{font-size:1.2rem;transform:translateY(4px)}ion-list.md.list-inset>ion-note{font-size:.76rem;line-height:1.06rem;font-weight:400;display:block;margin:8px calc(var(--ion-safe-area-right, 0) + 8px) 8px calc(var(--ion-safe-area-left, 0) + 8px)}ion-list.md.list-inset>ion-note:not(.ion-color){--color: var(--ion-color-medium-tint)}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]{transition:transform 200ms ease}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]:not(.label-floating){transform:translateY(-7px)}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating].label-floating{transform:translateY(-4px)}
1
+ ion-list.md ion-item:has(ion-input.input-fill-outline),ion-list.md ion-item:has(ion-textarea.textarea-fill-outline),ion-list.md ion-item:has(ion-select:is([helpertext]:not([helpertext=""]),[errortext]:not([errortext=""]))),ion-list.md ion-item:has(ion-input .input-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))),ion-list.md ion-item:has(ion-textarea .textarea-bottom>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty))){--inner-border-width: 0;--inner-padding-bottom: 4px}ion-list.md ion-item ion-input .input-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))),ion-list.md ion-item ion-textarea .textarea-bottom:not(:has(>:is(.helper-text:not(:empty),.error-text:not(:empty),.counter:not(:empty)))){display:none}ion-list.md.list-inset{background:rgba(0,0,0,0)}ion-list.md.list-inset ion-list-header{display:flex;align-items:center}ion-list.md.list-inset ion-list-header ion-label{font-size:1rem;line-height:1.29rem;font-weight:600;margin:8px 4px 4px}ion-list.md.list-inset ion-list-header ion-label:not(.ion-color){color:var(--ion-color-medium-tint)}ion-list.md.list-inset ion-list-header ion-button{margin-top:8px}ion-list.md.list-inset ion-list-header ion-note{font-size:.76rem;line-height:1.06rem;font-weight:400;margin-block:8px 4px;margin-inline:0 16px}ion-list.md.list-inset ion-list-header ion-note:not(.ion-color){--color: var(--ion-color-medium-tint)}ion-list.md.list-inset ion-item-group.item-group-header{border-radius:16px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item{--inner-padding-end: 0;--inner-border-width: 0}ion-list.md.list-inset ion-item-group.item-group-header>ion-item::part(native){padding-inline:0}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label{width:100%;margin:0;text-align:start;white-space:normal;padding:16px 20px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-header.header-collapse-condense>ion-toolbar{--min-height: 0;visibility:hidden}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon{font-size:2.82rem;border-radius:20%;padding:6px;vertical-align:top}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-icon:not(.ion-color){color:#fff}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label h2{font-size:1.29rem;font-weight:700;line-height:1.53rem;margin:20px 0 8px}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text{display:block;font-size:1rem;line-height:1.29rem}ion-list.md.list-inset ion-item-group.item-group-header>ion-item>ion-label ion-text:not(.ion-color){color:var(--ion-color-step-500, var(--ion-text-color-step-500, #808080))}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group){display:block;border-radius:16px;overflow:hidden}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top){display:flex;flex-direction:column;border-radius:0;overflow:visible}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>.radio-group-top{order:1;font-size:.9rem;padding-block-start:8px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:first-of-type{--border-radius: 16px 16px 0 0}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):has(>.radio-group-top)>ion-item:last-of-type{--border-radius: 0 0 16px 16px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group):not(:first-of-type){margin-top:16px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))::part(container){flex-direction:column;justify-content:center;padding-top:14px;padding-bottom:14px;min-height:64px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label,ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{width:auto;align-self:flex-start}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-label{margin:0;font-weight:500;font-size:1rem;line-height:1.29rem}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item:has(>ion-label:not([slot])):has(>ion-note:not([slot]))>ion-note{font-size:.88rem;line-height:1.18rem}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-text[slot=end]{padding-inline-start:8px}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled{--detail-icon-opacity: 0.1;opacity:1}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item.item-disabled>*{opacity:.4}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end].ion-align-self-end{transform:translateY(-7px)}ion-list.md.list-inset>:is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item ion-button[slot=end] ion-icon[slot=icon-only]{font-size:1.2rem;transform:translateY(4px)}ion-list.md.list-inset>ion-note{margin-block:8px;margin-inline:calc(var(--ion-safe-area-left, 0) + 8px) calc(var(--ion-safe-area-right, 0) + 8px)}ion-list.md.list-inset>ion-note:dir(rtl){margin-inline:calc(var(--ion-safe-area-right, 0) + 8px) calc(var(--ion-safe-area-left, 0) + 8px)}ion-list.md.list-inset>ion-note{font-size:.76rem;line-height:1.06rem;font-weight:400;display:block}ion-list.md.list-inset>ion-note:not(.ion-color){--color: var(--ion-color-medium-tint)}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]{transition:transform 200ms ease}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating]:not(.label-floating){transform:translateY(-7px)}ion-list.md.list-inset :is(ion-item-group,ion-reorder-group,ion-accordion-group,ion-radio-group) ion-item>ion-input[labelplacement=floating].label-floating{transform:translateY(-4px)}
@@ -1 +1 @@
1
- ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent .header-background,ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent .footer-background,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent .header-background,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent .footer-background{backdrop-filter:none}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar{--border-width: 0;--background: transparent;--opacity: 1}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar::part(background),ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar::part(background){--opacity: 0}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar ion-title,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar ion-title{transform:translateY(0)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):has(>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled)>*)::before{height:100%;background:rgba(var(--ion-color-base-rgb, var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb))), calc(0.2 * var(--opacity-scale, 1)));backdrop-filter:blur(8px)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):last-of-type{--border-width: 0 0 0.5px;--border-color: var(--ion-toolbar-border-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08))}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):last-of-type::part(background){--opacity: 1;background:rgba(0,0,0,0)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-collapse-main ion-toolbar.in-toolbar ion-title{transition:opacity .5s ease-in-out,color .5s ease-in-out,text-shadow .5s ease-in-out,transform .5s ease-in-out}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title{color:rgba(0,0,0,0);text-shadow:0 0 1px var(--ion-color-base, var(--ion-toolbar-color, var(--ion-text-color, #000)));transform:translateY(8px)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::before,ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::after,ion-content.ios:not(.ios-theme-disabled,.ios26-disabled).content-fullscreen::part(background)::before{content:"";position:absolute;width:100%;pointer-events:none;z-index:1}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::before{z-index:2;top:0;height:var(--ion-safe-area-top)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::after{z-index:2;top:0;height:100%;backdrop-filter:blur(2px);mask-image:linear-gradient(rgb(0, 0, 0) 80%, rgba(0, 0, 0, 0) 100%);mask-composite:intersect}.ion-page:has(>ion-header.header-translucent)>ion-content.content-fullscreen::part(background)::before{z-index:2;top:0;height:var(--offset-top, 0px);background:linear-gradient(in oklab, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0.5) 0%, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0.2) 50%, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0) 100%)}
1
+ ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent .header-background,ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent .footer-background,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent .header-background,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent .footer-background{backdrop-filter:none}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar{--border-width: 0;--background: transparent;--opacity: 1}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar::part(background),ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar::part(background){--opacity: 0}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent ion-toolbar ion-title,ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent ion-toolbar ion-title{transform:translateY(0)}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-header.ios:not(.ios-theme-disabled,.ios26-disabled):not(.header-translucent) ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled),.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled):not(.footer-translucent) ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled){--background: transparent;--opacity: 1}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-header.ios:not(.ios-theme-disabled,.ios26-disabled):not(.header-translucent) ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled)::part(background),.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled):not(.footer-translucent) ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled)::part(background){--opacity: 0}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):has(>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled)>*)::before{height:100%;background:rgba(var(--ion-color-base-rgb, var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb))), calc(0.2 * var(--opacity-scale, 1)));backdrop-filter:blur(8px)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):last-of-type{--border-width: 0 0 0.5px;--border-color: var(--ion-toolbar-border-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08))}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent:not(.header-collapse-condense):not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):last-of-type::part(background){--opacity: 1;background:rgba(0,0,0,0)}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent:has(>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled)>*)::before{bottom:0;height:100%;background:rgba(var(--ion-color-base-rgb, var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb))), calc(0.2 * var(--opacity-scale, 1)));backdrop-filter:blur(8px)}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent:not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):first-of-type{--border-width: 0.5px 0 0;--border-color: var(--ion-toolbar-border-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08))}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent:not(.ion-no-border)>ion-toolbar.ios:not(.ios-theme-disabled,.ios26-disabled):has(>*):first-of-type::part(background){--opacity: 1;background:rgba(0,0,0,0)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-collapse-main ion-toolbar.in-toolbar ion-title{transition:opacity .5s ease-in-out,color .5s ease-in-out,text-shadow .5s ease-in-out,transform .5s ease-in-out}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title{color:rgba(0,0,0,0);text-shadow:0 0 1px var(--ion-color-base, var(--ion-toolbar-color, var(--ion-text-color, #000)));transform:translateY(8px)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::before,ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::after,.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent::before,.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent::after,ion-content.ios:not(.ios-theme-disabled,.ios26-disabled).content-fullscreen::part(background)::before{content:"";position:absolute;width:100%;pointer-events:none;z-index:1}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::before{z-index:2;top:0;height:var(--ion-safe-area-top)}ion-header.ios:not(.ios-theme-disabled,.ios26-disabled).header-translucent::after{z-index:2;top:0;height:100%;backdrop-filter:blur(2px);mask-image:linear-gradient(rgb(0, 0, 0) 80%, rgba(0, 0, 0, 0) 100%);mask-composite:intersect}.ion-page:has(>ion-content.ios.content-fullscreen)>ion-footer.ios:not(.ios-theme-disabled,.ios26-disabled).footer-translucent::after{z-index:2;bottom:0;height:100%;backdrop-filter:blur(2px);mask-image:linear-gradient(rgba(0, 0, 0, 0) 0%, rgb(0, 0, 0) 20%);mask-composite:intersect}.ion-page:has(>ion-header.header-translucent)>ion-content.content-fullscreen::part(background)::before{z-index:2;top:0;height:var(--offset-top, 0px);background:linear-gradient(in oklab, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0.5) 0%, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0.2) 50%, rgba(var(--ios-theme-content-box-shadow-rgb, var(--ios26-content-box-shadow-rgb)), 0) 100%)}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { registeredEffect } from './sheets-of-glass/interfaces';
2
2
  export * from './sheets-of-glass/interfaces';
3
- export { iosEnterAnimation as popoverEnterAnimation } from './popover/animations/ios.enter';
4
- export { iosLeaveAnimation as popoverLeaveAnimation } from './popover/animations/ios.leave';
3
+ export { iosPopoverEnterAnimation as popoverEnterAnimation, iosPopoverLeaveAnimation as popoverLeaveAnimation, } from '@rdlabo/ionic-theme-utils';
5
4
  export * from './tab-bar-searchable';
6
5
  export * from './searchbar';
7
6
  export * from './transition/ios.transition';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,eAAO,MAAM,oBAAoB,GAAI,eAAe,WAAW,KAAG,gBAAgB,GAAG,SAyBpF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,wBAAwB,IAAI,qBAAqB,EACjD,wBAAwB,IAAI,qBAAqB,GAClD,MAAM,2BAA2B,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,eAAO,MAAM,oBAAoB,GAAI,eAAe,WAAW,KAAG,gBAAgB,GAAG,SAyBpF,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { registerEffect } from './sheets-of-glass';
2
2
  export * from './sheets-of-glass/interfaces';
3
- export { iosEnterAnimation as popoverEnterAnimation } from './popover/animations/ios.enter';
4
- export { iosLeaveAnimation as popoverLeaveAnimation } from './popover/animations/ios.leave';
3
+ export { iosPopoverEnterAnimation as popoverEnterAnimation, iosPopoverLeaveAnimation as popoverLeaveAnimation, } from '@rdlabo/ionic-theme-utils';
5
4
  export * from './tab-bar-searchable';
6
5
  export * from './searchbar';
7
6
  export * from './transition/ios.transition';
@@ -7,10 +7,24 @@ export interface NativeUIShellStatus {
7
7
  updates: number;
8
8
  reason?: string;
9
9
  }
10
+ export interface NativeUIShellOptions {
11
+ enabled?: boolean;
12
+ controls?: NativeUIShellControls;
13
+ }
14
+ export interface NativeUIShellControls {
15
+ tabs?: boolean;
16
+ toolbar?: boolean;
17
+ segment?: boolean;
18
+ fab?: boolean;
19
+ }
10
20
  export interface NativeUIShellHandle {
11
21
  getStatus(): NativeUIShellStatus;
22
+ suspend(): Promise<NativeUIShellSuspension>;
12
23
  destroy(): Promise<void>;
13
24
  }
25
+ export interface NativeUIShellSuspension {
26
+ resume(): Promise<void>;
27
+ }
14
28
  export interface Frame {
15
29
  x: number;
16
30
  y: number;
@@ -89,10 +103,14 @@ export interface ShellActivation {
89
103
  id: string;
90
104
  sequence: number;
91
105
  }
106
+ export interface WebViewMetrics {
107
+ radius: number;
108
+ }
92
109
  export interface NativeUIShellPlugin {
93
110
  configure(): Promise<{
94
111
  supported: boolean;
95
112
  }>;
113
+ getWebViewMetrics(): Promise<WebViewMetrics>;
96
114
  update(snapshot: ShellSnapshot): Promise<{
97
115
  revision: number;
98
116
  rejectedSearches?: string[];
@@ -103,5 +121,6 @@ export interface NativeUIShellPlugin {
103
121
  }): Promise<void>;
104
122
  addListener(name: 'activate', listener: (event: ShellActivation) => void): Promise<PluginListenerHandle>;
105
123
  addListener(name: 'search', listener: (event: ShellSearchEvent) => void): Promise<PluginListenerHandle>;
124
+ addListener(name: 'webViewMetricsChange', listener: (event: WebViewMetrics) => void): Promise<PluginListenerHandle>;
106
125
  }
107
126
  //# sourceMappingURL=definitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/native/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/native/definitions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { NativeUIShellHandle } from './definitions';
2
- export type { NativeUIShellComponent, NativeUIShellHandle, NativeUIShellStatus } from './definitions';
3
- export declare const enableNativeUIShell: () => Promise<NativeUIShellHandle>;
1
+ import type { NativeUIShellHandle, NativeUIShellOptions, WebViewMetrics } from './definitions';
2
+ export type { NativeUIShellComponent, NativeUIShellControls, NativeUIShellHandle, NativeUIShellOptions, NativeUIShellStatus, NativeUIShellSuspension, WebViewMetrics, } from './definitions';
3
+ export declare const configureNativeTransition: () => Promise<WebViewMetrics>;
4
+ export declare const enableNativeUIShell: (options?: NativeUIShellOptions) => Promise<NativeUIShellHandle>;
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,eAAe,CAAC;AAE9E,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAUtG,eAAO,MAAM,mBAAmB,QAAO,OAAO,CAAC,mBAAmB,CAqBjE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAuB,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpH,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,GACf,MAAM,eAAe,CAAC;AAWvB,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,cAAc,CAIxE,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAAI,UAAS,oBAAyB,KAAG,OAAO,CAAC,mBAAmB,CA8BnG,CAAC"}
@@ -1,28 +1,41 @@
1
1
  import { Capacitor, registerPlugin } from '@capacitor/core';
2
+ import { setConfig } from '../transition/ios.transition';
3
+ import { bindMetricsLifecycle } from './lifecycle';
2
4
  import { createRuntime } from './runtime';
3
5
  const plugin = registerPlugin('IonicNativeUIShell');
4
6
  let active;
5
7
  const web = (reason) => ({
6
8
  getStatus: () => ({ state: 'web', projected: 0, updates: 0, reason }),
9
+ suspend: async () => ({ resume: async () => { } }),
7
10
  destroy: async () => { },
8
11
  });
9
- export const enableNativeUIShell = () => {
12
+ export const configureNativeTransition = async () => {
13
+ const metrics = typeof document !== 'undefined' && Capacitor.getPlatform() === 'ios' ? await plugin.getWebViewMetrics() : { radius: 0 };
14
+ setConfig({ radius: metrics.radius });
15
+ return metrics;
16
+ };
17
+ export const enableNativeUIShell = (options = {}) => {
18
+ if (options.enabled === false) {
19
+ const current = active;
20
+ active = undefined;
21
+ return current
22
+ ? current.then(async (handle) => {
23
+ await handle.destroy();
24
+ return web('Disabled');
25
+ })
26
+ : Promise.resolve(web('Disabled'));
27
+ }
10
28
  if (typeof document === 'undefined' || Capacitor.getPlatform() !== 'ios')
11
29
  return Promise.resolve(web('Requires Capacitor iOS'));
12
30
  return (active ?? (active = (async () => {
13
31
  try {
32
+ await configureNativeTransition().catch(() => undefined);
14
33
  if (!(await plugin.configure()).supported) {
15
34
  active = undefined;
16
35
  return web('Requires iOS 26 or later');
17
36
  }
18
- const runtime = await createRuntime(document, plugin);
19
- return {
20
- getStatus: runtime.getStatus,
21
- async destroy() {
22
- await runtime.destroy();
23
- active = undefined;
24
- },
25
- };
37
+ const runtime = await createRuntime(document, plugin, options);
38
+ return await bindMetricsLifecycle(runtime, () => plugin.addListener('webViewMetricsChange', (metrics) => setConfig({ radius: metrics.radius })), () => (active = undefined));
26
39
  }
27
40
  catch (error) {
28
41
  active = undefined;
@@ -0,0 +1,4 @@
1
+ import type { PluginListenerHandle } from '@capacitor/core';
2
+ import type { NativeUIShellHandle } from './definitions';
3
+ export declare const bindMetricsLifecycle: (runtime: NativeUIShellHandle, listen: () => Promise<PluginListenerHandle>, deactivate: () => void) => Promise<NativeUIShellHandle>;
4
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/native/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,eAAO,MAAM,oBAAoB,GAC/B,SAAS,mBAAmB,EAC5B,QAAQ,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAC3C,YAAY,MAAM,IAAI,KACrB,OAAO,CAAC,mBAAmB,CA8B7B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export const bindMetricsLifecycle = async (runtime, listen, deactivate) => {
2
+ let listener;
3
+ try {
4
+ listener = await listen();
5
+ }
6
+ catch (error) {
7
+ await runtime.destroy();
8
+ throw error;
9
+ }
10
+ let destroying;
11
+ return {
12
+ getStatus: runtime.getStatus,
13
+ suspend: runtime.suspend,
14
+ destroy() {
15
+ return (destroying ?? (destroying = (async () => {
16
+ let removalError;
17
+ try {
18
+ await listener.remove();
19
+ }
20
+ catch (error) {
21
+ removalError = error;
22
+ }
23
+ try {
24
+ await runtime.destroy();
25
+ }
26
+ finally {
27
+ deactivate();
28
+ }
29
+ if (removalError)
30
+ throw removalError;
31
+ })()));
32
+ },
33
+ };
34
+ };
@@ -1,3 +1,3 @@
1
- import type { NativeUIShellHandle, NativeUIShellPlugin } from './definitions';
2
- export declare const createRuntime: (doc: Document, plugin: NativeUIShellPlugin) => Promise<NativeUIShellHandle>;
1
+ import type { NativeUIShellHandle, NativeUIShellOptions, NativeUIShellPlugin } from './definitions';
2
+ export declare const createRuntime: (doc: Document, plugin: NativeUIShellPlugin, options?: NativeUIShellOptions) => Promise<NativeUIShellHandle>;
3
3
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkC,mBAAmB,EAAE,mBAAmB,EAAuB,MAAM,eAAe,CAAC;AAkBnI,eAAO,MAAM,aAAa,GAAU,KAAK,QAAQ,EAAE,QAAQ,mBAAmB,KAAG,OAAO,CAAC,mBAAmB,CA6c3G,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,eAAe,CAAC;AAkBvB,eAAO,MAAM,aAAa,GACxB,KAAK,QAAQ,EACb,QAAQ,mBAAmB,EAC3B,UAAS,oBAAyB,KACjC,OAAO,CAAC,mBAAmB,CA+e7B,CAAC"}
@@ -12,7 +12,7 @@ const bounded = (promise) => new Promise((resolve, reject) => {
12
12
  const timer = setTimeout(() => reject(new Error('Native UI Shell bridge timed out')), 5000);
13
13
  promise.then(resolve, reject).finally(() => clearTimeout(timer));
14
14
  });
15
- export const createRuntime = async (doc, plugin) => {
15
+ export const createRuntime = async (doc, plugin, options = {}) => {
16
16
  const win = doc.defaultView;
17
17
  const icons = createIconRenderer();
18
18
  const crossfade = createCrossfade(win);
@@ -22,6 +22,7 @@ export const createRuntime = async (doc, plugin) => {
22
22
  const suspended = new Set();
23
23
  const pages = new Set();
24
24
  const presented = new Set();
25
+ const manualSuspensions = new Set();
25
26
  const moving = new Map();
26
27
  const observed = new Set();
27
28
  const listeners = new AbortController();
@@ -44,6 +45,19 @@ export const createRuntime = async (doc, plugin) => {
44
45
  let listener;
45
46
  let searchListener;
46
47
  let waiters = [];
48
+ const control = (kind) => {
49
+ if (kind === 'ion-tab-bar')
50
+ return 'tabs';
51
+ if (kind === 'ion-segment')
52
+ return 'segment';
53
+ if (kind === 'ion-fab')
54
+ return 'fab';
55
+ return 'toolbar';
56
+ };
57
+ const controlEnabled = (candidate) => {
58
+ const controls = options.controls;
59
+ return controls === undefined || controls[control(candidate.control.kind)] === true;
60
+ };
47
61
  const id = (element) => {
48
62
  let value = ids.get(element);
49
63
  if (!value) {
@@ -87,6 +101,10 @@ export const createRuntime = async (doc, plugin) => {
87
101
  };
88
102
  const search = createSearchSupport(doc, id, schedule);
89
103
  const candidateSources = (candidate) => candidate.sources ?? [candidate.element];
104
+ const readEnabledCandidate = (element) => {
105
+ const candidate = readCandidate(element, id);
106
+ return candidate && controlEnabled(candidate) ? candidate : undefined;
107
+ };
90
108
  const flush = async () => {
91
109
  if (stopped)
92
110
  return;
@@ -106,7 +124,8 @@ export const createRuntime = async (doc, plugin) => {
106
124
  for (const element of presented)
107
125
  if (!element.isConnected)
108
126
  presented.delete(element);
109
- return (presented.size > 0 ||
127
+ return (manualSuspensions.size > 0 ||
128
+ presented.size > 0 ||
110
129
  Array.from(doc.querySelectorAll(overlays)).some((element) => element.presented || element.classList.contains('show-menu')));
111
130
  };
112
131
  const signature = (candidate) => JSON.stringify({ control: candidate.control, icons: candidate.icons.map(({ source }) => source) });
@@ -123,7 +142,7 @@ export const createRuntime = async (doc, plugin) => {
123
142
  return unprojected(sources.keys(), () => search
124
143
  .decorate(Array.from(doc.querySelectorAll(selector))
125
144
  .filter((element) => !blocked(element))
126
- .map((element) => readCandidate(element, id))
145
+ .map(readEnabledCandidate)
127
146
  .filter((candidate) => !!candidate), blocked)
128
147
  .filter((candidate) => !rejected.has(candidate.element) || rejected.get(candidate.element) !== signature(candidate)));
129
148
  };
@@ -366,6 +385,25 @@ export const createRuntime = async (doc, plugin) => {
366
385
  updates,
367
386
  reason,
368
387
  }),
388
+ async suspend() {
389
+ const token = Symbol();
390
+ let resumed = false;
391
+ if (!stopped) {
392
+ manualSuspensions.add(token);
393
+ getNativeSearchBindings(doc).forEach((binding) => search.retire(binding));
394
+ await flush();
395
+ }
396
+ return {
397
+ async resume() {
398
+ if (resumed)
399
+ return;
400
+ resumed = true;
401
+ if (stopped || !manualSuspensions.delete(token))
402
+ return;
403
+ await flush();
404
+ },
405
+ };
406
+ },
369
407
  async destroy() {
370
408
  if (stopped)
371
409
  return;
@@ -392,6 +430,7 @@ export const createRuntime = async (doc, plugin) => {
392
430
  icons.clear();
393
431
  pages.clear();
394
432
  presented.clear();
433
+ manualSuspensions.clear();
395
434
  moving.clear();
396
435
  suspended.clear();
397
436
  await listener?.remove().catch(() => { });
@@ -418,7 +457,7 @@ export const createRuntime = async (doc, plugin) => {
418
457
  const owner = Array.from(sources.keys()).find((source) => source === element || source.contains(element));
419
458
  if (!owner)
420
459
  return;
421
- const direct = !blocked(owner) && unprojected(sources.keys(), () => readCandidate(owner, id));
460
+ const direct = !blocked(owner) && unprojected(sources.keys(), () => readEnabledCandidate(owner));
422
461
  const candidate = direct || read().find((candidate) => candidate.actions.has(event.id));
423
462
  const item = candidate?.control.items.find((item) => item.id === event.id);
424
463
  const searchAction = candidate?.control.search && [candidate.control.search.trigger.id, candidate.control.search.closeId].includes(event.id);
@@ -1,5 +1,5 @@
1
- import { ElementReferences, ElementSizes } from '../interfaces';
2
1
  import { Animation } from '@ionic/core';
2
+ import { type ElementReferences, type ElementSizes } from '@rdlabo/ionic-theme-utils';
3
3
  export declare const createEffectAnimation: (references: ElementReferences, sizes: ElementSizes) => Animation;
4
4
  export declare const createSearchContainerAnimation: (references: ElementReferences, sizes: ElementSizes) => Animation;
5
5
  export declare const createCloseButtonsAnimation: (references: ElementReferences) => Animation;
@@ -1 +1 @@
1
- {"version":3,"file":"enter.d.ts","sourceRoot":"","sources":["../../../src/tab-bar-searchable/animations/enter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAIzD,eAAO,MAAM,qBAAqB,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SA0B1F,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAUnG,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,YAAY,iBAAiB,KAAG,SAO3E,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,WAAW,EAAE,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAyBlH,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,cAAc,WAAW,KAAG,SAWpE,CAAC"}
1
+ {"version":3,"file":"enter.d.ts","sourceRoot":"","sources":["../../../src/tab-bar-searchable/animations/enter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAqD,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzI,eAAO,MAAM,qBAAqB,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SA0B1F,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAUnG,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,YAAY,iBAAiB,KAAG,SAO3E,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,WAAW,EAAE,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAyBlH,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,cAAc,WAAW,KAAG,SAWpE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { createAnimation } from '@ionic/core';
2
+ import { ANIMATION_DELAY_CLOSE_BUTTONS, OPACITY_TRANSITION } from '@rdlabo/ionic-theme-utils';
2
3
  import { cloneElement } from '../../utils';
3
- import { ANIMATION_DELAY_CLOSE_BUTTONS, OPACITY_TRANSITION } from '../utils';
4
4
  export const createEffectAnimation = (references, sizes) => {
5
5
  const effectElement = cloneElement('ion-icon');
6
6
  const closeButtonRect = references.closeButtonIcon?.getBoundingClientRect();
@@ -1,5 +1,5 @@
1
- import { ElementReferences, ElementSizes } from '../interfaces';
2
1
  import { Animation } from '@ionic/core';
2
+ import { type ElementReferences, type ElementSizes } from '@rdlabo/ionic-theme-utils';
3
3
  export declare const createReverseEffectAnimation: (references: ElementReferences, searchableElementSizes: ElementSizes, colorSelected: string) => Animation;
4
4
  export declare const createReverseSearchContainerAnimation: (references: ElementReferences, sizes: ElementSizes) => Animation;
5
5
  export declare const createReverseCloseButtonsAnimation: (references: ElementReferences) => Animation;
@@ -1 +1 @@
1
- {"version":3,"file":"leave.d.ts","sourceRoot":"","sources":["../../../src/tab-bar-searchable/animations/leave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAIzD,eAAO,MAAM,4BAA4B,GACvC,YAAY,iBAAiB,EAC7B,wBAAwB,YAAY,EACpC,eAAe,MAAM,KACpB,SAyBF,CAAC;AAEF,eAAO,MAAM,qCAAqC,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAU1G,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,YAAY,iBAAiB,KAAG,SAOlF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,WAAW,WAAW,EAAE,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAkBzH,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAI,cAAc,WAAW,EAAE,YAAY,YAAY,KAAG,SAYrG,CAAC"}
1
+ {"version":3,"file":"leave.d.ts","sourceRoot":"","sources":["../../../src/tab-bar-searchable/animations/leave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAqD,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzI,eAAO,MAAM,4BAA4B,GACvC,YAAY,iBAAiB,EAC7B,wBAAwB,YAAY,EACpC,eAAe,MAAM,KACpB,SAyBF,CAAC;AAEF,eAAO,MAAM,qCAAqC,GAAI,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAU1G,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,YAAY,iBAAiB,KAAG,SAOlF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,WAAW,WAAW,EAAE,YAAY,iBAAiB,EAAE,OAAO,YAAY,KAAG,SAkBzH,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAI,cAAc,WAAW,EAAE,YAAY,YAAY,KAAG,SAYrG,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { createAnimation } from '@ionic/core';
2
+ import { ANIMATION_DELAY_CLOSE_BUTTONS, OPACITY_TRANSITION } from '@rdlabo/ionic-theme-utils';
2
3
  import { cloneElement } from '../../utils';
3
- import { ANIMATION_DELAY_CLOSE_BUTTONS, OPACITY_TRANSITION } from '../utils';
4
4
  export const createReverseEffectAnimation = (references, searchableElementSizes, colorSelected) => {
5
5
  const effectElement = cloneElement('ion-icon');
6
6
  const closeButtonRect = references.closeButtonIcon?.getBoundingClientRect();
@@ -1,4 +1,4 @@
1
- import { TabBarSearchableFunction } from './interfaces';
2
- export * from './interfaces';
1
+ import { type TabBarSearchableFunction } from '@rdlabo/ionic-theme-utils';
2
+ export { TabBarSearchableType, type TabBarSearchableFunction, type SearchableEventCache, type ElementSizes, type ElementReferences, } from '@rdlabo/ionic-theme-utils';
3
3
  export declare const attachTabBarSearchable: (ionTabBar: HTMLElement, ionFabButton: HTMLElement, ionFooter: HTMLElement) => TabBarSearchableFunction;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tab-bar-searchable/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAwB,wBAAwB,EAAwB,MAAM,cAAc,CAAC;AAgBpG,cAAc,cAAc,CAAC;AAqB7B,eAAO,MAAM,sBAAsB,GACjC,WAAW,WAAW,EACtB,cAAc,WAAW,EACzB,WAAW,WAAW,KACrB,wBAwDF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tab-bar-searchable/index.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,wBAAwB,EAE9B,MAAM,2BAA2B,CAAC;AAiBnC,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAC;AAqBnC,eAAO,MAAM,sBAAsB,GACjC,WAAW,WAAW,EACtB,cAAc,WAAW,EACzB,WAAW,WAAW,KACrB,wBAwDF,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { createAnimation } from '@ionic/core';
2
+ import { ANIMATION_DELAY_BASE, ANIMATION_DURATION, ANIMATION_EASING, getElementReferences, getElementSizes, throwErrorByFailedClickElement, TabBarSearchableType, } from '@rdlabo/ionic-theme-utils';
2
3
  import { isNativeUIShell, registerNativeSearch, requestNativeSearch, suspendNativeUIShell } from '../native-integration';
3
- import { ANIMATION_DELAY_BASE, ANIMATION_DURATION, ANIMATION_EASING, getElementReferences, getElementSizes, throwErrorByFailedClickElement, } from './utils';
4
- import { TabBarSearchableType } from './interfaces';
5
4
  import { createCloseButtonsAnimation, createEffectAnimation, createFabButtonAnimation, createSearchContainerAnimation, createTabBarAnimation, } from './animations/enter';
6
5
  import { createReverseCloseButtonsAnimation, createReverseEffectAnimation, createReverseFabButtonAnimation, createReverseSearchContainerAnimation, createReverseTabBarAnimation, } from './animations/leave';
7
- export * from './interfaces';
6
+ export { TabBarSearchableType, } from '@rdlabo/ionic-theme-utils';
8
7
  export const attachTabBarSearchable = (ionTabBar, ionFabButton, ionFooter) => {
9
8
  if (!ionTabBar || !ionFabButton || !ionFooter) {
10
9
  throw new Error('TabBarSearchable should be defined with props');
@@ -1,5 +1,10 @@
1
+ import { shadow } from '@rdlabo/ionic-theme-utils';
1
2
  import type { Animation } from '@ionic/core';
2
3
  import type { TransitionOptions } from './index';
3
- export declare const shadow: <T extends Element>(el: T) => ShadowRoot | T;
4
+ export { shadow };
5
+ export interface IosTransitionConfig {
6
+ radius: number;
7
+ }
8
+ export declare const setConfig: (config: Partial<IosTransitionConfig>) => void;
4
9
  export declare const iosTransitionAnimation: (navEl: HTMLElement, opts: TransitionOptions) => Animation;
5
10
  //# sourceMappingURL=ios.transition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ios.transition.d.ts","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAUjD,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,KAAG,UAAU,GAAG,CAE9D,CAAC;AAyGF,eAAO,MAAM,sBAAsB,GAAI,OAAO,WAAW,EAAE,MAAM,iBAAiB,KAAG,SA4WpF,CAAC"}
1
+ {"version":3,"file":"ios.transition.d.ts","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,eAAO,MAAM,SAAS,GAAI,QAAQ,OAAO,CAAC,mBAAmB,CAAC,KAAG,IAEhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,KAAK,SACnB,CAAC"}