@xplor-education/core-stencil-components 3.1.1 → 3.1.3
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.
- package/components/index.js +28 -3
- package/components/index.js.map +1 -1
- package/components/{p-B49oUO_9.js → p-AzuDJugb.js} +3 -3
- package/components/{p-B49oUO_9.js.map → p-AzuDJugb.js.map} +1 -1
- package/components/{p-D4jVa8dE.js → p-BQ6aLuGP.js} +4 -4
- package/components/{p-D4jVa8dE.js.map → p-BQ6aLuGP.js.map} +1 -1
- package/components/{p-VIJbFoA4.js → p-BZQ63ULK.js} +3 -3
- package/components/{p-VIJbFoA4.js.map → p-BZQ63ULK.js.map} +1 -1
- package/components/{p-Bs_ocvfe.js → p-CyGsSa4H.js} +7 -4
- package/components/p-CyGsSa4H.js.map +1 -0
- package/components/{p-B3zR7peH.js → p-oanCZPh6.js} +4 -4
- package/components/{p-B3zR7peH.js.map → p-oanCZPh6.js.map} +1 -1
- package/components/xplor-alert-message.js +2 -2
- package/components/xplor-avatar-and-name.js +2 -2
- package/components/xplor-avatar.js +1 -1
- package/components/xplor-badge-active.js +1 -1
- package/components/xplor-badge-archived.js +1 -1
- package/components/xplor-badge-deleted.js +1 -1
- package/components/xplor-badge-expired.js +1 -1
- package/components/xplor-badge-inactive.js +1 -1
- package/components/xplor-badge-recalled.js +1 -1
- package/components/xplor-badge-upcoming.js +1 -1
- package/components/xplor-badge-waitlist.js +1 -1
- package/components/xplor-badge.js +1 -1
- package/components/xplor-btn-back-to-parent.js +1 -1
- package/components/xplor-btn-back.js +1 -1
- package/components/xplor-btn-icon.js +1 -1
- package/components/xplor-btn-toggle-group.js +1 -1
- package/components/xplor-btn-toggle-secondary.js +1 -1
- package/components/xplor-btn-toggle.js +1 -1
- package/components/xplor-btn-tooltip.js +3 -3
- package/components/xplor-button.js +1 -1
- package/components/xplor-canvas-editor.d.ts +11 -0
- package/components/xplor-canvas-editor.js +369 -0
- package/components/xplor-canvas-editor.js.map +1 -0
- package/components/xplor-chat-widget.js +3 -3
- package/components/xplor-checkbox.js +1 -1
- package/components/xplor-combobox.js +5 -5
- package/components/xplor-datatable.js +2 -2
- package/components/xplor-date-picker.js +5 -5
- package/components/xplor-drag-and-drop-input.js +26 -5
- package/components/xplor-drag-and-drop-input.js.map +1 -1
- package/components/xplor-dropdown.js +1 -1
- package/components/xplor-expansion-panel.js +4 -4
- package/components/xplor-expansion-panels.js +1 -1
- package/components/xplor-file-upload.js +2 -2
- package/components/xplor-inline-checkbox.js +2 -2
- package/components/xplor-inline-date-picker.js +1 -1
- package/components/xplor-inline-switch.js +1 -1
- package/components/xplor-input-file.js +1 -1
- package/components/xplor-input-search.js +2 -2
- package/components/xplor-input-select.js +2 -2
- package/components/xplor-input-send.js +3 -3
- package/components/xplor-input-text-area.js +6 -3
- package/components/xplor-input-text-area.js.map +1 -1
- package/components/xplor-input-text-secondary.js +2 -2
- package/components/xplor-input-text.js +6 -3
- package/components/xplor-input-text.js.map +1 -1
- package/components/xplor-input-title.js +1 -1
- package/components/xplor-links.js +1 -1
- package/components/xplor-modal-persistent.js +1 -1
- package/components/xplor-nav-tabs.js +2 -2
- package/components/xplor-radio-btn.js +2 -2
- package/components/xplor-rich-text-editor.d.ts +11 -0
- package/components/xplor-rich-text-editor.js +23754 -0
- package/components/xplor-rich-text-editor.js.map +1 -0
- package/components/xplor-section-card.js +2 -2
- package/components/xplor-section-heading.js +2 -2
- package/components/xplor-table.js +5 -5
- package/components/xplor-text-bubble.js +2 -2
- package/components/xplor-text-field.js +2 -2
- package/components/xplor-time-picker.js +6 -6
- package/components/xplor-tooltip.js +1 -1
- package/dist/cjs/{index-BjAapk2n.js → index--_m3aUsf.js} +32 -7
- package/dist/cjs/index--_m3aUsf.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/xplor-alert-dialog_60.cjs.entry.js +29457 -0
- package/dist/cjs/xplor-alert-dialog_60.cjs.entry.js.map +1 -0
- package/dist/cjs/xplor-component-library.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/xplor-alert-message/xplor-alert-message.js +2 -2
- package/dist/collection/components/xplor-autocomplete/xplor-autocomplete.js +4 -4
- package/dist/collection/components/xplor-avatar/xplor-avatar.js +2 -2
- package/dist/collection/components/xplor-avatar-and-name/xplor-avatar-and-name.js +1 -1
- package/dist/collection/components/xplor-badge/xplor-badge.js +1 -1
- package/dist/collection/components/xplor-badge-active/xplor-badge-active.js +1 -1
- package/dist/collection/components/xplor-badge-archived/xplor-badge-archived.js +1 -1
- package/dist/collection/components/xplor-badge-deleted/xplor-badge-deleted.js +1 -1
- package/dist/collection/components/xplor-badge-expired/xplor-badge-expired.js +1 -1
- package/dist/collection/components/xplor-badge-inactive/xplor-badge-inactive.js +1 -1
- package/dist/collection/components/xplor-badge-recalled/xplor-badge-recalled.js +1 -1
- package/dist/collection/components/xplor-badge-session-booking/xplor-badge-session-booking.js +2 -2
- package/dist/collection/components/xplor-badge-upcoming/xplor-badge-upcoming.js +1 -1
- package/dist/collection/components/xplor-badge-waitlist/xplor-badge-waitlist.js +1 -1
- package/dist/collection/components/xplor-btn-back/xplor-btn-back.js +1 -1
- package/dist/collection/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.js +1 -1
- package/dist/collection/components/xplor-btn-icon/xplor-btn-icon.js +1 -1
- package/dist/collection/components/xplor-btn-menu/xplor-btn-menu.js +2 -2
- package/dist/collection/components/xplor-btn-toggle/xplor-btn-toggle.js +1 -1
- package/dist/collection/components/xplor-btn-toggle-group/xplor-btn-toggle-group.js +1 -1
- package/dist/collection/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.js +1 -1
- package/dist/collection/components/xplor-btn-tooltip/xplor-btn-tooltip.js +1 -1
- package/dist/collection/components/xplor-button/xplor-button.css +8 -3
- package/dist/collection/components/xplor-button/xplor-button.js +23 -1
- package/dist/collection/components/xplor-button/xplor-button.js.map +1 -1
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.css +1224 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.js +520 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.js.map +1 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.stories.js +280 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.stories.js.map +1 -0
- package/dist/collection/components/xplor-chat-widget/xplor-chat-widget.js +1 -1
- package/dist/collection/components/xplor-checkbox/xplor-checkbox.js +1 -1
- package/dist/collection/components/xplor-combobox/xplor-combobox.js +7 -7
- package/dist/collection/components/xplor-datatable/xplor-datatable.js +5 -5
- package/dist/collection/components/xplor-date-picker/xplor-date-picker.js +4 -4
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.css +62 -29
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js +25 -4
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js.map +1 -1
- package/dist/collection/components/xplor-dropdown/xplor-dropdown.js +1 -1
- package/dist/collection/components/xplor-expansion-panel/xplor-expansion-panel.js +4 -4
- package/dist/collection/components/xplor-expansion-panels/xplor-expansion-panels.js +1 -1
- package/dist/collection/components/xplor-file-upload/xplor-file-upload.js +4 -4
- package/dist/collection/components/xplor-inline-checkbox/xplor-inline-checkbox.js +2 -2
- package/dist/collection/components/xplor-inline-date-picker/xplor-inline-date-picker.js +1 -1
- package/dist/collection/components/xplor-inline-switch/xplor-inline-switch.js +1 -1
- package/dist/collection/components/xplor-input-file/xplor-input-file.js +1 -1
- package/dist/collection/components/xplor-input-search/xplor-input-search.js +2 -2
- package/dist/collection/components/xplor-input-select/xplor-input-select.js +3 -3
- package/dist/collection/components/xplor-input-send/xplor-input-send.js +2 -2
- package/dist/collection/components/xplor-input-text/xplor-input-text.css +41 -13
- package/dist/collection/components/xplor-input-text/xplor-input-text.js +5 -2
- package/dist/collection/components/xplor-input-text/xplor-input-text.js.map +1 -1
- package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.css +39 -13
- package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.js +5 -2
- package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.js.map +1 -1
- package/dist/collection/components/xplor-input-text-secondary/xplor-input-text-secondary.js +2 -2
- package/dist/collection/components/xplor-input-title/xplor-input-title.js +1 -1
- package/dist/collection/components/xplor-links/xplor-links.js +1 -1
- package/dist/collection/components/xplor-modal-persistent/xplor-modal-persistent.js +1 -1
- package/dist/collection/components/xplor-nav-tabs/xplor-nav-tabs.js +3 -3
- package/dist/collection/components/xplor-radio-btn/xplor-radio-btn.js +2 -2
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.css +1445 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.js +800 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.js.map +1 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.js +260 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.js.map +1 -0
- package/dist/collection/components/xplor-section-card/xplor-section-card.js +2 -2
- package/dist/collection/components/xplor-section-heading/xplor-section-heading.js +2 -2
- package/dist/collection/components/xplor-table/xplor-table.js +5 -5
- package/dist/collection/components/xplor-text-bubble/xplor-text-bubble.js +2 -2
- package/dist/collection/components/xplor-text-field/xplor-text-field.js +2 -2
- package/dist/collection/components/xplor-time-picker/xplor-time-picker.js +6 -6
- package/dist/collection/components/xplor-tooltip/xplor-tooltip.js +4 -4
- package/dist/collection/utils/slate-legacy-converter.js +223 -0
- package/dist/collection/utils/slate-legacy-converter.js.map +1 -0
- package/dist/components/index.js +28 -3
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p--zhT6rvJ.js → p-DGaHlr-k.js} +4 -4
- package/dist/components/{p--zhT6rvJ.js.map → p-DGaHlr-k.js.map} +1 -1
- package/dist/components/{p-B5rS_jjI.js → p-DWaTb2EJ.js} +7 -4
- package/dist/components/p-DWaTb2EJ.js.map +1 -0
- package/dist/components/{p-J41B2nOt.js → p-DroQBoSo.js} +3 -3
- package/dist/components/{p-J41B2nOt.js.map → p-DroQBoSo.js.map} +1 -1
- package/dist/components/{p-DQ8MCJFX.js → p-TfYzqGwr.js} +3 -3
- package/dist/components/{p-DQ8MCJFX.js.map → p-TfYzqGwr.js.map} +1 -1
- package/dist/components/{p-DbQ6ZNvh.js → p-vl-J3tKJ.js} +4 -4
- package/dist/components/{p-DbQ6ZNvh.js.map → p-vl-J3tKJ.js.map} +1 -1
- package/dist/components/xplor-alert-message.js +2 -2
- package/dist/components/xplor-avatar-and-name.js +2 -2
- package/dist/components/xplor-avatar.js +1 -1
- package/dist/components/xplor-badge-active.js +1 -1
- package/dist/components/xplor-badge-archived.js +1 -1
- package/dist/components/xplor-badge-deleted.js +1 -1
- package/dist/components/xplor-badge-expired.js +1 -1
- package/dist/components/xplor-badge-inactive.js +1 -1
- package/dist/components/xplor-badge-recalled.js +1 -1
- package/dist/components/xplor-badge-upcoming.js +1 -1
- package/dist/components/xplor-badge-waitlist.js +1 -1
- package/dist/components/xplor-badge.js +1 -1
- package/dist/components/xplor-btn-back-to-parent.js +1 -1
- package/dist/components/xplor-btn-back.js +1 -1
- package/dist/components/xplor-btn-icon.js +1 -1
- package/dist/components/xplor-btn-toggle-group.js +1 -1
- package/dist/components/xplor-btn-toggle-secondary.js +1 -1
- package/dist/components/xplor-btn-toggle.js +1 -1
- package/dist/components/xplor-btn-tooltip.js +3 -3
- package/dist/components/xplor-button.js +1 -1
- package/dist/components/xplor-canvas-editor.d.ts +11 -0
- package/dist/components/xplor-canvas-editor.js +370 -0
- package/dist/components/xplor-canvas-editor.js.map +1 -0
- package/dist/components/xplor-chat-widget.js +3 -3
- package/dist/components/xplor-checkbox.js +1 -1
- package/dist/components/xplor-combobox.js +5 -5
- package/dist/components/xplor-datatable.js +2 -2
- package/dist/components/xplor-date-picker.js +5 -5
- package/dist/components/xplor-drag-and-drop-input.js +26 -5
- package/dist/components/xplor-drag-and-drop-input.js.map +1 -1
- package/dist/components/xplor-dropdown.js +1 -1
- package/dist/components/xplor-expansion-panel.js +4 -4
- package/dist/components/xplor-expansion-panels.js +1 -1
- package/dist/components/xplor-file-upload.js +2 -2
- package/dist/components/xplor-inline-checkbox.js +2 -2
- package/dist/components/xplor-inline-date-picker.js +1 -1
- package/dist/components/xplor-inline-switch.js +1 -1
- package/dist/components/xplor-input-file.js +1 -1
- package/dist/components/xplor-input-search.js +2 -2
- package/dist/components/xplor-input-select.js +2 -2
- package/dist/components/xplor-input-send.js +3 -3
- package/dist/components/xplor-input-text-area.js +6 -3
- package/dist/components/xplor-input-text-area.js.map +1 -1
- package/dist/components/xplor-input-text-secondary.js +2 -2
- package/dist/components/xplor-input-text.js +6 -3
- package/dist/components/xplor-input-text.js.map +1 -1
- package/dist/components/xplor-input-title.js +1 -1
- package/dist/components/xplor-links.js +1 -1
- package/dist/components/xplor-modal-persistent.js +1 -1
- package/dist/components/xplor-nav-tabs.js +2 -2
- package/dist/components/xplor-radio-btn.js +2 -2
- package/dist/components/xplor-rich-text-editor.d.ts +11 -0
- package/dist/components/xplor-rich-text-editor.js +23755 -0
- package/dist/components/xplor-rich-text-editor.js.map +1 -0
- package/dist/components/xplor-section-card.js +2 -2
- package/dist/components/xplor-section-heading.js +2 -2
- package/dist/components/xplor-table.js +5 -5
- package/dist/components/xplor-text-bubble.js +2 -2
- package/dist/components/xplor-text-field.js +2 -2
- package/dist/components/xplor-time-picker.js +6 -6
- package/dist/components/xplor-tooltip.js +1 -1
- package/dist/esm/{index-KRfMjDC2.js → index-QwDfQUbw.js} +32 -7
- package/dist/esm/index-QwDfQUbw.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/xplor-alert-dialog_60.entry.js +29396 -0
- package/dist/esm/xplor-alert-dialog_60.entry.js.map +1 -0
- package/dist/esm/xplor-component-library.js +3 -3
- package/dist/hydrate/index.js +24238 -97
- package/dist/hydrate/index.mjs +24238 -97
- package/dist/types/components/xplor-button/xplor-button.d.ts +2 -0
- package/dist/types/components/xplor-canvas-editor/xplor-canvas-editor.d.ts +63 -0
- package/dist/types/components/xplor-canvas-editor/xplor-canvas-editor.stories.d.ts +84 -0
- package/dist/types/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.d.ts +6 -0
- package/dist/types/components/xplor-rich-text-editor/xplor-rich-text-editor.d.ts +129 -0
- package/dist/types/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.d.ts +105 -0
- package/dist/types/components.d.ts +290 -0
- package/dist/types/utils/slate-legacy-converter.d.ts +83 -0
- package/dist/xplor-component-library/p-QwDfQUbw.js +3 -0
- package/dist/xplor-component-library/p-QwDfQUbw.js.map +1 -0
- package/dist/xplor-component-library/p-df68ccde.entry.js +2 -0
- package/dist/xplor-component-library/p-df68ccde.entry.js.map +1 -0
- package/dist/xplor-component-library/xplor-component-library.css +1 -1
- package/dist/xplor-component-library/xplor-component-library.esm.js +1 -1
- package/package.json +7 -1
- package/components/p-Bs_ocvfe.js.map +0 -1
- package/dist/cjs/index-BjAapk2n.js.map +0 -1
- package/dist/cjs/xplor-alert-dialog_58.cjs.entry.js +0 -5389
- package/dist/cjs/xplor-alert-dialog_58.cjs.entry.js.map +0 -1
- package/dist/components/p-B5rS_jjI.js.map +0 -1
- package/dist/esm/index-KRfMjDC2.js.map +0 -1
- package/dist/esm/xplor-alert-dialog_58.entry.js +0 -5330
- package/dist/esm/xplor-alert-dialog_58.entry.js.map +0 -1
- package/dist/xplor-component-library/p-5b0cee73.entry.js +0 -2
- package/dist/xplor-component-library/p-5b0cee73.entry.js.map +0 -1
- package/dist/xplor-component-library/p-KRfMjDC2.js +0 -3
- package/dist/xplor-component-library/p-KRfMjDC2.js.map +0 -1
|
@@ -155,10 +155,10 @@ export class XplorTooltip {
|
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
157
|
render() {
|
|
158
|
-
return (h(Host, { key: '
|
|
158
|
+
return (h(Host, { key: 'aa588e55e6f61fdc836e6463940837ee9b01bff0' }, h("div", { key: '8aa1430d9762baccfa60341362c08a37db894433', class: "tooltip-trigger", ref: (el) => (this.triggerEl = el), onClick: this.handleClick, "aria-describedby": this.open ? this.tooltipId : undefined }, h("slot", { key: 'a12f087b5025c462f4c31a7d38d642ac133dab13', name: "trigger" })), this.open && (h("div", { key: '357ee3a461a83df7ef6b4c7bb693e88e24aae0df', class: {
|
|
159
159
|
'tooltip': true,
|
|
160
160
|
[`tooltip--${this.position}`]: true,
|
|
161
|
-
}, style: this.tooltipStyle, ref: (el) => (this.tooltipEl = el), role: "tooltip", id: this.tooltipId }, h("div", { key: '
|
|
161
|
+
}, style: this.tooltipStyle, ref: (el) => (this.tooltipEl = el), role: "tooltip", id: this.tooltipId }, h("div", { key: '2845a038bd1964a7237d82d48aed518b112d5973', class: "tooltip__content" }, h("slot", { key: '70ac6bc962d70e8f68b1be63ae3586bd6f3be46d' }, this.content)), this.arrow && (h("div", { key: '2858ec182c4c4cafd5f8367b9a5578077c1250b4', class: "tooltip__arrow", style: this.arrowStyle }))))));
|
|
162
162
|
}
|
|
163
163
|
static get is() { return "xplor-tooltip"; }
|
|
164
164
|
static get encapsulation() { return "scoped"; }
|
|
@@ -184,7 +184,7 @@ export class XplorTooltip {
|
|
|
184
184
|
"references": {
|
|
185
185
|
"TooltipPosition": {
|
|
186
186
|
"location": "local",
|
|
187
|
-
"path": "/Users/
|
|
187
|
+
"path": "/Users/darryn.lee-warden/Documents/DEV/xplor_design_system/apps/core-stencil-components/src/components/xplor-tooltip/xplor-tooltip.tsx",
|
|
188
188
|
"id": "src/components/xplor-tooltip/xplor-tooltip.tsx::TooltipPosition"
|
|
189
189
|
}
|
|
190
190
|
}
|
|
@@ -210,7 +210,7 @@ export class XplorTooltip {
|
|
|
210
210
|
"references": {
|
|
211
211
|
"TooltipTrigger": {
|
|
212
212
|
"location": "local",
|
|
213
|
-
"path": "/Users/
|
|
213
|
+
"path": "/Users/darryn.lee-warden/Documents/DEV/xplor_design_system/apps/core-stencil-components/src/components/xplor-tooltip/xplor-tooltip.tsx",
|
|
214
214
|
"id": "src/components/xplor-tooltip/xplor-tooltip.tsx::TooltipTrigger"
|
|
215
215
|
}
|
|
216
216
|
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* slate-legacy-converter.ts
|
|
3
|
+
*
|
|
4
|
+
* Converts old Slate 0.42.x document JSON format into an HTML string.
|
|
5
|
+
* This is the backwards-compatibility layer for the xplor-rich-text-editor component.
|
|
6
|
+
*
|
|
7
|
+
* Old Slate 0.42.x document shape:
|
|
8
|
+
* {
|
|
9
|
+
* document: {
|
|
10
|
+
* nodes: [
|
|
11
|
+
* {
|
|
12
|
+
* object: 'block',
|
|
13
|
+
* type: 'paragraph',
|
|
14
|
+
* nodes: [
|
|
15
|
+
* {
|
|
16
|
+
* object: 'text',
|
|
17
|
+
* text: 'Hello world',
|
|
18
|
+
* marks: [{ type: 'bold' }]
|
|
19
|
+
* }
|
|
20
|
+
* ]
|
|
21
|
+
* }
|
|
22
|
+
* ]
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* No Slate runtime dependency required — this is a pure transformation function.
|
|
27
|
+
*/
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Block type → HTML tag mapping
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
const BLOCK_TAG_MAP = {
|
|
32
|
+
paragraph: 'p',
|
|
33
|
+
'heading-one': 'h1',
|
|
34
|
+
'heading-two': 'h2',
|
|
35
|
+
'heading-three': 'h3',
|
|
36
|
+
'heading-four': 'h4',
|
|
37
|
+
'heading-five': 'h5',
|
|
38
|
+
'heading-six': 'h6',
|
|
39
|
+
'bulleted-list': 'ul',
|
|
40
|
+
'numbered-list': 'ol',
|
|
41
|
+
'list-item': 'li',
|
|
42
|
+
'block-quote': 'blockquote',
|
|
43
|
+
'code-block': 'pre',
|
|
44
|
+
// Aliases sometimes found in the wild
|
|
45
|
+
quote: 'blockquote',
|
|
46
|
+
code: 'pre',
|
|
47
|
+
'unordered-list': 'ul',
|
|
48
|
+
'ordered-list': 'ol',
|
|
49
|
+
'list_item': 'li',
|
|
50
|
+
};
|
|
51
|
+
const MARK_WRAPPERS = {
|
|
52
|
+
bold: inner => `<strong>${inner}</strong>`,
|
|
53
|
+
italic: inner => `<em>${inner}</em>`,
|
|
54
|
+
underline: inner => `<u>${inner}</u>`,
|
|
55
|
+
strikethrough: inner => `<s>${inner}</s>`,
|
|
56
|
+
'strike-through': inner => `<s>${inner}</s>`,
|
|
57
|
+
strike: inner => `<s>${inner}</s>`,
|
|
58
|
+
code: inner => `<code>${inner}</code>`,
|
|
59
|
+
superscript: inner => `<sup>${inner}</sup>`,
|
|
60
|
+
subscript: inner => `<sub>${inner}</sub>`,
|
|
61
|
+
};
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// Helpers
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
/**
|
|
66
|
+
* Escapes HTML special characters in plain text content to prevent XSS.
|
|
67
|
+
*/
|
|
68
|
+
function escapeHtml(text) {
|
|
69
|
+
return text
|
|
70
|
+
.replace(/&/g, '&')
|
|
71
|
+
.replace(/</g, '<')
|
|
72
|
+
.replace(/>/g, '>')
|
|
73
|
+
.replace(/"/g, '"')
|
|
74
|
+
.replace(/'/g, ''');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Wraps text content with mark tags in the order they are applied.
|
|
78
|
+
* Marks are applied innermost-first so nested marks render correctly.
|
|
79
|
+
*/
|
|
80
|
+
function applyMarks(text, marks) {
|
|
81
|
+
if (!marks || marks.length === 0)
|
|
82
|
+
return text;
|
|
83
|
+
return marks.reduce((wrapped, mark) => {
|
|
84
|
+
const wrapper = MARK_WRAPPERS[mark.type];
|
|
85
|
+
return wrapper ? wrapper(wrapped) : wrapped;
|
|
86
|
+
}, text);
|
|
87
|
+
}
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Node converters
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
/**
|
|
92
|
+
* Converts a text node (and its optional leaves) to an HTML string.
|
|
93
|
+
*/
|
|
94
|
+
function convertTextNode(node) {
|
|
95
|
+
// Slate 0.35–0.40 used "leaves" inside text nodes
|
|
96
|
+
if (node.leaves && node.leaves.length > 0) {
|
|
97
|
+
return node.leaves.map(leaf => {
|
|
98
|
+
const escaped = escapeHtml(leaf.text || '');
|
|
99
|
+
return applyMarks(escaped, leaf.marks || []);
|
|
100
|
+
}).join('');
|
|
101
|
+
}
|
|
102
|
+
// Slate 0.40–0.47 uses text + marks directly on the text node
|
|
103
|
+
const escaped = escapeHtml(node.text || '');
|
|
104
|
+
return applyMarks(escaped, node.marks || []);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Converts an inline node (e.g. link) to an HTML string.
|
|
108
|
+
*/
|
|
109
|
+
function convertInlineNode(node) {
|
|
110
|
+
var _a, _b, _c;
|
|
111
|
+
const innerHtml = convertChildren(node.nodes || []);
|
|
112
|
+
switch (node.type) {
|
|
113
|
+
case 'link': {
|
|
114
|
+
const href = ((_a = node.data) === null || _a === void 0 ? void 0 : _a.href) || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.url) || '#';
|
|
115
|
+
const target = ((_c = node.data) === null || _c === void 0 ? void 0 : _c.target) || '';
|
|
116
|
+
const targetAttr = target ? ` target="${escapeHtml(target)}"` : '';
|
|
117
|
+
return `<a href="${escapeHtml(href)}"${targetAttr}>${innerHtml}</a>`;
|
|
118
|
+
}
|
|
119
|
+
case 'mention':
|
|
120
|
+
return `<span class="mention">${innerHtml}</span>`;
|
|
121
|
+
default:
|
|
122
|
+
// Unknown inline — render children through
|
|
123
|
+
return innerHtml;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Converts a block node to an HTML string.
|
|
128
|
+
*/
|
|
129
|
+
function convertBlockNode(node) {
|
|
130
|
+
const innerHtml = convertChildren(node.nodes || []);
|
|
131
|
+
const tag = BLOCK_TAG_MAP[node.type];
|
|
132
|
+
// Code block: wrap inner content in a <code> tag
|
|
133
|
+
if (node.type === 'code-block' || node.type === 'code') {
|
|
134
|
+
return `<pre><code>${innerHtml}</code></pre>`;
|
|
135
|
+
}
|
|
136
|
+
if (tag) {
|
|
137
|
+
return `<${tag}>${innerHtml}</${tag}>`;
|
|
138
|
+
}
|
|
139
|
+
// Unknown block type — fall back to a <div> so content is not lost
|
|
140
|
+
return `<div>${innerHtml}</div>`;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Converts an array of child nodes to an HTML string.
|
|
144
|
+
*/
|
|
145
|
+
function convertChildren(nodes) {
|
|
146
|
+
if (!nodes || nodes.length === 0)
|
|
147
|
+
return '';
|
|
148
|
+
return nodes
|
|
149
|
+
.map(node => {
|
|
150
|
+
switch (node.object) {
|
|
151
|
+
case 'text':
|
|
152
|
+
return convertTextNode(node);
|
|
153
|
+
case 'inline':
|
|
154
|
+
return convertInlineNode(node);
|
|
155
|
+
case 'block':
|
|
156
|
+
return convertBlockNode(node);
|
|
157
|
+
default:
|
|
158
|
+
// Some documents omit the `object` field — infer from presence of `type`
|
|
159
|
+
if (node.type) {
|
|
160
|
+
if (node.text !== undefined) {
|
|
161
|
+
return convertTextNode(node);
|
|
162
|
+
}
|
|
163
|
+
// Try inline types first, fall back to block
|
|
164
|
+
const inlineTypes = ['link', 'mention'];
|
|
165
|
+
if (inlineTypes.includes(node.type)) {
|
|
166
|
+
return convertInlineNode(node);
|
|
167
|
+
}
|
|
168
|
+
return convertBlockNode(node);
|
|
169
|
+
}
|
|
170
|
+
if (node.text !== undefined) {
|
|
171
|
+
return convertTextNode(node);
|
|
172
|
+
}
|
|
173
|
+
return '';
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
.join('');
|
|
177
|
+
}
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
// Public API
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
/**
|
|
182
|
+
* Converts a Slate 0.42.x document value to an HTML string.
|
|
183
|
+
*
|
|
184
|
+
* @param value - The full Slate value object `{ document: { nodes: [...] } }`
|
|
185
|
+
* or just the document object `{ nodes: [...] }` — both are accepted.
|
|
186
|
+
* @returns An HTML string, or an empty string if the input is null / invalid.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* const html = convertLegacySlateToHtml(JSON.parse(savedSlateJson));
|
|
190
|
+
* // '<p>Hello <strong>world</strong></p>'
|
|
191
|
+
*/
|
|
192
|
+
export function convertLegacySlateToHtml(value) {
|
|
193
|
+
if (!value)
|
|
194
|
+
return '';
|
|
195
|
+
// Accept either the full value `{ document: {...} }` or just the document
|
|
196
|
+
const document = value.document !== undefined
|
|
197
|
+
? value.document
|
|
198
|
+
: value;
|
|
199
|
+
if (!document || !document.nodes || document.nodes.length === 0) {
|
|
200
|
+
return '';
|
|
201
|
+
}
|
|
202
|
+
return convertChildren(document.nodes);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Safely parses a JSON string and converts it to HTML.
|
|
206
|
+
* Catches any parse errors and returns an empty string rather than throwing.
|
|
207
|
+
*
|
|
208
|
+
* @param json - A JSON string representing a Slate 0.42.x document
|
|
209
|
+
* @returns An HTML string, or an empty string if parsing fails.
|
|
210
|
+
*/
|
|
211
|
+
export function convertLegacySlateJsonToHtml(json) {
|
|
212
|
+
if (!json || typeof json !== 'string')
|
|
213
|
+
return '';
|
|
214
|
+
try {
|
|
215
|
+
const parsed = JSON.parse(json);
|
|
216
|
+
return convertLegacySlateToHtml(parsed);
|
|
217
|
+
}
|
|
218
|
+
catch (_a) {
|
|
219
|
+
console.warn('[xplor-rich-text-editor] Failed to parse legacy Slate document JSON:', json);
|
|
220
|
+
return '';
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=slate-legacy-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-legacy-converter.js","sourceRoot":"","sources":["../../src/utils/slate-legacy-converter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * slate-legacy-converter.ts\n *\n * Converts old Slate 0.42.x document JSON format into an HTML string.\n * This is the backwards-compatibility layer for the xplor-rich-text-editor component.\n *\n * Old Slate 0.42.x document shape:\n * {\n * document: {\n * nodes: [\n * {\n * object: 'block',\n * type: 'paragraph',\n * nodes: [\n * {\n * object: 'text',\n * text: 'Hello world',\n * marks: [{ type: 'bold' }]\n * }\n * ]\n * }\n * ]\n * }\n * }\n *\n * No Slate runtime dependency required — this is a pure transformation function.\n */\n\n// ---------------------------------------------------------------------------\n// Type Definitions\n// ---------------------------------------------------------------------------\n\nexport interface LegacySlateMark {\n type: string;\n data?: Record<string, unknown>;\n}\n\nexport interface LegacySlateTextNode {\n object: 'text';\n text: string;\n marks?: LegacySlateMark[];\n leaves?: LegacySlateLeaf[];\n}\n\n/** Older Slate versions used \"leaves\" inside text nodes */\nexport interface LegacySlateLeaf {\n object?: 'leaf';\n text: string;\n marks?: LegacySlateMark[];\n}\n\nexport interface LegacySlateInlineNode {\n object: 'inline';\n type: string;\n data?: Record<string, unknown>;\n nodes?: LegacySlateChildNode[];\n}\n\nexport interface LegacySlateBlockNode {\n object: 'block';\n type: string;\n data?: Record<string, unknown>;\n nodes?: LegacySlateChildNode[];\n}\n\nexport type LegacySlateChildNode =\n | LegacySlateBlockNode\n | LegacySlateInlineNode\n | LegacySlateTextNode;\n\nexport interface LegacySlateDocument {\n object?: 'document';\n nodes?: LegacySlateChildNode[];\n}\n\nexport interface LegacySlateValue {\n document: LegacySlateDocument;\n}\n\n// ---------------------------------------------------------------------------\n// Block type → HTML tag mapping\n// ---------------------------------------------------------------------------\n\nconst BLOCK_TAG_MAP: Record<string, string> = {\n paragraph: 'p',\n 'heading-one': 'h1',\n 'heading-two': 'h2',\n 'heading-three': 'h3',\n 'heading-four': 'h4',\n 'heading-five': 'h5',\n 'heading-six': 'h6',\n 'bulleted-list': 'ul',\n 'numbered-list': 'ol',\n 'list-item': 'li',\n 'block-quote': 'blockquote',\n 'code-block': 'pre',\n // Aliases sometimes found in the wild\n quote: 'blockquote',\n code: 'pre',\n 'unordered-list': 'ul',\n 'ordered-list': 'ol',\n 'list_item': 'li',\n};\n\n// ---------------------------------------------------------------------------\n// Mark type → wrap function mapping\n// ---------------------------------------------------------------------------\n\ntype MarkWrapper = (inner: string) => string;\n\nconst MARK_WRAPPERS: Record<string, MarkWrapper> = {\n bold: inner => `<strong>${inner}</strong>`,\n italic: inner => `<em>${inner}</em>`,\n underline: inner => `<u>${inner}</u>`,\n strikethrough: inner => `<s>${inner}</s>`,\n 'strike-through': inner => `<s>${inner}</s>`,\n strike: inner => `<s>${inner}</s>`,\n code: inner => `<code>${inner}</code>`,\n superscript: inner => `<sup>${inner}</sup>`,\n subscript: inner => `<sub>${inner}</sub>`,\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Escapes HTML special characters in plain text content to prevent XSS.\n */\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * Wraps text content with mark tags in the order they are applied.\n * Marks are applied innermost-first so nested marks render correctly.\n */\nfunction applyMarks(text: string, marks: LegacySlateMark[]): string {\n if (!marks || marks.length === 0) return text;\n\n return marks.reduce((wrapped, mark) => {\n const wrapper = MARK_WRAPPERS[mark.type];\n return wrapper ? wrapper(wrapped) : wrapped;\n }, text);\n}\n\n// ---------------------------------------------------------------------------\n// Node converters\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a text node (and its optional leaves) to an HTML string.\n */\nfunction convertTextNode(node: LegacySlateTextNode): string {\n // Slate 0.35–0.40 used \"leaves\" inside text nodes\n if (node.leaves && node.leaves.length > 0) {\n return node.leaves.map(leaf => {\n const escaped = escapeHtml(leaf.text || '');\n return applyMarks(escaped, leaf.marks || []);\n }).join('');\n }\n\n // Slate 0.40–0.47 uses text + marks directly on the text node\n const escaped = escapeHtml(node.text || '');\n return applyMarks(escaped, node.marks || []);\n}\n\n/**\n * Converts an inline node (e.g. link) to an HTML string.\n */\nfunction convertInlineNode(node: LegacySlateInlineNode): string {\n const innerHtml = convertChildren(node.nodes || []);\n\n switch (node.type) {\n case 'link': {\n const href = (node.data?.href as string) || (node.data?.url as string) || '#';\n const target = (node.data?.target as string) || '';\n const targetAttr = target ? ` target=\"${escapeHtml(target)}\"` : '';\n return `<a href=\"${escapeHtml(href)}\"${targetAttr}>${innerHtml}</a>`;\n }\n case 'mention':\n return `<span class=\"mention\">${innerHtml}</span>`;\n default:\n // Unknown inline — render children through\n return innerHtml;\n }\n}\n\n/**\n * Converts a block node to an HTML string.\n */\nfunction convertBlockNode(node: LegacySlateBlockNode): string {\n const innerHtml = convertChildren(node.nodes || []);\n const tag = BLOCK_TAG_MAP[node.type];\n\n // Code block: wrap inner content in a <code> tag\n if (node.type === 'code-block' || node.type === 'code') {\n return `<pre><code>${innerHtml}</code></pre>`;\n }\n\n if (tag) {\n return `<${tag}>${innerHtml}</${tag}>`;\n }\n\n // Unknown block type — fall back to a <div> so content is not lost\n return `<div>${innerHtml}</div>`;\n}\n\n/**\n * Converts an array of child nodes to an HTML string.\n */\nfunction convertChildren(nodes: LegacySlateChildNode[]): string {\n if (!nodes || nodes.length === 0) return '';\n\n return nodes\n .map(node => {\n switch (node.object) {\n case 'text':\n return convertTextNode(node as LegacySlateTextNode);\n case 'inline':\n return convertInlineNode(node as LegacySlateInlineNode);\n case 'block':\n return convertBlockNode(node as LegacySlateBlockNode);\n default:\n // Some documents omit the `object` field — infer from presence of `type`\n if ((node as LegacySlateBlockNode).type) {\n if ((node as LegacySlateTextNode).text !== undefined) {\n return convertTextNode(node as LegacySlateTextNode);\n }\n // Try inline types first, fall back to block\n const inlineTypes = ['link', 'mention'];\n if (inlineTypes.includes((node as LegacySlateInlineNode).type)) {\n return convertInlineNode(node as LegacySlateInlineNode);\n }\n return convertBlockNode(node as LegacySlateBlockNode);\n }\n if ((node as LegacySlateTextNode).text !== undefined) {\n return convertTextNode(node as LegacySlateTextNode);\n }\n return '';\n }\n })\n .join('');\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a Slate 0.42.x document value to an HTML string.\n *\n * @param value - The full Slate value object `{ document: { nodes: [...] } }`\n * or just the document object `{ nodes: [...] }` — both are accepted.\n * @returns An HTML string, or an empty string if the input is null / invalid.\n *\n * @example\n * const html = convertLegacySlateToHtml(JSON.parse(savedSlateJson));\n * // '<p>Hello <strong>world</strong></p>'\n */\nexport function convertLegacySlateToHtml(\n value: LegacySlateValue | LegacySlateDocument | null | undefined,\n): string {\n if (!value) return '';\n\n // Accept either the full value `{ document: {...} }` or just the document\n const document =\n (value as LegacySlateValue).document !== undefined\n ? (value as LegacySlateValue).document\n : (value as LegacySlateDocument);\n\n if (!document || !document.nodes || document.nodes.length === 0) {\n return '';\n }\n\n return convertChildren(document.nodes);\n}\n\n/**\n * Safely parses a JSON string and converts it to HTML.\n * Catches any parse errors and returns an empty string rather than throwing.\n *\n * @param json - A JSON string representing a Slate 0.42.x document\n * @returns An HTML string, or an empty string if parsing fails.\n */\nexport function convertLegacySlateJsonToHtml(json: string): string {\n if (!json || typeof json !== 'string') return '';\n\n try {\n const parsed = JSON.parse(json);\n return convertLegacySlateToHtml(parsed);\n } catch {\n console.warn('[xplor-rich-text-editor] Failed to parse legacy Slate document JSON:', json);\n return '';\n }\n}\n"]}
|
package/dist/components/index.js
CHANGED
|
@@ -77,6 +77,7 @@ var HYDRATE_ID = "s-id";
|
|
|
77
77
|
var HYDRATED_STYLE_ID = "sty-id";
|
|
78
78
|
var HYDRATE_CHILD_ID = "c-id";
|
|
79
79
|
var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
|
|
80
|
+
var XLINK_NS = "http://www.w3.org/1999/xlink";
|
|
80
81
|
var win = typeof window !== "undefined" ? window : {};
|
|
81
82
|
var H = win.HTMLElement || class {
|
|
82
83
|
};
|
|
@@ -1250,15 +1251,26 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
1250
1251
|
} catch (e) {
|
|
1251
1252
|
}
|
|
1252
1253
|
}
|
|
1254
|
+
let xlink = false;
|
|
1255
|
+
{
|
|
1256
|
+
if (ln !== (ln = ln.replace(/^xlink\:?/, ""))) {
|
|
1257
|
+
memberName = ln;
|
|
1258
|
+
xlink = true;
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1253
1261
|
if (newValue == null || newValue === false) {
|
|
1254
1262
|
if (newValue !== false || elm.getAttribute(memberName) === "") {
|
|
1255
|
-
{
|
|
1263
|
+
if (xlink) {
|
|
1264
|
+
elm.removeAttributeNS(XLINK_NS, memberName);
|
|
1265
|
+
} else {
|
|
1256
1266
|
elm.removeAttribute(memberName);
|
|
1257
1267
|
}
|
|
1258
1268
|
}
|
|
1259
1269
|
} else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex && elm.nodeType === 1 /* ElementNode */) {
|
|
1260
1270
|
newValue = newValue === true ? "" : newValue;
|
|
1261
|
-
{
|
|
1271
|
+
if (xlink) {
|
|
1272
|
+
elm.setAttributeNS(XLINK_NS, memberName, newValue);
|
|
1273
|
+
} else {
|
|
1262
1274
|
elm.setAttribute(memberName, newValue);
|
|
1263
1275
|
}
|
|
1264
1276
|
}
|
|
@@ -1708,6 +1720,12 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
|
|
|
1708
1720
|
const isHostElement = isHost(renderFnResults);
|
|
1709
1721
|
const rootVnode = isHostElement ? renderFnResults : h(null, null, renderFnResults);
|
|
1710
1722
|
hostTagName = hostElm.tagName;
|
|
1723
|
+
if (cmpMeta.$attrsToReflect$) {
|
|
1724
|
+
rootVnode.$attrs$ = rootVnode.$attrs$ || {};
|
|
1725
|
+
cmpMeta.$attrsToReflect$.map(
|
|
1726
|
+
([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]
|
|
1727
|
+
);
|
|
1728
|
+
}
|
|
1711
1729
|
if (isInitialLoad && rootVnode.$attrs$) {
|
|
1712
1730
|
for (const key of Object.keys(rootVnode.$attrs$)) {
|
|
1713
1731
|
if (hostElm.hasAttribute(key) && !["key", "ref", "style", "class"].includes(key)) {
|
|
@@ -2076,8 +2094,12 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
2076
2094
|
/* @__PURE__ */ new Set([
|
|
2077
2095
|
...Object.keys((_b = cmpMeta.$watchers$) != null ? _b : {}),
|
|
2078
2096
|
...members.filter(([_, m]) => m[0] & 15 /* HasAttribute */).map(([propName, m]) => {
|
|
2097
|
+
var _a2;
|
|
2079
2098
|
const attrName = m[1] || propName;
|
|
2080
2099
|
attrNameToPropName.set(attrName, propName);
|
|
2100
|
+
if (m[0] & 512 /* ReflectAttr */) {
|
|
2101
|
+
(_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);
|
|
2102
|
+
}
|
|
2081
2103
|
return attrName;
|
|
2082
2104
|
})
|
|
2083
2105
|
])
|
|
@@ -2222,6 +2244,9 @@ var proxyCustomElement = (Cstr, compactMeta) => {
|
|
|
2222
2244
|
{
|
|
2223
2245
|
cmpMeta.$watchers$ = Cstr.$watchers$;
|
|
2224
2246
|
}
|
|
2247
|
+
{
|
|
2248
|
+
cmpMeta.$attrsToReflect$ = [];
|
|
2249
|
+
}
|
|
2225
2250
|
{
|
|
2226
2251
|
hydrateScopedToShadow();
|
|
2227
2252
|
}
|
|
@@ -2316,7 +2341,7 @@ function render(vnode, container) {
|
|
|
2316
2341
|
renderVdom(ref, vnode);
|
|
2317
2342
|
}
|
|
2318
2343
|
|
|
2319
|
-
const globalStyles = "*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb;}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Montserrat, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;}body{margin:0;line-height:inherit;}hr{height:0;color:inherit;border-top-width:1px;}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse;}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0;}button,select{text-transform:none}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none;}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af;}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af;}button,[role=\"button\"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle;}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=\"until-found\"])){display:none}html[data-theme='office']{--color-primary:rgb(219, 59, 3);--color-secondary:rgb(0, 119, 107);--color-buttons:#89da59;--color-typography:#ff320e}html{--color-primary:#db3b03;--color-secondary:rgb(0, 119, 107);--color-buttons:#fbbc05;--color-typography:#ea4335}:root{--color-primary:#db3b03;--color-secondary:rgb(0, 119, 107);--color-tertiary:rgb(128, 104, 186);--color-white:white;--color-emphasis:rgb(8, 8, 9);--color-supergiant:rgb(213, 66, 99);--color-orange:rgb(250, 200, 127);--color-buttons:#fbbc05;--color-typography:#ea4335;--background:20 66% 99%;--foreground:20 51% 4%;--muted:20 25% 86%;--muted-foreground:20 7% 25%;--popover:20 66% 98%;--popover-foreground:20 51% 3%;--card:20 66% 98%;--card-foreground:20 51% 3%;--border:20 15% 94%;--input:20 15% 94%;--primary:20 48% 72%;--primary-foreground:20 48% 12%;--secondary:20 12% 92%;--secondary-foreground:20 12% 32%;--accent:20 12% 92%;--accent-foreground:20 12% 32%;--destructive:11 80% 22%;--destructive-foreground:11 80% 82%;--ring:20 48% 72%;--radius:0.5rem;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%}.dark{--background:253 43% 3%;--foreground:253 31% 98%;--muted:253 7% 13%;--muted-foreground:253 13% 63%;--popover:253 43% 3%;--popover-foreground:253 31% 98%;--card:253 43% 4%;--card-foreground:253 31% 99%;--border:215 27.9% 16.9%;--input:215 27.9% 16.9%;--primary:253 91% 58%;--primary-foreground:253 91% 98%;--secondary:253 7% 9%;--secondary-foreground:253 7% 69%;--accent:253 13% 14%;--accent-foreground:253 13% 74%;--destructive:339.2 90.36% 51.18%;--destructive-foreground:0 0% 100%;--ring:253 91% 58%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}*{border-color:hsl(var(--border))}body{box-sizing:border-box;background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:0.25rem}.mb-6{margin-bottom:1.5rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-16{width:1rem;height:1rem}.h-3{height:0.75rem}.h-4{height:0.25rem}.w-3{width:0.75rem}.w-4{width:0.25rem}.w-full{width:100%}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-xl{max-width:36rem}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-2{gap:0.5rem}.gap-20{gap:1.25rem}.gap-4{gap:0.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:0.5rem;column-gap:0.5rem}.gap-y-12{row-gap:0.75rem}.overflow-x-auto{overflow-x:auto}.text-pretty{text-wrap:pretty}.rounded{border-radius:0.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-1\\.5{padding:0.375rem}.p-2{padding:0.5rem}.p-6{padding:1.5rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:0.25rem;padding-right:0.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-1\\.5{padding-top:0.375rem;padding-bottom:0.375rem}.py-24{padding-top:1.5rem;padding-bottom:1.5rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Montserrat, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base\\/7{font-size:1rem;line-height:1.75rem}.text-lg\\/8{font-size:1.125rem;line-height:2rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-sm\\/6{font-size:0.875rem;line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.tracking-tight{letter-spacing:-0.025em}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-primary{color:var(--color-primary)}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-colors{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.theme-office{--color-black:#000000;--color-white:#ffffff;--color-primary:#db3b03;--color-secondary:#ec7702;--color-buttons:#89da59;--color-typography:#ff320e}.theme-pg{--color-primary:#00776b;--color-secondary:#01a39d;--color-buttons:#89da59;--color-typography:#ff320e}.hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.hover\\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89 / var(--tw-text-opacity, 1))}.focus\\:border-teal-500:focus{--tw-border-opacity:1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.focus\\:ring-teal-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166 / var(--tw-ring-opacity, 1))}.disabled\\:opacity-50:disabled{opacity:0.5}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.sm\\:gap-y-16{row-gap:1rem}.sm\\:py-32{padding-top:2rem;padding-bottom:2rem}.sm\\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.lg\\:px-8{padding-left:0.5rem;padding-right:0.5rem}}@media (min-width: 1280px){.xl\\:col-span-2{grid-column:span 2 / span 2}.xl\\:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}";
|
|
2344
|
+
const globalStyles = "*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb;}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Montserrat, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;}body{margin:0;line-height:inherit;}hr{height:0;color:inherit;border-top-width:1px;}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse;}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0;}button,select{text-transform:none}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none;}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af;}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af;}button,[role=\"button\"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle;}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=\"until-found\"])){display:none}html[data-theme='office']{--color-primary:rgb(219, 59, 3);--color-secondary:rgb(0, 119, 107);--color-buttons:#89da59;--color-typography:#ff320e}html{--color-primary:#db3b03;--color-secondary:rgb(0, 119, 107);--color-buttons:#fbbc05;--color-typography:#ea4335}:root{--color-primary:#db3b03;--color-secondary:rgb(0, 119, 107);--color-tertiary:rgb(128, 104, 186);--color-white:white;--color-emphasis:rgb(8, 8, 9);--color-supergiant:rgb(213, 66, 99);--color-orange:rgb(250, 200, 127);--color-buttons:#fbbc05;--color-typography:#ea4335;--background:20 66% 99%;--foreground:20 51% 4%;--muted:20 25% 86%;--muted-foreground:20 7% 25%;--popover:20 66% 98%;--popover-foreground:20 51% 3%;--card:20 66% 98%;--card-foreground:20 51% 3%;--border:20 15% 94%;--input:20 15% 94%;--primary:20 48% 72%;--primary-foreground:20 48% 12%;--secondary:20 12% 92%;--secondary-foreground:20 12% 32%;--accent:20 12% 92%;--accent-foreground:20 12% 32%;--destructive:11 80% 22%;--destructive-foreground:11 80% 82%;--ring:20 48% 72%;--radius:0.5rem;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%}.dark{--background:253 43% 3%;--foreground:253 31% 98%;--muted:253 7% 13%;--muted-foreground:253 13% 63%;--popover:253 43% 3%;--popover-foreground:253 31% 98%;--card:253 43% 4%;--card-foreground:253 31% 99%;--border:215 27.9% 16.9%;--input:215 27.9% 16.9%;--primary:253 91% 58%;--primary-foreground:253 91% 98%;--secondary:253 7% 9%;--secondary-foreground:253 7% 69%;--accent:253 13% 14%;--accent-foreground:253 13% 74%;--destructive:339.2 90.36% 51.18%;--destructive-foreground:0 0% 100%;--ring:253 91% 58%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}*{border-color:hsl(var(--border))}body{box-sizing:border-box;background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:0.25rem}.mb-6{margin-bottom:1.5rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-16{width:1rem;height:1rem}.h-3{height:0.75rem}.h-4{height:0.25rem}.w-3{width:0.75rem}.w-4{width:0.25rem}.w-full{width:100%}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-xl{max-width:36rem}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-2{gap:0.5rem}.gap-20{gap:1.25rem}.gap-4{gap:0.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:0.5rem;column-gap:0.5rem}.gap-y-12{row-gap:0.75rem}.overflow-x-auto{overflow-x:auto}.text-pretty{text-wrap:pretty}.rounded{border-radius:0.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-1\\.5{padding:0.375rem}.p-2{padding:0.5rem}.p-6{padding:1.5rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:0.25rem;padding-right:0.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-1\\.5{padding-top:0.375rem;padding-bottom:0.375rem}.py-24{padding-top:1.5rem;padding-bottom:1.5rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Montserrat, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base\\/7{font-size:1rem;line-height:1.75rem}.text-lg\\/8{font-size:1.125rem;line-height:2rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-sm\\/6{font-size:0.875rem;line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.tracking-tight{letter-spacing:-0.025em}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-primary{color:var(--color-primary)}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-colors{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.theme-office{--color-black:#000000;--color-white:#ffffff;--color-primary:#db3b03;--color-secondary:#ec7702;--color-buttons:#89da59;--color-typography:#ff320e}.theme-pg{--color-primary:#00776b;--color-secondary:#01a39d;--color-buttons:#89da59;--color-typography:#ff320e}.hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.hover\\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89 / var(--tw-text-opacity, 1))}.focus\\:border-teal-500:focus{--tw-border-opacity:1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.focus\\:ring-teal-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166 / var(--tw-ring-opacity, 1))}.disabled\\:opacity-50:disabled{opacity:0.5}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.sm\\:gap-y-16{row-gap:1rem}.sm\\:py-32{padding-top:2rem;padding-bottom:2rem}.sm\\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.lg\\:px-8{padding-left:0.5rem;padding-right:0.5rem}}@media (min-width: 1280px){.xl\\:col-span-2{grid-column:span 2 / span 2}.xl\\:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}";
|
|
2320
2345
|
|
|
2321
2346
|
export { H, Host as a, createEvent as c, getAssetPath, h, proxyCustomElement as p, render, setAssetPath, setNonce, setPlatformOptions };
|
|
2322
2347
|
//# sourceMappingURL=index.js.map
|